{"version":3,"sources":["webpack://umd/webpack/bootstrap","webpack://umd/./node_modules/vue-loader/lib/runtime/componentNormalizer.js","webpack://umd/./node_modules/lodash-es/_baseIteratee.js","webpack://umd/./node_modules/lodash-es/isArray.js","webpack://umd/./node_modules/lodash-es/toInteger.js","webpack://umd/./node_modules/lodash-es/_baseRest.js","webpack://umd/./node_modules/lodash-es/toString.js","webpack://umd/./node_modules/lodash-es/isObject.js","webpack://umd/./node_modules/lodash-es/isObjectLike.js","webpack://umd/./node_modules/lodash-es/_arrayMap.js","webpack://umd/./node_modules/lodash-es/keys.js","webpack://umd/./node_modules/lodash-es/isArrayLikeObject.js","webpack://umd/./node_modules/lodash-es/_root.js","webpack://umd/./node_modules/lodash-es/_isFlattenable.js","webpack://umd/./node_modules/lodash-es/_baseFlatten.js","webpack://umd/./node_modules/lodash-es/identity.js","webpack://umd/./node_modules/lodash-es/isArrayLike.js","webpack://umd/./node_modules/lodash-es/_nativeKeysIn.js","webpack://umd/./node_modules/lodash-es/_baseKeysIn.js","webpack://umd/./node_modules/lodash-es/keysIn.js","webpack://umd/./node_modules/jquery/dist/jquery.js","webpack://umd/./node_modules/lodash-es/_isIterateeCall.js","webpack://umd/./node_modules/lodash-es/_getRawTag.js","webpack://umd/./node_modules/lodash-es/_objectToString.js","webpack://umd/./node_modules/lodash-es/_baseGetTag.js","webpack://umd/./node_modules/zrender/lib/core/util.js","webpack://umd/./node_modules/lodash-es/isSymbol.js","webpack://umd/./node_modules/lodash-es/_copyArray.js","webpack://umd/./node_modules/lodash-es/_apply.js","webpack://umd/./node_modules/lodash-es/_baseUnary.js","webpack://umd/./node_modules/lodash-es/eq.js","webpack://umd/./node_modules/lodash-es/_Symbol.js","webpack://umd/./node_modules/zrender/lib/graphic/Path.js","webpack://umd/./node_modules/lodash-es/_baseSlice.js","webpack://umd/./node_modules/lodash-es/_baseToString.js","webpack://umd/./node_modules/lodash-es/toNumber.js","webpack://umd/./node_modules/lodash-es/isFunction.js","webpack://umd/./node_modules/lodash-es/_toKey.js","webpack://umd/./node_modules/lodash-es/_castFunction.js","webpack://umd/./node_modules/lodash-es/_copyObject.js","webpack://umd/./node_modules/lodash-es/_DataView.js","webpack://umd/./node_modules/lodash-es/_Promise.js","webpack://umd/./node_modules/lodash-es/_getTag.js","webpack://umd/./node_modules/lodash-es/_asciiToArray.js","webpack://umd/./node_modules/lodash-es/_unicodeToArray.js","webpack://umd/./node_modules/lodash-es/_stringToArray.js","webpack://umd/./node_modules/lodash-es/_arrayEach.js","webpack://umd/./node_modules/lodash-es/_isIndex.js","webpack://umd/./node_modules/lodash-es/_baseAssignValue.js","webpack://umd/./node_modules/lodash-es/_flatRest.js","webpack://umd/./node_modules/lodash-es/_baseAssignIn.js","webpack://umd/./node_modules/lodash-es/_copySymbols.js","webpack://umd/./node_modules/lodash-es/_copySymbolsIn.js","webpack://umd/./node_modules/lodash-es/_initCloneArray.js","webpack://umd/./node_modules/lodash-es/_cloneDataView.js","webpack://umd/./node_modules/lodash-es/_cloneRegExp.js","webpack://umd/./node_modules/lodash-es/_cloneSymbol.js","webpack://umd/./node_modules/lodash-es/_initCloneByTag.js","webpack://umd/./node_modules/lodash-es/_baseClone.js","webpack://umd/./node_modules/lodash-es/_baseForOwn.js","webpack://umd/./node_modules/lodash-es/_nodeUtil.js","webpack://umd/./node_modules/lodash-es/isBuffer.js","webpack://umd/./node_modules/lodash-es/_baseToNumber.js","webpack://umd/./node_modules/lodash-es/_createMathOperation.js","webpack://umd/./node_modules/lodash-es/add.js","webpack://umd/./node_modules/lodash-es/after.js","webpack://umd/./node_modules/lodash-es/_metaMap.js","webpack://umd/./node_modules/lodash-es/_baseSetData.js","webpack://umd/./node_modules/lodash-es/_createCtor.js","webpack://umd/./node_modules/lodash-es/_createBind.js","webpack://umd/./node_modules/lodash-es/_composeArgs.js","webpack://umd/./node_modules/lodash-es/_composeArgsRight.js","webpack://umd/./node_modules/lodash-es/_countHolders.js","webpack://umd/./node_modules/lodash-es/_baseLodash.js","webpack://umd/./node_modules/lodash-es/_LazyWrapper.js","webpack://umd/./node_modules/lodash-es/_getData.js","webpack://umd/./node_modules/lodash-es/_realNames.js","webpack://umd/./node_modules/lodash-es/_getFuncName.js","webpack://umd/./node_modules/lodash-es/_LodashWrapper.js","webpack://umd/./node_modules/lodash-es/_wrapperClone.js","webpack://umd/./node_modules/lodash-es/wrapperLodash.js","webpack://umd/./node_modules/lodash-es/_isLaziable.js","webpack://umd/./node_modules/lodash-es/_setData.js","webpack://umd/./node_modules/lodash-es/_getWrapDetails.js","webpack://umd/./node_modules/lodash-es/_insertWrapDetails.js","webpack://umd/./node_modules/lodash-es/_updateWrapDetails.js","webpack://umd/./node_modules/lodash-es/_setWrapToString.js","webpack://umd/./node_modules/lodash-es/_createRecurry.js","webpack://umd/./node_modules/lodash-es/_getHolder.js","webpack://umd/./node_modules/lodash-es/_reorder.js","webpack://umd/./node_modules/lodash-es/_replaceHolders.js","webpack://umd/./node_modules/lodash-es/_createHybrid.js","webpack://umd/./node_modules/lodash-es/_createCurry.js","webpack://umd/./node_modules/lodash-es/_createPartial.js","webpack://umd/./node_modules/lodash-es/_mergeData.js","webpack://umd/./node_modules/lodash-es/_createWrap.js","webpack://umd/./node_modules/lodash-es/ary.js","webpack://umd/./node_modules/lodash-es/assign.js","webpack://umd/./node_modules/lodash-es/assignWith.js","webpack://umd/./node_modules/lodash-es/_baseAt.js","webpack://umd/./node_modules/lodash-es/at.js","webpack://umd/./node_modules/lodash-es/bind.js","webpack://umd/./node_modules/lodash-es/bindAll.js","webpack://umd/./node_modules/lodash-es/bindKey.js","webpack://umd/./node_modules/lodash-es/castArray.js","webpack://umd/./node_modules/lodash-es/_createRound.js","webpack://umd/./node_modules/lodash-es/ceil.js","webpack://umd/./node_modules/lodash-es/chain.js","webpack://umd/./node_modules/lodash-es/chunk.js","webpack://umd/./node_modules/lodash-es/cloneDeepWith.js","webpack://umd/./node_modules/lodash-es/cloneWith.js","webpack://umd/./node_modules/lodash-es/commit.js","webpack://umd/./node_modules/lodash-es/compact.js","webpack://umd/./node_modules/lodash-es/concat.js","webpack://umd/./node_modules/lodash-es/cond.js","webpack://umd/./node_modules/lodash-es/_baseConformsTo.js","webpack://umd/./node_modules/lodash-es/_baseConforms.js","webpack://umd/./node_modules/lodash-es/conforms.js","webpack://umd/./node_modules/lodash-es/conformsTo.js","webpack://umd/./node_modules/lodash-es/countBy.js","webpack://umd/./node_modules/lodash-es/create.js","webpack://umd/./node_modules/lodash-es/curry.js","webpack://umd/./node_modules/lodash-es/curryRight.js","webpack://umd/./node_modules/lodash-es/defaultTo.js","webpack://umd/./node_modules/lodash-es/delay.js","webpack://umd/./node_modules/lodash-es/last.js","webpack://umd/./node_modules/lodash-es/differenceBy.js","webpack://umd/./node_modules/lodash-es/differenceWith.js","webpack://umd/./node_modules/lodash-es/divide.js","webpack://umd/./node_modules/lodash-es/drop.js","webpack://umd/./node_modules/lodash-es/dropRight.js","webpack://umd/./node_modules/lodash-es/_baseWhile.js","webpack://umd/./node_modules/lodash-es/dropRightWhile.js","webpack://umd/./node_modules/lodash-es/dropWhile.js","webpack://umd/./node_modules/lodash-es/forEach.js","webpack://umd/./node_modules/lodash-es/_arrayEachRight.js","webpack://umd/./node_modules/lodash-es/_baseForRight.js","webpack://umd/./node_modules/lodash-es/_baseForOwnRight.js","webpack://umd/./node_modules/lodash-es/_baseEachRight.js","webpack://umd/./node_modules/lodash-es/forEachRight.js","webpack://umd/./node_modules/lodash-es/_baseToPairs.js","webpack://umd/./node_modules/lodash-es/_setToPairs.js","webpack://umd/./node_modules/lodash-es/_createToPairs.js","webpack://umd/./node_modules/lodash-es/toPairs.js","webpack://umd/./node_modules/lodash-es/toPairsIn.js","webpack://umd/./node_modules/lodash-es/escapeRegExp.js","webpack://umd/./node_modules/lodash-es/_arrayEvery.js","webpack://umd/./node_modules/lodash-es/_baseEvery.js","webpack://umd/./node_modules/lodash-es/every.js","webpack://umd/./node_modules/lodash-es/toLength.js","webpack://umd/./node_modules/lodash-es/_baseFill.js","webpack://umd/./node_modules/lodash-es/fill.js","webpack://umd/./node_modules/lodash-es/_baseFilter.js","webpack://umd/./node_modules/lodash-es/filter.js","webpack://umd/./node_modules/lodash-es/_createFind.js","webpack://umd/./node_modules/lodash-es/findIndex.js","webpack://umd/./node_modules/lodash-es/find.js","webpack://umd/./node_modules/lodash-es/_baseFindKey.js","webpack://umd/./node_modules/lodash-es/findKey.js","webpack://umd/./node_modules/lodash-es/findLastIndex.js","webpack://umd/./node_modules/lodash-es/findLast.js","webpack://umd/./node_modules/lodash-es/findLastKey.js","webpack://umd/./node_modules/lodash-es/head.js","webpack://umd/./node_modules/lodash-es/map.js","webpack://umd/./node_modules/lodash-es/flatMap.js","webpack://umd/./node_modules/lodash-es/flatMapDeep.js","webpack://umd/./node_modules/lodash-es/flatMapDepth.js","webpack://umd/./node_modules/lodash-es/flattenDeep.js","webpack://umd/./node_modules/lodash-es/flattenDepth.js","webpack://umd/./node_modules/lodash-es/flip.js","webpack://umd/./node_modules/lodash-es/floor.js","webpack://umd/./node_modules/lodash-es/_createFlow.js","webpack://umd/./node_modules/lodash-es/flow.js","webpack://umd/./node_modules/lodash-es/flowRight.js","webpack://umd/./node_modules/lodash-es/forInRight.js","webpack://umd/./node_modules/lodash-es/forOwn.js","webpack://umd/./node_modules/lodash-es/forOwnRight.js","webpack://umd/./node_modules/lodash-es/fromPairs.js","webpack://umd/./node_modules/lodash-es/_baseFunctions.js","webpack://umd/./node_modules/lodash-es/functions.js","webpack://umd/./node_modules/lodash-es/functionsIn.js","webpack://umd/./node_modules/lodash-es/_baseGt.js","webpack://umd/./node_modules/lodash-es/_createRelationalOperation.js","webpack://umd/./node_modules/lodash-es/gt.js","webpack://umd/./node_modules/lodash-es/gte.js","webpack://umd/./node_modules/lodash-es/values.js","webpack://umd/./node_modules/lodash-es/includes.js","webpack://umd/./node_modules/lodash-es/indexOf.js","webpack://umd/./node_modules/lodash-es/initial.js","webpack://umd/./node_modules/lodash-es/_baseIntersection.js","webpack://umd/./node_modules/lodash-es/_castArrayLikeObject.js","webpack://umd/./node_modules/lodash-es/intersection.js","webpack://umd/./node_modules/lodash-es/intersectionBy.js","webpack://umd/./node_modules/lodash-es/intersectionWith.js","webpack://umd/./node_modules/lodash-es/_baseInverter.js","webpack://umd/./node_modules/lodash-es/_createInverter.js","webpack://umd/./node_modules/lodash-es/invert.js","webpack://umd/./node_modules/lodash-es/invertBy.js","webpack://umd/./node_modules/lodash-es/_parent.js","webpack://umd/./node_modules/lodash-es/_baseInvoke.js","webpack://umd/./node_modules/lodash-es/invoke.js","webpack://umd/./node_modules/lodash-es/invokeMap.js","webpack://umd/./node_modules/lodash-es/_baseIsArrayBuffer.js","webpack://umd/./node_modules/lodash-es/isArrayBuffer.js","webpack://umd/./node_modules/lodash-es/_baseIsDate.js","webpack://umd/./node_modules/lodash-es/isDate.js","webpack://umd/./node_modules/lodash-es/isElement.js","webpack://umd/./node_modules/lodash-es/isEqualWith.js","webpack://umd/./node_modules/lodash-es/isMatch.js","webpack://umd/./node_modules/lodash-es/isMatchWith.js","webpack://umd/./node_modules/lodash-es/_isMaskable.js","webpack://umd/./node_modules/lodash-es/isNative.js","webpack://umd/./node_modules/lodash-es/isWeakMap.js","webpack://umd/./node_modules/lodash-es/isWeakSet.js","webpack://umd/./node_modules/lodash-es/iteratee.js","webpack://umd/./node_modules/lodash-es/join.js","webpack://umd/./node_modules/lodash-es/kebabCase.js","webpack://umd/./node_modules/lodash-es/keyBy.js","webpack://umd/./node_modules/lodash-es/_strictLastIndexOf.js","webpack://umd/./node_modules/lodash-es/lastIndexOf.js","webpack://umd/./node_modules/lodash-es/_baseLt.js","webpack://umd/./node_modules/lodash-es/lt.js","webpack://umd/./node_modules/lodash-es/lte.js","webpack://umd/./node_modules/lodash-es/mapKeys.js","webpack://umd/./node_modules/lodash-es/mapValues.js","webpack://umd/./node_modules/lodash-es/matches.js","webpack://umd/./node_modules/lodash-es/matchesProperty.js","webpack://umd/./node_modules/lodash-es/_baseExtremum.js","webpack://umd/./node_modules/lodash-es/max.js","webpack://umd/./node_modules/lodash-es/maxBy.js","webpack://umd/./node_modules/lodash-es/_baseSum.js","webpack://umd/./node_modules/lodash-es/_baseMean.js","webpack://umd/./node_modules/lodash-es/mean.js","webpack://umd/./node_modules/lodash-es/meanBy.js","webpack://umd/./node_modules/lodash-es/method.js","webpack://umd/./node_modules/lodash-es/methodOf.js","webpack://umd/./node_modules/lodash-es/min.js","webpack://umd/./node_modules/lodash-es/minBy.js","webpack://umd/./node_modules/lodash-es/mixin.js","webpack://umd/./node_modules/lodash-es/multiply.js","webpack://umd/./node_modules/lodash-es/negate.js","webpack://umd/./node_modules/lodash-es/_iteratorToArray.js","webpack://umd/./node_modules/lodash-es/toArray.js","webpack://umd/./node_modules/lodash-es/next.js","webpack://umd/./node_modules/lodash-es/_baseNth.js","webpack://umd/./node_modules/lodash-es/nth.js","webpack://umd/./node_modules/lodash-es/nthArg.js","webpack://umd/./node_modules/lodash-es/_baseUnset.js","webpack://umd/./node_modules/lodash-es/_customOmitClone.js","webpack://umd/./node_modules/lodash-es/omit.js","webpack://umd/./node_modules/lodash-es/pickBy.js","webpack://umd/./node_modules/lodash-es/omitBy.js","webpack://umd/./node_modules/lodash-es/orderBy.js","webpack://umd/./node_modules/lodash-es/_createOver.js","webpack://umd/./node_modules/lodash-es/over.js","webpack://umd/./node_modules/lodash-es/_castRest.js","webpack://umd/./node_modules/lodash-es/overArgs.js","webpack://umd/./node_modules/lodash-es/overEvery.js","webpack://umd/./node_modules/lodash-es/overSome.js","webpack://umd/./node_modules/lodash-es/partial.js","webpack://umd/./node_modules/lodash-es/partialRight.js","webpack://umd/./node_modules/lodash-es/partition.js","webpack://umd/./node_modules/lodash-es/plant.js","webpack://umd/./node_modules/lodash-es/propertyOf.js","webpack://umd/./node_modules/lodash-es/_baseIndexOfWith.js","webpack://umd/./node_modules/lodash-es/_basePullAll.js","webpack://umd/./node_modules/lodash-es/pullAll.js","webpack://umd/./node_modules/lodash-es/pull.js","webpack://umd/./node_modules/lodash-es/pullAllBy.js","webpack://umd/./node_modules/lodash-es/pullAllWith.js","webpack://umd/./node_modules/lodash-es/_basePullAt.js","webpack://umd/./node_modules/lodash-es/pullAt.js","webpack://umd/./node_modules/lodash-es/_baseRandom.js","webpack://umd/./node_modules/lodash-es/random.js","webpack://umd/./node_modules/lodash-es/_baseRange.js","webpack://umd/./node_modules/lodash-es/_createRange.js","webpack://umd/./node_modules/lodash-es/range.js","webpack://umd/./node_modules/lodash-es/rangeRight.js","webpack://umd/./node_modules/lodash-es/rearg.js","webpack://umd/./node_modules/lodash-es/_baseReduce.js","webpack://umd/./node_modules/lodash-es/reduce.js","webpack://umd/./node_modules/lodash-es/_arrayReduceRight.js","webpack://umd/./node_modules/lodash-es/reduceRight.js","webpack://umd/./node_modules/lodash-es/reject.js","webpack://umd/./node_modules/lodash-es/remove.js","webpack://umd/./node_modules/lodash-es/replace.js","webpack://umd/./node_modules/lodash-es/rest.js","webpack://umd/./node_modules/lodash-es/result.js","webpack://umd/./node_modules/lodash-es/reverse.js","webpack://umd/./node_modules/lodash-es/round.js","webpack://umd/./node_modules/lodash-es/_arraySample.js","webpack://umd/./node_modules/lodash-es/_baseSample.js","webpack://umd/./node_modules/lodash-es/sample.js","webpack://umd/./node_modules/lodash-es/_shuffleSelf.js","webpack://umd/./node_modules/lodash-es/_arraySampleSize.js","webpack://umd/./node_modules/lodash-es/_baseSampleSize.js","webpack://umd/./node_modules/lodash-es/sampleSize.js","webpack://umd/./node_modules/lodash-es/set.js","webpack://umd/./node_modules/lodash-es/setWith.js","webpack://umd/./node_modules/lodash-es/_arrayShuffle.js","webpack://umd/./node_modules/lodash-es/_baseShuffle.js","webpack://umd/./node_modules/lodash-es/shuffle.js","webpack://umd/./node_modules/lodash-es/size.js","webpack://umd/./node_modules/lodash-es/slice.js","webpack://umd/./node_modules/lodash-es/snakeCase.js","webpack://umd/./node_modules/lodash-es/_baseSome.js","webpack://umd/./node_modules/lodash-es/some.js","webpack://umd/./node_modules/lodash-es/sortedIndexOf.js","webpack://umd/./node_modules/lodash-es/sortedLastIndex.js","webpack://umd/./node_modules/lodash-es/sortedLastIndexBy.js","webpack://umd/./node_modules/lodash-es/sortedLastIndexOf.js","webpack://umd/./node_modules/lodash-es/_baseSortedUniq.js","webpack://umd/./node_modules/lodash-es/sortedUniq.js","webpack://umd/./node_modules/lodash-es/sortedUniqBy.js","webpack://umd/./node_modules/lodash-es/spread.js","webpack://umd/./node_modules/lodash-es/stubObject.js","webpack://umd/./node_modules/lodash-es/stubString.js","webpack://umd/./node_modules/lodash-es/stubTrue.js","webpack://umd/./node_modules/lodash-es/subtract.js","webpack://umd/./node_modules/lodash-es/sum.js","webpack://umd/./node_modules/lodash-es/sumBy.js","webpack://umd/./node_modules/lodash-es/tail.js","webpack://umd/./node_modules/lodash-es/take.js","webpack://umd/./node_modules/lodash-es/takeRight.js","webpack://umd/./node_modules/lodash-es/takeRightWhile.js","webpack://umd/./node_modules/lodash-es/takeWhile.js","webpack://umd/./node_modules/lodash-es/tap.js","webpack://umd/./node_modules/lodash-es/throttle.js","webpack://umd/./node_modules/lodash-es/thru.js","webpack://umd/./node_modules/lodash-es/times.js","webpack://umd/./node_modules/lodash-es/toIterator.js","webpack://umd/./node_modules/lodash-es/_baseWrapperValue.js","webpack://umd/./node_modules/lodash-es/wrapperValue.js","webpack://umd/./node_modules/lodash-es/toLower.js","webpack://umd/./node_modules/lodash-es/toPath.js","webpack://umd/./node_modules/lodash-es/toUpper.js","webpack://umd/./node_modules/lodash-es/transform.js","webpack://umd/./node_modules/lodash-es/_charsEndIndex.js","webpack://umd/./node_modules/lodash-es/_charsStartIndex.js","webpack://umd/./node_modules/lodash-es/trim.js","webpack://umd/./node_modules/lodash-es/trimEnd.js","webpack://umd/./node_modules/lodash-es/trimStart.js","webpack://umd/./node_modules/lodash-es/unary.js","webpack://umd/./node_modules/lodash-es/unionBy.js","webpack://umd/./node_modules/lodash-es/unionWith.js","webpack://umd/./node_modules/lodash-es/uniqBy.js","webpack://umd/./node_modules/lodash-es/uniqWith.js","webpack://umd/./node_modules/lodash-es/unset.js","webpack://umd/./node_modules/lodash-es/unzip.js","webpack://umd/./node_modules/lodash-es/unzipWith.js","webpack://umd/./node_modules/lodash-es/_baseUpdate.js","webpack://umd/./node_modules/lodash-es/update.js","webpack://umd/./node_modules/lodash-es/updateWith.js","webpack://umd/./node_modules/lodash-es/valuesIn.js","webpack://umd/./node_modules/lodash-es/without.js","webpack://umd/./node_modules/lodash-es/wrap.js","webpack://umd/./node_modules/lodash-es/wrapperAt.js","webpack://umd/./node_modules/lodash-es/wrapperChain.js","webpack://umd/./node_modules/lodash-es/wrapperReverse.js","webpack://umd/./node_modules/lodash-es/_baseXor.js","webpack://umd/./node_modules/lodash-es/xor.js","webpack://umd/./node_modules/lodash-es/xorBy.js","webpack://umd/./node_modules/lodash-es/xorWith.js","webpack://umd/./node_modules/lodash-es/zip.js","webpack://umd/./node_modules/lodash-es/_baseZipObject.js","webpack://umd/./node_modules/lodash-es/zipObject.js","webpack://umd/./node_modules/lodash-es/zipObjectDeep.js","webpack://umd/./node_modules/lodash-es/zipWith.js","webpack://umd/./node_modules/lodash-es/array.default.js","webpack://umd/./node_modules/lodash-es/collection.default.js","webpack://umd/./node_modules/lodash-es/date.default.js","webpack://umd/./node_modules/lodash-es/function.default.js","webpack://umd/./node_modules/lodash-es/lang.default.js","webpack://umd/./node_modules/lodash-es/math.default.js","webpack://umd/./node_modules/lodash-es/number.default.js","webpack://umd/./node_modules/lodash-es/object.default.js","webpack://umd/./node_modules/lodash-es/seq.default.js","webpack://umd/./node_modules/lodash-es/string.default.js","webpack://umd/./node_modules/lodash-es/util.default.js","webpack://umd/./node_modules/lodash-es/_lazyClone.js","webpack://umd/./node_modules/lodash-es/_lazyReverse.js","webpack://umd/./node_modules/lodash-es/_getView.js","webpack://umd/./node_modules/lodash-es/_lazyValue.js","webpack://umd/./node_modules/lodash-es/lodash.default.js","webpack://umd/./node_modules/lodash-es/_arrayPush.js","webpack://umd/./node_modules/lodash-es/_castPath.js","webpack://umd/./node_modules/lodash-es/_arrayFilter.js","webpack://umd/./node_modules/lodash-es/_baseEach.js","webpack://umd/./node_modules/lodash-es/_castSlice.js","webpack://umd/./node_modules/lodash-es/toFinite.js","webpack://umd/./node_modules/lodash-es/_baseIsArguments.js","webpack://umd/./node_modules/lodash-es/isArguments.js","webpack://umd/./node_modules/lodash-es/_createSet.js","webpack://umd/./node_modules/lodash-es/_baseUniq.js","webpack://umd/./node_modules/lodash-es/_baseIsTypedArray.js","webpack://umd/./node_modules/lodash-es/isTypedArray.js","webpack://umd/./node_modules/lodash-es/_baseGet.js","webpack://umd/./node_modules/lodash-es/_baseClamp.js","webpack://umd/./node_modules/lodash-es/_getValue.js","webpack://umd/./node_modules/lodash-es/_getNative.js","webpack://umd/./node_modules/zrender/lib/core/vector.js","webpack://umd/./node_modules/lodash-es/isPlainObject.js","webpack://umd/./node_modules/lodash-es/_createAssigner.js","webpack://umd/./node_modules/lodash-es/_baseCreate.js","webpack://umd/./node_modules/lodash-es/_hasUnicode.js","webpack://umd/./node_modules/lodash-es/_createCompounder.js","webpack://umd/./node_modules/lodash-es/_asciiSize.js","webpack://umd/./node_modules/lodash-es/_unicodeSize.js","webpack://umd/./node_modules/lodash-es/_stringSize.js","webpack://umd/./node_modules/lodash-es/_strictIndexOf.js","webpack://umd/./node_modules/lodash-es/_baseIndexOf.js","webpack://umd/./node_modules/@antv/x6/lib/geometry/point.js","webpack://umd/./node_modules/zrender/lib/core/BoundingRect.js","webpack://umd/./node_modules/lodash-es/isLength.js","webpack://umd/./node_modules/lodash-es/isString.js","webpack://umd/./node_modules/lodash-es/_isPrototype.js","webpack://umd/./node_modules/lodash-es/_baseDifference.js","webpack://umd/./node_modules/lodash-es/_baseSet.js","webpack://umd/./node_modules/lodash-es/_assignValue.js","webpack://umd/./node_modules/lodash-es/_stackClear.js","webpack://umd/./node_modules/lodash-es/_stackDelete.js","webpack://umd/./node_modules/lodash-es/_stackGet.js","webpack://umd/./node_modules/lodash-es/_stackHas.js","webpack://umd/./node_modules/lodash-es/_stackSet.js","webpack://umd/./node_modules/lodash-es/_Stack.js","webpack://umd/./node_modules/zrender/lib/core/env.js","webpack://umd/./node_modules/lodash-es/_cacheHas.js","webpack://umd/./node_modules/lodash-es/_toSource.js","webpack://umd/./node_modules/zrender/index.js","webpack://umd/./node_modules/@antv/x6/lib/geometry/geometry.js","webpack://umd/./node_modules/@antv/x6/lib/geometry/line.js","webpack://umd/./node_modules/lodash-es/noop.js","webpack://umd/./node_modules/lodash-es/constant.js","webpack://umd/./node_modules/lodash-es/get.js","webpack://umd/./node_modules/lodash-es/stubFalse.js","webpack://umd/./node_modules/lodash-es/stubArray.js","webpack://umd/./node_modules/lodash-es/isError.js","webpack://umd/./node_modules/lodash-es/upperFirst.js","webpack://umd/./node_modules/lodash-es/_baseHasIn.js","webpack://umd/./node_modules/lodash-es/hasIn.js","webpack://umd/./node_modules/lodash-es/_baseIsRegExp.js","webpack://umd/./node_modules/lodash-es/isRegExp.js","webpack://umd/./node_modules/lodash-es/_arrayIncludes.js","webpack://umd/./node_modules/lodash-es/_baseFindIndex.js","webpack://umd/./node_modules/lodash-es/_setToArray.js","webpack://umd/./node_modules/lodash-es/_baseSortedIndex.js","webpack://umd/./node_modules/lodash-es/_getPrototype.js","webpack://umd/./node_modules/lodash-es/now.js","webpack://umd/./node_modules/lodash-es/_listCacheClear.js","webpack://umd/./node_modules/lodash-es/_assocIndexOf.js","webpack://umd/./node_modules/lodash-es/_listCacheDelete.js","webpack://umd/./node_modules/lodash-es/_listCacheGet.js","webpack://umd/./node_modules/lodash-es/_listCacheHas.js","webpack://umd/./node_modules/lodash-es/_listCacheSet.js","webpack://umd/./node_modules/lodash-es/_ListCache.js","webpack://umd/./node_modules/lodash-es/_equalArrays.js","webpack://umd/./node_modules/lodash-es/_equalByTag.js","webpack://umd/./node_modules/lodash-es/_equalObjects.js","webpack://umd/./node_modules/lodash-es/_baseIsEqualDeep.js","webpack://umd/./node_modules/lodash-es/_baseIsEqual.js","webpack://umd/./node_modules/lodash-es/_arrayAggregator.js","webpack://umd/./node_modules/lodash-es/_baseAggregator.js","webpack://umd/./node_modules/lodash-es/_createAggregator.js","webpack://umd/./node_modules/lodash-es/_setCacheAdd.js","webpack://umd/./node_modules/lodash-es/_setCacheHas.js","webpack://umd/./node_modules/lodash-es/_SetCache.js","webpack://umd/./node_modules/lodash-es/_Map.js","webpack://umd/./node_modules/lodash-es/_Set.js","webpack://umd/./node_modules/lodash-es/assignInWith.js","webpack://umd/./node_modules/lodash-es/templateSettings.js","webpack://umd/./node_modules/lodash-es/_reEscape.js","webpack://umd/./node_modules/lodash-es/_reEvaluate.js","webpack://umd/./node_modules/lodash-es/_createPadding.js","webpack://umd/./node_modules/lodash-es/_nativeCreate.js","webpack://umd/./node_modules/lodash-es/_hashClear.js","webpack://umd/./node_modules/lodash-es/_hashDelete.js","webpack://umd/./node_modules/lodash-es/_hashGet.js","webpack://umd/./node_modules/lodash-es/_hashHas.js","webpack://umd/./node_modules/lodash-es/_hashSet.js","webpack://umd/./node_modules/lodash-es/_Hash.js","webpack://umd/./node_modules/lodash-es/_mapCacheClear.js","webpack://umd/./node_modules/lodash-es/_isKeyable.js","webpack://umd/./node_modules/lodash-es/_getMapData.js","webpack://umd/./node_modules/lodash-es/_mapCacheDelete.js","webpack://umd/./node_modules/lodash-es/_mapCacheGet.js","webpack://umd/./node_modules/lodash-es/_mapCacheHas.js","webpack://umd/./node_modules/lodash-es/_mapCacheSet.js","webpack://umd/./node_modules/lodash-es/_MapCache.js","webpack://umd/./node_modules/lodash-es/_WeakMap.js","webpack://umd/./node_modules/vue/dist/vue.runtime.esm.js","webpack://umd/(webpack)/buildin/global.js","webpack://umd/./node_modules/zrender/lib/core/matrix.js","webpack://umd/./node_modules/zrender/lib/graphic/Image.js","webpack://umd/./node_modules/zrender/lib/core/PathProxy.js","webpack://umd/./node_modules/zrender/lib/core/curve.js","webpack://umd/./node_modules/zrender/lib/graphic/Text.js","webpack://umd/./node_modules/@antv/x6/lib/geometry/index.js","webpack://umd/./node_modules/@antv/x6/lib/geometry/rectangle.js","webpack://umd/./node_modules/@antv/x6/lib/util/dom/attr.js","webpack://umd/./node_modules/@antv/x6/lib/util/dom/elem.js","webpack://umd/./node_modules/lodash-es/memoize.js","webpack://umd/./node_modules/lodash-es/flatten.js","webpack://umd/./node_modules/lodash-es/toPlainObject.js","webpack://umd/./node_modules/lodash-es/mergeWith.js","webpack://umd/./node_modules/lodash-es/attempt.js","webpack://umd/./node_modules/lodash-es/capitalize.js","webpack://umd/./node_modules/lodash-es/isNumber.js","webpack://umd/./node_modules/lodash-es/isInteger.js","webpack://umd/./node_modules/lodash-es/before.js","webpack://umd/./node_modules/lodash-es/debounce.js","webpack://umd/./node_modules/lodash-es/_asciiWords.js","webpack://umd/./node_modules/lodash-es/_hasUnicodeWord.js","webpack://umd/./node_modules/lodash-es/_unicodeWords.js","webpack://umd/./node_modules/lodash-es/words.js","webpack://umd/./node_modules/lodash-es/_basePropertyDeep.js","webpack://umd/./node_modules/lodash-es/property.js","webpack://umd/./node_modules/lodash-es/_baseIsSet.js","webpack://umd/./node_modules/lodash-es/isSet.js","webpack://umd/./node_modules/lodash-es/_baseIsMap.js","webpack://umd/./node_modules/lodash-es/isMap.js","webpack://umd/./node_modules/lodash-es/_escapeHtmlChar.js","webpack://umd/./node_modules/lodash-es/escape.js","webpack://umd/./node_modules/lodash-es/_deburrLetter.js","webpack://umd/./node_modules/lodash-es/deburr.js","webpack://umd/./node_modules/lodash-es/_arrayIncludesWith.js","webpack://umd/./node_modules/lodash-es/_baseSortedIndexBy.js","webpack://umd/./node_modules/lodash-es/_isKey.js","webpack://umd/./node_modules/lodash-es/_arraySome.js","webpack://umd/./node_modules/lodash-es/_mapToArray.js","webpack://umd/./node_modules/lodash-es/_baseTimes.js","webpack://umd/./node_modules/lodash-es/_getSymbols.js","webpack://umd/./node_modules/lodash-es/_getMatchData.js","webpack://umd/./node_modules/lodash-es/_baseIsMatch.js","webpack://umd/./node_modules/lodash-es/_baseProperty.js","webpack://umd/./node_modules/lodash-es/_baseFor.js","webpack://umd/./node_modules/lodash-es/_cloneArrayBuffer.js","webpack://umd/./node_modules/lodash-es/_getAllKeysIn.js","webpack://umd/./node_modules/lodash-es/_basePropertyOf.js","webpack://umd/./node_modules/lodash-es/_baseValues.js","webpack://umd/./node_modules/lodash-es/_arrayReduce.js","webpack://umd/./node_modules/lodash-es/_assignMergeValue.js","webpack://umd/./node_modules/lodash-es/_safeGet.js","webpack://umd/./node_modules/lodash-es/_baseMergeDeep.js","webpack://umd/./node_modules/lodash-es/_baseMerge.js","webpack://umd/./node_modules/lodash-es/_nativeKeys.js","webpack://umd/./node_modules/lodash-es/_baseKeys.js","webpack://umd/./node_modules/lodash-es/_baseSetToString.js","webpack://umd/./node_modules/lodash-es/_setToString.js","webpack://umd/./node_modules/lodash-es/_coreJsData.js","webpack://umd/./node_modules/lodash-es/_defineProperty.js","webpack://umd/./node_modules/lodash-es/_Uint8Array.js","webpack://umd/./node_modules/zrender/lib/core/log.js","webpack://umd/./node_modules/zrender/lib/graphic/Displayable.js","webpack://umd/./node_modules/@antv/x6/lib/geometry/path/segment.js","webpack://umd/./node_modules/lodash-es/_getAllKeys.js","webpack://umd/./node_modules/lodash-es/_baseRepeat.js","webpack://umd/./node_modules/zrender/lib/mixin/Eventful.js","webpack://umd/./node_modules/zrender/lib/core/event.js","webpack://umd/./node_modules/zrender/lib/tool/color.js","webpack://umd/./node_modules/zrender/lib/config.js","webpack://umd/./node_modules/zrender/lib/graphic/constant.js","webpack://umd/./node_modules/zrender/lib/graphic/helper/text.js","webpack://umd/./node_modules/zrender/lib/contain/text.js","webpack://umd/./node_modules/@antv/x6/lib/geometry/util.js","webpack://umd/./node_modules/@antv/x6/lib/geometry/curve.js","webpack://umd/./node_modules/@antv/x6/lib/util/platform/index.js","webpack://umd/./node_modules/lodash-es/uniq.js","webpack://umd/./node_modules/lodash-es/union.js","webpack://umd/./node_modules/lodash-es/sortedIndex.js","webpack://umd/./node_modules/lodash-es/sortedIndexBy.js","webpack://umd/./node_modules/lodash-es/sortBy.js","webpack://umd/./node_modules/lodash-es/groupBy.js","webpack://umd/./node_modules/lodash-es/difference.js","webpack://umd/./node_modules/lodash-es/forIn.js","webpack://umd/./node_modules/lodash-es/merge.js","webpack://umd/./node_modules/lodash-es/assignIn.js","webpack://umd/./node_modules/lodash-es/isEqual.js","webpack://umd/./node_modules/lodash-es/isEmpty.js","webpack://umd/./node_modules/lodash-es/clone.js","webpack://umd/./node_modules/lodash-es/cloneDeep.js","webpack://umd/./node_modules/lodash-es/defaults.js","webpack://umd/./node_modules/lodash-es/startsWith.js","webpack://umd/./node_modules/lodash-es/endsWith.js","webpack://umd/./node_modules/lodash-es/split.js","webpack://umd/./node_modules/lodash-es/repeat.js","webpack://umd/./node_modules/lodash-es/pad.js","webpack://umd/./node_modules/lodash-es/padEnd.js","webpack://umd/./node_modules/lodash-es/padStart.js","webpack://umd/./node_modules/lodash-es/truncate.js","webpack://umd/./node_modules/lodash-es/uniqueId.js","webpack://umd/./node_modules/lodash-es/lowerFirst.js","webpack://umd/./node_modules/lodash-es/camelCase.js","webpack://umd/./node_modules/lodash-es/startCase.js","webpack://umd/./node_modules/lodash-es/upperCase.js","webpack://umd/./node_modules/lodash-es/lowerCase.js","webpack://umd/./node_modules/lodash-es/isNaN.js","webpack://umd/./node_modules/lodash-es/isFinite.js","webpack://umd/./node_modules/lodash-es/isSafeInteger.js","webpack://umd/./node_modules/lodash-es/clamp.js","webpack://umd/./node_modules/lodash-es/toSafeInteger.js","webpack://umd/./node_modules/lodash-es/parseInt.js","webpack://umd/./node_modules/lodash-es/once.js","webpack://umd/./node_modules/lodash-es/defer.js","webpack://umd/./node_modules/insert-css/index.js","webpack://umd/./node_modules/lodash-es/isBoolean.js","webpack://umd/./node_modules/lodash-es/isNil.js","webpack://umd/./node_modules/lodash-es/isNull.js","webpack://umd/./node_modules/lodash-es/isUndefined.js","webpack://umd/./node_modules/lodash-es/_customDefaultsAssignIn.js","webpack://umd/./node_modules/lodash-es/_escapeStringChar.js","webpack://umd/./node_modules/lodash-es/template.js","webpack://umd/./node_modules/lodash-es/_baseHas.js","webpack://umd/./node_modules/lodash-es/has.js","webpack://umd/./node_modules/lodash-es/_basePick.js","webpack://umd/./node_modules/lodash-es/pick.js","webpack://umd/./node_modules/lodash-es/_customDefaultsMerge.js","webpack://umd/./node_modules/lodash-es/defaultsDeep.js","webpack://umd/./node_modules/lodash-es/_unescapeHtmlChar.js","webpack://umd/./node_modules/lodash-es/unescape.js","webpack://umd/./node_modules/lodash-es/_baseInRange.js","webpack://umd/./node_modules/lodash-es/inRange.js","webpack://umd/./node_modules/lodash-es/_freeGlobal.js","webpack://umd/./node_modules/lodash-es/_baseIsNaN.js","webpack://umd/./node_modules/lodash-es/_shortOut.js","webpack://umd/./node_modules/lodash-es/_overRest.js","webpack://umd/./node_modules/lodash-es/_baseMatchesProperty.js","webpack://umd/./node_modules/lodash-es/_isStrictComparable.js","webpack://umd/./node_modules/lodash-es/_matchesStrictComparable.js","webpack://umd/./node_modules/lodash-es/_hasPath.js","webpack://umd/./node_modules/lodash-es/_baseGetAllKeys.js","webpack://umd/./node_modules/lodash-es/_arrayLikeKeys.js","webpack://umd/./node_modules/lodash-es/_overArg.js","webpack://umd/./node_modules/lodash-es/_baseMatches.js","webpack://umd/./node_modules/lodash-es/_baseMap.js","webpack://umd/./node_modules/lodash-es/_createBaseEach.js","webpack://umd/./node_modules/lodash-es/_createBaseFor.js","webpack://umd/./node_modules/lodash-es/_compareAscending.js","webpack://umd/./node_modules/lodash-es/_basePickBy.js","webpack://umd/./node_modules/lodash-es/_cloneBuffer.js","webpack://umd/./node_modules/lodash-es/_cloneTypedArray.js","webpack://umd/./node_modules/lodash-es/_initCloneObject.js","webpack://umd/./node_modules/lodash-es/_getSymbolsIn.js","webpack://umd/./node_modules/lodash-es/_baseAssign.js","webpack://umd/./node_modules/lodash-es/_baseTrim.js","webpack://umd/./node_modules/lodash-es/_trimmedEndIndex.js","webpack://umd/./node_modules/lodash-es/_reInterpolate.js","webpack://umd/./node_modules/lodash-es/_createCaseFirst.js","webpack://umd/./node_modules/lodash-es/_baseDelay.js","webpack://umd/./node_modules/@antv/x6/lib/util/string/uuid.js","webpack://umd/./node_modules/lodash-es/_baseSortBy.js","webpack://umd/./node_modules/lodash-es/_compareMultiple.js","webpack://umd/./node_modules/lodash-es/_baseOrderBy.js","webpack://umd/./node_modules/lodash-es/_isMasked.js","webpack://umd/./node_modules/lodash-es/_baseIsNative.js","webpack://umd/./node_modules/lodash-es/_memoizeCapped.js","webpack://umd/./node_modules/lodash-es/_stringToPath.js","webpack://umd/./node_modules/zrender/lib/zrender.js","webpack://umd/./node_modules/zrender/lib/container/Group.js","webpack://umd/./node_modules/zrender/lib/graphic/Style.js","webpack://umd/./node_modules/zrender/lib/graphic/Pattern.js","webpack://umd/./node_modules/zrender/lib/graphic/helper/image.js","webpack://umd/./node_modules/zrender/lib/graphic/Gradient.js","webpack://umd/./node_modules/zrender/lib/svg/graphic.js","webpack://umd/./node_modules/zrender/lib/svg/core.js","webpack://umd/./node_modules/zrender/lib/svg/helper/Definable.js","webpack://umd/(webpack)/buildin/harmony-module.js","webpack://umd/./node_modules/@antv/x6/lib/geometry/angle.js","webpack://umd/./node_modules/@antv/x6/lib/geometry/polyline.js","webpack://umd/./node_modules/@antv/x6/lib/geometry/path/lineto.js","webpack://umd/./node_modules/@antv/x6/lib/util/vector/index.js","webpack://umd/./node_modules/@antv/x6/lib/util/dom/matrix.js","webpack://umd/external \"XLSX\"","webpack://umd/./node_modules/zrender/lib/core/guid.js","webpack://umd/./node_modules/zrender/lib/Element.js","webpack://umd/./node_modules/zrender/lib/animation/Animator.js","webpack://umd/./node_modules/zrender/lib/core/LRU.js","webpack://umd/./node_modules/zrender/lib/core/timsort.js","webpack://umd/./node_modules/zrender/lib/graphic/helper/fixShadow.js","webpack://umd/./node_modules/zrender/lib/animation/requestAnimationFrame.js","webpack://umd/./node_modules/zrender/lib/graphic/mixin/RectText.js","webpack://umd/./node_modules/zrender/lib/graphic/helper/roundRect.js","webpack://umd/./node_modules/zrender/lib/tool/path.js","webpack://umd/./node_modules/zrender/lib/contain/util.js","webpack://umd/./node_modules/zrender/lib/graphic/shape/Circle.js","webpack://umd/./node_modules/zrender/lib/graphic/shape/Rect.js","webpack://umd/./node_modules/zrender/lib/graphic/helper/subPixelOptimize.js","webpack://umd/./node_modules/zrender/lib/graphic/shape/Ellipse.js","webpack://umd/./node_modules/zrender/lib/graphic/shape/Line.js","webpack://umd/./node_modules/zrender/lib/graphic/shape/Polygon.js","webpack://umd/./node_modules/zrender/lib/graphic/helper/poly.js","webpack://umd/./node_modules/zrender/lib/graphic/shape/Polyline.js","webpack://umd/./node_modules/zrender/lib/graphic/LinearGradient.js","webpack://umd/./node_modules/zrender/lib/vml/core.js","webpack://umd/./node_modules/jquery-mousewheel/jquery.mousewheel.js","webpack://umd/../Images/icon-new/export.png","webpack://umd/../Images/power_status_sn_min/pv_active2.png","webpack://umd/./node_modules/@antv/x6/lib/util/lang/lang.js","webpack://umd/./node_modules/@antv/x6/lib/util/object/index.js","webpack://umd/./node_modules/@antv/x6/lib/util/string/format.js","webpack://umd/./node_modules/@antv/x6/lib/util/number/index.js","webpack://umd/./node_modules/@antv/x6/lib/util/text/index.js","webpack://umd/./node_modules/@antv/x6/lib/util/dom/class.js","webpack://umd/./node_modules/@antv/x6/lib/util/dom/core.js","webpack://umd/./node_modules/@antv/x6/lib/util/dom/style.js","webpack://umd/./node_modules/@antv/x6/lib/util/dom/prefix.js","webpack://umd/./node_modules/@antv/x6/lib/util/dom/path.js","webpack://umd/./node_modules/@antv/x6/lib/util/dom/geom.js","webpack://umd/./node_modules/@antv/x6/lib/util/size-sensor/sensors/util.js","webpack://umd/./node_modules/popper.js/dist/esm/popper.js","webpack://umd/./node_modules/resize-observer-polyfill/dist/ResizeObserver.es.js","webpack://umd/./node_modules/mousetrap/mousetrap.js","webpack://umd/./node_modules/vue-drag-verify/dist/index.js","webpack://umd/./src/components/orgselector/src/orgtreenode.vue?970d","webpack://umd/./src/components/orgselector/src/orgtreenode.vue?49e7","webpack://umd/src/components/orgselector/src/orgtreenode.vue","webpack://umd/./src/components/orgselector/src/orgtreenode.vue","webpack://umd/./src/components/GoodweButton/src/GoodweButton.vue?f95a","webpack://umd/./src/components/GoodweButton/src/GoodweButtonGroup.vue?dda5","webpack://umd/./src/components/orgselector/src/orgselector.vue?a2dc","webpack://umd/./src/components/GoodweSwitch/src/GoodweSwitch.vue?c9b9","webpack://umd/./src/components/GoodweSearchCenter/src/GoodweSearchCenter.vue?5227","webpack://umd/./src/components/autoComplete/src/autoComplete.vue?954d","webpack://umd/./src/components/GoodweStatusLight/src/GoodweStatusLight.vue?be12","webpack://umd/./src/components/GoodweCard/src/GoodweCard.vue?5c27","webpack://umd/./src/components/GoodweEditableLabel/src/GoodweEditableLabel.vue?d058","webpack://umd/./src/components/GoodweBattery/src/GoodweBattery.vue?95f1","webpack://umd/./src/components/GoodweBatteryInfo/src/GoodweBatteryInfo.vue?0354","webpack://umd/./src/components/GoodweBatteryCluster/src/GoodweBatteryCluster.vue?438e","webpack://umd/./src/components/GoodweTab/src/GoodweTab.vue?d334","webpack://umd/./node_modules/zrender/lib/Handler.js","webpack://umd/./node_modules/zrender/lib/mixin/Draggable.js","webpack://umd/./node_modules/zrender/lib/core/dom.js","webpack://umd/./node_modules/zrender/lib/core/fourPointsTransform.js","webpack://umd/./node_modules/zrender/lib/core/GestureMgr.js","webpack://umd/./node_modules/zrender/lib/Storage.js","webpack://umd/./node_modules/zrender/lib/mixin/Transformable.js","webpack://umd/./node_modules/zrender/lib/mixin/Animatable.js","webpack://umd/./node_modules/zrender/lib/animation/Clip.js","webpack://umd/./node_modules/zrender/lib/animation/easing.js","webpack://umd/./node_modules/zrender/lib/Painter.js","webpack://umd/./node_modules/zrender/lib/Layer.js","webpack://umd/./node_modules/zrender/lib/animation/Animation.js","webpack://umd/./node_modules/zrender/lib/dom/HandlerProxy.js","webpack://umd/./node_modules/zrender/lib/export.js","webpack://umd/./node_modules/zrender/lib/core/bbox.js","webpack://umd/./node_modules/zrender/lib/contain/path.js","webpack://umd/./node_modules/zrender/lib/contain/line.js","webpack://umd/./node_modules/zrender/lib/contain/cubic.js","webpack://umd/./node_modules/zrender/lib/contain/quadratic.js","webpack://umd/./node_modules/zrender/lib/contain/arc.js","webpack://umd/./node_modules/zrender/lib/contain/windingLine.js","webpack://umd/./node_modules/zrender/lib/tool/transformPath.js","webpack://umd/./node_modules/zrender/lib/tool/parseSVG.js","webpack://umd/./node_modules/zrender/lib/graphic/helper/smoothSpline.js","webpack://umd/./node_modules/zrender/lib/graphic/helper/smoothBezier.js","webpack://umd/./node_modules/zrender/lib/graphic/CompoundPath.js","webpack://umd/./node_modules/zrender/lib/graphic/IncrementalDisplayable.js","webpack://umd/./node_modules/zrender/lib/graphic/shape/Arc.js","webpack://umd/./node_modules/zrender/lib/graphic/shape/BezierCurve.js","webpack://umd/./node_modules/zrender/lib/graphic/shape/Droplet.js","webpack://umd/./node_modules/zrender/lib/graphic/shape/Heart.js","webpack://umd/./node_modules/zrender/lib/graphic/shape/Isogon.js","webpack://umd/./node_modules/zrender/lib/graphic/shape/Ring.js","webpack://umd/./node_modules/zrender/lib/graphic/shape/Rose.js","webpack://umd/./node_modules/zrender/lib/graphic/shape/Sector.js","webpack://umd/./node_modules/zrender/lib/graphic/helper/fixClipWithShadow.js","webpack://umd/./node_modules/zrender/lib/graphic/shape/Star.js","webpack://umd/./node_modules/zrender/lib/graphic/shape/Trochoid.js","webpack://umd/./node_modules/zrender/lib/graphic/RadialGradient.js","webpack://umd/./node_modules/zrender/lib/svg/svg.js","webpack://umd/./node_modules/zrender/lib/svg/Painter.js","webpack://umd/./node_modules/zrender/lib/core/arrayDiff2.js","webpack://umd/./node_modules/zrender/lib/svg/helper/GradientManager.js","webpack://umd/./node_modules/zrender/lib/svg/helper/ClippathManager.js","webpack://umd/./node_modules/zrender/lib/svg/helper/ShadowManager.js","webpack://umd/./node_modules/zrender/lib/vml/vml.js","webpack://umd/./node_modules/zrender/lib/vml/graphic.js","webpack://umd/./node_modules/zrender/lib/vml/Painter.js","webpack://umd/./src/components/GoodweDeviceArea/src/GoodweDeviceArea.vue?6e46","webpack://umd/./src/components/GoodweHtDetail/src/GoodweHtDetail.vue?1b1b","webpack://umd/./src/components/ParallelSystemDetail/src/ParallelSystemDetail.vue?d4b8","webpack://umd/./src/components/GoodweInverterCharts/src/GoodweInverterCharts.vue?c971","webpack://umd/./src/components/GoodweStationCharts/src/GoodweStationCharts.scss?08aa","webpack://umd/./src/components/GoodweRemoteControl/src/statement.vue?de13","webpack://umd/./src/components/GoodweRemoteControl/src/control.vue?9f73","webpack://umd/./src/components/GoodweEvChargerDetail/src/components/EvChargerAlarm/EvChargerAlarm.scss?17ae","webpack://umd/./src/components/GoodweEvChargerDetail/src/components/EvChargerRecord/EvChargerRecord.scss?ae7a","webpack://umd/./src/components/GoodweEvChargerDetail/src/components/EvChargerMonitor/EvChargerCurrent/components/ChargingGraph.vue?734a","webpack://umd/./src/components/GoodweEvChargerDetail/src/components/EvChargerMonitor/EvChargerOverView/EvChargerOverView.scss?434e","webpack://umd/./src/components/GoodweEvChargerDetail/src/components/EvChargerMonitor/EvChargerCurrent/components/ChargingHistory.vue?a45d","webpack://umd/./src/components/GoodweEvChargerDetail/src/components/EvChargerMonitor/EvChargerCurrent/components/ChargingPower.vue?24b2","webpack://umd/./src/components/GoodweEvChargerDetail/src/components/EvChargerMonitor/EvChargerCurrent/drawer_parts/MoreSettings.vue?88f2","webpack://umd/./src/components/GoodweEvChargerDetail/src/components/EvChargerMonitor/EvChargerCurrent/components/ChargingMode/ChargingMode.scss?f522","webpack://umd/./src/components/GoodweEvChargerDetail/src/components/EvChargerMonitor/EvChargerCurrent/drawer_parts/ModeSettings.vue?72df","webpack://umd/./src/components/GoodweEvChargerDetail/src/components/EvChargerMonitor/EvChargerCurrent/drawer_parts/ScheduledSettings.vue?aa24","webpack://umd/./src/components/GoodweEvChargerDetail/src/components/EvChargerMonitor/EvChargerCurrent/EvChargerCurrent.scss?f661","webpack://umd/./src/components/GoodweEvChargerDetail/src/components/EvChargerMonitor/EvChargerMonitor.scss?3f77","webpack://umd/./src/components/GoodweEvChargerDetail/src/GoodweEvChargerDetail.vue?181b","webpack://umd/./src/components/GoodweEMI/src/GoodweEMI.vue?5461","webpack://umd/./src/components/GoodweChartsTab/src/GoodweChartsTabItem.vue?d7ce","webpack://umd/./src/components/GoodweChartsTab/src/GoodweChartsTabItemGroup.vue?252b","webpack://umd/./src/components/GoodweChartsTab/src/GoodweChartsTab.vue?794d","webpack://umd/./src/components/GoodweStringInfo/src/GoodweStringInfo.vue?dbfb","webpack://umd/./src/components/GoodweShadowDetect/src/GoodweShadowDetect.vue?70b9","webpack://umd/./src/components/GoodweShadowDetect/src/GoodweShadowDetectChart.vue?2e92","webpack://umd/../Images/icon-new/ic_close.png","webpack://umd/./src/components/GoodweShadowDetect/src/GoodweShadowDetectHistory.vue?75b7","webpack://umd/./src/components/GoodweProcessBar/src/GoodweProcessBar.vue?6753","webpack://umd/./src/components/GoodweProgress/src/GoodweProgress.vue?02a5","webpack://umd/./src/components/GoodweDeviceDetail/src/dialogs/components/UpdateDeviceModal.vue?0236","webpack://umd/./src/components/GoodweDeviceDetail/src/dialogs/components/ChangeDeviceModal.vue?307a","webpack://umd/./src/components/GoodweDeviceDetail/src/dialogs/components/DeleteDeviceModal.vue?538f","webpack://umd/./src/components/GoodweDeviceDetail/src/components/InverterList/InverterList.scss?c79f","webpack://umd/./src/components/GoodweDeviceDetail/src/components/MicroDeviceList/modals/ViewPvPanelsDialog.vue?0c8d","webpack://umd/./node_modules/timers-browserify/main.js","webpack://umd/./node_modules/setimmediate/setImmediate.js","webpack://umd/./node_modules/process/browser.js","webpack://umd/./src/components/MiLayoutReadOnly/src/PvReadOnly.vue?225e","webpack://umd/./src/components/MiLayoutReadOnly/src/MiLayoutReadOnly.vue?3c78","webpack://umd/./src/components/GoodweDeviceDetail/src/components/MicroDeviceList/modals/ViewLayoutDialog.vue?0865","webpack://umd/./src/components/GoodweDeviceDetail/src/components/MicroDeviceList/MicroDeviceList.scss?2c02","webpack://umd/./src/components/GoodweDeviceDetail/src/components/DataLoggerList/DataLoggerList.scss?d262","webpack://umd/./src/components/GoodweDeviceDetail/src/components/BatteryList/DialogModals/DeleteBatteryModal.vue?3840","webpack://umd/./src/components/GoodweDeviceDetail/src/components/BatteryList/DialogModals/UpdateBatteryModal.vue?157e","webpack://umd/./src/components/GoodweDeviceDetail/src/components/BatteryList/DialogModals/ChangeBatteryModal.vue?4afb","webpack://umd/./src/components/GoodweDeviceDetail/src/components/BatteryList/CustomTableRow/CustomTableRow.scss?8f13","webpack://umd/./src/components/GoodweDeviceDetail/src/components/BatteryList/BatteryReplacement/BatteryReplacement.scss?b0f6","webpack://umd/./src/components/GoodweDeviceDetail/src/components/BatteryList/BatteryList.scss?d8ea","webpack://umd/./src/components/GoodweDeviceDetail/src/components/EvChargerList/DialogModals/EditRFIDCardModal.vue?a743","webpack://umd/./src/components/GoodweDeviceDetail/src/components/EvChargerList/DialogModals/SendRFIDCardModal.vue?4f74","webpack://umd/./src/components/GoodweDeviceDetail/src/components/EvChargerList/EvChargerList.scss?2ad1","webpack://umd/./src/components/GoodweAddDevice/src/components/AddGwBattery/AddBatteryModal/AutoDetectBattery.vue?f05b","webpack://umd/./src/components/GoodweAddDevice/src/components/AddGwBattery/AddBatteryModal/BatteryResultList.vue?5e54","webpack://umd/./src/components/GoodweAddDevice/src/components/AddGwBattery/AddGwBattery.scss?a5ed","webpack://umd/./src/components/GoodweAddDevice/src/components/MicroInverterList.vue?057f","webpack://umd/./src/components/GoodweAddDevice/src/components/MicroImgUpload/MicroImgUpload.scss?fa92","webpack://umd/./src/components/GoodweAddDevice/src/components/AddAutoDetect.vue?f586","webpack://umd/./src/components/GoodweAddDevice/src/components/AddMicroInverter/AddMicroInverter.scss?d7a2","webpack://umd/./src/components/GoodweAddDevice/src/GoodweAddDevice.scss?31f3","webpack://umd/./src/components/GoodweDeviceDetail/src/dialogs/components/ScanAssociatedDevice/ScanAssociatedDevice.scss?021c","webpack://umd/./src/components/GoodweDeviceDetail/src/GoodweDeviceDetail.scss?aeb1","webpack://umd/./src/components/InverterMonitor/src/DeviceChart/DeviceCurveChart.scss?e761","webpack://umd/./src/components/InverterMonitor/src/InverterMonitor.vue?1677","webpack://umd/./src/components/GoodweDeviceChart/src/GoodweDeviceChart.vue?87f9","webpack://umd/./src/components/GoodweInverterSelect/src/GoodweInverterSelect.vue?69ed","webpack://umd/./src/components/GoodweSec/src/GoodweSec.vue?6c5a","webpack://umd/./src/components/GoodweMeterInfo/src/GoodweMeterInfo.vue?187a","webpack://umd/./src/components/GoodweTigo/src/GoodweTigo.vue?363b","webpack://umd/./src/components/GoodweTigo/src/GoodweTigoTable.vue?c1cf","webpack://umd/./src/components/GoodweMap/src/GoodweMap.vue?86fe","webpack://umd/./src/components/GoodwePsBatteryCure/src/GoodwePsBatteryCure.vue?39b2","webpack://umd/./src/components/GdwAttachment/src/GdwAttachment.vue?8780","webpack://umd/./src/pages/FcasData/src/FcasData.scss?ee4f","webpack://umd/./src/components/GoodweEvCharge/src/GoodweEvCharge.vue?0327","webpack://umd/../Images/power_status_sn_min/pv_gray2.png","webpack://umd/./src/components/GoodwePowerFlow/src/GoodweFlowPvBattery.vue?f978","webpack://umd/./src/components/GoodwePowerFlow/src/GoodweFlowPvNoBattery.vue?61b7","webpack://umd/./src/components/GoodweParallelDetail/src/GoodweBattery.vue?8871","webpack://umd/./src/components/GoodweParallelDetail/src/GoodwePowerBatteryItem.vue?939d","webpack://umd/./src/components/GoodweParallelDetail/src/GoodwePowerFlowTooltip.vue?6113","webpack://umd/./src/components/GoodweParallelDetail/src/GoodweParallelDetail.scss?2474","webpack://umd/./src/components/GoodweMixedParallel/GoodweBattery.vue?6bf5","webpack://umd/./src/components/GoodweMixedParallel/GoodweMixedItem.vue?c6af","webpack://umd/./src/components/GoodweMixedParallel/GoodweMixedParallel.scss?c844","webpack://umd/./node_modules/@antv/x6/lib/registry/port-layout/line.js","webpack://umd/./node_modules/@antv/x6/lib/geometry/ellipse.js","webpack://umd/./node_modules/@antv/x6/lib/geometry/path/index.js","webpack://umd/./node_modules/@antv/x6/lib/geometry/path/path.js","webpack://umd/./node_modules/@antv/x6/lib/geometry/path/close.js","webpack://umd/./node_modules/@antv/x6/lib/geometry/path/moveto.js","webpack://umd/./node_modules/@antv/x6/lib/geometry/path/curveto.js","webpack://umd/./node_modules/@antv/x6/lib/geometry/path/normalize.js","webpack://umd/./node_modules/@antv/x6/lib/geometry/path/util.js","webpack://umd/./node_modules/@antv/x6/lib/registry/port-layout/util.js","webpack://umd/./node_modules/@antv/x6/lib/util/index.js","webpack://umd/./node_modules/@antv/x6/lib/util/polyfill/index.js","webpack://umd/./node_modules/@antv/x6/lib/util/lang/index.js","webpack://umd/./node_modules/@antv/x6/lib/util/array/index.js","webpack://umd/./node_modules/@antv/x6/lib/util/array/array.js","webpack://umd/./node_modules/@antv/x6/lib/util/array/diff.js","webpack://umd/./node_modules/@antv/x6/lib/util/object/object.js","webpack://umd/./node_modules/@antv/x6/lib/util/object/mixins.js","webpack://umd/./node_modules/@antv/x6/lib/util/object/inherit.js","webpack://umd/./node_modules/@antv/x6/lib/util/string/index.js","webpack://umd/./node_modules/@antv/x6/lib/util/string/string.js","webpack://umd/./node_modules/@antv/x6/lib/util/string/eval.js","webpack://umd/./node_modules/@antv/x6/lib/util/string/hashcode.js","webpack://umd/./node_modules/@antv/x6/lib/util/string/html.js","webpack://umd/./node_modules/@antv/x6/lib/util/string/suggestion.js","webpack://umd/./node_modules/@antv/x6/lib/util/number/number.js","webpack://umd/./node_modules/@antv/x6/lib/util/function/index.js","webpack://umd/./node_modules/@antv/x6/lib/util/function/main.js","webpack://umd/./node_modules/@antv/x6/lib/util/function/function.js","webpack://umd/./node_modules/@antv/x6/lib/util/function/async.js","webpack://umd/./node_modules/@antv/x6/lib/util/text/main.js","webpack://umd/./node_modules/@antv/x6/lib/util/text/annotate.js","webpack://umd/./node_modules/@antv/x6/lib/util/text/sanitize.js","webpack://umd/./node_modules/@antv/x6/lib/util/json/index.js","webpack://umd/./node_modules/@antv/x6/lib/util/datauri/index.js","webpack://umd/./node_modules/@antv/x6/lib/util/unit/index.js","webpack://umd/./node_modules/@antv/x6/lib/util/dom/index.js","webpack://umd/./node_modules/@antv/x6/lib/util/dom/main.js","webpack://umd/./node_modules/@antv/x6/lib/util/dom/af.js","webpack://umd/./node_modules/@antv/x6/lib/util/dom/selection.js","webpack://umd/./node_modules/@antv/x6/lib/util/dom/text.js","webpack://umd/./node_modules/@antv/x6/lib/util/dom/transform.js","webpack://umd/./node_modules/@antv/x6/lib/util/dom/mousewheel.js","webpack://umd/./node_modules/@antv/x6/lib/util/dom/vector.js","webpack://umd/./node_modules/@antv/x6/lib/util/size-sensor/index.js","webpack://umd/./node_modules/@antv/x6/lib/util/size-sensor/sensors/index.js","webpack://umd/./node_modules/@antv/x6/lib/util/size-sensor/sensors/object.js","webpack://umd/./node_modules/@antv/x6/lib/util/size-sensor/sensors/observer.js","webpack://umd/./node_modules/@antv/x6/lib/util/scheduler/index.js","webpack://umd/./src/components/GoodwePowerFlow/src/GoodwePowerFlow.vue?32ec","webpack://umd/./src/components/GoodweAppHead/src/GoodweAppHead.vue?a9df","webpack://umd/./src/components/DrawerSelect/src/DrawerSelect.vue?c142","webpack://umd/./src/pages/AddThirdParty/src/AddThirdParty.vue?a9e9","webpack://umd/./src/pages/MicroInverterLayout/src/components/PhotovoltaicPanel.vue?8b98","webpack://umd/./src/pages/MicroInverterLayout/src/components/MicroInverterContainer/MicroInverterContainer.scss?de95","webpack://umd/./src/pages/MicroInverterLayout/src/components/MiOperationGuide.vue?4fff","webpack://umd/./src/pages/MicroInverterLayout/src/MicroInverterLayout.vue?4cb2","webpack://umd/./src/components/MicroInverterTree/src/MicroInverterTree.vue?b611","webpack://umd/./src/pages/PVMonitoring/src/components/TimeControl.vue?b75c","webpack://umd/./src/pages/PVMonitoring/src/components/PvMonit.vue?e813","webpack://umd/./src/pages/PVMonitoring/src/components/MiLayoutReadOnly.vue?b540","webpack://umd/./src/pages/PVMonitoring/src/PVMonitoring.vue?65e1","webpack://umd/./src/pages/RemoteControl/src/component/RemoteSettingItem/ControlColumn/ControlColumn.scss?2640","webpack://umd/./src/pages/RemoteControl/src/component/CurrentSettingModal/CurrentSettingModal.scss?f878","webpack://umd/./src/pages/RemoteControl/src/component/InverterListTreeView/InverterListTreeView.scss?0641","webpack://umd/./src/pages/RemoteControl/src/component/RemoteSettingItem/RemoteSettingItem.scss?7399","webpack://umd/./src/pages/RemoteControl/src/component/SettingRecordTable/SettingRecordTable.scss?8861","webpack://umd/./src/pages/RemoteControl/src/RemoteControl.scss?492b","webpack://umd/./src/components/GoodweSliderCaptcha/src/GoodweSliderCaptcha.vue?6359","webpack://umd/src/components/demo/src/demo.vue","webpack://umd/./src/components/demo/src/demo.vue?89b7","webpack://umd/./src/components/demo/src/demo.vue","webpack://umd/./src/components/demo/index.js","webpack://umd/./src/components/GoodweButton/src/GoodweButton.vue?e1c2","webpack://umd/src/components/GoodweButton/src/GoodweButton.vue","webpack://umd/./src/components/GoodweButton/src/GoodweButton.vue?9181","webpack://umd/./src/components/GoodweButton/src/GoodweButtonGroup.vue?fe74","webpack://umd/src/components/GoodweButton/src/GoodweButtonGroup.vue","webpack://umd/./src/components/GoodweButton/src/GoodweButtonGroup.vue?2ad3","webpack://umd/./src/components/GoodweButton/index.js","webpack://umd/./src/mixins/popper.js","webpack://umd/./src/directives/outsideclick.js","webpack://umd/./src/components/orgselector/src/orgtree.vue?898c","webpack://umd/src/components/orgselector/src/orgtree.vue","webpack://umd/./src/components/orgselector/src/orgtree.vue","webpack://umd/src/components/orgselector/src/orgdropdown.vue","webpack://umd/./src/components/orgselector/src/orgdropdown.vue?300b","webpack://umd/./src/components/orgselector/src/orgdropdown.vue","webpack://umd/./src/components/orgselector/src/orgdropdown.vue?10b6","webpack://umd/./src/components/orgselector/src/orgselector.vue?01af","webpack://umd/src/components/orgselector/src/orgselector.vue","webpack://umd/./src/components/orgselector/src/orgselector.vue?c60c","webpack://umd/./src/components/orgselector/src/orgselector.vue?bf6b","webpack://umd/./src/components/orgselector/index.js","webpack://umd/./src/components/GoodweSwitch/src/GoodweSwitch.vue?b3ba","webpack://umd/src/components/GoodweSwitch/src/GoodweSwitch.vue","webpack://umd/./src/components/GoodweSwitch/src/GoodweSwitch.vue?919c","webpack://umd/./src/components/GoodweSwitch/index.js","webpack://umd/./src/components/GoodweSearchCenter/src/GoodweSearchCenter.vue?f2f9","webpack://umd/src/components/GoodweSearchCenter/src/GoodweSearchCenter.vue","webpack://umd/./src/components/GoodweSearchCenter/src/GoodweSearchCenter.vue?de0d","webpack://umd/./src/components/GoodweSearchCenter/src/GoodweSearchCenter.vue?cc86","webpack://umd/./src/components/GoodweSearchCenter/index.js","webpack://umd/./src/utils/resize-event.js","webpack://umd/./src/components/autoComplete/src/autoComplete.vue?2da2","webpack://umd/src/components/autoComplete/src/autoComplete.vue","webpack://umd/./src/mixins/composition.js","webpack://umd/./src/components/autoComplete/src/autoComplete.vue?01d9","webpack://umd/./src/components/autoComplete/src/autoComplete.vue?a102","webpack://umd/./src/components/autoComplete/index.js","webpack://umd/./src/components/inverter/src/sn.js","webpack://umd/./src/components/inverter/src/inverter.vue?b0b7","webpack://umd/src/components/inverter/src/inverter.vue","webpack://umd/./src/components/inverter/inverterFn.js","webpack://umd/./src/components/inverter/src/inverter.vue","webpack://umd/./src/components/inverter/src/inverter.vue?8ad5","webpack://umd/./src/components/inverter/index.js","webpack://umd/./src/components/GoodweStatusLight/src/GoodweStatusLight.vue?a6ff","webpack://umd/src/components/GoodweStatusLight/src/GoodweStatusLight.vue","webpack://umd/./src/components/GoodweStatusLight/src/GoodweStatusLight.vue?9085","webpack://umd/./src/components/GoodweStatusLight/index.js","webpack://umd/./src/components/GoodweCard/src/GoodweCard.vue?7e7a","webpack://umd/src/components/GoodweCard/src/GoodweCard.vue","webpack://umd/./src/components/GoodweCard/src/GoodweCard.vue?5abf","webpack://umd/./src/components/GoodweCard/index.js","webpack://umd/./src/components/GoodweEditableLabel/src/GoodweEditableLabel.vue?260f","webpack://umd/src/components/GoodweEditableLabel/src/GoodweEditableLabel.vue","webpack://umd/./src/components/GoodweEditableLabel/src/GoodweEditableLabel.vue?8188","webpack://umd/./src/components/GoodweEditableLabel/index.js","webpack://umd/./src/components/GoodweBattery/src/GoodweBattery.vue?5786","webpack://umd/src/components/GoodweBattery/src/GoodweBattery.vue","webpack://umd/./src/components/GoodweBattery/src/GoodweBattery.vue?e186","webpack://umd/./src/components/GoodweBattery/src/GoodweBattery.vue?63ac","webpack://umd/./src/components/GoodweBattery/index.js","webpack://umd/./src/components/GoodweBatteryInfo/src/GoodweBatteryInfo.vue?e253","webpack://umd/src/components/GoodweBatteryInfo/src/GoodweBatteryInfo.vue","webpack://umd/./src/components/GoodweBatteryInfo/src/GoodweBatteryInfo.vue","webpack://umd/./src/components/GoodweBatteryInfo/src/GoodweBatteryInfo.vue?5df3","webpack://umd/./src/components/GoodweBatteryInfo/index.js","webpack://umd/./src/components/GoodweBatteryCluster/src/GoodweBatteryCluster.vue?ed49","webpack://umd/src/components/GoodweBatteryCluster/src/GoodweBatteryCluster.vue","webpack://umd/./src/components/GoodweBatteryCluster/src/GoodweBatteryCluster.vue","webpack://umd/./src/components/GoodweBatteryCluster/src/GoodweBatteryCluster.vue?55eb","webpack://umd/./src/components/GoodweBatteryCluster/index.js","webpack://umd/./src/components/GoodweTab/src/GoodweTab.vue?22c6","webpack://umd/src/components/GoodweTab/src/GoodweTab.vue","webpack://umd/./src/components/GoodweTab/src/GoodweTab.vue?af88","webpack://umd/./src/components/GoodweTab/src/GoodweTab.vue?924d","webpack://umd/./src/components/GoodweTab/src/GoodweTabItem.vue?5729","webpack://umd/src/components/GoodweTab/src/GoodweTabItem.vue","webpack://umd/./src/components/GoodweTab/src/GoodweTabItem.vue","webpack://umd/./src/components/GoodweTab/index.js","webpack://umd/./src/utils/PowerFlow.js","webpack://umd/./src/components/GoodweDeviceArea/src/GoodweDeviceArea.vue?62e5","webpack://umd/src/components/GoodweDeviceArea/src/GoodweDeviceArea.vue","webpack://umd/./src/components/GoodweDeviceArea/src/GoodweDeviceArea.vue?640f","webpack://umd/./src/components/GoodweDeviceArea/src/GoodweDeviceArea.vue?0d4e","webpack://umd/./src/components/GoodweDeviceArea/index.js","webpack://umd/./src/components/GoodweHtDetail/src/GoodweHtDetail.vue?8e69","webpack://umd/src/components/GoodweHtDetail/src/GoodweHtDetail.vue","webpack://umd/./src/components/GoodweHtDetail/src/GoodweHtDetail.vue?e134","webpack://umd/./src/components/GoodweHtDetail/src/GoodweHtDetail.vue?c178","webpack://umd/./src/components/GoodweHtDetail/index.js","webpack://umd/./src/components/ParallelSystemDetail/src/ParallelSystemDetail.vue?1988","webpack://umd/src/components/ParallelSystemDetail/src/ParallelSystemDetail.vue","webpack://umd/./src/components/ParallelSystemDetail/src/ParallelSystemDetail.vue","webpack://umd/./src/components/ParallelSystemDetail/src/ParallelSystemDetail.vue?afa4","webpack://umd/./src/components/ParallelSystemDetail/index.js","webpack://umd/./src/utils/common.js","webpack://umd/src/components/GoodweInverterCharts/src/GoodweInverterCharts.vue","webpack://umd/./src/components/GoodweInverterCharts/src/GoodweInverterCharts.vue?fbae","webpack://umd/./src/components/GoodweInverterCharts/src/GoodweInverterCharts.vue?22f8","webpack://umd/./src/components/GoodweInverterCharts/src/GoodweInverterCharts.vue?2ff6","webpack://umd/./src/components/GoodweInverterCharts/index.js","webpack://umd/./src/utils/stationdetail.util.js","webpack://umd/./src/components/GoodweStationCharts/src/GoodweStationCharts.js","webpack://umd/./src/components/GoodweStationCharts/src/GoodweStationCharts.js?e283","webpack://umd/./src/components/GoodweStationCharts/src/GoodweStationCharts.vue","webpack://umd/./src/components/GoodweStationCharts/src/GoodweStationCharts.vue?9ab5","webpack://umd/./src/components/GoodweStationCharts/index.js","webpack://umd/./src/components/GoodweRemoteControl/src/statement.vue?ee7b","webpack://umd/src/components/GoodweRemoteControl/src/statement.vue","webpack://umd/./src/components/GoodweRemoteControl/src/statement.vue?1686","webpack://umd/./src/components/GoodweRemoteControl/src/statement.vue?ea04","webpack://umd/src/components/GoodweRemoteControl/src/control.vue","webpack://umd/./src/components/GoodweRemoteControl/src/control.vue?b956","webpack://umd/./src/components/GoodweRemoteControl/src/control.vue?697b","webpack://umd/./src/components/GoodweRemoteControl/src/control.vue?5bea","webpack://umd/./src/components/GoodweRemoteControl/src/GoodweRemoteControl.vue?da55","webpack://umd/src/components/GoodweRemoteControl/src/GoodweRemoteControl.vue","webpack://umd/./src/components/GoodweRemoteControl/src/GoodweRemoteControl.vue","webpack://umd/./src/components/GoodweRemoteControl/src/GoodweRemoteControl.vue?4ea1","webpack://umd/./src/components/GoodweRemoteControl/index.js","webpack://umd/./src/components/GoodweEvChargerDetail/src/components/EvChargerAlarm/EvChargerAlarm.js?73ae","webpack://umd/./src/components/GoodweEvChargerDetail/src/components/EvChargerAlarm/EvChargerAlarm.js","webpack://umd/./src/components/GoodweEvChargerDetail/src/components/EvChargerAlarm/EvChargerAlarm.vue","webpack://umd/./src/components/GoodweEvChargerDetail/src/components/EvChargerAlarm/EvChargerAlarm.vue?9f3f","webpack://umd/./src/components/GoodweEvChargerDetail/src/components/EvChargerRecord/EvChargerRecord.js?aa6a","webpack://umd/./src/components/GoodweEvChargerDetail/src/components/EvChargerRecord/EvChargerRecord.js","webpack://umd/./src/components/GoodweEvChargerDetail/src/components/EvChargerRecord/EvChargerRecord.vue","webpack://umd/./src/components/GoodweEvChargerDetail/src/components/EvChargerRecord/EvChargerRecord.vue?89dd","webpack://umd/./src/components/GoodweEvChargerDetail/src/GoodweEvChargerCommon.js","webpack://umd/./src/components/GoodweEvChargerDetail/src/components/EvChargerMonitor/EvChargerCurrent/components/ChargingGraph.vue?b396","webpack://umd/src/components/GoodweEvChargerDetail/src/components/EvChargerMonitor/EvChargerCurrent/components/ChargingGraph.vue","webpack://umd/./src/components/GoodweEvChargerDetail/src/components/EvChargerMonitor/EvChargerCurrent/components/ChargingGraph.vue","webpack://umd/./src/components/GoodweEvChargerDetail/src/components/EvChargerMonitor/EvChargerCurrent/components/ChargingGraph.vue?e600","webpack://umd/./src/components/GoodweEvChargerDetail/src/components/EvChargerMonitor/EvChargerOverView/EvChargerOverView.js?942d","webpack://umd/./src/components/GoodweEvChargerDetail/src/components/EvChargerMonitor/EvChargerOverView/EvChargerOverView.js","webpack://umd/./src/components/GoodweEvChargerDetail/src/components/EvChargerMonitor/EvChargerOverView/EvChargerOverView.vue","webpack://umd/./src/components/GoodweEvChargerDetail/src/components/EvChargerMonitor/EvChargerOverView/EvChargerOverView.vue?88f4","webpack://umd/./src/components/GoodweEvChargerDetail/src/components/EvChargerMonitor/EvChargerCurrent/components/ChargingHistory.vue?774d","webpack://umd/src/components/GoodweEvChargerDetail/src/components/EvChargerMonitor/EvChargerCurrent/components/ChargingHistory.vue","webpack://umd/./src/components/GoodweEvChargerDetail/src/components/EvChargerMonitor/EvChargerCurrent/components/ChargingHistory.vue","webpack://umd/./src/components/GoodweEvChargerDetail/src/components/EvChargerMonitor/EvChargerCurrent/components/ChargingHistory.vue?4177","webpack://umd/./src/components/GoodweEvChargerDetail/src/components/EvChargerMonitor/EvChargerCurrent/components/ChargingPower.vue?0053","webpack://umd/src/components/GoodweEvChargerDetail/src/components/EvChargerMonitor/EvChargerCurrent/components/ChargingPower.vue","webpack://umd/./src/components/GoodweEvChargerDetail/src/components/EvChargerMonitor/EvChargerCurrent/components/ChargingPower.vue","webpack://umd/./src/components/GoodweEvChargerDetail/src/components/EvChargerMonitor/EvChargerCurrent/components/ChargingPower.vue?ecdd","webpack://umd/./src/components/GoodweEvChargerDetail/src/components/EvChargerMonitor/EvChargerCurrent/drawer_parts/MoreSettings.vue?b62b","webpack://umd/src/components/GoodweEvChargerDetail/src/components/EvChargerMonitor/EvChargerCurrent/drawer_parts/MoreSettings.vue","webpack://umd/./src/components/GoodweEvChargerDetail/src/components/EvChargerMonitor/EvChargerCurrent/drawer_parts/MoreSettings.vue","webpack://umd/./src/components/GoodweEvChargerDetail/src/components/EvChargerMonitor/EvChargerCurrent/drawer_parts/MoreSettings.vue?2826","webpack://umd/./src/components/GoodweEvChargerDetail/src/components/EvChargerMonitor/EvChargerCurrent/components/ChargingMode/ChargingMode.js?7e52","webpack://umd/./src/components/GoodweEvChargerDetail/src/components/EvChargerMonitor/EvChargerCurrent/components/ChargingMode/ChargingMode.js","webpack://umd/./src/components/GoodweEvChargerDetail/src/components/EvChargerMonitor/EvChargerCurrent/components/ChargingMode/ChargingMode.vue","webpack://umd/./src/components/GoodweEvChargerDetail/src/components/EvChargerMonitor/EvChargerCurrent/components/ChargingMode/ChargingMode.vue?d03f","webpack://umd/./src/components/GoodweEvChargerDetail/src/components/EvChargerMonitor/EvChargerCurrent/drawer_parts/ModeSettings.vue?3c5c","webpack://umd/src/components/GoodweEvChargerDetail/src/components/EvChargerMonitor/EvChargerCurrent/drawer_parts/ModeSettings.vue","webpack://umd/./src/components/GoodweEvChargerDetail/src/components/EvChargerMonitor/EvChargerCurrent/drawer_parts/ModeSettings.vue","webpack://umd/./src/components/GoodweEvChargerDetail/src/components/EvChargerMonitor/EvChargerCurrent/drawer_parts/ModeSettings.vue?4fc2","webpack://umd/./src/components/GoodweEvChargerDetail/src/components/EvChargerMonitor/EvChargerCurrent/drawer_parts/ScheduledSettings.vue?ba0a","webpack://umd/src/components/GoodweEvChargerDetail/src/components/EvChargerMonitor/EvChargerCurrent/drawer_parts/ScheduledSettings.vue","webpack://umd/./src/components/GoodweEvChargerDetail/src/components/EvChargerMonitor/EvChargerCurrent/drawer_parts/ScheduledSettings.vue","webpack://umd/./src/components/GoodweEvChargerDetail/src/components/EvChargerMonitor/EvChargerCurrent/drawer_parts/ScheduledSettings.vue?787c","webpack://umd/./src/components/GoodweEvChargerDetail/src/components/EvChargerMonitor/EvChargerCurrent/EvChargerCurrent.js?aeaa","webpack://umd/./src/components/GoodweEvChargerDetail/src/components/EvChargerMonitor/EvChargerCurrent/EvChargerCurrent.js","webpack://umd/./src/components/GoodweEvChargerDetail/src/components/EvChargerMonitor/EvChargerCurrent/EvChargerCurrent.vue","webpack://umd/./src/components/GoodweEvChargerDetail/src/components/EvChargerMonitor/EvChargerCurrent/EvChargerCurrent.vue?1de2","webpack://umd/./src/components/GoodweEvChargerDetail/src/components/EvChargerMonitor/EvChargerMonitor.js?8cca","webpack://umd/./src/components/GoodweEvChargerDetail/src/components/EvChargerMonitor/EvChargerMonitor.js","webpack://umd/./src/components/GoodweEvChargerDetail/src/components/EvChargerMonitor/EvChargerMonitor.vue","webpack://umd/./src/components/GoodweEvChargerDetail/src/components/EvChargerMonitor/EvChargerMonitor.vue?535b","webpack://umd/./src/components/GoodweEvChargerDetail/src/GoodweEvChargerDetail.vue?fadf","webpack://umd/src/components/GoodweEvChargerDetail/src/GoodweEvChargerDetail.vue","webpack://umd/./src/components/GoodweEvChargerDetail/src/GoodweEvChargerDetail.vue","webpack://umd/./src/components/GoodweEvChargerDetail/src/GoodweEvChargerDetail.vue?0220","webpack://umd/./src/components/GoodweEvChargerDetail/index.js","webpack://umd/./src/components/GoodweEMI/src/GoodweEMI.vue?aa45","webpack://umd/src/components/GoodweEMI/src/GoodweEMI.vue","webpack://umd/./src/components/GoodweEMI/src/GoodweEMI.vue?6260","webpack://umd/./src/components/GoodweEMI/src/GoodweEMI.vue?8424","webpack://umd/./src/components/GoodweEMI/index.js","webpack://umd/./src/components/GoodweChartsTab/src/GoodweChartsTabItem.vue?c1fd","webpack://umd/src/components/GoodweChartsTab/src/GoodweChartsTabItem.vue","webpack://umd/./src/components/GoodweChartsTab/src/GoodweChartsTabItem.vue?593a","webpack://umd/./src/components/GoodweChartsTab/src/GoodweChartsTabItem.vue?279a","webpack://umd/./src/components/GoodweChartsTab/src/GoodweChartsTabItemGroup.vue?7020","webpack://umd/src/components/GoodweChartsTab/src/GoodweChartsTabItemGroup.vue","webpack://umd/./src/components/GoodweChartsTab/src/GoodweChartsTabItemGroup.vue?df07","webpack://umd/./src/components/GoodweChartsTab/src/GoodweChartsTabItemGroup.vue?327a","webpack://umd/./src/components/GoodweChartsTab/src/GoodweChartsTab.vue?734c","webpack://umd/src/components/GoodweChartsTab/src/GoodweChartsTab.vue","webpack://umd/./src/components/GoodweChartsTab/src/GoodweChartsTab.vue?e080","webpack://umd/./src/components/GoodweChartsTab/index.js","webpack://umd/src/components/GoodweStringInfo/src/GoodweStringInfo.vue","webpack://umd/./src/components/GoodweStringInfo/src/GoodweStringInfo.vue?1242","webpack://umd/./src/components/GoodweStringInfo/src/GoodweStringInfo.vue?004a","webpack://umd/./src/components/GoodweStringInfo/src/GoodweStringInfo.vue?6e4f","webpack://umd/./src/components/GoodweStringInfo/index.js","webpack://umd/./src/components/GoodweShadowDetect/src/GoodweShadowDetect.vue?a938","webpack://umd/src/components/GoodweShadowDetect/src/GoodweShadowDetect.vue","webpack://umd/./src/components/GoodweShadowDetect/src/GoodweShadowDetect.vue?7f09","webpack://umd/./src/components/GoodweShadowDetect/src/GoodweShadowDetect.vue?54ff","webpack://umd/./src/components/GoodweShadowDetect/src/GoodweShadowDetectChart.vue?9c94","webpack://umd/src/components/GoodweShadowDetect/src/GoodweShadowDetectChart.vue","webpack://umd/./src/components/GoodweShadowDetect/src/GoodweShadowDetectChart.vue?438b","webpack://umd/./src/components/GoodweShadowDetect/src/GoodweShadowDetectChart.vue?ea89","webpack://umd/./src/components/GoodweShadowDetect/src/GoodweShadowDetectHistory.vue?f97e","webpack://umd/src/components/GoodweShadowDetect/src/GoodweShadowDetectHistory.vue","webpack://umd/./src/components/GoodweShadowDetect/src/GoodweShadowDetectHistory.vue","webpack://umd/./src/components/GoodweShadowDetect/src/GoodweShadowDetectHistory.vue?5d21","webpack://umd/./src/components/GoodweShadowDetect/index.js","webpack://umd/./src/components/GoodweProcessBar/src/GoodweProcessBar.vue?c847","webpack://umd/src/components/GoodweProcessBar/src/GoodweProcessBar.vue","webpack://umd/./src/components/GoodweProcessBar/src/GoodweProcessBar.vue","webpack://umd/./src/components/GoodweProcessBar/src/GoodweProcessBar.vue?0763","webpack://umd/./src/components/GoodweProcessBar/index.js","webpack://umd/./src/components/GoodweProgress/src/GoodweProgress.vue?2d6d","webpack://umd/src/components/GoodweProgress/src/GoodweProgress.vue","webpack://umd/./src/components/GoodweProgress/src/GoodweProgress.vue?7d57","webpack://umd/./src/components/GoodweProgress/src/GoodweProgress.vue?7220","webpack://umd/./src/components/GoodweProgress/index.js","webpack://umd/./src/components/GoodweDeviceDetail/src/relativeFunUtl.js","webpack://umd/src/components/GoodweDeviceDetail/src/dialogs/components/UpdateDeviceModal.vue","webpack://umd/./src/components/GoodweDeviceDetail/src/dialogs/components/UpdateDeviceModal.vue?d9e0","webpack://umd/./src/components/GoodweDeviceDetail/src/dialogs/components/UpdateDeviceModal.vue","webpack://umd/./src/components/GoodweDeviceDetail/src/dialogs/components/UpdateDeviceModal.vue?0f90","webpack://umd/./src/components/GoodweDeviceDetail/src/dialogs/components/ChangeDeviceModal.vue?1056","webpack://umd/src/components/GoodweDeviceDetail/src/dialogs/components/ChangeDeviceModal.vue","webpack://umd/./src/components/GoodweDeviceDetail/src/dialogs/components/ChangeDeviceModal.vue","webpack://umd/./src/components/GoodweDeviceDetail/src/dialogs/components/ChangeDeviceModal.vue?2e36","webpack://umd/src/components/GoodweDeviceDetail/src/dialogs/components/DeleteDeviceModal.vue","webpack://umd/./src/components/GoodweDeviceDetail/src/dialogs/components/DeleteDeviceModal.vue?1a5f","webpack://umd/./src/components/GoodweDeviceDetail/src/dialogs/components/DeleteDeviceModal.vue","webpack://umd/./src/components/GoodweDeviceDetail/src/dialogs/components/DeleteDeviceModal.vue?04eb","webpack://umd/./src/components/GoodweDeviceDetail/src/components/InverterList/InverterList.js?e347","webpack://umd/./src/components/GoodweDeviceDetail/src/components/InverterList/InverterList.js","webpack://umd/./src/components/GoodweDeviceDetail/src/components/InverterList/InverterList.vue","webpack://umd/./src/components/GoodweDeviceDetail/src/components/InverterList/InverterList.vue?4b6b","webpack://umd/./src/components/GoodweDeviceDetail/src/components/MicroDeviceList/modals/ViewPvPanelsDialog.vue?a628","webpack://umd/src/components/GoodweDeviceDetail/src/components/MicroDeviceList/modals/ViewPvPanelsDialog.vue","webpack://umd/./src/components/GoodweDeviceDetail/src/components/MicroDeviceList/modals/ViewPvPanelsDialog.vue","webpack://umd/./src/components/GoodweDeviceDetail/src/components/MicroDeviceList/modals/ViewPvPanelsDialog.vue?609b","webpack://umd/./node_modules/@antv/x6/es/util/platform/index.js","webpack://umd/./node_modules/@antv/x6/es/util/polyfill/index.js","webpack://umd/./node_modules/@antv/x6/es/util/lang/lang.js","webpack://umd/./node_modules/@antv/x6/es/util/array/diff.js","webpack://umd/./node_modules/@antv/x6/es/util/object/mixins.js","webpack://umd/./node_modules/@antv/x6/es/util/object/inherit.js","webpack://umd/./node_modules/@antv/x6/es/util/object/object.js","webpack://umd/./node_modules/@antv/x6/es/util/string/eval.js","webpack://umd/./node_modules/@antv/x6/es/util/string/format.js","webpack://umd/./node_modules/@antv/x6/es/util/string/hashcode.js","webpack://umd/./node_modules/@antv/x6/es/util/string/uuid.js","webpack://umd/./node_modules/@antv/x6/es/util/string/html.js","webpack://umd/./node_modules/@antv/x6/es/util/string/suggestion.js","webpack://umd/./node_modules/@antv/x6/es/util/number/number.js","webpack://umd/./node_modules/@antv/x6/es/util/function/function.js","webpack://umd/./node_modules/@antv/x6/es/util/function/async.js","webpack://umd/./node_modules/@antv/x6/es/util/dom/class.js","webpack://umd/./node_modules/@antv/x6/es/util/dom/elem.js","webpack://umd/./node_modules/@antv/x6/es/util/dom/attr.js","webpack://umd/./node_modules/@antv/x6/es/util/text/annotate.js","webpack://umd/./node_modules/@antv/x6/es/util/text/sanitize.js","webpack://umd/./node_modules/@antv/x6/es/util/json/index.js","webpack://umd/./node_modules/@antv/x6/es/util/datauri/index.js","webpack://umd/./node_modules/@antv/x6/es/util/unit/index.js","webpack://umd/./node_modules/@antv/x6/es/util/dom/af.js","webpack://umd/./node_modules/@antv/x6/es/util/dom/prefix.js","webpack://umd/./node_modules/@antv/x6/es/util/dom/style.js","webpack://umd/./node_modules/@antv/x6/es/util/dom/selection.js","webpack://umd/./node_modules/@antv/x6/es/geometry/angle.js","webpack://umd/./node_modules/@antv/x6/es/geometry/point.js","webpack://umd/./node_modules/@antv/x6/es/geometry/rectangle.js","webpack://umd/./node_modules/@antv/x6/es/geometry/line.js","webpack://umd/./node_modules/@antv/x6/es/geometry/ellipse.js","webpack://umd/./node_modules/@antv/x6/es/geometry/polyline.js","webpack://umd/./node_modules/@antv/x6/es/geometry/curve.js","webpack://umd/./node_modules/@antv/x6/es/geometry/path/lineto.js","webpack://umd/./node_modules/@antv/x6/es/geometry/path/close.js","webpack://umd/./node_modules/@antv/x6/es/geometry/path/moveto.js","webpack://umd/./node_modules/@antv/x6/es/geometry/path/curveto.js","webpack://umd/./node_modules/@antv/x6/es/geometry/util.js","webpack://umd/./node_modules/@antv/x6/es/geometry/geometry.js","webpack://umd/./node_modules/@antv/x6/es/geometry/path/segment.js","webpack://umd/./node_modules/@antv/x6/es/geometry/path/normalize.js","webpack://umd/./node_modules/@antv/x6/es/geometry/path/util.js","webpack://umd/./node_modules/@antv/x6/es/geometry/path/path.js","webpack://umd/./node_modules/@antv/x6/es/util/vector/index.js","webpack://umd/./node_modules/@antv/x6/es/util/dom/text.js","webpack://umd/./node_modules/@antv/x6/es/util/dom/path.js","webpack://umd/./node_modules/@antv/x6/es/util/dom/matrix.js","webpack://umd/./node_modules/@antv/x6/es/util/dom/geom.js","webpack://umd/./node_modules/@antv/x6/es/util/dom/transform.js","webpack://umd/./node_modules/@antv/x6/es/util/dom/mousewheel.js","webpack://umd/./node_modules/@antv/x6/es/util/dom/vector.js","webpack://umd/./node_modules/@antv/x6/es/util/size-sensor/sensors/util.js","webpack://umd/./node_modules/@antv/x6/es/util/size-sensor/sensors/index.js","webpack://umd/./node_modules/@antv/x6/es/util/size-sensor/sensors/observer.js","webpack://umd/./node_modules/@antv/x6/es/util/size-sensor/sensors/object.js","webpack://umd/./node_modules/@antv/x6/es/util/size-sensor/index.js","webpack://umd/./node_modules/@antv/x6/es/util/scheduler/index.js","webpack://umd/./node_modules/@antv/x6/es/registry/registry.js","webpack://umd/./node_modules/@antv/x6/es/registry/attr/raw.js","webpack://umd/./node_modules/@antv/x6/es/registry/attr/ref.js","webpack://umd/./node_modules/@antv/x6/es/registry/attr/fill.js","webpack://umd/./node_modules/@antv/x6/es/registry/attr/stroke.js","webpack://umd/./node_modules/@antv/x6/es/registry/attr/text.js","webpack://umd/./node_modules/@antv/x6/es/registry/attr/title.js","webpack://umd/./node_modules/@antv/x6/es/registry/attr/align.js","webpack://umd/./node_modules/@antv/x6/es/registry/attr/style.js","webpack://umd/./node_modules/@antv/x6/es/registry/attr/html.js","webpack://umd/./node_modules/@antv/x6/es/registry/attr/filter.js","webpack://umd/./node_modules/@antv/x6/es/registry/attr/port.js","webpack://umd/./node_modules/@antv/x6/es/registry/marker/util.js","webpack://umd/./node_modules/@antv/x6/es/registry/marker/classic.js","webpack://umd/./node_modules/@antv/x6/es/registry/marker/diamond.js","webpack://umd/./node_modules/@antv/x6/es/registry/marker/path.js","webpack://umd/./node_modules/@antv/x6/es/registry/marker/cross.js","webpack://umd/./node_modules/@antv/x6/es/registry/marker/async.js","webpack://umd/./node_modules/@antv/x6/es/registry/marker/circle.js","webpack://umd/./node_modules/@antv/x6/es/registry/marker/ellipse.js","webpack://umd/./node_modules/@antv/x6/es/registry/marker/index.js","webpack://umd/./node_modules/@antv/x6/es/registry/attr/marker.js","webpack://umd/./node_modules/@antv/x6/es/registry/attr/connection.js","webpack://umd/./node_modules/@antv/x6/es/registry/attr/index.js","webpack://umd/./node_modules/@antv/x6/es/registry/grid/dot.js","webpack://umd/./node_modules/@antv/x6/es/registry/grid/fixed-dot.js","webpack://umd/./node_modules/@antv/x6/es/registry/grid/mesh.js","webpack://umd/./node_modules/@antv/x6/es/registry/grid/double-mesh.js","webpack://umd/./node_modules/@antv/x6/es/registry/grid/index.js","webpack://umd/./node_modules/@antv/x6/es/registry/filter/index.js","webpack://umd/./node_modules/@antv/x6/es/registry/filter/util.js","webpack://umd/./node_modules/@antv/x6/es/registry/filter/outline.js","webpack://umd/./node_modules/@antv/x6/es/registry/filter/highlight.js","webpack://umd/./node_modules/@antv/x6/es/registry/filter/blur.js","webpack://umd/./node_modules/@antv/x6/es/registry/filter/drop-shadow.js","webpack://umd/./node_modules/@antv/x6/es/registry/filter/gray-scale.js","webpack://umd/./node_modules/@antv/x6/es/registry/filter/sepia.js","webpack://umd/./node_modules/@antv/x6/es/registry/filter/saturate.js","webpack://umd/./node_modules/@antv/x6/es/registry/filter/hue-rotate.js","webpack://umd/./node_modules/@antv/x6/es/registry/filter/invert.js","webpack://umd/./node_modules/@antv/x6/es/registry/filter/brightness.js","webpack://umd/./node_modules/@antv/x6/es/registry/filter/contrast.js","webpack://umd/./node_modules/@antv/x6/es/registry/background/flip-x.js","webpack://umd/./node_modules/@antv/x6/es/registry/background/flip-y.js","webpack://umd/./node_modules/@antv/x6/es/registry/background/flip-xy.js","webpack://umd/./node_modules/@antv/x6/es/registry/background/watermark.js","webpack://umd/./node_modules/@antv/x6/es/registry/background/index.js","webpack://umd/./node_modules/@antv/x6/es/global/config.js","webpack://umd/./node_modules/@antv/x6/es/global/util.js","webpack://umd/./node_modules/@antv/x6/es/global/version.js","webpack://umd/./node_modules/@antv/x6/es/registry/highlighter/class.js","webpack://umd/./node_modules/@antv/x6/es/registry/highlighter/opacity.js","webpack://umd/./node_modules/@antv/x6/es/registry/highlighter/stroke.js","webpack://umd/./node_modules/@antv/x6/es/registry/highlighter/index.js","webpack://umd/./node_modules/@antv/x6/es/registry/port-layout/util.js","webpack://umd/./node_modules/@antv/x6/es/registry/port-layout/absolute.js","webpack://umd/./node_modules/@antv/x6/es/registry/port-layout/ellipse.js","webpack://umd/./node_modules/@antv/x6/es/registry/port-layout/line.js","webpack://umd/./node_modules/@antv/x6/es/registry/port-layout/index.js","webpack://umd/./node_modules/@antv/x6/es/registry/port-label-layout/util.js","webpack://umd/./node_modules/@antv/x6/es/registry/port-label-layout/side.js","webpack://umd/./node_modules/@antv/x6/es/registry/port-label-layout/inout.js","webpack://umd/./node_modules/@antv/x6/es/registry/port-label-layout/radial.js","webpack://umd/./node_modules/@antv/x6/es/registry/port-label-layout/index.js","webpack://umd/./node_modules/@antv/x6/es/common/events.js","webpack://umd/./node_modules/@antv/x6/es/common/color.js","webpack://umd/./node_modules/@antv/x6/es/common/disposable.js","webpack://umd/./node_modules/@antv/x6/es/common/basecoat.js","webpack://umd/./node_modules/@antv/x6/es/common/disablable.js","webpack://umd/./node_modules/@antv/x6/es/common/dictionary.js","webpack://umd/./node_modules/@antv/x6/es/common/algorithm/dijkstra.js","webpack://umd/./node_modules/@antv/x6/es/common/animation/timing.js","webpack://umd/./node_modules/@antv/x6/es/common/animation/interp.js","webpack://umd/./node_modules/@antv/x6/es/common/localstorage.js","webpack://umd/./node_modules/@antv/x6/es/view/view.js","webpack://umd/./node_modules/@antv/x6/es/common/algorithm/priorityqueue.js","webpack://umd/./node_modules/@antv/x6/es/registry/connection-strategy/noop.js","webpack://umd/./node_modules/@antv/x6/es/registry/connection-strategy/pin.js","webpack://umd/./node_modules/@antv/x6/es/registry/connection-strategy/index.js","webpack://umd/./node_modules/@antv/x6/es/view/markup.js","webpack://umd/./node_modules/@antv/x6/es/view/attr.js","webpack://umd/./node_modules/@antv/x6/es/view/cache.js","webpack://umd/./node_modules/@antv/x6/es/view/flag.js","webpack://umd/./node_modules/@antv/x6/es/view/cell.js","webpack://umd/./node_modules/@antv/x6/es/view/tool.js","webpack://umd/./node_modules/@antv/x6/es/registry/tool/util.js","webpack://umd/./node_modules/@antv/x6/es/registry/tool/button.js","webpack://umd/./node_modules/@antv/x6/es/registry/tool/boundary.js","webpack://umd/./node_modules/@antv/x6/es/registry/tool/vertices.js","webpack://umd/./node_modules/@antv/x6/es/registry/tool/segments.js","webpack://umd/./node_modules/@antv/x6/es/registry/tool/anchor.js","webpack://umd/./node_modules/@antv/x6/es/registry/tool/arrowhead.js","webpack://umd/./node_modules/@antv/x6/es/registry/tool/editor.js","webpack://umd/./node_modules/@antv/x6/es/registry/tool/index.js","webpack://umd/./node_modules/@antv/x6/es/registry/node-anchor/bbox.js","webpack://umd/./node_modules/@antv/x6/es/registry/node-anchor/util.js","webpack://umd/./node_modules/@antv/x6/es/registry/node-anchor/orth.js","webpack://umd/./node_modules/@antv/x6/es/registry/node-anchor/node-center.js","webpack://umd/./node_modules/@antv/x6/es/registry/node-anchor/middle-side.js","webpack://umd/./node_modules/@antv/x6/es/registry/node-anchor/index.js","webpack://umd/./node_modules/@antv/x6/es/registry/edge-anchor/ratio.js","webpack://umd/./node_modules/@antv/x6/es/registry/edge-anchor/length.js","webpack://umd/./node_modules/@antv/x6/es/registry/edge-anchor/closest.js","webpack://umd/./node_modules/@antv/x6/es/registry/edge-anchor/orth.js","webpack://umd/./node_modules/@antv/x6/es/registry/edge-anchor/index.js","webpack://umd/./node_modules/@antv/x6/es/registry/connection-point/util.js","webpack://umd/./node_modules/@antv/x6/es/registry/connection-point/bbox.js","webpack://umd/./node_modules/@antv/x6/es/registry/connection-point/rect.js","webpack://umd/./node_modules/@antv/x6/es/registry/connection-point/boundary.js","webpack://umd/./node_modules/@antv/x6/es/registry/connection-point/anchor.js","webpack://umd/./node_modules/@antv/x6/es/registry/connection-point/index.js","webpack://umd/./node_modules/@antv/x6/es/registry/router/normal.js","webpack://umd/./node_modules/@antv/x6/es/registry/router/oneside.js","webpack://umd/./node_modules/@antv/x6/es/registry/router/util.js","webpack://umd/./node_modules/@antv/x6/es/registry/router/orth.js","webpack://umd/./node_modules/@antv/x6/es/registry/router/manhattan/options.js","webpack://umd/./node_modules/@antv/x6/es/registry/router/manhattan/sorted-set.js","webpack://umd/./node_modules/@antv/x6/es/registry/router/manhattan/obstacle-map.js","webpack://umd/./node_modules/@antv/x6/es/registry/router/manhattan/util.js","webpack://umd/./node_modules/@antv/x6/es/registry/router/manhattan/router.js","webpack://umd/./node_modules/@antv/x6/es/registry/router/manhattan/index.js","webpack://umd/./node_modules/@antv/x6/es/registry/router/metro.js","webpack://umd/./node_modules/@antv/x6/es/registry/router/er.js","webpack://umd/./node_modules/@antv/x6/es/registry/router/loop.js","webpack://umd/./node_modules/@antv/x6/es/registry/router/index.js","webpack://umd/./node_modules/@antv/x6/es/registry/connector/normal.js","webpack://umd/./node_modules/@antv/x6/es/registry/connector/loop.js","webpack://umd/./node_modules/@antv/x6/es/registry/connector/rounded.js","webpack://umd/./node_modules/@antv/x6/es/registry/connector/smooth.js","webpack://umd/./node_modules/@antv/x6/es/registry/connector/jumpover.js","webpack://umd/./node_modules/@antv/x6/es/registry/connector/index.js","webpack://umd/./node_modules/@antv/x6/es/registry/index.js","webpack://umd/./node_modules/@antv/x6/es/model/animation.js","webpack://umd/./node_modules/@antv/x6/es/model/store.js","webpack://umd/./node_modules/@antv/x6/es/model/cell.js","webpack://umd/./node_modules/@antv/x6/es/model/registry.js","webpack://umd/./node_modules/@antv/x6/es/model/port.js","webpack://umd/./node_modules/@antv/x6/es/model/node.js","webpack://umd/./node_modules/@antv/x6/es/shape/base.js","webpack://umd/./node_modules/@antv/x6/es/shape/basic/util.js","webpack://umd/./node_modules/@antv/x6/es/shape/basic/rect.js","webpack://umd/./node_modules/@antv/x6/es/shape/basic/circle.js","webpack://umd/./node_modules/@antv/x6/es/shape/basic/ellipse.js","webpack://umd/./node_modules/@antv/x6/es/shape/basic/polygon.js","webpack://umd/./node_modules/@antv/x6/es/shape/basic/polyline.js","webpack://umd/./node_modules/@antv/x6/es/shape/basic/image.js","webpack://umd/./node_modules/@antv/x6/es/shape/basic/path.js","webpack://umd/./node_modules/@antv/x6/es/shape/basic/rhombus.js","webpack://umd/./node_modules/@antv/x6/es/shape/basic/cylinder.js","webpack://umd/./node_modules/@antv/x6/es/model/edge.js","webpack://umd/./node_modules/@antv/x6/es/view/edge.js","webpack://umd/./node_modules/@antv/x6/es/view/node.js","webpack://umd/./node_modules/@antv/x6/es/shape/basic/text.js","webpack://umd/./node_modules/@antv/x6/es/model/collection.js","webpack://umd/./node_modules/@antv/x6/es/model/model.js","webpack://umd/./node_modules/@antv/x6/es/shape/basic/text-block.js","webpack://umd/./node_modules/@antv/x6/es/shape/standard/empty.js","webpack://umd/./node_modules/@antv/x6/es/shape/standard/util.js","webpack://umd/./node_modules/@antv/x6/es/shape/standard/rect.js","webpack://umd/./node_modules/@antv/x6/es/shape/standard/rect-headered.js","webpack://umd/./node_modules/@antv/x6/es/shape/standard/circle.js","webpack://umd/./node_modules/@antv/x6/es/shape/standard/cylinder.js","webpack://umd/./node_modules/@antv/x6/es/shape/standard/ellipse.js","webpack://umd/./node_modules/@antv/x6/es/shape/standard/poly.js","webpack://umd/./node_modules/@antv/x6/es/shape/standard/polygon.js","webpack://umd/./node_modules/@antv/x6/es/shape/standard/polyline.js","webpack://umd/./node_modules/@antv/x6/es/shape/standard/path.js","webpack://umd/./node_modules/@antv/x6/es/shape/standard/text-block.js","webpack://umd/./node_modules/@antv/x6/es/shape/standard/image.js","webpack://umd/./node_modules/@antv/x6/es/shape/standard/image-bordered.js","webpack://umd/./node_modules/@antv/x6/es/shape/standard/image-embedded.js","webpack://umd/./node_modules/@antv/x6/es/shape/standard/image-inscribed.js","webpack://umd/./node_modules/@antv/x6/es/shape/standard/edge.js","webpack://umd/./node_modules/@antv/x6/es/shape/standard/edge-shadow.js","webpack://umd/./node_modules/@antv/x6/es/shape/standard/edge-doubled.js","webpack://umd/./node_modules/@antv/x6/es/shape/standard/html.js","webpack://umd/./node_modules/@antv/x6/es/addon/autosave/index.js","webpack://umd/./node_modules/@antv/x6/es/graph/base.js","webpack://umd/./node_modules/@antv/x6/es/graph/view.js","webpack://umd/./node_modules/@antv/x6/es/graph/decorator.js","webpack://umd/./node_modules/@antv/x6/es/graph/css.js","webpack://umd/./node_modules/@antv/x6/es/style/raw.js","webpack://umd/./node_modules/@antv/x6/es/addon/common/handle.js","webpack://umd/./node_modules/@antv/x6/es/addon/common/widget.js","webpack://umd/./node_modules/@antv/x6/es/addon/knob/index.js","webpack://umd/./node_modules/@antv/x6/es/addon/minimap/index.js","webpack://umd/./node_modules/@antv/x6/es/addon/snapline/index.js","webpack://umd/./node_modules/@antv/x6/es/graph/renderer.js","webpack://umd/./node_modules/@antv/x6/es/graph/background.js","webpack://umd/./node_modules/@antv/x6/es/addon/scroller/index.js","webpack://umd/./node_modules/@antv/x6/es/addon/transform/util.js","webpack://umd/./node_modules/@antv/x6/es/addon/selection/index.js","webpack://umd/./node_modules/@antv/x6/es/addon/transform/index.js","webpack://umd/./node_modules/@antv/x6/es/graph/options.js","webpack://umd/./node_modules/@antv/x6/es/graph/defs.js","webpack://umd/./node_modules/@antv/x6/es/graph/grid.js","webpack://umd/./node_modules/@antv/x6/es/graph/coord.js","webpack://umd/./node_modules/@antv/x6/es/graph/snapline.js","webpack://umd/./node_modules/@antv/x6/es/types/modifier.js","webpack://umd/./node_modules/@antv/x6/es/graph/scroller.js","webpack://umd/./node_modules/@antv/x6/es/graph/clipboard.js","webpack://umd/./node_modules/@antv/x6/es/graph/highlight.js","webpack://umd/./node_modules/@antv/x6/es/graph/transform.js","webpack://umd/./node_modules/@antv/x6/es/graph/selection.js","webpack://umd/./node_modules/@antv/x6/es/graph/history.js","webpack://umd/./node_modules/@antv/x6/es/graph/minimap.js","webpack://umd/./node_modules/@antv/x6/es/graph/keyboard.js","webpack://umd/./node_modules/@antv/x6/es/graph/mousewheel.js","webpack://umd/./node_modules/@antv/x6/es/graph/print.js","webpack://umd/./node_modules/@antv/x6/es/graph/format.js","webpack://umd/./node_modules/@antv/x6/es/graph/knob.js","webpack://umd/./node_modules/@antv/x6/es/graph/panning.js","webpack://umd/./node_modules/@antv/x6/es/graph/size.js","webpack://umd/./node_modules/@antv/x6/es/graph/hook.js","webpack://umd/./node_modules/@antv/x6/es/graph/graph.js","webpack://umd/./node_modules/@antv/x6/es/addon/clipboard/index.js","webpack://umd/./node_modules/@antv/x6/es/addon/halo/index.js","webpack://umd/./node_modules/@antv/x6/es/addon/halo/node-preset.js","webpack://umd/./node_modules/@antv/x6/es/addon/halo/edge-preset.js","webpack://umd/./node_modules/@antv/x6/es/addon/dnd/index.js","webpack://umd/./node_modules/@antv/x6/es/layout/grid.js","webpack://umd/./node_modules/@antv/x6/es/addon/stencil/index.js","webpack://umd/./node_modules/@antv/x6/es/global/track.js","webpack://umd/./node_modules/@antv/x6-vue-shape/es/registry.js","webpack://umd/./node_modules/@antv/x6-vue-shape/es/hook.js","webpack://umd/./node_modules/@antv/x6-vue-shape/es/node.js","webpack://umd/./node_modules/@vue/composition-api/dist/vue-composition-api.mjs","webpack://umd/./node_modules/vue-demi/lib/index.esm.js","webpack://umd/./node_modules/@antv/x6-vue-shape/es/view.js","webpack://umd/./node_modules/@antv/x6-vue-shape/es/teleport.js","webpack://umd/./src/components/MiLayoutReadOnly/src/PvReadOnly.vue?a816","webpack://umd/src/components/MiLayoutReadOnly/src/PvReadOnly.vue","webpack://umd/./src/components/MiLayoutReadOnly/src/PvReadOnly.vue","webpack://umd/./src/components/MiLayoutReadOnly/src/PvReadOnly.vue?271e","webpack://umd/./src/mixins/x6graph.js","webpack://umd/src/components/MiLayoutReadOnly/src/MiLayoutReadOnly.vue","webpack://umd/./src/components/MiLayoutReadOnly/src/MiLayoutReadOnly.vue?ebef","webpack://umd/./src/components/MiLayoutReadOnly/src/MiLayoutReadOnly.vue?7dfe","webpack://umd/./src/components/MiLayoutReadOnly/src/MiLayoutReadOnly.vue?568d","webpack://umd/./src/components/GoodweDeviceDetail/src/components/MicroDeviceList/modals/ViewLayoutDialog.vue?5cce","webpack://umd/src/components/GoodweDeviceDetail/src/components/MicroDeviceList/modals/ViewLayoutDialog.vue","webpack://umd/./src/components/GoodweDeviceDetail/src/components/MicroDeviceList/modals/ViewLayoutDialog.vue","webpack://umd/./src/components/GoodweDeviceDetail/src/components/MicroDeviceList/modals/ViewLayoutDialog.vue?5900","webpack://umd/./src/components/GoodweDeviceDetail/src/components/MicroDeviceList/MicroDeviceList.js?8bbb","webpack://umd/./src/components/GoodweDeviceDetail/src/components/MicroDeviceList/MicroDeviceList.js","webpack://umd/./src/components/GoodweDeviceDetail/src/components/MicroDeviceList/MicroDeviceList.vue","webpack://umd/./src/components/GoodweDeviceDetail/src/components/MicroDeviceList/MicroDeviceList.vue?1378","webpack://umd/./src/components/GoodweDeviceDetail/src/components/DataLoggerList/DataLoggerList.js?fafe","webpack://umd/./src/components/GoodweDeviceDetail/src/components/DataLoggerList/DataLoggerList.js","webpack://umd/./src/components/GoodweDeviceDetail/src/components/DataLoggerList/DataLoggerList.vue","webpack://umd/./src/components/GoodweDeviceDetail/src/components/DataLoggerList/DataLoggerList.vue?a75c","webpack://umd/src/components/GoodweDeviceDetail/src/components/BatteryList/DialogModals/DeleteBatteryModal.vue","webpack://umd/./src/components/GoodweDeviceDetail/src/components/BatteryList/DialogModals/DeleteBatteryModal.vue?dbd4","webpack://umd/./src/components/GoodweDeviceDetail/src/components/BatteryList/DialogModals/DeleteBatteryModal.vue","webpack://umd/./src/components/GoodweDeviceDetail/src/components/BatteryList/DialogModals/DeleteBatteryModal.vue?8f78","webpack://umd/src/components/GoodweDeviceDetail/src/components/BatteryList/DialogModals/UpdateBatteryModal.vue","webpack://umd/./src/components/GoodweDeviceDetail/src/components/BatteryList/DialogModals/UpdateBatteryModal.vue?d1a7","webpack://umd/./src/components/GoodweDeviceDetail/src/components/BatteryList/DialogModals/UpdateBatteryModal.vue","webpack://umd/./src/components/GoodweDeviceDetail/src/components/BatteryList/DialogModals/UpdateBatteryModal.vue?cd1b","webpack://umd/src/components/GoodweDeviceDetail/src/components/BatteryList/DialogModals/ChangeBatteryModal.vue","webpack://umd/./src/components/GoodweDeviceDetail/src/components/BatteryList/DialogModals/ChangeBatteryModal.vue?f798","webpack://umd/./src/components/GoodweDeviceDetail/src/components/BatteryList/DialogModals/ChangeBatteryModal.vue","webpack://umd/./src/components/GoodweDeviceDetail/src/components/BatteryList/DialogModals/ChangeBatteryModal.vue?de54","webpack://umd/./src/components/GoodweAddDevice/src/components/AddGwBattery/AddBatteryModal/AddBatteryModule.vue?5085","webpack://umd/src/components/GoodweAddDevice/src/components/AddGwBattery/AddBatteryModal/AddBatteryModule.vue","webpack://umd/./src/components/GoodweAddDevice/src/components/AddGwBattery/AddBatteryModal/AddBatteryModule.vue","webpack://umd/./src/components/GoodweAddDevice/src/components/AddGwBattery/AddBatteryModal/AddBatteryModule.vue?5a1e","webpack://umd/./src/components/GoodweDeviceDetail/src/components/BatteryList/CustomTableRow/CustomTableRow.js?7636","webpack://umd/./src/components/GoodweDeviceDetail/src/components/BatteryList/CustomTableRow/CustomTableRow.js","webpack://umd/./src/components/GoodweDeviceDetail/src/components/BatteryList/CustomTableRow/CustomTableRow.vue","webpack://umd/./src/components/GoodweDeviceDetail/src/components/BatteryList/CustomTableRow/CustomTableRow.vue?873d","webpack://umd/./src/components/GoodweDeviceDetail/src/components/BatteryList/BatteryReplacement/BatteryReplacement.js?bb00","webpack://umd/./src/components/GoodweDeviceDetail/src/components/BatteryList/BatteryReplacement/BatteryReplacement.js","webpack://umd/./src/components/GoodweDeviceDetail/src/components/BatteryList/BatteryReplacement/BatteryReplacement.vue","webpack://umd/./src/components/GoodweDeviceDetail/src/components/BatteryList/BatteryReplacement/BatteryReplacement.vue?163b","webpack://umd/./src/components/GoodweDeviceDetail/src/components/BatteryList/BatteryList.js?ae47","webpack://umd/./src/components/GoodweDeviceDetail/src/components/BatteryList/BatteryList.js","webpack://umd/./src/components/GoodweDeviceDetail/src/components/BatteryList/BatteryList.vue","webpack://umd/./src/components/GoodweDeviceDetail/src/components/BatteryList/BatteryList.vue?1096","webpack://umd/./src/components/GoodweDeviceDetail/src/components/EvChargerList/DialogModals/EditRFIDCardModal.vue?b771","webpack://umd/src/components/GoodweDeviceDetail/src/components/EvChargerList/DialogModals/EditRFIDCardModal.vue","webpack://umd/./src/components/GoodweDeviceDetail/src/components/EvChargerList/DialogModals/EditRFIDCardModal.vue","webpack://umd/./src/components/GoodweDeviceDetail/src/components/EvChargerList/DialogModals/EditRFIDCardModal.vue?400a","webpack://umd/./src/components/GoodweDeviceDetail/src/components/EvChargerList/DialogModals/SendRFIDCardModal.vue?95e8","webpack://umd/src/components/GoodweDeviceDetail/src/components/EvChargerList/DialogModals/SendRFIDCardModal.vue","webpack://umd/./src/components/GoodweDeviceDetail/src/components/EvChargerList/DialogModals/SendRFIDCardModal.vue","webpack://umd/./src/components/GoodweDeviceDetail/src/components/EvChargerList/DialogModals/SendRFIDCardModal.vue?81bf","webpack://umd/./src/components/GoodweDeviceDetail/src/components/EvChargerList/EvChargerList.js","webpack://umd/./src/components/GoodweDeviceDetail/src/components/EvChargerList/EvChargerList.js?99d0","webpack://umd/./src/components/GoodweDeviceDetail/src/components/EvChargerList/EvChargerList.vue","webpack://umd/./src/components/GoodweDeviceDetail/src/components/EvChargerList/EvChargerList.vue?cea1","webpack://umd/src/components/GoodweAddDevice/src/components/AddDeviceForm.vue","webpack://umd/./src/components/GoodweAddDevice/src/components/AddDeviceForm.vue?4bfe","webpack://umd/./src/components/GoodweAddDevice/src/components/AddDeviceForm.vue","webpack://umd/./src/components/GoodweAddDevice/src/components/AddDeviceForm.vue?6538","webpack://umd/./src/components/GoodweAddDevice/src/components/AddGwBattery/AddBatteryModal/AddBatteryForm.vue?2aa5","webpack://umd/src/components/GoodweAddDevice/src/components/AddGwBattery/AddBatteryModal/AddBatteryForm.vue","webpack://umd/./src/components/GoodweAddDevice/src/components/AddGwBattery/AddBatteryModal/AddBatteryForm.vue","webpack://umd/./src/components/GoodweAddDevice/src/components/AddGwBattery/AddBatteryModal/AddBatteryForm.vue?05ea","webpack://umd/src/components/GoodweAddDevice/src/components/AddGwBattery/AddBatteryModal/AutoDetectBattery.vue","webpack://umd/./src/components/GoodweAddDevice/src/components/AddGwBattery/AddBatteryModal/AutoDetectBattery.vue?bcda","webpack://umd/./src/components/GoodweAddDevice/src/components/AddGwBattery/AddBatteryModal/AutoDetectBattery.vue","webpack://umd/./src/components/GoodweAddDevice/src/components/AddGwBattery/AddBatteryModal/AutoDetectBattery.vue?f204","webpack://umd/src/components/GoodweAddDevice/src/components/AddGwBattery/AddBatteryModal/BatteryResultList.vue","webpack://umd/./src/components/GoodweAddDevice/src/components/AddGwBattery/AddBatteryModal/BatteryResultList.vue?6e5b","webpack://umd/./src/components/GoodweAddDevice/src/components/AddGwBattery/AddBatteryModal/BatteryResultList.vue","webpack://umd/./src/components/GoodweAddDevice/src/components/AddGwBattery/AddBatteryModal/BatteryResultList.vue?670b","webpack://umd/./src/components/GoodweAddDevice/src/components/AddGwBattery/AddGwBattery.js?ab0b","webpack://umd/./src/components/GoodweAddDevice/src/components/AddGwBattery/AddGwBattery.js","webpack://umd/./src/components/GoodweAddDevice/src/components/AddGwBattery/AddGwBattery.vue","webpack://umd/./src/components/GoodweAddDevice/src/components/AddGwBattery/AddGwBattery.vue?0d6d","webpack://umd/./src/components/GoodweAddDevice/src/components/MicroInverterList.vue?08a4","webpack://umd/src/components/GoodweAddDevice/src/components/MicroInverterList.vue","webpack://umd/./src/components/GoodweAddDevice/src/components/MicroInverterList.vue","webpack://umd/./src/components/GoodweAddDevice/src/components/MicroInverterList.vue?76d4","webpack://umd/./src/components/GoodweAddDevice/src/components/MicroImgUpload/MicroImgUpload.js?7453","webpack://umd/./src/components/GoodweAddDevice/src/components/MicroImgUpload/MicroImgUpload.js","webpack://umd/./src/components/GoodweAddDevice/src/components/MicroImgUpload/MicroImgUpload.vue","webpack://umd/./src/components/GoodweAddDevice/src/components/MicroImgUpload/MicroImgUpload.vue?1064","webpack://umd/src/components/GoodweAddDevice/src/components/AddAutoDetect.vue","webpack://umd/./src/components/GoodweAddDevice/src/components/AddAutoDetect.vue?f02f","webpack://umd/./src/components/GoodweAddDevice/src/components/AddAutoDetect.vue","webpack://umd/./src/components/GoodweAddDevice/src/components/AddAutoDetect.vue?e8fd","webpack://umd/./src/components/GoodweAddDevice/src/components/AddMicroInverter/AddMicroInverter.js","webpack://umd/./src/components/GoodweAddDevice/src/components/AddMicroInverter/AddMicroInverter.js?cad9","webpack://umd/./src/components/GoodweAddDevice/src/components/AddMicroInverter/AddMicroInverter.vue","webpack://umd/./src/components/GoodweAddDevice/src/components/AddMicroInverter/AddMicroInverter.vue?4398","webpack://umd/src/components/GoodweAddDevice/src/GoodweAddDevice.vue","webpack://umd/./src/components/GoodweAddDevice/src/GoodweAddDevice.vue?c793","webpack://umd/./src/components/GoodweAddDevice/src/GoodweAddDevice.vue","webpack://umd/./src/components/GoodweAddDevice/src/GoodweAddDevice.vue?2bf9","webpack://umd/./src/components/GoodweDeviceDetail/src/dialogs/components/ScanAssociatedDevice/ScanAssociatedDevice.js?7c0f","webpack://umd/./src/components/GoodweDeviceDetail/src/dialogs/components/ScanAssociatedDevice/ScanAssociatedDevice.js","webpack://umd/./src/components/GoodweDeviceDetail/src/dialogs/components/ScanAssociatedDevice/ScanAssociatedDevice.vue","webpack://umd/./src/components/GoodweDeviceDetail/src/dialogs/components/ScanAssociatedDevice/ScanAssociatedDevice.vue?16e1","webpack://umd/./src/components/GoodweDeviceDetail/src/GoodweDeviceDetail.js","webpack://umd/./src/components/GoodweDeviceDetail/src/GoodweDeviceDetail.js?53f2","webpack://umd/./src/components/GoodweDeviceDetail/src/GoodweDeviceDetail.vue","webpack://umd/./src/components/GoodweDeviceDetail/src/GoodweDeviceDetail.vue?165b","webpack://umd/./src/components/GoodweDeviceDetail/index.js","webpack://umd/./src/components/InverterMonitor/src/DeviceChart/DeviceCurveChart.js","webpack://umd/./src/components/InverterMonitor/src/DeviceChart/DeviceCurveChart.js?33a8","webpack://umd/./src/components/InverterMonitor/src/DeviceChart/DeviceCurveChart.vue","webpack://umd/./src/components/InverterMonitor/src/DeviceChart/DeviceCurveChart.vue?1868","webpack://umd/src/components/InverterMonitor/src/InverterMonitor.vue","webpack://umd/./src/components/InverterMonitor/src/InverterMonitor.vue?7ebc","webpack://umd/./src/components/InverterMonitor/src/InverterMonitor.vue","webpack://umd/./src/components/InverterMonitor/src/InverterMonitor.vue?0ca8","webpack://umd/./src/components/InverterMonitor/index.js","webpack://umd/./src/components/TransReplace/src/TransReplace.vue?0160","webpack://umd/src/components/TransReplace/src/TransReplace.vue","webpack://umd/./src/components/TransReplace/src/TransReplace.vue","webpack://umd/./src/components/TransReplace/index.js","webpack://umd/src/components/GoodweDeviceChart/src/GoodweDeviceChart.vue","webpack://umd/./src/components/GoodweDeviceChart/src/GoodweDeviceChart.vue?71a6","webpack://umd/./src/components/GoodweDeviceChart/src/GoodweDeviceChart.vue","webpack://umd/./src/components/GoodweDeviceChart/src/GoodweDeviceChart.vue?c648","webpack://umd/./src/components/GoodweDeviceChart/index.js","webpack://umd/./src/components/GoodweHomekitChart/src/GoodweHomekitChart.vue?e733","webpack://umd/src/components/GoodweHomekitChart/src/GoodweHomekitChart.vue","webpack://umd/./src/components/GoodweHomekitChart/src/GoodweHomekitChart.vue","webpack://umd/./src/components/GoodweHomekitChart/src/GoodweHomekitChart.vue?94e2","webpack://umd/./src/components/GoodweHomekitChart/index.js","webpack://umd/./src/components/GoodweInverterSelect/src/GoodweInverterSelect.vue?f522","webpack://umd/src/components/GoodweInverterSelect/src/GoodweInverterSelect.vue","webpack://umd/./src/components/GoodweInverterSelect/src/GoodweInverterSelect.vue","webpack://umd/./src/components/GoodweInverterSelect/src/GoodweInverterSelect.vue?d390","webpack://umd/./src/components/GoodweInverterSelect/index.js","webpack://umd/./src/components/GoodweSec/src/GoodweSec.vue?2881","webpack://umd/src/components/GoodweSec/src/GoodweSec.vue","webpack://umd/./src/components/GoodweSec/src/GoodweSec.vue?b882","webpack://umd/./src/components/GoodweSec/src/GoodweSec.vue?8c8b","webpack://umd/./src/components/GoodweSec/index.js","webpack://umd/./src/components/GoodweMeterInfo/src/GoodweMeterInfo.vue?4c81","webpack://umd/src/components/GoodweMeterInfo/src/GoodweMeterInfo.vue","webpack://umd/./src/components/GoodweMeterInfo/src/GoodweMeterInfo.vue","webpack://umd/./src/components/GoodweMeterInfo/src/GoodweMeterInfo.vue?dbcb","webpack://umd/./src/components/GoodweMeterInfo/index.js","webpack://umd/./src/tigo/asevent/index.js","webpack://umd/./src/tigo/src/PanelBase.js","webpack://umd/./src/tigo/src/Inherit.js","webpack://umd/./src/tigo/src/Draw.js","webpack://umd/./src/tigo/src/Drag.js","webpack://umd/./src/tigo/src/PanelContainer.js","webpack://umd/./src/tigo/src/PanelControl.js","webpack://umd/src/components/GoodweTigo/src/GoodweTigo.vue","webpack://umd/./src/components/GoodweTigo/src/GoodweTigo.vue?3d47","webpack://umd/./src/components/GoodweTigo/src/GoodweTigo.vue?b799","webpack://umd/./src/components/GoodweTigo/src/GoodweTigo.vue?3640","webpack://umd/src/components/GoodweTigo/src/GoodweTigoTable.vue","webpack://umd/./src/components/GoodweTigo/src/GoodweTigoTable.vue?bc8e","webpack://umd/./src/components/GoodweTigo/src/GoodweTigoTable.vue?24d9","webpack://umd/./src/components/GoodweTigo/src/GoodweTigoTable.vue?7dfc","webpack://umd/./src/components/GoodweTigo/index.js","webpack://umd/src/components/GoodweMap/src/GoodweMap.vue","webpack://umd/./src/components/GoodweMap/src/GoodweMap.vue?28b9","webpack://umd/./src/components/GoodweMap/src/GoodweMap.vue?bec7","webpack://umd/./src/components/GoodweMap/src/GoodweMap.vue?117b","webpack://umd/./src/components/GoodweMap/index.js","webpack://umd/./src/components/GoodwePsBatteryCure/src/GoodwePsBatteryCure.vue?2e68","webpack://umd/src/components/GoodwePsBatteryCure/src/GoodwePsBatteryCure.vue","webpack://umd/./src/components/GoodwePsBatteryCure/src/GoodwePsBatteryCure.vue","webpack://umd/./src/components/GoodwePsBatteryCure/src/GoodwePsBatteryCure.vue?3186","webpack://umd/./src/components/GoodwePsBatteryCure/index.js","webpack://umd/./src/components/GdwAttachment/src/GdwAttachment.vue?ab3b","webpack://umd/src/components/GdwAttachment/src/GdwAttachment.vue","webpack://umd/./src/components/GdwAttachment/src/GdwAttachment.vue?2cf1","webpack://umd/./src/components/GdwAttachment/src/GdwAttachment.vue?1be9","webpack://umd/./src/components/GdwAttachment/index.js","webpack://umd/./src/pages/FcasData/src/FcasData.js","webpack://umd/./src/pages/FcasData/src/FcasData.js?6f01","webpack://umd/./src/pages/FcasData/src/FcasData.vue","webpack://umd/./src/pages/FcasData/src/FcasData.vue?af18","webpack://umd/./src/pages/FcasData/index.js","webpack://umd/./src/components/GoodweEvCharge/src/GoodweEvCharge.vue?aae5","webpack://umd/src/components/GoodweEvCharge/src/GoodweEvCharge.vue","webpack://umd/./src/components/GoodweEvCharge/src/GoodweEvCharge.vue","webpack://umd/./src/components/GoodweEvCharge/src/GoodweEvCharge.vue?1401","webpack://umd/./src/components/GoodweEvCharge/index.js","webpack://umd/./src/components/GoodwePowerFlow/src/GoodweFlowPvBattery.vue?f960","webpack://umd/src/components/GoodwePowerFlow/src/GoodweFlowPvBattery.vue","webpack://umd/./src/components/GoodwePowerFlow/src/GoodweFlowPvBattery.vue","webpack://umd/./src/components/GoodwePowerFlow/src/GoodweFlowPvBattery.vue?3a50","webpack://umd/./src/components/GoodwePowerFlow/src/GoodweFlowPvNoBattery.vue?c698","webpack://umd/./src/components/GoodwePowerFlow/src/GoodweFlowPvNoBattery.vue?f65b","webpack://umd/src/components/GoodwePowerFlow/src/GoodweFlowPvNoBattery.vue","webpack://umd/./src/components/GoodwePowerFlow/src/GoodweFlowPvNoBattery.vue","webpack://umd/./src/components/GoodweParallelDetail/src/GoodweBattery.vue?1f60","webpack://umd/src/components/GoodweParallelDetail/src/GoodweBattery.vue","webpack://umd/./src/components/GoodweParallelDetail/src/GoodwePowerBatteryItem.vue?facb","webpack://umd/src/components/GoodweParallelDetail/src/GoodwePowerBatteryItem.vue","webpack://umd/./src/components/GoodweParallelDetail/src/GoodweBattery.vue?660a","webpack://umd/./src/components/GoodweParallelDetail/src/GoodweBattery.vue?b6e0","webpack://umd/./src/components/GoodweParallelDetail/src/GoodwePowerBatteryItem.vue","webpack://umd/./src/components/GoodweParallelDetail/src/GoodwePowerBatteryItem.vue?8000","webpack://umd/./src/components/GoodweParallelDetail/src/GoodwePowerFlowTooltip.vue?5ab1","webpack://umd/src/components/GoodweParallelDetail/src/GoodwePowerFlowTooltip.vue","webpack://umd/./src/components/GoodweParallelDetail/src/GoodwePowerFlowTooltip.vue","webpack://umd/./src/components/GoodweParallelDetail/src/GoodwePowerFlowTooltip.vue?538e","webpack://umd/src/components/GoodweParallelDetail/src/GoodweParallelDetail.vue","webpack://umd/./src/components/GoodweParallelDetail/src/GoodweParallelDetail.vue?5ad2","webpack://umd/./src/components/GoodweParallelDetail/src/GoodweParallelDetail.vue","webpack://umd/./src/components/GoodweParallelDetail/src/GoodweParallelDetail.vue?9731","webpack://umd/./src/components/GoodweParallelDetail/index.js","webpack://umd/./src/components/GoodweMixedParallel/GoodweBattery.vue?106c","webpack://umd/src/components/GoodweMixedParallel/GoodweBattery.vue","webpack://umd/./src/components/GoodweMixedParallel/GoodweBattery.vue?1477","webpack://umd/./src/components/GoodweMixedParallel/GoodweBattery.vue?d878","webpack://umd/./src/components/GoodweMixedParallel/GoodweMixedItem.vue?b876","webpack://umd/src/components/GoodweMixedParallel/GoodweMixedItem.vue","webpack://umd/./src/components/GoodweMixedParallel/GoodweMixedItem.vue","webpack://umd/./src/components/GoodweMixedParallel/GoodweMixedItem.vue?5cbc","webpack://umd/./src/components/GoodweMixedParallel/GoodweMixedParallel.vue?4ec7","webpack://umd/src/components/GoodweMixedParallel/GoodweMixedParallel.vue","webpack://umd/./src/components/GoodweMixedParallel/GoodweMixedParallel.vue","webpack://umd/./src/components/GoodweMixedParallel/GoodweMixedParallel.vue?001c","webpack://umd/./src/components/GoodwePowerFlow/src/GoodwePowerFlow.vue?f95f","webpack://umd/src/components/GoodwePowerFlow/src/GoodwePowerFlow.vue","webpack://umd/./src/components/GoodwePowerFlow/src/GoodwePowerFlow.vue","webpack://umd/./src/components/GoodwePowerFlow/src/GoodwePowerFlow.vue?2cb6","webpack://umd/./src/components/GoodwePowerFlow/index.js","webpack://umd/./src/components/GoodweAppHead/src/GoodweAppHead.vue?da80","webpack://umd/src/components/GoodweAppHead/src/GoodweAppHead.vue","webpack://umd/./src/components/GoodweAppHead/src/GoodweAppHead.vue","webpack://umd/./src/components/GoodweAppHead/src/GoodweAppHead.vue?461a","webpack://umd/./src/components/GoodweAppHead/index.js","webpack://umd/src/components/DrawerSelect/src/DrawerSelect.vue","webpack://umd/./src/components/DrawerSelect/src/DrawerSelect.vue?ff89","webpack://umd/./src/components/DrawerSelect/src/DrawerSelect.vue?8108","webpack://umd/./src/components/DrawerSelect/src/DrawerSelect.vue?b9ca","webpack://umd/./src/components/DrawerSelect/index.js","webpack://umd/./src/pages/AddThirdParty/src/AddThirdParty.vue?e56e","webpack://umd/src/pages/AddThirdParty/src/AddThirdParty.vue","webpack://umd/./src/pages/AddThirdParty/src/AddThirdParty.vue?e6c8","webpack://umd/./src/pages/AddThirdParty/src/AddThirdParty.vue?ec35","webpack://umd/./src/pages/AddThirdParty/index.js","webpack://umd/src/pages/MobilePage/src/MobilePage.vue","webpack://umd/./src/pages/MobilePage/src/MobilePage.vue?60e7","webpack://umd/./src/pages/MobilePage/src/MobilePage.vue","webpack://umd/./src/pages/MobilePage/src/MobilePage.vue?f0a1","webpack://umd/./src/pages/MobilePage/index.js","webpack://umd/./src/utils/x6graph.util.js","webpack://umd/./src/pages/MicroInverterLayout/src/components/PhotovoltaicPanel.vue?8fbf","webpack://umd/./src/pages/MicroInverterLayout/src/components/PhotovoltaicPanel.vue?ddfe","webpack://umd/src/pages/MicroInverterLayout/src/components/PhotovoltaicPanel.vue","webpack://umd/./src/pages/MicroInverterLayout/src/components/PhotovoltaicPanel.vue","webpack://umd/./src/pages/MicroInverterLayout/src/components/MicroInverterContainer/MicroInverterContainer.js","webpack://umd/./src/pages/MicroInverterLayout/src/components/MicroInverterContainer/MicroInverterContainer.js?4ff3","webpack://umd/./src/pages/MicroInverterLayout/src/components/MicroInverterContainer/MicroInverterContainer.vue","webpack://umd/./src/pages/MicroInverterLayout/src/components/MicroInverterContainer/MicroInverterContainer.vue?7741","webpack://umd/./src/pages/MicroInverterLayout/src/components/MiOperationGuide.vue?decc","webpack://umd/src/pages/MicroInverterLayout/src/components/MiOperationGuide.vue","webpack://umd/./src/pages/MicroInverterLayout/src/components/MiOperationGuide.vue","webpack://umd/./src/pages/MicroInverterLayout/src/components/MiOperationGuide.vue?5251","webpack://umd/./src/pages/MicroInverterLayout/src/MicroInverterLayout.vue?c089","webpack://umd/src/pages/MicroInverterLayout/src/MicroInverterLayout.vue","webpack://umd/./src/pages/MicroInverterLayout/src/MicroInverterLayout.vue","webpack://umd/./src/pages/MicroInverterLayout/src/MicroInverterLayout.vue?dd55","webpack://umd/./src/pages/MicroInverterLayout/index.js","webpack://umd/./src/components/MicroInverterTree/src/MicroInverterTree.vue?652d","webpack://umd/src/components/MicroInverterTree/src/MicroInverterTree.vue","webpack://umd/./src/components/MicroInverterTree/src/MicroInverterTree.vue?1a17","webpack://umd/./src/components/MicroInverterTree/src/MicroInverterTree.vue?64c2","webpack://umd/./src/components/MicroInverterTree/index.js","webpack://umd/./src/pages/PVMonitoring/src/components/TimeControl.vue?240c","webpack://umd/src/pages/PVMonitoring/src/components/TimeControl.vue","webpack://umd/./src/pages/PVMonitoring/src/components/TimeControl.vue","webpack://umd/./src/pages/PVMonitoring/src/components/TimeControl.vue?d214","webpack://umd/./src/pages/PVMonitoring/src/components/PvMonit.vue?f119","webpack://umd/src/pages/PVMonitoring/src/components/PvMonit.vue","webpack://umd/./src/pages/PVMonitoring/src/components/PvMonit.vue","webpack://umd/./src/pages/PVMonitoring/src/components/PvMonit.vue?ea04","webpack://umd/./src/pages/PVMonitoring/src/components/MiLayoutReadOnly.vue?e7be","webpack://umd/src/pages/PVMonitoring/src/components/MiLayoutReadOnly.vue","webpack://umd/src/pages/PVMonitoring/src/PVMonitoring.vue","webpack://umd/./src/pages/PVMonitoring/src/PVMonitoring.vue?c4c5","webpack://umd/./src/pages/PVMonitoring/src/components/MiLayoutReadOnly.vue?2f33","webpack://umd/./src/pages/PVMonitoring/src/components/MiLayoutReadOnly.vue?ac38","webpack://umd/./src/pages/PVMonitoring/src/PVMonitoring.vue","webpack://umd/./src/pages/PVMonitoring/src/PVMonitoring.vue?18c0","webpack://umd/./src/pages/PVMonitoring/index.js","webpack://umd/./src/pages/RemoteControl/src/RemoteRelative.js","webpack://umd/./src/pages/RemoteControl/src/component/RemoteSettingItem/ControlColumn/ControlColumn.js?e3db","webpack://umd/./src/pages/RemoteControl/src/component/RemoteSettingItem/ControlColumn/ControlColumn.js","webpack://umd/./src/pages/RemoteControl/src/component/RemoteSettingItem/ControlColumn/ControlColumn.vue","webpack://umd/./src/pages/RemoteControl/src/component/RemoteSettingItem/ControlColumn/ControlColumn.vue?c29d","webpack://umd/./src/pages/RemoteControl/src/component/CurrentSettingModal/CurrentSettingModal.js?4ffb","webpack://umd/./src/pages/RemoteControl/src/component/CurrentSettingModal/CurrentSettingModal.js","webpack://umd/./src/pages/RemoteControl/src/component/CurrentSettingModal/CurrentSettingModal.vue","webpack://umd/./src/pages/RemoteControl/src/component/CurrentSettingModal/CurrentSettingModal.vue?4ad8","webpack://umd/./src/pages/RemoteControl/src/component/InverterListTreeView/InverterListTreeView.vue?4d39","webpack://umd/src/pages/RemoteControl/src/component/InverterListTreeView/InverterListTreeView.vue","webpack://umd/./src/pages/RemoteControl/src/component/InverterListTreeView/InverterListTreeView.vue","webpack://umd/./src/pages/RemoteControl/src/component/InverterListTreeView/InverterListTreeView.vue?f5df","webpack://umd/./src/pages/RemoteControl/src/component/RemoteSettingItem/RemoteSettingItem.js","webpack://umd/./src/pages/RemoteControl/src/component/RemoteSettingItem/RemoteSettingItem.js?c7d3","webpack://umd/./src/pages/RemoteControl/src/component/RemoteSettingItem/RemoteSettingItem.vue","webpack://umd/./src/pages/RemoteControl/src/component/RemoteSettingItem/RemoteSettingItem.vue?c7d4","webpack://umd/./src/pages/RemoteControl/src/component/SettingRecordTable/SettingRecordTable.js?b851","webpack://umd/./src/pages/RemoteControl/src/component/SettingRecordTable/SettingRecordTable.js","webpack://umd/./src/pages/RemoteControl/src/component/SettingRecordTable/SettingRecordTable.vue","webpack://umd/./src/pages/RemoteControl/src/component/SettingRecordTable/SettingRecordTable.vue?f3d4","webpack://umd/./src/pages/RemoteControl/src/RemoteControl.js?290d","webpack://umd/./src/pages/RemoteControl/src/RemoteControl.js","webpack://umd/./src/pages/RemoteControl/src/RemoteControl.vue","webpack://umd/./src/pages/RemoteControl/src/RemoteControl.vue?2b5a","webpack://umd/./src/pages/RemoteControl/index.js","webpack://umd/./src/components/GoodweAddDevice/index.js","webpack://umd/./src/components/MiLayoutReadOnly/index.js","webpack://umd/./src/components/GoodweSliderCaptcha/src/GoodweSliderCaptcha.vue?4bb5","webpack://umd/src/components/GoodweSliderCaptcha/src/GoodweSliderCaptcha.vue","webpack://umd/./src/components/GoodweSliderCaptcha/src/GoodweSliderCaptcha.vue","webpack://umd/./src/components/GoodweSliderCaptcha/src/GoodweSliderCaptcha.vue?7736","webpack://umd/./src/components/GoodweSliderCaptcha/index.js","webpack://umd/./index.js"],"names":["installedModules","__webpack_require__","moduleId","exports","module","i","l","modules","call","m","c","d","name","getter","o","Object","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","prototype","hasOwnProperty","p","s","normalizeComponent","scriptExports","render","staticRenderFns","functionalTemplate","injectStyles","scopeId","moduleIdentifier","shadowMode","hook","options","_compiled","functional","_scopeId","context","this","$vnode","ssrContext","parent","__VUE_SSR_CONTEXT__","_registeredComponents","add","_ssrRegister","$root","$options","shadowRoot","_injectStyles","originalRender","h","existing","beforeCreate","concat","isArray","Array","result","remainder","func","start","type","array","iteratee","index","length","freeSelf","self","root","Function","spreadableSymbol","isConcatSpreadable","undefined","isArguments","baseFlatten","depth","predicate","isStrict","push","isObject","isProto","isArrayLike","global","factory","document","w","Error","window","noGlobal","arr","getProto","getPrototypeOf","slice","flat","apply","indexOf","class2type","toString","hasOwn","fnToString","ObjectFunctionString","support","isFunction","obj","nodeType","item","isWindow","preservedScriptAttributes","src","nonce","noModule","DOMEval","code","node","doc","val","script","createElement","text","getAttribute","setAttribute","head","appendChild","parentNode","removeChild","toType","jQuery","selector","fn","init","jquery","constructor","toArray","num","pushStack","elems","ret","merge","prevObject","each","callback","map","elem","arguments","first","eq","last","even","grep","_elem","odd","len","j","end","sort","splice","extend","copy","copyIsArray","clone","target","deep","isPlainObject","expando","Math","random","replace","isReady","error","msg","noop","proto","Ctor","isEmptyObject","globalEval","makeArray","results","inArray","second","invert","matches","callbackExpect","arg","guid","iterator","split","_i","toLowerCase","Sizzle","Expr","getText","isXML","tokenize","compile","select","outermostContext","sortInput","hasDuplicate","setDocument","docElem","documentIsHTML","rbuggyQSA","rbuggyMatches","contains","Date","preferredDoc","dirruns","done","classCache","createCache","tokenCache","compilerCache","nonnativeSelectorCache","sortOrder","a","b","pop","pushNative","list","booleans","whitespace","identifier","attributes","pseudos","rwhitespace","RegExp","rtrim","rcomma","rcombinators","rdescend","rpseudo","ridentifier","matchExpr","rhtml","rinputs","rheader","rnative","rquickExpr","rsibling","runescape","funescape","escape","nonHex","high","String","fromCharCode","rcssescape","fcssescape","ch","asCodePoint","charCodeAt","unloadHandler","inDisabledFieldset","addCombinator","disabled","nodeName","dir","next","childNodes","e","els","seed","nid","match","groups","newSelector","newContext","ownerDocument","exec","getElementById","id","getElementsByTagName","getElementsByClassName","qsa","test","testContext","scope","toSelector","join","querySelectorAll","qsaError","removeAttribute","keys","cache","cacheLength","shift","markFunction","assert","el","addHandle","attrs","handler","attrHandle","siblingCheck","cur","diff","sourceIndex","nextSibling","createInputPseudo","createButtonPseudo","createDisabledPseudo","isDisabled","createPositionalPseudo","argument","matchIndexes","namespace","namespaceURI","documentElement","hasCompare","subWindow","defaultView","top","addEventListener","attachEvent","className","createComment","getById","getElementsByName","filter","attrId","find","getAttributeNode","tag","tmp","input","innerHTML","matchesSelector","webkitMatchesSelector","mozMatchesSelector","oMatchesSelector","msMatchesSelector","disconnectedMatch","compareDocumentPosition","adown","bup","compare","sortDetached","aup","ap","bp","unshift","expr","elements","attr","specified","sel","uniqueSort","duplicates","detectDuplicates","sortStable","textContent","firstChild","nodeValue","selectors","createPseudo","relative","preFilter","excess","unquoted","nodeNameSelector","pattern","operator","check","what","_argument","simple","forward","ofType","_context","xml","uniqueCache","outerCache","nodeIndex","useCache","lastChild","uniqueID","pseudo","args","setFilters","idx","matched","matcher","unmatched","lang","elemLang","hash","location","activeElement","hasFocus","href","tabIndex","checked","selected","selectedIndex","_matchIndexes","radio","checkbox","file","password","image","submit","reset","tokens","combinator","base","skip","checkNonElements","doneName","oldCache","newCache","elementMatcher","matchers","condense","newUnmatched","mapped","setMatcher","postFilter","postFinder","postSelector","temp","preMap","postMap","preexisting","contexts","multipleContexts","matcherIn","matcherOut","matcherFromTokens","checkContext","leadingRelative","implicitRelative","matchContext","matchAnyContext","filters","parseOnly","soFar","preFilters","cached","setMatchers","elementMatchers","bySet","byElement","superMatcher","outermost","matchedCount","setMatched","contextBackup","dirrunsUnique","matcherFromGroupMatchers","token","compiled","_name","defaultValue","unique","isXMLDoc","escapeSelector","until","truncate","is","siblings","rneedsContext","needsContext","rsingleTag","winnow","qualifier","not","rootjQuery","parseHTML","ready","rparentsprev","guaranteedUnique","children","contents","prev","sibling","has","targets","closest","prevAll","addBack","parents","parentsUntil","nextAll","nextUntil","prevUntil","contentDocument","content","reverse","rnothtmlwhite","Identity","v","Thrower","ex","adoptValue","resolve","reject","noValue","method","promise","fail","then","Callbacks","_","flag","createOptions","firing","memory","fired","locked","queue","firingIndex","fire","once","stopOnFalse","remove","empty","disable","lock","fireWith","Deferred","tuples","state","always","deferred","pipe","fns","newDefer","tuple","returned","progress","notify","onFulfilled","onRejected","onProgress","maxDepth","special","that","mightThrow","TypeError","notifyWith","resolveWith","process","exceptionHook","stackTrace","rejectWith","getStackHook","setTimeout","stateString","when","singleValue","remaining","resolveContexts","resolveValues","primary","updateFunc","rerrorNames","stack","console","warn","message","readyException","readyList","completed","removeEventListener","catch","readyWait","wait","readyState","doScroll","access","chainable","emptyGet","raw","bulk","_key","rmsPrefix","rdashAlpha","fcamelCase","_all","letter","toUpperCase","camelCase","string","acceptData","owner","Data","uid","configurable","set","data","prop","hasData","dataPriv","dataUser","rbrace","rmultiDash","dataAttr","JSON","parse","getData","removeData","_data","_removeData","dequeue","startLength","hooks","_queueHooks","stop","setter","clearQueue","count","defer","pnum","source","rcssNum","cssExpand","isAttached","composed","getRootNode","isHiddenWithinTree","style","display","css","adjustCSS","valueParts","tween","adjusted","scale","maxIterations","currentValue","initial","unit","cssNumber","initialInUnit","defaultDisplayMap","getDefaultDisplay","body","showHide","show","values","hide","toggle","div","rcheckableType","rtagName","rscriptType","createDocumentFragment","checkClone","cloneNode","noCloneChecked","option","wrapMap","thead","col","tr","td","_default","getAll","setGlobalEval","refElements","tbody","tfoot","colgroup","caption","th","optgroup","buildFragment","scripts","selection","ignored","wrap","attached","fragment","nodes","htmlPrefilter","createTextNode","rtypenamespace","returnTrue","returnFalse","expectSync","err","safeActiveElement","on","types","one","origFn","event","off","leverageNative","notAsync","saved","isTrigger","delegateType","stopPropagation","stopImmediatePropagation","preventDefault","trigger","Event","handleObjIn","eventHandle","events","handleObj","handlers","namespaces","origType","elemData","handle","triggered","dispatch","bindType","delegateCount","setup","mappedTypes","origCount","teardown","removeEvent","nativeEvent","handlerQueue","fix","delegateTarget","preDispatch","isPropagationStopped","currentTarget","isImmediatePropagationStopped","rnamespace","postDispatch","matchedHandlers","matchedSelectors","button","addProp","originalEvent","writable","load","noBubble","click","beforeunload","returnValue","props","isDefaultPrevented","defaultPrevented","relatedTarget","timeStamp","now","isSimulated","altKey","bubbles","cancelable","changedTouches","ctrlKey","detail","eventPhase","metaKey","pageX","pageY","shiftKey","view","charCode","keyCode","buttons","clientX","clientY","offsetX","offsetY","pointerId","pointerType","screenX","screenY","targetTouches","toElement","touches","which","focus","blur","mouseenter","mouseleave","pointerenter","pointerleave","orig","related","rnoInnerhtml","rchecked","rcleanScript","manipulationTarget","disableScript","restoreScript","cloneCopyEvent","dest","udataOld","udataCur","fixInput","domManip","collection","hasScripts","iNoClone","valueIsFunction","html","_evalUrl","keepData","cleanData","dataAndEvents","deepDataAndEvents","srcElements","destElements","inPage","detach","append","prepend","insertBefore","before","after","replaceWith","replaceChild","appendTo","prependTo","insertAfter","replaceAll","original","insert","rnumnonpx","getStyles","opener","getComputedStyle","swap","old","rboxStyle","curCSS","computed","width","minWidth","maxWidth","getPropertyValue","pixelBoxStyles","addGetHookIf","conditionFn","hookFn","computeStyleTests","container","cssText","divStyle","pixelPositionVal","reliableMarginLeftVal","roundPixelMeasures","marginLeft","right","pixelBoxStylesVal","boxSizingReliableVal","position","scrollboxSizeVal","offsetWidth","measure","round","parseFloat","reliableTrDimensionsVal","backgroundClip","clearCloneStyle","boxSizingReliable","pixelPosition","reliableMarginLeft","scrollboxSize","reliableTrDimensions","table","trChild","trStyle","height","parseInt","borderTopWidth","borderBottomWidth","offsetHeight","cssPrefixes","emptyStyle","vendorProps","finalPropName","final","cssProps","capName","vendorPropName","rdisplayswap","rcustomProp","cssShow","visibility","cssNormalTransform","letterSpacing","fontWeight","setPositiveNumber","subtract","max","boxModelAdjustment","dimension","box","isBorderBox","styles","computedVal","extra","delta","ceil","getWidthOrHeight","valueIsBorderBox","offsetProp","getClientRects","Tween","easing","cssHooks","opacity","origName","isCustomProp","setProperty","isFinite","getBoundingClientRect","scrollboxSizeBuggy","left","margin","padding","border","prefix","suffix","expand","expanded","parts","propHooks","run","percent","eased","duration","pos","step","fx","scrollTop","scrollLeft","linear","swing","cos","PI","fxNow","inProgress","rfxtypes","rrun","schedule","hidden","requestAnimationFrame","interval","tick","createFxNow","genFx","includeWidth","createTween","animation","Animation","tweeners","properties","stopped","prefilters","currentTime","startTime","tweens","opts","specialEasing","originalProperties","originalOptions","gotoEnd","propFilter","complete","timer","anim","tweener","oldfire","propTween","restoreDisplay","isBox","dataShow","unqueued","overflow","overflowX","overflowY","prefilter","speed","opt","speeds","fadeTo","to","animate","optall","doAnimation","finish","stopQueue","timers","cssFn","slideDown","slideUp","slideToggle","fadeIn","fadeOut","fadeToggle","slow","fast","delay","time","timeout","clearTimeout","checkOn","optSelected","radioValue","boolHook","removeAttr","nType","attrHooks","bool","attrNames","lowercaseName","rfocusable","rclickable","stripAndCollapse","getClass","classesToArray","removeProp","propFix","tabindex","addClass","classes","curValue","clazz","finalValue","removeClass","toggleClass","stateVal","isValidValue","classNames","hasClass","rreturn","valHooks","optionSet","focusin","rfocusMorph","stopPropagationCallback","onlyHandlers","bubbleType","ontype","lastElement","eventPath","parentWindow","simulate","triggerHandler","attaches","rquery","parseXML","parserErrorElem","DOMParser","parseFromString","rbracket","rCRLF","rsubmitterTypes","rsubmittable","buildParams","traditional","param","valueOrFunction","encodeURIComponent","serialize","serializeArray","r20","rhash","rantiCache","rheaders","rnoContent","rprotocol","transports","allTypes","originAnchor","addToPrefiltersOrTransports","structure","dataTypeExpression","dataType","dataTypes","inspectPrefiltersOrTransports","jqXHR","inspected","seekingTransport","inspect","prefilterOrFactory","dataTypeOrTransport","ajaxExtend","flatOptions","ajaxSettings","active","lastModified","etag","url","isLocal","protocol","processData","async","contentType","accepts","json","responseFields","converters","ajaxSetup","settings","ajaxPrefilter","ajaxTransport","ajax","transport","cacheURL","responseHeadersString","responseHeaders","timeoutTimer","urlAnchor","fireGlobals","uncached","callbackContext","globalEventContext","completeDeferred","statusCode","requestHeaders","requestHeadersNames","strAbort","getResponseHeader","getAllResponseHeaders","setRequestHeader","overrideMimeType","mimeType","status","abort","statusText","finalText","crossDomain","host","hasContent","ifModified","headers","beforeSend","success","send","nativeStatusText","responses","isSuccess","response","modified","ct","finalDataType","firstDataType","ajaxHandleResponses","conv2","current","conv","dataFilter","throws","ajaxConvert","getJSON","getScript","wrapAll","firstElementChild","wrapInner","htmlIsFunction","unwrap","visible","xhr","XMLHttpRequest","xhrSuccessStatus","0","1223","xhrSupported","cors","errorCallback","open","username","xhrFields","onload","onerror","onabort","ontimeout","onreadystatechange","responseType","responseText","binary","scriptAttrs","charset","scriptCharset","evt","oldCallbacks","rjsonp","jsonp","jsonpCallback","originalSettings","callbackName","overwritten","responseContainer","jsonProp","createHTMLDocument","implementation","keepScripts","parsed","params","animated","offset","setOffset","curPosition","curLeft","curCSSTop","curTop","curOffset","curCSSLeft","curElem","using","rect","win","pageYOffset","pageXOffset","offsetParent","parentOffset","scrollTo","Height","Width","defaultExtra","funcName","unbind","delegate","undelegate","hover","fnOver","fnOut","proxy","holdReady","hold","parseJSON","isNumeric","isNaN","trim","_jQuery","_$","$","noConflict","objectProto","nativeObjectToString","symToStringTag","isOwn","unmasked","BUILTIN_OBJECT","TYPED_ARRAY","objToString","arrayProto","nativeForEach","forEach","nativeFilter","nativeSlice","nativeMap","nativeReduce","reduce","methods","typeStr","isPrimitive","from","isDom","overwrite","targetProp","sourceProp","isBuiltInObject","defaults","overlay","_ctx","createCanvas","cb","HashMap","isArr","thisMap","visit","removeKey","$override","mergeAll","targetAndSources","getContext","inherits","baseClazz","clazzPrototype","F","superClass","mixin","memo","curry","isString","isTypedArray","eqNaN","retrieve","retrieve2","value0","value1","retrieve3","value2","normalizeCssArray","condition","str","setAsPrimitive","createHashMap","concatArray","newArray","thisArg","other","Displayable","zrUtil","PathProxy","pathContain","getCanvasPattern","abs","pathProxyForDraw","Path","path","__dirtyPath","strokeContainThreshold","segmentIgnoreThreshold","subPixelOptimize","brush","ctx","prevEl","hasStroke","hasFill","fill","stroke","hasFillGradient","colorStops","hasStrokeGradient","hasFillPattern","hasStrokePattern","setTransform","__dirty","getBoundingRect","_fillGradient","getGradient","_strokeGradient","fillStyle","strokeStyle","lineDash","lineDashOffset","ctxLineDash","setLineDash","getGlobalScale","setScale","beginPath","setLineDashOffset","buildPath","shape","rebuildPath","fillOpacity","originalGlobalAlpha","globalAlpha","strokeOpacity","restoreTransform","drawRectText","shapeCfg","inBundle","createPathProxy","_rect","needsUpdateRect","rectWithStroke","_rectWithStroke","lineWidth","lineScale","strokeNoScale","getLineScale","x","y","contain","localPos","transformCoordToLocal","pathData","containStroke","dirty","dirtyPath","__dirtyText","__zr","refresh","__clipTarget","animateShape","loop","attrKV","setShape","transform","sqrt","Sub","extendFrom","defaultShape","thisShape","symbolProto","symbolToString","baseToString","reIsBadHex","reIsBinary","reIsOctal","freeParseInt","valueOf","isBinary","customizer","isNew","newValue","dataViewCtorString","mapCtorString","promiseCtorString","setCtorString","weakMapCtorString","getTag","ArrayBuffer","ctorString","rsAstral","rsCombo","rsFitz","rsNonAstral","rsRegional","rsSurrPair","reOptMod","rsSeq","rsSymbol","reUnicode","reIsUint","keysIn","dataView","isDeep","buffer","byteOffset","byteLength","reFlags","regexp","lastIndex","symbolValueOf","symbol","cloneableTags","baseClone","bitmask","isFlat","isFull","isFunc","isBuffer","stacked","isSet","subValue","isMap","keysFunc","freeExports","freeModule","freeProcess","nodeUtil","require","binding","Buffer","isSymbol","augend","addend","toInteger","identity","thisBinding","isBind","wrapper","nativeMax","partials","holders","isCurried","argsIndex","argsLength","holdersLength","leftIndex","leftLength","rangeLength","isUncurried","holdersIndex","rightIndex","rightLength","placeholder","LazyWrapper","__wrapped__","__actions__","__dir__","__filtered__","__iteratees__","__takeCount__","__views__","otherFunc","LodashWrapper","chainAll","__chain__","__index__","__values__","lodash","isObjectLike","reWrapDetails","reSplitDetails","reWrapComment","details","wrapFlags","pair","reference","wrapFunc","argPos","ary","arity","isCurry","newData","nativeMin","min","indexes","arrLength","oldArray","resIndex","createHybrid","partialsRight","holdersRight","isAry","isBindKey","isFlip","holdersCount","newHolders","srcBitmask","newBitmask","isCommon","isCombo","guard","srcIndex","paths","methodNames","bindKey","nativeIsFinite","methodName","number","precision","toNumber","nativeCeil","size","CLONE_DEEP_FLAG","pairs","toIteratee","curryRight","isArrayLikeObject","comparator","dividend","divisor","isDrop","fromRight","reRegExpChar","reHasRegExpChar","findIndexFunc","fromIndex","iterable","eachFunc","funcs","prereq","thru","plant","arrays","includes","othLength","othIndex","caches","maxLength","Infinity","seen","outer","accumulator","constant","nodeIsArrayBuffer","isArrayBuffer","nodeIsDate","isDate","stubFalse","nativeJoin","separator","word","srcValue","chain","actions","multiplier","multiplicand","symIterator","iteratees","orders","arrayFunc","transforms","funcsLength","partial","partialRight","previous","nativeFloor","floor","nativeRandom","lower","upper","freeParseFloat","floating","toFinite","rand","initAccum","nativeReverse","otherArgs","minuend","subtrahend","interceptor","leading","trailing","debounce","action","isArrLike","strSymbols","chrSymbols","chars","reTrimStart","group","updater","wrapped","assignFunc","valsLength","chunk","compact","difference","differenceBy","differenceWith","drop","dropRight","dropRightWhile","dropWhile","findIndex","findLastIndex","flatten","flattenDeep","flattenDepth","fromPairs","intersection","intersectionBy","intersectionWith","lastIndexOf","nth","pull","pullAll","pullAllBy","pullAllWith","pullAt","sortedIndex","sortedIndexBy","sortedIndexOf","sortedLastIndex","sortedLastIndexBy","sortedLastIndexOf","sortedUniq","sortedUniqBy","tail","take","takeRight","takeRightWhile","takeWhile","union","unionBy","unionWith","uniq","uniqBy","uniqWith","unzip","unzipWith","without","xor","xorBy","xorWith","zip","zipObject","zipObjectDeep","zipWith","countBy","eachRight","every","findLast","flatMap","flatMapDeep","flatMapDepth","forEachRight","groupBy","invokeMap","keyBy","orderBy","partition","reduceRight","sample","sampleSize","shuffle","some","sortBy","flip","memoize","negate","overArgs","rearg","rest","spread","throttle","unary","castArray","cloneDeep","cloneDeepWith","cloneWith","conformsTo","gt","gte","isBoolean","isElement","isEmpty","isEqual","isEqualWith","isError","isInteger","isLength","isMatch","isMatchWith","isNative","isNil","isNull","isNumber","isRegExp","isSafeInteger","isUndefined","isWeakMap","isWeakSet","lt","lte","toLength","toPlainObject","toSafeInteger","divide","maxBy","mean","meanBy","minBy","multiply","sum","sumBy","clamp","inRange","assign","assignIn","assignInWith","assignWith","at","defaultsDeep","entries","entriesIn","extendWith","findKey","findLastKey","forIn","forInRight","forOwn","forOwnRight","functions","functionsIn","hasIn","invertBy","invoke","mapKeys","mapValues","mergeWith","omit","omitBy","pick","pickBy","setWith","toPairs","toPairsIn","unset","update","updateWith","valuesIn","commit","tap","toIterator","toJSON","wrapperChain","capitalize","deburr","endsWith","escapeRegExp","kebabCase","lowerCase","lowerFirst","pad","padEnd","padStart","repeat","snakeCase","startCase","startsWith","template","templateSettings","toLower","toUpper","trimEnd","trimStart","unescape","upperCase","upperFirst","words","attempt","bindAll","cond","conforms","defaultTo","flow","flowRight","matchesProperty","methodOf","nthArg","over","overEvery","overSome","propertyOf","range","rangeRight","stubArray","stubObject","stubString","stubTrue","times","toPath","uniqueId","isRight","iterLength","takeCount","iterIndex","isObj","VERSION","imports","isFilter","takeName","dropName","checkIteratee","isTaker","lodashFunc","retUnwrapped","isLazy","useLazy","isHybrid","isUnwrapped","onlyLazy","chainName","baseEach","propertyIsEnumerable","seenIndex","typedArrayTags","nodeIsTypedArray","ArrayCtor","Float32Array","lenSquare","lengthSquare","distance","v1","v2","dist","distanceSquare","distSquare","out","scaleAndAdd","sub","mul","dot","normalize","lerp","applyTransform","funcProto","funcToString","objectCtorString","assigner","sources","objectCreate","baseCreate","reHasUnicode","reApos","extendStatics","__extends","setPrototypeOf","__proto__","__","__createBinding","k","k2","__setModuleDefault","__importStar","mod","Point","util","angle_1","_super","_this","translate","dx","dy","rotate","degree","center","sx","sy","origin","ref","points","squaredDistance","manhattanDistance","magnitude","theta","rad","atan2","angleBetween","p1","p2","equals","NaN","angle","vectorAngle","toPolar","changeInAngle","adhereToRect","containsPoint","bearing","lat1","Angle","toRad","lat2","lon1","lon2","dLon","sin","toDeg","cross","move","reflection","snapToGrid","gx","gy","Geometry","isPoint","instance","point","isPointLike","isPointData","rotateEx","y1","fromPolar","org","deg","equalPoints","ii","x1","x2","y2","rb","lb","rt","vec2","matrix","v2ApplyTransform","mathMin","mathMax","BoundingRect","maxX","maxY","calculateTransform","intersect","ax0","ax1","ay0","ay1","bx0","bx1","by0","by1","plain","valuesLength","valuesIndex","nested","objValue","__data__","LARGE_ARRAY_SIZE","Stack","clear","wx","getSystemInfoSync","browser","os","wxa","canvasSupported","svgSupported","touchEventsSupported","domSupported","worker","navigator","ua","firefox","ie","edge","weChat","version","SVGRect","pointerEventsSupported","detect","userAgent","_zrender","_export","stringify","Line","point_1","geometry_1","rectangle_1","getCenter","tx","ty","squaredLength","setLength","total","parallel","line","isDifferentiable","eRef","sRef","vector","horizontal","bbox","bottom","Rectangle","closestPoint","pointAt","closestPointNormalizedLength","closestPointLength","closestPointTangent","tangentAt","product","normalized","Number","ratio","pointAtLength","fromStart","rate","divideAt","dividerPoint","divideAtLength","intersectsWithLine","pt1Dir","pt2Dir","det","deltaPt","alpha","beta","pointOffset","pointSquaredDistance","pointDistance","tangentStart","tangentLine","tangentAtLength","relativeCcw","dx1","dy1","dx2","dy2","ccw","isLine","nodeIsRegExp","retHighest","low","MAX_ARRAY_LENGTH","mid","getPrototype","ListCache","entry","equalFunc","isPartial","arrStacked","othStacked","arrValue","othValue","compared","convert","objProps","objLength","objStacked","skipCtor","objCtor","othCtor","objectTag","objIsArr","othIsArr","objTag","othTag","objIsObj","othIsObj","isSameTag","objIsWrapped","othIsWrapped","objUnwrapped","othUnwrapped","baseIsEqual","initializer","SetCache","Map","Set","charsLength","Hash","MapCache","WeakMap","emptyObject","freeze","isUndef","isDef","isTrue","_toString","isValidArrayIndex","isPromise","makeMap","expectsLowerCase","isReservedAttribute","camelizeRE","camelize","charAt","hyphenateRE","hyphenate","boundFn","_length","_from","toObject","res","no","looseEqual","isObjectA","isObjectB","isArrayA","isArrayB","getTime","keysA","keysB","looseIndexOf","called","ASSET_TYPES","LIFECYCLE_HOOKS","config","optionMergeStrategies","silent","productionTip","devtools","performance","errorHandler","warnHandler","ignoredElements","keyCodes","isReservedTag","isReservedAttr","isUnknownElement","getTagNamespace","parsePlatformTagName","mustUseProp","_lifecycleHooks","unicodeRegExp","def","bailRE","_isServer","hasProto","inBrowser","inWeex","WXEnvironment","platform","weexPlatform","UA","isIE","isIE9","isEdge","isIOS","isFF","nativeWatch","watch","supportsPassive","isServerRendering","env","VUE_ENV","__VUE_DEVTOOLS_GLOBAL_HOOK__","_Set","hasSymbol","Reflect","ownKeys","Dep","subs","addSub","removeSub","depend","addDep","targetStack","pushTarget","popTarget","VNode","elm","componentOptions","asyncFactory","fnContext","fnOptions","fnScopeId","componentInstance","isStatic","isRootInsert","isComment","isCloned","isOnce","asyncMeta","isAsyncPlaceholder","prototypeAccessors","child","defineProperties","createEmptyVNode","createTextVNode","cloneVNode","vnode","cloned","arrayMethods","inserted","ob","__ob__","observeArray","dep","arrayKeys","getOwnPropertyNames","shouldObserve","toggleObserving","Observer","vmCount","protoAugment","copyAugment","walk","observe","asRootData","isExtensible","_isVue","defineReactive$$1","customSetter","shallow","getOwnPropertyDescriptor","childOb","dependArray","newVal","del","items","strats","mergeData","toVal","fromVal","mergeDataOrFn","parentVal","childVal","vm","instanceData","defaultData","mergeHook","dedupeHooks","mergeAssets","key$1","inject","provide","defaultStrat","mergeOptions","normalizeProps","normalizeInject","dirs","directives","def$$1","normalizeDirectives","_base","extends","mixins","mergeField","strat","resolveAsset","warnMissing","assets","camelizedId","PascalCaseId","validateProp","propOptions","propsData","absent","booleanIndex","getTypeIndex","Boolean","stringIndex","default","_props","getType","getPropDefaultValue","prevShouldObserve","functionTypeCheckRE","isSameType","expectedTypes","handleError","info","$parent","errorCaptured","globalHandleError","invokeWithErrorHandling","_handled","logError","timerFunc","isUsingMicroTask","callbacks","pending","flushCallbacks","copies","Promise","MutationObserver","setImmediate","counter","observer","textNode","characterData","nextTick","_resolve","seenObjects","traverse","_traverse","isA","isFrozen","depId","normalizeEvent","passive","once$$1","capture","createFnInvoker","invoker","arguments$1","updateListeners","oldOn","remove$$1","createOnceHandler","mergeVNodeHook","hookKey","oldHook","wrappedHook","merged","checkProp","preserve","normalizeChildren","normalizeArrayChildren","nestedIndex","isTextNode","_isVList","resolveInject","provideKey","_provided","provideDefault","resolveSlots","slots","slot","name$1","isWhitespace","normalizeScopedSlots","normalSlots","prevSlots","hasNormalSlots","isStable","$stable","$key","_normalized","$hasNormal","normalizeScopedSlot","key$2","proxyNormalSlot","renderList","renderSlot","fallbackRender","bindObject","scopedSlotFn","$scopedSlots","$slots","$createElement","resolveFilter","isKeyNotMatch","expect","actual","checkKeyCodes","eventKeyCode","builtInKeyCode","eventKeyName","builtInKeyName","mappedKeyCode","bindObjectProps","asProp","isSync","domProps","camelizedKey","hyphenatedKey","$event","renderStatic","isInFor","_staticTrees","tree","markStatic","_renderProxy","markOnce","markStaticNode","bindObjectListeners","ours","resolveScopedSlots","hasDynamicKeys","contentHashKey","bindDynamicKeys","baseObj","prependModifier","installRenderHelpers","_o","_n","_s","_l","_t","_q","_m","_f","_k","_b","_v","_e","_u","_g","_d","_p","FunctionalRenderContext","contextVm","this$1","_original","isCompiled","needNormalization","listeners","injections","scopedSlots","_c","cloneAndMarkFunctionalResult","renderContext","mergeProps","componentVNodeHooks","hydrating","_isDestroyed","keepAlive","mountedNode","prepatch","_isComponent","_parentVnode","inlineTemplate","createComponentInstanceForVnode","activeInstance","$mount","oldVnode","parentVnode","renderChildren","newScopedSlots","oldScopedSlots","hasDynamicScopedSlot","needsForceUpdate","_renderChildren","_vnode","$attrs","$listeners","propKeys","_propKeys","oldListeners","_parentListeners","updateComponentListeners","$forceUpdate","updateChildComponent","_isMounted","callHook","_inactive","activatedChildren","queueActivatedComponent","activateChildComponent","destroy","deactivateChildComponent","direct","_directInactive","isInInactiveTree","$children","$destroy","hooksToMerge","createComponent","baseCtor","cid","errorComp","resolved","currentRenderingInstance","owners","loading","loadingComp","sync","timerLoading","timerTimeout","$on","forceRender","renderCompleted","ensureCtor","reason","component","resolveAsyncComponent","createAsyncPlaceholder","resolveConstructorOptions","model","transformModel","extractPropsFromVNodeData","vnodes","createFunctionalComponent","nativeOn","abstract","toMerge","_merged","mergeHook$1","installComponentHooks","f1","f2","normalizationType","alwaysNormalize","simpleNormalizeChildren","pre","applyNS","force","class","registerDeepBindings","_createElement","comp","getFirstComponentChild","remove$1","$off","_target","onceHandler","setActiveInstance","prevActiveInstance","_hasHookEvent","$emit","waiting","flushing","currentFlushTimestamp","getNow","createEvent","flushSchedulerQueue","watcher","activatedQueue","updatedQueue","callActivatedHooks","_watcher","callUpdatedHooks","emit","uid$2","Watcher","expOrFn","isRenderWatcher","_watchers","user","lazy","deps","newDeps","depIds","newDepIds","expression","segments","parsePath","cleanupDeps","queueWatcher","oldValue","evaluate","_isBeingDestroyed","sharedPropertyDefinition","sourceKey","initState","propsOptions","initProps","initMethods","initData","watchers","_computedWatchers","isSSR","userDef","computedWatcherOptions","defineComputed","initComputed","createWatcher","initWatch","shouldCache","createComputedGetter","createGetterInvoker","$watch","uid$3","super","superOptions","modifiedOptions","latest","sealed","sealedOptions","resolveModifiedOptions","extendOptions","components","Vue","_init","initExtend","Super","SuperId","cachedCtors","_Ctor","Comp","initProps$1","initComputed$1","use","getComponentName","pruneCache","keepAliveInstance","pruneCacheEntry","_uid","vnodeComponentOptions","_componentTag","initInternalComponent","_self","$refs","initLifecycle","_events","initEvents","parentData","initRender","initInjections","initProvide","initMixin","dataDef","propsDef","$set","$delete","immediate","stateMixin","hookRE","$once","i$1","cbs","eventsMixin","_update","$el","prevVnode","restoreActiveInstance","__patch__","__vue__","lifecycleMixin","$nextTick","_render","renderMixin","patternTypes","builtInComponents","KeepAlive","include","exclude","cacheVNode","vnodeToCache","keyToCache","created","destroyed","mounted","updated","configDef","defineReactive","delete","observable","plugin","installedPlugins","_installedPlugins","install","initUse","initMixin$1","definition","initAssetRegisters","initGlobalAPI","acceptValue","isEnumeratedAttr","isValidContentEditableValue","isBooleanAttr","xlinkNS","isXlink","getXlinkProp","isFalsyAttrValue","genClassForVnode","childNode","mergeClassData","staticClass","dynamicClass","stringifyClass","renderClass","stringified","stringifyArray","stringifyObject","namespaceMap","svg","math","isHTMLTag","isSVG","unknownElementCache","isTextInputType","nodeOps","tagName","multiple","createElementNS","newNode","referenceNode","setTextContent","setStyleScope","registerRef","isRemoval","refs","refInFor","emptyNode","sameVnode","typeA","typeB","sameInputType","createKeyToOldIdx","beginIdx","endIdx","updateDirectives","oldDir","isCreate","isDestroy","oldDirs","normalizeDirectives$1","newDirs","dirsWithInsert","dirsWithPostpatch","oldArg","callHook$1","componentUpdated","callInsert","emptyModifiers","modifiers","getRawDirName","rawName","baseModules","updateAttrs","inheritAttrs","oldAttrs","setAttr","removeAttributeNS","isInPre","baseSetAttr","convertEnumeratedValue","setAttributeNS","__ieph","blocker","updateClass","oldData","cls","transitionClass","_transitionClasses","_prevClass","target$1","klass","createOnceHandler$1","remove$2","useMicrotaskFix","add$1","attachedTimestamp","_wrapper","updateDOMListeners","change","normalizeEvents","svgContainer","updateDOMProps","oldProps","_value","strCur","shouldUpdateValue","checkVal","composing","notInFocus","isNotInFocusAndDirty","_vModifiers","isDirtyWithModifiers","parseStyleText","propertyDelimiter","normalizeStyleData","normalizeStyleBinding","staticStyle","bindingStyle","cssVarRE","importantRE","setProp","normalizedName","vendorNames","updateStyle","oldStaticStyle","oldStyleBinding","normalizedStyle","oldStyle","newStyle","checkChild","styleData","getStyle","whitespaceRE","classList","tar","resolveTransition","autoCssTransition","enterClass","enterToClass","enterActiveClass","leaveClass","leaveToClass","leaveActiveClass","hasTransition","transitionProp","transitionEndEvent","animationProp","animationEndEvent","ontransitionend","onwebkittransitionend","onanimationend","onwebkitanimationend","raf","nextFrame","addTransitionClass","transitionClasses","removeTransitionClass","whenTransitionEnds","expectedType","getTransitionInfo","propCount","ended","onEnd","transformRE","transitionDelays","transitionDurations","transitionTimeout","getTimeout","animationDelays","animationDurations","animationTimeout","hasTransform","delays","durations","toMs","enter","toggleDisplay","_leaveCb","cancelled","transition","_enterCb","appearClass","appearToClass","appearActiveClass","beforeEnter","afterEnter","enterCancelled","beforeAppear","appear","afterAppear","appearCancelled","transitionNode","isAppear","startClass","activeClass","toClass","beforeEnterHook","enterHook","afterEnterHook","enterCancelledHook","explicitEnterDuration","expectsCSS","userWantsControl","getHookArgumentsLength","pendingNode","_pending","isValidDuration","leave","rm","beforeLeave","afterLeave","leaveCancelled","delayLeave","explicitLeaveDuration","performLeave","invokerFns","_enter","patch","backend","removeNode","createElm","insertedVnodeQueue","parentElm","refElm","ownerArray","isReactivated","initComponent","innerNode","activate","reactivateComponent","setScope","createChildren","invokeCreateHooks","pendingInsert","isPatchable","ref$$1","ancestor","addVnodes","startIdx","invokeDestroyHook","removeVnodes","removeAndInvokeRemoveHook","childElm","createRmCb","findIdxInOld","oldCh","patchVnode","removeOnly","hydrate","newCh","oldKeyToIdx","idxInOld","vnodeToMove","oldStartIdx","newStartIdx","oldEndIdx","oldStartVnode","oldEndVnode","newEndIdx","newStartVnode","newEndVnode","canMove","updateChildren","postpatch","invokeInsertHook","isRenderedModule","inVPre","hasChildNodes","childrenMatch","fullInvoke","isInitialPatch","isRealElement","hasAttribute","oldElm","patchable","i$2","createPatchFunction","vmodel","directive","_vOptions","setSelected","getValue","onCompositionStart","onCompositionEnd","prevOptions","curOptions","hasNoMatchingOption","actuallySetSelected","isMultiple","initEvent","dispatchEvent","locateNode","platformDirectives","transition$$1","originalDisplay","__vOriginalDisplay","transitionProps","getRealChild","compOptions","extractTransitionData","rawChild","isNotTextNode","isVShowDirective","Transition","hasParentTransition","_leaving","oldRawChild","oldChild","isSameChild","delayedLeave","moveClass","callPendingCbs","_moveCb","recordPosition","newPos","applyTranslation","oldPos","moved","WebkitTransform","transitionDuration","platformComponents","TransitionGroup","beforeMount","kept","prevChildren","rawChildren","transitionData","removed","c$1","hasMove","_reflow","propertyName","_hasMove","HTMLUnknownElement","HTMLElement","updateComponent","mountComponent","querySelector","query","g","m1","m2","out0","out1","out2","out3","out4","out5","aa","ac","atx","ab","ad","aty","st","vx","vy","imageHelper","ZImage","_image","createOrUpdateImage","isImageReady","aspect","sWidth","sHeight","drawImage","curve","dpr","devicePixelRatio","CMD","M","L","C","Q","A","Z","R","min2","max2","mathCos","mathSin","mathSqrt","mathAbs","hasTypedArray","notSaveData","_saveData","_xi","_yi","_x0","_y0","_ux","_uy","_len","_lineDash","_dashOffset","_dashIdx","_dashSum","moveTo","addData","lineTo","exceedUnit","_needsDash","_dashedLineTo","bezierCurveTo","x3","y3","_dashedBezierTo","quadraticCurveTo","_dashedQuadraticTo","arc","cx","cy","startAngle","endAngle","anticlockwise","arcTo","radius","closePath","x0","y0","toStatic","lineDashSum","setData","appendPath","appendSize","appendPathData","cmd","_expandData","_prevCmd","dash","dashSum","nDash","cubicAt","bezierLen","tmpLen","MAX_VALUE","xi","yi","fromLine","fromCubic","fromQuadratic","rx","ry","fromArc","ux","uy","dTheta","psi","fs","scaleX","scaleY","_vector","v2Create","v2DistSquare","mathPow","pow","THREE_SQRT","_v0","_v1","_v2","isAroundZero","isNotAroundZero","p0","p3","onet","quadraticAt","cubicDerivativeAt","cubicRootAt","roots","B","t1","disc","K","t2","discSqrt","Y1","Y2","T","acos","ASqrt","t3","cubicExtrema","extrema","cubicSubdivide","p01","p12","p23","p012","p123","p0123","cubicProjectPoint","d1","d2","quadraticDerivativeAt","quadraticRootAt","quadraticExtremum","divider","quadraticSubdivide","quadraticProjectPoint","textContain","textHelper","ContextCachedBy","Text","normalizeTextStyle","shadowBlur","shadowColor","shadowOffsetX","shadowOffsetY","needDrawText","renderText","__attrCachedBy","NONE","font","textAlign","textVerticalAlign","textPadding","textLineHeight","rich","getStroke","textStroke","textStrokeWidth","__exportStar","line_1","topLeft","topRight","bottomRight","bottomLeft","getOrigin","getTopLeft","getTopCenter","topCenter","getTopRight","getCenterX","getCenterY","getBottomLeft","getBottomCenter","bottomCenter","getBottomRight","getCorner","corner","getRightMiddle","rightMiddle","getLeftMiddle","leftMiddle","getTopLine","topLine","getRightLine","rightLine","getBottomLine","bottomLine","getLeftLine","leftLine","minX","minY","inflate","p4","rotate90","moveAndExpand","getMaxScaleToFit","limit","ox","oy","sx1","sx2","sx3","sx4","sy1","sy2","sy3","sy4","getMaxUniformScaleToFit","containsRect","w1","h1","w2","h2","rectLines","dedupeArr","intersectsWithLineFromCenterToPoint","sides","connector","intersectsWithRect","isIntersectWithRect","myOrigin","myCorner","rOrigin","rCorner","xx","yy","newx","newy","newwidth","newheight","originX","originY","getNearestSideToPoint","distLeft","distRight","distTop","side","getNearestPointToPoint","isRectangle","isRectangleLike","fromSize","fromPositionAndSize","fromEllipse","ellipse","mergeAttrs","styleToObject","kebablizeAttrs","qualifyAttr","setAttributes","elem_1","format_1","CASE_SENSITIVE_ATTR","qualified","hasAttributeNS","local","combinedKey","styleString","section","so","tt","ss","isHTMLElement","findParentByClass","findOne","createSvgDocument","createSvgElement","svgVersion","isSVGGraphicsElement","ensureId","class_1","idCounter","xhtml","parser","getScreenCTM","SVGElement","xmlns","xlink","lowercase","previousSibling","terminator","ownerSVGElement","resolver","memoized","Cache","lastArgs","lastThis","maxWait","timerId","lastCallTime","lastInvokeTime","maxing","invokeFunc","leadingEdge","timerExpired","shouldInvoke","timeSinceLastCall","trailingEdge","timeWaiting","remainingWait","debounced","isInvoking","cancel","flush","reAsciiWord","reHasUnicodeWord","rsBreakRange","rsMathOpRange","rsBreak","rsDigits","rsDingbat","rsLower","rsMisc","rsUpper","rsMiscLower","rsMiscUpper","rsModifier","rsEmoji","reUnicodeWord","nodeIsSet","nodeIsMap","reUnescapedHtml","reHasUnescapedHtml","reLatin","reComboMark","valIsNaN","valIsNull","valIsSymbol","valIsUndefined","othIsDefined","othIsNull","othIsReflexive","othIsSymbol","setLow","reIsDeepProp","reIsPlainProp","nativeGetSymbols","getOwnPropertySymbols","getSymbols","matchData","noCustomizer","COMPARE_PARTIAL_FLAG","baseFor","arrayBuffer","mergeFunc","isBuff","isTyped","baseMerge","setToString","coreJsData","Uint8Array","debugMode","Style","Element","RectText","__clipPaths","invisible","z","z2","zlevel","draggable","dragging","culling","cursor","rectHover","progressive","incremental","globalScaleRatio","beforeBrush","afterBrush","rectContain","coord","animateStyle","setStyle","useStyle","calculateTextPosition","Segment","isVisible","isSegment","isSubpathStart","endPoint","previousSegment","closestPointT","lengthAtT","divideAtT","pointAtT","tangentAtT","arrySlice","Eventful","eventProcessor","_$handlers","_$eventProcessor","eventful","_h","normalizeQuery","callAtLast","zrEventfulCallAtLast","lastWrap","isSilent","newList","argLen","hItem","afterTrigger","triggerWithContext","Dispatcher","_dom","isCanvasEl","transformCoordWithViewport","isDomLevel2","MOUSE_EVENT_REG","_calcOut","clientToLocal","calculate","calculateZrXY","layerX","zrX","zrY","layerY","ey","getNativeEvent","cancelBubble","eventType","touch","zrDelta","wheelDelta","detachEvent","isMiddleOrRightButtonOnMouseUpDown","notLeftMouse","LRU","kCSSColorTable","clampCssByte","clampCssFloat","f","parseCssInt","parseCssFloat","cssHueToRgb","lerpNumber","setRgba","copyRgba","colorCache","lastRemovedArr","putToCache","colorStr","rgbaArr","put","iv","substr","op","ep","fname","hsla2rgba","hsla","rgba","fastLerp","normalizedValue","colors","leftColor","rightColor","dv","fastMapToColor","fullOutput","color","mapToColor","arrColor","lift","level","colorArr","toHex","modifyHSL","H","S","G","vMin","vMax","deltaR","deltaG","deltaB","rgba2hsla","modifyAlpha","STYLE_BIND","PLAIN_TEXT","WILL_BE_RESTORED","_util","roundRectHelper","fixShadow","_constant","DEFAULT_FONT","VALID_TEXT_ALIGN","VALID_TEXT_VERTICAL_ALIGN","middle","SHADOW_STYLE_COMMON_PROPS","_tmpTextPositionResult","_tmpBoxPositionResult","normalizeStyle","makeFont","textBaseline","applyTextRotation","textRotation","textOrigin","placeToken","hostEl","lineHeight","lineTop","tokenStyle","styleName","isLineHolder","needDrawBackground","drawBackground","getTextXForPadding","textHeight","setCtx","textShadowBlur","textShadowColor","textShadowOffsetX","textShadowOffsetY","textFill","getFill","strokeText","fillText","textBackgroundColor","textBorderWidth","textBorderColor","isPlainBg","textBoxShadowBlur","textBoxShadowColor","textBoxShadowOffsetX","textBoxShadowOffsetY","textBorderRadius","onBgImageLoaded","getBoxPosition","baseX","baseY","textPosition","parsePercent","textOffset","maxValue","contentBlock","__textCotentBlock","parseRichText","contentWidth","outerWidth","outerHeight","boxPos","boxX","adjustTextX","boxY","adjustTextY","xLeft","xRight","lines","tokenCount","usedWidth","lineXLeft","lineXRight","drawRichText","renderRichText","prevStyle","needDrawBg","checkCache","cachedByMe","styleFont","computedFont","__computedFont","__styleFont","parsePlainText","textLines","textX","textY","getWidth","propItem","styleProp","ctxProp","textStrokeWidthPrev","strokeWidthChanged","strokeChanged","renderPlainText","textWidthCache","textWidthCacheCounter","STYLE_REG","measureText","textDistance","halfHeight","truncateText","containerWidth","ellipsis","prepareTruncateOptions","truncateSingleLine","minChar","cnCharWidth","ascCharWidth","ellipsisWidth","textLine","subLength","estimateLength","getLineHeight","canCacheByTextString","truncOuterHeight","truncOuterWidth","matchedIndex","pushTokens","substring","contentHeight","pendingList","stlPadding","truncateWidth","truncateHeight","tokenHeight","textWidth","tokenWidth","tokenWidthNotSpecified","percentWidth","bgImg","findExistImage","paddingW","remianTruncWidth","block","isEmptyStr","strs","tokensLen","getRichTextRect","getPlainTextRect","adjustTextPositionOnRect","fontSize","fontFamily","fontStyle","textFont","toFixed","mmin","mmax","gridSize","Curve","polyline_1","controlPoint1","controlPoint2","PRECISION","b2ac","sqrtb2ac","mt","tvalues","bounds","jlen","X","Y","getOptions","cpLength","getPrecision","subdivisions","getDivisions","precisionRatio","investigatedSubdivision","investigatedSubdivisionStartT","investigatedSubdivisionEndT","distFromStart","distFromEnd","chordLength","minSumDist","piece","division","startDist","endDist","sumDist","endpointDistance","startPrecisionRatio","endPrecisionRatio","divided","startDist1","endDist1","sumDist1","startDist2","endDist2","toPolyline","tAt","tAtLength","dividerPoints","getSkeletonPoints","startControl1","startControlPoint1","startControl2","startControlPoint2","dividerControl1","dividerControlPoint1","dividerControl2","dividerControlPoint2","control1","control2","midpoint1","midpoint2","midpoint3","subControl1","subControl2","getSubdivisions","previousLength","iteration","_loop_1","divisions","length_1","state_1","skeletonPoints","baselinePointDistFromStart","baselinePointDistFromEnd","newBaselinePointDistFromStart","newBaselinePointDistFromEnd","baseline1Length","baseline2Length","toPoints","Polyline","isCurve","getFirstControlPoints","rhs","throughPoints","controlPoints","knots","firstControlPoints","secondControlPoints","getCurveControlPoints","curves","Platform","IS_MAC","appVersion","IS_IOS","IS_WINDOWS","IS_IE","IS_IE11","IS_EDGE","IS_NETSCAPE","IS_CHROME_APP","chrome","app","runtime","IS_CHROME","IS_OPERA","IS_FIREFOX","IS_SAFARI","SUPPORT_TOUCH","SUPPORT_POINTER","PointerEvent","SUPPORT_PASSIVE","NO_FOREIGNOBJECT","SUPPORT_FOREIGNOBJECT","getHMRStatus","hot","isApplyingHMR","TAGNAMES","isEventSupported","eventName","isSupported","propsIndex","propsLength","strLength","omission","search","newEnd","nativeParseInt","radix","containers","styleElements","insertCss","styleElement","containerId","createStyleElement","styleSheet","stringEscapes","chr","reEmptyStringLeading","reEmptyStringMiddle","reEmptyStringTrailing","reForbiddenIdentifierChars","reEsTemplate","reNoMatch","reUnescapedString","isEscaping","isEvaluating","importsKeys","importsValues","interpolate","reDelimiters","sourceURL","escapeValue","interpolateValue","esTemplateValue","evaluateValue","variable","customDefaultsMerge","reEscapedHtml","reHasEscapedHtml","freeGlobal","nativeNow","lastCalled","stamp","hasFunc","symbolsFunc","inherited","isArg","isType","skipIndexes","valIsDefined","valIsReflexive","allocUnsafe","typedArray","getSymbolsIn","reWhitespace","uuid","comparer","objCriteria","criteria","othCriteria","ordersLength","maskSrcKey","IE_PROTO","reIsHostCtor","reIsNative","rePropName","reEscapeChar","stringToPath","quote","subString","Handler","Storage","Painter","HandlerProxy","useVML","painterCtors","canvas","instances","ZRender","dom","storage","rendererType","renderer","vml","painter","handerProxy","getViewportRoot","stage","_needsRefresh","oldDelFromStorage","delFromStorage","oldAddToStorage","addToStorage","removeSelfFromZr","addSelfToZr","getId","addRoot","delRoot","configLayer","zLevel","setBackgroundColor","backgroundColor","refreshImmediately","_needsRefreshHover","triggerRendered","refreshHoverImmediately","addHover","elMirror","refreshHover","removeHover","clearHover","resize","clearAnimation","getHeight","pathToImage","setCursorStyle","cursorStyle","findHover","eventHandler","dispose","zr","getInstance","registerPainter","Group","_children","__storage","isGroup","childAt","childOfName","childCount","_doAdd","addBefore","addChildrenToStorage","delChildrenFromStorage","removeAll","eachChild","includeChildren","tmpRect","tmpMat","ignore","childRect","getLocalTransform","STYLE_COMMON_PROPS","createLinearGradient","createRadialGradient","styleProto","textTag","textRect","transformText","blend","notCheckCache","globalCompositeOperation","otherStyle","canvasGradient","addColorStop","Pattern","createPattern","globalImageCache","imageOnLoad","cachedImgObj","__cachedImgObj","pendingWrap","cbPayload","newImageOrSrc","__zrImageSrc","Image","Gradient","arrayJoin","mathRound","PI2","round4","svgEl","bindStyle","isText","pathHasFill","pathHasStroke","lineCap","lineJoin","miterLimit","svgPath","__svgEl","pathStr","dataLength","cmdStr","nData","clockwise","dThetaPositive","isCircle","unifiedTheta","large","pathDataToString","svgTextDrawRectText","removeOldTextNode","svgImage","HTMLImageElement","dw","dh","__imageSrc","attrXLink","svgText","_tmpTextHostRect","_tmpTextBoxPos","_tmpTextTransform","TEXT_ALIGN_TO_ANCHRO","hostRect","elTransform","needTransformTextByHostEl","textSvgEl","__textSvgEl","textSvgElStyle","setTextTransform","tspanList","__tspanList","tspanOriginLen","__canCacheByTextString","__text","updateTextLocation","nTextLines","tspan","singleLineText","__zrText","ZText","_graphic","Definable","zrId","svgRoot","tagNames","markLabel","domName","_zrId","_svgRoot","_tagNames","_markLabel","_domName","nextId","getDefs","isForceCreating","defs","element","onUpdate","addDom","removeDom","getDoms","doms","tags","markAllUnused","markUsed","removeUnused","getSvgProxy","displayable","getTextSvgElement","getSvgElement","originalModule","webpackPolyfill","over360","minSqrDistance","lineLength","cpNormalizedLength","sqrDistance","startIndex","intersectionCount","endIndex","segment","xDifference","rayEnd","ray","intersections","int","lastValidLine","simplify","threshold","currentIndex","middleIndex","firstPoint","middlePoint","lastPoint","toHull","startPoint","sortedRecords","record1","record2","startPoint_1","lowestHullIndex","insidePoints","hullRecords","getKey","record","currentRecord","currentPoint","correctTurnFound","lastHullRecord","lastHullPoint","secondLastHullRecord","secondLastHullPoint","crossProduct","indexOfLowestHullIndexRecord","currentHullIndex","hullPointRecordsReordered","newFirstChunk","newSecondChunk","hullPoints","isPolyline","polyline","svgString","coords","LineTo","arg0","Vector","Dom","isVector","importNode","getTransformToElement","toNode","SVGSVGElement","defsNode","toNodes","vels","found","vel","toLocalPoint","toGeometryShape","translateCenterToPoint","getBBox","translateAndAutoOrient","animateTransform","animateAlongPath","normalizePath","withoutTransformations","recursive","SVGPathElement","toPathData","createVectors","markup","svgDoc","transformRectangle","transformPolyline","transformLine","transformPoint","matrixToTranslation","matrixToRotation","matrixToScale","decomposeMatrix","parseTransformString","matrixToTransformString","transformStringToMatrix","createSVGTransform","createSVGMatrix","createSVGPoint","svgDocument","transformRegex","transformSeparatorRegex","transformationListRegex","mat","transformationMatch","ctm","scaleNonUniform","skewX","skewY","deltaTransformPoint","px","py","translateX","translateY","rotation","matrixTransform","DOMMatrix","createSVGTransformFromMatrix","translation","decomposedMatrix","transformations","translateMatch","rotateMatch","scaleMatch","corner1","corner2","corner3","corner4","XLSX","idStart","Transformable","Animatable","clipPath","drift","decomposeTransform","beforeUpdate","afterUpdate","updateTransform","setClipPath","removeClipPath","animators","addAnimator","removeAnimator","Clip","arraySlice","defaultGetter","defaultSetter","interpolateNumber","interpolateString","interpolateArray","arrDim","len2","fillArr","arr0","arr1","arr0Len","arr1Len","isArraySame","catmullRomInterpolateArray","catmullRomInterpolate","v0","cloneValue","rgba2String","createTrackClip","animator","oneTrackDone","keyframes","propName","forceAnimate","_getter","_setter","useSpline","trackLen","trackMaxTime","firstVal","isValueArray","isValueColor","isValueString","lastValue","getArrayDim","kfPercents","kfValues","prevValue","isAllValueEqual","colorArray","lastFrame","lastFramePercent","clip","life","_loop","_delay","onframe","frame","ondestroy","Animator","_tracks","_clipCount","_doneList","_onframeList","_clipList","tracks","during","pause","_paused","resume","isPaused","_doneCallback","doneList","lastClip","clipCount","addClip","oldOnFrame","forwardToLast","clipList","removeClip","getClips","LinkedList","linkedListProto","Entry","insertEntry","maxSize","_list","_map","_maxSize","_lastRemovedEntry","LRUProto","leastUsedEntry","makeAscendingRun","lo","hi","runHi","reverseRun","binaryInsertionSort","pivot","gallopLeft","hint","lastOffset","maxOffset","gallopRight","TimSort","runStart","runLength","minGallop","stackSize","mergeAt","start1","length1","start2","length2","cursor1","cursor2","count1","count2","exit","_minGallop","mergeLow","customCursor","customDest","mergeHigh","mergeRuns","forceMergeRuns","pushRun","_runStart","_runLength","ts","minRun","minRunLength","SHADOW_PROPS","msRequestAnimationFrame","mozRequestAnimationFrame","webkitRequestAnimationFrame","save","restore","r1","r2","r3","r4","transformPath","vMag","vRatio","u","vAngle","processArc","fa","psiDeg","xp","yp","lambda","cxp","cyp","commandReg","numberReg","createPathOptions","pathProxy","prevCmd","cpx","cpy","subpathX","subpathY","cmdList","cmdText","pLen","ctlPtx","ctlPty","createPathProxyFromString","createFromString","extendFromString","mergePath","pathEls","pathList","pathEl","pathBundle","normalizeRadian","subPixelOptimizeRect","subPixelOptimizeOutputShape","positiveOrNegative","doubledPosition","subPixelOptimizeLine","outputShape","inputShape","originWidth","originHeight","polyHelper","smooth","smoothConstraint","smoothSpline","smoothBezier","cp1","cp2","LinearGradient","globalCoord","doCreateNode","urn","vmlInited","zrvml","createNode","initVML","styleSheets","createStyleSheet","addRule","nullLowestDeltaTimeout","lowestDelta","toFix","toBind","documentMode","fixHooks","mouseHooks","mousewheel","onmousewheel","getPageHeight","$elem","adjustOldDeltas","normalizeOffset","orgEvent","deltaX","deltaY","absDelta","wheelDeltaY","wheelDeltaX","axis","HORIZONTAL_AXIS","deltaMode","pageHeight","shouldAdjustOldDeltas","boundingRect","deltaFactor","nullLowestDelta","unmousewheel","lodash_es_1","ObjectExt","titleCase","sentenceCase","pathCase","dotCase","constantCase","pascalCase","lodash_es_2","cacheStringFunction","NumberExt","rclass","rnotwhite","fillSpaces","hasScrollbars","setPrefixedStyle","prefix_1","vendor","getVendorPrefixedName","hyphenPattern","prefixes","testStyle","char","capitalizedName","prefixedName","getWithPrefix","createSlicePathData","rectToPathData","rectangleToPathData","ellipseToPathData","circleToPathData","getPointsFromSvgElement","polylineToPathData","polygonToPathData","lineToPathData","KAPPA","attr_1","getNumbericAttribute","polygon","svgPointsToPath","nodePoints","numberOfItems","getItem","circle","cd","cdx","cdy","topRx","bottomRx","topRy","bottomRy","getTotalLength","samples","getPointAtLength","innerRadius","outerRadius","svgArcMax","r0","a0","a1","da","df","c0","s0","c1","s1","__rest","getBoundingOffsetRect","getIntersection","getMatrixByElementAttr","getBBoxByElementAttr","path_1","style_1","matrix_1","outputBBox","_a","top_1","clientLeft","clientTop","clientWidth","clientHeight","childBBox","targetCTM","nodeCTM","inverse","createAnimation","setupAnimation","ani","beginElement","endElement","offsetLeft","offsetTop","matrixList","nodeMatrix","globalPoint","globalToLocalMatrix","Ellipse","isValid","spot","gRect","rectMatrix","rectMatrixComponents","reseted","setRotate","pathNode","minDistance","closestSamples","sample_1","gp","ggp","centerDistance","refDistance","mpath","animationID","id2anim","getTargets","register","isBrowser","timeoutDuration","longerTimeoutBrowsers","scheduled","functionToCheck","getStyleComputedProperty","getParentNode","getScrollParent","_getStyleComputedProp","getReferenceNode","isIE11","MSInputMethodContext","isIE10","getOffsetParent","noOffsetParent","nextElementSibling","getRoot","findCommonOffsetParent","element1","element2","order","Node","DOCUMENT_POSITION_FOLLOWING","createRange","setStart","setEnd","commonAncestorContainer","element1root","getScroll","upperSide","scrollingElement","includeScroll","modifier","getBordersSize","sideA","sideB","getSize","computedStyle","getWindowSizes","classCallCheck","Constructor","createClass","descriptor","protoProps","staticProps","_extends","getClientRect","offsets","sizes","horizScrollbar","vertScrollbar","getOffsetRectRelativeToArbitraryNode","fixedPosition","isHTML","childrenRect","parentRect","scrollParent","borderLeftWidth","marginTop","getViewportOffsetRectRelativeToArtbitraryNode","excludeScroll","relativeOffset","innerWidth","innerHeight","isFixed","getFixedPositionOffsetParent","parentElement","getBoundaries","popper","boundariesElement","boundaries","boundariesNode","_getWindowSizes","isPaddingNumber","getArea","_ref","computeAutoPlacement","placement","refRect","rects","sortedAreas","area","filteredAreas","_ref2","computedPlacement","variation","getReferenceOffsets","commonOffsetParent","getOuterSizes","marginBottom","marginRight","getOppositePlacement","getPopperOffsets","referenceOffsets","popperRect","popperOffsets","isHoriz","mainSide","secondarySide","measurement","secondaryMeasurement","runModifiers","ends","enabled","isDestroyed","arrowStyles","flipped","positionFixed","originalPlacement","isCreated","onCreate","isModifierEnabled","modifierName","getSupportedPropertyName","upperProp","toCheck","willChange","disableEventListeners","removeOnDestroy","getWindow","setupEventListeners","updateBound","scrollElement","attachToScrollParents","scrollParents","isBody","eventsEnabled","enableEventListeners","scheduleUpdate","cancelAnimationFrame","setStyles","isFirefox","isModifierRequired","requestingName","requestedName","requesting","isRequired","_requesting","requested","placements","validPlacements","BEHAVIORS","parseOffset","basePlacement","useHeight","fragments","frag","splitRegex","ops","mergeWithPrevious","toValue","index2","Defaults","shiftvariation","_data$offsets","isVertical","shiftOffsets","preventOverflow","transformProp","popperStyles","priority","escapeWithReference","secondary","keepTogether","opSide","arrow","_data$offsets$arrow","arrowElement","sideCapitalized","altSide","arrowElementSize","popperMarginSide","popperBorderSide","sideValue","placementOpposite","flipOrder","behavior","refOffsets","overlapsRef","overflowsLeft","overflowsRight","overflowsTop","overflowsBottom","overflowsBoundaries","flippedVariationByRef","flipVariations","flippedVariationByContent","flipVariationsByContent","flippedVariation","getOppositeVariation","inner","subtractLength","bound","computeStyle","legacyGpuAccelerationOption","gpuAcceleration","offsetParentRect","shouldRound","noRound","referenceWidth","popperWidth","isVariation","horizontalToInteger","verticalToInteger","getRoundedOffsets","prefixedProperty","invertTop","invertLeft","applyStyle","onLoad","modifierOptions","Popper","Utils","PopperUtils","MapShim","getIndex","__entries__","global$1","requestAnimationFrame$1","transitionKeys","mutationObserverSupported","ResizeObserverController","connected_","mutationEventsAdded_","mutationsObserver_","observers_","onTransitionEnd_","leadingCall","trailingCall","resolvePending","timeoutCallback","addObserver","connect_","removeObserver","observers","disconnect_","updateObservers_","activeObservers","gatherActive","hasActive","broadcastActive","childList","subtree","disconnect","instance_","defineConfigurable","getWindowOf","emptyRect","createRectInit","toFloat","positions","getHTMLElementContentRect","paddings","positions_1","getPaddings","horizPad","vertPad","boxSizing","isDocumentElement","SVGGraphicsElement","getContentRect","getSVGContentRect","ResizeObservation","broadcastWidth","broadcastHeight","contentRect_","isActive","broadcastRect","ResizeObserverEntry","rectInit","Constr","contentRect","DOMRectReadOnly","ResizeObserverSPI","controller","callbackCtx","activeObservations_","observations_","callback_","controller_","callbackCtx_","observations","unobserve","clearActive","observation","ResizeObserver","_REVERSE_MAP","_MAP","8","9","13","16","17","18","20","27","32","33","34","35","36","37","38","39","40","45","46","91","93","224","_KEYCODE_MAP","106","107","109","110","111","186","187","188","189","190","191","192","219","220","221","222","_SHIFT_MAP","_SPECIAL_ALIASES","Mousetrap","_bindMultiple","_directMap","_callbacks","stopCallback","_belongsTo","composedPath","initialEventTarget","isContentEditable","handleKey","_handleKey","addKeycodes","documentMousetrap","_addEvent","_characterFromEvent","character","_isModifier","_pickBestAction","_getReverseMap","_getKeyInfo","combination","_keysFromString","targetElement","_resetTimer","_sequenceLevels","_ignoreNextKeyup","_ignoreNextKeypress","_nextExpectedAction","_resetSequences","doNotReset","activeSequences","_getMatches","sequenceName","modifiers1","modifiers2","seq","deleteCombo","combo","deleteSequence","_fireCallback","sequence","srcElement","_preventDefault","_stopPropagation","_handleKeyEvent","_eventModifiers","_bindSequence","_increaseSequence","nextAction","_callbackAndReset","wrappedCallback","_bindSingle","maxLevel","processedSequenceCallback","ignoreThisKeypress","combinations","locals","media","sourceMap","btoa","DEBUG","esModule","successText","background","progressBarBg","completedBg","handlerIcon","successIcon","handlerBg","textSize","handlerStyle","borderRadius","isPassing","dragVerifyStyle","progressBarStyle","textStyle","handlerIconClass","isMoving","dragStart","dragMoving","progressBar","passVerify","dragFinish","mousemove","mouseup","touchmove","touchend","mousedown","touchstart","isFolder","searchMode","goodweorgdropdown","selectedModel","goodweorgtree","nodeShowAddIcon","OrgTreeNode","foldClick","orgNodeClick","itemClick","nodeClickUnfold","_vm","org_name","Draggable","eventTool","GestureMgr","stopEvent","EmptyProxy","handlerNames","painterRoot","_hovered","_lastTouchMoment","_lastX","_lastY","_gestureMgr","setHandlerProxy","isHover","isOutsideBoundary","handlerInstance","isOutside","lastHovered","lastHoveredTarget","hovered","hoveredTarget","setCursor","dispatchToElement","mouseout","eventControl","zrEventControl","zrIsToLocalDOM","eventArgs","targetInfo","eventPacket","eveType","topTarget","gestureEvent","pinchX","pinchY","pinchScale","zrByTouch","makeEventPacket","eachOtherLayer","layer","getDisplayList","hoverCheckResult","processGesture","gestureMgr","gestureInfo","recognize","_downEl","_downPoint","_upEl","_dragStart","_drag","_dragEnd","draggingTarget","_draggingTarget","_x","_y","dropTarget","lastDropTarget","_dropTarget","buildTransformer","inX","inY","transformer","markers","transformerName","oldSrcCoords","srcCoords","oldCoordTheSame","destCoords","preparePointerTransformer","propLR","propTB","marker","stl","idxLR","idxTB","prepareCoordMarkers","transformLocalCoord","elFrom","elTarget","LN2","log","determinant","rows","rank","rowStart","rowMask","colMask","detCache","cacheKey","fullRank","colStart","subRowMask","subRowStart","colLocalIdx","colTag","mA","vh","srcPointX","srcPointY","pk","eventUtil","_track","pointPair","_doTrack","_recognize","trackItem","recognizers","pinch","track","pinchEnd","pinchPre","pinchCenter","timsort","shapeCompareFunc","_roots","_displayList","_displayListLen","includeIgnore","updateDisplayList","displayList","_updateAndAddDisplayable","clipPaths","userSetClipPath","currentClipPath","parentClipPath","_renderList","displayableSortFunc","mIdentity","transformableProto","needLocalTransform","scaleTmp","parentHasTransform","relX","relY","invTransform","tmpTransform","originTransform","setLocalTransform","transformCoordToGlobal","animateTo","animatable","stopAnimation","animateToShallow","objShallow","propertyCount","setAttrByPath","animatingShape","pathSplitted","animateFrom","easingFuncs","_life","_initialized","gap","onrestart","_pausedTime","globalTime","deltaTime","_startTime","easingFunc","restart","_needsRemove","quadraticIn","quadraticOut","quadraticInOut","cubicIn","cubicOut","cubicInOut","quarticIn","quarticOut","quarticInOut","quinticIn","quinticOut","quinticInOut","sinusoidalIn","sinusoidalOut","sinusoidalInOut","exponentialIn","exponentialOut","exponentialInOut","circularIn","circularOut","circularInOut","elasticIn","asin","elasticOut","elasticInOut","backIn","backOut","backInOut","bounceIn","bounceOut","bounceInOut","Layer","parseInt10","viewRect","singleCanvas","_opts","_singleCanvas","rootStyle","zlevelList","_zlevelList","layers","_layers","_layerConfig","_needsManuallyCompositing","_width","_height","mainLayer","__builtin__","initContext","_domRoot","_getSize","domRoot","createRoot","_hoverlayer","_hoverElements","isSingleCanvas","getViewportRootOffset","viewportRoot","paintAll","_redrawId","_paintList","clearColor","_backgroundColor","hoverStyle","__hoverMir","__from","hoverElements","hoverLayer","getLayer","originalEl","_doPaintEl","getHoverLayer","redrawId","_updateLayerStatus","finished","_doPaintList","_compositeManually","clearRect","eachBuiltinLayer","virtual","layerList","zi","__startIndex","__drawIndex","useTimer","__endIndex","firstEl","notClear","prevElClipPaths","draw","currentLayer","forcePaint","isDisplayableCulled","prevClipPaths","isClipPathChanged","doClip","insertLayer","layersMap","prevLayer","isLayerValid","prevDom","eachLayer","getLayers","updatePrevLayer","__used","prevZlevel","incrementalLayerCount","getElementCount","_clearLayer","layerConfig","_zlevel","delLayer","_progressiveLayers","clearLayer","getRenderedCanvas","imageLayer","pixelRatio","renderToCanvas","whIdx","wh","cwh","plt","prb","shadowBlurSize","leftMargin","rightMargin","topMargin","bottomMargin","pathTransform","imgShape","createDom","newDom","newDomStyle","domStyle","onselectstart","domBack","ctxBack","motionBlur","lastFrameAlpha","createBackBuffer","clearAll","clearColorGradientOrPattern","haveMotionBLur","__canvasGradient","fillRect","_clips","_running","_time","_pauseStart","clips","deferredEvents","deferredClips","_startLoop","isFinished","mouseHandlerNames","pointerEventNameMap","_event","globalEventSupported","localNativeListenerNames","pointerdown","pointerup","pointermove","pointerout","mouse","pointer","nm","globalNativeListenerNames","eventNameFix","isPointerFromTouch","markTouch","isLocalEl","elTmp","domBelongToZr","FakeGlobalEvent","fakeGlobalEventProto","localDOMHandlers","_mayPointerCapture","downPoint","togglePointerCapture","_pointerCapturing","globalDOMHandlers","pointerCaptureReleasing","mountLocalDOMEventListeners","domHandlers","nativeEventName","mountSingleDOMEventListener","touching","touchTimer","setTouchTimer","mountGlobalDOMEventListeners","mount","normalizeGlobalEvent","listener","listenerOpts","domTarget","unmountDOMEventListeners","isPointerCapturing","globalHandlerScope","_globalHandlerScope","DOMHandlerScope","HandlerDomProxy","_localHandlerScope","handlerDomProxyProto","colorTool","pathTool","_parseSVG","parseSVG","_Group","_Path","_Image","_CompoundPath","CompoundPath","_Text","_IncrementalDisplayable","IncrementalDisplayable","_Arc","Arc","_BezierCurve","BezierCurve","_Circle","Circle","_Droplet","Droplet","_Ellipse","_Heart","Heart","_Isogon","Isogon","_Line","_Polygon","Polygon","_Polyline","_Rect","Rect","_Ring","Ring","_Rose","Rose","_Sector","Sector","_Star","Star","_Trochoid","Trochoid","_LinearGradient","_RadialGradient","RadialGradient","_Pattern","_BoundingRect","extremity","xDim","yDim","fromPoints","vec2Min","vec2Max","cubic","quadratic","windingLine","windingCubic","nRoots","y0_","y1_","nExtrema","windingQuadratic","y_","windingArc","x_","containPath","isStroke","mathAtan2","nPoint","DILIMITER_REG","SVGParser","_defs","_root","_isDefine","_isText","viewBox","parseAttributes","viewBoxRect","viewBoxTransform","_parseNode","viewBoxArr","makeViewBoxTransform","ignoreViewBox","elRoot","ignoreRootClip","xmlNode","parentGroup","defineParsers","nodeParsers","_parseText","_textX","_textY","inheritStyle","parsePoints","img","gradient","stopColor","_parseGradientColorStops","__inheritedStyle","pointsString","attributesMap","onlyInlineStyle","zrStyle","isTextEl","transformOps","parseTransformAttribute","styleRegResult","styleList","styleRegex","svgAttrName","parseStyleAttribute","attrValue","elFillProp","elStrokeProp","elStyle","getPaint","elPropName","urlRegex","urlMatch","v2Distance","isLoop","segs","w3","v2Min","v2Max","v2Scale","v2Add","v2Clone","v2Sub","constraint","prevPoint","nextPoint","cps","d0","cp0","_updatePathDirty","Displayble","IncrementalDisplayble","_displayables","_temporaryDisplayables","_cursor","clearDisplaybles","addDisplayable","notPersistent","addDisplayables","displayables","eachPendingDisplayable","unitX","unitY","_curve","someVectorAt","isTangent","cpx2","cpy2","cpx1","cpy1","dStep","radian","fixClipWithShadow","shadowTemp","orignalBrush","xStart","yStart","ri","arrayDiff","GradientManager","ClippathManager","ShadowManager","checkParentAvailable","prevSibling","SVGPainter","svgDom","bgRoot","gradientManager","clipPathManager","shadowManager","viewport","_svgDom","_backgroundRoot","_viewport","_visibleList","getSvgDom","getSvgRoot","_backgroundNode","bgNode","visibleList","listLen","newVisibleList","svgProxy","svgElement","prevSvgElement","indices","textSvgElement","added","addWithoutUpdate","_getDefs","viewportStyle","toDataURL","outerHTML","Diff","buildValues","newArr","oldArr","componentPos","componentLen","newLen","oldLen","editLength","maxEditLength","bestPath","extractCommon","execEditLength","diagonalPath","basePath","addPath","removePath","canAdd","canRemove","pushComponent","commonCount","fillOrStroke","updateDom","hex","textEl","parentEl","clipPathEl","_textDom","hasShadow","_shadowDom","_shadowDomId","domChild","stdDeviation","vmlCore","Z2","initRootElStyle","coordsize","coordorigin","rgb2Str","getZIndex","setColorAndOpacity","updateFillAndStroke","vmlEl","zrEl","isFill","gradientType","expansion","rectWidth","rectHeight","stops","cs1","cs2","colorAndAlphaList","colorAndAlpha","color1","color2","opacity1","opacity2","focusposition","updateFillNode","dashstyle","updateStrokeNode","brushVML","vmlRoot","_vmlEl","needTransform","strokeEl","weight","zIndex","removeRectText","onRemove","onAdd","appendRectText","ow","oh","_imageSrc","_imageWidth","_imageHeight","imageRuntimeStyle","runtimeStyle","oldRuntimeWidth","oldRuntimeHeight","sw","sh","hasCrop","vmlElStyle","hasRotation","transformFilter","imageTransformPrefix","imageEl","_imageEl","cropEl","_cropEl","imageELStyle","tmpImage","cropElStyle","filterStr","textMeasureEl","fontStyleCache","fontStyleCacheCount","fontEl","fromTextEl","align","verticalAlign","fontString","variant","fontVariant","family","getFontStyle","textPathEl","skewEl","textVmlEl","_textVmlEl","textpathok","textVmlElStyle","VMLPainter","vmlViewport","_vmlRoot","_vmlViewport","_firstPaint","__alreadyNotVisible","_getWidth","_getHeight","vmlViewportStyle","currentStyle","paddingLeft","paddingRight","paddingTop","paddingBottom","Timeout","clearFn","_id","_clearFn","setInterval","clearInterval","close","unref","enroll","msecs","_idleTimeoutId","_idleTimeout","unenroll","_unrefActive","_onTimeout","clearImmediate","registerImmediate","channel","messagePrefix","onGlobalMessage","nextHandle","tasksByHandle","currentlyRunningATask","attachTo","runIfPresent","postMessage","importScripts","postMessageIsAsynchronous","oldOnMessage","onmessage","canUsePostMessage","MessageChannel","port1","port2","task","cachedSetTimeout","cachedClearTimeout","defaultSetTimout","defaultClearTimeout","runTimeout","fun","currentQueue","draining","queueIndex","cleanUpNextTick","drainQueue","runClearTimeout","Item","title","argv","versions","addListener","removeListener","removeAllListeners","prependListener","prependOnceListener","cwd","chdir","umask","util_1","portsPositionArgs","elemBBox","groupPositionArgs","lineLayout","normalizePoint","strict","toResult","normalizedDistance","a2","mDir","mDiff","ta","tb","mSquared","aSquared","bSquared","tangentTheta","q1","q3","fromRect","isEllipse","__spreadArray","pack","ar","curve_1","close_1","lineto_1","moveto_1","curveto_1","normalize_1","Util","previousObj_1","appendSegment","createSegment","MoveTo","curveTo","CurveTo","xAxisRotation","largeArcFlag","sweepFlag","endX","endY","arcToCurves","quadTo","Close","drawPoints","segmentBBox","lastSegment","seg","currentSegment","prepareSegment","insertSegment","nextSegment","removeSegment","fixIndex","removedSegment","updateSubpathStartSegment","replaceSegment","replacedSegment","updateSubpathStart","getSegment","segmentAt","segmentIndexAt","segmentAtLength","segmentIndexAtLength","segmentSubdivisions","lastVisibleIndex","getSegmentSubdivisions","subpathStartSegment","minSquaredDistance","segmentClosestPointT","segmentClosestPoint","segmentIndex","polylines","toPolylines","numIntersections","lastVisibleSegment","numSegments","tValue","dividedSegmentIndex","lastValidSegment","lastValidSegmentIndex","index_1","pathCopy","divisionStartIndex","divisionMidIndex","divisionEndIndex","movetoEnd","secondPathSegmentIndexConversion","originalSegment","convertedSegment","segment_1","subdivisions_1","partialPoints","otherSegments","isPath","commands","normalizePathData","drawArc","segments_1","arg1","arg2","arg3","arg4","arg5","c2","q2c","ax","ay","a2c","xy","v120","rx2","ry2","f2old","x2old","y2old","s2","tan","hx","hy","m3","m4","newres","pathString","pathArray","spaces","segmentReg","commandParamReg","paramsCount","q","segmetns","command","mx","my","jj","bx","by","qx","qy","processPath","pcom","nx","ny","fixArc","pp","pi","prevCommand","seglen","regexSupportedData","sds","cty","cpsi","spsi","rxd","ryd","rxdd","rydd","r1x","r2y","lamda","seif","txd","tyd","dr","sse","segr","cpsir1","cpsir2","spsir1","spsir2","mc","ms","pts","initialMove","rounded","arcSize","wp","pt","nx1","ny1","nx2","ny2","startX","startY","stopX","stopY","__assign","normalizePercentage","rawArgs","__importDefault","JQuery","jquery_1","setup_1","NodeList","Document","DocumentFragment","docFrag","isNode","Lang","ArrayExt","makeKeyIndexAndFree","keyIndex","free","itemKey","oldList","oldMap","newMap","newFree","oldKeyIndex","newKeyIndex","moves","freeIndex","newItemIndex","freeItem","simulateList","removeSimulate","simulateItem","nextSimulateItem","unsetByPath","setByPath","getByPath","isMaliciousProp","getBoolean","getNumber","ensure","delimiter","lastKey","diver_1","propertyToRemove","parent_1","delim","flatObject_1","flatKey","applyMixins","derivedCtor","baseCtors","inherit","isNativeClass","StringExt","eval","eval_1","exp","hashcode","isUnicoded","characterCode","sanitizeHTML","name_1","levenshteinWithMax","big","minJ","maxJ","colMin","getSpellingSuggestion","candidates","getName","bestCandidate","maximumLengthDifference","bestDistance","justCheckExactMatches","nameLowerCase","candidates_1","candidate","candidateName","candidateNameLowerCase","normalizeSides","parseCssNumeric","isPercentage","lang_1","units","getUnit","vertical","FunctionExt","cacher","repush","postProcessor","hasCache","isAsyncLike","isAsync","toAsyncBoolean","inputs","hasAsync","deferres","all","toDeferredBoolean","shiftAnnotations","findAnnotationsBetweenIndexes","findAnnotationsAtIndex","annotate","object_1","annotations","curr","compacted","batch","annotation","includeAnnotationIndices","sanitize","JSONExt","deepEqual","deepArrayEqual","deepObjectEqual","deepCopy","deepArrayCopy","deepObjectCopy","emptyArray","DataUri","isDataUrl","dataUriToBlob","dataUrl","decodedString","uri","decodeURIComponent","mime","atob","ia","Blob","downloadBlob","blob","fileName","msSaveBlob","URL","createObjectURL","link","download","revokeObjectURL","imageToDataUri","onError","FileReader","reader","dataUri","readAsDataURL","meta","bytes","base64","u8a","subarray","downloadDataUri","svgToDataUrl","getNumberFromViewBox","parseViewBox","getNumberFromMatches","reg","header","Unit","millimeterSize","supportedUnits","mm","cm","in","pc","cssWidth","cssHeight","toPx","caf","oRequestAnimationFrame","lastTime_1","currTime","timeToCall","webkitCancelAnimationFrame","webkitCancelRequestAnimationFrame","msCancelAnimationFrame","msCancelRequestAnimationFrame","oCancelAnimationFrame","oCancelRequestAnimationFrame","mozCancelAnimationFrame","mozCancelRequestAnimationFrame","clearSelection","getSelection","removeAllRanges","breakText","number_1","text_1","vector_1","platform_1","annotateTextLine","lineNode","lineAnnotations","tspanNode","eol","baseSize","maxFontSize","fontMetrics","lastJ","annotationAttrs","vTSpan","annotationClass","emRegex","emToPx","em","numerical","textPath","verticalAnchor","textVerticalAnchor","namedVerticalAnchor","iai","defaultLineHeight","autoLineHeight","displayEmpty","containerNode","strFontSize","createTextPathNode","annotatedY","linesMetrics","lastI","lineClassName","lineMetrics","iLineHeight","lineNodeStyle","baseVal","alignment","baseSizePx","flMaxFont","rLineHeights","lineHeightPx","llMaxFont","calculateDY","rh","telem","tnode","shouldAppend","partIndex","currentSeparator","hyphen","breakWord","full","lineSeprators","separators","seps","valids","part","splitText","wordIndex","lineIndex","wordCount","getComputedTextLength","isPartition","isCharacter","heightValue","lastLineIndex","lastLine","overflowLine","fullLastLine","lastCharIndex","fixedLastLine","lastChar","geom_1","transformAttr","newScale","absolute","transformList","svgTransform","appendItem","newTranslate","newRotate","translateToOrigin","setTranslate","rotateAroundOrigin","translateFromOrigin","finalPosition","setMatrix","MouseWheelHandle","onWheelCallback","onWheelGuard","animationFrameId","onWheel","didWheel","enable","changed","createVector","SizeSensor","sensors_1","sensor","createSensor","observer_1","pointerEvents","Scheduler","deadline","peek","port2_1","flushTask","job","shouldYield","scheduleTask","scheduling","isInputPending","Demo","bgColor","myClick","GoodweButton","GoodweButtonGroup","popperJs","popperElement","referenceElement","createPopper","popperObj","popperCreate","popperUpdate","destroyPopper","beforeDestroy","downEvent","nodeList","idSeed","createHandle","mouseupHandle","orgItemSelectedNotRoot","getOrgDataFromServer","common","getOrgSearchResult","preprocessingData","rootNode","getRootData","makeTreeData","sortTreeData","lastCount","treeList","page","create_time","date2str","org_code","str2format","org_type","parent_id","preprocessingSearchData","historyList","openAll","exists","parent_obj","sortDate","orgSearchKey","orgSearchULShow","orgSearchList","rootOpen","rootSelected","dropdownClass","goodweorgselector","rootOpenClick","rootNodeClick","orgTree","showValue","searchKeyClick","keywordHighlighting","orgSearchKeyClick","exitOrgSearch","insideChanged","OrgTree","orgSearchKeySelected","post","minHeight","maxHeight","iconClass","Outsideclick","OrgDropdown","outsideClick","OrgSelector","toggleSwitch","GoodweSwitch","showOrg","qry_type","search_type","search_key","changeSearchType","handleAdcodeChange","adcode","handleOrgChange","$data","searchParam","$$v","act","GoodweSearchCenter","isServer","resizeHandler","__resizeListeners__","isOnComposition","compositionHandle","inputHandle","inputFilterHandle","fetchHandle","listHandle","inputClass","dropDownClass","appendToBody","innerValue","hoverIndex","isShowClear","innerList","setList","inputClick","selectOptionByMove","moveToOptions","inputWidthUpdate","dropdown","highLight","clearAutoComplete","__ro__","AutoComplete","isNullOrEmptyObject","getACInfo","sn","isThreePhase","vac1","vac2","vac3","iac1","iac2","iac3","fac1","fac2","fac3","getDCInfo","vi","vpv1","ipv1","vpv2","ipv2","vpv3","ipv3","vpv4","ipv4","getIStr","istr1","istr2","istr3","istr4","istr5","istr6","istr7","istr8","istr9","istr10","istr11","istr12","istr13","istr14","istr15","istr16","Goodwe","Ops","Resouces","Front","formatDate","date","getMonth","getDate","getFullYear","tempperatureFilter","status2str","offline","pssmAwaiting","pssmGenerating","pssmHalting","formatTurnonTime","pacConvert","pacConvert2","discharge","charge","no_battery","standby","removeUnit","beforeArr","afterArr","beforeStr","afterStr","setSocWidth","dc","istr","it_change_flag","pssmInverterType","pssmInverterSN_1","check_code","pssmCapacity","capacity","scTurnonPs","turnon_time","pssmGeneratePower","out_pac","pssmAlternatingVoltage","pssmAlternatingCurrent","pssmAlternatingFrequency","temperature","tempperature","pssmDirectVoltageCurrent","pssmStringCurrent","eDay","pssmGenerateTodayAmount","pssmGenerateTotal","eTotal","pssmGenerateTotalHour","hTotal","pssmUnitHour","fade","pssmLastUpdateTime","last_refresh_time","fault_message","Inverter","required","GoodweStatusLight","$props","GoodweCard","validate","edit","iptValue","handleLabelClick","handleInput","handleInputKeyup","handleInputBlur","ele","GoodweEditableLabel","soc","showSoc","amount","charging","disCharging","GoodweBattery","Rack_Battery_System","batteryList","psCureActiveIndex","statusMap","currentBattery","power","statusObj","warning_bms","currentBatteryMonitor","clusterRespCount","showBatteryList","needExpandKeys","clusterSNArr","warnClusterList","showCluster","changePsCure","GoodweBatteryInfo","itemHeigth","Rack_Battery_Model","curBatClusterInfo","batteryModel","SN","batSN","batteryV","voltage","SOC","Common_Current","verBMS","versionJudge","majorMcuVersion","Rack_Charge_Current_Limit","maxChargeLimitCurrent","Common_Running_Status","independentOperateState","Rack_Discharge_Current_Limit","maxDischargeLimitCurrent","Rack_Pack_Num","seriesCount","DeviceParameter_DCDCFWVersion","minorMcuVersion","Rack_DCDC_Status","dcdcStatus","Rack_Air_Conditioner","Rack_Battery_Cabinet_Temperature","cabinetTemperature","Rack_Battery_Cabinet_Humidity","cabinetHumidity","Rack_Battery_Air_Conditioner_Running_Status","airConditioningSts","handlePageChange","GoodweBatteryCluster","goodweTab","show_dropdown","cover","clickItem","clickOption","clickArrow","clickSelect","GoodweTab","GoodweTabItem","PowerFlow","_pv","zrender","_battery","toLoad","pv","battery","toGrid","dataFromServer","createBatteryIcon","createText","fontsize","createImg","wid","hasEquipment","bettery","grid","socText","pvStatus","betteryStatus","loadStatus","gridStatus","autoPlay","remoteType","thirdDealertype","isStored","deviceList","emiList","deviceIndicators","myDevicelist","deviceListPage","carousel","page_index","page_size","carouselTimer","showHistory","current_inverter","deviceArea","drawPowerFlow","changeDeviceType","changeTab","tab","handleRollupBtn","startListCarousel","stopListCarousel","rollup","getCurrentPage","handleMouseEnterList","handleMouseLeaveList","handleListPageChange","handleListRowClick","row","stationDetail","isList","jump2curve","jump2data","carouselIndexChange","listSortChange","column","hasemi","emonth","brand","is_stored","canStartIV","GoodweDeviceArea","stringsData","showAppdownload","getParams","showRemote","showCureBtn","num2status","backToList","backDeviceDashboard","autoRefresh","leftTable","leftLen","rightTable","pssmBack","GoodweHtDetail","noTitle","Parallel_System_Details","Parallel_System_Master","parallel_name","masterSn","Parallel_System_data_logger_web","parallel_code","Parallel_System_Slaves","tableData","fcNo","DeviceInfo_Name","DeviceInfo_SNNo1","ParallelSystemDetail","exportFile","file_id","file_path","goodwe","alert","export_fail","pushCheckTip","popCheckTip","month","year","showIv","myChart","tab_options","tab_value","dateStack","date_type","tab_display","getTabOptions","clickRemoteControl","showRemoteControl","showShadow","initECharts","echarts","label","tabChange","paint","changeDateTypeTab","dateChange","paintDeviceCharts","handleExport","img_base64","getDataURL","img_width","img_height","localStorage","setItem","GoodweInverterCharts","baseOption4plant","colorObject","PVPower","RadiationIntensity","BatteryPower","MeterPower","LoadPower","BatteryLevel","MeterPowerPhase1","MeterPowerPhase2","MeterPowerPhase3","LoadPowerPhase1","LoadPowerPhase2","LoadPowerPhase3","tooltip","confine","formatter","axisValueLabel","dayjs","format","dateFormatReplace","dateFormatSems","seriesName","_charge","_discharge","buy","sell","dataZoom","axisLine4plant","lineStyle","splitLine4plant","paintStationCharts","stationId","chartId","dateType","batteryStatus","showFullScreen","invertersnum","gensetStatus","isDetailFull","chartIndexId","modelData","hasCharge","disCharge","showTitle","pieChart","series","graphic","legend","setOption","showPieCharts","showLineCharts","full_script","generateData","unit_Key","leftLabels","axisId","nestedGraph","useNested","xAxis","axisLine","axisLabel","yAxis","splitLine","income","_item","selfuse_pv","barMaxWidth","yAxisIndex","itemStyle","normal","frontColor","renderItem","api","ownProps","resArray","unselected","getOption","normalDataCount","xValue","yValue","barLayout","offsetCenter","pv_generation","clipRectByRect","coordSys","showLineChartsHomekit","chartsTypesByPlant","chartIndices","isGenset","localDate","dateFormat","date_options","date_type_api","userDate","pickerOptions","disabledDate","handleDisabledDate","showDatePick","getTab","autoFresh","autoGetPcTime","prevCycleChart","nextCycleChart","doGetTime","paintChart","showAbnormalCurve","datePickerType","showHdChart","is_removesoc","pw_id","typeName","indexLabel","canNext","pieSelfAdaption","hasBattery","selfAdaption","titleWidth","titleMarginL","firstWidth","firstMarginR","pieTitleMap","titleMap","PlantGraph_AC_Output","tolTipText","PlantGraph_AC_Output_tipB","PlantGraph_AC_Output_tipI","PlantGraph_Load_Consumption","PlantGraph_Load_Consumption_tipB","PlantGraph_Load_Consumption_tipI","gensetTip","PlantGraph_Load_Consumption_Generator","PlantGraph_Load_Consumption_Generator1","PlantGraph_Battery_Charge1","PlantGraph_Battery_Charge","kwh","PlantGraph_Battery_Discharge1","PlantGraph_Battery_Discharge","PlantGraph_Battery_tip","GoodweStationCharts","isShow","disclaimer_content","isAgree","disclaimer_id","remote","ok","agreementOk","agree","getRemoteData","updateRemoteData","InverterSN","StationID","InverterRemotingLastSetDate","submitObject","lastModifyDate","_updateRemoteDataAjax","confirm","isParam","isCurrentInverter","queryObject","allConfig","isRefresh","submitForm","changePage","refreshData","startStop","InverterStatusSettingMark","InverterStatus","allSaftyCountry","allReactivePowerCurve","allShadowScan","goodwePageOne","goodwePageTwo","isShowNextPre","isNotGoodwe","isSmall","num2saftyCountry","num2switchcure","num2switch","sys_lang","small","saftyCountry1","pvStartVoltage1","reConnectTime1","gridVoltageMin1","gridVoltageMax1","gridFrequencyMin1","gridFrequencyMax1","overFrequencyReducedLoadPoint1","overFrequencyReducedLoadSlope1","lessFrequencyReducedLoadPoint1","lessFrequencyReducedLoadSlope1","reactivePower1","activePowerLimit1","powerFactor1","standardReactivePowerCurve1","shadowScan1","isoLimit1","showStatement","showControl","getConfig","statement","control","GoodweRemoteControl","snOptions","optionsStatus","status_options_all","status_options_happen","status_options_recover","evSns","statusVal","dialogVisible","currentPage","totalCount","warningStatus","warningDetail","suggestion","replaceReason","handleCurrentChange","searchHandle","resetHandle","showLoading","powerStationId","GetRequest","$message","disLoading","showAlarmDetail","warningId","devicetype_EVCharge","pssmPleaseSelect","oStatus","scReset","ohSearch","siNoDataNow","EVCharger_Info_SN","recoveryTime","alaMes","rmDetailInfo","alarmDetails","rmReason","EVDetail_Alarm_Troubleshooting","cardOptions","cardSelected","dateRange","currentTimeStamp","currentDate","setMonth","newTimeStamp","getEvChargerHistory","powerstationid","card","pageindex","pagesize","handleChangeDateRange","handleDateRange","warning","EVDetail_daterange","empty_data","handleReset","exportRecord","txtDate","PushSetting_Range","EVDetail_Record_StartTime","EVDetail_Record_EndTime","EVDetail_Card_Name","export","EVDetail_EVname","EVDetail_Card_newCard_CardName","cardName","EVDetail_Card_newCard_CardNo","endTime","EVDetail_Record_duration","EVDetail_Record_Energy","EVDetail_Record_greenEnergy","EVDetail_Record_buyEnergy","EVDetail_Record_EndReason","SCHEDULE_MODE_MAP","1","2","CONNECT_STATUS_IDEL","CONNECT_STATUS_INFO_MAP","transKey","startBtnDisable","DRAWER_TITLE_MORE","DRAWER_TITLE_MODE","DRAWER_TITLE_SCHEDULED","UNIT_TYPE_MAP","validateInput","digitNum","defaultVal","canEmpty","validity","valid","inputVal","lowerBound","upperBound","PHASE_SN_CODE","hasEvName","graph","getFaultInfo","CONNECT_STATUS_FAULT","faultMess","ellipsisName","goCurrentEvView","backgroundImage","oName","rmDeviceSn","pssmInverterStatus","EVDetail_workstatus","workstatus","lastUpdate","evList","ChargingGraph","cTop","cLeft","goEvChargerCurrent","ev","onlyOneEv","getChartData","setChartOption","xData","yData1","yData2","yData3","dataZoomShow","itemWidth","itemHeight","axisPointer","tooltipContent","axisTick","chartOption","noDataNow","EVDetail_histrory_Title","dateVal","yData","boundaryGap","kw_unit","EVDetail_EVPower_Title","EVDetail_Settings_DLM","EVDetail_Settings_DLM_Tips","postApiToSet","dynamicLoad","nowEvInfo","EVDetail_Settings_DLM_Current","siEnter","handeChangeLimit","Current_unit","currentLimit","EVDetail_Settings_miniPower","ensureMinimumChargingPower","EVDetail_Settings_miniPower_Tips1","EVDetail_Setting_miniPower_Tips2","codeAnalysis","EVDetail_Settings_LockCharger","lockChargingPlug","EVDetail_Settings_LockCharge_Tips1","EVDetail_Settings_LockCharge_Tips2","EVDetail_Settings_PhaseSwitch","phaseSwitch","EVDetail_Settings_PhaseSwitch_Tips1","EVDetail_Settings_PhaseSwitch_Tips2","EVDetail_Set_DistanceManage","EVDetail_Settings_Tips_DistancekWh","EVDetail_Set_DistanceManage_Unit","EVDetail_Set_DistanceManage_Msg","EVDetail_Set_DistanceManage_title","handleFactorChange","EVDetail_Set_DistanceManage_perkWh","postApiDistance","currentMode","evInfo","emitEvent","panelActive","panelExpandDisabled","isScheduled","nowMode","CHARGE_MODE_FAST","CHARGE_MODE_PV","CHARGE_MODE_PV_BAT","chargerModeList","EVDetail_ChargeMode_Mode0","imgUrl","imgActive","EVDetail_ChargeMode_Mode1","EVDetail_ChargeMode_Mode2","nowPanelActive","finishOptions","EVDetail_ChargeMode_Finishat_asap","EVDetail_unit_hour","handleEvent","changeNowMode","setKey","sendSettingsUp","EVDetail_ChargeMode_MaxEnergy_Msg","calculateDistance","factor","unitType","handleInputChange","min_charge_power","max_charge_power","handleBlurSoc","handeChangeMax","handeChangeMin","EVDetail_ChargeMode_Title","EVCharger_Info_Mode","EVDetail_workmode_tip","EVDetail_ChargeMode_Label_ChargPower","EVDetail_ChargeMode_Tip_ChargPower","EVDetail_ChargeMode_Label_SOC","EVDetail_ChargeMode_Tip_SOC1","EVDetail_ChargeMode_Tip_SOC2","EVDetail_ChargeMode_Label_MinEnergy","EVDetail_ChargeMode_Tip_MinEnergy","EVDetail_ChargeMode_Description_Energy","scheduleMinEnergy","minEnergy","EVDetail_ChargeMode_Label_Finish","EVDetail_ChargeMode_Label_MaxEnergy","EVDetail_ChargeMode_Tip_MaxEnergy","scheduleMaxEnergy","maxEnergy","ChargingMode","handleChangeMode","handleSubmit","evCharger","chargeMode","chargingMaxPower","set_charge_power","finishTime","needClose","apiUrl","deepEvInfo","timeVal","scheduledSwitch","repeatMode","formatTimeRange","EVDetail_Msg_time_Tips","hour","schedule_hour","minute","schedule_minute","chargeMinutes","total_minute","alwaysReInitiate","schedule_charge_mode","isSetChargeMode","schedule_charge_power_setted","scheduleSOC","scheduleFinishTime","selectTime","EVDetail_Scheduled_Label_Start","changeTimeStart","EVDetail_Scheduled_Label_End","changeTimeEnd","scheduleMode","ChargingHistory","ChargingPower","MoreSettings","ModeSettings","ScheduledSettings","getEVChargerDataBySN","mqttEnableSubscribe","currentEvInfo","chargerInfo","EVCharger_Stat_CurrentPower","EVCharger_Stat_ChargeCurrent","EVDetail_Import_Power","drawer","drawerTitle","isDrawerLoading","mqttClient","isCharging","chargingDisible","formatVersion","foramtStatus","EVCharger_Status_Connected","EVCharger_Status_Disconnected","responseEvent","openDraw","mqttEndSubscribe","closeDrawer","myDrawer","saveAndSubmit","modeSetRef","scheduledSetRef","handleEvBtn","setSpecialPost","changeChargeNow","setEvChargerData","chargedNow","operate_succss","curSn","isDrawer","cleanSchedule","$confirm","EVDetail_Msg_ClearContent","EVDetail_Msg_Clear","confirmButtonText","cpt_confirm","cancelButtonText","pssmCancel","evSn","startHour","startMinute","endTotalMinutes","endHour","endMinute","mqttUrl","reconnectPeriod","mqtt","connect","subscribe","topic","drawerClosed","DeviceList_EV_Status_Title","DeviceList_EV_SN_Title","DeviceList_EV_Model_Title","DeviceList_EV_Firmware_Title","fireware","DeviceList_EV_LastUpdate_Title","EVCharger_Inverter","inverterConnectionStatus","EVCharger_MID","midConnectionStatus","EVDetail_moreSettings","EVDetail_ChargeSettings_Title","EVDetail_ChargePlug_Title","EVDetail_autostart_tip","EVDetail_Btn_Stop","EVDetail_Btn_Start","EVDetail_Schedule_Title","schedule_total_minute","pssmBeSure","EvChargerOverView","EvChargerCurrent","currentEvCharger","currentEvSn","lastRefreshTime","chooseEvCharger","showOverView","getAllEvChargerData","calculateLastTime","setHandleSucces","curEvChargerRef","refreshTimeArr","maxDate","isAfter","EVDetail_menu_overview","station_id","local_date","EvChargerMonitor","activeTab","handleTabClick","EVDetail_ChargeMonitor_Title","EV_PlantDetails_Alarm","EVDetail_Record_Title","GoodweEvChargerDetail","_index","indicatorImage","indicatorKey","status1","Online","GoodweEMI","goodweChartsTab","showDropDown","clickCover","GoodweChartsTabItem","GoodweChartsTabItemGroup","GoodweChartsTab","mppCurrent","fixed","mppVoltage","shortCircuitCurrent","openCircuitVoltage","tempOfVocTKVoc","tempOfIsc","solarCellQuantity","temperatureStc","irradianceStc","numberOfByPassDiodes","numberOfcomponents","manuFactor","manufactorId","manufactorName","moduleName","manufactorValid","data4deleted","getModuleByManufactorId","isFillAllDisabled","validateStringInfo","selectManuFactor","addManufactor","deleteManuFactor","editManuFactor","selectModule","addModule","deleteModule","_confirm","editModule","fillAll","verify","myAlert","verifyHelper","field","verifyAll","route","strand","readonly","GoodweStringInfo","resData","innerWid","showProcess","reloadFlag","postParam","closeShadowDetect","stationInfo","dashboard_show","showTextFormBar","getIVResult","reloadChart","startDetection","getDetectionProgress","showProgressWid","ivCurveDate","charts","currentTab","routeList","chartData","drawChart","changeCharts","chary","splitNumber","charx","linesData","device_detail_current","pager","getDetectionHistory","historyData","headerStyle","cellStyle","getGroupInfo","showGroup","stringInfoList","stringInfo","GoodweShadowDetect","GoodweShadowDetectChart","GoodweShadowDetectHistory","containerBg","textColor","innerBg","processText","processGoneBarWid","isEnd","containerStyle","startMove","sendProcessText","GoodweProcessBar","spend","currentPercent","GoodweProgress","validBatteryModuleNum","rule","LANG_FRONT","input_number","code_100106","input_uint","validBatteryPackageSN","Batteryinfo_SN_format_WRONG","validBatteryModuleSN","validBatteryCapacity","battery_capicity_empty","battery_capacity_range","battery_capacity_range_decimal","validEvCharger","EVDetail_Msg_1association","validCardNo","EVDetail_card_checkzero","EVDetail_card_validation","DEVICE_TYPE_TABS","SelectdeviceType_Popup_Inverter","SelectdeviceType_Popup_MicroInverter","DataLogger","DEVICE_TYPE_LIST","activeUrl","SelectdeviceType_Popup_Dataloger","errorMsgNotify","_alert","operationFailed","code_100083","code_100084","code_100094","Micro_UploadImage_Tips13","code_100105","code_100108","code_100109","code_100111","changingDeviceType","changingDeviceInfo","showModal","label_width","changeInfo","enterdevicenametip","add_dev_sn","cancleUpdateInverterInput","submitUpdateDevice","updateDeviceDialog","modalTitleMap","deviceRules","template_name","amBeSure","showChangeDeviceNotice","showChangeDeviceInput","changeDeviceDialog","resetFields","resetDataForm","deviceType","DEVICE_TYPE_DATALOGGER","DEVICE_TYPE_INVERTER","DEVICE_TYPE_EVCHARGER","newDevice","checkcode","battery_capacity","battery_capacity_show","sureChangeDevice","secondReplace","cancleChangeInverterInput","submitChangeDevice","isStorage","storageReg","batteryInverterReg","rmTip","DEVICE_TYPE_MICROINVERTER","AlertView_changeDeviceNotice","DEVICE_TYPE_ARCB","changeDeviceNotice","replaceDevice","oldDevice","add_dev_code","soc_device_Input_title","uppcase_note","dmEnterRemark","isHistoryRecord","formatDeviceType","showDeleteDeviceNotice","cancelDeleteDevice","beforeDeleteDevice","submitDeleteDevice","deleteApi","equipment_type","dmDeleteDeviceWarning","dmHandleResultWarning","DeviceType","oldName","oldSn","listTitleWidth","labelWidth","UpdateDeviceModal","ChangeDeviceModal","DeleteDeviceModal","canUpdate","canDelete","inverterData","inverterHistory","InverterPage","showInverterList","showUpdateModal","showChangeModal","showDeleteModal","changingDevice","showParallelDetail","initParallelRef","currentMainSn","getInverterData","formatData","computedInverterData","it_name","it_sn","it_type","master","it_capacity","createTime","conn_date","collectType","con_equipmentmodel","collectSn","con_equipment_sn","computedInverterHistory","ch_no","it_name_old","it_sn_old","newName","it_name_new","newSn","it_sn_new","changeDate","change_date","tabInverterList","resetHandleListModal","resetInverterPage","tabInverterHistory","getInverterHistory","handleInverterPageChange","alertParallelDetail","closeModal","resetModalInfo","handleDevice","modifyHandle","initListHandle","changeHistory","inverterWidth","Parallel_System_View_Slaves","CapacityOfDevice","pssmTurnonTime","pssmHandle","Modify","Replace","Delete","replace_history_number","original_devic","dmOriginDevice","new_divice","new_devic_sn","replace_time","panelsData","panleTableData","panelTablePage","pageIndex","pageSize","resetModal","Layout_PanelDetails_Title","computedPanelTableData","Layout_PanelDetails_No","Layout_PanelDetails_DeviceSn","inverterSn","Layout_PanelDetails_Model","Layout_PanelDetails_Panelname","oCancel","diver","flatObject","lastTime","cornerX","cornerY","THRESHOLD","hasMiniEndDistance","hasMiniDistance","previousObj","argRe","Registry","unregister","exist","onDuplicated","entity","onConflict","getSpellingSuggestionForName","prefixed","xlinkHref","xlinkShow","xlinkRole","xlinkType","xlinkArcrole","xlinkTitle","xlinkActuate","xmlSpace","xmlBase","xmlLang","preserveAspectRatio","requiredExtension","requiredFeatures","systemLanguage","externalResourcesRequired","positionWrapper","refDx","refDy","refWidth","setWrapper","refHeight","refRx","refRy","refRInscribed","attrName","widthFn","heightFn","refBBox","refRCircumscribed","percentage","diagonalLength","rValue","refCx","refCy","refDResetOffset","dWrapper","resetOffset","refDKeepOffset","refPointsResetOffset","pointsWrapper","refPointsKeepOffset","refR","refD","refPoints","refX2","refY2","refWidth2","refHeight2","refOrigin","shapeWrapper","shapeConstructor","cachedShape","shapeBBox","shapeOrigin","fitScale","qualify","defineGradient","cell","edgeView","sourcePoint","targetPoint","gradientUnits","textWrap","textHash","wrappedText","txt","isTextInUse","titleNode","xAlign","offsetWrapper","yAlign","defineFilter","port","offset1","offset2","createClassicMarker","classic","localAttrs","diamond","opened","fliped","circlePlus","radiusX","radiusy","Marker","presets","registry","sourceMarker","createMarker","targetMarker","vertexMarker","manual","others","preset","onNotFound","strokeWidth","refX","normalizeAttr","defineMarker","isEdgeView","connection","stubs","getConnectionLength","getConnection","sourceParts","targetParts","getConnectionPathData","atConnectionLengthKeepGradient","atConnectionWrapper","atConnectionLengthIgnoreGradient","atConnectionRatioKeepGradient","atConnectionRatioIgnoreGradient","atConnectionLength","atConnectionRatio","zeroVector","tangent","isValidDefinition","Attr","thickness","fixedDot","mesh","doubleMesh","patterns","Grid","Filter","getString","outline","highlight","dropShadow","grayScale","sepia","saturate","hueRotate","amount2","brightness","contrast","flipX","flipY","flipXY","watermark","radians","stepX","stepY","Background","Config","prefixCls","autoInsertCSS","useCSSSelector","trackable","trackInfo","normalizeMarker","makeTree","collector","createEdge","defaultClassName","cellView","magnet","magnetEl","defaultOptions","getHighlighterId","magnetVel","magnetBBox","isEdgeElement","highlightMatrix","paddingMatrix","removeHandler","removeHighlighter","setCache","Private","highlighter","unhighlight","Highlighter","stepAngle","ellipseLayout","ellipseSpread","stepFn","compensateRotate","PortLayout","portPosition","outside","outsideLayout","outsideOriented","inside","insideLayout","insideOriented","autoOrient","bboxAngles","getBBoxAngles","textAnchor","orientAngle","tl","bl","br","radial","radialLayout","radialOriented","portCenterOffset","PortLabelLayout","fromString","lighten","ignoreAlpha","rgb","makeGrey","toCSS","Color","fromHex","hex2rgb","fromRGBA","hue2rgb","h6","fromHSLA","bits","mask","bgr","rgb2hex","lum","amt","pound","fromArray","named","randomHex","randomRGBA","bw","darken","aliceblue","antiquewhite","aqua","aquamarine","azure","beige","bisque","black","blanchedalmond","blue","blueviolet","brown","burlywood","burntsienna","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","teal","thistle","tomato","turquoise","violet","wheat","white","whitesmoke","yellow","yellowgreen","Disposable","_disposed","disposed","DisposableSet","isDisposed","_disabled","Timing","Interp","View","__decorate","decorators","desc","decorate","PriorityQueue","defaultComparator","heapify","bubbleUp","oldPriority","bubbleDown","minIndex","adjacencyList","scanned","neighbours","alt","updatePriority","quad","inout","exponential","bounce","reflect","back","elastic","easeOutBounce","scaledTime","scaledTime2","easeInBounce","easeInSine","easeOutSine","easeInOutSine","easeInQuad","easeOutQuad","easeInOutQuad","easeInCubic","easeOutCubic","easeInOutCubic","easeInQuart","easeOutQuart","easeInOutQuart","easeInQuint","easeOutQuint","easeInOutQuint","easeInExpo","easeOutExpo","easeInOutExpo","scaledTime1","easeInCirc","easeOutCirc","easeInOutCirc","easeInBack","easeOutBack","easeInOutBack","easeInElastic","easeOutElastic","easeInOutElastic","easeInOutBounce","ma","mb","pb","bb","ca","ra","rd","ga","gd","ba","bd","LocalStorage","loadIndex","indexKey","docKey","docs","removeItem","views","removeEventListeners","unmount","rootElem","prevSelector","getSelector","undelegateEvents","splitter","getEventHandler","delegateEvent","getEventNamespace","addEventListeners","fromPoint","elementFromPoint","setEventData","propagationStopped","getEventData","eventData","currentData","isSvgElement","isCSSSelector","normalizedEvent","touchEvt","useElement","correspondingUseElement","getView","terminal","toPercentage","pin","totalLength","anchor","pinEdgeTerminal","getAngle","getUnrotatedBBoxOfElement","pinNodeTerminal","pinRelative","pinAbsolute","ConnectionStrategy","Markup","AttrManager","clean","elemCache","pathCache","rotatableNode","isStringMarkup","parseJSONMarkup","defines","define","groupSelector","nodeGroups","groupName","createContainer","isJSONMarkup","parseStringMarkup","sanitized","renderMarkup","parseLabelStringMarkup","currentChild","xml2json","attrMap","markupMap","parseNode","childMarkup","mk","getPortContainerMarkup","getPortMarkup","getPortLabelMarkup","getEdgeMarkup","getEdgeToolMarkup","getEdgeVertexMarkup","getEdgeArrowheadMarkup","getForeignObjectMarkup","bare","getAttrDefinition","specials","getDefinition","normalName","DELAY_ATTRS","allProcessedAttrs","roProcessedAttrs","cellAttrs","selectorCache","selectedLength","sortIndex","processedAttrs","rawAttrs","nodeAttrs","setAttrs","positionAttrs","offsetAttrs","delayAttrs","nodeTransform","nodePosition","getScaleOfElement","scalableNode","positioned","offseted","nodeBoundingRect","getBoundingRectOfElement","nodeBBox","updateDelayAttrs","forceSync","nodesAttrs","findAttrs","nodesAllAttrs","specialItems","processed","processAttrs","nodeAllAttrs","refSelector","refNode","processedAttributes","bboxCache","rotatableMatrix","unrotatedRefBBox","isRefNodeRotatable","rootBBox","mergeProcessedAttrs","updateRelativeAttrs","FlagManager","bootstrap","flags","labels","getFlag","hasChanged","CellView","ToolsView","ensureOptions","setContainer","ensureContainer","mergeActions","arr2","getDefaults","documentEvents","removeTools","rootSelector","getConstructor","prefixClassName","getContainerTagName","delegateEvents","getContainerAttrs","getContainerStyle","getContainerClassName","getBootstrapFlag","hasAction","removeAction","additionalRemovedActions","removedFlags","onAttrsChange","getChangedFlag","toolId","requestViewUpdate","feature","interacting","getMatrix","getShape","getMatrixOfElement","getRootRotatedMatrix","tm","getRootTranslatedMatrix","useCellGeometry","getBBoxOfElement","localToGraph","getPosition","findByAttr","prepareHighlight","isNodeView","portId","findAttr","hasPort","customizeEdgeTerminal","getStrategy","connecting","strategy","findPortElem","vTarget","onComplete","tools","can","isToolsView","hideTools","showTools","getTools","addTools","getEventArgs","cachedModelForMouseEvent","startBatch","stopBatch","dumpView","getEventTarget","findViewByElem","onMouseLeave","onMouseEnter","Flag","isCellView","confirmUpdate","ctor","htmlContainer","normalizedTools","ToolItem","isToolItem","tool","isSVGElement","focusedTool","blurredTool","hasSVG","hasHTML","decorator","getAnchor","terminalView","terminalMagnet","getViewBBox","quick","toolsView","onRender","focusOpacity","updatePosition","getEdgeMatrix","getNodeMatrix","getTangentAtRatio","getTangentAtLength","onClick","btn","Button","Remove","ui","Vertices","Segments","handles","getVertices","addable","updatePath","resetHandles","renderHandles","vertices","updateHandles","stopHandleListening","vertex","processHandle","onToolItemCreated","startHandleListening","onHandleChange","onHandleChanging","onHandleChanged","onHandleRemove","sourceAnchor","targetAnchor","getMouseEventArgs","notifyMouseDown","snapVertex","setVertexAt","notifyMouseMove","removeRedundancies","removeRedundantLinearVertices","vertexAdded","notifyMouseUp","checkMouseleave","onChanged","snapRadius","neighbors","getNeighborPoints","removable","removeVertexAt","getVertexIndex","insertVertex","onMouseDown","Handle","dblclick","delegateDocumentEvents","touchcancel","undelegateDocumentEvents","pathClassName","nextVertex","renderHandle","updateHandle","anchorFn","snapHandle","sourceView","sourceBBox","changeSourceAnchor","deleteSourceAnchor","shiftHandleIndexes","sourceAnchorPosition","sourceMagnet","resetAnchor","sourceAnchorDef","targetView","targetBBox","changeTargetAnchor","deleteTargetAnchor","targetAnchorPosition","targetMagnet","targetAnchorDef","setVertices","segmentLine","getClosestPoint","toggleArea","getTerminalView","updateAnchor","updateArea","anchorNode","getTerminalAnchor","customAnchor","anchorAttrs","customAnchorAttrs","defaultAnchorAttrs","areaNode","terminalCell","getTerminalMagnet","areaPadding","restrictArea","rewrite","terminalType","snapFn","snap","pointAtConnection","rotatedCoords","toolView","isSource","refIndex","getVertexAt","SourceAnchor","TargetAnchor","getPointAtRatio","prepareArrowheadDragging","onMouseMove","onMouseUp","SourceArrowhead","TargetArrowhead","labelIndex","autoFocus","editor","contentEditable","labelAddable","innerText","setText","removeTool","selectText","selectNodeContents","addRange","CellEditor","NodeEditor","EdgeEditor","appendLabel","removeLabelAt","NodeTool","EdgeTool","boundary","createBBoxAnchor","refView","refPoint","getPointAtEdge","fixedAt","orth","endType","getConnectionPoint","midSide","direction","NodeAnchor","getConnectionSubdivisions","vLine","hLine","vIntersections","hIntersections","fallbackAt","EdgeAnchor","getStrokeWidth","stroked","bboxRaw","lineRaw","findShapeNode","localShape","getShapeOfElement","magnetMatrix","translateMatrix","rotateMatrix","targetMatrix","localMatrix","localLine","localRef","getDataOfElement","insideout","localBBox","pathOptions","extrapolate","sticky","cp","cpOffset","alignOffset","coordinate","alignLine","ConnectionPoint","oneSide","dim","getPointBBox","getPaddingBox","getSourceBBox","getTargetBBox","isOrthogonal","getBearing","insideNode","nodeToNode","nodeToVertex","isOrthogonalLoop","vertexToNode","vertexToVertex","opposites","N","E","W","freeJoin","getBBoxSize","opposite","fromBBox","toBBox","freePoints","freeBearingPoints","fromBorder","toBorder","startRoute","endRoute","reversed","maxLoopCount","maxDirectionChange","perpendicular","excludeTerminals","excludeShapes","excludeHiddenNodes","startDirections","endDirections","directionMap","cost","90","fallbackRouter","draggingRouter","mapGridSize","excludedTerminals","getCell","excludedAncestors","getSourceCellId","getAncestors","getTargetCellId","getNodes","excType","excTerminal","excAncestor","excHidden","paddingBox","getSourceEndpoint","getDirectionAngle","directionCount","quadrant","angleTheta","diffX","diffY","gridStepsX","gridStepsY","distanceX","distanceY","fixAngleEnd","normalizedAngle","getDirectionChange","angle1","angle2","getGridDimension","snapGrid","getCost","anchors","getRectPoints","directionList","centerVector","rectPoints","ending","farthestIntersectionDistance","farthestIntersection","reconstructRoute","tailPoint","prevDiff","currentKey","leadPoint","findRoute","sourceEndpoint","targetEndpoint","startPoints","endPoints","isAccessible","openSet","costs","previousRouteDirectionAngle","previousDirectionAngle","isPathBeginning","directionChange","directions","gridOffsetX","gridOffsetY","numDirections","endPointsKeys","sameStartEndPoints","loopsRemaining","currentParent","currentCost","isStartPoint","isRouteBeginning","directionAngle","neighborPoint","neighborKey","isClose","costFromStart","penalties","isOpen","fallbackRoute","optionsRaw","point1","point2","resolveOptions","build","oldVertices","newVertices","partialRoute","dragFrom","dragTo","manhattan","diagonalCost","l1","l2","intersectionPoint","directionFrom","metro","linkView","er","offsetRaw","sourceX","targetX","sourceDelta","targetDelta","sourceY","targetY","center1","center2","angles","line1","line2","MAX_SAFE_INTEGER","intersects1","intersects2","intersects","Router","routePoints","prevDistance","nextDistance","endMove","roundedStart","roundedEnd","controlPointX","controlPointY","createLines","getDistence","jumpSize","jumpType","jumppedLines","centerLine","halfLine","xOffset","yOffset","nextLine","buildRoundedSegment","skippedPoints","jumpover","updateList","_jumpOverUpdateList","setupUpdating","ignoreConnectors","allLinks","getEdges","thisIndex","defaultConnector","edges","getConnector","linkViews","findViewByCell","thisLines","linkLines","jumpingLines","lineIntersections","crossCheckLines","crossCheckLine","findLineIntersections","jumpStart","jumpEnd","jumpLine","createJumps","Connector","ids","targetValue","startValue","getPropByPath","localOptions","timing","getTiming","getInterp","interp","iterate","setPropByPath","getArgs","commonArgs","jumpedToEnd","stopArgs","changing","mutate","changes","pendingOptions","store","subset","pathArrayLength","propertyPath","propertyValue","propertyPathArray","nextKey","isArrayIndex","ShareRegistry","metadata","preprocess","postprocess","_model","ignoreIdCheck","applyPropHooks","getProp","removeByPath","_parent","removePropByPath","getPrevious","removeZIndex","setZIndex","cells","getMaxZIndex","getDescendants","breadthFirst","batchUpdate","getMinZIndex","getMarkup","removeMarkup","setMarkup","getAttrs","removeAttrs","getAttrHooks","prefixAttrPath","getAttrByPath","removeAttrByPath","setVisible","getParent","getChildren","parentId","getParentId","childrenIds","ancestors","isChildOf","descendant","isDescendantOf","isAncestorOf","getCommonAncestor","getChildIndex","setParent","setChildren","addTo","isCell","addChild","addCell","insertChild","oldParent","getChildCount","incomings","getIncomingEdges","outgoings","getOutgoingEdges","updateParent","removeChildAt","getChildAt","unembed","removeCell","toolItems","setTools","normalizeTools","nameOrIndex","cellType","defaultAttrs","finalAttrs","defaultAttr","subName","finalProps","keepId","deepClone","execute","removeFromParent","Cell","getCellsBBox","cloneCells","cloneMap","sourceId","targetId","setSource","getSource","setTarget","getTarget","embeds","edgeRegistry","nodeRegistry","setEdgeRegistry","setNodeRegistry","ports","getPortsByGroup","getGroup","groupPosition","groupPositionName","layoutFn","portsArgs","groupArgs","portLayout","portSize","portAttrs","labelSize","labelLayout","getPortLabelLayout","parseGroup","parsePort","getLabel","getPortPosition","createPosition","setDefault","setDefaults","getPortLabelPosition","initPorts","setSize","currentSize","fixedPoint","imageFixedPoint","atan","setPosition","scaledBBox","currentPosition","parentPosition","translateBy","restrict","translatedPosition","currentAngle","getTerminal","getPort","getPortsPosition","portCenter","fit","setPortContainerMarkup","getDefaultPortContainerMarkup","setPortMarkup","getDefaultPortMarkup","setPortLabelMarkup","getDefaultPortLabelMarkup","getPorts","getPortIndex","getPortsLayoutByGroup","layout","prefixPortPath","getPortProp","removePortProp","setPortProp","removePortAt","portsForRemoval","remainingPorts","updatePortData","processRemovedPort","currentItemsMap","getConnectedEdges","incoming","getTargetPortId","outgoing","getSourcePortId","errors","generatePortId","validatePorts","prevPort","curPort","constructorName","Base","setLabel","removeLabel","bodyAttr","labelAttr","refY","getImageUrlHook","imageUrl","imageWidth","imageHeight","createShape","ignoreMarkup","noText","sourceCell","sourcePort","targetCell","targetPort","isValidId","onLabelsChanged","onVertexsChanged","setTerminal","getTerminalPoint","getTerminalCell","cellId","getTerminalNode","visited","getRouter","removeRouter","setRouter","removeConnector","setConnector","removeStrategy","setStrategy","defaultLabel","getLabels","setLabels","parseLabel","insertLabel","parseStringLabel","label1","label2","getVertexMarkup","setVertexMarkup","getDefaultVertexMarkup","vertice","getDefaultMarkup","getToolMarkup","setToolMarkup","getDefaultToolMarkup","getDoubleToolMarkup","setDoubleToolMarkup","getDefaultDoubleToolMarkup","getArrowheadMarkup","setArrowheadMarkup","getDefaultArrowheadMarkup","applyToPoints","getPolyline","getSourcePoint","getTargetPoint","newParent","getSourceCell","getTargetCell","prevParent","embed","getSourceNode","getTargetNode","getFragmentAncestor","equalTerminals","b1","Edge","formated","EdgeView","NodeView","POINT_ROUNDING","markerCache","sourceDef","targetDef","updateTerminalProperties","isViewMounted","handleAction","renderVertexMarkers","onLabelsChange","renderTools","updateToolsPosition","renderExternalTools","shouldRerenderLabels","renderLabels","updateLabels","updateLabelPositions","previousLabels","pathLength","renderStringMarkup","renderJSONMarkup","renderArrowheadMarkers","labelCache","labelSelectors","normalizeLabelMarkup","parseLabelMarkup","labelNode","getDefaultLabel","customizeLabels","labelMarkup","canLabelMove","hasCustomMarkup","labelAttrs","defaultLabelAttrs","onEdgeLabelRendered","toolMarkup","$container","toolCache","doubleTools","tool2","doubleToolMarkup","tool2Cache","vertexMarkup","arrowheads","arrowheadMarkup","sourceArrowhead","targetArrowhead","partialAttrs","cleanCache","updateConnection","updateConnectionPath","updateArrowheadMarkers","updateTools","rawCount","simplifiedPoints","simplifiedCount","connectionWrap","translateAndAutoOrientArrows","isFragmentDescendantOf","translateConnectionPoints","findAnchors","findRoutePoints","connectionPoints","findConnectionPoints","markerPoints","findMarkerPoints","findPath","firstVertex","lastVertex","findAnchorsOrdered","firstType","secondType","secondPoint","firstAnchor","secondAnchor","firstTerminal","secondTerminal","firstView","secondView","firstMagnet","secondMagnet","firstRef","secondRef","sourceEdgeAnchor","targetEdgeAnchor","edgeAnchor","defaultRouter","router","sourceTerminal","targetTerminal","firstRoutePoint","lastRoutePoint","sourceLine","connectionPointDef","connectionPoint","sourceConnectionPoint","targetConnectionPointDef","targetConnectionPoint","targetLine","getLineWidth","sourceMarkerElem","targetMarkerElem","sourceMarkerPoint","targetMarkerPoint","updateMarkerAttr","defaultPosition","normalizeLabelPosition","labelPosition","getLabelTransformationMatrix","toolsOffset","connectionLength","shortLength","longLength","doubleToolsOffset","nodeId","viewKey","updateTerminalMagnet","getCellById","endView","findView","getMagnetFromEdgeTerminal","sourceArrow","targetArrow","getLabelAt","labelPositionArgs","defaultLabelPositionArgs","localX","localY","localAngle","getDefaultLabelPositionArgs","positionArgs","mergeLabelPositionArgs","getLabelPosition","rorate","dur","repeatCount","calcMode","keyPoints","keyTimes","revert","vToken","isOffsetAbsolute","absoluteOffset","isDistanceRelative","absoluteDistance","isDistanceAbsoluteReverse","reverseDistance","labelPoint","labelOffset","labelDistance","labelOffsetDiff","labelAngle","offsetCoord","isKeepGradient","keepGradient","isEnsureLegibility","ensureLegibility","pathOpt","vertexLength","getClosestPointLength","currentVertex","currentLength","onDblClick","onContextMenu","startVertexDragging","handleVertexRemoving","handleVertexAdding","startArrowheadDragging","notifyUnhandledMouseDown","startEdgeDragging","dragVertex","dragLabel","dragArrowhead","dragEdge","stopVertexDragging","stopLabelDragging","stopArrowheadDragging","stopEdgeDragging","onMouseOver","onMouseOut","onMouseWheel","onCustomEvent","startLabelDragging","moving","isNewEdge","initialMagnet","initialTerminal","fallbackAction","getValidateConnectionArgs","createValidateConnectionArgs","beforeArrowheadDragging","toFront","highlightAvailableMagnets","unhighlightAvailableMagnets","currentMagnet","currentView","findMagnet","validateConnection","getEdgeTerminal","findViewsInArea","prevView","closestView","prevMagnet","closestMagnet","embedding","currentTerminal","previousCell","previousPort","previousView","previousPoint","currentCell","currentPort","previousMagnet","getCells","marked","magnets","availableMagnets","snapArrowhead","arrowheadDragging","snapArrowheadEnd","arrowheadDragged","validateEdge","finishEmbedding","notifyConnectionEvent","fallbackConnection","afterArrowheadDragging","positionAngle","getLabelPositionAngle","getLabelPositionArgs","delegateDragEvents","originLabel","setLabelAt","addVertex","sampleInterval","scalableSelector","rotatableSelector","defaultPortMarkup","defaultPortLabelMarkup","defaultPortContainerMarkup","portsCache","removePorts","cleanPortsCache","renderPorts","updateSize","updateTranslation","updateRotation","getTranslationString","rot","getRotationString","scalableBBox","rotatableBBox","portRoot","portContentElement","portSelectors","portContentSelectors","portElement","getPortsContainer","references","portsGropsByZ","getParsedPorts","getPortElement","appendPorts","updatePorts","createPortElement","renderResult","portLabelElement","portLabelSelectors","onPortRendered","labelContainer","contentContainer","contentSelectors","updatePortGroup","getParsedGroups","metrics","metric","applyPortTransform","initialAngle","portMarkup","portLabelMarkup","startNodeDragging","dragMagnet","dragNode","stopMagnetDragging","stopNodeDragging","onMagnetClick","updateClassName","getMouseMovedCount","clickThreshold","startMagnetDragging","localPoint","findParent","getNodesUnderNode","frontOnly","newCandidateView","prevCandidateView","candidateEmbedView","validateEmbeding","childView","parentView","clearEmbedding","candidateParent","candidateView","previousParent","hasParent","validateMagnet","magnetThreshold","startConnectting","createEdgeFromMagnet","getDefaultEdge","autoScrollGraph","widget","movable","selectedCells","getSelectedCells","getDelegatedView","getRestrictArea","getGridSize","notifyNodeMove","posX","posY","prepareEmbedding","processEmbedding","finalizeEmbedding","scroller","autoScroll","viewName","localIndex","entities","sortable","sortAttr","isSameStore","dryrun","removeCells","unreference","notifyCellEvent","batches","addings","sortOnChangeZ","onCellAdded","onCellRemoved","onReset","onEdgeTerminalChanged","disconnectEdges","disconnectConnectedEdges","removeConnectedEdges","prepareCell","addCells","maxPosition","newId","newCell","getCellsFromCache","cellIds","indirect","collect","isOutgoing","descendants","embedsCache","collectSub","enclosed","isOrigin","isBoundary","getBoundaryNodes","hasLoop","cell1","cell2","successors","matchDistance","predecessors","subgraph","getSubGraph","getNodesInArea","getNodesFromPoint","breadthFirstSearch","depthFirstSearch","getNeighbors","neighbor","directed","resizeCells","fromJSON","resetCells","Model","isModel","addNode","addEdge","contentSelector","registryName","getContent","setContent","updateContent","foreignObject","TextBlock","textAttrs","headerText","bodyText","lateral","xCenter","ySideTop","yCurveTop","ySideBottom","yCurveBottom","knob","getPoints","setPoints","removePoints","pointsToString","Poly","bg","alignItems","justifyContent","wrapValue","wrapAttrs","strokeLinecap","strokeLinejoin","shadow","getHTML","setHTML","removeHTML","HTML","shouldUpdateHTMLComponent","renderHTMLComponent","foContent","$wrap","getHTMLComponent","fo","componentRegistry","changeCount","timestamp","onModelChanged","dt","primer","snapshoot","guarded","preventDefaultDblClick","preventDefaultContextMenu","mouseMovedCount","startPosition","preventDefaultMouseDown","preventDefaultBlankAction","moveThreshold","relatedView","magnetElem","magnetValue","handleMagnetEvent","onMagnetMouseDown","onMagnetDblClick","onMagnetContextMenu","onLabelMouseDown","GraphView","contextmenu","mouseover","DOMMouseScroll","checkScroller","CSSManager","ClassNames","defaultPieOptions","handleOptions","pie","toggles","pieToggle","$pieToggles","applyAttrs","setPieIcons","$handleContainer","triggerHandleAction","toggleState","pieSlice","getHandle","icon","contect","$icons","$imgs","getHandleIdx","$handle","sliceAngle","curRad","nextRad","vSvg","vPath","iconSize","vImg","vText","updateHandleIcon","hasHandle","removeHandle","getHandleElem","newHandle","iconSelected","toggleHandle","deselectHandle","pieSliceImg","isRendered","pieToggleOpened","pieOpended","$element","removeInstances","instanceCache","dic","ensureCache","clearOnBlankMouseDown","stopListening","startListening","onTransform","onTransformed","onKnobMouseDown","onKnobMouseUp","KNOB","knobbing","KNOBBING","ClassName","zoom","updateViewport","graphContainer","$viewport","scalable","zoomHandle","sourceGraph","targetGraphOptions","graphOptions","frozen","rotating","resizing","selecting","snapline","clipboard","history","targetGraph","createGraph","unfreeze","updatePaper","$graphContainer","onSourceGraphTransform","targetGraphTransforming","getScale","resizeGraph","clientToLocalPoint","geometry","startScale","startGeometry","frameId","minScale","maxScale","centerPoint","tolerance","parseFilter","containerClassName","$horizontal","horizontalClassName","$vertical","verticalClassName","captureCursorOffset","snapOnMoving","onBatchStop","filterShapes","filterCells","filterFunction","snapOnResizing","isNodeMovable","snapped","trueDirection","nodeBbox","nodeBBoxRotated","nodeTopLeft","nodeBottomRight","verticalLeft","verticalTop","verticalHeight","horizontalTop","horizontalLeft","horizontalWidth","snapOrigin","relativeDirection","isIgnored","snapBBox","snapTopLeft","snapBottomRight","distances","dWidth","dHeight","quadrant13","newWidth","newHeight","snaplines","newRotatedBBox","delegatedView","cellBBox","nodeCenter","verticalFix","horizontalFix","targetNode","snapCenter","newCenter","newX","newY","snapNode","sharp","hasScroller","resetTimer","Renderer","resetUpdates","resetViews","updateViewsAsync","onSortModel","onModelReseted","onCellZIndexChanged","onCellVisibleChanged","updates","priorities","mountedCids","unmounted","unmountedCids","freezeKey","animationId","hasActiveBatch","SORT_DELAYING_BATCHES","sortViews","removeZPivots","updateDelayingBatches","UPDATE_DELAYING_BATCHES","updateViews","sortDelayingBatches","renderView","FLAG_REMOVE","sorting","FLAG_INSERT","processEdgeOnTerminalVisibleChanged","removeView","getOpposite","flagLabels","scheduleViewUpdate","sourceFlag","targetFlag","currentFlag","onViewUpdated","stats","registerMountedView","updateView","checkView","insertView","batchCount","updatedCount","MIN_PRIORITY","updateViewsBatch","batchSize","UPDATE_BATCH_SIZE","mountedCount","unmountedCount","postponedCount","main","isUnmounted","registerUnmountedView","leftoverFlag","isEdgeTerminalVisible","onViewPostponed","beforeFn","checkout","checkViewImpl","mountedBatchSize","MOUNT_BATCH_SIZE","unmountedBatchSize","progressFn","viewportFn","unmountCount","mountCount","mounting","checkMountedViews","checkUnmountedViews","afterFn","removeViews","createCellView","isExactSorting","sortViewsExact","sortElements","cellA","cellB","z1","zPivots","pivots","neighborZ","currentZ","neighborPivot","addZPivot","backgroundSize","backgroundPosition","optionsCache","backgroundRepeat","quality","HTMLCanvasElement","updateBackgroundImage","updateBackgroundOptions","updateBackgroundColor","drawBackgroundImage","containerClass","pageVisible","pagedClass","$content","contentClass","$background","backgroundClass","backgroundManager","autoResize","onScale","onResize","storeScrollPosition","restoreScrollPosition","onRenderDone","delegateBackgroundEvents","undelegateBackgroundEvents","evts","delegatedHandlers","onBackgroundEvent","undelegateEvent","cachedCenterPoint","updatePageBreak","updateScale","autoResizeOptions","fitTocontentOptions","cachedScrollLeft","cachedScrollTop","cachedClientSize","pageWidth","pageBreak","graphWidth","graphHeight","hasPageBreak","getClientSize","resizeOptions","gridWidth","gridHeight","allowNewOrigin","fitToContent","getFitToContentOptions","contentArea","getContentArea","scrollToPoint","optons","tWidth","tHeight","storeClientSize","visibleCenter","getVisibleArea","positionPoint","getPadding","clientSize","addPadding","restoreClientSize","positionContent","positionCell","positionRect","clientRect","targetRect","rawDiff","scaleGrid","clampScale","fy","beforeManipulation","afterManipulation","viewportArea","scaleContentToFitImpl","zoomToRect","transformOrigin","targetScale","localToBackgroundPoint","onTransitionEnd","transitionClassName","transitionEventName","syncTransition","transitionDelay","transitionTimingFunction","removeTransition","rectangle","MIN_VALUE","PIXEL_SIZE","transitionToPoint","pan","stopPanning","scrollerX","scrollerY","panningClass","pannableClass","minVisibleWidth","minVisibleHeight","depthComparator","boxCount","initHandles","boxClassName","onGraphTransformed","onModelUpdated","onReseted","onCollectionUpdated","onNodePositionChanged","onCellChanged","updateSelectionBoxes","showNodeSelectionBox","allowTranslating","translating","translateSelectedNodes","unselect","prevMap","nextMap","updateContainer","pageToLocal","getCellViewsInArea","hideRubberband","client","following","updateSelectedNodesPosition","notifyBoxEvent","stopSelecting","startTranslating","activeView","getCellViewFromElem","totalBBox","minDx","minDy","maxDx","maxDy","boxesUpdated","$boxes","$selectionContainer","showRubberband","getSelectionOffset","updateContainerPosition","otherOptions","excluded","rubberNode","rubberEdge","getEdgesInArea","findEdgeViewsInArea","getSelectedClassName","removeCellUnSelectedClassName","canShowSelectionBox","rubberband","$selectionContent","boxContent","showEdgeSelectionBox","addCellSelectedClassName","showSelected","createSelectionBox","destroySelectionBox","destroyAllSelectionBoxes","listenCellRemoveEvent","rotated","bboxes","resized","resizeClassName","rotateClassName","$knob","$rotate","$resizes","POSITIONS","NODE_CLS","orthogonalResizing","resizable","rotatable","updateResizerDirections","startHandle","stopHandle","DIRECTIONS","prevShift","prepareResizing","startAction","getTrueDirection","toValidResizeDirection","resizeX","resizeY","restrictedResizing","autoScrollOnResizing","currentBBox","requestedSize","rawWidth","rawHeight","candidateWidth","candidateHeight","allowReverse","reverted","revertedDir","rotateGrid","stopAction","parseOptionGroup","Options","panning","minimap","keyboard","defaultGrid","scaling","highlighting","nodeAvailable","magnetAvailable","multi","dangling","allowLoop","allowNode","allowEdge","allowPort","transforming","orthogonal","restricted","selectCellOnMoved","selectNodeOnMoved","selectEdgeOnMoved","eventTypes","zoomAtMousePosition","edgeLabelMovable","filterId","isDefined","filterUnits","markerUnits","markerOrient","markerId","pathMarker","orient","resolveGrid","patternUnits","patternElem","XMLSerializer","serializeToString","getClientOffset","scrollX","scrollY","getClientMatrix","localToGraphPoint","getPageOffset","localRect","localToGraphRect","graphPoint","clientPoint","graphToLocalPoint","graphRect","pageOffset","graphToLocalRect","ModifierKey","createSnapline","or","and","or1","or2","and1","and2","equal","widgetOptions","pannable","createScroller","preparePanning","onRightMouseDown","allowPanning","startPanning","allowRubberband","isPanning","dataset","unlock","enableAutoResize","disableAutoResize","instanceOptions","createClipboard","deserialize","commonOptions","cut","paste","highlights","onCellHighlight","onCellUnhighlight","resolveHighlighter","highlighterDef","widgets","onNodeMouseUp","onNodeSelected","onNodeUnSelected","isSelectionEnabled","createTransform","viewportTransformString","viewportMatrix","getCTM","getComputedSize","getTranslation","sizeChanged","contentBBox","contentLocalOrigin","getContentBBox","graphToLocal","minScaleX","maxScaleX","minScaleY","maxScaleY","fittingBox","computedSize","currentTranslate","currentScale","newSX","newSY","newOX","newOY","getAllCellsBBox","movedMap","unselectMap","createSelection","onBlankMouseDown","onBlankClick","onCellMouseMove","onCellMouseUp","onBoxMouseDown","startRubberband","rubberbandDisabled","isSelected","startSelecting","setFilter","batchCommands","batchLevel","lastBatchIndex","freezed","validator","Validator","cancelInvalid","undoStack","revertCommand","redoStack","applyCommand","initBatchCommand","storeBatchCommand","eventNames","addCommand","cmds","sortBatchCommands","revertOptionsList","executeCommand","applyOptionsList","isAddEvent","isRemoveEvent","isChangeEvent","ignoreAdd","ignoreRemove","ignoreChange","beforeAddCommand","isModelChange","diffId","modelChange","diffName","createCommand","afterAddCommand","filterBatchCommand","HistoryManager","onCommandAdded","isValidCommand","validation","handoverErr","routes","reservedNames","batchEvents","createMiniMap","mousetrap","createMousetrap","getKeys","isInputEvent","preventScroll","formatkey","formatFn","allowed","isGraphEvent","isEnabledForEvent","cumulatedFactor","mousewheelHandle","allowMouseWheel","startPos","MIN_SAFE_INTEGER","clientToGraphPoint","$pages","createPrintPages","showPrintWindow","sheetSize","getSheetSize","$body","bodyClassName","$detached","$page","styleSheetId","print","pageArea","vSVG","vStage","graphArea","getGraphArea","getPageInfo","getPrintArea","getPageSize","getPageAreas","createPrintPage","updatePrintStyle","sizeCSS","marginUnit","sheetUnit","sheet","$style","poster","columns","pages","pageRatio","graphRatio","fitHorizontal","readyToPrint","rawSVG","clonedSVG","preserveDimensions","copyStyles","raws","clones","styleSheetCount","styleSheetsCopy","defaultComputedStyles","defaultComputedStyle","customStyles","customStyle","stylesheet","cDATASection","createDocument","createCDATASection","beforeSerialize","serializeImages","deferrals","vImage","expanding","rawSize","imgDataCanvas","context2D","getImageData","toSVG","createKnob","getContainer","resizeScroller","updatePageSize","Decorator","nullable","hookName","getNativeValue","getTransformOptions","allowBlank","allowConnectToBlank","candidateTerminal","allowMulti","doValidate","connectedEdges","requestConnectedEdgesUpdate","forcePostponedViewUpdate","getCellView","shouldUpdate","shouldComponentUpdate","Graph","createView","createDefsManager","createCoordManager","createTransformManager","createKnobManager","createHighlightManager","createGridManager","createBackgroundManager","createModel","createRenderer","createClipboardManager","createSnaplineManager","createSelectionManager","createHistoryManager","createScrollerManager","createMiniMapManager","createKeyboard","createMouseWheel","createPrintManager","createFormatManager","createPanningManager","createSizeManager","getRoots","getLeafs","isRoot","isLeaf","isNeighbor","getSuccessors","isSuccessor","getPredecessors","isPredecessor","cloneSubGraph","getShortestPath","updateCellId","setAsync","findViewsFromPoint","getMountedViews","getUnmountedViews","resizePage","getZoom","zoomToFit","getRotation","scaleContentToFit","centerContent","centerCell","pageToLocalRect","pageToLocalPoint","localToPageRect","localToPagePoint","clientToLocalRect","localToClientRect","localToClientPoint","clientToGraphRect","setGridSize","onGraph","isClipboardEnabled","enableClipboard","disableClipboard","isHistoryEnabled","enableHistory","disableHistory","undo","redo","canUndo","canRedo","isKeyboardEnabled","enableKeyboard","disableKeyboard","isMouseWheelEnabled","disableMouseWheel","enableMouseWheel","enablePanning","disablePanning","isPannable","scrollbarPosition","scrollToContent","scrollToCell","transitionToRect","enableSelection","disableSelection","enableMultiple","disableMultiple","isMultipleSelection","enableMultipleSelection","disableMultipleSelection","isSelectionMovable","enableSelectionMovable","disableSelectionMovable","enableRubberband","disableRubberband","isRubberbandEnabled","isStrictRubberband","enableStrictRubberband","disableStrictRubberband","setModifiers","isSnaplineEnabled","disableSnapline","enableSnapline","enableOnResizing","isSnaplineOnResizingEnabled","enableSnaplineOnResizing","disableSnaplineOnResizing","isSharpSnapline","enableSharpSnapline","disableSharpSnapline","toPNG","toJPEG","clearCells","Hook","Keyboard","MouseWheel","BaseManager","DefsManager","GridManager","CoordManager","PrintManager","FormatManager","MiniMapManager","SnaplineManager","ScrollerManager","ClipboardManager","TransformManager","HighlightManager","BackgroundManager","SelectionManager","isGraph","registerNode","registerEdge","registerView","registerAttr","registerGrid","registerFilter","registerNodeTool","registerEdgeTool","registerBackground","registerHighlighter","registerPortLayout","registerPortLabelLayout","registerMarker","registerRouter","registerConnector","registerAnchor","registerEdgeAnchor","registerConnectionPoint","registerConnectionStrategy","registerHTMLComponent","unregisterNode","unregisterEdge","unregisterView","unregisterAttr","unregisterGrid","unregisterFilter","unregisterNodeTool","unregisterEdgeTool","unregisterBackground","unregisterHighlighter","unregisterPortLayout","unregisterPortLabelLayout","unregisterMarker","unregisterRouter","unregisterConnector","unregisterAnchor","unregisterEdgeAnchor","unregisterConnectionPoint","unregisterConnectionStrategy","unregisterHTMLComponent","edgeProps","nodeProps","useLocalStorage","fetch","LOCAL_STORAGE_KEY","halo","startResize","doResize","stopResize","startClone","doClone","stopClone","startLink","doLink","stopLink","startFork","doFork","stopFork","unlink","startRotate","doRotate","stopRotate","tinyThreshold","smallThreshold","loopEdgePreferredSide","loopEdgeWidth","rotateEmbeds","createEdgeConnectedToSource","getMagnet","makeLoopEdge","vertex1","vertex2","centerNodeAtCursor","cloneView","nodeView","fork","rotateStartAngles","clientStartAngle","targetAngle","EdgePreset","removeEdge","directionSwap","getPresets","handleClassName","toggleUnlink","toggleFork","hasEdges","Dnd","GridLayout","draggingGraph","delegateGraphOptions","targetModel","containerParent","sourceNode","prepareDragging","updateNodePosition","draggingView","draggingNode","draggingModel","getDragNode","scaled","clearDragging","delegateView","geometryBBox","draggingBBox","originOffset","updateGraphPosition","snapOffset","embeddingMode","isValidArea","isInsideValidArea","onDropped","onDropInvalid","targetScroller","getDropArea","outter","droppingNode","getDropNode","validateNode","stencil","getMaxDim","getNodesInRow","rowIndex","columnCount","getNodesInColumn","columnIndex","accumulate","graphs","$groups","dnd","onSearch","notFoundText","collapsable","collapsed","renderSearch","globalGraphOptions","stencilGraphOptions","$group","$title","groupTitle","groupContent","graphOptionsInGroup","stencilGraphWidth","stencilGraphHeight","defaultGroupName","searchText","onDragStart","loadGroup","getModel","getGraph","graphPadding","stencilGraphPadding","keyword","isCellMatched","ignoreCase","collapseGroups","expandGroups","toggleGroup","allCollapsed","isGroupCollapsed","expandGroup","collapseGroup","isGroupCollapsable","columnWidth","rowHeight","resizeToFit","centre","marginX","marginY","columnWidths","columnLefts","rowHeights","rowTops","calcHeight","calcWidth","layoutOptions","pg","x6","page_type","registerVueComponent","unregisterVueComponent","getVueComponent","getComponent","setComponent","removeComponent","VueShape","useForeignObject","activeEffectScope","__values","__read","effectScopeStack","EffectScopeImpl","effects","cleanups","cleanup","EffectScope","detached","currentInstanceTracking","withCurrentInstanceTrackingDisabled","defineComponentInstance","getVueConstructor","effect","getCurrentInstance","recordEffectScope","vueDependency","requiredVue","isVue","vueConstructor","currentInstance","getRegisteredVueOrDefault","setCurrentInstance","instanceMapCache","toVue3ComponentInstance","scope_1","bindCurrentScopeToVM","noopFn","getCurrentInstanceForFn","createSlotProxy","slotName","createSymbol","for","RefKey","accessModifiedSet","readonlySet","RefImpl","createRef","isReadonly","isComputed","seal","isRef","reactive","toRef","ssrMockReactivity","mockReactivityDeep","defineAccessControl","set$1","isRaw","isReactive","setupAccessControl","observed","$$state","e_1","mockObserver","e_1_1","return","createObserver","createLifeCycle","lifeCyclehook","mergeFn","wrapHookCall","injectHookOption","vmStateManager","__composition_api_state__","updateTemplateRef","rawBindings","oldRefKeys","setupValue","newKeys","validNewKeys","afterRender","updateVmAttrs","attrBindings","observedData","slotsProxy","parentVNode","curSlots","slotNames","activateCurrentInstance","preVm","srcKey","createSetupContext","setupContext","bindingFunc_1","toRefs","bindingObj_1","bindingValue","copy_1","hasReactiveArrayChild","customReactive","propValue","asVmProperty","initSetup","isVueRegistered","setVueConstructor","Plugin","_vue","VueShapeView","Vue2","renderVueComponent","unmountVueComponent","getComponentContainer","getNode","isRotate","rotateDeg","nodeDeg","panel","filterSN","rotateZ","x6graph","nodeMovable","initGraph","generateVueShape","PvReadOnly","graphWid","renderNode","MiLayoutReadOnly","panels","showLayout","ViewPvPanelsDialog","ViewLayoutDialog","microInverterData","microInverterHistory","plantLayoutData","showMicroInverterList","showLayoutView","showPvPanels","initCount","getMicroInverterData","getPlantLayoutData","computedLayout","pvPanels","panelNum","layoutPreview","bindInverterPanelNum","getMicroInverterHistory","ajaxOneTimeCount","ajaxSuccessCallback","res_layout","layoutId","handleLayout","Layout_Edit_Layout_Delete_desc","viewPvPanels","viewPanelsLayout","Layout_Monitor_Label","Layout_Monitor_Table_PVPanels","Layout_Monitor_Table_LayoutPreview","Layout_Edit_Layout_add_Tips","Add","showDataLoggerList","showCountercurrentBox","dataLoggerData","countercurrentBox","dataLoggerHistory","countercurrentBoxHistory","dataLoggerPage","countercurrentBoxPage","computedDataLoggerData","computedDataLoggerHistory","computedCountercurrentBox","workStatus","installedCapacity","lastOnlineTime","last_online_time","computedCountercurrentBoxHistory","tabDataLoggerList","resetDataLoggerPage","getDataLoggerData","tabDataLoggerHistory","getDataLoggerHistory","tabCountercurrentBox","resetCountercurrentBoxPage","getCountercurrentBox","tabCountercurrentBoxHistory","getCountercurrentBoxHistory","handleDataLoggerPageChange","handleCountercurrentBoxPagePageChange","getPageData","ezWidth","ARCB","arcbWidth","currentDeviceInfo","batteryModuleName","batteryName","batteryModuleSn","batterySN","BatterySn","moduleSN","batteryId","moduelId","DEVICE_TPYE_BATTERY","deleteRequestMap","curParamKey","curApiUrl","moduleNum","batterySn","cancleUpdateInput","Batteryinfo_ModuleNUM","Batteryinfo_ModuleNUM_tip2","showChangeBattery","changeBatteryDialog","newBattery","apiUrlMap","battery_sn","newBatteryModule","submitBatteryModule","newBatteryModuleRef","cancleSubmit","resetModalData","Batteryinfo_Add_Battery_Modules","Batteryinfo_Module_nametip","UpdateBatteryModal","DeleteBatteryModal","ChangeBatteryModal","AddBatteryModule","cusTableTitle","Batteryinfo_Module_Added","activeName","BatteryPage","showUpdateBattery","showDeleteBattery","showAddBatteryModule","computedTableData","handleChange","resetSomeData","Batteryinfo_BatteryModifuy_PCtip","moduleAdded","Batteryinfo_BatteryDELtip1","handleBattery","Batteryinfo_BatteryDELtip2","addBatteryModule","addModuleHandle","handleBatteryPageChange","initList","getBatteryList","pwid","creationDate","batteryModule","Batteryinfo_Add_Battery_Module","DEVICE_TPYE_BATTERY_MODULE","batteryHistoryPage","batteryModulePage","batteryHistoryList","batteryModuleList","computedBatteryHistory","originalBattery","originalSN","newSN","note","replacementDate","computedModuleHistory","originalName","originalSn","createDate","batteryModuleId","handleBatteryModulePageChange","getBatteryReplaceList","getBatteryModuleReplaceList","Batteryinfo_Replacement_battery","Batteryinfo_Replacement_battery_module","CustomTableRow","BatteryReplacement","CustomTableRowRef","BatteryReplacementRef","cardHandleType","nowCardInfo","cardNo","evSnsRead","cardForm","relatedEVs","setDefaultCardOptions","evDefaultOgigin","isDefault","handleEvChargerChange","sns","evDefault","editType","allEVList","EVDetail_Card_Delete_Msg","EVDetail_CardNo_Msg_required","EVDetail_Card_RelatedEV","EVDetail_DeleteCard_Description","devicetype_RFIDCard_description","EVDetail_DefaultCard_settitle","evSetDefault","EVDetail_DefaultCard_deletetip1","EVDetail_DefaultCard_deletetip2","onlineEvList","postData","postStartHandle","computedEvName","closeBtnClick","sendDataStatus","errorList","retryBtnClick","EVDetail_Card_Pop_SavedData","EVDetail_Card_Pop_Msg_SendData","cpt_save_success","saveFailMsg","EVDetail_Card_btn_Close","ActiveRetryOfDialog","EditRFIDCardModal","SendRFIDCardModal","evChargerData","evChargerHistory","EvChargerPage","RFIDCardData","RFIDCardPage","showEvChargerList","showCardHandle","showSendResult","allEvSN","singleSnMultiCards","nowHandleCardInfo","overlimitSns","showOverMaxModal","getEvChargerData","getRFIDCardList","computedEvChargerData","ver","computedEvChargerHistory","computedRFIDCardData","defaultCardObj","arrSn","arrCard","snObj","cardObj","finalData","acc","uniqueSNList","uniqueCards","uniqueCardList","tabEvChargerList","resetEvChargerPage","tabEvChargerHistory","handleEvPageChange","handleCardPageChange","res_card","handleRFIDCard","handleSendData","needSendData","existCard","arraysAreEqual","RFID_EV_Repeat_tip","handleSendSuccess","EditRFIDCardRef","oriArr","curArr","EVDetail_EV_Version","devicetype_RFIDCard","EVDetail_AddCard","EVDetail_Overlimit_Error","showAddDeviceDialog","newDeviceType","isAddAnotherDevice","homeKit_tip_show","deviceTypeMap","determineInputSN","submitInverterInfo","newDeviceDialog","addAnotherDeviceHandle","addNewDeviceHandle","addDataloggerToPlant","device","it_checkcode","checkCode","cancleSubmitInverter","Micro_UploadImage_Tips6","laCheckcode","soc_device_note","add_datalogger_reminder","showAddBatteryDialog","submitBatteryInfo","newBatteryDialog","pwId","Batteryinfo_AddBattery","deviceName","Batteryinfo_Add_batterySNtip","showAutoDetect","cancelDetecting","nextDetecting","noBatteryDetected","detectFinished","completeBtnShow","detectTip","AutoDetect_Detecting","detectImgUrl","detectList","completeDetecting","nowGoAdd","Mirco_New_AutoDetect","Batteryinfo_Module_not_to_add","AutoDetect_Detect_Cancel_button","AutoDetect_Result_Next_button","AutoDetect_Detect_Complete_button","Batteryinfo_Module_add","showDeviceList","deviceShowList","computedList","cancelDeviceList","deleteOneSn","completeDeviceList","Batteryinfo_Add_Autolist","Batteryinfo_Add_Autolist_tip1","AutoDetect_Result_Tips_Name","AutoDetect_Result_Tips_SN","Batteryinfo_Add_Autolist_tip2","AutoDetect_Result_Cancel_button","battery_way_show","AddBatteryForm","AutoDetectBattery","BatteryResultList","addBatteryFormShow","batteryWay","addWayList","Mirco_New_Manually","autoDetectShow","deviceListShow","deviceNowList","cancelBatteryWay","dblHandleBatteryWay","changeBatteryWay","nextBatteryWay","addSuccessHandle","detectHandle","handleDeviceList","Batteryinfo_Batterysuccess","Add_Device_Method_Selection","Batteryinfo_Add_AutoDetect_Note","Batteryinfo_Add_Manually_Note","sendDeviceList","nextDeviceList","goAddDatalogger","goAddManually","AutoDetect_Result_list_title","AutoDetect_Result_Tips","AutoDetect_Result_Tips1","AutoDetect_Result_AddDataloger","AutoDetect_Result_AddManually","fileList","fileUrl","handleRemove","uploadHook","fileSize","fileType","Micro_UploadImage_Tips3","Mirco_New_ImageIdentification_validation","uploadClick","correctList","Mirco_New_ImageIdentification_validation1","checkRecord","errorSnList","correctSnList","errorStr","correctStr","errorCount","successCount","totalRecords","Micro_UploadImage_Tips12","Micro_UploadImage_Tips11","Micro_UploadImage_Tips9","Micro_UploadImage_Tips10","Mirco_New_ImageIdentification_validation2","Micro_UploadImage_Tips2","Micro_UploadImage","Micro_UploadImage_Tips1","Micro_UploadImage_Tips4","detectDevice","dataLoggerSn","AutoDetect_Detect_DataloggerDetect","detectAgain","AutoDetect_Detect_Retry_button","micro_way_show","is_micro_layout","AddDeviceForm","AddAutoDetect","MicroInverterList","MicroImgUpload","addDevieFormShow","microWay","Mirco_New_ImageIdentification","needDetectDatalogger","addByImgShow","finish_add_show","cancelMicroWay","addDeviceHandle","dblHandleMicroWay","changeMicroWay","nextMicroWay","Micro_UploadImage_Tips7","Micro_UploadImage_Tips8","Mirco_New_CheckDuplicate","dataLoggerDevice","sendSn","handleMicroImg","filterDeviceList","addAnotherDevice","laterFinish","nextFinish","goType","Micro_Complete_popup_Next_button","Micro_Complete_popup_description","Micro_Complete_popup_Later_button","devAddShow","pw_type","isMicroLayout","isAddAnotherFlag","typeList","deviceMapList","addMicroInverterShow","SelectdeviceType_Popup_GOODWE_Battery","SelectdeviceType_Popup_Title","dblHandleDeviceType","cancelAddDeviceType","SelectdeviceType_Popup_Cancel_button","nextAddDeviceType","SelectdeviceType_Popup_Next_button","addGwBatteryShow","showScanSelect","scanSelectOptions","scanTitle","scanDeviceByDataLogger","scanDes","scanDeviceByDataLogerTip","scanFlag","arrowUrl","scanDeviceByInv","scanDeviceByInvTip","scanType","showScanningList","scanningLoading","scanInverAddParam","scanList","inverters","environmentDevices","Parallel_Scan_by_inverter_result_to_be_added","fontColor","Parallel_Scan_by_inverter_result_to_be_bound","3","Parallel_Scan_by_inverter_result_Added","cancelAddScanDevice","clearPageData","scanDevice","parallels","parallelInverters","addScanDevice","addScanList","closeSmuggle","isSmuggle","code_100085","code_100086","addDevice","paramAgain","isAllSmuggle","meters","scanDevicePopupTitle","scanDevicePopupTip","Parallel_Scan_by_inverter_tip","NewDevices","Discoverableequipment","pssmInverterName","scanNoDevices","scanInverters","EMI","scanEMI","Scanningnewdevice","Parallel_Scan_by_inverter_result_tip","mainSn","inventerSN","no_device","Parallel_Scan_by_inverter_result_AddBTN","InverterList","MicroDeviceList","DataLoggerList","BatteryList","EvChargerList","GoodweAddDevice","ScanAssociatedDevice","fromPage","getCookie","pw_add","pw_name","bind_parallel","tabsList","setLabelWidth","handleClickAddNewDeviceBtn","scanDeviceRef","handleScanDevice","gdwAddDevice","getPwInfo","resetData","address","updateDevicePopupTitle","updateDevicePopupDesc","updateDevicePopupComfirm","updateDevicePopupCnc","refreshPage","inverterRef","microDeviceRef","dataLoggerRef","batteryRef","evChargerRef","Scanotherdevices","GoodweDeviceDetail","myChartDevice","sortNumber","isSec1000Et","dataNull","dataDevice","device_post_date_type","is_power_income_device","date_value_device","is_date_disabled_device","echart_date_type_device","multiChartsSelected","multiCharts","is_battery_storage_device","tag_name","pssmGenerateAndYield","date_format","clickTimer","drawCycleChart","btnEchartsTapClickDevice","multiChartsItemClick","chart_operate_device","getBatteryDevicePower","getPowerStationPacByDayDevice","getInverterDataByColumn","getBatteryDeviceByColumn","getDeviceGenerationRatio","btnChartClickDevice","deviceDatePicker","hidePicker","picker","resetMultiChartsData","toDataHistory","DataHistoryDate","dateFormatter","sessionStorage","exportDeviceGeneration","imgBase64","exportExcel","getIndicatorListNew","indicatorList","target_key","target_name","firItem","output","viewFiled","showDeviceBarCharts","showLineChartsPacDevice","pac","showLineChartsColumn","column1","meter","showBatteryDevicePowerChart","resetCurveDevice","linesMap","phase_ac_power","PVOfGraphForInverter","lineColor","battery2","PBattery2","soC2","SOC2","gensetPower","PCurve_Power_GensetPower","gensetPowerR","PCurve_Power_GensetPhaseR","gensetPowerS","PCurve_Power_GensetPhaseS","gensetPowerT","PCurve_Power_GensetPhaseT","dataLegend","seriesData","xAixLengthArr","yMax","yMin","itemGap","onZero","nameLocation","nameTextStyle","yData1Max","yData1Min","leftAxisMax","leftAxisRefer","denoLeft","unitLeft","legendName","power_1","areaStyle","showSymbol","symbolSize","yDataMax","thisMax","_level","yAxisNameText","showDeviceChartByColumn","dataVoltage","dataCurrent","column2","column3","Generation","currency","generationIncome","PCurve_Gen_Genset","genset","axisValue","barBorderRadius","getStatement","qry_key","bpsReg","is_showOutput","system_output","pssmDateModeDay","pssmDateModeMonth","pssmDateModeYear","faultRefreshNum","socListPw","htModel","showHt","topIndex","faultMessage","socList","status0","status2","status3","listItems","dict","showBatteryDetail","odm","sendMessage","up","down","showDetailCurve","curShow","showDetailData","power_calc_tip","eday","etotal","ibattery1","vbattery1","BatteryPowerOfPlantMonitor","daily_output","total_output","batterySOC","DeviceParameter_SOC","gridConnStatus","pssmCurve","pssmData","InverterMonitor","allNodes","preIndex","regStr","TransReplace","GetDeviceGenerationRatio","device_sn","GetPowerStationPacByDayDevice","GetBatteryDevicePower","colorByTextKey","secondTime","oneTime","GoodweDeviceChart","cures","checkedValue","pw_info","choose","submitCure","reload","cancle","show_homekit","bannerList","setCure","myCharts","Swiper","navigation","nextEl","pagination","clickable","chartMsg","chartdate","chartNum","pssmSubmit","GoodweHomekitChart","stationList","selectedStation","originSelectedStation","record_count","renderStationList","findElement","_device","deviceIsInList","device_choice_lt6","selectedStationList","selectedDevice","setParentDeviceList","removeDevice","getSearchTip","handleClickClear","handleClickSearch","handleSelectSearchItem","getStationList","canLoadMore","loadMore","sid","computedStationList","change_type","change_num","pssmInverter","power_station_placeholder","cpt_select_plant","old_device","changeType","cpt_already_select_location","cpt_cancel","GoodweInverterSelect","secList","monitors","groupKey","foreColor","valKey","GoodweSec","meterList","changeCarousel","mt_operation_data","operation","spwer_index","setActive","GoodweMeterInfo","AsEvent","PanelBase","hs","getDomAbsoluteOffset","topOffset","domLeft","domTop","domWidth","domHeight","_destroy","inheritAsEvent","baseCls","clsPrototype","BaseCls","createPanelBackground","_panelBackgrounds","createPanelImage","sprite","_panels","createPanelText","_panelTexts","createPanelBorder","_panelBorders","createPanelType","isDragging","PanelContainer","tooltipHandle","offsetImmediate","_clear","zoomIn","maxZoom","invokeZoom","_showPwText","zoomOut","minZoom","setConfig","configs","_getPanelBoundingRect","_setSingleConfig","_configs","getConfigById","setZoom","updateData","MP","_panelBackground","_panelText","panelBorder","value2color","_getInvalidPanels","getOptimizerColor","_currentConfig","_selectedBorders","_createTooltip","_bindEvent","_panelBoundingRect","_bindPanelMouseoverEvent","_clearBorders","Tigo_module_MaxoutputP","_showSamePanel","cnf","Inherit","PanelControl","allowAllTimes","value2time","time2value","isInit","_normalizeDataset","upPoints","downPoints","eachPointInDay","maxValues","timeData","upChart","downChart","bar","_bindBarMoveEvent","maxTimeValue","setTime","_processChanged","nextTime","prevTime","lastData","isBarDragging","dragOffset","pox","dragPosition","convertValue","transTime","zoomin","timespan","nexttime","zoomout","prevtime","totalPower","mapData","setSn","setConfigData","getDefaultData","lastDate","computedTime","dateValue","initChartData","postNum","updateChartData","showSamePanel","activeIndex","getEmptySN","clearSamePanel","plantId","pid","Tigo_module_totalP","zoomInDisabled","zoomOutDisabled","pickerOption","prevBtnDisabled","nextBtnDisabled","gmtms","getTimezoneOffset","gmtTime","showTable","timeValue","originData","tigoConfig","activeSN","defaultOrders","snArr","inverterNum","inverternum","getTigoSN","getTableData","setTableData","Alarms_all","GoodweTigo","GoodweTigoTable","drawMaker","AMap","Pixel","pw_address","inputBgColor","searchValue","searchListHandle","infoName","infoAddress","citycode","districtcode","lng","lat","autocomplete","geolocation","geocoder","showCityList","showMap","cityList","isDraw","initPage","updateAddress","getAddress","regeocode","addressComponent","province","township","formattedAddress","getAddressIsTaiwan","nameDom","closeMap","tips","itemClickMark","district","submitAddress","getAllOverlays","xyx_hide","GoodweMap","chart","batteryDetail","batteryIndicators","batterySoc","warnBMS","Power","charge_current_limit","chargeClimitBMS","discharge_current_limit","dischargeClimitBMS","SOH","soh","bms_ver","firmware_version","verFB","GoodwePsBatteryCure","isEnter","accept","clearNumber","attatchmentClick","fileChange","files","fcFilesizeTip","jsonArr","onloadend","ext","readAsBinaryString","clearFile","innerStr","GdwAttachment","isSelectedAll","checkedList","clearNodeId","clearNodeArr","excelData","snList","import","checksLength","treeData","seletedNodes","defaultProps","isUp","tableLoading","dataOptionload","statementParam","formatTime","formatDay","filterPath","getExcelData","data1","fcBatchTip","clearSN","snItem","handleOnlyOneSn","inputFinish","handleCheckChange","indeterminate","getCheckedNodes","setCheckedKeys","submitImportExcel","checkDataTypeBySn","fcSNrequired","clearItem","clearNode","getCheckedKeys","changeDataType","checkedItem","cloneArr","checkClicked","checkedNodes","checkedKeys","halfCheckedNodes","halfCheckedKeys","selectAll","setCheckedNodes","setChecksLength","paramSN","fcTimecheck","fcItemrequired","service_area","fcSNValidTip","serialNo","datatype","inverter","fcSN","fcBatchSn","fcTime","fcDataType","fcLVGEN2au","fcLowV","fcHighVBattery","fcItems","fcSelAll","fcClear","HighSpeedItem_Select_All","fcGendata","fcCancel","fcOK","fcUpload","fcTemplate","importClearNumber","fcFileupload","fcRec","fc7DTip","fctitTime","fcExTIme","expired_time","fcAttach","fcDone","fcInprogress","onCarousel","FcasData","evChargeData","stationname","errMessage","evchargerErrorMessage","alertMessageList","createCarInfoNode","createChargeInfoNode","avatar","group1","createCarNode","createEmptyNode","createStatusNode","addEdges","lineOption","strokeDasharray","noArrow","initGragh","edgeMovable","sendToken","changeTime","getStatus","StatusOfMonitorList_Fault","evchargerStatus","car","runTimer2","trigger2","currentChargePower","chargeCurrent","EVCharger_Info_MaxCurrent","maxChargeCurrent","chargingMode","EVCharger_Info_SWVersion","softWareVer","morePriceSetting","GoodweEvCharge","flowData","isMoreBettery","isParallel","computedPercent","batteries","isMain","showBattery","getSoc","batterys","sec","nodeData","parallelData","isApp","GoodwePowerBatteryItem","graphRefs","layoutXoffset","originTipsY","showBigDialog","judgeSecondOffset","addGraphNode","firYSet","secondCount","needShort","currentConfig","firXSet","mainInverters","secondaryInverters","wrapFlag","isWrap","hideTips","registeEvent","GoodwePowerFlowTooltip","PV","parallelTotal","GoodweParallelDetail","aloneMachine","storageDevice","gridDevice","devices","is_store","sec_sn","pv_total","Parallel_PV_Grid_inverter","pv_grid","Parallel_PV_Storage_inverter","pv_store","mixedParallelTotal","isBigScreen","GoodweFlowPvBattery","showDetail","firstShowDetail","lineConfig","lineOffConfig","powerEmpty","paintNode","powerFlowDetail","linePvConfig","hasGenset","addMoveNode","gridGensetStatus","pvTextY","pvArrowLong","attributeType","attributeName","registerIcon","registerNewIcon","registerEvent","GoodweFlowPvNoBattery","isMixed","plant_thrid_ems_control_tip","GoodwePowerFlow","returnBtn","navStyle","intervalBoxStyle","setHead","returnArrow","GoodweAppHead","clicked","DrawerSelect","seletedThridParty","checkList","getSelectItem","Add3rdpartt_Label_3rdParty","PlantEdit_Title_3rdParty","AddThirdParty","currentComponent","getUrlParam","MobilePage","getNodePoint","xcenter","ycenter","originPoint","transFormPoint","getIsCollision","selectedNode","isCollision","otherNodes","selectNodePoint","pBox","isOverlapX","isOverlapY","collisions","computedRoteDeg","Addon","editName","ifMaxScale","ifMinScale","choseDegIndex","microInverters","pvData","clickIndex","vueNodeObj","plantName","Layout_Edit_LayoutTitle","delPanelIds","showPvLoading","AddMicroInverter","initDnd","initGraphFunc","addStationLayout","editStationLayout","getMicroInverters","actualPanelNum","renderLayoutAdd","istrNum","layout_id","getStationLayout","postPromise","formatMicroInverters","renderPanels","mi","findVueShapeNodes","mpptId","istrId","PhotovoltaicPanel","getNodeSn","undoData","setUndoStack","addMicroInverter","microInvertersNew","miSns","delMicroInverter","Layout_Edit_Layout_Delete_Micro_Tips_Details","clearData","selectMicroInverter","mouseDown","startDrag","canBind","Layout_Edit_Tips_maxbind","chooseIndex","intervalObjs","collision","intervals","Layout_Edit_Tip_bindduplicatte","names","arrs","mpptArrc","arrNew","createCustomNode","unbindInverterSn","unBind","saveGraph","findNewNodes","Layout_Edit_Tips_overlap","getDelPanelIds","userId","operate_error","addPanel","delePanel","Layout_Edit_Layout_Delete_PV_Tips_Details","rotateNode","originPosition","refreshGraph","zoomUpGraph","zoomNum","zoomTo","zoomDownGraph","undoGraph","redoGraph","isCanUnbind","delPv","addPv","Layout_Edit_Microinverter","Layout_Edit_AddMicro","Layout_Edit_ToolBar_Undo_Tips","Layout_Edit_ToolBar_Redo_Tips","Layout_Edit_ToolBar_AddPV_Tips","Layout_Edit_ToolBar_Turnto_Tips","Layout_Edit_ToolBar_Unbind_Tips","Layout_Edit_ToolBar_Delete_Tips","Layout_Edit_ToolBar_Save_Tips","Layout_Edit_ToolBar_Zoomin_Tips","Layout_Edit_ToolBar_Zoomout_Tips","guides","Layout_Edit_OperationGuide_Title","MiOperationGuide","handleSave","microInverterContainer","hrefOtherPage","Layout_Monitor_Edit_Title","Layout_Edit_Layout_Complete_Button","Layout_Edit_Layout_Cancel_Button","MicroInverterLayout","filterText","filterNode","Layout_View_SNCheck","MicroInverterTree","timeWidth","oneMinWid","dateDisabled","drag","setTimeValue","changeDateByStep","$d","setDateValue","moveLeft","timeStr","moveRight","mins","minMinutes","maxMinutes","yu","isLeft","timeInterval","initTimeControl","onmousedown","onmousemove","moveX","timeArr","onmouseup","getCurrentIndex","isRightBtnDisabled","cpt_please_select_date","filterPoint","sendPanel","PvMonit","getPanel","pointData","returnDetail","go","getLayoutIdByStationId","getTreeData","getFormatTreeData","dataloggerTrees","formatTreeData","inverterTrees","panelSn","getPanelsPoint","timspan","time_span","setPanelPoint","pointDate","panelData","showRealData","timeControl","showHistoryData","getPanelsData","getTimeWidth","minnutes","getLocalDateTime","PVmonitor_Label","Layout_View_RealTime_Label","Layout_View_Historical_Label","PVMonitoring","STATUS_TEXT_MAP","STATUS_COLOR_MAP","judgeDecimalDigit","optionsValueText","secondList","finalFront","translate_key","controlType","currentItem","safeOptions","rangeInfo","FIELD_TYPE_SELECT","FIELD_TYPE_INPUT_NUMBER","FIELD_TYPE_SELECT_SAFE","selectValue","numberValue","safeValue","cumputedItem","handleSelect","handleBlurNum","numValue","rangeArr","inputNum","isIn","minFlag","maxFlag","isInRange","numStr","handleChangeSafe","WorkMode_745_PleaseSelect","mark","settingData","modalTitle","safeDataOptions","ControlColumn","configSnData","rangInfo","dataFinished","currentSettingPage","getParamDataBySn","paramOptions","searchSN","inverterSNList","configItemId","handleSnChange","setValue","setItemValue","configItems","tipFir","str_SettingTips","percentNum","RemoteSetting_Mirco_Range_title","Number_precision","maName","inverterSN","RemoteSetting_Mirco_CurrentSetting_title","RemoteSetting_Mirco_SettingValue_title","RemoteSetting_Mirco_SettingValue_Opeation","RemoteSetting_Mirco_Set","allTreeNodes","checkAll","treeRef","handleCheckAllChange","showMore","currentForm","currentSelect","currentNumber","currentSafe","unitFlag","sendValueMap","computedRowItem","setCurrentParam","control_type","formKey","viewMoreSetting","dataInitHandle","gain","resArr","rangeStr","fixNum","minSymbol","maxSymbol","minStr","maxStr","nextItem","STATUS_TEXT_SETTING","STATUS_TEXT_SUCCESS","STATUS_TEXT_FAILED","recordPage","computedRecord","parameter_translate_key","handleValueText","getRecordList","resetItemValue","recordId","SettingRecord_check_tips","parErr","option_translate_key","Micro_SettingRecord_OperationTime","operationTime","Micro_SettingRecord_SN","RemoteSetting_Mirco_Parameter_title","Micro_SettingRecord_Result","Reset","CurrentSettingModal","InverterListTreeView","RemoteSettingItem","SettingRecordTable","FIRST_TAB_REMOTE_SETTING","FIRST_TAB_SETTING_RECORD","firstTabValue","dialogShow","settingThList","flexVal","allRemoteCols","currentSettingItem","singleSetTitle","needHandleSn","fullLoading","remoteNoDataTipStr","RemoteSetting_Mirco_checkTips","cumputedReCols","undateCurrentSetting","getAllRemoteCols","Remote_reset","getSafeDataOptions","Remote_refresh_tips1","handleSetting","changePageCon","loadSuccess","handleViewMore","continent","countrys","grandChild","safecountry","safecode","Micro_RemoteSetting_Label","Micro_SettingRecord_Label","flex","settingItem","settingChild","dialogShowChange","RemoteControl","sliderWidth","sliderHeight","DragVerify","verified","onSuccess","GoodweSliderCaptcha"],"mappings":"oBACE,IAAIA,EAAmB,GAGvB,SAASC,EAAoBC,GAG5B,GAAGF,EAAiBE,GACnB,OAAOF,EAAiBE,GAAUC,QAGnC,IAAIC,EAASJ,EAAiBE,GAAY,CACzCG,EAAGH,EACHI,GAAG,EACHH,QAAS,IAUV,OANAI,EAAQL,GAAUM,KAAKJ,EAAOD,QAASC,EAAQA,EAAOD,QAASF,GAG/DG,EAAOE,GAAI,EAGJF,EAAOD,QA0Df,OArDAF,EAAoBQ,EAAIF,EAGxBN,EAAoBS,EAAIV,EAGxBC,EAAoBU,EAAI,SAASR,EAASS,EAAMC,GAC3CZ,EAAoBa,EAAEX,EAASS,IAClCG,OAAOC,eAAeb,EAASS,EAAM,CAAEK,YAAY,EAAMC,IAAKL,KAKhEZ,EAAoBkB,EAAI,SAAShB,GACX,oBAAXiB,QAA0BA,OAAOC,aAC1CN,OAAOC,eAAeb,EAASiB,OAAOC,YAAa,CAAEC,MAAO,WAE7DP,OAAOC,eAAeb,EAAS,aAAc,CAAEmB,OAAO,KAQvDrB,EAAoBsB,EAAI,SAASD,EAAOE,GAEvC,GADU,EAAPA,IAAUF,EAAQrB,EAAoBqB,IAC/B,EAAPE,EAAU,OAAOF,EACpB,GAAW,EAAPE,GAA8B,iBAAVF,GAAsBA,GAASA,EAAMG,WAAY,OAAOH,EAChF,IAAII,EAAKX,OAAOY,OAAO,MAGvB,GAFA1B,EAAoBkB,EAAEO,GACtBX,OAAOC,eAAeU,EAAI,UAAW,CAAET,YAAY,EAAMK,MAAOA,IACtD,EAAPE,GAA4B,iBAATF,EAAmB,IAAI,IAAIM,KAAON,EAAOrB,EAAoBU,EAAEe,EAAIE,EAAK,SAASA,GAAO,OAAON,EAAMM,IAAQC,KAAK,KAAMD,IAC9I,OAAOF,GAIRzB,EAAoB6B,EAAI,SAAS1B,GAChC,IAAIS,EAAST,GAAUA,EAAOqB,WAC7B,WAAwB,OAAOrB,EAAgB,SAC/C,WAA8B,OAAOA,GAEtC,OADAH,EAAoBU,EAAEE,EAAQ,IAAKA,GAC5BA,GAIRZ,EAAoBa,EAAI,SAASiB,EAAQC,GAAY,OAAOjB,OAAOkB,UAAUC,eAAe1B,KAAKuB,EAAQC,IAGzG/B,EAAoBkC,EAAI,GAIjBlC,EAAoBA,EAAoBmC,EAAI,K,+BC5EtC,SAASC,EACtBC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,GAGA,IAqBIC,EArBAC,EAAmC,mBAAlBT,EACjBA,EAAcS,QACdT,EAsDJ,GAnDIC,IACFQ,EAAQR,OAASA,EACjBQ,EAAQP,gBAAkBA,EAC1BO,EAAQC,WAAY,GAIlBP,IACFM,EAAQE,YAAa,GAInBN,IACFI,EAAQG,SAAW,UAAYP,GAI7BC,GACFE,EAAO,SAAUK,IAEfA,EACEA,GACCC,KAAKC,QAAUD,KAAKC,OAAOC,YAC3BF,KAAKG,QAAUH,KAAKG,OAAOF,QAAUD,KAAKG,OAAOF,OAAOC,aAEZ,oBAAxBE,sBACrBL,EAAUK,qBAGRd,GACFA,EAAalC,KAAK4C,KAAMD,GAGtBA,GAAWA,EAAQM,uBACrBN,EAAQM,sBAAsBC,IAAId,IAKtCG,EAAQY,aAAeb,GACdJ,IACTI,EAAOD,EACH,WACAH,EAAalC,KACX4C,MACCL,EAAQE,WAAaG,KAAKG,OAASH,MAAMQ,MAAMC,SAASC,aAG3DpB,GAGFI,EACF,GAAIC,EAAQE,WAAY,CAGtBF,EAAQgB,cAAgBjB,EAExB,IAAIkB,EAAiBjB,EAAQR,OAC7BQ,EAAQR,OAAS,SAAmC0B,EAAGd,GAErD,OADAL,EAAKtC,KAAK2C,GACHa,EAAeC,EAAGd,QAEtB,CAEL,IAAIe,EAAWnB,EAAQoB,aACvBpB,EAAQoB,aAAeD,EACnB,GAAGE,OAAOF,EAAUpB,GACpB,CAACA,GAIT,MAAO,CACL3C,QAASmC,EACTS,QAASA,GA/Fb,mC,6BCAA,8CA8Be,IAjBf,SAAsBzB,GAGpB,MAAoB,mBAATA,EACFA,EAEI,MAATA,EACK,IAEW,iBAATA,EACF,YAAQA,GACX,YAAoBA,EAAM,GAAIA,EAAM,IACpC,YAAYA,GAEX,YAASA,K,6BCJlB,IAAI+C,EAAUC,MAAMD,QAEL,O,6BCzBf,YAmCe,IAPf,SAAmB/C,GACjB,IAAIiD,EAAS,YAASjD,GAClBkD,EAAYD,EAAS,EAEzB,OAAOA,GAAWA,EAAUC,EAAYD,EAASC,EAAYD,EAAU,I,6BChCzE,8BAgBe,IAJf,SAAkBE,EAAMC,GACtB,OAAO,YAAY,YAASD,EAAMC,EAAO,KAAWD,EAAO,M,6BCb7D,YA2Be,IAJf,SAAkBnD,GAChB,OAAgB,MAATA,EAAgB,GAAK,YAAaA,K,6BCM5B,IALf,SAAkBA,GAChB,IAAIqD,SAAcrD,EAClB,OAAgB,MAATA,IAA0B,UAARqD,GAA4B,YAARA,K,6BCChC,IAJf,SAAsBrD,GACpB,OAAgB,MAATA,GAAiC,iBAATA,I,6BCLlB,IAXf,SAAkBsD,EAAOC,GAKvB,IAJA,IAAIC,GAAS,EACTC,EAAkB,MAATH,EAAgB,EAAIA,EAAMG,OACnCR,EAASD,MAAMS,KAEVD,EAAQC,GACfR,EAAOO,GAASD,EAASD,EAAME,GAAQA,EAAOF,GAEhD,OAAOL,I,6BCjBT,8BAoCe,IAJf,SAAcxC,GACZ,OAAO,YAAYA,GAAU,YAAcA,GAAU,YAASA,K,6BCjChE,mBAgCe,IAJf,SAA2BT,GACzB,OAAO,YAAaA,IAAU,YAAYA,K,6BC7B5C,aAGI0D,EAA0B,iBAARC,MAAoBA,MAAQA,KAAKlE,SAAWA,QAAUkE,KAGxEC,EAAO,KAAcF,GAAYG,SAAS,cAATA,GAEtB,O,gECHXC,EAAmB,IAAS,IAAOC,wBAAqBC,EAc7C,MALf,SAAuBhE,GACrB,OAAO,OAAA+C,EAAA,GAAQ/C,IAAU,OAAAiE,EAAA,GAAYjE,OAChC8D,GAAoB9D,GAASA,EAAM8D,KCqB3B,IAvBf,SAASI,EAAYZ,EAAOa,EAAOC,EAAWC,EAAUpB,GACtD,IAAIO,GAAS,EACTC,EAASH,EAAMG,OAKnB,IAHAW,IAAcA,EAAY,GAC1BnB,IAAWA,EAAS,MAEXO,EAAQC,GAAQ,CACvB,IAAIzD,EAAQsD,EAAME,GACdW,EAAQ,GAAKC,EAAUpE,GACrBmE,EAAQ,EAEVD,EAAYlE,EAAOmE,EAAQ,EAAGC,EAAWC,EAAUpB,GAEnD,YAAUA,EAAQjD,GAEVqE,IACVpB,EAAOA,EAAOQ,QAAUzD,GAG5B,OAAOiD,I,6BCdM,IAJf,SAAkBjD,GAChB,OAAOA,I,6BCjBT,oBAgCe,IAJf,SAAqBA,GACnB,OAAgB,MAATA,GAAiB,YAASA,EAAMyD,UAAY,YAAWzD,K,yDCVjD,MAVf,SAAsBS,GACpB,IAAIwC,EAAS,GACb,GAAc,MAAVxC,EACF,IAAK,IAAIH,KAAOb,OAAOgB,GACrBwC,EAAOqB,KAAKhE,GAGhB,OAAO2C,GCRL,EAHcxD,OAAOkB,UAGQC,eAwBlB,MAff,SAAoBH,GAClB,IAAK,OAAA8D,EAAA,GAAS9D,GACZ,OAAO,EAAaA,GAEtB,IAAI+D,EAAU,YAAY/D,GACtBwC,EAAS,GAEb,IAAK,IAAI3C,KAAOG,GACD,eAAPH,IAAyBkE,GAAY,EAAetF,KAAKuB,EAAQH,KACrE2C,EAAOqB,KAAKhE,GAGhB,OAAO2C,G,QCEM,IAJf,SAAgBxC,GACd,OAAO,OAAAgE,EAAA,GAAYhE,GAAU,YAAcA,GAAQ,GAAQ,EAAWA,K,gBC5BxE;;;;;;;;;;;;;IAaA,SAAYiE,EAAQC,GAEnB,aAE6D,iBAAnB7F,EAAOD,QAShDC,EAAOD,QAAU6F,EAAOE,SACvBD,EAASD,GAAQ,GACjB,SAAUG,GACT,IAAMA,EAAED,SACP,MAAM,IAAIE,MAAO,4CAElB,OAAOH,EAASE,IAGlBF,EAASD,GAtBX,CA0BuB,oBAAXK,OAAyBA,OAASjD,MAAM,SAAUiD,EAAQC,GAMtE,aAEA,IAAIC,EAAM,GAENC,EAAWzF,OAAO0F,eAElBC,EAAQH,EAAIG,MAEZC,EAAOJ,EAAII,KAAO,SAAU/B,GAC/B,OAAO2B,EAAII,KAAKnG,KAAMoE,IACnB,SAAUA,GACb,OAAO2B,EAAInC,OAAOwC,MAAO,GAAIhC,IAI1BgB,EAAOW,EAAIX,KAEXiB,EAAUN,EAAIM,QAEdC,EAAa,GAEbC,EAAWD,EAAWC,SAEtBC,EAASF,EAAW5E,eAEpB+E,EAAaD,EAAOD,SAEpBG,EAAuBD,EAAWzG,KAAMO,QAExCoG,EAAU,GAEVC,EAAa,SAAqBC,GASpC,MAAsB,mBAARA,GAA8C,iBAAjBA,EAAIC,UAC1B,mBAAbD,EAAIE,MAIVC,EAAW,SAAmBH,GAChC,OAAc,MAAPA,GAAeA,IAAQA,EAAIhB,QAIhCH,EAAWG,EAAOH,SAIjBuB,EAA4B,CAC/B9C,MAAM,EACN+C,KAAK,EACLC,OAAO,EACPC,UAAU,GAGX,SAASC,EAASC,EAAMC,EAAMC,GAG7B,IAAI3H,EAAG4H,EACNC,GAHDF,EAAMA,GAAO9B,GAGCiC,cAAe,UAG7B,GADAD,EAAOE,KAAON,EACTC,EACJ,IAAM1H,KAAKoH,GAYVQ,EAAMF,EAAM1H,IAAO0H,EAAKM,cAAgBN,EAAKM,aAAchI,KAE1D6H,EAAOI,aAAcjI,EAAG4H,GAI3BD,EAAIO,KAAKC,YAAaN,GAASO,WAAWC,YAAaR,GAIzD,SAASS,EAAQtB,GAChB,OAAY,MAAPA,EACGA,EAAM,GAIQ,iBAARA,GAAmC,mBAARA,EACxCP,EAAYC,EAASvG,KAAM6G,KAAW,gBAC/BA,EAQT,IAICuB,EAAS,SAAUC,EAAU1F,GAI5B,OAAO,IAAIyF,EAAOE,GAAGC,KAAMF,EAAU1F,IA0VvC,SAAS4C,EAAasB,GAMrB,IAAItC,IAAWsC,GAAO,WAAYA,GAAOA,EAAItC,OAC5CJ,EAAOgE,EAAQtB,GAEhB,OAAKD,EAAYC,KAASG,EAAUH,KAIpB,UAAT1C,GAA+B,IAAXI,GACR,iBAAXA,GAAuBA,EAAS,GAAOA,EAAS,KAAOsC,GArWhEuB,EAAOE,GAAKF,EAAO3G,UAAY,CAG9B+G,OAbU,QAeVC,YAAaL,EAGb7D,OAAQ,EAERmE,QAAS,WACR,OAAOxC,EAAMlG,KAAM4C,OAKpBlC,IAAK,SAAUiI,GAGd,OAAY,MAAPA,EACGzC,EAAMlG,KAAM4C,MAIb+F,EAAM,EAAI/F,KAAM+F,EAAM/F,KAAK2B,QAAW3B,KAAM+F,IAKpDC,UAAW,SAAUC,GAGpB,IAAIC,EAAMV,EAAOW,MAAOnG,KAAK6F,cAAeI,GAM5C,OAHAC,EAAIE,WAAapG,KAGVkG,GAIRG,KAAM,SAAUC,GACf,OAAOd,EAAOa,KAAMrG,KAAMsG,IAG3BC,IAAK,SAAUD,GACd,OAAOtG,KAAKgG,UAAWR,EAAOe,IAAKvG,MAAM,SAAUwG,EAAMvJ,GACxD,OAAOqJ,EAASlJ,KAAMoJ,EAAMvJ,EAAGuJ,QAIjClD,MAAO,WACN,OAAOtD,KAAKgG,UAAW1C,EAAME,MAAOxD,KAAMyG,aAG3CC,MAAO,WACN,OAAO1G,KAAK2G,GAAI,IAGjBC,KAAM,WACL,OAAO5G,KAAK2G,IAAK,IAGlBE,KAAM,WACL,OAAO7G,KAAKgG,UAAWR,EAAOsB,KAAM9G,MAAM,SAAU+G,EAAO9J,GAC1D,OAASA,EAAI,GAAM,OAIrB+J,IAAK,WACJ,OAAOhH,KAAKgG,UAAWR,EAAOsB,KAAM9G,MAAM,SAAU+G,EAAO9J,GAC1D,OAAOA,EAAI,OAIb0J,GAAI,SAAU1J,GACb,IAAIgK,EAAMjH,KAAK2B,OACduF,GAAKjK,GAAMA,EAAI,EAAIgK,EAAM,GAC1B,OAAOjH,KAAKgG,UAAWkB,GAAK,GAAKA,EAAID,EAAM,CAAEjH,KAAMkH,IAAQ,KAG5DC,IAAK,WACJ,OAAOnH,KAAKoG,YAAcpG,KAAK6F,eAKhCrD,KAAMA,EACN4E,KAAMjE,EAAIiE,KACVC,OAAQlE,EAAIkE,QAGb7B,EAAO8B,OAAS9B,EAAOE,GAAG4B,OAAS,WAClC,IAAI3H,EAASnC,EAAM8G,EAAKiD,EAAMC,EAAaC,EAC1CC,EAASjB,UAAW,IAAO,GAC3BxJ,EAAI,EACJ0E,EAAS8E,UAAU9E,OACnBgG,GAAO,EAsBR,IAnBuB,kBAAXD,IACXC,EAAOD,EAGPA,EAASjB,UAAWxJ,IAAO,GAC3BA,KAIsB,iBAAXyK,GAAwB1D,EAAY0D,KAC/CA,EAAS,IAILzK,IAAM0E,IACV+F,EAAS1H,KACT/C,KAGOA,EAAI0E,EAAQ1E,IAGnB,GAAqC,OAA9B0C,EAAU8G,UAAWxJ,IAG3B,IAAMO,KAAQmC,EACb4H,EAAO5H,EAASnC,GAIF,cAATA,GAAwBkK,IAAWH,IAKnCI,GAAQJ,IAAU/B,EAAOoC,cAAeL,KAC1CC,EAActG,MAAMD,QAASsG,MAC/BjD,EAAMoD,EAAQlK,GAIbiK,EADID,IAAgBtG,MAAMD,QAASqD,GAC3B,GACIkD,GAAgBhC,EAAOoC,cAAetD,GAG1CA,EAFA,GAITkD,GAAc,EAGdE,EAAQlK,GAASgI,EAAO8B,OAAQK,EAAMF,EAAOF,SAGzBrF,IAATqF,IACXG,EAAQlK,GAAS+J,IAOrB,OAAOG,GAGRlC,EAAO8B,OAAQ,CAGdO,QAAS,UAlLC,QAkLsBC,KAAKC,UAAWC,QAAS,MAAO,IAGhEC,SAAS,EAETC,MAAO,SAAUC,GAChB,MAAM,IAAInF,MAAOmF,IAGlBC,KAAM,aAENR,cAAe,SAAU3D,GACxB,IAAIoE,EAAOC,EAIX,SAAMrE,GAAgC,oBAAzBN,EAASvG,KAAM6G,QAI5BoE,EAAQjF,EAAUa,KASK,mBADvBqE,EAAO1E,EAAOxG,KAAMiL,EAAO,gBAAmBA,EAAMxC,cACfhC,EAAWzG,KAAMkL,KAAWxE,IAGlEyE,cAAe,SAAUtE,GACxB,IAAIzG,EAEJ,IAAMA,KAAQyG,EACb,OAAO,EAER,OAAO,GAKRuE,WAAY,SAAU9D,EAAM/E,EAASiF,GACpCH,EAASC,EAAM,CAAEH,MAAO5E,GAAWA,EAAQ4E,OAASK,IAGrDyB,KAAM,SAAUpC,EAAKqC,GACpB,IAAI3E,EAAQ1E,EAAI,EAEhB,GAAK0F,EAAasB,GAEjB,IADAtC,EAASsC,EAAItC,OACL1E,EAAI0E,IACqC,IAA3C2E,EAASlJ,KAAM6G,EAAKhH,GAAKA,EAAGgH,EAAKhH,IADnBA,UAMpB,IAAMA,KAAKgH,EACV,IAAgD,IAA3CqC,EAASlJ,KAAM6G,EAAKhH,GAAKA,EAAGgH,EAAKhH,IACrC,MAKH,OAAOgH,GAIRwE,UAAW,SAAUtF,EAAKuF,GACzB,IAAIxC,EAAMwC,GAAW,GAarB,OAXY,MAAPvF,IACCR,EAAahF,OAAQwF,IACzBqC,EAAOW,MAAOD,EACE,iBAAR/C,EACN,CAAEA,GAAQA,GAGZX,EAAKpF,KAAM8I,EAAK/C,IAIX+C,GAGRyC,QAAS,SAAUnC,EAAMrD,EAAKlG,GAC7B,OAAc,MAAPkG,GAAe,EAAIM,EAAQrG,KAAM+F,EAAKqD,EAAMvJ,IAKpDkJ,MAAO,SAAUO,EAAOkC,GAKvB,IAJA,IAAI3B,GAAO2B,EAAOjH,OACjBuF,EAAI,EACJjK,EAAIyJ,EAAM/E,OAEHuF,EAAID,EAAKC,IAChBR,EAAOzJ,KAAQ2L,EAAQ1B,GAKxB,OAFAR,EAAM/E,OAAS1E,EAERyJ,GAGRI,KAAM,SAAUb,EAAOK,EAAUuC,GAShC,IARA,IACCC,EAAU,GACV7L,EAAI,EACJ0E,EAASsE,EAAMtE,OACfoH,GAAkBF,EAIX5L,EAAI0E,EAAQ1E,KACAqJ,EAAUL,EAAOhJ,GAAKA,KAChB8L,GACxBD,EAAQtG,KAAMyD,EAAOhJ,IAIvB,OAAO6L,GAIRvC,IAAK,SAAUN,EAAOK,EAAU0C,GAC/B,IAAIrH,EAAQzD,EACXjB,EAAI,EACJiJ,EAAM,GAGP,GAAKvD,EAAasD,GAEjB,IADAtE,EAASsE,EAAMtE,OACP1E,EAAI0E,EAAQ1E,IAGL,OAFdiB,EAAQoI,EAAUL,EAAOhJ,GAAKA,EAAG+L,KAGhC9C,EAAI1D,KAAMtE,QAMZ,IAAMjB,KAAKgJ,EAGI,OAFd/H,EAAQoI,EAAUL,EAAOhJ,GAAKA,EAAG+L,KAGhC9C,EAAI1D,KAAMtE,GAMb,OAAOqF,EAAM2C,IAId+C,KAAM,EAINlF,QAASA,IAGa,mBAAX/F,SACXwH,EAAOE,GAAI1H,OAAOkL,UAAa/F,EAAKnF,OAAOkL,WAI5C1D,EAAOa,KAAM,uEAAuE8C,MAAO,MAC1F,SAAUC,EAAI5L,GACbkG,EAAY,WAAalG,EAAO,KAAQA,EAAK6L,iBAmB/C,IAAIC;;;;;;;;;;;AAWJ,SAAYrG,GACZ,IAAIhG,EACH8G,EACAwF,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EAGAC,EACAlH,EACAmH,EACAC,EACAC,EACAC,EACAtB,EACAuB,EAGAxC,EAAU,SAAW,EAAI,IAAIyC,KAC7BC,EAAetH,EAAOH,SACtB0H,EAAU,EACVC,EAAO,EACPC,EAAaC,KACbC,EAAaD,KACbE,EAAgBF,KAChBG,EAAyBH,KACzBI,EAAY,SAAUC,EAAGC,GAIxB,OAHKD,IAAMC,IACVlB,GAAe,GAET,GAIRnG,EAAS,GAAO9E,eAChBqE,EAAM,GACN+H,EAAM/H,EAAI+H,IACVC,EAAahI,EAAIX,KACjBA,EAAOW,EAAIX,KACXc,EAAQH,EAAIG,MAIZG,EAAU,SAAU2H,EAAM5E,GAGzB,IAFA,IAAIvJ,EAAI,EACPgK,EAAMmE,EAAKzJ,OACJ1E,EAAIgK,EAAKhK,IAChB,GAAKmO,EAAMnO,KAAQuJ,EAClB,OAAOvJ,EAGT,OAAQ,GAGToO,EAAW,6HAMXC,EAAa,sBAGbC,EAAa,0BAA4BD,EACxC,0CAGDE,EAAa,MAAQF,EAAa,KAAOC,EAAa,OAASD,EAG9D,gBAAkBA,EAIlB,2DAA6DC,EAAa,OAC1ED,EAAa,OAEdG,EAAU,KAAOF,EAAP,wFAOoBC,EAPpB,eAcVE,EAAc,IAAIC,OAAQL,EAAa,IAAK,KAC5CM,EAAQ,IAAID,OAAQ,IAAML,EAAa,8BACtCA,EAAa,KAAM,KAEpBO,EAAS,IAAIF,OAAQ,IAAML,EAAa,KAAOA,EAAa,KAC5DQ,EAAe,IAAIH,OAAQ,IAAML,EAAa,WAAaA,EAAa,IAAMA,EAC7E,KACDS,EAAW,IAAIJ,OAAQL,EAAa,MAEpCU,EAAU,IAAIL,OAAQF,GACtBQ,EAAc,IAAIN,OAAQ,IAAMJ,EAAa,KAE7CW,EAAY,CACX,GAAM,IAAIP,OAAQ,MAAQJ,EAAa,KACvC,MAAS,IAAII,OAAQ,QAAUJ,EAAa,KAC5C,IAAO,IAAII,OAAQ,KAAOJ,EAAa,SACvC,KAAQ,IAAII,OAAQ,IAAMH,GAC1B,OAAU,IAAIG,OAAQ,IAAMF,GAC5B,MAAS,IAAIE,OAAQ,yDACpBL,EAAa,+BAAiCA,EAAa,cAC3DA,EAAa,aAAeA,EAAa,SAAU,KACpD,KAAQ,IAAIK,OAAQ,OAASN,EAAW,KAAM,KAI9C,aAAgB,IAAIM,OAAQ,IAAML,EACjC,mDAAqDA,EACrD,mBAAqBA,EAAa,mBAAoB,MAGxDa,EAAQ,SACRC,EAAU,sCACVC,EAAU,SAEVC,EAAU,yBAGVC,EAAa,mCAEbC,GAAW,OAIXC,GAAY,IAAId,OAAQ,uBAAyBL,EAAa,uBAAwB,KACtFoB,GAAY,SAAUC,EAAQC,GAC7B,IAAIC,EAAO,KAAOF,EAAOrJ,MAAO,GAAM,MAEtC,OAAOsJ,IASNC,EAAO,EACNC,OAAOC,aAAcF,EAAO,OAC5BC,OAAOC,aAAcF,GAAQ,GAAK,MAAe,KAAPA,EAAe,SAK5DG,GAAa,sDACbC,GAAa,SAAUC,EAAIC,GAC1B,OAAKA,EAGQ,OAAPD,EACG,IAIDA,EAAG5J,MAAO,GAAI,GAAM,KAC1B4J,EAAGE,WAAYF,EAAGvL,OAAS,GAAIgC,SAAU,IAAO,IAI3C,KAAOuJ,GAOfG,GAAgB,WACfrD,KAGDsD,GAAqBC,IACpB,SAAU/G,GACT,OAAyB,IAAlBA,EAAKgH,UAAqD,aAAhChH,EAAKiH,SAASpE,gBAEhD,CAAEqE,IAAK,aAAcC,KAAM,WAI7B,IACCnL,EAAKgB,MACFL,EAAMG,EAAMlG,KAAMmN,EAAaqD,YACjCrD,EAAaqD,YAMdzK,EAAKoH,EAAaqD,WAAWjM,QAASuC,SACrC,MAAQ2J,GACTrL,EAAO,CAAEgB,MAAOL,EAAIxB,OAGnB,SAAU+F,EAAQoG,GACjB3C,EAAW3H,MAAOkE,EAAQpE,EAAMlG,KAAM0Q,KAKvC,SAAUpG,EAAQoG,GAKjB,IAJA,IAAI5G,EAAIQ,EAAO/F,OACd1E,EAAI,EAGKyK,EAAQR,KAAQ4G,EAAK7Q,OAC/ByK,EAAO/F,OAASuF,EAAI,IAKvB,SAASoC,GAAQ7D,EAAU1F,EAAS2I,EAASqF,GAC5C,IAAI1Q,EAAGJ,EAAGuJ,EAAMwH,EAAKC,EAAOC,EAAQC,EACnCC,EAAarO,GAAWA,EAAQsO,cAGhCnK,EAAWnE,EAAUA,EAAQmE,SAAW,EAKzC,GAHAwE,EAAUA,GAAW,GAGI,iBAAbjD,IAA0BA,GACxB,IAAbvB,GAA+B,IAAbA,GAA+B,KAAbA,EAEpC,OAAOwE,EAIR,IAAMqF,IACL/D,EAAajK,GACbA,EAAUA,GAAW+C,EAEhBoH,GAAiB,CAIrB,GAAkB,KAAbhG,IAAqB+J,EAAQ1B,EAAW+B,KAAM7I,IAGlD,GAAOpI,EAAI4Q,EAAO,IAGjB,GAAkB,IAAb/J,EAAiB,CACrB,KAAOsC,EAAOzG,EAAQwO,eAAgBlR,IAUrC,OAAOqL,EALP,GAAKlC,EAAKgI,KAAOnR,EAEhB,OADAqL,EAAQlG,KAAMgE,GACPkC,OAYT,GAAK0F,IAAgB5H,EAAO4H,EAAWG,eAAgBlR,KACtDgN,EAAUtK,EAASyG,IACnBA,EAAKgI,KAAOnR,EAGZ,OADAqL,EAAQlG,KAAMgE,GACPkC,MAKH,IAAKuF,EAAO,GAElB,OADAzL,EAAKgB,MAAOkF,EAAS3I,EAAQ0O,qBAAsBhJ,IAC5CiD,EAGD,IAAOrL,EAAI4Q,EAAO,KAASlK,EAAQ2K,wBACzC3O,EAAQ2O,uBAGR,OADAlM,EAAKgB,MAAOkF,EAAS3I,EAAQ2O,uBAAwBrR,IAC9CqL,EAKT,GAAK3E,EAAQ4K,MACX7D,EAAwBrF,EAAW,QACjC0E,IAAcA,EAAUyE,KAAMnJ,MAIlB,IAAbvB,GAAqD,WAAnCnE,EAAQ0N,SAASpE,eAA+B,CAYpE,GAVA8E,EAAc1I,EACd2I,EAAarO,EASK,IAAbmE,IACF6H,EAAS6C,KAAMnJ,IAAcqG,EAAa8C,KAAMnJ,IAAe,CAqBjE,KAlBA2I,EAAa5B,GAASoC,KAAMnJ,IAAcoJ,GAAa9O,EAAQsF,aAC9DtF,KAImBA,GAAYgE,EAAQ+K,SAGhCd,EAAMjO,EAAQkF,aAAc,OAClC+I,EAAMA,EAAIhG,QAASgF,GAAYC,IAE/BlN,EAAQmF,aAAc,KAAQ8I,EAAMnG,IAMtC5K,GADAiR,EAASxE,EAAUjE,IACR9D,OACH1E,KACPiR,EAAQjR,IAAQ+Q,EAAM,IAAMA,EAAM,UAAa,IAC9Ce,GAAYb,EAAQjR,IAEtBkR,EAAcD,EAAOc,KAAM,KAG5B,IAIC,OAHAxM,EAAKgB,MAAOkF,EACX0F,EAAWa,iBAAkBd,IAEvBzF,EACN,MAAQwG,GACTpE,EAAwBrF,GAAU,GACjC,QACIuI,IAAQnG,GACZ9H,EAAQoP,gBAAiB,QAQ9B,OAAOvF,EAAQnE,EAASuC,QAAS4D,EAAO,MAAQ7L,EAAS2I,EAASqF,GASnE,SAASpD,KACR,IAAIyE,EAAO,GAYX,OAVA,SAASC,EAAO7Q,EAAKN,GAQpB,OALKkR,EAAK5M,KAAMhE,EAAM,KAAQ+K,EAAK+F,oBAG3BD,EAAOD,EAAKG,SAEXF,EAAO7Q,EAAM,KAAQN,GAShC,SAASsR,GAAc9J,GAEtB,OADAA,EAAImC,IAAY,EACTnC,EAOR,SAAS+J,GAAQ/J,GAChB,IAAIgK,EAAK5M,EAASiC,cAAe,YAEjC,IACC,QAASW,EAAIgK,GACZ,MAAQ7B,GACT,OAAO,EACN,QAGI6B,EAAGrK,YACPqK,EAAGrK,WAAWC,YAAaoK,GAI5BA,EAAK,MASP,SAASC,GAAWC,EAAOC,GAI1B,IAHA,IAAI1M,EAAMyM,EAAMzG,MAAO,KACtBlM,EAAIkG,EAAIxB,OAED1E,KACPsM,EAAKuG,WAAY3M,EAAKlG,IAAQ4S,EAUhC,SAASE,GAAc/E,EAAGC,GACzB,IAAI+E,EAAM/E,GAAKD,EACdiF,EAAOD,GAAsB,IAAfhF,EAAE9G,UAAiC,IAAf+G,EAAE/G,UACnC8G,EAAEkF,YAAcjF,EAAEiF,YAGpB,GAAKD,EACJ,OAAOA,EAIR,GAAKD,EACJ,KAAUA,EAAMA,EAAIG,aACnB,GAAKH,IAAQ/E,EACZ,OAAQ,EAKX,OAAOD,EAAI,GAAK,EAOjB,SAASoF,GAAmB7O,GAC3B,OAAO,SAAUiF,GAEhB,MAAgB,UADLA,EAAKiH,SAASpE,eACE7C,EAAKjF,OAASA,GAQ3C,SAAS8O,GAAoB9O,GAC5B,OAAO,SAAUiF,GAChB,IAAIhJ,EAAOgJ,EAAKiH,SAASpE,cACzB,OAAkB,UAAT7L,GAA6B,WAATA,IAAuBgJ,EAAKjF,OAASA,GAQpE,SAAS+O,GAAsB9C,GAG9B,OAAO,SAAUhH,GAKhB,MAAK,SAAUA,EASTA,EAAKnB,aAAgC,IAAlBmB,EAAKgH,SAGvB,UAAWhH,EACV,UAAWA,EAAKnB,WACbmB,EAAKnB,WAAWmI,WAAaA,EAE7BhH,EAAKgH,WAAaA,EAMpBhH,EAAK+J,aAAe/C,GAI1BhH,EAAK+J,cAAgB/C,GACrBF,GAAoB9G,KAAWgH,EAG1BhH,EAAKgH,WAAaA,EAKd,UAAWhH,GACfA,EAAKgH,WAAaA,GAY5B,SAASgD,GAAwB9K,GAChC,OAAO8J,IAAc,SAAUiB,GAE9B,OADAA,GAAYA,EACLjB,IAAc,SAAUzB,EAAMjF,GAMpC,IALA,IAAI5B,EACHwJ,EAAehL,EAAI,GAAIqI,EAAKpM,OAAQ8O,GACpCxT,EAAIyT,EAAa/O,OAGV1E,KACF8Q,EAAQ7G,EAAIwJ,EAAczT,MAC9B8Q,EAAM7G,KAAS4B,EAAS5B,GAAM6G,EAAM7G,WAYzC,SAAS2H,GAAa9O,GACrB,OAAOA,QAAmD,IAAjCA,EAAQ0O,sBAAwC1O,EAkrC1E,IAAM9C,KA9qCN8G,EAAUuF,GAAOvF,QAAU,GAO3B0F,EAAQH,GAAOG,MAAQ,SAAUjD,GAChC,IAAImK,EAAYnK,GAAQA,EAAKoK,aAC5B3G,EAAUzD,IAAUA,EAAK6H,eAAiB7H,GAAOqK,gBAKlD,OAAQ1E,EAAMyC,KAAM+B,GAAa1G,GAAWA,EAAQwD,UAAY,SAQjEzD,EAAcV,GAAOU,YAAc,SAAUrF,GAC5C,IAAImM,EAAYC,EACfnM,EAAMD,EAAOA,EAAK0J,eAAiB1J,EAAO4F,EAO3C,OAAK3F,GAAO9B,GAA6B,IAAjB8B,EAAIV,UAAmBU,EAAIiM,iBAMnD5G,GADAnH,EAAW8B,GACQiM,gBACnB3G,GAAkBT,EAAO3G,GAQpByH,GAAgBzH,IAClBiO,EAAYjO,EAASkO,cAAiBD,EAAUE,MAAQF,IAGrDA,EAAUG,iBACdH,EAAUG,iBAAkB,SAAU7D,IAAe,GAG1C0D,EAAUI,aACrBJ,EAAUI,YAAa,WAAY9D,KASrCtJ,EAAQ+K,MAAQW,IAAQ,SAAUC,GAEjC,OADAzF,EAAQ7E,YAAasK,GAAKtK,YAAatC,EAASiC,cAAe,aACzB,IAAxB2K,EAAGT,mBACfS,EAAGT,iBAAkB,uBAAwBtN,UAShDoC,EAAQyH,WAAaiE,IAAQ,SAAUC,GAEtC,OADAA,EAAG0B,UAAY,KACP1B,EAAGzK,aAAc,gBAO1BlB,EAAQ0K,qBAAuBgB,IAAQ,SAAUC,GAEhD,OADAA,EAAGtK,YAAatC,EAASuO,cAAe,MAChC3B,EAAGjB,qBAAsB,KAAM9M,UAIxCoC,EAAQ2K,uBAAyBpC,EAAQsC,KAAM9L,EAAS4L,wBAMxD3K,EAAQuN,QAAU7B,IAAQ,SAAUC,GAEnC,OADAzF,EAAQ7E,YAAasK,GAAKlB,GAAK3G,GACvB/E,EAASyO,oBAAsBzO,EAASyO,kBAAmB1J,GAAUlG,UAIzEoC,EAAQuN,SACZ/H,EAAKiI,OAAa,GAAI,SAAUhD,GAC/B,IAAIiD,EAASjD,EAAGxG,QAASyE,GAAWC,IACpC,OAAO,SAAUlG,GAChB,OAAOA,EAAKvB,aAAc,QAAWwM,IAGvClI,EAAKmI,KAAW,GAAI,SAAUlD,EAAIzO,GACjC,QAAuC,IAA3BA,EAAQwO,gBAAkCrE,EAAiB,CACtE,IAAI1D,EAAOzG,EAAQwO,eAAgBC,GACnC,OAAOhI,EAAO,CAAEA,GAAS,OAI3B+C,EAAKiI,OAAa,GAAK,SAAUhD,GAChC,IAAIiD,EAASjD,EAAGxG,QAASyE,GAAWC,IACpC,OAAO,SAAUlG,GAChB,IAAI7B,OAAwC,IAA1B6B,EAAKmL,kBACtBnL,EAAKmL,iBAAkB,MACxB,OAAOhN,GAAQA,EAAKzG,QAAUuT,IAMhClI,EAAKmI,KAAW,GAAI,SAAUlD,EAAIzO,GACjC,QAAuC,IAA3BA,EAAQwO,gBAAkCrE,EAAiB,CACtE,IAAIvF,EAAM1H,EAAGgJ,EACZO,EAAOzG,EAAQwO,eAAgBC,GAEhC,GAAKhI,EAAO,CAIX,IADA7B,EAAO6B,EAAKmL,iBAAkB,QACjBhN,EAAKzG,QAAUsQ,EAC3B,MAAO,CAAEhI,GAMV,IAFAP,EAAQlG,EAAQwR,kBAAmB/C,GACnCvR,EAAI,EACMuJ,EAAOP,EAAOhJ,MAEvB,IADA0H,EAAO6B,EAAKmL,iBAAkB,QACjBhN,EAAKzG,QAAUsQ,EAC3B,MAAO,CAAEhI,GAKZ,MAAO,MAMV+C,EAAKmI,KAAY,IAAI3N,EAAQ0K,qBAC5B,SAAUmD,EAAK7R,GACd,YAA6C,IAAjCA,EAAQ0O,qBACZ1O,EAAQ0O,qBAAsBmD,GAG1B7N,EAAQ4K,IACZ5O,EAAQkP,iBAAkB2C,QAD3B,GAKR,SAAUA,EAAK7R,GACd,IAAIyG,EACHqL,EAAM,GACN5U,EAAI,EAGJyL,EAAU3I,EAAQ0O,qBAAsBmD,GAGzC,GAAa,MAARA,EAAc,CAClB,KAAUpL,EAAOkC,EAASzL,MACF,IAAlBuJ,EAAKtC,UACT2N,EAAIrP,KAAMgE,GAIZ,OAAOqL,EAER,OAAOnJ,GAITa,EAAKmI,KAAc,MAAI3N,EAAQ2K,wBAA0B,SAAU0C,EAAWrR,GAC7E,QAA+C,IAAnCA,EAAQ2O,wBAA0CxE,EAC7D,OAAOnK,EAAQ2O,uBAAwB0C,IAUzChH,EAAgB,GAOhBD,EAAY,IAELpG,EAAQ4K,IAAMrC,EAAQsC,KAAM9L,EAASmM,qBAI3CQ,IAAQ,SAAUC,GAEjB,IAAIoC,EAOJ7H,EAAQ7E,YAAasK,GAAKqC,UAAY,UAAYlK,EAAZ,qBACpBA,EADoB,kEAQjC6H,EAAGT,iBAAkB,wBAAyBtN,QAClDwI,EAAU3H,KAAM,SAAW8I,EAAa,gBAKnCoE,EAAGT,iBAAkB,cAAetN,QACzCwI,EAAU3H,KAAM,MAAQ8I,EAAa,aAAeD,EAAW,KAI1DqE,EAAGT,iBAAkB,QAAUpH,EAAU,MAAOlG,QACrDwI,EAAU3H,KAAM,OAQjBsP,EAAQhP,EAASiC,cAAe,UAC1BG,aAAc,OAAQ,IAC5BwK,EAAGtK,YAAa0M,GACVpC,EAAGT,iBAAkB,aAActN,QACxCwI,EAAU3H,KAAM,MAAQ8I,EAAa,QAAUA,EAAa,KAC3DA,EAAa,gBAMToE,EAAGT,iBAAkB,YAAatN,QACvCwI,EAAU3H,KAAM,YAMXkN,EAAGT,iBAAkB,KAAOpH,EAAU,MAAOlG,QAClDwI,EAAU3H,KAAM,YAKjBkN,EAAGT,iBAAkB,QACrB9E,EAAU3H,KAAM,kBAGjBiN,IAAQ,SAAUC,GACjBA,EAAGqC,UAAY,oFAKf,IAAID,EAAQhP,EAASiC,cAAe,SACpC+M,EAAM5M,aAAc,OAAQ,UAC5BwK,EAAGtK,YAAa0M,GAAQ5M,aAAc,OAAQ,KAIzCwK,EAAGT,iBAAkB,YAAatN,QACtCwI,EAAU3H,KAAM,OAAS8I,EAAa,eAKW,IAA7CoE,EAAGT,iBAAkB,YAAatN,QACtCwI,EAAU3H,KAAM,WAAY,aAK7ByH,EAAQ7E,YAAasK,GAAKlC,UAAW,EACc,IAA9CkC,EAAGT,iBAAkB,aAActN,QACvCwI,EAAU3H,KAAM,WAAY,aAK7BkN,EAAGT,iBAAkB,QACrB9E,EAAU3H,KAAM,aAIXuB,EAAQiO,gBAAkB1F,EAAQsC,KAAQ9F,EAAUmB,EAAQnB,SAClEmB,EAAQgI,uBACRhI,EAAQiI,oBACRjI,EAAQkI,kBACRlI,EAAQmI,qBAER3C,IAAQ,SAAUC,GAIjB3L,EAAQsO,kBAAoBvJ,EAAQ1L,KAAMsS,EAAI,KAI9C5G,EAAQ1L,KAAMsS,EAAI,aAClBtF,EAAc5H,KAAM,KAAMiJ,MAI5BtB,EAAYA,EAAUxI,QAAU,IAAIgK,OAAQxB,EAAU6E,KAAM,MAC5D5E,EAAgBA,EAAczI,QAAU,IAAIgK,OAAQvB,EAAc4E,KAAM,MAIxE8B,EAAaxE,EAAQsC,KAAM3E,EAAQqI,yBAKnCjI,EAAWyG,GAAcxE,EAAQsC,KAAM3E,EAAQI,UAC9C,SAAUW,EAAGC,GACZ,IAAIsH,EAAuB,IAAfvH,EAAE9G,SAAiB8G,EAAE6F,gBAAkB7F,EAClDwH,EAAMvH,GAAKA,EAAE5F,WACd,OAAO2F,IAAMwH,MAAWA,GAAwB,IAAjBA,EAAItO,YAClCqO,EAAMlI,SACLkI,EAAMlI,SAAUmI,GAChBxH,EAAEsH,yBAA8D,GAAnCtH,EAAEsH,wBAAyBE,MAG3D,SAAUxH,EAAGC,GACZ,GAAKA,EACJ,KAAUA,EAAIA,EAAE5F,YACf,GAAK4F,IAAMD,EACV,OAAO,EAIV,OAAO,GAOTD,EAAY+F,EACZ,SAAU9F,EAAGC,GAGZ,GAAKD,IAAMC,EAEV,OADAlB,GAAe,EACR,EAIR,IAAI0I,GAAWzH,EAAEsH,yBAA2BrH,EAAEqH,wBAC9C,OAAKG,IAgBU,GAPfA,GAAYzH,EAAEqD,eAAiBrD,KAASC,EAAEoD,eAAiBpD,GAC1DD,EAAEsH,wBAAyBrH,GAG3B,KAIGlH,EAAQ2O,cAAgBzH,EAAEqH,wBAAyBtH,KAAQyH,EAOzDzH,GAAKlI,GAAYkI,EAAEqD,eAAiB9D,GACxCF,EAAUE,EAAcS,IAChB,EAOJC,GAAKnI,GAAYmI,EAAEoD,eAAiB9D,GACxCF,EAAUE,EAAcU,GACjB,EAIDnB,EACJrG,EAASqG,EAAWkB,GAAMvH,EAASqG,EAAWmB,GAChD,EAGe,EAAVwH,GAAe,EAAI,IAE3B,SAAUzH,EAAGC,GAGZ,GAAKD,IAAMC,EAEV,OADAlB,GAAe,EACR,EAGR,IAAIiG,EACH/S,EAAI,EACJ0V,EAAM3H,EAAE3F,WACRmN,EAAMvH,EAAE5F,WACRuN,EAAK,CAAE5H,GACP6H,EAAK,CAAE5H,GAGR,IAAM0H,IAAQH,EAMb,OAAOxH,GAAKlI,GAAY,EACvBmI,GAAKnI,EAAW,EAEhB6P,GAAO,EACPH,EAAM,EACN1I,EACErG,EAASqG,EAAWkB,GAAMvH,EAASqG,EAAWmB,GAChD,EAGK,GAAK0H,IAAQH,EACnB,OAAOzC,GAAc/E,EAAGC,GAKzB,IADA+E,EAAMhF,EACIgF,EAAMA,EAAI3K,YACnBuN,EAAGE,QAAS9C,GAGb,IADAA,EAAM/E,EACI+E,EAAMA,EAAI3K,YACnBwN,EAAGC,QAAS9C,GAIb,KAAQ4C,EAAI3V,KAAQ4V,EAAI5V,IACvBA,IAGD,OAAOA,EAGN8S,GAAc6C,EAAI3V,GAAK4V,EAAI5V,IAO3B2V,EAAI3V,IAAOsN,GAAgB,EAC3BsI,EAAI5V,IAAOsN,EAAe,EAE1B,GAGKzH,GA/cCA,GAkdTwG,GAAOR,QAAU,SAAUiK,EAAMC,GAChC,OAAO1J,GAAQyJ,EAAM,KAAM,KAAMC,IAGlC1J,GAAO0I,gBAAkB,SAAUxL,EAAMuM,GAGxC,GAFA/I,EAAaxD,GAERzC,EAAQiO,iBAAmB9H,IAC9BY,EAAwBiI,EAAO,QAC7B3I,IAAkBA,EAAcwE,KAAMmE,OACtC5I,IAAkBA,EAAUyE,KAAMmE,IAErC,IACC,IAAI7M,EAAM4C,EAAQ1L,KAAMoJ,EAAMuM,GAG9B,GAAK7M,GAAOnC,EAAQsO,mBAInB7L,EAAK1D,UAAuC,KAA3B0D,EAAK1D,SAASoB,SAC/B,OAAOgC,EAEP,MAAQ2H,GACT/C,EAAwBiI,GAAM,GAIhC,OAAOzJ,GAAQyJ,EAAMjQ,EAAU,KAAM,CAAE0D,IAAS7E,OAAS,GAG1D2H,GAAOe,SAAW,SAAUtK,EAASyG,GAUpC,OAHOzG,EAAQsO,eAAiBtO,IAAa+C,GAC5CkH,EAAajK,GAEPsK,EAAUtK,EAASyG,IAG3B8C,GAAO2J,KAAO,SAAUzM,EAAMhJ,IAOtBgJ,EAAK6H,eAAiB7H,IAAU1D,GACtCkH,EAAaxD,GAGd,IAAId,EAAK6D,EAAKuG,WAAYtS,EAAK6L,eAG9BxE,EAAMa,GAAM9B,EAAOxG,KAAMmM,EAAKuG,WAAYtS,EAAK6L,eAC9C3D,EAAIc,EAAMhJ,GAAO0M,QACjBhI,EAEF,YAAeA,IAAR2C,EACNA,EACAd,EAAQyH,aAAetB,EACtB1D,EAAKvB,aAAczH,IACjBqH,EAAM2B,EAAKmL,iBAAkBnU,KAAYqH,EAAIqO,UAC9CrO,EAAI3G,MACJ,MAGJoL,GAAOqD,OAAS,SAAUwG,GACzB,OAASA,EAAM,IAAKnL,QAASgF,GAAYC,KAG1C3D,GAAOpB,MAAQ,SAAUC,GACxB,MAAM,IAAInF,MAAO,0CAA4CmF,IAO9DmB,GAAO8J,WAAa,SAAU1K,GAC7B,IAAIlC,EACH6M,EAAa,GACbnM,EAAI,EACJjK,EAAI,EAOL,GAJA8M,GAAgBhG,EAAQuP,iBACxBxJ,GAAa/F,EAAQwP,YAAc7K,EAAQpF,MAAO,GAClDoF,EAAQtB,KAAM2D,GAEThB,EAAe,CACnB,KAAUvD,EAAOkC,EAASzL,MACpBuJ,IAASkC,EAASzL,KACtBiK,EAAImM,EAAW7Q,KAAMvF,IAGvB,KAAQiK,KACPwB,EAAQrB,OAAQgM,EAAYnM,GAAK,GAQnC,OAFA4C,EAAY,KAELpB,GAORc,EAAUF,GAAOE,QAAU,SAAUhD,GACpC,IAAI7B,EACHuB,EAAM,GACNjJ,EAAI,EACJiH,EAAWsC,EAAKtC,SAEjB,GAAMA,GAQC,GAAkB,IAAbA,GAA+B,IAAbA,GAA+B,KAAbA,EAAkB,CAIjE,GAAiC,iBAArBsC,EAAKgN,YAChB,OAAOhN,EAAKgN,YAIZ,IAAMhN,EAAOA,EAAKiN,WAAYjN,EAAMA,EAAOA,EAAK2J,YAC/CjK,GAAOsD,EAAShD,QAGZ,GAAkB,IAAbtC,GAA+B,IAAbA,EAC7B,OAAOsC,EAAKkN,eAnBZ,KAAU/O,EAAO6B,EAAMvJ,MAGtBiJ,GAAOsD,EAAS7E,GAqBlB,OAAOuB,IAGRqD,EAAOD,GAAOqK,UAAY,CAGzBrE,YAAa,GAEbsE,aAAcpE,GAEdvB,MAAO/B,EAEP4D,WAAY,GAEZ4B,KAAM,GAENmC,SAAU,CACT,IAAK,CAAEnG,IAAK,aAAchH,OAAO,GACjC,IAAK,CAAEgH,IAAK,cACZ,IAAK,CAAEA,IAAK,kBAAmBhH,OAAO,GACtC,IAAK,CAAEgH,IAAK,oBAGboG,UAAW,CACV,KAAQ,SAAU7F,GAWjB,OAVAA,EAAO,GAAMA,EAAO,GAAIjG,QAASyE,GAAWC,IAG5CuB,EAAO,IAAQA,EAAO,IAAOA,EAAO,IACnCA,EAAO,IAAO,IAAKjG,QAASyE,GAAWC,IAEpB,OAAfuB,EAAO,KACXA,EAAO,GAAM,IAAMA,EAAO,GAAM,KAG1BA,EAAM3K,MAAO,EAAG,IAGxB,MAAS,SAAU2K,GAiClB,OArBAA,EAAO,GAAMA,EAAO,GAAI5E,cAEU,QAA7B4E,EAAO,GAAI3K,MAAO,EAAG,IAGnB2K,EAAO,IACZ3E,GAAOpB,MAAO+F,EAAO,IAKtBA,EAAO,KAASA,EAAO,GACtBA,EAAO,IAAQA,EAAO,IAAO,GAC7B,GAAqB,SAAfA,EAAO,IAAiC,QAAfA,EAAO,KACvCA,EAAO,KAAWA,EAAO,GAAMA,EAAO,IAAwB,QAAfA,EAAO,KAG3CA,EAAO,IAClB3E,GAAOpB,MAAO+F,EAAO,IAGfA,GAGR,OAAU,SAAUA,GACnB,IAAI8F,EACHC,GAAY/F,EAAO,IAAOA,EAAO,GAElC,OAAK/B,EAAmB,MAAE0C,KAAMX,EAAO,IAC/B,MAIHA,EAAO,GACXA,EAAO,GAAMA,EAAO,IAAOA,EAAO,IAAO,GAG9B+F,GAAYhI,EAAQ4C,KAAMoF,KAGnCD,EAASrK,EAAUsK,GAAU,MAG7BD,EAASC,EAASvQ,QAAS,IAAKuQ,EAASrS,OAASoS,GAAWC,EAASrS,UAGxEsM,EAAO,GAAMA,EAAO,GAAI3K,MAAO,EAAGyQ,GAClC9F,EAAO,GAAM+F,EAAS1Q,MAAO,EAAGyQ,IAI1B9F,EAAM3K,MAAO,EAAG,MAIzBkO,OAAQ,CAEP,IAAO,SAAUyC,GAChB,IAAIxG,EAAWwG,EAAiBjM,QAASyE,GAAWC,IAAYrD,cAChE,MAA4B,MAArB4K,EACN,WACC,OAAO,GAER,SAAUzN,GACT,OAAOA,EAAKiH,UAAYjH,EAAKiH,SAASpE,gBAAkBoE,IAI3D,MAAS,SAAU2D,GAClB,IAAI8C,EAAUxJ,EAAY0G,EAAY,KAEtC,OAAO8C,IACJA,EAAU,IAAIvI,OAAQ,MAAQL,EAC/B,IAAM8F,EAAY,IAAM9F,EAAa,SAAaZ,EACjD0G,GAAW,SAAU5K,GACpB,OAAO0N,EAAQtF,KACY,iBAAnBpI,EAAK4K,WAA0B5K,EAAK4K,gBACd,IAAtB5K,EAAKvB,cACXuB,EAAKvB,aAAc,UACpB,QAKN,KAAQ,SAAUzH,EAAM2W,EAAUC,GACjC,OAAO,SAAU5N,GAChB,IAAIrF,EAASmI,GAAO2J,KAAMzM,EAAMhJ,GAEhC,OAAe,MAAV2D,EACgB,OAAbgT,GAEFA,IAINhT,GAAU,GAIU,MAAbgT,EAAmBhT,IAAWiT,EACvB,OAAbD,EAAoBhT,IAAWiT,EAClB,OAAbD,EAAoBC,GAAqC,IAA5BjT,EAAOsC,QAAS2Q,GAChC,OAAbD,EAAoBC,GAASjT,EAAOsC,QAAS2Q,IAAW,EAC3C,OAAbD,EAAoBC,GAASjT,EAAOmC,OAAQ8Q,EAAMzS,UAAayS,EAClD,OAAbD,GAAsB,IAAMhT,EAAO6G,QAAS0D,EAAa,KAAQ,KAAMjI,QAAS2Q,IAAW,EAC9E,OAAbD,IAAoBhT,IAAWiT,GAASjT,EAAOmC,MAAO,EAAG8Q,EAAMzS,OAAS,KAAQyS,EAAQ,QAO3F,MAAS,SAAU7S,EAAM8S,EAAMC,EAAW5N,EAAOE,GAChD,IAAI2N,EAAgC,QAAvBhT,EAAK+B,MAAO,EAAG,GAC3BkR,EAA+B,SAArBjT,EAAK+B,OAAQ,GACvBmR,EAAkB,YAATJ,EAEV,OAAiB,IAAV3N,GAAwB,IAATE,EAGrB,SAAUJ,GACT,QAASA,EAAKnB,YAGf,SAAUmB,EAAMkO,EAAUC,GACzB,IAAItF,EAAOuF,EAAaC,EAAYlQ,EAAMmQ,EAAWxT,EACpDoM,EAAM6G,IAAWC,EAAU,cAAgB,kBAC3CrU,EAASqG,EAAKnB,WACd7H,EAAOiX,GAAUjO,EAAKiH,SAASpE,cAC/B0L,GAAYJ,IAAQF,EACpBxE,GAAO,EAER,GAAK9P,EAAS,CAGb,GAAKoU,EAAS,CACb,KAAQ7G,GAAM,CAEb,IADA/I,EAAO6B,EACG7B,EAAOA,EAAM+I,IACtB,GAAK+G,EACJ9P,EAAK8I,SAASpE,gBAAkB7L,EACd,IAAlBmH,EAAKT,SAEL,OAAO,EAKT5C,EAAQoM,EAAe,SAATnM,IAAoBD,GAAS,cAE5C,OAAO,EAMR,GAHAA,EAAQ,CAAEkT,EAAUrU,EAAOsT,WAAatT,EAAO6U,WAG1CR,GAAWO,GAkBf,IAHA9E,GADA6E,GADAzF,GAHAuF,GAJAC,GADAlQ,EAAOxE,GACY0H,KAAelD,EAAMkD,GAAY,KAI1BlD,EAAKsQ,YAC5BJ,EAAYlQ,EAAKsQ,UAAa,KAEZ1T,IAAU,IACZ,KAAQiJ,GAAW6E,EAAO,KACzBA,EAAO,GAC3B1K,EAAOmQ,GAAa3U,EAAOyN,WAAYkH,GAE7BnQ,IAASmQ,GAAanQ,GAAQA,EAAM+I,KAG3CuC,EAAO6E,EAAY,IAAOxT,EAAM4J,OAGlC,GAAuB,IAAlBvG,EAAKT,YAAoB+L,GAAQtL,IAAS6B,EAAO,CACrDoO,EAAarT,GAAS,CAAEiJ,EAASsK,EAAW7E,GAC5C,YAyBF,GAlBK8E,IAaJ9E,EADA6E,GADAzF,GAHAuF,GAJAC,GADAlQ,EAAO6B,GACYqB,KAAelD,EAAMkD,GAAY,KAI1BlD,EAAKsQ,YAC5BJ,EAAYlQ,EAAKsQ,UAAa,KAEZ1T,IAAU,IACZ,KAAQiJ,GAAW6E,EAAO,KAMhC,IAATY,EAGJ,MAAUtL,IAASmQ,GAAanQ,GAAQA,EAAM+I,KAC3CuC,EAAO6E,EAAY,IAAOxT,EAAM4J,UAE3BuJ,EACN9P,EAAK8I,SAASpE,gBAAkB7L,EACd,IAAlBmH,EAAKT,cACH+L,IAGG8E,KAMJH,GALAC,EAAalQ,EAAMkD,KAChBlD,EAAMkD,GAAY,KAIKlD,EAAKsQ,YAC5BJ,EAAYlQ,EAAKsQ,UAAa,KAEpB1T,GAAS,CAAEiJ,EAASyF,IAG7BtL,IAAS6B,MAUlB,OADAyJ,GAAQrJ,KACQF,GAAWuJ,EAAOvJ,GAAU,GAAKuJ,EAAOvJ,GAAS,KAKrE,OAAU,SAAUwO,EAAQzE,GAM3B,IAAI0E,EACHzP,EAAK6D,EAAKkC,QAASyJ,IAAY3L,EAAK6L,WAAYF,EAAO7L,gBACtDC,GAAOpB,MAAO,uBAAyBgN,GAKzC,OAAKxP,EAAImC,GACDnC,EAAI+K,GAIP/K,EAAG/D,OAAS,GAChBwT,EAAO,CAAED,EAAQA,EAAQ,GAAIzE,GACtBlH,EAAK6L,WAAWtW,eAAgBoW,EAAO7L,eAC7CmG,IAAc,SAAUzB,EAAMjF,GAI7B,IAHA,IAAIuM,EACHC,EAAU5P,EAAIqI,EAAM0C,GACpBxT,EAAIqY,EAAQ3T,OACL1E,KAEP8Q,EADAsH,EAAM5R,EAASsK,EAAMuH,EAASrY,OACb6L,EAASuM,GAAQC,EAASrY,OAG7C,SAAUuJ,GACT,OAAOd,EAAIc,EAAM,EAAG2O,KAIhBzP,IAIT+F,QAAS,CAGR,IAAO+D,IAAc,SAAU/J,GAK9B,IAAIqM,EAAQ,GACXpJ,EAAU,GACV6M,EAAU5L,EAASlE,EAASuC,QAAS4D,EAAO,OAE7C,OAAO2J,EAAS1N,GACf2H,IAAc,SAAUzB,EAAMjF,EAAS4L,EAAUC,GAMhD,IALA,IAAInO,EACHgP,EAAYD,EAASxH,EAAM,KAAM4G,EAAK,IACtC1X,EAAI8Q,EAAKpM,OAGF1E,MACAuJ,EAAOgP,EAAWvY,MACxB8Q,EAAM9Q,KAAS6L,EAAS7L,GAAMuJ,OAIjC,SAAUA,EAAMkO,EAAUC,GAMzB,OALA7C,EAAO,GAAMtL,EACb+O,EAASzD,EAAO,KAAM6C,EAAKjM,GAG3BoJ,EAAO,GAAM,MACLpJ,EAAQwC,UAInB,IAAOsE,IAAc,SAAU/J,GAC9B,OAAO,SAAUe,GAChB,OAAO8C,GAAQ7D,EAAUe,GAAO7E,OAAS,MAI3C,SAAY6N,IAAc,SAAUxK,GAEnC,OADAA,EAAOA,EAAKgD,QAASyE,GAAWC,IACzB,SAAUlG,GAChB,OAASA,EAAKgN,aAAehK,EAAShD,IAAS/C,QAASuB,IAAU,MAWpE,KAAQwK,IAAc,SAAUiG,GAO/B,OAJMxJ,EAAY2C,KAAM6G,GAAQ,KAC/BnM,GAAOpB,MAAO,qBAAuBuN,GAEtCA,EAAOA,EAAKzN,QAASyE,GAAWC,IAAYrD,cACrC,SAAU7C,GAChB,IAAIkP,EACJ,GACC,GAAOA,EAAWxL,EACjB1D,EAAKiP,KACLjP,EAAKvB,aAAc,aAAgBuB,EAAKvB,aAAc,QAGtD,OADAyQ,EAAWA,EAASrM,iBACAoM,GAA2C,IAAnCC,EAASjS,QAASgS,EAAO,YAE3CjP,EAAOA,EAAKnB,aAAkC,IAAlBmB,EAAKtC,UAC7C,OAAO,MAKT,OAAU,SAAUsC,GACnB,IAAImP,EAAO1S,EAAO2S,UAAY3S,EAAO2S,SAASD,KAC9C,OAAOA,GAAQA,EAAKrS,MAAO,KAAQkD,EAAKgI,IAGzC,KAAQ,SAAUhI,GACjB,OAAOA,IAASyD,GAGjB,MAAS,SAAUzD,GAClB,OAAOA,IAAS1D,EAAS+S,iBACrB/S,EAASgT,UAAYhT,EAASgT,gBAC7BtP,EAAKjF,MAAQiF,EAAKuP,OAASvP,EAAKwP,WAItC,QAAW1F,IAAsB,GACjC,SAAYA,IAAsB,GAElC,QAAW,SAAU9J,GAIpB,IAAIiH,EAAWjH,EAAKiH,SAASpE,cAC7B,MAAsB,UAAboE,KAA0BjH,EAAKyP,SACxB,WAAbxI,KAA2BjH,EAAK0P,UAGpC,SAAY,SAAU1P,GASrB,OALKA,EAAKnB,YAETmB,EAAKnB,WAAW8Q,eAGQ,IAAlB3P,EAAK0P,UAIb,MAAS,SAAU1P,GAMlB,IAAMA,EAAOA,EAAKiN,WAAYjN,EAAMA,EAAOA,EAAK2J,YAC/C,GAAK3J,EAAKtC,SAAW,EACpB,OAAO,EAGT,OAAO,GAGR,OAAU,SAAUsC,GACnB,OAAQ+C,EAAKkC,QAAiB,MAAGjF,IAIlC,OAAU,SAAUA,GACnB,OAAO6F,EAAQuC,KAAMpI,EAAKiH,WAG3B,MAAS,SAAUjH,GAClB,OAAO4F,EAAQwC,KAAMpI,EAAKiH,WAG3B,OAAU,SAAUjH,GACnB,IAAIhJ,EAAOgJ,EAAKiH,SAASpE,cACzB,MAAgB,UAAT7L,GAAkC,WAAdgJ,EAAKjF,MAA8B,WAAT/D,GAGtD,KAAQ,SAAUgJ,GACjB,IAAIyM,EACJ,MAAuC,UAAhCzM,EAAKiH,SAASpE,eACN,SAAd7C,EAAKjF,OAIuC,OAAxC0R,EAAOzM,EAAKvB,aAAc,UACN,SAAvBgO,EAAK5J,gBAIR,MAASmH,IAAwB,WAChC,MAAO,CAAE,MAGV,KAAQA,IAAwB,SAAU4F,EAAezU,GACxD,MAAO,CAAEA,EAAS,MAGnB,GAAM6O,IAAwB,SAAU4F,EAAezU,EAAQ8O,GAC9D,MAAO,CAAEA,EAAW,EAAIA,EAAW9O,EAAS8O,MAG7C,KAAQD,IAAwB,SAAUE,EAAc/O,GAEvD,IADA,IAAI1E,EAAI,EACAA,EAAI0E,EAAQ1E,GAAK,EACxByT,EAAalO,KAAMvF,GAEpB,OAAOyT,KAGR,IAAOF,IAAwB,SAAUE,EAAc/O,GAEtD,IADA,IAAI1E,EAAI,EACAA,EAAI0E,EAAQ1E,GAAK,EACxByT,EAAalO,KAAMvF,GAEpB,OAAOyT,KAGR,GAAMF,IAAwB,SAAUE,EAAc/O,EAAQ8O,GAM7D,IALA,IAAIxT,EAAIwT,EAAW,EAClBA,EAAW9O,EACX8O,EAAW9O,EACVA,EACA8O,IACQxT,GAAK,GACdyT,EAAalO,KAAMvF,GAEpB,OAAOyT,KAGR,GAAMF,IAAwB,SAAUE,EAAc/O,EAAQ8O,GAE7D,IADA,IAAIxT,EAAIwT,EAAW,EAAIA,EAAW9O,EAAS8O,IACjCxT,EAAI0E,GACb+O,EAAalO,KAAMvF,GAEpB,OAAOyT,QAKLjF,QAAe,IAAIlC,EAAKkC,QAAc,GAGhC,CAAE4K,OAAO,EAAMC,UAAU,EAAMC,MAAM,EAAMC,UAAU,EAAMC,OAAO,GAC5ElN,EAAKkC,QAASxO,GAAMmT,GAAmBnT,GAExC,IAAMA,IAAK,CAAEyZ,QAAQ,EAAMC,OAAO,GACjCpN,EAAKkC,QAASxO,GAAMoT,GAAoBpT,GAIzC,SAASmY,MA0ET,SAASrG,GAAY6H,GAIpB,IAHA,IAAI3Z,EAAI,EACPgK,EAAM2P,EAAOjV,OACb8D,EAAW,GACJxI,EAAIgK,EAAKhK,IAChBwI,GAAYmR,EAAQ3Z,GAAIiB,MAEzB,OAAOuH,EAGR,SAAS8H,GAAegI,EAASsB,EAAYC,GAC5C,IAAIpJ,EAAMmJ,EAAWnJ,IACpBqJ,EAAOF,EAAWlJ,KAClBnP,EAAMuY,GAAQrJ,EACdsJ,EAAmBF,GAAgB,eAARtY,EAC3ByY,EAAWxM,IAEZ,OAAOoM,EAAWnQ,MAGjB,SAAUF,EAAMzG,EAAS4U,GACxB,KAAUnO,EAAOA,EAAMkH,IACtB,GAAuB,IAAlBlH,EAAKtC,UAAkB8S,EAC3B,OAAOzB,EAAS/O,EAAMzG,EAAS4U,GAGjC,OAAO,GAIR,SAAUnO,EAAMzG,EAAS4U,GACxB,IAAIuC,EAAUtC,EAAaC,EAC1BsC,EAAW,CAAE3M,EAASyM,GAGvB,GAAKtC,GACJ,KAAUnO,EAAOA,EAAMkH,IACtB,IAAuB,IAAlBlH,EAAKtC,UAAkB8S,IACtBzB,EAAS/O,EAAMzG,EAAS4U,GAC5B,OAAO,OAKV,KAAUnO,EAAOA,EAAMkH,IACtB,GAAuB,IAAlBlH,EAAKtC,UAAkB8S,EAQ3B,GAHApC,GAJAC,EAAarO,EAAMqB,KAAerB,EAAMqB,GAAY,KAI1BrB,EAAKyO,YAC5BJ,EAAYrO,EAAKyO,UAAa,IAE5B8B,GAAQA,IAASvQ,EAAKiH,SAASpE,cACnC7C,EAAOA,EAAMkH,IAASlH,MAChB,KAAO0Q,EAAWtC,EAAapW,KACrC0Y,EAAU,KAAQ1M,GAAW0M,EAAU,KAAQD,EAG/C,OAASE,EAAU,GAAMD,EAAU,GAOnC,GAHAtC,EAAapW,GAAQ2Y,EAGdA,EAAU,GAAM5B,EAAS/O,EAAMzG,EAAS4U,GAC9C,OAAO,EAMZ,OAAO,GAIV,SAASyC,GAAgBC,GACxB,OAAOA,EAAS1V,OAAS,EACxB,SAAU6E,EAAMzG,EAAS4U,GAExB,IADA,IAAI1X,EAAIoa,EAAS1V,OACT1E,KACP,IAAMoa,EAAUpa,GAAKuJ,EAAMzG,EAAS4U,GACnC,OAAO,EAGT,OAAO,GAER0C,EAAU,GAYZ,SAASC,GAAU9B,EAAWjP,EAAKiL,EAAQzR,EAAS4U,GAOnD,IANA,IAAInO,EACH+Q,EAAe,GACfta,EAAI,EACJgK,EAAMuO,EAAU7T,OAChB6V,EAAgB,MAAPjR,EAEFtJ,EAAIgK,EAAKhK,KACTuJ,EAAOgP,EAAWvY,MAClBuU,IAAUA,EAAQhL,EAAMzG,EAAS4U,KACtC4C,EAAa/U,KAAMgE,GACdgR,GACJjR,EAAI/D,KAAMvF,KAMd,OAAOsa,EAGR,SAASE,GAAY3D,EAAWrO,EAAU8P,EAASmC,EAAYC,EAAYC,GAO1E,OANKF,IAAeA,EAAY7P,KAC/B6P,EAAaD,GAAYC,IAErBC,IAAeA,EAAY9P,KAC/B8P,EAAaF,GAAYE,EAAYC,IAE/BpI,IAAc,SAAUzB,EAAMrF,EAAS3I,EAAS4U,GACtD,IAAIkD,EAAM5a,EAAGuJ,EACZsR,EAAS,GACTC,EAAU,GACVC,EAActP,EAAQ/G,OAGtBsE,EAAQ8H,GA5CX,SAA2BtI,EAAUwS,EAAUvP,GAG9C,IAFA,IAAIzL,EAAI,EACPgK,EAAMgR,EAAStW,OACR1E,EAAIgK,EAAKhK,IAChBqM,GAAQ7D,EAAUwS,EAAUhb,GAAKyL,GAElC,OAAOA,EAsCWwP,CACfzS,GAAY,IACZ1F,EAAQmE,SAAW,CAAEnE,GAAYA,EACjC,IAIDoY,GAAYrE,IAAe/F,GAAStI,EAEnCQ,EADAqR,GAAUrR,EAAO6R,EAAQhE,EAAW/T,EAAS4U,GAG9CyD,EAAa7C,EAGZoC,IAAgB5J,EAAO+F,EAAYkE,GAAeN,GAGjD,GAGAhP,EACDyP,EAQF,GALK5C,GACJA,EAAS4C,EAAWC,EAAYrY,EAAS4U,GAIrC+C,EAMJ,IALAG,EAAOP,GAAUc,EAAYL,GAC7BL,EAAYG,EAAM,GAAI9X,EAAS4U,GAG/B1X,EAAI4a,EAAKlW,OACD1E,MACAuJ,EAAOqR,EAAM5a,MACnBmb,EAAYL,EAAS9a,MAAWkb,EAAWJ,EAAS9a,IAAQuJ,IAK/D,GAAKuH,GACJ,GAAK4J,GAAc7D,EAAY,CAC9B,GAAK6D,EAAa,CAKjB,IAFAE,EAAO,GACP5a,EAAImb,EAAWzW,OACP1E,MACAuJ,EAAO4R,EAAYnb,KAGzB4a,EAAKrV,KAAQ2V,EAAWlb,GAAMuJ,GAGhCmR,EAAY,KAAQS,EAAa,GAAMP,EAAMlD,GAK9C,IADA1X,EAAImb,EAAWzW,OACP1E,MACAuJ,EAAO4R,EAAYnb,MACvB4a,EAAOF,EAAalU,EAASsK,EAAMvH,GAASsR,EAAQ7a,KAAS,IAE/D8Q,EAAM8J,KAAYnP,EAASmP,GAASrR,UAOvC4R,EAAad,GACZc,IAAe1P,EACd0P,EAAW/Q,OAAQ2Q,EAAaI,EAAWzW,QAC3CyW,GAEGT,EACJA,EAAY,KAAMjP,EAAS0P,EAAYzD,GAEvCnS,EAAKgB,MAAOkF,EAAS0P,MAMzB,SAASC,GAAmBzB,GAyB3B,IAxBA,IAAI0B,EAAc/C,EAASrO,EAC1BD,EAAM2P,EAAOjV,OACb4W,EAAkBhP,EAAKsK,SAAU+C,EAAQ,GAAIrV,MAC7CiX,EAAmBD,GAAmBhP,EAAKsK,SAAU,KACrD5W,EAAIsb,EAAkB,EAAI,EAG1BE,EAAelL,IAAe,SAAU/G,GACvC,OAAOA,IAAS8R,IACdE,GAAkB,GACrBE,EAAkBnL,IAAe,SAAU/G,GAC1C,OAAO/C,EAAS6U,EAAc9R,IAAU,IACtCgS,GAAkB,GACrBnB,EAAW,CAAE,SAAU7Q,EAAMzG,EAAS4U,GACrC,IAAIzO,GAASqS,IAAqB5D,GAAO5U,IAAY8J,MAClDyO,EAAevY,GAAUmE,SAC1BuU,EAAcjS,EAAMzG,EAAS4U,GAC7B+D,EAAiBlS,EAAMzG,EAAS4U,IAIlC,OADA2D,EAAe,KACRpS,IAGDjJ,EAAIgK,EAAKhK,IAChB,GAAOsY,EAAUhM,EAAKsK,SAAU+C,EAAQ3Z,GAAIsE,MAC3C8V,EAAW,CAAE9J,GAAe6J,GAAgBC,GAAY9B,QAClD,CAIN,IAHAA,EAAUhM,EAAKiI,OAAQoF,EAAQ3Z,GAAIsE,MAAOiC,MAAO,KAAMoT,EAAQ3Z,GAAI6L,UAGrDjB,GAAY,CAIzB,IADAX,IAAMjK,EACEiK,EAAID,IACNsC,EAAKsK,SAAU+C,EAAQ1P,GAAI3F,MADhB2F,KAKjB,OAAOuQ,GACNxa,EAAI,GAAKma,GAAgBC,GACzBpa,EAAI,GAAK8R,GAGT6H,EACEtT,MAAO,EAAGrG,EAAI,GACd+D,OAAQ,CAAE9C,MAAgC,MAAzB0Y,EAAQ3Z,EAAI,GAAIsE,KAAe,IAAM,MACtDyG,QAAS4D,EAAO,MAClB2J,EACAtY,EAAIiK,GAAKmR,GAAmBzB,EAAOtT,MAAOrG,EAAGiK,IAC7CA,EAAID,GAAOoR,GAAqBzB,EAASA,EAAOtT,MAAO4D,IACvDA,EAAID,GAAO8H,GAAY6H,IAGzBS,EAAS7U,KAAM+S,GAIjB,OAAO6B,GAAgBC,GAoTxB,OAtpBAjC,GAAWvW,UAAY0K,EAAKoP,QAAUpP,EAAKkC,QAC3ClC,EAAK6L,WAAa,IAAIA,GAEtB1L,EAAWJ,GAAOI,SAAW,SAAUjE,EAAUmT,GAChD,IAAItD,EAASrH,EAAO2I,EAAQrV,EAC3BsX,EAAO3K,EAAQ4K,EACfC,EAASnO,EAAYnF,EAAW,KAEjC,GAAKsT,EACJ,OAAOH,EAAY,EAAIG,EAAOzV,MAAO,GAOtC,IAJAuV,EAAQpT,EACRyI,EAAS,GACT4K,EAAavP,EAAKuK,UAEV+E,GAAQ,CA2Bf,IAAMtX,KAxBA+T,KAAarH,EAAQpC,EAAOyC,KAAMuK,MAClC5K,IAGJ4K,EAAQA,EAAMvV,MAAO2K,EAAO,GAAItM,SAAYkX,GAE7C3K,EAAO1L,KAAQoU,EAAS,KAGzBtB,GAAU,GAGHrH,EAAQnC,EAAawC,KAAMuK,MACjCvD,EAAUrH,EAAMsB,QAChBqH,EAAOpU,KAAM,CACZtE,MAAOoX,EAGP/T,KAAM0M,EAAO,GAAIjG,QAAS4D,EAAO,OAElCiN,EAAQA,EAAMvV,MAAOgS,EAAQ3T,SAIhB4H,EAAKiI,SACXvD,EAAQ/B,EAAW3K,GAAO+M,KAAMuK,KAAgBC,EAAYvX,MAChE0M,EAAQ6K,EAAYvX,GAAQ0M,MAC9BqH,EAAUrH,EAAMsB,QAChBqH,EAAOpU,KAAM,CACZtE,MAAOoX,EACP/T,KAAMA,EACNuH,QAASmF,IAEV4K,EAAQA,EAAMvV,MAAOgS,EAAQ3T,SAI/B,IAAM2T,EACL,MAOF,OAAOsD,EACNC,EAAMlX,OACNkX,EACCvP,GAAOpB,MAAOzC,GAGdmF,EAAYnF,EAAUyI,GAAS5K,MAAO,IA4ZzCqG,EAAUL,GAAOK,QAAU,SAAUlE,EAAUwI,GAC9C,IAAIhR,EACH+b,EAAc,GACdC,EAAkB,GAClBF,EAASlO,EAAepF,EAAW,KAEpC,IAAMsT,EAAS,CAOd,IAJM9K,IACLA,EAAQvE,EAAUjE,IAEnBxI,EAAIgR,EAAMtM,OACF1E,MACP8b,EAASV,GAAmBpK,EAAOhR,KACtB4K,GACZmR,EAAYxW,KAAMuW,GAElBE,EAAgBzW,KAAMuW,IAKxBA,EAASlO,EACRpF,EArJH,SAAmCwT,EAAiBD,GACnD,IAAIE,EAAQF,EAAYrX,OAAS,EAChCwX,EAAYF,EAAgBtX,OAAS,EACrCyX,EAAe,SAAUrL,EAAMhO,EAAS4U,EAAKjM,EAAS2Q,GACrD,IAAI7S,EAAMU,EAAGqO,EACZ+D,EAAe,EACfrc,EAAI,IACJuY,EAAYzH,GAAQ,GACpBwL,EAAa,GACbC,EAAgB3P,EAGhB5D,EAAQ8H,GAAQoL,GAAa5P,EAAKmI,KAAY,IAAG,IAAK2H,GAGtDI,EAAkBjP,GAA4B,MAAjBgP,EAAwB,EAAI1R,KAAKC,UAAY,GAC1Ed,EAAMhB,EAAMtE,OAcb,IAZK0X,IAMJxP,EAAmB9J,GAAW+C,GAAY/C,GAAWsZ,GAM9Cpc,IAAMgK,GAAgC,OAAvBT,EAAOP,EAAOhJ,IAAeA,IAAM,CACzD,GAAKkc,GAAa3S,EAAO,CAWxB,IAVAU,EAAI,EAMEnH,GAAWyG,EAAK6H,eAAiBvL,IACtCkH,EAAaxD,GACbmO,GAAOzK,GAEEqL,EAAU0D,EAAiB/R,MACpC,GAAKqO,EAAS/O,EAAMzG,GAAW+C,EAAU6R,GAAQ,CAChDjM,EAAQlG,KAAMgE,GACd,MAGG6S,IACJ7O,EAAUiP,GAKPP,KAGG1S,GAAQ+O,GAAW/O,IACzB8S,IAIIvL,GACJyH,EAAUhT,KAAMgE,IAgBnB,GATA8S,GAAgBrc,EASXic,GAASjc,IAAMqc,EAAe,CAElC,IADApS,EAAI,EACMqO,EAAUyD,EAAa9R,MAChCqO,EAASC,EAAW+D,EAAYxZ,EAAS4U,GAG1C,GAAK5G,EAAO,CAGX,GAAKuL,EAAe,EACnB,KAAQrc,KACCuY,EAAWvY,IAAOsc,EAAYtc,KACrCsc,EAAYtc,GAAMiO,EAAI9N,KAAMsL,IAM/B6Q,EAAajC,GAAUiC,GAIxB/W,EAAKgB,MAAOkF,EAAS6Q,GAGhBF,IAActL,GAAQwL,EAAW5X,OAAS,GAC5C2X,EAAeN,EAAYrX,OAAW,GAExC2H,GAAO8J,WAAY1K,GAUrB,OALK2Q,IACJ7O,EAAUiP,EACV5P,EAAmB2P,GAGbhE,GAGT,OAAO0D,EACN1J,GAAc4J,GACdA,EA4BCM,CAA0BT,EAAiBD,KAIrCvT,SAAWA,EAEnB,OAAOsT,GAYRnP,EAASN,GAAOM,OAAS,SAAUnE,EAAU1F,EAAS2I,EAASqF,GAC9D,IAAI9Q,EAAG2Z,EAAQ+C,EAAOpY,EAAMmQ,EAC3BkI,EAA+B,mBAAbnU,GAA2BA,EAC7CwI,GAASF,GAAQrE,EAAYjE,EAAWmU,EAASnU,UAAYA,GAM9D,GAJAiD,EAAUA,GAAW,GAIC,IAAjBuF,EAAMtM,OAAe,CAIzB,IADAiV,EAAS3I,EAAO,GAAMA,EAAO,GAAI3K,MAAO,IAC5B3B,OAAS,GAAsC,QAA/BgY,EAAQ/C,EAAQ,IAAMrV,MAC5B,IAArBxB,EAAQmE,UAAkBgG,GAAkBX,EAAKsK,SAAU+C,EAAQ,GAAIrV,MAAS,CAIhF,KAFAxB,GAAYwJ,EAAKmI,KAAW,GAAGiI,EAAM7Q,QAAS,GAC5Cd,QAASyE,GAAWC,IAAa3M,IAAa,IAAM,IAErD,OAAO2I,EAGIkR,IACX7Z,EAAUA,EAAQsF,YAGnBI,EAAWA,EAASnC,MAAOsT,EAAOrH,QAAQrR,MAAMyD,QAKjD,IADA1E,EAAIiP,EAA0B,aAAE0C,KAAMnJ,GAAa,EAAImR,EAAOjV,OACtD1E,MACP0c,EAAQ/C,EAAQ3Z,IAGXsM,EAAKsK,SAAYtS,EAAOoY,EAAMpY,QAGnC,IAAOmQ,EAAOnI,EAAKmI,KAAMnQ,MAGjBwM,EAAO2D,EACbiI,EAAM7Q,QAAS,GAAId,QAASyE,GAAWC,IACvCF,GAASoC,KAAMgI,EAAQ,GAAIrV,OAAUsN,GAAa9O,EAAQsF,aACzDtF,IACI,CAKL,GAFA6W,EAAOvP,OAAQpK,EAAG,KAClBwI,EAAWsI,EAAKpM,QAAUoN,GAAY6H,IAGrC,OADApU,EAAKgB,MAAOkF,EAASqF,GACdrF,EAGR,OAeJ,OAPEkR,GAAYjQ,EAASlE,EAAUwI,IAChCF,EACAhO,GACCmK,EACDxB,GACC3I,GAAWyM,GAASoC,KAAMnJ,IAAcoJ,GAAa9O,EAAQsF,aAAgBtF,GAExE2I,GAMR3E,EAAQwP,WAAa1L,EAAQsB,MAAO,IAAK/B,KAAM2D,GAAYiE,KAAM,MAASnH,EAI1E9D,EAAQuP,mBAAqBvJ,EAG7BC,IAIAjG,EAAQ2O,aAAejD,IAAQ,SAAUC,GAGxC,OAA4E,EAArEA,EAAG4C,wBAAyBxP,EAASiC,cAAe,gBAMtD0K,IAAQ,SAAUC,GAEvB,OADAA,EAAGqC,UAAY,mBACiC,MAAzCrC,EAAG+D,WAAWxO,aAAc,YAEnC0K,GAAW,0BAA0B,SAAUnJ,EAAMhJ,EAAMiM,GAC1D,IAAMA,EACL,OAAOjD,EAAKvB,aAAczH,EAA6B,SAAvBA,EAAK6L,cAA2B,EAAI,MAOjEtF,EAAQyH,YAAeiE,IAAQ,SAAUC,GAG9C,OAFAA,EAAGqC,UAAY,WACfrC,EAAG+D,WAAWvO,aAAc,QAAS,IACY,KAA1CwK,EAAG+D,WAAWxO,aAAc,aAEnC0K,GAAW,SAAS,SAAUnJ,EAAMqT,EAAOpQ,GAC1C,IAAMA,GAAyC,UAAhCjD,EAAKiH,SAASpE,cAC5B,OAAO7C,EAAKsT,gBAOTrK,IAAQ,SAAUC,GACvB,OAAwC,MAAjCA,EAAGzK,aAAc,gBAExB0K,GAAWtE,GAAU,SAAU7E,EAAMhJ,EAAMiM,GAC1C,IAAI5E,EACJ,IAAM4E,EACL,OAAwB,IAAjBjD,EAAMhJ,GAAkBA,EAAK6L,eACjCxE,EAAM2B,EAAKmL,iBAAkBnU,KAAYqH,EAAIqO,UAC9CrO,EAAI3G,MACJ,QAKEoL,GA14EP,CA44EKrG,GAILuC,EAAOkM,KAAOpI,EACd9D,EAAOuN,KAAOzJ,EAAOqK,UAGrBnO,EAAOuN,KAAM,KAAQvN,EAAOuN,KAAKtH,QACjCjG,EAAO4N,WAAa5N,EAAOuU,OAASzQ,EAAO8J,WAC3C5N,EAAOR,KAAOsE,EAAOE,QACrBhE,EAAOwU,SAAW1Q,EAAOG,MACzBjE,EAAO6E,SAAWf,EAAOe,SACzB7E,EAAOyU,eAAiB3Q,EAAOqD,OAK/B,IAAIe,EAAM,SAAUlH,EAAMkH,EAAKwM,GAI9B,IAHA,IAAI5E,EAAU,GACb6E,OAAqBjY,IAAVgY,GAEF1T,EAAOA,EAAMkH,KAA6B,IAAlBlH,EAAKtC,UACtC,GAAuB,IAAlBsC,EAAKtC,SAAiB,CAC1B,GAAKiW,GAAY3U,EAAQgB,GAAO4T,GAAIF,GACnC,MAED5E,EAAQ9S,KAAMgE,GAGhB,OAAO8O,GAIJ+E,EAAW,SAAU3b,EAAG8H,GAG3B,IAFA,IAAI8O,EAAU,GAEN5W,EAAGA,EAAIA,EAAEyR,YACI,IAAfzR,EAAEwF,UAAkBxF,IAAM8H,GAC9B8O,EAAQ9S,KAAM9D,GAIhB,OAAO4W,GAIJgF,EAAgB9U,EAAOuN,KAAK9E,MAAMsM,aAItC,SAAS9M,EAAUjH,EAAMhJ,GAExB,OAAOgJ,EAAKiH,UAAYjH,EAAKiH,SAASpE,gBAAkB7L,EAAK6L,cAG9D,IAAImR,EAAa,kEAKjB,SAASC,EAAQzH,EAAU0H,EAAWC,GACrC,OAAK3W,EAAY0W,GACTlV,EAAOsB,KAAMkM,GAAU,SAAUxM,EAAMvJ,GAC7C,QAASyd,EAAUtd,KAAMoJ,EAAMvJ,EAAGuJ,KAAWmU,KAK1CD,EAAUxW,SACPsB,EAAOsB,KAAMkM,GAAU,SAAUxM,GACvC,OAASA,IAASkU,IAAgBC,KAKV,iBAAdD,EACJlV,EAAOsB,KAAMkM,GAAU,SAAUxM,GACvC,OAAS/C,EAAQrG,KAAMsd,EAAWlU,IAAU,IAAQmU,KAK/CnV,EAAOgM,OAAQkJ,EAAW1H,EAAU2H,GAG5CnV,EAAOgM,OAAS,SAAUuB,EAAM9M,EAAO0U,GACtC,IAAInU,EAAOP,EAAO,GAMlB,OAJK0U,IACJ5H,EAAO,QAAUA,EAAO,KAGH,IAAjB9M,EAAMtE,QAAkC,IAAlB6E,EAAKtC,SACxBsB,EAAOkM,KAAKM,gBAAiBxL,EAAMuM,GAAS,CAAEvM,GAAS,GAGxDhB,EAAOkM,KAAK5I,QAASiK,EAAMvN,EAAOsB,KAAMb,GAAO,SAAUO,GAC/D,OAAyB,IAAlBA,EAAKtC,cAIdsB,EAAOE,GAAG4B,OAAQ,CACjBoK,KAAM,SAAUjM,GACf,IAAIxI,EAAGiJ,EACNe,EAAMjH,KAAK2B,OACXE,EAAO7B,KAER,GAAyB,iBAAbyF,EACX,OAAOzF,KAAKgG,UAAWR,EAAQC,GAAW+L,QAAQ,WACjD,IAAMvU,EAAI,EAAGA,EAAIgK,EAAKhK,IACrB,GAAKuI,EAAO6E,SAAUxI,EAAM5E,GAAK+C,MAChC,OAAO,MAQX,IAFAkG,EAAMlG,KAAKgG,UAAW,IAEhB/I,EAAI,EAAGA,EAAIgK,EAAKhK,IACrBuI,EAAOkM,KAAMjM,EAAU5D,EAAM5E,GAAKiJ,GAGnC,OAAOe,EAAM,EAAIzB,EAAO4N,WAAYlN,GAAQA,GAE7CsL,OAAQ,SAAU/L,GACjB,OAAOzF,KAAKgG,UAAWyU,EAAQza,KAAMyF,GAAY,IAAI,KAEtDkV,IAAK,SAAUlV,GACd,OAAOzF,KAAKgG,UAAWyU,EAAQza,KAAMyF,GAAY,IAAI,KAEtD2U,GAAI,SAAU3U,GACb,QAASgV,EACRza,KAIoB,iBAAbyF,GAAyB6U,EAAc1L,KAAMnJ,GACnDD,EAAQC,GACRA,GAAY,IACb,GACC9D,UASJ,IAAIiZ,EAMHrO,EAAa,uCAEN/G,EAAOE,GAAGC,KAAO,SAAUF,EAAU1F,EAAS+B,GACpD,IAAImM,EAAOzH,EAGX,IAAMf,EACL,OAAOzF,KAQR,GAHA8B,EAAOA,GAAQ8Y,EAGU,iBAAbnV,EAAwB,CAanC,KAPCwI,EALsB,MAAlBxI,EAAU,IACsB,MAApCA,EAAUA,EAAS9D,OAAS,IAC5B8D,EAAS9D,QAAU,EAGX,CAAE,KAAM8D,EAAU,MAGlB8G,EAAW+B,KAAM7I,MAIVwI,EAAO,IAAQlO,EA6CxB,OAAMA,GAAWA,EAAQ6F,QACtB7F,GAAW+B,GAAO4P,KAAMjM,GAK1BzF,KAAK6F,YAAa9F,GAAU2R,KAAMjM,GAhDzC,GAAKwI,EAAO,GAAM,CAYjB,GAXAlO,EAAUA,aAAmByF,EAASzF,EAAS,GAAMA,EAIrDyF,EAAOW,MAAOnG,KAAMwF,EAAOqV,UAC1B5M,EAAO,GACPlO,GAAWA,EAAQmE,SAAWnE,EAAQsO,eAAiBtO,EAAU+C,GACjE,IAII0X,EAAW5L,KAAMX,EAAO,KAASzI,EAAOoC,cAAe7H,GAC3D,IAAMkO,KAASlO,EAGTiE,EAAYhE,KAAMiO,IACtBjO,KAAMiO,GAASlO,EAASkO,IAIxBjO,KAAKiT,KAAMhF,EAAOlO,EAASkO,IAK9B,OAAOjO,KAYP,OARAwG,EAAO1D,EAASyL,eAAgBN,EAAO,OAKtCjO,KAAM,GAAMwG,EACZxG,KAAK2B,OAAS,GAER3B,KAcH,OAAKyF,EAASvB,UACpBlE,KAAM,GAAMyF,EACZzF,KAAK2B,OAAS,EACP3B,MAIIgE,EAAYyB,QACDvD,IAAfJ,EAAKgZ,MACXhZ,EAAKgZ,MAAOrV,GAGZA,EAAUD,GAGLA,EAAOiD,UAAWhD,EAAUzF,QAIhCnB,UAAY2G,EAAOE,GAGxBkV,EAAapV,EAAQ1C,GAGrB,IAAIiY,EAAe,iCAGlBC,EAAmB,CAClBC,UAAU,EACVC,UAAU,EACVvN,MAAM,EACNwN,MAAM,GAoFR,SAASC,EAASpL,EAAKtC,GACtB,MAAUsC,EAAMA,EAAKtC,KAA4B,IAAjBsC,EAAI9L,WACpC,OAAO8L,EAnFRxK,EAAOE,GAAG4B,OAAQ,CACjB+T,IAAK,SAAU3T,GACd,IAAI4T,EAAU9V,EAAQkC,EAAQ1H,MAC7B9C,EAAIoe,EAAQ3Z,OAEb,OAAO3B,KAAKwR,QAAQ,WAEnB,IADA,IAAIvU,EAAI,EACAA,EAAIC,EAAGD,IACd,GAAKuI,EAAO6E,SAAUrK,KAAMsb,EAASre,IACpC,OAAO,MAMXse,QAAS,SAAU5H,EAAW5T,GAC7B,IAAIiQ,EACH/S,EAAI,EACJC,EAAI8C,KAAK2B,OACT2T,EAAU,GACVgG,EAA+B,iBAAd3H,GAA0BnO,EAAQmO,GAGpD,IAAM2G,EAAc1L,KAAM+E,GACzB,KAAQ1W,EAAIC,EAAGD,IACd,IAAM+S,EAAMhQ,KAAM/C,GAAK+S,GAAOA,IAAQjQ,EAASiQ,EAAMA,EAAI3K,WAGxD,GAAK2K,EAAI9L,SAAW,KAAQoX,EAC3BA,EAAQ5Z,MAAOsO,IAAS,EAGP,IAAjBA,EAAI9L,UACHsB,EAAOkM,KAAKM,gBAAiBhC,EAAK2D,IAAgB,CAEnD2B,EAAQ9S,KAAMwN,GACd,MAMJ,OAAOhQ,KAAKgG,UAAWsP,EAAQ3T,OAAS,EAAI6D,EAAO4N,WAAYkC,GAAYA,IAI5E5T,MAAO,SAAU8E,GAGhB,OAAMA,EAKe,iBAATA,EACJ/C,EAAQrG,KAAMoI,EAAQgB,GAAQxG,KAAM,IAIrCyD,EAAQrG,KAAM4C,KAGpBwG,EAAKZ,OAASY,EAAM,GAAMA,GAZjBxG,KAAM,IAAOA,KAAM,GAAIqF,WAAerF,KAAK0G,QAAQ8U,UAAU7Z,QAAU,GAgBlFrB,IAAK,SAAUmF,EAAU1F,GACxB,OAAOC,KAAKgG,UACXR,EAAO4N,WACN5N,EAAOW,MAAOnG,KAAKlC,MAAO0H,EAAQC,EAAU1F,OAK/C0b,QAAS,SAAUhW,GAClB,OAAOzF,KAAKM,IAAiB,MAAZmF,EAChBzF,KAAKoG,WAAapG,KAAKoG,WAAWoL,OAAQ/L,OAU7CD,EAAOa,KAAM,CACZlG,OAAQ,SAAUqG,GACjB,IAAIrG,EAASqG,EAAKnB,WAClB,OAAOlF,GAA8B,KAApBA,EAAO+D,SAAkB/D,EAAS,MAEpDub,QAAS,SAAUlV,GAClB,OAAOkH,EAAKlH,EAAM,eAEnBmV,aAAc,SAAUnV,EAAM4C,EAAI8Q,GACjC,OAAOxM,EAAKlH,EAAM,aAAc0T,IAEjCvM,KAAM,SAAUnH,GACf,OAAO4U,EAAS5U,EAAM,gBAEvB2U,KAAM,SAAU3U,GACf,OAAO4U,EAAS5U,EAAM,oBAEvBoV,QAAS,SAAUpV,GAClB,OAAOkH,EAAKlH,EAAM,gBAEnBgV,QAAS,SAAUhV,GAClB,OAAOkH,EAAKlH,EAAM,oBAEnBqV,UAAW,SAAUrV,EAAM4C,EAAI8Q,GAC9B,OAAOxM,EAAKlH,EAAM,cAAe0T,IAElC4B,UAAW,SAAUtV,EAAM4C,EAAI8Q,GAC9B,OAAOxM,EAAKlH,EAAM,kBAAmB0T,IAEtCG,SAAU,SAAU7T,GACnB,OAAO6T,GAAY7T,EAAKnB,YAAc,IAAKoO,WAAYjN,IAExDyU,SAAU,SAAUzU,GACnB,OAAO6T,EAAU7T,EAAKiN,aAEvByH,SAAU,SAAU1U,GACnB,OAA6B,MAAxBA,EAAKuV,iBAKT3Y,EAAUoD,EAAKuV,iBAERvV,EAAKuV,iBAMRtO,EAAUjH,EAAM,cACpBA,EAAOA,EAAKwV,SAAWxV,GAGjBhB,EAAOW,MAAO,GAAIK,EAAKoH,gBAE7B,SAAUpQ,EAAMkI,GAClBF,EAAOE,GAAIlI,GAAS,SAAU0c,EAAOzU,GACpC,IAAI6P,EAAU9P,EAAOe,IAAKvG,KAAM0F,EAAIwU,GAuBpC,MArB0B,UAArB1c,EAAK8F,OAAQ,KACjBmC,EAAWyU,GAGPzU,GAAgC,iBAAbA,IACvB6P,EAAU9P,EAAOgM,OAAQ/L,EAAU6P,IAG/BtV,KAAK2B,OAAS,IAGZqZ,EAAkBxd,IACvBgI,EAAO4N,WAAYkC,GAIfyF,EAAanM,KAAMpR,IACvB8X,EAAQ2G,WAIHjc,KAAKgG,UAAWsP,OAGzB,IAAI4G,EAAgB,oBAsOpB,SAASC,EAAUC,GAClB,OAAOA,EAER,SAASC,EAASC,GACjB,MAAMA,EAGP,SAASC,EAAYre,EAAOse,EAASC,EAAQC,GAC5C,IAAIC,EAEJ,IAGMze,GAAS8F,EAAc2Y,EAASze,EAAM0e,SAC1CD,EAAOvf,KAAMc,GAAQuM,KAAM+R,GAAUK,KAAMJ,GAGhCve,GAAS8F,EAAc2Y,EAASze,EAAM4e,MACjDH,EAAOvf,KAAMc,EAAOse,EAASC,GAQ7BD,EAAQhZ,WAAOtB,EAAW,CAAEhE,GAAQoF,MAAOoZ,IAM3C,MAAQxe,GAITue,EAAOjZ,WAAOtB,EAAW,CAAEhE,KAvO7BsH,EAAOuX,UAAY,SAAUpd,GAI5BA,EAA6B,iBAAZA,EAlClB,SAAwBA,GACvB,IAAIhB,EAAS,GAIb,OAHA6G,EAAOa,KAAM1G,EAAQsO,MAAOiO,IAAmB,IAAI,SAAUc,EAAGC,GAC/Dte,EAAQse,IAAS,KAEXte,EA8BNue,CAAevd,GACf6F,EAAO8B,OAAQ,GAAI3H,GAEpB,IACCwd,EAGAC,EAGAC,EAGAC,EAGAlS,EAAO,GAGPmS,EAAQ,GAGRC,GAAe,EAGfC,EAAO,WAQN,IALAH,EAASA,GAAU3d,EAAQ+d,KAI3BL,EAAQF,GAAS,EACTI,EAAM5b,OAAQ6b,GAAe,EAEpC,IADAJ,EAASG,EAAMhO,UACLiO,EAAcpS,EAAKzJ,SAGmC,IAA1DyJ,EAAMoS,GAAcha,MAAO4Z,EAAQ,GAAKA,EAAQ,KACpDzd,EAAQge,cAGRH,EAAcpS,EAAKzJ,OACnByb,GAAS,GAMNzd,EAAQyd,SACbA,GAAS,GAGVD,GAAS,EAGJG,IAIHlS,EADIgS,EACG,GAIA,KAMVvb,EAAO,CAGNvB,IAAK,WA2BJ,OA1BK8K,IAGCgS,IAAWD,IACfK,EAAcpS,EAAKzJ,OAAS,EAC5B4b,EAAM/a,KAAM4a,IAGb,SAAW9c,EAAK6U,GACf3P,EAAOa,KAAM8O,GAAM,SAAU6H,EAAGhU,GAC1BhF,EAAYgF,GACVrJ,EAAQoa,QAAWlY,EAAKwZ,IAAKrS,IAClCoC,EAAK5I,KAAMwG,GAEDA,GAAOA,EAAIrH,QAA4B,WAAlB4D,EAAQyD,IAGxC1I,EAAK0I,MATR,CAYKvC,WAEA2W,IAAWD,GACfM,KAGKzd,MAIR4d,OAAQ,WAYP,OAXApY,EAAOa,KAAMI,WAAW,SAAUuW,EAAGhU,GAEpC,IADA,IAAItH,GACMA,EAAQ8D,EAAOmD,QAASK,EAAKoC,EAAM1J,KAAa,GACzD0J,EAAK/D,OAAQ3F,EAAO,GAGfA,GAAS8b,GACbA,OAIIxd,MAKRqb,IAAK,SAAU3V,GACd,OAAOA,EACNF,EAAOmD,QAASjD,EAAI0F,IAAU,EAC9BA,EAAKzJ,OAAS,GAIhBkc,MAAO,WAIN,OAHKzS,IACJA,EAAO,IAEDpL,MAMR8d,QAAS,WAGR,OAFAR,EAASC,EAAQ,GACjBnS,EAAOgS,EAAS,GACTpd,MAERwN,SAAU,WACT,OAAQpC,GAMT2S,KAAM,WAKL,OAJAT,EAASC,EAAQ,GACXH,GAAWD,IAChB/R,EAAOgS,EAAS,IAEVpd,MAERsd,OAAQ,WACP,QAASA,GAIVU,SAAU,SAAUje,EAASoV,GAS5B,OARMmI,IAELnI,EAAO,CAAEpV,GADToV,EAAOA,GAAQ,IACQ7R,MAAQ6R,EAAK7R,QAAU6R,GAC9CoI,EAAM/a,KAAM2S,GACNgI,GACLM,KAGKzd,MAIRyd,KAAM,WAEL,OADA5b,EAAKmc,SAAUhe,KAAMyG,WACdzG,MAIRqd,MAAO,WACN,QAASA,IAIZ,OAAOxb,GA4CR2D,EAAO8B,OAAQ,CAEd2W,SAAU,SAAU5c,GACnB,IAAI6c,EAAS,CAIX,CAAE,SAAU,WAAY1Y,EAAOuX,UAAW,UACzCvX,EAAOuX,UAAW,UAAY,GAC/B,CAAE,UAAW,OAAQvX,EAAOuX,UAAW,eACtCvX,EAAOuX,UAAW,eAAiB,EAAG,YACvC,CAAE,SAAU,OAAQvX,EAAOuX,UAAW,eACrCvX,EAAOuX,UAAW,eAAiB,EAAG,aAExCoB,EAAQ,UACRvB,EAAU,CACTuB,MAAO,WACN,OAAOA,GAERC,OAAQ,WAEP,OADAC,EAAS5T,KAAMhE,WAAYoW,KAAMpW,WAC1BzG,MAER,MAAS,SAAU0F,GAClB,OAAOkX,EAAQE,KAAM,KAAMpX,IAI5B4Y,KAAM,WACL,IAAIC,EAAM9X,UAEV,OAAOjB,EAAOyY,UAAU,SAAUO,GACjChZ,EAAOa,KAAM6X,GAAQ,SAAU9U,EAAIqV,GAGlC,IAAI/Y,EAAK1B,EAAYua,EAAKE,EAAO,MAAWF,EAAKE,EAAO,IAKxDJ,EAAUI,EAAO,KAAO,WACvB,IAAIC,EAAWhZ,GAAMA,EAAGlC,MAAOxD,KAAMyG,WAChCiY,GAAY1a,EAAY0a,EAAS9B,SACrC8B,EAAS9B,UACP+B,SAAUH,EAASI,QACnBnU,KAAM+T,EAAShC,SACfK,KAAM2B,EAAS/B,QAEjB+B,EAAUC,EAAO,GAAM,QACtBze,KACA0F,EAAK,CAAEgZ,GAAajY,iBAKxB8X,EAAM,QACH3B,WAELE,KAAM,SAAU+B,EAAaC,EAAYC,GACxC,IAAIC,EAAW,EACf,SAASxC,EAASna,EAAOgc,EAAUxO,EAASoP,GAC3C,OAAO,WACN,IAAIC,EAAOlf,KACVmV,EAAO1O,UACP0Y,EAAa,WACZ,IAAIT,EAAU5B,EAKd,KAAKza,EAAQ2c,GAAb,CAQA,IAJAN,EAAW7O,EAAQrM,MAAO0b,EAAM/J,MAIdkJ,EAASzB,UAC1B,MAAM,IAAIwC,UAAW,4BAOtBtC,EAAO4B,IAKgB,iBAAbA,GACY,mBAAbA,IACRA,EAAS5B,KAGL9Y,EAAY8Y,GAGXmC,EACJnC,EAAK1f,KACJshB,EACAlC,EAASwC,EAAUX,EAAUlC,EAAU8C,GACvCzC,EAASwC,EAAUX,EAAUhC,EAAS4C,KAOvCD,IAEAlC,EAAK1f,KACJshB,EACAlC,EAASwC,EAAUX,EAAUlC,EAAU8C,GACvCzC,EAASwC,EAAUX,EAAUhC,EAAS4C,GACtCzC,EAASwC,EAAUX,EAAUlC,EAC5BkC,EAASgB,eASPxP,IAAYsM,IAChB+C,OAAOhd,EACPiT,EAAO,CAAEuJ,KAKRO,GAAWZ,EAASiB,aAAeJ,EAAM/J,MAK7CoK,EAAUN,EACTE,EACA,WACC,IACCA,IACC,MAAQtR,GAEJrI,EAAOyY,SAASuB,eACpBha,EAAOyY,SAASuB,cAAe3R,EAC9B0R,EAAQE,YAMLpd,EAAQ,GAAK2c,IAIZnP,IAAYwM,IAChB6C,OAAOhd,EACPiT,EAAO,CAAEtH,IAGVwQ,EAASqB,WAAYR,EAAM/J,MAS3B9S,EACJkd,KAKK/Z,EAAOyY,SAAS0B,eACpBJ,EAAQE,WAAaja,EAAOyY,SAAS0B,gBAEtC1c,EAAO2c,WAAYL,KAKtB,OAAO/Z,EAAOyY,UAAU,SAAUO,GAGjCN,EAAQ,GAAK,GAAI5d,IAChBkc,EACC,EACAgC,EACAxa,EAAY+a,GACXA,EACA5C,EACDqC,EAASa,aAKXnB,EAAQ,GAAK,GAAI5d,IAChBkc,EACC,EACAgC,EACAxa,EAAY6a,GACXA,EACA1C,IAKH+B,EAAQ,GAAK,GAAI5d,IAChBkc,EACC,EACAgC,EACAxa,EAAY8a,GACXA,EACAzC,OAGAO,WAKLA,QAAS,SAAU3Y,GAClB,OAAc,MAAPA,EAAcuB,EAAO8B,OAAQrD,EAAK2Y,GAAYA,IAGvDyB,EAAW,GAkEZ,OA/DA7Y,EAAOa,KAAM6X,GAAQ,SAAUjhB,EAAGwhB,GACjC,IAAIrT,EAAOqT,EAAO,GACjBoB,EAAcpB,EAAO,GAKtB7B,EAAS6B,EAAO,IAAQrT,EAAK9K,IAGxBuf,GACJzU,EAAK9K,KACJ,WAIC6d,EAAQ0B,IAKT3B,EAAQ,EAAIjhB,GAAK,GAAI6gB,QAIrBI,EAAQ,EAAIjhB,GAAK,GAAI6gB,QAGrBI,EAAQ,GAAK,GAAIH,KAGjBG,EAAQ,GAAK,GAAIH,MAOnB3S,EAAK9K,IAAKme,EAAO,GAAIhB,MAKrBY,EAAUI,EAAO,IAAQ,WAExB,OADAJ,EAAUI,EAAO,GAAM,QAAUze,OAASqe,OAAWnc,EAAYlC,KAAMyG,WAChEzG,MAMRqe,EAAUI,EAAO,GAAM,QAAWrT,EAAK4S,YAIxCpB,EAAQA,QAASyB,GAGZhd,GACJA,EAAKjE,KAAMihB,EAAUA,GAIfA,GAIRyB,KAAM,SAAUC,GACf,IAGCC,EAAYvZ,UAAU9E,OAGtB1E,EAAI+iB,EAGJC,EAAkB/e,MAAOjE,GACzBijB,EAAgB5c,EAAMlG,KAAMqJ,WAG5B0Z,EAAU3a,EAAOyY,WAGjBmC,EAAa,SAAUnjB,GACtB,OAAO,SAAUiB,GAChB+hB,EAAiBhjB,GAAM+C,KACvBkgB,EAAejjB,GAAMwJ,UAAU9E,OAAS,EAAI2B,EAAMlG,KAAMqJ,WAAcvI,IAC5D8hB,GACTG,EAAQb,YAAaW,EAAiBC,KAM1C,GAAKF,GAAa,IACjBzD,EAAYwD,EAAaI,EAAQ1V,KAAM2V,EAAYnjB,IAAMuf,QAAS2D,EAAQ1D,QACxEuD,GAGuB,YAApBG,EAAQhC,SACZna,EAAYkc,EAAejjB,IAAOijB,EAAejjB,GAAI6f,OAErD,OAAOqD,EAAQrD,OAKjB,KAAQ7f,KACPsf,EAAY2D,EAAejjB,GAAKmjB,EAAYnjB,GAAKkjB,EAAQ1D,QAG1D,OAAO0D,EAAQvD,aAOjB,IAAIyD,EAAc,yDAElB7a,EAAOyY,SAASuB,cAAgB,SAAUtX,EAAOoY,GAI3Crd,EAAOsd,SAAWtd,EAAOsd,QAAQC,MAAQtY,GAASmY,EAAYzR,KAAM1G,EAAM1K,OAC9EyF,EAAOsd,QAAQC,KAAM,8BAAgCtY,EAAMuY,QAASvY,EAAMoY,MAAOA,IAOnF9a,EAAOkb,eAAiB,SAAUxY,GACjCjF,EAAO2c,YAAY,WAClB,MAAM1X,MAQR,IAAIyY,EAAYnb,EAAOyY,WAkDvB,SAAS2C,IACR9d,EAAS+d,oBAAqB,mBAAoBD,GAClD3d,EAAO4d,oBAAqB,OAAQD,GACpCpb,EAAOsV,QAnDRtV,EAAOE,GAAGoV,MAAQ,SAAUpV,GAY3B,OAVAib,EACE7D,KAAMpX,GAKNob,OAAO,SAAU5Y,GACjB1C,EAAOkb,eAAgBxY,MAGlBlI,MAGRwF,EAAO8B,OAAQ,CAGdW,SAAS,EAIT8Y,UAAW,EAGXjG,MAAO,SAAUkG,KAGF,IAATA,IAAkBxb,EAAOub,UAAYvb,EAAOyC,WAKjDzC,EAAOyC,SAAU,GAGH,IAAT+Y,KAAmBxb,EAAOub,UAAY,GAK3CJ,EAAUrB,YAAaxc,EAAU,CAAE0C,QAIrCA,EAAOsV,MAAMgC,KAAO6D,EAAU7D,KAaD,aAAxBha,EAASme,YACa,YAAxBne,EAASme,aAA6Bne,EAAS+N,gBAAgBqQ,SAGjEje,EAAO2c,WAAYpa,EAAOsV,QAK1BhY,EAASoO,iBAAkB,mBAAoB0P,GAG/C3d,EAAOiO,iBAAkB,OAAQ0P,IAQlC,IAAIO,EAAS,SAAUlb,EAAOP,EAAIlH,EAAKN,EAAOkjB,EAAWC,EAAUC,GAClE,IAAIrkB,EAAI,EACPgK,EAAMhB,EAAMtE,OACZ4f,EAAc,MAAP/iB,EAGR,GAAuB,WAAlB+G,EAAQ/G,GAEZ,IAAMvB,KADNmkB,GAAY,EACD5iB,EACV2iB,EAAQlb,EAAOP,EAAIzI,EAAGuB,EAAKvB,IAAK,EAAMokB,EAAUC,QAI3C,QAAepf,IAAVhE,IACXkjB,GAAY,EAENpd,EAAY9F,KACjBojB,GAAM,GAGFC,IAGCD,GACJ5b,EAAGtI,KAAM6I,EAAO/H,GAChBwH,EAAK,OAIL6b,EAAO7b,EACPA,EAAK,SAAUc,EAAMgb,EAAMtjB,GAC1B,OAAOqjB,EAAKnkB,KAAMoI,EAAQgB,GAAQtI,MAKhCwH,GACJ,KAAQzI,EAAIgK,EAAKhK,IAChByI,EACCO,EAAOhJ,GAAKuB,EAAK8iB,EAChBpjB,EACAA,EAAMd,KAAM6I,EAAOhJ,GAAKA,EAAGyI,EAAIO,EAAOhJ,GAAKuB,KAMhD,OAAK4iB,EACGnb,EAIHsb,EACG7b,EAAGtI,KAAM6I,GAGVgB,EAAMvB,EAAIO,EAAO,GAAKzH,GAAQ6iB,GAKlCI,EAAY,QACfC,EAAa,YAGd,SAASC,EAAYC,EAAMC,GAC1B,OAAOA,EAAOC,cAMf,SAASC,EAAWC,GACnB,OAAOA,EAAOha,QAASyZ,EAAW,OAAQzZ,QAAS0Z,EAAYC,GAEhE,IAAIM,EAAa,SAAUC,GAQ1B,OAA0B,IAAnBA,EAAMhe,UAAqC,IAAnBge,EAAMhe,YAAsBge,EAAMhe,UAMlE,SAASie,IACRniB,KAAK6H,QAAUrC,EAAOqC,QAAUsa,EAAKC,MAGtCD,EAAKC,IAAM,EAEXD,EAAKtjB,UAAY,CAEhBwQ,MAAO,SAAU6S,GAGhB,IAAIhkB,EAAQgkB,EAAOliB,KAAK6H,SA4BxB,OAzBM3J,IACLA,EAAQ,GAKH+jB,EAAYC,KAIXA,EAAMhe,SACVge,EAAOliB,KAAK6H,SAAY3J,EAMxBP,OAAOC,eAAgBskB,EAAOliB,KAAK6H,QAAS,CAC3C3J,MAAOA,EACPmkB,cAAc,MAMXnkB,GAERokB,IAAK,SAAUJ,EAAOK,EAAMrkB,GAC3B,IAAIskB,EACHnT,EAAQrP,KAAKqP,MAAO6S,GAIrB,GAAqB,iBAATK,EACXlT,EAAO0S,EAAWQ,IAAWrkB,OAM7B,IAAMskB,KAAQD,EACblT,EAAO0S,EAAWS,IAAWD,EAAMC,GAGrC,OAAOnT,GAERvR,IAAK,SAAUokB,EAAO1jB,GACrB,YAAe0D,IAAR1D,EACNwB,KAAKqP,MAAO6S,GAGZA,EAAOliB,KAAK6H,UAAaqa,EAAOliB,KAAK6H,SAAWka,EAAWvjB,KAE7D2iB,OAAQ,SAAUe,EAAO1jB,EAAKN,GAa7B,YAAagE,IAAR1D,GACCA,GAAsB,iBAARA,QAAgC0D,IAAVhE,EAElC8B,KAAKlC,IAAKokB,EAAO1jB,IASzBwB,KAAKsiB,IAAKJ,EAAO1jB,EAAKN,QAILgE,IAAVhE,EAAsBA,EAAQM,IAEtCof,OAAQ,SAAUsE,EAAO1jB,GACxB,IAAIvB,EACHoS,EAAQ6S,EAAOliB,KAAK6H,SAErB,QAAe3F,IAAVmN,EAAL,CAIA,QAAanN,IAAR1D,EAAoB,CAkBxBvB,GAXCuB,EAJI0C,MAAMD,QAASzC,GAIbA,EAAI+H,IAAKwb,IAEfvjB,EAAMujB,EAAWvjB,MAIJ6Q,EACZ,CAAE7Q,GACAA,EAAIyP,MAAOiO,IAAmB,IAG1Bva,OAER,KAAQ1E,YACAoS,EAAO7Q,EAAKvB,UAKRiF,IAAR1D,GAAqBgH,EAAO+C,cAAe8G,MAM1C6S,EAAMhe,SACVge,EAAOliB,KAAK6H,cAAY3F,SAEjBggB,EAAOliB,KAAK6H,YAItB4a,QAAS,SAAUP,GAClB,IAAI7S,EAAQ6S,EAAOliB,KAAK6H,SACxB,YAAiB3F,IAAVmN,IAAwB7J,EAAO+C,cAAe8G,KAGvD,IAAIqT,EAAW,IAAIP,EAEfQ,EAAW,IAAIR,EAcfS,EAAS,gCACZC,GAAa,SA2Bd,SAASC,GAAUtc,EAAMhI,EAAK+jB,GAC7B,IAAI/kB,EAIJ,QAAc0E,IAATqgB,GAAwC,IAAlB/b,EAAKtC,SAI/B,GAHA1G,EAAO,QAAUgB,EAAIwJ,QAAS6a,GAAY,OAAQxZ,cAG7B,iBAFrBkZ,EAAO/b,EAAKvB,aAAczH,IAEM,CAC/B,IACC+kB,EApCJ,SAAkBA,GACjB,MAAc,SAATA,GAIS,UAATA,IAIS,SAATA,EACG,KAIHA,KAAUA,EAAO,IACbA,EAGJK,EAAOhU,KAAM2T,GACVQ,KAAKC,MAAOT,GAGbA,GAcGU,CAASV,GACf,MAAQ1U,IAGV8U,EAASL,IAAK9b,EAAMhI,EAAK+jB,QAEzBA,OAAOrgB,EAGT,OAAOqgB,EAGR/c,EAAO8B,OAAQ,CACdmb,QAAS,SAAUjc,GAClB,OAAOmc,EAASF,QAASjc,IAAUkc,EAASD,QAASjc,IAGtD+b,KAAM,SAAU/b,EAAMhJ,EAAM+kB,GAC3B,OAAOI,EAASxB,OAAQ3a,EAAMhJ,EAAM+kB,IAGrCW,WAAY,SAAU1c,EAAMhJ,GAC3BmlB,EAAS/E,OAAQpX,EAAMhJ,IAKxB2lB,MAAO,SAAU3c,EAAMhJ,EAAM+kB,GAC5B,OAAOG,EAASvB,OAAQ3a,EAAMhJ,EAAM+kB,IAGrCa,YAAa,SAAU5c,EAAMhJ,GAC5BklB,EAAS9E,OAAQpX,EAAMhJ,MAIzBgI,EAAOE,GAAG4B,OAAQ,CACjBib,KAAM,SAAU/jB,EAAKN,GACpB,IAAIjB,EAAGO,EAAM+kB,EACZ/b,EAAOxG,KAAM,GACb4P,EAAQpJ,GAAQA,EAAKgF,WAGtB,QAAatJ,IAAR1D,EAAoB,CACxB,GAAKwB,KAAK2B,SACT4gB,EAAOI,EAAS7kB,IAAK0I,GAEE,IAAlBA,EAAKtC,WAAmBwe,EAAS5kB,IAAK0I,EAAM,iBAAmB,CAEnE,IADAvJ,EAAI2S,EAAMjO,OACF1E,KAIF2S,EAAO3S,IAEsB,KADjCO,EAAOoS,EAAO3S,GAAIO,MACRiG,QAAS,WAClBjG,EAAOukB,EAAWvkB,EAAK8F,MAAO,IAC9Bwf,GAAUtc,EAAMhJ,EAAM+kB,EAAM/kB,KAI/BklB,EAASJ,IAAK9b,EAAM,gBAAgB,GAItC,OAAO+b,EAIR,MAAoB,iBAAR/jB,EACJwB,KAAKqG,MAAM,WACjBsc,EAASL,IAAKtiB,KAAMxB,MAIf2iB,EAAQnhB,MAAM,SAAU9B,GAC9B,IAAIqkB,EAOJ,GAAK/b,QAAkBtE,IAAVhE,EAKZ,YAAcgE,KADdqgB,EAAOI,EAAS7kB,IAAK0I,EAAMhI,UAQb0D,KADdqgB,EAAOO,GAAUtc,EAAMhI,IALf+jB,OAWR,EAIDviB,KAAKqG,MAAM,WAGVsc,EAASL,IAAKtiB,KAAMxB,EAAKN,QAExB,KAAMA,EAAOuI,UAAU9E,OAAS,EAAG,MAAM,IAG7CuhB,WAAY,SAAU1kB,GACrB,OAAOwB,KAAKqG,MAAM,WACjBsc,EAAS/E,OAAQ5d,KAAMxB,SAM1BgH,EAAO8B,OAAQ,CACdiW,MAAO,SAAU/W,EAAMjF,EAAMghB,GAC5B,IAAIhF,EAEJ,GAAK/W,EAYJ,OAXAjF,GAASA,GAAQ,MAAS,QAC1Bgc,EAAQmF,EAAS5kB,IAAK0I,EAAMjF,GAGvBghB,KACEhF,GAASrc,MAAMD,QAASshB,GAC7BhF,EAAQmF,EAASvB,OAAQ3a,EAAMjF,EAAMiE,EAAOiD,UAAW8Z,IAEvDhF,EAAM/a,KAAM+f,IAGPhF,GAAS,IAIlB8F,QAAS,SAAU7c,EAAMjF,GACxBA,EAAOA,GAAQ,KAEf,IAAIgc,EAAQ/X,EAAO+X,MAAO/W,EAAMjF,GAC/B+hB,EAAc/F,EAAM5b,OACpB+D,EAAK6X,EAAMhO,QACXgU,EAAQ/d,EAAOge,YAAahd,EAAMjF,GAMvB,eAAPmE,IACJA,EAAK6X,EAAMhO,QACX+T,KAGI5d,IAIU,OAATnE,GACJgc,EAAMzK,QAAS,qBAITyQ,EAAME,KACb/d,EAAGtI,KAAMoJ,GApBF,WACNhB,EAAO6d,QAAS7c,EAAMjF,KAmBFgiB,KAGhBD,GAAeC,GACpBA,EAAM1F,MAAMJ,QAKd+F,YAAa,SAAUhd,EAAMjF,GAC5B,IAAI/C,EAAM+C,EAAO,aACjB,OAAOmhB,EAAS5kB,IAAK0I,EAAMhI,IAASkkB,EAASvB,OAAQ3a,EAAMhI,EAAK,CAC/Dqf,MAAOrY,EAAOuX,UAAW,eAAgBzc,KAAK,WAC7CoiB,EAAS9E,OAAQpX,EAAM,CAAEjF,EAAO,QAAS/C,YAM7CgH,EAAOE,GAAG4B,OAAQ,CACjBiW,MAAO,SAAUhc,EAAMghB,GACtB,IAAImB,EAAS,EAQb,MANqB,iBAATniB,IACXghB,EAAOhhB,EACPA,EAAO,KACPmiB,KAGIjd,UAAU9E,OAAS+hB,EAChBle,EAAO+X,MAAOvd,KAAM,GAAKuB,QAGjBW,IAATqgB,EACNviB,KACAA,KAAKqG,MAAM,WACV,IAAIkX,EAAQ/X,EAAO+X,MAAOvd,KAAMuB,EAAMghB,GAGtC/c,EAAOge,YAAaxjB,KAAMuB,GAEZ,OAATA,GAAgC,eAAfgc,EAAO,IAC5B/X,EAAO6d,QAASrjB,KAAMuB,OAI1B8hB,QAAS,SAAU9hB,GAClB,OAAOvB,KAAKqG,MAAM,WACjBb,EAAO6d,QAASrjB,KAAMuB,OAGxBoiB,WAAY,SAAUpiB,GACrB,OAAOvB,KAAKud,MAAOhc,GAAQ,KAAM,KAKlCqb,QAAS,SAAUrb,EAAM0C,GACxB,IAAI4N,EACH+R,EAAQ,EACRC,EAAQre,EAAOyY,WACfjL,EAAWhT,KACX/C,EAAI+C,KAAK2B,OACT6a,EAAU,aACCoH,GACTC,EAAMvE,YAAatM,EAAU,CAAEA,KAUlC,IANqB,iBAATzR,IACX0C,EAAM1C,EACNA,OAAOW,GAERX,EAAOA,GAAQ,KAEPtE,MACP4U,EAAM6Q,EAAS5kB,IAAKkV,EAAU/V,GAAKsE,EAAO,gBAC9BsQ,EAAIgM,QACf+F,IACA/R,EAAIgM,MAAMvd,IAAKkc,IAIjB,OADAA,IACOqH,EAAMjH,QAAS3Y,MAGxB,IAAI6f,GAAO,sCAA0CC,OAEjDC,GAAU,IAAIrY,OAAQ,iBAAmBmY,GAAO,cAAe,KAG/DG,GAAY,CAAE,MAAO,QAAS,SAAU,QAExCpT,GAAkB/N,EAAS+N,gBAI1BqT,GAAa,SAAU1d,GACzB,OAAOhB,EAAO6E,SAAU7D,EAAK6H,cAAe7H,IAE7C2d,GAAW,CAAEA,UAAU,GAOnBtT,GAAgBuT,cACpBF,GAAa,SAAU1d,GACtB,OAAOhB,EAAO6E,SAAU7D,EAAK6H,cAAe7H,IAC3CA,EAAK4d,YAAaD,MAAe3d,EAAK6H,gBAG1C,IAAIgW,GAAqB,SAAU7d,EAAMkJ,GAOvC,MAA8B,UAH9BlJ,EAAOkJ,GAAMlJ,GAGD8d,MAAMC,SACM,KAAvB/d,EAAK8d,MAAMC,SAMXL,GAAY1d,IAEsB,SAAlChB,EAAOgf,IAAKhe,EAAM,YAKrB,SAASie,GAAWje,EAAMgc,EAAMkC,EAAYC,GAC3C,IAAIC,EAAUC,EACbC,EAAgB,GAChBC,EAAeJ,EACd,WACC,OAAOA,EAAM3U,OAEd,WACC,OAAOxK,EAAOgf,IAAKhe,EAAMgc,EAAM,KAEjCwC,EAAUD,IACVE,EAAOP,GAAcA,EAAY,KAASlf,EAAO0f,UAAW1C,GAAS,GAAK,MAG1E2C,EAAgB3e,EAAKtC,WAClBsB,EAAO0f,UAAW1C,IAAmB,OAATyC,IAAkBD,IAChDhB,GAAQ1V,KAAM9I,EAAOgf,IAAKhe,EAAMgc,IAElC,GAAK2C,GAAiBA,EAAe,KAAQF,EAAO,CAYnD,IARAD,GAAoB,EAGpBC,EAAOA,GAAQE,EAAe,GAG9BA,GAAiBH,GAAW,EAEpBF,KAIPtf,EAAO8e,MAAO9d,EAAMgc,EAAM2C,EAAgBF,IACnC,EAAIJ,IAAY,GAAMA,EAAQE,IAAiBC,GAAW,MAAW,IAC3EF,EAAgB,GAEjBK,GAAgCN,EAIjCM,GAAgC,EAChC3f,EAAO8e,MAAO9d,EAAMgc,EAAM2C,EAAgBF,GAG1CP,EAAaA,GAAc,GAgB5B,OAbKA,IACJS,GAAiBA,IAAkBH,GAAW,EAG9CJ,EAAWF,EAAY,GACtBS,GAAkBT,EAAY,GAAM,GAAMA,EAAY,IACrDA,EAAY,GACTC,IACJA,EAAMM,KAAOA,EACbN,EAAMrjB,MAAQ6jB,EACdR,EAAMxd,IAAMyd,IAGPA,EAIR,IAAIQ,GAAoB,GAExB,SAASC,GAAmB7e,GAC3B,IAAIqR,EACHjT,EAAM4B,EAAK6H,cACXZ,EAAWjH,EAAKiH,SAChB8W,EAAUa,GAAmB3X,GAE9B,OAAK8W,IAIL1M,EAAOjT,EAAI0gB,KAAKlgB,YAAaR,EAAIG,cAAe0I,IAChD8W,EAAU/e,EAAOgf,IAAK3M,EAAM,WAE5BA,EAAKxS,WAAWC,YAAauS,GAEZ,SAAZ0M,IACJA,EAAU,SAEXa,GAAmB3X,GAAa8W,EAEzBA,GAGR,SAASgB,GAAUvS,EAAUwS,GAO5B,IANA,IAAIjB,EAAS/d,EACZif,EAAS,GACT/jB,EAAQ,EACRC,EAASqR,EAASrR,OAGXD,EAAQC,EAAQD,KACvB8E,EAAOwM,EAAUtR,IACN4iB,QAIXC,EAAU/d,EAAK8d,MAAMC,QAChBiB,GAKa,SAAZjB,IACJkB,EAAQ/jB,GAAUghB,EAAS5kB,IAAK0I,EAAM,YAAe,KAC/Cif,EAAQ/jB,KACb8E,EAAK8d,MAAMC,QAAU,KAGK,KAAvB/d,EAAK8d,MAAMC,SAAkBF,GAAoB7d,KACrDif,EAAQ/jB,GAAU2jB,GAAmB7e,KAGrB,SAAZ+d,IACJkB,EAAQ/jB,GAAU,OAGlBghB,EAASJ,IAAK9b,EAAM,UAAW+d,KAMlC,IAAM7iB,EAAQ,EAAGA,EAAQC,EAAQD,IACR,MAAnB+jB,EAAQ/jB,KACZsR,EAAUtR,GAAQ4iB,MAAMC,QAAUkB,EAAQ/jB,IAI5C,OAAOsR,EAGRxN,EAAOE,GAAG4B,OAAQ,CACjBke,KAAM,WACL,OAAOD,GAAUvlB,MAAM,IAExB0lB,KAAM,WACL,OAAOH,GAAUvlB,OAElB2lB,OAAQ,SAAUxH,GACjB,MAAsB,kBAAVA,EACJA,EAAQne,KAAKwlB,OAASxlB,KAAK0lB,OAG5B1lB,KAAKqG,MAAM,WACZge,GAAoBrkB,MACxBwF,EAAQxF,MAAOwlB,OAEfhgB,EAAQxF,MAAO0lB,aAKnB,IAUEE,GACA9T,GAXE+T,GAAiB,wBAEjBC,GAAW,iCAEXC,GAAc,qCAMhBH,GADc9iB,EAASkjB,yBACR5gB,YAAatC,EAASiC,cAAe,SACpD+M,GAAQhP,EAASiC,cAAe,UAM3BG,aAAc,OAAQ,SAC5B4M,GAAM5M,aAAc,UAAW,WAC/B4M,GAAM5M,aAAc,OAAQ,KAE5B0gB,GAAIxgB,YAAa0M,IAIjB/N,EAAQkiB,WAAaL,GAAIM,WAAW,GAAOA,WAAW,GAAOlR,UAAUiB,QAIvE2P,GAAI7T,UAAY,yBAChBhO,EAAQoiB,iBAAmBP,GAAIM,WAAW,GAAOlR,UAAU8E,aAK3D8L,GAAI7T,UAAY,oBAChBhO,EAAQqiB,SAAWR,GAAI5Q,UAKxB,IAAIqR,GAAU,CAKbC,MAAO,CAAE,EAAG,UAAW,YACvBC,IAAK,CAAE,EAAG,oBAAqB,uBAC/BC,GAAI,CAAE,EAAG,iBAAkB,oBAC3BC,GAAI,CAAE,EAAG,qBAAsB,yBAE/BC,SAAU,CAAE,EAAG,GAAI,KAYpB,SAASC,GAAQ5mB,EAAS6R,GAIzB,IAAI1L,EAYJ,OATCA,OAD4C,IAAjCnG,EAAQ0O,qBACb1O,EAAQ0O,qBAAsBmD,GAAO,UAEI,IAA7B7R,EAAQkP,iBACpBlP,EAAQkP,iBAAkB2C,GAAO,KAGjC,QAGM1P,IAAR0P,GAAqBA,GAAOnE,EAAU1N,EAAS6R,GAC5CpM,EAAOW,MAAO,CAAEpG,GAAWmG,GAG5BA,EAKR,SAAS0gB,GAAe3gB,EAAO4gB,GAI9B,IAHA,IAAI5pB,EAAI,EACPC,EAAI+I,EAAMtE,OAEH1E,EAAIC,EAAGD,IACdylB,EAASJ,IACRrc,EAAOhJ,GACP,cACC4pB,GAAenE,EAAS5kB,IAAK+oB,EAAa5pB,GAAK,eA1CnDopB,GAAQS,MAAQT,GAAQU,MAAQV,GAAQW,SAAWX,GAAQY,QAAUZ,GAAQC,MAC7ED,GAAQa,GAAKb,GAAQI,GAGf1iB,EAAQqiB,SACbC,GAAQc,SAAWd,GAAQD,OAAS,CAAE,EAAG,+BAAgC,cA2C1E,IAAIja,GAAQ,YAEZ,SAASib,GAAenhB,EAAOlG,EAASsnB,EAASC,EAAWC,GAO3D,IANA,IAAI/gB,EAAMqL,EAAKD,EAAK4V,EAAMC,EAAUvgB,EACnCwgB,EAAW3nB,EAAQimB,yBACnB2B,EAAQ,GACR1qB,EAAI,EACJC,EAAI+I,EAAMtE,OAEH1E,EAAIC,EAAGD,IAGd,IAFAuJ,EAAOP,EAAOhJ,KAEQ,IAATuJ,EAGZ,GAAwB,WAAnBjB,EAAQiB,GAIZhB,EAAOW,MAAOwhB,EAAOnhB,EAAKtC,SAAW,CAAEsC,GAASA,QAG1C,GAAM2F,GAAMyC,KAAMpI,GAIlB,CAUN,IATAqL,EAAMA,GAAO6V,EAAStiB,YAAarF,EAAQgF,cAAe,QAG1D6M,GAAQkU,GAASxX,KAAM9H,IAAU,CAAE,GAAI,KAAQ,GAAI6C,cACnDme,EAAOnB,GAASzU,IAASyU,GAAQK,SACjC7U,EAAIE,UAAYyV,EAAM,GAAMhiB,EAAOoiB,cAAephB,GAASghB,EAAM,GAGjEtgB,EAAIsgB,EAAM,GACFtgB,KACP2K,EAAMA,EAAImD,UAKXxP,EAAOW,MAAOwhB,EAAO9V,EAAIjE,aAGzBiE,EAAM6V,EAASjU,YAGXD,YAAc,QAzBlBmU,EAAMnlB,KAAMzC,EAAQ8nB,eAAgBrhB,IAkCvC,IAHAkhB,EAASlU,YAAc,GAEvBvW,EAAI,EACMuJ,EAAOmhB,EAAO1qB,MAGvB,GAAKqqB,GAAa9hB,EAAOmD,QAASnC,EAAM8gB,IAAe,EACjDC,GACJA,EAAQ/kB,KAAMgE,QAgBhB,GAXAihB,EAAWvD,GAAY1d,GAGvBqL,EAAM8U,GAAQe,EAAStiB,YAAaoB,GAAQ,UAGvCihB,GACJb,GAAe/U,GAIXwV,EAEJ,IADAngB,EAAI,EACMV,EAAOqL,EAAK3K,MAChB6e,GAAYnX,KAAMpI,EAAKjF,MAAQ,KACnC8lB,EAAQ7kB,KAAMgE,GAMlB,OAAOkhB,EAIR,IAAII,GAAiB,sBAErB,SAASC,KACR,OAAO,EAGR,SAASC,KACR,OAAO,EASR,SAASC,GAAYzhB,EAAMjF,GAC1B,OAASiF,IAMV,WACC,IACC,OAAO1D,EAAS+S,cACf,MAAQqS,KATQC,KAAqC,UAAT5mB,GAY/C,SAAS6mB,GAAI5hB,EAAM6hB,EAAO5iB,EAAU8c,EAAM7c,EAAI4iB,GAC7C,IAAIC,EAAQhnB,EAGZ,GAAsB,iBAAV8mB,EAAqB,CAShC,IAAM9mB,IANmB,iBAAbkE,IAGX8c,EAAOA,GAAQ9c,EACfA,OAAWvD,GAEEmmB,EACbD,GAAI5hB,EAAMjF,EAAMkE,EAAU8c,EAAM8F,EAAO9mB,GAAQ+mB,GAEhD,OAAO9hB,EAsBR,GAnBa,MAAR+b,GAAsB,MAAN7c,GAGpBA,EAAKD,EACL8c,EAAO9c,OAAWvD,GACD,MAANwD,IACc,iBAAbD,GAGXC,EAAK6c,EACLA,OAAOrgB,IAIPwD,EAAK6c,EACLA,EAAO9c,EACPA,OAAWvD,KAGD,IAAPwD,EACJA,EAAKsiB,QACC,IAAMtiB,EACZ,OAAOc,EAeR,OAZa,IAAR8hB,IACJC,EAAS7iB,GACTA,EAAK,SAAU8iB,GAId,OADAhjB,IAASijB,IAAKD,GACPD,EAAO/kB,MAAOxD,KAAMyG,aAIzBwC,KAAOsf,EAAOtf,OAAUsf,EAAOtf,KAAOzD,EAAOyD,SAE1CzC,EAAKH,MAAM,WACjBb,EAAOgjB,MAAMloB,IAAKN,KAAMqoB,EAAO3iB,EAAI6c,EAAM9c,MA+a3C,SAASijB,GAAgBhZ,EAAInO,EAAM0mB,GAG5BA,GAQNvF,EAASJ,IAAK5S,EAAInO,GAAM,GACxBiE,EAAOgjB,MAAMloB,IAAKoP,EAAInO,EAAM,CAC3BoP,WAAW,EACXd,QAAS,SAAU2Y,GAClB,IAAIG,EAAUxnB,EACbynB,EAAQlG,EAAS5kB,IAAKkC,KAAMuB,GAE7B,GAAyB,EAAlBinB,EAAMK,WAAmB7oB,KAAMuB,IAKrC,GAAMqnB,EAAMjnB,QAuCE6D,EAAOgjB,MAAMvJ,QAAS1d,IAAU,IAAKunB,cAClDN,EAAMO,uBArBN,GAdAH,EAAQtlB,EAAMlG,KAAMqJ,WACpBic,EAASJ,IAAKtiB,KAAMuB,EAAMqnB,GAK1BD,EAAWV,EAAYjoB,KAAMuB,GAC7BvB,KAAMuB,KAEDqnB,KADLznB,EAASuhB,EAAS5kB,IAAKkC,KAAMuB,KACJonB,EACxBjG,EAASJ,IAAKtiB,KAAMuB,GAAM,GAE1BJ,EAAS,GAELynB,IAAUznB,EAWd,OARAqnB,EAAMQ,2BACNR,EAAMS,iBAOC9nB,GAAUA,EAAOjD,WAef0qB,EAAMjnB,SAGjB+gB,EAASJ,IAAKtiB,KAAMuB,EAAM,CACzBrD,MAAOsH,EAAOgjB,MAAMU,QAInB1jB,EAAO8B,OAAQshB,EAAO,GAAKpjB,EAAO2jB,MAAMtqB,WACxC+pB,EAAMtlB,MAAO,GACbtD,QAKFwoB,EAAMQ,qCA/E0B9mB,IAA7BwgB,EAAS5kB,IAAK4R,EAAInO,IACtBiE,EAAOgjB,MAAMloB,IAAKoP,EAAInO,EAAMwmB,IA5a/BviB,EAAOgjB,MAAQ,CAEd5lB,OAAQ,GAERtC,IAAK,SAAUkG,EAAM6hB,EAAOxY,EAAS0S,EAAM9c,GAE1C,IAAI2jB,EAAaC,EAAaxX,EAC7ByX,EAAQnrB,EAAGorB,EACXtK,EAASuK,EAAUjoB,EAAMkoB,EAAYC,EACrCC,EAAWjH,EAAS5kB,IAAK0I,GAG1B,GAAMyb,EAAYzb,GAuClB,IAlCKqJ,EAAQA,UAEZA,GADAuZ,EAAcvZ,GACQA,QACtBpK,EAAW2jB,EAAY3jB,UAKnBA,GACJD,EAAOkM,KAAKM,gBAAiBnB,GAAiBpL,GAIzCoK,EAAQ5G,OACb4G,EAAQ5G,KAAOzD,EAAOyD,SAIfqgB,EAASK,EAASL,UACzBA,EAASK,EAASL,OAAS3rB,OAAOY,OAAQ,QAEnC8qB,EAAcM,EAASC,UAC9BP,EAAcM,EAASC,OAAS,SAAU/b,GAIzC,YAAyB,IAAXrI,GAA0BA,EAAOgjB,MAAMqB,YAAchc,EAAEtM,KACpEiE,EAAOgjB,MAAMsB,SAAStmB,MAAOgD,EAAMC,gBAAcvE,IAMpD/D,GADAkqB,GAAUA,GAAS,IAAKpa,MAAOiO,IAAmB,CAAE,KAC1Cva,OACFxD,KAEPoD,EAAOmoB,GADP7X,EAAMiW,GAAexZ,KAAM+Z,EAAOlqB,KAAS,IACpB,GACvBsrB,GAAe5X,EAAK,IAAO,IAAK1I,MAAO,KAAM/B,OAGvC7F,IAKN0d,EAAUzZ,EAAOgjB,MAAMvJ,QAAS1d,IAAU,GAG1CA,GAASkE,EAAWwZ,EAAQ6J,aAAe7J,EAAQ8K,WAAcxoB,EAGjE0d,EAAUzZ,EAAOgjB,MAAMvJ,QAAS1d,IAAU,GAG1CgoB,EAAY/jB,EAAO8B,OAAQ,CAC1B/F,KAAMA,EACNmoB,SAAUA,EACVnH,KAAMA,EACN1S,QAASA,EACT5G,KAAM4G,EAAQ5G,KACdxD,SAAUA,EACV8U,aAAc9U,GAAYD,EAAOuN,KAAK9E,MAAMsM,aAAa3L,KAAMnJ,GAC/DkL,UAAW8Y,EAAWza,KAAM,MAC1Boa,IAGKI,EAAWF,EAAQ/nB,OAC1BioB,EAAWF,EAAQ/nB,GAAS,IACnByoB,cAAgB,EAGnB/K,EAAQgL,QACiD,IAA9DhL,EAAQgL,MAAM7sB,KAAMoJ,EAAM+b,EAAMkH,EAAYJ,IAEvC7iB,EAAK0K,kBACT1K,EAAK0K,iBAAkB3P,EAAM8nB,IAK3BpK,EAAQ3e,MACZ2e,EAAQ3e,IAAIlD,KAAMoJ,EAAM+iB,GAElBA,EAAU1Z,QAAQ5G,OACvBsgB,EAAU1Z,QAAQ5G,KAAO4G,EAAQ5G,OAK9BxD,EACJ+jB,EAASniB,OAAQmiB,EAASQ,gBAAiB,EAAGT,GAE9CC,EAAShnB,KAAM+mB,GAIhB/jB,EAAOgjB,MAAM5lB,OAAQrB,IAAS,IAMhCqc,OAAQ,SAAUpX,EAAM6hB,EAAOxY,EAASpK,EAAUykB,GAEjD,IAAIhjB,EAAGijB,EAAWtY,EACjByX,EAAQnrB,EAAGorB,EACXtK,EAASuK,EAAUjoB,EAAMkoB,EAAYC,EACrCC,EAAWjH,EAASD,QAASjc,IAAUkc,EAAS5kB,IAAK0I,GAEtD,GAAMmjB,IAAeL,EAASK,EAASL,QAAvC,CAOA,IADAnrB,GADAkqB,GAAUA,GAAS,IAAKpa,MAAOiO,IAAmB,CAAE,KAC1Cva,OACFxD,KAMP,GAJAoD,EAAOmoB,GADP7X,EAAMiW,GAAexZ,KAAM+Z,EAAOlqB,KAAS,IACpB,GACvBsrB,GAAe5X,EAAK,IAAO,IAAK1I,MAAO,KAAM/B,OAGvC7F,EAAN,CAeA,IARA0d,EAAUzZ,EAAOgjB,MAAMvJ,QAAS1d,IAAU,GAE1CioB,EAAWF,EADX/nB,GAASkE,EAAWwZ,EAAQ6J,aAAe7J,EAAQ8K,WAAcxoB,IACpC,GAC7BsQ,EAAMA,EAAK,IACV,IAAIlG,OAAQ,UAAY8d,EAAWza,KAAM,iBAAoB,WAG9Dmb,EAAYjjB,EAAIsiB,EAAS7nB,OACjBuF,KACPqiB,EAAYC,EAAUtiB,IAEfgjB,GAAeR,IAAaH,EAAUG,UACzC7Z,GAAWA,EAAQ5G,OAASsgB,EAAUtgB,MACtC4I,IAAOA,EAAIjD,KAAM2a,EAAU5Y,YAC3BlL,GAAYA,IAAa8jB,EAAU9jB,WACxB,OAAbA,IAAqB8jB,EAAU9jB,YAChC+jB,EAASniB,OAAQH,EAAG,GAEfqiB,EAAU9jB,UACd+jB,EAASQ,gBAEL/K,EAAQrB,QACZqB,EAAQrB,OAAOxgB,KAAMoJ,EAAM+iB,IAOzBY,IAAcX,EAAS7nB,SACrBsd,EAAQmL,WACkD,IAA/DnL,EAAQmL,SAAShtB,KAAMoJ,EAAMijB,EAAYE,EAASC,SAElDpkB,EAAO6kB,YAAa7jB,EAAMjF,EAAMooB,EAASC,eAGnCN,EAAQ/nB,SA1Cf,IAAMA,KAAQ+nB,EACb9jB,EAAOgjB,MAAM5K,OAAQpX,EAAMjF,EAAO8mB,EAAOlqB,GAAK0R,EAASpK,GAAU,GA8C/DD,EAAO+C,cAAe+gB,IAC1B5G,EAAS9E,OAAQpX,EAAM,mBAIzBsjB,SAAU,SAAUQ,GAEnB,IAAIrtB,EAAGiK,EAAGhB,EAAKoP,EAASiU,EAAWgB,EAClCpV,EAAO,IAAIjU,MAAOuF,UAAU9E,QAG5B6mB,EAAQhjB,EAAOgjB,MAAMgC,IAAKF,GAE1Bd,GACC9G,EAAS5kB,IAAKkC,KAAM,WAAcrC,OAAOY,OAAQ,OAC/CiqB,EAAMjnB,OAAU,GACnB0d,EAAUzZ,EAAOgjB,MAAMvJ,QAASuJ,EAAMjnB,OAAU,GAKjD,IAFA4T,EAAM,GAAMqT,EAENvrB,EAAI,EAAGA,EAAIwJ,UAAU9E,OAAQ1E,IAClCkY,EAAMlY,GAAMwJ,UAAWxJ,GAMxB,GAHAurB,EAAMiC,eAAiBzqB,MAGlBif,EAAQyL,cAA2D,IAA5CzL,EAAQyL,YAAYttB,KAAM4C,KAAMwoB,GAA5D,CASA,IAJA+B,EAAe/kB,EAAOgjB,MAAMgB,SAASpsB,KAAM4C,KAAMwoB,EAAOgB,GAGxDvsB,EAAI,GACMqY,EAAUiV,EAActtB,QAAYurB,EAAMmC,wBAInD,IAHAnC,EAAMoC,cAAgBtV,EAAQ9O,KAE9BU,EAAI,GACMqiB,EAAYjU,EAAQkU,SAAUtiB,QACtCshB,EAAMqC,iCAIDrC,EAAMsC,aAAsC,IAAxBvB,EAAU5Y,YACnC6X,EAAMsC,WAAWlc,KAAM2a,EAAU5Y,aAEjC6X,EAAMe,UAAYA,EAClBf,EAAMjG,KAAOgH,EAAUhH,UAKVrgB,KAHbgE,IAAUV,EAAOgjB,MAAMvJ,QAASsK,EAAUG,WAAc,IAAKE,QAC5DL,EAAU1Z,SAAUrM,MAAO8R,EAAQ9O,KAAM2O,MAGT,KAAzBqT,EAAMrnB,OAAS+E,KACrBsiB,EAAMS,iBACNT,EAAMO,oBAYX,OAJK9J,EAAQ8L,cACZ9L,EAAQ8L,aAAa3tB,KAAM4C,KAAMwoB,GAG3BA,EAAMrnB,SAGdqoB,SAAU,SAAUhB,EAAOgB,GAC1B,IAAIvsB,EAAGssB,EAAWpW,EAAK6X,EAAiBC,EACvCV,EAAe,GACfP,EAAgBR,EAASQ,cACzBha,EAAMwY,EAAM9gB,OAGb,GAAKsiB,GAIJha,EAAI9L,YAOc,UAAfskB,EAAMjnB,MAAoBinB,EAAM0C,QAAU,GAE7C,KAAQlb,IAAQhQ,KAAMgQ,EAAMA,EAAI3K,YAAcrF,KAI7C,GAAsB,IAAjBgQ,EAAI9L,WAAoC,UAAfskB,EAAMjnB,OAAqC,IAAjByO,EAAIxC,UAAsB,CAGjF,IAFAwd,EAAkB,GAClBC,EAAmB,GACbhuB,EAAI,EAAGA,EAAI+sB,EAAe/sB,SAMEiF,IAA5B+oB,EAFL9X,GAHAoW,EAAYC,EAAUvsB,IAGNwI,SAAW,OAG1BwlB,EAAkB9X,GAAQoW,EAAUhP,aACnC/U,EAAQ2N,EAAKnT,MAAO0B,MAAOsO,IAAS,EACpCxK,EAAOkM,KAAMyB,EAAKnT,KAAM,KAAM,CAAEgQ,IAAQrO,QAErCspB,EAAkB9X,IACtB6X,EAAgBxoB,KAAM+mB,GAGnByB,EAAgBrpB,QACpB4oB,EAAa/nB,KAAM,CAAEgE,KAAMwJ,EAAKwZ,SAAUwB,IAY9C,OALAhb,EAAMhQ,KACDgqB,EAAgBR,EAAS7nB,QAC7B4oB,EAAa/nB,KAAM,CAAEgE,KAAMwJ,EAAKwZ,SAAUA,EAASlmB,MAAO0mB,KAGpDO,GAGRY,QAAS,SAAU3tB,EAAMkC,GACxB/B,OAAOC,eAAgB4H,EAAO2jB,MAAMtqB,UAAWrB,EAAM,CACpDK,YAAY,EACZwkB,cAAc,EAEdvkB,IAAKkG,EAAYtE,GAChB,WACC,GAAKM,KAAKorB,cACT,OAAO1rB,EAAMM,KAAKorB,gBAGpB,WACC,GAAKprB,KAAKorB,cACT,OAAOprB,KAAKorB,cAAe5tB,IAI9B8kB,IAAK,SAAUpkB,GACdP,OAAOC,eAAgBoC,KAAMxC,EAAM,CAClCK,YAAY,EACZwkB,cAAc,EACdgJ,UAAU,EACVntB,MAAOA,QAMXssB,IAAK,SAAUY,GACd,OAAOA,EAAe5lB,EAAOqC,SAC5BujB,EACA,IAAI5lB,EAAO2jB,MAAOiC,IAGpBnM,QAAS,CACRqM,KAAM,CAGLC,UAAU,GAEXC,MAAO,CAGNvB,MAAO,SAAU1H,GAIhB,IAAI7S,EAAK1P,MAAQuiB,EAWjB,OARKsD,GAAejX,KAAMc,EAAGnO,OAC5BmO,EAAG8b,OAAS/d,EAAUiC,EAAI,UAG1BgZ,GAAgBhZ,EAAI,QAASqY,KAIvB,GAERmB,QAAS,SAAU3G,GAIlB,IAAI7S,EAAK1P,MAAQuiB,EAUjB,OAPKsD,GAAejX,KAAMc,EAAGnO,OAC5BmO,EAAG8b,OAAS/d,EAAUiC,EAAI,UAE1BgZ,GAAgBhZ,EAAI,UAId,GAKRgX,SAAU,SAAU8B,GACnB,IAAI9gB,EAAS8gB,EAAM9gB,OACnB,OAAOme,GAAejX,KAAMlH,EAAOnG,OAClCmG,EAAO8jB,OAAS/d,EAAU/F,EAAQ,UAClCgb,EAAS5kB,IAAK4J,EAAQ,UACtB+F,EAAU/F,EAAQ,OAIrB+jB,aAAc,CACbV,aAAc,SAAUvC,QAIDtmB,IAAjBsmB,EAAMrnB,QAAwBqnB,EAAM4C,gBACxC5C,EAAM4C,cAAcM,YAAclD,EAAMrnB,YAoG7CqE,EAAO6kB,YAAc,SAAU7jB,EAAMjF,EAAMqoB,GAGrCpjB,EAAKqa,qBACTra,EAAKqa,oBAAqBtf,EAAMqoB,IAIlCpkB,EAAO2jB,MAAQ,SAAU7kB,EAAKqnB,GAG7B,KAAQ3rB,gBAAgBwF,EAAO2jB,OAC9B,OAAO,IAAI3jB,EAAO2jB,MAAO7kB,EAAKqnB,GAI1BrnB,GAAOA,EAAI/C,MACfvB,KAAKorB,cAAgB9mB,EACrBtE,KAAKuB,KAAO+C,EAAI/C,KAIhBvB,KAAK4rB,mBAAqBtnB,EAAIunB,uBACH3pB,IAAzBoC,EAAIunB,mBAGgB,IAApBvnB,EAAIonB,YACL3D,GACAC,GAKDhoB,KAAK0H,OAAWpD,EAAIoD,QAAkC,IAAxBpD,EAAIoD,OAAOxD,SACxCI,EAAIoD,OAAOrC,WACXf,EAAIoD,OAEL1H,KAAK4qB,cAAgBtmB,EAAIsmB,cACzB5qB,KAAK8rB,cAAgBxnB,EAAIwnB,eAIzB9rB,KAAKuB,KAAO+C,EAIRqnB,GACJnmB,EAAO8B,OAAQtH,KAAM2rB,GAItB3rB,KAAK+rB,UAAYznB,GAAOA,EAAIynB,WAAazhB,KAAK0hB,MAG9ChsB,KAAMwF,EAAOqC,UAAY,GAK1BrC,EAAO2jB,MAAMtqB,UAAY,CACxBgH,YAAaL,EAAO2jB,MACpByC,mBAAoB5D,GACpB2C,qBAAsB3C,GACtB6C,8BAA+B7C,GAC/BiE,aAAa,EAEbhD,eAAgB,WACf,IAAIpb,EAAI7N,KAAKorB,cAEbprB,KAAK4rB,mBAAqB7D,GAErBla,IAAM7N,KAAKisB,aACfpe,EAAEob,kBAGJF,gBAAiB,WAChB,IAAIlb,EAAI7N,KAAKorB,cAEbprB,KAAK2qB,qBAAuB5C,GAEvBla,IAAM7N,KAAKisB,aACfpe,EAAEkb,mBAGJC,yBAA0B,WACzB,IAAInb,EAAI7N,KAAKorB,cAEbprB,KAAK6qB,8BAAgC9C,GAEhCla,IAAM7N,KAAKisB,aACfpe,EAAEmb,2BAGHhpB,KAAK+oB,oBAKPvjB,EAAOa,KAAM,CACZ6lB,QAAQ,EACRC,SAAS,EACTC,YAAY,EACZC,gBAAgB,EAChBC,SAAS,EACTC,QAAQ,EACRC,YAAY,EACZC,SAAS,EACTC,OAAO,EACPC,OAAO,EACPC,UAAU,EACVC,MAAM,EACN,MAAQ,EACRnoB,MAAM,EACNooB,UAAU,EACVtuB,KAAK,EACLuuB,SAAS,EACT7B,QAAQ,EACR8B,SAAS,EACTC,SAAS,EACTC,SAAS,EACTC,SAAS,EACTC,SAAS,EACTC,WAAW,EACXC,aAAa,EACbC,SAAS,EACTC,SAAS,EACTC,eAAe,EACfC,WAAW,EACXC,SAAS,EACTC,OAAO,GACLpoB,EAAOgjB,MAAM2C,SAEhB3lB,EAAOa,KAAM,CAAEwnB,MAAO,UAAWC,KAAM,aAAc,SAAUvsB,EAAMunB,GACpEtjB,EAAOgjB,MAAMvJ,QAAS1d,GAAS,CAG9B0oB,MAAO,WAQN,OAHAvB,GAAgB1oB,KAAMuB,EAAM0mB,KAGrB,GAERiB,QAAS,WAMR,OAHAR,GAAgB1oB,KAAMuB,IAGf,GAKRmlB,SAAU,WACT,OAAO,GAGRoC,aAAcA,MAYhBtjB,EAAOa,KAAM,CACZ0nB,WAAY,YACZC,WAAY,WACZC,aAAc,cACdC,aAAc,eACZ,SAAUC,EAAM3D,GAClBhlB,EAAOgjB,MAAMvJ,QAASkP,GAAS,CAC9BrF,aAAc0B,EACdT,SAAUS,EAEVZ,OAAQ,SAAUpB,GACjB,IAAItiB,EACHwB,EAAS1H,KACTouB,EAAU5F,EAAMsD,cAChBvC,EAAYf,EAAMe,UASnB,OALM6E,IAAaA,IAAY1mB,GAAWlC,EAAO6E,SAAU3C,EAAQ0mB,MAClE5F,EAAMjnB,KAAOgoB,EAAUG,SACvBxjB,EAAMqjB,EAAU1Z,QAAQrM,MAAOxD,KAAMyG,WACrC+hB,EAAMjnB,KAAOipB,GAEPtkB,OAKVV,EAAOE,GAAG4B,OAAQ,CAEjB8gB,GAAI,SAAUC,EAAO5iB,EAAU8c,EAAM7c,GACpC,OAAO0iB,GAAIpoB,KAAMqoB,EAAO5iB,EAAU8c,EAAM7c,IAEzC4iB,IAAK,SAAUD,EAAO5iB,EAAU8c,EAAM7c,GACrC,OAAO0iB,GAAIpoB,KAAMqoB,EAAO5iB,EAAU8c,EAAM7c,EAAI,IAE7C+iB,IAAK,SAAUJ,EAAO5iB,EAAUC,GAC/B,IAAI6jB,EAAWhoB,EACf,GAAK8mB,GAASA,EAAMY,gBAAkBZ,EAAMkB,UAW3C,OARAA,EAAYlB,EAAMkB,UAClB/jB,EAAQ6iB,EAAMoC,gBAAiBhC,IAC9Bc,EAAU5Y,UACT4Y,EAAUG,SAAW,IAAMH,EAAU5Y,UACrC4Y,EAAUG,SACXH,EAAU9jB,SACV8jB,EAAU1Z,SAEJ7P,KAER,GAAsB,iBAAVqoB,EAAqB,CAGhC,IAAM9mB,KAAQ8mB,EACbroB,KAAKyoB,IAAKlnB,EAAMkE,EAAU4iB,EAAO9mB,IAElC,OAAOvB,KAWR,OATkB,IAAbyF,GAA0C,mBAAbA,IAGjCC,EAAKD,EACLA,OAAWvD,IAEA,IAAPwD,IACJA,EAAKsiB,IAEChoB,KAAKqG,MAAM,WACjBb,EAAOgjB,MAAM5K,OAAQ5d,KAAMqoB,EAAO3iB,EAAID,SAMzC,IAKC4oB,GAAe,wBAGfC,GAAW,oCACXC,GAAe,2CAGhB,SAASC,GAAoBhoB,EAAMwV,GAClC,OAAKvO,EAAUjH,EAAM,UACpBiH,EAA+B,KAArBuO,EAAQ9X,SAAkB8X,EAAUA,EAAQvI,WAAY,OAE3DjO,EAAQgB,GAAOyU,SAAU,SAAW,IAGrCzU,EAIR,SAASioB,GAAejoB,GAEvB,OADAA,EAAKjF,MAAyC,OAAhCiF,EAAKvB,aAAc,SAAsB,IAAMuB,EAAKjF,KAC3DiF,EAER,SAASkoB,GAAeloB,GAOvB,MAN2C,WAApCA,EAAKjF,MAAQ,IAAK+B,MAAO,EAAG,GAClCkD,EAAKjF,KAAOiF,EAAKjF,KAAK+B,MAAO,GAE7BkD,EAAK2I,gBAAiB,QAGhB3I,EAGR,SAASmoB,GAAgBrqB,EAAKsqB,GAC7B,IAAI3xB,EAAGC,EAAGqE,EAAgBstB,EAAUC,EAAUxF,EAE9C,GAAuB,IAAlBsF,EAAK1qB,SAAV,CAKA,GAAKwe,EAASD,QAASne,KAEtBglB,EADW5G,EAAS5kB,IAAKwG,GACPglB,QAKjB,IAAM/nB,KAFNmhB,EAAS9E,OAAQgR,EAAM,iBAETtF,EACb,IAAMrsB,EAAI,EAAGC,EAAIosB,EAAQ/nB,GAAOI,OAAQ1E,EAAIC,EAAGD,IAC9CuI,EAAOgjB,MAAMloB,IAAKsuB,EAAMrtB,EAAM+nB,EAAQ/nB,GAAQtE,IAO7C0lB,EAASF,QAASne,KACtBuqB,EAAWlM,EAASxB,OAAQ7c,GAC5BwqB,EAAWtpB,EAAO8B,OAAQ,GAAIunB,GAE9BlM,EAASL,IAAKsM,EAAME,KAKtB,SAASC,GAAUzqB,EAAKsqB,GACvB,IAAInhB,EAAWmhB,EAAKnhB,SAASpE,cAGX,UAAboE,GAAwBoY,GAAejX,KAAMtK,EAAI/C,MACrDqtB,EAAK3Y,QAAU3R,EAAI2R,QAGK,UAAbxI,GAAqC,aAAbA,IACnCmhB,EAAK9U,aAAexV,EAAIwV,cAI1B,SAASkV,GAAUC,EAAY9Z,EAAM7O,EAAUihB,GAG9CpS,EAAO5R,EAAM4R,GAEb,IAAIuS,EAAUhhB,EAAO2gB,EAAS6H,EAAYvqB,EAAMC,EAC/C3H,EAAI,EACJC,EAAI+xB,EAAWttB,OACfwtB,EAAWjyB,EAAI,EACfgB,EAAQiX,EAAM,GACdia,EAAkBprB,EAAY9F,GAG/B,GAAKkxB,GACDlyB,EAAI,GAAsB,iBAAVgB,IAChB6F,EAAQkiB,YAAcqI,GAAS1f,KAAM1Q,GACxC,OAAO+wB,EAAW5oB,MAAM,SAAU3E,GACjC,IAAIG,EAAOotB,EAAWtoB,GAAIjF,GACrB0tB,IACJja,EAAM,GAAMjX,EAAMd,KAAM4C,KAAM0B,EAAOG,EAAKwtB,SAE3CL,GAAUntB,EAAMsT,EAAM7O,EAAUihB,MAIlC,GAAKrqB,IAEJwJ,GADAghB,EAAWN,GAAejS,EAAM8Z,EAAY,GAAI5gB,eAAe,EAAO4gB,EAAY1H,IACjE9T,WAEmB,IAA/BiU,EAAS9Z,WAAWjM,SACxB+lB,EAAWhhB,GAIPA,GAAS6gB,GAAU,CAOvB,IALA2H,GADA7H,EAAU7hB,EAAOe,IAAKogB,GAAQe,EAAU,UAAY+G,KAC/B9sB,OAKb1E,EAAIC,EAAGD,IACd0H,EAAO+iB,EAEFzqB,IAAMkyB,IACVxqB,EAAOa,EAAOiC,MAAO9C,GAAM,GAAM,GAG5BuqB,GAIJ1pB,EAAOW,MAAOkhB,EAASV,GAAQhiB,EAAM,YAIvC2B,EAASlJ,KAAM6xB,EAAYhyB,GAAK0H,EAAM1H,GAGvC,GAAKiyB,EAOJ,IANAtqB,EAAMyiB,EAASA,EAAQ1lB,OAAS,GAAI0M,cAGpC7I,EAAOe,IAAK8gB,EAASqH,IAGfzxB,EAAI,EAAGA,EAAIiyB,EAAYjyB,IAC5B0H,EAAO0iB,EAASpqB,GACX8oB,GAAYnX,KAAMjK,EAAKpD,MAAQ,MAClCmhB,EAASvB,OAAQxc,EAAM,eACxBa,EAAO6E,SAAUzF,EAAKD,KAEjBA,EAAKL,KAA8C,YAArCK,EAAKpD,MAAQ,IAAK8H,cAG/B7D,EAAO8pB,WAAa3qB,EAAKH,UAC7BgB,EAAO8pB,SAAU3qB,EAAKL,IAAK,CAC1BC,MAAOI,EAAKJ,OAASI,EAAKM,aAAc,UACtCL,GAGJH,EAASE,EAAK6O,YAAYxL,QAASumB,GAAc,IAAM5pB,EAAMC,IAQnE,OAAOqqB,EAGR,SAASrR,GAAQpX,EAAMf,EAAU8pB,GAKhC,IAJA,IAAI5qB,EACHgjB,EAAQliB,EAAWD,EAAOgM,OAAQ/L,EAAUe,GAASA,EACrDvJ,EAAI,EAE4B,OAAvB0H,EAAOgjB,EAAO1qB,IAAeA,IAChCsyB,GAA8B,IAAlB5qB,EAAKT,UACtBsB,EAAOgqB,UAAW7I,GAAQhiB,IAGtBA,EAAKU,aACJkqB,GAAYrL,GAAYvf,IAC5BiiB,GAAeD,GAAQhiB,EAAM,WAE9BA,EAAKU,WAAWC,YAAaX,IAI/B,OAAO6B,EAGRhB,EAAO8B,OAAQ,CACdsgB,cAAe,SAAUyH,GACxB,OAAOA,GAGR5nB,MAAO,SAAUjB,EAAMipB,EAAeC,GACrC,IAAIzyB,EAAGC,EAAGyyB,EAAaC,EACtBnoB,EAAQjB,EAAK0f,WAAW,GACxB2J,EAAS3L,GAAY1d,GAGtB,KAAMzC,EAAQoiB,gBAAsC,IAAlB3f,EAAKtC,UAAoC,KAAlBsC,EAAKtC,UAC3DsB,EAAOwU,SAAUxT,IAMnB,IAHAopB,EAAejJ,GAAQlf,GAGjBxK,EAAI,EAAGC,GAFbyyB,EAAchJ,GAAQngB,IAEO7E,OAAQ1E,EAAIC,EAAGD,IAC3C8xB,GAAUY,EAAa1yB,GAAK2yB,EAAc3yB,IAK5C,GAAKwyB,EACJ,GAAKC,EAIJ,IAHAC,EAAcA,GAAehJ,GAAQngB,GACrCopB,EAAeA,GAAgBjJ,GAAQlf,GAEjCxK,EAAI,EAAGC,EAAIyyB,EAAYhuB,OAAQ1E,EAAIC,EAAGD,IAC3C0xB,GAAgBgB,EAAa1yB,GAAK2yB,EAAc3yB,SAGjD0xB,GAAgBnoB,EAAMiB,GAWxB,OANAmoB,EAAejJ,GAAQlf,EAAO,WACZ9F,OAAS,GAC1BilB,GAAegJ,GAAeC,GAAUlJ,GAAQngB,EAAM,WAIhDiB,GAGR+nB,UAAW,SAAUvpB,GAKpB,IAJA,IAAIsc,EAAM/b,EAAMjF,EACf0d,EAAUzZ,EAAOgjB,MAAMvJ,QACvBhiB,EAAI,OAE6BiF,KAAxBsE,EAAOP,EAAOhJ,IAAqBA,IAC5C,GAAKglB,EAAYzb,GAAS,CACzB,GAAO+b,EAAO/b,EAAMkc,EAAS7a,SAAc,CAC1C,GAAK0a,EAAK+G,OACT,IAAM/nB,KAAQghB,EAAK+G,OACbrK,EAAS1d,GACbiE,EAAOgjB,MAAM5K,OAAQpX,EAAMjF,GAI3BiE,EAAO6kB,YAAa7jB,EAAMjF,EAAMghB,EAAKqH,QAOxCpjB,EAAMkc,EAAS7a,cAAY3F,EAEvBsE,EAAMmc,EAAS9a,WAInBrB,EAAMmc,EAAS9a,cAAY3F,OAOhCsD,EAAOE,GAAG4B,OAAQ,CACjBwoB,OAAQ,SAAUrqB,GACjB,OAAOmY,GAAQ5d,KAAMyF,GAAU,IAGhCmY,OAAQ,SAAUnY,GACjB,OAAOmY,GAAQ5d,KAAMyF,IAGtBT,KAAM,SAAU9G,GACf,OAAOijB,EAAQnhB,MAAM,SAAU9B,GAC9B,YAAiBgE,IAAVhE,EACNsH,EAAOR,KAAMhF,MACbA,KAAK6d,QAAQxX,MAAM,WACK,IAAlBrG,KAAKkE,UAAoC,KAAlBlE,KAAKkE,UAAqC,IAAlBlE,KAAKkE,WACxDlE,KAAKwT,YAActV,QAGpB,KAAMA,EAAOuI,UAAU9E,SAG3BouB,OAAQ,WACP,OAAOf,GAAUhvB,KAAMyG,WAAW,SAAUD,GACpB,IAAlBxG,KAAKkE,UAAoC,KAAlBlE,KAAKkE,UAAqC,IAAlBlE,KAAKkE,UAC3CsqB,GAAoBxuB,KAAMwG,GAChCpB,YAAaoB,OAKvBwpB,QAAS,WACR,OAAOhB,GAAUhvB,KAAMyG,WAAW,SAAUD,GAC3C,GAAuB,IAAlBxG,KAAKkE,UAAoC,KAAlBlE,KAAKkE,UAAqC,IAAlBlE,KAAKkE,SAAiB,CACzE,IAAIwD,EAAS8mB,GAAoBxuB,KAAMwG,GACvCkB,EAAOuoB,aAAczpB,EAAMkB,EAAO+L,iBAKrCyc,OAAQ,WACP,OAAOlB,GAAUhvB,KAAMyG,WAAW,SAAUD,GACtCxG,KAAKqF,YACTrF,KAAKqF,WAAW4qB,aAAczpB,EAAMxG,UAKvCmwB,MAAO,WACN,OAAOnB,GAAUhvB,KAAMyG,WAAW,SAAUD,GACtCxG,KAAKqF,YACTrF,KAAKqF,WAAW4qB,aAAczpB,EAAMxG,KAAKmQ,iBAK5C0N,MAAO,WAIN,IAHA,IAAIrX,EACHvJ,EAAI,EAE2B,OAAtBuJ,EAAOxG,KAAM/C,IAAeA,IACd,IAAlBuJ,EAAKtC,WAGTsB,EAAOgqB,UAAW7I,GAAQngB,GAAM,IAGhCA,EAAKgN,YAAc,IAIrB,OAAOxT,MAGRyH,MAAO,SAAUgoB,EAAeC,GAI/B,OAHAD,EAAiC,MAAjBA,GAAgCA,EAChDC,EAAyC,MAArBA,EAA4BD,EAAgBC,EAEzD1vB,KAAKuG,KAAK,WAChB,OAAOf,EAAOiC,MAAOzH,KAAMyvB,EAAeC,OAI5CL,KAAM,SAAUnxB,GACf,OAAOijB,EAAQnhB,MAAM,SAAU9B,GAC9B,IAAIsI,EAAOxG,KAAM,IAAO,GACvB/C,EAAI,EACJC,EAAI8C,KAAK2B,OAEV,QAAeO,IAAVhE,GAAyC,IAAlBsI,EAAKtC,SAChC,OAAOsC,EAAKuL,UAIb,GAAsB,iBAAV7T,IAAuBmwB,GAAazf,KAAM1Q,KACpDmoB,IAAWP,GAASxX,KAAMpQ,IAAW,CAAE,GAAI,KAAQ,GAAImL,eAAkB,CAE1EnL,EAAQsH,EAAOoiB,cAAe1pB,GAE9B,IACC,KAAQjB,EAAIC,EAAGD,IAIS,KAHvBuJ,EAAOxG,KAAM/C,IAAO,IAGViH,WACTsB,EAAOgqB,UAAW7I,GAAQngB,GAAM,IAChCA,EAAKuL,UAAY7T,GAInBsI,EAAO,EAGN,MAAQqH,KAGNrH,GACJxG,KAAK6d,QAAQkS,OAAQ7xB,KAEpB,KAAMA,EAAOuI,UAAU9E,SAG3ByuB,YAAa,WACZ,IAAI7I,EAAU,GAGd,OAAOyH,GAAUhvB,KAAMyG,WAAW,SAAUD,GAC3C,IAAIrG,EAASH,KAAKqF,WAEbG,EAAOmD,QAAS3I,KAAMunB,GAAY,IACtC/hB,EAAOgqB,UAAW7I,GAAQ3mB,OACrBG,GACJA,EAAOkwB,aAAc7pB,EAAMxG,SAK3BunB,MAIL/hB,EAAOa,KAAM,CACZiqB,SAAU,SACVC,UAAW,UACXN,aAAc,SACdO,YAAa,QACbC,WAAY,gBACV,SAAUjzB,EAAMkzB,GAClBlrB,EAAOE,GAAIlI,GAAS,SAAUiI,GAO7B,IANA,IAAIQ,EACHC,EAAM,GACNyqB,EAASnrB,EAAQC,GACjBmB,EAAO+pB,EAAOhvB,OAAS,EACvB1E,EAAI,EAEGA,GAAK2J,EAAM3J,IAClBgJ,EAAQhJ,IAAM2J,EAAO5G,KAAOA,KAAKyH,OAAO,GACxCjC,EAAQmrB,EAAQ1zB,IAAOyzB,GAAYzqB,GAInCzD,EAAKgB,MAAO0C,EAAKD,EAAMnI,OAGxB,OAAOkC,KAAKgG,UAAWE,OAGzB,IAAI0qB,GAAY,IAAIjlB,OAAQ,KAAOmY,GAAO,kBAAmB,KAEzD+M,GAAY,SAAUrqB,GAKxB,IAAIqmB,EAAOrmB,EAAK6H,cAAc2C,YAM9B,OAJM6b,GAASA,EAAKiE,SACnBjE,EAAO5pB,GAGD4pB,EAAKkE,iBAAkBvqB,IAG5BwqB,GAAO,SAAUxqB,EAAM7G,EAAS2G,GACnC,IAAIJ,EAAK1I,EACRyzB,EAAM,GAGP,IAAMzzB,KAAQmC,EACbsxB,EAAKzzB,GAASgJ,EAAK8d,MAAO9mB,GAC1BgJ,EAAK8d,MAAO9mB,GAASmC,EAASnC,GAM/B,IAAMA,KAHN0I,EAAMI,EAASlJ,KAAMoJ,GAGP7G,EACb6G,EAAK8d,MAAO9mB,GAASyzB,EAAKzzB,GAG3B,OAAO0I,GAIJgrB,GAAY,IAAIvlB,OAAQsY,GAAUjV,KAAM,KAAO,KAiJnD,SAASmiB,GAAQ3qB,EAAMhJ,EAAM4zB,GAC5B,IAAIC,EAAOC,EAAUC,EAAUrrB,EAM9Boe,EAAQ9d,EAAK8d,MAqCd,OAnCA8M,EAAWA,GAAYP,GAAWrqB,MAQpB,MAFbN,EAAMkrB,EAASI,iBAAkBh0B,IAAU4zB,EAAU5zB,KAEjC0mB,GAAY1d,KAC/BN,EAAMV,EAAO8e,MAAO9d,EAAMhJ,KAQrBuG,EAAQ0tB,kBAAoBb,GAAUhiB,KAAM1I,IAASgrB,GAAUtiB,KAAMpR,KAG1E6zB,EAAQ/M,EAAM+M,MACdC,EAAWhN,EAAMgN,SACjBC,EAAWjN,EAAMiN,SAGjBjN,EAAMgN,SAAWhN,EAAMiN,SAAWjN,EAAM+M,MAAQnrB,EAChDA,EAAMkrB,EAASC,MAGf/M,EAAM+M,MAAQA,EACd/M,EAAMgN,SAAWA,EACjBhN,EAAMiN,SAAWA,SAIJrvB,IAARgE,EAINA,EAAM,GACNA,EAIF,SAASwrB,GAAcC,EAAaC,GAGnC,MAAO,CACN9zB,IAAK,WACJ,IAAK6zB,IASL,OAAS3xB,KAAKlC,IAAM8zB,GAASpuB,MAAOxD,KAAMyG,kBALlCzG,KAAKlC,OA3MhB,WAIC,SAAS+zB,IAGR,GAAMjM,EAAN,CAIAkM,EAAUxN,MAAMyN,QAAU,+EAE1BnM,EAAItB,MAAMyN,QACT,4HAGDlhB,GAAgBzL,YAAa0sB,GAAY1sB,YAAawgB,GAEtD,IAAIoM,EAAW/uB,EAAO8tB,iBAAkBnL,GACxCqM,EAAoC,OAAjBD,EAAS/gB,IAG5BihB,EAAsE,KAA9CC,EAAoBH,EAASI,YAIrDxM,EAAItB,MAAM+N,MAAQ,MAClBC,EAA6D,KAAzCH,EAAoBH,EAASK,OAIjDE,EAAgE,KAAzCJ,EAAoBH,EAASX,OAMpDzL,EAAItB,MAAMkO,SAAW,WACrBC,EAAiE,KAA9CN,EAAoBvM,EAAI8M,YAAc,GAEzD7hB,GAAgBvL,YAAawsB,GAI7BlM,EAAM,MAGP,SAASuM,EAAoBQ,GAC5B,OAAO7qB,KAAK8qB,MAAOC,WAAYF,IAGhC,IAAIV,EAAkBM,EAAsBE,EAAkBH,EAC7DQ,EAAyBZ,EACzBJ,EAAYhvB,EAASiC,cAAe,OACpC6gB,EAAM9iB,EAASiC,cAAe,OAGzB6gB,EAAItB,QAMVsB,EAAItB,MAAMyO,eAAiB,cAC3BnN,EAAIM,WAAW,GAAO5B,MAAMyO,eAAiB,GAC7ChvB,EAAQivB,gBAA+C,gBAA7BpN,EAAItB,MAAMyO,eAEpCvtB,EAAO8B,OAAQvD,EAAS,CACvBkvB,kBAAmB,WAElB,OADApB,IACOU,GAERd,eAAgB,WAEf,OADAI,IACOS,GAERY,cAAe,WAEd,OADArB,IACOI,GAERkB,mBAAoB,WAEnB,OADAtB,IACOK,GAERkB,cAAe,WAEd,OADAvB,IACOY,GAYRY,qBAAsB,WACrB,IAAIC,EAAO9M,EAAI+M,EAASC,EAmCxB,OAlCgC,MAA3BV,IACJQ,EAAQxwB,EAASiC,cAAe,SAChCyhB,EAAK1jB,EAASiC,cAAe,MAC7BwuB,EAAUzwB,EAASiC,cAAe,OAElCuuB,EAAMhP,MAAMyN,QAAU,2DACtBvL,EAAGlC,MAAMyN,QAAU,mBAKnBvL,EAAGlC,MAAMmP,OAAS,MAClBF,EAAQjP,MAAMmP,OAAS,MAQvBF,EAAQjP,MAAMC,QAAU,QAExB1T,GACEzL,YAAakuB,GACbluB,YAAaohB,GACbphB,YAAamuB,GAEfC,EAAUvwB,EAAO8tB,iBAAkBvK,GACnCsM,EAA4BY,SAAUF,EAAQC,OAAQ,IACrDC,SAAUF,EAAQG,eAAgB,IAClCD,SAAUF,EAAQI,kBAAmB,MAAWpN,EAAGqN,aAEpDhjB,GAAgBvL,YAAaguB,IAEvBR,MAvIV,GAsNA,IAAIgB,GAAc,CAAE,SAAU,MAAO,MACpCC,GAAajxB,EAASiC,cAAe,OAAQuf,MAC7C0P,GAAc,GAkBf,SAASC,GAAez2B,GACvB,IAAI02B,EAAQ1uB,EAAO2uB,SAAU32B,IAAUw2B,GAAax2B,GAEpD,OAAK02B,IAGA12B,KAAQu2B,GACLv2B,EAEDw2B,GAAax2B,GAxBrB,SAAyBA,GAMxB,IAHA,IAAI42B,EAAU52B,EAAM,GAAIskB,cAAgBtkB,EAAK8F,MAAO,GACnDrG,EAAI62B,GAAYnyB,OAET1E,KAEP,IADAO,EAAOs2B,GAAa72B,GAAMm3B,KACbL,GACZ,OAAOv2B,EAeoB62B,CAAgB72B,IAAUA,GAIxD,IAKC82B,GAAe,4BACfC,GAAc,MACdC,GAAU,CAAEhC,SAAU,WAAYiC,WAAY,SAAUlQ,QAAS,SACjEmQ,GAAqB,CACpBC,cAAe,IACfC,WAAY,OAGd,SAASC,GAAmB9tB,EAAO7I,EAAO42B,GAIzC,IAAIhsB,EAAUkb,GAAQ1V,KAAMpQ,GAC5B,OAAO4K,EAGNhB,KAAKitB,IAAK,EAAGjsB,EAAS,IAAQgsB,GAAY,KAAUhsB,EAAS,IAAO,MACpE5K,EAGF,SAAS82B,GAAoBxuB,EAAMyuB,EAAWC,EAAKC,EAAaC,EAAQC,GACvE,IAAIp4B,EAAkB,UAAdg4B,EAAwB,EAAI,EACnCK,EAAQ,EACRC,EAAQ,EAGT,GAAKL,KAAUC,EAAc,SAAW,WACvC,OAAO,EAGR,KAAQl4B,EAAI,EAAGA,GAAK,EAGN,WAARi4B,IACJK,GAAS/vB,EAAOgf,IAAKhe,EAAM0uB,EAAMjR,GAAWhnB,IAAK,EAAMm4B,IAIlDD,GAmBQ,YAARD,IACJK,GAAS/vB,EAAOgf,IAAKhe,EAAM,UAAYyd,GAAWhnB,IAAK,EAAMm4B,IAIjD,WAARF,IACJK,GAAS/vB,EAAOgf,IAAKhe,EAAM,SAAWyd,GAAWhnB,GAAM,SAAS,EAAMm4B,MAtBvEG,GAAS/vB,EAAOgf,IAAKhe,EAAM,UAAYyd,GAAWhnB,IAAK,EAAMm4B,GAGhD,YAARF,EACJK,GAAS/vB,EAAOgf,IAAKhe,EAAM,SAAWyd,GAAWhnB,GAAM,SAAS,EAAMm4B,GAItEE,GAAS9vB,EAAOgf,IAAKhe,EAAM,SAAWyd,GAAWhnB,GAAM,SAAS,EAAMm4B,IAoCzE,OAhBMD,GAAeE,GAAe,IAInCE,GAASztB,KAAKitB,IAAK,EAAGjtB,KAAK0tB,KAC1BhvB,EAAM,SAAWyuB,EAAW,GAAInT,cAAgBmT,EAAU3xB,MAAO,IACjE+xB,EACAE,EACAD,EACA,MAIM,GAGDC,EAGR,SAASE,GAAkBjvB,EAAMyuB,EAAWK,GAG3C,IAAIF,EAASvE,GAAWrqB,GAKvB2uB,IADmBpxB,EAAQkvB,qBAAuBqC,IAEE,eAAnD9vB,EAAOgf,IAAKhe,EAAM,aAAa,EAAO4uB,GACvCM,EAAmBP,EAEnBtwB,EAAMssB,GAAQ3qB,EAAMyuB,EAAWG,GAC/BO,EAAa,SAAWV,EAAW,GAAInT,cAAgBmT,EAAU3xB,MAAO,GAIzE,GAAKstB,GAAUhiB,KAAM/J,GAAQ,CAC5B,IAAMywB,EACL,OAAOzwB,EAERA,EAAM,OAyCP,QAlCQd,EAAQkvB,qBAAuBkC,IAMrCpxB,EAAQsvB,wBAA0B5lB,EAAUjH,EAAM,OAI3C,SAAR3B,IAICguB,WAAYhuB,IAA0D,WAAjDW,EAAOgf,IAAKhe,EAAM,WAAW,EAAO4uB,KAG1D5uB,EAAKovB,iBAAiBj0B,SAEtBwzB,EAAiE,eAAnD3vB,EAAOgf,IAAKhe,EAAM,aAAa,EAAO4uB,IAKpDM,EAAmBC,KAAcnvB,KAEhC3B,EAAM2B,EAAMmvB,MAKd9wB,EAAMguB,WAAYhuB,IAAS,GAI1BmwB,GACCxuB,EACAyuB,EACAK,IAAWH,EAAc,SAAW,WACpCO,EACAN,EAGAvwB,GAEE,KA+SL,SAASgxB,GAAOrvB,EAAM7G,EAAS6iB,EAAMrb,EAAK2uB,GACzC,OAAO,IAAID,GAAMh3B,UAAU8G,KAAMa,EAAM7G,EAAS6iB,EAAMrb,EAAK2uB,GA7S5DtwB,EAAO8B,OAAQ,CAIdyuB,SAAU,CACTC,QAAS,CACRl4B,IAAK,SAAU0I,EAAM4qB,GACpB,GAAKA,EAAW,CAGf,IAAIlrB,EAAMirB,GAAQ3qB,EAAM,WACxB,MAAe,KAARN,EAAa,IAAMA,MAO9Bgf,UAAW,CACV,yBAA2B,EAC3B,aAAe,EACf,aAAe,EACf,UAAY,EACZ,YAAc,EACd,YAAc,EACd,UAAY,EACZ,YAAc,EACd,eAAiB,EACjB,iBAAmB,EACnB,SAAW,EACX,YAAc,EACd,cAAgB,EAChB,YAAc,EACd,SAAW,EACX,OAAS,EACT,SAAW,EACX,QAAU,EACV,QAAU,EACV,MAAQ,GAKTiP,SAAU,GAGV7P,MAAO,SAAU9d,EAAMhJ,EAAMU,EAAOo3B,GAGnC,GAAM9uB,GAA0B,IAAlBA,EAAKtC,UAAoC,IAAlBsC,EAAKtC,UAAmBsC,EAAK8d,MAAlE,CAKA,IAAIpe,EAAK3E,EAAMgiB,EACd0S,EAAWlU,EAAWvkB,GACtB04B,EAAe3B,GAAY3lB,KAAMpR,GACjC8mB,EAAQ9d,EAAK8d,MAad,GARM4R,IACL14B,EAAOy2B,GAAegC,IAIvB1S,EAAQ/d,EAAOuwB,SAAUv4B,IAAUgI,EAAOuwB,SAAUE,QAGrC/zB,IAAVhE,EA0CJ,OAAKqlB,GAAS,QAASA,QACwBrhB,KAA5CgE,EAAMqd,EAAMzlB,IAAK0I,GAAM,EAAO8uB,IAEzBpvB,EAIDoe,EAAO9mB,GA7CA,YAHd+D,SAAcrD,KAGcgI,EAAM8d,GAAQ1V,KAAMpQ,KAAagI,EAAK,KACjEhI,EAAQumB,GAAWje,EAAMhJ,EAAM0I,GAG/B3E,EAAO,UAIM,MAATrD,GAAiBA,GAAUA,IAOlB,WAATqD,GAAsB20B,IAC1Bh4B,GAASgI,GAAOA,EAAK,KAASV,EAAO0f,UAAW+Q,GAAa,GAAK,OAI7DlyB,EAAQivB,iBAA6B,KAAV90B,GAAiD,IAAjCV,EAAKiG,QAAS,gBAC9D6gB,EAAO9mB,GAAS,WAIX+lB,GAAY,QAASA,QACsBrhB,KAA9ChE,EAAQqlB,EAAMjB,IAAK9b,EAAMtI,EAAOo3B,MAE7BY,EACJ5R,EAAM6R,YAAa34B,EAAMU,GAEzBomB,EAAO9mB,GAASU,MAkBpBsmB,IAAK,SAAUhe,EAAMhJ,EAAM83B,EAAOF,GACjC,IAAIvwB,EAAKkB,EAAKwd,EACb0S,EAAWlU,EAAWvkB,GA6BvB,OA5BgB+2B,GAAY3lB,KAAMpR,KAMjCA,EAAOy2B,GAAegC,KAIvB1S,EAAQ/d,EAAOuwB,SAAUv4B,IAAUgI,EAAOuwB,SAAUE,KAGtC,QAAS1S,IACtB1e,EAAM0e,EAAMzlB,IAAK0I,GAAM,EAAM8uB,SAIjBpzB,IAAR2C,IACJA,EAAMssB,GAAQ3qB,EAAMhJ,EAAM43B,IAId,WAARvwB,GAAoBrH,KAAQk3B,KAChC7vB,EAAM6vB,GAAoBl3B,IAIZ,KAAV83B,GAAgBA,GACpBvvB,EAAM8sB,WAAYhuB,IACD,IAAVywB,GAAkBc,SAAUrwB,GAAQA,GAAO,EAAIlB,GAGhDA,KAITW,EAAOa,KAAM,CAAE,SAAU,UAAW,SAAU+C,EAAI6rB,GACjDzvB,EAAOuwB,SAAUd,GAAc,CAC9Bn3B,IAAK,SAAU0I,EAAM4qB,EAAUkE,GAC9B,GAAKlE,EAIJ,OAAOkD,GAAa1lB,KAAMpJ,EAAOgf,IAAKhe,EAAM,aAQxCA,EAAKovB,iBAAiBj0B,QAAW6E,EAAK6vB,wBAAwBhF,MAIjEoE,GAAkBjvB,EAAMyuB,EAAWK,GAHnCtE,GAAMxqB,EAAMguB,IAAS,WACpB,OAAOiB,GAAkBjvB,EAAMyuB,EAAWK,OAM9ChT,IAAK,SAAU9b,EAAMtI,EAAOo3B,GAC3B,IAAIxsB,EACHssB,EAASvE,GAAWrqB,GAIpB8vB,GAAsBvyB,EAAQqvB,iBACT,aAApBgC,EAAO5C,SAIR2C,GADkBmB,GAAsBhB,IAEY,eAAnD9vB,EAAOgf,IAAKhe,EAAM,aAAa,EAAO4uB,GACvCN,EAAWQ,EACVN,GACCxuB,EACAyuB,EACAK,EACAH,EACAC,GAED,EAqBF,OAjBKD,GAAemB,IACnBxB,GAAYhtB,KAAK0tB,KAChBhvB,EAAM,SAAWyuB,EAAW,GAAInT,cAAgBmT,EAAU3xB,MAAO,IACjEuvB,WAAYuC,EAAQH,IACpBD,GAAoBxuB,EAAMyuB,EAAW,UAAU,EAAOG,GACtD,KAKGN,IAAchsB,EAAUkb,GAAQ1V,KAAMpQ,KACb,QAA3B4K,EAAS,IAAO,QAElBtC,EAAK8d,MAAO2Q,GAAc/2B,EAC1BA,EAAQsH,EAAOgf,IAAKhe,EAAMyuB,IAGpBJ,GAAmBruB,EAAMtI,EAAO42B,QAK1CtvB,EAAOuwB,SAAS3D,WAAaV,GAAc3tB,EAAQovB,oBAClD,SAAU3sB,EAAM4qB,GACf,GAAKA,EACJ,OAASyB,WAAY1B,GAAQ3qB,EAAM,gBAClCA,EAAK6vB,wBAAwBE,KAC5BvF,GAAMxqB,EAAM,CAAE4rB,WAAY,IAAK,WAC9B,OAAO5rB,EAAK6vB,wBAAwBE,SAEnC,QAMP/wB,EAAOa,KAAM,CACZmwB,OAAQ,GACRC,QAAS,GACTC,OAAQ,UACN,SAAUC,EAAQC,GACpBpxB,EAAOuwB,SAAUY,EAASC,GAAW,CACpCC,OAAQ,SAAU34B,GAOjB,IANA,IAAIjB,EAAI,EACP65B,EAAW,GAGXC,EAAyB,iBAAV74B,EAAqBA,EAAMiL,MAAO,KAAQ,CAAEjL,GAEpDjB,EAAI,EAAGA,IACd65B,EAAUH,EAAS1S,GAAWhnB,GAAM25B,GACnCG,EAAO95B,IAAO85B,EAAO95B,EAAI,IAAO85B,EAAO,GAGzC,OAAOD,IAIO,WAAXH,IACJnxB,EAAOuwB,SAAUY,EAASC,GAAStU,IAAMuS,OAI3CrvB,EAAOE,GAAG4B,OAAQ,CACjBkd,IAAK,SAAUhnB,EAAMU,GACpB,OAAOijB,EAAQnhB,MAAM,SAAUwG,EAAMhJ,EAAMU,GAC1C,IAAIk3B,EAAQnuB,EACXV,EAAM,GACNtJ,EAAI,EAEL,GAAKiE,MAAMD,QAASzD,GAAS,CAI5B,IAHA43B,EAASvE,GAAWrqB,GACpBS,EAAMzJ,EAAKmE,OAEH1E,EAAIgK,EAAKhK,IAChBsJ,EAAK/I,EAAMP,IAAQuI,EAAOgf,IAAKhe,EAAMhJ,EAAMP,IAAK,EAAOm4B,GAGxD,OAAO7uB,EAGR,YAAiBrE,IAAVhE,EACNsH,EAAO8e,MAAO9d,EAAMhJ,EAAMU,GAC1BsH,EAAOgf,IAAKhe,EAAMhJ,KACjBA,EAAMU,EAAOuI,UAAU9E,OAAS,MAQrC6D,EAAOqwB,MAAQA,GAEfA,GAAMh3B,UAAY,CACjBgH,YAAagwB,GACblwB,KAAM,SAAUa,EAAM7G,EAAS6iB,EAAMrb,EAAK2uB,EAAQ7Q,GACjDjlB,KAAKwG,KAAOA,EACZxG,KAAKwiB,KAAOA,EACZxiB,KAAK81B,OAASA,GAAUtwB,EAAOswB,OAAOpP,SACtC1mB,KAAKL,QAAUA,EACfK,KAAKsB,MAAQtB,KAAKgsB,IAAMhsB,KAAKgQ,MAC7BhQ,KAAKmH,IAAMA,EACXnH,KAAKilB,KAAOA,IAAUzf,EAAO0f,UAAW1C,GAAS,GAAK,OAEvDxS,IAAK,WACJ,IAAIuT,EAAQsS,GAAMmB,UAAWh3B,KAAKwiB,MAElC,OAAOe,GAASA,EAAMzlB,IACrBylB,EAAMzlB,IAAKkC,MACX61B,GAAMmB,UAAUtQ,SAAS5oB,IAAKkC,OAEhCi3B,IAAK,SAAUC,GACd,IAAIC,EACH5T,EAAQsS,GAAMmB,UAAWh3B,KAAKwiB,MAoB/B,OAlBKxiB,KAAKL,QAAQy3B,SACjBp3B,KAAKq3B,IAAMF,EAAQ3xB,EAAOswB,OAAQ91B,KAAK81B,QACtCoB,EAASl3B,KAAKL,QAAQy3B,SAAWF,EAAS,EAAG,EAAGl3B,KAAKL,QAAQy3B,UAG9Dp3B,KAAKq3B,IAAMF,EAAQD,EAEpBl3B,KAAKgsB,KAAQhsB,KAAKmH,IAAMnH,KAAKsB,OAAU61B,EAAQn3B,KAAKsB,MAE/CtB,KAAKL,QAAQ23B,MACjBt3B,KAAKL,QAAQ23B,KAAKl6B,KAAM4C,KAAKwG,KAAMxG,KAAKgsB,IAAKhsB,MAGzCujB,GAASA,EAAMjB,IACnBiB,EAAMjB,IAAKtiB,MAEX61B,GAAMmB,UAAUtQ,SAASpE,IAAKtiB,MAExBA,OAIT61B,GAAMh3B,UAAU8G,KAAK9G,UAAYg3B,GAAMh3B,UAEvCg3B,GAAMmB,UAAY,CACjBtQ,SAAU,CACT5oB,IAAK,SAAU6mB,GACd,IAAIxjB,EAIJ,OAA6B,IAAxBwjB,EAAMne,KAAKtC,UACa,MAA5BygB,EAAMne,KAAMme,EAAMnC,OAAoD,MAAlCmC,EAAMne,KAAK8d,MAAOK,EAAMnC,MACrDmC,EAAMne,KAAMme,EAAMnC,OAO1BrhB,EAASqE,EAAOgf,IAAKG,EAAMne,KAAMme,EAAMnC,KAAM,MAGhB,SAAXrhB,EAAwBA,EAAJ,GAEvCmhB,IAAK,SAAUqC,GAKTnf,EAAO+xB,GAAGD,KAAM3S,EAAMnC,MAC1Bhd,EAAO+xB,GAAGD,KAAM3S,EAAMnC,MAAQmC,GACK,IAAxBA,EAAMne,KAAKtC,WACtBsB,EAAOuwB,SAAUpR,EAAMnC,OAC6B,MAAnDmC,EAAMne,KAAK8d,MAAO2P,GAAetP,EAAMnC,OAGxCmC,EAAMne,KAAMme,EAAMnC,MAASmC,EAAMqH,IAFjCxmB,EAAO8e,MAAOK,EAAMne,KAAMme,EAAMnC,KAAMmC,EAAMqH,IAAMrH,EAAMM,SAU5D4Q,GAAMmB,UAAUQ,UAAY3B,GAAMmB,UAAUS,WAAa,CACxDnV,IAAK,SAAUqC,GACTA,EAAMne,KAAKtC,UAAYygB,EAAMne,KAAKnB,aACtCsf,EAAMne,KAAMme,EAAMnC,MAASmC,EAAMqH,OAKpCxmB,EAAOswB,OAAS,CACf4B,OAAQ,SAAU34B,GACjB,OAAOA,GAER44B,MAAO,SAAU54B,GAChB,MAAO,GAAM+I,KAAK8vB,IAAK74B,EAAI+I,KAAK+vB,IAAO,GAExCnR,SAAU,SAGXlhB,EAAO+xB,GAAK1B,GAAMh3B,UAAU8G,KAG5BH,EAAO+xB,GAAGD,KAAO,GAKjB,IACCQ,GAAOC,GACPC,GAAW,yBACXC,GAAO,cAER,SAASC,KACHH,MACqB,IAApBj1B,EAASq1B,QAAoBl1B,EAAOm1B,sBACxCn1B,EAAOm1B,sBAAuBF,IAE9Bj1B,EAAO2c,WAAYsY,GAAU1yB,EAAO+xB,GAAGc,UAGxC7yB,EAAO+xB,GAAGe,QAKZ,SAASC,KAIR,OAHAt1B,EAAO2c,YAAY,WAClBkY,QAAQ51B,KAEA41B,GAAQxtB,KAAK0hB,MAIvB,SAASwM,GAAOj3B,EAAMk3B,GACrB,IAAI7K,EACH3wB,EAAI,EACJ2S,EAAQ,CAAE6jB,OAAQlyB,GAKnB,IADAk3B,EAAeA,EAAe,EAAI,EAC1Bx7B,EAAI,EAAGA,GAAK,EAAIw7B,EAEvB7oB,EAAO,UADPge,EAAQ3J,GAAWhnB,KACS2S,EAAO,UAAYge,GAAUrsB,EAO1D,OAJKk3B,IACJ7oB,EAAMomB,QAAUpmB,EAAMyhB,MAAQ9vB,GAGxBqO,EAGR,SAAS8oB,GAAax6B,EAAOskB,EAAMmW,GAKlC,IAJA,IAAIhU,EACHsK,GAAe2J,GAAUC,SAAUrW,IAAU,IAAKxhB,OAAQ43B,GAAUC,SAAU,MAC9En3B,EAAQ,EACRC,EAASstB,EAAWttB,OACbD,EAAQC,EAAQD,IACvB,GAAOijB,EAAQsK,EAAYvtB,GAAQtE,KAAMu7B,EAAWnW,EAAMtkB,GAGzD,OAAOymB,EAsNV,SAASiU,GAAWpyB,EAAMsyB,EAAYn5B,GACrC,IAAIwB,EACH43B,EACAr3B,EAAQ,EACRC,EAASi3B,GAAUI,WAAWr3B,OAC9B0c,EAAW7Y,EAAOyY,WAAWG,QAAQ,kBAG7Bka,EAAK9xB,QAEb8xB,EAAO,WACN,GAAKS,EACJ,OAAO,EAYR,IAVA,IAAIE,EAAcnB,IAASS,KAC1BvY,EAAYlY,KAAKitB,IAAK,EAAG4D,EAAUO,UAAYP,EAAUvB,SAAW6B,GAKpE/B,EAAU,GADHlX,EAAY2Y,EAAUvB,UAAY,GAEzC11B,EAAQ,EACRC,EAASg3B,EAAUQ,OAAOx3B,OAEnBD,EAAQC,EAAQD,IACvBi3B,EAAUQ,OAAQz3B,GAAQu1B,IAAKC,GAMhC,OAHA7Y,EAASgB,WAAY7Y,EAAM,CAAEmyB,EAAWzB,EAASlX,IAG5CkX,EAAU,GAAKv1B,EACZqe,GAIFre,GACL0c,EAASgB,WAAY7Y,EAAM,CAAEmyB,EAAW,EAAG,IAI5Cta,EAASiB,YAAa9Y,EAAM,CAAEmyB,KACvB,IAERA,EAAYta,EAASzB,QAAS,CAC7BpW,KAAMA,EACNmlB,MAAOnmB,EAAO8B,OAAQ,GAAIwxB,GAC1BM,KAAM5zB,EAAO8B,QAAQ,EAAM,CAC1B+xB,cAAe,GACfvD,OAAQtwB,EAAOswB,OAAOpP,UACpB/mB,GACH25B,mBAAoBR,EACpBS,gBAAiB55B,EACjBu5B,UAAWpB,IAASS,KACpBnB,SAAUz3B,EAAQy3B,SAClB+B,OAAQ,GACRT,YAAa,SAAUlW,EAAMrb,GAC5B,IAAIwd,EAAQnf,EAAOqwB,MAAOrvB,EAAMmyB,EAAUS,KAAM5W,EAAMrb,EACrDwxB,EAAUS,KAAKC,cAAe7W,IAAUmW,EAAUS,KAAKtD,QAExD,OADA6C,EAAUQ,OAAO32B,KAAMmiB,GAChBA,GAERlB,KAAM,SAAU+V,GACf,IAAI93B,EAAQ,EAIXC,EAAS63B,EAAUb,EAAUQ,OAAOx3B,OAAS,EAC9C,GAAKo3B,EACJ,OAAO/4B,KAGR,IADA+4B,GAAU,EACFr3B,EAAQC,EAAQD,IACvBi3B,EAAUQ,OAAQz3B,GAAQu1B,IAAK,GAUhC,OANKuC,GACJnb,EAASgB,WAAY7Y,EAAM,CAAEmyB,EAAW,EAAG,IAC3Cta,EAASiB,YAAa9Y,EAAM,CAAEmyB,EAAWa,KAEzCnb,EAASqB,WAAYlZ,EAAM,CAAEmyB,EAAWa,IAElCx5B,QAGT2rB,EAAQgN,EAAUhN,MAInB,KA/HD,SAAqBA,EAAO0N,GAC3B,IAAI33B,EAAOlE,EAAMs4B,EAAQ53B,EAAOqlB,EAGhC,IAAM7hB,KAASiqB,EAed,GAbAmK,EAASuD,EADT77B,EAAOukB,EAAWrgB,IAElBxD,EAAQytB,EAAOjqB,GACVR,MAAMD,QAAS/C,KACnB43B,EAAS53B,EAAO,GAChBA,EAAQytB,EAAOjqB,GAAUxD,EAAO,IAG5BwD,IAAUlE,IACdmuB,EAAOnuB,GAASU,SACTytB,EAAOjqB,KAGf6hB,EAAQ/d,EAAOuwB,SAAUv4B,KACX,WAAY+lB,EAMzB,IAAM7hB,KALNxD,EAAQqlB,EAAMsT,OAAQ34B,UACfytB,EAAOnuB,GAICU,EACNwD,KAASiqB,IAChBA,EAAOjqB,GAAUxD,EAAOwD,GACxB23B,EAAe33B,GAAUo0B,QAI3BuD,EAAe77B,GAASs4B,EA6F1B2D,CAAY9N,EAAOgN,EAAUS,KAAKC,eAE1B33B,EAAQC,EAAQD,IAEvB,GADAP,EAASy3B,GAAUI,WAAYt3B,GAAQtE,KAAMu7B,EAAWnyB,EAAMmlB,EAAOgN,EAAUS,MAM9E,OAJKp1B,EAAY7C,EAAOsiB,QACvBje,EAAOge,YAAamV,EAAUnyB,KAAMmyB,EAAUS,KAAK7b,OAAQkG,KAC1DtiB,EAAOsiB,KAAKhlB,KAAM0C,IAEbA,EAyBT,OArBAqE,EAAOe,IAAKolB,EAAO+M,GAAaC,GAE3B30B,EAAY20B,EAAUS,KAAK93B,QAC/Bq3B,EAAUS,KAAK93B,MAAMlE,KAAMoJ,EAAMmyB,GAIlCA,EACEha,SAAUga,EAAUS,KAAKza,UACzBlU,KAAMkuB,EAAUS,KAAK3uB,KAAMkuB,EAAUS,KAAKM,UAC1C7c,KAAM8b,EAAUS,KAAKvc,MACrBuB,OAAQua,EAAUS,KAAKhb,QAEzB5Y,EAAO+xB,GAAGoC,MACTn0B,EAAO8B,OAAQgxB,EAAM,CACpB9xB,KAAMA,EACNozB,KAAMjB,EACNpb,MAAOob,EAAUS,KAAK7b,SAIjBob,EAGRnzB,EAAOozB,UAAYpzB,EAAO8B,OAAQsxB,GAAW,CAE5CC,SAAU,CACT,IAAK,CAAE,SAAUrW,EAAMtkB,GACtB,IAAIymB,EAAQ3kB,KAAK04B,YAAalW,EAAMtkB,GAEpC,OADAumB,GAAWE,EAAMne,KAAMgc,EAAMwB,GAAQ1V,KAAMpQ,GAASymB,GAC7CA,KAITkV,QAAS,SAAUlO,EAAOrlB,GACpBtC,EAAY2nB,IAChBrlB,EAAWqlB,EACXA,EAAQ,CAAE,MAEVA,EAAQA,EAAM1d,MAAOiO,GAOtB,IAJA,IAAIsG,EACH9gB,EAAQ,EACRC,EAASgqB,EAAMhqB,OAERD,EAAQC,EAAQD,IACvB8gB,EAAOmJ,EAAOjqB,GACdk3B,GAAUC,SAAUrW,GAASoW,GAAUC,SAAUrW,IAAU,GAC3DoW,GAAUC,SAAUrW,GAAO1P,QAASxM,IAItC0yB,WAAY,CA3Wb,SAA2BxyB,EAAMmlB,EAAOyN,GACvC,IAAI5W,EAAMtkB,EAAOynB,EAAQpC,EAAOuW,EAASC,EAAWC,EAAgBzV,EACnE0V,EAAQ,UAAWtO,GAAS,WAAYA,EACxCiO,EAAO55B,KACPmuB,EAAO,GACP7J,EAAQ9d,EAAK8d,MACb6T,EAAS3xB,EAAKtC,UAAYmgB,GAAoB7d,GAC9C0zB,EAAWxX,EAAS5kB,IAAK0I,EAAM,UA6BhC,IAAMgc,KA1BA4W,EAAK7b,QAEa,OADvBgG,EAAQ/d,EAAOge,YAAahd,EAAM,OACvB2zB,WACV5W,EAAM4W,SAAW,EACjBL,EAAUvW,EAAM1F,MAAMJ,KACtB8F,EAAM1F,MAAMJ,KAAO,WACZ8F,EAAM4W,UACXL,MAIHvW,EAAM4W,WAENP,EAAKxb,QAAQ,WAGZwb,EAAKxb,QAAQ,WACZmF,EAAM4W,WACA30B,EAAO+X,MAAO/W,EAAM,MAAO7E,QAChC4hB,EAAM1F,MAAMJ,cAOFkO,EAEb,GADAztB,EAAQytB,EAAOnJ,GACVwV,GAASppB,KAAM1Q,GAAU,CAG7B,UAFOytB,EAAOnJ,GACdmD,EAASA,GAAoB,WAAVznB,EACdA,KAAYi6B,EAAS,OAAS,QAAW,CAI7C,GAAe,SAAVj6B,IAAoBg8B,QAAiCh4B,IAArBg4B,EAAU1X,GAK9C,SAJA2V,GAAS,EAOXhK,EAAM3L,GAAS0X,GAAYA,EAAU1X,IAAUhd,EAAO8e,MAAO9d,EAAMgc,GAMrE,IADAuX,GAAav0B,EAAO+C,cAAeojB,MAChBnmB,EAAO+C,cAAe4lB,GA8DzC,IAAM3L,KAzDDyX,GAA2B,IAAlBzzB,EAAKtC,WAMlBk1B,EAAKgB,SAAW,CAAE9V,EAAM8V,SAAU9V,EAAM+V,UAAW/V,EAAMgW,WAIlC,OADvBN,EAAiBE,GAAYA,EAAS3V,WAErCyV,EAAiBtX,EAAS5kB,IAAK0I,EAAM,YAGrB,UADjB+d,EAAU/e,EAAOgf,IAAKhe,EAAM,cAEtBwzB,EACJzV,EAAUyV,GAIVzU,GAAU,CAAE/e,IAAQ,GACpBwzB,EAAiBxzB,EAAK8d,MAAMC,SAAWyV,EACvCzV,EAAU/e,EAAOgf,IAAKhe,EAAM,WAC5B+e,GAAU,CAAE/e,OAKG,WAAZ+d,GAAoC,iBAAZA,GAAgD,MAAlByV,IACrB,SAAhCx0B,EAAOgf,IAAKhe,EAAM,WAGhBuzB,IACLH,EAAKnvB,MAAM,WACV6Z,EAAMC,QAAUyV,KAEM,MAAlBA,IACJzV,EAAUD,EAAMC,QAChByV,EAA6B,SAAZzV,EAAqB,GAAKA,IAG7CD,EAAMC,QAAU,iBAKd6U,EAAKgB,WACT9V,EAAM8V,SAAW,SACjBR,EAAKxb,QAAQ,WACZkG,EAAM8V,SAAWhB,EAAKgB,SAAU,GAChC9V,EAAM+V,UAAYjB,EAAKgB,SAAU,GACjC9V,EAAMgW,UAAYlB,EAAKgB,SAAU,OAKnCL,GAAY,EACE5L,EAGP4L,IACAG,EACC,WAAYA,IAChB/B,EAAS+B,EAAS/B,QAGnB+B,EAAWxX,EAASvB,OAAQ3a,EAAM,SAAU,CAAE+d,QAASyV,IAInDrU,IACJuU,EAAS/B,QAAUA,GAIfA,GACJ5S,GAAU,CAAE/e,IAAQ,GAKrBozB,EAAKnvB,MAAM,WASV,IAAM+X,KAJA2V,GACL5S,GAAU,CAAE/e,IAEbkc,EAAS9E,OAAQpX,EAAM,UACT2nB,EACb3oB,EAAO8e,MAAO9d,EAAMgc,EAAM2L,EAAM3L,QAMnCuX,EAAYrB,GAAaP,EAAS+B,EAAU1X,GAAS,EAAGA,EAAMoX,GACtDpX,KAAQ0X,IACfA,EAAU1X,GAASuX,EAAUz4B,MACxB62B,IACJ4B,EAAU5yB,IAAM4yB,EAAUz4B,MAC1By4B,EAAUz4B,MAAQ,MAuMrBi5B,UAAW,SAAUj0B,EAAU0pB,GACzBA,EACJ4I,GAAUI,WAAWlmB,QAASxM,GAE9BsyB,GAAUI,WAAWx2B,KAAM8D,MAK9Bd,EAAOg1B,MAAQ,SAAUA,EAAO1E,EAAQpwB,GACvC,IAAI+0B,EAAMD,GAA0B,iBAAVA,EAAqBh1B,EAAO8B,OAAQ,GAAIkzB,GAAU,CAC3Ed,SAAUh0B,IAAOA,GAAMowB,GACtB9xB,EAAYw2B,IAAWA,EACxBpD,SAAUoD,EACV1E,OAAQpwB,GAAMowB,GAAUA,IAAW9xB,EAAY8xB,IAAYA,GAoC5D,OAhCKtwB,EAAO+xB,GAAG9O,IACdgS,EAAIrD,SAAW,EAGc,iBAAjBqD,EAAIrD,WACVqD,EAAIrD,YAAY5xB,EAAO+xB,GAAGmD,OAC9BD,EAAIrD,SAAW5xB,EAAO+xB,GAAGmD,OAAQD,EAAIrD,UAGrCqD,EAAIrD,SAAW5xB,EAAO+xB,GAAGmD,OAAOhU,UAMjB,MAAb+T,EAAIld,QAA+B,IAAdkd,EAAIld,QAC7Bkd,EAAIld,MAAQ,MAIbkd,EAAIxJ,IAAMwJ,EAAIf,SAEde,EAAIf,SAAW,WACT11B,EAAYy2B,EAAIxJ,MACpBwJ,EAAIxJ,IAAI7zB,KAAM4C,MAGVy6B,EAAIld,OACR/X,EAAO6d,QAASrjB,KAAMy6B,EAAIld,QAIrBkd,GAGRj1B,EAAOE,GAAG4B,OAAQ,CACjBqzB,OAAQ,SAAUH,EAAOI,EAAI9E,EAAQxvB,GAGpC,OAAOtG,KAAKwR,OAAQ6S,IAAqBG,IAAK,UAAW,GAAIgB,OAG3Dre,MAAM0zB,QAAS,CAAE7E,QAAS4E,GAAMJ,EAAO1E,EAAQxvB,IAElDu0B,QAAS,SAAUrY,EAAMgY,EAAO1E,EAAQxvB,GACvC,IAAIuX,EAAQrY,EAAO+C,cAAeia,GACjCsY,EAASt1B,EAAOg1B,MAAOA,EAAO1E,EAAQxvB,GACtCy0B,EAAc,WAGb,IAAInB,EAAOhB,GAAW54B,KAAMwF,EAAO8B,OAAQ,GAAIkb,GAAQsY,IAGlDjd,GAAS6E,EAAS5kB,IAAKkC,KAAM,YACjC45B,EAAKnW,MAAM,IAMd,OAFAsX,EAAYC,OAASD,EAEdld,IAA0B,IAAjBid,EAAOvd,MACtBvd,KAAKqG,KAAM00B,GACX/6B,KAAKud,MAAOud,EAAOvd,MAAOwd,IAE5BtX,KAAM,SAAUliB,EAAMoiB,EAAY6V,GACjC,IAAIyB,EAAY,SAAU1X,GACzB,IAAIE,EAAOF,EAAME,YACVF,EAAME,KACbA,EAAM+V,IAYP,MATqB,iBAATj4B,IACXi4B,EAAU7V,EACVA,EAAapiB,EACbA,OAAOW,GAEHyhB,GACJ3jB,KAAKud,MAAOhc,GAAQ,KAAM,IAGpBvB,KAAKqG,MAAM,WACjB,IAAIgd,GAAU,EACb3hB,EAAgB,MAARH,GAAgBA,EAAO,aAC/B25B,EAAS11B,EAAO01B,OAChB3Y,EAAOG,EAAS5kB,IAAKkC,MAEtB,GAAK0B,EACC6gB,EAAM7gB,IAAW6gB,EAAM7gB,GAAQ+hB,MACnCwX,EAAW1Y,EAAM7gB,SAGlB,IAAMA,KAAS6gB,EACTA,EAAM7gB,IAAW6gB,EAAM7gB,GAAQ+hB,MAAQwU,GAAKrpB,KAAMlN,IACtDu5B,EAAW1Y,EAAM7gB,IAKpB,IAAMA,EAAQw5B,EAAOv5B,OAAQD,KACvBw5B,EAAQx5B,GAAQ8E,OAASxG,MACnB,MAARuB,GAAgB25B,EAAQx5B,GAAQ6b,QAAUhc,IAE5C25B,EAAQx5B,GAAQk4B,KAAKnW,KAAM+V,GAC3BnW,GAAU,EACV6X,EAAO7zB,OAAQ3F,EAAO,KAOnB2hB,GAAYmW,GAChBh0B,EAAO6d,QAASrjB,KAAMuB,OAIzBy5B,OAAQ,SAAUz5B,GAIjB,OAHc,IAATA,IACJA,EAAOA,GAAQ,MAETvB,KAAKqG,MAAM,WACjB,IAAI3E,EACH6gB,EAAOG,EAAS5kB,IAAKkC,MACrBud,EAAQgF,EAAMhhB,EAAO,SACrBgiB,EAAQhB,EAAMhhB,EAAO,cACrB25B,EAAS11B,EAAO01B,OAChBv5B,EAAS4b,EAAQA,EAAM5b,OAAS,EAajC,IAVA4gB,EAAKyY,QAAS,EAGdx1B,EAAO+X,MAAOvd,KAAMuB,EAAM,IAErBgiB,GAASA,EAAME,MACnBF,EAAME,KAAKrmB,KAAM4C,MAAM,GAIlB0B,EAAQw5B,EAAOv5B,OAAQD,KACvBw5B,EAAQx5B,GAAQ8E,OAASxG,MAAQk7B,EAAQx5B,GAAQ6b,QAAUhc,IAC/D25B,EAAQx5B,GAAQk4B,KAAKnW,MAAM,GAC3ByX,EAAO7zB,OAAQ3F,EAAO,IAKxB,IAAMA,EAAQ,EAAGA,EAAQC,EAAQD,IAC3B6b,EAAO7b,IAAW6b,EAAO7b,GAAQs5B,QACrCzd,EAAO7b,GAAQs5B,OAAO59B,KAAM4C,aAKvBuiB,EAAKyY,aAKfx1B,EAAOa,KAAM,CAAE,SAAU,OAAQ,SAAU,SAAU+C,EAAI5L,GACxD,IAAI29B,EAAQ31B,EAAOE,GAAIlI,GACvBgI,EAAOE,GAAIlI,GAAS,SAAUg9B,EAAO1E,EAAQxvB,GAC5C,OAAgB,MAATk0B,GAAkC,kBAAVA,EAC9BW,EAAM33B,MAAOxD,KAAMyG,WACnBzG,KAAK66B,QAASrC,GAAOh7B,GAAM,GAAQg9B,EAAO1E,EAAQxvB,OAKrDd,EAAOa,KAAM,CACZ+0B,UAAW5C,GAAO,QAClB6C,QAAS7C,GAAO,QAChB8C,YAAa9C,GAAO,UACpB+C,OAAQ,CAAEvF,QAAS,QACnBwF,QAAS,CAAExF,QAAS,QACpByF,WAAY,CAAEzF,QAAS,YACrB,SAAUx4B,EAAMmuB,GAClBnmB,EAAOE,GAAIlI,GAAS,SAAUg9B,EAAO1E,EAAQxvB,GAC5C,OAAOtG,KAAK66B,QAASlP,EAAO6O,EAAO1E,EAAQxvB,OAI7Cd,EAAO01B,OAAS,GAChB11B,EAAO+xB,GAAGe,KAAO,WAChB,IAAIqB,EACH18B,EAAI,EACJi+B,EAAS11B,EAAO01B,OAIjB,IAFApD,GAAQxtB,KAAK0hB,MAEL/uB,EAAIi+B,EAAOv5B,OAAQ1E,KAC1B08B,EAAQuB,EAAQj+B,OAGCi+B,EAAQj+B,KAAQ08B,GAChCuB,EAAO7zB,OAAQpK,IAAK,GAIhBi+B,EAAOv5B,QACZ6D,EAAO+xB,GAAG9T,OAEXqU,QAAQ51B,GAGTsD,EAAO+xB,GAAGoC,MAAQ,SAAUA,GAC3Bn0B,EAAO01B,OAAO14B,KAAMm3B,GACpBn0B,EAAO+xB,GAAGj2B,SAGXkE,EAAO+xB,GAAGc,SAAW,GACrB7yB,EAAO+xB,GAAGj2B,MAAQ,WACZy2B,KAILA,IAAa,EACbG,OAGD1yB,EAAO+xB,GAAG9T,KAAO,WAChBsU,GAAa,MAGdvyB,EAAO+xB,GAAGmD,OAAS,CAClBgB,KAAM,IACNC,KAAM,IAGNjV,SAAU,KAMXlhB,EAAOE,GAAGk2B,MAAQ,SAAUC,EAAMt6B,GAIjC,OAHAs6B,EAAOr2B,EAAO+xB,IAAK/xB,EAAO+xB,GAAGmD,OAAQmB,IAAiBA,EACtDt6B,EAAOA,GAAQ,KAERvB,KAAKud,MAAOhc,GAAM,SAAUoM,EAAM4V,GACxC,IAAIuY,EAAU74B,EAAO2c,WAAYjS,EAAMkuB,GACvCtY,EAAME,KAAO,WACZxgB,EAAO84B,aAAcD,QAMxB,WACC,IAAIhqB,EAAQhP,EAASiC,cAAe,SAEnC01B,EADS33B,EAASiC,cAAe,UACpBK,YAAatC,EAASiC,cAAe,WAEnD+M,EAAMvQ,KAAO,WAIbwC,EAAQi4B,QAA0B,KAAhBlqB,EAAM5T,MAIxB6F,EAAQk4B,YAAcxB,EAAIvkB,UAI1BpE,EAAQhP,EAASiC,cAAe,UAC1B7G,MAAQ,IACd4T,EAAMvQ,KAAO,QACbwC,EAAQm4B,WAA6B,MAAhBpqB,EAAM5T,MApB5B,GAwBA,IAAIi+B,GACHrsB,GAAatK,EAAOuN,KAAKjD,WAE1BtK,EAAOE,GAAG4B,OAAQ,CACjB2L,KAAM,SAAUzV,EAAMU,GACrB,OAAOijB,EAAQnhB,KAAMwF,EAAOyN,KAAMzV,EAAMU,EAAOuI,UAAU9E,OAAS,IAGnEy6B,WAAY,SAAU5+B,GACrB,OAAOwC,KAAKqG,MAAM,WACjBb,EAAO42B,WAAYp8B,KAAMxC,SAK5BgI,EAAO8B,OAAQ,CACd2L,KAAM,SAAUzM,EAAMhJ,EAAMU,GAC3B,IAAIgI,EAAKqd,EACR8Y,EAAQ71B,EAAKtC,SAGd,GAAe,IAAVm4B,GAAyB,IAAVA,GAAyB,IAAVA,EAKnC,YAAkC,IAAtB71B,EAAKvB,aACTO,EAAOgd,KAAMhc,EAAMhJ,EAAMU,IAKlB,IAAVm+B,GAAgB72B,EAAOwU,SAAUxT,KACrC+c,EAAQ/d,EAAO82B,UAAW9+B,EAAK6L,iBAC5B7D,EAAOuN,KAAK9E,MAAMsuB,KAAK3tB,KAAMpR,GAAS2+B,QAAWj6B,SAGtCA,IAAVhE,EACW,OAAVA,OACJsH,EAAO42B,WAAY51B,EAAMhJ,GAIrB+lB,GAAS,QAASA,QACuBrhB,KAA3CgE,EAAMqd,EAAMjB,IAAK9b,EAAMtI,EAAOV,IACzB0I,GAGRM,EAAKtB,aAAc1H,EAAMU,EAAQ,IAC1BA,GAGHqlB,GAAS,QAASA,GAA+C,QAApCrd,EAAMqd,EAAMzlB,IAAK0I,EAAMhJ,IACjD0I,EAMM,OAHdA,EAAMV,EAAOkM,KAAKuB,KAAMzM,EAAMhJ,SAGT0E,EAAYgE,IAGlCo2B,UAAW,CACV/6B,KAAM,CACL+gB,IAAK,SAAU9b,EAAMtI,GACpB,IAAM6F,EAAQm4B,YAAwB,UAAVh+B,GAC3BuP,EAAUjH,EAAM,SAAY,CAC5B,IAAI3B,EAAM2B,EAAKtI,MAKf,OAJAsI,EAAKtB,aAAc,OAAQhH,GACtB2G,IACJ2B,EAAKtI,MAAQ2G,GAEP3G,MAMXk+B,WAAY,SAAU51B,EAAMtI,GAC3B,IAAIV,EACHP,EAAI,EAIJu/B,EAAYt+B,GAASA,EAAM+P,MAAOiO,GAEnC,GAAKsgB,GAA+B,IAAlBh2B,EAAKtC,SACtB,KAAU1G,EAAOg/B,EAAWv/B,MAC3BuJ,EAAK2I,gBAAiB3R,MAO1B2+B,GAAW,CACV7Z,IAAK,SAAU9b,EAAMtI,EAAOV,GAQ3B,OAPe,IAAVU,EAGJsH,EAAO42B,WAAY51B,EAAMhJ,GAEzBgJ,EAAKtB,aAAc1H,EAAMA,GAEnBA,IAITgI,EAAOa,KAAMb,EAAOuN,KAAK9E,MAAMsuB,KAAKxY,OAAO9V,MAAO,SAAU,SAAU7E,EAAI5L,GACzE,IAAIC,EAASqS,GAAYtS,IAAUgI,EAAOkM,KAAKuB,KAE/CnD,GAAYtS,GAAS,SAAUgJ,EAAMhJ,EAAMiM,GAC1C,IAAIvD,EAAK0jB,EACR6S,EAAgBj/B,EAAK6L,cAYtB,OAVMI,IAGLmgB,EAAS9Z,GAAY2sB,GACrB3sB,GAAY2sB,GAAkBv2B,EAC9BA,EAAqC,MAA/BzI,EAAQ+I,EAAMhJ,EAAMiM,GACzBgzB,EACA,KACD3sB,GAAY2sB,GAAkB7S,GAExB1jB,MAOT,IAAIw2B,GAAa,sCAChBC,GAAa,gBAyIb,SAASC,GAAkB1+B,GAE1B,OADaA,EAAM+P,MAAOiO,IAAmB,IAC/BlN,KAAM,KAItB,SAAS6tB,GAAUr2B,GAClB,OAAOA,EAAKvB,cAAgBuB,EAAKvB,aAAc,UAAa,GAG7D,SAAS63B,GAAgB5+B,GACxB,OAAKgD,MAAMD,QAAS/C,GACZA,EAEc,iBAAVA,GACJA,EAAM+P,MAAOiO,IAEd,GAxJR1W,EAAOE,GAAG4B,OAAQ,CACjBkb,KAAM,SAAUhlB,EAAMU,GACrB,OAAOijB,EAAQnhB,KAAMwF,EAAOgd,KAAMhlB,EAAMU,EAAOuI,UAAU9E,OAAS,IAGnEo7B,WAAY,SAAUv/B,GACrB,OAAOwC,KAAKqG,MAAM,kBACVrG,KAAMwF,EAAOw3B,QAASx/B,IAAUA,SAK1CgI,EAAO8B,OAAQ,CACdkb,KAAM,SAAUhc,EAAMhJ,EAAMU,GAC3B,IAAIgI,EAAKqd,EACR8Y,EAAQ71B,EAAKtC,SAGd,GAAe,IAAVm4B,GAAyB,IAAVA,GAAyB,IAAVA,EAWnC,OAPe,IAAVA,GAAgB72B,EAAOwU,SAAUxT,KAGrChJ,EAAOgI,EAAOw3B,QAASx/B,IAAUA,EACjC+lB,EAAQ/d,EAAOwxB,UAAWx5B,SAGZ0E,IAAVhE,EACCqlB,GAAS,QAASA,QACuBrhB,KAA3CgE,EAAMqd,EAAMjB,IAAK9b,EAAMtI,EAAOV,IACzB0I,EAGCM,EAAMhJ,GAASU,EAGpBqlB,GAAS,QAASA,GAA+C,QAApCrd,EAAMqd,EAAMzlB,IAAK0I,EAAMhJ,IACjD0I,EAGDM,EAAMhJ,IAGdw5B,UAAW,CACVhhB,SAAU,CACTlY,IAAK,SAAU0I,GAOd,IAAIy2B,EAAWz3B,EAAOkM,KAAKuB,KAAMzM,EAAM,YAEvC,OAAKy2B,EACGvJ,SAAUuJ,EAAU,IAI3BP,GAAW9tB,KAAMpI,EAAKiH,WACtBkvB,GAAW/tB,KAAMpI,EAAKiH,WACtBjH,EAAKuP,KAEE,GAGA,KAKXinB,QAAS,CACR,IAAO,UACP,MAAS,eAYLj5B,EAAQk4B,cACbz2B,EAAOwxB,UAAU9gB,SAAW,CAC3BpY,IAAK,SAAU0I,GAId,IAAIrG,EAASqG,EAAKnB,WAIlB,OAHKlF,GAAUA,EAAOkF,YACrBlF,EAAOkF,WAAW8Q,cAEZ,MAERmM,IAAK,SAAU9b,GAId,IAAIrG,EAASqG,EAAKnB,WACblF,IACJA,EAAOgW,cAEFhW,EAAOkF,YACXlF,EAAOkF,WAAW8Q,kBAOvB3Q,EAAOa,KAAM,CACZ,WACA,WACA,YACA,cACA,cACA,UACA,UACA,SACA,cACA,oBACE,WACFb,EAAOw3B,QAASh9B,KAAKqJ,eAAkBrJ,QA4BxCwF,EAAOE,GAAG4B,OAAQ,CACjB41B,SAAU,SAAUh/B,GACnB,IAAIi/B,EAAS32B,EAAMwJ,EAAKotB,EAAUC,EAAOn2B,EAAGo2B,EAC3CrgC,EAAI,EAEL,GAAK+G,EAAY9F,GAChB,OAAO8B,KAAKqG,MAAM,SAAUa,GAC3B1B,EAAQxF,MAAOk9B,SAAUh/B,EAAMd,KAAM4C,KAAMkH,EAAG21B,GAAU78B,WAM1D,IAFAm9B,EAAUL,GAAgB5+B,IAEbyD,OACZ,KAAU6E,EAAOxG,KAAM/C,MAItB,GAHAmgC,EAAWP,GAAUr2B,GACrBwJ,EAAwB,IAAlBxJ,EAAKtC,UAAoB,IAAM04B,GAAkBQ,GAAa,IAEzD,CAEV,IADAl2B,EAAI,EACMm2B,EAAQF,EAASj2B,MACrB8I,EAAIvM,QAAS,IAAM45B,EAAQ,KAAQ,IACvCrtB,GAAOqtB,EAAQ,KAMZD,KADLE,EAAaV,GAAkB5sB,KAE9BxJ,EAAKtB,aAAc,QAASo4B,GAMhC,OAAOt9B,MAGRu9B,YAAa,SAAUr/B,GACtB,IAAIi/B,EAAS32B,EAAMwJ,EAAKotB,EAAUC,EAAOn2B,EAAGo2B,EAC3CrgC,EAAI,EAEL,GAAK+G,EAAY9F,GAChB,OAAO8B,KAAKqG,MAAM,SAAUa,GAC3B1B,EAAQxF,MAAOu9B,YAAar/B,EAAMd,KAAM4C,KAAMkH,EAAG21B,GAAU78B,WAI7D,IAAMyG,UAAU9E,OACf,OAAO3B,KAAKiT,KAAM,QAAS,IAK5B,IAFAkqB,EAAUL,GAAgB5+B,IAEbyD,OACZ,KAAU6E,EAAOxG,KAAM/C,MAMtB,GALAmgC,EAAWP,GAAUr2B,GAGrBwJ,EAAwB,IAAlBxJ,EAAKtC,UAAoB,IAAM04B,GAAkBQ,GAAa,IAEzD,CAEV,IADAl2B,EAAI,EACMm2B,EAAQF,EAASj2B,MAG1B,KAAQ8I,EAAIvM,QAAS,IAAM45B,EAAQ,MAAS,GAC3CrtB,EAAMA,EAAIhI,QAAS,IAAMq1B,EAAQ,IAAK,KAMnCD,KADLE,EAAaV,GAAkB5sB,KAE9BxJ,EAAKtB,aAAc,QAASo4B,GAMhC,OAAOt9B,MAGRw9B,YAAa,SAAUt/B,EAAOu/B,GAC7B,IAAIl8B,SAAcrD,EACjBw/B,EAAwB,WAATn8B,GAAqBL,MAAMD,QAAS/C,GAEpD,MAAyB,kBAAbu/B,GAA0BC,EAC9BD,EAAWz9B,KAAKk9B,SAAUh/B,GAAU8B,KAAKu9B,YAAar/B,GAGzD8F,EAAY9F,GACT8B,KAAKqG,MAAM,SAAUpJ,GAC3BuI,EAAQxF,MAAOw9B,YACdt/B,EAAMd,KAAM4C,KAAM/C,EAAG4/B,GAAU78B,MAAQy9B,GACvCA,MAKIz9B,KAAKqG,MAAM,WACjB,IAAI+K,EAAWnU,EAAG4E,EAAM87B,EAExB,GAAKD,EAOJ,IAJAzgC,EAAI,EACJ4E,EAAO2D,EAAQxF,MACf29B,EAAab,GAAgB5+B,GAEnBkT,EAAYusB,EAAY1gC,MAG5B4E,EAAK+7B,SAAUxsB,GACnBvP,EAAK07B,YAAansB,GAElBvP,EAAKq7B,SAAU9rB,aAKIlP,IAAVhE,GAAgC,YAATqD,KAClC6P,EAAYyrB,GAAU78B,QAIrB0iB,EAASJ,IAAKtiB,KAAM,gBAAiBoR,GAOjCpR,KAAKkF,cACTlF,KAAKkF,aAAc,QAClBkM,IAAuB,IAAVlT,EACZ,GACAwkB,EAAS5kB,IAAKkC,KAAM,kBAAqB,SAO/C49B,SAAU,SAAUn4B,GACnB,IAAI2L,EAAW5K,EACdvJ,EAAI,EAGL,IADAmU,EAAY,IAAM3L,EAAW,IACnBe,EAAOxG,KAAM/C,MACtB,GAAuB,IAAlBuJ,EAAKtC,WACP,IAAM04B,GAAkBC,GAAUr2B,IAAW,KAAM/C,QAAS2N,IAAe,EAC7E,OAAO,EAIT,OAAO,KAOT,IAAIysB,GAAU,MAEdr4B,EAAOE,GAAG4B,OAAQ,CACjBzC,IAAK,SAAU3G,GACd,IAAIqlB,EAAOrd,EAAKkpB,EACf5oB,EAAOxG,KAAM,GAEd,OAAMyG,UAAU9E,QA0BhBytB,EAAkBprB,EAAY9F,GAEvB8B,KAAKqG,MAAM,SAAUpJ,GAC3B,IAAI4H,EAEmB,IAAlB7E,KAAKkE,WAWE,OANXW,EADIuqB,EACElxB,EAAMd,KAAM4C,KAAM/C,EAAGuI,EAAQxF,MAAO6E,OAEpC3G,GAKN2G,EAAM,GAEoB,iBAARA,EAClBA,GAAO,GAEI3D,MAAMD,QAAS4D,KAC1BA,EAAMW,EAAOe,IAAK1B,GAAK,SAAU3G,GAChC,OAAgB,MAATA,EAAgB,GAAKA,EAAQ,QAItCqlB,EAAQ/d,EAAOs4B,SAAU99B,KAAKuB,OAAUiE,EAAOs4B,SAAU99B,KAAKyN,SAASpE,iBAGrD,QAASka,QAA+CrhB,IAApCqhB,EAAMjB,IAAKtiB,KAAM6E,EAAK,WAC3D7E,KAAK9B,MAAQ2G,QAzDT2B,GACJ+c,EAAQ/d,EAAOs4B,SAAUt3B,EAAKjF,OAC7BiE,EAAOs4B,SAAUt3B,EAAKiH,SAASpE,iBAG/B,QAASka,QACgCrhB,KAAvCgE,EAAMqd,EAAMzlB,IAAK0I,EAAM,UAElBN,EAMY,iBAHpBA,EAAMM,EAAKtI,OAIHgI,EAAI8B,QAAS61B,GAAS,IAIhB,MAAP33B,EAAc,GAAKA,OAG3B,KAyCHV,EAAO8B,OAAQ,CACdw2B,SAAU,CACT1X,OAAQ,CACPtoB,IAAK,SAAU0I,GAEd,IAAI3B,EAAMW,EAAOkM,KAAKuB,KAAMzM,EAAM,SAClC,OAAc,MAAP3B,EACNA,EAMA+3B,GAAkBp3B,EAAOR,KAAMwB,MAGlCoD,OAAQ,CACP9L,IAAK,SAAU0I,GACd,IAAItI,EAAOkoB,EAAQnpB,EAClB0C,EAAU6G,EAAK7G,QACf+B,EAAQ8E,EAAK2P,cACbmS,EAAoB,eAAd9hB,EAAKjF,KACXkkB,EAAS6C,EAAM,KAAO,GACtByM,EAAMzM,EAAM5mB,EAAQ,EAAI/B,EAAQgC,OAUjC,IAPC1E,EADIyE,EAAQ,EACRqzB,EAGAzM,EAAM5mB,EAAQ,EAIXzE,EAAI83B,EAAK93B,IAKhB,KAJAmpB,EAASzmB,EAAS1C,IAIJiZ,UAAYjZ,IAAMyE,KAG7B0kB,EAAO5Y,YACL4Y,EAAO/gB,WAAWmI,WACnBC,EAAU2Y,EAAO/gB,WAAY,aAAiB,CAMjD,GAHAnH,EAAQsH,EAAQ4gB,GAASvhB,MAGpByjB,EACJ,OAAOpqB,EAIRunB,EAAOjjB,KAAMtE,GAIf,OAAOunB,GAGRnD,IAAK,SAAU9b,EAAMtI,GAMpB,IALA,IAAI6/B,EAAW3X,EACdzmB,EAAU6G,EAAK7G,QACf8lB,EAASjgB,EAAOiD,UAAWvK,GAC3BjB,EAAI0C,EAAQgC,OAEL1E,OACPmpB,EAASzmB,EAAS1C,IAINiZ,SACX1Q,EAAOmD,QAASnD,EAAOs4B,SAAS1X,OAAOtoB,IAAKsoB,GAAUX,IAAY,KAElEsY,GAAY,GAUd,OAHMA,IACLv3B,EAAK2P,eAAiB,GAEhBsP,OAOXjgB,EAAOa,KAAM,CAAE,QAAS,aAAc,WACrCb,EAAOs4B,SAAU99B,MAAS,CACzBsiB,IAAK,SAAU9b,EAAMtI,GACpB,GAAKgD,MAAMD,QAAS/C,GACnB,OAASsI,EAAKyP,QAAUzQ,EAAOmD,QAASnD,EAAQgB,GAAO3B,MAAO3G,IAAW,IAItE6F,EAAQi4B,UACbx2B,EAAOs4B,SAAU99B,MAAOlC,IAAM,SAAU0I,GACvC,OAAwC,OAAjCA,EAAKvB,aAAc,SAAqB,KAAOuB,EAAKtI,WAW9D6F,EAAQi6B,QAAU,cAAe/6B,EAGjC,IAAIg7B,GAAc,kCACjBC,GAA0B,SAAUrwB,GACnCA,EAAEkb,mBAGJvjB,EAAO8B,OAAQ9B,EAAOgjB,MAAO,CAE5BU,QAAS,SAAUV,EAAOjG,EAAM/b,EAAM23B,GAErC,IAAIlhC,EAAG+S,EAAK6B,EAAKusB,EAAYC,EAAQzU,EAAQ3K,EAASqf,EACrDC,EAAY,CAAE/3B,GAAQ1D,GACtBvB,EAAOqC,EAAOxG,KAAMorB,EAAO,QAAWA,EAAMjnB,KAAOinB,EACnDiB,EAAa7lB,EAAOxG,KAAMorB,EAAO,aAAgBA,EAAM7X,UAAUxH,MAAO,KAAQ,GAKjF,GAHA6G,EAAMsuB,EAAczsB,EAAMrL,EAAOA,GAAQ1D,EAGlB,IAAlB0D,EAAKtC,UAAoC,IAAlBsC,EAAKtC,WAK5B+5B,GAAYrvB,KAAMrN,EAAOiE,EAAOgjB,MAAMqB,aAItCtoB,EAAKkC,QAAS,MAAS,IAG3BgmB,EAAaloB,EAAK4H,MAAO,KACzB5H,EAAOkoB,EAAWla,QAClBka,EAAWriB,QAEZi3B,EAAS98B,EAAKkC,QAAS,KAAQ,GAAK,KAAOlC,GAG3CinB,EAAQA,EAAOhjB,EAAOqC,SACrB2gB,EACA,IAAIhjB,EAAO2jB,MAAO5nB,EAAuB,iBAAVinB,GAAsBA,IAGhDK,UAAYsV,EAAe,EAAI,EACrC3V,EAAM7X,UAAY8Y,EAAWza,KAAM,KACnCwZ,EAAMsC,WAAatC,EAAM7X,UACxB,IAAIhF,OAAQ,UAAY8d,EAAWza,KAAM,iBAAoB,WAC7D,KAGDwZ,EAAMrnB,YAASe,EACTsmB,EAAM9gB,SACX8gB,EAAM9gB,OAASlB,GAIhB+b,EAAe,MAARA,EACN,CAAEiG,GACFhjB,EAAOiD,UAAW8Z,EAAM,CAAEiG,IAG3BvJ,EAAUzZ,EAAOgjB,MAAMvJ,QAAS1d,IAAU,GACpC48B,IAAgBlf,EAAQiK,UAAmD,IAAxCjK,EAAQiK,QAAQ1lB,MAAOgD,EAAM+b,IAAtE,CAMA,IAAM4b,IAAiBlf,EAAQsM,WAAannB,EAAUoC,GAAS,CAM9D,IAJA43B,EAAanf,EAAQ6J,cAAgBvnB,EAC/B08B,GAAYrvB,KAAMwvB,EAAa78B,KACpCyO,EAAMA,EAAI3K,YAEH2K,EAAKA,EAAMA,EAAI3K,WACtBk5B,EAAU/7B,KAAMwN,GAChB6B,EAAM7B,EAIF6B,KAAUrL,EAAK6H,eAAiBvL,IACpCy7B,EAAU/7B,KAAMqP,EAAIb,aAAea,EAAI2sB,cAAgBv7B,GAMzD,IADAhG,EAAI,GACM+S,EAAMuuB,EAAWthC,QAAYurB,EAAMmC,wBAC5C2T,EAActuB,EACdwY,EAAMjnB,KAAOtE,EAAI,EAChBmhC,EACAnf,EAAQ8K,UAAYxoB,GAGrBqoB,GAAWlH,EAAS5kB,IAAKkS,EAAK,WAAcrS,OAAOY,OAAQ,OAAUiqB,EAAMjnB,OAC1EmhB,EAAS5kB,IAAKkS,EAAK,YAEnB4Z,EAAOpmB,MAAOwM,EAAKuS,IAIpBqH,EAASyU,GAAUruB,EAAKquB,KACTzU,EAAOpmB,OAASye,EAAYjS,KAC1CwY,EAAMrnB,OAASyoB,EAAOpmB,MAAOwM,EAAKuS,IACZ,IAAjBiG,EAAMrnB,QACVqnB,EAAMS,kBA8CT,OA1CAT,EAAMjnB,KAAOA,EAGP48B,GAAiB3V,EAAMoD,sBAEpB3M,EAAQyH,WACqC,IAApDzH,EAAQyH,SAASljB,MAAO+6B,EAAUrzB,MAAOqX,KACzCN,EAAYzb,IAIP63B,GAAUr6B,EAAYwC,EAAMjF,MAAa6C,EAAUoC,MAGvDqL,EAAMrL,EAAM63B,MAGX73B,EAAM63B,GAAW,MAIlB74B,EAAOgjB,MAAMqB,UAAYtoB,EAEpBinB,EAAMmC,wBACV2T,EAAYptB,iBAAkB3P,EAAM28B,IAGrC13B,EAAMjF,KAEDinB,EAAMmC,wBACV2T,EAAYzd,oBAAqBtf,EAAM28B,IAGxC14B,EAAOgjB,MAAMqB,eAAY3nB,EAEpB2P,IACJrL,EAAM63B,GAAWxsB,IAMd2W,EAAMrnB,SAKds9B,SAAU,SAAUl9B,EAAMiF,EAAMgiB,GAC/B,IAAI3a,EAAIrI,EAAO8B,OACd,IAAI9B,EAAO2jB,MACXX,EACA,CACCjnB,KAAMA,EACN0qB,aAAa,IAIfzmB,EAAOgjB,MAAMU,QAASrb,EAAG,KAAMrH,MAKjChB,EAAOE,GAAG4B,OAAQ,CAEjB4hB,QAAS,SAAU3nB,EAAMghB,GACxB,OAAOviB,KAAKqG,MAAM,WACjBb,EAAOgjB,MAAMU,QAAS3nB,EAAMghB,EAAMviB,UAGpC0+B,eAAgB,SAAUn9B,EAAMghB,GAC/B,IAAI/b,EAAOxG,KAAM,GACjB,GAAKwG,EACJ,OAAOhB,EAAOgjB,MAAMU,QAAS3nB,EAAMghB,EAAM/b,GAAM,MAc5CzC,EAAQi6B,SACbx4B,EAAOa,KAAM,CAAEwnB,MAAO,UAAWC,KAAM,aAAc,SAAUK,EAAM3D,GAGpE,IAAI3a,EAAU,SAAU2Y,GACvBhjB,EAAOgjB,MAAMiW,SAAUjU,EAAKhC,EAAM9gB,OAAQlC,EAAOgjB,MAAMgC,IAAKhC,KAG7DhjB,EAAOgjB,MAAMvJ,QAASuL,GAAQ,CAC7BP,MAAO,WAIN,IAAIrlB,EAAM5E,KAAKqO,eAAiBrO,KAAK8C,UAAY9C,KAChD2+B,EAAWjc,EAASvB,OAAQvc,EAAK4lB,GAE5BmU,GACL/5B,EAAIsM,iBAAkBid,EAAMte,GAAS,GAEtC6S,EAASvB,OAAQvc,EAAK4lB,GAAOmU,GAAY,GAAM,IAEhDvU,SAAU,WACT,IAAIxlB,EAAM5E,KAAKqO,eAAiBrO,KAAK8C,UAAY9C,KAChD2+B,EAAWjc,EAASvB,OAAQvc,EAAK4lB,GAAQ,EAEpCmU,EAKLjc,EAASvB,OAAQvc,EAAK4lB,EAAKmU,IAJ3B/5B,EAAIic,oBAAqBsN,EAAMte,GAAS,GACxC6S,EAAS9E,OAAQhZ,EAAK4lB,SAS3B,IAAI5U,GAAW3S,EAAO2S,SAElBrR,GAAQ,CAAE0E,KAAMqB,KAAK0hB,OAErB4S,GAAS,KAKbp5B,EAAOq5B,SAAW,SAAUtc,GAC3B,IAAI5N,EAAKmqB,EACT,IAAMvc,GAAwB,iBAATA,EACpB,OAAO,KAKR,IACC5N,GAAM,IAAM1R,EAAO87B,WAAcC,gBAAiBzc,EAAM,YACvD,MAAQ1U,IAYV,OAVAixB,EAAkBnqB,GAAOA,EAAIlG,qBAAsB,eAAiB,GAC9DkG,IAAOmqB,GACZt5B,EAAO0C,MAAO,iBACb42B,EACCt5B,EAAOe,IAAKu4B,EAAgBlxB,YAAY,SAAU8B,GACjD,OAAOA,EAAG8D,eACPxE,KAAM,MACVuT,IAGI5N,GAIR,IACCsqB,GAAW,QACXC,GAAQ,SACRC,GAAkB,wCAClBC,GAAe,qCAEhB,SAASC,GAAa1I,EAAQ1yB,EAAKq7B,EAAah/B,GAC/C,IAAI9C,EAEJ,GAAK0D,MAAMD,QAASgD,GAGnBuB,EAAOa,KAAMpC,GAAK,SAAUhH,EAAGmf,GACzBkjB,GAAeL,GAASrwB,KAAM+nB,GAGlCr2B,EAAKq2B,EAAQva,GAKbijB,GACC1I,EAAS,KAAqB,iBAANva,GAAuB,MAALA,EAAYnf,EAAI,IAAO,IACjEmf,EACAkjB,EACAh/B,WAKG,GAAMg/B,GAAiC,WAAlB/5B,EAAQtB,GAUnC3D,EAAKq2B,EAAQ1yB,QAPb,IAAMzG,KAAQyG,EACbo7B,GAAa1I,EAAS,IAAMn5B,EAAO,IAAKyG,EAAKzG,GAAQ8hC,EAAah/B,GAYrEkF,EAAO+5B,MAAQ,SAAUv0B,EAAGs0B,GAC3B,IAAI3I,EACH33B,EAAI,GACJsB,EAAM,SAAU9B,EAAKghC,GAGpB,IAAIthC,EAAQ8F,EAAYw7B,GACvBA,IACAA,EAEDxgC,EAAGA,EAAE2C,QAAW89B,mBAAoBjhC,GAAQ,IAC3CihC,mBAA6B,MAATvhC,EAAgB,GAAKA,IAG5C,GAAU,MAAL8M,EACJ,MAAO,GAIR,GAAK9J,MAAMD,QAAS+J,IAASA,EAAEpF,SAAWJ,EAAOoC,cAAeoD,GAG/DxF,EAAOa,KAAM2E,GAAG,WACf1K,EAAKN,KAAKxC,KAAMwC,KAAK9B,eAOtB,IAAMy4B,KAAU3rB,EACfq0B,GAAa1I,EAAQ3rB,EAAG2rB,GAAU2I,EAAah/B,GAKjD,OAAOtB,EAAEgQ,KAAM,MAGhBxJ,EAAOE,GAAG4B,OAAQ,CACjBo4B,UAAW,WACV,OAAOl6B,EAAO+5B,MAAOv/B,KAAK2/B,mBAE3BA,eAAgB,WACf,OAAO3/B,KAAKuG,KAAK,WAGhB,IAAIyM,EAAWxN,EAAOgd,KAAMxiB,KAAM,YAClC,OAAOgT,EAAWxN,EAAOiD,UAAWuK,GAAahT,QAC9CwR,QAAQ,WACX,IAAIjQ,EAAOvB,KAAKuB,KAGhB,OAAOvB,KAAKxC,OAASgI,EAAQxF,MAAOoa,GAAI,cACvCglB,GAAaxwB,KAAM5O,KAAKyN,YAAe0xB,GAAgBvwB,KAAMrN,KAC3DvB,KAAKiW,UAAY4P,GAAejX,KAAMrN,OACtCgF,KAAK,SAAU6C,EAAI5C,GACtB,IAAI3B,EAAMW,EAAQxF,MAAO6E,MAEzB,OAAY,MAAPA,EACG,KAGH3D,MAAMD,QAAS4D,GACZW,EAAOe,IAAK1B,GAAK,SAAUA,GACjC,MAAO,CAAErH,KAAMgJ,EAAKhJ,KAAMU,MAAO2G,EAAImD,QAASk3B,GAAO,YAIhD,CAAE1hC,KAAMgJ,EAAKhJ,KAAMU,MAAO2G,EAAImD,QAASk3B,GAAO,YAClDphC,SAKN,IACC8hC,GAAM,OACNC,GAAQ,OACRC,GAAa,gBACbC,GAAW,6BAIXC,GAAa,iBACbC,GAAY,QAWZjH,GAAa,GAObkH,GAAa,GAGbC,GAAW,KAAKn/B,OAAQ,KAGxBo/B,GAAet9B,EAASiC,cAAe,KAKxC,SAASs7B,GAA6BC,GAGrC,OAAO,SAAUC,EAAoBl/B,GAED,iBAAvBk/B,IACXl/B,EAAOk/B,EACPA,EAAqB,KAGtB,IAAIC,EACHvjC,EAAI,EACJwjC,EAAYF,EAAmBl3B,cAAc4E,MAAOiO,IAAmB,GAExE,GAAKlY,EAAY3C,GAGhB,KAAUm/B,EAAWC,EAAWxjC,MAGR,MAAlBujC,EAAU,IACdA,EAAWA,EAASl9B,MAAO,IAAO,KAChCg9B,EAAWE,GAAaF,EAAWE,IAAc,IAAK1tB,QAASzR,KAI/Di/B,EAAWE,GAAaF,EAAWE,IAAc,IAAKh+B,KAAMnB,IAQnE,SAASq/B,GAA+BJ,EAAW3gC,EAAS45B,EAAiBoH,GAE5E,IAAIC,EAAY,GACfC,EAAqBP,IAAcJ,GAEpC,SAASY,EAASN,GACjB,IAAItqB,EAcJ,OAbA0qB,EAAWJ,IAAa,EACxBh7B,EAAOa,KAAMi6B,EAAWE,IAAc,IAAI,SAAUxjB,EAAG+jB,GACtD,IAAIC,EAAsBD,EAAoBphC,EAAS45B,EAAiBoH,GACxE,MAAoC,iBAAxBK,GACVH,GAAqBD,EAAWI,GAKtBH,IACD3qB,EAAW8qB,QADf,GAHNrhC,EAAQ8gC,UAAU3tB,QAASkuB,GAC3BF,EAASE,IACF,MAKF9qB,EAGR,OAAO4qB,EAASnhC,EAAQ8gC,UAAW,MAAUG,EAAW,MAASE,EAAS,KAM3E,SAASG,GAAYv5B,EAAQpD,GAC5B,IAAI9F,EAAKmJ,EACRu5B,EAAc17B,EAAO27B,aAAaD,aAAe,GAElD,IAAM1iC,KAAO8F,OACQpC,IAAfoC,EAAK9F,MACP0iC,EAAa1iC,GAAQkJ,EAAWC,IAAUA,EAAO,KAAUnJ,GAAQ8F,EAAK9F,IAO5E,OAJKmJ,GACJnC,EAAO8B,QAAQ,EAAMI,EAAQC,GAGvBD,EA/ER04B,GAAarqB,KAAOH,GAASG,KAgP7BvQ,EAAO8B,OAAQ,CAGd85B,OAAQ,EAGRC,aAAc,GACdC,KAAM,GAENH,aAAc,CACbI,IAAK3rB,GAASG,KACdxU,KAAM,MACNigC,QAxRgB,4DAwRQ5yB,KAAMgH,GAAS6rB,UACvC7+B,QAAQ,EACR8+B,aAAa,EACbC,OAAO,EACPC,YAAa,mDAcbC,QAAS,CACR,IAAK1B,GACLn7B,KAAM,aACNqqB,KAAM,YACN1a,IAAK,4BACLmtB,KAAM,qCAGP5mB,SAAU,CACTvG,IAAK,UACL0a,KAAM,SACNyS,KAAM,YAGPC,eAAgB,CACfptB,IAAK,cACL3P,KAAM,eACN88B,KAAM,gBAKPE,WAAY,CAGX,SAAUl1B,OAGV,aAAa,EAGb,YAAaiW,KAAKC,MAGlB,WAAYxd,EAAOq5B,UAOpBqC,YAAa,CACZK,KAAK,EACLxhC,SAAS,IAOXkiC,UAAW,SAAUv6B,EAAQw6B,GAC5B,OAAOA,EAGNjB,GAAYA,GAAYv5B,EAAQlC,EAAO27B,cAAgBe,GAGvDjB,GAAYz7B,EAAO27B,aAAcz5B,IAGnCy6B,cAAe9B,GAA6BrH,IAC5CoJ,cAAe/B,GAA6BH,IAG5CmC,KAAM,SAAUd,EAAK5hC,GAGA,iBAAR4hC,IACX5hC,EAAU4hC,EACVA,OAAMr/B,GAIPvC,EAAUA,GAAW,GAErB,IAAI2iC,EAGHC,EAGAC,EACAC,EAGAC,EAGAC,EAGA/hB,EAGAgiB,EAGA3lC,EAGA4lC,EAGA7jC,EAAIwG,EAAOy8B,UAAW,GAAItiC,GAG1BmjC,EAAkB9jC,EAAEe,SAAWf,EAG/B+jC,EAAqB/jC,EAAEe,UACpB+iC,EAAgB5+B,UAAY4+B,EAAgBl9B,QAC9CJ,EAAQs9B,GACRt9B,EAAOgjB,MAGRnK,EAAW7Y,EAAOyY,WAClB+kB,EAAmBx9B,EAAOuX,UAAW,eAGrCkmB,EAAajkC,EAAEikC,YAAc,GAG7BC,EAAiB,GACjBC,EAAsB,GAGtBC,EAAW,WAGXzC,EAAQ,CACP1f,WAAY,EAGZoiB,kBAAmB,SAAU7kC,GAC5B,IAAIyP,EACJ,GAAK2S,EAAY,CAChB,IAAM6hB,EAEL,IADAA,EAAkB,GACRx0B,EAAQ8xB,GAASzxB,KAAMk0B,IAChCC,EAAiBx0B,EAAO,GAAI5E,cAAgB,MACzCo5B,EAAiBx0B,EAAO,GAAI5E,cAAgB,MAAS,IACrDrI,OAAQiN,EAAO,IAGpBA,EAAQw0B,EAAiBjkC,EAAI6K,cAAgB,KAE9C,OAAgB,MAAT4E,EAAgB,KAAOA,EAAMe,KAAM,OAI3Cs0B,sBAAuB,WACtB,OAAO1iB,EAAY4hB,EAAwB,MAI5Ce,iBAAkB,SAAU/lC,EAAMU,GAMjC,OALkB,MAAb0iB,IACJpjB,EAAO2lC,EAAqB3lC,EAAK6L,eAChC85B,EAAqB3lC,EAAK6L,gBAAmB7L,EAC9C0lC,EAAgB1lC,GAASU,GAEnB8B,MAIRwjC,iBAAkB,SAAUjiC,GAI3B,OAHkB,MAAbqf,IACJ5hB,EAAEykC,SAAWliC,GAEPvB,MAIRijC,WAAY,SAAU18B,GACrB,IAAI7B,EACJ,GAAK6B,EACJ,GAAKqa,EAGJ+f,EAAMviB,OAAQ7X,EAAKo6B,EAAM+C,cAIzB,IAAMh/B,KAAQ6B,EACb08B,EAAYv+B,GAAS,CAAEu+B,EAAYv+B,GAAQ6B,EAAK7B,IAInD,OAAO1E,MAIR2jC,MAAO,SAAUC,GAChB,IAAIC,EAAYD,GAAcR,EAK9B,OAJKd,GACJA,EAAUqB,MAAOE,GAElBp5B,EAAM,EAAGo5B,GACF7jC,OAoBV,GAfAqe,EAASzB,QAAS+jB,GAKlB3hC,EAAEuiC,MAAUA,GAAOviC,EAAEuiC,KAAO3rB,GAASG,MAAS,IAC5C/N,QAASi4B,GAAWrqB,GAAS6rB,SAAW,MAG1CziC,EAAEuC,KAAO5B,EAAQgd,QAAUhd,EAAQ4B,MAAQvC,EAAE2d,QAAU3d,EAAEuC,KAGzDvC,EAAEyhC,WAAczhC,EAAEwhC,UAAY,KAAMn3B,cAAc4E,MAAOiO,IAAmB,CAAE,IAGxD,MAAjBld,EAAE8kC,YAAsB,CAC5BnB,EAAY7/B,EAASiC,cAAe,KAKpC,IACC49B,EAAU5sB,KAAO/W,EAAEuiC,IAInBoB,EAAU5sB,KAAO4sB,EAAU5sB,KAC3B/W,EAAE8kC,YAAc1D,GAAaqB,SAAW,KAAOrB,GAAa2D,MAC3DpB,EAAUlB,SAAW,KAAOkB,EAAUoB,KACtC,MAAQl2B,GAIT7O,EAAE8kC,aAAc,GAalB,GARK9kC,EAAEujB,MAAQvjB,EAAE0iC,aAAiC,iBAAX1iC,EAAEujB,OACxCvjB,EAAEujB,KAAO/c,EAAO+5B,MAAOvgC,EAAEujB,KAAMvjB,EAAEsgC,cAIlCoB,GAA+B1H,GAAYh6B,EAAGW,EAASghC,GAGlD/f,EACJ,OAAO+f,EA8ER,IAAM1jC,KAzEN2lC,EAAcp9B,EAAOgjB,OAASxpB,EAAE4D,SAGQ,GAApB4C,EAAO47B,UAC1B57B,EAAOgjB,MAAMU,QAAS,aAIvBlqB,EAAEuC,KAAOvC,EAAEuC,KAAKugB,cAGhB9iB,EAAEglC,YAAchE,GAAWpxB,KAAM5P,EAAEuC,MAKnCghC,EAAWvjC,EAAEuiC,IAAIv5B,QAAS63B,GAAO,IAG3B7gC,EAAEglC,WAwBIhlC,EAAEujB,MAAQvjB,EAAE0iC,aACoD,KAAzE1iC,EAAE4iC,aAAe,IAAKn+B,QAAS,uCACjCzE,EAAEujB,KAAOvjB,EAAEujB,KAAKva,QAAS43B,GAAK,OAvB9BiD,EAAW7jC,EAAEuiC,IAAIj+B,MAAOi/B,EAAS5gC,QAG5B3C,EAAEujB,OAAUvjB,EAAE0iC,aAAiC,iBAAX1iC,EAAEujB,QAC1CggB,IAAc3D,GAAOhwB,KAAM2zB,GAAa,IAAM,KAAQvjC,EAAEujB,YAGjDvjB,EAAEujB,OAIO,IAAZvjB,EAAEqQ,QACNkzB,EAAWA,EAASv6B,QAAS83B,GAAY,MACzC+C,GAAajE,GAAOhwB,KAAM2zB,GAAa,IAAM,KAAQ,KAASh+B,GAAM0E,OACnE45B,GAIF7jC,EAAEuiC,IAAMgB,EAAWM,GASf7jC,EAAEilC,aACDz+B,EAAO67B,aAAckB,IACzB5B,EAAM4C,iBAAkB,oBAAqB/9B,EAAO67B,aAAckB,IAE9D/8B,EAAO87B,KAAMiB,IACjB5B,EAAM4C,iBAAkB,gBAAiB/9B,EAAO87B,KAAMiB,MAKnDvjC,EAAEujB,MAAQvjB,EAAEglC,aAAgC,IAAlBhlC,EAAE4iC,aAAyBjiC,EAAQiiC,cACjEjB,EAAM4C,iBAAkB,eAAgBvkC,EAAE4iC,aAI3CjB,EAAM4C,iBACL,SACAvkC,EAAEyhC,UAAW,IAAOzhC,EAAE6iC,QAAS7iC,EAAEyhC,UAAW,IAC3CzhC,EAAE6iC,QAAS7iC,EAAEyhC,UAAW,KACA,MAArBzhC,EAAEyhC,UAAW,GAAc,KAAON,GAAW,WAAa,IAC7DnhC,EAAE6iC,QAAS,MAIF7iC,EAAEklC,QACZvD,EAAM4C,iBAAkBtmC,EAAG+B,EAAEklC,QAASjnC,IAIvC,GAAK+B,EAAEmlC,cAC+C,IAAnDnlC,EAAEmlC,WAAW/mC,KAAM0lC,EAAiBnC,EAAO3hC,IAAiB4hB,GAG9D,OAAO+f,EAAMgD,QAed,GAXAP,EAAW,QAGXJ,EAAiB1iC,IAAKtB,EAAE06B,UACxBiH,EAAMl2B,KAAMzL,EAAEolC,SACdzD,EAAM9jB,KAAM7d,EAAEkJ,OAGdo6B,EAAY5B,GAA+BR,GAAYlhC,EAAGW,EAASghC,GAK5D,CASN,GARAA,EAAM1f,WAAa,EAGd2hB,GACJG,EAAmB7Z,QAAS,WAAY,CAAEyX,EAAO3hC,IAI7C4hB,EACJ,OAAO+f,EAIH3hC,EAAE2iC,OAAS3iC,EAAE88B,QAAU,IAC3B4G,EAAez/B,EAAO2c,YAAY,WACjC+gB,EAAMgD,MAAO,aACX3kC,EAAE88B,UAGN,IACClb,GAAY,EACZ0hB,EAAU+B,KAAMnB,EAAgBz4B,GAC/B,MAAQoD,GAGT,GAAK+S,EACJ,MAAM/S,EAIPpD,GAAO,EAAGoD,SAhCXpD,GAAO,EAAG,gBAqCX,SAASA,EAAMi5B,EAAQY,EAAkBC,EAAWL,GACnD,IAAIM,EAAWJ,EAASl8B,EAAOu8B,EAAUC,EACxCd,EAAaU,EAGT1jB,IAILA,GAAY,EAGP8hB,GACJz/B,EAAO84B,aAAc2G,GAKtBJ,OAAYpgC,EAGZsgC,EAAwB0B,GAAW,GAGnCvD,EAAM1f,WAAayiB,EAAS,EAAI,EAAI,EAGpCc,EAAYd,GAAU,KAAOA,EAAS,KAAkB,MAAXA,EAGxCa,IACJE,EA7lBJ,SAA8BzlC,EAAG2hC,EAAO4D,GAOvC,IALA,IAAII,EAAIpjC,EAAMqjC,EAAeC,EAC5B3pB,EAAWlc,EAAEkc,SACbulB,EAAYzhC,EAAEyhC,UAGY,MAAnBA,EAAW,IAClBA,EAAUlxB,aACErN,IAAPyiC,IACJA,EAAK3lC,EAAEykC,UAAY9C,EAAM0C,kBAAmB,iBAK9C,GAAKsB,EACJ,IAAMpjC,KAAQ2Z,EACb,GAAKA,EAAU3Z,IAAU2Z,EAAU3Z,GAAOqN,KAAM+1B,GAAO,CACtDlE,EAAU3tB,QAASvR,GACnB,MAMH,GAAKk/B,EAAW,KAAO8D,EACtBK,EAAgBnE,EAAW,OACrB,CAGN,IAAMl/B,KAAQgjC,EAAY,CACzB,IAAM9D,EAAW,IAAOzhC,EAAEgjC,WAAYzgC,EAAO,IAAMk/B,EAAW,IAAQ,CACrEmE,EAAgBrjC,EAChB,MAEKsjC,IACLA,EAAgBtjC,GAKlBqjC,EAAgBA,GAAiBC,EAMlC,GAAKD,EAIJ,OAHKA,IAAkBnE,EAAW,IACjCA,EAAU3tB,QAAS8xB,GAEbL,EAAWK,GA0iBLE,CAAqB9lC,EAAG2hC,EAAO4D,KAIrCC,GACLh/B,EAAOmD,QAAS,SAAU3J,EAAEyhC,YAAe,GAC3Cj7B,EAAOmD,QAAS,OAAQ3J,EAAEyhC,WAAc,IACxCzhC,EAAEgjC,WAAY,eAAkB,cAIjCyC,EA9iBH,SAAsBzlC,EAAGylC,EAAU9D,EAAO6D,GACzC,IAAIO,EAAOC,EAASC,EAAMpzB,EAAKsJ,EAC9B6mB,EAAa,GAGbvB,EAAYzhC,EAAEyhC,UAAUn9B,QAGzB,GAAKm9B,EAAW,GACf,IAAMwE,KAAQjmC,EAAEgjC,WACfA,EAAYiD,EAAK57B,eAAkBrK,EAAEgjC,WAAYiD,GAOnD,IAHAD,EAAUvE,EAAUlxB,QAGZy1B,GAcP,GAZKhmC,EAAE+iC,eAAgBiD,KACtBrE,EAAO3hC,EAAE+iC,eAAgBiD,IAAcP,IAIlCtpB,GAAQqpB,GAAaxlC,EAAEkmC,aAC5BT,EAAWzlC,EAAEkmC,WAAYT,EAAUzlC,EAAEwhC,WAGtCrlB,EAAO6pB,EACPA,EAAUvE,EAAUlxB,QAKnB,GAAiB,MAAZy1B,EAEJA,EAAU7pB,OAGJ,GAAc,MAATA,GAAgBA,IAAS6pB,EAAU,CAM9C,KAHAC,EAAOjD,EAAY7mB,EAAO,IAAM6pB,IAAahD,EAAY,KAAOgD,IAI/D,IAAMD,KAAS/C,EAId,IADAnwB,EAAMkzB,EAAM57B,MAAO,MACT,KAAQ67B,IAGjBC,EAAOjD,EAAY7mB,EAAO,IAAMtJ,EAAK,KACpCmwB,EAAY,KAAOnwB,EAAK,KACb,EAGG,IAATozB,EACJA,EAAOjD,EAAY+C,IAGgB,IAAxB/C,EAAY+C,KACvBC,EAAUnzB,EAAK,GACf4uB,EAAU3tB,QAASjB,EAAK,KAEzB,MAOJ,IAAc,IAATozB,EAGJ,GAAKA,GAAQjmC,EAAEmmC,OACdV,EAAWQ,EAAMR,QAEjB,IACCA,EAAWQ,EAAMR,GAChB,MAAQ52B,GACT,MAAO,CACNsQ,MAAO,cACPjW,MAAO+8B,EAAOp3B,EAAI,sBAAwBsN,EAAO,OAAS6pB,IASjE,MAAO,CAAE7mB,MAAO,UAAWoE,KAAMkiB,GAidpBW,CAAapmC,EAAGylC,EAAU9D,EAAO6D,GAGvCA,GAGCxlC,EAAEilC,cACNS,EAAW/D,EAAM0C,kBAAmB,oBAEnC79B,EAAO67B,aAAckB,GAAamC,IAEnCA,EAAW/D,EAAM0C,kBAAmB,WAEnC79B,EAAO87B,KAAMiB,GAAamC,IAKZ,MAAXhB,GAA6B,SAAX1kC,EAAEuC,KACxBqiC,EAAa,YAGS,MAAXF,EACXE,EAAa,eAIbA,EAAaa,EAAStmB,MACtBimB,EAAUK,EAASliB,KAEnBiiB,IADAt8B,EAAQu8B,EAASv8B,UAMlBA,EAAQ07B,GACHF,GAAWE,IACfA,EAAa,QACRF,EAAS,IACbA,EAAS,KAMZ/C,EAAM+C,OAASA,EACf/C,EAAMiD,YAAeU,GAAoBV,GAAe,GAGnDY,EACJnmB,EAASiB,YAAawjB,EAAiB,CAAEsB,EAASR,EAAYjD,IAE9DtiB,EAASqB,WAAYojB,EAAiB,CAAEnC,EAAOiD,EAAY17B,IAI5Dy4B,EAAMsC,WAAYA,GAClBA,OAAa/gC,EAER0gC,GACJG,EAAmB7Z,QAASsb,EAAY,cAAgB,YACvD,CAAE7D,EAAO3hC,EAAGwlC,EAAYJ,EAAUl8B,IAIpC86B,EAAiBhlB,SAAU8kB,EAAiB,CAAEnC,EAAOiD,IAEhDhB,IACJG,EAAmB7Z,QAAS,eAAgB,CAAEyX,EAAO3hC,MAG3CwG,EAAO47B,QAChB57B,EAAOgjB,MAAMU,QAAS,cAKzB,OAAOyX,GAGR0E,QAAS,SAAU9D,EAAKhf,EAAMjc,GAC7B,OAAOd,EAAO1H,IAAKyjC,EAAKhf,EAAMjc,EAAU,SAGzCg/B,UAAW,SAAU/D,EAAKj7B,GACzB,OAAOd,EAAO1H,IAAKyjC,OAAKr/B,EAAWoE,EAAU,aAI/Cd,EAAOa,KAAM,CAAE,MAAO,SAAU,SAAU+C,EAAIuT,GAC7CnX,EAAQmX,GAAW,SAAU4kB,EAAKhf,EAAMjc,EAAU/E,GAUjD,OAPKyC,EAAYue,KAChBhhB,EAAOA,GAAQ+E,EACfA,EAAWic,EACXA,OAAOrgB,GAIDsD,EAAO68B,KAAM78B,EAAO8B,OAAQ,CAClCi6B,IAAKA,EACLhgC,KAAMob,EACN6jB,SAAUj/B,EACVghB,KAAMA,EACN6hB,QAAS99B,GACPd,EAAOoC,cAAe25B,IAASA,QAIpC/7B,EAAO28B,eAAe,SAAUnjC,GAC/B,IAAI/B,EACJ,IAAMA,KAAK+B,EAAEklC,QACa,iBAApBjnC,EAAEoM,gBACNrK,EAAE4iC,YAAc5iC,EAAEklC,QAASjnC,IAAO,OAMrCuI,EAAO8pB,SAAW,SAAUiS,EAAK5hC,EAASiF,GACzC,OAAOY,EAAO68B,KAAM,CACnBd,IAAKA,EAGLhgC,KAAM,MACNi/B,SAAU,SACVnxB,OAAO,EACPsyB,OAAO,EACP/+B,QAAQ,EAKRo/B,WAAY,CACX,cAAe,cAEhBkD,WAAY,SAAUT,GACrBj/B,EAAOgD,WAAYi8B,EAAU9kC,EAASiF,OAMzCY,EAAOE,GAAG4B,OAAQ,CACjBi+B,QAAS,SAAUlW,GAClB,IAAI7H,EAyBJ,OAvBKxnB,KAAM,KACLgE,EAAYqrB,KAChBA,EAAOA,EAAKjyB,KAAM4C,KAAM,KAIzBwnB,EAAOhiB,EAAQ6pB,EAAMrvB,KAAM,GAAIqO,eAAgB1H,GAAI,GAAIc,OAAO,GAEzDzH,KAAM,GAAIqF,YACdmiB,EAAKyI,aAAcjwB,KAAM,IAG1BwnB,EAAKjhB,KAAK,WAGT,IAFA,IAAIC,EAAOxG,KAEHwG,EAAKg/B,mBACZh/B,EAAOA,EAAKg/B,kBAGb,OAAOh/B,KACJupB,OAAQ/vB,OAGNA,MAGRylC,UAAW,SAAUpW,GACpB,OAAKrrB,EAAYqrB,GACTrvB,KAAKqG,MAAM,SAAUpJ,GAC3BuI,EAAQxF,MAAOylC,UAAWpW,EAAKjyB,KAAM4C,KAAM/C,OAItC+C,KAAKqG,MAAM,WACjB,IAAIxE,EAAO2D,EAAQxF,MAClBkb,EAAWrZ,EAAKqZ,WAEZA,EAASvZ,OACbuZ,EAASqqB,QAASlW,GAGlBxtB,EAAKkuB,OAAQV,OAKhB7H,KAAM,SAAU6H,GACf,IAAIqW,EAAiB1hC,EAAYqrB,GAEjC,OAAOrvB,KAAKqG,MAAM,SAAUpJ,GAC3BuI,EAAQxF,MAAOulC,QAASG,EAAiBrW,EAAKjyB,KAAM4C,KAAM/C,GAAMoyB,OAIlEsW,OAAQ,SAAUlgC,GAIjB,OAHAzF,KAAKG,OAAQsF,GAAWkV,IAAK,QAAStU,MAAM,WAC3Cb,EAAQxF,MAAOowB,YAAapwB,KAAK4N,eAE3B5N,QAKTwF,EAAOuN,KAAKtH,QAAQ0sB,OAAS,SAAU3xB,GACtC,OAAQhB,EAAOuN,KAAKtH,QAAQm6B,QAASp/B,IAEtChB,EAAOuN,KAAKtH,QAAQm6B,QAAU,SAAUp/B,GACvC,SAAWA,EAAKksB,aAAelsB,EAAKqtB,cAAgBrtB,EAAKovB,iBAAiBj0B,SAM3E6D,EAAO27B,aAAa0E,IAAM,WACzB,IACC,OAAO,IAAI5iC,EAAO6iC,eACjB,MAAQj4B,MAGX,IAAIk4B,GAAmB,CAGrBC,EAAG,IAIHC,KAAM,KAEPC,GAAe1gC,EAAO27B,aAAa0E,MAEpC9hC,EAAQoiC,OAASD,IAAkB,oBAAqBA,GACxDniC,EAAQs+B,KAAO6D,KAAiBA,GAEhC1gC,EAAO48B,eAAe,SAAUziC,GAC/B,IAAI2G,EAAU8/B,EAGd,GAAKriC,EAAQoiC,MAAQD,KAAiBvmC,EAAQmkC,YAC7C,MAAO,CACNO,KAAM,SAAUH,EAASxK,GACxB,IAAIz8B,EACH4oC,EAAMlmC,EAAQkmC,MAWf,GATAA,EAAIQ,KACH1mC,EAAQ4B,KACR5B,EAAQ4hC,IACR5hC,EAAQgiC,MACRhiC,EAAQ2mC,SACR3mC,EAAQ6W,UAIJ7W,EAAQ4mC,UACZ,IAAMtpC,KAAK0C,EAAQ4mC,UAClBV,EAAK5oC,GAAM0C,EAAQ4mC,UAAWtpC,GAmBhC,IAAMA,KAdD0C,EAAQ8jC,UAAYoC,EAAIrC,kBAC5BqC,EAAIrC,iBAAkB7jC,EAAQ8jC,UAQzB9jC,EAAQmkC,aAAgBI,EAAS,sBACtCA,EAAS,oBAAuB,kBAItBA,EACV2B,EAAItC,iBAAkBtmC,EAAGinC,EAASjnC,IAInCqJ,EAAW,SAAU/E,GACpB,OAAO,WACD+E,IACJA,EAAW8/B,EAAgBP,EAAIW,OAC9BX,EAAIY,QAAUZ,EAAIa,QAAUb,EAAIc,UAC/Bd,EAAIe,mBAAqB,KAEb,UAATrlC,EACJskC,EAAIlC,QACgB,UAATpiC,EAKgB,iBAAfskC,EAAInC,OACfhK,EAAU,EAAG,SAEbA,EAGCmM,EAAInC,OACJmC,EAAIjC,YAINlK,EACCqM,GAAkBF,EAAInC,SAAYmC,EAAInC,OACtCmC,EAAIjC,WAK+B,UAAjCiC,EAAIgB,cAAgB,SACM,iBAArBhB,EAAIiB,aACV,CAAEC,OAAQlB,EAAIpB,UACd,CAAEz/B,KAAM6gC,EAAIiB,cACbjB,EAAIvC,4BAQTuC,EAAIW,OAASlgC,IACb8/B,EAAgBP,EAAIY,QAAUZ,EAAIc,UAAYrgC,EAAU,cAKnCpE,IAAhB2jC,EAAIa,QACRb,EAAIa,QAAUN,EAEdP,EAAIe,mBAAqB,WAGA,IAAnBf,EAAI5kB,YAMRhe,EAAO2c,YAAY,WACbtZ,GACJ8/B,QAQL9/B,EAAWA,EAAU,SAErB,IAGCu/B,EAAIxB,KAAM1kC,EAAQqkC,YAAcrkC,EAAQ4iB,MAAQ,MAC/C,MAAQ1U,GAGT,GAAKvH,EACJ,MAAMuH,IAKT81B,MAAO,WACDr9B,GACJA,SAWLd,EAAO28B,eAAe,SAAUnjC,GAC1BA,EAAE8kC,cACN9kC,EAAEkc,SAASpW,QAAS,MAKtBU,EAAOy8B,UAAW,CACjBJ,QAAS,CACR/8B,OAAQ,6FAGToW,SAAU,CACTpW,OAAQ,2BAETk9B,WAAY,CACX,cAAe,SAAUh9B,GAExB,OADAQ,EAAOgD,WAAYxD,GACZA,MAMVQ,EAAO28B,cAAe,UAAU,SAAUnjC,QACxBkD,IAAZlD,EAAEqQ,QACNrQ,EAAEqQ,OAAQ,GAENrQ,EAAE8kC,cACN9kC,EAAEuC,KAAO,UAKXiE,EAAO48B,cAAe,UAAU,SAAUpjC,GAIxC,IAAI8F,EAAQwB,EADb,GAAKtH,EAAE8kC,aAAe9kC,EAAEgoC,YAEvB,MAAO,CACN3C,KAAM,SAAUrnB,EAAG0c,GAClB50B,EAASU,EAAQ,YACfyN,KAAMjU,EAAEgoC,aAAe,IACvBxkB,KAAM,CAAEykB,QAASjoC,EAAEkoC,cAAe5iC,IAAKtF,EAAEuiC,MACzCnZ,GAAI,aAAc9hB,EAAW,SAAU6gC,GACvCriC,EAAO8Y,SACPtX,EAAW,KACN6gC,GACJzN,EAAuB,UAAbyN,EAAI5lC,KAAmB,IAAM,IAAK4lC,EAAI5lC,QAKnDuB,EAASqC,KAAKC,YAAaN,EAAQ,KAEpC6+B,MAAO,WACDr9B,GACJA,SAUL,IAqGKgf,GArGD8hB,GAAe,GAClBC,GAAS,oBAGV7hC,EAAOy8B,UAAW,CACjBqF,MAAO,WACPC,cAAe,WACd,IAAIjhC,EAAW8gC,GAAal8B,OAAW1F,EAAOqC,QAAU,IAAQtD,GAAM0E,OAEtE,OADAjJ,KAAMsG,IAAa,EACZA,KAKTd,EAAO28B,cAAe,cAAc,SAAUnjC,EAAGwoC,EAAkB7G,GAElE,IAAI8G,EAAcC,EAAaC,EAC9BC,GAAuB,IAAZ5oC,EAAEsoC,QAAqBD,GAAOz4B,KAAM5P,EAAEuiC,KAChD,MACkB,iBAAXviC,EAAEujB,MAE6C,KADnDvjB,EAAE4iC,aAAe,IACjBn+B,QAAS,sCACX4jC,GAAOz4B,KAAM5P,EAAEujB,OAAU,QAI5B,GAAKqlB,GAAiC,UAArB5oC,EAAEyhC,UAAW,GA8D7B,OA3DAgH,EAAezoC,EAAEuoC,cAAgBvjC,EAAYhF,EAAEuoC,eAC9CvoC,EAAEuoC,gBACFvoC,EAAEuoC,cAGEK,EACJ5oC,EAAG4oC,GAAa5oC,EAAG4oC,GAAW5/B,QAASq/B,GAAQ,KAAOI,IAC/B,IAAZzoC,EAAEsoC,QACbtoC,EAAEuiC,MAAS3C,GAAOhwB,KAAM5P,EAAEuiC,KAAQ,IAAM,KAAQviC,EAAEsoC,MAAQ,IAAMG,GAIjEzoC,EAAEgjC,WAAY,eAAkB,WAI/B,OAHM2F,GACLniC,EAAO0C,MAAOu/B,EAAe,mBAEvBE,EAAmB,IAI3B3oC,EAAEyhC,UAAW,GAAM,OAGnBiH,EAAczkC,EAAQwkC,GACtBxkC,EAAQwkC,GAAiB,WACxBE,EAAoBlhC,WAIrBk6B,EAAMviB,QAAQ,gBAGQlc,IAAhBwlC,EACJliC,EAAQvC,GAAS85B,WAAY0K,GAI7BxkC,EAAQwkC,GAAiBC,EAIrB1oC,EAAGyoC,KAGPzoC,EAAEuoC,cAAgBC,EAAiBD,cAGnCH,GAAa5kC,KAAMilC,IAIfE,GAAqB3jC,EAAY0jC,IACrCA,EAAaC,EAAmB,IAGjCA,EAAoBD,OAAcxlC,KAI5B,YAYT6B,EAAQ8jC,qBACHviB,GAAOxiB,EAASglC,eAAeD,mBAAoB,IAAKviB,MACvDvT,UAAY,6BACiB,IAA3BuT,GAAK1X,WAAWjM,QAQxB6D,EAAOqV,UAAY,SAAU0H,EAAMxiB,EAASgoC,GAC3C,MAAqB,iBAATxlB,EACJ,IAEgB,kBAAZxiB,IACXgoC,EAAchoC,EACdA,GAAU,GAKLA,IAIAgE,EAAQ8jC,qBAMZ/wB,GALA/W,EAAU+C,EAASglC,eAAeD,mBAAoB,KAKvC9iC,cAAe,SACzBgR,KAAOjT,EAAS8S,SAASG,KAC9BhW,EAAQoF,KAAKC,YAAa0R,IAE1B/W,EAAU+C,GAKZukB,GAAW0gB,GAAe,IAD1BC,EAASxtB,EAAWlM,KAAMiU,IAKlB,CAAExiB,EAAQgF,cAAeijC,EAAQ,MAGzCA,EAAS5gB,GAAe,CAAE7E,GAAQxiB,EAASsnB,GAEtCA,GAAWA,EAAQ1lB,QACvB6D,EAAQ6hB,GAAUzJ,SAGZpY,EAAOW,MAAO,GAAI6hC,EAAOp6B,cAlChC,IAAIkJ,EAAMkxB,EAAQ3gB,GAyCnB7hB,EAAOE,GAAG4lB,KAAO,SAAUiW,EAAK0G,EAAQ3hC,GACvC,IAAIb,EAAUlE,EAAMkjC,EACnB5iC,EAAO7B,KACPyoB,EAAM8Y,EAAI99B,QAAS,KAsDpB,OApDKglB,GAAO,IACXhjB,EAAWm3B,GAAkB2E,EAAIj+B,MAAOmlB,IACxC8Y,EAAMA,EAAIj+B,MAAO,EAAGmlB,IAIhBzkB,EAAYikC,IAGhB3hC,EAAW2hC,EACXA,OAAS/lC,GAGE+lC,GAA4B,iBAAXA,IAC5B1mC,EAAO,QAIHM,EAAKF,OAAS,GAClB6D,EAAO68B,KAAM,CACZd,IAAKA,EAKLhgC,KAAMA,GAAQ,MACdi/B,SAAU,OACVje,KAAM0lB,IACHx9B,MAAM,SAAUq8B,GAGnBrC,EAAWh+B,UAEX5E,EAAKwtB,KAAM5pB,EAIVD,EAAQ,SAAUuqB,OAAQvqB,EAAOqV,UAAWisB,IAAiBp1B,KAAMjM,GAGnEqhC,MAKE1oB,OAAQ9X,GAAY,SAAUq6B,EAAO+C,GACxC7hC,EAAKwE,MAAM,WACVC,EAAS9C,MAAOxD,KAAMykC,GAAY,CAAE9D,EAAMmG,aAAcpD,EAAQ/C,SAK5D3gC,MAMRwF,EAAOuN,KAAKtH,QAAQy8B,SAAW,SAAU1hC,GACxC,OAAOhB,EAAOsB,KAAMtB,EAAO01B,QAAQ,SAAUx1B,GAC5C,OAAOc,IAASd,EAAGc,QAChB7E,QAML6D,EAAO2iC,OAAS,CACfC,UAAW,SAAU5hC,EAAM7G,EAAS1C,GACnC,IAAIorC,EAAaC,EAASC,EAAWC,EAAQC,EAAWC,EACvDlW,EAAWhtB,EAAOgf,IAAKhe,EAAM,YAC7BmiC,EAAUnjC,EAAQgB,GAClBmlB,EAAQ,GAGS,WAAb6G,IACJhsB,EAAK8d,MAAMkO,SAAW,YAGvBiW,EAAYE,EAAQR,SACpBI,EAAY/iC,EAAOgf,IAAKhe,EAAM,OAC9BkiC,EAAaljC,EAAOgf,IAAKhe,EAAM,SACI,aAAbgsB,GAAwC,UAAbA,KAC9C+V,EAAYG,GAAajlC,QAAS,SAAY,GAMhD+kC,GADAH,EAAcM,EAAQnW,YACDvhB,IACrBq3B,EAAUD,EAAY9R,OAGtBiS,EAAS3V,WAAY0V,IAAe,EACpCD,EAAUzV,WAAY6V,IAAgB,GAGlC1kC,EAAYrE,KAGhBA,EAAUA,EAAQvC,KAAMoJ,EAAMvJ,EAAGuI,EAAO8B,OAAQ,GAAImhC,KAGjC,MAAf9oC,EAAQsR,MACZ0a,EAAM1a,IAAQtR,EAAQsR,IAAMw3B,EAAUx3B,IAAQu3B,GAE1B,MAAhB7oC,EAAQ42B,OACZ5K,EAAM4K,KAAS52B,EAAQ42B,KAAOkS,EAAUlS,KAAS+R,GAG7C,UAAW3oC,EACfA,EAAQipC,MAAMxrC,KAAMoJ,EAAMmlB,GAG1Bgd,EAAQnkB,IAAKmH,KAKhBnmB,EAAOE,GAAG4B,OAAQ,CAGjB6gC,OAAQ,SAAUxoC,GAGjB,GAAK8G,UAAU9E,OACd,YAAmBO,IAAZvC,EACNK,KACAA,KAAKqG,MAAM,SAAUpJ,GACpBuI,EAAO2iC,OAAOC,UAAWpoC,KAAML,EAAS1C,MAI3C,IAAI4rC,EAAMC,EACTtiC,EAAOxG,KAAM,GAEd,OAAMwG,EAQAA,EAAKovB,iBAAiBj0B,QAK5BknC,EAAOriC,EAAK6vB,wBACZyS,EAAMtiC,EAAK6H,cAAc2C,YAClB,CACNC,IAAK43B,EAAK53B,IAAM63B,EAAIC,YACpBxS,KAAMsS,EAAKtS,KAAOuS,EAAIE,cARf,CAAE/3B,IAAK,EAAGslB,KAAM,QATxB,GAuBD/D,SAAU,WACT,GAAMxyB,KAAM,GAAZ,CAIA,IAAIipC,EAAcd,EAAQvjC,EACzB4B,EAAOxG,KAAM,GACbkpC,EAAe,CAAEj4B,IAAK,EAAGslB,KAAM,GAGhC,GAAwC,UAAnC/wB,EAAOgf,IAAKhe,EAAM,YAGtB2hC,EAAS3hC,EAAK6vB,4BAER,CAON,IANA8R,EAASnoC,KAAKmoC,SAIdvjC,EAAM4B,EAAK6H,cACX46B,EAAeziC,EAAKyiC,cAAgBrkC,EAAIiM,gBAChCo4B,IACLA,IAAiBrkC,EAAI0gB,MAAQ2jB,IAAiBrkC,EAAIiM,kBACT,WAA3CrL,EAAOgf,IAAKykB,EAAc,aAE1BA,EAAeA,EAAa5jC,WAExB4jC,GAAgBA,IAAiBziC,GAAkC,IAA1ByiC,EAAa/kC,YAG1DglC,EAAe1jC,EAAQyjC,GAAed,UACzBl3B,KAAOzL,EAAOgf,IAAKykB,EAAc,kBAAkB,GAChEC,EAAa3S,MAAQ/wB,EAAOgf,IAAKykB,EAAc,mBAAmB,IAKpE,MAAO,CACNh4B,IAAKk3B,EAAOl3B,IAAMi4B,EAAaj4B,IAAMzL,EAAOgf,IAAKhe,EAAM,aAAa,GACpE+vB,KAAM4R,EAAO5R,KAAO2S,EAAa3S,KAAO/wB,EAAOgf,IAAKhe,EAAM,cAAc,MAc1EyiC,aAAc,WACb,OAAOjpC,KAAKuG,KAAK,WAGhB,IAFA,IAAI0iC,EAAejpC,KAAKipC,aAEhBA,GAA2D,WAA3CzjC,EAAOgf,IAAKykB,EAAc,aACjDA,EAAeA,EAAaA,aAG7B,OAAOA,GAAgBp4B,SAM1BrL,EAAOa,KAAM,CAAEoxB,WAAY,cAAeD,UAAW,gBAAiB,SAAU7a,EAAQ6F,GACvF,IAAIvR,EAAM,gBAAkBuR,EAE5Bhd,EAAOE,GAAIiX,GAAW,SAAU9X,GAC/B,OAAOsc,EAAQnhB,MAAM,SAAUwG,EAAMmW,EAAQ9X,GAG5C,IAAIikC,EAOJ,GANK1kC,EAAUoC,GACdsiC,EAAMtiC,EACuB,IAAlBA,EAAKtC,WAChB4kC,EAAMtiC,EAAKwK,kBAGC9O,IAAR2C,EACJ,OAAOikC,EAAMA,EAAKtmB,GAAShc,EAAMmW,GAG7BmsB,EACJA,EAAIK,SACFl4B,EAAY63B,EAAIE,YAAVnkC,EACPoM,EAAMpM,EAAMikC,EAAIC,aAIjBviC,EAAMmW,GAAW9X,IAEhB8X,EAAQ9X,EAAK4B,UAAU9E,YAU5B6D,EAAOa,KAAM,CAAE,MAAO,SAAU,SAAU+C,EAAIoZ,GAC7Chd,EAAOuwB,SAAUvT,GAASkP,GAAc3tB,EAAQmvB,eAC/C,SAAU1sB,EAAM4qB,GACf,GAAKA,EAIJ,OAHAA,EAAWD,GAAQ3qB,EAAMgc,GAGlBoO,GAAUhiB,KAAMwiB,GACtB5rB,EAAQgB,GAAOgsB,WAAYhQ,GAAS,KACpC4O,QAQL5rB,EAAOa,KAAM,CAAE+iC,OAAQ,SAAUC,MAAO,UAAW,SAAU7rC,EAAM+D,GAClEiE,EAAOa,KAAM,CACZowB,QAAS,QAAUj5B,EACnBwe,QAASza,EACT,GAAI,QAAU/D,IACZ,SAAU8rC,EAAcC,GAG1B/jC,EAAOE,GAAI6jC,GAAa,SAAU/S,EAAQt4B,GACzC,IAAIkjB,EAAY3a,UAAU9E,SAAY2nC,GAAkC,kBAAX9S,GAC5DlB,EAAQgU,KAA6B,IAAX9S,IAA6B,IAAVt4B,EAAiB,SAAW,UAE1E,OAAOijB,EAAQnhB,MAAM,SAAUwG,EAAMjF,EAAMrD,GAC1C,IAAI0G,EAEJ,OAAKR,EAAUoC,GAGyB,IAAhC+iC,EAAS9lC,QAAS,SACxB+C,EAAM,QAAUhJ,GAChBgJ,EAAK1D,SAAS+N,gBAAiB,SAAWrT,GAIrB,IAAlBgJ,EAAKtC,UACTU,EAAM4B,EAAKqK,gBAIJ/I,KAAKitB,IACXvuB,EAAK8e,KAAM,SAAW9nB,GAAQoH,EAAK,SAAWpH,GAC9CgJ,EAAK8e,KAAM,SAAW9nB,GAAQoH,EAAK,SAAWpH,GAC9CoH,EAAK,SAAWpH,UAID0E,IAAVhE,EAGNsH,EAAOgf,IAAKhe,EAAMjF,EAAM+zB,GAGxB9vB,EAAO8e,MAAO9d,EAAMjF,EAAMrD,EAAOo3B,KAChC/zB,EAAM6f,EAAYoV,OAASt0B,EAAWkf,UAM5C5b,EAAOa,KAAM,CACZ,YACA,WACA,eACA,YACA,cACA,aACE,SAAU+C,EAAI7H,GAChBiE,EAAOE,GAAInE,GAAS,SAAUmE,GAC7B,OAAO1F,KAAKooB,GAAI7mB,EAAMmE,OAOxBF,EAAOE,GAAG4B,OAAQ,CAEjB7I,KAAM,SAAU4pB,EAAO9F,EAAM7c,GAC5B,OAAO1F,KAAKooB,GAAIC,EAAO,KAAM9F,EAAM7c,IAEpC8jC,OAAQ,SAAUnhB,EAAO3iB,GACxB,OAAO1F,KAAKyoB,IAAKJ,EAAO,KAAM3iB,IAG/B+jC,SAAU,SAAUhkC,EAAU4iB,EAAO9F,EAAM7c,GAC1C,OAAO1F,KAAKooB,GAAIC,EAAO5iB,EAAU8c,EAAM7c,IAExCgkC,WAAY,SAAUjkC,EAAU4iB,EAAO3iB,GAGtC,OAA4B,IAArBe,UAAU9E,OAChB3B,KAAKyoB,IAAKhjB,EAAU,MACpBzF,KAAKyoB,IAAKJ,EAAO5iB,GAAY,KAAMC,IAGrCikC,MAAO,SAAUC,EAAQC,GACxB,OAAO7pC,KAAK+tB,WAAY6b,GAAS5b,WAAY6b,GAASD,MAIxDpkC,EAAOa,KACN,wLAE4D8C,MAAO,MACnE,SAAUC,EAAI5L,GAGbgI,EAAOE,GAAIlI,GAAS,SAAU+kB,EAAM7c,GACnC,OAAOe,UAAU9E,OAAS,EACzB3B,KAAKooB,GAAI5qB,EAAM,KAAM+kB,EAAM7c,GAC3B1F,KAAKkpB,QAAS1rB,OAUlB,IAAIoO,GAAQ,qCAMZpG,EAAOskC,MAAQ,SAAUpkC,EAAI3F,GAC5B,IAAI8R,EAAKsD,EAAM20B,EAUf,GARwB,iBAAZ/pC,IACX8R,EAAMnM,EAAI3F,GACVA,EAAU2F,EACVA,EAAKmM,GAKA7N,EAAY0B,GAalB,OARAyP,EAAO7R,EAAMlG,KAAMqJ,UAAW,IAC9BqjC,EAAQ,WACP,OAAOpkC,EAAGlC,MAAOzD,GAAWC,KAAMmV,EAAKnU,OAAQsC,EAAMlG,KAAMqJ,eAItDwC,KAAOvD,EAAGuD,KAAOvD,EAAGuD,MAAQzD,EAAOyD,OAElC6gC,GAGRtkC,EAAOukC,UAAY,SAAUC,GACvBA,EACJxkC,EAAOub,YAEPvb,EAAOsV,OAAO,IAGhBtV,EAAOvE,QAAUC,MAAMD,QACvBuE,EAAOykC,UAAYlnB,KAAKC,MACxBxd,EAAOiI,SAAWA,EAClBjI,EAAOxB,WAAaA,EACpBwB,EAAOpB,SAAWA,EAClBoB,EAAOuc,UAAYA,EACnBvc,EAAOjE,KAAOgE,EAEdC,EAAOwmB,IAAM1hB,KAAK0hB,IAElBxmB,EAAO0kC,UAAY,SAAUjmC,GAK5B,IAAI1C,EAAOiE,EAAOjE,KAAM0C,GACxB,OAAkB,WAAT1C,GAA8B,WAATA,KAK5B4oC,MAAOlmC,EAAM4uB,WAAY5uB,KAG5BuB,EAAO4kC,KAAO,SAAUplC,GACvB,OAAe,MAARA,EACN,IACEA,EAAO,IAAKgD,QAAS4D,GAAO,UAqB9B,KAFqB,EAAF,WACnB,OAAOpG,GACP,QAFiB,OAEjB,aAMF,IAGC6kC,GAAUpnC,EAAOuC,OAGjB8kC,GAAKrnC,EAAOsnC,EAwBb,OAtBA/kC,EAAOglC,WAAa,SAAU7iC,GAS7B,OARK1E,EAAOsnC,IAAM/kC,IACjBvC,EAAOsnC,EAAID,IAGP3iC,GAAQ1E,EAAOuC,SAAWA,IAC9BvC,EAAOuC,OAAS6kC,IAGV7kC,QAMiB,IAAbtC,IACXD,EAAOuC,OAASvC,EAAOsnC,EAAI/kC,GAMrBA,M,6BC/nVP,mCA6Be,IAdf,SAAwBtH,EAAOwD,EAAO/C,GACpC,IAAK,YAASA,GACZ,OAAO,EAET,IAAI4C,SAAcG,EAClB,SAAY,UAARH,EACK,YAAY5C,IAAW,YAAQ+C,EAAO/C,EAAOgD,QACrC,UAARJ,GAAoBG,KAAS/C,IAE7B,YAAGA,EAAO+C,GAAQxD,K,yCCrBzBusC,EAAc9sC,OAAOkB,UAGrB,EAAiB4rC,EAAY3rC,eAO7B4rC,EAAuBD,EAAY9mC,SAGnCgnC,EAAiB,IAAS,IAAO1sC,iBAAciE,EA6BpC,MApBf,SAAmBhE,GACjB,IAAI0sC,EAAQ,EAAextC,KAAKc,EAAOysC,GACnC/4B,EAAM1T,EAAMysC,GAEhB,IACEzsC,EAAMysC,QAAkBzoC,EACxB,IAAI2oC,GAAW,EACf,MAAOh9B,IAET,IAAI1M,EAASupC,EAAqBttC,KAAKc,GAQvC,OAPI2sC,IACED,EACF1sC,EAAMysC,GAAkB/4B,SAEjB1T,EAAMysC,IAGVxpC,GClCL,EAPcxD,OAAOkB,UAOc8E,SAaxB,MAJf,SAAwBzF,GACtB,OAAO,EAAqBd,KAAKc,ICT/B,EAAiB,IAAS,IAAOD,iBAAciE,EAkBpC,IATf,SAAoBhE,GAClB,OAAa,MAATA,OACegE,IAAVhE,EAdQ,qBADL,gBAiBJ,GAAkB,KAAkBP,OAAOO,GAC/C,EAAUA,GACV,EAAeA,K,cCpBrB,IAAI4sC,EAAiB,CACnB,oBAAqB,EACrB,kBAAmB,EACnB,gBAAiB,EACjB,iBAAkB,EAClB,0BAA2B,EAC3B,yBAA0B,EAE1B,iBAAkB,EAClB,kBAAmB,GAEjBC,EAAc,CAChB,qBAAsB,EACtB,sBAAuB,EACvB,6BAA8B,EAC9B,sBAAuB,EACvB,uBAAwB,EACxB,sBAAuB,EACvB,uBAAwB,EACxB,wBAAyB,EACzB,wBAAyB,GAEvBC,EAAcrtC,OAAOkB,UAAU8E,SAC/BsnC,EAAa/pC,MAAMrC,UACnBqsC,EAAgBD,EAAWE,QAC3BC,EAAeH,EAAWz5B,OAC1B65B,EAAcJ,EAAW3nC,MACzBgoC,EAAYL,EAAW1kC,IACvBglC,EAAeN,EAAWO,OAE1BC,EAAU,GA4Bd,SAAShkC,EAAMsc,GACb,GAAc,MAAVA,GAAoC,iBAAXA,EAC3B,OAAOA,EAGT,IAAI5iB,EAAS4iB,EACT2nB,EAAUV,EAAY5tC,KAAK2mB,GAE/B,GAAgB,mBAAZ2nB,GACF,IAAKC,EAAY5nB,GAAS,CACxB5iB,EAAS,GAET,IAAK,IAAIlE,EAAI,EAAGgK,EAAM8c,EAAOpiB,OAAQ1E,EAAIgK,EAAKhK,IAC5CkE,EAAOlE,GAAKwK,EAAMsc,EAAO9mB,UAGxB,GAAI8tC,EAAYW,IACrB,IAAKC,EAAY5nB,GAAS,CACxB,IAAIzb,EAAOyb,EAAOle,YAElB,GAAIke,EAAOle,YAAY+lC,KACrBzqC,EAASmH,EAAKsjC,KAAK7nB,OACd,CACL5iB,EAAS,IAAImH,EAAKyb,EAAOpiB,QAEzB,IAAS1E,EAAI,EAAGgK,EAAM8c,EAAOpiB,OAAQ1E,EAAIgK,EAAKhK,IAC5CkE,EAAOlE,GAAKwK,EAAMsc,EAAO9mB,WAI1B,IAAK6tC,EAAeY,KAAaC,EAAY5nB,KAAY8nB,EAAM9nB,GAGpE,IAAK,IAAIvlB,KAFT2C,EAAS,GAEO4iB,EACVA,EAAOjlB,eAAeN,KACxB2C,EAAO3C,GAAOiJ,EAAMsc,EAAOvlB,KAKjC,OAAO2C,EAUT,SAASgF,EAAMuB,EAAQqc,EAAQ+nB,GAG7B,IAAKrpC,EAASshB,KAAYthB,EAASiF,GACjC,OAAOokC,EAAYrkC,EAAMsc,GAAUrc,EAGrC,IAAK,IAAIlJ,KAAOulB,EACd,GAAIA,EAAOjlB,eAAeN,GAAM,CAC9B,IAAIutC,EAAarkC,EAAOlJ,GACpBwtC,EAAajoB,EAAOvlB,IAEpBiE,EAASupC,KAAevpC,EAASspC,IAAgB9qC,EAAQ+qC,IAAgB/qC,EAAQ8qC,IAAgBF,EAAMG,IAAgBH,EAAME,IAAgBE,EAAgBD,IAAgBC,EAAgBF,IAAgBJ,EAAYK,IAAgBL,EAAYI,IAG9OD,GAAettC,KAAOkJ,IAG/BA,EAAOlJ,GAAOiJ,EAAMsc,EAAOvlB,KAJ3B2H,EAAM4lC,EAAYC,EAAYF,GASpC,OAAOpkC,EA0CT,SAASwkC,EAASxkC,EAAQqc,EAAQooB,GAChC,IAAK,IAAI3tC,KAAOulB,EACVA,EAAOjlB,eAAeN,KAAS2tC,EAAyB,MAAfpoB,EAAOvlB,GAA8B,MAAfkJ,EAAOlJ,MACxEkJ,EAAOlJ,GAAOulB,EAAOvlB,IAIzB,OAAOkJ,EAGT,IASI0kC,EATAC,EAAe,WACjB,OAAOZ,EAAQY,gBAyGjB,SAAShmC,EAAKpC,EAAKqoC,EAAIvsC,GACrB,GAAMkE,GAAOqoC,EAIb,GAAIroC,EAAIknC,SAAWlnC,EAAIknC,UAAYD,EACjCjnC,EAAIknC,QAAQmB,EAAIvsC,QACX,GAAIkE,EAAItC,UAAYsC,EAAItC,OAC7B,IAAK,IAAI1E,EAAI,EAAGgK,EAAMhD,EAAItC,OAAQ1E,EAAIgK,EAAKhK,IACzCqvC,EAAGlvC,KAAK2C,EAASkE,EAAIhH,GAAIA,EAAGgH,QAG9B,IAAK,IAAIzF,KAAOyF,EACVA,EAAInF,eAAeN,IACrB8tC,EAAGlvC,KAAK2C,EAASkE,EAAIzF,GAAMA,EAAKyF,GAmHxC,SAASxF,EAAK4C,EAAMtB,GAClB,IAAIoV,EAAOk2B,EAAYjuC,KAAKqJ,UAAW,GACvC,OAAO,WACL,OAAOpF,EAAKmC,MAAMzD,EAASoV,EAAKnU,OAAOqqC,EAAYjuC,KAAKqJ,cAuB5D,SAASxF,EAAQ/C,GACf,MAAmC,mBAA5B8sC,EAAY5tC,KAAKc,GA6B1B,SAASuE,EAASvE,GAGhB,IAAIqD,SAAcrD,EAClB,MAAgB,aAATqD,KAAyBrD,GAAkB,WAATqD,EAS3C,SAAS0qC,EAAgB/tC,GACvB,QAAS4sC,EAAeE,EAAY5tC,KAAKc,IAmB3C,SAAS2tC,EAAM3tC,GACb,MAAwB,iBAAVA,GAAgD,iBAAnBA,EAAMgG,UAAwD,iBAAxBhG,EAAMmQ,cAjUzFo9B,EAAQY,aAAe,WACrB,OAAOvpC,SAASiC,cAAc,WAkbhC,SAAS4mC,EAAY1nC,GACnB,OAAOA,EAAgB,iBAQzB,SAASsoC,EAAQtoC,GACf,IAAIuoC,EAAQvrC,EAAQgD,GAGpBjE,KAAKuiB,KAAO,GACZ,IAAIkqB,EAAUzsC,KAGd,SAAS0sC,EAAMxuC,EAAOM,GACpBguC,EAAQC,EAAQnqB,IAAIpkB,EAAOM,GAAOiuC,EAAQnqB,IAAI9jB,EAAKN,GAHrD+F,aAAesoC,EAAUtoC,EAAIoC,KAAKqmC,GAASzoC,GAAOoC,EAAKpC,EAAKyoC,GAO9DH,EAAQ1tC,UAAY,CAClBgH,YAAa0mC,EAIbzuC,IAAK,SAAUU,GACb,OAAOwB,KAAKuiB,KAAKzjB,eAAeN,GAAOwB,KAAKuiB,KAAK/jB,GAAO,MAE1D8jB,IAAK,SAAU9jB,EAAKN,GAGlB,OAAO8B,KAAKuiB,KAAK/jB,GAAON,GAI1BmI,KAAM,SAAUimC,EAAIvsC,GAIlB,IAAK,IAAIvB,UAHG,IAAZuB,IAAuBusC,EAAK7tC,EAAK6tC,EAAIvsC,IAGrBC,KAAKuiB,KACnBviB,KAAKuiB,KAAKzjB,eAAeN,IAAQ8tC,EAAGtsC,KAAKuiB,KAAK/jB,GAAMA,IAMxDmuC,UAAW,SAAUnuC,UACZwB,KAAKuiB,KAAK/jB,KA0BrBzB,EAAQ6vC,UAzpBR,SAAmBpvC,EAAMkI,GAEV,iBAATlI,IACF4uC,EAAO,MAGTX,EAAQjuC,GAAQkI,GAopBlB3I,EAAQ0K,MAAQA,EAChB1K,EAAQoJ,MAAQA,EAChBpJ,EAAQ8vC,SAhjBR,SAAkBC,EAAkBhB,GAGlC,IAFA,IAAI3qC,EAAS2rC,EAAiB,GAErB7vC,EAAI,EAAGgK,EAAM6lC,EAAiBnrC,OAAQ1E,EAAIgK,EAAKhK,IACtDkE,EAASgF,EAAMhF,EAAQ2rC,EAAiB7vC,GAAI6uC,GAG9C,OAAO3qC,GA0iBTpE,EAAQuK,OAjiBR,SAAgBI,EAAQqc,GACtB,IAAK,IAAIvlB,KAAOulB,EACVA,EAAOjlB,eAAeN,KACxBkJ,EAAOlJ,GAAOulB,EAAOvlB,IAIzB,OAAOkJ,GA2hBT3K,EAAQmvC,SAAWA,EACnBnvC,EAAQsvC,aAAeA,EACvBtvC,EAAQgwC,WA9fR,WAOE,OANKX,IAGHA,EAAOC,IAAeU,WAAW,OAG5BX,GAwfTrvC,EAAQ0G,QAhfR,SAAiBjC,EAAOtD,GACtB,GAAIsD,EAAO,CACT,GAAIA,EAAMiC,QACR,OAAOjC,EAAMiC,QAAQvF,GAGvB,IAAK,IAAIjB,EAAI,EAAGgK,EAAMzF,EAAMG,OAAQ1E,EAAIgK,EAAKhK,IAC3C,GAAIuE,EAAMvE,KAAOiB,EACf,OAAOjB,EAKb,OAAQ,GAoeVF,EAAQiwC,SAzdR,SAAkB3P,EAAO4P,GACvB,IAAIC,EAAiB7P,EAAMx+B,UAE3B,SAASsuC,KAKT,IAAK,IAAI3qB,KAHT2qB,EAAEtuC,UAAYouC,EAAUpuC,UACxBw+B,EAAMx+B,UAAY,IAAIsuC,EAELD,EACXA,EAAepuC,eAAe0jB,KAChC6a,EAAMx+B,UAAU2jB,GAAQ0qB,EAAe1qB,IAI3C6a,EAAMx+B,UAAUgH,YAAcw3B,EAC9BA,EAAM+P,WAAaH,GA2crBlwC,EAAQswC,MAjcR,SAAe3lC,EAAQqc,EAAQooB,GAG7BD,EAFAxkC,EAAS,cAAeA,EAASA,EAAO7I,UAAY6I,EACpDqc,EAAS,cAAeA,EAASA,EAAOllB,UAAYklB,EAC3BooB,IA+b3BpvC,EAAQ4F,YAvbR,SAAqB4f,GACnB,GAAKA,EAIL,MAAoB,iBAATA,GAImB,iBAAhBA,EAAK5gB,QA+arB5E,EAAQsJ,KAAOA,EACftJ,EAAQwJ,IAxYR,SAAatC,EAAKqoC,EAAIvsC,GACpB,GAAMkE,GAAOqoC,EAAb,CAIA,GAAIroC,EAAIsC,KAAOtC,EAAIsC,MAAQ+kC,EACzB,OAAOrnC,EAAIsC,IAAI+lC,EAAIvsC,GAInB,IAFA,IAAIoB,EAAS,GAEJlE,EAAI,EAAGgK,EAAMhD,EAAItC,OAAQ1E,EAAIgK,EAAKhK,IACzCkE,EAAOqB,KAAK8pC,EAAGlvC,KAAK2C,EAASkE,EAAIhH,GAAIA,EAAGgH,IAG1C,OAAO9C,IA2XXpE,EAAQyuC,OA9WR,SAAgBvnC,EAAKqoC,EAAIgB,EAAMvtC,GAC7B,GAAMkE,GAAOqoC,EAAb,CAIA,GAAIroC,EAAIunC,QAAUvnC,EAAIunC,SAAWD,EAC/B,OAAOtnC,EAAIunC,OAAOc,EAAIgB,EAAMvtC,GAE5B,IAAK,IAAI9C,EAAI,EAAGgK,EAAMhD,EAAItC,OAAQ1E,EAAIgK,EAAKhK,IACzCqwC,EAAOhB,EAAGlvC,KAAK2C,EAASutC,EAAMrpC,EAAIhH,GAAIA,EAAGgH,GAG3C,OAAOqpC,IAmWXvwC,EAAQyU,OAtVR,SAAgBvN,EAAKqoC,EAAIvsC,GACvB,GAAMkE,GAAOqoC,EAAb,CAIA,GAAIroC,EAAIuN,QAAUvN,EAAIuN,SAAW45B,EAC/B,OAAOnnC,EAAIuN,OAAO86B,EAAIvsC,GAItB,IAFA,IAAIoB,EAAS,GAEJlE,EAAI,EAAGgK,EAAMhD,EAAItC,OAAQ1E,EAAIgK,EAAKhK,IACrCqvC,EAAGlvC,KAAK2C,EAASkE,EAAIhH,GAAIA,EAAGgH,IAC9B9C,EAAOqB,KAAKyB,EAAIhH,IAIpB,OAAOkE,IAuUXpE,EAAQ2U,KA1TR,SAAczN,EAAKqoC,EAAIvsC,GACrB,GAAMkE,GAAOqoC,EAIb,IAAK,IAAIrvC,EAAI,EAAGgK,EAAMhD,EAAItC,OAAQ1E,EAAIgK,EAAKhK,IACzC,GAAIqvC,EAAGlvC,KAAK2C,EAASkE,EAAIhH,GAAIA,EAAGgH,GAC9B,OAAOA,EAAIhH,IAoTjBF,EAAQ0B,KAAOA,EACf1B,EAAQwwC,MA5RR,SAAelsC,GACb,IAAI8T,EAAOk2B,EAAYjuC,KAAKqJ,UAAW,GACvC,OAAO,WACL,OAAOpF,EAAKmC,MAAMxD,KAAMmV,EAAKnU,OAAOqqC,EAAYjuC,KAAKqJ,eA0RzD1J,EAAQkE,QAAUA,EAClBlE,EAAQiH,WAvQR,SAAoB9F,GAClB,MAAwB,mBAAVA,GAuQhBnB,EAAQywC,SA9PR,SAAkBtvC,GAChB,MAAmC,oBAA5B8sC,EAAY5tC,KAAKc,IA8P1BnB,EAAQ0F,SAAWA,EACnB1F,EAAQkvC,gBAAkBA,EAC1BlvC,EAAQ0wC,aAhOR,SAAsBvvC,GACpB,QAAS6sC,EAAYC,EAAY5tC,KAAKc,KAgOxCnB,EAAQ8uC,MAAQA,EAChB9uC,EAAQ2wC,MA9MR,SAAexvC,GAEb,OAAOA,GAAUA,GA6MnBnB,EAAQ4wC,SAnMR,SAAkBloB,GAChB,IAAK,IAAIxoB,EAAI,EAAGgK,EAAMR,UAAU9E,OAAQ1E,EAAIgK,EAAKhK,IAC/C,GAAoB,MAAhBwJ,UAAUxJ,GACZ,OAAOwJ,UAAUxJ,IAiMvBF,EAAQ6wC,UA5LR,SAAmBC,EAAQC,GACzB,OAAiB,MAAVD,EAAiBA,EAASC,GA4LnC/wC,EAAQgxC,UAzLR,SAAmBF,EAAQC,EAAQE,GACjC,OAAiB,MAAVH,EAAiBA,EAAmB,MAAVC,EAAiBA,EAASE,GAyL7DjxC,EAAQuG,MA9KR,WACE,OAAOvB,SAAS3E,KAAKoG,MAAM6nC,EAAa5kC,YA8K1C1J,EAAQkxC,kBAjKR,SAA2BppC,GACzB,GAAmB,iBAARA,EACT,MAAO,CAACA,EAAKA,EAAKA,EAAKA,GAGzB,IAAIoC,EAAMpC,EAAIlD,OAEd,OAAY,IAARsF,EAEK,CAACpC,EAAI,GAAIA,EAAI,GAAIA,EAAI,GAAIA,EAAI,IACnB,IAARoC,EAEF,CAACpC,EAAI,GAAIA,EAAI,GAAIA,EAAI,GAAIA,EAAI,IAG/BA,GAmJT9H,EAAQ0S,OA1IR,SAAgBy+B,EAAWztB,GACzB,IAAKytB,EACH,MAAM,IAAIlrC,MAAMyd,IAyIpB1jB,EAAQqtC,KA/HR,SAAc+D,GACZ,OAAW,MAAPA,EACK,KACsB,mBAAbA,EAAI/D,KACb+D,EAAI/D,OAEJ+D,EAAInmC,QAAQ,qCAAsC,KA0H7DjL,EAAQqxC,eAjHR,SAAwBnqC,GACtBA,EAAgB,kBAAI,GAiHtBlH,EAAQ4uC,YAAcA,EACtB5uC,EAAQsxC,cA1DR,SAAuBpqC,GACrB,OAAO,IAAIsoC,EAAQtoC,IA0DrBlH,EAAQuxC,YAvDR,SAAqBtjC,EAAGC,GAGtB,IAFA,IAAIsjC,EAAW,IAAIvjC,EAAEnF,YAAYmF,EAAErJ,OAASsJ,EAAEtJ,QAErC1E,EAAI,EAAGA,EAAI+N,EAAErJ,OAAQ1E,IAC5BsxC,EAAStxC,GAAK+N,EAAE/N,GAGlB,IAAIkrC,EAASn9B,EAAErJ,OAEf,IAAK1E,EAAI,EAAGA,EAAIgO,EAAEtJ,OAAQ1E,IACxBsxC,EAAStxC,EAAIkrC,GAAUl9B,EAAEhO,GAG3B,OAAOsxC,GA2CTxxC,EAAQqL,KAxCR,c,6BC3rBA,mBA4Be,IALf,SAAkBlK,GAChB,MAAuB,iBAATA,GACX,YAAaA,IArBF,mBAqBY,YAAWA,K,6BCNxB,IAXf,SAAmB6lB,EAAQviB,GACzB,IAAIE,GAAS,EACTC,EAASoiB,EAAOpiB,OAGpB,IADAH,IAAUA,EAAQN,MAAMS,MACfD,EAAQC,GACfH,EAAME,GAASqiB,EAAOriB,GAExB,OAAOF,I,6BCIM,IAVf,SAAeH,EAAMmtC,EAASr5B,GAC5B,OAAQA,EAAKxT,QACX,KAAK,EAAG,OAAON,EAAKjE,KAAKoxC,GACzB,KAAK,EAAG,OAAOntC,EAAKjE,KAAKoxC,EAASr5B,EAAK,IACvC,KAAK,EAAG,OAAO9T,EAAKjE,KAAKoxC,EAASr5B,EAAK,GAAIA,EAAK,IAChD,KAAK,EAAG,OAAO9T,EAAKjE,KAAKoxC,EAASr5B,EAAK,GAAIA,EAAK,GAAIA,EAAK,IAE3D,OAAO9T,EAAKmC,MAAMgrC,EAASr5B,K,6BCJd,IANf,SAAmB9T,GACjB,OAAO,SAASnD,GACd,OAAOmD,EAAKnD,M,6BC2BD,IAJf,SAAYA,EAAOuwC,GACjB,OAAOvwC,IAAUuwC,GAAUvwC,GAAUA,GAASuwC,GAAUA,I,6BCjC1D,IAGIzwC,EAHJ,MAGa,EAAKA,OAEH,O,gBCLf,IAAI0wC,EAAc,EAAQ,KAEtBC,EAAS,EAAQ,IAEjBC,EAAY,EAAQ,KAEpBC,EAAc,EAAQ,KAItBC,EAFU,EAAQ,KAESjwC,UAAUiwC,iBACrCC,EAAMjnC,KAAKinC,IACXC,EAAmB,IAAIJ,GAAU,GAQrC,SAASK,EAAK7V,GACZsV,EAAYtxC,KAAK4C,KAAMo5B,GAMvBp5B,KAAKkvC,KAAO,KAGdD,EAAKpwC,UAAY,CACfgH,YAAaopC,EACb1tC,KAAM,OACN4tC,aAAa,EACbC,uBAAwB,EAIxBC,uBAAwB,EAMxBC,kBAAkB,EAClBC,MAAO,SAAUC,EAAKC,GACpB,IAcM5G,EAdFvkB,EAAQtkB,KAAKskB,MACb4qB,EAAOlvC,KAAKkvC,MAAQF,EACpBU,EAAYprB,EAAMorB,YAClBC,EAAUrrB,EAAMqrB,UAChBC,EAAOtrB,EAAMsrB,KACbC,EAASvrB,EAAMurB,OACfC,EAAkBH,KAAaC,EAAKG,WACpCC,EAAoBN,KAAeG,EAAOE,WAC1CE,EAAiBN,KAAaC,EAAKn5B,MACnCy5B,EAAmBR,KAAeG,EAAOp5B,OAC7C6N,EAAM7lB,KAAK+wC,EAAKxvC,KAAMyvC,GACtBzvC,KAAKmwC,aAAaX,GAEdxvC,KAAKowC,WAGHN,IACFjH,EAAOA,GAAQ7oC,KAAKqwC,kBACpBrwC,KAAKswC,cAAgBhsB,EAAMisB,YAAYf,EAAKI,EAAM/G,IAGhDmH,IACFnH,EAAOA,GAAQ7oC,KAAKqwC,kBACpBrwC,KAAKwwC,gBAAkBlsB,EAAMisB,YAAYf,EAAKK,EAAQhH,KAKtDiH,EAEFN,EAAIiB,UAAYzwC,KAAKswC,cACZL,IACTT,EAAIiB,UAAY3B,EAAiB1xC,KAAKwyC,EAAMJ,IAG1CQ,EACFR,EAAIkB,YAAc1wC,KAAKwwC,gBACdN,IACTV,EAAIkB,YAAc5B,EAAiB1xC,KAAKyyC,EAAQL,IAGlD,IAAImB,EAAWrsB,EAAMqsB,SACjBC,EAAiBtsB,EAAMssB,eACvBC,IAAgBrB,EAAIsB,YAEpBjsB,EAAQ7kB,KAAK+wC,iBA0BjB,GAzBA7B,EAAK8B,SAASnsB,EAAM,GAAIA,EAAM,GAAI7kB,KAAKqvC,wBAMnCrvC,KAAKmvC,aAAewB,IAAaE,GAAenB,GAClDR,EAAK+B,UAAUzB,GAEXmB,IAAaE,IACf3B,EAAK4B,YAAYH,GACjBzB,EAAKgC,kBAAkBN,IAGzB5wC,KAAKmxC,UAAUjC,EAAMlvC,KAAKoxC,OAAO,GAE7BpxC,KAAKkvC,OACPlvC,KAAKmvC,aAAc,KAIrBK,EAAIyB,YACJjxC,KAAKkvC,KAAKmC,YAAY7B,IAGpBG,EACF,GAAyB,MAArBrrB,EAAMgtB,YAAqB,CAC7B,IAAIC,EAAsB/B,EAAIgC,YAC9BhC,EAAIgC,YAAcltB,EAAMgtB,YAAchtB,EAAM0R,QAC5CkZ,EAAKU,KAAKJ,GACVA,EAAIgC,YAAcD,OAElBrC,EAAKU,KAAKJ,GASd,GALImB,GAAYE,IACdrB,EAAIsB,YAAYH,GAChBnB,EAAIoB,eAAiBA,GAGnBlB,EACF,GAA2B,MAAvBprB,EAAMmtB,cAAuB,CAC3BF,EAAsB/B,EAAIgC,YAC9BhC,EAAIgC,YAAcltB,EAAMmtB,cAAgBntB,EAAM0R,QAC9CkZ,EAAKW,OAAOL,GACZA,EAAIgC,YAAcD,OAElBrC,EAAKW,OAAOL,GAIZmB,GAAYE,GAGdrB,EAAIsB,YAAY,IAIA,MAAdxsB,EAAMtf,OAERhF,KAAK0xC,iBAAiBlC,GACtBxvC,KAAK2xC,aAAanC,EAAKxvC,KAAKqwC,qBAKhCc,UAAW,SAAU3B,EAAKoC,EAAUC,KACpCC,gBAAiB,WACf9xC,KAAKkvC,KAAO,IAAIN,GAElByB,gBAAiB,WACf,IAAIxH,EAAO7oC,KAAK+xC,MACZztB,EAAQtkB,KAAKskB,MACb0tB,GAAmBnJ,EAEvB,GAAImJ,EAAiB,CACnB,IAAI9C,EAAOlvC,KAAKkvC,KAEXA,IAEHA,EAAOlvC,KAAKkvC,KAAO,IAAIN,GAGrB5uC,KAAKmvC,cACPD,EAAK+B,YACLjxC,KAAKmxC,UAAUjC,EAAMlvC,KAAKoxC,OAAO,IAGnCvI,EAAOqG,EAAKmB,kBAKd,GAFArwC,KAAK+xC,MAAQlJ,EAETvkB,EAAMorB,YAAa,CAIrB,IAAIuC,EAAiBjyC,KAAKkyC,kBAAoBlyC,KAAKkyC,gBAAkBrJ,EAAKphC,SAE1E,GAAIzH,KAAKowC,SAAW4B,EAAiB,CACnCC,EAAe1qC,KAAKshC,GAEpB,IAAI9lC,EAAIuhB,EAAM6tB,UAEVC,EAAY9tB,EAAM+tB,cAAgBryC,KAAKsyC,eAAiB,EAEvDhuB,EAAMqrB,YACT5sC,EAAI+E,KAAKitB,IAAIhyB,EAAG/C,KAAKovC,wBAA0B,IAK7CgD,EAAY,QACdH,EAAe5gB,OAAStuB,EAAIqvC,EAC5BH,EAAexe,QAAU1wB,EAAIqvC,EAC7BH,EAAeM,GAAKxvC,EAAIqvC,EAAY,EACpCH,EAAeO,GAAKzvC,EAAIqvC,EAAY,GAKxC,OAAOH,EAGT,OAAOpJ,GAET4J,QAAS,SAAUF,EAAGC,GACpB,IAAIE,EAAW1yC,KAAK2yC,sBAAsBJ,EAAGC,GACzC3J,EAAO7oC,KAAKqwC,kBACZ/rB,EAAQtkB,KAAKskB,MAIjB,GAHAiuB,EAAIG,EAAS,GACbF,EAAIE,EAAS,GAET7J,EAAK4J,QAAQF,EAAGC,GAAI,CACtB,IAAII,EAAW5yC,KAAKkvC,KAAK3sB,KAEzB,GAAI+B,EAAMorB,YAAa,CACrB,IAAIyC,EAAY7tB,EAAM6tB,UAClBC,EAAY9tB,EAAM+tB,cAAgBryC,KAAKsyC,eAAiB,EAE5D,GAAIF,EAAY,QAET9tB,EAAMqrB,YACTwC,EAAYrqC,KAAKitB,IAAIod,EAAWnyC,KAAKovC,yBAGnCP,EAAYgE,cAAcD,EAAUT,EAAYC,EAAWG,EAAGC,IAChE,OAAO,EAKb,GAAIluB,EAAMqrB,UACR,OAAOd,EAAY4D,QAAQG,EAAUL,EAAGC,GAI5C,OAAO,GAMTM,MAAO,SAAUC,GACE,MAAbA,IACFA,GAAY,GAIVA,IACF/yC,KAAKmvC,YAAc4D,EACnB/yC,KAAK+xC,MAAQ,MAGf/xC,KAAKowC,QAAUpwC,KAAKgzC,aAAc,EAClChzC,KAAKizC,MAAQjzC,KAAKizC,KAAKC,UAEnBlzC,KAAKmzC,cACPnzC,KAAKmzC,aAAaL,SAQtBM,aAAc,SAAUC,GACtB,OAAOrzC,KAAK66B,QAAQ,QAASwY,IAG/BC,OAAQ,SAAU90C,EAAKN,GAET,UAARM,GACFwB,KAAKuzC,SAASr1C,GACd8B,KAAKmvC,aAAc,EACnBnvC,KAAK+xC,MAAQ,MAEbrD,EAAY7vC,UAAUy0C,OAAOl2C,KAAK4C,KAAMxB,EAAKN,IAQjDq1C,SAAU,SAAU/0C,EAAKN,GACvB,IAAIkzC,EAAQpxC,KAAKoxC,MAEjB,GAAIA,EAAO,CACT,GAAIzC,EAAOlsC,SAASjE,GAClB,IAAK,IAAIhB,KAAQgB,EACXA,EAAIM,eAAetB,KACrB4zC,EAAM5zC,GAAQgB,EAAIhB,SAItB4zC,EAAM5yC,GAAON,EAGf8B,KAAK8yC,OAAM,GAGb,OAAO9yC,MAETsyC,aAAc,WACZ,IAAIj1C,EAAI2C,KAAKwzC,UAKb,OAAOn2C,GAAK0xC,EAAI1xC,EAAE,GAAK,GAAK,OAAS0xC,EAAI1xC,EAAE,GAAK,GAAK,MAAQyK,KAAK2rC,KAAK1E,EAAI1xC,EAAE,GAAKA,EAAE,GAAKA,EAAE,GAAKA,EAAE,KAAO,IAc7G4xC,EAAK3nC,OAAS,SAAU4kC,GACtB,IAAIwH,EAAM,SAAUta,GAClB6V,EAAK7xC,KAAK4C,KAAMo5B,GAEZ8S,EAAS5nB,OAEXtkB,KAAKskB,MAAMqvB,WAAWzH,EAAS5nB,OAAO,GAIxC,IAAIsvB,EAAe1H,EAASkF,MAE5B,GAAIwC,EAAc,CAChB5zC,KAAKoxC,MAAQpxC,KAAKoxC,OAAS,GAC3B,IAAIyC,EAAY7zC,KAAKoxC,MAErB,IAAK,IAAI5zC,KAAQo2C,GACVC,EAAU/0C,eAAetB,IAASo2C,EAAa90C,eAAetB,KACjEq2C,EAAUr2C,GAAQo2C,EAAap2C,IAKrC0uC,EAASvmC,MAAQumC,EAASvmC,KAAKvI,KAAK4C,KAAMo5B,IAK5C,IAAK,IAAI57B,KAFTmxC,EAAO3B,SAAS0G,EAAKzE,GAEJ/C,EAEF,UAAT1uC,GAA6B,UAATA,IACtBk2C,EAAI70C,UAAUrB,GAAQ0uC,EAAS1uC,IAInC,OAAOk2C,GAGT/E,EAAO3B,SAASiC,EAAMP,GACtB,IAAIhoB,EAAWuoB,EACfjyC,EAAOD,QAAU2pB,G,6BC3VF,IArBf,SAAmBllB,EAAOF,EAAO6F,GAC/B,IAAIzF,GAAS,EACTC,EAASH,EAAMG,OAEfL,EAAQ,IACVA,GAASA,EAAQK,EAAS,EAAKA,EAASL,IAE1C6F,EAAMA,EAAMxF,EAASA,EAASwF,GACpB,IACRA,GAAOxF,GAETA,EAASL,EAAQ6F,EAAM,EAAMA,EAAM7F,IAAW,EAC9CA,KAAW,EAGX,IADA,IAAIH,EAASD,MAAMS,KACVD,EAAQC,GACfR,EAAOO,GAASF,EAAME,EAAQJ,GAEhC,OAAOH,I,6BC3BT,kCASI2yC,EAAc,IAAS,IAAOj1C,eAAYqD,EAC1C6xC,EAAiBD,EAAcA,EAAYnwC,cAAWzB,EA0B3C,IAhBf,SAAS8xC,EAAa91C,GAEpB,GAAoB,iBAATA,EACT,OAAOA,EAET,GAAI,YAAQA,GAEV,OAAO,YAASA,EAAO81C,GAAgB,GAEzC,GAAI,YAAS91C,GACX,OAAO61C,EAAiBA,EAAe32C,KAAKc,GAAS,GAEvD,IAAIiD,EAAUjD,EAAQ,GACtB,MAAkB,KAAViD,GAAkB,EAAIjD,IA3BjB,IA2BwC,KAAOiD,I,6BCjC9D,4BAQI8yC,EAAa,qBAGbC,EAAa,aAGbC,EAAY,cAGZC,EAAe1gB,SA8CJ,IArBf,SAAkBx1B,GAChB,GAAoB,iBAATA,EACT,OAAOA,EAET,GAAI,YAASA,GACX,OA1CM,IA4CR,GAAI,YAASA,GAAQ,CACnB,IAAIuwC,EAAgC,mBAAjBvwC,EAAMm2C,QAAwBn2C,EAAMm2C,UAAYn2C,EACnEA,EAAQ,YAASuwC,GAAUA,EAAQ,GAAMA,EAE3C,GAAoB,iBAATvwC,EACT,OAAiB,IAAVA,EAAcA,GAASA,EAEhCA,EAAQ,YAASA,GACjB,IAAIo2C,EAAWJ,EAAWtlC,KAAK1Q,GAC/B,OAAQo2C,GAAYH,EAAUvlC,KAAK1Q,GAC/Bk2C,EAAal2C,EAAMoF,MAAM,GAAIgxC,EAAW,EAAI,GAC3CL,EAAWrlC,KAAK1Q,GAvDb,KAuD6BA,I,6BC5DvC,mBAoCe,IAVf,SAAoBA,GAClB,IAAK,YAASA,GACZ,OAAO,EAIT,IAAI0T,EAAM,YAAW1T,GACrB,MA5BY,qBA4BL0T,GA3BI,8BA2BcA,GA7BZ,0BA6B6BA,GA1B7B,kBA0BgDA,I,6BCjC/D,YAoBe,IARf,SAAe1T,GACb,GAAoB,iBAATA,GAAqB,YAASA,GACvC,OAAOA,EAET,IAAIiD,EAAUjD,EAAQ,GACtB,MAAkB,KAAViD,GAAkB,EAAIjD,IAdjB,IAcwC,KAAOiD,I,6BCjB9D,YAae,IAJf,SAAsBjD,GACpB,MAAuB,mBAATA,EAAsBA,EAAQ,M,6BCV9C,oBAuCe,IA1Bf,SAAoB6lB,EAAQ4H,EAAOhtB,EAAQ41C,GACzC,IAAIC,GAAS71C,EACbA,IAAWA,EAAS,IAKpB,IAHA,IAAI+C,GAAS,EACTC,EAASgqB,EAAMhqB,SAEVD,EAAQC,GAAQ,CACvB,IAAInD,EAAMmtB,EAAMjqB,GAEZ+yC,EAAWF,EACXA,EAAW51C,EAAOH,GAAMulB,EAAOvlB,GAAMA,EAAKG,EAAQolB,QAClD7hB,OAEaA,IAAbuyC,IACFA,EAAW1wB,EAAOvlB,IAEhBg2C,EACF,YAAgB71C,EAAQH,EAAKi2C,GAE7B,YAAY91C,EAAQH,EAAKi2C,GAG7B,OAAO91C,I,iDC9BM,EAFA,YAAU,IAAM,Y,QCEhB,EAFD,YAAU,IAAM,W,kCCc1B+1C,EAAqB,YAAS,GAC9BC,EAAgB,YAAS,KACzBC,EAAoB,YAAS,GAC7BC,EAAgB,YAAS,KACzBC,EAAoB,YAAS,KAS7BC,EAAS,KAGR,GAnBa,qBAmBDA,EAAO,IAAI,EAAS,IAAIC,YAAY,MAChD,KA1BQ,gBA0BDD,EAAO,IAAI,MAClB,GAzBY,oBAyBDA,EAAO,EAAQv4B,YAC1B,KAzBQ,gBAyBDu4B,EAAO,IAAI,MAClB,KAzBY,oBAyBDA,EAAO,IAAI,QACzBA,EAAS,SAAS72C,GAChB,IAAIiD,EAAS,YAAWjD,GACpBoK,EA/BQ,mBA+BDnH,EAAsBjD,EAAM2H,iBAAc3D,EACjD+yC,EAAa3sC,EAAO,YAASA,GAAQ,GAEzC,GAAI2sC,EACF,OAAQA,GACN,KAAKP,EAAoB,MA/Bf,oBAgCV,KAAKC,EAAe,MAtCf,eAuCL,KAAKC,EAAmB,MArCf,mBAsCT,KAAKC,EAAe,MArCf,eAsCL,KAAKC,EAAmB,MArCf,mBAwCb,OAAO3zC,IAII,O,6BC9CA,MAJf,SAAsB6gB,GACpB,OAAOA,EAAO7Y,MAAM,K,QCClB+rC,EAAW,oBACXC,EAAU,kDACVC,EAAS,2BAETC,EAAc,qBACdC,EAAa,kCACbC,EAAa,qCAIbC,EAPa,MAAQL,EAAU,IAAMC,EAAS,IAOtB,IAGxBK,EAFW,oBAEQD,GADP,gBAAwB,CAACH,EAAaC,EAAYC,GAAYvmC,KAAK,KAAnE,qBAA2FwmC,EAAW,MAElHE,EAAW,MAAQ,CAACL,EAAcF,EAAU,IAAKA,EAASG,EAAYC,EAAYL,GAAUlmC,KAAK,KAAO,IAGxG2mC,EAAYhqC,OAAOypC,EAAS,MAAQA,EAAS,KAAOM,EAAWD,EAAO,KAa3D,MAJf,SAAwBzzB,GACtB,OAAOA,EAAO/T,MAAM0nC,IAAc,ICnBrB,IANf,SAAuB3zB,GACrB,OAAO,YAAWA,GACd,EAAeA,GACf,EAAaA,K,6BCOJ,IAZf,SAAmBxgB,EAAOC,GAIxB,IAHA,IAAIC,GAAS,EACTC,EAAkB,MAATH,EAAgB,EAAIA,EAAMG,SAE9BD,EAAQC,IAC8B,IAAzCF,EAASD,EAAME,GAAQA,EAAOF,KAIpC,OAAOA,I,6BCjBT,IAGIo0C,EAAW,mBAoBA,IAVf,SAAiB13C,EAAOyD,GACtB,IAAIJ,SAAcrD,EAGlB,SAFAyD,EAAmB,MAAVA,EAfY,iBAewBA,KAGlC,UAARJ,GACU,UAARA,GAAoBq0C,EAAShnC,KAAK1Q,KAChCA,GAAS,GAAKA,EAAQ,GAAK,GAAKA,EAAQyD,I,6BCrBjD,aAwBe,IAbf,SAAyBhD,EAAQH,EAAKN,GACzB,aAAPM,GAAsB,IACxB,YAAeG,EAAQH,EAAK,CAC1B,cAAgB,EAChB,YAAc,EACd,MAASN,EACT,UAAY,IAGdS,EAAOH,GAAON,I,6BCpBlB,+BAee,IAJf,SAAkBmD,GAChB,OAAO,YAAY,YAASA,OAAMa,EAAW,KAAUb,EAAO,M,kFCIjD,MAJf,SAAsB1C,EAAQolB,GAC5B,OAAOplB,GAAU,YAAWolB,EAAQ,OAAA8xB,EAAA,GAAO9xB,GAASplB,I,0BCEvC,MAJf,SAAqBolB,EAAQplB,GAC3B,OAAO,YAAWolB,EAAQ,YAAWA,GAASplB,I,SCGjC,MAJf,SAAuBolB,EAAQplB,GAC7B,OAAO,YAAWolB,EAAQ,YAAaA,GAASplB,I,0BCR9C,EAHchB,OAAOkB,UAGQC,eAqBlB,MAZf,SAAwB0C,GACtB,IAAIG,EAASH,EAAMG,OACfR,EAAS,IAAIK,EAAMqE,YAAYlE,GAOnC,OAJIA,GAA6B,iBAAZH,EAAM,IAAkB,EAAepE,KAAKoE,EAAO,WACtEL,EAAOO,MAAQF,EAAME,MACrBP,EAAO2Q,MAAQtQ,EAAMsQ,OAEhB3Q,G,SCPM,MALf,SAAuB20C,EAAUC,GAC/B,IAAIC,EAASD,EAAS,YAAiBD,EAASE,QAAUF,EAASE,OACnE,OAAO,IAAIF,EAASjwC,YAAYmwC,EAAQF,EAASG,WAAYH,EAASI,aCXpEC,EAAU,OAeC,MANf,SAAqBC,GACnB,IAAIj1C,EAAS,IAAIi1C,EAAOvwC,YAAYuwC,EAAOryB,OAAQoyB,EAAQ7nC,KAAK8nC,IAEhE,OADAj1C,EAAOk1C,UAAYD,EAAOC,UACnBl1C,G,QCVL2yC,EAAc,IAAS,IAAOj1C,eAAYqD,EAC1Co0C,EAAgBxC,EAAcA,EAAYO,aAAUnyC,EAazC,MAJf,SAAqBq0C,GACnB,OAAOD,EAAgB34C,OAAO24C,EAAcl5C,KAAKm5C,IAAW,I,SC8D/C,MApCf,SAAwB53C,EAAQiT,EAAKmkC,GACnC,IAAIztC,EAAO3J,EAAOkH,YAClB,OAAQ+L,GACN,IA3BiB,uBA4Bf,OAAO,YAAiBjT,GAE1B,IAvCU,mBAwCV,IAvCU,gBAwCR,OAAO,IAAI2J,GAAM3J,GAEnB,IAjCc,oBAkCZ,OAAO,EAAcA,EAAQo3C,GAE/B,IAnCa,wBAmCI,IAlCJ,wBAmCb,IAlCU,qBAkCI,IAjCH,sBAiCkB,IAhClB,sBAiCX,IAhCW,sBAgCI,IA/BG,6BA+BmB,IA9BzB,uBA8ByC,IA7BzC,uBA8BV,OAAO,YAAgBp3C,EAAQo3C,GAEjC,IAjDS,eAkDP,OAAO,IAAIztC,EAEb,IAnDY,kBAoDZ,IAjDY,kBAkDV,OAAO,IAAIA,EAAK3J,GAElB,IAtDY,kBAuDV,OAAO,EAAYA,GAErB,IAxDS,eAyDP,OAAO,IAAI2J,EAEb,IAzDY,kBA0DV,OAAO,EAAY3J,K,wDCdrB63C,EAAgB,GACpBA,EA9Bc,sBA8BWA,EA7BV,kBA8BfA,EAfqB,wBAeWA,EAdd,qBAelBA,EA9Bc,oBA8BWA,EA7BX,iBA8BdA,EAfiB,yBAeWA,EAdX,yBAejBA,EAdc,sBAcWA,EAbV,uBAcfA,EAbe,uBAaWA,EA5Bb,gBA6BbA,EA5BgB,mBA4BWA,EA3BX,mBA4BhBA,EA3BgB,mBA2BWA,EA1Bd,gBA2BbA,EA1BgB,mBA0BWA,EAzBX,mBA0BhBA,EAhBe,uBAgBWA,EAfJ,8BAgBtBA,EAfgB,wBAeWA,EAdX,yBAcsC,EACtDA,EArCe,kBAqCWA,EApCZ,qBAqCdA,EA5BiB,qBA4BW,EA8Fb,IA5Ef,SAASC,EAAUv4C,EAAOw4C,EAASnC,EAAY/1C,EAAKG,EAAQ2hB,GAC1D,IAAInf,EACA40C,EAnEgB,EAmEPW,EACTC,EAnEgB,EAmEPD,EACTE,EAnEmB,EAmEVF,EAKb,GAHInC,IACFpzC,EAASxC,EAAS41C,EAAWr2C,EAAOM,EAAKG,EAAQ2hB,GAASi0B,EAAWr2C,SAExDgE,IAAXf,EACF,OAAOA,EAET,IAAK,OAAAsB,EAAA,GAASvE,GACZ,OAAOA,EAET,IAAIsuC,EAAQ,OAAAvrC,EAAA,GAAQ/C,GACpB,GAAIsuC,GAEF,GADArrC,EAAS,EAAejD,IACnB63C,EACH,OAAO,YAAU73C,EAAOiD,OAErB,CACL,IAAIyQ,EAAM,YAAO1T,GACb24C,EA9EM,qBA8EGjlC,GA7EJ,8BA6EsBA,EAE/B,GAAI,OAAAklC,EAAA,GAAS54C,GACX,OAAO,YAAYA,EAAO63C,GAE5B,GA/EY,mBA+ERnkC,GAxFM,sBAwFcA,GAAmBilC,IAAWl4C,GAEpD,GADAwC,EAAUw1C,GAAUE,EAAU,GAAK,YAAgB34C,IAC9C63C,EACH,OAAOY,EACH,EAAcz4C,EAAO,EAAaiD,EAAQjD,IAC1C,EAAYA,EAAO,YAAWiD,EAAQjD,QAEvC,CACL,IAAKs4C,EAAc5kC,GACjB,OAAOjT,EAAST,EAAQ,GAE1BiD,EAAS,EAAejD,EAAO0T,EAAKmkC,IAIxCz1B,IAAUA,EAAQ,IAAI,KACtB,IAAIy2B,EAAUz2B,EAAMxiB,IAAII,GACxB,GAAI64C,EACF,OAAOA,EAETz2B,EAAMgC,IAAIpkB,EAAOiD,GAEb,OAAA61C,EAAA,GAAM94C,GACRA,EAAMitC,SAAQ,SAAS8L,GACrB91C,EAAOb,IAAIm2C,EAAUQ,EAAUP,EAASnC,EAAY0C,EAAU/4C,EAAOoiB,OAE9D,OAAA42B,EAAA,GAAMh5C,IACfA,EAAMitC,SAAQ,SAAS8L,EAAUz4C,GAC/B2C,EAAOmhB,IAAI9jB,EAAKi4C,EAAUQ,EAAUP,EAASnC,EAAY/1C,EAAKN,EAAOoiB,OAIzE,IAAI62B,EAAWP,EACVD,EAAS,IAAe,IACxBA,EAASd,EAAA,EAASzmC,EAAA,EAEnBuc,EAAQ6gB,OAAQtqC,EAAYi1C,EAASj5C,GASzC,OARA,YAAUytB,GAASztB,GAAO,SAAS+4C,EAAUz4C,GACvCmtB,IAEFsrB,EAAW/4C,EADXM,EAAMy4C,IAIR,YAAY91C,EAAQ3C,EAAKi4C,EAAUQ,EAAUP,EAASnC,EAAY/1C,EAAKN,EAAOoiB,OAEzEnf,I,6BClKT,oBAee,IAJf,SAAoBxC,EAAQ8C,GAC1B,OAAO9C,GAAU,YAAQA,EAAQ8C,EAAU,O,8BCZ7C,yBAGI21C,EAAgC,iBAAXr6C,SAAuBA,UAAYA,QAAQmH,UAAYnH,QAG5Es6C,EAAaD,GAAgC,iBAAVp6C,GAAsBA,IAAWA,EAAOkH,UAAYlH,EAMvFs6C,EAHgBD,GAAcA,EAAWt6C,UAAYq6C,GAGtB,IAAW73B,QAG1Cg4B,EAAY,WACd,IAEE,IAAIlvB,EAAQgvB,GAAcA,EAAWG,SAAWH,EAAWG,QAAQ,QAAQnvB,MAE3E,OAAIA,GAKGivB,GAAeA,EAAYG,SAAWH,EAAYG,QAAQ,QACjE,MAAO5pC,KAXI,GAcA,Q,oDC7Bf,gCAIIupC,EAAgC,iBAAXr6C,SAAuBA,UAAYA,QAAQmH,UAAYnH,QAG5Es6C,EAAaD,GAAgC,iBAAVp6C,GAAsBA,IAAWA,EAAOkH,UAAYlH,EAMvF06C,EAHgBL,GAAcA,EAAWt6C,UAAYq6C,EAG5B,IAAKM,YAASx1C,EAsBvC40C,GAnBiBY,EAASA,EAAOZ,cAAW50C,IAmBf,IAElB,Q,61aCdA,MAVf,SAAsBhE,GACpB,MAAoB,iBAATA,EACFA,EAEL,OAAAy5C,EAAA,GAASz5C,GAdL,KAiBAA,G,QCiBK,MA1Bf,SAA6BiW,EAAU2F,GACrC,OAAO,SAAS5b,EAAOuwC,GACrB,IAAIttC,EACJ,QAAce,IAAVhE,QAAiCgE,IAAVusC,EACzB,OAAO30B,EAKT,QAHc5X,IAAVhE,IACFiD,EAASjD,QAEGgE,IAAVusC,EAAqB,CACvB,QAAevsC,IAAXf,EACF,OAAOstC,EAEW,iBAATvwC,GAAqC,iBAATuwC,GACrCvwC,EAAQ,YAAaA,GACrBuwC,EAAQ,YAAaA,KAErBvwC,EAAQ,EAAaA,GACrBuwC,EAAQ,EAAaA,IAEvBttC,EAASgT,EAASjW,EAAOuwC,GAE3B,OAAOttC,ICZI,EAJL,GAAoB,SAASy2C,EAAQC,GAC7C,OAAOD,EAASC,IACf,G,OCsBY,MAZf,SAAen5C,EAAG2C,GAChB,GAAmB,mBAARA,EACT,MAAM,IAAI+d,UA5BQ,uBA+BpB,OADA1gB,EAAI,OAAAo5C,EAAA,GAAUp5C,GACP,WACL,KAAMA,EAAI,EACR,OAAO2C,EAAKmC,MAAMxD,KAAMyG,a,iBC/Bf,EAFD,KAAW,IAAI,ICad,EALI,EAAqB,SAASpF,EAAMkhB,GAErD,OADA,EAAQD,IAAIjhB,EAAMkhB,GACXlhB,GAFoB02C,EAAA,E,eCyBd,MAzBf,SAAoBzvC,GAClB,OAAO,WAIL,IAAI6M,EAAO1O,UACX,OAAQ0O,EAAKxT,QACX,KAAK,EAAG,OAAO,IAAI2G,EACnB,KAAK,EAAG,OAAO,IAAIA,EAAK6M,EAAK,IAC7B,KAAK,EAAG,OAAO,IAAI7M,EAAK6M,EAAK,GAAIA,EAAK,IACtC,KAAK,EAAG,OAAO,IAAI7M,EAAK6M,EAAK,GAAIA,EAAK,GAAIA,EAAK,IAC/C,KAAK,EAAG,OAAO,IAAI7M,EAAK6M,EAAK,GAAIA,EAAK,GAAIA,EAAK,GAAIA,EAAK,IACxD,KAAK,EAAG,OAAO,IAAI7M,EAAK6M,EAAK,GAAIA,EAAK,GAAIA,EAAK,GAAIA,EAAK,GAAIA,EAAK,IACjE,KAAK,EAAG,OAAO,IAAI7M,EAAK6M,EAAK,GAAIA,EAAK,GAAIA,EAAK,GAAIA,EAAK,GAAIA,EAAK,GAAIA,EAAK,IAC1E,KAAK,EAAG,OAAO,IAAI7M,EAAK6M,EAAK,GAAIA,EAAK,GAAIA,EAAK,GAAIA,EAAK,GAAIA,EAAK,GAAIA,EAAK,GAAIA,EAAK,IAErF,IAAI6iC,EAAc,YAAW1vC,EAAKzJ,WAC9BsC,EAASmH,EAAK9E,MAAMw0C,EAAa7iC,GAIrC,OAAO,OAAA1S,EAAA,GAAStB,GAAUA,EAAS62C,I,QCLxB,MAXf,SAAoB32C,EAAMq1C,EAASlI,GACjC,IAAIyJ,EAbe,EAaNvB,EACTpuC,EAAO,EAAWjH,GAMtB,OAJA,SAAS62C,IACP,IAAIxyC,EAAM1F,MAAQA,OAAS,KAAQA,gBAAgBk4C,EAAW5vC,EAAOjH,EACrE,OAAOqE,EAAGlC,MAAMy0C,EAASzJ,EAAUxuC,KAAMyG,a,QCrBzC0xC,EAAYrwC,KAAKitB,IAqCN,MAxBf,SAAqB5f,EAAMijC,EAAUC,EAASC,GAU5C,IATA,IAAIC,GAAa,EACbC,EAAarjC,EAAKxT,OAClB82C,EAAgBJ,EAAQ12C,OACxB+2C,GAAa,EACbC,EAAaP,EAASz2C,OACtBi3C,EAAcT,EAAUK,EAAaC,EAAe,GACpDt3C,EAASD,MAAMy3C,EAAaC,GAC5BC,GAAeP,IAEVI,EAAYC,GACnBx3C,EAAOu3C,GAAaN,EAASM,GAE/B,OAASH,EAAYE,IACfI,GAAeN,EAAYC,KAC7Br3C,EAAOk3C,EAAQE,IAAcpjC,EAAKojC,IAGtC,KAAOK,KACLz3C,EAAOu3C,KAAevjC,EAAKojC,KAE7B,OAAOp3C,GClCL,EAAY2G,KAAKitB,IAuCN,MA1Bf,SAA0B5f,EAAMijC,EAAUC,EAASC,GAWjD,IAVA,IAAIC,GAAa,EACbC,EAAarjC,EAAKxT,OAClBm3C,GAAgB,EAChBL,EAAgBJ,EAAQ12C,OACxBo3C,GAAc,EACdC,EAAcZ,EAASz2C,OACvBi3C,EAAc,EAAUJ,EAAaC,EAAe,GACpDt3C,EAASD,MAAM03C,EAAcI,GAC7BH,GAAeP,IAEVC,EAAYK,GACnBz3C,EAAOo3C,GAAapjC,EAAKojC,GAG3B,IADA,IAAIpQ,EAASoQ,IACJQ,EAAaC,GACpB73C,EAAOgnC,EAAS4Q,GAAcX,EAASW,GAEzC,OAASD,EAAeL,IAClBI,GAAeN,EAAYC,KAC7Br3C,EAAOgnC,EAASkQ,EAAQS,IAAiB3jC,EAAKojC,MAGlD,OAAOp3C,GCjBM,MAZf,SAAsBK,EAAOy3C,GAI3B,IAHA,IAAIt3C,EAASH,EAAMG,OACfR,EAAS,EAENQ,KACDH,EAAMG,KAAYs3C,KAClB93C,EAGN,OAAOA,GCRM,MAJf,aCQA,SAAS+3C,EAAYh7C,GACnB8B,KAAKm5C,YAAcj7C,EACnB8B,KAAKo5C,YAAc,GACnBp5C,KAAKq5C,QAAU,EACfr5C,KAAKs5C,cAAe,EACpBt5C,KAAKu5C,cAAgB,GACrBv5C,KAAKw5C,cAfgB,WAgBrBx5C,KAAKy5C,UAAY,GAInBP,EAAYr6C,UAAY,YAAW,EAAWA,WAC9Cq6C,EAAYr6C,UAAUgH,YAAcqzC,EAErB,Q,QCbA,EAJA,EAAiB,SAAS73C,GACvC,OAAO,EAAQvD,IAAIuD,IADI+G,EAAA,ECPV,EAFC,GCKZ,EAHczK,OAAOkB,UAGQC,eAwBlB,MAff,SAAqBuC,GAKnB,IAJA,IAAIF,EAAUE,EAAK7D,KAAO,GACtBgE,EAAQ,EAAUL,GAClBQ,EAAS,EAAevE,KAAK,EAAW+D,GAAUK,EAAMG,OAAS,EAE9DA,KAAU,CACf,IAAI4gB,EAAO/gB,EAAMG,GACb+3C,EAAYn3B,EAAKlhB,KACrB,GAAiB,MAAbq4C,GAAqBA,GAAar4C,EACpC,OAAOkhB,EAAK/kB,KAGhB,OAAO2D,GCjBT,SAASw4C,EAAcz7C,EAAO07C,GAC5B55C,KAAKm5C,YAAcj7C,EACnB8B,KAAKo5C,YAAc,GACnBp5C,KAAK65C,YAAcD,EACnB55C,KAAK85C,UAAY,EACjB95C,KAAK+5C,gBAAa73C,EAGpBy3C,EAAc96C,UAAY,YAAW,EAAWA,WAChD86C,EAAc96C,UAAUgH,YAAc8zC,EAEvB,Q,sBCCA,MAXf,SAAsBzB,GACpB,GAAIA,aAAmB,EACrB,OAAOA,EAAQzwC,QAEjB,IAAItG,EAAS,IAAI,EAAc+2C,EAAQiB,YAAajB,EAAQ2B,WAI5D,OAHA14C,EAAOi4C,YAAc,YAAUlB,EAAQkB,aACvCj4C,EAAO24C,UAAa5B,EAAQ4B,UAC5B34C,EAAO44C,WAAa7B,EAAQ6B,WACrB54C,GCRL,EAHcxD,OAAOkB,UAGQC,eAuHjC,SAASk7C,EAAO97C,GACd,GAAI,OAAA+7C,EAAA,GAAa/7C,KAAW,OAAA+C,EAAA,GAAQ/C,MAAYA,aAAiB,GAAc,CAC7E,GAAIA,aAAiB,EACnB,OAAOA,EAET,GAAI,EAAed,KAAKc,EAAO,eAC7B,OAAO,EAAaA,GAGxB,OAAO,IAAI,EAAcA,GAI3B87C,EAAOn7C,UAAY,EAAWA,UAC9Bm7C,EAAOn7C,UAAUgH,YAAcm0C,EAEhB,QCvHA,MAdf,SAAoB34C,GAClB,IAAIkoC,EAAW,EAAYloC,GACvBotC,EAAQ,EAAOlF,GAEnB,GAAoB,mBAATkF,KAAyBlF,KAAY,EAAY1qC,WAC1D,OAAO,EAET,GAAIwC,IAASotC,EACX,OAAO,EAET,IAAIlsB,EAAO,EAAQksB,GACnB,QAASlsB,GAAQlhB,IAASkhB,EAAK,I,SCLlB,EAFD,YAAS,GChBnB23B,EAAgB,oCAChBC,EAAiB,QAcN,MALf,SAAwBp2B,GACtB,IAAI9V,EAAQ8V,EAAO9V,MAAMisC,GACzB,OAAOjsC,EAAQA,EAAM,GAAG9E,MAAMgxC,GAAkB,ICZ9CC,EAAgB,4CAqBL,MAXf,SAA2Br2B,EAAQs2B,GACjC,IAAI14C,EAAS04C,EAAQ14C,OACrB,IAAKA,EACH,OAAOoiB,EAET,IAAIsyB,EAAY10C,EAAS,EAGzB,OAFA04C,EAAQhE,IAAc10C,EAAS,EAAI,KAAO,IAAM04C,EAAQhE,GACxDgE,EAAUA,EAAQrrC,KAAKrN,EAAS,EAAI,KAAO,KACpCoiB,EAAO/b,QAAQoyC,EAAe,uBAAyBC,EAAU,W,yBCJtEC,EAAY,CACd,CAAC,MANiB,KAOlB,CAAC,OAbkB,GAcnB,CAAC,UAbsB,GAcvB,CAAC,QAbmB,GAcpB,CAAC,aAbyB,IAc1B,CAAC,OATkB,KAUnB,CAAC,UAdqB,IAetB,CAAC,eAd2B,IAe5B,CAAC,QAbmB,MAkCP,OAVf,SAA2BD,EAAS3D,GAOlC,OANA,YAAU4D,GAAW,SAASC,GAC5B,IAAIr8C,EAAQ,KAAOq8C,EAAK,GACnB7D,EAAU6D,EAAK,KAAQ,YAAcF,EAASn8C,IACjDm8C,EAAQ73C,KAAKtE,MAGVm8C,EAAQjzC,QCtBF,OALf,SAAyB8wC,EAASsC,EAAW9D,GAC3C,IAAI3yB,EAAUy2B,EAAY,GAC1B,OAAO,YAAYtC,EAAS,EAAkBn0B,EAAQ,GAAkB,EAAeA,GAAS2yB,MCsCnF,OA1Bf,SAAuBr1C,EAAMq1C,EAAS+D,EAAUxB,EAAazK,EAAS4J,EAAUC,EAASqC,EAAQC,EAAKC,GACpG,IAAIC,EAtBgB,EAsBNnE,EAMdA,GAAYmE,EA3BU,GACM,GAHF,GA8B1BnE,KAAamE,EA3Be,GADN,OA+BpBnE,IAAW,GAEb,IAAIoE,EAAU,CACZz5C,EAAMq1C,EAASlI,EAVCqM,EAAUzC,OAAWl2C,EAFtB24C,EAAUxC,OAAUn2C,EAGd24C,OAAU34C,EAAYk2C,EAFvByC,OAAU34C,EAAYm2C,EAYzBqC,EAAQC,EAAKC,GAG5Bz5C,EAASs5C,EAASj3C,WAAMtB,EAAW44C,GAKvC,OAJI,EAAWz5C,IACb,EAAQF,EAAQ25C,GAElB35C,EAAO83C,YAAcA,EACd,GAAgB93C,EAAQE,EAAMq1C,ICxCxB,OALf,SAAmBr1C,GAEjB,OADaA,EACC43C,a,SCLZ8B,GAAYjzC,KAAKkzC,IAwBN,OAZf,SAAiBx5C,EAAOy5C,GAKtB,IAJA,IAAIC,EAAY15C,EAAMG,OAClBA,EAASo5C,GAAUE,EAAQt5C,OAAQu5C,GACnCC,EAAW,YAAU35C,GAElBG,KAAU,CACf,IAAID,EAAQu5C,EAAQt5C,GACpBH,EAAMG,GAAU,aAAQD,EAAOw5C,GAAaC,EAASz5C,QAASQ,EAEhE,OAAOV,GCGM,OAhBf,SAAwBA,EAAOy3C,GAM7B,IALA,IAAIv3C,GAAS,EACTC,EAASH,EAAMG,OACfy5C,EAAW,EACXj6C,EAAS,KAEJO,EAAQC,GAAQ,CACvB,IAAIzD,EAAQsD,EAAME,GACdxD,IAAU+6C,GAnBA,2BAmBe/6C,IAC3BsD,EAAME,GApBM,yBAqBZP,EAAOi6C,KAAc15C,GAGzB,OAAOP,GCkEM,OAtDf,SAASk6C,EAAah6C,EAAMq1C,EAASlI,EAAS4J,EAAUC,EAASiD,EAAeC,EAAcb,EAAQC,EAAKC,GACzG,IAAIY,EAvBc,IAuBN9E,EACRuB,EA5Be,EA4BNvB,EACT+E,EA5BmB,EA4BP/E,EACZ4B,EAAsB,GAAV5B,EACZgF,EA1Be,IA0BNhF,EACTpuC,EAAOmzC,OAAYv5C,EAAY,EAAWb,GA6C9C,OA3CA,SAAS62C,IAKP,IAJA,IAAIv2C,EAAS8E,UAAU9E,OACnBwT,EAAOjU,MAAMS,GACbD,EAAQC,EAELD,KACLyT,EAAKzT,GAAS+E,UAAU/E,GAE1B,GAAI42C,EACF,IAAIW,EAAc,GAAUf,GACxByD,EAAe,EAAaxmC,EAAM8jC,GASxC,GAPIb,IACFjjC,EAAO,EAAYA,EAAMijC,EAAUC,EAASC,IAE1CgD,IACFnmC,EAAO,EAAiBA,EAAMmmC,EAAeC,EAAcjD,IAE7D32C,GAAUg6C,EACNrD,GAAa32C,EAASi5C,EAAO,CAC/B,IAAIgB,EAAa,GAAezmC,EAAM8jC,GACtC,OAAO,GACL53C,EAAMq1C,EAAS2E,EAAcnD,EAAQe,YAAazK,EAClDr5B,EAAMymC,EAAYlB,EAAQC,EAAKC,EAAQj5C,GAG3C,IAAIq2C,EAAcC,EAASzJ,EAAUxuC,KACjC0F,EAAK+1C,EAAYzD,EAAY32C,GAAQA,EAczC,OAZAM,EAASwT,EAAKxT,OACV+4C,EACFvlC,EAAO,GAAQA,EAAMulC,GACZgB,GAAU/5C,EAAS,GAC5BwT,EAAK8G,UAEHu/B,GAASb,EAAMh5C,IACjBwT,EAAKxT,OAASg5C,GAEZ36C,MAAQA,OAAS,KAAQA,gBAAgBk4C,IAC3CxyC,EAAK4C,GAAQ,EAAW5C,IAEnBA,EAAGlC,MAAMw0C,EAAa7iC,KCzClB,OA5Bf,SAAqB9T,EAAMq1C,EAASkE,GAClC,IAAItyC,EAAO,EAAWjH,GAwBtB,OAtBA,SAAS62C,IAMP,IALA,IAAIv2C,EAAS8E,UAAU9E,OACnBwT,EAAOjU,MAAMS,GACbD,EAAQC,EACRs3C,EAAc,GAAUf,GAErBx2C,KACLyT,EAAKzT,GAAS+E,UAAU/E,GAE1B,IAAI22C,EAAW12C,EAAS,GAAKwT,EAAK,KAAO8jC,GAAe9jC,EAAKxT,EAAS,KAAOs3C,EACzE,GACA,GAAe9jC,EAAM8jC,GAGzB,IADAt3C,GAAU02C,EAAQ12C,QACLi5C,EACX,OAAO,GACLv5C,EAAMq1C,EAAS,GAAcwB,EAAQe,iBAAa/2C,EAClDiT,EAAMkjC,OAASn2C,OAAWA,EAAW04C,EAAQj5C,GAEjD,IAAI+D,EAAM1F,MAAQA,OAAS,KAAQA,gBAAgBk4C,EAAW5vC,EAAOjH,EACrE,OAAO,YAAMqE,EAAI1F,KAAMmV,KCEZ,OAvBf,SAAuB9T,EAAMq1C,EAASlI,EAAS4J,GAC7C,IAAIH,EAfe,EAeNvB,EACTpuC,EAAO,EAAWjH,GAkBtB,OAhBA,SAAS62C,IAQP,IAPA,IAAIK,GAAa,EACbC,EAAa/xC,UAAU9E,OACvB+2C,GAAa,EACbC,EAAaP,EAASz2C,OACtBwT,EAAOjU,MAAMy3C,EAAaH,GAC1B9yC,EAAM1F,MAAQA,OAAS,KAAQA,gBAAgBk4C,EAAW5vC,EAAOjH,IAE5Dq3C,EAAYC,GACnBxjC,EAAKujC,GAAaN,EAASM,GAE7B,KAAOF,KACLrjC,EAAKujC,KAAejyC,YAAY8xC,GAElC,OAAO,YAAM7yC,EAAIuyC,EAASzJ,EAAUxuC,KAAMmV,KCrB1C,GAAYrN,KAAKkzC,IAyEN,OAvDf,SAAmBz4B,EAAMwB,GACvB,IAAI2yB,EAAUn0B,EAAK,GACfs5B,EAAa93B,EAAO,GACpB+3B,EAAapF,EAAUmF,EACvBE,EAAWD,EAAa,IAExBE,EA5Bc,KA6BdH,GA9BgB,GA8BiBnF,GA7BnB,KA8BdmF,GA7BgB,KA6BiBnF,GAAgCn0B,EAAK,GAAG5gB,QAAUoiB,EAAO,IAC5E,KAAd83B,GAAqD93B,EAAO,GAAGpiB,QAAUoiB,EAAO,IAhChE,GAgCwE2yB,EAG5F,IAAMqF,IAAYC,EAChB,OAAOz5B,EAvCU,EA0Cfs5B,IACFt5B,EAAK,GAAKwB,EAAO,GAEjB+3B,GA7CiB,EA6CHpF,EAA2B,EA3CjB,GA8C1B,IAAIx4C,EAAQ6lB,EAAO,GACnB,GAAI7lB,EAAO,CACT,IAAIk6C,EAAW71B,EAAK,GACpBA,EAAK,GAAK61B,EAAW,EAAYA,EAAUl6C,EAAO6lB,EAAO,IAAM7lB,EAC/DqkB,EAAK,GAAK61B,EAAW,GAAe71B,EAAK,GAvD3B,0BAuD8CwB,EAAO,GA0BrE,OAvBA7lB,EAAQ6lB,EAAO,MAEbq0B,EAAW71B,EAAK,GAChBA,EAAK,GAAK61B,EAAW,EAAiBA,EAAUl6C,EAAO6lB,EAAO,IAAM7lB,EACpEqkB,EAAK,GAAK61B,EAAW,GAAe71B,EAAK,GA9D3B,0BA8D8CwB,EAAO,KAGrE7lB,EAAQ6lB,EAAO,MAEbxB,EAAK,GAAKrkB,GA5DM,IA+Dd29C,IACFt5B,EAAK,GAAgB,MAAXA,EAAK,GAAawB,EAAO,GAAK,GAAUxB,EAAK,GAAIwB,EAAO,KAGrD,MAAXxB,EAAK,KACPA,EAAK,GAAKwB,EAAO,IAGnBxB,EAAK,GAAKwB,EAAO,GACjBxB,EAAK,GAAKu5B,EAEHv5B,GC/DL,GAAYza,KAAKitB,IAkFN,OAvDf,SAAoB1zB,EAAMq1C,EAASlI,EAAS4J,EAAUC,EAASqC,EAAQC,EAAKC,GAC1E,IAAIa,EAnCmB,EAmCP/E,EAChB,IAAK+E,GAA4B,mBAARp6C,EACvB,MAAM,IAAI+d,UAzCQ,uBA2CpB,IAAIzd,EAASy2C,EAAWA,EAASz2C,OAAS,EAS1C,GARKA,IACH+0C,IAAW,GACX0B,EAAWC,OAAUn2C,GAEvBy4C,OAAcz4C,IAARy4C,EAAoBA,EAAM,GAAU,OAAA7C,EAAA,GAAU6C,GAAM,GAC1DC,OAAkB14C,IAAV04C,EAAsBA,EAAQ,OAAA9C,EAAA,GAAU8C,GAChDj5C,GAAU02C,EAAUA,EAAQ12C,OAAS,EA1CT,GA4CxB+0C,EAAmC,CACrC,IAAI4E,EAAgBlD,EAChBmD,EAAelD,EAEnBD,EAAWC,OAAUn2C,EAEvB,IAAIqgB,EAAOk5B,OAAYv5C,EAAY,EAAQb,GAEvCy5C,EAAU,CACZz5C,EAAMq1C,EAASlI,EAAS4J,EAAUC,EAASiD,EAAeC,EAC1Db,EAAQC,EAAKC,GAkBf,GAfIr4B,GACF,GAAUu4B,EAASv4B,GAErBlhB,EAAOy5C,EAAQ,GACfpE,EAAUoE,EAAQ,GAClBtM,EAAUsM,EAAQ,GAClB1C,EAAW0C,EAAQ,GACnBzC,EAAUyC,EAAQ,KAClBF,EAAQE,EAAQ,QAAoB54C,IAAf44C,EAAQ,GACxBW,EAAY,EAAIp6C,EAAKM,OACtB,GAAUm5C,EAAQ,GAAKn5C,EAAQ,KAEX,GAAV+0C,IACZA,IAAW,IAERA,GA7Ec,GA6EHA,EAGdv1C,EA9EkB,GA6ETu1C,GA5Ee,IA4EeA,EAC9B,GAAYr1C,EAAMq1C,EAASkE,GA5EhB,IA6EVlE,GAA2C,IAAXA,GAAqD2B,EAAQ12C,OAG9F,GAAa6B,WAAMtB,EAAW44C,GAF9B,GAAcz5C,EAAMq1C,EAASlI,EAAS4J,QAJ/C,IAAIj3C,EAAS,EAAWE,EAAMq1C,EAASlI,GASzC,OAAO,IADMjsB,EAAO,EAAc,GACJphB,EAAQ25C,GAAUz5C,EAAMq1C,IC1EzC,OANf,SAAar1C,EAAM3C,EAAGu9C,GAGpB,OAFAv9C,EAAIu9C,OAAQ/5C,EAAYxD,EACxBA,EAAK2C,GAAa,MAAL3C,EAAa2C,EAAKM,OAASjD,EACjC,GAAW2C,EAtBA,SAsBqBa,OAAWA,OAAWA,OAAWA,EAAWxD,I,qDCdjF,GAHcf,OAAOkB,UAGQC,eA8ClB,GAZF,cAAe,SAASH,EAAQolB,GAC3C,GAAI,aAAYA,IAAW,OAAAphB,GAAA,GAAYohB,GACrC,aAAWA,EAAQ,OAAA3U,GAAA,GAAK2U,GAASplB,QAGnC,IAAK,IAAIH,KAAOulB,EACV,GAAe3mB,KAAK2mB,EAAQvlB,IAC9B,aAAYG,EAAQH,EAAKulB,EAAOvlB,O,oBChBvB,GAJE,cAAe,SAASG,EAAQolB,EAAQm4B,EAAU3H,GACjE,aAAWxwB,EAAQ,OAAA3U,GAAA,GAAK2U,GAASplB,EAAQ41C,M,SCX5B,OAZf,SAAgB51C,EAAQw9C,GAMtB,IALA,IAAIz6C,GAAS,EACTC,EAASw6C,EAAMx6C,OACfR,EAASD,MAAMS,GACfoV,EAAiB,MAAVpY,IAEF+C,EAAQC,GACfR,EAAOO,GAASqV,OAAO7U,EAAY,OAAApE,GAAA,GAAIa,EAAQw9C,EAAMz6C,IAEvD,OAAOP,G,SCGM,GAFN,aAAS,I,4BCwBd1C,GAAO,cAAS,SAAS4C,EAAMmtC,EAAS4J,GAC1C,IAAI1B,EAvCe,EAwCnB,GAAI0B,EAASz2C,OAAQ,CACnB,IAAI02C,EAAU,GAAeD,EAAU,GAAU35C,KACjDi4C,GAzCoB,GA2CtB,OAAO,GAAWr1C,EAAMq1C,EAASlI,EAAS4J,EAAUC,MAItD55C,GAAKw6C,YAAc,GAEJ,U,kBChBA,GARD,cAAS,SAASt6C,EAAQy9C,GAKtC,OAJA,YAAUA,GAAa,SAAS59C,GAC9BA,EAAM,aAAMA,GACZ,aAAgBG,EAAQH,EAAK,GAAKG,EAAOH,GAAMG,OAE1CA,KCkBL09C,GAAU,cAAS,SAAS19C,EAAQH,EAAK45C,GAC3C,IAAI1B,EAAU,EACd,GAAI0B,EAASz2C,OAAQ,CACnB,IAAI02C,EAAU,GAAeD,EAAU,GAAUiE,KACjD3F,GAnDoB,GAqDtB,OAAO,GAAWl4C,EAAKk4C,EAAS/3C,EAAQy5C,EAAUC,MAIpDgE,GAAQpD,YAAc,GAEP,U,oBCxBA,OARf,WACE,IAAKxyC,UAAU9E,OACb,MAAO,GAET,IAAIzD,EAAQuI,UAAU,GACtB,OAAO,OAAAxF,EAAA,GAAQ/C,GAASA,EAAQ,CAACA,I,iBClC/Bo+C,GAAiB,IAAKlmB,SACtB,GAAYtuB,KAAKkzC,IA2BN,OAlBf,SAAqBuB,GACnB,IAAIl7C,EAAOyG,KAAKy0C,GAChB,OAAO,SAASC,EAAQC,GAGtB,GAFAD,EAAS,OAAAE,GAAA,GAASF,IAClBC,EAAyB,MAAbA,EAAoB,EAAI,GAAU,OAAA3E,EAAA,GAAU2E,GAAY,OACnDH,GAAeE,GAAS,CAGvC,IAAIjC,GAAQ,aAASiC,GAAU,KAAKrzC,MAAM,KACtCjL,EAAQmD,EAAKk5C,EAAK,GAAK,MAAQA,EAAK,GAAKkC,IAG7C,SADAlC,GAAQ,aAASr8C,GAAS,KAAKiL,MAAM,MACvB,GAAK,MAAQoxC,EAAK,GAAKkC,IAEvC,OAAOp7C,EAAKm7C,KCLD,GAFJ,GAAY,QCcR,OANf,SAAet+C,GACb,IAAIiD,EAAS,EAAOjD,GAEpB,OADAiD,EAAO04C,WAAY,EACZ14C,G,kBC7BLw7C,GAAa70C,KAAK0tB,KAClB,GAAY1tB,KAAKitB,IA2CN,OApBf,SAAevzB,EAAOo7C,EAAMX,GAExBW,GADGX,EAAQ,aAAez6C,EAAOo7C,EAAMX,QAAkB/5C,IAAT06C,GACzC,EAEA,GAAU,OAAA9E,EAAA,GAAU8E,GAAO,GAEpC,IAAIj7C,EAAkB,MAATH,EAAgB,EAAIA,EAAMG,OACvC,IAAKA,GAAUi7C,EAAO,EACpB,MAAO,GAMT,IAJA,IAAIl7C,EAAQ,EACR05C,EAAW,EACXj6C,EAASD,MAAMy7C,GAAWh7C,EAASi7C,IAEhCl7C,EAAQC,GACbR,EAAOi6C,KAAc,aAAU55C,EAAOE,EAAQA,GAASk7C,GAEzD,OAAOz7C,G,uCCPM,OALf,SAAuBjD,EAAOq2C,GAE5B,OADAA,EAAkC,mBAAdA,EAA2BA,OAAaryC,EACrD,aAAUhE,EAAO2+C,EAAsCtI,ICKjD,OALf,SAAmBr2C,EAAOq2C,GAExB,OADAA,EAAkC,mBAAdA,EAA2BA,OAAaryC,EACrD,aAAUhE,EAnCM,EAmCqBq2C,ICN/B,OAJf,WACE,OAAO,IAAI,EAAcv0C,KAAK9B,QAAS8B,KAAK65C,YCC/B,OAff,SAAiBr4C,GAMf,IALA,IAAIE,GAAS,EACTC,EAAkB,MAATH,EAAgB,EAAIA,EAAMG,OACnCy5C,EAAW,EACXj6C,EAAS,KAEJO,EAAQC,GAAQ,CACvB,IAAIzD,EAAQsD,EAAME,GACdxD,IACFiD,EAAOi6C,KAAcl9C,GAGzB,OAAOiD,G,kBCeM,OAff,WACE,IAAIQ,EAAS8E,UAAU9E,OACvB,IAAKA,EACH,MAAO,GAMT,IAJA,IAAIwT,EAAOjU,MAAMS,EAAS,GACtBH,EAAQiF,UAAU,GAClB/E,EAAQC,EAELD,KACLyT,EAAKzT,EAAQ,GAAK+E,UAAU/E,GAE9B,OAAO,aAAU,OAAAT,EAAA,GAAQO,GAAS,YAAUA,GAAS,CAACA,GAAQ,aAAY2T,EAAM,K,gBCoBnE,OAtBf,SAAc2nC,GACZ,IAAIn7C,EAAkB,MAATm7C,EAAgB,EAAIA,EAAMn7C,OACnCo7C,EAAa,KASjB,OAPAD,EAASn7C,EAAc,aAASm7C,GAAO,SAASvC,GAC9C,GAAsB,mBAAXA,EAAK,GACd,MAAM,IAAIn7B,UArCM,uBAuClB,MAAO,CAAC29B,EAAWxC,EAAK,IAAKA,EAAK,OAJlB,GAOX,cAAS,SAASplC,GAEvB,IADA,IAAIzT,GAAS,IACJA,EAAQC,GAAQ,CACvB,IAAI44C,EAAOuC,EAAMp7C,GACjB,GAAI,YAAM64C,EAAK,GAAIv6C,KAAMmV,GACvB,OAAO,YAAMolC,EAAK,GAAIv6C,KAAMmV,QC3BrB,OAlBf,SAAwBxW,EAAQolB,EAAQ4H,GACtC,IAAIhqB,EAASgqB,EAAMhqB,OACnB,GAAc,MAAVhD,EACF,OAAQgD,EAGV,IADAhD,EAAShB,OAAOgB,GACTgD,KAAU,CACf,IAAInD,EAAMmtB,EAAMhqB,GACZW,EAAYyhB,EAAOvlB,GACnBN,EAAQS,EAAOH,GAEnB,QAAe0D,IAAVhE,KAAyBM,KAAOG,KAAa2D,EAAUpE,GAC1D,OAAO,EAGX,OAAO,GCNM,OAPf,SAAsB6lB,GACpB,IAAI4H,EAAQ,OAAAvc,GAAA,GAAK2U,GACjB,OAAO,SAASplB,GACd,OAAO,GAAeA,EAAQolB,EAAQ4H,KCqB3B,OAJf,SAAkB5H,GAChB,OAAO,GAAa,aAAUA,EA3BV,KC2BP,OAJf,SAAoBplB,EAAQolB,GAC1B,OAAiB,MAAVA,GAAkB,GAAeplB,EAAQolB,EAAQ,OAAA3U,GAAA,GAAK2U,K,kBCrB3D,GAHcpmB,OAAOkB,UAGQC,eAgClB,GARD,cAAiB,SAASqC,EAAQjD,EAAOM,GACjD,GAAepB,KAAK+D,EAAQ3C,KAC5B2C,EAAO3C,GAET,aAAgB2C,EAAQ3C,EAAK,M,UCOlB,OALf,SAAgBK,EAAWi6B,GACzB,IAAI33B,EAAS,YAAWtC,GACxB,OAAqB,MAAdi6B,EAAqB33B,EAAS,aAAWA,EAAQ23B,ICO1D,SAASyU,GAAMlsC,EAAMu5C,EAAOqB,GAE1B,IAAI96C,EAAS,GAAWE,EA7CJ,OA6C2Ba,OAAWA,OAAWA,OAAWA,OAAWA,EAD3F04C,EAAQqB,OAAQ/5C,EAAY04C,GAG5B,OADAz5C,EAAO83C,YAAc1L,GAAM0L,YACpB93C,EAITosC,GAAM0L,YAAc,GAEL,UCbf,SAAS+D,GAAW37C,EAAMu5C,EAAOqB,GAE/B,IAAI96C,EAAS,GAAWE,EA1CE,QA0C2Ba,OAAWA,OAAWA,OAAWA,OAAWA,EADjG04C,EAAQqB,OAAQ/5C,EAAY04C,GAG5B,OADAz5C,EAAO83C,YAAc+D,GAAW/D,YACzB93C,EAIT67C,GAAW/D,YAAc,GAEV,U,oBC7BA,OAJf,SAAmB/6C,EAAO4b,GACxB,OAAiB,MAAT5b,GAAiBA,GAAUA,EAAS4b,EAAe5b,G,wCCM9C,GAJH,cAAS,SAASmD,EAAM2f,EAAM7L,GACxC,OAAO,aAAU9T,EAAM,OAAAq7C,GAAA,GAAS17B,IAAS,EAAG7L,M,4BCL/B,OALf,SAAc3T,GACZ,IAAIG,EAAkB,MAATH,EAAgB,EAAIA,EAAMG,OACvC,OAAOA,EAASH,EAAMG,EAAS,QAAKO,GC2BvB,GAVI,cAAS,SAASV,EAAOikB,GAC1C,IAAIhkB,EAAW,GAAKgkB,GAIpB,OAHI,OAAAw3B,GAAA,GAAkBx7C,KACpBA,OAAWS,GAEN,OAAA+6C,GAAA,GAAkBz7C,GACrB,aAAeA,EAAO,aAAYikB,EAAQ,EAAGw3B,GAAA,GAAmB,GAAO,aAAax7C,EAAU,IAC9F,MCDS,GAVM,cAAS,SAASD,EAAOikB,GAC5C,IAAIy3B,EAAa,GAAKz3B,GAItB,OAHI,OAAAw3B,GAAA,GAAkBC,KACpBA,OAAah7C,GAER,OAAA+6C,GAAA,GAAkBz7C,GACrB,aAAeA,EAAO,aAAYikB,EAAQ,EAAGw3B,GAAA,GAAmB,QAAO/6C,EAAWg7C,GAClF,MCfS,GAJF,GAAoB,SAASC,EAAUC,GAClD,OAAOD,EAAWC,IACjB,GCkBY,OATf,SAAc57C,EAAO9C,EAAGu9C,GACtB,IAAIt6C,EAAkB,MAATH,EAAgB,EAAIA,EAAMG,OACvC,OAAKA,GAGLjD,EAAKu9C,QAAe/5C,IAANxD,EAAmB,EAAI,OAAAo5C,EAAA,GAAUp5C,GACxC,aAAU8C,EAAO9C,EAAI,EAAI,EAAIA,EAAGiD,IAH9B,ICOI,OAVf,SAAmBH,EAAO9C,EAAGu9C,GAC3B,IAAIt6C,EAAkB,MAATH,EAAgB,EAAIA,EAAMG,OACvC,OAAKA,GAILjD,EAAIiD,GADJjD,EAAKu9C,QAAe/5C,IAANxD,EAAmB,EAAI,OAAAo5C,EAAA,GAAUp5C,IAExC,aAAU8C,EAAO,EAAG9C,EAAI,EAAI,EAAIA,IAJ9B,ICNI,OAZf,SAAmB8C,EAAOc,EAAW+6C,EAAQC,GAI3C,IAHA,IAAI37C,EAASH,EAAMG,OACfD,EAAQ47C,EAAY37C,GAAU,GAE1B27C,EAAY57C,MAAYA,EAAQC,IACtCW,EAAUd,EAAME,GAAQA,EAAOF,KAEjC,OAAO67C,EACH,aAAU77C,EAAQ87C,EAAY,EAAI57C,EAAS47C,EAAY57C,EAAQ,EAAIC,GACnE,aAAUH,EAAQ87C,EAAY57C,EAAQ,EAAI,EAAK47C,EAAY37C,EAASD,ICsB3D,OANf,SAAwBF,EAAOc,GAC7B,OAAQd,GAASA,EAAMG,OACnB,GAAUH,EAAO,aAAac,EAAW,IAAI,GAAM,GACnD,ICGS,OANf,SAAmBd,EAAOc,GACxB,OAAQd,GAASA,EAAMG,OACnB,GAAUH,EAAO,aAAac,EAAW,IAAI,GAC7C,I,kBCDS,OALf,SAAiB2sB,EAAYxtB,GAE3B,OADW,OAAAR,EAAA,GAAQguB,GAAc,IAAY,MACjCA,EAAY,aAAaxtB,KCjBxB,OAXf,SAAwBD,EAAOC,GAG7B,IAFA,IAAIE,EAAkB,MAATH,EAAgB,EAAIA,EAAMG,OAEhCA,MAC0C,IAA3CF,EAASD,EAAMG,GAASA,EAAQH,KAItC,OAAOA,G,UCHM,GAFI,cAAc,GCGlB,OAJf,SAAyB7C,EAAQ8C,GAC/B,OAAO9C,GAAU,GAAaA,EAAQ8C,EAAU2N,GAAA,I,UCCnC,GAFK,aAAe,IAAiB,GCmBrC,OALf,SAAsB6f,EAAYxtB,GAEhC,OADW,OAAAR,EAAA,GAAQguB,GAAc,GAAiB,IACtCA,EAAY,aAAaxtB,K,UCVxB,OANf,SAAqB9C,EAAQgtB,GAC3B,OAAO,aAASA,GAAO,SAASntB,GAC9B,MAAO,CAACA,EAAKG,EAAOH,Q,mBCIT,OAVf,SAAoB8jB,GAClB,IAAI5gB,GAAS,EACTP,EAASD,MAAMohB,EAAIs6B,MAKvB,OAHAt6B,EAAI6oB,SAAQ,SAASjtC,GACnBiD,IAASO,GAAS,CAACxD,EAAOA,MAErBiD,GCeM,OAbf,SAAuBg2C,GACrB,OAAO,SAASx4C,GACd,IAAIiT,EAAM,aAAOjT,GACjB,MAbS,gBAaLiT,EACK,aAAWjT,GAbX,gBAeLiT,EACK,GAAWjT,GAEb,GAAYA,EAAQw4C,EAASx4C,MCIzB,GAFD,GAAcyQ,GAAA,G,SCEb,GAFC,GAAcymC,GAAA,G,mBCrB1B0H,GAAe,sBACfC,GAAkB7xC,OAAO4xC,GAAax5B,QAwB3B,OAPf,SAAsB/B,GAEpB,OADAA,EAAS,aAASA,KACAw7B,GAAgB5uC,KAAKoT,GACnCA,EAAOha,QAAQu1C,GAAc,QAC7Bv7B,GCNS,OAZf,SAAoBxgB,EAAOc,GAIzB,IAHA,IAAIZ,GAAS,EACTC,EAAkB,MAATH,EAAgB,EAAIA,EAAMG,SAE9BD,EAAQC,GACf,IAAKW,EAAUd,EAAME,GAAQA,EAAOF,GAClC,OAAO,EAGX,OAAO,GCCM,OATf,SAAmBytB,EAAY3sB,GAC7B,IAAInB,GAAS,EAKb,OAJA,aAAS8tB,GAAY,SAAS/wB,EAAOwD,EAAOutB,GAE1C,OADA9tB,IAAWmB,EAAUpE,EAAOwD,EAAOutB,MAG9B9tB,GCsCM,OARf,SAAe8tB,EAAY3sB,EAAW25C,GACpC,IAAI56C,EAAO,OAAAJ,EAAA,GAAQguB,GAAc,GAAa,GAI9C,OAHIgtB,GAAS,aAAehtB,EAAY3sB,EAAW25C,KACjD35C,OAAYJ,GAEPb,EAAK4tB,EAAY,aAAa3sB,EAAW,K,SCfnC,OAJf,SAAkBpE,GAChB,OAAOA,EAAQ,aAAU,OAAA45C,EAAA,GAAU55C,GAAQ,EA9BtB,YA8B6C,GCHrD,OAlBf,SAAkBsD,EAAOtD,EAAOoD,EAAO6F,GACrC,IAAIxF,EAASH,EAAMG,OAWnB,KATAL,EAAQ,OAAAw2C,EAAA,GAAUx2C,IACN,IACVA,GAASA,EAAQK,EAAS,EAAKA,EAASL,IAE1C6F,OAAejF,IAARiF,GAAqBA,EAAMxF,EAAUA,EAAS,OAAAm2C,EAAA,GAAU3wC,IACrD,IACRA,GAAOxF,GAETwF,EAAM7F,EAAQ6F,EAAM,EAAI,GAASA,GAC1B7F,EAAQ6F,GACb3F,EAAMF,KAAWpD,EAEnB,OAAOsD,GCgBM,OAZf,SAAcA,EAAOtD,EAAOoD,EAAO6F,GACjC,IAAIxF,EAAkB,MAATH,EAAgB,EAAIA,EAAMG,OACvC,OAAKA,GAGDL,GAAyB,iBAATA,GAAqB,aAAeE,EAAOtD,EAAOoD,KACpEA,EAAQ,EACR6F,EAAMxF,GAED,GAASH,EAAOtD,EAAOoD,EAAO6F,IAN5B,I,SCfI,OAVf,SAAoB8nB,EAAY3sB,GAC9B,IAAInB,EAAS,GAMb,OALA,aAAS8tB,GAAY,SAAS/wB,EAAOwD,EAAOutB,GACtC3sB,EAAUpE,EAAOwD,EAAOutB,IAC1B9tB,EAAOqB,KAAKtE,MAGTiD,GCkCM,OALf,SAAgB8tB,EAAY3sB,GAE1B,OADW,OAAArB,EAAA,GAAQguB,GAAc,KAAc,IACnCA,EAAY,aAAa3sB,EAAW,KCxBnC,OAbf,SAAoBm7C,GAClB,OAAO,SAASxuB,EAAY3sB,EAAWo7C,GACrC,IAAIC,EAAWhgD,OAAOsxB,GACtB,IAAK,OAAAtsB,GAAA,GAAYssB,GAAa,CAC5B,IAAIxtB,EAAW,aAAaa,EAAW,GACvC2sB,EAAa,OAAA7f,GAAA,GAAK6f,GAClB3sB,EAAY,SAAS9D,GAAO,OAAOiD,EAASk8C,EAASn/C,GAAMA,EAAKm/C,IAElE,IAAIj8C,EAAQ+7C,EAAcxuB,EAAY3sB,EAAWo7C,GACjD,OAAOh8C,GAAS,EAAIi8C,EAASl8C,EAAWwtB,EAAWvtB,GAASA,QAASQ,I,SCfrE,GAAY4F,KAAKitB,IAiDN,OAZf,SAAmBvzB,EAAOc,EAAWo7C,GACnC,IAAI/7C,EAAkB,MAATH,EAAgB,EAAIA,EAAMG,OACvC,IAAKA,EACH,OAAQ,EAEV,IAAID,EAAqB,MAAbg8C,EAAoB,EAAI,OAAA5F,EAAA,GAAU4F,GAI9C,OAHIh8C,EAAQ,IACVA,EAAQ,GAAUC,EAASD,EAAO,IAE7B,aAAcF,EAAO,aAAac,EAAW,GAAIZ,ICV3C,GAFJ,GAAW,ICjBP,OAXf,SAAqButB,EAAY3sB,EAAWs7C,GAC1C,IAAIz8C,EAOJ,OANAy8C,EAAS3uB,GAAY,SAAS/wB,EAAOM,EAAKywB,GACxC,GAAI3sB,EAAUpE,EAAOM,EAAKywB,GAExB,OADA9tB,EAAS3C,GACF,KAGJ2C,G,SCwBM,OAJf,SAAiBxC,EAAQ2D,GACvB,OAAO,GAAY3D,EAAQ,aAAa2D,EAAW,GAAI,OCnCrD,GAAYwF,KAAKitB,IACjB,GAAYjtB,KAAKkzC,IAoDN,OAff,SAAuBx5C,EAAOc,EAAWo7C,GACvC,IAAI/7C,EAAkB,MAATH,EAAgB,EAAIA,EAAMG,OACvC,IAAKA,EACH,OAAQ,EAEV,IAAID,EAAQC,EAAS,EAOrB,YANkBO,IAAdw7C,IACFh8C,EAAQ,OAAAo2C,EAAA,GAAU4F,GAClBh8C,EAAQg8C,EAAY,EAChB,GAAU/7C,EAASD,EAAO,GAC1B,GAAUA,EAAOC,EAAS,IAEzB,aAAcH,EAAO,aAAac,EAAW,GAAIZ,GAAO,IC/BlD,GAFA,GAAW,ICqBX,OAJf,SAAqB/C,EAAQ2D,GAC3B,OAAO,GAAY3D,EAAQ,aAAa2D,EAAW,GAAI,KClB1C,OAJf,SAAcd,GACZ,OAAQA,GAASA,EAAMG,OAAUH,EAAM,QAAKU,G,UCiC/B,OALf,SAAa+sB,EAAYxtB,GAEvB,OADW,OAAAR,EAAA,GAAQguB,GAAc,KAAW,MAChCA,EAAY,aAAaxtB,EAAU,KCrBlC,OAJf,SAAiBwtB,EAAYxtB,GAC3B,OAAO,aAAY,GAAIwtB,EAAYxtB,GAAW,ICKjC,OAJf,SAAqBwtB,EAAYxtB,GAC/B,OAAO,aAAY,GAAIwtB,EAAYxtB,GAvBtB,MC0BA,OALf,SAAsBwtB,EAAYxtB,EAAUY,GAE1C,OADAA,OAAkBH,IAAVG,EAAsB,EAAI,OAAAy1C,EAAA,GAAUz1C,GACrC,aAAY,GAAI4sB,EAAYxtB,GAAWY,I,UCHjC,OALf,SAAqBb,GAEnB,OADsB,MAATA,EAAgB,EAAIA,EAAMG,QACvB,aAAYH,EAlBf,KAkBkC,ICWlC,OATf,SAAsBA,EAAOa,GAE3B,OADsB,MAATb,EAAgB,EAAIA,EAAMG,SAIvCU,OAAkBH,IAAVG,EAAsB,EAAI,OAAAy1C,EAAA,GAAUz1C,GACrC,aAAYb,EAAOa,IAHjB,ICCI,OAJf,SAAchB,GACZ,OAAO,GAAWA,EArBC,MCsBN,GAFH,GAAY,SCsDT,OAtDf,SAAoBi8C,GAClB,OAAO,cAAS,SAASO,GACvB,IAAIl8C,EAASk8C,EAAMl8C,OACfD,EAAQC,EACRm8C,EAAS,EAAcj/C,UAAUk/C,KAKrC,IAHIT,GACFO,EAAM5hC,UAEDva,KAAS,CACd,IAAIL,EAAOw8C,EAAMn8C,GACjB,GAAmB,mBAARL,EACT,MAAM,IAAI+d,UA3BI,uBA6BhB,GAAI0+B,IAAW5F,GAAgC,WAArB,EAAY72C,GACpC,IAAI62C,EAAU,IAAI,EAAc,IAAI,GAIxC,IADAx2C,EAAQw2C,EAAUx2C,EAAQC,IACjBD,EAAQC,GAAQ,CACvBN,EAAOw8C,EAAMn8C,GAEb,IAAI6nC,EAAW,EAAYloC,GACvBkhB,EAAmB,WAAZgnB,EAAwB,EAAQloC,QAAQa,EAMjDg2C,EAJE31B,GAAQ,EAAWA,EAAK,KACX,KAAXA,EAAK,KACJA,EAAK,GAAG5gB,QAAqB,GAAX4gB,EAAK,GAElB21B,EAAQ,EAAY31B,EAAK,KAAK/e,MAAM00C,EAAS31B,EAAK,IAElC,GAAflhB,EAAKM,QAAe,EAAWN,GACtC62C,EAAQ3O,KACR2O,EAAQ6F,KAAK18C,GAGrB,OAAO,WACL,IAAI8T,EAAO1O,UACPvI,EAAQiX,EAAK,GAEjB,GAAI+iC,GAA0B,GAAf/iC,EAAKxT,QAAe,OAAAV,EAAA,GAAQ/C,GACzC,OAAOg6C,EAAQ8F,MAAM9/C,GAAOA,QAK9B,IAHA,IAAIwD,EAAQ,EACRP,EAASQ,EAASk8C,EAAMn8C,GAAO8B,MAAMxD,KAAMmV,GAAQjX,IAE9CwD,EAAQC,GACfR,EAAS08C,EAAMn8C,GAAOtE,KAAK4C,KAAMmB,GAEnC,OAAOA,OC9CE,GAFJ,KCCI,GAFC,IAAW,G,UCaZ,OANf,SAAoBxC,EAAQ8C,GAC1B,OAAiB,MAAV9C,EACHA,EACA,GAAaA,EAAQ,aAAa8C,GAAWo0C,GAAA,ICEpC,OAJf,SAAgBl3C,EAAQ8C,GACtB,OAAO9C,GAAU,aAAWA,EAAQ,aAAa8C,KCCpC,OAJf,SAAqB9C,EAAQ8C,GAC3B,OAAO9C,GAAU,GAAgBA,EAAQ,aAAa8C,KCHzC,OAZf,SAAmBq7C,GAKjB,IAJA,IAAIp7C,GAAS,EACTC,EAAkB,MAATm7C,EAAgB,EAAIA,EAAMn7C,OACnCR,EAAS,KAEJO,EAAQC,GAAQ,CACvB,IAAI44C,EAAOuC,EAAMp7C,GACjBP,EAAOo5C,EAAK,IAAMA,EAAK,GAEzB,OAAOp5C,G,SCNM,OANf,SAAuBxC,EAAQgtB,GAC7B,OAAO,aAAYA,GAAO,SAASntB,GACjC,OAAO,OAAAwF,GAAA,GAAWrF,EAAOH,QCgBd,OAJf,SAAmBG,GACjB,OAAiB,MAAVA,EAAiB,GAAK,GAAcA,EAAQ,OAAAyQ,GAAA,GAAKzQ,KCG3C,OAJf,SAAqBA,GACnB,OAAiB,MAAVA,EAAiB,GAAK,GAAcA,EAAQ,OAAAk3C,GAAA,GAAOl3C,K,UCd7C,OAJf,SAAgBT,EAAOuwC,GACrB,OAAOvwC,EAAQuwC,GCSF,OAVf,SAAmCt6B,GACjC,OAAO,SAASjW,EAAOuwC,GAKrB,MAJsB,iBAATvwC,GAAqC,iBAATuwC,IACvCvwC,EAAQ,OAAAw+C,GAAA,GAASx+C,GACjBuwC,EAAQ,OAAAiO,GAAA,GAASjO,IAEZt6B,EAASjW,EAAOuwC,KCaZ,GAFN,GAA0B,ICGpB,GAJL,IAA0B,SAASvwC,EAAOuwC,GAClD,OAAOvwC,GAASuwC,K,yDCOH,OAJf,SAAgB9vC,GACd,OAAiB,MAAVA,EAAiB,GAAK,aAAWA,EAAQ,OAAAyQ,GAAA,GAAKzQ,KCvBnD,GAAYmJ,KAAKitB,IA6CN,OAbf,SAAkB9F,EAAY/wB,EAAOw/C,EAAWzB,GAC9ChtB,EAAa,OAAAtsB,GAAA,GAAYssB,GAAcA,EAAa,GAAOA,GAC3DyuB,EAAaA,IAAczB,EAAS,OAAAnE,EAAA,GAAU4F,GAAa,EAE3D,IAAI/7C,EAASstB,EAAWttB,OAIxB,OAHI+7C,EAAY,IACdA,EAAY,GAAU/7C,EAAS+7C,EAAW,IAErC,OAAAlQ,GAAA,GAASve,GACXyuB,GAAa/7C,GAAUstB,EAAWxrB,QAAQvF,EAAOw/C,IAAc,IAC7D/7C,GAAU,aAAYstB,EAAY/wB,EAAOw/C,IAAc,GC7C5D,GAAY51C,KAAKitB,IAqCN,OAZf,SAAiBvzB,EAAOtD,EAAOw/C,GAC7B,IAAI/7C,EAAkB,MAATH,EAAgB,EAAIA,EAAMG,OACvC,IAAKA,EACH,OAAQ,EAEV,IAAID,EAAqB,MAAbg8C,EAAoB,EAAI,OAAA5F,EAAA,GAAU4F,GAI9C,OAHIh8C,EAAQ,IACVA,EAAQ,GAAUC,EAASD,EAAO,IAE7B,aAAYF,EAAOtD,EAAOwD,ICjBpB,OALf,SAAiBF,GAEf,OADsB,MAATA,EAAgB,EAAIA,EAAMG,QACvB,aAAUH,EAAO,GAAI,GAAK,I,qCCVxC,GAAYsG,KAAKkzC,IAiEN,OArDf,SAA0BiD,EAAQx8C,EAAUy7C,GAS1C,IARA,IAAIgB,EAAWhB,EAAa,KAAoB,IAC5Cv7C,EAASs8C,EAAO,GAAGt8C,OACnBw8C,EAAYF,EAAOt8C,OACnBy8C,EAAWD,EACXE,EAASn9C,MAAMi9C,GACfG,EAAYC,IACZp9C,EAAS,GAENi9C,KAAY,CACjB,IAAI58C,EAAQy8C,EAAOG,GACfA,GAAY38C,IACdD,EAAQ,aAASA,EAAO,aAAUC,KAEpC68C,EAAY,GAAU98C,EAAMG,OAAQ28C,GACpCD,EAAOD,IAAalB,IAAez7C,GAAaE,GAAU,KAAOH,EAAMG,QAAU,KAC7E,IAAI,KAASy8C,GAAY58C,QACzBU,EAENV,EAAQy8C,EAAO,GAEf,IAAIv8C,GAAS,EACT88C,EAAOH,EAAO,GAElBI,EACA,OAAS/8C,EAAQC,GAAUR,EAAOQ,OAAS28C,GAAW,CACpD,IAAIpgD,EAAQsD,EAAME,GACd0vB,EAAW3vB,EAAWA,EAASvD,GAASA,EAG5C,GADAA,EAASg/C,GAAwB,IAAVh/C,EAAeA,EAAQ,IACxCsgD,EACE,aAASA,EAAMptB,GACf8sB,EAAS/8C,EAAQiwB,EAAU8rB,IAC5B,CAEL,IADAkB,EAAWD,IACFC,GAAU,CACjB,IAAI/uC,EAAQgvC,EAAOD,GACnB,KAAM/uC,EACE,aAASA,EAAO+hB,GAChB8sB,EAASD,EAAOG,GAAWhtB,EAAU8rB,IAE3C,SAASuB,EAGTD,GACFA,EAAKh8C,KAAK4uB,GAEZjwB,EAAOqB,KAAKtE,IAGhB,OAAOiD,GCzDM,OAJf,SAA6BjD,GAC3B,OAAO,OAAA++C,GAAA,GAAkB/+C,GAASA,EAAQ,ICmB7B,GAPI,cAAS,SAAS+/C,GACnC,IAAIzmC,EAAS,aAASymC,EAAQ,IAC9B,OAAQzmC,EAAO7V,QAAU6V,EAAO,KAAOymC,EAAO,GAC1C,GAAiBzmC,GACjB,MCkBS,GAdM,cAAS,SAASymC,GACrC,IAAIx8C,EAAW,GAAKw8C,GAChBzmC,EAAS,aAASymC,EAAQ,IAO9B,OALIx8C,IAAa,GAAK+V,GACpB/V,OAAWS,EAEXsV,EAAOtM,MAEDsM,EAAO7V,QAAU6V,EAAO,KAAOymC,EAAO,GAC1C,GAAiBzmC,EAAQ,aAAa/V,EAAU,IAChD,MCDS,GAbQ,cAAS,SAASw8C,GACvC,IAAIf,EAAa,GAAKe,GAClBzmC,EAAS,aAASymC,EAAQ,IAM9B,OAJAf,EAAkC,mBAAdA,EAA2BA,OAAah7C,IAE1DsV,EAAOtM,MAEDsM,EAAO7V,QAAU6V,EAAO,KAAOymC,EAAO,GAC1C,GAAiBzmC,OAAQtV,EAAWg7C,GACpC,MCjBS,OAPf,SAAsBv+C,EAAQ+kB,EAAQjiB,EAAUi9C,GAI9C,OAHA,aAAW//C,GAAQ,SAAST,EAAOM,EAAKG,GACtC+kB,EAAOg7B,EAAaj9C,EAASvD,GAAQM,EAAKG,MAErC+/C,GCDM,OANf,SAAwBh7B,EAAQq5B,GAC9B,OAAO,SAASp+C,EAAQ8C,GACtB,OAAO,GAAa9C,EAAQ+kB,EAAQq5B,EAAWt7C,GAAW,MCA1DipC,GAPc/sC,OAAOkB,UAOc8E,SA6BxB,GATF,IAAe,SAASxC,EAAQjD,EAAOM,GACrC,MAATN,GACyB,mBAAlBA,EAAMyF,WACfzF,EAAQwsC,GAAqBttC,KAAKc,IAGpCiD,EAAOjD,GAASM,IACf,OAAAmgD,GAAA,GAAS5G,EAAA,ICnCR,GAAcp6C,OAAOkB,UAGrB,GAAiB,GAAYC,eAO7B,GAAuB,GAAY6E,SAyCxB,GAbA,IAAe,SAASxC,EAAQjD,EAAOM,GACvC,MAATN,GACyB,mBAAlBA,EAAMyF,WACfzF,EAAQ,GAAqBd,KAAKc,IAGhC,GAAed,KAAK+D,EAAQjD,GAC9BiD,EAAOjD,GAAOsE,KAAKhE,GAEnB2C,EAAOjD,GAAS,CAACM,KAElB,M,kBCtCY,OAJf,SAAgBG,EAAQuwC,GACtB,OAAOA,EAAKvtC,OAAS,EAAIhD,EAAS,aAAQA,EAAQ,aAAUuwC,EAAM,GAAI,KCWzD,OAPf,SAAoBvwC,EAAQuwC,EAAM/5B,GAChC+5B,EAAO,aAASA,EAAMvwC,GAEtB,IAAI0C,EAAiB,OADrB1C,EAAS,GAAOA,EAAQuwC,IACIvwC,EAASA,EAAO,aAAM,GAAKuwC,KACvD,OAAe,MAAR7tC,OAAea,EAAY,YAAMb,EAAM1C,EAAQwW,ICGzC,GAFF,aAAS,ICmBP,GAXC,cAAS,SAAS8Z,EAAYigB,EAAM/5B,GAClD,IAAIzT,GAAS,EACTm1C,EAAwB,mBAAR3H,EAChB/tC,EAAS,OAAAwB,GAAA,GAAYssB,GAAc/tB,MAAM+tB,EAAWttB,QAAU,GAKlE,OAHA,aAASstB,GAAY,SAAS/wB,GAC5BiD,IAASO,GAASm1C,EAAS,YAAM3H,EAAMhxC,EAAOiX,GAAQ,GAAWjX,EAAOgxC,EAAM/5B,MAEzEhU,K,kBCrBM,OAJf,SAA2BjD,GACzB,OAAO,OAAA+7C,EAAA,GAAa/7C,IAVD,wBAUW,aAAWA,I,SCRvC0gD,GAAoB,MAAY,KAASC,cAqB9B,GAFKD,GAAoB,aAAUA,IAAqB,G,mBCPxD,OAJf,SAAoB1gD,GAClB,OAAO,OAAA+7C,EAAA,GAAa/7C,IAVR,iBAUkB,aAAWA,ICTvC4gD,GAAa,MAAY,KAASC,OAqBvB,GAFFD,GAAa,aAAUA,IAAc,G,SCAnC,OAJf,SAAmB5gD,GACjB,OAAO,OAAA+7C,EAAA,GAAa/7C,IAA6B,IAAnBA,EAAMgG,WAAmB,OAAA0D,GAAA,GAAc1J,I,6BCmBxD,OANf,SAAqBA,EAAOuwC,EAAO8F,GAEjC,IAAIpzC,GADJozC,EAAkC,mBAAdA,EAA2BA,OAAaryC,GAClCqyC,EAAWr2C,EAAOuwC,QAASvsC,EACrD,YAAkBA,IAAXf,EAAuB,aAAYjD,EAAOuwC,OAAOvsC,EAAWqyC,KAAgBpzC,G,oECFtE,OAJf,SAAiBxC,EAAQolB,GACvB,OAAOplB,IAAWolB,GAAU,aAAYplB,EAAQolB,EAAQ,aAAaA,KCQxD,OALf,SAAqBplB,EAAQolB,EAAQwwB,GAEnC,OADAA,EAAkC,mBAAdA,EAA2BA,OAAaryC,EACrD,aAAYvD,EAAQolB,EAAQ,aAAaA,GAASwwB,I,uCCxB5C,GAFE,KAAavwC,GAAA,EAAag7C,GAAA,EC4B5B,OAPf,SAAkB9gD,GAChB,GAAI,GAAWA,GACb,MAAM,IAAI8E,MA9BQ,mEAgCpB,OAAO,aAAa9E,I,8ECTP,OAJf,SAAmBA,GACjB,OAAO,OAAA+7C,EAAA,GAAa/7C,IApBL,oBAoBe,aAAOA,ICGxB,OAJf,SAAmBA,GACjB,OAAO,OAAA+7C,EAAA,GAAa/7C,IApBL,oBAoBe,aAAWA,IC4B5B,OAJf,SAAkBmD,GAChB,OAAO,aAA4B,mBAARA,EAAqBA,EAAO,aAAUA,EA7C7C,KCAlB49C,GAHa/9C,MAAMrC,UAGKmQ,KAqBb,OAJf,SAAcxN,EAAO09C,GACnB,OAAgB,MAAT19C,EAAgB,GAAKy9C,GAAW7hD,KAAKoE,EAAO09C,I,SCKtC,GAJC,cAAiB,SAAS/9C,EAAQg+C,EAAMz9C,GACtD,OAAOP,GAAUO,EAAQ,IAAM,IAAMy9C,EAAK91C,iBCW7B,GAJH,cAAiB,SAASlI,EAAQjD,EAAOM,GACnD,aAAgB2C,EAAQ3C,EAAKN,M,UCZhB,OAVf,SAA2BsD,EAAOtD,EAAOw/C,GAEvC,IADA,IAAIh8C,EAAQg8C,EAAY,EACjBh8C,KACL,GAAIF,EAAME,KAAWxD,EACnB,OAAOwD,EAGX,OAAOA,GCXL,GAAYoG,KAAKitB,IACjB,GAAYjtB,KAAKkzC,IAsCN,OAff,SAAqBx5C,EAAOtD,EAAOw/C,GACjC,IAAI/7C,EAAkB,MAATH,EAAgB,EAAIA,EAAMG,OACvC,IAAKA,EACH,OAAQ,EAEV,IAAID,EAAQC,EAKZ,YAJkBO,IAAdw7C,IAEFh8C,GADAA,EAAQ,OAAAo2C,EAAA,GAAU4F,IACF,EAAI,GAAU/7C,EAASD,EAAO,GAAK,GAAUA,EAAOC,EAAS,IAExEzD,GAAUA,EACb,GAAkBsD,EAAOtD,EAAOwD,GAChC,aAAcF,EAAO,KAAWE,GAAO,I,oBC7B9B,OAJf,SAAgBxD,EAAOuwC,GACrB,OAAOvwC,EAAQuwC,GCkBF,GAFN,GAA0B,ICGpB,GAJL,IAA0B,SAASvwC,EAAOuwC,GAClD,OAAOvwC,GAASuwC,KCSH,OAVf,SAAiB9vC,EAAQ8C,GACvB,IAAIN,EAAS,GAMb,OALAM,EAAW,aAAaA,EAAU,GAElC,aAAW9C,GAAQ,SAAST,EAAOM,EAAKG,GACtC,aAAgBwC,EAAQM,EAASvD,EAAOM,EAAKG,GAAST,MAEjDiD,GCUM,OAVf,SAAmBxC,EAAQ8C,GACzB,IAAIN,EAAS,GAMb,OALAM,EAAW,aAAaA,EAAU,GAElC,aAAW9C,GAAQ,SAAST,EAAOM,EAAKG,GACtC,aAAgBwC,EAAQ3C,EAAKiD,EAASvD,EAAOM,EAAKG,OAE7CwC,G,UCMM,OAJf,SAAiB4iB,GACf,OAAO,aAAY,aAAUA,EAtCT,K,UCuCP,OAJf,SAAyBmrB,EAAMkQ,GAC7B,OAAO,aAAoBlQ,EAAM,aAAUkQ,EApCvB,KC2BP,OAnBf,SAAsB59C,EAAOC,EAAUy7C,GAIrC,IAHA,IAAIx7C,GAAS,EACTC,EAASH,EAAMG,SAEVD,EAAQC,GAAQ,CACvB,IAAIzD,EAAQsD,EAAME,GACdsjC,EAAUvjC,EAASvD,GAEvB,GAAe,MAAX8mC,SAAiC9iC,IAAbkvB,EACf4T,GAAYA,IAAY,OAAA2S,EAAA,GAAS3S,GAClCkY,EAAWlY,EAAS5T,IAE1B,IAAIA,EAAW4T,EACX7jC,EAASjD,EAGjB,OAAOiD,GCAM,OANf,SAAaK,GACX,OAAQA,GAASA,EAAMG,OACnB,GAAaH,EAAOu2C,EAAA,EAAU,SAC9B71C,GCQS,OANf,SAAeV,EAAOC,GACpB,OAAQD,GAASA,EAAMG,OACnB,GAAaH,EAAO,aAAaC,EAAU,GAAI,SAC/CS,GCPS,OAdf,SAAiBV,EAAOC,GAKtB,IAJA,IAAIN,EACAO,GAAS,EACTC,EAASH,EAAMG,SAEVD,EAAQC,GAAQ,CACvB,IAAIqjC,EAAUvjC,EAASD,EAAME,SACbQ,IAAZ8iC,IACF7jC,OAAoBe,IAAXf,EAAuB6jC,EAAW7jC,EAAS6jC,GAGxD,OAAO7jC,GCDM,OALf,SAAkBK,EAAOC,GACvB,IAAIE,EAAkB,MAATH,EAAgB,EAAIA,EAAMG,OACvC,OAAOA,EAAU,GAAQH,EAAOC,GAAYE,EAbpC,KCkBK,OAJf,SAAcH,GACZ,OAAO,GAASA,EAAOu2C,EAAA,ICYV,OAJf,SAAgBv2C,EAAOC,GACrB,OAAO,GAASD,EAAO,aAAaC,EAAU,K,8BCMjC,GANF,cAAS,SAASytC,EAAM/5B,GACnC,OAAO,SAASxW,GACd,OAAO,GAAWA,EAAQuwC,EAAM/5B,OCGrB,GANA,cAAS,SAASxW,EAAQwW,GACvC,OAAO,SAAS+5B,GACd,OAAO,GAAWvwC,EAAQuwC,EAAM/5B,OCArB,OANf,SAAa3T,GACX,OAAQA,GAASA,EAAMG,OACnB,GAAaH,EAAOu2C,EAAA,EAAU,SAC9B71C,GCQS,OANf,SAAeV,EAAOC,GACpB,OAAQD,GAASA,EAAMG,OACnB,GAAaH,EAAO,aAAaC,EAAU,GAAI,SAC/CS,GC2CS,OA7Bf,SAAevD,EAAQolB,EAAQpkB,GAC7B,IAAIgsB,EAAQ,OAAAvc,GAAA,GAAK2U,GACbq4B,EAAc,GAAcr4B,EAAQ4H,GAEpC0zB,IAAU,OAAA58C,EAAA,GAAS9C,IAAY,UAAWA,IAAcA,EAAQ0/C,OAChExI,EAAS,OAAA7yC,GAAA,GAAWrF,GAqBxB,OAnBA,YAAUy9C,GAAa,SAASG,GAC9B,IAAIl7C,EAAO0iB,EAAOw4B,GAClB59C,EAAO49C,GAAcl7C,EACjBw1C,IACFl4C,EAAOE,UAAU09C,GAAc,WAC7B,IAAI3C,EAAW55C,KAAK65C,UACpB,GAAIwF,GAASzF,EAAU,CACrB,IAAIz4C,EAASxC,EAAOqB,KAAKm5C,aACrBmG,EAAUn+C,EAAOi4C,YAAc,YAAUp5C,KAAKo5C,aAIlD,OAFAkG,EAAQ98C,KAAK,CAAE,KAAQnB,EAAM,KAAQoF,UAAW,QAAW9H,IAC3DwC,EAAO04C,UAAYD,EACZz4C,EAET,OAAOE,EAAKmC,MAAM7E,EAAQ,aAAU,CAACqB,KAAK9B,SAAUuI,iBAKnD9H,GCjDM,GAJA,GAAoB,SAAS4gD,EAAYC,GACtD,OAAOD,EAAaC,IACnB,GCoBY,OAhBf,SAAgBl9C,GACd,GAAwB,mBAAbA,EACT,MAAM,IAAI8c,UAxBQ,uBA0BpB,OAAO,WACL,IAAIjK,EAAO1O,UACX,OAAQ0O,EAAKxT,QACX,KAAK,EAAG,OAAQW,EAAUlF,KAAK4C,MAC/B,KAAK,EAAG,OAAQsC,EAAUlF,KAAK4C,KAAMmV,EAAK,IAC1C,KAAK,EAAG,OAAQ7S,EAAUlF,KAAK4C,KAAMmV,EAAK,GAAIA,EAAK,IACnD,KAAK,EAAG,OAAQ7S,EAAUlF,KAAK4C,KAAMmV,EAAK,GAAIA,EAAK,GAAIA,EAAK,IAE9D,OAAQ7S,EAAUkB,MAAMxD,KAAMmV,K,SClBnB,OAVf,SAAyBjM,GAIvB,IAHA,IAAIqZ,EACAphB,EAAS,KAEJohB,EAAOrZ,EAASyE,QAAQlD,MAC/BtJ,EAAOqB,KAAK+f,EAAKrkB,OAEnB,OAAOiD,G,kBCELs+C,GAAc,KAAS,KAAOv2C,cAAWhH,EAyC9B,OAhBf,SAAiBhE,GACf,IAAKA,EACH,MAAO,GAET,GAAI,OAAAyE,GAAA,GAAYzE,GACd,OAAO,OAAAsvC,GAAA,GAAStvC,GAAS,aAAcA,GAAS,YAAUA,GAE5D,GAAIuhD,IAAevhD,EAAMuhD,IACvB,OAAO,GAAgBvhD,EAAMuhD,OAE/B,IAAI7tC,EAAM,aAAO1T,GAGjB,OA1CW,gBAwCA0T,EAAgB,KAvChB,gBAuC8BA,EAAgB,KAAa,IAE1D1T,ICpBC,OAVf,gBAC0BgE,IAApBlC,KAAK+5C,aACP/5C,KAAK+5C,WAAa,GAAQ/5C,KAAK9B,UAEjC,IAAIuM,EAAOzK,KAAK85C,WAAa95C,KAAK+5C,WAAWp4C,OAG7C,MAAO,CAAE,KAAQ8I,EAAM,MAFXA,OAAOvI,EAAYlC,KAAK+5C,WAAW/5C,KAAK85C,e,SCVvC,OATf,SAAiBt4C,EAAO9C,GACtB,IAAIiD,EAASH,EAAMG,OACnB,GAAKA,EAIL,OADAjD,GAAKA,EAAI,EAAIiD,EAAS,EACf,aAAQjD,EAAGiD,GAAUH,EAAM9C,QAAKwD,GCY1B,OAJf,SAAaV,EAAO9C,GAClB,OAAQ8C,GAASA,EAAMG,OAAU,GAAQH,EAAO,OAAAs2C,EAAA,GAAUp5C,SAAMwD,GCMnD,OAPf,SAAgBxD,GAEd,OADAA,EAAI,OAAAo5C,EAAA,GAAUp5C,GACP,cAAS,SAASyW,GACvB,OAAO,GAAQA,EAAMzW,OCRV,OANf,SAAmBC,EAAQuwC,GAGzB,OAFAA,EAAO,aAASA,EAAMvwC,GAEL,OADjBA,EAAS,GAAOA,EAAQuwC,YACQvwC,EAAO,aAAM,GAAKuwC,MCDrC,OAJf,SAAyBhxC,GACvB,OAAO,OAAA0J,GAAA,GAAc1J,QAASgE,EAAYhE,G,UC4C7B,GAtBJ,cAAS,SAASS,EAAQw9C,GACnC,IAAIh7C,EAAS,GACb,GAAc,MAAVxC,EACF,OAAOwC,EAET,IAAI40C,GAAS,EACboG,EAAQ,aAASA,GAAO,SAASjN,GAG/B,OAFAA,EAAO,aAASA,EAAMvwC,GACtBo3C,IAAWA,EAAS7G,EAAKvtC,OAAS,GAC3ButC,KAET,aAAWvwC,EAAQ,aAAaA,GAASwC,GACrC40C,IACF50C,EAAS,aAAUA,EAAQ,EAAwD,KAGrF,IADA,IAAIQ,EAASw6C,EAAMx6C,OACZA,KACL,GAAUR,EAAQg7C,EAAMx6C,IAE1B,OAAOR,K,UCjBM,OAbf,SAAgBxC,EAAQ2D,GACtB,GAAc,MAAV3D,EACF,MAAO,GAET,IAAIgtB,EAAQ,aAAS,aAAahtB,IAAS,SAAS6jB,GAClD,MAAO,CAACA,MAGV,OADAlgB,EAAY,aAAaA,GAClB,aAAW3D,EAAQgtB,GAAO,SAASztB,EAAOgxC,GAC/C,OAAO5sC,EAAUpE,EAAOgxC,EAAK,QCJlB,OAJf,SAAgBvwC,EAAQ2D,GACtB,OAAO,GAAO3D,EAAQ,GAAO,aAAa2D,M,oBCqB7B,OAdf,SAAiB2sB,EAAYywB,EAAWC,EAAQ1D,GAC9C,OAAkB,MAAdhtB,EACK,IAEJ,OAAAhuB,EAAA,GAAQy+C,KACXA,EAAyB,MAAbA,EAAoB,GAAK,CAACA,IAExCC,EAAS1D,OAAQ/5C,EAAYy9C,EACxB,OAAA1+C,EAAA,GAAQ0+C,KACXA,EAAmB,MAAVA,EAAiB,GAAK,CAACA,IAE3B,aAAY1wB,EAAYywB,EAAWC,KCjB7B,OAZf,SAAoBC,GAClB,OAAO,cAAS,SAASF,GAEvB,OADAA,EAAY,aAASA,EAAW,aAAU,OACnC,cAAS,SAASvqC,GACvB,IAAIq5B,EAAUxuC,KACd,OAAO4/C,EAAUF,GAAW,SAASj+C,GACnC,OAAO,YAAMA,EAAU+sC,EAASr5B,aCGzB,GAFJ,GAAW,MCRP,GAFA,KCDX,GAAYrN,KAAKkzC,IAkDN,GAjBA,IAAS,SAAS35C,EAAMw+C,GAKrC,IAAIC,GAJJD,EAAmC,GAArBA,EAAWl+C,QAAe,OAAAV,EAAA,GAAQ4+C,EAAW,IACvD,aAASA,EAAW,GAAI,aAAU,OAClC,aAAS,aAAYA,EAAY,GAAI,aAAU,QAEtBl+C,OAC7B,OAAO,cAAS,SAASwT,GAIvB,IAHA,IAAIzT,GAAS,EACTC,EAAS,GAAUwT,EAAKxT,OAAQm+C,KAE3Bp+C,EAAQC,GACfwT,EAAKzT,GAASm+C,EAAWn+C,GAAOtE,KAAK4C,KAAMmV,EAAKzT,IAElD,OAAO,YAAML,EAAMrB,KAAMmV,SCvBd,GAFC,GAAW,I,UCKZ,GAFA,GAAW,M,wCCOtB4qC,GAAU,cAAS,SAAS1+C,EAAM+2C,GACpC,IAAIC,EAAU,GAAeD,EAAU,GAAU2H,KACjD,OAAO,GAAW1+C,EArCI,QAqCqBa,EAAWk2C,EAAUC,MAIlE0H,GAAQ9G,YAAc,GAEP,UCTX+G,GAAe,cAAS,SAAS3+C,EAAM+2C,GACzC,IAAIC,EAAU,GAAeD,EAAU,GAAU4H,KACjD,OAAO,GAAW3+C,EApCU,QAoCqBa,EAAWk2C,EAAUC,MAIxE2H,GAAa/G,YAAc,GAEZ,UCNA,GAJC,cAAiB,SAAS93C,EAAQjD,EAAOM,GACvD2C,EAAO3C,EAAM,EAAI,GAAGgE,KAAKtE,MACxB,WAAa,MAAO,CAAC,GAAI,O,UCOb,OApBf,SAAsBA,GAIpB,IAHA,IAAIiD,EACAhB,EAASH,KAENG,aAAkB,GAAY,CACnC,IAAIsH,EAAQ,EAAatH,GACzBsH,EAAMqyC,UAAY,EAClBryC,EAAMsyC,gBAAa73C,EACff,EACF8+C,EAAS9G,YAAc1xC,EAEvBtG,EAASsG,EAEX,IAAIw4C,EAAWx4C,EACftH,EAASA,EAAOg5C,YAGlB,OADA8G,EAAS9G,YAAcj7C,EAChBiD,G,UCfM,OANf,SAAoBxC,GAClB,OAAO,SAASuwC,GACd,OAAiB,MAAVvwC,OAAiBuD,EAAY,aAAQvD,EAAQuwC,KCHzC,OAZf,SAAyB1tC,EAAOtD,EAAOw/C,EAAWR,GAIhD,IAHA,IAAIx7C,EAAQg8C,EAAY,EACpB/7C,EAASH,EAAMG,SAEVD,EAAQC,GACf,GAAIu7C,EAAW17C,EAAME,GAAQxD,GAC3B,OAAOwD,EAGX,OAAQ,GCTN2F,GAHanG,MAAMrC,UAGCwI,OAwCT,OA3Bf,SAAqB7F,EAAOikB,EAAQhkB,EAAUy7C,GAC5C,IAAIz5C,EAAUy5C,EAAa,GAAkB,KACzCx7C,GAAS,EACTC,EAAS8jB,EAAO9jB,OAChB68C,EAAOh9C,EAQX,IANIA,IAAUikB,IACZA,EAAS,YAAUA,IAEjBhkB,IACF+8C,EAAO,aAASh9C,EAAO,aAAUC,OAE1BC,EAAQC,GAKf,IAJA,IAAI+7C,EAAY,EACZx/C,EAAQunB,EAAO/jB,GACf0vB,EAAW3vB,EAAWA,EAASvD,GAASA,GAEpCw/C,EAAYj6C,EAAQ+6C,EAAMptB,EAAUssB,EAAWR,KAAgB,GACjEsB,IAASh9C,GACX6F,GAAOjK,KAAKohD,EAAMd,EAAW,GAE/Br2C,GAAOjK,KAAKoE,EAAOk8C,EAAW,GAGlC,OAAOl8C,GCnBM,OANf,SAAiBA,EAAOikB,GACtB,OAAQjkB,GAASA,EAAMG,QAAU8jB,GAAUA,EAAO9jB,OAC9C,GAAYH,EAAOikB,GACnBjkB,GCGS,GAFJ,aAAS,ICML,OANf,SAAmBA,EAAOikB,EAAQhkB,GAChC,OAAQD,GAASA,EAAMG,QAAU8jB,GAAUA,EAAO9jB,OAC9C,GAAYH,EAAOikB,EAAQ,aAAahkB,EAAU,IAClDD,GCES,OANf,SAAqBA,EAAOikB,EAAQy3B,GAClC,OAAQ17C,GAASA,EAAMG,QAAU8jB,GAAUA,EAAO9jB,OAC9C,GAAYH,EAAOikB,OAAQvjB,EAAWg7C,GACtC17C,GCrBF,GAHaN,MAAMrC,UAGCwI,OA6BT,OAlBf,SAAoB7F,EAAOy5C,GAIzB,IAHA,IAAIt5C,EAASH,EAAQy5C,EAAQt5C,OAAS,EAClC00C,EAAY10C,EAAS,EAElBA,KAAU,CACf,IAAID,EAAQu5C,EAAQt5C,GACpB,GAAIA,GAAU00C,GAAa30C,IAAUu+C,EAAU,CAC7C,IAAIA,EAAWv+C,EACX,aAAQA,GACV,GAAOtE,KAAKoE,EAAOE,EAAO,GAE1B,GAAUF,EAAOE,IAIvB,OAAOF,G,UCSM,GAXF,cAAS,SAASA,EAAOy5C,GACpC,IAAIt5C,EAAkB,MAATH,EAAgB,EAAIA,EAAMG,OACnCR,EAAS,GAAOK,EAAOy5C,GAM3B,OAJA,GAAWz5C,EAAO,aAASy5C,GAAS,SAASv5C,GAC3C,OAAO,aAAQA,EAAOC,IAAWD,EAAQA,KACxC0F,KAAK,OAEDjG,KCtCL++C,GAAcp4C,KAAKq4C,MACnBC,GAAet4C,KAAKC,OAeT,OAJf,SAAoBs4C,EAAOC,GACzB,OAAOD,EAAQH,GAAYE,MAAkBE,EAAQD,EAAQ,K,SCT3DE,GAAiB1tB,WAGjB,GAAY/qB,KAAKkzC,IACjB,GAAelzC,KAAKC,OAwET,OAvCf,SAAgBs4C,EAAOC,EAAOE,GA2B5B,GA1BIA,GAA+B,kBAAZA,GAAyB,aAAeH,EAAOC,EAAOE,KAC3EF,EAAQE,OAAWt+C,QAEJA,IAAbs+C,IACkB,kBAATF,GACTE,EAAWF,EACXA,OAAQp+C,GAEe,kBAATm+C,IACdG,EAAWH,EACXA,OAAQn+C,SAGEA,IAAVm+C,QAAiCn+C,IAAVo+C,GACzBD,EAAQ,EACRC,EAAQ,IAGRD,EAAQ,OAAAI,GAAA,GAASJ,QACHn+C,IAAVo+C,GACFA,EAAQD,EACRA,EAAQ,GAERC,EAAQ,OAAAG,GAAA,GAASH,IAGjBD,EAAQC,EAAO,CACjB,IAAIzoC,EAAOwoC,EACXA,EAAQC,EACRA,EAAQzoC,EAEV,GAAI2oC,GAAYH,EAAQ,GAAKC,EAAQ,EAAG,CACtC,IAAII,EAAO,KACX,OAAO,GAAUL,EAASK,GAAQJ,EAAQD,EAAQE,GAAe,QAAUG,EAAO,IAAI/+C,OAAS,KAAO2+C,GAExG,OAAO,GAAWD,EAAOC,IC7EvB,GAAax4C,KAAK0tB,KAClB,GAAY1tB,KAAKitB,IAyBN,OAZf,SAAmBzzB,EAAO6F,EAAKmwB,EAAMgmB,GAKnC,IAJA,IAAI57C,GAAS,EACTC,EAAS,GAAU,IAAYwF,EAAM7F,IAAUg2B,GAAQ,IAAK,GAC5Dn2B,EAASD,MAAMS,GAEZA,KACLR,EAAOm8C,EAAY37C,IAAWD,GAASJ,EACvCA,GAASg2B,EAEX,OAAOn2B,GCKM,OAlBf,SAAqBm8C,GACnB,OAAO,SAASh8C,EAAO6F,EAAKmwB,GAa1B,OAZIA,GAAuB,iBAARA,GAAoB,aAAeh2B,EAAO6F,EAAKmwB,KAChEnwB,EAAMmwB,OAAOp1B,GAGfZ,EAAQ,OAAAm/C,GAAA,GAASn/C,QACLY,IAARiF,GACFA,EAAM7F,EACNA,EAAQ,GAER6F,EAAM,OAAAs5C,GAAA,GAASt5C,GAEjBmwB,OAAgBp1B,IAATo1B,EAAsBh2B,EAAQ6F,EAAM,GAAK,EAAK,OAAAs5C,GAAA,GAASnpB,GACvD,GAAUh2B,EAAO6F,EAAKmwB,EAAMgmB,KCoBxB,GAFH,KCHG,GAFE,IAAY,GCNd,GAJH,cAAS,SAASj8C,EAAM45C,GAClC,OAAO,GAAW55C,EAzBE,SAyBqBa,OAAWA,OAAWA,EAAW+4C,M,UCP7D,OATf,SAAoBhsB,EAAYxtB,EAAUi9C,EAAaiC,EAAW/C,GAMhE,OALAA,EAAS3uB,GAAY,SAAS/wB,EAAOwD,EAAOutB,GAC1CyvB,EAAciC,GACTA,GAAY,EAAOziD,GACpBuD,EAASi9C,EAAaxgD,EAAOwD,EAAOutB,MAEnCyvB,GC+BM,OAPf,SAAgBzvB,EAAYxtB,EAAUi9C,GACpC,IAAIr9C,EAAO,OAAAJ,EAAA,GAAQguB,GAAc,KAAc,GAC3C0xB,EAAYl6C,UAAU9E,OAAS,EAEnC,OAAON,EAAK4tB,EAAY,aAAaxtB,EAAU,GAAIi9C,EAAaiC,EAAW,OCxB9D,OAXf,SAA0Bn/C,EAAOC,EAAUi9C,EAAaiC,GACtD,IAAIh/C,EAAkB,MAATH,EAAgB,EAAIA,EAAMG,OAIvC,IAHIg/C,GAAah/C,IACf+8C,EAAcl9C,IAAQG,IAEjBA,KACL+8C,EAAcj9C,EAASi9C,EAAal9C,EAAMG,GAASA,EAAQH,GAE7D,OAAOk9C,GCeM,OAPf,SAAqBzvB,EAAYxtB,EAAUi9C,GACzC,IAAIr9C,EAAO,OAAAJ,EAAA,GAAQguB,GAAc,GAAmB,GAChD0xB,EAAYl6C,UAAU9E,OAAS,EAEnC,OAAON,EAAK4tB,EAAY,aAAaxtB,EAAU,GAAIi9C,EAAaiC,EAAW,KCa9D,OALf,SAAgB1xB,EAAY3sB,GAE1B,OADW,OAAArB,EAAA,GAAQguB,GAAc,KAAc,IACnCA,EAAY,GAAO,aAAa3sB,EAAW,MCU1C,OArBf,SAAgBd,EAAOc,GACrB,IAAInB,EAAS,GACb,IAAMK,IAASA,EAAMG,OACnB,OAAOR,EAET,IAAIO,GAAS,EACTu5C,EAAU,GACVt5C,EAASH,EAAMG,OAGnB,IADAW,EAAY,aAAaA,EAAW,KAC3BZ,EAAQC,GAAQ,CACvB,IAAIzD,EAAQsD,EAAME,GACdY,EAAUpE,EAAOwD,EAAOF,KAC1BL,EAAOqB,KAAKtE,GACZ+8C,EAAQz4C,KAAKd,IAIjB,OADA,GAAWF,EAAOy5C,GACX95C,G,UCrBM,OAPf,WACE,IAAIgU,EAAO1O,UACPub,EAAS,aAAS7M,EAAK,IAE3B,OAAOA,EAAKxT,OAAS,EAAIqgB,EAASA,EAAOha,QAAQmN,EAAK,GAAIA,EAAK,KCclD,OARf,SAAc9T,EAAMC,GAClB,GAAmB,mBAARD,EACT,MAAM,IAAI+d,UA7BQ,uBAgCpB,OADA9d,OAAkBY,IAAVZ,EAAsBA,EAAQ,OAAAw2C,EAAA,GAAUx2C,GACzC,aAASD,EAAMC,ICmBT,OAtBf,SAAgB3C,EAAQuwC,EAAMp1B,GAG5B,IAAIpY,GAAS,EACTC,GAHJutC,EAAO,aAASA,EAAMvwC,IAGJgD,OAOlB,IAJKA,IACHA,EAAS,EACThD,OAASuD,KAEFR,EAAQC,GAAQ,CACvB,IAAIzD,EAAkB,MAAVS,OAAiBuD,EAAYvD,EAAO,aAAMuwC,EAAKxtC,UAC7CQ,IAAVhE,IACFwD,EAAQC,EACRzD,EAAQ4b,GAEVnb,EAAS,OAAAqF,GAAA,GAAW9F,GAASA,EAAMd,KAAKuB,GAAUT,EAEpD,OAAOS,GChDLiiD,GAHa1/C,MAAMrC,UAGQod,QA6BhB,OAJf,SAAiBza,GACf,OAAgB,MAATA,EAAgBA,EAAQo/C,GAAcxjD,KAAKoE,ICLrC,GAFH,GAAY,SCTT,OALf,SAAqBA,GACnB,IAAIG,EAASH,EAAMG,OACnB,OAAOA,EAASH,EAAM,GAAW,EAAGG,EAAS,SAAMO,GCGtC,OAJf,SAAoB+sB,GAClB,OAAO,GAAY,GAAOA,KCYb,OALf,SAAgBA,GAEd,OADW,OAAAhuB,EAAA,GAAQguB,GAAc,GAAc,IACnCA,ICOC,OAjBf,SAAqBztB,EAAOo7C,GAC1B,IAAIl7C,GAAS,EACTC,EAASH,EAAMG,OACf00C,EAAY10C,EAAS,EAGzB,IADAi7C,OAAgB16C,IAAT06C,EAAqBj7C,EAASi7C,IAC5Bl7C,EAAQk7C,GAAM,CACrB,IAAI8D,EAAO,GAAWh/C,EAAO20C,GACzBn4C,EAAQsD,EAAMk/C,GAElBl/C,EAAMk/C,GAAQl/C,EAAME,GACpBF,EAAME,GAASxD,EAGjB,OADAsD,EAAMG,OAASi7C,EACRp7C,GCRM,OAJf,SAAyBA,EAAO9C,GAC9B,OAAO,GAAY,YAAU8C,GAAQ,aAAU9C,EAAG,EAAG8C,EAAMG,UCI9C,OALf,SAAwBstB,EAAYvwB,GAClC,IAAI8C,EAAQ,GAAOytB,GACnB,OAAO,GAAYztB,EAAO,aAAU9C,EAAG,EAAG8C,EAAMG,UCsBnC,OAVf,SAAoBstB,EAAYvwB,EAAGu9C,GAOjC,OALEv9C,GADGu9C,EAAQ,aAAehtB,EAAYvwB,EAAGu9C,QAAe/5C,IAANxD,GAC9C,EAEA,OAAAo5C,EAAA,GAAUp5C,IAEL,OAAAuC,EAAA,GAAQguB,GAAc,GAAkB,IACvCA,EAAYvwB,I,SCCX,OAJf,SAAaC,EAAQuwC,EAAMhxC,GACzB,OAAiB,MAAVS,EAAiBA,EAAS,aAAQA,EAAQuwC,EAAMhxC,ICA1C,OALf,SAAiBS,EAAQuwC,EAAMhxC,EAAOq2C,GAEpC,OADAA,EAAkC,mBAAdA,EAA2BA,OAAaryC,EAC3C,MAAVvD,EAAiBA,EAAS,aAAQA,EAAQuwC,EAAMhxC,EAAOq2C,ICdjD,OAJf,SAAsB/yC,GACpB,OAAO,GAAY,YAAUA,KCGhB,OAJf,SAAqBytB,GACnB,OAAO,GAAY,GAAOA,KCab,OALf,SAAiBA,GAEf,OADW,OAAAhuB,EAAA,GAAQguB,GAAc,GAAe,IACpCA,I,mBCwBC,OAdf,SAAcA,GACZ,GAAkB,MAAdA,EACF,OAAO,EAET,GAAI,OAAAtsB,GAAA,GAAYssB,GACd,OAAO,OAAAue,GAAA,GAASve,GAAc,aAAWA,GAAcA,EAAWttB,OAEpE,IAAIiQ,EAAM,aAAOqd,GACjB,MAhCW,gBAgCPrd,GA/BO,gBA+BUA,EACZqd,EAAW2tB,KAEb,aAAS3tB,GAAYttB,QCNf,OAhBf,SAAeH,EAAOF,EAAO6F,GAC3B,IAAIxF,EAAkB,MAATH,EAAgB,EAAIA,EAAMG,OACvC,OAAKA,GAGDwF,GAAqB,iBAAPA,GAAmB,aAAe3F,EAAOF,EAAO6F,IAChE7F,EAAQ,EACR6F,EAAMxF,IAGNL,EAAiB,MAATA,EAAgB,EAAI,OAAAw2C,EAAA,GAAUx2C,GACtC6F,OAAcjF,IAARiF,EAAoBxF,EAAS,OAAAm2C,EAAA,GAAU3wC,IAExC,aAAU3F,EAAOF,EAAO6F,IAVtB,ICII,GAJC,cAAiB,SAAShG,EAAQg+C,EAAMz9C,GACtD,OAAOP,GAAUO,EAAQ,IAAM,IAAMy9C,EAAK91C,iBCH7B,OAVf,SAAkB4lB,EAAY3sB,GAC5B,IAAInB,EAMJ,OAJA,aAAS8tB,GAAY,SAAS/wB,EAAOwD,EAAOutB,GAE1C,QADA9tB,EAASmB,EAAUpE,EAAOwD,EAAOutB,SAG1B9tB,GCgCI,OARf,SAAc8tB,EAAY3sB,EAAW25C,GACnC,IAAI56C,EAAO,OAAAJ,EAAA,GAAQguB,GAAc,KAAY,GAI7C,OAHIgtB,GAAS,aAAehtB,EAAY3sB,EAAW25C,KACjD35C,OAAYJ,GAEPb,EAAK4tB,EAAY,aAAa3sB,EAAW,K,uCCjBnC,OAXf,SAAuBd,EAAOtD,GAC5B,IAAIyD,EAAkB,MAATH,EAAgB,EAAIA,EAAMG,OACvC,GAAIA,EAAQ,CACV,IAAID,EAAQ,aAAgBF,EAAOtD,GACnC,GAAIwD,EAAQC,GAAU,OAAAgF,GAAA,GAAGnF,EAAME,GAAQxD,GACrC,OAAOwD,EAGX,OAAQ,GCHK,OAJf,SAAyBF,EAAOtD,GAC9B,OAAO,aAAgBsD,EAAOtD,GAAO,I,UCWxB,OAJf,SAA2BsD,EAAOtD,EAAOuD,GACvC,OAAO,aAAkBD,EAAOtD,EAAO,aAAauD,EAAU,IAAI,ICCrD,OAXf,SAA2BD,EAAOtD,GAEhC,GADsB,MAATsD,EAAgB,EAAIA,EAAMG,OAC3B,CACV,IAAID,EAAQ,aAAgBF,EAAOtD,GAAO,GAAQ,EAClD,GAAI,OAAAyI,GAAA,GAAGnF,EAAME,GAAQxD,GACnB,OAAOwD,EAGX,OAAQ,GCEK,OAlBf,SAAwBF,EAAOC,GAM7B,IALA,IAAIC,GAAS,EACTC,EAASH,EAAMG,OACfy5C,EAAW,EACXj6C,EAAS,KAEJO,EAAQC,GAAQ,CACvB,IAAIzD,EAAQsD,EAAME,GACd0vB,EAAW3vB,EAAWA,EAASvD,GAASA,EAE5C,IAAKwD,IAAU,OAAAiF,GAAA,GAAGyqB,EAAUotB,GAAO,CACjC,IAAIA,EAAOptB,EACXjwB,EAAOi6C,KAAwB,IAAVl9C,EAAc,EAAIA,GAG3C,OAAOiD,GCHM,OANf,SAAoBK,GAClB,OAAQA,GAASA,EAAMG,OACnB,GAAeH,GACf,ICKS,OANf,SAAsBA,EAAOC,GAC3B,OAAQD,GAASA,EAAMG,OACnB,GAAeH,EAAO,aAAaC,EAAU,IAC7C,I,mBCZF,GAAYqG,KAAKitB,IAoDN,OAhBf,SAAgB1zB,EAAMC,GACpB,GAAmB,mBAARD,EACT,MAAM,IAAI+d,UAzCQ,uBA4CpB,OADA9d,EAAiB,MAATA,EAAgB,EAAI,GAAU,OAAAw2C,EAAA,GAAUx2C,GAAQ,GACjD,cAAS,SAAS6T,GACvB,IAAI3T,EAAQ2T,EAAK7T,GACbu/C,EAAY,aAAU1rC,EAAM,EAAG7T,GAKnC,OAHIE,GACF,aAAUq/C,EAAWr/C,GAEhB,YAAMH,EAAMrB,KAAM6gD,O,6BCpCd,OAJf,WACE,MAAO,ICFM,OAJf,WACE,MAAO,ICGM,OAJf,WACE,OAAO,GCOM,GAJA,GAAoB,SAASC,EAASC,GACnD,OAAOD,EAAUC,IAChB,GCIY,OANf,SAAav/C,GACX,OAAQA,GAASA,EAAMG,OACnB,GAAQH,EAAOu2C,EAAA,GACf,GCYS,OANf,SAAev2C,EAAOC,GACpB,OAAQD,GAASA,EAAMG,OACnB,GAAQH,EAAO,aAAaC,EAAU,IACtC,GCRS,OALf,SAAcD,GACZ,IAAIG,EAAkB,MAATH,EAAgB,EAAIA,EAAMG,OACvC,OAAOA,EAAS,aAAUH,EAAO,EAAGG,GAAU,ICkBjC,OARf,SAAcH,EAAO9C,EAAGu9C,GACtB,OAAMz6C,GAASA,EAAMG,QAGrBjD,EAAKu9C,QAAe/5C,IAANxD,EAAmB,EAAI,OAAAo5C,EAAA,GAAUp5C,GACxC,aAAU8C,EAAO,EAAG9C,EAAI,EAAI,EAAIA,IAH9B,ICQI,OAVf,SAAmB8C,EAAO9C,EAAGu9C,GAC3B,IAAIt6C,EAAkB,MAATH,EAAgB,EAAIA,EAAMG,OACvC,OAAKA,GAILjD,EAAIiD,GADJjD,EAAKu9C,QAAe/5C,IAANxD,EAAmB,EAAI,OAAAo5C,EAAA,GAAUp5C,IAExC,aAAU8C,EAAO9C,EAAI,EAAI,EAAIA,EAAGiD,IAJ9B,ICaI,OANf,SAAwBH,EAAOc,GAC7B,OAAQd,GAASA,EAAMG,OACnB,GAAUH,EAAO,aAAac,EAAW,IAAI,GAAO,GACpD,ICGS,OANf,SAAmBd,EAAOc,GACxB,OAAQd,GAASA,EAAMG,OACnB,GAAUH,EAAO,aAAac,EAAW,IACzC,ICbS,OALf,SAAapE,EAAO8iD,GAElB,OADAA,EAAY9iD,GACLA,G,oBC2CM,OAlBf,SAAkBmD,EAAM2f,EAAMrhB,GAC5B,IAAIshD,GAAU,EACVC,GAAW,EAEf,GAAmB,mBAAR7/C,EACT,MAAM,IAAI+d,UAnDQ,uBAyDpB,OAJI,OAAA3c,EAAA,GAAS9C,KACXshD,EAAU,YAAathD,IAAYA,EAAQshD,QAAUA,EACrDC,EAAW,aAAcvhD,IAAYA,EAAQuhD,SAAWA,GAEnD,OAAAC,GAAA,GAAS9/C,EAAM2f,EAAM,CAC1B,QAAWigC,EACX,QAAWjgC,EACX,SAAYkgC,KCrCD,OAJf,SAAchjD,EAAO8iD,GACnB,OAAOA,EAAY9iD,I,UCbjB,GAAY4J,KAAKkzC,IAuCN,OAlBf,SAAet8C,EAAG+C,GAEhB,IADA/C,EAAI,OAAAo5C,EAAA,GAAUp5C,IACN,GAAKA,EA7BQ,iBA8BnB,MAAO,GAET,IAAIgD,EA7BiB,WA8BjBC,EAAS,GAAUjD,EA9BF,YAgCrB+C,EAAW,aAAaA,GACxB/C,GAjCqB,WAoCrB,IADA,IAAIyC,EAAS,aAAUQ,EAAQF,KACtBC,EAAQhD,GACf+C,EAASC,GAEX,OAAOP,GCzBM,OAJf,WACE,OAAOnB,MCKM,OAVf,SAA0B9B,EAAOohD,GAC/B,IAAIn+C,EAASjD,EAIb,OAHIiD,aAAkB,IACpBA,EAASA,EAAOjD,SAEX,aAAYohD,GAAS,SAASn+C,EAAQigD,GAC3C,OAAOA,EAAO//C,KAAKmC,MAAM49C,EAAO5S,QAAS,aAAU,CAACrtC,GAASigD,EAAOjsC,SACnEhU,ICDU,OAJf,WACE,OAAO,GAAiBnB,KAAKm5C,YAAan5C,KAAKo5C,cCUlC,OAJf,SAAiBl7C,GACf,OAAO,aAASA,GAAOmL,e,UCQV,OAPf,SAAgBnL,GACd,OAAI,OAAA+C,EAAA,GAAQ/C,GACH,aAASA,EAAO,MAElB,OAAAy5C,EAAA,GAASz5C,GAAS,CAACA,GAAS,YAAU,aAAa,aAASA,M,oBCFtD,OAJf,SAAiBA,GACf,OAAO,aAASA,GAAO4jB,e,SCwCV,OAvBf,SAAmBnjB,EAAQ8C,EAAUi9C,GACnC,IAAIlS,EAAQ,OAAAvrC,EAAA,GAAQtC,GAChB0iD,EAAY7U,GAAS,OAAAsK,GAAA,GAASn4C,IAAW,OAAA8uC,GAAA,GAAa9uC,GAG1D,GADA8C,EAAW,aAAaA,EAAU,GACf,MAAfi9C,EAAqB,CACvB,IAAIp2C,EAAO3J,GAAUA,EAAOkH,YAE1B64C,EADE2C,EACY7U,EAAQ,IAAIlkC,EAAO,GAE1B,OAAA7F,EAAA,GAAS9D,IACF,OAAAqF,GAAA,GAAWsE,GAAQ,YAAW,aAAa3J,IAG3C,GAMlB,OAHC0iD,EAAY,IAAY,MAAY1iD,GAAQ,SAAST,EAAOwD,EAAO/C,GAClE,OAAO8C,EAASi9C,EAAaxgD,EAAOwD,EAAO/C,MAEtC+/C,G,UC3CM,OAPf,SAAuB4C,EAAYC,GAGjC,IAFA,IAAI7/C,EAAQ4/C,EAAW3/C,OAEhBD,KAAW,aAAY6/C,EAAYD,EAAW5/C,GAAQ,IAAM,IACnE,OAAOA,GCIM,OARf,SAAyB4/C,EAAYC,GAInC,IAHA,IAAI7/C,GAAS,EACTC,EAAS2/C,EAAW3/C,SAEfD,EAAQC,GAAU,aAAY4/C,EAAYD,EAAW5/C,GAAQ,IAAM,IAC5E,OAAOA,GC8BM,OAhBf,SAAcsgB,EAAQw/B,EAAOvF,GAE3B,IADAj6B,EAAS,aAASA,MACHi6B,QAAmB/5C,IAAVs/C,GACtB,OAAO,aAASx/B,GAElB,IAAKA,KAAYw/B,EAAQ,YAAaA,IACpC,OAAOx/B,EAET,IAAIs/B,EAAa,aAAct/B,GAC3Bu/B,EAAa,aAAcC,GAC3BlgD,EAAQ,GAAgBggD,EAAYC,GACpCp6C,EAAM,GAAcm6C,EAAYC,GAAc,EAElD,OAAO,aAAUD,EAAYhgD,EAAO6F,GAAK6H,KAAK,K,UCHjC,OAdf,SAAiBgT,EAAQw/B,EAAOvF,GAE9B,IADAj6B,EAAS,aAASA,MACHi6B,QAAmB/5C,IAAVs/C,GACtB,OAAOx/B,EAAO1e,MAAM,EAAG,aAAgB0e,GAAU,GAEnD,IAAKA,KAAYw/B,EAAQ,YAAaA,IACpC,OAAOx/B,EAET,IAAIs/B,EAAa,aAAct/B,GAC3B7a,EAAM,GAAcm6C,EAAY,aAAcE,IAAU,EAE5D,OAAO,aAAUF,EAAY,EAAGn6C,GAAK6H,KAAK,KC9BxCyyC,GAAc,OAmCH,OAdf,SAAmBz/B,EAAQw/B,EAAOvF,GAEhC,IADAj6B,EAAS,aAASA,MACHi6B,QAAmB/5C,IAAVs/C,GACtB,OAAOx/B,EAAOha,QAAQy5C,GAAa,IAErC,IAAKz/B,KAAYw/B,EAAQ,YAAaA,IACpC,OAAOx/B,EAET,IAAIs/B,EAAa,aAAct/B,GAC3B1gB,EAAQ,GAAgBggD,EAAY,aAAcE,IAEtD,OAAO,aAAUF,EAAYhgD,GAAO0N,KAAK,K,UClB5B,OAJf,SAAe3N,GACb,OAAO,GAAIA,EAAM,I,6BCoBJ,GARD,cAAS,SAAS48C,GAC9B,IAAIx8C,EAAW,GAAKw8C,GAIpB,OAHI,OAAAhB,GAAA,GAAkBx7C,KACpBA,OAAWS,GAEN,aAAS,aAAY+7C,EAAQ,EAAGhB,GAAA,GAAmB,GAAO,aAAax7C,EAAU,OCF3E,GANC,cAAS,SAASw8C,GAChC,IAAIf,EAAa,GAAKe,GAEtB,OADAf,EAAkC,mBAAdA,EAA2BA,OAAah7C,EACrD,aAAS,aAAY+7C,EAAQ,EAAGhB,GAAA,GAAmB,QAAO/6C,EAAWg7C,M,UCA/D,OAJf,SAAgB17C,EAAOC,GACrB,OAAQD,GAASA,EAAMG,OAAU,aAASH,EAAO,aAAaC,EAAU,IAAM,ICAjE,OALf,SAAkBD,EAAO07C,GAEvB,OADAA,EAAkC,mBAAdA,EAA2BA,OAAah7C,EACpDV,GAASA,EAAMG,OAAU,aAASH,OAAOU,EAAWg7C,GAAc,I,UCS7D,OAJf,SAAev+C,EAAQuwC,GACrB,OAAiB,MAAVvwC,GAAwB,GAAUA,EAAQuwC,I,UCvB/C,GAAYpnC,KAAKitB,IAqCN,OAhBf,SAAevzB,GACb,IAAMA,IAASA,EAAMG,OACnB,MAAO,GAET,IAAIA,EAAS,EAOb,OANAH,EAAQ,aAAYA,GAAO,SAASkgD,GAClC,GAAI,OAAAzE,GAAA,GAAkByE,GAEpB,OADA//C,EAAS,GAAU+/C,EAAM//C,OAAQA,IAC1B,KAGJ,aAAUA,GAAQ,SAASD,GAChC,OAAO,aAASF,EAAO,aAAaE,QCFzB,OAbf,SAAmBF,EAAOC,GACxB,IAAMD,IAASA,EAAMG,OACnB,MAAO,GAET,IAAIR,EAAS,GAAMK,GACnB,OAAgB,MAAZC,EACKN,EAEF,aAASA,GAAQ,SAASugD,GAC/B,OAAO,YAAMjgD,OAAUS,EAAWw/C,OCjBvB,OAJf,SAAoB/iD,EAAQuwC,EAAMyS,EAASpN,GACzC,OAAO,aAAQ51C,EAAQuwC,EAAMyS,EAAQ,aAAQhjD,EAAQuwC,IAAQqF,ICoBhD,OAJf,SAAgB51C,EAAQuwC,EAAMyS,GAC5B,OAAiB,MAAVhjD,EAAiBA,EAAS,GAAWA,EAAQuwC,EAAM,aAAayS,KCC1D,OALf,SAAoBhjD,EAAQuwC,EAAMyS,EAASpN,GAEzC,OADAA,EAAkC,mBAAdA,EAA2BA,OAAaryC,EAC3C,MAAVvD,EAAiBA,EAAS,GAAWA,EAAQuwC,EAAM,aAAayS,GAAUpN,I,mBCEpE,OAJf,SAAkB51C,GAChB,OAAiB,MAAVA,EAAiB,GAAK,aAAWA,EAAQ,OAAAk3C,GAAA,GAAOl3C,KCE1C,GAND,cAAS,SAAS6C,EAAOikB,GACrC,OAAO,OAAAw3B,GAAA,GAAkBz7C,GACrB,aAAeA,EAAOikB,GACtB,M,UCES,OAJf,SAAcvnB,EAAOg6C,GACnB,OAAO,GAAQ,aAAaA,GAAUh6C,ICqBzB,GAxBC,cAAS,SAASi+C,GAChC,IAAIx6C,EAASw6C,EAAMx6C,OACfL,EAAQK,EAASw6C,EAAM,GAAK,EAC5Bj+C,EAAQ8B,KAAKm5C,YACb6H,EAAc,SAASriD,GAAU,OAAO,GAAOA,EAAQw9C,IAE3D,QAAIx6C,EAAS,GAAK3B,KAAKo5C,YAAYz3C,SAC7BzD,aAAiB,GAAiB,aAAQoD,KAGhDpD,EAAQA,EAAMoF,MAAMhC,GAAQA,GAASK,EAAS,EAAI,KAC5Cy3C,YAAY52C,KAAK,CACrB,KAAQ,GACR,KAAQ,CAACw+C,GACT,aAAW9+C,IAEN,IAAI,EAAchE,EAAO8B,KAAK65C,WAAWkE,MAAK,SAASv8C,GAI5D,OAHIG,IAAWH,EAAMG,QACnBH,EAAMgB,UAAKN,GAENV,MAZAxB,KAAK+9C,KAAKiD,MCEN,OAJf,WACE,OAAO,GAAMhhD,OCaA,OAlBf,WACE,IAAI9B,EAAQ8B,KAAKm5C,YACjB,GAAIj7C,aAAiB,EAAa,CAChC,IAAI0jD,EAAU1jD,EAUd,OATI8B,KAAKo5C,YAAYz3C,SACnBigD,EAAU,IAAI,EAAY5hD,QAE5B4hD,EAAUA,EAAQ3lC,WACVm9B,YAAY52C,KAAK,CACvB,KAAQ,GACR,KAAQ,CAAC,IACT,aAAWN,IAEN,IAAI,EAAc0/C,EAAS5hD,KAAK65C,WAEzC,OAAO75C,KAAK+9C,KAAK,KCLJ,OArBf,SAAiBE,EAAQx8C,EAAUy7C,GACjC,IAAIv7C,EAASs8C,EAAOt8C,OACpB,GAAIA,EAAS,EACX,OAAOA,EAAS,aAASs8C,EAAO,IAAM,GAKxC,IAHA,IAAIv8C,GAAS,EACTP,EAASD,MAAMS,KAEVD,EAAQC,GAIf,IAHA,IAAIH,EAAQy8C,EAAOv8C,GACf08C,GAAY,IAEPA,EAAWz8C,GACdy8C,GAAY18C,IACdP,EAAOO,GAAS,aAAeP,EAAOO,IAAUF,EAAOy8C,EAAOG,GAAW38C,EAAUy7C,IAIzF,OAAO,aAAS,aAAY/7C,EAAQ,GAAIM,EAAUy7C,ICLrC,GAJL,cAAS,SAASe,GAC1B,OAAO,GAAQ,aAAYA,EAAQhB,GAAA,OCctB,GARH,cAAS,SAASgB,GAC5B,IAAIx8C,EAAW,GAAKw8C,GAIpB,OAHI,OAAAhB,GAAA,GAAkBx7C,KACpBA,OAAWS,GAEN,GAAQ,aAAY+7C,EAAQhB,GAAA,GAAoB,aAAax7C,EAAU,OCFjE,GAND,cAAS,SAASw8C,GAC9B,IAAIf,EAAa,GAAKe,GAEtB,OADAf,EAAkC,mBAAdA,EAA2BA,OAAah7C,EACrD,GAAQ,aAAY+7C,EAAQhB,GAAA,QAAoB/6C,EAAWg7C,MCTrD,GAFL,aAAS,ICGJ,OAbf,SAAuBvxB,EAAOlG,EAAQo8B,GAMpC,IALA,IAAIngD,GAAS,EACTC,EAASgqB,EAAMhqB,OACfmgD,EAAar8B,EAAO9jB,OACpBR,EAAS,KAEJO,EAAQC,GAAQ,CACvB,IAAIzD,EAAQwD,EAAQogD,EAAar8B,EAAO/jB,QAASQ,EACjD2/C,EAAW1gD,EAAQwqB,EAAMjqB,GAAQxD,GAEnC,OAAOiD,GCIM,OAJf,SAAmBwqB,EAAOlG,GACxB,OAAO,GAAckG,GAAS,GAAIlG,GAAU,GAAI,OCEnC,OAJf,SAAuBkG,EAAOlG,GAC5B,OAAO,GAAckG,GAAS,GAAIlG,GAAU,GAAI,OCYnC,GARD,cAAS,SAASw4B,GAC9B,IAAIt8C,EAASs8C,EAAOt8C,OAChBF,EAAWE,EAAS,EAAIs8C,EAAOt8C,EAAS,QAAKO,EAGjD,OADAT,EAA8B,mBAAZA,GAA0Bw8C,EAAO/yC,MAAOzJ,QAAYS,EAC/D,GAAU+7C,EAAQx8C,MCsCZ,IACbsgD,MAAA,GAAOC,QAAA,GAAShhD,OAAA,GAAQihD,cAAA,EAAYC,aAAA,GACpCC,eAAA,GAAgBC,KAAA,GAAMC,UAAA,GAAWC,eAAA,GAAgBC,UAAA,GACjD3S,KAAA,GAAM4S,UAAA,GAAWC,cAAA,GAAe/7C,MAAA,GAAOg8C,WAAA,EACvCC,YAAA,GAAaC,aAAA,GAAcC,UAAA,GAAW19C,KAAA,GAAM1B,QAAA,GAC5CuhB,QAAA,GAAS89B,aAAA,GAAcC,eAAA,GAAgBC,iBAAA,GAAkBh0C,KAAA,GACzDpI,KAAA,GAAMq8C,YAAA,GAAaC,IAAA,GAAKC,KAAA,GAAMC,QAAA,GAC9BC,UAAA,GAAWC,YAAA,GAAaC,OAAA,GAAQ3lC,OAAA,GAAQ3B,QAAA,GACxC3Y,MAAA,GAAOkgD,eAAA,EAAaC,iBAAA,EAAeC,cAAA,GAAeC,gBAAA,GAClDC,kBAAA,GAAmBC,kBAAA,GAAmBC,WAAA,GAAYC,aAAA,GAAcC,KAAA,GAChEC,KAAA,GAAMC,UAAA,GAAWC,eAAA,GAAgBC,UAAA,GAAWC,SAAA,EAC5CC,QAAA,GAASC,UAAA,GAAWC,QAAA,EAAMC,OAAA,GAAQC,SAAA,GAClCC,MAAA,GAAOC,UAAA,GAAWC,QAAA,GAASC,IAAA,GAAKC,MAAA,GAChCC,QAAA,GAASC,IAAA,GAAKC,UAAA,GAAWC,cAAA,GAAeC,QAAA,IClD3B,IACbC,QAAA,GAASh/C,KAAA,GAAMi/C,UAAA,GAAWC,MAAA,GAAO/zC,OAAA,GACjCE,KAAA,GAAM8zC,SAAA,GAAUC,QAAA,GAASC,YAAA,GAAaC,aAAA,GACtCxa,QAAA,GAASya,aAAA,GAAcC,WAAA,EAAS3H,SAAA,GAAU4H,UAAA,GAC1CC,MAAA,GAAOx/C,IAAA,GAAKy/C,QAAA,GAASC,UAAA,GAAWza,OAAA,GAChC0a,YAAA,GAAazpC,OAAA,GAAQ0pC,OAAA,GAAQC,WAAA,GAAYC,QAAA,GACzCzJ,KAAA,GAAM0J,KAAA,GAAMC,UAAA,GCjCC,IACbv6B,OAAA,GCqBa,IACbmE,MAAA,EAAOwqB,IAAA,GAAKzqB,UAAA,EAAQzxB,KAAA,GAAM49C,QAAA,GAC1B9O,MAAA,GAAOyP,WAAA,GAAYmE,YAAA,EAAUt9B,SAAA,EAAO+X,MAAA,GACpC4qB,KAAA,GAAMC,WAAA,EAASC,OAAA,GAAQhpC,QAAA,EAAMipC,SAAA,GAC7B5G,QAAA,GAASC,aAAA,GAAc4G,MAAA,GAAOC,KAAA,GAAMC,OAAA,GACpCC,SAAA,GAAUC,MAAA,GAAOx/B,KAAA,IC4BJ,IACby/B,UAAA,GAAWx/C,MAAA,KAAOy/C,aAAA,EAAWC,cAAA,GAAeC,UAAA,GAC5CC,WAAA,GAAY1gD,MAAA,EAAI2gD,GAAA,GAAIC,IAAA,GAAKplD,eAAA,EACzBlB,UAAA,EAAS49C,cAAA,GAAel8C,eAAA,EAAas6C,qBAAA,EAAmBuK,aAAA,EACxD1Q,YAAA,EAAUiI,OAAA,GAAQ0I,UAAA,GAAWC,WAAA,EAASC,WAAA,EACtCC,YAAA,GAAaC,WAAA,EAASzxB,SAAA,KAAUpyB,cAAA,EAAY8jD,aAAA,EAC5CC,YAAA,EAAU7Q,SAAA,EAAO8Q,QAAA,GAASC,YAAA,GAAa9d,MAAA,KACvC+d,SAAA,GAAUC,SAAA,EAAOC,UAAA,EAAQC,YAAA,EAAU5lD,WAAA,EACnCw3C,eAAA,EAAcryC,iBAAA,EAAe0gD,YAAA,EAAUC,iBAAA,EAAevR,SAAA,EACtDxJ,YAAA,EAAUmK,WAAA,EAAUlK,gBAAA,EAAc+a,eAAA,EAAaC,UAAA,GAC/CC,UAAA,GAAWC,GAAA,GAAIC,IAAA,GAAK9iD,QAAA,GAAS26C,YAAA,EAC7B3I,YAAA,EAAW+Q,SAAA,GAAUnM,YAAA,EAAUoM,iBAAA,EAAeC,iBAAA,EAC9CplD,SAAA,MCrDa,IACbrD,IAAA,EAAKk1B,KAAA,GAAMwzB,OAAA,GAAQ7I,MAAA,GAAOprB,IAAA,GAC1Bk0B,MAAA,GAAOC,KAAA,GAAMC,OAAA,GAAQnO,IAAA,GAAKoO,MAAA,GAC1BC,SAAA,GAAUz2B,MAAA,GAAOkC,SAAA,GAAUw0B,IAAA,GAAKC,MAAA,ICfnB,IACbC,SAAA,EAAOC,WAAA,EAAS1hD,OAAA,IC2CH,IACb2hD,OAAA,GAAQC,YAAA,EAAUC,gBAAA,EAAcC,WAAA,GAAYC,GAAA,GAC5CvrD,OAAA,GAAQ2tC,YAAA,EAAU6d,gBAAA,EAAcC,QAAA,GAASC,UAAA,GACzC3iD,OAAA,KAAQ4iD,WAAA,KAAYC,QAAA,GAASC,YAAA,GAAaC,SAAA,EAC1CC,WAAA,GAAYC,OAAA,GAAQC,YAAA,GAAaC,UAAA,GAAWC,YAAA,GAC5C5sD,OAAA,EAAKud,OAAA,EAAKsvC,SAAA,EAAO9hD,OAAA,GAAQ+hD,SAAA,GACzBC,OAAA,GAAQz7C,QAAA,EAAMymC,UAAA,EAAQiV,QAAA,GAASC,UAAA,GAC/B5kD,SAAA,EAAO6kD,aAAA,EAAWC,KAAA,GAAMC,OAAA,GAAQC,QAAA,EAChCC,OAAA,GAAQjqD,OAAA,GAAQmhB,IAAA,GAAK+oC,QAAA,GAASC,QAAA,GAC9BC,UAAA,GAAW/X,UAAA,GAAWgY,MAAA,GAAOC,OAAA,GAAQC,WAAA,GACrCjmC,OAAA,GAAQkmC,SAAA,IC3CK,IACb7B,GAAA,GAAIzK,MAAA,GAAOuM,UAAQ5R,OAAA,EAAQrsC,QAC3BqwC,SAAO/hC,QAAA,GAAS4vC,IAAA,GAAK9N,KAAA,GAAM+N,cAC3BC,OAAA,GAAQ7tD,MAAA,GAAOm2C,QAAA,GAAS2X,aAAA,ICcX,IACbjqC,aAAA,EAAWkqC,cAAA,EAAYC,UAAA,EAAQC,YAAA,EAAUx/C,OAAA,KACzCy/C,aAAA,GAAcC,UAAA,GAAWC,aAAA,EAAWC,cAAA,EAAYC,OAAA,EAChDC,UAAA,EAAQC,YAAA,EAAUh5B,SAAA,KAAUi5B,UAAA,EAAQ3kD,QAAA,GACpC4kD,UAAA,GAAWzjD,SAAA,EAAO0jD,aAAA,EAAWC,cAAA,EAAYC,YAAA,EACzCC,oBAAA,EAAkBC,QAAA,GAASC,QAAA,GAAS9iB,KAAA,GAAM+iB,QAAA,GAC1CC,UAAA,GAAWjzC,YAAA,EAAUkzC,SAAA,KAAUC,aAAA,EAAWC,cAAA,EAC1CC,SAAA,GCNa,IACbC,WAAA,EAASC,QAAA,GAASC,KAAA,GAAMC,SAAA,GAAUjP,YAAA,EAClCkP,UAAA,GAAWC,KAAA,GAAMC,UAAA,GAAWhW,WAAA,EAAUt2C,SAAA,GACtCqH,QAAA,GAASklD,gBAAA,GAAiBrxC,OAAA,GAAQsxC,SAAA,GAAU5gB,MAAA,GAC5CjlC,OAAA,EAAM8lD,OAAA,GAAQC,KAAA,GAAMC,UAAA,GAAWC,SAAA,GAC/BzvD,YAAA,EAAU0vD,WAAA,GAAYC,MAAA,GAAOC,WAAA,GAAYC,aAAA,EACzCzP,aAAA,EAAW0P,WAAA,GAAYC,WAAA,GAAYC,SAAA,GAAUC,MAAA,GAC7CC,OAAA,GAAQC,YAAA,GClBK,OAXf,WACE,IAAI5tD,EAAS,IAAI,EAAYnB,KAAKm5C,aAOlC,OANAh4C,EAAOi4C,YAAc,YAAUp5C,KAAKo5C,aACpCj4C,EAAOk4C,QAAUr5C,KAAKq5C,QACtBl4C,EAAOm4C,aAAet5C,KAAKs5C,aAC3Bn4C,EAAOo4C,cAAgB,YAAUv5C,KAAKu5C,eACtCp4C,EAAOq4C,cAAgBx5C,KAAKw5C,cAC5Br4C,EAAOs4C,UAAY,YAAUz5C,KAAKy5C,WAC3Bt4C,GCGM,OAZf,WACE,GAAInB,KAAKs5C,aAAc,CACrB,IAAIn4C,EAAS,IAAI,EAAYnB,MAC7BmB,EAAOk4C,SAAW,EAClBl4C,EAAOm4C,cAAe,OAEtBn4C,EAASnB,KAAKyH,SACP4xC,UAAY,EAErB,OAAOl4C,GClBL,GAAY2G,KAAKitB,IACjB,GAAYjtB,KAAKkzC,IA8BN,OAlBf,SAAiB15C,EAAO6F,EAAK04C,GAI3B,IAHA,IAAIn+C,GAAS,EACTC,EAASk+C,EAAWl+C,SAEfD,EAAQC,GAAQ,CACvB,IAAI4gB,EAAOs9B,EAAWn+C,GAClBk7C,EAAOr6B,EAAKq6B,KAEhB,OAAQr6B,EAAKhhB,MACX,IAAK,OAAaD,GAASs7C,EAAM,MACjC,IAAK,YAAaz1C,GAAOy1C,EAAM,MAC/B,IAAK,OAAaz1C,EAAM,GAAUA,EAAK7F,EAAQs7C,GAAO,MACtD,IAAK,YAAat7C,EAAQ,GAAUA,EAAO6F,EAAMy1C,IAGrD,MAAO,CAAE,MAASt7C,EAAO,IAAO6F,ICpB9B,GAAYW,KAAKkzC,IA2DN,ICMO35C,GA4UhB0iB,GDlVS,GAjDf,WACE,IAAIviB,EAAQxB,KAAKm5C,YAAYj7C,QACzBwP,EAAM1N,KAAKq5C,QACX7M,EAAQ,OAAAvrC,EAAA,GAAQO,GAChBwtD,EAAUthD,EAAM,EAChBwtC,EAAY1O,EAAQhrC,EAAMG,OAAS,EACnCkrB,EAAO,GAAQ,EAAGquB,EAAWl7C,KAAKy5C,WAClCn4C,EAAQurB,EAAKvrB,MACb6F,EAAM0lB,EAAK1lB,IACXxF,EAASwF,EAAM7F,EACfI,EAAQstD,EAAU7nD,EAAO7F,EAAQ,EACjCo+C,EAAY1/C,KAAKu5C,cACjB0V,EAAavP,EAAU/9C,OACvBy5C,EAAW,EACX8T,EAAY,GAAUvtD,EAAQ3B,KAAKw5C,eAEvC,IAAKhN,IAAWwiB,GAAW9T,GAAav5C,GAAUutD,GAAavtD,EAC7D,OAAO,GAAiBH,EAAOxB,KAAKo5C,aAEtC,IAAIj4C,EAAS,GAEbs9C,EACA,KAAO98C,KAAYy5C,EAAW8T,GAAW,CAMvC,IAHA,IAAIC,GAAa,EACbjxD,EAAQsD,EAHZE,GAASgM,KAKAyhD,EAAYF,GAAY,CAC/B,IAAI1sC,EAAOm9B,EAAUyP,GACjB1tD,EAAW8gB,EAAK9gB,SAChBF,EAAOghB,EAAKhhB,KACZ6vB,EAAW3vB,EAASvD,GAExB,GA/Cc,GA+CVqD,EACFrD,EAAQkzB,OACH,IAAKA,EAAU,CACpB,GAnDe,GAmDX7vB,EACF,SAASk9C,EAET,MAAMA,GAIZt9C,EAAOi6C,KAAcl9C,EAEvB,OAAOiD,GCLL,GAAaD,MAAMrC,UAInB,GAHclB,OAAOkB,UAGQC,eAG7B,GAAc,KAAS,KAAOoK,cAAWhH,EAGzC,GAAY4F,KAAKitB,IACjB,GAAYjtB,KAAKkzC,IAGjB,IAAkB35C,GAepB,GAdO,SAAS1C,EAAQolB,EAAQpkB,GAC9B,GAAe,MAAXA,EAAiB,CACnB,IAAIyvD,EAAQ,OAAA3sD,EAAA,GAASshB,GACjB4H,EAAQyjC,GAAS,OAAAhgD,GAAA,GAAK2U,GACtBq4B,EAAczwB,GAASA,EAAMhqB,QAAU,GAAcoiB,EAAQ4H,IAE3DywB,EAAcA,EAAYz6C,OAASytD,KACvCzvD,EAAUokB,EACVA,EAASplB,EACTA,EAASqB,MAGb,OAAOqB,GAAK1C,EAAQolB,EAAQpkB;;;;;;;;;GAKhC,EAAOwwB,MAAQ,GAAKA,MACpB,EAAOwqB,IAAM,GAAKA,IAClB,EAAO+O,OAAS,GAAOA,OACvB,EAAOC,SAAW,GAAOA,SACzB,EAAOC,aAAe,GAAOA,aAC7B,EAAOC,WAAa,GAAOA,WAC3B,EAAOC,GAAK,GAAOA,GACnB,EAAO55B,OAAS,GAAKA,OACrB,EAAOzxB,KAAO,GAAKA,KACnB,EAAOivD,QAAU,GAAKA,QACtB,EAAOrR,QAAU,GAAKA,QACtB,EAAO4K,UAAY,GAAKA,UACxB,EAAO5H,MAAQ,GAAIA,MACnB,EAAO0C,MAAQ,GAAMA,MACrB,EAAOC,QAAU,GAAMA,QACvB,EAAOhhD,OAAS,GAAMA,OACtB,EAAO2sD,KAAO,GAAKA,KACnB,EAAOC,SAAW,GAAKA,SACvB,EAAOjP,SAAW,GAAKA,SACvB,EAAO0G,QAAU,GAAWA,QAC5B,EAAO9mD,OAAS,GAAOA,OACvB,EAAOgvC,MAAQ,GAAKA,MACpB,EAAOyP,WAAa,GAAKA,WACzB,EAAOmE,SAAW,GAAKA,SACvB,EAAOjV,SAAW,GAAOA,SACzB,EAAO6d,aAAe,GAAOA,aAC7B,EAAOlmC,MAAQ,GAAKA,MACpB,EAAO+X,MAAQ,GAAKA,MACpB,EAAOqmB,WAAa,GAAMA,WAC1B,EAAOC,aAAe,GAAMA,aAC5B,EAAOC,eAAiB,GAAMA,eAC9B,EAAOC,KAAO,GAAMA,KACpB,EAAOC,UAAY,GAAMA,UACzB,EAAOC,eAAiB,GAAMA,eAC9B,EAAOC,UAAY,GAAMA,UACzB,EAAO3S,KAAO,GAAMA,KACpB,EAAOp+B,OAAS,GAAWA,OAC3B,EAAOi0C,QAAU,GAAWA,QAC5B,EAAOC,YAAc,GAAWA,YAChC,EAAOC,aAAe,GAAWA,aACjC,EAAOjD,QAAU,GAAMA,QACvB,EAAOC,YAAc,GAAMA,YAC3B,EAAOC,aAAe,GAAMA,aAC5B,EAAO4D,KAAO,GAAKA,KACnB,EAAOsH,KAAO,GAAKA,KACnB,EAAOC,UAAY,GAAKA,UACxB,EAAOlL,UAAY,GAAMA,UACzB,EAAO4H,UAAY,GAAOA,UAC1B,EAAOC,YAAc,GAAOA,YAC5B,EAAO7E,QAAU,GAAWA,QAC5B,EAAO7gC,QAAU,GAAMA,QACvB,EAAO89B,aAAe,GAAMA,aAC5B,EAAOC,eAAiB,GAAMA,eAC9B,EAAOC,iBAAmB,GAAMA,iBAChC,EAAOn6C,OAAS,GAAOA,OACvB,EAAO+hD,SAAW,GAAOA,SACzB,EAAO9E,UAAY,GAAWA,UAC9B,EAAOrkD,SAAW,GAAKA,SACvB,EAAOskD,MAAQ,GAAWA,MAC1B,EAAO32C,KAAOA,GAAA,EACd,EAAOymC,OAAS,GAAOA,OACvB,EAAOtvC,IAAM,GAAWA,IACxB,EAAOukD,QAAU,GAAOA,QACxB,EAAOC,UAAY,GAAOA,UAC1B,EAAOjiD,QAAU,GAAKA,QACtB,EAAOklD,gBAAkB,GAAKA,gBAC9B,EAAOvH,QAAU,GAAKA,QACtB,EAAOtgD,MAAQ,GAAOA,MACtB,EAAO6kD,UAAY,GAAOA,UAC1B,EAAOruC,OAAS,GAAKA,OACrB,EAAOsxC,SAAW,GAAKA,SACvB,EAAO5gB,MAAQ,GACf,EAAOqZ,OAAS,GAChB,EAAOwH,OAAS,GAAKA,OACrB,EAAOjD,KAAO,GAAOA,KACrB,EAAOC,OAAS,GAAOA,OACvB,EAAOxtC,KAAO,GAAKA,KACnB,EAAOsoC,QAAU,GAAWA,QAC5B,EAAOmI,KAAO,GAAKA,KACnB,EAAOxH,SAAW,GAAKA,SACvB,EAAOyH,UAAY,GAAKA,UACxB,EAAOC,SAAW,GAAKA,SACvB,EAAOtO,QAAU,GAAKA,QACtB,EAAOC,aAAe,GAAKA,aAC3B,EAAOiG,UAAY,GAAWA,UAC9B,EAAOkF,KAAO,GAAOA,KACrB,EAAOC,OAAS,GAAOA,OACvB,EAAOxsD,SAAW,GAAKA,SACvB,EAAO0vD,WAAa,GAAKA,WACzB,EAAOnL,KAAO,GAAMA,KACpB,EAAOC,QAAU,GAAMA,QACvB,EAAOC,UAAY,GAAMA,UACzB,EAAOC,YAAc,GAAMA,YAC3B,EAAOC,OAAS,GAAMA,OACtB,EAAOgL,MAAQ,GAAKA,MACpB,EAAOC,WAAa,GAAKA,WACzB,EAAO5H,MAAQ,GAAKA,MACpB,EAAOnqC,OAAS,GAAWA,OAC3B,EAAOmB,OAAS,GAAMA,OACtB,EAAOipC,KAAO,GAAKA,KACnB,EAAO5qC,QAAU,GAAMA,QACvB,EAAOmqC,WAAa,GAAWA,WAC/B,EAAO9jC,IAAM,GAAOA,IACpB,EAAO+oC,QAAU,GAAOA,QACxB,EAAOhF,QAAU,GAAWA,QAC5B,EAAO/iD,MAAQ,GAAMA,MACrB,EAAOijD,OAAS,GAAWA,OAC3B,EAAOzC,WAAa,GAAMA,WAC1B,EAAOC,aAAe,GAAMA,aAC5B,EAAO56C,MAAQ,GAAOA,MACtB,EAAO29C,OAAS,GAAKA,OACrB,EAAO9C,KAAO,GAAMA,KACpB,EAAOC,KAAO,GAAMA,KACpB,EAAOC,UAAY,GAAMA,UACzB,EAAOC,eAAiB,GAAMA,eAC9B,EAAOC,UAAY,GAAMA,UACzB,EAAOyH,IAAM,GAAIA,IACjB,EAAO9E,SAAW,GAAKA,SACvB,EAAOhJ,KAAO,GACd,EAAOj4C,QAAU,GAAKA,QACtB,EAAOwlD,QAAU,GAAOA,QACxB,EAAOC,UAAY,GAAOA,UAC1B,EAAOuD,OAAS,GAAKA,OACrB,EAAOhG,cAAgB,GAAKA,cAC5B,EAAOtV,UAAY,GAAOA,UAC1B,EAAOwT,MAAQ,GAAKA,MACpB,EAAO3C,MAAQ,GAAMA,MACrB,EAAOC,QAAU,GAAMA,QACvB,EAAOC,UAAY,GAAMA,UACzB,EAAOC,KAAO,GAAMA,KACpB,EAAOC,OAAS,GAAMA,OACtB,EAAOC,SAAW,GAAMA,SACxB,EAAO8G,MAAQ,GAAOA,MACtB,EAAO7G,MAAQ,GAAMA,MACrB,EAAOC,UAAY,GAAMA,UACzB,EAAO6G,OAAS,GAAOA,OACvB,EAAOC,WAAa,GAAOA,WAC3B,EAAOjmC,OAAS,GAAOA,OACvB,EAAOkmC,SAAW,GAAOA,SACzB,EAAO9G,QAAU,GAAMA,QACvB,EAAO2I,MAAQ,GAAOA,MACtB,EAAOhmC,KAAO,GAAKA,KACnB,EAAOs9B,IAAM,GAAMA,IACnB,EAAOC,MAAQ,GAAMA,MACrB,EAAOC,QAAU,GAAMA,QACvB,EAAOC,IAAM,GAAMA,IACnB,EAAOC,UAAY,GAAMA,UACzB,EAAOC,cAAgB,GAAMA,cAC7B,EAAOC,QAAU,GAAMA,QAGvB,EAAO4E,QAAU,GAAOsB,QACxB,EAAOrB,UAAY,GAAOsB,UAC1B,EAAOjkD,OAAS,GAAOqiD,SACvB,EAAOO,WAAa,GAAON,aAG3B,GAAM,EAAQ,GAGd,EAAOtpD,IAAM,GAAKA,IAClB,EAAOmtD,QAAU,GAAKA,QACtB,EAAO1rC,UAAY,GAAOA,UAC1B,EAAOkqC,WAAa,GAAOA,WAC3B,EAAOz2B,KAAO,GAAKA,KACnB,EAAOg0B,MAAQ,GAAOA,MACtB,EAAO/hD,MAAQ,GAAKA,MACpB,EAAOy/C,UAAY,GAAKA,UACxB,EAAOC,cAAgB,GAAKA,cAC5B,EAAOC,UAAY,GAAKA,UACxB,EAAOC,WAAa,GAAKA,WACzB,EAAO6E,OAAS,GAAOA,OACvB,EAAO2B,UAAY,GAAKA,UACxB,EAAO7E,OAAS,GAAKA,OACrB,EAAOmD,SAAW,GAAOA,SACzB,EAAOxlD,GAAK,GAAKA,GACjB,EAAOgG,OAAS,GAAOA,OACvB,EAAOy/C,aAAe,GAAOA,aAC7B,EAAO7G,MAAQ,GAAWA,MAC1B,EAAO7zC,KAAO,GAAWA,KACzB,EAAO8wC,UAAY,GAAMA,UACzB,EAAO2H,QAAU,GAAOA,QACxB,EAAO3E,SAAW,GAAWA,SAC7B,EAAO/C,cAAgB,GAAMA,cAC7B,EAAO2H,YAAc,GAAOA,YAC5B,EAAOjK,MAAQ,GAAKA,MACpB,EAAOhV,QAAU,GAAWA,QAC5B,EAAOya,aAAe,GAAWA,aACjC,EAAOyE,MAAQ,GAAOA,MACtB,EAAOC,WAAa,GAAOA,WAC3B,EAAOC,OAAS,GAAOA,OACvB,EAAOC,YAAc,GAAOA,YAC5B,EAAO1sD,IAAM,GAAOA,IACpB,EAAOwpD,GAAK,GAAKA,GACjB,EAAOC,IAAM,GAAKA,IAClB,EAAOlsC,IAAM,GAAOA,IACpB,EAAOsvC,MAAQ,GAAOA,MACtB,EAAOxlD,KAAO,GAAMA,KACpB,EAAO4yC,SAAWA,EAAA,EAClB,EAAOmG,SAAW,GAAWA,SAC7B,EAAOz6C,QAAU,GAAMA,QACvB,EAAOgmD,QAAU,GAAOA,QACxB,EAAOoB,OAAS,GAAOA,OACvB,EAAO1oD,YAAc,GAAKA,YAC1B,EAAOlB,QAAUA,EAAA,EACjB,EAAO49C,cAAgB,GAAKA,cAC5B,EAAOl8C,YAAc,GAAKA,YAC1B,EAAOs6C,kBAAoB,GAAKA,kBAChC,EAAOuK,UAAY,GAAKA,UACxB,EAAO1Q,SAAW,GAAKA,SACvB,EAAOiI,OAAS,GAAKA,OACrB,EAAO0I,UAAY,GAAKA,UACxB,EAAOC,QAAU,GAAKA,QACtB,EAAOC,QAAU,GAAKA,QACtB,EAAOC,YAAc,GAAKA,YAC1B,EAAOC,QAAU,GAAKA,QACtB,EAAOzxB,SAAW,GAAKA,SACvB,EAAOpyB,WAAa,GAAKA,WACzB,EAAO8jD,UAAY,GAAKA,UACxB,EAAOC,SAAW,GAAKA,SACvB,EAAO7Q,MAAQ,GAAKA,MACpB,EAAO8Q,QAAU,GAAKA,QACtB,EAAOC,YAAc,GAAKA,YAC1B,EAAO9d,MAAQ,GAAKA,MACpB,EAAO+d,SAAW,GAAKA,SACvB,EAAOC,MAAQ,GAAKA,MACpB,EAAOC,OAAS,GAAKA,OACrB,EAAOC,SAAW,GAAKA,SACvB,EAAO5lD,SAAWA,EAAA,EAClB,EAAOw3C,aAAe,GAAKA,aAC3B,EAAOryC,cAAgB,GAAKA,cAC5B,EAAO0gD,SAAW,GAAKA,SACvB,EAAOC,cAAgB,GAAKA,cAC5B,EAAOvR,MAAQ,GAAKA,MACpB,EAAOxJ,SAAW,GAAKA,SACvB,EAAOmK,SAAW,GAAKA,SACvB,EAAOlK,aAAe,GAAKA,aAC3B,EAAO+a,YAAc,GAAKA,YAC1B,EAAOC,UAAY,GAAKA,UACxB,EAAOC,UAAY,GAAKA,UACxB,EAAO15C,KAAO,GAAMA,KACpB,EAAOq9C,UAAY,GAAOA,UAC1B,EAAOzlD,KAAO,GACd,EAAOq8C,YAAc,GAAMA,YAC3B,EAAOqJ,UAAY,GAAOA,UAC1B,EAAOC,WAAa,GAAOA,WAC3B,EAAO5D,GAAK,GAAKA,GACjB,EAAOC,IAAM,GAAKA,IAClB,EAAO7zB,IAAM,GAAKA,IAClB,EAAOk0B,MAAQ,GAAKA,MACpB,EAAOC,KAAO,GAAKA,KACnB,EAAOC,OAAS,GAAKA,OACrB,EAAOnO,IAAM,GAAKA,IAClB,EAAOoO,MAAQ,GAAKA,MACpB,EAAOqF,UAAY,GAAKA,UACxB,EAAOzP,UAAY,GAAKA,UACxB,EAAO0P,WAAa,GAAKA,WACzB,EAAOC,WAAa,GAAKA,WACzB,EAAOC,SAAW,GAAKA,SACvB,EAAOvF,SAAW,GAAKA,SACvB,EAAOnG,IAAM,GAAMA,IACnB,EAAO96C,KAAO,GAAKA,KACnB,EAAO4jB,IAAM,GAAKA,IAClB,EAAOwgC,IAAM,GAAOA,IACpB,EAAOC,OAAS,GAAOA,OACvB,EAAOC,SAAW,GAAOA,SACzB,EAAOh5B,SAAW,GAAOA,SACzB,EAAO3rB,OAAS,GAAOA,OACvB,EAAOyjC,OAAS,GAAWA,OAC3B,EAAO0a,YAAc,GAAWA,YAChC,EAAOyG,OAAS,GAAOA,OACvB,EAAO3kD,QAAU,GAAOA,QACxB,EAAO7G,OAAS,GAAOA,OACvB,EAAOyxB,MAAQ,GAAKA,MACpB,EAAOuzB,OAAS,GAAWA,OAC3B,EAAOvJ,KAAO,GAAWA,KACzB,EAAOgQ,UAAY,GAAOA,UAC1B,EAAOtG,KAAO,GAAWA,KACzB,EAAO9C,YAAc,GAAMA,YAC3B,EAAOC,cAAgB,GAAMA,cAC7B,EAAOC,cAAgB,GAAMA,cAC7B,EAAOC,gBAAkB,GAAMA,gBAC/B,EAAOC,kBAAoB,GAAMA,kBACjC,EAAOC,kBAAoB,GAAMA,kBACjC,EAAOgJ,UAAY,GAAOA,UAC1B,EAAOC,WAAa,GAAOA,WAC3B,EAAOh4B,SAAW,GAAKA,SACvB,EAAOw0B,IAAM,GAAKA,IAClB,EAAOC,MAAQ,GAAKA,MACpB,EAAOwD,SAAW,GAAOA,SACzB,EAAO8B,MAAQ,GAAKA,MACpB,EAAOpO,SAAW,GAAKA,SACvB,EAAO3I,UAAYA,EAAA,EACnB,EAAO+Q,SAAW,GAAKA,SACvB,EAAOoE,QAAU,GAAOA,QACxB,EAAOvQ,SAAW,GAAKA,SACvB,EAAOqM,cAAgB,GAAKA,cAC5B,EAAOplD,SAAW,GAAKA,SACvB,EAAOupD,QAAU,GAAOA,QACxB,EAAO9iB,KAAO,GAAOA,KACrB,EAAO+iB,QAAU,GAAOA,QACxB,EAAOC,UAAY,GAAOA,UAC1B,EAAOjzC,SAAW,GAAOA,SACzB,EAAOkzC,SAAW,GAAOA,SACzB,EAAO0B,SAAW,GAAKA,SACvB,EAAOzB,UAAY,GAAOA,UAC1B,EAAOC,WAAa,GAAOA,WAG3B,EAAOlnD,KAAO,GAAW8kC,QACzB,EAAOma,UAAY,GAAWM,aAC9B,EAAOl/C,MAAQ,GAAMvB,KAErB,GAAM,GACA4e,GAAS,GACb,aAAW,GAAQ,SAAS1iB,EAAMk7C,GAC3B,GAAen/C,KAAK,EAAOyB,UAAW09C,KACzCx4B,GAAOw4B,GAAcl7C,MAGlB0iB,IACH,CAAE,OAAS,IASjB,EAAOsrC,QAvXO,WAwXb,EAAOrC,iBAAmB,GAAOA,kBAAkBsC,QAAQtyC,EAAI,EAGhE,YAAU,CAAC,OAAQ,UAAW,QAAS,aAAc,UAAW,iBAAiB,SAASu/B,GACxF,EAAOA,GAAYtD,YAAc,KAInC,YAAU,CAAC,OAAQ,SAAS,SAASsD,EAAY76C,GAC/C,EAAY7C,UAAU09C,GAAc,SAAS79C,GAC3CA,OAAUwD,IAANxD,EAAkB,EAAI,GAAU,OAAAo5C,EAAA,GAAUp5C,GAAI,GAElD,IAAIyC,EAAUnB,KAAKs5C,eAAiB53C,EAChC,IAAI,EAAY1B,MAChBA,KAAKyH,QAUT,OARItG,EAAOm4C,aACTn4C,EAAOq4C,cAAgB,GAAU96C,EAAGyC,EAAOq4C,eAE3Cr4C,EAAOs4C,UAAUj3C,KAAK,CACpB,KAAQ,GAAU9D,EAlYH,YAmYf,KAAQ69C,GAAcp7C,EAAOk4C,QAAU,EAAI,QAAU,MAGlDl4C,GAGT,EAAYtC,UAAU09C,EAAa,SAAW,SAAS79C,GACrD,OAAOsB,KAAKic,UAAUsgC,GAAY79C,GAAGud,cAKzC,YAAU,CAAC,SAAU,MAAO,cAAc,SAASsgC,EAAY76C,GAC7D,IAAIH,EAAOG,EAAQ,EACf6tD,EArZiB,GAqZNhuD,GApZK,GAoZuBA,EAE3C,EAAY1C,UAAU09C,GAAc,SAAS96C,GAC3C,IAAIN,EAASnB,KAAKyH,QAMlB,OALAtG,EAAOo4C,cAAc/2C,KAAK,CACxB,SAAY,aAAaf,EAAU,GACnC,KAAQF,IAEVJ,EAAOm4C,aAAen4C,EAAOm4C,cAAgBiW,EACtCpuD,MAKX,YAAU,CAAC,OAAQ,SAAS,SAASo7C,EAAY76C,GAC/C,IAAI8tD,EAAW,QAAU9tD,EAAQ,QAAU,IAE3C,EAAY7C,UAAU09C,GAAc,WAClC,OAAOv8C,KAAKwvD,GAAU,GAAGtxD,QAAQ,OAKrC,YAAU,CAAC,UAAW,SAAS,SAASq+C,EAAY76C,GAClD,IAAI+tD,EAAW,QAAU/tD,EAAQ,GAAK,SAEtC,EAAY7C,UAAU09C,GAAc,WAClC,OAAOv8C,KAAKs5C,aAAe,IAAI,EAAYt5C,MAAQA,KAAKyvD,GAAU,OAItE,EAAY5wD,UAAUmjD,QAAU,WAC9B,OAAOhiD,KAAKwR,OAAOumC,EAAA,IAGrB,EAAYl5C,UAAU6S,KAAO,SAASpP,GACpC,OAAOtC,KAAKwR,OAAOlP,GAAW6C,QAGhC,EAAYtG,UAAU2mD,SAAW,SAASljD,GACxC,OAAOtC,KAAKic,UAAUvK,KAAKpP,IAG7B,EAAYzD,UAAUinD,UAAY,cAAS,SAAS5W,EAAM/5B,GACxD,MAAmB,mBAAR+5B,EACF,IAAI,EAAYlvC,MAElBA,KAAKuG,KAAI,SAASrI,GACvB,OAAO,GAAWA,EAAOgxC,EAAM/5B,SAInC,EAAYtW,UAAU4d,OAAS,SAASna,GACtC,OAAOtC,KAAKwR,OAAO,GAAO,aAAalP,MAGzC,EAAYzD,UAAUyE,MAAQ,SAAShC,EAAO6F,GAC5C7F,EAAQ,OAAAw2C,EAAA,GAAUx2C,GAElB,IAAIH,EAASnB,KACb,OAAImB,EAAOm4C,eAAiBh4C,EAAQ,GAAK6F,EAAM,GACtC,IAAI,EAAYhG,IAErBG,EAAQ,EACVH,EAASA,EAAO+iD,WAAW5iD,GAClBA,IACTH,EAASA,EAAOihD,KAAK9gD,SAEXY,IAARiF,IAEFhG,GADAgG,EAAM,OAAA2wC,EAAA,GAAU3wC,IACD,EAAIhG,EAAOkhD,WAAWl7C,GAAOhG,EAAO8iD,KAAK98C,EAAM7F,IAEzDH,IAGT,EAAYtC,UAAUslD,eAAiB,SAAS7hD,GAC9C,OAAOtC,KAAKic,UAAUmoC,UAAU9hD,GAAW2Z,WAG7C,EAAYpd,UAAUiH,QAAU,WAC9B,OAAO9F,KAAKikD,KAjeS,aAqevB,aAAW,EAAYplD,WAAW,SAASwC,EAAMk7C,GAC/C,IAAImT,EAAgB,qCAAqC9gD,KAAK2tC,GAC1DoT,EAAU,kBAAkB/gD,KAAK2tC,GACjCqT,EAAa,EAAOD,EAAW,QAAwB,QAAdpT,EAAuB,QAAU,IAAOA,GACjFsT,EAAeF,GAAW,QAAQ/gD,KAAK2tC,GAEtCqT,IAGL,EAAO/wD,UAAU09C,GAAc,WAC7B,IAAIr+C,EAAQ8B,KAAKm5C,YACbhkC,EAAOw6C,EAAU,CAAC,GAAKlpD,UACvBqpD,EAAS5xD,aAAiB,EAC1BuD,EAAW0T,EAAK,GAChB46C,EAAUD,GAAU,OAAA7uD,EAAA,GAAQ/C,GAE5B8iD,EAAc,SAAS9iD,GACzB,IAAIiD,EAASyuD,EAAWpsD,MAAM,EAAQ,aAAU,CAACtF,GAAQiX,IACzD,OAAQw6C,GAAW/V,EAAYz4C,EAAO,GAAKA,GAGzC4uD,GAAWL,GAAoC,mBAAZjuD,GAA6C,GAAnBA,EAASE,SAExEmuD,EAASC,GAAU,GAErB,IAAInW,EAAW55C,KAAK65C,UAChBmW,IAAahwD,KAAKo5C,YAAYz3C,OAC9BsuD,EAAcJ,IAAiBjW,EAC/BsW,EAAWJ,IAAWE,EAE1B,IAAKH,GAAgBE,EAAS,CAC5B7xD,EAAQgyD,EAAWhyD,EAAQ,IAAI,EAAY8B,MAC3C,IAAImB,EAASE,EAAKmC,MAAMtF,EAAOiX,GAE/B,OADAhU,EAAOi4C,YAAY52C,KAAK,CAAE,KAAQ,GAAM,KAAQ,CAACw+C,GAAc,aAAW9+C,IACnE,IAAI,EAAcf,EAAQy4C,GAEnC,OAAIqW,GAAeC,EACV7uD,EAAKmC,MAAMxD,KAAMmV,IAE1BhU,EAASnB,KAAK+9C,KAAKiD,GACZiP,EAAeN,EAAUxuD,EAAOjD,QAAQ,GAAKiD,EAAOjD,QAAWiD,QAK1E,YAAU,CAAC,MAAO,OAAQ,QAAS,OAAQ,SAAU,YAAY,SAASo7C,GACxE,IAAIl7C,EAAO,GAAWk7C,GAClB4T,EAAY,0BAA0BvhD,KAAK2tC,GAAc,MAAQ,OACjEsT,EAAe,kBAAkBjhD,KAAK2tC,GAE1C,EAAO19C,UAAU09C,GAAc,WAC7B,IAAIpnC,EAAO1O,UACX,GAAIopD,IAAiB7vD,KAAK65C,UAAW,CACnC,IAAI37C,EAAQ8B,KAAK9B,QACjB,OAAOmD,EAAKmC,MAAM,OAAAvC,EAAA,GAAQ/C,GAASA,EAAQ,GAAIiX,GAEjD,OAAOnV,KAAKmwD,IAAW,SAASjyD,GAC9B,OAAOmD,EAAKmC,MAAM,OAAAvC,EAAA,GAAQ/C,GAASA,EAAQ,GAAIiX,UAMrD,aAAW,EAAYtW,WAAW,SAASwC,EAAMk7C,GAC/C,IAAIqT,EAAa,EAAOrT,GACxB,GAAIqT,EAAY,CACd,IAAIpxD,EAAMoxD,EAAWpyD,KAAO,GACvB,GAAeJ,KAAK,EAAWoB,KAClC,EAAUA,GAAO,IAEnB,EAAUA,GAAKgE,KAAK,CAAE,KAAQ+5C,EAAY,KAAQqT,QAItD,EAAU,QAAa1tD,EAtjBE,GAsjB6B1E,MAAQ,CAAC,CAC7D,KAAQ,UACR,UAAQ0E,IAIV,EAAYrD,UAAU4I,MAAQ,GAC9B,EAAY5I,UAAUod,QAAU,GAChC,EAAYpd,UAAUX,MAAQ,GAG9B,EAAOW,UAAUirD,GAAK,GAAIA,GAC1B,EAAOjrD,UAAUwgD,MAAQ,GAAI2M,aAC7B,EAAOntD,UAAU+sD,OAAS,GAAIA,OAC9B,EAAO/sD,UAAU8O,KAAO,GAAIA,KAC5B,EAAO9O,UAAUm/C,MAAQ,GAAIA,MAC7B,EAAOn/C,UAAUod,QAAU,GAAIA,QAC/B,EAAOpd,UAAUktD,OAAS,EAAOltD,UAAUw1C,QAAU,EAAOx1C,UAAUX,MAAQ,GAAIA,MAGlF,EAAOW,UAAU6H,MAAQ,EAAO7H,UAAUsG,KAEtC,KACF,EAAOtG,UAAU,IAAe,GAAIitD,YAGvB;;;;;;;;;kCC/mBA,IAXf,SAAmBtqD,EAAOikB,GAKxB,IAJA,IAAI/jB,GAAS,EACTC,EAAS8jB,EAAO9jB,OAChBwmC,EAAS3mC,EAAMG,SAEVD,EAAQC,GACfH,EAAM2mC,EAASzmC,GAAS+jB,EAAO/jB,GAEjC,OAAOF,I,6BChBT,oCAoBe,IAPf,SAAkBtD,EAAOS,GACvB,OAAI,YAAQT,GACHA,EAEF,YAAMA,EAAOS,GAAU,CAACT,GAAS,YAAa,YAASA,M,6BCOjD,IAff,SAAqBsD,EAAOc,GAM1B,IALA,IAAIZ,GAAS,EACTC,EAAkB,MAATH,EAAgB,EAAIA,EAAMG,OACnCy5C,EAAW,EACXj6C,EAAS,KAEJO,EAAQC,GAAQ,CACvB,IAAIzD,EAAQsD,EAAME,GACdY,EAAUpE,EAAOwD,EAAOF,KAC1BL,EAAOi6C,KAAcl9C,GAGzB,OAAOiD,I,6BCrBT,qBAWIivD,EAAW,YAAe,KAEf,O,6BCbf,YAiBe,IANf,SAAmB5uD,EAAOF,EAAO6F,GAC/B,IAAIxF,EAASH,EAAMG,OAEnB,OADAwF,OAAcjF,IAARiF,EAAoBxF,EAASwF,GAC1B7F,GAAS6F,GAAOxF,EAAUH,EAAQ,YAAUA,EAAOF,EAAO6F,K,6BCdrE,YAyCe,IAZf,SAAkBjJ,GAChB,OAAKA,GAGLA,EAAQ,YAASA,MA9BJ,KA+BaA,KA/Bb,IACG,uBA+BFA,EAAQ,GAAK,EAAI,GAGxBA,GAAUA,EAAQA,EAAQ,EAPd,IAAVA,EAAcA,EAAQ,I,gDCdlB,MAJf,SAAyBA,GACvB,OAAO,OAAA+7C,EAAA,GAAa/7C,IAVR,sBAUkB,YAAWA,ICVvCusC,EAAc9sC,OAAOkB,UAGrB,EAAiB4rC,EAAY3rC,eAG7BuxD,EAAuB5lB,EAAY4lB,qBAoBnCluD,EAAc,EAAgB,WAAa,OAAOsE,UAApB,IAAsC,EAAkB,SAASvI,GACjG,OAAO,OAAA+7C,EAAA,GAAa/7C,IAAU,EAAed,KAAKc,EAAO,YACtDmyD,EAAqBjzD,KAAKc,EAAO,WAGvB,O,2FCjBA,EAJG,KAAQ,EAAI,YAAW,IAAI,IAAI,CAAC,EAAE,KAAK,IAT1C,IASoE,SAASunB,GAC1F,OAAO,IAAI,IAAIA,IAD2Drd,EAAA,ECyD7D,IApDf,SAAkB5G,EAAOC,EAAUy7C,GACjC,IAAIx7C,GAAS,EACTw8C,EAAW,IACXv8C,EAASH,EAAMG,OACfo6C,GAAW,EACX56C,EAAS,GACTq9C,EAAOr9C,EAEX,GAAI+7C,EACFnB,GAAW,EACXmC,EAAW,SAER,GAAIv8C,GAvBY,IAuBgB,CACnC,IAAI2gB,EAAM7gB,EAAW,KAAO,EAAUD,GACtC,GAAI8gB,EACF,OAAO,YAAWA,GAEpBy5B,GAAW,EACXmC,EAAW,IACXM,EAAO,IAAI,SAGXA,EAAO/8C,EAAW,GAAKN,EAEzBs9C,EACA,OAAS/8C,EAAQC,GAAQ,CACvB,IAAIzD,EAAQsD,EAAME,GACd0vB,EAAW3vB,EAAWA,EAASvD,GAASA,EAG5C,GADAA,EAASg/C,GAAwB,IAAVh/C,EAAeA,EAAQ,EAC1C69C,GAAY3qB,GAAaA,EAAU,CAErC,IADA,IAAIk/B,EAAY9R,EAAK78C,OACd2uD,KACL,GAAI9R,EAAK8R,KAAel/B,EACtB,SAASqtB,EAGTh9C,GACF+8C,EAAKh8C,KAAK4uB,GAEZjwB,EAAOqB,KAAKtE,QAEJggD,EAASM,EAAMptB,EAAU8rB,KAC7BsB,IAASr9C,GACXq9C,EAAKh8C,KAAK4uB,GAEZjwB,EAAOqB,KAAKtE,IAGhB,OAAOiD,I,wDCpCLovD,EAAiB,GACrBA,EAZiB,yBAYYA,EAXZ,yBAYjBA,EAXc,sBAWYA,EAVX,uBAWfA,EAVe,uBAUYA,EATZ,uBAUfA,EATsB,8BASYA,EARlB,wBAShBA,EARgB,yBAQY,EAC5BA,EAjCc,sBAiCYA,EAhCX,kBAiCfA,EApBqB,wBAoBYA,EAhCnB,oBAiCdA,EApBkB,qBAoBYA,EAhChB,iBAiCdA,EAhCe,kBAgCYA,EA/Bb,qBAgCdA,EA/Ba,gBA+BYA,EA9BT,mBA+BhBA,EA9BgB,mBA8BYA,EA7BZ,mBA8BhBA,EA7Ba,gBA6BYA,EA5BT,mBA6BhBA,EA5BiB,qBA4BY,EAcd,MALf,SAA0BryD,GACxB,OAAO,OAAA+7C,EAAA,GAAa/7C,IAClB,OAAA6pD,EAAA,GAAS7pD,EAAMyD,WAAa4uD,EAAe,YAAWryD,K,gBCnDtDsyD,EAAmB,KAAY,IAAS/iB,aAmBxCA,EAAe+iB,EAAmB,YAAUA,GAAoB,EAErD,O,6BC1Bf,oBAuBe,IAZf,SAAiB7xD,EAAQuwC,GAMvB,IAHA,IAAIxtC,EAAQ,EACRC,GAHJutC,EAAO,YAASA,EAAMvwC,IAGJgD,OAED,MAAVhD,GAAkB+C,EAAQC,GAC/BhD,EAASA,EAAO,YAAMuwC,EAAKxtC,OAE7B,OAAQA,GAASA,GAASC,EAAUhD,OAASuD,I,6BCChC,IAZf,SAAmBs6C,EAAQ6D,EAAOC,GAShC,OARI9D,GAAWA,SACCt6C,IAAVo+C,IACF9D,EAASA,GAAU8D,EAAQ9D,EAAS8D,QAExBp+C,IAAVm+C,IACF7D,EAASA,GAAU6D,EAAQ7D,EAAS6D,IAGjC7D,I,0CCNM,MAJf,SAAkB79C,EAAQH,GACxB,OAAiB,MAAVG,OAAiBuD,EAAYvD,EAAOH,ICO9B,IALf,SAAmBG,EAAQH,GACzB,IAAIN,EAAQ,EAASS,EAAQH,GAC7B,OAAO,YAAaN,GAASA,OAAQgE,I,cCZvC,IAAIuuD,EAAoC,oBAAjBC,aAA+BxvD,MAAQwvD,aA8G9D,SAASzpD,EAAImV,GACX,OAAOtU,KAAK2rC,KAAKkd,EAAUv0C,IAG7B,IAAIza,EAASsF,EAQb,SAAS0pD,EAAUv0C,GACjB,OAAOA,EAAE,GAAKA,EAAE,GAAKA,EAAE,GAAKA,EAAE,GAGhC,IAAIw0C,EAAeD,EA8EnB,SAASE,EAASC,EAAIC,GACpB,OAAOjpD,KAAK2rC,MAAMqd,EAAG,GAAKC,EAAG,KAAOD,EAAG,GAAKC,EAAG,KAAOD,EAAG,GAAKC,EAAG,KAAOD,EAAG,GAAKC,EAAG,KAGrF,IAAIC,EAAOH,EAQX,SAASI,EAAeH,EAAIC,GAC1B,OAAQD,EAAG,GAAKC,EAAG,KAAOD,EAAG,GAAKC,EAAG,KAAOD,EAAG,GAAKC,EAAG,KAAOD,EAAG,GAAKC,EAAG,IAG3E,IAAIG,EAAaD,EAoEjBl0D,EAAQwB,OAxRR,SAAgBg0C,EAAGC,GACjB,IAAI2e,EAAM,IAAIV,EAAU,GAYxB,OAVS,MAALle,IACFA,EAAI,GAGG,MAALC,IACFA,EAAI,GAGN2e,EAAI,GAAK5e,EACT4e,EAAI,GAAK3e,EACF2e,GA4QTp0D,EAAQwK,KAlQR,SAAc4pD,EAAK/0C,GAGjB,OAFA+0C,EAAI,GAAK/0C,EAAE,GACX+0C,EAAI,GAAK/0C,EAAE,GACJ+0C,GAgQTp0D,EAAQ0K,MAvPR,SAAe2U,GACb,IAAI+0C,EAAM,IAAIV,EAAU,GAGxB,OAFAU,EAAI,GAAK/0C,EAAE,GACX+0C,EAAI,GAAK/0C,EAAE,GACJ+0C,GAoPTp0D,EAAQulB,IAzOR,SAAa6uC,EAAKnmD,EAAGC,GAGnB,OAFAkmD,EAAI,GAAKnmD,EACTmmD,EAAI,GAAKlmD,EACFkmD,GAuOTp0D,EAAQuD,IA7NR,SAAa6wD,EAAKL,EAAIC,GAGpB,OAFAI,EAAI,GAAKL,EAAG,GAAKC,EAAG,GACpBI,EAAI,GAAKL,EAAG,GAAKC,EAAG,GACbI,GA2NTp0D,EAAQq0D,YAhNR,SAAqBD,EAAKL,EAAIC,EAAI/lD,GAGhC,OAFAmmD,EAAI,GAAKL,EAAG,GAAKC,EAAG,GAAK/lD,EACzBmmD,EAAI,GAAKL,EAAG,GAAKC,EAAG,GAAK/lD,EAClBmmD,GA8MTp0D,EAAQs0D,IApMR,SAAaF,EAAKL,EAAIC,GAGpB,OAFAI,EAAI,GAAKL,EAAG,GAAKC,EAAG,GACpBI,EAAI,GAAKL,EAAG,GAAKC,EAAG,GACbI,GAkMTp0D,EAAQkK,IAAMA,EACdlK,EAAQ4E,OAASA,EACjB5E,EAAQ4zD,UAAYA,EACpB5zD,EAAQ6zD,aAAeA,EACvB7zD,EAAQu0D,IArKR,SAAaH,EAAKL,EAAIC,GAGpB,OAFAI,EAAI,GAAKL,EAAG,GAAKC,EAAG,GACpBI,EAAI,GAAKL,EAAG,GAAKC,EAAG,GACbI,GAmKTp0D,EAAQ6oB,IAzJR,SAAaurC,EAAKL,EAAIC,GAGpB,OAFAI,EAAI,GAAKL,EAAG,GAAKC,EAAG,GACpBI,EAAI,GAAKL,EAAG,GAAKC,EAAG,GACbI,GAuJTp0D,EAAQw0D,IA7IR,SAAaT,EAAIC,GACf,OAAOD,EAAG,GAAKC,EAAG,GAAKD,EAAG,GAAKC,EAAG,IA6IpCh0D,EAAQ8nB,MAnIR,SAAessC,EAAK/0C,EAAGpd,GAGrB,OAFAmyD,EAAI,GAAK/0C,EAAE,GAAKpd,EAChBmyD,EAAI,GAAK/0C,EAAE,GAAKpd,EACTmyD,GAiITp0D,EAAQy0D,UAxHR,SAAmBL,EAAK/0C,GACtB,IAAI7e,EAAI0J,EAAImV,GAUZ,OARU,IAAN7e,GACF4zD,EAAI,GAAK,EACTA,EAAI,GAAK,IAETA,EAAI,GAAK/0C,EAAE,GAAK7e,EAChB4zD,EAAI,GAAK/0C,EAAE,GAAK7e,GAGX4zD,GA8GTp0D,EAAQ8zD,SAAWA,EACnB9zD,EAAQi0D,KAAOA,EACfj0D,EAAQk0D,eAAiBA,EACzBl0D,EAAQm0D,WAAaA,EACrBn0D,EAAQ2pD,OAjFR,SAAgByK,EAAK/0C,GAGnB,OAFA+0C,EAAI,IAAM/0C,EAAE,GACZ+0C,EAAI,IAAM/0C,EAAE,GACL+0C,GA+ETp0D,EAAQ00D,KApER,SAAcN,EAAKL,EAAIC,EAAI5yD,GAGzB,OAFAgzD,EAAI,GAAKL,EAAG,GAAK3yD,GAAK4yD,EAAG,GAAKD,EAAG,IACjCK,EAAI,GAAKL,EAAG,GAAK3yD,GAAK4yD,EAAG,GAAKD,EAAG,IAC1BK,GAkETp0D,EAAQ20D,eAxDR,SAAwBP,EAAK/0C,EAAG/e,GAC9B,IAAIk1C,EAAIn2B,EAAE,GACNo2B,EAAIp2B,EAAE,GAGV,OAFA+0C,EAAI,GAAK9zD,EAAE,GAAKk1C,EAAIl1C,EAAE,GAAKm1C,EAAIn1C,EAAE,GACjC8zD,EAAI,GAAK9zD,EAAE,GAAKk1C,EAAIl1C,EAAE,GAAKm1C,EAAIn1C,EAAE,GAC1B8zD,GAoDTp0D,EAAQi+C,IA1CR,SAAamW,EAAKL,EAAIC,GAGpB,OAFAI,EAAI,GAAKrpD,KAAKkzC,IAAI8V,EAAG,GAAIC,EAAG,IAC5BI,EAAI,GAAKrpD,KAAKkzC,IAAI8V,EAAG,GAAIC,EAAG,IACrBI,GAwCTp0D,EAAQg4B,IA9BR,SAAao8B,EAAKL,EAAIC,GAGpB,OAFAI,EAAI,GAAKrpD,KAAKitB,IAAI+7B,EAAG,GAAIC,EAAG,IAC5BI,EAAI,GAAKrpD,KAAKitB,IAAI+7B,EAAG,GAAIC,EAAG,IACrBI,I,6BC9RT,2BAQIQ,EAAY5vD,SAASlD,UACrB4rC,EAAc9sC,OAAOkB,UAGrB+yD,EAAeD,EAAUhuD,SAGzB7E,EAAiB2rC,EAAY3rC,eAG7B+yD,EAAmBD,EAAax0D,KAAKO,QA2C1B,IAbf,SAAuBO,GACrB,IAAK,YAAaA,IA5CJ,mBA4Cc,YAAWA,GACrC,OAAO,EAET,IAAImK,EAAQ,YAAanK,GACzB,GAAc,OAAVmK,EACF,OAAO,EAET,IAAIC,EAAOxJ,EAAe1B,KAAKiL,EAAO,gBAAkBA,EAAMxC,YAC9D,MAAsB,mBAARyC,GAAsBA,aAAgBA,GAClDspD,EAAax0D,KAAKkL,IAASupD,I,6BC1D/B,mBAoCe,IA1Bf,SAAwBC,GACtB,OAAO,aAAS,SAASnzD,EAAQozD,GAC/B,IAAIrwD,GAAS,EACTC,EAASowD,EAAQpwD,OACjB4yC,EAAa5yC,EAAS,EAAIowD,EAAQpwD,EAAS,QAAKO,EAChD+5C,EAAQt6C,EAAS,EAAIowD,EAAQ,QAAK7vD,EAWtC,IATAqyC,EAAcud,EAASnwD,OAAS,GAA0B,mBAAd4yC,GACvC5yC,IAAU4yC,QACXryC,EAEA+5C,GAAS,YAAe8V,EAAQ,GAAIA,EAAQ,GAAI9V,KAClD1H,EAAa5yC,EAAS,OAAIO,EAAYqyC,EACtC5yC,EAAS,GAEXhD,EAAShB,OAAOgB,KACP+C,EAAQC,GAAQ,CACvB,IAAIoiB,EAASguC,EAAQrwD,GACjBqiB,GACF+tC,EAASnzD,EAAQolB,EAAQriB,EAAO6yC,GAGpC,OAAO51C,O,6BChCX,WAGIqzD,EAAer0D,OAAOY,OAUtB0zD,EAAc,WAChB,SAAStzD,KACT,OAAO,SAAS0J,GACd,IAAK,YAASA,GACZ,MAAO,GAET,GAAI2pD,EACF,OAAOA,EAAa3pD,GAEtB1J,EAAOE,UAAYwJ,EACnB,IAAIlH,EAAS,IAAIxC,EAEjB,OADAA,EAAOE,eAAYqD,EACZf,GAZM,GAgBF,O,6BC5Bf,IAWI+wD,EAAevmD,OAAO,uFAaX,IAJf,SAAoBqW,GAClB,OAAOkwC,EAAatjD,KAAKoT,K,6BCtB3B,+BAQImwC,EAASxmD,OAHA,OAGe,KAeb,IANf,SAA0BrF,GACxB,OAAO,SAAS0b,GACd,OAAO,YAAY,YAAM,YAAOA,GAAQha,QAAQmqD,EAAQ,KAAM7rD,EAAU,O,0CCR7D,EAFC,YAAa,U,QCAzB4uC,EAAW,oBACXC,EAAU,kDACVC,EAAS,2BAETC,EAAc,qBACdC,EAAa,kCACbC,EAAa,qCAIbC,EAPa,MAAQL,EAAU,IAAMC,EAAS,IAOtB,IAGxBK,EAFW,oBAEQD,GADP,gBAAwB,CAACH,EAAaC,EAAYC,GAAYvmC,KAAK,KAAnE,qBAA2FwmC,EAAW,MAElHE,EAAW,MAAQ,CAACL,EAAcF,EAAU,IAAKA,EAASG,EAAYC,EAAYL,GAAUlmC,KAAK,KAAO,IAGxG2mC,EAAYhqC,OAAOypC,EAAS,MAAQA,EAAS,KAAOM,EAAWD,EAAO,KAiB3D,MARf,SAAqBzzB,GAEnB,IADA,IAAI7gB,EAASw0C,EAAUU,UAAY,EAC5BV,EAAU/mC,KAAKoT,MAClB7gB,EAEJ,OAAOA,GCvBM,IANf,SAAoB6gB,GAClB,OAAO,YAAWA,GACd,EAAYA,GACZ,EAAUA,K,kDCQD,MAZf,SAAuBxgB,EAAOtD,EAAOw/C,GAInC,IAHA,IAAIh8C,EAAQg8C,EAAY,EACpB/7C,EAASH,EAAMG,SAEVD,EAAQC,GACf,GAAIH,EAAME,KAAWxD,EACnB,OAAOwD,EAGX,OAAQ,GCAK,IANf,SAAqBF,EAAOtD,EAAOw/C,GACjC,OAAOx/C,GAAUA,EACb,EAAcsD,EAAOtD,EAAOw/C,GAC5B,YAAcl8C,EAAO,IAAWk8C,K,6BCftC,IACQ0U,EADJC,EAAaryD,MAAQA,KAAKqyD,YACtBD,EAAgB,SAAU70D,EAAG0N,GAI7B,OAHAmnD,EAAgBz0D,OAAO20D,gBAClB,CAAEC,UAAW,cAAgBrxD,OAAS,SAAU3D,EAAG0N,GAAK1N,EAAEg1D,UAAYtnD,IACvE,SAAU1N,EAAG0N,GAAK,IAAK,IAAIlM,KAAKkM,EAAOtN,OAAOkB,UAAUC,eAAe1B,KAAK6N,EAAGlM,KAAIxB,EAAEwB,GAAKkM,EAAElM,MAC3ExB,EAAG0N,IAErB,SAAU1N,EAAG0N,GAChB,GAAiB,mBAANA,GAA0B,OAANA,EAC3B,MAAM,IAAImU,UAAU,uBAAyBtS,OAAO7B,GAAK,iCAE7D,SAASunD,IAAOxyD,KAAK6F,YAActI,EADnC60D,EAAc70D,EAAG0N,GAEjB1N,EAAEsB,UAAkB,OAANoM,EAAatN,OAAOY,OAAO0M,IAAMunD,EAAG3zD,UAAYoM,EAAEpM,UAAW,IAAI2zD,KAGnFC,EAAmBzyD,MAAQA,KAAKyyD,kBAAqB90D,OAAOY,OAAS,SAAUb,EAAGL,EAAGq1D,EAAGC,QAC7EzwD,IAAPywD,IAAkBA,EAAKD,GAC3B/0D,OAAOC,eAAeF,EAAGi1D,EAAI,CAAE90D,YAAY,EAAMC,IAAK,WAAa,OAAOT,EAAEq1D,OAC3E,SAAUh1D,EAAGL,EAAGq1D,EAAGC,QACTzwD,IAAPywD,IAAkBA,EAAKD,GAC3Bh1D,EAAEi1D,GAAMt1D,EAAEq1D,KAEVE,EAAsB5yD,MAAQA,KAAK4yD,qBAAwBj1D,OAAOY,OAAS,SAAUb,EAAG0e,GACxFze,OAAOC,eAAeF,EAAG,UAAW,CAAEG,YAAY,EAAMK,MAAOke,KAC9D,SAAS1e,EAAG0e,GACb1e,EAAW,QAAI0e,IAEfy2C,EAAgB7yD,MAAQA,KAAK6yD,cAAiB,SAAUC,GACxD,GAAIA,GAAOA,EAAIz0D,WAAY,OAAOy0D,EAClC,IAAI3xD,EAAS,GACb,GAAW,MAAP2xD,EAAa,IAAK,IAAIJ,KAAKI,EAAe,YAANJ,GAAmB/0D,OAAOkB,UAAUC,eAAe1B,KAAK01D,EAAKJ,IAAID,EAAgBtxD,EAAQ2xD,EAAKJ,GAEtI,OADAE,EAAmBzxD,EAAQ2xD,GACpB3xD,GAEXxD,OAAOC,eAAeb,EAAS,aAAc,CAAEmB,OAAO,IACtDnB,EAAQg2D,WAAQ,EAChB,IAAIC,EAAOH,EAAa,EAAQ,MAC5BI,EAAU,EAAQ,KAElBF,EAAuB,SAAUG,GAEjC,SAASH,EAAMxgB,EAAGC,GACd,IAAI2gB,EAAQD,EAAO91D,KAAK4C,OAASA,KAGjC,OAFAmzD,EAAM5gB,EAAS,MAALA,EAAY,EAAIA,EAC1B4gB,EAAM3gB,EAAS,MAALA,EAAY,EAAIA,EACnB2gB,EAiTX,OAtTAd,EAAUU,EAAOG,GAOjBv1D,OAAOC,eAAem1D,EAAMl0D,UAAWb,OAAOC,YAAa,CACvDH,IAAK,WACD,OAAOi1D,EAAM90D,aAEjBJ,YAAY,EACZwkB,cAAc,IAKlB0wC,EAAMl0D,UAAU+zB,MAAQ,SAAU6pB,GAI9B,YAHkB,IAAdA,IAAwBA,EAAY,GACxCz8C,KAAKuyC,EAAIygB,EAAKpgC,MAAM5yB,KAAKuyC,EAAGkK,GAC5Bz8C,KAAKwyC,EAAIwgB,EAAKpgC,MAAM5yB,KAAKwyC,EAAGiK,GACrBz8C,MAEX+yD,EAAMl0D,UAAUyB,IAAM,SAAUiyC,EAAGC,GAC/B,IAAIzzC,EAAIg0D,EAAMx0D,OAAOg0C,EAAGC,GAGxB,OAFAxyC,KAAKuyC,GAAKxzC,EAAEwzC,EACZvyC,KAAKwyC,GAAKzzC,EAAEyzC,EACLxyC,MAEX+yD,EAAMl0D,UAAU4sD,OAAS,SAAUlZ,EAAGC,GAClC,IAAIzzC,EAAIg0D,EAAMx0D,OAAOg0C,EAAGC,GAGxB,OAFAxyC,KAAKuyC,EAAIxzC,EAAEwzC,EACXvyC,KAAKwyC,EAAIzzC,EAAEyzC,EACJxyC,MAEX+yD,EAAMl0D,UAAUu0D,UAAY,SAAUC,EAAIC,GACtC,IAAIn1D,EAAI40D,EAAMx0D,OAAO80D,EAAIC,GAGzB,OAFAtzD,KAAKuyC,GAAKp0C,EAAEo0C,EACZvyC,KAAKwyC,GAAKr0C,EAAEq0C,EACLxyC,MAKX+yD,EAAMl0D,UAAU00D,OAAS,SAAUC,EAAQC,GACvC,IAAI10D,EAAIg0D,EAAMQ,OAAOvzD,KAAMwzD,EAAQC,GAGnC,OAFAzzD,KAAKuyC,EAAIxzC,EAAEwzC,EACXvyC,KAAKwyC,EAAIzzC,EAAEyzC,EACJxyC,MAMX+yD,EAAMl0D,UAAUgmB,MAAQ,SAAU6uC,EAAIC,EAAIC,QACvB,IAAXA,IAAqBA,EAAS,IAAIb,GACtC,IAAIc,EAAMd,EAAMx0D,OAAOq1D,GAGvB,OAFA5zD,KAAKuyC,EAAIshB,EAAIthB,EAAImhB,GAAM1zD,KAAKuyC,EAAIshB,EAAIthB,GACpCvyC,KAAKwyC,EAAIqhB,EAAIrhB,EAAImhB,GAAM3zD,KAAKwyC,EAAIqhB,EAAIrhB,GAC7BxyC,MAMX+yD,EAAMl0D,UAAU0c,QAAU,SAAUu4C,GAChC,IAAIX,EAAQnzD,KACZ,GAAsB,IAAlB8zD,EAAOnyD,OACP,OAAOoxD,EAAMx0D,OAAOu1D,EAAO,IAE/B,IAAI5tD,EAAM,KACN80C,EAAMuD,IAQV,OAPAuV,EAAO3oB,SAAQ,SAAUpsC,GACrB,IAAIiyD,EAAOmC,EAAMY,gBAAgBh1D,GAC7BiyD,EAAOhW,IACP90C,EAAMnH,EACNi8C,EAAMgW,MAGP9qD,EAAM6sD,EAAMx0D,OAAO2H,GAAO,MAKrC6sD,EAAMl0D,UAAUgyD,SAAW,SAAU9xD,GACjC,OAAO+I,KAAK2rC,KAAKzzC,KAAK+zD,gBAAgBh1D,KAQ1Cg0D,EAAMl0D,UAAUk1D,gBAAkB,SAAUh1D,GACxC,IAAI80D,EAAMd,EAAMx0D,OAAOQ,GACnBs0D,EAAKrzD,KAAKuyC,EAAIshB,EAAIthB,EAClB+gB,EAAKtzD,KAAKwyC,EAAIqhB,EAAIrhB,EACtB,OAAO6gB,EAAKA,EAAKC,EAAKA,GAE1BP,EAAMl0D,UAAUm1D,kBAAoB,SAAUj1D,GAC1C,IAAI80D,EAAMd,EAAMx0D,OAAOQ,GACvB,OAAO+I,KAAKinC,IAAI8kB,EAAIthB,EAAIvyC,KAAKuyC,GAAKzqC,KAAKinC,IAAI8kB,EAAIrhB,EAAIxyC,KAAKwyC,IAO5DugB,EAAMl0D,UAAUo1D,UAAY,WACxB,OAAOnsD,KAAK2rC,KAAKzzC,KAAKuyC,EAAIvyC,KAAKuyC,EAAIvyC,KAAKwyC,EAAIxyC,KAAKwyC,IAAM,KAM3DugB,EAAMl0D,UAAUq1D,MAAQ,SAAUn1D,QACpB,IAANA,IAAgBA,EAAI,IAAIg0D,GAC5B,IAAIc,EAAMd,EAAMx0D,OAAOQ,GACnByzC,IAAMqhB,EAAIrhB,EAAIxyC,KAAKwyC,GACnBD,EAAIshB,EAAIthB,EAAIvyC,KAAKuyC,EACjB4hB,EAAMrsD,KAAKssD,MAAM5hB,EAAGD,GAKxB,OAHI4hB,EAAM,IACNA,EAAM,EAAIrsD,KAAK+vB,GAAKs8B,GAEhB,IAAMA,EAAOrsD,KAAK+vB,IAc9Bk7B,EAAMl0D,UAAUw1D,aAAe,SAAUC,EAAIC,GACzC,GAAIv0D,KAAKw0D,OAAOF,IAAOt0D,KAAKw0D,OAAOD,GAC/B,OAAOE,IAEX,IAAIC,EAAQ10D,KAAKk0D,MAAMK,GAAMv0D,KAAKk0D,MAAMI,GAIxC,OAHII,EAAQ,IACRA,GAAS,KAENA,GAWX3B,EAAMl0D,UAAU81D,YAAc,SAAU51D,GAEpC,OADW,IAAIg0D,EAAM,EAAG,GACZsB,aAAar0D,KAAMjB,IAKnCg0D,EAAMl0D,UAAU+1D,QAAU,SAAUhB,GAEhC,OADA5zD,KAAKyrD,OAAOsH,EAAM6B,QAAQ50D,KAAM4zD,IACzB5zD,MAmBX+yD,EAAMl0D,UAAUg2D,cAAgB,SAAUxB,EAAIC,EAAIO,GAG9C,YAFY,IAARA,IAAkBA,EAAM,IAAId,GAEzB/yD,KAAKyH,QAAQ2rD,WAAWC,GAAKC,GAAIY,MAAML,GAAO7zD,KAAKk0D,MAAML,IAMpEd,EAAMl0D,UAAUi2D,aAAe,SAAUjsB,GAKrC,OAJKmqB,EAAK+B,cAAclsB,EAAM7oC,QAC1BA,KAAKuyC,EAAIzqC,KAAKkzC,IAAIlzC,KAAKitB,IAAI/0B,KAAKuyC,EAAG1J,EAAK0J,GAAI1J,EAAK0J,EAAI1J,EAAKxX,OAC1DrxB,KAAKwyC,EAAI1qC,KAAKkzC,IAAIlzC,KAAKitB,IAAI/0B,KAAKwyC,EAAG3J,EAAK2J,GAAI3J,EAAK2J,EAAI3J,EAAKpV,SAEvDzzB,MAOX+yD,EAAMl0D,UAAUm2D,QAAU,SAAUj2D,GAChC,IAAI80D,EAAMd,EAAMx0D,OAAOQ,GACnBk2D,EAAOhC,EAAQiC,MAAMC,MAAMn1D,KAAKwyC,GAChC4iB,EAAOnC,EAAQiC,MAAMC,MAAMtB,EAAIrhB,GAC/B6iB,EAAOr1D,KAAKuyC,EACZ+iB,EAAOzB,EAAIthB,EACXgjB,EAAOtC,EAAQiC,MAAMC,MAAMG,EAAOD,GAClC7iB,EAAI1qC,KAAK0tD,IAAID,GAAQztD,KAAK8vB,IAAIw9B,GAC9B7iB,EAAIzqC,KAAK8vB,IAAIq9B,GAAQntD,KAAK0tD,IAAIJ,GAC9BttD,KAAK0tD,IAAIP,GAAQntD,KAAK8vB,IAAIw9B,GAAQttD,KAAK8vB,IAAI29B,GAG3C7zD,EAFOuxD,EAAQiC,MAAMO,MAAM3tD,KAAKssD,MAAM5hB,EAAGD,IAE1B,KAKnB,OAJI7wC,EAAQ,IACRA,GAAS,KAHE,CAAC,KAAM,IAAK,KAAM,IAAK,KAAM,IAAK,KAAM,KAKvDA,EAAQgyB,SAAUhyB,EAAQ,GAAK,MASnCqxD,EAAMl0D,UAAU62D,MAAQ,SAAUpB,EAAIC,GAClC,GAAU,MAAND,GAAoB,MAANC,EAAY,CAC1B,IAAIvpD,EAAI+nD,EAAMx0D,OAAO+1D,GACjBrpD,EAAI8nD,EAAMx0D,OAAOg2D,GACrB,OAAQtpD,EAAEsnC,EAAIvyC,KAAKuyC,IAAMvnC,EAAEwnC,EAAIxyC,KAAKwyC,IAAMvnC,EAAEunC,EAAIxyC,KAAKwyC,IAAMxnC,EAAEunC,EAAIvyC,KAAKuyC,GAE1E,OAAOkiB,KAKX1B,EAAMl0D,UAAU0yD,IAAM,SAAUxyD,GAC5B,IAAI80D,EAAMd,EAAMx0D,OAAOQ,GACvB,OAAOiB,KAAKuyC,EAAIshB,EAAIthB,EAAIvyC,KAAKwyC,EAAIqhB,EAAIrhB,GAEzCugB,EAAMl0D,UAAUoR,KAAO,SAAUojD,EAAIC,GACjC,GAAkB,iBAAPD,EACP,OAAO,IAAIN,EAAM/yD,KAAKuyC,EAAI8gB,EAAIrzD,KAAKwyC,EAAI8gB,GAE3C,IAAIv0D,EAAIg0D,EAAMx0D,OAAO80D,GACrB,OAAO,IAAIN,EAAM/yD,KAAKuyC,EAAIxzC,EAAEwzC,EAAGvyC,KAAKwyC,EAAIzzC,EAAEyzC,IAM9CugB,EAAMl0D,UAAU4yD,KAAO,SAAU1yD,EAAGZ,GAChC,IAAI01D,EAAMd,EAAMx0D,OAAOQ,GACvB,OAAO,IAAIg0D,GAAO,EAAI50D,GAAK6B,KAAKuyC,EAAIp0C,EAAI01D,EAAIthB,GAAI,EAAIp0C,GAAK6B,KAAKwyC,EAAIr0C,EAAI01D,EAAIrhB,IAQ9EugB,EAAMl0D,UAAU2yD,UAAY,SAAU7vD,QACnB,IAAXA,IAAqBA,EAAS,GAClC,IAAIkjB,EAAQljB,EAAS3B,KAAKi0D,YAC1B,OAAOj0D,KAAK6kB,MAAMA,EAAOA,IAM7BkuC,EAAMl0D,UAAU82D,KAAO,SAAU9B,EAAKhD,GAClC,IAAI9xD,EAAIg0D,EAAMx0D,OAAOs1D,GACjBM,EAAMlB,EAAQiC,MAAMC,MAAMp2D,EAAEm1D,MAAMl0D,OACtC,OAAOA,KAAKozD,UAAUtrD,KAAK8vB,IAAIu8B,GAAOtD,GAAW/oD,KAAK0tD,IAAIrB,GAAOtD,IAMrEkC,EAAMl0D,UAAU+2D,WAAa,SAAU/B,GACnC,OAAOd,EAAMx0D,OAAOs1D,GAAK8B,KAAK31D,KAAMA,KAAK6wD,SAASgD,KAEtDd,EAAMl0D,UAAUg3D,WAAa,SAAUC,EAAIC,GAGvC,OAFA/1D,KAAKuyC,EAAIygB,EAAK6C,WAAW71D,KAAKuyC,EAAGujB,GACjC91D,KAAKwyC,EAAIwgB,EAAK6C,WAAW71D,KAAKwyC,EAAS,MAANujB,EAAaD,EAAKC,GAC5C/1D,MAEX+yD,EAAMl0D,UAAU21D,OAAS,SAAUz1D,GAC/B,IAAI80D,EAAMd,EAAMx0D,OAAOQ,GACvB,OAAc,MAAP80D,GAAeA,EAAIthB,IAAMvyC,KAAKuyC,GAAKshB,EAAIrhB,IAAMxyC,KAAKwyC,GAE7DugB,EAAMl0D,UAAU4I,MAAQ,WACpB,OAAOsrD,EAAMtrD,MAAMzH,OAKvB+yD,EAAMl0D,UAAUktD,OAAS,WACrB,OAAOgH,EAAMhH,OAAO/rD,OAExB+yD,EAAMl0D,UAAU6gC,UAAY,WACxB,OAAO1/B,KAAKuyC,EAAI,IAAMvyC,KAAKwyC,GAExBugB,EAvTe,CADT,EAAQ,IAyTZiD,UACbj5D,EAAQg2D,MAAQA,EAChB,SAAWA,GACPA,EAAM90D,YAAc,eAAiB80D,EAAMv1D,KAkB3Cu1D,EAAMkD,QAjBN,SAAiBC,GACb,GAAgB,MAAZA,EACA,OAAO,EAEX,GAAIA,aAAoBnD,EACpB,OAAO,EAEX,IAAInhD,EAAMskD,EAASl4D,OAAOC,aACtBk4D,EAAQD,EACZ,OAAY,MAAPtkD,GAAeA,IAAQmhD,EAAM90D,cACX,iBAAZk4D,EAAM5jB,GACM,iBAAZ4jB,EAAM3jB,GACY,mBAAlB2jB,EAAMvB,SAdzB,CAoBG7B,EAAQh2D,EAAQg2D,QAAUh2D,EAAQg2D,MAAQ,KAC7Ch2D,EAAQg2D,MAAQA,EAChB,SAAWA,GAOPA,EAAMqD,YANN,SAAqBr3D,GACjB,OAAa,MAALA,GACS,iBAANA,GACQ,iBAARA,EAAEwzC,GACM,iBAARxzC,EAAEyzC,GAUjBugB,EAAMsD,YAPN,SAAqBt3D,GACjB,OAAa,MAALA,GACJmC,MAAMD,QAAQlC,IACD,IAAbA,EAAE4C,QACc,iBAAT5C,EAAE,IACO,iBAATA,EAAE,IAbrB,CAgBGg0D,EAAQh2D,EAAQg2D,QAAUh2D,EAAQg2D,MAAQ,KAC7Ch2D,EAAQg2D,MAAQA,EAChB,SAAWA,GAQP,SAAStrD,EAAM1I,GACX,OAAIg0D,EAAMkD,QAAQl3D,GACP,IAAIg0D,EAAMh0D,EAAEwzC,EAAGxzC,EAAEyzC,GAExBtxC,MAAMD,QAAQlC,GACP,IAAIg0D,EAAMh0D,EAAE,GAAIA,EAAE,IAEtB,IAAIg0D,EAAMh0D,EAAEwzC,EAAGxzC,EAAEyzC,GAiD5B,SAASgiB,EAAOF,EAAIC,GAChB,OAAID,IAAOC,GAGD,MAAND,GAAoB,MAANC,IACPD,EAAG/hB,IAAMgiB,EAAGhiB,GAAK+hB,EAAG9hB,IAAM+hB,EAAG/hB,GAoC5C,SAAS8jB,EAASH,EAAOv+B,EAAK49B,EAAK/B,QAChB,IAAXA,IAAqBA,EAAS,IAAIV,GACtC,IAAIhvC,EAAStc,EAAM0uD,GACfvC,EAASnsD,EAAMgsD,GACfJ,EAAKtvC,EAAOwuB,EAAIqhB,EAAOrhB,EACvB+gB,EAAKvvC,EAAOyuB,EAAIohB,EAAOphB,EAEvB+jB,EAAKjD,EAAK17B,EAAMy7B,EAAKmC,EACzB,OAAO,IAAIzC,EAFFM,EAAKz7B,EAAM07B,EAAKkC,EAEH5B,EAAOrhB,EAAGgkB,EAAK3C,EAAOphB,GA1GhDugB,EAAMx0D,OANN,SAAgBg0C,EAAGC,GACf,OAAS,MAALD,GAA0B,iBAANA,EACb,IAAIwgB,EAAMxgB,EAAGC,GAEjB/qC,EAAM8qC,IAYjBwgB,EAAMtrD,MAAQA,EAUdsrD,EAAMhH,OATN,SAAgBhtD,GACZ,OAAIg0D,EAAMkD,QAAQl3D,GACP,CAAEwzC,EAAGxzC,EAAEwzC,EAAGC,EAAGzzC,EAAEyzC,GAEtBtxC,MAAMD,QAAQlC,GACP,CAAEwzC,EAAGxzC,EAAE,GAAIyzC,EAAGzzC,EAAE,IAEpB,CAAEwzC,EAAGxzC,EAAEwzC,EAAGC,EAAGzzC,EAAEyzC,IAyB1BugB,EAAMyD,UAlBN,SAAmBz4D,EAAGo2D,EAAKP,QACR,IAAXA,IAAqBA,EAAS,IAAIb,GACtC,IAAIxgB,EAAIzqC,KAAKinC,IAAIhxC,EAAI+J,KAAK8vB,IAAIu8B,IAC1B3hB,EAAI1qC,KAAKinC,IAAIhxC,EAAI+J,KAAK0tD,IAAIrB,IAC1BsC,EAAMhvD,EAAMmsD,GACZ8C,EAAMzD,EAAQiC,MAAM1D,UAAUyB,EAAQiC,MAAMO,MAAMtB,IAWtD,OAVIuC,EAAM,GACNlkB,GAAKA,EAEAkkB,EAAM,KACXnkB,GAAKA,EACLC,GAAKA,GAEAkkB,EAAM,MACXnkB,GAAKA,GAEF,IAAIwgB,EAAM0D,EAAIlkB,EAAIA,EAAGkkB,EAAIjkB,EAAIA,IAexCugB,EAAM6B,QATN,SAAiBuB,EAAOvC,QACL,IAAXA,IAAqBA,EAAS,IAAIb,GACtC,IAAIh0D,EAAI0I,EAAM0uD,GACVz4D,EAAI+J,EAAMmsD,GACVP,EAAKt0D,EAAEwzC,EAAI70C,EAAE60C,EACb+gB,EAAKv0D,EAAEyzC,EAAI90C,EAAE80C,EACjB,OAAO,IAAIugB,EAAMjrD,KAAK2rC,KAAK4f,EAAKA,EAAKC,EAAKA,GAC1CL,EAAQiC,MAAMC,MAAMz3D,EAAEw2D,MAAMn1D,MAYhCg0D,EAAMyB,OAASA,EAgBfzB,EAAM4D,YAfN,SAAqBrC,EAAIC,GACrB,GAAW,MAAND,GAAoB,MAANC,GACR,MAAND,GAAoB,MAANC,GACR,MAAND,GAAoB,MAANC,GAAcD,EAAG3yD,SAAW4yD,EAAG5yD,OAC9C,OAAO,EAEX,GAAU,MAAN2yD,GAAoB,MAANC,EACd,IAAK,IAAIt3D,EAAI,EAAG25D,EAAKtC,EAAG3yD,OAAQ1E,EAAI25D,EAAI35D,GAAK,EACzC,IAAKu3D,EAAOF,EAAGr3D,GAAIs3D,EAAGt3D,IAClB,OAAO,EAInB,OAAO,GAUX81D,EAAMhrD,OAHN,SAAgB8uD,EAAIC,EAAIP,EAAIQ,GACxB,OAAO,IAAIhE,EAAMC,EAAKjrD,OAAO8uD,EAAIC,GAAK9D,EAAKjrD,OAAOwuD,EAAIQ,KAS1DhE,EAAMQ,OANN,SAAgB4C,EAAOzB,EAAOjB,GAC1B,IAAIU,EAAMlB,EAAQiC,MAAMC,MAAMlC,EAAQiC,MAAM1D,WAAWkD,IACnDc,EAAM1tD,KAAK0tD,IAAIrB,GAEnB,OAAOmC,EAASH,EADNruD,KAAK8vB,IAAIu8B,GACSqB,EAAK/B,IAarCV,EAAMuD,SAAWA,EAnHrB,CAoHGvD,EAAQh2D,EAAQg2D,QAAUh2D,EAAQg2D,MAAQ,KAC7Ch2D,EAAQg2D,MAAQA,G,gBC/fhB,IAmEQpK,EACAqO,EACAC,EACAC,EAtEJC,EAAO,EAAQ,IAEfC,EAAS,EAAQ,KAKjBC,EAAmBF,EAAKzF,eACxB4F,EAAUxvD,KAAKkzC,IACfuc,EAAUzvD,KAAKitB,IAKnB,SAASyiC,EAAajlB,EAAGC,EAAGnhB,EAAOoC,GAC7BpC,EAAQ,IACVkhB,GAAQlhB,EACRA,GAASA,GAGPoC,EAAS,IACX+e,GAAQ/e,EACRA,GAAUA,GAOZzzB,KAAKuyC,EAAIA,EAKTvyC,KAAKwyC,EAAIA,EAKTxyC,KAAKqxB,MAAQA,EAKbrxB,KAAKyzB,OAASA,EAGhB+jC,EAAa34D,UAAY,CACvBgH,YAAa2xD,EAKbnT,MAAO,SAAU5V,GACf,IAAI8D,EAAI+kB,EAAQ7oB,EAAM8D,EAAGvyC,KAAKuyC,GAC1BC,EAAI8kB,EAAQ7oB,EAAM+D,EAAGxyC,KAAKwyC,GAC9BxyC,KAAKqxB,MAAQkmC,EAAQ9oB,EAAM8D,EAAI9D,EAAMpd,MAAOrxB,KAAKuyC,EAAIvyC,KAAKqxB,OAASkhB,EACnEvyC,KAAKyzB,OAAS8jC,EAAQ9oB,EAAM+D,EAAI/D,EAAMhb,OAAQzzB,KAAKwyC,EAAIxyC,KAAKyzB,QAAU+e,EACtExyC,KAAKuyC,EAAIA,EACTvyC,KAAKwyC,EAAIA,GAOXkf,gBACM/I,EAAK,GACLqO,EAAK,GACLC,EAAK,GACLC,EAAK,GACF,SAAU75D,GAIf,GAAKA,EAAL,CAIAsrD,EAAG,GAAKsO,EAAG,GAAKj3D,KAAKuyC,EACrBoW,EAAG,GAAKuO,EAAG,GAAKl3D,KAAKwyC,EACrBwkB,EAAG,GAAKE,EAAG,GAAKl3D,KAAKuyC,EAAIvyC,KAAKqxB,MAC9B2lC,EAAG,GAAKC,EAAG,GAAKj3D,KAAKwyC,EAAIxyC,KAAKyzB,OAC9B4jC,EAAiB1O,EAAIA,EAAItrD,GACzBg6D,EAAiBL,EAAIA,EAAI35D,GACzBg6D,EAAiBJ,EAAIA,EAAI55D,GACzBg6D,EAAiBH,EAAIA,EAAI75D,GACzB2C,KAAKuyC,EAAI+kB,EAAQ3O,EAAG,GAAIqO,EAAG,GAAIC,EAAG,GAAIC,EAAG,IACzCl3D,KAAKwyC,EAAI8kB,EAAQ3O,EAAG,GAAIqO,EAAG,GAAIC,EAAG,GAAIC,EAAG,IACzC,IAAIO,EAAOF,EAAQ5O,EAAG,GAAIqO,EAAG,GAAIC,EAAG,GAAIC,EAAG,IACvCQ,EAAOH,EAAQ5O,EAAG,GAAIqO,EAAG,GAAIC,EAAG,GAAIC,EAAG,IAC3Cl3D,KAAKqxB,MAAQomC,EAAOz3D,KAAKuyC,EACzBvyC,KAAKyzB,OAASikC,EAAO13D,KAAKwyC,KAS9BmlB,mBAAoB,SAAU1sD,GAC5B,IAAID,EAAIhL,KACJ0zD,EAAKzoD,EAAEomB,MAAQrmB,EAAEqmB,MACjBsiC,EAAK1oD,EAAEwoB,OAASzoB,EAAEyoB,OAClBp2B,EAAI+5D,EAAO74D,SAKf,OAHA64D,EAAOhE,UAAU/1D,EAAGA,EAAG,EAAE2N,EAAEunC,GAAIvnC,EAAEwnC,IACjC4kB,EAAOvyC,MAAMxnB,EAAGA,EAAG,CAACq2D,EAAIC,IACxByD,EAAOhE,UAAU/1D,EAAGA,EAAG,CAAC4N,EAAEsnC,EAAGtnC,EAAEunC,IACxBn1C,GAOTu6D,UAAW,SAAU3sD,GACnB,IAAKA,EACH,OAAO,EAGHA,aAAausD,IAEjBvsD,EAAIusD,EAAaj5D,OAAO0M,IAG1B,IAAID,EAAIhL,KACJ63D,EAAM7sD,EAAEunC,EACRulB,EAAM9sD,EAAEunC,EAAIvnC,EAAEqmB,MACd0mC,EAAM/sD,EAAEwnC,EACRwlB,EAAMhtD,EAAEwnC,EAAIxnC,EAAEyoB,OACdwkC,EAAMhtD,EAAEsnC,EACR2lB,EAAMjtD,EAAEsnC,EAAItnC,EAAEomB,MACd8mC,EAAMltD,EAAEunC,EACR4lB,EAAMntD,EAAEunC,EAAIvnC,EAAEwoB,OAClB,QAASqkC,EAAMG,GAAOC,EAAML,GAAOG,EAAMG,GAAOC,EAAML,IAExDtlB,QAAS,SAAUF,EAAGC,GAEpB,OAAOD,GADIvyC,KACMuyC,GAAKA,GADXvyC,KACqBuyC,EADrBvyC,KAC8BqxB,OAASmhB,GADvCxyC,KACiDwyC,GAAKA,GADtDxyC,KACgEwyC,EADhExyC,KACyEyzB,QAMtFhsB,MAAO,WACL,OAAO,IAAI+vD,EAAax3D,KAAKuyC,EAAGvyC,KAAKwyC,EAAGxyC,KAAKqxB,MAAOrxB,KAAKyzB,SAM3DlsB,KAAM,SAAUknC,GACdzuC,KAAKuyC,EAAI9D,EAAM8D,EACfvyC,KAAKwyC,EAAI/D,EAAM+D,EACfxyC,KAAKqxB,MAAQod,EAAMpd,MACnBrxB,KAAKyzB,OAASgb,EAAMhb,QAEtB4kC,MAAO,WACL,MAAO,CACL9lB,EAAGvyC,KAAKuyC,EACRC,EAAGxyC,KAAKwyC,EACRnhB,MAAOrxB,KAAKqxB,MACZoC,OAAQzzB,KAAKyzB,UAanB+jC,EAAaj5D,OAAS,SAAUsqC,GAC9B,OAAO,IAAI2uB,EAAa3uB,EAAK0J,EAAG1J,EAAK2J,EAAG3J,EAAKxX,MAAOwX,EAAKpV,SAG3D,IAAI/M,EAAW8wC,EACfx6D,EAAOD,QAAU2pB,G,6BCpJF,IALf,SAAkBxoB,GAChB,MAAuB,iBAATA,GACZA,GAAS,GAAKA,EAAQ,GAAK,GAAKA,GA9Bb,mB,6BCDvB,0BA6Be,IALf,SAAkBA,GAChB,MAAuB,iBAATA,IACV,YAAQA,IAAU,YAAaA,IArBrB,mBAqB+B,YAAWA,K,6BCzB1D,IAAIusC,EAAc9sC,OAAOkB,UAgBV,IAPf,SAAqBX,GACnB,IAAIoK,EAAOpK,GAASA,EAAM2H,YAG1B,OAAO3H,KAFqB,mBAARoK,GAAsBA,EAAKzJ,WAAc4rC,K,6BCZ/D,oDAkEe,IA7Cf,SAAwBjpC,EAAOikB,EAAQhkB,EAAUy7C,GAC/C,IAAIx7C,GAAS,EACTw8C,EAAW,IACXnC,GAAW,EACXp6C,EAASH,EAAMG,OACfR,EAAS,GACTm3D,EAAe7yC,EAAO9jB,OAE1B,IAAKA,EACH,OAAOR,EAELM,IACFgkB,EAAS,YAASA,EAAQ,YAAUhkB,KAElCy7C,GACFgB,EAAW,IACXnC,GAAW,GAEJt2B,EAAO9jB,QA/BK,MAgCnBu8C,EAAW,IACXnC,GAAW,EACXt2B,EAAS,IAAI,IAASA,IAExBg5B,EACA,OAAS/8C,EAAQC,GAAQ,CACvB,IAAIzD,EAAQsD,EAAME,GACd0vB,EAAuB,MAAZ3vB,EAAmBvD,EAAQuD,EAASvD,GAGnD,GADAA,EAASg/C,GAAwB,IAAVh/C,EAAeA,EAAQ,EAC1C69C,GAAY3qB,GAAaA,EAAU,CAErC,IADA,IAAImnC,EAAcD,EACXC,KACL,GAAI9yC,EAAO8yC,KAAiBnnC,EAC1B,SAASqtB,EAGbt9C,EAAOqB,KAAKtE,QAEJggD,EAASz4B,EAAQ2L,EAAU8rB,IACnC/7C,EAAOqB,KAAKtE,GAGhB,OAAOiD,I,6BC/DT,2CAkDe,IAlCf,SAAiBxC,EAAQuwC,EAAMhxC,EAAOq2C,GACpC,IAAK,YAAS51C,GACZ,OAAOA,EAST,IALA,IAAI+C,GAAS,EACTC,GAHJutC,EAAO,YAASA,EAAMvwC,IAGJgD,OACd00C,EAAY10C,EAAS,EACrB62D,EAAS75D,EAEI,MAAV65D,KAAoB92D,EAAQC,GAAQ,CACzC,IAAInD,EAAM,YAAM0wC,EAAKxtC,IACjB+yC,EAAWv2C,EAEf,GAAY,cAARM,GAA+B,gBAARA,GAAiC,cAARA,EAClD,OAAOG,EAGT,GAAI+C,GAAS20C,EAAW,CACtB,IAAIoiB,EAAWD,EAAOh6D,QAEL0D,KADjBuyC,EAAWF,EAAaA,EAAWkkB,EAAUj6D,EAAKg6D,QAAUt2D,KAE1DuyC,EAAW,YAASgkB,GAChBA,EACC,YAAQvpB,EAAKxtC,EAAQ,IAAM,GAAK,IAGzC,YAAY82D,EAAQh6D,EAAKi2C,GACzB+jB,EAASA,EAAOh6D,GAElB,OAAOG,I,6BC/CT,oBAOIG,EAHcnB,OAAOkB,UAGQC,eAoBlB,IARf,SAAqBH,EAAQH,EAAKN,GAChC,IAAIu6D,EAAW95D,EAAOH,GAChBM,EAAe1B,KAAKuB,EAAQH,IAAQ,YAAGi6D,EAAUv6D,UACxCgE,IAAVhE,GAAyBM,KAAOG,IACnC,YAAgBA,EAAQH,EAAKN,K,yCCTlB,MALf,WACE8B,KAAK04D,SAAW,IAAI,IACpB14D,KAAK48C,KAAO,GCMC,MARf,SAAqBp+C,GACnB,IAAI+jB,EAAOviB,KAAK04D,SACZv3D,EAASohB,EAAa,OAAE/jB,GAG5B,OADAwB,KAAK48C,KAAOr6B,EAAKq6B,KACVz7C,GCDM,MAJf,SAAkB3C,GAChB,OAAOwB,KAAK04D,SAAS56D,IAAIU,ICGZ,MAJf,SAAkBA,GAChB,OAAOwB,KAAK04D,SAASr9C,IAAI7c,I,iBCuBZ,MAhBf,SAAkBA,EAAKN,GACrB,IAAIqkB,EAAOviB,KAAK04D,SAChB,GAAIn2C,aAAgB,IAAW,CAC7B,IAAIu6B,EAAQv6B,EAAKm2C,SACjB,IAAK,KAAQ5b,EAAMn7C,OAASg3D,IAG1B,OAFA7b,EAAMt6C,KAAK,CAAChE,EAAKN,IACjB8B,KAAK48C,OAASr6B,EAAKq6B,KACZ58C,KAETuiB,EAAOviB,KAAK04D,SAAW,IAAI,IAAS5b,GAItC,OAFAv6B,EAAKD,IAAI9jB,EAAKN,GACd8B,KAAK48C,KAAOr6B,EAAKq6B,KACV58C,MChBT,SAAS44D,EAAM5O,GACb,IAAIznC,EAAOviB,KAAK04D,SAAW,IAAI,IAAU1O,GACzChqD,KAAK48C,KAAOr6B,EAAKq6B,KAInBgc,EAAM/5D,UAAUg6D,MAAQ,EACxBD,EAAM/5D,UAAkB,OAAI,EAC5B+5D,EAAM/5D,UAAUf,IAAM,EACtB86D,EAAM/5D,UAAUwc,IAAM,EACtBu9C,EAAM/5D,UAAUyjB,IAAM,EAEP,O,cCjBf,IAyCIoE,EAvCc,iBAAPoyC,IAAmD,mBAAzBA,GAAGC,kBAEhC,CACJC,QAAS,GACTC,GAAI,GACJt0D,MAAM,EACNu0D,KAAK,EAELC,iBAAiB,EACjBC,cAAc,EACdC,sBAAsB,EACtBC,cAAc,GAEa,oBAAbx2D,UAA4C,oBAATjB,KAE7C,CACJm3D,QAAS,GACTC,GAAI,GACJt0D,MAAM,EACN40D,QAAQ,EACRJ,iBAAiB,EACjBG,cAAc,GAEc,oBAAdE,UAEV,CACJR,QAAS,GACTC,GAAI,GACJt0D,MAAM,EACN40D,QAAQ,EAERJ,iBAAiB,EACjBC,cAAc,EACdE,cAAc,GAUlB,SAAgBG,GACd,IACIT,EAAU,GAeVU,EAAUD,EAAGxrD,MAAM,qBAGnB0rD,EAAKF,EAAGxrD,MAAM,mBACfwrD,EAAGxrD,MAAM,6BACR2rD,EAAOH,EAAGxrD,MAAM,kBAEhB4rD,EAAS,kBAAkBjrD,KAAK6qD,GAqBhCC,IACFV,EAAQU,SAAU,EAClBV,EAAQc,QAAUJ,EAAQ,IAKxBC,IACFX,EAAQW,IAAK,EACbX,EAAQc,QAAUH,EAAG,IAGnBC,IACFZ,EAAQY,MAAO,EACfZ,EAAQc,QAAUF,EAAK,IAKrBC,IACFb,EAAQa,QAAS,GAQnB,MAAO,CACLb,QAASA,EACTC,GA1EO,GA2EPt0D,MAAM,EAGNw0D,kBAAmBr2D,SAASiC,cAAc,UAAUgoC,WACpDqsB,aAAiC,oBAAZW,QAIrBV,qBAAsB,iBAAkBp2D,SAAW+1D,EAAQW,KAAOX,EAAQY,KAE1EI,uBAQA,kBAAmB/2D,SAAW+1D,EAAQY,MAAQZ,EAAQW,IAAMX,EAAQc,SAAW,IAE/ER,aAAkC,oBAAbx2D,UAvGjBm3D,CAAOT,UAAUU,WA0HzBl9D,EAAOD,QAAU2pB,G,6BC7JF,IAJf,SAAkBrX,EAAO7Q,GACvB,OAAO6Q,EAAMgM,IAAI7c,K,6BCRnB,IAGIozD,EAHY7vD,SAASlD,UAGI8E,SAqBd,IAZf,SAAkBtC,GAChB,GAAY,MAARA,EAAc,CAChB,IACE,OAAOuwD,EAAax0D,KAAKiE,GACzB,MAAOwM,IACT,IACE,OAAQxM,EAAO,GACf,MAAOwM,KAEX,MAAO,K,gBCtBT,IAAIssD,EAAW,EAAQ,MAEvB,WACE,IAAK,IAAI37D,KAAO27D,EAAU,CACxB,GAAgB,MAAZA,IAAqBA,EAASr7D,eAAeN,IAAgB,YAARA,GAA6B,eAARA,EAAsB,OACpGzB,EAAQyB,GAAO27D,EAAS37D,IAH5B,GAOA,IAAI47D,EAAU,EAAQ,MAEtB,WACE,IAAK,IAAI57D,KAAO47D,EAAS,CACvB,GAAe,MAAXA,IAAoBA,EAAQt7D,eAAeN,IAAgB,YAARA,GAA6B,eAARA,EAAsB,OAClGzB,EAAQyB,GAAO47D,EAAQ57D,IAH3B,GAOA,EAAQ,KAER,EAAQ,M,6BCnBRb,OAAOC,eAAeb,EAAS,aAAc,CAAEmB,OAAO,IACtDnB,EAAQi5D,cAAW,EACnB,IAAIA,EAA0B,WAC1B,SAASA,KAQT,OANAA,EAASn3D,UAAUw1C,QAAU,WACzB,OAAOr0C,KAAK+rD,UAEhBiK,EAASn3D,UAAU8E,SAAW,WAC1B,OAAOof,KAAKs3C,UAAUr6D,KAAK+rD,WAExBiK,EATkB,GAW7Bj5D,EAAQi5D,SAAWA,G,6BCbnB,IACQ5D,EADJC,EAAaryD,MAAQA,KAAKqyD,YACtBD,EAAgB,SAAU70D,EAAG0N,GAI7B,OAHAmnD,EAAgBz0D,OAAO20D,gBAClB,CAAEC,UAAW,cAAgBrxD,OAAS,SAAU3D,EAAG0N,GAAK1N,EAAEg1D,UAAYtnD,IACvE,SAAU1N,EAAG0N,GAAK,IAAK,IAAIlM,KAAKkM,EAAOtN,OAAOkB,UAAUC,eAAe1B,KAAK6N,EAAGlM,KAAIxB,EAAEwB,GAAKkM,EAAElM,MAC3ExB,EAAG0N,IAErB,SAAU1N,EAAG0N,GAChB,GAAiB,mBAANA,GAA0B,OAANA,EAC3B,MAAM,IAAImU,UAAU,uBAAyBtS,OAAO7B,GAAK,iCAE7D,SAASunD,IAAOxyD,KAAK6F,YAActI,EADnC60D,EAAc70D,EAAG0N,GAEjB1N,EAAEsB,UAAkB,OAANoM,EAAatN,OAAOY,OAAO0M,IAAMunD,EAAG3zD,UAAYoM,EAAEpM,UAAW,IAAI2zD,KAGvF70D,OAAOC,eAAeb,EAAS,aAAc,CAAEmB,OAAO,IACtDnB,EAAQu9D,UAAO,EACf,IAAIC,EAAU,EAAQ,IAClBC,EAAa,EAAQ,IACrBC,EAAc,EAAQ,KACtBH,EAAsB,SAAUpH,GAEhC,SAASoH,EAAKzD,EAAIN,EAAIO,EAAIC,GACtB,IAAI5D,EAAQD,EAAO91D,KAAK4C,OAASA,KASjC,MARkB,iBAAP62D,GAAiC,iBAAPN,GACjCpD,EAAM7xD,MAAQ,IAAIi5D,EAAQxH,MAAM8D,EAAIN,GACpCpD,EAAMhsD,IAAM,IAAIozD,EAAQxH,MAAM+D,EAAIC,KAGlC5D,EAAM7xD,MAAQi5D,EAAQxH,MAAMx0D,OAAOs4D,GACnC1D,EAAMhsD,IAAMozD,EAAQxH,MAAMx0D,OAAOg4D,IAE9BpD,EAyXX,OApYAd,EAAUiI,EAAMpH,GAahBv1D,OAAOC,eAAe08D,EAAKz7D,UAAWb,OAAOC,YAAa,CACtDH,IAAK,WACD,OAAOw8D,EAAKr8D,aAEhBJ,YAAY,EACZwkB,cAAc,IAElB1kB,OAAOC,eAAe08D,EAAKz7D,UAAW,SAAU,CAC5Cf,IAAK,WACD,OAAO,IAAIy8D,EAAQxH,OAAO/yD,KAAKsB,MAAMixC,EAAIvyC,KAAKmH,IAAIorC,GAAK,GAAIvyC,KAAKsB,MAAMkxC,EAAIxyC,KAAKmH,IAAIqrC,GAAK,IAE5F30C,YAAY,EACZwkB,cAAc,IAElBi4C,EAAKz7D,UAAU67D,UAAY,WACvB,OAAO16D,KAAKyzD,QAKhB6G,EAAKz7D,UAAU+zB,MAAQ,SAAU6pB,GAI7B,YAHkB,IAAdA,IAAwBA,EAAY,GACxCz8C,KAAKsB,MAAMsxB,MAAM6pB,GACjBz8C,KAAKmH,IAAIyrB,MAAM6pB,GACRz8C,MAEXs6D,EAAKz7D,UAAUu0D,UAAY,SAAUuH,EAAIC,GASrC,MARkB,iBAAPD,GACP36D,KAAKsB,MAAM8xD,UAAUuH,EAAIC,GACzB56D,KAAKmH,IAAIisD,UAAUuH,EAAIC,KAGvB56D,KAAKsB,MAAM8xD,UAAUuH,GACrB36D,KAAKmH,IAAIisD,UAAUuH,IAEhB36D,MAKXs6D,EAAKz7D,UAAU00D,OAAS,SAAUmB,EAAOd,GAGrC,OAFA5zD,KAAKsB,MAAMiyD,OAAOmB,EAAOd,GACzB5zD,KAAKmH,IAAIosD,OAAOmB,EAAOd,GAChB5zD,MAMXs6D,EAAKz7D,UAAUgmB,MAAQ,SAAU6uC,EAAIC,EAAIC,GAGrC,OAFA5zD,KAAKsB,MAAMujB,MAAM6uC,EAAIC,EAAIC,GACzB5zD,KAAKmH,IAAI0d,MAAM6uC,EAAIC,EAAIC,GAChB5zD,MAKXs6D,EAAKz7D,UAAU8C,OAAS,WACpB,OAAOmG,KAAK2rC,KAAKzzC,KAAK66D,kBAM1BP,EAAKz7D,UAAUg8D,cAAgB,WAC3B,IAAIxH,EAAKrzD,KAAKsB,MAAMixC,EAAIvyC,KAAKmH,IAAIorC,EAC7B+gB,EAAKtzD,KAAKsB,MAAMkxC,EAAIxyC,KAAKmH,IAAIqrC,EACjC,OAAO6gB,EAAKA,EAAKC,EAAKA,GAM1BgH,EAAKz7D,UAAUi8D,UAAY,SAAUn5D,GACjC,IAAIo5D,EAAQ/6D,KAAK2B,SACjB,IAAKo5D,EACD,OAAO/6D,KAEX,IAAI6kB,EAAQljB,EAASo5D,EACrB,OAAO/6D,KAAK6kB,MAAMA,EAAOA,EAAO7kB,KAAKsB,QAEzCg5D,EAAKz7D,UAAUm8D,SAAW,SAAUnK,GAChC,IAAIoK,EAAOj7D,KAAKyH,QAChB,IAAKwzD,EAAKC,mBACN,OAAOD,EAEX,IAAI35D,EAAQ25D,EAAK35D,MAAO6F,EAAM8zD,EAAK9zD,IAC/Bg0D,EAAO75D,EAAMmG,QAAQ8rD,OAAO,IAAKpsD,GACjCi0D,EAAOj0D,EAAIM,QAAQ8rD,OAAO,GAAIjyD,GAGlC,OAFAA,EAAMq0D,KAAKyF,EAAMvK,GACjB1pD,EAAIwuD,KAAKwF,EAAMtK,GACRoK,GAKXX,EAAKz7D,UAAUw8D,OAAS,WACpB,OAAO,IAAId,EAAQxH,MAAM/yD,KAAKmH,IAAIorC,EAAIvyC,KAAKsB,MAAMixC,EAAGvyC,KAAKmH,IAAIqrC,EAAIxyC,KAAKsB,MAAMkxC,IAWhF8nB,EAAKz7D,UAAU61D,MAAQ,WACnB,IAAI4G,EAAa,IAAIf,EAAQxH,MAAM/yD,KAAKsB,MAAMixC,EAAI,EAAGvyC,KAAKsB,MAAMkxC,GAChE,OAAOxyC,KAAKsB,MAAM+yD,aAAar0D,KAAKmH,IAAKm0D,IAK7ChB,EAAKz7D,UAAU08D,KAAO,WAClB,IAAIhlC,EAAOzuB,KAAKkzC,IAAIh7C,KAAKsB,MAAMixC,EAAGvyC,KAAKmH,IAAIorC,GACvCthC,EAAMnJ,KAAKkzC,IAAIh7C,KAAKsB,MAAMkxC,EAAGxyC,KAAKmH,IAAIqrC,GACtCngB,EAAQvqB,KAAKitB,IAAI/0B,KAAKsB,MAAMixC,EAAGvyC,KAAKmH,IAAIorC,GACxCipB,EAAS1zD,KAAKitB,IAAI/0B,KAAKsB,MAAMkxC,EAAGxyC,KAAKmH,IAAIqrC,GAC7C,OAAO,IAAIioB,EAAYgB,UAAUllC,EAAMtlB,EAAKohB,EAAQkE,EAAMilC,EAASvqD,IAUvEqpD,EAAKz7D,UAAUm2D,QAAU,WACrB,OAAOh1D,KAAKsB,MAAM0zD,QAAQh1D,KAAKmH,MAKnCmzD,EAAKz7D,UAAU68D,aAAe,SAAU38D,GACpC,OAAOiB,KAAK27D,QAAQ37D,KAAK47D,6BAA6B78D,KAK1Du7D,EAAKz7D,UAAUg9D,mBAAqB,SAAU98D,GAC1C,OAAOiB,KAAK47D,6BAA6B78D,GAAKiB,KAAK2B,UAMvD24D,EAAKz7D,UAAUi9D,oBAAsB,SAAU/8D,GAC3C,OAAOiB,KAAK+7D,UAAU/7D,KAAK47D,6BAA6B78D,KAM5Du7D,EAAKz7D,UAAU+8D,6BAA+B,SAAU78D,GACpD,IAAIi9D,EAAUh8D,KAAKq7D,SAAS9J,IAAI,IAAI+I,EAAKt6D,KAAKsB,MAAOvC,GAAGs8D,UACpDY,EAAan0D,KAAKkzC,IAAI,EAAGlzC,KAAKitB,IAAI,EAAGinC,EAAUh8D,KAAK66D,kBAExD,OAAIqB,OAAO/xB,MAAM8xB,GACN,EAEJA,GAMX3B,EAAKz7D,UAAU88D,QAAU,SAAUQ,GAC/B,IAAI76D,EAAQtB,KAAKsB,MACb6F,EAAMnH,KAAKmH,IACf,OAAIg1D,GAAS,EACF76D,EAAMmG,QAEb00D,GAAS,EACFh1D,EAAIM,QAERnG,EAAMmwD,KAAKtqD,EAAKg1D,IAM3B7B,EAAKz7D,UAAUu9D,cAAgB,SAAUz6D,GACrC,IAAIL,EAAQtB,KAAKsB,MACb6F,EAAMnH,KAAKmH,IACXk1D,GAAY,EACZ16D,EAAS,IACT06D,GAAY,EACZ16D,GAAUA,GAEd,IAAIo5D,EAAQ/6D,KAAK2B,SACjB,GAAIA,GAAUo5D,EACV,OAAOsB,EAAYl1D,EAAIM,QAAUnG,EAAMmG,QAE3C,IAAI60D,GAAQD,EAAY16D,EAASo5D,EAAQp5D,GAAUo5D,EACnD,OAAO/6D,KAAK27D,QAAQW,IAMxBhC,EAAKz7D,UAAU09D,SAAW,SAAUJ,GAChC,IAAIK,EAAex8D,KAAK27D,QAAQQ,GAChC,MAAO,CACH,IAAI7B,EAAKt6D,KAAKsB,MAAOk7D,GACrB,IAAIlC,EAAKkC,EAAcx8D,KAAKmH,OAOpCmzD,EAAKz7D,UAAU49D,eAAiB,SAAU96D,GACtC,IAAI66D,EAAex8D,KAAKo8D,cAAcz6D,GACtC,MAAO,CACH,IAAI24D,EAAKt6D,KAAKsB,MAAOk7D,GACrB,IAAIlC,EAAKkC,EAAcx8D,KAAKmH,OAMpCmzD,EAAKz7D,UAAUk2D,cAAgB,SAAUh2D,GACrC,IAAIuC,EAAQtB,KAAKsB,MACb6F,EAAMnH,KAAKmH,IAGf,GAA4B,IAAxB7F,EAAMo0D,MAAM32D,EAAGoI,GACf,OAAO,EAEX,IAAIxF,EAAS3B,KAAK2B,SAClB,QAAI,IAAI24D,EAAKh5D,EAAOvC,GAAG4C,SAAWA,MAG9B,IAAI24D,EAAKv7D,EAAGoI,GAAKxF,SAAWA,IAKpC24D,EAAKz7D,UAAU+4D,UAAY,SAAUxmB,EAAOzxC,GACxC,IAAIuG,EAAMkrC,EAAMsrB,mBAAmB18D,KAAML,GACzC,OAAIuG,EACOhF,MAAMD,QAAQiF,GAAOA,EAAM,CAACA,GAEhC,MAMXo0D,EAAKz7D,UAAU69D,mBAAqB,SAAUzB,GAC1C,IAAI0B,EAAS,IAAIpC,EAAQxH,MAAM/yD,KAAKmH,IAAIorC,EAAIvyC,KAAKsB,MAAMixC,EAAGvyC,KAAKmH,IAAIqrC,EAAIxyC,KAAKsB,MAAMkxC,GAC9EoqB,EAAS,IAAIrC,EAAQxH,MAAMkI,EAAK9zD,IAAIorC,EAAI0oB,EAAK35D,MAAMixC,EAAG0oB,EAAK9zD,IAAIqrC,EAAIyoB,EAAK35D,MAAMkxC,GAC9EqqB,EAAMF,EAAOpqB,EAAIqqB,EAAOpqB,EAAImqB,EAAOnqB,EAAIoqB,EAAOrqB,EAC9CuqB,EAAU,IAAIvC,EAAQxH,MAAMkI,EAAK35D,MAAMixC,EAAIvyC,KAAKsB,MAAMixC,EAAG0oB,EAAK35D,MAAMkxC,EAAIxyC,KAAKsB,MAAMkxC,GACnFuqB,EAAQD,EAAQvqB,EAAIqqB,EAAOpqB,EAAIsqB,EAAQtqB,EAAIoqB,EAAOrqB,EAClDyqB,EAAOF,EAAQvqB,EAAIoqB,EAAOnqB,EAAIsqB,EAAQtqB,EAAImqB,EAAOpqB,EACrD,GAAY,IAARsqB,GAAaE,EAAQF,EAAM,GAAKG,EAAOH,EAAM,EAC7C,OAAO,KAEX,GAAIA,EAAM,GACN,GAAIE,EAAQF,GAAOG,EAAOH,EACtB,OAAO,UAGV,GAAIE,EAAQF,GAAOG,EAAOH,EAC3B,OAAO,KAEX,OAAO,IAAItC,EAAQxH,MAAM/yD,KAAKsB,MAAMixC,EAAKwqB,EAAQJ,EAAOpqB,EAAKsqB,EAAK78D,KAAKsB,MAAMkxC,EAAKuqB,EAAQJ,EAAOnqB,EAAKqqB,IAQ1GvC,EAAKz7D,UAAUq8D,iBAAmB,WAC9B,OAAQl7D,KAAKsB,MAAMkzD,OAAOx0D,KAAKmH,MAQnCmzD,EAAKz7D,UAAUo+D,YAAc,SAAUl+D,GACnC,IAAI80D,EAAM0G,EAAQxH,MAAMtrD,MAAM1I,GAC1BuC,EAAQtB,KAAKsB,MACb6F,EAAMnH,KAAKmH,IAGf,QAFmBA,EAAIorC,EAAIjxC,EAAMixC,IAAMshB,EAAIrhB,EAAIlxC,EAAMkxC,IAChDrrC,EAAIqrC,EAAIlxC,EAAMkxC,IAAMqhB,EAAIthB,EAAIjxC,EAAMixC,IAClBvyC,KAAK2B,UAE9B24D,EAAKz7D,UAAUq+D,qBAAuB,SAAU3qB,EAAGC,GAC/C,IAAIzzC,EAAIw7D,EAAQxH,MAAMx0D,OAAOg0C,EAAGC,GAChC,OAAOxyC,KAAK07D,aAAa38D,GAAGg1D,gBAAgBh1D,IAEhDu7D,EAAKz7D,UAAUs+D,cAAgB,SAAU5qB,EAAGC,GACxC,IAAIzzC,EAAIw7D,EAAQxH,MAAMx0D,OAAOg0C,EAAGC,GAChC,OAAOxyC,KAAK07D,aAAa38D,GAAG8xD,SAAS9xD,IAMzCu7D,EAAKz7D,UAAUk9D,UAAY,SAAUI,GACjC,IAAKn8D,KAAKk7D,mBACN,OAAO,KAEX,IAAI55D,EAAQtB,KAAKsB,MACb6F,EAAMnH,KAAKmH,IACXi2D,EAAep9D,KAAK27D,QAAQQ,GAC5BkB,EAAc,IAAI/C,EAAKh5D,EAAO6F,GAElC,OADAk2D,EAAYjK,UAAUgK,EAAa7qB,EAAIjxC,EAAMixC,EAAG6qB,EAAa5qB,EAAIlxC,EAAMkxC,GAChE6qB,GAMX/C,EAAKz7D,UAAUy+D,gBAAkB,SAAU37D,GACvC,IAAK3B,KAAKk7D,mBACN,OAAO,KAEX,IAAI55D,EAAQtB,KAAKsB,MACb6F,EAAMnH,KAAKmH,IACXi2D,EAAep9D,KAAKo8D,cAAcz6D,GAClC07D,EAAc,IAAI/C,EAAKh5D,EAAO6F,GAElC,OADAk2D,EAAYjK,UAAUgK,EAAa7qB,EAAIjxC,EAAMixC,EAAG6qB,EAAa5qB,EAAIlxC,EAAMkxC,GAChE6qB,GAEX/C,EAAKz7D,UAAU0+D,YAAc,SAAUhrB,EAAGC,GACtC,IAAIqhB,EAAM0G,EAAQxH,MAAMx0D,OAAOg0C,EAAGC,GAC9BgrB,EAAM3J,EAAIthB,EAAIvyC,KAAKsB,MAAMixC,EACzBkrB,EAAM5J,EAAIrhB,EAAIxyC,KAAKsB,MAAMkxC,EACzBkrB,EAAM19D,KAAKmH,IAAIorC,EAAIvyC,KAAKsB,MAAMixC,EAC9BorB,EAAM39D,KAAKmH,IAAIqrC,EAAIxyC,KAAKsB,MAAMkxC,EAC9BorB,EAAMJ,EAAMG,EAAMF,EAAMC,EAY5B,OAXY,IAARE,IACAA,EAAMJ,EAAME,EAAMD,EAAME,GACd,IAGNC,GAFAJ,GAAOE,GAEKA,GADZD,GAAOE,GACiBA,GACd,IACNC,EAAM,GAIXA,EAAM,GAAO,EAAIA,EAAM,EAAM,EAAI,GAK5CtD,EAAKz7D,UAAU21D,OAAS,SAAUt3D,GAC9B,OAAa,MAALA,GACJ8C,KAAKsB,MAAMixC,IAAMr1C,EAAEoE,MAAMixC,GACzBvyC,KAAKsB,MAAMkxC,IAAMt1C,EAAEoE,MAAMkxC,GACzBxyC,KAAKmH,IAAIorC,IAAMr1C,EAAEiK,IAAIorC,GACrBvyC,KAAKmH,IAAIqrC,IAAMt1C,EAAEiK,IAAIqrC,GAK7B8nB,EAAKz7D,UAAU4I,MAAQ,WACnB,OAAO,IAAI6yD,EAAKt6D,KAAKsB,MAAOtB,KAAKmH,MAErCmzD,EAAKz7D,UAAUktD,OAAS,WACpB,MAAO,CAAEzqD,MAAOtB,KAAKsB,MAAMyqD,SAAU5kD,IAAKnH,KAAKmH,IAAI4kD,WAEvDuO,EAAKz7D,UAAU6gC,UAAY,WACvB,MAAO,CAAC1/B,KAAKsB,MAAMo+B,YAAa1/B,KAAKmH,IAAIu4B,aAAa1wB,KAAK,MAExDsrD,EArYc,CAsYvBE,EAAWxE,UACbj5D,EAAQu9D,KAAOA,EACf,SAAWA,GACPA,EAAKr8D,YAAc,eAAiBq8D,EAAK98D,KA0BzC88D,EAAKuD,OAzBL,SAAgB3H,GACZ,GAAgB,MAAZA,EACA,OAAO,EAEX,GAAIA,aAAoBoE,EACpB,OAAO,EAEX,IAAI1oD,EAAMskD,EAASl4D,OAAOC,aACtBg9D,EAAO/E,EACX,IACI,IAAY,MAAPtkD,GAAeA,IAAQ0oD,EAAKr8D,cAC7Bs8D,EAAQxH,MAAMkD,QAAQgF,EAAK35D,QAC3Bi5D,EAAQxH,MAAMkD,QAAQgF,EAAK9zD,MACJ,mBAAhB8zD,EAAKI,QACY,mBAAjBJ,EAAKjG,SACa,mBAAlBiG,EAAKD,UACc,mBAAnBC,EAAKrD,UACZ,OAAO,EAGf,MAAO/pD,GACH,OAAO,EAEX,OAAO,GAzBf,CA4BGysD,EAAOv9D,EAAQu9D,OAASv9D,EAAQu9D,KAAO,KAC1Cv9D,EAAQu9D,KAAOA,G,6BC1aA,IAJf,c,6BCae,IANf,SAAkBp8D,GAChB,OAAO,WACL,OAAOA,K,6BCrBX,YAgCe,IALf,SAAaS,EAAQuwC,EAAMp1B,GACzB,IAAI3Y,EAAmB,MAAVxC,OAAiBuD,EAAY,YAAQvD,EAAQuwC,GAC1D,YAAkBhtC,IAAXf,EAAuB2Y,EAAe3Y,I,6BCZhC,IAJf,WACE,OAAO,I,6BCQM,IAJf,WACE,MAAO,K,6BCnBT,2BAmCe,IATf,SAAiBjD,GACf,IAAK,YAAaA,GAChB,OAAO,EAET,IAAI0T,EAAM,YAAW1T,GACrB,MAzBa,kBAyBN0T,GA1BO,yBA0BYA,GACC,iBAAjB1T,EAAMuiB,SAA4C,iBAAdviB,EAAMV,OAAqB,YAAcU,K,6BChCzF,aAmBIqvD,EAAa,YAAgB,eAElB,O,6BCTA,MAJf,SAAmB5uD,EAAQH,GACzB,OAAiB,MAAVG,GAAkBH,KAAOb,OAAOgB,I,SCwB1B,IAJf,SAAeA,EAAQuwC,GACrB,OAAiB,MAAVvwC,GAAkB,YAAQA,EAAQuwC,EAAM,K,gDCblC,MAJf,SAAsBhxC,GACpB,OAAO,OAAA+7C,EAAA,GAAa/7C,IAVN,mBAUgB,YAAWA,I,gBCTvC4/D,EAAe,KAAY,IAASxV,SAmBpCA,EAAWwV,EAAe,YAAUA,GAAgB,EAEzC,O,6BC1Bf,YAgBe,IALf,SAAuBt8D,EAAOtD,GAE5B,SADsB,MAATsD,EAAgB,EAAIA,EAAMG,SACpB,YAAYH,EAAOtD,EAAO,IAAM,I,6BCUtC,IAZf,SAAuBsD,EAAOc,EAAWo7C,EAAWJ,GAIlD,IAHA,IAAI37C,EAASH,EAAMG,OACfD,EAAQg8C,GAAaJ,EAAY,GAAK,GAElCA,EAAY57C,MAAYA,EAAQC,GACtC,GAAIW,EAAUd,EAAME,GAAQA,EAAOF,GACjC,OAAOE,EAGX,OAAQ,I,6BCHK,IAVf,SAAoB4gB,GAClB,IAAI5gB,GAAS,EACTP,EAASD,MAAMohB,EAAIs6B,MAKvB,OAHAt6B,EAAI6oB,SAAQ,SAASjtC,GACnBiD,IAASO,GAASxD,KAEbiD,I,6BCdT,6BAyCe,IArBf,SAAyBK,EAAOtD,EAAO6/D,GACrC,IAAIC,EAAM,EACNnxD,EAAgB,MAATrL,EAAgBw8D,EAAMx8D,EAAMG,OAEvC,GAAoB,iBAATzD,GAAqBA,GAAUA,GAAS2O,GAlBzBoxD,WAkBwD,CAChF,KAAOD,EAAMnxD,GAAM,CACjB,IAAIqxD,EAAOF,EAAMnxD,IAAU,EACvBukB,EAAW5vB,EAAM08D,GAEJ,OAAb9sC,IAAsB,YAASA,KAC9B2sC,EAAc3sC,GAAYlzB,EAAUkzB,EAAWlzB,GAClD8/D,EAAME,EAAM,EAEZrxD,EAAOqxD,EAGX,OAAOrxD,EAET,OAAO,YAAkBrL,EAAOtD,EAAO,IAAU6/D,K,6BCtCnD,aAGII,EAAe,YAAQxgE,OAAO0F,eAAgB1F,QAEnC,O,6BCLf,YAsBe,IAJL,WACR,OAAO,IAAK2M,KAAK0hB,Q,6BCPJ,MALf,WACEhsB,KAAK04D,SAAW,GAChB14D,KAAK48C,KAAO,G,QCWC,MAVf,SAAsBp7C,EAAOhD,GAE3B,IADA,IAAImD,EAASH,EAAMG,OACZA,KACL,GAAI,OAAAgF,EAAA,GAAGnF,EAAMG,GAAQ,GAAInD,GACvB,OAAOmD,EAGX,OAAQ,GCXN0F,EAHanG,MAAMrC,UAGCwI,OA4BT,MAjBf,SAAyB7I,GACvB,IAAI+jB,EAAOviB,KAAK04D,SACZh3D,EAAQ,EAAa6gB,EAAM/jB,GAE/B,QAAIkD,EAAQ,KAIRA,GADY6gB,EAAK5gB,OAAS,EAE5B4gB,EAAKrX,MAEL7D,EAAOjK,KAAKmlB,EAAM7gB,EAAO,KAEzB1B,KAAK48C,MACA,ICbM,MAPf,SAAsBp+C,GACpB,IAAI+jB,EAAOviB,KAAK04D,SACZh3D,EAAQ,EAAa6gB,EAAM/jB,GAE/B,OAAOkD,EAAQ,OAAIQ,EAAYqgB,EAAK7gB,GAAO,ICA9B,MAJf,SAAsBlD,GACpB,OAAO,EAAawB,KAAK04D,SAAUl6D,IAAQ,GCa9B,MAbf,SAAsBA,EAAKN,GACzB,IAAIqkB,EAAOviB,KAAK04D,SACZh3D,EAAQ,EAAa6gB,EAAM/jB,GAQ/B,OANIkD,EAAQ,KACR1B,KAAK48C,KACPr6B,EAAK/f,KAAK,CAAChE,EAAKN,KAEhBqkB,EAAK7gB,GAAO,GAAKxD,EAEZ8B,MCTT,SAASo+D,EAAUpU,GACjB,IAAItoD,GAAS,EACTC,EAAoB,MAAXqoD,EAAkB,EAAIA,EAAQroD,OAG3C,IADA3B,KAAK64D,UACIn3D,EAAQC,GAAQ,CACvB,IAAI08D,EAAQrU,EAAQtoD,GACpB1B,KAAKsiB,IAAI+7C,EAAM,GAAIA,EAAM,KAK7BD,EAAUv/D,UAAUg6D,MAAQ,EAC5BuF,EAAUv/D,UAAkB,OAAI,EAChCu/D,EAAUv/D,UAAUf,IAAM,EAC1BsgE,EAAUv/D,UAAUwc,IAAM,EAC1B+iD,EAAUv/D,UAAUyjB,IAAM,EAEX,O,kECoDA,MA9Df,SAAqB9gB,EAAOitC,EAAOiI,EAASnC,EAAY+pB,EAAWh+C,GACjE,IAAIi+C,EAjBqB,EAiBT7nB,EACZwE,EAAY15C,EAAMG,OAClBw8C,EAAY1P,EAAM9sC,OAEtB,GAAIu5C,GAAaiD,KAAeogB,GAAapgB,EAAYjD,GACvD,OAAO,EAGT,IAAIsjB,EAAal+C,EAAMxiB,IAAI0D,GACvBi9D,EAAan+C,EAAMxiB,IAAI2wC,GAC3B,GAAI+vB,GAAcC,EAChB,OAAOD,GAAc/vB,GAASgwB,GAAcj9D,EAE9C,IAAIE,GAAS,EACTP,GAAS,EACTq9C,EA/BuB,EA+Bf9H,EAAoC,IAAI,SAAWx0C,EAM/D,IAJAoe,EAAMgC,IAAI9gB,EAAOitC,GACjBnuB,EAAMgC,IAAImsB,EAAOjtC,KAGRE,EAAQw5C,GAAW,CAC1B,IAAIwjB,EAAWl9D,EAAME,GACjBi9D,EAAWlwB,EAAM/sC,GAErB,GAAI6yC,EACF,IAAIqqB,EAAWL,EACXhqB,EAAWoqB,EAAUD,EAAUh9D,EAAO+sC,EAAOjtC,EAAO8e,GACpDi0B,EAAWmqB,EAAUC,EAAUj9D,EAAOF,EAAOitC,EAAOnuB,GAE1D,QAAiBpe,IAAb08D,EAAwB,CAC1B,GAAIA,EACF,SAEFz9D,GAAS,EACT,MAGF,GAAIq9C,GACF,IAAK,YAAU/P,GAAO,SAASkwB,EAAUvgB,GACnC,IAAK,YAASI,EAAMJ,KACfsgB,IAAaC,GAAYL,EAAUI,EAAUC,EAAUjoB,EAASnC,EAAYj0B,IAC/E,OAAOk+B,EAAKh8C,KAAK47C,MAEjB,CACNj9C,GAAS,EACT,YAEG,GACDu9D,IAAaC,IACXL,EAAUI,EAAUC,EAAUjoB,EAASnC,EAAYj0B,GACpD,CACLnf,GAAS,EACT,OAKJ,OAFAmf,EAAc,OAAE9e,GAChB8e,EAAc,OAAEmuB,GACTttC,G,0CCtDL2yC,EAAc,IAAS,IAAOj1C,eAAYqD,EAC1Co0C,EAAgBxC,EAAcA,EAAYO,aAAUnyC,EAoFzC,MAjEf,SAAoBvD,EAAQ8vC,EAAO78B,EAAK8kC,EAASnC,EAAY+pB,EAAWh+C,GACtE,OAAQ1O,GACN,IAzBc,oBA0BZ,GAAKjT,EAAOu3C,YAAczH,EAAMyH,YAC3Bv3C,EAAOs3C,YAAcxH,EAAMwH,WAC9B,OAAO,EAETt3C,EAASA,EAAOq3C,OAChBvH,EAAQA,EAAMuH,OAEhB,IAlCiB,uBAmCf,QAAKr3C,EAAOu3C,YAAczH,EAAMyH,aAC3BooB,EAAU,IAAI,IAAW3/D,GAAS,IAAI,IAAW8vC,KAKxD,IAnDU,mBAoDV,IAnDU,gBAoDV,IAjDY,kBAoDV,OAAO,OAAA9nC,EAAA,IAAIhI,GAAS8vC,GAEtB,IAxDW,iBAyDT,OAAO9vC,EAAOnB,MAAQixC,EAAMjxC,MAAQmB,EAAO8hB,SAAWguB,EAAMhuB,QAE9D,IAxDY,kBAyDZ,IAvDY,kBA2DV,OAAO9hB,GAAW8vC,EAAQ,GAE5B,IAjES,eAkEP,IAAIowB,EAAU,IAEhB,IAjES,eAkEP,IAAIN,EA5EiB,EA4EL7nB,EAGhB,GAFAmoB,IAAYA,EAAU,KAElBlgE,EAAOi+C,MAAQnO,EAAMmO,OAAS2hB,EAChC,OAAO,EAGT,IAAIxnB,EAAUz2B,EAAMxiB,IAAIa,GACxB,GAAIo4C,EACF,OAAOA,GAAWtI,EAEpBiI,GAtFuB,EAyFvBp2B,EAAMgC,IAAI3jB,EAAQ8vC,GAClB,IAAIttC,EAAS,EAAY09D,EAAQlgE,GAASkgE,EAAQpwB,GAAQiI,EAASnC,EAAY+pB,EAAWh+C,GAE1F,OADAA,EAAc,OAAE3hB,GACTwC,EAET,IAnFY,kBAoFV,GAAIm1C,EACF,OAAOA,EAAcl5C,KAAKuB,IAAW23C,EAAcl5C,KAAKqxC,GAG9D,OAAO,G,SCnGL,EAHc9wC,OAAOkB,UAGQC,eAgFlB,MAjEf,SAAsBH,EAAQ8vC,EAAOiI,EAASnC,EAAY+pB,EAAWh+C,GACnE,IAAIi+C,EAtBqB,EAsBT7nB,EACZooB,EAAW,YAAWngE,GACtBogE,EAAYD,EAASn9D,OAIzB,GAAIo9D,GAHW,YAAWtwB,GACD9sC,SAEM48D,EAC7B,OAAO,EAGT,IADA,IAAI78D,EAAQq9D,EACLr9D,KAAS,CACd,IAAIlD,EAAMsgE,EAASp9D,GACnB,KAAM68D,EAAY//D,KAAOiwC,EAAQ,EAAerxC,KAAKqxC,EAAOjwC,IAC1D,OAAO,EAIX,IAAIwgE,EAAa1+C,EAAMxiB,IAAIa,GACvB8/D,EAAan+C,EAAMxiB,IAAI2wC,GAC3B,GAAIuwB,GAAcP,EAChB,OAAOO,GAAcvwB,GAASgwB,GAAc9/D,EAE9C,IAAIwC,GAAS,EACbmf,EAAMgC,IAAI3jB,EAAQ8vC,GAClBnuB,EAAMgC,IAAImsB,EAAO9vC,GAGjB,IADA,IAAIsgE,EAAWV,IACN78D,EAAQq9D,GAAW,CAE1B,IAAItG,EAAW95D,EADfH,EAAMsgE,EAASp9D,IAEXi9D,EAAWlwB,EAAMjwC,GAErB,GAAI+1C,EACF,IAAIqqB,EAAWL,EACXhqB,EAAWoqB,EAAUlG,EAAUj6D,EAAKiwC,EAAO9vC,EAAQ2hB,GACnDi0B,EAAWkkB,EAAUkG,EAAUngE,EAAKG,EAAQ8vC,EAAOnuB,GAGzD,UAAmBpe,IAAb08D,EACGnG,IAAakG,GAAYL,EAAU7F,EAAUkG,EAAUjoB,EAASnC,EAAYj0B,GAC7Es+C,GACD,CACLz9D,GAAS,EACT,MAEF89D,IAAaA,EAAkB,eAAPzgE,GAE1B,GAAI2C,IAAW89D,EAAU,CACvB,IAAIC,EAAUvgE,EAAOkH,YACjBs5D,EAAU1wB,EAAM5oC,YAGhBq5D,GAAWC,KACV,gBAAiBxgE,MAAU,gBAAiB8vC,IACzB,mBAAXywB,GAAyBA,aAAmBA,GACjC,mBAAXC,GAAyBA,aAAmBA,IACvDh+D,GAAS,GAKb,OAFAmf,EAAc,OAAE3hB,GAChB2hB,EAAc,OAAEmuB,GACTttC,G,+BCvELi+D,EAAY,kBAMZ,EAHczhE,OAAOkB,UAGQC,eA6DlB,MA7Cf,SAAyBH,EAAQ8vC,EAAOiI,EAASnC,EAAY+pB,EAAWh+C,GACtE,IAAI++C,EAAW,OAAAp+D,EAAA,GAAQtC,GACnB2gE,EAAW,OAAAr+D,EAAA,GAAQwtC,GACnB8wB,EAASF,EA1BA,iBA0BsB,YAAO1gE,GACtC6gE,EAASF,EA3BA,iBA2BsB,YAAO7wB,GAKtCgxB,GAHJF,EA9BY,sBA8BHA,EAAoBH,EAAYG,IAGhBH,EACrBM,GAHJF,EA/BY,sBA+BHA,EAAoBJ,EAAYI,IAGhBJ,EACrBO,EAAYJ,GAAUC,EAE1B,GAAIG,GAAa,OAAA7oB,EAAA,GAASn4C,GAAS,CACjC,IAAK,OAAAm4C,EAAA,GAASrI,GACZ,OAAO,EAET4wB,GAAW,EACXI,GAAW,EAEb,GAAIE,IAAcF,EAEhB,OADAn/C,IAAUA,EAAQ,IAAI,KACd++C,GAAY,OAAA5xB,EAAA,GAAa9uC,GAC7B,EAAYA,EAAQ8vC,EAAOiI,EAASnC,EAAY+pB,EAAWh+C,GAC3D,EAAW3hB,EAAQ8vC,EAAO8wB,EAAQ7oB,EAASnC,EAAY+pB,EAAWh+C,GAExE,KArDyB,EAqDnBo2B,GAAiC,CACrC,IAAIkpB,EAAeH,GAAY,EAAeriE,KAAKuB,EAAQ,eACvDkhE,EAAeH,GAAY,EAAetiE,KAAKqxC,EAAO,eAE1D,GAAImxB,GAAgBC,EAAc,CAChC,IAAIC,EAAeF,EAAejhE,EAAOT,QAAUS,EAC/CohE,EAAeF,EAAepxB,EAAMvwC,QAAUuwC,EAGlD,OADAnuB,IAAUA,EAAQ,IAAI,KACfg+C,EAAUwB,EAAcC,EAAcrpB,EAASnC,EAAYj0B,IAGtE,QAAKq/C,IAGLr/C,IAAUA,EAAQ,IAAI,KACf,EAAa3hB,EAAQ8vC,EAAOiI,EAASnC,EAAY+pB,EAAWh+C,K,OCpDtD,IAVf,SAAS0/C,EAAY9hE,EAAOuwC,EAAOiI,EAASnC,EAAYj0B,GACtD,OAAIpiB,IAAUuwC,IAGD,MAATvwC,GAA0B,MAATuwC,IAAmB,OAAAwL,EAAA,GAAa/7C,KAAW,OAAA+7C,EAAA,GAAaxL,GACpEvwC,GAAUA,GAASuwC,GAAUA,EAE/B,EAAgBvwC,EAAOuwC,EAAOiI,EAASnC,EAAYyrB,EAAa1/C,M,6BCH1D,MAXf,SAAyB9e,EAAOkiB,EAAQjiB,EAAUi9C,GAIhD,IAHA,IAAIh9C,GAAS,EACTC,EAAkB,MAATH,EAAgB,EAAIA,EAAMG,SAE9BD,EAAQC,GAAQ,CACvB,IAAIzD,EAAQsD,EAAME,GAClBgiB,EAAOg7B,EAAaxgD,EAAOuD,EAASvD,GAAQsD,GAE9C,OAAOk9C,G,QCEM,MAPf,SAAwBzvB,EAAYvL,EAAQjiB,EAAUi9C,GAIpD,OAHA,YAASzvB,GAAY,SAAS/wB,EAAOM,EAAKywB,GACxCvL,EAAOg7B,EAAaxgD,EAAOuD,EAASvD,GAAQ+wB,MAEvCyvB,G,cCKM,IATf,SAA0Bh7B,EAAQu8C,GAChC,OAAO,SAAShxC,EAAYxtB,GAC1B,IAAIJ,EAAO,OAAAJ,EAAA,GAAQguB,GAAc,EAAkB,EAC/CyvB,EAAcuhB,EAAcA,IAAgB,GAEhD,OAAO5+D,EAAK4tB,EAAYvL,EAAQ,YAAajiB,EAAU,GAAIi9C,M,0CCAhD,MALf,SAAqBxgD,GAEnB,OADA8B,KAAK04D,SAASp2C,IAAIpkB,EAbC,6BAcZ8B,MCFM,MAJf,SAAqB9B,GACnB,OAAO8B,KAAK04D,SAASr9C,IAAInd,ICE3B,SAASgiE,EAASz6C,GAChB,IAAI/jB,GAAS,EACTC,EAAmB,MAAV8jB,EAAiB,EAAIA,EAAO9jB,OAGzC,IADA3B,KAAK04D,SAAW,IAAI,MACXh3D,EAAQC,GACf3B,KAAKM,IAAImlB,EAAO/jB,IAKpBw+D,EAASrhE,UAAUyB,IAAM4/D,EAASrhE,UAAU2D,KAAO,EACnD09D,EAASrhE,UAAUwc,IAAM,EAEV,O,6BC1Bf,oBAII8kD,EAAM,YAAU,IAAM,OAEX,O,6BCNf,oBAIIC,EAAM,YAAU,IAAM,OAEX,O,6BCNf,4BAiCIxW,EAAe,aAAe,SAASjrD,EAAQolB,EAAQm4B,EAAU3H,GACnE,YAAWxwB,EAAQ,YAAOA,GAASplB,EAAQ41C,MAG9B,O,0CCvBXyY,EAAmB,CAQrB,OCrBa,mBD6Bb,SE7Be,kBFqCf,Y,OAAe,EAQf,SAAY,GAQZ,QAAW,CAQT,EAAK,CAAE,OAAU,OAIN,O,6BGlEf,qDAQIrQ,EAAa70C,KAAK0tB,KAwBP,IAbf,SAAuB7zB,EAAQ6/C,GAG7B,IAAI6e,GAFJ7e,OAAkBt/C,IAAVs/C,EAAsB,IAAM,YAAaA,IAEzB7/C,OACxB,GAAI0+D,EAAc,EAChB,OAAOA,EAAc,YAAW7e,EAAO7/C,GAAU6/C,EAEnD,IAAIrgD,EAAS,YAAWqgD,EAAO7E,EAAWh7C,EAAS,YAAW6/C,KAC9D,OAAO,YAAWA,GACd,YAAU,YAAcrgD,GAAS,EAAGQ,GAAQqN,KAAK,IACjD7N,EAAOmC,MAAM,EAAG3B,K,yCCxBP,EAFI,YAAUhE,OAAQ,UCWtB,MALf,WACEqC,KAAK04D,SAAW,EAAe,EAAa,MAAQ,GACpD14D,KAAK48C,KAAO,GCKC,MANf,SAAoBp+C,GAClB,IAAI2C,EAASnB,KAAKqb,IAAI7c,WAAewB,KAAK04D,SAASl6D,GAEnD,OADAwB,KAAK48C,MAAQz7C,EAAS,EAAI,EACnBA,GCJL,EAHcxD,OAAOkB,UAGQC,eAoBlB,MATf,SAAiBN,GACf,IAAI+jB,EAAOviB,KAAK04D,SAChB,GAAI,EAAc,CAChB,IAAIv3D,EAASohB,EAAK/jB,GAClB,MArBiB,8BAqBV2C,OAA4Be,EAAYf,EAEjD,OAAO,EAAe/D,KAAKmlB,EAAM/jB,GAAO+jB,EAAK/jB,QAAO0D,GCpBlD,EAHcvE,OAAOkB,UAGQC,eAgBlB,MALf,SAAiBN,GACf,IAAI+jB,EAAOviB,KAAK04D,SAChB,OAAO,OAA8Bx2D,IAAdqgB,EAAK/jB,GAAsB,EAAepB,KAAKmlB,EAAM/jB,ICG/D,MAPf,SAAiBA,EAAKN,GACpB,IAAIqkB,EAAOviB,KAAK04D,SAGhB,OAFA14D,KAAK48C,MAAQ58C,KAAKqb,IAAI7c,GAAO,EAAI,EACjC+jB,EAAK/jB,GAAQ,QAA0B0D,IAAVhE,EAfV,4BAekDA,EAC9D8B,MCNT,SAASsgE,EAAKtW,GACZ,IAAItoD,GAAS,EACTC,EAAoB,MAAXqoD,EAAkB,EAAIA,EAAQroD,OAG3C,IADA3B,KAAK64D,UACIn3D,EAAQC,GAAQ,CACvB,IAAI08D,EAAQrU,EAAQtoD,GACpB1B,KAAKsiB,IAAI+7C,EAAM,GAAIA,EAAM,KAK7BiC,EAAKzhE,UAAUg6D,MAAQ,EACvByH,EAAKzhE,UAAkB,OAAI,EAC3ByhE,EAAKzhE,UAAUf,IAAM,EACrBwiE,EAAKzhE,UAAUwc,IAAM,EACrBilD,EAAKzhE,UAAUyjB,IAAM,EAEN,Q,gBCXA,MATf,WACEtiB,KAAK48C,KAAO,EACZ58C,KAAK04D,SAAW,CACd,KAAQ,IAAI,EACZ,IAAO,IAAK,KAAO,KACnB,OAAU,IAAI,ICFH,MAPf,SAAmBx6D,GACjB,IAAIqD,SAAcrD,EAClB,MAAgB,UAARqD,GAA4B,UAARA,GAA4B,UAARA,GAA4B,WAARA,EACrD,cAAVrD,EACU,OAAVA,GCMQ,MAPf,SAAoBqI,EAAK/H,GACvB,IAAI+jB,EAAOhc,EAAImyD,SACf,OAAO,EAAUl6D,GACb+jB,EAAmB,iBAAP/jB,EAAkB,SAAW,QACzC+jB,EAAKhc,KCGI,MANf,SAAwB/H,GACtB,IAAI2C,EAAS,EAAWnB,KAAMxB,GAAa,OAAEA,GAE7C,OADAwB,KAAK48C,MAAQz7C,EAAS,EAAI,EACnBA,GCCM,MAJf,SAAqB3C,GACnB,OAAO,EAAWwB,KAAMxB,GAAKV,IAAIU,ICGpB,MAJf,SAAqBA,GACnB,OAAO,EAAWwB,KAAMxB,GAAK6c,IAAI7c,ICSpB,MATf,SAAqBA,EAAKN,GACxB,IAAIqkB,EAAO,EAAWviB,KAAMxB,GACxBo+C,EAAOr6B,EAAKq6B,KAIhB,OAFAr6B,EAAKD,IAAI9jB,EAAKN,GACd8B,KAAK48C,MAAQr6B,EAAKq6B,MAAQA,EAAO,EAAI,EAC9B58C,MCLT,SAASugE,EAASvW,GAChB,IAAItoD,GAAS,EACTC,EAAoB,MAAXqoD,EAAkB,EAAIA,EAAQroD,OAG3C,IADA3B,KAAK64D,UACIn3D,EAAQC,GAAQ,CACvB,IAAI08D,EAAQrU,EAAQtoD,GACpB1B,KAAKsiB,IAAI+7C,EAAM,GAAIA,EAAM,KAK7BkC,EAAS1hE,UAAUg6D,MAAQ,EAC3B0H,EAAS1hE,UAAkB,OAAI,EAC/B0hE,EAAS1hE,UAAUf,IAAM,EACzByiE,EAAS1hE,UAAUwc,IAAM,EACzBklD,EAAS1hE,UAAUyjB,IAAM,EAEV,O,6BC/Bf,oBAIIk+C,EAAU,YAAU,IAAM,WAEf,O,8BCNf;;;;;;AAOA,IAAIC,EAAc9iE,OAAO+iE,OAAO,IAIhC,SAASC,EAASvkD,GAChB,OAAOA,QAGT,SAASwkD,EAAOxkD,GACd,OAAOA,QAGT,SAASykD,EAAQzkD,GACf,OAAa,IAANA,EAUT,SAASuvB,EAAaztC,GACpB,MACmB,iBAAVA,GACU,iBAAVA,GAEU,iBAAVA,GACU,kBAAVA,EASX,SAASuE,EAAUwB,GACjB,OAAe,OAARA,GAA+B,iBAARA,EAMhC,IAAI68D,EAAYnjE,OAAOkB,UAAU8E,SAUjC,SAASiE,EAAe3D,GACtB,MAA+B,oBAAxB68D,EAAU1jE,KAAK6G,GAGxB,SAASqkD,EAAUlsC,GACjB,MAA6B,oBAAtB0kD,EAAU1jE,KAAKgf,GAMxB,SAAS2kD,EAAmBl8D,GAC1B,IAAInG,EAAIm0B,WAAW/lB,OAAOjI,IAC1B,OAAOnG,GAAK,GAAKoJ,KAAKq4C,MAAMzhD,KAAOA,GAAK03B,SAASvxB,GAGnD,SAASm8D,EAAWn8D,GAClB,OACE+7D,EAAM/7D,IACc,mBAAbA,EAAIiY,MACU,mBAAdjY,EAAIic,MAOf,SAASnd,EAAUkB,GACjB,OAAc,MAAPA,EACH,GACA3D,MAAMD,QAAQ4D,IAAS+C,EAAc/C,IAAQA,EAAIlB,WAAam9D,EAC5D/9C,KAAKs3C,UAAUx1D,EAAK,KAAM,GAC1BiI,OAAOjI,GAOf,SAAS63C,EAAU73C,GACjB,IAAInG,EAAIm0B,WAAWhuB,GACnB,OAAOslC,MAAMzrC,GAAKmG,EAAMnG,EAO1B,SAASuiE,EACP9yB,EACA+yB,GAIA,IAFA,IAAI36D,EAAM5I,OAAOY,OAAO,MACpB6M,EAAO+iC,EAAIhlC,MAAM,KACZlM,EAAI,EAAGA,EAAImO,EAAKzJ,OAAQ1E,IAC/BsJ,EAAI6E,EAAKnO,KAAM,EAEjB,OAAOikE,EACH,SAAUr8D,GAAO,OAAO0B,EAAI1B,EAAIwE,gBAChC,SAAUxE,GAAO,OAAO0B,EAAI1B,IAMfo8D,EAAQ,kBAAkB,GAA7C,IAKIE,EAAsBF,EAAQ,8BAKlC,SAASrjD,EAAQza,EAAKgB,GACpB,GAAIhB,EAAIxB,OAAQ,CACd,IAAID,EAAQyB,EAAIM,QAAQU,GACxB,GAAIzC,GAAS,EACX,OAAOyB,EAAIkE,OAAO3F,EAAO,IAQ/B,IAAI5C,EAAiBnB,OAAOkB,UAAUC,eACtC,SAAS8E,EAAQK,EAAKzF,GACpB,OAAOM,EAAe1B,KAAK6G,EAAKzF,GAMlC,SAASua,EAAQrT,GACf,IAAI2J,EAAQ1R,OAAOY,OAAO,MAC1B,OAAO,SAAoB4vC,GAEzB,OADU9+B,EAAM8+B,KACD9+B,EAAM8+B,GAAOzoC,EAAGyoC,KAOnC,IAAIizB,EAAa,SACbC,EAAWtoD,GAAO,SAAUo1B,GAC9B,OAAOA,EAAInmC,QAAQo5D,GAAY,SAAUpkD,EAAG1f,GAAK,OAAOA,EAAIA,EAAEwkB,cAAgB,SAM5EmqC,EAAalzC,GAAO,SAAUo1B,GAChC,OAAOA,EAAImzB,OAAO,GAAGx/C,cAAgBqsB,EAAI7qC,MAAM,MAM7Ci+D,EAAc,aACdC,EAAYzoD,GAAO,SAAUo1B,GAC/B,OAAOA,EAAInmC,QAAQu5D,EAAa,OAAOl4D,iBA8BzC,IAAI5K,EAAOsD,SAASlD,UAAUJ,KAJ9B,SAAqBiH,EAAI8pC,GACvB,OAAO9pC,EAAGjH,KAAK+wC,IAfjB,SAAuB9pC,EAAI8pC,GACzB,SAASiyB,EAASz2D,GAChB,IAAI9N,EAAIuJ,UAAU9E,OAClB,OAAOzE,EACHA,EAAI,EACFwI,EAAGlC,MAAMgsC,EAAK/oC,WACdf,EAAGtI,KAAKoyC,EAAKxkC,GACftF,EAAGtI,KAAKoyC,GAId,OADAiyB,EAAQC,QAAUh8D,EAAG/D,OACd8/D,GAcT,SAAS37D,EAASsF,EAAM9J,GACtBA,EAAQA,GAAS,EAGjB,IAFA,IAAIrE,EAAImO,EAAKzJ,OAASL,EAClB4E,EAAM,IAAIhF,MAAMjE,GACbA,KACLiJ,EAAIjJ,GAAKmO,EAAKnO,EAAIqE,GAEpB,OAAO4E,EAMT,SAASoB,EAAQszB,EAAI+mC,GACnB,IAAK,IAAInjE,KAAOmjE,EACd/mC,EAAGp8B,GAAOmjE,EAAMnjE,GAElB,OAAOo8B,EAMT,SAASgnC,EAAUz+D,GAEjB,IADA,IAAI0+D,EAAM,GACD5kE,EAAI,EAAGA,EAAIkG,EAAIxB,OAAQ1E,IAC1BkG,EAAIlG,IACNqK,EAAOu6D,EAAK1+D,EAAIlG,IAGpB,OAAO4kE,EAUT,SAASz5D,EAAM4C,EAAGC,EAAG3N,IAKrB,IAAIwkE,EAAK,SAAU92D,EAAGC,EAAG3N,GAAK,OAAO,GAOjCy6C,EAAW,SAAU/6B,GAAK,OAAOA,GAMrC,SAAS+kD,EAAY/2D,EAAGC,GACtB,GAAID,IAAMC,EAAK,OAAO,EACtB,IAAI+2D,EAAYv/D,EAASuI,GACrBi3D,EAAYx/D,EAASwI,GACzB,IAAI+2D,IAAaC,EAwBV,OAAKD,IAAcC,GACjBn1D,OAAO9B,KAAO8B,OAAO7B,GAxB5B,IACE,IAAIi3D,EAAWhhE,MAAMD,QAAQ+J,GACzBm3D,EAAWjhE,MAAMD,QAAQgK,GAC7B,GAAIi3D,GAAYC,EACd,OAAOn3D,EAAErJ,SAAWsJ,EAAEtJ,QAAUqJ,EAAEu6C,OAAM,SAAU13C,EAAG5Q,GACnD,OAAO8kE,EAAWl0D,EAAG5C,EAAEhO,OAEpB,GAAI+N,aAAaV,MAAQW,aAAaX,KAC3C,OAAOU,EAAEo3D,YAAcn3D,EAAEm3D,UACpB,GAAKF,GAAaC,EAQvB,OAAO,EAPP,IAAIE,EAAQ1kE,OAAOyR,KAAKpE,GACpBs3D,EAAQ3kE,OAAOyR,KAAKnE,GACxB,OAAOo3D,EAAM1gE,SAAW2gE,EAAM3gE,QAAU0gE,EAAM9c,OAAM,SAAU/mD,GAC5D,OAAOujE,EAAW/2D,EAAExM,GAAMyM,EAAEzM,OAMhC,MAAOqP,GAEP,OAAO,GAcb,SAAS00D,EAAcp/D,EAAK0B,GAC1B,IAAK,IAAI5H,EAAI,EAAGA,EAAIkG,EAAIxB,OAAQ1E,IAC9B,GAAI8kE,EAAW5+D,EAAIlG,GAAI4H,GAAQ,OAAO5H,EAExC,OAAQ,EAMV,SAASygB,EAAMhY,GACb,IAAI88D,GAAS,EACb,OAAO,WACAA,IACHA,GAAS,EACT98D,EAAGlC,MAAMxD,KAAMyG,aAKrB,IAEIg8D,EAAc,CAChB,YACA,YACA,UAGEC,EAAkB,CACpB,eACA,UACA,cACA,UACA,eACA,UACA,gBACA,YACA,YACA,cACA,gBACA,kBAOEC,EAAS,CAKXC,sBAAuBjlE,OAAOY,OAAO,MAKrCskE,QAAQ,EAKRC,eAAe,EAKfC,UAAU,EAKVC,aAAa,EAKbC,aAAc,KAKdC,YAAa,KAKbC,gBAAiB,GAMjBC,SAAUzlE,OAAOY,OAAO,MAMxB8kE,cAAevB,EAMfwB,eAAgBxB,EAMhByB,iBAAkBzB,EAKlB0B,gBAAiBp7D,EAKjBq7D,qBAAsB1rB,EAMtB2rB,YAAa5B,EAMbngC,OAAO,EAKPgiC,gBAAiBjB,GAUfkB,EAAgB,8JAapB,SAASC,EAAK5/D,EAAKzF,EAAKqG,EAAKhH,GAC3BF,OAAOC,eAAeqG,EAAKzF,EAAK,CAC9BN,MAAO2G,EACPhH,aAAcA,EACdwtB,UAAU,EACVhJ,cAAc,IAOlB,IAAIyhD,EAAS,IAAIn4D,OAAQ,KAAQi4D,EAAoB,OAAI,WAkBzD,IAmCIG,EAnCAC,EAAW,aAAe,GAG1BC,EAA8B,oBAAXhhE,OACnBihE,EAAkC,oBAAlBC,iBAAmCA,cAAcC,SACjEC,EAAeH,GAAUC,cAAcC,SAAS/6D,cAChDi7D,EAAKL,GAAahhE,OAAOu2D,UAAUU,UAAU7wD,cAC7Ck7D,EAAOD,GAAM,eAAe11D,KAAK01D,GACjCE,EAAQF,GAAMA,EAAG7gE,QAAQ,YAAc,EACvCghE,EAASH,GAAMA,EAAG7gE,QAAQ,SAAW,EAErCihE,GADaJ,GAAMA,EAAG7gE,QAAQ,WACrB6gE,GAAM,uBAAuB11D,KAAK01D,IAA0B,QAAjBD,GAGpDM,GAFWL,GAAM,cAAc11D,KAAK01D,GACtBA,GAAM,YAAY11D,KAAK01D,GAC9BA,GAAMA,EAAGr2D,MAAM,mBAGtB22D,GAAc,GAAKC,MAEnBC,IAAkB,EACtB,GAAIb,EACF,IACE,IAAI7qC,GAAO,GACXz7B,OAAOC,eAAew7B,GAAM,UAAW,CACrCt7B,IAAK,WAEHgnE,IAAkB,KAGtB7hE,OAAOiO,iBAAiB,eAAgB,KAAMkoB,IAC9C,MAAOvrB,IAMX,IAAIk3D,GAAoB,WAWtB,YAVkB7iE,IAAd6hE,IAOAA,GALGE,IAAcC,QAA4B,IAAXthE,IAGtBA,EAAgB,SAAuC,WAAlCA,EAAgB,QAAEoiE,IAAIC,UAKpDlB,GAILhB,GAAWkB,GAAahhE,OAAOiiE,6BAGnC,SAAShd,GAAU5/C,GACjB,MAAuB,mBAATA,GAAuB,cAAcsG,KAAKtG,EAAK3E,YAG/D,IAIIwhE,GAJAC,GACgB,oBAAXpnE,QAA0BkqD,GAASlqD,SACvB,oBAAZqnE,SAA2Bnd,GAASmd,QAAQC,SAMnDH,GAFiB,oBAAR/E,KAAuBlY,GAASkY,KAElCA,IAGc,WACnB,SAASA,IACPpgE,KAAKsiB,IAAM3kB,OAAOY,OAAO,MAY3B,OAVA6hE,EAAIvhE,UAAUwc,IAAM,SAAc7c,GAChC,OAAyB,IAAlBwB,KAAKsiB,IAAI9jB,IAElB4hE,EAAIvhE,UAAUyB,IAAM,SAAc9B,GAChCwB,KAAKsiB,IAAI9jB,IAAO,GAElB4hE,EAAIvhE,UAAUg6D,MAAQ,WACpB74D,KAAKsiB,IAAM3kB,OAAOY,OAAO,OAGpB6hE,EAdW,GAoBtB,IAAI5/C,GAAOpY,EA8FPga,GAAM,EAMNmjD,GAAM,WACRvlE,KAAKwO,GAAK4T,KACVpiB,KAAKwlE,KAAO,IAGdD,GAAI1mE,UAAU4mE,OAAS,SAAiBpU,GACtCrxD,KAAKwlE,KAAKhjE,KAAK6uD,IAGjBkU,GAAI1mE,UAAU6mE,UAAY,SAAoBrU,GAC5CzzC,EAAO5d,KAAKwlE,KAAMnU,IAGpBkU,GAAI1mE,UAAU8mE,OAAS,WACjBJ,GAAI79D,QACN69D,GAAI79D,OAAOk+D,OAAO5lE,OAItBulE,GAAI1mE,UAAU+f,OAAS,WAErB,IAAI4mD,EAAOxlE,KAAKwlE,KAAKliE,QAOrB,IAAK,IAAIrG,EAAI,EAAGC,EAAIsoE,EAAK7jE,OAAQ1E,EAAIC,EAAGD,IACtCuoE,EAAKvoE,GAAGwuD,UAOZ8Z,GAAI79D,OAAS,KACb,IAAIm+D,GAAc,GAElB,SAASC,GAAYp+D,GACnBm+D,GAAYrjE,KAAKkF,GACjB69D,GAAI79D,OAASA,EAGf,SAASq+D,KACPF,GAAY36D,MACZq6D,GAAI79D,OAASm+D,GAAYA,GAAYlkE,OAAS,GAKhD,IAAIqkE,GAAQ,SACVp0D,EACA2Q,EACAtH,EACAjW,EACAihE,EACAlmE,EACAmmE,EACAC,GAEAnmE,KAAK4R,IAAMA,EACX5R,KAAKuiB,KAAOA,EACZviB,KAAKib,SAAWA,EAChBjb,KAAKgF,KAAOA,EACZhF,KAAKimE,IAAMA,EACXjmE,KAAK1B,QAAK4D,EACVlC,KAAKD,QAAUA,EACfC,KAAKomE,eAAYlkE,EACjBlC,KAAKqmE,eAAYnkE,EACjBlC,KAAKsmE,eAAYpkE,EACjBlC,KAAKxB,IAAM+jB,GAAQA,EAAK/jB,IACxBwB,KAAKkmE,iBAAmBA,EACxBlmE,KAAKumE,uBAAoBrkE,EACzBlC,KAAKG,YAAS+B,EACdlC,KAAKshB,KAAM,EACXthB,KAAKwmE,UAAW,EAChBxmE,KAAKymE,cAAe,EACpBzmE,KAAK0mE,WAAY,EACjB1mE,KAAK2mE,UAAW,EAChB3mE,KAAK4mE,QAAS,EACd5mE,KAAKmmE,aAAeA,EACpBnmE,KAAK6mE,eAAY3kE,EACjBlC,KAAK8mE,oBAAqB,GAGxBC,GAAqB,CAAEC,MAAO,CAAE3kD,cAAc,IAIlD0kD,GAAmBC,MAAMlpE,IAAM,WAC7B,OAAOkC,KAAKumE,mBAGd5oE,OAAOspE,iBAAkBjB,GAAMnnE,UAAWkoE,IAE1C,IAAIG,GAAmB,SAAUliE,QACjB,IAATA,IAAkBA,EAAO,IAE9B,IAAIL,EAAO,IAAIqhE,GAGf,OAFArhE,EAAKK,KAAOA,EACZL,EAAK+hE,WAAY,EACV/hE,GAGT,SAASwiE,GAAiBtiE,GACxB,OAAO,IAAImhE,QAAM9jE,OAAWA,OAAWA,EAAW4K,OAAOjI,IAO3D,SAASuiE,GAAYC,GACnB,IAAIC,EAAS,IAAItB,GACfqB,EAAMz1D,IACNy1D,EAAM9kD,KAIN8kD,EAAMpsD,UAAYosD,EAAMpsD,SAAS3X,QACjC+jE,EAAMriE,KACNqiE,EAAMpB,IACNoB,EAAMtnE,QACNsnE,EAAMnB,iBACNmB,EAAMlB,cAWR,OATAmB,EAAOhpE,GAAK+oE,EAAM/oE,GAClBgpE,EAAOd,SAAWa,EAAMb,SACxBc,EAAO9oE,IAAM6oE,EAAM7oE,IACnB8oE,EAAOZ,UAAYW,EAAMX,UACzBY,EAAOlB,UAAYiB,EAAMjB,UACzBkB,EAAOjB,UAAYgB,EAAMhB,UACzBiB,EAAOhB,UAAYe,EAAMf,UACzBgB,EAAOT,UAAYQ,EAAMR,UACzBS,EAAOX,UAAW,EACXW,EAQT,IAAIr8B,GAAa/pC,MAAMrC,UACnB0oE,GAAe5pE,OAAOY,OAAO0sC,IAEZ,CACnB,OACA,MACA,QACA,UACA,SACA,OACA,WAMaE,SAAQ,SAAUxuB,GAE/B,IAAI+T,EAAWua,GAAWtuB,GAC1BknD,EAAI0D,GAAc5qD,GAAQ,WAExB,IADA,IAAIxH,EAAO,GAAIlO,EAAMR,UAAU9E,OACvBsF,KAAQkO,EAAMlO,GAAQR,UAAWQ,GAEzC,IAEIugE,EAFArmE,EAASuvB,EAASltB,MAAMxD,KAAMmV,GAC9BsyD,EAAKznE,KAAK0nE,OAEd,OAAQ/qD,GACN,IAAK,OACL,IAAK,UACH6qD,EAAWryD,EACX,MACF,IAAK,SACHqyD,EAAWryD,EAAK7R,MAAM,GAM1B,OAHIkkE,GAAYC,EAAGE,aAAaH,GAEhCC,EAAGG,IAAIhpD,SACAzd,QAMX,IAAI0mE,GAAYlqE,OAAOmqE,oBAAoBP,IAMvCQ,IAAgB,EAEpB,SAASC,GAAiB9pE,GACxB6pE,GAAgB7pE,EASlB,IAAI+pE,GAAW,SAAmB/pE,GAChC8B,KAAK9B,MAAQA,EACb8B,KAAK4nE,IAAM,IAAIrC,GACfvlE,KAAKkoE,QAAU,EACfrE,EAAI3lE,EAAO,SAAU8B,MACjBkB,MAAMD,QAAQ/C,IACZ8lE,EAsCR,SAAuBt8D,EAAQpD,GAE7BoD,EAAO6qD,UAAYjuD,EAvCf6jE,CAAajqE,EAAOqpE,IAgD1B,SAAsB7/D,EAAQpD,EAAK8K,GACjC,IAAK,IAAInS,EAAI,EAAGC,EAAIkS,EAAKzN,OAAQ1E,EAAIC,EAAGD,IAAK,CAC3C,IAAIuB,EAAM4Q,EAAKnS,GACf4mE,EAAIn8D,EAAQlJ,EAAK8F,EAAI9F,KAjDnB4pE,CAAYlqE,EAAOqpE,GAAcM,IAEnC7nE,KAAK2nE,aAAazpE,IAElB8B,KAAKqoE,KAAKnqE,IAsDd,SAASoqE,GAASpqE,EAAOqqE,GAIvB,IAAId,EAHJ,GAAKhlE,EAASvE,MAAUA,aAAiB8nE,IAkBzC,OAdIpiE,EAAO1F,EAAO,WAAaA,EAAMwpE,kBAAkBO,GACrDR,EAAKvpE,EAAMwpE,OAEXK,KACChD,OACA7jE,MAAMD,QAAQ/C,IAAU0J,EAAc1J,KACvCP,OAAO6qE,aAAatqE,KACnBA,EAAMuqE,SAEPhB,EAAK,IAAIQ,GAAS/pE,IAEhBqqE,GAAcd,GAChBA,EAAGS,UAEET,EAMT,SAASiB,GACPzkE,EACAzF,EACAqG,EACA8jE,EACAC,GAEA,IAAIhB,EAAM,IAAIrC,GAEV3mE,EAAWjB,OAAOkrE,yBAAyB5kE,EAAKzF,GACpD,IAAII,IAAsC,IAA1BA,EAASyjB,aAAzB,CAKA,IAAI5kB,EAASmB,GAAYA,EAASd,IAC9B4lB,EAAS9kB,GAAYA,EAAS0jB,IAC5B7kB,IAAUimB,GAAgC,IAArBjd,UAAU9E,SACnCkD,EAAMZ,EAAIzF,IAGZ,IAAIsqE,GAAWF,GAAWN,GAAQzjE,GAClClH,OAAOC,eAAeqG,EAAKzF,EAAK,CAC9BX,YAAY,EACZwkB,cAAc,EACdvkB,IAAK,WACH,IAAII,EAAQT,EAASA,EAAOL,KAAK6G,GAAOY,EAUxC,OATI0gE,GAAI79D,SACNkgE,EAAIjC,SACAmD,IACFA,EAAQlB,IAAIjC,SACRzkE,MAAMD,QAAQ/C,IAChB6qE,GAAY7qE,KAIXA,GAETokB,IAAK,SAAyB0mD,GAC5B,IAAI9qE,EAAQT,EAASA,EAAOL,KAAK6G,GAAOY,EAEpCmkE,IAAW9qE,GAAU8qE,GAAWA,GAAU9qE,GAAUA,GAQpDT,IAAWimB,IACXA,EACFA,EAAOtmB,KAAK6G,EAAK+kE,GAEjBnkE,EAAMmkE,EAERF,GAAWF,GAAWN,GAAQU,GAC9BpB,EAAIhpD,cAUV,SAAS0D,GAAK5a,EAAQlJ,EAAKqG,GAMzB,GAAI3D,MAAMD,QAAQyG,IAAWq5D,EAAkBviE,GAG7C,OAFAkJ,EAAO/F,OAASmG,KAAKitB,IAAIrtB,EAAO/F,OAAQnD,GACxCkJ,EAAOL,OAAO7I,EAAK,EAAGqG,GACfA,EAET,GAAIrG,KAAOkJ,KAAYlJ,KAAOb,OAAOkB,WAEnC,OADA6I,EAAOlJ,GAAOqG,EACPA,EAET,IAAI4iE,EAAK,EAASC,OAClB,OAAIhgE,EAAO+gE,QAAWhB,GAAMA,EAAGS,QAKtBrjE,EAEJ4iE,GAILiB,GAAkBjB,EAAGvpE,MAAOM,EAAKqG,GACjC4iE,EAAGG,IAAIhpD,SACA/Z,IALL6C,EAAOlJ,GAAOqG,EACPA,GAUX,SAASokE,GAAKvhE,EAAQlJ,GAMpB,GAAI0C,MAAMD,QAAQyG,IAAWq5D,EAAkBviE,GAC7CkJ,EAAOL,OAAO7I,EAAK,OADrB,CAIA,IAAIipE,EAAK,EAASC,OACdhgE,EAAO+gE,QAAWhB,GAAMA,EAAGS,SAO1BtkE,EAAO8D,EAAQlJ,YAGbkJ,EAAOlJ,GACTipE,GAGLA,EAAGG,IAAIhpD,WAOT,SAASmqD,GAAa7qE,GACpB,IAAK,IAAI2P,OAAI,EAAU5Q,EAAI,EAAGC,EAAIgB,EAAMyD,OAAQ1E,EAAIC,EAAGD,KACrD4Q,EAAI3P,EAAMjB,KACL4Q,EAAE65D,QAAU75D,EAAE65D,OAAOE,IAAIjC,SAC1BzkE,MAAMD,QAAQ4M,IAChBk7D,GAAYl7D,GAhNlBo6D,GAASppE,UAAUwpE,KAAO,SAAepkE,GAEvC,IADA,IAAImL,EAAOzR,OAAOyR,KAAKnL,GACdhH,EAAI,EAAGA,EAAImS,EAAKzN,OAAQ1E,IAC/ByrE,GAAkBzkE,EAAKmL,EAAKnS,KAOhCgrE,GAASppE,UAAU8oE,aAAe,SAAuBuB,GACvD,IAAK,IAAIjsE,EAAI,EAAGC,EAAIgsE,EAAMvnE,OAAQ1E,EAAIC,EAAGD,IACvCqrE,GAAQY,EAAMjsE,KAgNlB,IAAIksE,GAASxG,EAAOC,sBAoBpB,SAASwG,GAAWxuC,EAAIgR,GACtB,IAAKA,EAAQ,OAAOhR,EAOpB,IANA,IAAIp8B,EAAK6qE,EAAOC,EAEZl6D,EAAOg2D,GACPC,QAAQC,QAAQ15B,GAChBjuC,OAAOyR,KAAKw8B,GAEP3uC,EAAI,EAAGA,EAAImS,EAAKzN,OAAQ1E,IAGnB,YAFZuB,EAAM4Q,EAAKnS,MAGXosE,EAAQzuC,EAAGp8B,GACX8qE,EAAU19B,EAAKptC,GACVoF,EAAOg3B,EAAIp8B,GAGd6qE,IAAUC,GACV1hE,EAAcyhE,IACdzhE,EAAc0hE,IAEdF,GAAUC,EAAOC,GANjBhnD,GAAIsY,EAAIp8B,EAAK8qE,IASjB,OAAO1uC,EAMT,SAAS2uC,GACPC,EACAC,EACAC,GAEA,OAAKA,EAoBI,WAEL,IAAIC,EAAmC,mBAAbF,EACtBA,EAASrsE,KAAKssE,EAAIA,GAClBD,EACAG,EAAmC,mBAAdJ,EACrBA,EAAUpsE,KAAKssE,EAAIA,GACnBF,EACJ,OAAIG,EACKP,GAAUO,EAAcC,GAExBA,GA7BNH,EAGAD,EAQE,WACL,OAAOJ,GACe,mBAAbK,EAA0BA,EAASrsE,KAAK4C,KAAMA,MAAQypE,EACxC,mBAAdD,EAA2BA,EAAUpsE,KAAK4C,KAAMA,MAAQwpE,IAV1DC,EAHAD,EA2Db,SAASK,GACPL,EACAC,GAEA,IAAI5H,EAAM4H,EACND,EACEA,EAAUxoE,OAAOyoE,GACjBvoE,MAAMD,QAAQwoE,GACZA,EACA,CAACA,GACLD,EACJ,OAAO3H,EAKT,SAAsBt+C,GAEpB,IADA,IAAIs+C,EAAM,GACD5kE,EAAI,EAAGA,EAAIsmB,EAAM5hB,OAAQ1E,KACD,IAA3B4kE,EAAIp+D,QAAQ8f,EAAMtmB,KACpB4kE,EAAIr/D,KAAK+gB,EAAMtmB,IAGnB,OAAO4kE,EAXHiI,CAAYjI,GACZA,EAwBN,SAASkI,GACPP,EACAC,EACAC,EACAlrE,GAEA,IAAIqjE,EAAMlkE,OAAOY,OAAOirE,GAAa,MACrC,OAAIC,EAEKniE,EAAOu6D,EAAK4H,GAEZ5H,EAzEXsH,GAAO5mD,KAAO,SACZinD,EACAC,EACAC,GAEA,OAAKA,EAcEH,GAAcC,EAAWC,EAAUC,GAbpCD,GAAgC,mBAAbA,EAQdD,EAEFD,GAAcC,EAAWC,IAmCpC/G,EAAgBv3B,SAAQ,SAAUzrC,GAChCypE,GAAOzpE,GAAQmqE,MAyBjBpH,EAAYt3B,SAAQ,SAAU5pC,GAC5B4nE,GAAO5nE,EAAO,KAAOwoE,MASvBZ,GAAOtE,MAAQ,SACb2E,EACAC,EACAC,EACAlrE,GAMA,GAHIgrE,IAAc5E,KAAe4E,OAAYtnE,GACzCunE,IAAa7E,KAAe6E,OAAWvnE,IAEtCunE,EAAY,OAAO9rE,OAAOY,OAAOirE,GAAa,MAInD,IAAKA,EAAa,OAAOC,EACzB,IAAIvjE,EAAM,GAEV,IAAK,IAAI8jE,KADT1iE,EAAOpB,EAAKsjE,GACMC,EAAU,CAC1B,IAAItpE,EAAS+F,EAAI8jE,GACbhD,EAAQyC,EAASO,GACjB7pE,IAAWe,MAAMD,QAAQd,KAC3BA,EAAS,CAACA,IAEZ+F,EAAI8jE,GAAS7pE,EACTA,EAAOa,OAAOgmE,GACd9lE,MAAMD,QAAQ+lE,GAASA,EAAQ,CAACA,GAEtC,OAAO9gE,GAMTijE,GAAOx9C,MACPw9C,GAAO19B,QACP09B,GAAOc,OACPd,GAAO/3C,SAAW,SAChBo4C,EACAC,EACAC,EACAlrE,GAKA,IAAKgrE,EAAa,OAAOC,EACzB,IAAIvjE,EAAMvI,OAAOY,OAAO,MAGxB,OAFA+I,EAAOpB,EAAKsjE,GACRC,GAAYniE,EAAOpB,EAAKujE,GACrBvjE,GAETijE,GAAOe,QAAUX,GAKjB,IAAIY,GAAe,SAAUX,EAAWC,GACtC,YAAoBvnE,IAAbunE,EACHD,EACAC,GAyHN,SAASW,GACPjqE,EACA6mE,EACA0C,GAkBA,GAZqB,mBAAV1C,IACTA,EAAQA,EAAMrnE,SApGlB,SAAyBA,EAAS+pE,GAChC,IAAI/9C,EAAQhsB,EAAQgsB,MACpB,GAAKA,EAAL,CACA,IACI1uB,EAAG4H,EADHg9D,EAAM,GAEV,GAAI3gE,MAAMD,QAAQ0qB,GAEhB,IADA1uB,EAAI0uB,EAAMhqB,OACH1E,KAEc,iBADnB4H,EAAM8mB,EAAM1uB,MAGV4kE,EADOR,EAASx8D,IACJ,CAAEtD,KAAM,YAKnB,GAAIqG,EAAc+jB,GACvB,IAAK,IAAIntB,KAAOmtB,EACd9mB,EAAM8mB,EAAMntB,GAEZqjE,EADOR,EAAS7iE,IACJoJ,EAAc/C,GACtBA,EACA,CAAEtD,KAAMsD,QAEL,EAOXlF,EAAQgsB,MAAQk2C,GAwEhBwI,CAAerD,GAlEjB,SAA0BrnE,EAAS+pE,GACjC,IAAIO,EAAStqE,EAAQsqE,OACrB,GAAKA,EAAL,CACA,IAAIhO,EAAat8D,EAAQsqE,OAAS,GAClC,GAAI/oE,MAAMD,QAAQgpE,GAChB,IAAK,IAAIhtE,EAAI,EAAGA,EAAIgtE,EAAOtoE,OAAQ1E,IACjCg/D,EAAWgO,EAAOhtE,IAAM,CAAE2uC,KAAMq+B,EAAOhtE,SAEpC,GAAI2K,EAAcqiE,GACvB,IAAK,IAAIzrE,KAAOyrE,EAAQ,CACtB,IAAIplE,EAAMolE,EAAOzrE,GACjBy9D,EAAWz9D,GAAOoJ,EAAc/C,GAC5ByC,EAAO,CAAEskC,KAAMptC,GAAOqG,GACtB,CAAE+mC,KAAM/mC,QAEL,GAoDXylE,CAAgBtD,GAxClB,SAA8BrnE,GAC5B,IAAI4qE,EAAO5qE,EAAQ6qE,WACnB,GAAID,EACF,IAAK,IAAI/rE,KAAO+rE,EAAM,CACpB,IAAIE,EAASF,EAAK/rE,GACI,mBAAXisE,IACTF,EAAK/rE,GAAO,CAAEC,KAAMgsE,EAAQhf,OAAQgf,KAmC1CC,CAAoB1D,IAMfA,EAAM2D,QACL3D,EAAM4D,UACRzqE,EAASiqE,GAAajqE,EAAQ6mE,EAAM4D,QAASlB,IAE3C1C,EAAM6D,QACR,IAAK,IAAI5tE,EAAI,EAAGC,EAAI8pE,EAAM6D,OAAOlpE,OAAQ1E,EAAIC,EAAGD,IAC9CkD,EAASiqE,GAAajqE,EAAQ6mE,EAAM6D,OAAO5tE,GAAIysE,GAKrD,IACIlrE,EADAmB,EAAU,GAEd,IAAKnB,KAAO2B,EACV2qE,EAAWtsE,GAEb,IAAKA,KAAOwoE,EACLpjE,EAAOzD,EAAQ3B,IAClBssE,EAAWtsE,GAGf,SAASssE,EAAYtsE,GACnB,IAAIusE,EAAQ5B,GAAO3qE,IAAQ2rE,GAC3BxqE,EAAQnB,GAAOusE,EAAM5qE,EAAO3B,GAAMwoE,EAAMxoE,GAAMkrE,EAAIlrE,GAEpD,OAAOmB,EAQT,SAASqrE,GACPrrE,EACA4B,EACAiN,EACAy8D,GAGA,GAAkB,iBAAPz8D,EAAX,CAGA,IAAI08D,EAASvrE,EAAQ4B,GAErB,GAAIqC,EAAOsnE,EAAQ18D,GAAO,OAAO08D,EAAO18D,GACxC,IAAI28D,EAAc9J,EAAS7yD,GAC3B,GAAI5K,EAAOsnE,EAAQC,GAAgB,OAAOD,EAAOC,GACjD,IAAIC,EAAenf,EAAWkf,GAC9B,OAAIvnE,EAAOsnE,EAAQE,GAAwBF,EAAOE,GAExCF,EAAO18D,IAAO08D,EAAOC,IAAgBD,EAAOE,IAcxD,SAASC,GACP7sE,EACA8sE,EACAC,EACA7B,GAEA,IAAIlnD,EAAO8oD,EAAY9sE,GACnBgtE,GAAU5nE,EAAO2nE,EAAW/sE,GAC5BN,EAAQqtE,EAAU/sE,GAElBitE,EAAeC,GAAaC,QAASnpD,EAAKjhB,MAC9C,GAAIkqE,GAAgB,EAClB,GAAID,IAAW5nE,EAAO4e,EAAM,WAC1BtkB,GAAQ,OACH,GAAc,KAAVA,GAAgBA,IAAUsjE,EAAUhjE,GAAM,CAGnD,IAAIotE,EAAcF,GAAa5+D,OAAQ0V,EAAKjhB,OACxCqqE,EAAc,GAAKH,EAAeG,KACpC1tE,GAAQ,GAKd,QAAcgE,IAAVhE,EAAqB,CACvBA,EAqBJ,SAA8BwrE,EAAIlnD,EAAMhkB,GAEtC,IAAKoF,EAAO4e,EAAM,WAChB,OAEF,IAAIqhD,EAAMrhD,EAAKqpD,QAEX,EAUJ,GAAInC,GAAMA,EAAGjpE,SAAS8qE,gBACWrpE,IAA/BwnE,EAAGjpE,SAAS8qE,UAAU/sE,SACH0D,IAAnBwnE,EAAGoC,OAAOttE,GAEV,OAAOkrE,EAAGoC,OAAOttE,GAInB,MAAsB,mBAARqlE,GAA6C,aAAvBkI,GAAQvpD,EAAKjhB,MAC7CsiE,EAAIzmE,KAAKssE,GACT7F,EAhDMmI,CAAoBtC,EAAIlnD,EAAMhkB,GAGtC,IAAIytE,EAAoBlE,GACxBC,IAAgB,GAChBM,GAAQpqE,GACR8pE,GAAgBiE,GASlB,OAAO/tE,EAuHT,IAAIguE,GAAsB,qBAO1B,SAASH,GAASrmE,GAChB,IAAIuI,EAAQvI,GAAMA,EAAG/B,WAAWsK,MAAMi+D,IACtC,OAAOj+D,EAAQA,EAAM,GAAK,GAG5B,SAASk+D,GAAYnhE,EAAGC,GACtB,OAAO8gE,GAAQ/gE,KAAO+gE,GAAQ9gE,GAGhC,SAASygE,GAAcnqE,EAAM6qE,GAC3B,IAAKlrE,MAAMD,QAAQmrE,GACjB,OAAOD,GAAWC,EAAe7qE,GAAQ,GAAK,EAEhD,IAAK,IAAItE,EAAI,EAAGgK,EAAMmlE,EAAczqE,OAAQ1E,EAAIgK,EAAKhK,IACnD,GAAIkvE,GAAWC,EAAcnvE,GAAIsE,GAC/B,OAAOtE,EAGX,OAAQ,EAiDV,SAASovE,GAAankD,EAAKwhD,EAAI4C,GAG7BxG,KACA,IACE,GAAI4D,EAEF,IADA,IAAI15D,EAAM05D,EACF15D,EAAMA,EAAIu8D,SAAU,CAC1B,IAAIhpD,EAAQvT,EAAIvP,SAAS+rE,cACzB,GAAIjpD,EACF,IAAK,IAAItmB,EAAI,EAAGA,EAAIsmB,EAAM5hB,OAAQ1E,IAChC,IAEE,IADoD,IAAtCsmB,EAAMtmB,GAAGG,KAAK4S,EAAKkY,EAAKwhD,EAAI4C,GAC3B,OACf,MAAOz+D,GACP4+D,GAAkB5+D,EAAGmC,EAAK,uBAMpCy8D,GAAkBvkD,EAAKwhD,EAAI4C,GAC3B,QACAvG,MAIJ,SAAS2G,GACP78D,EACA9P,EACAoV,EACAu0D,EACA4C,GAEA,IAAIzK,EACJ,KACEA,EAAM1sD,EAAOtF,EAAQrM,MAAMzD,EAASoV,GAAQtF,EAAQzS,KAAK2C,MAC7C8hE,EAAI4G,QAAUzH,EAAUa,KAASA,EAAI8K,WAC/C9K,EAAI/gD,OAAM,SAAUjT,GAAK,OAAOw+D,GAAYx+D,EAAG67D,EAAI4C,EAAO,uBAG1DzK,EAAI8K,UAAW,GAEjB,MAAO9+D,GACPw+D,GAAYx+D,EAAG67D,EAAI4C,GAErB,OAAOzK,EAGT,SAAS4K,GAAmBvkD,EAAKwhD,EAAI4C,GACnC,GAAI3J,EAAOM,aACT,IACE,OAAON,EAAOM,aAAa7lE,KAAK,KAAM8qB,EAAKwhD,EAAI4C,GAC/C,MAAOz+D,GAGHA,IAAMqa,GACR0kD,GAAS/+D,EAAG,KAAM,uBAIxB++D,GAAS1kD,EAAKwhD,EAAI4C,GAGpB,SAASM,GAAU1kD,EAAKwhD,EAAI4C,GAK1B,IAAKrI,IAAaC,GAA8B,oBAAZ3jD,QAGlC,MAAM2H,EAFN3H,QAAQrY,MAAMggB,GAQlB,IAyBI2kD,GAzBAC,IAAmB,EAEnBC,GAAY,GACZC,IAAU,EAEd,SAASC,KACPD,IAAU,EACV,IAAIE,EAASH,GAAUzpE,MAAM,GAC7BypE,GAAUprE,OAAS,EACnB,IAAK,IAAI1E,EAAI,EAAGA,EAAIiwE,EAAOvrE,OAAQ1E,IACjCiwE,EAAOjwE,KAwBX,GAAuB,oBAAZkwE,SAA2BjlB,GAASilB,SAAU,CACvD,IAAIpuE,GAAIouE,QAAQ3wD,UAChBqwD,GAAY,WACV9tE,GAAE+d,KAAKmwD,IAMHvI,GAAS9kD,WAAWxX,IAE1B0kE,IAAmB,OACd,GAAKvI,GAAoC,oBAArB6I,mBACzBllB,GAASklB,mBAEuB,yCAAhCA,iBAAiBzpE,WAoBjBkpE,QAJiC,IAAjBQ,GAAgCnlB,GAASmlB,GAI7C,WACVA,EAAaJ,KAIH,WACVrtD,WAAWqtD,GAAgB,QAzB5B,CAID,IAAIK,GAAU,EACVC,GAAW,IAAIH,iBAAiBH,IAChCO,GAAW1qE,SAAS+kB,eAAe/a,OAAOwgE,KAC9CC,GAASjF,QAAQkF,GAAU,CACzBC,eAAe,IAEjBZ,GAAY,WACVS,IAAWA,GAAU,GAAK,EAC1BE,GAASjrD,KAAOzV,OAAOwgE,KAEzBR,IAAmB,EAerB,SAASY,GAAUphC,EAAIkD,GACrB,IAAIm+B,EAiBJ,GAhBAZ,GAAUvqE,MAAK,WACb,GAAI8pC,EACF,IACEA,EAAGlvC,KAAKoyC,GACR,MAAO3hC,GACPw+D,GAAYx+D,EAAG2hC,EAAK,iBAEbm+B,GACTA,EAASn+B,MAGRw9B,KACHA,IAAU,EACVH,OAGGvgC,GAAyB,oBAAZ6gC,QAChB,OAAO,IAAIA,SAAQ,SAAU3wD,GAC3BmxD,EAAWnxD,KAiGjB,IAAIoxD,GAAc,IAAIzI,GAOtB,SAAS0I,GAAUhpE,IAKnB,SAASipE,EAAWjpE,EAAK25C,GACvB,IAAIvhD,EAAGmS,EACH2+D,EAAM7sE,MAAMD,QAAQ4D,GACxB,IAAMkpE,IAAQtrE,EAASoC,IAASlH,OAAOqwE,SAASnpE,IAAQA,aAAemhE,GACrE,OAEF,GAAInhE,EAAI6iE,OAAQ,CACd,IAAIuG,EAAQppE,EAAI6iE,OAAOE,IAAIp5D,GAC3B,GAAIgwC,EAAKnjC,IAAI4yD,GACX,OAEFzvB,EAAKl+C,IAAI2tE,GAEX,GAAIF,EAEF,IADA9wE,EAAI4H,EAAIlD,OACD1E,KAAO6wE,EAAUjpE,EAAI5H,GAAIuhD,QAIhC,IAFApvC,EAAOzR,OAAOyR,KAAKvK,GACnB5H,EAAImS,EAAKzN,OACF1E,KAAO6wE,EAAUjpE,EAAIuK,EAAKnS,IAAKuhD,GAvBxCsvB,CAAUjpE,EAAK+oE,IACfA,GAAY/U,QAmDd,IAAIqV,GAAiBn1D,GAAO,SAAUvb,GACpC,IAAI2wE,EAA6B,MAAnB3wE,EAAK8jE,OAAO,GAEtB8M,EAA6B,OADjC5wE,EAAO2wE,EAAU3wE,EAAK8F,MAAM,GAAK9F,GACd8jE,OAAO,GAEtB+M,EAA6B,OADjC7wE,EAAO4wE,EAAU5wE,EAAK8F,MAAM,GAAK9F,GACd8jE,OAAO,GAE1B,MAAO,CACL9jE,KAFFA,EAAO6wE,EAAU7wE,EAAK8F,MAAM,GAAK9F,EAG/BkgB,KAAM0wD,EACNC,QAASA,EACTF,QAASA,MAIb,SAASG,GAAiB/vD,EAAKmrD,GAC7B,SAAS6E,IACP,IAAIC,EAAc/nE,UAEd8X,EAAMgwD,EAAQhwD,IAClB,IAAIrd,MAAMD,QAAQsd,GAOhB,OAAOmuD,GAAwBnuD,EAAK,KAAM9X,UAAWijE,EAAI,gBALzD,IADA,IAAIpC,EAAS/oD,EAAIjb,QACRrG,EAAI,EAAGA,EAAIqqE,EAAO3lE,OAAQ1E,IACjCyvE,GAAwBpF,EAAOrqE,GAAI,KAAMuxE,EAAa9E,EAAI,gBAQhE,OADA6E,EAAQhwD,IAAMA,EACPgwD,EAGT,SAASE,GACPrmD,EACAsmD,EACApuE,EACAquE,EACAC,EACAlF,GAEA,IAAIlsE,EAAcwS,EAAKihB,EAAKzI,EAC5B,IAAKhrB,KAAQ4qB,EACFpY,EAAMoY,EAAG5qB,GAClByzB,EAAMy9C,EAAMlxE,GACZgrB,EAAQ0lD,GAAe1wE,GACnBmjE,EAAQ3wD,KAKD2wD,EAAQ1vC,IACb0vC,EAAQ3wD,EAAIuO,OACdvO,EAAMoY,EAAG5qB,GAAQ8wE,GAAgBt+D,EAAK05D,IAEpC7I,EAAOr4C,EAAM9K,QACf1N,EAAMoY,EAAG5qB,GAAQoxE,EAAkBpmD,EAAMhrB,KAAMwS,EAAKwY,EAAM6lD,UAE5D/tE,EAAIkoB,EAAMhrB,KAAMwS,EAAKwY,EAAM6lD,QAAS7lD,EAAM2lD,QAAS3lD,EAAMyf,SAChDj4B,IAAQihB,IACjBA,EAAI1S,IAAMvO,EACVoY,EAAG5qB,GAAQyzB,IAGf,IAAKzzB,KAAQkxE,EACP/N,EAAQv4C,EAAG5qB,KAEbmxE,GADAnmD,EAAQ0lD,GAAe1wE,IACPA,KAAMkxE,EAAMlxE,GAAOgrB,EAAM6lD,SAO/C,SAASQ,GAAgBhL,EAAKiL,EAASpvE,GAIrC,IAAI6uE,EAHA1K,aAAemC,KACjBnC,EAAMA,EAAIthD,KAAK7iB,OAASmkE,EAAIthD,KAAK7iB,KAAO,KAG1C,IAAIqvE,EAAUlL,EAAIiL,GAElB,SAASE,IACPtvE,EAAK8D,MAAMxD,KAAMyG,WAGjBmX,EAAO2wD,EAAQhwD,IAAKywD,GAGlBrO,EAAQoO,GAEVR,EAAUD,GAAgB,CAACU,IAGvBpO,EAAMmO,EAAQxwD,MAAQsiD,EAAOkO,EAAQE,SAEvCV,EAAUQ,GACFxwD,IAAI/b,KAAKwsE,GAGjBT,EAAUD,GAAgB,CAACS,EAASC,IAIxCT,EAAQU,QAAS,EACjBpL,EAAIiL,GAAWP,EA8CjB,SAASW,GACPrN,EACAlsD,EACAnX,EACA0tB,EACAijD,GAEA,GAAIvO,EAAMjrD,GAAO,CACf,GAAI/R,EAAO+R,EAAMnX,GAKf,OAJAqjE,EAAIrjE,GAAOmX,EAAKnX,GACX2wE,UACIx5D,EAAKnX,IAEP,EACF,GAAIoF,EAAO+R,EAAMuW,GAKtB,OAJA21C,EAAIrjE,GAAOmX,EAAKuW,GACXijD,UACIx5D,EAAKuW,IAEP,EAGX,OAAO,EA8BT,SAASkjD,GAAmBn0D,GAC1B,OAAO0wB,EAAY1wB,GACf,CAACksD,GAAgBlsD,IACjB/Z,MAAMD,QAAQga,GASpB,SAASo0D,EAAwBp0D,EAAUq0D,GACzC,IACIryE,EAAGK,EAAG+4C,EAAWzvC,EADjBi7D,EAAM,GAEV,IAAK5kE,EAAI,EAAGA,EAAIge,EAAStZ,OAAQ1E,IAE3B0jE,EADJrjE,EAAI2d,EAAShe,KACkB,kBAANK,IACzB+4C,EAAYwrB,EAAIlgE,OAAS,EACzBiF,EAAOi7D,EAAIxrB,GAEPn1C,MAAMD,QAAQ3D,GACZA,EAAEqE,OAAS,IAGT4tE,IAFJjyE,EAAI+xE,EAAuB/xE,GAAKgyE,GAAe,IAAM,IAAMryE,IAE1C,KAAOsyE,GAAW3oE,KACjCi7D,EAAIxrB,GAAa8wB,GAAgBvgE,EAAK5B,KAAQ1H,EAAE,GAAI0H,MACpD1H,EAAEiS,SAEJsyD,EAAIr/D,KAAKgB,MAAMq+D,EAAKvkE,IAEbquC,EAAYruC,GACjBiyE,GAAW3oE,GAIbi7D,EAAIxrB,GAAa8wB,GAAgBvgE,EAAK5B,KAAO1H,GAC9B,KAANA,GAETukE,EAAIr/D,KAAK2kE,GAAgB7pE,IAGvBiyE,GAAWjyE,IAAMiyE,GAAW3oE,GAE9Bi7D,EAAIxrB,GAAa8wB,GAAgBvgE,EAAK5B,KAAO1H,EAAE0H,OAG3C67D,EAAO5lD,EAASu0D,WAClB5O,EAAMtjE,EAAEsU,MACR+uD,EAAQrjE,EAAEkB,MACVoiE,EAAM0O,KACNhyE,EAAEkB,IAAM,UAAY8wE,EAAc,IAAMryE,EAAI,MAE9C4kE,EAAIr/D,KAAKlF,KAIf,OAAOukE,EArDDwN,CAAuBp0D,QACvB/Y,EAGR,SAASqtE,GAAY5qE,GACnB,OAAOi8D,EAAMj8D,IAASi8D,EAAMj8D,EAAKK,QA5yEpB,IA4yEqCL,EAAK+hE,UAqFzD,SAAS+I,GAAexF,EAAQP,GAC9B,GAAIO,EAAQ,CAOV,IALA,IAAI9oE,EAASxD,OAAOY,OAAO,MACvB6Q,EAAOg2D,GACPC,QAAQC,QAAQ2E,GAChBtsE,OAAOyR,KAAK66D,GAEPhtE,EAAI,EAAGA,EAAImS,EAAKzN,OAAQ1E,IAAK,CACpC,IAAIuB,EAAM4Q,EAAKnS,GAEf,GAAY,WAARuB,EAAJ,CAGA,IAFA,IAAIkxE,EAAazF,EAAOzrE,GAAKotC,KACzB7nB,EAAS2lD,EACN3lD,GAAQ,CACb,GAAIA,EAAO4rD,WAAa/rE,EAAOmgB,EAAO4rD,UAAWD,GAAa,CAC5DvuE,EAAO3C,GAAOulB,EAAO4rD,UAAUD,GAC/B,MAEF3rD,EAASA,EAAOwoD,QAElB,IAAKxoD,EACH,GAAI,YAAakmD,EAAOzrE,GAAM,CAC5B,IAAIoxE,EAAiB3F,EAAOzrE,GAAKqtE,QACjC1qE,EAAO3C,GAAiC,mBAAnBoxE,EACjBA,EAAexyE,KAAKssE,GACpBkG,OACK,GAKf,OAAOzuE,GAWX,SAAS0uE,GACP50D,EACAlb,GAEA,IAAKkb,IAAaA,EAAStZ,OACzB,MAAO,GAGT,IADA,IAAImuE,EAAQ,GACH7yE,EAAI,EAAGC,EAAI+d,EAAStZ,OAAQ1E,EAAIC,EAAGD,IAAK,CAC/C,IAAI+pE,EAAQ/rD,EAAShe,GACjBslB,EAAOykD,EAAMzkD,KAOjB,GALIA,GAAQA,EAAK3S,OAAS2S,EAAK3S,MAAMmgE,aAC5BxtD,EAAK3S,MAAMmgE,KAIf/I,EAAMjnE,UAAYA,GAAWinE,EAAMZ,YAAcrmE,IACpDwiB,GAAqB,MAAbA,EAAKwtD,MAUZD,EAAMjE,UAAYiE,EAAMjE,QAAU,KAAKrpE,KAAKwkE,OAT7C,CACA,IAAIxpE,EAAO+kB,EAAKwtD,KACZA,EAAQD,EAAMtyE,KAAUsyE,EAAMtyE,GAAQ,IACxB,aAAdwpE,EAAMp1D,IACRm+D,EAAKvtE,KAAKgB,MAAMusE,EAAM/I,EAAM/rD,UAAY,IAExC80D,EAAKvtE,KAAKwkE,IAOhB,IAAK,IAAIgJ,KAAUF,EACbA,EAAME,GAAQzqB,MAAM0qB,YACfH,EAAME,GAGjB,OAAOF,EAGT,SAASG,GAActrE,GACrB,OAAQA,EAAK+hE,YAAc/hE,EAAKwhE,cAA+B,MAAdxhE,EAAKK,KAKxD,SAAS8hE,GAAoBniE,GAC3B,OAAOA,EAAK+hE,WAAa/hE,EAAKwhE,aAKhC,SAAS+J,GACPJ,EACAK,EACAC,GAEA,IAAIvO,EACAwO,EAAiB1yE,OAAOyR,KAAK+gE,GAAaxuE,OAAS,EACnD2uE,EAAWR,IAAUA,EAAMS,SAAWF,EACtC7xE,EAAMsxE,GAASA,EAAMU,KACzB,GAAKV,EAEE,IAAIA,EAAMW,YAEf,OAAOX,EAAMW,YACR,GACLH,GACAF,GACAA,IAAc3P,GACdjiE,IAAQ4xE,EAAUI,OACjBH,IACAD,EAAUM,WAIX,OAAON,EAGP,IAAK,IAAIpG,KADTnI,EAAM,GACYiO,EACZA,EAAM9F,IAAuB,MAAbA,EAAM,KACxBnI,EAAImI,GAAS2G,GAAoBR,EAAanG,EAAO8F,EAAM9F,UAnB/DnI,EAAM,GAwBR,IAAK,IAAI+O,KAAST,EACVS,KAAS/O,IACbA,EAAI+O,GAASC,GAAgBV,EAAaS,IAW9C,OANId,GAASnyE,OAAO6qE,aAAasH,KAC/B,EAAQW,YAAc5O,GAExBgC,EAAIhC,EAAK,UAAWyO,GACpBzM,EAAIhC,EAAK,OAAQrjE,GACjBqlE,EAAIhC,EAAK,aAAcwO,GAChBxO,EAGT,SAAS8O,GAAoBR,EAAa3xE,EAAKkH,GAC7C,IAAIu2D,EAAa,WACf,IAAI4F,EAAMp7D,UAAU9E,OAAS+D,EAAGlC,MAAM,KAAMiD,WAAaf,EAAG,IAIxD2hE,GAHJxF,EAAMA,GAAsB,iBAARA,IAAqB3gE,MAAMD,QAAQ4gE,GACnD,CAACA,GACDuN,GAAkBvN,KACHA,EAAI,GACvB,OAAOA,KACJwF,GACe,IAAfxF,EAAIlgE,QAAgB0lE,EAAMX,YAAcI,GAAmBO,SAC1DnlE,EACA2/D,GAYN,OAPIn8D,EAAGokC,OACLnsC,OAAOC,eAAeuyE,EAAa3xE,EAAK,CACtCV,IAAKm+D,EACLp+D,YAAY,EACZwkB,cAAc,IAGX45C,EAGT,SAAS4U,GAAgBf,EAAOtxE,GAC9B,OAAO,WAAc,OAAOsxE,EAAMtxE,IAQpC,SAASsyE,GACPjsE,EACA1F,GAEA,IAAI+G,EAAKjJ,EAAGC,EAAGkS,EAAM5Q,EACrB,GAAI0C,MAAMD,QAAQ4D,IAAuB,iBAARA,EAE/B,IADAqB,EAAM,IAAIhF,MAAM2D,EAAIlD,QACf1E,EAAI,EAAGC,EAAI2H,EAAIlD,OAAQ1E,EAAIC,EAAGD,IACjCiJ,EAAIjJ,GAAKkC,EAAO0F,EAAI5H,GAAIA,QAErB,GAAmB,iBAAR4H,EAEhB,IADAqB,EAAM,IAAIhF,MAAM2D,GACX5H,EAAI,EAAGA,EAAI4H,EAAK5H,IACnBiJ,EAAIjJ,GAAKkC,EAAOlC,EAAI,EAAGA,QAEpB,GAAIwF,EAASoC,GAClB,GAAIugE,IAAavgE,EAAI7G,OAAOkL,UAAW,CACrChD,EAAM,GAGN,IAFA,IAAIgD,EAAWrE,EAAI7G,OAAOkL,YACtB/H,EAAS+H,EAASyE,QACdxM,EAAOsJ,MACbvE,EAAI1D,KAAKrD,EAAOgC,EAAOjD,MAAOgI,EAAIvE,SAClCR,EAAS+H,EAASyE,YAKpB,IAFAyB,EAAOzR,OAAOyR,KAAKvK,GACnBqB,EAAM,IAAIhF,MAAMkO,EAAKzN,QAChB1E,EAAI,EAAGC,EAAIkS,EAAKzN,OAAQ1E,EAAIC,EAAGD,IAClCuB,EAAM4Q,EAAKnS,GACXiJ,EAAIjJ,GAAKkC,EAAO0F,EAAIrG,GAAMA,EAAKvB,GAQrC,OAJK2jE,EAAM16D,KACTA,EAAM,IAER,EAAMspE,UAAW,EACVtpE,EAQT,SAAS6qE,GACPvzE,EACAwzE,EACArlD,EACAslD,GAEA,IACItpD,EADAupD,EAAelxE,KAAKmxE,aAAa3zE,GAEjC0zE,GAEFvlD,EAAQA,GAAS,GACbslD,IAIFtlD,EAAQrkB,EAAOA,EAAO,GAAI2pE,GAAatlD,IAEzChE,EACEupD,EAAavlD,KACc,mBAAnBqlD,EAAgCA,IAAmBA,IAE7DrpD,EACE3nB,KAAKoxE,OAAO5zE,KACe,mBAAnBwzE,EAAgCA,IAAmBA,GAG/D,IAAItpE,EAASikB,GAASA,EAAMokD,KAC5B,OAAIroE,EACK1H,KAAKqxE,eAAe,WAAY,CAAEtB,KAAMroE,GAAUigB,GAElDA,EASX,SAAS2pD,GAAe9iE,GACtB,OAAOw8D,GAAahrE,KAAKS,SAAU,UAAW+N,IAAaupC,EAK7D,SAASw5B,GAAeC,EAAQC,GAC9B,OAAIvwE,MAAMD,QAAQuwE,IACmB,IAA5BA,EAAO/tE,QAAQguE,GAEfD,IAAWC,EAStB,SAASC,GACPC,EACAnzE,EACAozE,EACAC,EACAC,GAEA,IAAIC,EAAgBpP,EAAOS,SAAS5kE,IAAQozE,EAC5C,OAAIE,GAAkBD,IAAiBlP,EAAOS,SAAS5kE,GAC9C+yE,GAAcO,EAAgBD,GAC5BE,EACFR,GAAcQ,EAAeJ,GAC3BE,EACFrQ,EAAUqQ,KAAkBrzE,OAEb0D,IAAjByvE,EAQT,SAASK,GACPzvD,EACA3Q,EACA1T,EACA+zE,EACAC,GAEA,GAAIh0E,EACF,GAAKuE,EAASvE,GAKP,CAIL,IAAIyX,EAHAzU,MAAMD,QAAQ/C,KAChBA,EAAQ0jE,EAAS1jE,IAGnB,IAAIm1C,EAAO,SAAW70C,GACpB,GACU,UAARA,GACQ,UAARA,GACA2iE,EAAoB3iE,GAEpBmX,EAAO4M,MACF,CACL,IAAIhhB,EAAOghB,EAAK3S,OAAS2S,EAAK3S,MAAMrO,KACpCoU,EAAOs8D,GAAUtP,EAAOe,YAAY9xD,EAAKrQ,EAAM/C,GAC3C+jB,EAAK4vD,WAAa5vD,EAAK4vD,SAAW,IAClC5vD,EAAK3S,QAAU2S,EAAK3S,MAAQ,IAElC,IAAIwiE,EAAe/Q,EAAS7iE,GACxB6zE,EAAgB7Q,EAAUhjE,GACxB4zE,KAAgBz8D,GAAW08D,KAAiB18D,IAChDA,EAAKnX,GAAON,EAAMM,GAEd0zE,KACO3vD,EAAK6F,KAAO7F,EAAK6F,GAAK,KAC3B,UAAY5pB,GAAQ,SAAU8zE,GAChCp0E,EAAMM,GAAO8zE,MAMrB,IAAK,IAAI9zE,KAAON,EAAOm1C,EAAM70C,QAGjC,OAAO+jB,EAQT,SAASgwD,GACP7wE,EACA8wE,GAEA,IAAIz5D,EAAS/Y,KAAKyyE,eAAiBzyE,KAAKyyE,aAAe,IACnDC,EAAO35D,EAAOrX,GAGlB,OAAIgxE,IAASF,GASbG,GALAD,EAAO35D,EAAOrX,GAAS1B,KAAKS,SAASrB,gBAAgBsC,GAAOtE,KAC1D4C,KAAK4yE,aACL,KACA5yE,MAEgB,aAAe0B,GAAQ,GARhCgxE,EAgBX,SAASG,GACPH,EACAhxE,EACAlD,GAGA,OADAm0E,GAAWD,EAAO,WAAahxE,GAASlD,EAAO,IAAMA,EAAO,KAAM,GAC3Dk0E,EAGT,SAASC,GACPD,EACAl0E,EACAooE,GAEA,GAAI1lE,MAAMD,QAAQyxE,GAChB,IAAK,IAAIz1E,EAAI,EAAGA,EAAIy1E,EAAK/wE,OAAQ1E,IAC3By1E,EAAKz1E,IAAyB,iBAAZy1E,EAAKz1E,IACzB61E,GAAeJ,EAAKz1E,GAAKuB,EAAM,IAAMvB,EAAI2pE,QAI7CkM,GAAeJ,EAAMl0E,EAAKooE,GAI9B,SAASkM,GAAgBnuE,EAAMnG,EAAKooE,GAClCjiE,EAAK6hE,UAAW,EAChB7hE,EAAKnG,IAAMA,EACXmG,EAAKiiE,OAASA,EAKhB,SAASmM,GAAqBxwD,EAAMrkB,GAClC,GAAIA,EACF,GAAK0J,EAAc1J,GAKZ,CACL,IAAIkqB,EAAK7F,EAAK6F,GAAK7F,EAAK6F,GAAK9gB,EAAO,GAAIib,EAAK6F,IAAM,GACnD,IAAK,IAAI5pB,KAAON,EAAO,CACrB,IAAI4C,EAAWsnB,EAAG5pB,GACdw0E,EAAO90E,EAAMM,GACjB4pB,EAAG5pB,GAAOsC,EAAW,GAAGE,OAAOF,EAAUkyE,GAAQA,QAIvD,OAAOzwD,EAKT,SAAS0wD,GACP10D,EACAsjD,EAEAqR,EACAC,GAEAtR,EAAMA,GAAO,CAAE0O,SAAU2C,GACzB,IAAK,IAAIj2E,EAAI,EAAGA,EAAIshB,EAAI5c,OAAQ1E,IAAK,CACnC,IAAI8yE,EAAOxxD,EAAIthB,GACXiE,MAAMD,QAAQ8uE,GAChBkD,GAAmBlD,EAAMlO,EAAKqR,GACrBnD,IAELA,EAAKjmC,QACPimC,EAAKrqE,GAAGokC,OAAQ,GAElB+3B,EAAIkO,EAAKvxE,KAAOuxE,EAAKrqE,IAMzB,OAHIytE,IACF,EAAM3C,KAAO2C,GAERtR,EAKT,SAASuR,GAAiBC,EAAS5tD,GACjC,IAAK,IAAIxoB,EAAI,EAAGA,EAAIwoB,EAAO9jB,OAAQ1E,GAAK,EAAG,CACzC,IAAIuB,EAAMinB,EAAOxoB,GACE,iBAARuB,GAAoBA,IAC7B60E,EAAQ5tD,EAAOxoB,IAAMwoB,EAAOxoB,EAAI,IASpC,OAAOo2E,EAMT,SAASC,GAAiBp1E,EAAOq4C,GAC/B,MAAwB,iBAAVr4C,EAAqBq4C,EAASr4C,EAAQA,EAKtD,SAASq1E,GAAsB7rE,GAC7BA,EAAO8rE,GAAKX,GACZnrE,EAAO+rE,GAAK/2B,EACZh1C,EAAOgsE,GAAK/vE,EACZ+D,EAAOisE,GAAK7C,GACZppE,EAAOksE,GAAK7C,GACZrpE,EAAOmsE,GAAK9R,EACZr6D,EAAO0B,GAAKm5D,EACZ76D,EAAOosE,GAAKvB,GACZ7qE,EAAOqsE,GAAKzC,GACZ5pE,EAAOssE,GAAKtC,GACZhqE,EAAOusE,GAAKjC,GACZtqE,EAAOwsE,GAAK/M,GACZz/D,EAAOysE,GAAKjN,GACZx/D,EAAO0sE,GAAKnB,GACZvrE,EAAO2sE,GAAKtB,GACZrrE,EAAO4sE,GAAKlB,GACZ1rE,EAAO6sE,GAAKjB,GAKd,SAASkB,GACPjyD,EACAoJ,EACA1Q,EACA9a,EACAmI,GAEA,IAKImsE,EALAC,EAAS10E,KAETL,EAAU2I,EAAK3I,QAIfiE,EAAOzD,EAAQ,SACjBs0E,EAAY92E,OAAOY,OAAO4B,IAEhBw0E,UAAYx0E,GAKtBs0E,EAAYt0E,EAEZA,EAASA,EAAOw0E,WAElB,IAAIC,EAAa/T,EAAOlhE,EAAQC,WAC5Bi1E,GAAqBD,EAEzB50E,KAAKuiB,KAAOA,EACZviB,KAAK2rB,MAAQA,EACb3rB,KAAKib,SAAWA,EAChBjb,KAAKG,OAASA,EACdH,KAAK80E,UAAYvyD,EAAK6F,IAAMq4C,EAC5BzgE,KAAK+0E,WAAatF,GAAc9vE,EAAQsqE,OAAQ9pE,GAChDH,KAAK8vE,MAAQ,WAOX,OANK4E,EAAOtD,QACVlB,GACE3tD,EAAKyyD,YACLN,EAAOtD,OAASvB,GAAa50D,EAAU9a,IAGpCu0E,EAAOtD,QAGhBzzE,OAAOC,eAAeoC,KAAM,cAAe,CACzCnC,YAAY,EACZC,IAAK,WACH,OAAOoyE,GAAqB3tD,EAAKyyD,YAAah1E,KAAK8vE,YAKnD8E,IAEF50E,KAAKS,SAAWd,EAEhBK,KAAKoxE,OAASpxE,KAAK8vE,QACnB9vE,KAAKmxE,aAAejB,GAAqB3tD,EAAKyyD,YAAah1E,KAAKoxE,SAG9DzxE,EAAQG,SACVE,KAAKi1E,GAAK,SAAUjqE,EAAGC,EAAG3N,EAAGC,GAC3B,IAAI8pE,EAAQtiE,GAAc0vE,EAAWzpE,EAAGC,EAAG3N,EAAGC,EAAGs3E,GAKjD,OAJIxN,IAAUnmE,MAAMD,QAAQomE,KAC1BA,EAAMf,UAAY3mE,EAAQG,SAC1BunE,EAAMjB,UAAYjmE,GAEbknE,GAGTrnE,KAAKi1E,GAAK,SAAUjqE,EAAGC,EAAG3N,EAAGC,GAAK,OAAOwH,GAAc0vE,EAAWzpE,EAAGC,EAAG3N,EAAGC,EAAGs3E,IA+ClF,SAASK,GAA8B7N,EAAO9kD,EAAMkyD,EAAW90E,EAASw1E,GAItE,IAAI1tE,EAAQ2/D,GAAWC,GASvB,OARA5/D,EAAM2+D,UAAYqO,EAClBhtE,EAAM4+D,UAAY1mE,EAId4iB,EAAKwtD,QACNtoE,EAAM8a,OAAS9a,EAAM8a,KAAO,KAAKwtD,KAAOxtD,EAAKwtD,MAEzCtoE,EAGT,SAAS2tE,GAAYx6C,EAAIgR,GACvB,IAAK,IAAIptC,KAAOotC,EACdhR,EAAGymC,EAAS7iE,IAAQotC,EAAKptC,GA7D7B+0E,GAAqBiB,GAAwB31E,WA0E7C,IAAIw2E,GAAsB,CACxB1vE,KAAM,SAAe0hE,EAAOiO,GAC1B,GACEjO,EAAMd,oBACLc,EAAMd,kBAAkBgP,cACzBlO,EAAM9kD,KAAKizD,UACX,CAEA,IAAIC,EAAcpO,EAClBgO,GAAoBK,SAASD,EAAaA,OACrC,EACOpO,EAAMd,kBA0JxB,SAEEc,EAEAlnE,GAEA,IAAIR,EAAU,CACZg2E,cAAc,EACdC,aAAcvO,EACdlnE,OAAQA,GAGN01E,EAAiBxO,EAAM9kD,KAAKszD,eAC5BjV,EAAMiV,KACRl2E,EAAQR,OAAS02E,EAAe12E,OAChCQ,EAAQP,gBAAkBy2E,EAAez2E,iBAE3C,OAAO,IAAIioE,EAAMnB,iBAAiB59D,KAAK3I,GA3KGm2E,CACpCzO,EACA0O,KAEIC,OAAOV,EAAYjO,EAAMpB,SAAM/jE,EAAWozE,KAIpDI,SAAU,SAAmBO,EAAU5O,GACrC,IAAI1nE,EAAU0nE,EAAMnB,kBAo8BxB,SACEwD,EACA6B,EACAuJ,EACAoB,EACAC,GAEI,EAUJ,IAAIC,EAAiBF,EAAY3zD,KAAKyyD,YAClCqB,EAAiB3M,EAAGyH,aACpBmF,KACDF,IAAmBA,EAAe7F,SAClC8F,IAAmB5V,IAAgB4V,EAAe9F,SAClD6F,GAAkB1M,EAAGyH,aAAaX,OAAS4F,EAAe5F,OACzD4F,GAAkB1M,EAAGyH,aAAaX,MAMlC+F,KACFJ,GACAzM,EAAGjpE,SAAS+1E,iBACZF,GAGF5M,EAAGjpE,SAASm1E,aAAeM,EAC3BxM,EAAGzpE,OAASi2E,EAERxM,EAAG+M,SACL/M,EAAG+M,OAAOt2E,OAAS+1E,GAWrB,GATAxM,EAAGjpE,SAAS+1E,gBAAkBL,EAK9BzM,EAAGgN,OAASR,EAAY3zD,KAAK3S,OAAS6wD,EACtCiJ,EAAGiN,WAAa7B,GAAarU,EAGzB8K,GAAa7B,EAAGjpE,SAASkrB,MAAO,CAClCq8C,IAAgB,GAGhB,IAFA,IAAIr8C,EAAQ+9C,EAAGoC,OACX8K,EAAWlN,EAAGjpE,SAASo2E,WAAa,GAC/B55E,EAAI,EAAGA,EAAI25E,EAASj1E,OAAQ1E,IAAK,CACxC,IAAIuB,EAAMo4E,EAAS35E,GACfquE,EAAc5B,EAAGjpE,SAASkrB,MAC9BA,EAAMntB,GAAO6sE,GAAa7sE,EAAK8sE,EAAaC,EAAW7B,GAEzD1B,IAAgB,GAEhB0B,EAAGjpE,SAAS8qE,UAAYA,EAI1BuJ,EAAYA,GAAarU,EACzB,IAAIqW,EAAepN,EAAGjpE,SAASs2E,iBAC/BrN,EAAGjpE,SAASs2E,iBAAmBjC,EAC/BkC,GAAyBtN,EAAIoL,EAAWgC,GAGpCP,IACF7M,EAAG0H,OAASvB,GAAasG,EAAgBD,EAAYn2E,SACrD2pE,EAAGuN,gBAGD,EA9gCFC,CADY7P,EAAMd,kBAAoB0P,EAAS1P,kBAG7C5mE,EAAQ4rE,UACR5rE,EAAQm1E,UACRzN,EACA1nE,EAAQsb,WAIZ0V,OAAQ,SAAiB02C,GACvB,IAAItnE,EAAUsnE,EAAMtnE,QAChBwmE,EAAoBc,EAAMd,kBACzBA,EAAkB4Q,aACrB5Q,EAAkB4Q,YAAa,EAC/BC,GAAS7Q,EAAmB,YAE1Bc,EAAM9kD,KAAKizD,YACTz1E,EAAQo3E,WA+rClB,SAAkCzN,GAGhCA,EAAG2N,WAAY,EACfC,GAAkB90E,KAAKknE,GA7rCjB6N,CAAwBhR,GAExBiR,GAAuBjR,GAAmB,KAKhDkR,QAAS,SAAkBpQ,GACzB,IAAId,EAAoBc,EAAMd,kBACzBA,EAAkBgP,eAChBlO,EAAM9kD,KAAKizD,UA2gCtB,SAASkC,EAA0BhO,EAAIiO,GACrC,GAAIA,IACFjO,EAAGkO,iBAAkB,EACjBC,GAAiBnO,IACnB,OAGJ,IAAKA,EAAG2N,UAAW,CACjB3N,EAAG2N,WAAY,EACf,IAAK,IAAIp6E,EAAI,EAAGA,EAAIysE,EAAGoO,UAAUn2E,OAAQ1E,IACvCy6E,EAAyBhO,EAAGoO,UAAU76E,IAExCm6E,GAAS1N,EAAI,gBAphCTgO,CAAyBnR,GAAmB,GAF5CA,EAAkBwR,cAQtBC,GAAer6E,OAAOyR,KAAKimE,IAE/B,SAAS4C,GACP3vE,EACAia,EACAxiB,EACAkb,EACArJ,GAEA,IAAI+uD,EAAQr4D,GAAZ,CAIA,IAAI4vE,EAAWn4E,EAAQU,SAASkqE,MAShC,GANIloE,EAAS6F,KACXA,EAAO4vE,EAAS5wE,OAAOgB,IAKL,mBAATA,EAAX,CAQA,IAAI69D,EACJ,GAAIxF,EAAQr4D,EAAK6vE,WAGFj2E,KADboG,EAiaJ,SACEzF,EACAq1E,GAEA,GAAIrX,EAAOh+D,EAAQqF,QAAU04D,EAAM/9D,EAAQu1E,WACzC,OAAOv1E,EAAQu1E,UAGjB,GAAIxX,EAAM/9D,EAAQw1E,UAChB,OAAOx1E,EAAQw1E,SAGjB,IAAIn2D,EAAQo2D,GACRp2D,GAAS0+C,EAAM/9D,EAAQ01E,UAA8C,IAAnC11E,EAAQ01E,OAAO90E,QAAQye,IAE3Drf,EAAQ01E,OAAO/1E,KAAK0f,GAGtB,GAAI2+C,EAAOh+D,EAAQ21E,UAAY5X,EAAM/9D,EAAQ41E,aAC3C,OAAO51E,EAAQ41E,YAGjB,GAAIv2D,IAAU0+C,EAAM/9D,EAAQ01E,QAAS,CACnC,IAAIA,EAAS11E,EAAQ01E,OAAS,CAACr2D,GAC3Bw2D,GAAO,EACPC,EAAe,KACfC,EAAe,KAElB,EAAQC,IAAI,kBAAkB,WAAc,OAAOj7D,EAAO26D,EAAQr2D,MAEnE,IAAI42D,EAAc,SAAUC,GAC1B,IAAK,IAAI97E,EAAI,EAAGC,EAAIq7E,EAAO52E,OAAQ1E,EAAIC,EAAGD,IACvCs7E,EAAOt7E,GAAIg6E,eAGV8B,IACFR,EAAO52E,OAAS,EACK,OAAjBg3E,IACF58C,aAAa48C,GACbA,EAAe,MAEI,OAAjBC,IACF78C,aAAa68C,GACbA,EAAe,QAKjBp8D,EAAUkB,GAAK,SAAUmkD,GAE3Bh/D,EAAQw1E,SAAWW,GAAWnX,EAAKqW,GAG9BQ,EAGHH,EAAO52E,OAAS,EAFhBm3E,GAAY,MAMZr8D,EAASiB,GAAK,SAAUu7D,GAKtBrY,EAAM/9D,EAAQu1E,aAChBv1E,EAAQqF,OAAQ,EAChB4wE,GAAY,OAIZjX,EAAMh/D,EAAQ2Z,EAASC,GA+C3B,OA7CIha,EAASo/D,KACPb,EAAUa,GAERlB,EAAQ99D,EAAQw1E,WAClBxW,EAAI/kD,KAAKN,EAASC,GAEXukD,EAAUa,EAAIqX,aACvBrX,EAAIqX,UAAUp8D,KAAKN,EAASC,GAExBmkD,EAAMiB,EAAI35D,SACZrF,EAAQu1E,UAAYY,GAAWnX,EAAI35D,MAAOgwE,IAGxCtX,EAAMiB,EAAI2W,WACZ31E,EAAQ41E,YAAcO,GAAWnX,EAAI2W,QAASN,GAC5B,IAAdrW,EAAIjmC,MACN/4B,EAAQ21E,SAAU,EAElBG,EAAe/4D,YAAW,WACxB+4D,EAAe,KACXhY,EAAQ99D,EAAQw1E,WAAa1X,EAAQ99D,EAAQqF,SAC/CrF,EAAQ21E,SAAU,EAClBM,GAAY,MAEbjX,EAAIjmC,OAAS,MAIhBglC,EAAMiB,EAAI/lC,WACZ88C,EAAeh5D,YAAW,WACxBg5D,EAAe,KACXjY,EAAQ99D,EAAQw1E,WAClB57D,EAGM,QAGPolD,EAAI/lC,YAKb48C,GAAO,EAEA71E,EAAQ21E,QACX31E,EAAQ41E,YACR51E,EAAQw1E,UAzhBLc,CADPhT,EAAe79D,EAC4B4vE,IAKzC,OA+YN,SACEr1E,EACA0f,EACAxiB,EACAkb,EACArJ,GAEA,IAAIjN,EAAOuiE,KAGX,OAFAviE,EAAKwhE,aAAetjE,EACpB8B,EAAKkiE,UAAY,CAAEtkD,KAAMA,EAAMxiB,QAASA,EAASkb,SAAUA,EAAUrJ,IAAKA,GACnEjN,EAzZIy0E,CACLjT,EACA5jD,EACAxiB,EACAkb,EACArJ,GAKN2Q,EAAOA,GAAQ,GAIf82D,GAA0B/wE,GAGtBs4D,EAAMr+C,EAAK+2D,QA0FjB,SAAyB35E,EAAS4iB,GAChC,IAAIC,EAAQ7iB,EAAQ25E,OAAS35E,EAAQ25E,MAAM92D,MAAS,QAChDgG,EAAS7oB,EAAQ25E,OAAS35E,EAAQ25E,MAAM9wD,OAAU,SACpDjG,EAAK3S,QAAU2S,EAAK3S,MAAQ,KAAK4S,GAAQD,EAAK+2D,MAAMp7E,MACtD,IAAIkqB,EAAK7F,EAAK6F,KAAO7F,EAAK6F,GAAK,IAC3BtnB,EAAWsnB,EAAGI,GACdliB,EAAWic,EAAK+2D,MAAMhzE,SACtBs6D,EAAM9/D,IAENI,MAAMD,QAAQH,IACsB,IAAhCA,EAAS2C,QAAQ6C,GACjBxF,IAAawF,KAEjB8hB,EAAGI,GAAS,CAACliB,GAAUtF,OAAOF,IAGhCsnB,EAAGI,GAASliB,EAzGZizE,CAAejxE,EAAK3I,QAAS4iB,GAI/B,IAAIgpD,EA/8BN,SACEhpD,EACAja,EACAsJ,GAKA,IAAI05D,EAAchjE,EAAK3I,QAAQgsB,MAC/B,IAAIg1C,EAAQ2K,GAAZ,CAGA,IAAIzJ,EAAM,GACNjyD,EAAQ2S,EAAK3S,MACb+b,EAAQpJ,EAAKoJ,MACjB,GAAIi1C,EAAMhxD,IAAUgxD,EAAMj1C,GACxB,IAAK,IAAIntB,KAAO8sE,EAAa,CAC3B,IAAIp/C,EAASs1C,EAAUhjE,GAiBvB0wE,GAAUrN,EAAKl2C,EAAOntB,EAAK0tB,GAAQ,IACnCgjD,GAAUrN,EAAKjyD,EAAOpR,EAAK0tB,GAAQ,GAGvC,OAAO21C,GAy6BS2X,CAA0Bj3D,EAAMja,GAGhD,GAAIu4D,EAAOv4D,EAAK3I,QAAQE,YACtB,OAxMJ,SACEyI,EACAijE,EACAhpD,EACAkyD,EACAx5D,GAEA,IAAItb,EAAU2I,EAAK3I,QACfgsB,EAAQ,GACR2/C,EAAc3rE,EAAQgsB,MAC1B,GAAIi1C,EAAM0K,GACR,IAAK,IAAI9sE,KAAO8sE,EACd3/C,EAAMntB,GAAO6sE,GAAa7sE,EAAK8sE,EAAaC,GAAa9K,QAGvDG,EAAMr+C,EAAK3S,QAAUwlE,GAAWzpD,EAAOpJ,EAAK3S,OAC5CgxD,EAAMr+C,EAAKoJ,QAAUypD,GAAWzpD,EAAOpJ,EAAKoJ,OAGlD,IAAIwpD,EAAgB,IAAIX,GACtBjyD,EACAoJ,EACA1Q,EACAw5D,EACAnsE,GAGE++D,EAAQ1nE,EAAQR,OAAO/B,KAAK,KAAM+3E,EAAcF,GAAIE,GAExD,GAAI9N,aAAiBrB,GACnB,OAAOkP,GAA6B7N,EAAO9kD,EAAM4yD,EAAch1E,OAAQR,EAASw1E,GAC3E,GAAIj0E,MAAMD,QAAQomE,GAAQ,CAG/B,IAFA,IAAIoS,EAASrK,GAAkB/H,IAAU,GACrCxF,EAAM,IAAI3gE,MAAMu4E,EAAO93E,QAClB1E,EAAI,EAAGA,EAAIw8E,EAAO93E,OAAQ1E,IACjC4kE,EAAI5kE,GAAKi4E,GAA6BuE,EAAOx8E,GAAIslB,EAAM4yD,EAAch1E,OAAQR,EAASw1E,GAExF,OAAOtT,GAmKA6X,CAA0BpxE,EAAMijE,EAAWhpD,EAAMxiB,EAASkb,GAKnE,IAAI65D,EAAYvyD,EAAK6F,GAKrB,GAFA7F,EAAK6F,GAAK7F,EAAKo3D,SAEX9Y,EAAOv4D,EAAK3I,QAAQi6E,UAAW,CAKjC,IAAI7J,EAAOxtD,EAAKwtD,KAChBxtD,EAAO,GACHwtD,IACFxtD,EAAKwtD,KAAOA,IAuClB,SAAgCxtD,GAE9B,IADA,IAAIgB,EAAQhB,EAAK7iB,OAAS6iB,EAAK7iB,KAAO,IAC7BzC,EAAI,EAAGA,EAAI+6E,GAAar2E,OAAQ1E,IAAK,CAC5C,IAAIuB,EAAMw5E,GAAa/6E,GACnB6D,EAAWyiB,EAAM/kB,GACjBq7E,EAAUxE,GAAoB72E,GAC9BsC,IAAa+4E,GAAa/4E,GAAYA,EAASg5E,UACjDv2D,EAAM/kB,GAAOsC,EAAWi5E,GAAYF,EAAS/4E,GAAY+4E,IAzC7DG,CAAsBz3D,GAGtB,IAAI/kB,EAAO8K,EAAK3I,QAAQnC,MAAQoU,EAQhC,OAPY,IAAIo0D,GACb,iBAAoB19D,EAAQ,KAAK9K,EAAQ,IAAMA,EAAQ,IACxD+kB,OAAMrgB,OAAWA,OAAWA,EAAWnC,EACvC,CAAEuI,KAAMA,EAAMijE,UAAWA,EAAWuJ,UAAWA,EAAWljE,IAAKA,EAAKqJ,SAAUA,GAC9EkrD,KAsCJ,SAAS4T,GAAaE,EAAIC,GACxB,IAAIjL,EAAS,SAAUjkE,EAAGC,GAExBgvE,EAAGjvE,EAAGC,GACNivE,EAAGlvE,EAAGC,IAGR,OADAgkE,EAAO6K,SAAU,EACV7K,EAgCT,SAASlqE,GACPhF,EACA6R,EACA2Q,EACAtH,EACAk/D,EACAC,GAUA,OARIl5E,MAAMD,QAAQshB,IAASopB,EAAYppB,MACrC43D,EAAoBl/D,EACpBA,EAAWsH,EACXA,OAAOrgB,GAEL2+D,EAAOuZ,KACTD,EAlBmB,GAuBvB,SACEp6E,EACA6R,EACA2Q,EACAtH,EACAk/D,GAEA,GAAIvZ,EAAMr+C,IAASq+C,EAAM,EAAO8G,QAM9B,OAAOR,KAGLtG,EAAMr+C,IAASq+C,EAAMr+C,EAAKnI,MAC5BxI,EAAM2Q,EAAKnI,IAEb,IAAKxI,EAEH,OAAOs1D,KAGL,EAYAhmE,MAAMD,QAAQga,IACO,mBAAhBA,EAAS,MAEhBsH,EAAOA,GAAQ,IACVyyD,YAAc,CAAEnJ,QAAS5wD,EAAS,IACvCA,EAAStZ,OAAS,GAhEC,IAkEjBw4E,EACFl/D,EAAWm0D,GAAkBn0D,GApEV,IAqEVk/D,IACTl/D,EAhjCJ,SAAkCA,GAChC,IAAK,IAAIhe,EAAI,EAAGA,EAAIge,EAAStZ,OAAQ1E,IACnC,GAAIiE,MAAMD,QAAQga,EAAShe,IACzB,OAAOiE,MAAMrC,UAAUmC,OAAOwC,MAAM,GAAIyX,GAG5C,OAAOA,EA0iCMo/D,CAAwBp/D,IAErC,IAAIosD,EAAO/oE,EACX,GAAmB,iBAARsT,EAAkB,CAC3B,IAAItJ,EACJhK,EAAMyB,EAAQE,QAAUF,EAAQE,OAAO3B,IAAOqkE,EAAOa,gBAAgB5xD,GASnEy1D,EARE1E,EAAOU,cAAczxD,GAQf,IAAIo0D,GACVrD,EAAOc,qBAAqB7xD,GAAM2Q,EAAMtH,OACxC/Y,OAAWA,EAAWnC,GAEbwiB,GAASA,EAAK+3D,MAAQ1Z,EAAMt4D,EAAO0iE,GAAajrE,EAAQU,SAAU,aAAcmR,IAOnF,IAAIo0D,GACVp0D,EAAK2Q,EAAMtH,OACX/Y,OAAWA,EAAWnC,GAPhBk4E,GAAgB3vE,EAAMia,EAAMxiB,EAASkb,EAAUrJ,QAYzDy1D,EAAQ4Q,GAAgBrmE,EAAK2Q,EAAMxiB,EAASkb,GAE9C,OAAI/Z,MAAMD,QAAQomE,GACTA,EACEzG,EAAMyG,IACXzG,EAAMtiE,IAQd,SAASi8E,EAASlT,EAAO/oE,EAAIk8E,GAC3BnT,EAAM/oE,GAAKA,EACO,kBAAd+oE,EAAMz1D,MAERtT,OAAK4D,EACLs4E,GAAQ,GAEV,GAAI5Z,EAAMyG,EAAMpsD,UACd,IAAK,IAAIhe,EAAI,EAAGC,EAAImqE,EAAMpsD,SAAStZ,OAAQ1E,EAAIC,EAAGD,IAAK,CACrD,IAAI+pE,EAAQK,EAAMpsD,SAAShe,GACvB2jE,EAAMoG,EAAMp1D,OACd+uD,EAAQqG,EAAM1oE,KAAQuiE,EAAO2Z,IAAwB,QAAdxT,EAAMp1D,MAC7C2oE,EAAQvT,EAAO1oE,EAAIk8E,IApBND,CAAQlT,EAAO/oE,GAC5BsiE,EAAMr+C,IA4Bd,SAA+BA,GACzB9f,EAAS8f,EAAK+B,QAChBupD,GAAStrD,EAAK+B,OAEZ7hB,EAAS8f,EAAKk4D,QAChB5M,GAAStrD,EAAKk4D,OAjCKC,CAAqBn4D,GACjC8kD,GAEAH,KA1FFyT,CAAe56E,EAAS6R,EAAK2Q,EAAMtH,EAAUk/D,GAiKtD,IA4PIzyE,GA5PA4wE,GAA2B,KA4E/B,SAASU,GAAY4B,EAAM9jE,GAOzB,OALE8jE,EAAKv8E,YACJ+mE,IAA0C,WAA7BwV,EAAK58E,OAAOC,gBAE1B28E,EAAOA,EAAK/O,SAEPppE,EAASm4E,GACZ9jE,EAAKxP,OAAOszE,GACZA,EA8IN,SAASC,GAAwB5/D,GAC/B,GAAI/Z,MAAMD,QAAQga,GAChB,IAAK,IAAIhe,EAAI,EAAGA,EAAIge,EAAStZ,OAAQ1E,IAAK,CACxC,IAAIK,EAAI2d,EAAShe,GACjB,GAAI2jE,EAAMtjE,KAAOsjE,EAAMtjE,EAAE4oE,mBAAqBY,GAAmBxpE,IAC/D,OAAOA,GAsBf,SAASgD,GAAKkoB,EAAO9iB,GACnBgC,GAAOmxE,IAAIrwD,EAAO9iB,GAGpB,SAASo1E,GAAUtyD,EAAO9iB,GACxBgC,GAAOqzE,KAAKvyD,EAAO9iB,GAGrB,SAASkpE,GAAmBpmD,EAAO9iB,GACjC,IAAIs1E,EAAUtzE,GACd,OAAO,SAASuzE,IACd,IAAIpZ,EAAMn8D,EAAGlC,MAAM,KAAMiD,WACb,OAARo7D,GACFmZ,EAAQD,KAAKvyD,EAAOyyD,IAK1B,SAASjE,GACPtN,EACAoL,EACAgC,GAEApvE,GAASgiE,EACT+E,GAAgBqG,EAAWgC,GAAgB,GAAIx2E,GAAKw6E,GAAUlM,GAAmBlF,GACjFhiE,QAASxF,EAkGX,IAAI6zE,GAAiB,KAGrB,SAASmF,GAAkBxR,GACzB,IAAIyR,EAAqBpF,GAEzB,OADAA,GAAiBrM,EACV,WACLqM,GAAiBoF,GA4QrB,SAAStD,GAAkBnO,GACzB,KAAOA,IAAOA,EAAKA,EAAG6C,UACpB,GAAI7C,EAAG2N,UAAa,OAAO,EAE7B,OAAO,EAGT,SAASG,GAAwB9N,EAAIiO,GACnC,GAAIA,GAEF,GADAjO,EAAGkO,iBAAkB,EACjBC,GAAiBnO,GACnB,YAEG,GAAIA,EAAGkO,gBACZ,OAEF,GAAIlO,EAAG2N,WAA8B,OAAjB3N,EAAG2N,UAAoB,CACzC3N,EAAG2N,WAAY,EACf,IAAK,IAAIp6E,EAAI,EAAGA,EAAIysE,EAAGoO,UAAUn2E,OAAQ1E,IACvCu6E,GAAuB9N,EAAGoO,UAAU76E,IAEtCm6E,GAAS1N,EAAI,cAoBjB,SAAS0N,GAAU1N,EAAIhqE,GAErBomE,KACA,IAAIt8C,EAAWkgD,EAAGjpE,SAASf,GACvB4sE,EAAO5sE,EAAO,QAClB,GAAI8pB,EACF,IAAK,IAAIvsB,EAAI,EAAGiK,EAAIsiB,EAAS7nB,OAAQ1E,EAAIiK,EAAGjK,IAC1CyvE,GAAwBljD,EAASvsB,GAAIysE,EAAI,KAAMA,EAAI4C,GAGnD5C,EAAG0R,eACL1R,EAAG2R,MAAM,QAAU37E,GAErBqmE,KAKF,IAEIxoD,GAAQ,GACR+5D,GAAoB,GACpBj8D,GAAM,GAENigE,IAAU,EACVC,IAAW,EACX75E,GAAQ,EAmBZ,IAAI85E,GAAwB,EAGxBC,GAASnxE,KAAK0hB,IAQlB,GAAIi4C,IAAcM,EAAM,CACtB,IAAIvB,GAAc//D,OAAO+/D,YAEvBA,IAC2B,mBAApBA,GAAYh3C,KACnByvD,KAAW34E,SAAS44E,YAAY,SAAS3vD,YAMzC0vD,GAAS,WAAc,OAAOzY,GAAYh3C,QAO9C,SAAS2vD,KAGP,IAAIC,EAASptE,EAcb,IAhBAgtE,GAAwBC,KACxBF,IAAW,EAWXh+D,GAAMnW,MAAK,SAAU4D,EAAGC,GAAK,OAAOD,EAAEwD,GAAKvD,EAAEuD,MAIxC9M,GAAQ,EAAGA,GAAQ6b,GAAM5b,OAAQD,MACpCk6E,EAAUr+D,GAAM7b,KACJwuB,QACV0rD,EAAQ1rD,SAEV1hB,EAAKotE,EAAQptE,GACb6M,GAAI7M,GAAM,KACVotE,EAAQ3kD,MAmBV,IAAI4kD,EAAiBvE,GAAkBh0E,QACnCw4E,EAAev+D,GAAMja,QAtFzB5B,GAAQ6b,GAAM5b,OAAS21E,GAAkB31E,OAAS,EAClD0Z,GAAM,GAINigE,GAAUC,IAAW,EAsHvB,SAA6Bh+D,GAC3B,IAAK,IAAItgB,EAAI,EAAGA,EAAIsgB,EAAM5b,OAAQ1E,IAChCsgB,EAAMtgB,GAAGo6E,WAAY,EACrBG,GAAuBj6D,EAAMtgB,IAAI,GAnCnC8+E,CAAmBF,GAUrB,SAA2Bt+D,GACzB,IAAItgB,EAAIsgB,EAAM5b,OACd,KAAO1E,KAAK,CACV,IAAI2+E,EAAUr+D,EAAMtgB,GAChBysE,EAAKkS,EAAQlS,GACbA,EAAGsS,WAAaJ,GAAWlS,EAAGyN,aAAezN,EAAG6L,cAClD6B,GAAS1N,EAAI,YAfjBuS,CAAiBH,GAIb/Y,IAAYJ,EAAOI,UACrBA,GAASmZ,KAAK,SAsElB,IAAIC,GAAQ,EAORC,GAAU,SACZ1S,EACA2S,EACA/vC,EACA3sC,EACA28E,GAEAt8E,KAAK0pE,GAAKA,EACN4S,IACF5S,EAAGsS,SAAWh8E,MAEhB0pE,EAAG6S,UAAU/5E,KAAKxC,MAEdL,GACFK,KAAK2H,OAAShI,EAAQgI,KACtB3H,KAAKw8E,OAAS78E,EAAQ68E,KACtBx8E,KAAKy8E,OAAS98E,EAAQ88E,KACtBz8E,KAAK04E,OAAS/4E,EAAQ+4E,KACtB14E,KAAKkwB,OAASvwB,EAAQuwB,QAEtBlwB,KAAK2H,KAAO3H,KAAKw8E,KAAOx8E,KAAKy8E,KAAOz8E,KAAK04E,MAAO,EAElD14E,KAAKssC,GAAKA,EACVtsC,KAAKwO,KAAO2tE,GACZn8E,KAAKohC,QAAS,EACdphC,KAAK8yC,MAAQ9yC,KAAKy8E,KAClBz8E,KAAK08E,KAAO,GACZ18E,KAAK28E,QAAU,GACf38E,KAAK48E,OAAS,IAAIzX,GAClBnlE,KAAK68E,UAAY,IAAI1X,GACrBnlE,KAAK88E,WAED,GAEmB,mBAAZT,EACTr8E,KAAKvC,OAAS4+E,GAEdr8E,KAAKvC,OAx4HT,SAAoByxC,GAClB,IAAI40B,EAAOl1D,KAAKsgC,GAAhB,CAGA,IAAI6tC,EAAW7tC,EAAK/lC,MAAM,KAC1B,OAAO,SAAUlF,GACf,IAAK,IAAIhH,EAAI,EAAGA,EAAI8/E,EAASp7E,OAAQ1E,IAAK,CACxC,IAAKgH,EAAO,OACZA,EAAMA,EAAI84E,EAAS9/E,IAErB,OAAOgH,IA83HO+4E,CAAUX,GACnBr8E,KAAKvC,SACRuC,KAAKvC,OAAS2K,IASlBpI,KAAK9B,MAAQ8B,KAAKy8E,UACdv6E,EACAlC,KAAKlC,OAMXs+E,GAAQv9E,UAAUf,IAAM,WAEtB,IAAII,EADJ4nE,GAAW9lE,MAEX,IAAI0pE,EAAK1pE,KAAK0pE,GACd,IACExrE,EAAQ8B,KAAKvC,OAAOL,KAAKssE,EAAIA,GAC7B,MAAO77D,GACP,IAAI7N,KAAKw8E,KAGP,MAAM3uE,EAFNw+D,GAAYx+D,EAAG67D,EAAK,uBAA2B1pE,KAAe,WAAI,KAIpE,QAGIA,KAAK2H,MACPkmE,GAAS3vE,GAEX6nE,KACA/lE,KAAKi9E,cAEP,OAAO/+E,GAMTk+E,GAAQv9E,UAAU+mE,OAAS,SAAiBgC,GAC1C,IAAIp5D,EAAKo5D,EAAIp5D,GACRxO,KAAK68E,UAAUxhE,IAAI7M,KACtBxO,KAAK68E,UAAUv8E,IAAIkO,GACnBxO,KAAK28E,QAAQn6E,KAAKolE,GACb5nE,KAAK48E,OAAOvhE,IAAI7M,IACnBo5D,EAAInC,OAAOzlE,QAQjBo8E,GAAQv9E,UAAUo+E,YAAc,WAE9B,IADA,IAAIhgF,EAAI+C,KAAK08E,KAAK/6E,OACX1E,KAAK,CACV,IAAI2qE,EAAM5nE,KAAK08E,KAAKz/E,GACf+C,KAAK68E,UAAUxhE,IAAIusD,EAAIp5D,KAC1Bo5D,EAAIlC,UAAU1lE,MAGlB,IAAI6R,EAAM7R,KAAK48E,OACf58E,KAAK48E,OAAS58E,KAAK68E,UACnB78E,KAAK68E,UAAYhrE,EACjB7R,KAAK68E,UAAUhkB,QACfhnD,EAAM7R,KAAK08E,KACX18E,KAAK08E,KAAO18E,KAAK28E,QACjB38E,KAAK28E,QAAU9qE,EACf7R,KAAK28E,QAAQh7E,OAAS,GAOxBy6E,GAAQv9E,UAAU4sD,OAAS,WAErBzrD,KAAKy8E,KACPz8E,KAAK8yC,OAAQ,EACJ9yC,KAAK04E,KACd14E,KAAKi3B,MAnKT,SAAuB2kD,GACrB,IAAIptE,EAAKotE,EAAQptE,GACjB,GAAe,MAAX6M,GAAI7M,GAAa,CAEnB,GADA6M,GAAI7M,IAAM,EACL+sE,GAEE,CAIL,IADA,IAAIt+E,EAAIsgB,GAAM5b,OAAS,EAChB1E,EAAIyE,IAAS6b,GAAMtgB,GAAGuR,GAAKotE,EAAQptE,IACxCvR,IAEFsgB,GAAMlW,OAAOpK,EAAI,EAAG,EAAG2+E,QARvBr+D,GAAM/a,KAAKo5E,GAWRN,KACHA,IAAU,EAMV5N,GAASiO,MA8IXuB,CAAal9E,OAQjBo8E,GAAQv9E,UAAUo4B,IAAM,WACtB,GAAIj3B,KAAKohC,OAAQ,CACf,IAAIljC,EAAQ8B,KAAKlC,MACjB,GACEI,IAAU8B,KAAK9B,OAIfuE,EAASvE,IACT8B,KAAK2H,KACL,CAEA,IAAIw1E,EAAWn9E,KAAK9B,MAEpB,GADA8B,KAAK9B,MAAQA,EACT8B,KAAKw8E,KAAM,CACb,IAAIlQ,EAAO,yBAA6BtsE,KAAe,WAAI,IAC3D0sE,GAAwB1sE,KAAKssC,GAAItsC,KAAK0pE,GAAI,CAACxrE,EAAOi/E,GAAWn9E,KAAK0pE,GAAI4C,QAEtEtsE,KAAKssC,GAAGlvC,KAAK4C,KAAK0pE,GAAIxrE,EAAOi/E,MAUrCf,GAAQv9E,UAAUu+E,SAAW,WAC3Bp9E,KAAK9B,MAAQ8B,KAAKlC,MAClBkC,KAAK8yC,OAAQ,GAMfspC,GAAQv9E,UAAU8mE,OAAS,WAEzB,IADA,IAAI1oE,EAAI+C,KAAK08E,KAAK/6E,OACX1E,KACL+C,KAAK08E,KAAKz/E,GAAG0oE,UAOjByW,GAAQv9E,UAAUurB,SAAW,WAC3B,GAAIpqB,KAAKohC,OAAQ,CAIVphC,KAAK0pE,GAAG2T,mBACXz/D,EAAO5d,KAAK0pE,GAAG6S,UAAWv8E,MAG5B,IADA,IAAI/C,EAAI+C,KAAK08E,KAAK/6E,OACX1E,KACL+C,KAAK08E,KAAKz/E,GAAGyoE,UAAU1lE,MAEzBA,KAAKohC,QAAS,IAMlB,IAAIk8C,GAA2B,CAC7Bz/E,YAAY,EACZwkB,cAAc,EACdvkB,IAAKsK,EACLka,IAAKla,GAGP,SAAS0hC,GAAOpiC,EAAQ61E,EAAW/+E,GACjC8+E,GAAyBx/E,IAAM,WAC7B,OAAOkC,KAAKu9E,GAAW/+E,IAEzB8+E,GAAyBh7D,IAAM,SAAsBzd,GACnD7E,KAAKu9E,GAAW/+E,GAAOqG,GAEzBlH,OAAOC,eAAe8J,EAAQlJ,EAAK8+E,IAGrC,SAASE,GAAW9T,GAClBA,EAAG6S,UAAY,GACf,IAAInjD,EAAOswC,EAAGjpE,SACV24B,EAAKzN,OAaX,SAAoB+9C,EAAI+T,GACtB,IAAIlS,EAAY7B,EAAGjpE,SAAS8qE,WAAa,GACrC5/C,EAAQ+9C,EAAGoC,OAAS,GAGpB18D,EAAOs6D,EAAGjpE,SAASo2E,UAAY,GACrBnN,EAAG6C,SAGfvE,IAAgB,GAElB,IAAI30B,EAAO,SAAW70C,GACpB4Q,EAAK5M,KAAKhE,GACV,IAAIN,EAAQmtE,GAAa7sE,EAAKi/E,EAAclS,EAAW7B,GAuBrDhB,GAAkB/8C,EAAOntB,EAAKN,GAK1BM,KAAOkrE,GACX5/B,GAAM4/B,EAAI,SAAUlrE,IAIxB,IAAK,IAAIA,KAAOi/E,EAAcpqC,EAAM70C,GACpCwpE,IAAgB,GA5DE0V,CAAUhU,EAAItwC,EAAKzN,OACjCyN,EAAKqS,SAsNX,SAAsBi+B,EAAIj+B,GACZi+B,EAAGjpE,SAASkrB,MACxB,IAAK,IAAIntB,KAAOitC,EAsBdi+B,EAAGlrE,GAA+B,mBAAjBitC,EAAQjtC,GAAsB4J,EAAO3J,EAAKgtC,EAAQjtC,GAAMkrE,GA9OvDiU,CAAYjU,EAAItwC,EAAKqS,SACrCrS,EAAK7W,KA6DX,SAAmBmnD,GACjB,IAAInnD,EAAOmnD,EAAGjpE,SAAS8hB,KAIlB3a,EAHL2a,EAAOmnD,EAAGvmD,MAAwB,mBAATZ,EAwC3B,SAAkBA,EAAMmnD,GAEtB5D,KACA,IACE,OAAOvjD,EAAKnlB,KAAKssE,EAAIA,GACrB,MAAO77D,GAEP,OADAw+D,GAAYx+D,EAAG67D,EAAI,UACZ,GACP,QACA3D,MAhDE9iD,CAAQV,EAAMmnD,GACdnnD,GAAQ,MAEVA,EAAO,IAQT,IAAInT,EAAOzR,OAAOyR,KAAKmT,GACnBoJ,EAAQ+9C,EAAGjpE,SAASkrB,MAEpB1uB,GADUysE,EAAGjpE,SAASgrC,QAClBr8B,EAAKzN,QACb,KAAO1E,KAAK,CACV,IAAIuB,EAAM4Q,EAAKnS,GACX,EAQA0uB,GAAS/nB,EAAO+nB,EAAOntB,KA5qIzBlB,SACS,MADTA,GAkrIqBkB,EAlrIV,IAAI4O,WAAW,KACH,KAAN9P,GAkrIjBwsC,GAAM4/B,EAAI,QAASlrE,IAprIzB,IACMlB,EAurIJgrE,GAAQ/lD,GAAM,GAnGZq7D,CAASlU,GAETpB,GAAQoB,EAAGvmD,MAAQ,IAAI,GAErBiW,EAAKhI,UAiHX,SAAuBs4C,EAAIt4C,GAEzB,IAAIysD,EAAWnU,EAAGoU,kBAAoBngF,OAAOY,OAAO,MAEhDw/E,EAAQhZ,KAEZ,IAAK,IAAIvmE,KAAO4yB,EAAU,CACxB,IAAI4sD,EAAU5sD,EAAS5yB,GACnBf,EAA4B,mBAAZugF,EAAyBA,EAAUA,EAAQlgF,IAC3D,EAOCigF,IAEHF,EAASr/E,GAAO,IAAI49E,GAClB1S,EACAjsE,GAAU2K,EACVA,EACA61E,KAOEz/E,KAAOkrE,GACXwU,GAAexU,EAAIlrE,EAAKw/E,IA/IPG,CAAazU,EAAItwC,EAAKhI,UACvCgI,EAAKyrC,OAASzrC,EAAKyrC,QAAUD,IA2OnC,SAAoB8E,EAAI7E,GACtB,IAAK,IAAIrmE,KAAOqmE,EAAO,CACrB,IAAIh1D,EAAUg1D,EAAMrmE,GACpB,GAAI0C,MAAMD,QAAQ4O,GAChB,IAAK,IAAI5S,EAAI,EAAGA,EAAI4S,EAAQlO,OAAQ1E,IAClCmhF,GAAc1U,EAAIlrE,EAAKqR,EAAQ5S,SAGjCmhF,GAAc1U,EAAIlrE,EAAKqR,IAlPzBwuE,CAAU3U,EAAItwC,EAAKyrC,OA6GvB,IAAIoZ,GAAyB,CAAExB,MAAM,GA6CrC,SAASyB,GACPx2E,EACAlJ,EACAw/E,GAEA,IAAIM,GAAevZ,KACI,mBAAZiZ,GACTV,GAAyBx/E,IAAMwgF,EAC3BC,GAAqB//E,GACrBggF,GAAoBR,GACxBV,GAAyBh7D,IAAMla,IAE/Bk1E,GAAyBx/E,IAAMkgF,EAAQlgF,IACnCwgF,IAAiC,IAAlBN,EAAQ3uE,MACrBkvE,GAAqB//E,GACrBggF,GAAoBR,EAAQlgF,KAC9BsK,EACJk1E,GAAyBh7D,IAAM07D,EAAQ17D,KAAOla,GAWhDzK,OAAOC,eAAe8J,EAAQlJ,EAAK8+E,IAGrC,SAASiB,GAAsB//E,GAC7B,OAAO,WACL,IAAIo9E,EAAU57E,KAAK89E,mBAAqB99E,KAAK89E,kBAAkBt/E,GAC/D,GAAIo9E,EAOF,OANIA,EAAQ9oC,OACV8oC,EAAQwB,WAEN7X,GAAI79D,QACNk0E,EAAQjW,SAEHiW,EAAQ19E,OAKrB,SAASsgF,GAAoB94E,GAC3B,OAAO,WACL,OAAOA,EAAGtI,KAAK4C,KAAMA,OA6CzB,SAASo+E,GACP1U,EACA2S,EACAxsE,EACAlQ,GASA,OAPIiI,EAAciI,KAChBlQ,EAAUkQ,EACVA,EAAUA,EAAQA,SAEG,iBAAZA,IACTA,EAAU65D,EAAG75D,IAER65D,EAAG+U,OAAOpC,EAASxsE,EAASlQ,GAuDrC,IAAI++E,GAAQ,EAgFZ,SAASrF,GAA2B/wE,GAClC,IAAI3I,EAAU2I,EAAK3I,QACnB,GAAI2I,EAAKq2E,MAAO,CACd,IAAIC,EAAevF,GAA0B/wE,EAAKq2E,OAElD,GAAIC,IADqBt2E,EAAKs2E,aACW,CAGvCt2E,EAAKs2E,aAAeA,EAEpB,IAAIC,EAcV,SAAiCv2E,GAC/B,IAAIo8B,EACAo6C,EAASx2E,EAAK3I,QACdo/E,EAASz2E,EAAK02E,cAClB,IAAK,IAAIxgF,KAAOsgF,EACVA,EAAOtgF,KAASugF,EAAOvgF,KACpBkmC,IAAYA,EAAW,IAC5BA,EAASlmC,GAAOsgF,EAAOtgF,IAG3B,OAAOkmC,EAxBmBu6C,CAAuB32E,GAEzCu2E,GACFv3E,EAAOgB,EAAK42E,cAAeL,IAE7Bl/E,EAAU2I,EAAK3I,QAAUyqE,GAAawU,EAAct2E,EAAK42E,gBAC7C1hF,OACVmC,EAAQw/E,WAAWx/E,EAAQnC,MAAQ8K,IAIzC,OAAO3I,EAgBT,SAASy/E,GAAKz/E,GAMZK,KAAKq/E,MAAM1/E,GA0Cb,SAAS2/E,GAAYF,GAMnBA,EAAIjH,IAAM,EACV,IAAIA,EAAM,EAKViH,EAAI93E,OAAS,SAAU43E,GACrBA,EAAgBA,GAAiB,GACjC,IAAIK,EAAQv/E,KACRw/E,EAAUD,EAAMpH,IAChBsH,EAAcP,EAAcQ,QAAUR,EAAcQ,MAAQ,IAChE,GAAID,EAAYD,GACd,OAAOC,EAAYD,GAGrB,IAAIhiF,EAAO0hF,EAAc1hF,MAAQ+hF,EAAM5/E,QAAQnC,KAK/C,IAAIk2C,EAAM,SAAuB/zC,GAC/BK,KAAKq/E,MAAM1/E,IA6Cb,OA3CA+zC,EAAI70C,UAAYlB,OAAOY,OAAOghF,EAAM1gF,YACtBgH,YAAc6tC,EAC5BA,EAAIykC,IAAMA,IACVzkC,EAAI/zC,QAAUyqE,GACZmV,EAAM5/E,QACNu/E,GAEFxrC,EAAW,MAAI6rC,EAKX7rC,EAAI/zC,QAAQgsB,OAmCpB,SAAsBg0D,GACpB,IAAIh0D,EAAQg0D,EAAKhgF,QAAQgsB,MACzB,IAAK,IAAIntB,KAAOmtB,EACdme,GAAM61C,EAAK9gF,UAAW,SAAUL,GArC9BohF,CAAYlsC,GAEVA,EAAI/zC,QAAQyxB,UAuCpB,SAAyBuuD,GACvB,IAAIvuD,EAAWuuD,EAAKhgF,QAAQyxB,SAC5B,IAAK,IAAI5yB,KAAO4yB,EACd8sD,GAAeyB,EAAK9gF,UAAWL,EAAK4yB,EAAS5yB,IAzC3CqhF,CAAensC,GAIjBA,EAAIpsC,OAASi4E,EAAMj4E,OACnBosC,EAAIrG,MAAQkyC,EAAMlyC,MAClBqG,EAAIosC,IAAMP,EAAMO,IAIhBrd,EAAYt3B,SAAQ,SAAU5pC,GAC5BmyC,EAAInyC,GAAQg+E,EAAMh+E,MAGhB/D,IACFk2C,EAAI/zC,QAAQw/E,WAAW3hF,GAAQk2C,GAMjCA,EAAIkrC,aAAeW,EAAM5/E,QACzB+zC,EAAIwrC,cAAgBA,EACpBxrC,EAAIsrC,cAAgB13E,EAAO,GAAIosC,EAAI/zC,SAGnC8/E,EAAYD,GAAW9rC,EAChBA,GAwDX,SAASqsC,GAAkB3mD,GACzB,OAAOA,IAASA,EAAK9wB,KAAK3I,QAAQnC,MAAQ47B,EAAKxnB,KAGjD,SAAS9I,GAASoL,EAAS1W,GACzB,OAAI0D,MAAMD,QAAQiT,GACTA,EAAQzQ,QAAQjG,IAAS,EACJ,iBAAZ0W,EACTA,EAAQ/K,MAAM,KAAK1F,QAAQjG,IAAS,IAClC8qD,EAASp0C,IACXA,EAAQtF,KAAKpR,GAMxB,SAASwiF,GAAYC,EAAmBzuE,GACtC,IAAInC,EAAQ4wE,EAAkB5wE,MAC1BD,EAAO6wE,EAAkB7wE,KACzBqnE,EAASwJ,EAAkBxJ,OAC/B,IAAK,IAAIj4E,KAAO6Q,EAAO,CACrB,IAAIgvD,EAAQhvD,EAAM7Q,GAClB,GAAI6/D,EAAO,CACT,IAAI7gE,EAAO6gE,EAAM7gE,KACbA,IAASgU,EAAOhU,IAClB0iF,GAAgB7wE,EAAO7Q,EAAK4Q,EAAMqnE,KAM1C,SAASyJ,GACP7wE,EACA7Q,EACA4Q,EACA41B,GAEA,IAAIq5B,EAAQhvD,EAAM7Q,IACd6/D,GAAWr5B,GAAWq5B,EAAMzsD,MAAQozB,EAAQpzB,KAC9CysD,EAAMkI,kBAAkBwR,WAE1B1oE,EAAM7Q,GAAO,KACbof,EAAOxO,EAAM5Q,IA7Uf,SAAoB4gF,GAClBA,EAAIvgF,UAAUwgF,MAAQ,SAAU1/E,GAC9B,IAAI+pE,EAAK1pE,KAET0pE,EAAGyW,KAAOzB,KAWVhV,EAAGjB,QAAS,EAER9oE,GAAWA,EAAQg2E,aA0C3B,SAAgCjM,EAAI/pE,GAClC,IAAIy5B,EAAOswC,EAAGjpE,SAAW9C,OAAOY,OAAOmrE,EAAG7jE,YAAYlG,SAElDu2E,EAAcv2E,EAAQi2E,aAC1Bx8C,EAAKj5B,OAASR,EAAQQ,OACtBi5B,EAAKw8C,aAAeM,EAEpB,IAAIkK,EAAwBlK,EAAYhQ,iBACxC9sC,EAAKmyC,UAAY6U,EAAsB7U,UACvCnyC,EAAK29C,iBAAmBqJ,EAAsBtL,UAC9C17C,EAAKo9C,gBAAkB4J,EAAsBnlE,SAC7Cme,EAAKinD,cAAgBD,EAAsBxuE,IAEvCjS,EAAQR,SACVi6B,EAAKj6B,OAASQ,EAAQR,OACtBi6B,EAAKh6B,gBAAkBO,EAAQP,iBArD7BkhF,CAAsB5W,EAAI/pE,GAE1B+pE,EAAGjpE,SAAW2pE,GACZiP,GAA0B3P,EAAG7jE,aAC7BlG,GAAW,GACX+pE,GAOFA,EAAGkJ,aAAelJ,EAGpBA,EAAG6W,MAAQ7W,EAnkCf,SAAwBA,GACtB,IAAI/pE,EAAU+pE,EAAGjpE,SAGbN,EAASR,EAAQQ,OACrB,GAAIA,IAAWR,EAAQi6E,SAAU,CAC/B,KAAOz5E,EAAOM,SAASm5E,UAAYz5E,EAAOosE,SACxCpsE,EAASA,EAAOosE,QAElBpsE,EAAO23E,UAAUt1E,KAAKknE,GAGxBA,EAAG6C,QAAUpsE,EACbupE,EAAGlpE,MAAQL,EAASA,EAAOK,MAAQkpE,EAEnCA,EAAGoO,UAAY,GACfpO,EAAG8W,MAAQ,GAEX9W,EAAGsS,SAAW,KACdtS,EAAG2N,UAAY,KACf3N,EAAGkO,iBAAkB,EACrBlO,EAAGyN,YAAa,EAChBzN,EAAG6L,cAAe,EAClB7L,EAAG2T,mBAAoB,EA6iCrBoD,CAAc/W,GAttClB,SAAqBA,GACnBA,EAAGgX,QAAU/iF,OAAOY,OAAO,MAC3BmrE,EAAG0R,eAAgB,EAEnB,IAAItG,EAAYpL,EAAGjpE,SAASs2E,iBACxBjC,GACFkC,GAAyBtN,EAAIoL,GAitC7B6L,CAAWjX,GA5+Cf,SAAqBA,GACnBA,EAAG+M,OAAS,KACZ/M,EAAG+I,aAAe,KAClB,IAAI9yE,EAAU+pE,EAAGjpE,SACby1E,EAAcxM,EAAGzpE,OAASN,EAAQi2E,aAClCT,EAAgBe,GAAeA,EAAYn2E,QAC/C2pE,EAAG0H,OAASvB,GAAalwE,EAAQ62E,gBAAiBrB,GAClDzL,EAAGyH,aAAe1Q,EAKlBiJ,EAAGuL,GAAK,SAAUjqE,EAAGC,EAAG3N,EAAGC,GAAK,OAAOwH,GAAc2kE,EAAI1+D,EAAGC,EAAG3N,EAAGC,GAAG,IAGrEmsE,EAAG2H,eAAiB,SAAUrmE,EAAGC,EAAG3N,EAAGC,GAAK,OAAOwH,GAAc2kE,EAAI1+D,EAAGC,EAAG3N,EAAGC,GAAG,IAIjF,IAAIqjF,EAAa1K,GAAeA,EAAY3zD,KAW1CmmD,GAAkBgB,EAAI,SAAUkX,GAAcA,EAAWhxE,OAAS6wD,EAAa,MAAM,GACrFiI,GAAkBgB,EAAI,aAAc/pE,EAAQo3E,kBAAoBtW,EAAa,MAAM,GA88CnFogB,CAAWnX,GACX0N,GAAS1N,EAAI,gBAvhFjB,SAAyBA,GACvB,IAAIvoE,EAASsuE,GAAc/F,EAAGjpE,SAASwpE,OAAQP,GAC3CvoE,IACF6mE,IAAgB,GAChBrqE,OAAOyR,KAAKjO,GAAQgqC,SAAQ,SAAU3sC,GAYlCkqE,GAAkBgB,EAAIlrE,EAAK2C,EAAO3C,OAGtCwpE,IAAgB,IAqgFhB8Y,CAAepX,GACf8T,GAAU9T,GAliFd,SAAsBA,GACpB,IAAIQ,EAAUR,EAAGjpE,SAASypE,QACtBA,IACFR,EAAGiG,UAA+B,mBAAZzF,EAClBA,EAAQ9sE,KAAKssE,GACbQ,GA8hFJ6W,CAAYrX,GACZ0N,GAAS1N,EAAI,WASTA,EAAGjpE,SAASiP,IACdg6D,EAAGsM,OAAOtM,EAAGjpE,SAASiP,KAsE5BsxE,CAAU5B,IAlLV,SAAqBA,GAInB,IAAI6B,EAAU,CACd,IAAc,WAAc,OAAOjhF,KAAKmjB,QACpC+9D,EAAW,CACf,IAAe,WAAc,OAAOlhF,KAAK8rE,SAazCnuE,OAAOC,eAAewhF,EAAIvgF,UAAW,QAASoiF,GAC9CtjF,OAAOC,eAAewhF,EAAIvgF,UAAW,SAAUqiF,GAE/C9B,EAAIvgF,UAAUsiF,KAAO7+D,GACrB88D,EAAIvgF,UAAUuiF,QAAUnY,GAExBmW,EAAIvgF,UAAU4/E,OAAS,SACrBpC,EACA/vC,EACA3sC,GAGA,GAAIiI,EAAc0kC,GAChB,OAAO8xC,GAFAp+E,KAEkBq8E,EAAS/vC,EAAI3sC,IAExCA,EAAUA,GAAW,IACb68E,MAAO,EACf,IAAIZ,EAAU,IAAIQ,GANTp8E,KAMqBq8E,EAAS/vC,EAAI3sC,GAC3C,GAAIA,EAAQ0hF,UAAW,CACrB,IAAI/U,EAAO,mCAAuCsP,EAAkB,WAAI,IACxE9V,KACA4G,GAAwBpgC,EAVjBtsC,KAUyB,CAAC47E,EAAQ19E,OAVlC8B,KAU8CssE,GACrDvG,KAEF,OAAO,WACL6V,EAAQxxD,aAsIdk3D,CAAWlC,IAtwCX,SAAsBA,GACpB,IAAImC,EAAS,SACbnC,EAAIvgF,UAAUg6E,IAAM,SAAUrwD,EAAO9iB,GACnC,IAAIgkE,EAAK1pE,KACT,GAAIkB,MAAMD,QAAQunB,GAChB,IAAK,IAAIvrB,EAAI,EAAGC,EAAIsrB,EAAM7mB,OAAQ1E,EAAIC,EAAGD,IACvCysE,EAAGmP,IAAIrwD,EAAMvrB,GAAIyI,QAGlBgkE,EAAGgX,QAAQl4D,KAAWkhD,EAAGgX,QAAQl4D,GAAS,KAAKhmB,KAAKkD,GAGjD67E,EAAO3yE,KAAK4Z,KACdkhD,EAAG0R,eAAgB,GAGvB,OAAO1R,GAGT0V,EAAIvgF,UAAU2iF,MAAQ,SAAUh5D,EAAO9iB,GACrC,IAAIgkE,EAAK1pE,KACT,SAASooB,IACPshD,EAAGqR,KAAKvyD,EAAOJ,GACf1iB,EAAGlC,MAAMkmE,EAAIjjE,WAIf,OAFA2hB,EAAG1iB,GAAKA,EACRgkE,EAAGmP,IAAIrwD,EAAOJ,GACPshD,GAGT0V,EAAIvgF,UAAUk8E,KAAO,SAAUvyD,EAAO9iB,GACpC,IAAIgkE,EAAK1pE,KAET,IAAKyG,UAAU9E,OAEb,OADA+nE,EAAGgX,QAAU/iF,OAAOY,OAAO,MACpBmrE,EAGT,GAAIxoE,MAAMD,QAAQunB,GAAQ,CACxB,IAAK,IAAIi5D,EAAM,EAAGvkF,EAAIsrB,EAAM7mB,OAAQ8/E,EAAMvkF,EAAGukF,IAC3C/X,EAAGqR,KAAKvyD,EAAMi5D,GAAM/7E,GAEtB,OAAOgkE,EAGT,IASIp9B,EATAo1C,EAAMhY,EAAGgX,QAAQl4D,GACrB,IAAKk5D,EACH,OAAOhY,EAET,IAAKhkE,EAEH,OADAgkE,EAAGgX,QAAQl4D,GAAS,KACbkhD,EAKT,IADA,IAAIzsE,EAAIykF,EAAI//E,OACL1E,KAEL,IADAqvC,EAAKo1C,EAAIzkF,MACEyI,GAAM4mC,EAAG5mC,KAAOA,EAAI,CAC7Bg8E,EAAIr6E,OAAOpK,EAAG,GACd,MAGJ,OAAOysE,GAGT0V,EAAIvgF,UAAUw8E,MAAQ,SAAU7yD,GAC9B,IAAIkhD,EAAK1pE,KAaL0hF,EAAMhY,EAAGgX,QAAQl4D,GACrB,GAAIk5D,EAAK,CACPA,EAAMA,EAAI//E,OAAS,EAAImE,EAAQ47E,GAAOA,EAGtC,IAFA,IAAIvsE,EAAOrP,EAAQW,UAAW,GAC1B6lE,EAAO,sBAAyB9jD,EAAQ,IACnCvrB,EAAI,EAAGC,EAAIwkF,EAAI//E,OAAQ1E,EAAIC,EAAGD,IACrCyvE,GAAwBgV,EAAIzkF,GAAIysE,EAAIv0D,EAAMu0D,EAAI4C,GAGlD,OAAO5C,GA8qCXiY,CAAYvC,IAnoCZ,SAAyBA,GACvBA,EAAIvgF,UAAU+iF,QAAU,SAAUva,EAAOiO,GACvC,IAAI5L,EAAK1pE,KACLyvC,EAASi6B,EAAGmY,IACZC,EAAYpY,EAAG+M,OACfsL,EAAwB7G,GAAkBxR,GAC9CA,EAAG+M,OAASpP,EAQVqC,EAAGmY,IALAC,EAKMpY,EAAGsY,UAAUF,EAAWza,GAHxBqC,EAAGsY,UAAUtY,EAAGmY,IAAKxa,EAAOiO,GAAW,GAKlDyM,IAEItyC,IACFA,EAAOwyC,QAAU,MAEfvY,EAAGmY,MACLnY,EAAGmY,IAAII,QAAUvY,GAGfA,EAAGzpE,QAAUypE,EAAG6C,SAAW7C,EAAGzpE,SAAWypE,EAAG6C,QAAQkK,SACtD/M,EAAG6C,QAAQsV,IAAMnY,EAAGmY,MAMxBzC,EAAIvgF,UAAUo4E,aAAe,WAClBj3E,KACFg8E,UADEh8E,KAEJg8E,SAASvwB,UAIhB2zB,EAAIvgF,UAAUk5E,SAAW,WACvB,IAAIrO,EAAK1pE,KACT,IAAI0pE,EAAG2T,kBAAP,CAGAjG,GAAS1N,EAAI,iBACbA,EAAG2T,mBAAoB,EAEvB,IAAIl9E,EAASupE,EAAG6C,SACZpsE,GAAWA,EAAOk9E,mBAAsB3T,EAAGjpE,SAASm5E,UACtDh8D,EAAOzd,EAAO23E,UAAWpO,GAGvBA,EAAGsS,UACLtS,EAAGsS,SAAS5xD,WAGd,IADA,IAAIntB,EAAIysE,EAAG6S,UAAU56E,OACd1E,KACLysE,EAAG6S,UAAUt/E,GAAGmtB,WAIds/C,EAAGvmD,MAAMukD,QACXgC,EAAGvmD,MAAMukD,OAAOQ,UAGlBwB,EAAG6L,cAAe,EAElB7L,EAAGsY,UAAUtY,EAAG+M,OAAQ,MAExBW,GAAS1N,EAAI,aAEbA,EAAGqR,OAECrR,EAAGmY,MACLnY,EAAGmY,IAAII,QAAU,MAGfvY,EAAGzpE,SACLypE,EAAGzpE,OAAOE,OAAS,QAsjCzB+hF,CAAe9C,IAhiDf,SAAsBA,GAEpB7L,GAAqB6L,EAAIvgF,WAEzBugF,EAAIvgF,UAAUsjF,UAAY,SAAUz8E,GAClC,OAAOgoE,GAAShoE,EAAI1F,OAGtBo/E,EAAIvgF,UAAUujF,QAAU,WACtB,IAiBI/a,EAjBAqC,EAAK1pE,KACL6zD,EAAM6V,EAAGjpE,SACTtB,EAAS00D,EAAI10D,OACby2E,EAAe/hB,EAAI+hB,aAEnBA,IACFlM,EAAGyH,aAAejB,GAChB0F,EAAarzD,KAAKyyD,YAClBtL,EAAG0H,OACH1H,EAAGyH,eAMPzH,EAAGzpE,OAAS21E,EAGZ,IAIE0C,GAA2B5O,EAC3BrC,EAAQloE,EAAO/B,KAAKssE,EAAGkJ,aAAclJ,EAAG2H,gBACxC,MAAOxjE,GACPw+D,GAAYx+D,EAAG67D,EAAI,UAYjBrC,EAAQqC,EAAG+M,OAEb,QACA6B,GAA2B,KAmB7B,OAhBIp3E,MAAMD,QAAQomE,IAA2B,IAAjBA,EAAM1lE,SAChC0lE,EAAQA,EAAM,IAGVA,aAAiBrB,KAQrBqB,EAAQH,MAGVG,EAAMlnE,OAASy1E,EACRvO,GA69CXgb,CAAYjD,IAgNZ,IAAIkD,GAAe,CAACx1E,OAAQnB,OAAQzK,OA6GhCqhF,GAAoB,CACtBC,UA5Gc,CACdhlF,KAAM,aACNo8E,UAAU,EAEVjuD,MAAO,CACL82D,QAASH,GACTI,QAASJ,GACTvtD,IAAK,CAACjoB,OAAQovD,SAGhBzwB,QAAS,CACPk3C,WAAY,WACV,IACItzE,EADMrP,KACMqP,MACZD,EAFMpP,KAEKoP,KACXwzE,EAHM5iF,KAGa4iF,aACnBC,EAJM7iF,KAIW6iF,WACrB,GAAID,EAAc,CAChB,IAAIhxE,EAAMgxE,EAAahxE,IACnB20D,EAAoBqc,EAAarc,kBACjCL,EAAmB0c,EAAa1c,iBACpC72D,EAAMwzE,GAAc,CAClBrlF,KAAMuiF,GAAiB7Z,GACvBt0D,IAAKA,EACL20D,kBAAmBA,GAErBn3D,EAAK5M,KAAKqgF,GAEN7iF,KAAK+0B,KAAO3lB,EAAKzN,OAAS+xB,SAAS1zB,KAAK+0B,MAC1CmrD,GAAgB7wE,EAAOD,EAAK,GAAIA,EAAMpP,KAAKy2E,QAE7Cz2E,KAAK4iF,aAAe,QAK1BE,QAAS,WACP9iF,KAAKqP,MAAQ1R,OAAOY,OAAO,MAC3ByB,KAAKoP,KAAO,IAGd2zE,UAAW,WACT,IAAK,IAAIvkF,KAAOwB,KAAKqP,MACnB6wE,GAAgBlgF,KAAKqP,MAAO7Q,EAAKwB,KAAKoP,OAI1C4zE,QAAS,WACP,IAAItO,EAAS10E,KAEbA,KAAK2iF,aACL3iF,KAAKy+E,OAAO,WAAW,SAAU55E,GAC/Bm7E,GAAWtL,GAAQ,SAAUl3E,GAAQ,OAAOsL,GAAQjE,EAAKrH,SAE3DwC,KAAKy+E,OAAO,WAAW,SAAU55E,GAC/Bm7E,GAAWtL,GAAQ,SAAUl3E,GAAQ,OAAQsL,GAAQjE,EAAKrH,UAI9DylF,QAAS,WACPjjF,KAAK2iF,cAGPxjF,OAAQ,WACN,IAAI4wE,EAAO/vE,KAAKoxE,OAAOvF,QACnBxE,EAAQwT,GAAuB9K,GAC/B7J,EAAmBmB,GAASA,EAAMnB,iBACtC,GAAIA,EAAkB,CAEpB,IAAI1oE,EAAOuiF,GAAiB7Z,GAExBuc,EADMziF,KACQyiF,QACdC,EAFM1iF,KAEQ0iF,QAClB,GAEGD,KAAajlF,IAASsL,GAAQ25E,EAASjlF,KAEvCklF,GAAWllF,GAAQsL,GAAQ45E,EAASllF,GAErC,OAAO6pE,EAGT,IACIh4D,EADQrP,KACMqP,MACdD,EAFQpP,KAEKoP,KACb5Q,EAAmB,MAAb6oE,EAAM7oE,IAGZ0nE,EAAiB59D,KAAK6vE,KAAOjS,EAAiBt0D,IAAO,KAAQs0D,EAAoB,IAAK,IACtFmB,EAAM7oE,IACN6Q,EAAM7Q,IACR6oE,EAAMd,kBAAoBl3D,EAAM7Q,GAAK+nE,kBAErC3oD,EAAOxO,EAAM5Q,GACb4Q,EAAK5M,KAAKhE,KAGVwB,KAAK4iF,aAAevb,EACpBrnE,KAAK6iF,WAAarkF,GAGpB6oE,EAAM9kD,KAAKizD,WAAY,EAEzB,OAAOnO,GAAU0I,GAAQA,EAAK,OAUlC,SAAwBqP,GAEtB,IAAI8D,EAAY,CAChB,IAAgB,WAAc,OAAOvgB,IAQrChlE,OAAOC,eAAewhF,EAAK,SAAU8D,GAKrC9D,EAAIpsB,KAAO,CACTxyC,KAAMA,GACNlZ,OAAQA,EACR8iE,aAAcA,GACd+Y,eAAgBza,IAGlB0W,EAAI98D,IAAMA,GACV88D,EAAIgE,OAASna,GACbmW,EAAI1R,SAAWA,GAGf0R,EAAIiE,WAAa,SAAUp/E,GAEzB,OADAqkE,GAAQrkE,GACDA,GAGTm7E,EAAIz/E,QAAUhC,OAAOY,OAAO,MAC5BkkE,EAAYt3B,SAAQ,SAAU5pC,GAC5B69E,EAAIz/E,QAAQ4B,EAAO,KAAO5D,OAAOY,OAAO,SAK1C6gF,EAAIz/E,QAAQgrE,MAAQyU,EAEpB93E,EAAO83E,EAAIz/E,QAAQw/E,WAAYoD,IAzWjC,SAAkBnD,GAChBA,EAAIU,IAAM,SAAUwD,GAClB,IAAIC,EAAoBvjF,KAAKwjF,oBAAsBxjF,KAAKwjF,kBAAoB,IAC5E,GAAID,EAAiB9/E,QAAQ6/E,IAAW,EACtC,OAAOtjF,KAIT,IAAImV,EAAOrP,EAAQW,UAAW,GAQ9B,OAPA0O,EAAKrC,QAAQ9S,MACiB,mBAAnBsjF,EAAOG,QAChBH,EAAOG,QAAQjgF,MAAM8/E,EAAQnuE,GACF,mBAAXmuE,GAChBA,EAAO9/E,MAAM,KAAM2R,GAErBouE,EAAiB/gF,KAAK8gF,GACftjF,MA2VT0jF,CAAQtE,GArVV,SAAsBA,GACpBA,EAAI/xC,MAAQ,SAAUA,GAEpB,OADArtC,KAAKL,QAAUyqE,GAAapqE,KAAKL,QAAS0tC,GACnCrtC,MAmVT2jF,CAAYvE,GACZE,GAAWF,GAlPb,SAA6BA,GAI3B3c,EAAYt3B,SAAQ,SAAU5pC,GAC5B69E,EAAI79E,GAAQ,SACViN,EACAo1E,GAEA,OAAKA,GAOU,cAATriF,GAAwBqG,EAAcg8E,KACxCA,EAAWpmF,KAAOomF,EAAWpmF,MAAQgR,EACrCo1E,EAAa5jF,KAAKL,QAAQgrE,MAAMrjE,OAAOs8E,IAE5B,cAATriF,GAA8C,mBAAfqiF,IACjCA,EAAa,CAAEnlF,KAAMmlF,EAAYn4B,OAAQm4B,IAE3C5jF,KAAKL,QAAQ4B,EAAO,KAAKiN,GAAMo1E,EACxBA,GAdA5jF,KAAKL,QAAQ4B,EAAO,KAAKiN,OAyOtCq1E,CAAmBzE,GAGrB0E,CAAc1E,IAEdzhF,OAAOC,eAAewhF,GAAIvgF,UAAW,YAAa,CAChDf,IAAKinE,KAGPpnE,OAAOC,eAAewhF,GAAIvgF,UAAW,cAAe,CAClDf,IAAK,WAEH,OAAOkC,KAAKC,QAAUD,KAAKC,OAAOC,cAKtCvC,OAAOC,eAAewhF,GAAK,0BAA2B,CACpDlhF,MAAOs2E,KAGT4K,GAAItlB,QAAU,SAMd,IAAIwJ,GAAiBrC,EAAQ,eAGzB8iB,GAAc9iB,EAAQ,yCAUtB+iB,GAAmB/iB,EAAQ,wCAE3BgjB,GAA8BhjB,EAAQ,sCAWtCijB,GAAgBjjB,EAClB,8XAQEkjB,GAAU,+BAEVC,GAAU,SAAU5mF,GACtB,MAA0B,MAAnBA,EAAK8jE,OAAO,IAAmC,UAArB9jE,EAAK8F,MAAM,EAAG,IAG7C+gF,GAAe,SAAU7mF,GAC3B,OAAO4mF,GAAQ5mF,GAAQA,EAAK8F,MAAM,EAAG9F,EAAKmE,QAAU,IAGlD2iF,GAAmB,SAAUz/E,GAC/B,OAAc,MAAPA,IAAuB,IAARA,GAKxB,SAAS0/E,GAAkBld,GAIzB,IAHA,IAAI9kD,EAAO8kD,EAAM9kD,KACbld,EAAagiE,EACbmd,EAAYnd,EACTzG,EAAM4jB,EAAUje,qBACrBie,EAAYA,EAAUje,kBAAkBkQ,SACvB+N,EAAUjiE,OACzBA,EAAOkiE,GAAeD,EAAUjiE,KAAMA,IAG1C,KAAOq+C,EAAMv7D,EAAaA,EAAWlF,SAC/BkF,GAAcA,EAAWkd,OAC3BA,EAAOkiE,GAAeliE,EAAMld,EAAWkd,OAG3C,OAYF,SACEmiE,EACAC,GAEA,GAAI/jB,EAAM8jB,IAAgB9jB,EAAM+jB,GAC9B,OAAO3jF,GAAO0jF,EAAaE,GAAeD,IAG5C,MAAO,GApBAE,CAAYtiE,EAAKmiE,YAAaniE,EAAKk4D,OAG5C,SAASgK,GAAgBzd,EAAO7mE,GAC9B,MAAO,CACLukF,YAAa1jF,GAAOgmE,EAAM0d,YAAavkF,EAAOukF,aAC9CjK,MAAO7Z,EAAMoG,EAAMyT,OACf,CAACzT,EAAMyT,MAAOt6E,EAAOs6E,OACrBt6E,EAAOs6E,OAef,SAASz5E,GAAQgK,EAAGC,GAClB,OAAOD,EAAIC,EAAKD,EAAI,IAAMC,EAAKD,EAAKC,GAAK,GAG3C,SAAS25E,GAAgB1mF,GACvB,OAAIgD,MAAMD,QAAQ/C,GAapB,SAAyBA,GAGvB,IAFA,IACI4mF,EADAjjB,EAAM,GAED5kE,EAAI,EAAGC,EAAIgB,EAAMyD,OAAQ1E,EAAIC,EAAGD,IACnC2jE,EAAMkkB,EAAcF,GAAe1mF,EAAMjB,MAAwB,KAAhB6nF,IAC/CjjB,IAAOA,GAAO,KAClBA,GAAOijB,GAGX,OAAOjjB,EArBEkjB,CAAe7mF,GAEpBuE,EAASvE,GAsBf,SAA0BA,GACxB,IAAI2jE,EAAM,GACV,IAAK,IAAIrjE,KAAON,EACVA,EAAMM,KACJqjE,IAAOA,GAAO,KAClBA,GAAOrjE,GAGX,OAAOqjE,EA7BEmjB,CAAgB9mF,GAEJ,iBAAVA,EACFA,EAGF,GA4BT,IAAI+mF,GAAe,CACjBC,IAAK,6BACLC,KAAM,sCAGJC,GAAYnkB,EACd,snBAeEokB,GAAQpkB,EACV,kNAGA,GAGEoC,GAAgB,SAAUzxD,GAC5B,OAAOwzE,GAAUxzE,IAAQyzE,GAAMzzE,IAcjC,IAAI0zE,GAAsB3nF,OAAOY,OAAO,MA0BxC,IAAIgnF,GAAkBtkB,EAAQ,6CAgF9B,IAAIukB,GAAuB7nF,OAAO+iE,OAAO,CACvC37D,cAzDF,SAA0B0gF,EAASpe,GACjC,IAAIpB,EAAMnjE,SAASiC,cAAc0gF,GACjC,MAAgB,WAAZA,GAIApe,EAAM9kD,MAAQ8kD,EAAM9kD,KAAK3S,YAAuC1N,IAA9BmlE,EAAM9kD,KAAK3S,MAAM81E,UACrDzf,EAAI/gE,aAAa,WAAY,YAJtB+gE,GAuDT0f,gBA9CF,SAA0Bh1E,EAAW80E,GACnC,OAAO3iF,SAAS6iF,gBAAgBV,GAAat0E,GAAY80E,IA8CzD59D,eA3CF,SAAyB7iB,GACvB,OAAOlC,SAAS+kB,eAAe7iB,IA2C/BqM,cAxCF,SAAwBrM,GACtB,OAAOlC,SAASuO,cAAcrM,IAwC9BirB,aArCF,SAAuB5qB,EAAYugF,EAASC,GAC1CxgF,EAAW4qB,aAAa21D,EAASC,IAqCjCvgF,YAlCF,SAAsBX,EAAMqiE,GAC1BriE,EAAKW,YAAY0hE,IAkCjB5hE,YA/BF,SAAsBT,EAAMqiE,GAC1BriE,EAAKS,YAAY4hE,IA+BjB3hE,WA5BF,SAAqBV,GACnB,OAAOA,EAAKU,YA4BZ8K,YAzBF,SAAsBxL,GACpB,OAAOA,EAAKwL,aAyBZs1E,QAtBF,SAAkB9gF,GAChB,OAAOA,EAAK8gF,SAsBZK,eAnBF,SAAyBnhF,EAAMK,GAC7BL,EAAK6O,YAAcxO,GAmBnB+gF,cAhBF,SAAwBphF,EAAMpF,GAC5BoF,EAAKO,aAAa3F,EAAS,OAoBzBs0D,GAAM,CACRt1D,OAAQ,SAAiBye,EAAGqqD,GAC1B2e,GAAY3e,IAEd5b,OAAQ,SAAiBwqB,EAAU5O,GAC7B4O,EAAS1zD,KAAKsxC,MAAQwT,EAAM9kD,KAAKsxC,MACnCmyB,GAAY/P,GAAU,GACtB+P,GAAY3e,KAGhBoQ,QAAS,SAAkBpQ,GACzB2e,GAAY3e,GAAO,KAIvB,SAAS2e,GAAa3e,EAAO4e,GAC3B,IAAIznF,EAAM6oE,EAAM9kD,KAAKsxC,IACrB,GAAK+M,EAAMpiE,GAAX,CAEA,IAAIkrE,EAAKrC,EAAMtnE,QACX8zD,EAAMwT,EAAMd,mBAAqBc,EAAMpB,IACvCigB,EAAOxc,EAAG8W,MACVyF,EACE/kF,MAAMD,QAAQilF,EAAK1nF,IACrBof,EAAOsoE,EAAK1nF,GAAMq1D,GACTqyB,EAAK1nF,KAASq1D,IACvBqyB,EAAK1nF,QAAO0D,GAGVmlE,EAAM9kD,KAAK4jE,SACRjlF,MAAMD,QAAQilF,EAAK1nF,IAEb0nF,EAAK1nF,GAAKiF,QAAQowD,GAAO,GAElCqyB,EAAK1nF,GAAKgE,KAAKqxD,GAHfqyB,EAAK1nF,GAAO,CAACq1D,GAMfqyB,EAAK1nF,GAAOq1D,GAiBlB,IAAIuyB,GAAY,IAAIpgB,GAAM,GAAI,GAAI,IAE9BziD,GAAQ,CAAC,SAAU,WAAY,SAAU,SAAU,WAEvD,SAAS8iE,GAAWr7E,EAAGC,GACrB,OACED,EAAExM,MAAQyM,EAAEzM,KACZwM,EAAEm7D,eAAiBl7D,EAAEk7D,eAEjBn7D,EAAE4G,MAAQ3G,EAAE2G,KACZ5G,EAAE07D,YAAcz7D,EAAEy7D,WAClB9F,EAAM51D,EAAEuX,QAAUq+C,EAAM31D,EAAEsX,OAUlC,SAAwBvX,EAAGC,GACzB,GAAc,UAAVD,EAAE4G,IAAmB,OAAO,EAChC,IAAI3U,EACAqpF,EAAQ1lB,EAAM3jE,EAAI+N,EAAEuX,OAASq+C,EAAM3jE,EAAIA,EAAE2S,QAAU3S,EAAEsE,KACrDglF,EAAQ3lB,EAAM3jE,EAAIgO,EAAEsX,OAASq+C,EAAM3jE,EAAIA,EAAE2S,QAAU3S,EAAEsE,KACzD,OAAO+kF,IAAUC,GAAShB,GAAgBe,IAAUf,GAAgBgB,GAd9DC,CAAcx7E,EAAGC,IAEjB41D,EAAO71D,EAAE87D,qBACTnG,EAAQ11D,EAAEk7D,aAAaj+D,QAc/B,SAASu+E,GAAmBxrE,EAAUyrE,EAAUC,GAC9C,IAAI1pF,EAAGuB,EACH+H,EAAM,GACV,IAAKtJ,EAAIypF,EAAUzpF,GAAK0pF,IAAU1pF,EAE5B2jE,EADJpiE,EAAMyc,EAAShe,GAAGuB,OACA+H,EAAI/H,GAAOvB,GAE/B,OAAOsJ,EAqtBT,IAAIikE,GAAa,CACfjsE,OAAQqoF,GACRn7B,OAAQm7B,GACRnP,QAAS,SAA2BpQ,GAClCuf,GAAiBvf,EAAO+e,MAI5B,SAASQ,GAAkB3Q,EAAU5O,IAC/B4O,EAAS1zD,KAAKioD,YAAcnD,EAAM9kD,KAAKioD,aAK7C,SAAkByL,EAAU5O,GAC1B,IAQI7oE,EAAKqoF,EAAQn5E,EARbo5E,EAAW7Q,IAAamQ,GACxBW,EAAY1f,IAAU+e,GACtBY,EAAUC,GAAsBhR,EAAS1zD,KAAKioD,WAAYyL,EAASl2E,SACnEmnF,EAAUD,GAAsB5f,EAAM9kD,KAAKioD,WAAYnD,EAAMtnE,SAE7DonF,EAAiB,GACjBC,EAAoB,GAGxB,IAAK5oF,KAAO0oF,EACVL,EAASG,EAAQxoF,GACjBkP,EAAMw5E,EAAQ1oF,GACTqoF,GAQHn5E,EAAIyvE,SAAW0J,EAAO3oF,MACtBwP,EAAI25E,OAASR,EAAO79E,IACpBs+E,GAAW55E,EAAK,SAAU25D,EAAO4O,GAC7BvoE,EAAIm2D,KAAOn2D,EAAIm2D,IAAI0jB,kBACrBH,EAAkB5kF,KAAKkL,KAVzB45E,GAAW55E,EAAK,OAAQ25D,EAAO4O,GAC3BvoE,EAAIm2D,KAAOn2D,EAAIm2D,IAAI2D,UACrB2f,EAAe3kF,KAAKkL,IAa1B,GAAIy5E,EAAexlF,OAAQ,CACzB,IAAI6lF,EAAa,WACf,IAAK,IAAIvqF,EAAI,EAAGA,EAAIkqF,EAAexlF,OAAQ1E,IACzCqqF,GAAWH,EAAelqF,GAAI,WAAYoqE,EAAO4O,IAGjD6Q,EACFjY,GAAexH,EAAO,SAAUmgB,GAEhCA,IAIAJ,EAAkBzlF,QACpBktE,GAAexH,EAAO,aAAa,WACjC,IAAK,IAAIpqE,EAAI,EAAGA,EAAImqF,EAAkBzlF,OAAQ1E,IAC5CqqF,GAAWF,EAAkBnqF,GAAI,mBAAoBoqE,EAAO4O,MAKlE,IAAK6Q,EACH,IAAKtoF,KAAOwoF,EACLE,EAAQ1oF,IAEX8oF,GAAWN,EAAQxoF,GAAM,SAAUy3E,EAAUA,EAAU8Q,GA3D3DnF,CAAQ3L,EAAU5O,GAiEtB,IAAIogB,GAAiB9pF,OAAOY,OAAO,MAEnC,SAAS0oF,GACP1c,EACAb,GAEA,IAKIzsE,EAAGyQ,EALHm0D,EAAMlkE,OAAOY,OAAO,MACxB,IAAKgsE,EAEH,OAAO1I,EAGT,IAAK5kE,EAAI,EAAGA,EAAIstE,EAAK5oE,OAAQ1E,KAC3ByQ,EAAM68D,EAAKttE,IACFyqF,YAEPh6E,EAAIg6E,UAAYD,IAElB5lB,EAAI8lB,GAAcj6E,IAAQA,EAC1BA,EAAIm2D,IAAMmH,GAAatB,EAAGjpE,SAAU,aAAciN,EAAIlQ,MAGxD,OAAOqkE,EAGT,SAAS8lB,GAAej6E,GACtB,OAAOA,EAAIk6E,SAAal6E,EAAQ,KAAI,IAAO/P,OAAOyR,KAAK1B,EAAIg6E,WAAa,IAAI14E,KAAK,KAGnF,SAASs4E,GAAY55E,EAAKhO,EAAM2nE,EAAO4O,EAAU8Q,GAC/C,IAAIrhF,EAAKgI,EAAIm2D,KAAOn2D,EAAIm2D,IAAInkE,GAC5B,GAAIgG,EACF,IACEA,EAAG2hE,EAAMpB,IAAKv4D,EAAK25D,EAAO4O,EAAU8Q,GACpC,MAAOl5E,GACPw+D,GAAYx+D,EAAGw5D,EAAMtnE,QAAU,aAAgB2N,EAAQ,KAAI,IAAMhO,EAAO,UAK9E,IAAImoF,GAAc,CAChBh0B,GACA2W,IAKF,SAASsd,GAAa7R,EAAU5O,GAC9B,IAAIjuC,EAAOiuC,EAAMnB,iBACjB,KAAItF,EAAMxnC,KAA4C,IAAnCA,EAAK9wB,KAAK3I,QAAQooF,cAGjCpnB,EAAQsV,EAAS1zD,KAAK3S,QAAU+wD,EAAQ0G,EAAM9kD,KAAK3S,QAAvD,CAGA,IAAIpR,EAAKwR,EACLi2D,EAAMoB,EAAMpB,IACZ+hB,EAAW/R,EAAS1zD,KAAK3S,OAAS,GAClCA,EAAQy3D,EAAM9kD,KAAK3S,OAAS,GAMhC,IAAKpR,KAJDoiE,EAAMhxD,EAAM83D,UACd93D,EAAQy3D,EAAM9kD,KAAK3S,MAAQtI,EAAO,GAAIsI,IAG5BA,EACVI,EAAMJ,EAAMpR,GACNwpF,EAASxpF,KACHwR,GACVi4E,GAAQhiB,EAAKznE,EAAKwR,EAAKq3D,EAAM9kD,KAAK+3D,KAStC,IAAK97E,KAHA+lE,GAAQE,IAAW70D,EAAM1R,QAAU8pF,EAAS9pF,OAC/C+pF,GAAQhiB,EAAK,QAASr2D,EAAM1R,OAElB8pF,EACNrnB,EAAQ/wD,EAAMpR,MACZ4lF,GAAQ5lF,GACVynE,EAAIiiB,kBAAkB/D,GAASE,GAAa7lF,IAClCwlF,GAAiBxlF,IAC3BynE,EAAI92D,gBAAgB3Q,KAM5B,SAASypF,GAASv4E,EAAIlR,EAAKN,EAAOiqF,GAC5BA,GAAWz4E,EAAG+1E,QAAQhiF,QAAQ,MAAQ,EACxC2kF,GAAY14E,EAAIlR,EAAKN,GACZgmF,GAAc1lF,GAGnB8lF,GAAiBpmF,GACnBwR,EAAGP,gBAAgB3Q,IAInBN,EAAgB,oBAARM,GAA4C,UAAfkR,EAAG+1E,QACpC,OACAjnF,EACJkR,EAAGxK,aAAa1G,EAAKN,IAEd8lF,GAAiBxlF,GAC1BkR,EAAGxK,aAAa1G,EA5vCS,SAAUA,EAAKN,GAC1C,OAAOomF,GAAiBpmF,IAAoB,UAAVA,EAC9B,QAEQ,oBAARM,GAA6BylF,GAA4B/lF,GACvDA,EACA,OAsvCiBmqF,CAAuB7pF,EAAKN,IACxCkmF,GAAQ5lF,GACb8lF,GAAiBpmF,GACnBwR,EAAGw4E,kBAAkB/D,GAASE,GAAa7lF,IAE3CkR,EAAG44E,eAAenE,GAAS3lF,EAAKN,GAGlCkqF,GAAY14E,EAAIlR,EAAKN,GAIzB,SAASkqF,GAAa14E,EAAIlR,EAAKN,GAC7B,GAAIomF,GAAiBpmF,GACnBwR,EAAGP,gBAAgB3Q,OACd,CAKL,GACE+lE,IAASC,GACM,aAAf90D,EAAG+1E,SACK,gBAARjnF,GAAmC,KAAVN,IAAiBwR,EAAG64E,OAC7C,CACA,IAAIC,EAAU,SAAU36E,GACtBA,EAAEmb,2BACFtZ,EAAGmR,oBAAoB,QAAS2nE,IAElC94E,EAAGwB,iBAAiB,QAASs3E,GAE7B94E,EAAG64E,QAAS,EAEd74E,EAAGxK,aAAa1G,EAAKN,IAIzB,IAAI0R,GAAQ,CACVrR,OAAQupF,GACRr8B,OAAQq8B,IAKV,SAASW,GAAaxS,EAAU5O,GAC9B,IAAI33D,EAAK23D,EAAMpB,IACX1jD,EAAO8kD,EAAM9kD,KACbmmE,EAAUzS,EAAS1zD,KACvB,KACEo+C,EAAQp+C,EAAKmiE,cACb/jB,EAAQp+C,EAAKk4D,SACX9Z,EAAQ+nB,IACN/nB,EAAQ+nB,EAAQhE,cAChB/jB,EAAQ+nB,EAAQjO,SALtB,CAYA,IAAIkO,EAAMpE,GAAiBld,GAGvBuhB,EAAkBl5E,EAAGm5E,mBACrBjoB,EAAMgoB,KACRD,EAAM3nF,GAAO2nF,EAAK/D,GAAegE,KAI/BD,IAAQj5E,EAAGo5E,aACbp5E,EAAGxK,aAAa,QAASyjF,GACzBj5E,EAAGo5E,WAAaH,IAIpB,IAyCII,GAzCAC,GAAQ,CACVzqF,OAAQkqF,GACRh9B,OAAQg9B,IAyCV,SAASQ,GAAqBzgE,EAAO3Y,EAASw+D,GAC5C,IAAI2M,EAAU+N,GACd,OAAO,SAAS9N,IACd,IAAIpZ,EAAMhyD,EAAQrM,MAAM,KAAMiD,WAClB,OAARo7D,GACFqnB,GAAS1gE,EAAOyyD,EAAa5M,EAAS2M,IAQ5C,IAAImO,GAAkBrc,MAAsBnI,GAAQzI,OAAOyI,EAAK,KAAO,IAEvE,SAASykB,GACP5rF,EACAqS,EACAw+D,EACAF,GAQA,GAAIgb,GAAiB,CACnB,IAAIE,EAAoB7N,GACpB9qD,EAAW7gB,EACfA,EAAU6gB,EAAS44D,SAAW,SAAUz7E,GACtC,GAIEA,EAAEnG,SAAWmG,EAAE+c,eAEf/c,EAAEke,WAAas9D,GAIfx7E,EAAEke,WAAa,GAIfle,EAAEnG,OAAO2G,gBAAkBvL,SAE3B,OAAO4tB,EAASltB,MAAMxD,KAAMyG,YAIlCsiF,GAAS73E,iBACP1T,EACAqS,EACAi1D,GACI,CAAEuJ,QAASA,EAASF,QAASA,GAC7BE,GAIR,SAAS6a,GACP1rF,EACAqS,EACAw+D,EACA2M,IAECA,GAAW+N,IAAUloE,oBACpBrjB,EACAqS,EAAQy5E,UAAYz5E,EACpBw+D,GAIJ,SAASkb,GAAoBtT,EAAU5O,GACrC,IAAI1G,EAAQsV,EAAS1zD,KAAK6F,MAAOu4C,EAAQ0G,EAAM9kD,KAAK6F,IAApD,CAGA,IAAIA,EAAKi/C,EAAM9kD,KAAK6F,IAAM,GACtBsmD,EAAQuH,EAAS1zD,KAAK6F,IAAM,GAChC2gE,GAAW1hB,EAAMpB,IAlGnB,SAA0B79C,GAExB,GAAIw4C,EAAMx4C,EAAc,KAAI,CAE1B,IAAII,EAAQ+7C,EAAO,SAAW,QAC9Bn8C,EAAGI,GAAS,GAAGxnB,OAAOonB,EAAc,IAAGA,EAAGI,IAAU,WAC7CJ,EAAc,IAKnBw4C,EAAMx4C,EAAuB,OAC/BA,EAAGohE,OAAS,GAAGxoF,OAAOonB,EAAuB,IAAGA,EAAGohE,QAAU,WACtDphE,EAAuB,KAsFhCqhE,CAAgBrhE,GAChBqmD,GAAgBrmD,EAAIsmD,EAAO0a,GAAOF,GAAUD,GAAqB5hB,EAAMtnE,SACvEgpF,QAAW7mF,GAGb,IAOIwnF,GAPApgE,GAAS,CACX/qB,OAAQgrF,GACR99B,OAAQ89B,IAOV,SAASI,GAAgB1T,EAAU5O,GACjC,IAAI1G,EAAQsV,EAAS1zD,KAAK4vD,YAAaxR,EAAQ0G,EAAM9kD,KAAK4vD,UAA1D,CAGA,IAAI3zE,EAAKwR,EACLi2D,EAAMoB,EAAMpB,IACZ2jB,EAAW3T,EAAS1zD,KAAK4vD,UAAY,GACrCxmD,EAAQ07C,EAAM9kD,KAAK4vD,UAAY,GAMnC,IAAK3zE,KAJDoiE,EAAMj1C,EAAM+7C,UACd/7C,EAAQ07C,EAAM9kD,KAAK4vD,SAAW7qE,EAAO,GAAIqkB,IAG/Bi+D,EACJprF,KAAOmtB,IACXs6C,EAAIznE,GAAO,IAIf,IAAKA,KAAOmtB,EAAO,CAKjB,GAJA3b,EAAM2b,EAAMntB,GAIA,gBAARA,GAAiC,cAARA,EAAqB,CAEhD,GADI6oE,EAAMpsD,WAAYosD,EAAMpsD,SAAStZ,OAAS,GAC1CqO,IAAQ45E,EAASprF,GAAQ,SAGC,IAA1BynE,EAAIr4D,WAAWjM,QACjBskE,EAAI3gE,YAAY2gE,EAAIr4D,WAAW,IAInC,GAAY,UAARpP,GAAmC,aAAhBynE,EAAIwf,QAAwB,CAGjDxf,EAAI4jB,OAAS75E,EAEb,IAAI85E,EAASnpB,EAAQ3wD,GAAO,GAAKlD,OAAOkD,GACpC+5E,GAAkB9jB,EAAK6jB,KACzB7jB,EAAI/nE,MAAQ4rF,QAET,GAAY,cAARtrF,GAAuB6mF,GAAMpf,EAAIwf,UAAY9kB,EAAQsF,EAAIl0D,WAAY,EAE9E23E,GAAeA,IAAgB5mF,SAASiC,cAAc,QACzCgN,UAAY,QAAU/B,EAAM,SAEzC,IADA,IAAIk1E,EAAMwE,GAAaj2E,WAChBwyD,EAAIxyD,YACTwyD,EAAI3gE,YAAY2gE,EAAIxyD,YAEtB,KAAOyxE,EAAIzxE,YACTwyD,EAAI7gE,YAAY8/E,EAAIzxE,iBAEjB,GAKLzD,IAAQ45E,EAASprF,GAIjB,IACEynE,EAAIznE,GAAOwR,EACX,MAAOnC,OAQf,SAASk8E,GAAmB9jB,EAAK+jB,GAC/B,OAAS/jB,EAAIgkB,YACK,WAAhBhkB,EAAIwf,SAMR,SAA+Bxf,EAAK+jB,GAGlC,IAAIE,GAAa,EAGjB,IAAMA,EAAapnF,SAAS+S,gBAAkBowD,EAAO,MAAOp4D,IAC5D,OAAOq8E,GAAcjkB,EAAI/nE,QAAU8rF,EAZjCG,CAAqBlkB,EAAK+jB,IAe9B,SAA+B/jB,EAAK+C,GAClC,IAAI9qE,EAAQ+nE,EAAI/nE,MACZwpF,EAAYzhB,EAAImkB,YACpB,GAAIxpB,EAAM8mB,GAAY,CACpB,GAAIA,EAAUlrC,OACZ,OAAOE,EAASx+C,KAAWw+C,EAASssB,GAEtC,GAAI0e,EAAUt9C,KACZ,OAAOlsC,EAAMksC,SAAW4+B,EAAO5+B,OAGnC,OAAOlsC,IAAU8qE,EAzBfqhB,CAAqBpkB,EAAK+jB,IA4B9B,IAAI7X,GAAW,CACb5zE,OAAQorF,GACRl+B,OAAQk+B,IAKNW,GAAiBvxE,GAAO,SAAUgZ,GACpC,IAAI8vC,EAAM,GAEN0oB,EAAoB,QAOxB,OANAx4D,EAAQ5oB,MAFY,iBAESgiC,SAAQ,SAAUhnC,GAC7C,GAAIA,EAAM,CACR,IAAI0N,EAAM1N,EAAKgF,MAAMohF,GACrB14E,EAAIlQ,OAAS,IAAMkgE,EAAIhwD,EAAI,GAAGu4B,QAAUv4B,EAAI,GAAGu4B,YAG5Cy3B,KAIT,SAAS2oB,GAAoBjoE,GAC3B,IAAI+B,EAAQmmE,GAAsBloE,EAAK+B,OAGvC,OAAO/B,EAAKmoE,YACRpjF,EAAOib,EAAKmoE,YAAapmE,GACzBA,EAIN,SAASmmE,GAAuBE,GAC9B,OAAIzpF,MAAMD,QAAQ0pF,GACT/oB,EAAS+oB,GAEU,iBAAjBA,EACFL,GAAeK,GAEjBA,EAuCT,IAyBI52D,GAzBA62D,GAAW,MACXC,GAAc,iBACdC,GAAU,SAAUp7E,EAAIlS,EAAMqH,GAEhC,GAAI+lF,GAASh8E,KAAKpR,GAChBkS,EAAG4U,MAAM6R,YAAY34B,EAAMqH,QACtB,GAAIgmF,GAAYj8E,KAAK/J,GAC1B6K,EAAG4U,MAAM6R,YAAYqrC,EAAUhkE,GAAOqH,EAAImD,QAAQ6iF,GAAa,IAAK,iBAC/D,CACL,IAAIE,EAAiBv5B,GAAUh0D,GAC/B,GAAI0D,MAAMD,QAAQ4D,GAIhB,IAAK,IAAI5H,EAAI,EAAGgK,EAAMpC,EAAIlD,OAAQ1E,EAAIgK,EAAKhK,IACzCyS,EAAG4U,MAAMymE,GAAkBlmF,EAAI5H,QAGjCyS,EAAG4U,MAAMymE,GAAkBlmF,IAK7BmmF,GAAc,CAAC,SAAU,MAAO,MAGhCx5B,GAAYz4C,GAAO,SAAUyJ,GAG/B,GAFAuR,GAAaA,IAAcjxB,SAASiC,cAAc,OAAOuf,MAE5C,YADb9B,EAAO6+C,EAAS7+C,KACUA,KAAQuR,GAChC,OAAOvR,EAGT,IADA,IAAI4R,EAAU5R,EAAK8+C,OAAO,GAAGx/C,cAAgBU,EAAKlf,MAAM,GAC/CrG,EAAI,EAAGA,EAAI+tF,GAAYrpF,OAAQ1E,IAAK,CAC3C,IAAIO,EAAOwtF,GAAY/tF,GAAKm3B,EAC5B,GAAI52B,KAAQu2B,GACV,OAAOv2B,MAKb,SAASytF,GAAahV,EAAU5O,GAC9B,IAAI9kD,EAAO8kD,EAAM9kD,KACbmmE,EAAUzS,EAAS1zD,KAEvB,KAAIo+C,EAAQp+C,EAAKmoE,cAAgB/pB,EAAQp+C,EAAK+B,QAC5Cq8C,EAAQ+nB,EAAQgC,cAAgB/pB,EAAQ+nB,EAAQpkE,QADlD,CAMA,IAAItU,EAAKxS,EACLkS,EAAK23D,EAAMpB,IACXilB,EAAiBxC,EAAQgC,YACzBS,EAAkBzC,EAAQ0C,iBAAmB1C,EAAQpkE,OAAS,GAG9D+mE,EAAWH,GAAkBC,EAE7B7mE,EAAQmmE,GAAsBpjB,EAAM9kD,KAAK+B,QAAU,GAKvD+iD,EAAM9kD,KAAK6oE,gBAAkBxqB,EAAMt8C,EAAMojD,QACrCpgE,EAAO,GAAIgd,GACXA,EAEJ,IAAIgnE,EApGN,SAAmBjkB,EAAOkkB,GACxB,IACIC,EADA3pB,EAAM,GAGV,GAAI0pB,EAEF,IADA,IAAI/G,EAAYnd,EACTmd,EAAUje,oBACfie,EAAYA,EAAUje,kBAAkBkQ,SAEzB+N,EAAUjiE,OACtBipE,EAAYhB,GAAmBhG,EAAUjiE,QAE1Cjb,EAAOu6D,EAAK2pB,IAKbA,EAAYhB,GAAmBnjB,EAAM9kD,QACxCjb,EAAOu6D,EAAK2pB,GAId,IADA,IAAInmF,EAAagiE,EACThiE,EAAaA,EAAWlF,QAC1BkF,EAAWkd,OAASipE,EAAYhB,GAAmBnlF,EAAWkd,QAChEjb,EAAOu6D,EAAK2pB,GAGhB,OAAO3pB,EAyEQ4pB,CAASpkB,GAAO,GAE/B,IAAK7pE,KAAQ6tF,EACP1qB,EAAQ2qB,EAAS9tF,KACnBstF,GAAQp7E,EAAIlS,EAAM,IAGtB,IAAKA,KAAQ8tF,GACXt7E,EAAMs7E,EAAS9tF,MACH6tF,EAAS7tF,IAEnBstF,GAAQp7E,EAAIlS,EAAa,MAAPwS,EAAc,GAAKA,IAK3C,IAAIsU,GAAQ,CACV/lB,OAAQ0sF,GACRx/B,OAAQw/B,IAKNS,GAAe,MAMnB,SAASxuD,GAAUxtB,EAAIi5E,GAErB,GAAKA,IAASA,EAAMA,EAAIv+C,QAKxB,GAAI16B,EAAGi8E,UACDhD,EAAIllF,QAAQ,MAAQ,EACtBklF,EAAIx/E,MAAMuiF,IAAcvgD,SAAQ,SAAU7tC,GAAK,OAAOoS,EAAGi8E,UAAUrrF,IAAIhD,MAEvEoS,EAAGi8E,UAAUrrF,IAAIqoF,OAEd,CACL,IAAI34E,EAAM,KAAON,EAAGzK,aAAa,UAAY,IAAM,IAC/C+K,EAAIvM,QAAQ,IAAMklF,EAAM,KAAO,GACjCj5E,EAAGxK,aAAa,SAAU8K,EAAM24E,GAAKv+C,SAS3C,SAAS7M,GAAa7tB,EAAIi5E,GAExB,GAAKA,IAASA,EAAMA,EAAIv+C,QAKxB,GAAI16B,EAAGi8E,UACDhD,EAAIllF,QAAQ,MAAQ,EACtBklF,EAAIx/E,MAAMuiF,IAAcvgD,SAAQ,SAAU7tC,GAAK,OAAOoS,EAAGi8E,UAAU/tE,OAAOtgB,MAE1EoS,EAAGi8E,UAAU/tE,OAAO+qE,GAEjBj5E,EAAGi8E,UAAUhqF,QAChB+N,EAAGP,gBAAgB,aAEhB,CAGL,IAFA,IAAIa,EAAM,KAAON,EAAGzK,aAAa,UAAY,IAAM,IAC/C2mF,EAAM,IAAMjD,EAAM,IACf34E,EAAIvM,QAAQmoF,IAAQ,GACzB57E,EAAMA,EAAIhI,QAAQ4jF,EAAK,MAEzB57E,EAAMA,EAAIo6B,QAER16B,EAAGxK,aAAa,QAAS8K,GAEzBN,EAAGP,gBAAgB,UAOzB,SAAS08E,GAAmBphB,GAC1B,GAAKA,EAAL,CAIA,GAAsB,iBAAXA,EAAqB,CAC9B,IAAI5I,EAAM,GAKV,OAJmB,IAAf4I,EAAOjmD,KACTld,EAAOu6D,EAAKiqB,GAAkBrhB,EAAOjtE,MAAQ,MAE/C8J,EAAOu6D,EAAK4I,GACL5I,EACF,MAAsB,iBAAX4I,EACTqhB,GAAkBrhB,QADpB,GAKT,IAAIqhB,GAAoB/yE,GAAO,SAAUvb,GACvC,MAAO,CACLuuF,WAAavuF,EAAO,SACpBwuF,aAAexuF,EAAO,YACtByuF,iBAAmBzuF,EAAO,gBAC1B0uF,WAAa1uF,EAAO,SACpB2uF,aAAe3uF,EAAO,YACtB4uF,iBAAmB5uF,EAAO,oBAI1B6uF,GAAgBpoB,IAAcO,EAK9B8nB,GAAiB,aACjBC,GAAqB,gBACrBC,GAAgB,YAChBC,GAAoB,eACpBJ,UAE6BnqF,IAA3Be,OAAOypF,sBACwBxqF,IAAjCe,OAAO0pF,wBAEPL,GAAiB,mBACjBC,GAAqB,4BAEOrqF,IAA1Be,OAAO2pF,qBACuB1qF,IAAhCe,OAAO4pF,uBAEPL,GAAgB,kBAChBC,GAAoB,uBAKxB,IAAIK,GAAM7oB,EACNhhE,OAAOm1B,sBACLn1B,OAAOm1B,sBAAsB35B,KAAKwE,QAClC2c,WACyB,SAAUla,GAAM,OAAOA,KAEtD,SAASqnF,GAAWrnF,GAClBonF,IAAI,WACFA,GAAIpnF,MAIR,SAASsnF,GAAoBt9E,EAAIi5E,GAC/B,IAAIsE,EAAoBv9E,EAAGm5E,qBAAuBn5E,EAAGm5E,mBAAqB,IACtEoE,EAAkBxpF,QAAQklF,GAAO,IACnCsE,EAAkBzqF,KAAKmmF,GACvBzrD,GAASxtB,EAAIi5E,IAIjB,SAASuE,GAAuBx9E,EAAIi5E,GAC9Bj5E,EAAGm5E,oBACLjrE,EAAOlO,EAAGm5E,mBAAoBF,GAEhCprD,GAAY7tB,EAAIi5E,GAGlB,SAASwE,GACPz9E,EACA09E,EACA9gD,GAEA,IAAIunB,EAAMw5B,GAAkB39E,EAAI09E,GAC5B7rF,EAAOsyD,EAAItyD,KACXu6B,EAAU+3B,EAAI/3B,QACdwxD,EAAYz5B,EAAIy5B,UACpB,IAAK/rF,EAAQ,OAAO+qC,IACpB,IAAI9jB,EA9DW,eA8DHjnB,EAAsBgrF,GAAqBE,GACnDc,EAAQ,EACRpmF,EAAM,WACRuI,EAAGmR,oBAAoB2H,EAAOglE,GAC9BlhD,KAEEkhD,EAAQ,SAAU3/E,GAChBA,EAAEnG,SAAWgI,KACT69E,GAASD,GACbnmF,KAINyY,YAAW,WACL2tE,EAAQD,GACVnmF,MAED20B,EAAU,GACbpsB,EAAGwB,iBAAiBsX,EAAOglE,GAG7B,IAAIC,GAAc,yBAElB,SAASJ,GAAmB39E,EAAI09E,GAC9B,IASI7rF,EATA6zB,EAASnyB,OAAO8tB,iBAAiBrhB,GAEjCg+E,GAAoBt4D,EAAOk3D,GAAiB,UAAY,IAAInjF,MAAM,MAClEwkF,GAAuBv4D,EAAOk3D,GAAiB,aAAe,IAAInjF,MAAM,MACxEykF,EAAoBC,GAAWH,EAAkBC,GACjDG,GAAmB14D,EAAOo3D,GAAgB,UAAY,IAAIrjF,MAAM,MAChE4kF,GAAsB34D,EAAOo3D,GAAgB,aAAe,IAAIrjF,MAAM,MACtE6kF,EAAmBH,GAAWC,EAAiBC,GAG/CjyD,EAAU,EACVwxD,EAAY,EA8BhB,MA/He,eAmGXF,EACEQ,EAAoB,IACtBrsF,EArGW,aAsGXu6B,EAAU8xD,EACVN,EAAYK,EAAoBhsF,QAtGtB,cAwGHyrF,EACLY,EAAmB,IACrBzsF,EA1GU,YA2GVu6B,EAAUkyD,EACVV,EAAYS,EAAmBpsF,QASjC2rF,GALA/rF,GADAu6B,EAAUh0B,KAAKitB,IAAI64D,EAAmBI,IACrB,EACbJ,EAAoBI,EAlHX,aACD,YAoHR,MArHS,eAuHTzsF,EACEosF,EAAoBhsF,OACpBosF,EAAmBpsF,OACrB,EAKC,CACLJ,KAAMA,EACNu6B,QAASA,EACTwxD,UAAWA,EACXW,aAnIa,eA6Hb1sF,GACAksF,GAAY7+E,KAAKwmB,EAAOk3D,GAAiB,cAS7C,SAASuB,GAAYK,EAAQC,GAE3B,KAAOD,EAAOvsF,OAASwsF,EAAUxsF,QAC/BusF,EAASA,EAAOltF,OAAOktF,GAGzB,OAAOpmF,KAAKitB,IAAIvxB,MAAM,KAAM2qF,EAAU5nF,KAAI,SAAUhJ,EAAGN,GACrD,OAAOmxF,GAAK7wF,GAAK6wF,GAAKF,EAAOjxF,QAQjC,SAASmxF,GAAMpvF,GACb,OAAkD,IAA3Ck9D,OAAOl9D,EAAEsE,MAAM,GAAI,GAAG0E,QAAQ,IAAK,MAK5C,SAASqmF,GAAOhnB,EAAOinB,GACrB,IAAI5+E,EAAK23D,EAAMpB,IAGXrF,EAAMlxD,EAAG6+E,YACX7+E,EAAG6+E,SAASC,WAAY,EACxB9+E,EAAG6+E,YAGL,IAAIhsE,EAAOspE,GAAkBxkB,EAAM9kD,KAAKksE,YACxC,IAAI9tB,EAAQp+C,KAKRq+C,EAAMlxD,EAAGg/E,WAA6B,IAAhBh/E,EAAGxL,SAA7B,CA4BA,IAxBA,IAAIsgB,EAAMjC,EAAKiC,IACXjjB,EAAOghB,EAAKhhB,KACZwqF,EAAaxpE,EAAKwpE,WAClBC,EAAezpE,EAAKypE,aACpBC,EAAmB1pE,EAAK0pE,iBACxB0C,EAAcpsE,EAAKosE,YACnBC,EAAgBrsE,EAAKqsE,cACrBC,EAAoBtsE,EAAKssE,kBACzBC,EAAcvsE,EAAKusE,YACnBT,EAAQ9rE,EAAK8rE,MACbU,EAAaxsE,EAAKwsE,WAClBC,EAAiBzsE,EAAKysE,eACtBC,EAAe1sE,EAAK0sE,aACpBC,EAAS3sE,EAAK2sE,OACdC,EAAc5sE,EAAK4sE,YACnBC,EAAkB7sE,EAAK6sE,gBACvBh4D,EAAW7U,EAAK6U,SAMhBr3B,EAAUg2E,GACVsZ,EAAiBtZ,GAAe91E,OAC7BovF,GAAkBA,EAAelvF,QACtCJ,EAAUsvF,EAAetvF,QACzBsvF,EAAiBA,EAAelvF,OAGlC,IAAImvF,GAAYvvF,EAAQo3E,aAAe9P,EAAMZ,aAE7C,IAAI6oB,GAAaJ,GAAqB,KAAXA,EAA3B,CAIA,IAAIK,EAAaD,GAAYX,EACzBA,EACA5C,EACAyD,EAAcF,GAAYT,EAC1BA,EACA5C,EACAwD,EAAUH,GAAYV,EACtBA,EACA5C,EAEA0D,EAAkBJ,GACjBL,GACDH,EACAa,EAAYL,GACO,mBAAXJ,EAAwBA,EAChCb,EACAuB,EAAiBN,GAChBH,GACDJ,EACAc,EAAqBP,GACpBF,GACDJ,EAEAc,EAAwBpzC,EAC1Bj6C,EAAS20B,GACLA,EAASi3D,MACTj3D,GAGF,EAIJ,IAAI24D,GAAqB,IAARvrE,IAAkBggD,EAC/BwrB,EAAmBC,GAAuBN,GAE1CrjD,EAAK58B,EAAGg/E,SAAWhxE,GAAK,WACtBqyE,IACF7C,GAAsBx9E,EAAI+/E,GAC1BvC,GAAsBx9E,EAAI8/E,IAExBljD,EAAGkiD,WACDuB,GACF7C,GAAsBx9E,EAAI6/E,GAE5BM,GAAsBA,EAAmBngF,IAEzCkgF,GAAkBA,EAAelgF,GAEnCA,EAAGg/E,SAAW,QAGXrnB,EAAM9kD,KAAKiD,MAEdqpD,GAAexH,EAAO,UAAU,WAC9B,IAAIlnE,EAASuP,EAAGrK,WACZ6qF,EAAc/vF,GAAUA,EAAOgwF,UAAYhwF,EAAOgwF,SAAS9oB,EAAM7oE,KACjE0xF,GACFA,EAAYt+E,MAAQy1D,EAAMz1D,KAC1Bs+E,EAAYjqB,IAAIsoB,UAEhB2B,EAAYjqB,IAAIsoB,WAElBoB,GAAaA,EAAUjgF,EAAI48B,MAK/BojD,GAAmBA,EAAgBhgF,GAC/BqgF,IACF/C,GAAmBt9E,EAAI6/E,GACvBvC,GAAmBt9E,EAAI8/E,GACvBzC,IAAU,WACRG,GAAsBx9E,EAAI6/E,GACrBjjD,EAAGkiD,YACNxB,GAAmBt9E,EAAI+/E,GAClBO,IACCI,GAAgBN,GAClBlwE,WAAW0sB,EAAIwjD,GAEf3C,GAAmBz9E,EAAInO,EAAM+qC,SAOnC+6B,EAAM9kD,KAAKiD,OACb8oE,GAAiBA,IACjBqB,GAAaA,EAAUjgF,EAAI48B,IAGxByjD,GAAeC,GAClB1jD,MAIJ,SAAS+jD,GAAOhpB,EAAOipB,GACrB,IAAI5gF,EAAK23D,EAAMpB,IAGXrF,EAAMlxD,EAAGg/E,YACXh/E,EAAGg/E,SAASF,WAAY,EACxB9+E,EAAGg/E,YAGL,IAAInsE,EAAOspE,GAAkBxkB,EAAM9kD,KAAKksE,YACxC,GAAI9tB,EAAQp+C,IAAyB,IAAhB7S,EAAGxL,SACtB,OAAOosF,IAIT,IAAI1vB,EAAMlxD,EAAG6+E,UAAb,CAIA,IAAI/pE,EAAMjC,EAAKiC,IACXjjB,EAAOghB,EAAKhhB,KACZ2qF,EAAa3pE,EAAK2pE,WAClBC,EAAe5pE,EAAK4pE,aACpBC,EAAmB7pE,EAAK6pE,iBACxBmE,EAAchuE,EAAKguE,YACnBF,EAAQ9tE,EAAK8tE,MACbG,EAAajuE,EAAKiuE,WAClBC,EAAiBluE,EAAKkuE,eACtBC,EAAanuE,EAAKmuE,WAClBt5D,EAAW7U,EAAK6U,SAEhB24D,GAAqB,IAARvrE,IAAkBggD,EAC/BwrB,EAAmBC,GAAuBI,GAE1CM,EAAwBj0C,EAC1Bj6C,EAAS20B,GACLA,EAASi5D,MACTj5D,GAGF,EAIJ,IAAIkV,EAAK58B,EAAG6+E,SAAW7wE,GAAK,WACtBhO,EAAGrK,YAAcqK,EAAGrK,WAAW8qF,WACjCzgF,EAAGrK,WAAW8qF,SAAS9oB,EAAM7oE,KAAO,MAElCuxF,IACF7C,GAAsBx9E,EAAIy8E,GAC1Be,GAAsBx9E,EAAI08E,IAExB9/C,EAAGkiD,WACDuB,GACF7C,GAAsBx9E,EAAIw8E,GAE5BuE,GAAkBA,EAAe/gF,KAEjC4gF,IACAE,GAAcA,EAAW9gF,IAE3BA,EAAG6+E,SAAW,QAGZmC,EACFA,EAAWE,GAEXA,IAGF,SAASA,IAEHtkD,EAAGkiD,aAIFnnB,EAAM9kD,KAAKiD,MAAQ9V,EAAGrK,cACxBqK,EAAGrK,WAAW8qF,WAAazgF,EAAGrK,WAAW8qF,SAAW,KAAM9oB,EAAS,KAAKA,GAE3EkpB,GAAeA,EAAY7gF,GACvBqgF,IACF/C,GAAmBt9E,EAAIw8E,GACvBc,GAAmBt9E,EAAI08E,GACvBW,IAAU,WACRG,GAAsBx9E,EAAIw8E,GACrB5/C,EAAGkiD,YACNxB,GAAmBt9E,EAAIy8E,GAClB6D,IACCI,GAAgBO,GAClB/wE,WAAW0sB,EAAIqkD,GAEfxD,GAAmBz9E,EAAInO,EAAM+qC,SAMvC+jD,GAASA,EAAM3gF,EAAI48B,GACdyjD,GAAeC,GAClB1jD,MAsBN,SAAS8jD,GAAiBvrF,GACxB,MAAsB,iBAARA,IAAqBslC,MAAMtlC,GAS3C,SAASorF,GAAwBvqF,GAC/B,GAAIi7D,EAAQj7D,GACV,OAAO,EAET,IAAImrF,EAAanrF,EAAG6Y,IACpB,OAAIqiD,EAAMiwB,GAEDZ,GACL/uF,MAAMD,QAAQ4vF,GACVA,EAAW,GACXA,IAGEnrF,EAAGg8D,SAAWh8D,EAAG/D,QAAU,EAIvC,SAASmvF,GAAQ9zE,EAAGqqD,IACM,IAApBA,EAAM9kD,KAAKiD,MACb6oE,GAAMhnB,GAIV,IA4BI0pB,GAj7DJ,SAA8BC,GAC5B,IAAI/zF,EAAGiK,EACHw6E,EAAM,GAENvkF,EAAU6zF,EAAQ7zF,QAClBqoF,EAAUwL,EAAQxL,QAEtB,IAAKvoF,EAAI,EAAGA,EAAIsmB,GAAM5hB,SAAU1E,EAE9B,IADAykF,EAAIn+D,GAAMtmB,IAAM,GACXiK,EAAI,EAAGA,EAAI/J,EAAQwE,SAAUuF,EAC5B05D,EAAMzjE,EAAQ+J,GAAGqc,GAAMtmB,MACzBykF,EAAIn+D,GAAMtmB,IAAIuF,KAAKrF,EAAQ+J,GAAGqc,GAAMtmB,KAmB1C,SAASg0F,EAAYvhF,GACnB,IAAIvP,EAASqlF,EAAQngF,WAAWqK,GAE5BkxD,EAAMzgE,IACRqlF,EAAQlgF,YAAYnF,EAAQuP,GAsBhC,SAASwhF,EACP7pB,EACA8pB,EACAC,EACAC,EACA74B,EACA84B,EACA5vF,GAYA,GAVIk/D,EAAMyG,EAAMpB,MAAQrF,EAAM0wB,KAM5BjqB,EAAQiqB,EAAW5vF,GAAS0lE,GAAWC,IAGzCA,EAAMZ,cAAgBjO,GAiDxB,SAA0B6O,EAAO8pB,EAAoBC,EAAWC,GAC9D,IAAIp0F,EAAIoqE,EAAM9kD,KACd,GAAIq+C,EAAM3jE,GAAI,CACZ,IAAIs0F,EAAgB3wB,EAAMyG,EAAMd,oBAAsBtpE,EAAEu4E,UAQxD,GAPI5U,EAAM3jE,EAAIA,EAAEyC,OAASkhE,EAAM3jE,EAAIA,EAAE0I,OACnC1I,EAAEoqE,GAAO,GAMPzG,EAAMyG,EAAMd,mBAMd,OALAirB,EAAcnqB,EAAO8pB,GACrBxgE,EAAOygE,EAAW/pB,EAAMpB,IAAKorB,GACzBxwB,EAAO0wB,IA0BjB,SAA8BlqB,EAAO8pB,EAAoBC,EAAWC,GAClE,IAAIp0F,EAKAw0F,EAAYpqB,EAChB,KAAOoqB,EAAUlrB,mBAEf,GADAkrB,EAAYA,EAAUlrB,kBAAkBkQ,OACpC7V,EAAM3jE,EAAIw0F,EAAUlvE,OAASq+C,EAAM3jE,EAAIA,EAAEwxF,YAAa,CACxD,IAAKxxF,EAAI,EAAGA,EAAIykF,EAAIgQ,SAAS/vF,SAAU1E,EACrCykF,EAAIgQ,SAASz0F,GAAGmpF,GAAWqL,GAE7BN,EAAmB3uF,KAAKivF,GACxB,MAKJ9gE,EAAOygE,EAAW/pB,EAAMpB,IAAKorB,GA5CvBM,CAAoBtqB,EAAO8pB,EAAoBC,EAAWC,IAErD,GAjEPpZ,CAAgB5Q,EAAO8pB,EAAoBC,EAAWC,GAA1D,CAIA,IAAI9uE,EAAO8kD,EAAM9kD,KACbtH,EAAWosD,EAAMpsD,SACjBrJ,EAAMy1D,EAAMz1D,IACZgvD,EAAMhvD,IAeRy1D,EAAMpB,IAAMoB,EAAM/oE,GACdknF,EAAQG,gBAAgBte,EAAM/oE,GAAIsT,GAClC4zE,EAAQzgF,cAAc6M,EAAKy1D,GAC/BuqB,EAASvqB,GAIPwqB,EAAexqB,EAAOpsD,EAAUk2E,GAC5BvwB,EAAMr+C,IACRuvE,EAAkBzqB,EAAO8pB,GAE3BxgE,EAAOygE,EAAW/pB,EAAMpB,IAAKorB,IAMtBxwB,EAAOwG,EAAMX,YACtBW,EAAMpB,IAAMuf,EAAQn0E,cAAcg2D,EAAMriE,MACxC2rB,EAAOygE,EAAW/pB,EAAMpB,IAAKorB,KAE7BhqB,EAAMpB,IAAMuf,EAAQ39D,eAAew/C,EAAMriE,MACzC2rB,EAAOygE,EAAW/pB,EAAMpB,IAAKorB,KA0BjC,SAASG,EAAenqB,EAAO8pB,GACzBvwB,EAAMyG,EAAM9kD,KAAKwvE,iBACnBZ,EAAmB3uF,KAAKgB,MAAM2tF,EAAoB9pB,EAAM9kD,KAAKwvE,eAC7D1qB,EAAM9kD,KAAKwvE,cAAgB,MAE7B1qB,EAAMpB,IAAMoB,EAAMd,kBAAkBsb,IAChCmQ,EAAY3qB,IACdyqB,EAAkBzqB,EAAO8pB,GACzBS,EAASvqB,KAIT2e,GAAY3e,GAEZ8pB,EAAmB3uF,KAAK6kE,IA0B5B,SAAS12C,EAAQxwB,EAAQ8lE,EAAKgsB,GACxBrxB,EAAMzgE,KACJygE,EAAMqxB,GACJzM,EAAQngF,WAAW4sF,KAAY9xF,GACjCqlF,EAAQv1D,aAAa9vB,EAAQ8lE,EAAKgsB,GAGpCzM,EAAQpgF,YAAYjF,EAAQ8lE,IAKlC,SAAS4rB,EAAgBxqB,EAAOpsD,EAAUk2E,GACxC,GAAIjwF,MAAMD,QAAQga,GAAW,CACvB,EAGJ,IAAK,IAAIhe,EAAI,EAAGA,EAAIge,EAAStZ,SAAU1E,EACrCi0F,EAAUj2E,EAAShe,GAAIk0F,EAAoB9pB,EAAMpB,IAAK,MAAM,EAAMhrD,EAAUhe,QAErE0uC,EAAY07B,EAAMriE,OAC3BwgF,EAAQpgF,YAAYiiE,EAAMpB,IAAKuf,EAAQ39D,eAAe/a,OAAOu6D,EAAMriE,QAIvE,SAASgtF,EAAa3qB,GACpB,KAAOA,EAAMd,mBACXc,EAAQA,EAAMd,kBAAkBkQ,OAElC,OAAO7V,EAAMyG,EAAMz1D,KAGrB,SAASkgF,EAAmBzqB,EAAO8pB,GACjC,IAAK,IAAI1P,EAAM,EAAGA,EAAMC,EAAInjF,OAAOoD,SAAU8/E,EAC3CC,EAAInjF,OAAOkjF,GAAK2E,GAAW/e,GAGzBzG,EADJ3jE,EAAIoqE,EAAM9kD,KAAK7iB,QAETkhE,EAAM3jE,EAAEsB,SAAWtB,EAAEsB,OAAO6nF,GAAW/e,GACvCzG,EAAM3jE,EAAE0zB,SAAWwgE,EAAmB3uF,KAAK6kE,IAOnD,SAASuqB,EAAUvqB,GACjB,IAAIpqE,EACJ,GAAI2jE,EAAM3jE,EAAIoqE,EAAMf,WAClBkf,EAAQO,cAAc1e,EAAMpB,IAAKhpE,QAGjC,IADA,IAAIi1F,EAAW7qB,EACR6qB,GACDtxB,EAAM3jE,EAAIi1F,EAASnyF,UAAY6gE,EAAM3jE,EAAIA,EAAEwD,SAASX,WACtD0lF,EAAQO,cAAc1e,EAAMpB,IAAKhpE,GAEnCi1F,EAAWA,EAAS/xF,OAIpBygE,EAAM3jE,EAAI84E,KACZ94E,IAAMoqE,EAAMtnE,SACZ9C,IAAMoqE,EAAMjB,WACZxF,EAAM3jE,EAAIA,EAAEwD,SAASX,WAErB0lF,EAAQO,cAAc1e,EAAMpB,IAAKhpE,GAIrC,SAASk1F,EAAWf,EAAWC,EAAQ5X,EAAQ2Y,EAAUzL,EAAQwK,GAC/D,KAAOiB,GAAYzL,IAAUyL,EAC3BlB,EAAUzX,EAAO2Y,GAAWjB,EAAoBC,EAAWC,GAAQ,EAAO5X,EAAQ2Y,GAItF,SAASC,EAAmBhrB,GAC1B,IAAIpqE,EAAGiK,EACHqb,EAAO8kD,EAAM9kD,KACjB,GAAIq+C,EAAMr+C,GAER,IADIq+C,EAAM3jE,EAAIslB,EAAK7iB,OAASkhE,EAAM3jE,EAAIA,EAAEw6E,UAAYx6E,EAAEoqE,GACjDpqE,EAAI,EAAGA,EAAIykF,EAAIjK,QAAQ91E,SAAU1E,EAAKykF,EAAIjK,QAAQx6E,GAAGoqE,GAE5D,GAAIzG,EAAM3jE,EAAIoqE,EAAMpsD,UAClB,IAAK/T,EAAI,EAAGA,EAAImgE,EAAMpsD,SAAStZ,SAAUuF,EACvCmrF,EAAkBhrB,EAAMpsD,SAAS/T,IAKvC,SAASorF,EAAc7Y,EAAQ2Y,EAAUzL,GACvC,KAAOyL,GAAYzL,IAAUyL,EAAU,CACrC,IAAIllF,EAAKusE,EAAO2Y,GACZxxB,EAAM1zD,KACJ0zD,EAAM1zD,EAAG0E,MACX2gF,EAA0BrlF,GAC1BmlF,EAAkBnlF,IAElB+jF,EAAW/jF,EAAG+4D,OAMtB,SAASssB,EAA2BlrB,EAAOipB,GACzC,GAAI1vB,EAAM0vB,IAAO1vB,EAAMyG,EAAM9kD,MAAO,CAClC,IAAItlB,EACA63E,EAAY4M,EAAI9jE,OAAOjc,OAAS,EAapC,IAZIi/D,EAAM0vB,GAGRA,EAAGxb,WAAaA,EAGhBwb,EAtRN,SAAqBkC,EAAU1d,GAC7B,SAASnG,IACuB,KAAxBA,EAAUmG,WACdmc,EAAWuB,GAIf,OADA7jB,EAAUmG,UAAYA,EACfnG,EA+QE8jB,CAAWprB,EAAMpB,IAAK6O,GAGzBlU,EAAM3jE,EAAIoqE,EAAMd,oBAAsB3F,EAAM3jE,EAAIA,EAAEw5E,SAAW7V,EAAM3jE,EAAEslB,OACvEgwE,EAA0Bt1F,EAAGqzF,GAE1BrzF,EAAI,EAAGA,EAAIykF,EAAI9jE,OAAOjc,SAAU1E,EACnCykF,EAAI9jE,OAAO3gB,GAAGoqE,EAAOipB,GAEnB1vB,EAAM3jE,EAAIoqE,EAAM9kD,KAAK7iB,OAASkhE,EAAM3jE,EAAIA,EAAE2gB,QAC5C3gB,EAAEoqE,EAAOipB,GAETA,SAGFW,EAAW5pB,EAAMpB,KA8FrB,SAASysB,EAAc/tF,EAAMguF,EAAOrxF,EAAO6F,GACzC,IAAK,IAAIlK,EAAIqE,EAAOrE,EAAIkK,EAAKlK,IAAK,CAChC,IAAIK,EAAIq1F,EAAM11F,GACd,GAAI2jE,EAAMtjE,IAAM+oF,GAAU1hF,EAAMrH,GAAM,OAAOL,GAIjD,SAAS21F,EACP3c,EACA5O,EACA8pB,EACAG,EACA5vF,EACAmxF,GAEA,GAAI5c,IAAa5O,EAAjB,CAIIzG,EAAMyG,EAAMpB,MAAQrF,EAAM0wB,KAE5BjqB,EAAQiqB,EAAW5vF,GAAS0lE,GAAWC,IAGzC,IAAIpB,EAAMoB,EAAMpB,IAAMgQ,EAAShQ,IAE/B,GAAIpF,EAAOoV,EAASnP,oBACdlG,EAAMyG,EAAMlB,aAAakS,UAC3Bya,EAAQ7c,EAAShQ,IAAKoB,EAAO8pB,GAE7B9pB,EAAMP,oBAAqB,OAS/B,GAAIjG,EAAOwG,EAAMb,WACf3F,EAAOoV,EAASzP,WAChBa,EAAM7oE,MAAQy3E,EAASz3E,MACtBqiE,EAAOwG,EAAMV,WAAa9F,EAAOwG,EAAMT,SAExCS,EAAMd,kBAAoB0P,EAAS1P,sBALrC,CASA,IAAItpE,EACAslB,EAAO8kD,EAAM9kD,KACbq+C,EAAMr+C,IAASq+C,EAAM3jE,EAAIslB,EAAK7iB,OAASkhE,EAAM3jE,EAAIA,EAAEy4E,WACrDz4E,EAAEg5E,EAAU5O,GAGd,IAAIsrB,EAAQ1c,EAASh7D,SACjB/N,EAAKm6D,EAAMpsD,SACf,GAAI2lD,EAAMr+C,IAASyvE,EAAY3qB,GAAQ,CACrC,IAAKpqE,EAAI,EAAGA,EAAIykF,EAAIj2B,OAAO9pD,SAAU1E,EAAKykF,EAAIj2B,OAAOxuD,GAAGg5E,EAAU5O,GAC9DzG,EAAM3jE,EAAIslB,EAAK7iB,OAASkhE,EAAM3jE,EAAIA,EAAEwuD,SAAWxuD,EAAEg5E,EAAU5O,GAE7D1G,EAAQ0G,EAAMriE,MACZ47D,EAAM+xB,IAAU/xB,EAAM1zD,GACpBylF,IAAUzlF,GAxJpB,SAAyBkkF,EAAWuB,EAAOI,EAAO5B,EAAoB0B,GACpE,IAQIG,EAAaC,EAAUC,EARvBC,EAAc,EACdC,EAAc,EACdC,EAAYV,EAAMhxF,OAAS,EAC3B2xF,EAAgBX,EAAM,GACtBY,EAAcZ,EAAMU,GACpBG,EAAYT,EAAMpxF,OAAS,EAC3B8xF,EAAgBV,EAAM,GACtBW,EAAcX,EAAMS,GAMpBG,GAAWd,EAMf,IAJI,EAIGM,GAAeE,GAAaD,GAAeI,GAC5C7yB,EAAQ2yB,GACVA,EAAgBX,IAAQQ,GACfxyB,EAAQ4yB,GACjBA,EAAcZ,IAAQU,GACbhN,GAAUiN,EAAeG,IAClCb,EAAWU,EAAeG,EAAetC,EAAoB4B,EAAOK,GACpEE,EAAgBX,IAAQQ,GACxBM,EAAgBV,IAAQK,IACf/M,GAAUkN,EAAaG,IAChCd,EAAWW,EAAaG,EAAavC,EAAoB4B,EAAOS,GAChED,EAAcZ,IAAQU,GACtBK,EAAcX,IAAQS,IACbnN,GAAUiN,EAAeI,IAClCd,EAAWU,EAAeI,EAAavC,EAAoB4B,EAAOS,GAClEG,GAAWnO,EAAQv1D,aAAamhE,EAAWkC,EAAcrtB,IAAKuf,EAAQr1E,YAAYojF,EAAYttB,MAC9FqtB,EAAgBX,IAAQQ,GACxBO,EAAcX,IAAQS,IACbnN,GAAUkN,EAAaE,IAChCb,EAAWW,EAAaE,EAAetC,EAAoB4B,EAAOK,GAClEO,GAAWnO,EAAQv1D,aAAamhE,EAAWmC,EAAYttB,IAAKqtB,EAAcrtB,KAC1EstB,EAAcZ,IAAQU,GACtBI,EAAgBV,IAAQK,KAEpBzyB,EAAQqyB,KAAgBA,EAAcvM,GAAkBkM,EAAOQ,EAAaE,IAI5E1yB,EAHJsyB,EAAWryB,EAAM6yB,EAAcj1F,KAC3Bw0F,EAAYS,EAAcj1F,KAC1Bk0F,EAAae,EAAed,EAAOQ,EAAaE,IAElDnC,EAAUuC,EAAetC,EAAoBC,EAAWkC,EAAcrtB,KAAK,EAAO8sB,EAAOK,GAGrF/M,GADJ6M,EAAcP,EAAMM,GACOQ,IACzBb,EAAWM,EAAaO,EAAetC,EAAoB4B,EAAOK,GAClET,EAAMM,QAAY/wF,EAClByxF,GAAWnO,EAAQv1D,aAAamhE,EAAW8B,EAAYjtB,IAAKqtB,EAAcrtB,MAG1EirB,EAAUuC,EAAetC,EAAoBC,EAAWkC,EAAcrtB,KAAK,EAAO8sB,EAAOK,GAG7FK,EAAgBV,IAAQK,IAGxBD,EAAcE,EAEhBlB,EAAUf,EADDzwB,EAAQoyB,EAAMS,EAAY,IAAM,KAAOT,EAAMS,EAAY,GAAGvtB,IACxC8sB,EAAOK,EAAaI,EAAWrC,GACnDiC,EAAcI,GACvBlB,EAAaK,EAAOQ,EAAaE,GAoFXO,CAAe3tB,EAAK0sB,EAAOzlF,EAAIikF,EAAoB0B,GAC9DjyB,EAAM1zD,IAIX0zD,EAAMqV,EAASjxE,OAASwgF,EAAQM,eAAe7f,EAAK,IACxDksB,EAAUlsB,EAAK,KAAM/4D,EAAI,EAAGA,EAAGvL,OAAS,EAAGwvF,IAClCvwB,EAAM+xB,GACfL,EAAaK,EAAO,EAAGA,EAAMhxF,OAAS,GAC7Bi/D,EAAMqV,EAASjxE,OACxBwgF,EAAQM,eAAe7f,EAAK,IAErBgQ,EAASjxE,OAASqiE,EAAMriE,MACjCwgF,EAAQM,eAAe7f,EAAKoB,EAAMriE,MAEhC47D,EAAMr+C,IACJq+C,EAAM3jE,EAAIslB,EAAK7iB,OAASkhE,EAAM3jE,EAAIA,EAAE42F,YAAc52F,EAAEg5E,EAAU5O,KAItE,SAASysB,EAAkBzsB,EAAO9pD,EAAOyH,GAGvC,GAAI67C,EAAO77C,IAAY47C,EAAMyG,EAAMlnE,QACjCknE,EAAMlnE,OAAOoiB,KAAKwvE,cAAgBx0E,OAElC,IAAK,IAAItgB,EAAI,EAAGA,EAAIsgB,EAAM5b,SAAU1E,EAClCsgB,EAAMtgB,GAAGslB,KAAK7iB,KAAKixB,OAAOpT,EAAMtgB,IAKtC,IAKI82F,EAAmB9yB,EAAQ,2CAG/B,SAAS6xB,EAAS7sB,EAAKoB,EAAO8pB,EAAoB6C,GAChD,IAAI/2F,EACA2U,EAAMy1D,EAAMz1D,IACZ2Q,EAAO8kD,EAAM9kD,KACbtH,EAAWosD,EAAMpsD,SAIrB,GAHA+4E,EAASA,GAAWzxE,GAAQA,EAAK+3D,IACjCjT,EAAMpB,IAAMA,EAERpF,EAAOwG,EAAMX,YAAc9F,EAAMyG,EAAMlB,cAEzC,OADAkB,EAAMP,oBAAqB,GACpB,EAQT,GAAIlG,EAAMr+C,KACJq+C,EAAM3jE,EAAIslB,EAAK7iB,OAASkhE,EAAM3jE,EAAIA,EAAE0I,OAAS1I,EAAEoqE,GAAO,GACtDzG,EAAM3jE,EAAIoqE,EAAMd,oBAGlB,OADAirB,EAAcnqB,EAAO8pB,IACd,EAGX,GAAIvwB,EAAMhvD,GAAM,CACd,GAAIgvD,EAAM3lD,GAER,GAAKgrD,EAAIguB,gBAIP,GAAIrzB,EAAM3jE,EAAIslB,IAASq+C,EAAM3jE,EAAIA,EAAEk1E,WAAavR,EAAM3jE,EAAIA,EAAE8U,YAC1D,GAAI9U,IAAMgpE,EAAIl0D,UAWZ,OAAO,MAEJ,CAIL,IAFA,IAAImiF,GAAgB,EAChB1P,EAAYve,EAAIxyD,WACXguE,EAAM,EAAGA,EAAMxmE,EAAStZ,OAAQ8/E,IAAO,CAC9C,IAAK+C,IAAcsO,EAAQtO,EAAWvpE,EAASwmE,GAAM0P,EAAoB6C,GAAS,CAChFE,GAAgB,EAChB,MAEF1P,EAAYA,EAAUr0E,YAIxB,IAAK+jF,GAAiB1P,EAUpB,OAAO,OAxCXqN,EAAexqB,EAAOpsD,EAAUk2E,GA6CpC,GAAIvwB,EAAMr+C,GAAO,CACf,IAAI4xE,GAAa,EACjB,IAAK,IAAI31F,KAAO+jB,EACd,IAAKwxE,EAAiBv1F,GAAM,CAC1B21F,GAAa,EACbrC,EAAkBzqB,EAAO8pB,GACzB,OAGCgD,GAAc5xE,EAAY,OAE7BsrD,GAAStrD,EAAY,aAGhB0jD,EAAI1jD,OAAS8kD,EAAMriE,OAC5BihE,EAAI1jD,KAAO8kD,EAAMriE,MAEnB,OAAO,EAcT,OAAO,SAAgBixE,EAAU5O,EAAOiO,EAAWud,GACjD,IAAIlyB,EAAQ0G,GAAZ,CAKA,IA7lBoBpB,EA6lBhBmuB,GAAiB,EACjBjD,EAAqB,GAEzB,GAAIxwB,EAAQsV,GAEVme,GAAiB,EACjBlD,EAAU7pB,EAAO8pB,OACZ,CACL,IAAIkD,EAAgBzzB,EAAMqV,EAAS/xE,UACnC,IAAKmwF,GAAiBhO,GAAUpQ,EAAU5O,GAExCurB,EAAW3c,EAAU5O,EAAO8pB,EAAoB,KAAM,KAAM0B,OACvD,CACL,GAAIwB,EAAe,CAQjB,GAJ0B,IAAtBpe,EAAS/xE,UAAkB+xE,EAASqe,aA/iMnC,0BAgjMHre,EAAS9mE,gBAhjMN,wBAijMHmmE,GAAY,GAEVzU,EAAOyU,IACLwd,EAAQ7c,EAAU5O,EAAO8pB,GAE3B,OADA2C,EAAiBzsB,EAAO8pB,GAAoB,GACrClb,EArnBGhQ,EAkoBSgQ,EAAvBA,EAjoBC,IAAIjQ,GAAMwf,EAAQC,QAAQxf,GAAK58D,cAAe,GAAI,QAAInH,EAAW+jE,GAqoBpE,IAAIsuB,EAASte,EAAShQ,IAClBmrB,EAAY5L,EAAQngF,WAAWkvF,GAcnC,GAXArD,EACE7pB,EACA8pB,EAIAoD,EAAOhG,SAAW,KAAO6C,EACzB5L,EAAQr1E,YAAYokF,IAIlB3zB,EAAMyG,EAAMlnE,QAGd,IAFA,IAAI+xF,EAAW7qB,EAAMlnE,OACjBq0F,EAAYxC,EAAY3qB,GACrB6qB,GAAU,CACf,IAAK,IAAIj1F,EAAI,EAAGA,EAAIykF,EAAIjK,QAAQ91E,SAAU1E,EACxCykF,EAAIjK,QAAQx6E,GAAGi1F,GAGjB,GADAA,EAASjsB,IAAMoB,EAAMpB,IACjBuuB,EAAW,CACb,IAAK,IAAI/S,EAAM,EAAGA,EAAMC,EAAInjF,OAAOoD,SAAU8/E,EAC3CC,EAAInjF,OAAOkjF,GAAK2E,GAAW8L,GAK7B,IAAIvhE,EAASuhE,EAAS3vE,KAAK7iB,KAAKixB,OAChC,GAAIA,EAAOs+C,OAET,IAAK,IAAIwlB,EAAM,EAAGA,EAAM9jE,EAAOpS,IAAI5c,OAAQ8yF,IACzC9jE,EAAOpS,IAAIk2E,UAIfzO,GAAYkM,GAEdA,EAAWA,EAAS/xF,OAKpBygE,EAAMwwB,GACRkB,EAAa,CAACrc,GAAW,EAAG,GACnBrV,EAAMqV,EAASrkE,MACxBygF,EAAkBpc,IAMxB,OADA6d,EAAiBzsB,EAAO8pB,EAAoBiD,GACrC/sB,EAAMpB,IAnGPrF,EAAMqV,IAAaoc,EAAkBpc,IAw0CnCye,CAAoB,CAAElP,QAASA,GAASroF,QAf9B,CACpByS,GACAo5E,GACA1/D,GACA6oD,GACA7tD,GAlBe2/C,EAAY,CAC3B1lE,OAAQuyF,GACRY,SAAUZ,GACVlzE,OAAQ,SAAoBypD,EAAOipB,IAET,IAApBjpB,EAAM9kD,KAAKiD,KACb6qE,GAAMhpB,EAAOipB,GAEbA,MAGF,IAe0BtvF,OAAO6mF,MAUjCrjB,GAEF1hE,SAASoO,iBAAiB,mBAAmB,WAC3C,IAAIxB,EAAK5M,SAAS+S,cACdnG,GAAMA,EAAGilF,QACXzrE,GAAQxZ,EAAI,YAKlB,IAAIklF,GAAY,CACdptB,SAAU,SAAmB93D,EAAI+nC,EAAS4vB,EAAO4O,GAC7B,WAAd5O,EAAMz1D,KAEJqkE,EAAShQ,MAAQgQ,EAAShQ,IAAI4uB,UAChChmB,GAAexH,EAAO,aAAa,WACjCutB,GAAUrN,iBAAiB73E,EAAI+nC,EAAS4vB,MAG1CytB,GAAYplF,EAAI+nC,EAAS4vB,EAAMtnE,SAEjC2P,EAAGmlF,UAAY,GAAGtuF,IAAInJ,KAAKsS,EAAG/P,QAASo1F,MAChB,aAAd1tB,EAAMz1D,KAAsB2zE,GAAgB71E,EAAGnO,SACxDmO,EAAG06E,YAAc3yC,EAAQiwC,UACpBjwC,EAAQiwC,UAAUjL,OACrB/sE,EAAGwB,iBAAiB,mBAAoB8jF,IACxCtlF,EAAGwB,iBAAiB,iBAAkB+jF,IAKtCvlF,EAAGwB,iBAAiB,SAAU+jF,IAE1BzwB,IACF90D,EAAGilF,QAAS,MAMpBpN,iBAAkB,SAA2B73E,EAAI+nC,EAAS4vB,GACxD,GAAkB,WAAdA,EAAMz1D,IAAkB,CAC1BkjF,GAAYplF,EAAI+nC,EAAS4vB,EAAMtnE,SAK/B,IAAIm1F,EAAcxlF,EAAGmlF,UACjBM,EAAazlF,EAAGmlF,UAAY,GAAGtuF,IAAInJ,KAAKsS,EAAG/P,QAASo1F,IACxD,GAAII,EAAW7uC,MAAK,SAAU5oD,EAAGT,GAAK,OAAQ8kE,EAAWrkE,EAAGw3F,EAAYj4F,QAGtDyS,EAAGg2E,SACfjuC,EAAQv5C,MAAMooD,MAAK,SAAUlqC,GAAK,OAAOg5E,GAAoBh5E,EAAG+4E,MAChE19C,EAAQv5C,QAAUu5C,EAAQ0lC,UAAYiY,GAAoB39C,EAAQv5C,MAAOi3F,KAE3EjsE,GAAQxZ,EAAI,aAOtB,SAASolF,GAAaplF,EAAI+nC,EAASiyB,GACjC2rB,GAAoB3lF,EAAI+nC,EAASiyB,IAE7BnF,GAAQE,IACV7kD,YAAW,WACTy1E,GAAoB3lF,EAAI+nC,EAASiyB,KAChC,GAIP,SAAS2rB,GAAqB3lF,EAAI+nC,EAASiyB,GACzC,IAAIxrE,EAAQu5C,EAAQv5C,MAChBo3F,EAAa5lF,EAAGg2E,SACpB,IAAI4P,GAAep0F,MAAMD,QAAQ/C,GAAjC,CASA,IADA,IAAIgY,EAAUkQ,EACLnpB,EAAI,EAAGC,EAAIwS,EAAG/P,QAAQgC,OAAQ1E,EAAIC,EAAGD,IAE5C,GADAmpB,EAAS1W,EAAG/P,QAAQ1C,GAChBq4F,EACFp/E,EAAWqsD,EAAarkE,EAAO62F,GAAS3uE,KAAY,EAChDA,EAAOlQ,WAAaA,IACtBkQ,EAAOlQ,SAAWA,QAGpB,GAAI6rD,EAAWgzB,GAAS3uE,GAASloB,GAI/B,YAHIwR,EAAGyG,gBAAkBlZ,IACvByS,EAAGyG,cAAgBlZ,IAMtBq4F,IACH5lF,EAAGyG,eAAiB,IAIxB,SAASi/E,GAAqBl3F,EAAOyB,GACnC,OAAOA,EAAQ4lD,OAAM,SAAU7nD,GAAK,OAAQqkE,EAAWrkE,EAAGQ,MAG5D,SAAS62F,GAAU3uE,GACjB,MAAO,WAAYA,EACfA,EAAOyjE,OACPzjE,EAAOloB,MAGb,SAAS82F,GAAoBnnF,GAC3BA,EAAEnG,OAAOuiF,WAAY,EAGvB,SAASgL,GAAkBpnF,GAEpBA,EAAEnG,OAAOuiF,YACdp8E,EAAEnG,OAAOuiF,WAAY,EACrB/gE,GAAQrb,EAAEnG,OAAQ,UAGpB,SAASwhB,GAASxZ,EAAInO,GACpB,IAAIsM,EAAI/K,SAAS44E,YAAY,cAC7B7tE,EAAE0nF,UAAUh0F,GAAM,GAAM,GACxBmO,EAAG8lF,cAAc3nF,GAMnB,SAAS4nF,GAAYpuB,GACnB,OAAOA,EAAMd,mBAAuBc,EAAM9kD,MAAS8kD,EAAM9kD,KAAKksE,WAE1DpnB,EADAouB,GAAWpuB,EAAMd,kBAAkBkQ,QAIzC,IAuDIif,GAAqB,CACvBpc,MAAOsb,GACPpvE,KAzDS,CACT/mB,KAAM,SAAeiR,EAAImkD,EAAKwT,GAC5B,IAAInpE,EAAQ21D,EAAI31D,MAGZy3F,GADJtuB,EAAQouB,GAAWpuB,IACO9kD,MAAQ8kD,EAAM9kD,KAAKksE,WACzCmH,EAAkBlmF,EAAGmmF,mBACF,SAArBnmF,EAAG4U,MAAMC,QAAqB,GAAK7U,EAAG4U,MAAMC,QAC1CrmB,GAASy3F,GACXtuB,EAAM9kD,KAAKiD,MAAO,EAClB6oE,GAAMhnB,GAAO,WACX33D,EAAG4U,MAAMC,QAAUqxE,MAGrBlmF,EAAG4U,MAAMC,QAAUrmB,EAAQ03F,EAAkB,QAIjDnqC,OAAQ,SAAiB/7C,EAAImkD,EAAKwT,GAChC,IAAInpE,EAAQ21D,EAAI31D,OAIXA,IAHU21D,EAAIspB,YAInB9V,EAAQouB,GAAWpuB,IACO9kD,MAAQ8kD,EAAM9kD,KAAKksE,YAE3CpnB,EAAM9kD,KAAKiD,MAAO,EACdtnB,EACFmwF,GAAMhnB,GAAO,WACX33D,EAAG4U,MAAMC,QAAU7U,EAAGmmF,sBAGxBxF,GAAMhpB,GAAO,WACX33D,EAAG4U,MAAMC,QAAU,WAIvB7U,EAAG4U,MAAMC,QAAUrmB,EAAQwR,EAAGmmF,mBAAqB,SAIvDrsD,OAAQ,SACN95B,EACA+nC,EACA4vB,EACA4O,EACA8Q,GAEKA,IACHr3E,EAAG4U,MAAMC,QAAU7U,EAAGmmF,uBAYxBC,GAAkB,CACpBt4F,KAAMsP,OACNoiF,OAAQvjB,QACRnnD,IAAKmnD,QACLvtE,KAAM0O,OACNvL,KAAMuL,OACNi/E,WAAYj/E,OACZo/E,WAAYp/E,OACZk/E,aAAcl/E,OACdq/E,aAAcr/E,OACdm/E,iBAAkBn/E,OAClBs/E,iBAAkBt/E,OAClB6hF,YAAa7hF,OACb+hF,kBAAmB/hF,OACnB8hF,cAAe9hF,OACfsqB,SAAU,CAAC8kC,OAAQpvD,OAAQnP,SAK7B,SAASo4F,GAAc1uB,GACrB,IAAI2uB,EAAc3uB,GAASA,EAAMnB,iBACjC,OAAI8vB,GAAeA,EAAY1tF,KAAK3I,QAAQi6E,SACnCmc,GAAalb,GAAuBmb,EAAY/6E,WAEhDosD,EAIX,SAAS4uB,GAAuBrb,GAC9B,IAAIr4D,EAAO,GACP5iB,EAAUi7E,EAAKn6E,SAEnB,IAAK,IAAIjC,KAAOmB,EAAQ4rE,UACtBhpD,EAAK/jB,GAAOo8E,EAAKp8E,GAInB,IAAIs2E,EAAYn1E,EAAQo3E,iBACxB,IAAK,IAAI/M,KAAS8K,EAChBvyD,EAAK8+C,EAAS2I,IAAU8K,EAAU9K,GAEpC,OAAOznD,EAGT,SAAS02B,GAAap4C,EAAGq1F,GACvB,GAAI,iBAAiBtnF,KAAKsnF,EAAStkF,KACjC,OAAO/Q,EAAE,aAAc,CACrB8qB,MAAOuqE,EAAShwB,iBAAiBqF,YAiBvC,IAAI4qB,GAAgB,SAAU74F,GAAK,OAAOA,EAAEsU,KAAOk1D,GAAmBxpE,IAElE84F,GAAmB,SAAU74F,GAAK,MAAkB,SAAXA,EAAEC,MAE3C64F,GAAa,CACf74F,KAAM,aACNmuB,MAAOmqE,GACPlc,UAAU,EAEVz6E,OAAQ,SAAiB0B,GACvB,IAAI6zE,EAAS10E,KAETib,EAAWjb,KAAKoxE,OAAOvF,QAC3B,GAAK5wD,IAKLA,EAAWA,EAASzJ,OAAO2kF,KAEbx0F,OAAd,CAKI,EAQJ,IAAIvD,EAAO4B,KAAK5B,KAGZ,EASJ,IAAI83F,EAAWj7E,EAAS,GAIxB,GA7DJ,SAA8BosD,GAC5B,KAAQA,EAAQA,EAAMlnE,QACpB,GAAIknE,EAAM9kD,KAAKksE,WACb,OAAO,EA0DL6H,CAAoBt2F,KAAKC,QAC3B,OAAOi2F,EAKT,IAAIlvB,EAAQ+uB,GAAaG,GAEzB,IAAKlvB,EACH,OAAOkvB,EAGT,GAAIl2F,KAAKu2F,SACP,OAAOt9C,GAAYp4C,EAAGq1F,GAMxB,IAAI1nF,EAAK,gBAAmBxO,KAAS,KAAI,IACzCgnE,EAAMxoE,IAAmB,MAAbwoE,EAAMxoE,IACdwoE,EAAMN,UACJl4D,EAAK,UACLA,EAAKw4D,EAAMp1D,IACb+5B,EAAYq7B,EAAMxoE,KACmB,IAAlCsO,OAAOk6D,EAAMxoE,KAAKiF,QAAQ+K,GAAYw4D,EAAMxoE,IAAMgQ,EAAKw4D,EAAMxoE,IAC9DwoE,EAAMxoE,IAEZ,IAAI+jB,GAAQykD,EAAMzkD,OAASykD,EAAMzkD,KAAO,KAAKksE,WAAawH,GAAsBj2F,MAC5Ew2F,EAAcx2F,KAAKy2E,OACnBggB,EAAWV,GAAaS,GAQ5B,GAJIxvB,EAAMzkD,KAAKioD,YAAcxD,EAAMzkD,KAAKioD,WAAWlkB,KAAK8vC,MACtDpvB,EAAMzkD,KAAKiD,MAAO,GAIlBixE,GACAA,EAASl0E,OA7Ff,SAAsBykD,EAAOyvB,GAC3B,OAAOA,EAASj4F,MAAQwoE,EAAMxoE,KAAOi4F,EAAS7kF,MAAQo1D,EAAMp1D,IA6FvD8kF,CAAY1vB,EAAOyvB,KACnB3vB,GAAmB2vB,MAElBA,EAASlwB,oBAAqBkwB,EAASlwB,kBAAkBkQ,OAAO/P,WAClE,CAGA,IAAIgiB,EAAU+N,EAASl0E,KAAKksE,WAAannF,EAAO,GAAIib,GAEpD,GAAa,WAATnkB,EAOF,OALA4B,KAAKu2F,UAAW,EAChB1nB,GAAe6Z,EAAS,cAAc,WACpChU,EAAO6hB,UAAW,EAClB7hB,EAAOuC,kBAEFh+B,GAAYp4C,EAAGq1F,GACjB,GAAa,WAAT93F,EAAmB,CAC5B,GAAI0oE,GAAmBE,GACrB,OAAOwvB,EAET,IAAIG,EACA/F,EAAe,WAAc+F,KACjC9nB,GAAetsD,EAAM,aAAcquE,GACnC/hB,GAAetsD,EAAM,iBAAkBquE,GACvC/hB,GAAe6Z,EAAS,cAAc,SAAU2H,GAASsG,EAAetG,MAI5E,OAAO6F,KAMPvqE,GAAQrkB,EAAO,CACjBsK,IAAK9E,OACL8pF,UAAW9pF,QACVgpF,IAwIH,SAASe,GAAgBv5F,GAEnBA,EAAE2oE,IAAI6wB,SACRx5F,EAAE2oE,IAAI6wB,UAGJx5F,EAAE2oE,IAAIyoB,UACRpxF,EAAE2oE,IAAIyoB,WAIV,SAASqI,GAAgBz5F,GACvBA,EAAEilB,KAAKy0E,OAAS15F,EAAE2oE,IAAI5vC,wBAGxB,SAAS4gE,GAAkB35F,GACzB,IAAI45F,EAAS55F,EAAEilB,KAAK8U,IAChB2/D,EAAS15F,EAAEilB,KAAKy0E,OAChB3jC,EAAK6jC,EAAO3gE,KAAOygE,EAAOzgE,KAC1B+8B,EAAK4jC,EAAOjmF,IAAM+lF,EAAO/lF,IAC7B,GAAIoiD,GAAMC,EAAI,CACZh2D,EAAEilB,KAAK40E,OAAQ,EACf,IAAIn4F,EAAI1B,EAAE2oE,IAAI3hD,MACdtlB,EAAEw0C,UAAYx0C,EAAEo4F,gBAAkB,aAAe/jC,EAAK,MAAQC,EAAK,MACnEt0D,EAAEq4F,mBAAqB,aA9JpB1rE,GAAMvtB,KAkKb,IAAIk5F,GAAqB,CACvBjB,WAAYA,GACZkB,gBAlKoB,CACpB5rE,MAAOA,GAEP6rE,YAAa,WACX,IAAI9iB,EAAS10E,KAETyrD,EAASzrD,KAAK4hF,QAClB5hF,KAAK4hF,QAAU,SAAUva,EAAOiO,GAC9B,IAAIyM,EAAwB7G,GAAkBxG,GAE9CA,EAAOsN,UACLtN,EAAO+B,OACP/B,EAAO+iB,MACP,GACA,GAEF/iB,EAAO+B,OAAS/B,EAAO+iB,KACvB1V,IACAt2B,EAAOruD,KAAKs3E,EAAQrN,EAAOiO,KAI/Bn2E,OAAQ,SAAiB0B,GAQvB,IAPA,IAAI+Q,EAAM5R,KAAK4R,KAAO5R,KAAKC,OAAOsiB,KAAK3Q,KAAO,OAC1CrL,EAAM5I,OAAOY,OAAO,MACpBm5F,EAAe13F,KAAK03F,aAAe13F,KAAKib,SACxC08E,EAAc33F,KAAKoxE,OAAOvF,SAAW,GACrC5wD,EAAWjb,KAAKib,SAAW,GAC3B28E,EAAiB3B,GAAsBj2F,MAElC/C,EAAI,EAAGA,EAAI06F,EAAYh2F,OAAQ1E,IAAK,CAC3C,IAAIK,EAAIq6F,EAAY16F,GACpB,GAAIK,EAAEsU,IACJ,GAAa,MAATtU,EAAEkB,KAAoD,IAArCsO,OAAOxP,EAAEkB,KAAKiF,QAAQ,WACzCwX,EAASzY,KAAKlF,GACdiJ,EAAIjJ,EAAEkB,KAAOlB,GACXA,EAAEilB,OAASjlB,EAAEilB,KAAO,KAAKksE,WAAamJ,QAS9C,GAAIF,EAAc,CAGhB,IAFA,IAAID,EAAO,GACPI,EAAU,GACLpW,EAAM,EAAGA,EAAMiW,EAAa/1F,OAAQ8/E,IAAO,CAClD,IAAIqW,EAAMJ,EAAajW,GACvBqW,EAAIv1E,KAAKksE,WAAamJ,EACtBE,EAAIv1E,KAAK8U,IAAMygE,EAAI7xB,IAAI5vC,wBACnB9vB,EAAIuxF,EAAIt5F,KACVi5F,EAAKj1F,KAAKs1F,GAEVD,EAAQr1F,KAAKs1F,GAGjB93F,KAAKy3F,KAAO52F,EAAE+Q,EAAK,KAAM6lF,GACzBz3F,KAAK63F,QAAUA,EAGjB,OAAOh3F,EAAE+Q,EAAK,KAAMqJ,IAGtBgoE,QAAS,WACP,IAAIhoE,EAAWjb,KAAK03F,aAChBd,EAAY52F,KAAK42F,YAAe52F,KAAKxC,MAAQ,KAAO,QACnDyd,EAAStZ,QAAW3B,KAAK+3F,QAAQ98E,EAAS,GAAGgrD,IAAK2wB,KAMvD37E,EAASkwB,QAAQ0rD,IACjB57E,EAASkwB,QAAQ4rD,IACjB97E,EAASkwB,QAAQ8rD,IAKjBj3F,KAAKg4F,QAAUl1F,SAASwiB,KAAKuO,aAE7B5Y,EAASkwB,SAAQ,SAAU7tC,GACzB,GAAIA,EAAEilB,KAAK40E,MAAO,CAChB,IAAIznF,EAAKpS,EAAE2oE,IACPjnE,EAAI0Q,EAAG4U,MACX0oE,GAAmBt9E,EAAIknF,GACvB53F,EAAEw0C,UAAYx0C,EAAEo4F,gBAAkBp4F,EAAEq4F,mBAAqB,GACzD3nF,EAAGwB,iBAAiBq7E,GAAoB78E,EAAGonF,QAAU,SAASxqD,EAAIz+B,GAC5DA,GAAKA,EAAEnG,SAAWgI,GAGjB7B,IAAK,aAAae,KAAKf,EAAEoqF,gBAC5BvoF,EAAGmR,oBAAoB0rE,GAAoBjgD,GAC3C58B,EAAGonF,QAAU,KACb5J,GAAsBx9E,EAAIknF,YAOpCnrD,QAAS,CACPssD,QAAS,SAAkBroF,EAAIknF,GAE7B,IAAKvK,GACH,OAAO,EAGT,GAAIrsF,KAAKk4F,SACP,OAAOl4F,KAAKk4F,SAOd,IAAIzwF,EAAQiI,EAAGwW,YACXxW,EAAGm5E,oBACLn5E,EAAGm5E,mBAAmB19C,SAAQ,SAAUw9C,GAAOprD,GAAY91B,EAAOkhF,MAEpEzrD,GAASz1B,EAAOmvF,GAChBnvF,EAAM6c,MAAMC,QAAU,OACtBvkB,KAAK6hF,IAAIz8E,YAAYqC,GACrB,IAAI6kE,EAAO+gB,GAAkB5lF,GAE7B,OADAzH,KAAK6hF,IAAIv8E,YAAYmC,GACbzH,KAAKk4F,SAAW5rB,EAAK2hB,iBAyCnC7O,GAAIzc,OAAOe,YAr3FO,SAAU9xD,EAAKrQ,EAAM0R,GACrC,MACY,UAATA,GAAoB8wE,GAAYnyE,IAAkB,WAATrQ,GAChC,aAAT0R,GAA+B,WAARrB,GACd,YAATqB,GAA8B,UAARrB,GACb,UAATqB,GAA4B,UAARrB,GAi3FzBwtE,GAAIzc,OAAOU,cAAgBA,GAC3B+b,GAAIzc,OAAOW,eAAiBA,GAC5B8b,GAAIzc,OAAOa,gBAxtFX,SAA0B5xD,GACxB,OAAIyzE,GAAMzzE,GACD,MAIG,SAARA,EACK,YADT,GAmtFFwtE,GAAIzc,OAAOY,iBA7sFX,SAA2B3xD,GAEzB,IAAKqyD,EACH,OAAO,EAET,GAAIZ,GAAczxD,GAChB,OAAO,EAIT,GAFAA,EAAMA,EAAIvI,cAEsB,MAA5Bi8E,GAAoB1zE,GACtB,OAAO0zE,GAAoB1zE,GAE7B,IAAIlC,EAAK5M,SAASiC,cAAc6M,GAChC,OAAIA,EAAInO,QAAQ,MAAQ,EAEd6hF,GAAoB1zE,GAC1BlC,EAAG7J,cAAgB5C,OAAOk1F,oBAC1BzoF,EAAG7J,cAAgB5C,OAAOm1F,YAGpB9S,GAAoB1zE,GAAO,qBAAqBhD,KAAKc,EAAG/L,aA2rFpE2D,EAAO83E,GAAIz/E,QAAQ6qE,WAAYkrB,IAC/BpuF,EAAO83E,GAAIz/E,QAAQw/E,WAAYmY,IAG/BlY,GAAIvgF,UAAUmjF,UAAY/d,EAAY8sB,GAAQ3oF,EAG9Cg3E,GAAIvgF,UAAUm3E,OAAS,SACrBtmE,EACA4lE,GAGA,OA30IF,SACE5L,EACAh6D,EACA4lE,GAyBA,IAAI+iB,EA2CJ,OAlEA3uB,EAAGmY,IAAMnyE,EACJg6D,EAAGjpE,SAAStB,SACfuqE,EAAGjpE,SAAStB,OAAS+nE,IAmBvBkQ,GAAS1N,EAAI,eAsBX2uB,EAAkB,WAChB3uB,EAAGkY,QAAQlY,EAAG0Y,UAAW9M,IAO7B,IAAI8G,GAAQ1S,EAAI2uB,EAAiBjwF,EAAM,CACrC8nB,OAAQ,WACFw5C,EAAGyN,aAAezN,EAAG6L,cACvB6B,GAAS1N,EAAI,mBAGhB,GACH4L,GAAY,EAIK,MAAb5L,EAAGzpE,SACLypE,EAAGyN,YAAa,EAChBC,GAAS1N,EAAI,YAERA,EAowIA4uB,CAAet4F,KADtB0P,EAAKA,GAAMu0D,EA3rFb,SAAgBv0D,GACd,GAAkB,iBAAPA,EAAiB,CAC1B,IAAIwG,EAAWpT,SAASy1F,cAAc7oF,GACtC,OAAKwG,GAIIpT,SAASiC,cAAc,OAIhC,OAAO2K,EAgrFc8oF,CAAM9oF,QAAMxN,EACHozE,IAK9BrR,GACFrkD,YAAW,WACL+iD,EAAOI,UACLA,IACFA,GAASmZ,KAAK,OAAQkD,MAsBzB,GAKU,S,qDC9yQf,IAAIqZ,EAGJA,EAAI,WACH,OAAOz4F,KADJ,GAIJ,IAECy4F,EAAIA,GAAK,IAAI12F,SAAS,cAAb,GACR,MAAO8L,GAEc,iBAAX5K,SAAqBw1F,EAAIx1F,QAOrCjG,EAAOD,QAAU07F,G,cCbjB,IAAIhoC,EAAoC,oBAAjBC,aAA+BxvD,MAAQwvD,aAM9D,SAASnyD,IACP,IAAI4yD,EAAM,IAAIV,EAAU,GAExB,OADA1Y,EAASoZ,GACFA,EAQT,SAASpZ,EAASoZ,GAOhB,OANAA,EAAI,GAAK,EACTA,EAAI,GAAK,EACTA,EAAI,GAAK,EACTA,EAAI,GAAK,EACTA,EAAI,GAAK,EACTA,EAAI,GAAK,EACFA,EAST,SAAS5pD,EAAK4pD,EAAK9zD,GAOjB,OANA8zD,EAAI,GAAK9zD,EAAE,GACX8zD,EAAI,GAAK9zD,EAAE,GACX8zD,EAAI,GAAK9zD,EAAE,GACX8zD,EAAI,GAAK9zD,EAAE,GACX8zD,EAAI,GAAK9zD,EAAE,GACX8zD,EAAI,GAAK9zD,EAAE,GACJ8zD,EAkITp0D,EAAQwB,OAASA,EACjBxB,EAAQg7C,SAAWA,EACnBh7C,EAAQwK,KAAOA,EACfxK,EAAQu0D,IA3HR,SAAaH,EAAKunC,EAAIC,GAIpB,IAAIC,EAAOF,EAAG,GAAKC,EAAG,GAAKD,EAAG,GAAKC,EAAG,GAClCE,EAAOH,EAAG,GAAKC,EAAG,GAAKD,EAAG,GAAKC,EAAG,GAClCG,EAAOJ,EAAG,GAAKC,EAAG,GAAKD,EAAG,GAAKC,EAAG,GAClCI,EAAOL,EAAG,GAAKC,EAAG,GAAKD,EAAG,GAAKC,EAAG,GAClCK,EAAON,EAAG,GAAKC,EAAG,GAAKD,EAAG,GAAKC,EAAG,GAAKD,EAAG,GAC1CO,EAAOP,EAAG,GAAKC,EAAG,GAAKD,EAAG,GAAKC,EAAG,GAAKD,EAAG,GAO9C,OANAvnC,EAAI,GAAKynC,EACTznC,EAAI,GAAK0nC,EACT1nC,EAAI,GAAK2nC,EACT3nC,EAAI,GAAK4nC,EACT5nC,EAAI,GAAK6nC,EACT7nC,EAAI,GAAK8nC,EACF9nC,GA4GTp0D,EAAQq2D,UAlGR,SAAmBjC,EAAKnmD,EAAGoR,GAOzB,OANA+0C,EAAI,GAAKnmD,EAAE,GACXmmD,EAAI,GAAKnmD,EAAE,GACXmmD,EAAI,GAAKnmD,EAAE,GACXmmD,EAAI,GAAKnmD,EAAE,GACXmmD,EAAI,GAAKnmD,EAAE,GAAKoR,EAAE,GAClB+0C,EAAI,GAAKnmD,EAAE,GAAKoR,EAAE,GACX+0C,GA4FTp0D,EAAQw2D,OAlFR,SAAgBpC,EAAKnmD,EAAGmpD,GACtB,IAAI+kC,EAAKluF,EAAE,GACPmuF,EAAKnuF,EAAE,GACPouF,EAAMpuF,EAAE,GACRquF,EAAKruF,EAAE,GACPsuF,EAAKtuF,EAAE,GACPuuF,EAAMvuF,EAAE,GACRwuF,EAAK1xF,KAAK0tD,IAAIrB,GACdxvB,EAAK78B,KAAK8vB,IAAIu8B,GAOlB,OANAhD,EAAI,GAAK+nC,EAAKv0D,EAAK00D,EAAKG,EACxBroC,EAAI,IAAM+nC,EAAKM,EAAKH,EAAK10D,EACzBwsB,EAAI,GAAKgoC,EAAKx0D,EAAK20D,EAAKE,EACxBroC,EAAI,IAAMgoC,EAAKK,EAAK70D,EAAK20D,EACzBnoC,EAAI,GAAKxsB,EAAKy0D,EAAMI,EAAKD,EACzBpoC,EAAI,GAAKxsB,EAAK40D,EAAMC,EAAKJ,EAClBjoC,GAoETp0D,EAAQ8nB,MA1DR,SAAessC,EAAKnmD,EAAGoR,GACrB,IAAIq9E,EAAKr9E,EAAE,GACPs9E,EAAKt9E,EAAE,GAOX,OANA+0C,EAAI,GAAKnmD,EAAE,GAAKyuF,EAChBtoC,EAAI,GAAKnmD,EAAE,GAAK0uF,EAChBvoC,EAAI,GAAKnmD,EAAE,GAAKyuF,EAChBtoC,EAAI,GAAKnmD,EAAE,GAAK0uF,EAChBvoC,EAAI,GAAKnmD,EAAE,GAAKyuF,EAChBtoC,EAAI,GAAKnmD,EAAE,GAAK0uF,EACTvoC,GAkDTp0D,EAAQ8L,OAzCR,SAAgBsoD,EAAKnmD,GACnB,IAAIkuF,EAAKluF,EAAE,GACPmuF,EAAKnuF,EAAE,GACPouF,EAAMpuF,EAAE,GACRquF,EAAKruF,EAAE,GACPsuF,EAAKtuF,EAAE,GACPuuF,EAAMvuF,EAAE,GACR6xD,EAAMq8B,EAAKI,EAAKD,EAAKF,EAEzB,OAAKt8B,GAILA,EAAM,EAAMA,EACZ1L,EAAI,GAAKmoC,EAAKz8B,EACd1L,EAAI,IAAMkoC,EAAKx8B,EACf1L,EAAI,IAAMgoC,EAAKt8B,EACf1L,EAAI,GAAK+nC,EAAKr8B,EACd1L,EAAI,IAAMgoC,EAAKI,EAAMD,EAAKF,GAAOv8B,EACjC1L,EAAI,IAAMkoC,EAAKD,EAAMF,EAAKK,GAAO18B,EAC1B1L,GAVE,MAgCXp0D,EAAQ0K,MAdR,SAAeuD,GACb,IAAIC,EAAI1M,IAER,OADAgJ,EAAK0D,EAAGD,GACDC,I,gBC7KT,IAAIyjC,EAAc,EAAQ,KAEtB8oB,EAAe,EAAQ,IAEvB7oB,EAAS,EAAQ,IAEjBgrD,EAAc,EAAQ,KAQ1B,SAASC,EAAOxgE,GACdsV,EAAYtxC,KAAK4C,KAAMo5B,GAGzBwgE,EAAO/6F,UAAY,CACjBgH,YAAa+zF,EACbr4F,KAAM,QACNguC,MAAO,SAAUC,EAAKC,GACpB,IAAInrB,EAAQtkB,KAAKskB,MACbhgB,EAAMggB,EAAM7N,MAEhB6N,EAAM7lB,KAAK+wC,EAAKxvC,KAAMyvC,GACtB,IAAIh5B,EAAQzW,KAAK65F,OAASF,EAAYG,oBAAoBx1F,EAAKtE,KAAK65F,OAAQ75F,KAAMA,KAAKwmC,QAEvF,GAAK/vB,GAAUkjF,EAAYI,aAAatjF,GAAxC,CAWA,IAAI87B,EAAIjuB,EAAMiuB,GAAK,EACfC,EAAIluB,EAAMkuB,GAAK,EACfnhB,EAAQ/M,EAAM+M,MACdoC,EAASnP,EAAMmP,OACfumE,EAASvjF,EAAM4a,MAAQ5a,EAAMgd,OAejC,GAba,MAATpC,GAA2B,MAAVoC,EAEnBpC,EAAQoC,EAASumE,EACE,MAAVvmE,GAA2B,MAATpC,EAC3BoC,EAASpC,EAAQ2oE,EACC,MAAT3oE,GAA2B,MAAVoC,IAC1BpC,EAAQ5a,EAAM4a,MACdoC,EAAShd,EAAMgd,QAIjBzzB,KAAKmwC,aAAaX,GAEdlrB,EAAM21E,QAAU31E,EAAM41E,QAAS,CACjC,IAAIxmC,EAAKpvC,EAAMovC,IAAM,EACjBC,EAAKrvC,EAAMqvC,IAAM,EACrBnkB,EAAI2qD,UAAU1jF,EAAOi9C,EAAIC,EAAIrvC,EAAM21E,OAAQ31E,EAAM41E,QAAS3nD,EAAGC,EAAGnhB,EAAOoC,QAClE,GAAInP,EAAMovC,IAAMpvC,EAAMqvC,GAAI,CAC/B,IAEIsmC,EAAS5oE,GAFTqiC,EAAKpvC,EAAMovC,IAGXwmC,EAAUzmE,GAFVkgC,EAAKrvC,EAAMqvC,IAGfnkB,EAAI2qD,UAAU1jF,EAAOi9C,EAAIC,EAAIsmC,EAAQC,EAAS3nD,EAAGC,EAAGnhB,EAAOoC,QAE3D+b,EAAI2qD,UAAU1jF,EAAO87B,EAAGC,EAAGnhB,EAAOoC,GAIlB,MAAdnP,EAAMtf,OAERhF,KAAK0xC,iBAAiBlC,GACtBxvC,KAAK2xC,aAAanC,EAAKxvC,KAAKqwC,sBAGhCA,gBAAiB,WACf,IAAI/rB,EAAQtkB,KAAKskB,MAMjB,OAJKtkB,KAAK+xC,QACR/xC,KAAK+xC,MAAQ,IAAIylB,EAAalzC,EAAMiuB,GAAK,EAAGjuB,EAAMkuB,GAAK,EAAGluB,EAAM+M,OAAS,EAAG/M,EAAMmP,QAAU,IAGvFzzB,KAAK+xC,QAGhBpD,EAAO3B,SAAS4sD,EAAQlrD,GACxB,IAAIhoB,EAAWkzE,EACf58F,EAAOD,QAAU2pB,G,gBC3FjB,IAAI0zE,EAAQ,EAAQ,KAEhBjjC,EAAO,EAAQ,IAEfoE,EAAO,EAAQ,KAEf/D,EAAe,EAAQ,IAIvB6iC,EAFU,EAAQ,KAEJC,iBAYdC,EAAM,CACRC,EAAG,EACHC,EAAG,EACHC,EAAG,EACHC,EAAG,EACHC,EAAG,EACHC,EAAG,EAEHC,EAAG,GAWD9/C,EAAM,GACNjmB,EAAM,GACNgmE,EAAO,GACPC,EAAO,GACP1jC,EAAUxvD,KAAKkzC,IACfuc,EAAUzvD,KAAKitB,IACfkmE,EAAUnzF,KAAK8vB,IACfsjE,EAAUpzF,KAAK0tD,IACf2lC,EAAWrzF,KAAK2rC,KAChB2nD,EAAUtzF,KAAKinC,IACfssD,EAAwC,oBAAjB3qC,aAMvB9hB,EAAY,SAAU0sD,GACxBt7F,KAAKu7F,WAAcD,EAEft7F,KAAKu7F,YAKPv7F,KAAKuiB,KAAO,IAGdviB,KAAKosC,KAAO,MAQdwC,EAAU/vC,UAAY,CACpBgH,YAAa+oC,EACb4sD,IAAK,EACLC,IAAK,EACLC,IAAK,EACLC,IAAK,EAELC,IAAK,EACLC,IAAK,EACLC,KAAM,EACNC,UAAW,KACXC,YAAa,EACbC,SAAU,EACVC,SAAU,EAKVlrD,SAAU,SAAU0iB,EAAIC,EAAItkB,GAE1BA,EAAyBA,GAA0B,EACnDrvC,KAAK47F,IAAMR,EAAQ/rD,EAAyBgrD,EAAM3mC,IAAO,EACzD1zD,KAAK67F,IAAMT,EAAQ/rD,EAAyBgrD,EAAM1mC,IAAO,GAE3D5mB,WAAY,WACV,OAAO/sC,KAAKosC,MAOd6E,UAAW,SAAUzB,GAcnB,OAbAxvC,KAAKosC,KAAOoD,EACZA,GAAOA,EAAIyB,YACXzB,IAAQxvC,KAAKq6F,IAAM7qD,EAAI6qD,KAEnBr6F,KAAKu7F,YACPv7F,KAAK87F,KAAO,GAGV97F,KAAK+7F,YACP/7F,KAAK+7F,UAAY,KACjB/7F,KAAKg8F,YAAc,GAGdh8F,MAQTm8F,OAAQ,SAAU5pD,EAAGC,GAWnB,OAVAxyC,KAAKo8F,QAAQ7B,EAAIC,EAAGjoD,EAAGC,GACvBxyC,KAAKosC,MAAQpsC,KAAKosC,KAAK+vD,OAAO5pD,EAAGC,GAKjCxyC,KAAK07F,IAAMnpD,EACXvyC,KAAK27F,IAAMnpD,EACXxyC,KAAKw7F,IAAMjpD,EACXvyC,KAAKy7F,IAAMjpD,EACJxyC,MAQTq8F,OAAQ,SAAU9pD,EAAGC,GACnB,IAAI8pD,EAAalB,EAAQ7oD,EAAIvyC,KAAKw7F,KAAOx7F,KAAK47F,KAAOR,EAAQ5oD,EAAIxyC,KAAKy7F,KAAOz7F,KAAK67F,KAC/E77F,KAAK87F,KAAO,EAYf,OAXA97F,KAAKo8F,QAAQ7B,EAAIE,EAAGloD,EAAGC,GAEnBxyC,KAAKosC,MAAQkwD,IACft8F,KAAKu8F,aAAev8F,KAAKw8F,cAAcjqD,EAAGC,GAAKxyC,KAAKosC,KAAKiwD,OAAO9pD,EAAGC,IAGjE8pD,IACFt8F,KAAKw7F,IAAMjpD,EACXvyC,KAAKy7F,IAAMjpD,GAGNxyC,MAYTy8F,cAAe,SAAU5lC,EAAIN,EAAIO,EAAIC,EAAI2lC,EAAIC,GAS3C,OARA38F,KAAKo8F,QAAQ7B,EAAIG,EAAG7jC,EAAIN,EAAIO,EAAIC,EAAI2lC,EAAIC,GAEpC38F,KAAKosC,OACPpsC,KAAKu8F,aAAev8F,KAAK48F,gBAAgB/lC,EAAIN,EAAIO,EAAIC,EAAI2lC,EAAIC,GAAM38F,KAAKosC,KAAKqwD,cAAc5lC,EAAIN,EAAIO,EAAIC,EAAI2lC,EAAIC,IAGjH38F,KAAKw7F,IAAMkB,EACX18F,KAAKy7F,IAAMkB,EACJ38F,MAUT68F,iBAAkB,SAAUhmC,EAAIN,EAAIO,EAAIC,GAStC,OARA/2D,KAAKo8F,QAAQ7B,EAAII,EAAG9jC,EAAIN,EAAIO,EAAIC,GAE5B/2D,KAAKosC,OACPpsC,KAAKu8F,aAAev8F,KAAK88F,mBAAmBjmC,EAAIN,EAAIO,EAAIC,GAAM/2D,KAAKosC,KAAKywD,iBAAiBhmC,EAAIN,EAAIO,EAAIC,IAGvG/2D,KAAKw7F,IAAM1kC,EACX92D,KAAKy7F,IAAM1kC,EACJ/2D,MAYT+8F,IAAK,SAAUC,EAAIC,EAAIl/F,EAAGm/F,EAAYC,EAAUC,GAK9C,OAJAp9F,KAAKo8F,QAAQ7B,EAAIK,EAAGoC,EAAIC,EAAIl/F,EAAGA,EAAGm/F,EAAYC,EAAWD,EAAY,EAAGE,EAAgB,EAAI,GAC5Fp9F,KAAKosC,MAAQpsC,KAAKosC,KAAK2wD,IAAIC,EAAIC,EAAIl/F,EAAGm/F,EAAYC,EAAUC,GAC5Dp9F,KAAKw7F,IAAMP,EAAQkC,GAAYp/F,EAAIi/F,EACnCh9F,KAAKy7F,IAAMP,EAAQiC,GAAYp/F,EAAIk/F,EAC5Bj9F,MAGTq9F,MAAO,SAAUxmC,EAAIN,EAAIO,EAAIC,EAAIumC,GAK/B,OAJIt9F,KAAKosC,MACPpsC,KAAKosC,KAAKixD,MAAMxmC,EAAIN,EAAIO,EAAIC,EAAIumC,GAG3Bt9F,MAGT6oC,KAAM,SAAU0J,EAAGC,EAAGzvC,EAAGlC,GAGvB,OAFAb,KAAKosC,MAAQpsC,KAAKosC,KAAKvD,KAAK0J,EAAGC,EAAGzvC,EAAGlC,GACrCb,KAAKo8F,QAAQ7B,EAAIO,EAAGvoD,EAAGC,EAAGzvC,EAAGlC,GACtBb,MAMTu9F,UAAW,WACTv9F,KAAKo8F,QAAQ7B,EAAIM,GACjB,IAAIrrD,EAAMxvC,KAAKosC,KACXoxD,EAAKx9F,KAAK07F,IACV+B,EAAKz9F,KAAK27F,IASd,OAPInsD,IACFxvC,KAAKu8F,cAAgBv8F,KAAKw8F,cAAcgB,EAAIC,GAC5CjuD,EAAI+tD,aAGNv9F,KAAKw7F,IAAMgC,EACXx9F,KAAKy7F,IAAMgC,EACJz9F,MAST4vC,KAAM,SAAUJ,GACdA,GAAOA,EAAII,OACX5vC,KAAK09F,YAOP7tD,OAAQ,SAAUL,GAChBA,GAAOA,EAAIK,SACX7vC,KAAK09F,YAQP5sD,YAAa,SAAUH,GACrB,GAAIA,aAAoBzvC,MAAO,CAC7BlB,KAAK+7F,UAAYprD,EACjB3wC,KAAKi8F,SAAW,EAGhB,IAFA,IAAI0B,EAAc,EAET1gG,EAAI,EAAGA,EAAI0zC,EAAShvC,OAAQ1E,IACnC0gG,GAAehtD,EAAS1zC,GAG1B+C,KAAKk8F,SAAWyB,EAGlB,OAAO39F,MAQTkxC,kBAAmB,SAAU/I,GAE3B,OADAnoC,KAAKg8F,YAAc7zD,EACZnoC,MAOTiH,IAAK,WACH,OAAOjH,KAAK87F,MAMd8B,QAAS,SAAUr7E,GACjB,IAAItb,EAAMsb,EAAK5gB,OAET3B,KAAKuiB,MAAQviB,KAAKuiB,KAAK5gB,SAAWsF,IAAQo0F,IAC9Cr7F,KAAKuiB,KAAO,IAAImuC,aAAazpD,IAG/B,IAAK,IAAIhK,EAAI,EAAGA,EAAIgK,EAAKhK,IACvB+C,KAAKuiB,KAAKtlB,GAAKslB,EAAKtlB,GAGtB+C,KAAK87F,KAAO70F,GAOd42F,WAAY,SAAU3uD,GACdA,aAAgBhuC,QACpBguC,EAAO,CAACA,IAOV,IAJA,IAAIjoC,EAAMioC,EAAKvtC,OACXm8F,EAAa,EACb31D,EAASnoC,KAAK87F,KAET7+F,EAAI,EAAGA,EAAIgK,EAAKhK,IACvB6gG,GAAc5uD,EAAKjyC,GAAGgK,MAGpBo0F,GAAiBr7F,KAAKuiB,gBAAgBmuC,eACxC1wD,KAAKuiB,KAAO,IAAImuC,aAAavoB,EAAS21D,IAGxC,IAAS7gG,EAAI,EAAGA,EAAIgK,EAAKhK,IAGvB,IAFA,IAAI8gG,EAAiB7uD,EAAKjyC,GAAGslB,KAEpBmwC,EAAI,EAAGA,EAAIqrC,EAAep8F,OAAQ+wD,IACzC1yD,KAAKuiB,KAAK4lB,KAAY41D,EAAerrC,GAIzC1yD,KAAK87F,KAAO3zD,GAOdi0D,QAAS,SAAU4B,GACjB,GAAKh+F,KAAKu7F,UAAV,CAIA,IAAIh5E,EAAOviB,KAAKuiB,KAEZviB,KAAK87F,KAAOr1F,UAAU9E,OAAS4gB,EAAK5gB,SAGtC3B,KAAKi+F,cAEL17E,EAAOviB,KAAKuiB,MAGd,IAAK,IAAItlB,EAAI,EAAGA,EAAIwJ,UAAU9E,OAAQ1E,IACpCslB,EAAKviB,KAAK87F,QAAUr1F,UAAUxJ,GAGhC+C,KAAKk+F,SAAWF,IAElBC,YAAa,WAEX,KAAMj+F,KAAKuiB,gBAAgBrhB,OAAQ,CAGjC,IAFA,IAAI45C,EAAU,GAEL79C,EAAI,EAAGA,EAAI+C,KAAK87F,KAAM7+F,IAC7B69C,EAAQ79C,GAAK+C,KAAKuiB,KAAKtlB,GAGzB+C,KAAKuiB,KAAOu4B,IAShByhD,WAAY,WACV,OAAOv8F,KAAK+7F,WAEdS,cAAe,SAAU3lC,EAAIN,GAC3B,IAWI4nC,EAEA9oF,EAbA+oF,EAAUp+F,KAAKk8F,SACf/zD,EAASnoC,KAAKg8F,YACdrrD,EAAW3wC,KAAK+7F,UAChBvsD,EAAMxvC,KAAKosC,KACXoxD,EAAKx9F,KAAKw7F,IACViC,EAAKz9F,KAAKy7F,IACVpoC,EAAKwD,EAAK2mC,EACVlqC,EAAKiD,EAAKknC,EACVzsC,EAAOmqC,EAAS9nC,EAAKA,EAAKC,EAAKA,GAC/B/gB,EAAIirD,EACJhrD,EAAIirD,EAEJY,EAAQ1tD,EAAShvC,OAcrB,IATIwmC,EAAS,IAEXA,EAASi2D,EAAUj2D,GAIrBoK,IADApK,GAAUi2D,IARV/qC,GAAMrC,GAUNxe,GAAKrK,GATLmrB,GAAMtC,GAWCqC,EAAK,GAAK9gB,GAAKskB,GAAMxD,EAAK,GAAK9gB,GAAKskB,GAAa,IAAPxD,IAAaC,EAAK,GAAK9gB,GAAK+jB,GAAMjD,EAAK,GAAK9gB,GAAK+jB,IAGhGhkB,GAAK8gB,GADL8qC,EAAOxtD,EADPt7B,EAAMrV,KAAKi8F,WAGXzpD,GAAK8gB,EAAK6qC,EACVn+F,KAAKi8F,UAAY5mF,EAAM,GAAKgpF,EAExBhrC,EAAK,GAAK9gB,EAAIirD,GAAMnqC,EAAK,GAAK9gB,EAAIirD,GAAMlqC,EAAK,GAAK9gB,EAAIirD,GAAMnqC,EAAK,GAAK9gB,EAAIirD,GAI9EjuD,EAAIn6B,EAAM,EAAI,SAAW,UAAUg+C,GAAM,EAAIiE,EAAQ/kB,EAAGskB,GAAMU,EAAQhlB,EAAGskB,GAAKvD,GAAM,EAAIgE,EAAQ9kB,EAAG+jB,GAAMgB,EAAQ/kB,EAAG+jB,IAItHlD,EAAK9gB,EAAIskB,EACTvD,EAAK9gB,EAAI+jB,EACTv2D,KAAKg8F,aAAeb,EAAS9nC,EAAKA,EAAKC,EAAKA,IAG9CspC,gBAAiB,SAAU/lC,EAAIN,EAAIO,EAAIC,EAAI2lC,EAAIC,GAC7C,IAMIx+F,EACAk1D,EACAC,EAKA/gB,EACAC,EAdA4rD,EAAUp+F,KAAKk8F,SACf/zD,EAASnoC,KAAKg8F,YACdrrD,EAAW3wC,KAAK+7F,UAChBvsD,EAAMxvC,KAAKosC,KACXoxD,EAAKx9F,KAAKw7F,IACViC,EAAKz9F,KAAKy7F,IAIV6C,EAAUlE,EAAMkE,QAChBC,EAAY,EACZlpF,EAAMrV,KAAKi8F,SACXoC,EAAQ1tD,EAAShvC,OAGjB68F,EAAS,EASb,IAPIr2D,EAAS,IAEXA,EAASi2D,EAAUj2D,GAGrBA,GAAUi2D,EAELjgG,EAAI,EAAGA,EAAI,EAAGA,GAAK,GACtBk1D,EAAKirC,EAAQd,EAAI3mC,EAAIC,EAAI4lC,EAAIv+F,EAAI,IAAOmgG,EAAQd,EAAI3mC,EAAIC,EAAI4lC,EAAIv+F,GAChEm1D,EAAKgrC,EAAQb,EAAIlnC,EAAIQ,EAAI4lC,EAAIx+F,EAAI,IAAOmgG,EAAQb,EAAIlnC,EAAIQ,EAAI4lC,EAAIx+F,GAChEogG,GAAapD,EAAS9nC,EAAKA,EAAKC,EAAKA,GAIvC,KAAOj+C,EAAMgpF,MACXG,GAAU7tD,EAASt7B,IAEN8yB,GAHK9yB,KAUpB,IAFAlX,GAAKqgG,EAASr2D,GAAUo2D,EAEjBpgG,GAAK,GACVo0C,EAAI+rD,EAAQd,EAAI3mC,EAAIC,EAAI4lC,EAAIv+F,GAC5Bq0C,EAAI8rD,EAAQb,EAAIlnC,EAAIQ,EAAI4lC,EAAIx+F,GAG5BkX,EAAM,EAAIm6B,EAAI2sD,OAAO5pD,EAAGC,GAAKhD,EAAI6sD,OAAO9pD,EAAGC,GAC3Cr0C,GAAKwyC,EAASt7B,GAAOkpF,EACrBlpF,GAAOA,EAAM,GAAKgpF,EAIpBhpF,EAAM,GAAM,GAAKm6B,EAAI6sD,OAAOK,EAAIC,GAChCtpC,EAAKqpC,EAAKnqD,EACV+gB,EAAKqpC,EAAKnqD,EACVxyC,KAAKg8F,aAAeb,EAAS9nC,EAAKA,EAAKC,EAAKA,IAE9CwpC,mBAAoB,SAAUjmC,EAAIN,EAAIO,EAAIC,GAExC,IAAI2lC,EAAK5lC,EACL6lC,EAAK5lC,EACTD,GAAMA,EAAK,EAAID,GAAM,EACrBE,GAAMA,EAAK,EAAIR,GAAM,EACrBM,GAAM72D,KAAKw7F,IAAM,EAAI3kC,GAAM,EAC3BN,GAAMv2D,KAAKy7F,IAAM,EAAIllC,GAAM,EAE3Bv2D,KAAK48F,gBAAgB/lC,EAAIN,EAAIO,EAAIC,EAAI2lC,EAAIC,IAO3Ce,SAAU,WACR,IAAIn7E,EAAOviB,KAAKuiB,KAEZA,aAAgBrhB,QAClBqhB,EAAK5gB,OAAS3B,KAAK87F,KAEfT,IACFr7F,KAAKuiB,KAAO,IAAImuC,aAAanuC,MAQnC8tB,gBAAiB,WACf2K,EAAI,GAAKA,EAAI,GAAK+/C,EAAK,GAAKA,EAAK,GAAK7+B,OAAOuiC,UAC7C1pE,EAAI,GAAKA,EAAI,GAAKimE,EAAK,GAAKA,EAAK,IAAM9+B,OAAOuiC,UAO9C,IANA,IAAIl8E,EAAOviB,KAAKuiB,KACZm8E,EAAK,EACLC,EAAK,EACLnB,EAAK,EACLC,EAAK,EAEAxgG,EAAI,EAAGA,EAAIslB,EAAK5gB,QAAS,CAChC,IAAIq8F,EAAMz7E,EAAKtlB,KAaf,OAXU,IAANA,IAOFugG,EAFAkB,EAAKn8E,EAAKtlB,GAGVwgG,EAFAkB,EAAKp8E,EAAKtlB,EAAI,IAKR+gG,GACN,KAAKzD,EAAIC,EAKPkE,EAFAlB,EAAKj7E,EAAKtlB,KAGV0hG,EAFAlB,EAAKl7E,EAAKtlB,KAGV89F,EAAK,GAAKyC,EACVzC,EAAK,GAAK0C,EACVzC,EAAK,GAAKwC,EACVxC,EAAK,GAAKyC,EACV,MAEF,KAAKlD,EAAIE,EACPl/B,EAAKqjC,SAASF,EAAIC,EAAIp8E,EAAKtlB,GAAIslB,EAAKtlB,EAAI,GAAI89F,EAAMC,GAClD0D,EAAKn8E,EAAKtlB,KACV0hG,EAAKp8E,EAAKtlB,KACV,MAEF,KAAKs9F,EAAIG,EACPn/B,EAAKsjC,UAAUH,EAAIC,EAAIp8E,EAAKtlB,KAAMslB,EAAKtlB,KAAMslB,EAAKtlB,KAAMslB,EAAKtlB,KAAMslB,EAAKtlB,GAAIslB,EAAKtlB,EAAI,GAAI89F,EAAMC,GAC/F0D,EAAKn8E,EAAKtlB,KACV0hG,EAAKp8E,EAAKtlB,KACV,MAEF,KAAKs9F,EAAII,EACPp/B,EAAKujC,cAAcJ,EAAIC,EAAIp8E,EAAKtlB,KAAMslB,EAAKtlB,KAAMslB,EAAKtlB,GAAIslB,EAAKtlB,EAAI,GAAI89F,EAAMC,GAC7E0D,EAAKn8E,EAAKtlB,KACV0hG,EAAKp8E,EAAKtlB,KACV,MAEF,KAAKs9F,EAAIK,EAEP,IAAIoC,EAAKz6E,EAAKtlB,KACVggG,EAAK16E,EAAKtlB,KACV8hG,EAAKx8E,EAAKtlB,KACV+hG,EAAKz8E,EAAKtlB,KACVigG,EAAa36E,EAAKtlB,KAClBkgG,EAAW56E,EAAKtlB,KAAOigG,EAE3BjgG,GAAK,EACL,IAAImgG,EAAgB,EAAI76E,EAAKtlB,KAEnB,IAANA,IAGFugG,EAAKvC,EAAQiC,GAAc6B,EAAK/B,EAChCS,EAAKvC,EAAQgC,GAAc8B,EAAK/B,GAGlC1hC,EAAK0jC,QAAQjC,EAAIC,EAAI8B,EAAIC,EAAI9B,EAAYC,EAAUC,EAAerC,EAAMC,GACxE0D,EAAKzD,EAAQkC,GAAY4B,EAAK/B,EAC9B2B,EAAKzD,EAAQiC,GAAY6B,EAAK/B,EAC9B,MAEF,KAAK1C,EAAIO,EACP0C,EAAKkB,EAAKn8E,EAAKtlB,KACfwgG,EAAKkB,EAAKp8E,EAAKtlB,KACf,IAAIo0B,EAAQ9O,EAAKtlB,KACbw2B,EAASlR,EAAKtlB,KAElBs+D,EAAKqjC,SAASpB,EAAIC,EAAID,EAAKnsE,EAAOosE,EAAKhqE,EAAQsnE,EAAMC,GACrD,MAEF,KAAKT,EAAIM,EACP6D,EAAKlB,EACLmB,EAAKlB,EAKTtmC,EAAKnc,IAAIA,EAAKA,EAAK+/C,GACnB5jC,EAAKpiC,IAAIA,EAAKA,EAAKimE,GAQrB,OAJU,IAAN/9F,IACF+9C,EAAI,GAAKA,EAAI,GAAKjmB,EAAI,GAAKA,EAAI,GAAK,GAG/B,IAAIyiC,EAAaxc,EAAI,GAAIA,EAAI,GAAIjmB,EAAI,GAAKimB,EAAI,GAAIjmB,EAAI,GAAKimB,EAAI,KAQxE3J,YAAa,SAAU7B,GAYrB,IAXA,IACIguD,EACAC,EACAiB,EACAC,EACApsD,EACAC,EANAj1C,EAAIyC,KAAKuiB,KAOT28E,EAAKl/F,KAAK47F,IACVuD,EAAKn/F,KAAK67F,IACV50F,EAAMjH,KAAK87F,KAEN7+F,EAAI,EAAGA,EAAIgK,GAAM,CACxB,IAAI+2F,EAAMzgG,EAAEN,KAaZ,OAXU,IAANA,IAOFugG,EAFAkB,EAAKnhG,EAAEN,GAGPwgG,EAFAkB,EAAKphG,EAAEN,EAAI,IAKL+gG,GACN,KAAKzD,EAAIC,EACPgD,EAAKkB,EAAKnhG,EAAEN,KACZwgG,EAAKkB,EAAKphG,EAAEN,KACZuyC,EAAI2sD,OAAOuC,EAAIC,GACf,MAEF,KAAKpE,EAAIE,EACPloD,EAAIh1C,EAAEN,KACNu1C,EAAIj1C,EAAEN,MAEFm+F,EAAQ7oD,EAAImsD,GAAMQ,GAAM9D,EAAQ5oD,EAAImsD,GAAMQ,GAAMliG,IAAMgK,EAAM,KAC9DuoC,EAAI6sD,OAAO9pD,EAAGC,GACdksD,EAAKnsD,EACLosD,EAAKnsD,GAGP,MAEF,KAAK+nD,EAAIG,EACPlrD,EAAIitD,cAAcl/F,EAAEN,KAAMM,EAAEN,KAAMM,EAAEN,KAAMM,EAAEN,KAAMM,EAAEN,KAAMM,EAAEN,MAC5DyhG,EAAKnhG,EAAEN,EAAI,GACX0hG,EAAKphG,EAAEN,EAAI,GACX,MAEF,KAAKs9F,EAAII,EACPnrD,EAAIqtD,iBAAiBt/F,EAAEN,KAAMM,EAAEN,KAAMM,EAAEN,KAAMM,EAAEN,MAC/CyhG,EAAKnhG,EAAEN,EAAI,GACX0hG,EAAKphG,EAAEN,EAAI,GACX,MAEF,KAAKs9F,EAAIK,EACP,IAAIoC,EAAKz/F,EAAEN,KACPggG,EAAK1/F,EAAEN,KACP8hG,EAAKxhG,EAAEN,KACP+hG,EAAKzhG,EAAEN,KACPi3D,EAAQ32D,EAAEN,KACVmiG,EAAS7hG,EAAEN,KACXoiG,EAAM9hG,EAAEN,KACRqiG,EAAK/hG,EAAEN,KACPc,EAAIghG,EAAKC,EAAKD,EAAKC,EACnBO,EAASR,EAAKC,EAAK,EAAID,EAAKC,EAC5BQ,EAAST,EAAKC,EAAKA,EAAKD,EAAK,EAE7B5B,EAAWjpC,EAAQkrC,EADPt3F,KAAKinC,IAAIgwD,EAAKC,GAAM,MAIlCxvD,EAAI4jB,UAAU4pC,EAAIC,GAClBztD,EAAI+jB,OAAO8rC,GACX7vD,EAAI3qB,MAAM06E,EAAQC,GAClBhwD,EAAIutD,IAAI,EAAG,EAAGh/F,EAAGm2D,EAAOipC,EAAU,EAAImC,GACtC9vD,EAAI3qB,MAAM,EAAI06E,EAAQ,EAAIC,GAC1BhwD,EAAI+jB,QAAQ8rC,GACZ7vD,EAAI4jB,WAAW4pC,GAAKC,IAEpBztD,EAAIutD,IAAIC,EAAIC,EAAIl/F,EAAGm2D,EAAOipC,EAAU,EAAImC,GAGhC,IAANriG,IAGFugG,EAAKvC,EAAQ/mC,GAAS6qC,EAAK/B,EAC3BS,EAAKvC,EAAQhnC,GAAS8qC,EAAK/B,GAG7ByB,EAAKzD,EAAQkC,GAAY4B,EAAK/B,EAC9B2B,EAAKzD,EAAQiC,GAAY6B,EAAK/B,EAC9B,MAEF,KAAK1C,EAAIO,EACP0C,EAAKkB,EAAKnhG,EAAEN,GACZwgG,EAAKkB,EAAKphG,EAAEN,EAAI,GAChBuyC,EAAI3G,KAAKtrC,EAAEN,KAAMM,EAAEN,KAAMM,EAAEN,KAAMM,EAAEN,MACnC,MAEF,KAAKs9F,EAAIM,EACPrrD,EAAI+tD,YACJmB,EAAKlB,EACLmB,EAAKlB,MAKf7uD,EAAU2rD,IAAMA,EAChB,IAAI7zE,EAAWkoB,EACf5xC,EAAOD,QAAU2pB,G,gBCjwBjB,IAAI+4E,EAAU,EAAQ,IAElBC,EAAWD,EAAQlhG,OACnBohG,EAAeF,EAAQvuC,WAOvB0uC,EAAU93F,KAAK+3F,IACf1E,EAAWrzF,KAAK2rC,KAGhBqsD,EAAa3E,EAAS,GAGtB4E,EAAML,IAENM,EAAMN,IAENO,EAAMP,IAEV,SAASQ,EAAar7F,GACpB,OAAOA,GAZK,MAYaA,EAZb,KAed,SAASs7F,EAAgBt7F,GACvB,OAAOA,EAhBK,MAgBYA,GAhBZ,KA8Bd,SAASy5F,EAAQ8B,EAAI9rC,EAAIC,EAAI8rC,EAAIliG,GAC/B,IAAImiG,EAAO,EAAIniG,EACf,OAAOmiG,EAAOA,GAAQA,EAAOF,EAAK,EAAIjiG,EAAIm2D,GAAMn2D,EAAIA,GAAKA,EAAIkiG,EAAK,EAAIC,EAAO/rC,GA8R/E,SAASgsC,EAAYH,EAAI9rC,EAAIC,EAAIp2D,GAC/B,IAAImiG,EAAO,EAAIniG,EACf,OAAOmiG,GAAQA,EAAOF,EAAK,EAAIjiG,EAAIm2D,GAAMn2D,EAAIA,EAAIo2D,EA4LnDx3D,EAAQuhG,QAAUA,EAClBvhG,EAAQyjG,kBA/cR,SAA2BJ,EAAI9rC,EAAIC,EAAI8rC,EAAIliG,GACzC,IAAImiG,EAAO,EAAIniG,EACf,OAAO,KAAOm2D,EAAK8rC,GAAME,EAAO,GAAK/rC,EAAKD,GAAMn2D,GAAKmiG,GAAQD,EAAK9rC,GAAMp2D,EAAIA,IA8c9EpB,EAAQ0jG,YA/bR,SAAqBL,EAAI9rC,EAAIC,EAAI8rC,EAAIx7F,EAAK67F,GAExC,IAAI11F,EAAIq1F,EAAK,GAAK/rC,EAAKC,GAAM6rC,EACzBn1F,EAAI,GAAKspD,EAAU,EAALD,EAAS8rC,GACvB9iG,EAAI,GAAKg3D,EAAK8rC,GACd7iG,EAAI6iG,EAAKv7F,EACT+1F,EAAI3vF,EAAIA,EAAI,EAAID,EAAI1N,EACpBqjG,EAAI11F,EAAI3N,EAAI,EAAI0N,EAAIzN,EACpBm9F,EAAIp9F,EAAIA,EAAI,EAAI2N,EAAI1N,EACpBmB,EAAI,EAER,GAAIwhG,EAAatF,IAAMsF,EAAaS,GAAI,CACtC,GAAIT,EAAaj1F,GACfy1F,EAAM,GAAK,OAEPE,GAAMtjG,EAAI2N,IAEJ,GAAK21F,GAAM,IACnBF,EAAMhiG,KAAOkiG,OAGZ,CACL,IAAIC,EAAOF,EAAIA,EAAI,EAAI/F,EAAIF,EAE3B,GAAIwF,EAAaW,GAAO,CACtB,IAAIC,EAAIH,EAAI/F,EAGRmG,GAAMD,EAAI,GAFVF,GAAM31F,EAAID,EAAI81F,IAIR,GAAKF,GAAM,IACnBF,EAAMhiG,KAAOkiG,GAGXG,GAAM,GAAKA,GAAM,IACnBL,EAAMhiG,KAAOqiG,QAEV,GAAIF,EAAO,EAAG,CACnB,IAAIG,EAAW7F,EAAS0F,GACpBI,EAAKrG,EAAI3vF,EAAI,IAAMD,IAAM21F,EAAIK,GAC7BE,EAAKtG,EAAI3vF,EAAI,IAAMD,IAAM21F,EAAIK,IAc7BJ,IAAO31F,IAXTg2F,EADEA,EAAK,GACDrB,GAASqB,EAvGP,EAAI,GAyGPrB,EAAQqB,EAzGL,EAAI,KA6GZC,EADEA,EAAK,GACDtB,GAASsB,EA7GP,EAAI,GA+GPtB,EAAQsB,EA/GL,EAAI,OAkHe,EAAIl2F,KAEvB,GAAK41F,GAAM,IACnBF,EAAMhiG,KAAOkiG,OAEV,CACL,IAAIO,GAAK,EAAIvG,EAAI3vF,EAAI,EAAID,EAAI21F,IAAM,EAAIxF,EAASP,EAAIA,EAAIA,IACpD1mC,EAAQpsD,KAAKs5F,KAAKD,GAAK,EACvBE,EAAQlG,EAASP,GACjB/oF,EAAM/J,KAAK8vB,IAAIs8B,GACf0sC,IAAO31F,EAAI,EAAIo2F,EAAQxvF,IAAQ,EAAI7G,GAEnCs2F,GADAP,IAAO91F,EAAIo2F,GAASxvF,EAAMiuF,EAAah4F,KAAK0tD,IAAItB,MAAY,EAAIlpD,KACzDC,EAAIo2F,GAASxvF,EAAMiuF,EAAah4F,KAAK0tD,IAAItB,MAAY,EAAIlpD,IAEhE41F,GAAM,GAAKA,GAAM,IACnBF,EAAMhiG,KAAOkiG,GAGXG,GAAM,GAAKA,GAAM,IACnBL,EAAMhiG,KAAOqiG,GAGXO,GAAM,GAAKA,GAAM,IACnBZ,EAAMhiG,KAAO4iG,IAKnB,OAAO5iG,GA8WT3B,EAAQwkG,aAhWR,SAAsBnB,EAAI9rC,EAAIC,EAAI8rC,EAAImB,GACpC,IAAIv2F,EAAI,EAAIspD,EAAK,GAAKD,EAAK,EAAI8rC,EAC3Bp1F,EAAI,EAAIspD,EAAK,EAAI+rC,EAAK,EAAID,EAAK,EAAI7rC,EACnCj3D,EAAI,EAAIg3D,EAAK,EAAI8rC,EACjB1hG,EAAI,EAER,GAAIwhG,EAAal1F,GAAI,CACnB,GAAIm1F,EAAgBl1F,IACd21F,GAAMtjG,EAAI2N,IAEJ,GAAK21F,GAAM,IACnBY,EAAQ9iG,KAAOkiG,OAGd,CACL,IAAIC,EAAO51F,EAAIA,EAAI,EAAID,EAAI1N,EAE3B,GAAI4iG,EAAaW,GACfW,EAAQ,IAAMv2F,GAAK,EAAID,QAClB,GAAI61F,EAAO,EAAG,CACnB,IACID,EADAI,EAAW7F,EAAS0F,GAEpBE,IAAO91F,EAAI+1F,IAAa,EAAIh2F,IAD5B41F,IAAO31F,EAAI+1F,IAAa,EAAIh2F,KAGtB,GAAK41F,GAAM,IACnBY,EAAQ9iG,KAAOkiG,GAGbG,GAAM,GAAKA,GAAM,IACnBS,EAAQ9iG,KAAOqiG,IAKrB,OAAOriG,GA+TT3B,EAAQ0kG,eAjTR,SAAwBrB,EAAI9rC,EAAIC,EAAI8rC,EAAIliG,EAAGgzD,GACzC,IAAIuwC,GAAOptC,EAAK8rC,GAAMjiG,EAAIiiG,EACtBuB,GAAOptC,EAAKD,GAAMn2D,EAAIm2D,EACtBstC,GAAOvB,EAAK9rC,GAAMp2D,EAAIo2D,EACtBstC,GAAQF,EAAMD,GAAOvjG,EAAIujG,EACzBI,GAAQF,EAAMD,GAAOxjG,EAAIwjG,EACzBI,GAASD,EAAOD,GAAQ1jG,EAAI0jG,EAEhC1wC,EAAI,GAAKivC,EACTjvC,EAAI,GAAKuwC,EACTvwC,EAAI,GAAK0wC,EACT1wC,EAAI,GAAK4wC,EAET5wC,EAAI,GAAK4wC,EACT5wC,EAAI,GAAK2wC,EACT3wC,EAAI,GAAKywC,EACTzwC,EAAI,GAAKkvC,GAkSXtjG,EAAQilG,kBA9QR,SAA2BxE,EAAIC,EAAI5mC,EAAIN,EAAIO,EAAIC,EAAI2lC,EAAIC,EAAIpqD,EAAGC,EAAG2e,GAE/D,IAAIhzD,EAGAgd,EACAxN,EACAs0F,EACAC,EALA7pE,EAAW,KACX96B,EAAIghD,IAKRwhD,EAAI,GAAKxtD,EACTwtD,EAAI,GAAKvtD,EAGT,IAAK,IAAIohC,EAAK,EAAGA,EAAK,EAAGA,GAAM,IAC7BosB,EAAI,GAAK1B,EAAQd,EAAI3mC,EAAIC,EAAI4lC,EAAI9oB,GACjCosB,EAAI,GAAK1B,EAAQb,EAAIlnC,EAAIQ,EAAI4lC,EAAI/oB,IACjCquB,EAAKtC,EAAaI,EAAKC,IAEdziG,IACPY,EAAIy1E,EACJr2E,EAAI0kG,GAIR1kG,EAAIghD,IAEJ,IAAK,IAAIthD,EAAI,EAAGA,EAAI,MACdo7B,EA7Qc,MA4QIp7B,IAKtBke,EAAOhd,EAAIk6B,EACX1qB,EAAOxP,EAAIk6B,EAEX2nE,EAAI,GAAK1B,EAAQd,EAAI3mC,EAAIC,EAAI4lC,EAAIvhF,GACjC6kF,EAAI,GAAK1B,EAAQb,EAAIlnC,EAAIQ,EAAI4lC,EAAIxhF,GACjC8mF,EAAKtC,EAAaK,EAAKD,GAEnB5kF,GAAQ,GAAK8mF,EAAK1kG,GACpBY,EAAIgd,EACJ5d,EAAI0kG,IAGJhC,EAAI,GAAK3B,EAAQd,EAAI3mC,EAAIC,EAAI4lC,EAAI/uF,GACjCsyF,EAAI,GAAK3B,EAAQb,EAAIlnC,EAAIQ,EAAI4lC,EAAIhvF,GACjCu0F,EAAKvC,EAAaM,EAAKF,GAEnBpyF,GAAQ,GAAKu0F,EAAK3kG,GACpBY,EAAIwP,EACJpQ,EAAI2kG,GAEJ7pE,GAAY,IAYlB,OANI84B,IACFA,EAAI,GAAKmtC,EAAQd,EAAI3mC,EAAIC,EAAI4lC,EAAIv+F,GACjCgzD,EAAI,GAAKmtC,EAAQb,EAAIlnC,EAAIQ,EAAI4lC,EAAIx+F,IAI5Bg9F,EAAS59F,IAgNlBR,EAAQwjG,YAAcA,EACtBxjG,EAAQolG,sBAvLR,SAA+B/B,EAAI9rC,EAAIC,EAAIp2D,GACzC,OAAO,IAAM,EAAIA,IAAMm2D,EAAK8rC,GAAMjiG,GAAKo2D,EAAKD,KAuL9Cv3D,EAAQqlG,gBA1KR,SAAyBhC,EAAI9rC,EAAIC,EAAI1vD,EAAK67F,GACxC,IAAI11F,EAAIo1F,EAAK,EAAI9rC,EAAKC,EAClBtpD,EAAI,GAAKqpD,EAAK8rC,GACd9iG,EAAI8iG,EAAKv7F,EACTnG,EAAI,EAER,GAAIwhG,EAAal1F,GAAI,CACnB,GAAIm1F,EAAgBl1F,IACd21F,GAAMtjG,EAAI2N,IAEJ,GAAK21F,GAAM,IACnBF,EAAMhiG,KAAOkiG,OAGZ,CACL,IAAIC,EAAO51F,EAAIA,EAAI,EAAID,EAAI1N,EAE3B,GAAI4iG,EAAaW,IACXD,GAAM31F,GAAK,EAAID,KAET,GAAK41F,GAAM,IACnBF,EAAMhiG,KAAOkiG,QAEV,GAAIC,EAAO,EAAG,CACnB,IACID,EADAI,EAAW7F,EAAS0F,GAEpBE,IAAO91F,EAAI+1F,IAAa,EAAIh2F,IAD5B41F,IAAO31F,EAAI+1F,IAAa,EAAIh2F,KAGtB,GAAK41F,GAAM,IACnBF,EAAMhiG,KAAOkiG,GAGXG,GAAM,GAAKA,GAAM,IACnBL,EAAMhiG,KAAOqiG,IAKnB,OAAOriG,GAqIT3B,EAAQslG,kBAzHR,SAA2BjC,EAAI9rC,EAAIC,GACjC,IAAI+tC,EAAUlC,EAAK7rC,EAAK,EAAID,EAE5B,OAAgB,IAAZguC,EAEK,IAEClC,EAAK9rC,GAAMguC,GAmHvBvlG,EAAQwlG,mBArGR,SAA4BnC,EAAI9rC,EAAIC,EAAIp2D,EAAGgzD,GACzC,IAAIuwC,GAAOptC,EAAK8rC,GAAMjiG,EAAIiiG,EACtBuB,GAAOptC,EAAKD,GAAMn2D,EAAIm2D,EACtButC,GAAQF,EAAMD,GAAOvjG,EAAIujG,EAE7BvwC,EAAI,GAAKivC,EACTjvC,EAAI,GAAKuwC,EACTvwC,EAAI,GAAK0wC,EAET1wC,EAAI,GAAK0wC,EACT1wC,EAAI,GAAKwwC,EACTxwC,EAAI,GAAKoD,GA2FXx3D,EAAQylG,sBAzER,SAA+BhF,EAAIC,EAAI5mC,EAAIN,EAAIO,EAAIC,EAAIxkB,EAAGC,EAAG2e,GAE3D,IAAIhzD,EACAk6B,EAAW,KACX96B,EAAIghD,IACRwhD,EAAI,GAAKxtD,EACTwtD,EAAI,GAAKvtD,EAGT,IAAK,IAAIohC,EAAK,EAAGA,EAAK,EAAGA,GAAM,IAAM,CACnCosB,EAAI,GAAKO,EAAY/C,EAAI3mC,EAAIC,EAAI8c,GACjCosB,EAAI,GAAKO,EAAY9C,EAAIlnC,EAAIQ,EAAI6c,IAC7BquB,EAAKtC,EAAaI,EAAKC,IAElBziG,IACPY,EAAIy1E,EACJr2E,EAAI0kG,GAIR1kG,EAAIghD,IAEJ,IAAK,IAAIthD,EAAI,EAAGA,EAAI,MACdo7B,EApdc,MAmdIp7B,IAAK,CAK3B,IAAIke,EAAOhd,EAAIk6B,EACX1qB,EAAOxP,EAAIk6B,EAEf2nE,EAAI,GAAKO,EAAY/C,EAAI3mC,EAAIC,EAAI37C,GACjC6kF,EAAI,GAAKO,EAAY9C,EAAIlnC,EAAIQ,EAAI57C,GACjC,IAAI8mF,EAAKtC,EAAaK,EAAKD,GAE3B,GAAI5kF,GAAQ,GAAK8mF,EAAK1kG,EACpBY,EAAIgd,EACJ5d,EAAI0kG,MACC,CAELhC,EAAI,GAAKM,EAAY/C,EAAI3mC,EAAIC,EAAInpD,GACjCsyF,EAAI,GAAKM,EAAY9C,EAAIlnC,EAAIQ,EAAIppD,GACjC,IAAIu0F,EAAKvC,EAAaM,EAAKF,GAEvBpyF,GAAQ,GAAKu0F,EAAK3kG,GACpBY,EAAIwP,EACJpQ,EAAI2kG,GAEJ7pE,GAAY,IAYlB,OANI84B,IACFA,EAAI,GAAKovC,EAAY/C,EAAI3mC,EAAIC,EAAI34D,GACjCgzD,EAAI,GAAKovC,EAAY9C,EAAIlnC,EAAIQ,EAAI54D,IAI5Bg9F,EAAS59F,K,gBCrgBlB,IAAImxC,EAAc,EAAQ,KAEtBC,EAAS,EAAQ,IAEjB8zD,EAAc,EAAQ,KAEtBC,EAAa,EAAQ,KAIrBC,EAFY,EAAQ,KAEQA,gBAQ5BC,EAAO,SAAUxpE,GAEnBsV,EAAYtxC,KAAK4C,KAAMo5B,IAGzBwpE,EAAK/jG,UAAY,CACfgH,YAAa+8F,EACbrhG,KAAM,OACNguC,MAAO,SAAUC,EAAKC,GACpB,IAAInrB,EAAQtkB,KAAKskB,MAEjBtkB,KAAKowC,SAAWsyD,EAAWG,mBAAmBv+E,GAAO,GAErDA,EAAMsrB,KAAOtrB,EAAMurB,OAASvrB,EAAMw+E,WAAax+E,EAAMy+E,YAAcz+E,EAAM0+E,cAAgB1+E,EAAM2+E,cAAgB,KAC/G,IAAIj+F,EAAOsf,EAAMtf,KAET,MAARA,IAAiBA,GAAQ,IAKpB09F,EAAWQ,aAAal+F,EAAMsf,IAOnCtkB,KAAKmwC,aAAaX,GAClBkzD,EAAWS,WAAWnjG,KAAMwvC,EAAKxqC,EAAMsf,EAAO,KAAMmrB,GACpDzvC,KAAK0xC,iBAAiBlC,IANpBA,EAAI4zD,eAAiBT,EAAgBU,MAQzChzD,gBAAiB,WACf,IAAI/rB,EAAQtkB,KAAKskB,MAIjB,GAFAtkB,KAAKowC,SAAWsyD,EAAWG,mBAAmBv+E,GAAO,IAEhDtkB,KAAK+xC,MAAO,CACf,IAAI/sC,EAAOsf,EAAMtf,KACT,MAARA,EAAeA,GAAQ,GAAKA,EAAO,GACnC,IAAI6jC,EAAO45D,EAAYpyD,gBAAgB/rB,EAAMtf,KAAO,GAAIsf,EAAMg/E,KAAMh/E,EAAMi/E,UAAWj/E,EAAMk/E,kBAAmBl/E,EAAMm/E,YAAan/E,EAAMo/E,eAAgBp/E,EAAMq/E,MAI7J,GAHA96D,EAAK0J,GAAKjuB,EAAMiuB,GAAK,EACrB1J,EAAK2J,GAAKluB,EAAMkuB,GAAK,EAEjBkwD,EAAWkB,UAAUt/E,EAAMu/E,WAAYv/E,EAAMw/E,iBAAkB,CACjE,IAAI/gG,EAAIuhB,EAAMw/E,gBACdj7D,EAAK0J,GAAKxvC,EAAI,EACd8lC,EAAK2J,GAAKzvC,EAAI,EACd8lC,EAAKxX,OAAStuB,EACd8lC,EAAKpV,QAAU1wB,EAGjB/C,KAAK+xC,MAAQlJ,EAGf,OAAO7oC,KAAK+xC,QAGhBpD,EAAO3B,SAAS41D,EAAMl0D,GACtB,IAAIhoB,EAAWk8E,EACf5lG,EAAOD,QAAU2pB,G,6BC7EjB,IAAI+rC,EAAmBzyD,MAAQA,KAAKyyD,kBAAqB90D,OAAOY,OAAS,SAAUb,EAAGL,EAAGq1D,EAAGC,QAC7EzwD,IAAPywD,IAAkBA,EAAKD,GAC3B/0D,OAAOC,eAAeF,EAAGi1D,EAAI,CAAE90D,YAAY,EAAMC,IAAK,WAAa,OAAOT,EAAEq1D,OAC3E,SAAUh1D,EAAGL,EAAGq1D,EAAGC,QACTzwD,IAAPywD,IAAkBA,EAAKD,GAC3Bh1D,EAAEi1D,GAAMt1D,EAAEq1D,KAEVqxC,EAAgB/jG,MAAQA,KAAK+jG,cAAiB,SAAS1mG,EAAGN,GAC1D,IAAK,IAAIgC,KAAK1B,EAAa,YAAN0B,GAAoBpB,OAAOkB,UAAUC,eAAe1B,KAAKL,EAASgC,IAAI0zD,EAAgB11D,EAASM,EAAG0B,IAE3HpB,OAAOC,eAAeb,EAAS,aAAc,CAAEmB,OAAO,IACtD6lG,EAAa,EAAQ,KAAYhnG,GACjCgnG,EAAa,EAAQ,IAAYhnG,GACjCgnG,EAAa,EAAQ,IAAWhnG,GAChCgnG,EAAa,EAAQ,KAAchnG,GACnCgnG,EAAa,EAAQ,KAAgBhnG,GACrCgnG,EAAa,EAAQ,KAAWhnG,GAChCgnG,EAAa,EAAQ,KAAYhnG,GACjCgnG,EAAa,EAAQ,KAAehnG,I,6BClBpC,IACQq1D,EADJC,EAAaryD,MAAQA,KAAKqyD,YACtBD,EAAgB,SAAU70D,EAAG0N,GAI7B,OAHAmnD,EAAgBz0D,OAAO20D,gBAClB,CAAEC,UAAW,cAAgBrxD,OAAS,SAAU3D,EAAG0N,GAAK1N,EAAEg1D,UAAYtnD,IACvE,SAAU1N,EAAG0N,GAAK,IAAK,IAAIlM,KAAKkM,EAAOtN,OAAOkB,UAAUC,eAAe1B,KAAK6N,EAAGlM,KAAIxB,EAAEwB,GAAKkM,EAAElM,MAC3ExB,EAAG0N,IAErB,SAAU1N,EAAG0N,GAChB,GAAiB,mBAANA,GAA0B,OAANA,EAC3B,MAAM,IAAImU,UAAU,uBAAyBtS,OAAO7B,GAAK,iCAE7D,SAASunD,IAAOxyD,KAAK6F,YAActI,EADnC60D,EAAc70D,EAAG0N,GAEjB1N,EAAEsB,UAAkB,OAANoM,EAAatN,OAAOY,OAAO0M,IAAMunD,EAAG3zD,UAAYoM,EAAEpM,UAAW,IAAI2zD,KAGnFC,EAAmBzyD,MAAQA,KAAKyyD,kBAAqB90D,OAAOY,OAAS,SAAUb,EAAGL,EAAGq1D,EAAGC,QAC7EzwD,IAAPywD,IAAkBA,EAAKD,GAC3B/0D,OAAOC,eAAeF,EAAGi1D,EAAI,CAAE90D,YAAY,EAAMC,IAAK,WAAa,OAAOT,EAAEq1D,OAC3E,SAAUh1D,EAAGL,EAAGq1D,EAAGC,QACTzwD,IAAPywD,IAAkBA,EAAKD,GAC3Bh1D,EAAEi1D,GAAMt1D,EAAEq1D,KAEVE,EAAsB5yD,MAAQA,KAAK4yD,qBAAwBj1D,OAAOY,OAAS,SAAUb,EAAG0e,GACxFze,OAAOC,eAAeF,EAAG,UAAW,CAAEG,YAAY,EAAMK,MAAOke,KAC9D,SAAS1e,EAAG0e,GACb1e,EAAW,QAAI0e,IAEfy2C,EAAgB7yD,MAAQA,KAAK6yD,cAAiB,SAAUC,GACxD,GAAIA,GAAOA,EAAIz0D,WAAY,OAAOy0D,EAClC,IAAI3xD,EAAS,GACb,GAAW,MAAP2xD,EAAa,IAAK,IAAIJ,KAAKI,EAAe,YAANJ,GAAmB/0D,OAAOkB,UAAUC,eAAe1B,KAAK01D,EAAKJ,IAAID,EAAgBtxD,EAAQ2xD,EAAKJ,GAEtI,OADAE,EAAmBzxD,EAAQ2xD,GACpB3xD,GAEXxD,OAAOC,eAAeb,EAAS,aAAc,CAAEmB,OAAO,IACtDnB,EAAQ0+D,eAAY,EACpB,IAAIzI,EAAOH,EAAa,EAAQ,MAC5BI,EAAU,EAAQ,KAClB+wC,EAAS,EAAQ,IACjBzpC,EAAU,EAAQ,IAElBkB,EAA2B,SAAUvI,GAErC,SAASuI,EAAUlpB,EAAGC,EAAGnhB,EAAOoC,GAC5B,IAAI0/B,EAAQD,EAAO91D,KAAK4C,OAASA,KAKjC,OAJAmzD,EAAM5gB,EAAS,MAALA,EAAY,EAAIA,EAC1B4gB,EAAM3gB,EAAS,MAALA,EAAY,EAAIA,EAC1B2gB,EAAM9hC,MAAiB,MAATA,EAAgB,EAAIA,EAClC8hC,EAAM1/B,OAAmB,MAAVA,EAAiB,EAAIA,EAC7B0/B,EAwkBX,OA/kBAd,EAAUoJ,EAAWvI,GASrBv1D,OAAOC,eAAe69D,EAAU58D,UAAWb,OAAOC,YAAa,CAC3DH,IAAK,WACD,OAAO29D,EAAUx9D,aAErBJ,YAAY,EACZwkB,cAAc,IAElB1kB,OAAOC,eAAe69D,EAAU58D,UAAW,OAAQ,CAC/Cf,IAAK,WACD,OAAOkC,KAAKuyC,GAEhB10C,YAAY,EACZwkB,cAAc,IAElB1kB,OAAOC,eAAe69D,EAAU58D,UAAW,MAAO,CAC9Cf,IAAK,WACD,OAAOkC,KAAKwyC,GAEhB30C,YAAY,EACZwkB,cAAc,IAElB1kB,OAAOC,eAAe69D,EAAU58D,UAAW,QAAS,CAChDf,IAAK,WACD,OAAOkC,KAAKuyC,EAAIvyC,KAAKqxB,OAEzBxzB,YAAY,EACZwkB,cAAc,IAElB1kB,OAAOC,eAAe69D,EAAU58D,UAAW,SAAU,CACjDf,IAAK,WACD,OAAOkC,KAAKwyC,EAAIxyC,KAAKyzB,QAEzB51B,YAAY,EACZwkB,cAAc,IAElB1kB,OAAOC,eAAe69D,EAAU58D,UAAW,SAAU,CACjDf,IAAK,WACD,OAAO,IAAIy8D,EAAQxH,MAAM/yD,KAAKuyC,EAAGvyC,KAAKwyC,IAE1C30C,YAAY,EACZwkB,cAAc,IAElB1kB,OAAOC,eAAe69D,EAAU58D,UAAW,UAAW,CAClDf,IAAK,WACD,OAAO,IAAIy8D,EAAQxH,MAAM/yD,KAAKuyC,EAAGvyC,KAAKwyC,IAE1C30C,YAAY,EACZwkB,cAAc,IAElB1kB,OAAOC,eAAe69D,EAAU58D,UAAW,YAAa,CACpDf,IAAK,WACD,OAAO,IAAIy8D,EAAQxH,MAAM/yD,KAAKuyC,EAAIvyC,KAAKqxB,MAAQ,EAAGrxB,KAAKwyC,IAE3D30C,YAAY,EACZwkB,cAAc,IAElB1kB,OAAOC,eAAe69D,EAAU58D,UAAW,WAAY,CACnDf,IAAK,WACD,OAAO,IAAIy8D,EAAQxH,MAAM/yD,KAAKuyC,EAAIvyC,KAAKqxB,MAAOrxB,KAAKwyC,IAEvD30C,YAAY,EACZwkB,cAAc,IAElB1kB,OAAOC,eAAe69D,EAAU58D,UAAW,SAAU,CACjDf,IAAK,WACD,OAAO,IAAIy8D,EAAQxH,MAAM/yD,KAAKuyC,EAAIvyC,KAAKqxB,MAAQ,EAAGrxB,KAAKwyC,EAAIxyC,KAAKyzB,OAAS,IAE7E51B,YAAY,EACZwkB,cAAc,IAElB1kB,OAAOC,eAAe69D,EAAU58D,UAAW,aAAc,CACrDf,IAAK,WACD,OAAO,IAAIy8D,EAAQxH,MAAM/yD,KAAKuyC,EAAGvyC,KAAKwyC,EAAIxyC,KAAKyzB,SAEnD51B,YAAY,EACZwkB,cAAc,IAElB1kB,OAAOC,eAAe69D,EAAU58D,UAAW,eAAgB,CACvDf,IAAK,WACD,OAAO,IAAIy8D,EAAQxH,MAAM/yD,KAAKuyC,EAAIvyC,KAAKqxB,MAAQ,EAAGrxB,KAAKwyC,EAAIxyC,KAAKyzB,SAEpE51B,YAAY,EACZwkB,cAAc,IAElB1kB,OAAOC,eAAe69D,EAAU58D,UAAW,cAAe,CACtDf,IAAK,WACD,OAAO,IAAIy8D,EAAQxH,MAAM/yD,KAAKuyC,EAAIvyC,KAAKqxB,MAAOrxB,KAAKwyC,EAAIxyC,KAAKyzB,SAEhE51B,YAAY,EACZwkB,cAAc,IAElB1kB,OAAOC,eAAe69D,EAAU58D,UAAW,SAAU,CACjDf,IAAK,WACD,OAAO,IAAIy8D,EAAQxH,MAAM/yD,KAAKuyC,EAAIvyC,KAAKqxB,MAAOrxB,KAAKwyC,EAAIxyC,KAAKyzB,SAEhE51B,YAAY,EACZwkB,cAAc,IAElB1kB,OAAOC,eAAe69D,EAAU58D,UAAW,cAAe,CACtDf,IAAK,WACD,OAAO,IAAIy8D,EAAQxH,MAAM/yD,KAAKuyC,EAAIvyC,KAAKqxB,MAAOrxB,KAAKwyC,EAAIxyC,KAAKyzB,OAAS,IAEzE51B,YAAY,EACZwkB,cAAc,IAElB1kB,OAAOC,eAAe69D,EAAU58D,UAAW,aAAc,CACrDf,IAAK,WACD,OAAO,IAAIy8D,EAAQxH,MAAM/yD,KAAKuyC,EAAGvyC,KAAKwyC,EAAIxyC,KAAKyzB,OAAS,IAE5D51B,YAAY,EACZwkB,cAAc,IAElB1kB,OAAOC,eAAe69D,EAAU58D,UAAW,UAAW,CAClDf,IAAK,WACD,OAAO,IAAIkmG,EAAO1pC,KAAKt6D,KAAKikG,QAASjkG,KAAKkkG,WAE9CrmG,YAAY,EACZwkB,cAAc,IAElB1kB,OAAOC,eAAe69D,EAAU58D,UAAW,YAAa,CACpDf,IAAK,WACD,OAAO,IAAIkmG,EAAO1pC,KAAKt6D,KAAKkkG,SAAUlkG,KAAKmkG,cAE/CtmG,YAAY,EACZwkB,cAAc,IAElB1kB,OAAOC,eAAe69D,EAAU58D,UAAW,aAAc,CACrDf,IAAK,WACD,OAAO,IAAIkmG,EAAO1pC,KAAKt6D,KAAKokG,WAAYpkG,KAAKmkG,cAEjDtmG,YAAY,EACZwkB,cAAc,IAElB1kB,OAAOC,eAAe69D,EAAU58D,UAAW,WAAY,CACnDf,IAAK,WACD,OAAO,IAAIkmG,EAAO1pC,KAAKt6D,KAAKikG,QAASjkG,KAAKokG,aAE9CvmG,YAAY,EACZwkB,cAAc,IAElBo5C,EAAU58D,UAAUwlG,UAAY,WAC5B,OAAOrkG,KAAK4zD,QAEhB6H,EAAU58D,UAAUylG,WAAa,WAC7B,OAAOtkG,KAAKikG,SAEhBxoC,EAAU58D,UAAU0lG,aAAe,WAC/B,OAAOvkG,KAAKwkG,WAEhB/oC,EAAU58D,UAAU4lG,YAAc,WAC9B,OAAOzkG,KAAKkkG,UAEhBzoC,EAAU58D,UAAU67D,UAAY,WAC5B,OAAO16D,KAAKyzD,QAEhBgI,EAAU58D,UAAU6lG,WAAa,WAC7B,OAAO1kG,KAAKuyC,EAAIvyC,KAAKqxB,MAAQ,GAEjCoqC,EAAU58D,UAAU8lG,WAAa,WAC7B,OAAO3kG,KAAKwyC,EAAIxyC,KAAKyzB,OAAS,GAElCgoC,EAAU58D,UAAU+lG,cAAgB,WAChC,OAAO5kG,KAAKokG,YAEhB3oC,EAAU58D,UAAUgmG,gBAAkB,WAClC,OAAO7kG,KAAK8kG,cAEhBrpC,EAAU58D,UAAUkmG,eAAiB,WACjC,OAAO/kG,KAAKmkG,aAEhB1oC,EAAU58D,UAAUmmG,UAAY,WAC5B,OAAOhlG,KAAKilG,QAEhBxpC,EAAU58D,UAAUqmG,eAAiB,WACjC,OAAOllG,KAAKmlG,aAEhB1pC,EAAU58D,UAAUumG,cAAgB,WAChC,OAAOplG,KAAKqlG,YAEhB5pC,EAAU58D,UAAUymG,WAAa,WAC7B,OAAOtlG,KAAKulG,SAEhB9pC,EAAU58D,UAAU2mG,aAAe,WAC/B,OAAOxlG,KAAKylG,WAEhBhqC,EAAU58D,UAAU6mG,cAAgB,WAChC,OAAO1lG,KAAK2lG,YAEhBlqC,EAAU58D,UAAU+mG,YAAc,WAC9B,OAAO5lG,KAAK6lG,UAQhBpqC,EAAU58D,UAAU08D,KAAO,SAAU7G,GACjC,IAAKA,EACD,OAAO10D,KAAKyH,QAEhB,IAAI0sD,EAAMlB,EAAQiC,MAAMC,MAAMT,GAC1B8kC,EAAK1xF,KAAKinC,IAAIjnC,KAAK0tD,IAAIrB,IACvBxvB,EAAK78B,KAAKinC,IAAIjnC,KAAK8vB,IAAIu8B,IACvBpxD,EAAI/C,KAAKqxB,MAAQsT,EAAK3kC,KAAKyzB,OAAS+lE,EACpC34F,EAAIb,KAAKqxB,MAAQmoE,EAAKx5F,KAAKyzB,OAASkR,EACxC,OAAO,IAAI82B,EAAUz7D,KAAKuyC,GAAKvyC,KAAKqxB,MAAQtuB,GAAK,EAAG/C,KAAKwyC,GAAKxyC,KAAKyzB,OAAS5yB,GAAK,EAAGkC,EAAGlC,IAE3F46D,EAAU58D,UAAU+zB,MAAQ,SAAU6pB,GAMlC,YALkB,IAAdA,IAAwBA,EAAY,GACxCz8C,KAAKuyC,EAAIygB,EAAKpgC,MAAM5yB,KAAKuyC,EAAGkK,GAC5Bz8C,KAAKwyC,EAAIwgB,EAAKpgC,MAAM5yB,KAAKwyC,EAAGiK,GAC5Bz8C,KAAKqxB,MAAQ2hC,EAAKpgC,MAAM5yB,KAAKqxB,MAAOorB,GACpCz8C,KAAKyzB,OAASu/B,EAAKpgC,MAAM5yB,KAAKyzB,OAAQgpB,GAC/Bz8C,MAEXy7D,EAAU58D,UAAUyB,IAAM,SAAUiyC,EAAGC,EAAGnhB,EAAOoC,GAC7C,IAAIoV,EAAO4yB,EAAUl9D,OAAOg0C,EAAGC,EAAGnhB,EAAOoC,GACrCqyE,EAAOh+F,KAAKkzC,IAAIh7C,KAAKuyC,EAAG1J,EAAK0J,GAC7BwzD,EAAOj+F,KAAKkzC,IAAIh7C,KAAKwyC,EAAG3J,EAAK2J,GAC7BilB,EAAO3vD,KAAKitB,IAAI/0B,KAAKuyC,EAAIvyC,KAAKqxB,MAAOwX,EAAK0J,EAAI1J,EAAKxX,OACnDqmC,EAAO5vD,KAAKitB,IAAI/0B,KAAKwyC,EAAIxyC,KAAKyzB,OAAQoV,EAAK2J,EAAI3J,EAAKpV,QAKxD,OAJAzzB,KAAKuyC,EAAIuzD,EACT9lG,KAAKwyC,EAAIuzD,EACT/lG,KAAKqxB,MAAQomC,EAAOquC,EACpB9lG,KAAKyzB,OAASikC,EAAOquC,EACd/lG,MAEXy7D,EAAU58D,UAAU4sD,OAAS,SAAUlZ,EAAGC,EAAGnhB,EAAOoC,GAChD,IAAIoV,EAAO4yB,EAAUl9D,OAAOg0C,EAAGC,EAAGnhB,EAAOoC,GAKzC,OAJAzzB,KAAKuyC,EAAI1J,EAAK0J,EACdvyC,KAAKwyC,EAAI3J,EAAK2J,EACdxyC,KAAKqxB,MAAQwX,EAAKxX,MAClBrxB,KAAKyzB,OAASoV,EAAKpV,OACZzzB,MAEXy7D,EAAU58D,UAAUmnG,QAAU,SAAU3yC,EAAIC,GACxC,IAAIvwD,EAAIswD,EACJxyD,EAAU,MAANyyD,EAAaA,EAAKD,EAK1B,OAJArzD,KAAKuyC,GAAKxvC,EACV/C,KAAKwyC,GAAK3xC,EACVb,KAAKqxB,OAAS,EAAItuB,EAClB/C,KAAKyzB,QAAU,EAAI5yB,EACZb,MAEXy7D,EAAU58D,UAAUg3D,WAAa,SAAUC,EAAIC,GAC3C,IAAInC,EAAS5zD,KAAK4zD,OAAOiC,WAAWC,EAAIC,GACpCkvC,EAASjlG,KAAKilG,OAAOpvC,WAAWC,EAAIC,GAKxC,OAJA/1D,KAAKuyC,EAAIqhB,EAAOrhB,EAChBvyC,KAAKwyC,EAAIohB,EAAOphB,EAChBxyC,KAAKqxB,MAAQ4zE,EAAO1yD,EAAIqhB,EAAOrhB,EAC/BvyC,KAAKyzB,OAASwxE,EAAOzyD,EAAIohB,EAAOphB,EACzBxyC,MAEXy7D,EAAU58D,UAAUu0D,UAAY,SAAUuH,EAAIC,GAC1C,IAAI77D,EAAIw7D,EAAQxH,MAAMx0D,OAAOo8D,EAAIC,GAGjC,OAFA56D,KAAKuyC,GAAKxzC,EAAEwzC,EACZvyC,KAAKwyC,GAAKzzC,EAAEyzC,EACLxyC,MAEXy7D,EAAU58D,UAAUgmB,MAAQ,SAAU6uC,EAAIC,EAAIC,QAC3B,IAAXA,IAAqBA,EAAS,IAAI2G,EAAQxH,OAC9C,IAAI17B,EAAMr3B,KAAK4zD,OAAO/uC,MAAM6uC,EAAIC,EAAIC,GAKpC,OAJA5zD,KAAKuyC,EAAIlb,EAAIkb,EACbvyC,KAAKwyC,EAAInb,EAAImb,EACbxyC,KAAKqxB,OAASqiC,EACd1zD,KAAKyzB,QAAUkgC,EACR3zD,MAEXy7D,EAAU58D,UAAU00D,OAAS,SAAUC,EAAQC,GAE3C,QADe,IAAXA,IAAqBA,EAASzzD,KAAK06D,aACxB,IAAXlH,EAAc,CACd,IAAIW,EAAMlB,EAAQiC,MAAMC,MAAM3B,GAC1B57B,EAAM9vB,KAAK8vB,IAAIu8B,GACfqB,EAAM1tD,KAAK0tD,IAAIrB,GACfG,EAAKt0D,KAAKqkG,YACV9vC,EAAKv0D,KAAKykG,cACVpE,EAAKrgG,KAAK+kG,iBACVkB,EAAKjmG,KAAK4kG,gBACdtwC,EAAKiG,EAAQxH,MAAMuD,SAAShC,EAAI18B,EAAK49B,EAAK/B,GAC1Cc,EAAKgG,EAAQxH,MAAMuD,SAAS/B,EAAI38B,EAAK49B,EAAK/B,GAC1C4sC,EAAK9lC,EAAQxH,MAAMuD,SAAS+pC,EAAIzoE,EAAK49B,EAAK/B,GAC1CwyC,EAAK1rC,EAAQxH,MAAMuD,SAAS2vC,EAAIruE,EAAK49B,EAAK/B,GAC1C,IAAI5qB,EAAO,IAAI4yB,EAAUnH,EAAG/hB,EAAG+hB,EAAG9hB,EAAG,EAAG,GACxC3J,EAAKvoC,IAAIi0D,EAAGhiB,EAAGgiB,EAAG/hB,EAAG,EAAG,GACxB3J,EAAKvoC,IAAI+/F,EAAG9tD,EAAG8tD,EAAG7tD,EAAG,EAAG,GACxB3J,EAAKvoC,IAAI2lG,EAAG1zD,EAAG0zD,EAAGzzD,EAAG,EAAG,GACxBxyC,KAAKyrD,OAAO5iB,GAEhB,OAAO7oC,MAEXy7D,EAAU58D,UAAUqnG,SAAW,WAC3B,IAAI/nG,GAAK6B,KAAKqxB,MAAQrxB,KAAKyzB,QAAU,EACrCzzB,KAAKuyC,GAAKp0C,EACV6B,KAAKwyC,GAAKr0C,EACV,IAAI0T,EAAM7R,KAAKqxB,MAGf,OAFArxB,KAAKqxB,MAAQrxB,KAAKyzB,OAClBzzB,KAAKyzB,OAAS5hB,EACP7R,MAMXy7D,EAAU58D,UAAUsnG,cAAgB,SAAUt9D,GAC1C,IAAIgrB,EAAM4H,EAAUh0D,MAAMohC,GAK1B,OAJA7oC,KAAKuyC,GAAKshB,EAAIthB,GAAK,EACnBvyC,KAAKwyC,GAAKqhB,EAAIrhB,GAAK,EACnBxyC,KAAKqxB,OAASwiC,EAAIxiC,OAAS,EAC3BrxB,KAAKyzB,QAAUogC,EAAIpgC,QAAU,EACtBzzB,MAQXy7D,EAAU58D,UAAUunG,iBAAmB,SAAUC,EAAOzyC,QACrC,IAAXA,IAAqBA,EAAS5zD,KAAKyzD,QACvC,IAAI5qB,EAAO4yB,EAAUh0D,MAAM4+F,GACvBC,EAAK1yC,EAAOrhB,EACZg0D,EAAK3yC,EAAOphB,EAGZg0D,EAAMjoD,IACNkoD,EAAMloD,IACNmoD,EAAMnoD,IACNooD,EAAMpoD,IACNqoD,EAAMroD,IACNsoD,EAAMtoD,IACNuoD,EAAMvoD,IACNwoD,EAAMxoD,IAEN+V,EAAKzrB,EAAKo7D,QACV3vC,EAAG/hB,EAAI+zD,IACPE,GAAOxmG,KAAKuyC,EAAI+zD,IAAOhyC,EAAG/hB,EAAI+zD,IAE9BhyC,EAAG9hB,EAAI+zD,IACPK,GAAO5mG,KAAKwyC,EAAI+zD,IAAOjyC,EAAG9hB,EAAI+zD,IAGlC,IAAIhyC,EAAK1rB,EAAKs7D,YACV5vC,EAAGhiB,EAAI+zD,IACPG,GAAOzmG,KAAKuyC,EAAIvyC,KAAKqxB,MAAQi1E,IAAO/xC,EAAGhiB,EAAI+zD,IAE3C/xC,EAAG/hB,EAAI+zD,IACPM,GAAO7mG,KAAKwyC,EAAIxyC,KAAKyzB,OAAS8yE,IAAOhyC,EAAG/hB,EAAI+zD,IAGhD,IAAIlG,EAAKx3D,EAAKq7D,SACV7D,EAAG9tD,EAAI+zD,IACPI,GAAO1mG,KAAKuyC,EAAIvyC,KAAKqxB,MAAQi1E,IAAOjG,EAAG9tD,EAAI+zD,IAE3CjG,EAAG7tD,EAAI+zD,IACPO,GAAO9mG,KAAKwyC,EAAI+zD,IAAOlG,EAAG7tD,EAAI+zD,IAGlC,IAAIN,EAAKp9D,EAAKu7D,WAOd,OANI6B,EAAG1zD,EAAI+zD,IACPK,GAAO3mG,KAAKuyC,EAAI+zD,IAAOL,EAAG1zD,EAAI+zD,IAE9BL,EAAGzzD,EAAI+zD,IACPQ,GAAO/mG,KAAKwyC,EAAIxyC,KAAKyzB,OAAS8yE,IAAON,EAAGzzD,EAAI+zD,IAEzC,CACH7yC,GAAI5rD,KAAKkzC,IAAIwrD,EAAKC,EAAKC,EAAKC,GAC5BhzC,GAAI7rD,KAAKkzC,IAAI4rD,EAAKC,EAAKC,EAAKC,KASpCtrC,EAAU58D,UAAUmoG,wBAA0B,SAAUX,EAAOzyC,QAC5C,IAAXA,IAAqBA,EAAS5zD,KAAKyzD,QACvC,IAAI5uC,EAAQ7kB,KAAKomG,iBAAiBC,EAAOzyC,GACzC,OAAO9rD,KAAKkzC,IAAIn2B,EAAM6uC,GAAI7uC,EAAM8uC,KAEpC8H,EAAU58D,UAAUk2D,cAAgB,SAAUxiB,EAAGC,GAC7C,OAAOwgB,EAAK+B,cAAc/0D,KAAMu6D,EAAQxH,MAAMx0D,OAAOg0C,EAAGC,KAE5DipB,EAAU58D,UAAUooG,aAAe,SAAU10D,EAAGC,EAAGnhB,EAAOoC,GACtD,IAAIxoB,EAAIwwD,EAAUl9D,OAAOg0C,EAAGC,EAAGnhB,EAAOoC,GAClCojC,EAAK72D,KAAKuyC,EACVgkB,EAAKv2D,KAAKwyC,EACV00D,EAAKlnG,KAAKqxB,MACV81E,EAAKnnG,KAAKyzB,OACVqjC,EAAK7rD,EAAEsnC,EACPwkB,EAAK9rD,EAAEunC,EACP40D,EAAKn8F,EAAEomB,MACPg2E,EAAKp8F,EAAEwoB,OAEX,OAAW,IAAPyzE,GAAmB,IAAPC,GAAmB,IAAPC,GAAmB,IAAPC,IAGjCvwC,GAAMD,GAAME,GAAMR,GAAMO,EAAKswC,GAAMvwC,EAAKqwC,GAAMnwC,EAAKswC,GAAM9wC,EAAK4wC,IAMzE1rC,EAAU58D,UAAU69D,mBAAqB,SAAUzB,GAC/C,IAAIqsC,EAAY,CACZtnG,KAAKulG,QACLvlG,KAAKylG,UACLzlG,KAAK2lG,WACL3lG,KAAK6lG,UAEL/xC,EAAS,GACTyzC,EAAY,GAQhB,OAPAD,EAAUn8D,SAAQ,SAAUjuC,GACxB,IAAI6B,EAAIk8D,EAAKyB,mBAAmBx/D,GACtB,OAAN6B,GAAcwoG,EAAU9jG,QAAQ1E,EAAE4E,YAAc,IAChDmwD,EAAOtxD,KAAKzD,GACZwoG,EAAU/kG,KAAKzD,EAAE4E,gBAGlBmwD,EAAOnyD,OAAS,EAAImyD,EAAS,MAUxC2H,EAAU58D,UAAU2oG,oCAAsC,SAAUzoG,EAAG21D,GACnE,IAAIb,EAAM0G,EAAQxH,MAAMtrD,MAAM1I,GAC1B00D,EAASzzD,KAAKyzD,OACdtyD,EAAS,KACA,MAATuzD,GAA2B,IAAVA,GACjBb,EAAIN,OAAOmB,EAAOjB,GAItB,IAFA,IAAIg0C,EAAQ,CAACznG,KAAKulG,QAASvlG,KAAKylG,UAAWzlG,KAAK2lG,WAAY3lG,KAAK6lG,UAC7D6B,EAAY,IAAI1D,EAAO1pC,KAAK7G,EAAQI,GAC/B52D,EAAIwqG,EAAM9lG,OAAS,EAAG1E,GAAK,EAAGA,GAAK,EAAG,CAC3C,IAAI6lD,EAAe2kD,EAAMxqG,GAAGy/D,mBAAmBgrC,GAC/C,GAAqB,OAAjB5kD,EAAuB,CACvB3hD,EAAS2hD,EACT,OAMR,OAHI3hD,GAAmB,MAATuzD,GAA2B,IAAVA,GAC3BvzD,EAAOoyD,QAAQmB,EAAOjB,GAEnBtyD,GAEXs6D,EAAU58D,UAAU8oG,mBAAqB,SAAUp1D,EAAGC,EAAGnhB,EAAOoC,GAC5D,IAAIogC,EAAM4H,EAAUl9D,OAAOg0C,EAAGC,EAAGnhB,EAAOoC,GAExC,IAAKzzB,KAAK4nG,oBAAoB/zC,GAC1B,OAAO,KAEX,IAAIg0C,EAAW7nG,KAAK4zD,OAChBk0C,EAAW9nG,KAAKilG,OAChB8C,EAAUl0C,EAAID,OACdo0C,EAAUn0C,EAAIoxC,OACdgD,EAAKngG,KAAKitB,IAAI8yE,EAASt1D,EAAGw1D,EAAQx1D,GAClC21D,EAAKpgG,KAAKitB,IAAI8yE,EAASr1D,EAAGu1D,EAAQv1D,GACtC,OAAO,IAAIipB,EAAUwsC,EAAIC,EAAIpgG,KAAKkzC,IAAI8sD,EAASv1D,EAAGy1D,EAAQz1D,GAAK01D,EAAIngG,KAAKkzC,IAAI8sD,EAASt1D,EAAGw1D,EAAQx1D,GAAK01D,IAEzGzsC,EAAU58D,UAAU+oG,oBAAsB,SAAUr1D,EAAGC,EAAGnhB,EAAOoC,GAC7D,IAAIogC,EAAM4H,EAAUl9D,OAAOg0C,EAAGC,EAAGnhB,EAAOoC,GACpCo0E,EAAW7nG,KAAK4zD,OAChBk0C,EAAW9nG,KAAKilG,OAChB8C,EAAUl0C,EAAID,OACdo0C,EAAUn0C,EAAIoxC,OAClB,QAAI+C,EAAQz1D,GAAKs1D,EAASt1D,GACtBy1D,EAAQx1D,GAAKq1D,EAASr1D,GACtBu1D,EAAQx1D,GAAKu1D,EAASv1D,GACtBw1D,EAAQv1D,GAAKs1D,EAASt1D,IAW9BipB,EAAU58D,UAAU2yD,UAAY,WAC5B,IAAI22C,EAAOnoG,KAAKuyC,EACZ61D,EAAOpoG,KAAKwyC,EACZ61D,EAAWroG,KAAKqxB,MAChBi3E,EAAYtoG,KAAKyzB,OAarB,OAZIzzB,KAAKqxB,MAAQ,IACb82E,EAAOnoG,KAAKuyC,EAAIvyC,KAAKqxB,MACrBg3E,GAAYroG,KAAKqxB,OAEjBrxB,KAAKyzB,OAAS,IACd20E,EAAOpoG,KAAKwyC,EAAIxyC,KAAKyzB,OACrB60E,GAAatoG,KAAKyzB,QAEtBzzB,KAAKuyC,EAAI41D,EACTnoG,KAAKwyC,EAAI41D,EACTpoG,KAAKqxB,MAAQg3E,EACbroG,KAAKyzB,OAAS60E,EACPtoG,MAKXy7D,EAAU58D,UAAUwlD,MAAQ,SAAUxb,GAClC,IAAIgrB,EAAM4H,EAAUh0D,MAAMohC,GACtBg/D,EAAW7nG,KAAK4zD,OAChBk0C,EAAW9nG,KAAKilG,OAChB8C,EAAUl0C,EAAID,OACdo0C,EAAUn0C,EAAIoxC,OACdsD,EAAUzgG,KAAKkzC,IAAI6sD,EAASt1D,EAAGw1D,EAAQx1D,GACvCi2D,EAAU1gG,KAAKkzC,IAAI6sD,EAASr1D,EAAGu1D,EAAQv1D,GAG3C,OAAO,IAAIipB,EAAU8sC,EAASC,EAFhB1gG,KAAKitB,IAAI+yE,EAASv1D,EAAGy1D,EAAQz1D,GAEMg2D,EADnCzgG,KAAKitB,IAAI+yE,EAASt1D,EAAGw1D,EAAQx1D,GACyBg2D,IAMxE/sC,EAAU58D,UAAU4pG,sBAAwB,SAAU1pG,GAClD,IAAI80D,EAAM0G,EAAQxH,MAAMtrD,MAAM1I,GAC1B2pG,EAAW70C,EAAIthB,EAAIvyC,KAAKuyC,EACxBo2D,EAAY3oG,KAAKuyC,EAAIvyC,KAAKqxB,MAAQwiC,EAAIthB,EACtCq2D,EAAU/0C,EAAIrhB,EAAIxyC,KAAKwyC,EAEvBj3B,EAAUmtF,EACVG,EAAO,OAYX,OAXIF,EAAYptF,IACZA,EAAUotF,EACVE,EAAO,SAEPD,EAAUrtF,IACVA,EAAUqtF,EACVC,EAAO,OATM7oG,KAAKwyC,EAAIxyC,KAAKyzB,OAASogC,EAAIrhB,EAW3Bj3B,IACbstF,EAAO,UAEJA,GAKXptC,EAAU58D,UAAUiqG,uBAAyB,SAAU/pG,GACnD,IAAI80D,EAAM0G,EAAQxH,MAAMtrD,MAAM1I,GAC9B,GAAIiB,KAAK+0D,cAAclB,GAEnB,OADW7zD,KAAKyoG,sBAAsB50C,IAElC,IAAK,QACD,OAAO,IAAI0G,EAAQxH,MAAM/yD,KAAKuyC,EAAIvyC,KAAKqxB,MAAOwiC,EAAIrhB,GACtD,IAAK,OACD,OAAO,IAAI+nB,EAAQxH,MAAM/yD,KAAKuyC,EAAGshB,EAAIrhB,GACzC,IAAK,SACD,OAAO,IAAI+nB,EAAQxH,MAAMc,EAAIthB,EAAGvyC,KAAKwyC,EAAIxyC,KAAKyzB,QAClD,IAAK,MACD,OAAO,IAAI8mC,EAAQxH,MAAMc,EAAIthB,EAAGvyC,KAAKwyC,GAKjD,OAAOqhB,EAAIiB,aAAa90D,OAE5By7D,EAAU58D,UAAU21D,OAAS,SAAU3rB,GACnC,OAAgB,MAARA,GACJA,EAAK0J,IAAMvyC,KAAKuyC,GAChB1J,EAAK2J,IAAMxyC,KAAKwyC,GAChB3J,EAAKxX,QAAUrxB,KAAKqxB,OACpBwX,EAAKpV,SAAWzzB,KAAKyzB,QAE7BgoC,EAAU58D,UAAU4I,MAAQ,WACxB,OAAO,IAAIg0D,EAAUz7D,KAAKuyC,EAAGvyC,KAAKwyC,EAAGxyC,KAAKqxB,MAAOrxB,KAAKyzB,SAE1DgoC,EAAU58D,UAAUktD,OAAS,WACzB,MAAO,CAAExZ,EAAGvyC,KAAKuyC,EAAGC,EAAGxyC,KAAKwyC,EAAGnhB,MAAOrxB,KAAKqxB,MAAOoC,OAAQzzB,KAAKyzB,SAEnEgoC,EAAU58D,UAAU6gC,UAAY,WAC5B,OAAO1/B,KAAKuyC,EAAI,IAAMvyC,KAAKwyC,EAAI,IAAMxyC,KAAKqxB,MAAQ,IAAMrxB,KAAKyzB,QAE1DgoC,EAhlBmB,CADb,EAAQ,IAklBZzF,UACbj5D,EAAQ0+D,UAAYA,EACpB,SAAWA,GACPA,EAAUx9D,YAAc,eAAiBw9D,EAAUj+D,KAqBnDi+D,EAAUstC,YApBV,SAAqB7yC,GACjB,GAAgB,MAAZA,EACA,OAAO,EAEX,GAAIA,aAAoBuF,EACpB,OAAO,EAEX,IAAI7pD,EAAMskD,EAASl4D,OAAOC,aACtB4qC,EAAOqtB,EACX,OAAY,MAAPtkD,GAAeA,IAAQ6pD,EAAUx9D,cAChB,iBAAX4qC,EAAK0J,GACM,iBAAX1J,EAAK2J,GACU,iBAAf3J,EAAKxX,OACW,iBAAhBwX,EAAKpV,QACY,mBAAjBoV,EAAKm9D,SACkB,mBAAvBn9D,EAAKs9D,eAjBxB,CAuBG1qC,EAAY1+D,EAAQ0+D,YAAc1+D,EAAQ0+D,UAAY,KACzD1+D,EAAQ0+D,UAAYA,EACpB,SAAWA,GASPA,EAAUutC,gBARV,SAAyBtrG,GACrB,OAAa,MAALA,GACS,iBAANA,GACQ,iBAARA,EAAE60C,GACM,iBAAR70C,EAAE80C,GACU,iBAAZ90C,EAAE2zB,OACW,iBAAb3zB,EAAE+1B,QAPrB,CAUGgoC,EAAY1+D,EAAQ0+D,YAAc1+D,EAAQ0+D,UAAY,KACzD1+D,EAAQ0+D,UAAYA,EACpB,SAAWA,GAQP,SAASh0D,EAAMohC,GACX,OAAI4yB,EAAUstC,YAAYlgE,GACfA,EAAKphC,QAEZvG,MAAMD,QAAQ4nC,GACP,IAAI4yB,EAAU5yB,EAAK,GAAIA,EAAK,GAAIA,EAAK,GAAIA,EAAK,IAElD,IAAI4yB,EAAU5yB,EAAK0J,EAAG1J,EAAK2J,EAAG3J,EAAKxX,MAAOwX,EAAKpV,QAR1DgoC,EAAUl9D,OANV,SAAgBg0C,EAAGC,EAAGnhB,EAAOoC,GACzB,OAAS,MAAL8e,GAA0B,iBAANA,EACb,IAAIkpB,EAAUlpB,EAAGC,EAAGnhB,EAAOoC,GAE/BhsB,EAAM8qC,IAYjBkpB,EAAUh0D,MAAQA,EAIlBg0D,EAAUwtC,SAHV,SAAkBrsD,GACd,OAAO,IAAI6e,EAAU,EAAG,EAAG7e,EAAKvrB,MAAOurB,EAAKnpB,SAMhDgoC,EAAUytC,oBAHV,SAA6B7xE,EAAKulB,GAC9B,OAAO,IAAI6e,EAAUpkC,EAAIkb,EAAGlb,EAAImb,EAAGoK,EAAKvrB,MAAOurB,EAAKnpB,SASxDgoC,EAAU0tC,YAHV,SAAqBC,GACjB,OAAO,IAAI3tC,EAAU2tC,EAAQ72D,EAAI62D,EAAQp+F,EAAGo+F,EAAQ52D,EAAI42D,EAAQn+F,EAAG,EAAIm+F,EAAQp+F,EAAG,EAAIo+F,EAAQn+F,IA9BtG,CAiCGwwD,EAAY1+D,EAAQ0+D,YAAc1+D,EAAQ0+D,UAAY,KACzD1+D,EAAQ0+D,UAAYA,G,6BCnsBpB99D,OAAOC,eAAeb,EAAS,aAAc,CAAEmB,OAAO,IACtDnB,EAAQssG,WAAatsG,EAAQusG,cAAgBvsG,EAAQwsG,eAAiBxsG,EAAQysG,YAAczsG,EAAQkW,KAAOlW,EAAQ0sG,cAAgB1sG,EAAQmI,aAAenI,EAAQoS,gBAAkBpS,EAAQkI,kBAAe,EAC3M,IAAIykG,EAAS,EAAQ,KACjBC,EAAW,EAAQ,KACnBC,EAAsB,CAAC,WAK3B,SAASz6F,EAAgB3I,EAAMhJ,GAC3B,IAAIqsG,EAAYL,EAAYhsG,GACxBqsG,EAAUvrG,GACNkI,EAAKsjG,eAAeD,EAAUvrG,GAAIurG,EAAUE,QAC5CvjG,EAAK0hF,kBAAkB2hB,EAAUvrG,GAAIurG,EAAUE,OAG9CvjG,EAAK8tF,aAAa92F,IACvBgJ,EAAK2I,gBAAgB3R,GAI7B,SAAS0H,EAAasB,EAAMhJ,EAAMU,GAC9B,GAAa,MAATA,EACA,OAAOiR,EAAgB3I,EAAMhJ,GAEjC,IAAIqsG,EAAYL,EAAYhsG,GACxBqsG,EAAUvrG,IAAuB,iBAAVJ,EACvBsI,EAAK8hF,eAAeuhB,EAAUvrG,GAAId,EAAMU,GAE1B,OAATV,EACLgJ,EAAKgI,GAAK,GAAKtQ,EAGfsI,EAAKtB,aAAa1H,EAAM,GAAKU,GAIrC,SAASurG,EAAcjjG,EAAMoJ,GACzBjS,OAAOyR,KAAKQ,GAAOu7B,SAAQ,SAAU3tC,GACjC0H,EAAasB,EAAMhJ,EAAMoS,EAAMpS,OAwBvC,SAASgsG,EAAYhsG,GACjB,IAA2B,IAAvBA,EAAKiG,QAAQ,KAAa,CAC1B,IAAIumG,EAAcxsG,EAAK2L,MAAM,KAC7B,MAAO,CACH7K,GAAIorG,EAAOprG,GAAG0rG,EAAY,IAC1BD,MAAOC,EAAY,IAG3B,MAAO,CACH1rG,GAAI,KACJyrG,MAAOvsG,GAaf,SAAS8rG,EAAcW,GACnB,IAAI/jG,EAAM,GAWV,OAVa+jG,EAAY9gG,MAAM,KACxBgiC,SAAQ,SAAUhnC,GACrB,IAAI+lG,EAAU/lG,EAAKimC,OACnB,GAAI8/D,EAAS,CACT,IAAI3vD,EAAO2vD,EAAQ/gG,MAAM,KACrBoxC,EAAK54C,SACLuE,EAAIq0C,EAAK,GAAGnQ,QAAUmQ,EAAK,GAAKA,EAAK,GAAGnQ,OAAS,QAItDlkC,EA1FXnJ,EAAQkI,aAHR,SAAsBuB,EAAMhJ,GACxB,OAAOgJ,EAAKvB,aAAazH,IAc7BT,EAAQoS,gBAAkBA,EAgB1BpS,EAAQmI,aAAeA,EAMvBnI,EAAQ0sG,cAAgBA,EAoBxB1sG,EAAQkW,KAnBR,SAAczM,EAAMhJ,EAAMU,GACtB,GAAY,MAARV,EAAc,CAGd,IAFA,IAAIoS,EAAQpJ,EAAKgF,WACbtF,EAAM,GACDjJ,EAAI,EAAGA,EAAI2S,EAAMjO,OAAQ1E,GAAK,EACnCiJ,EAAI0J,EAAM3S,GAAGO,MAAQoS,EAAM3S,GAAGiB,MAElC,OAAOgI,EAEX,GAAoB,iBAAT1I,QAA+B0E,IAAVhE,EAC5B,OAAOsI,EAAKvB,aAAazH,GAET,iBAATA,EACPisG,EAAcjjG,EAAMhJ,GAGpB0H,EAAasB,EAAMhJ,EAAMU,IAiBjCnB,EAAQysG,YAAcA,EAStBzsG,EAAQwsG,eARR,SAAwB35F,GACpB,IAAIzO,EAAS,GAKb,OAJAxD,OAAOyR,KAAKQ,GAAOu7B,SAAQ,SAAU3sC,GACjC,IAAIhB,EAAOosG,EAAoB1rD,SAAS1/C,GAAOA,GAAM,EAAImrG,EAASt9C,WAAW7tD,GAC7E2C,EAAO3D,GAAQoS,EAAMpR,MAElB2C,GAiBXpE,EAAQusG,cAAgBA,EAqCxBvsG,EAAQssG,WApCR,SAASA,EAAW3hG,EAAQqc,GAkCxB,OAjCApmB,OAAOyR,KAAK2U,GAAQonB,SAAQ,SAAUl4B,GAClC,GAAa,UAATA,EACAvL,EAAOuL,GAAQvL,EAAOuL,GAChBvL,EAAOuL,GAAQ,IAAM8Q,EAAO9Q,GAC5B8Q,EAAO9Q,QAEZ,GAAa,UAATA,EAAkB,CACvB,IAAI2nB,EAA6B,iBAAjBlzB,EAAOuL,GACnBk3F,EAA6B,iBAAjBpmF,EAAO9Q,GACnBm3F,OAAK,EACLC,OAAK,EACLzvE,GAAMuvE,GACNC,EAAK1iG,EAAOuL,GACZo3F,EAAKtmF,EAAO9Q,IAEP2nB,GACLwvE,EAAK1iG,EAAOuL,GACZo3F,EAAKf,EAAcvlF,EAAO9Q,KAErBk3F,GACLC,EAAKd,EAAc5hG,EAAOuL,IAC1Bo3F,EAAKtmF,EAAO9Q,KAGZm3F,EAAKd,EAAc5hG,EAAOuL,IAC1Bo3F,EAAKf,EAAcvlF,EAAO9Q,KAE9BvL,EAAOuL,GAAQo2F,EAAWe,EAAIC,QAG9B3iG,EAAOuL,GAAQ8Q,EAAO9Q,MAGvBvL,I,6BCvIX/J,OAAOC,eAAeb,EAAS,aAAc,CAAEmB,OAAO,IACtDnB,EAAQutG,cAAgBvtG,EAAQuzB,SAAWvzB,EAAQmzB,OAASnzB,EAAQizB,QAAUjzB,EAAQgzB,OAAShzB,EAAQ8gB,MAAQ9gB,EAAQ6gB,OAAS7gB,EAAQsN,SAAWtN,EAAQwtG,kBAAoBxtG,EAAQytG,QAAUztG,EAAQ2U,KAAO3U,EAAQ2E,MAAQ3E,EAAQ0oF,QAAU1oF,EAAQ8hC,SAAW9hC,EAAQ0tG,kBAAoB1tG,EAAQ2tG,iBAAmB3tG,EAAQ4oF,gBAAkB5oF,EAAQgI,cAAgBhI,EAAQ4tG,WAAa5tG,EAAQuB,GAAKvB,EAAQ6tG,qBAAuB7tG,EAAQ8tG,SAAW9tG,EAAQgyD,cAAW,EACrd,IAAI+7C,EAAU,EAAQ,KAClBC,EAAY,EAChB,SAASh8C,IAEL,MAAO,KADPg8C,GAAa,GAmCjB,SAASplB,EAAgBF,EAAS70E,EAAchM,GAG5C,YAFqB,IAAjBgM,IAA2BA,EAAe7T,EAAQuB,GAAG0sG,YAC7C,IAARpmG,IAAkBA,EAAM9B,UACrB8B,EAAI+gF,gBAAgB/0E,EAAc60E,GAoB7C,SAAS5mD,EAAStc,EAAM5iB,GAEpB,IAAIgV,OADY,IAAZhV,IAAsBA,EAAU,IAEpC,IACI,IAAIsrG,EAAS,IAAIlsE,UACjB,GAAqB,MAAjBp/B,EAAQgiC,MACOspE,EACNtpE,MAAQhiC,EAAQgiC,MAE7BhtB,EAAMs2F,EAAOjsE,gBAAgBzc,EAAM5iB,EAAQ8jC,UAAY,YAE3D,MAAOv7B,GACHyM,OAAMzS,EAEV,IAAKyS,GAAOA,EAAIlG,qBAAqB,eAAe9M,OAChD,MAAM,IAAIqB,MAAM,gBAAkBuf,GAEtC,OAAO5N,EA4DX,SAASob,EAAOvpB,EAAMP,IACR/E,MAAMD,QAAQgF,GAASA,EAAQ,CAACA,IACtCklC,SAAQ,SAAU67B,GACL,MAATA,GACAxgE,EAAKpB,YAAY4hE,MAU7B,SAAS92C,EAAO1pB,EAAMP,GAClB,IAAI9F,EAASqG,EAAKnB,WACdlF,IACUe,MAAMD,QAAQgF,GAASA,EAAQ,CAACA,IACtCklC,SAAQ,SAAU67B,GACL,MAATA,GACA7mE,EAAO8vB,aAAa+2C,EAAOxgE,MAxJ3CzJ,EAAQgyD,SAAWA,EAOnBhyD,EAAQ8tG,SANR,SAAkBrkG,GAId,OAHe,MAAXA,EAAKgI,IAA0B,KAAZhI,EAAKgI,KACxBhI,EAAKgI,GAAKugD,KAEPvoD,EAAKgI,IAahBzR,EAAQ6tG,qBANR,SAA8BpkG,GAC1B,OAAY,MAARA,IAGgC,mBAAtBA,EAAK0kG,cAA+B1kG,aAAgB2kG,aAGtEpuG,EAAQuB,GAAK,CACT4mF,IAAK,6BACLkmB,MAAO,gCACPz2F,IAAK,uCACL02F,MAAO,+BACPL,MAAO,gCAEXjuG,EAAQ4tG,WAAa,MAKrB5tG,EAAQgI,cAJR,SAAuB0gF,EAAS7gF,GAE5B,YADY,IAARA,IAAkBA,EAAM9B,UACrB8B,EAAIG,cAAc0gF,IAQ7B1oF,EAAQ4oF,gBAAkBA,EAK1B5oF,EAAQ2tG,iBAJR,SAA0BjlB,EAAS7gF,GAE/B,YADY,IAARA,IAAkBA,EAAM9B,UACrB6iF,EAAgBF,EAAS1oF,EAAQuB,GAAG4mF,IAAKtgF,IAcpD7H,EAAQ0tG,kBAXR,SAA2BzuF,GACvB,GAAIA,EAGA,OADsB6iB,EADZ,eAAkB9hC,EAAQuB,GAAG4mF,IAAM,kBAAsBnoF,EAAQuB,GAAG+sG,MAAQ,cAAkBtuG,EAAQ4tG,WAAa,KAAQ3uF,EAAU,SAC3G,CAAE2lB,OAAO,IAAS9wB,gBAG1D,IAAIq0E,EAAMpiF,SAAS6iF,gBAAgB5oF,EAAQuB,GAAG4mF,IAAK,OAGnD,OAFAA,EAAIoD,eAAevrF,EAAQuB,GAAG8sG,MAAO,cAAeruG,EAAQuB,GAAG+sG,OAC/DnmB,EAAIhgF,aAAa,UAAWnI,EAAQ4tG,YAC7BzlB,GAsBXnoF,EAAQ8hC,SAAWA,EAMnB9hC,EAAQ0oF,QALR,SAAiB9gF,EAAM2mG,QACD,IAAdA,IAAwBA,GAAY,GACxC,IAAI79F,EAAW9I,EAAK8I,SACpB,OAAO69F,EAAY79F,EAASpE,cAAgBoE,EAASqU,eAczD/kB,EAAQ2E,MAXR,SAAe8E,GAGX,IAFA,IAAI9E,EAAQ,EACRiD,EAAO6B,EAAK+kG,gBACT5mG,GACmB,IAAlBA,EAAKT,WACLxC,GAAS,GAEbiD,EAAOA,EAAK4mG,gBAEhB,OAAO7pG,GAMX3E,EAAQ2U,KAHR,SAAclL,EAAMf,GAChB,OAAOe,EAAKyI,iBAAiBxJ,IAMjC1I,EAAQytG,QAHR,SAAiBhkG,EAAMf,GACnB,OAAOe,EAAK+xF,cAAc9yF,IAc9B1I,EAAQwtG,kBAXR,SAA2B/jG,EAAM4K,EAAWo6F,GAGxC,IAFA,IAAIC,EAAkBjlG,EAAKilG,gBACvB9mG,EAAO6B,EAAKnB,WACTV,GAAQA,IAAS6mG,GAAc7mG,IAAS8mG,GAAiB,CAC5D,IAAI,EAAIX,EAAQltE,UAAUj5B,EAAMyM,GAC5B,OAAOzM,EAEXA,EAAOA,EAAKU,WAEhB,OAAO,MASXtI,EAAQsN,SANR,SAAkBlK,EAAQ6mE,GACtB,IAAIx0D,EAAMw0D,GAASA,EAAM3hE,WACzB,OAAQlF,IAAWqS,MACZA,GAAwB,IAAjBA,EAAItO,UAAwD,GAAtC/D,EAAOmS,wBAAwBE,KASvEzV,EAAQ6gB,OALR,SAAgBpX,GACRA,EAAKnB,YACLmB,EAAKnB,WAAWC,YAAYkB,IASpCzJ,EAAQ8gB,MALR,SAAerX,GACX,KAAOA,EAAKiN,YACRjN,EAAKlB,YAAYkB,EAAKiN,aAY9B1W,EAAQgzB,OAASA,EAKjBhzB,EAAQizB,QAJR,SAAiBxpB,EAAMP,GACnB,IAAI+gE,EAAQxgE,EAAKiN,WACjB,OAAOuzD,EAAQ92C,EAAO82C,EAAO/gE,GAAS8pB,EAAOvpB,EAAMP,IAcvDlJ,EAAQmzB,OAASA,EAMjBnzB,EAAQuzB,SALR,SAAkB9pB,EAAMkB,GACN,MAAVA,GACAA,EAAOtC,YAAYoB,IAoB3BzJ,EAAQutG,cAfR,SAAuB9jG,GACnB,IAEI,OAAOA,aAAgB4xF,YAE3B,MAAOvqF,GAIH,MAAwB,iBAATrH,GACO,IAAlBA,EAAKtC,UACiB,iBAAfsC,EAAK8d,OACkB,iBAAvB9d,EAAK6H,iB,6BC1LxB,aAiDA,SAASo4C,EAAQplD,EAAMqqG,GACrB,GAAmB,mBAARrqG,GAAmC,MAAZqqG,GAAuC,mBAAZA,EAC3D,MAAM,IAAItsF,UAhDQ,uBAkDpB,IAAIusF,EAAW,WACb,IAAIx2F,EAAO1O,UACPjI,EAAMktG,EAAWA,EAASloG,MAAMxD,KAAMmV,GAAQA,EAAK,GACnD9F,EAAQs8F,EAASt8F,MAErB,GAAIA,EAAMgM,IAAI7c,GACZ,OAAO6Q,EAAMvR,IAAIU,GAEnB,IAAI2C,EAASE,EAAKmC,MAAMxD,KAAMmV,GAE9B,OADAw2F,EAASt8F,MAAQA,EAAMiT,IAAI9jB,EAAK2C,IAAWkO,EACpClO,GAGT,OADAwqG,EAASt8F,MAAQ,IAAKo3C,EAAQmlD,OAAS,KAChCD,EAITllD,EAAQmlD,MAAQ,IAED,O,6BCxEf,YAqBe,IALf,SAAiBpqG,GAEf,OADsB,MAATA,EAAgB,EAAIA,EAAMG,QACvB,YAAYH,EAAO,GAAK,K,6BClB1C,oBA+Be,IAJf,SAAuBtD,GACrB,OAAO,YAAWA,EAAO,YAAOA,M,6BC5BlC,qBAkCI8sD,EAAY,aAAe,SAASrsD,EAAQolB,EAAQm4B,EAAU3H,GAChE,YAAU51C,EAAQolB,EAAQm4B,EAAU3H,MAGvB,O,6BCtCf,2BA0BIkZ,EAAU,aAAS,SAASpsD,EAAM8T,GACpC,IACE,OAAO,YAAM9T,OAAMa,EAAWiT,GAC9B,MAAOtH,GACP,OAAO,YAAQA,GAAKA,EAAI,IAAI7K,MAAM6K,OAIvB,O,6BClCf,mBAsBe,IAJf,SAAoBmU,GAClB,OAAO,YAAW,YAASA,GAAQ3Y,iB,6BCnBrC,mBAqCe,IALf,SAAkBnL,GAChB,MAAuB,iBAATA,GACX,YAAaA,IA9BF,mBA8BY,YAAWA,K,6BClCvC,WAgCe,IAJf,SAAmBA,GACjB,MAAuB,iBAATA,GAAqBA,GAAS,YAAUA,K,6BC7BxD,WAuCe,IAjBf,SAAgBQ,EAAG2C,GACjB,IAAIF,EACJ,GAAmB,mBAARE,EACT,MAAM,IAAI+d,UAtBQ,uBAyBpB,OADA1gB,EAAI,YAAUA,GACP,WAOL,QANMA,EAAI,IACRyC,EAASE,EAAKmC,MAAMxD,KAAMyG,YAExB/H,GAAK,IACP2C,OAAOa,GAEFf,K,6BCnCX,2BAQIg3C,EAAYrwC,KAAKitB,IACjBgmB,EAAYjzC,KAAKkzC,IAqLN,IA7Hf,SAAkB35C,EAAM2f,EAAMrhB,GAC5B,IAAIksG,EACAC,EACAC,EACA5qG,EACA6qG,EACAC,EACAC,EAAiB,EACjBjrD,GAAU,EACVkrD,GAAS,EACTjrD,GAAW,EAEf,GAAmB,mBAAR7/C,EACT,MAAM,IAAI+d,UAzEQ,uBAmFpB,SAASgtF,EAAWvwE,GAClB,IAAI1mB,EAAO02F,EACPr9D,EAAUs9D,EAKd,OAHAD,EAAWC,OAAW5pG,EACtBgqG,EAAiBrwE,EACjB16B,EAASE,EAAKmC,MAAMgrC,EAASr5B,GAI/B,SAASk3F,EAAYxwE,GAMnB,OAJAqwE,EAAiBrwE,EAEjBmwE,EAAUpsF,WAAW0sF,EAActrF,GAE5BigC,EAAUmrD,EAAWvwE,GAAQ16B,EAatC,SAASorG,EAAa1wE,GACpB,IAAI2wE,EAAoB3wE,EAAOowE,EAM/B,YAAyB/pG,IAAjB+pG,GAA+BO,GAAqBxrF,GACzDwrF,EAAoB,GAAOL,GANJtwE,EAAOqwE,GAM8BH,EAGjE,SAASO,IACP,IAAIzwE,EAAO,cACX,GAAI0wE,EAAa1wE,GACf,OAAO4wE,EAAa5wE,GAGtBmwE,EAAUpsF,WAAW0sF,EA3BvB,SAAuBzwE,GACrB,IAEI6wE,EAAc1rF,GAFM6a,EAAOowE,GAI/B,OAAOE,EACHpxD,EAAU2xD,EAAaX,GAJDlwE,EAAOqwE,IAK7BQ,EAoB+BC,CAAc9wE,IAGnD,SAAS4wE,EAAa5wE,GAKpB,OAJAmwE,OAAU9pG,EAINg/C,GAAY2qD,EACPO,EAAWvwE,IAEpBgwE,EAAWC,OAAW5pG,EACff,GAeT,SAASyrG,IACP,IAAI/wE,EAAO,cACPgxE,EAAaN,EAAa1wE,GAM9B,GAJAgwE,EAAWplG,UACXqlG,EAAW9rG,KACXisG,EAAepwE,EAEXgxE,EAAY,CACd,QAAgB3qG,IAAZ8pG,EACF,OAAOK,EAAYJ,GAErB,GAAIE,EAIF,OAFApwE,aAAaiwE,GACbA,EAAUpsF,WAAW0sF,EAActrF,GAC5BorF,EAAWH,GAMtB,YAHgB/pG,IAAZ8pG,IACFA,EAAUpsF,WAAW0sF,EAActrF,IAE9B7f,EAIT,OA3GA6f,EAAO,YAASA,IAAS,EACrB,YAASrhB,KACXshD,IAAYthD,EAAQshD,QAEpB8qD,GADAI,EAAS,YAAaxsG,GACHw4C,EAAU,YAASx4C,EAAQosG,UAAY,EAAG/qF,GAAQ+qF,EACrE7qD,EAAW,aAAcvhD,IAAYA,EAAQuhD,SAAWA,GAoG1D0rD,EAAUE,OApCV,gBACkB5qG,IAAZ8pG,GACFjwE,aAAaiwE,GAEfE,EAAiB,EACjBL,EAAWI,EAAeH,EAAWE,OAAU9pG,GAgCjD0qG,EAAUG,MA7BV,WACE,YAAmB7qG,IAAZ8pG,EAAwB7qG,EAASsrG,EAAa,gBA6BhDG,I,6BC1LT,IAAII,EAAc,4CAaH,MAJf,SAAoBhrF,GAClB,OAAOA,EAAO/T,MAAM++F,IAAgB,ICVlCC,EAAmB,qEAaR,MAJf,SAAwBjrF,GACtB,OAAOirF,EAAiBr+F,KAAKoT,I,OCG3BkrF,EAAeC,8OAIfC,EAAU,IAAMF,EAAe,IAE/BG,EAAW,OACXC,EAAY,oBACZC,EAAU,8BACVC,EAAS,oBAAuBN,EAAeG,EAAtC,qEAIT/3D,EAAa,kCACbC,EAAa,qCACbk4D,EAAU,8BAIVC,EAAc,MAAQH,EAAU,IAAMC,EAAS,IAC/CG,EAAc,MAAQF,EAAU,IAAMD,EAAS,IAG/Ch4D,EAAWo4D,gFAKXn4D,EAJW,oBAIQD,GAHP,gBAAwB,CAbtB,qBAaoCF,EAAYC,GAAYvmC,KAAK,KAAnE,qBAA2FwmC,EAAW,MAIlHq4D,EAAU,MAAQ,CAACP,EAAWh4D,EAAYC,GAAYvmC,KAAK,KAAO,IAAMymC,EAGxEq4D,EAAgBniG,OAAO,CACzB8hG,EAAU,IAAMF,EAAhBE,oCAA0D,CAACL,EAASK,EAAS,KAAKz+F,KAAK,KAAO,IAC9F2+F,sCAA8C,CAACP,EAASK,EAAUC,EAAa,KAAK1+F,KAAK,KAAO,IAChGy+F,EAAU,IAAMC,EAAhBD,iCACAA,mCATe,mDADA,mDAafJ,EACAQ,GACA7+F,KAAK,KAAM,KAaE,MAJf,SAAsBgT,GACpB,OAAOA,EAAO/T,MAAM6/F,IAAkB,IC/BzB,IAVf,SAAe9rF,EAAQ9N,EAAS+nC,GAI9B,OAHAj6B,EAAS,YAASA,QAGF9f,KAFhBgS,EAAU+nC,OAAQ/5C,EAAYgS,GAGrB,EAAe8N,GAAU,EAAaA,GAAU,EAAWA,GAE7DA,EAAO/T,MAAMiG,IAAY,K,kDChBnB,MANf,SAA0Bg7B,GACxB,OAAO,SAASvwC,GACd,OAAO,YAAQA,EAAQuwC,K,iBCoBZ,IAJf,SAAkBA,GAChB,OAAO,YAAMA,GAAQ,YAAa,YAAMA,IAAS,EAAiBA,K,gDCXrD,MAJf,SAAmBhxC,GACjB,OAAO,OAAA+7C,EAAA,GAAa/7C,IAVT,gBAUmB,YAAOA,I,gBCTnC6vG,EAAY,KAAY,IAAS/2D,MAmBjCA,EAAQ+2D,EAAY,YAAUA,GAAa,EAEhC,O,gDCTA,MAJf,SAAmB7vG,GACjB,OAAO,OAAA+7C,EAAA,GAAa/7C,IAVT,gBAUmB,YAAOA,I,gBCTnC8vG,EAAY,KAAY,IAAS92D,MAmBjCA,EAAQ82D,EAAY,YAAUA,GAAa,EAEhC,O,0CCNA,EAFM,YAfH,CAChB,IAAK,QACL,IAAK,OACL,IAAK,OACL,IAAK,SACL,IAAK,U,OCJHC,EAAkB,WAClBC,EAAqBviG,OAAOsiG,EAAgBlqF,QAqCjC,IAPf,SAAgB/B,GAEd,OADAA,EAAS,YAASA,KACAksF,EAAmBt/F,KAAKoT,GACtCA,EAAOha,QAAQimG,EAAiB,GAChCjsF,I,0CC+BS,EAFI,YAjEG,CAEpB,IAAQ,IAAM,IAAQ,IAAK,IAAQ,IAAK,IAAQ,IAAK,IAAQ,IAAK,IAAQ,IAC1E,IAAQ,IAAM,IAAQ,IAAK,IAAQ,IAAK,IAAQ,IAAK,IAAQ,IAAK,IAAQ,IAC1E,IAAQ,IAAM,IAAQ,IACtB,IAAQ,IAAM,IAAQ,IACtB,IAAQ,IAAM,IAAQ,IAAK,IAAQ,IAAK,IAAQ,IAChD,IAAQ,IAAM,IAAQ,IAAK,IAAQ,IAAK,IAAQ,IAChD,IAAQ,IAAM,IAAQ,IAAK,IAAQ,IAAK,IAAQ,IAChD,IAAQ,IAAM,IAAQ,IAAK,IAAQ,IAAK,IAAQ,IAChD,IAAQ,IAAM,IAAQ,IACtB,IAAQ,IAAM,IAAQ,IAAK,IAAQ,IAAK,IAAQ,IAAK,IAAQ,IAAK,IAAQ,IAC1E,IAAQ,IAAM,IAAQ,IAAK,IAAQ,IAAK,IAAQ,IAAK,IAAQ,IAAK,IAAQ,IAC1E,IAAQ,IAAM,IAAQ,IAAK,IAAQ,IAAK,IAAQ,IAChD,IAAQ,IAAM,IAAQ,IAAK,IAAQ,IAAK,IAAQ,IAChD,IAAQ,IAAM,IAAQ,IAAK,IAAQ,IACnC,IAAQ,KAAM,IAAQ,KACtB,IAAQ,KAAM,IAAQ,KACtB,IAAQ,KAER,IAAU,IAAM,IAAU,IAAK,IAAU,IACzC,IAAU,IAAM,IAAU,IAAK,IAAU,IACzC,IAAU,IAAM,IAAU,IAAK,IAAU,IAAK,IAAU,IACxD,IAAU,IAAM,IAAU,IAAK,IAAU,IAAK,IAAU,IACxD,IAAU,IAAM,IAAU,IAAK,IAAU,IAAK,IAAU,IACxD,IAAU,IAAM,IAAU,IAAK,IAAU,IAAK,IAAU,IAAK,IAAU,IACvE,IAAU,IAAM,IAAU,IAAK,IAAU,IAAK,IAAU,IAAK,IAAU,IACvE,IAAU,IAAM,IAAU,IAAK,IAAU,IAAK,IAAU,IACxD,IAAU,IAAM,IAAU,IAAK,IAAU,IAAK,IAAU,IACxD,IAAU,IAAM,IAAU,IAAK,IAAU,IAAK,IAAU,IACxD,IAAU,IAAM,IAAU,IAAK,IAAU,IAAK,IAAU,IAAK,IAAU,IACvE,IAAU,IAAM,IAAU,IAAK,IAAU,IAAK,IAAU,IAAK,IAAU,IACvE,IAAU,IAAM,IAAU,IAC1B,IAAU,IAAM,IAAU,IAAK,IAAU,IACzC,IAAU,IAAM,IAAU,IAAK,IAAU,IAAK,IAAU,IAAK,IAAU,IACvE,IAAU,IAAM,IAAU,IAAK,IAAU,IAAK,IAAU,IAAK,IAAU,IACvE,IAAU,IAAM,IAAU,IAAK,IAAU,IAAK,IAAU,IACxD,IAAU,IAAM,IAAU,IAAK,IAAU,IAAK,IAAU,IACxD,IAAU,IAAM,IAAU,IAAK,IAAU,IACzC,IAAU,IAAM,IAAU,IAAK,IAAU,IACzC,IAAU,IAAM,IAAU,IAAK,IAAU,IACzC,IAAU,IAAM,IAAU,IAAK,IAAU,IACzC,IAAU,IAAM,IAAU,IAAK,IAAU,IAAK,IAAU,IACxD,IAAU,IAAM,IAAU,IAAK,IAAU,IAAK,IAAU,IACxD,IAAU,IAAM,IAAU,IAAK,IAAU,IACzC,IAAU,IAAM,IAAU,IAAK,IAAU,IACzC,IAAU,IAAM,IAAU,IAAK,IAAU,IAAK,IAAU,IAAK,IAAU,IAAK,IAAU,IACtF,IAAU,IAAM,IAAU,IAAK,IAAU,IAAK,IAAU,IAAK,IAAU,IAAK,IAAU,IACtF,IAAU,IAAM,IAAU,IAC1B,IAAU,IAAM,IAAU,IAAK,IAAU,IACzC,IAAU,IAAM,IAAU,IAAK,IAAU,IACzC,IAAU,IAAM,IAAU,IAAK,IAAU,IACzC,IAAU,KAAM,IAAU,KAC1B,IAAU,KAAM,IAAU,KAC1B,IAAU,KAAM,IAAU,M,OCrDxBmsF,EAAU,8CAeVC,EAAcziG,OANJ,kDAMoB,KAyBnB,IALf,SAAgBqW,GAEd,OADAA,EAAS,YAASA,KACDA,EAAOha,QAAQmmG,EAAS,GAAcnmG,QAAQomG,EAAa,M,6BCpB/D,IAZf,SAA2B5sG,EAAOtD,EAAOg/C,GAIvC,IAHA,IAAIx7C,GAAS,EACTC,EAAkB,MAATH,EAAgB,EAAIA,EAAMG,SAE9BD,EAAQC,GACf,GAAIu7C,EAAWh/C,EAAOsD,EAAME,IAC1B,OAAO,EAGX,OAAO,I,6BClBT,YAOIw+C,EAAcp4C,KAAKq4C,MACnBpF,EAAYjzC,KAAKkzC,IA0DN,IA3Cf,SAA2Bx5C,EAAOtD,EAAOuD,EAAUs8D,GACjD,IAAIC,EAAM,EACNnxD,EAAgB,MAATrL,EAAgB,EAAIA,EAAMG,OACrC,GAAa,IAATkL,EACF,OAAO,EAST,IALA,IAAIwhG,GADJnwG,EAAQuD,EAASvD,KACQA,EACrBowG,EAAsB,OAAVpwG,EACZqwG,EAAc,YAASrwG,GACvBswG,OAA2BtsG,IAAVhE,EAEd8/D,EAAMnxD,GAAM,CACjB,IAAIqxD,EAAMhe,GAAa8d,EAAMnxD,GAAQ,GACjCukB,EAAW3vB,EAASD,EAAM08D,IAC1BuwC,OAA4BvsG,IAAbkvB,EACfs9E,EAAyB,OAAbt9E,EACZu9E,EAAiBv9E,GAAaA,EAC9Bw9E,EAAc,YAASx9E,GAE3B,GAAIi9E,EACF,IAAIQ,EAAS9wC,GAAc4wC,OAE3BE,EADSL,EACAG,IAAmB5wC,GAAc0wC,GACjCH,EACAK,GAAkBF,IAAiB1wC,IAAe2wC,GAClDH,EACAI,GAAkBF,IAAiBC,IAAc3wC,IAAe6wC,IAChEF,IAAaE,IAGb7wC,EAAc3sC,GAAYlzB,EAAUkzB,EAAWlzB,GAEtD2wG,EACF7wC,EAAME,EAAM,EAEZrxD,EAAOqxD,EAGX,OAAOnjB,EAAUluC,EA3DGoxD,c,6BCJtB,mBAII6wC,EAAe,mDACfC,EAAgB,QAuBL,IAbf,SAAe7wG,EAAOS,GACpB,GAAI,YAAQT,GACV,OAAO,EAET,IAAIqD,SAAcrD,EAClB,QAAY,UAARqD,GAA4B,UAARA,GAA4B,WAARA,GAC/B,MAATrD,IAAiB,YAASA,MAGvB6wG,EAAcngG,KAAK1Q,KAAW4wG,EAAalgG,KAAK1Q,IAC1C,MAAVS,GAAkBT,KAASP,OAAOgB,M,6BCHxB,IAZf,SAAmB6C,EAAOc,GAIxB,IAHA,IAAIZ,GAAS,EACTC,EAAkB,MAATH,EAAgB,EAAIA,EAAMG,SAE9BD,EAAQC,GACf,GAAIW,EAAUd,EAAME,GAAQA,EAAOF,GACjC,OAAO,EAGX,OAAO,I,6BCFM,IAVf,SAAoB+E,GAClB,IAAI7E,GAAS,EACTP,EAASD,MAAMqF,EAAIq2C,MAKvB,OAHAr2C,EAAI4kC,SAAQ,SAASjtC,EAAOM,GAC1B2C,IAASO,GAAS,CAAClD,EAAKN,MAEnBiD,I,6BCKM,IAVf,SAAmBzC,EAAG+C,GAIpB,IAHA,IAAIC,GAAS,EACTP,EAASD,MAAMxC,KAEVgD,EAAQhD,GACfyC,EAAOO,GAASD,EAASC,GAE3B,OAAOP,I,6BChBT,oBAOIkvD,EAHc1yD,OAAOkB,UAGcwxD,qBAGnC2+C,EAAmBrxG,OAAOsxG,sBAS1BC,EAAcF,EAA+B,SAASrwG,GACxD,OAAc,MAAVA,EACK,IAETA,EAAShB,OAAOgB,GACT,YAAYqwG,EAAiBrwG,IAAS,SAAS43C,GACpD,OAAO8Z,EAAqBjzD,KAAKuB,EAAQ43C,QANR,IAUtB,O,6BC7Bf,oBAuBe,IAbf,SAAsB53C,GAIpB,IAHA,IAAIwC,EAAS,YAAKxC,GACdgD,EAASR,EAAOQ,OAEbA,KAAU,CACf,IAAInD,EAAM2C,EAAOQ,GACbzD,EAAQS,EAAOH,GAEnB2C,EAAOQ,GAAU,CAACnD,EAAKN,EAAO,YAAmBA,IAEnD,OAAOiD,I,6BCpBT,oBA6De,IA5Cf,SAAqBxC,EAAQolB,EAAQorF,EAAW56D,GAC9C,IAAI7yC,EAAQytG,EAAUxtG,OAClBA,EAASD,EACT0tG,GAAgB76D,EAEpB,GAAc,MAAV51C,EACF,OAAQgD,EAGV,IADAhD,EAAShB,OAAOgB,GACT+C,KAAS,CACd,IAAI6gB,EAAO4sF,EAAUztG,GACrB,GAAK0tG,GAAgB7sF,EAAK,GAClBA,EAAK,KAAO5jB,EAAO4jB,EAAK,MACtBA,EAAK,KAAM5jB,GAEnB,OAAO,EAGX,OAAS+C,EAAQC,GAAQ,CAEvB,IAAInD,GADJ+jB,EAAO4sF,EAAUztG,IACF,GACX+2D,EAAW95D,EAAOH,GAClB4gD,EAAW78B,EAAK,GAEpB,GAAI6sF,GAAgB7sF,EAAK,IACvB,QAAiBrgB,IAAbu2D,KAA4Bj6D,KAAOG,GACrC,OAAO,MAEJ,CACL,IAAI2hB,EAAQ,IAAI,IAChB,GAAIi0B,EACF,IAAIpzC,EAASozC,EAAWkkB,EAAUrZ,EAAU5gD,EAAKG,EAAQolB,EAAQzD,GAEnE,UAAiBpe,IAAXf,EACE,YAAYi+C,EAAUqZ,EAAU42C,EAA+C96D,EAAYj0B,GAC3Fnf,GAEN,OAAO,GAIb,OAAO,I,6BC7CM,IANf,SAAsB3C,GACpB,OAAO,SAASG,GACd,OAAiB,MAAVA,OAAiBuD,EAAYvD,EAAOH,M,6BCT/C,aAaI8wG,EAAU,cAEC,O,6BCff,aAee,IANf,SAA0BC,GACxB,IAAIpuG,EAAS,IAAIouG,EAAY1pG,YAAY0pG,EAAYr5D,YAErD,OADA,IAAI,IAAW/0C,GAAQmhB,IAAI,IAAI,IAAWitF,IACnCpuG,I,6BCZT,8BAgBe,IAJf,SAAsBxC,GACpB,OAAO,YAAeA,EAAQ,IAAQ,O,6BCAzB,IANf,SAAwBA,GACtB,OAAO,SAASH,GACd,OAAiB,MAAVG,OAAiBuD,EAAYvD,EAAOH,M,6BCT/C,WAkBe,IANf,SAAoBG,EAAQgtB,GAC1B,OAAO,YAASA,GAAO,SAASntB,GAC9B,OAAOG,EAAOH,Q,6BCWH,IAbf,SAAqBgD,EAAOC,EAAUi9C,EAAaiC,GACjD,IAAIj/C,GAAS,EACTC,EAAkB,MAATH,EAAgB,EAAIA,EAAMG,OAKvC,IAHIg/C,GAAah/C,IACf+8C,EAAcl9C,IAAQE,MAEfA,EAAQC,GACf+8C,EAAcj9C,EAASi9C,EAAal9C,EAAME,GAAQA,EAAOF,GAE3D,OAAOk9C,I,yDCHM,MAPf,SAA0B//C,EAAQH,EAAKN,SACtBgE,IAAVhE,IAAwB,OAAAyI,EAAA,GAAGhI,EAAOH,GAAMN,SAC9BgE,IAAVhE,KAAyBM,KAAOG,KACnC,YAAgBA,EAAQH,EAAKN,I,0GCKlB,MAZf,SAAiBS,EAAQH,GACvB,IAAY,gBAARA,GAAgD,mBAAhBG,EAAOH,KAIhC,aAAPA,EAIJ,OAAOG,EAAOH,I,SC4ED,MA9Df,SAAuBG,EAAQolB,EAAQvlB,EAAK09C,EAAUszD,EAAWj7D,EAAYj0B,GAC3E,IAAIm4C,EAAW,EAAQ95D,EAAQH,GAC3B4gD,EAAW,EAAQr7B,EAAQvlB,GAC3Bu4C,EAAUz2B,EAAMxiB,IAAIshD,GAExB,GAAIrI,EACF,EAAiBp4C,EAAQH,EAAKu4C,OADhC,CAIA,IAAItC,EAAWF,EACXA,EAAWkkB,EAAUrZ,EAAW5gD,EAAM,GAAKG,EAAQolB,EAAQzD,QAC3Dpe,EAEA65C,OAAwB75C,IAAbuyC,EAEf,GAAIsH,EAAU,CACZ,IAAIvP,EAAQ,OAAAvrC,EAAA,GAAQm+C,GAChBqwD,GAAUjjE,GAAS,OAAAsK,EAAA,GAASsI,GAC5BswD,GAAWljE,IAAUijE,GAAU,OAAAhiE,EAAA,GAAa2R,GAEhD3K,EAAW2K,EACP5S,GAASijE,GAAUC,EACjB,OAAAzuG,EAAA,GAAQw3D,GACVhkB,EAAWgkB,EAEJ,OAAAxb,EAAA,GAAkBwb,GACzBhkB,EAAW,YAAUgkB,GAEdg3C,GACP1zD,GAAW,EACXtH,EAAW,YAAY2K,GAAU,IAE1BswD,GACP3zD,GAAW,EACXtH,EAAW,YAAgB2K,GAAU,IAGrC3K,EAAW,GAGN,OAAA7sC,EAAA,GAAcw3C,IAAa,OAAAj9C,EAAA,GAAYi9C,IAC9C3K,EAAWgkB,EACP,OAAAt2D,EAAA,GAAYs2D,GACdhkB,EAAW,OAAAqU,EAAA,GAAc2P,GAEjB,OAAAh2D,EAAA,GAASg2D,KAAa,OAAAz0D,EAAA,GAAWy0D,KACzChkB,EAAW,YAAgB2K,KAI7BrD,GAAW,EAGXA,IAEFz7B,EAAMgC,IAAI88B,EAAU3K,GACpB+6D,EAAU/6D,EAAU2K,EAAUlD,EAAU3H,EAAYj0B,GACpDA,EAAc,OAAE8+B,IAElB,EAAiBzgD,EAAQH,EAAKi2C,K,QCjDjB,IAtBf,SAASk7D,EAAUhxG,EAAQolB,EAAQm4B,EAAU3H,EAAYj0B,GACnD3hB,IAAWolB,GAGf,YAAQA,GAAQ,SAASq7B,EAAU5gD,GAEjC,GADA8hB,IAAUA,EAAQ,IAAI,KAClB,OAAA7d,EAAA,GAAS28C,GACX,EAAczgD,EAAQolB,EAAQvlB,EAAK09C,EAAUyzD,EAAWp7D,EAAYj0B,OAEjE,CACH,IAAIm0B,EAAWF,EACXA,EAAW,EAAQ51C,EAAQH,GAAM4gD,EAAW5gD,EAAM,GAAKG,EAAQolB,EAAQzD,QACvEpe,OAEaA,IAAbuyC,IACFA,EAAW2K,GAEb,EAAiBzgD,EAAQH,EAAKi2C,MAE/BoB,EAAA,K,kDCjCU,EAFE,YAAQl4C,OAAOyR,KAAMzR,QCIlC,EAHcA,OAAOkB,UAGQC,eAsBlB,IAbf,SAAkBH,GAChB,IAAK,YAAYA,GACf,OAAO,EAAWA,GAEpB,IAAIwC,EAAS,GACb,IAAK,IAAI3C,KAAOb,OAAOgB,GACjB,EAAevB,KAAKuB,EAAQH,IAAe,eAAPA,GACtC2C,EAAOqB,KAAKhE,GAGhB,OAAO2C,I,0DCLM,EATQ,IAA4B,SAASE,EAAM2gB,GAChE,OAAO,YAAe3gB,EAAM,WAAY,CACtC,cAAgB,EAChB,YAAc,EACd,MAAS,OAAAs9C,EAAA,GAAS38B,GAClB,UAAY,KALwB+1B,EAAA,E,SCDpC63D,EAAc,YAAS,GAEZ,O,6BCbf,IAGIC,EAHJ,MAGiB,EAAK,sBAEP,O,6BCLf,YAEIjyG,EAAkB,WACpB,IACE,IAAIyD,EAAO,YAAU1D,OAAQ,kBAE7B,OADA0D,EAAK,GAAI,GAAI,IACNA,EACP,MAAOwM,KALU,GAQN,O,6BCVf,IAGIiiG,EAHJ,MAGiB,EAAKA,WAEP,O,gBCLf,IAIIljC,EAAW,aAEG,IANJ,EAAQ,KAEEmjC,YAKtBnjC,EAAWrsD,QAAQrY,OAGrB,IAAIwe,EAAWkmD,EACf5vE,EAAOD,QAAU2pB,G,gBCXjB,IAAIioB,EAAS,EAAQ,IAEjBqhE,EAAQ,EAAQ,KAEhBC,EAAU,EAAQ,KAElBC,EAAW,EAAQ,KAYvB,SAASxhE,EAAYtV,GAInB,IAAK,IAAI57B,KAHT47B,EAAOA,GAAQ,GACf62E,EAAQ7yG,KAAK4C,KAAMo5B,GAEFA,EACXA,EAAKt6B,eAAetB,IAAkB,UAATA,IAC/BwC,KAAKxC,GAAQ47B,EAAK57B,IAQtBwC,KAAKskB,MAAQ,IAAI0rF,EAAM52E,EAAK9U,MAAOtkB,MACnCA,KAAK+xC,MAAQ,KAIb/xC,KAAKmwG,YAAc,KAIrBzhE,EAAY7vC,UAAY,CACtBgH,YAAa6oC,EACbntC,KAAM,cAON6uC,SAAS,EASTggE,WAAW,EAOXC,EAAG,EAOHC,GAAI,EAQJC,OAAQ,EAQRC,WAAW,EAQXC,UAAU,EAQV5tC,QAAQ,EAOR6tC,SAAS,EAOTC,OAAQ,UAORC,WAAW,EAOXC,aAAa,EAKbC,aAAa,EAMbC,iBAAkB,EAClBC,YAAa,SAAUxhE,KACvByhE,WAAY,SAAUzhE,KAOtBD,MAAO,SAAUC,EAAKC,KAOtBY,gBAAiB,aAQjBoC,QAAS,SAAUF,EAAGC,GACpB,OAAOxyC,KAAKkxG,YAAY3+D,EAAGC,IAO7Bq7B,SAAU,SAAUvhC,EAAIvsC,GACtBusC,EAAGlvC,KAAK2C,EAASC,OASnBkxG,YAAa,SAAU3+D,EAAGC,GACxB,IAAI2+D,EAAQnxG,KAAK2yC,sBAAsBJ,EAAGC,GAE1C,OADWxyC,KAAKqwC,kBACJoC,QAAQ0+D,EAAM,GAAIA,EAAM,KAMtCr+D,MAAO,WACL9yC,KAAKowC,QAAUpwC,KAAKgzC,aAAc,EAClChzC,KAAK+xC,MAAQ,KACb/xC,KAAKizC,MAAQjzC,KAAKizC,KAAKC,WAsBzBk+D,aAAc,SAAU/9D,GACtB,OAAOrzC,KAAK66B,QAAQ,QAASwY,IAE/BC,OAAQ,SAAU90C,EAAKN,GACT,UAARM,EACFyxG,EAAQpxG,UAAUy0C,OAAOl2C,KAAK4C,KAAMxB,EAAKN,GAEzC8B,KAAKskB,MAAMhC,IAAIpkB,IAQnBmzG,SAAU,SAAU7yG,EAAKN,GAGvB,OAFA8B,KAAKskB,MAAMhC,IAAI9jB,EAAKN,GACpB8B,KAAK8yC,OAAM,GACJ9yC,MAOTsxG,SAAU,SAAUrtG,GAGlB,OAFAjE,KAAKskB,MAAQ,IAAI0rF,EAAM/rG,EAAKjE,MAC5BA,KAAK8yC,OAAM,GACJ9yC,MAsBTuxG,sBAAuB,MAEzB5iE,EAAO3B,SAAS0B,EAAauhE,GAC7BthE,EAAOtB,MAAMqB,EAAawhE,GAE1B,IAAIxpF,EAAWgoB,EACf1xC,EAAOD,QAAU2pB,G,6BCnRjB,IACQ0rC,EADJC,EAAaryD,MAAQA,KAAKqyD,YACtBD,EAAgB,SAAU70D,EAAG0N,GAI7B,OAHAmnD,EAAgBz0D,OAAO20D,gBAClB,CAAEC,UAAW,cAAgBrxD,OAAS,SAAU3D,EAAG0N,GAAK1N,EAAEg1D,UAAYtnD,IACvE,SAAU1N,EAAG0N,GAAK,IAAK,IAAIlM,KAAKkM,EAAOtN,OAAOkB,UAAUC,eAAe1B,KAAK6N,EAAGlM,KAAIxB,EAAEwB,GAAKkM,EAAElM,MAC3ExB,EAAG0N,IAErB,SAAU1N,EAAG0N,GAChB,GAAiB,mBAANA,GAA0B,OAANA,EAC3B,MAAM,IAAImU,UAAU,uBAAyBtS,OAAO7B,GAAK,iCAE7D,SAASunD,IAAOxyD,KAAK6F,YAActI,EADnC60D,EAAc70D,EAAG0N,GAEjB1N,EAAEsB,UAAkB,OAANoM,EAAatN,OAAOY,OAAO0M,IAAMunD,EAAG3zD,UAAYoM,EAAEpM,UAAW,IAAI2zD,KAGvF70D,OAAOC,eAAeb,EAAS,aAAc,CAAEmB,OAAO,IACtDnB,EAAQy0G,aAAU,EAClB,IACIA,EAAyB,SAAUt+C,GAEnC,SAASs+C,IACL,IAAIr+C,EAAmB,OAAXD,GAAmBA,EAAO1vD,MAAMxD,KAAMyG,YAAczG,KAIhE,OAHAmzD,EAAMs+C,WAAY,EAClBt+C,EAAMu+C,WAAY,EAClBv+C,EAAMw+C,gBAAiB,EAChBx+C,EAwDX,OA9DAd,EAAUm/C,EAASt+C,GAQnBv1D,OAAOC,eAAe4zG,EAAQ3yG,UAAW,MAAO,CAC5Cf,IAAK,WACD,OAAOkC,KAAK4xG,UAEhB/zG,YAAY,EACZwkB,cAAc,IAElB1kB,OAAOC,eAAe4zG,EAAQ3yG,UAAW,QAAS,CAC9Cf,IAAK,WACD,GAA4B,MAAxBkC,KAAK6xG,gBACL,MAAM,IAAI7uG,MAAM,gIAIpB,OAAOhD,KAAK6xG,gBAAgB1qG,KAEhCtJ,YAAY,EACZwkB,cAAc,IAElBmvF,EAAQ3yG,UAAUizG,cAAgB,SAAU/yG,EAAGY,GAC3C,GAAIK,KAAK47D,6BACL,OAAO57D,KAAK47D,6BAA6B78D,GAE7C,MAAM,IAAIiE,MAAM,sFAGpBwuG,EAAQ3yG,UAAUkzG,UAAY,SAAU5zG,EAAGwB,GACvC,GAAIxB,GAAK,EACL,OAAO,EAEX,IAAIwD,EAAS3B,KAAK2B,SAClB,OAAIxD,GAAK,EACEwD,EAEJA,EAASxD,GAEpBqzG,EAAQ3yG,UAAUmzG,UAAY,SAAU7zG,GACpC,GAAI6B,KAAKu8D,SACL,OAAOv8D,KAAKu8D,SAASp+D,GAEzB,MAAM,IAAI6E,MAAM,8DAEpBwuG,EAAQ3yG,UAAUozG,SAAW,SAAU9zG,GACnC,GAAI6B,KAAK27D,QACL,OAAO37D,KAAK27D,QAAQx9D,GAExB,MAAM,IAAI6E,MAAM,4DAEpBwuG,EAAQ3yG,UAAUqzG,WAAa,SAAU/zG,GACrC,GAAI6B,KAAK+7D,UACL,OAAO/7D,KAAK+7D,UAAU59D,GAE1B,MAAM,IAAI6E,MAAM,gEAEbwuG,EA/DiB,CADX,EAAQ,IAiEZx7C,UACbj5D,EAAQy0G,QAAUA,G,6BCpFlB,6BAee,IAJf,SAAoB7yG,GAClB,OAAO,YAAeA,EAAQ,IAAM,O,6BCXtC,IAGIuhD,EAAcp4C,KAAKq4C,MA8BR,IApBf,SAAoBn+B,EAAQtjB,GAC1B,IAAIyC,EAAS,GACb,IAAK6gB,GAAUtjB,EAAI,GAAKA,EAfH,iBAgBnB,OAAOyC,EAIT,GACMzC,EAAI,IACNyC,GAAU6gB,IAEZtjB,EAAIwhD,EAAYxhD,EAAI,MAElBsjB,GAAUA,SAELtjB,GAET,OAAOyC,I,cCzBT,IAAIgxG,EAAYjxG,MAAMrC,UAAUyE,MAoB5B8uG,EAAW,SAAUC,GACvBryG,KAAKsyG,WAAa,GAClBtyG,KAAKuyG,iBAAmBF,GAsN1B,SAASjqF,EAAGoqF,EAAUhqF,EAAOgwE,EAAO3oF,EAAS9P,EAAS6mE,GACpD,IAAI6rC,EAAKD,EAASF,WAQlB,GANqB,mBAAV9Z,IACTz4F,EAAU8P,EACVA,EAAU2oF,EACVA,EAAQ,OAGL3oF,IAAY2Y,EACf,OAAOgqF,EAGTha,EAvBF,SAAwBz0D,EAAMy0D,GAC5B,IAAI6Z,EAAiBtuE,EAAKwuE,iBAM1B,OAJa,MAAT/Z,GAAiB6Z,GAAkBA,EAAeK,iBACpDla,EAAQ6Z,EAAeK,eAAela,IAGjCA,EAgBCka,CAAeF,EAAUha,GAE5Bia,EAAGjqF,KACNiqF,EAAGjqF,GAAS,IAGd,IAAK,IAAIvrB,EAAI,EAAGA,EAAIw1G,EAAGjqF,GAAO7mB,OAAQ1E,IACpC,GAAIw1G,EAAGjqF,GAAOvrB,GAAG4D,IAAMgP,EACrB,OAAO2iG,EAIX,IAAIhrF,EAAO,CACT3mB,EAAGgP,EACHyY,IAAKs+C,EACL4xB,MAAOA,EACPhpD,IAAKzvC,GAAWyyG,EAGhBG,WAAY9iG,EAAQ+iG,sBAElBv8D,EAAYo8D,EAAGjqF,GAAO7mB,OAAS,EAC/BkxG,EAAWJ,EAAGjqF,GAAO6tB,GAEzB,OADAw8D,GAAYA,EAASF,WAAaF,EAAGjqF,GAAOnhB,OAAOgvC,EAAW,EAAG7uB,GAAQirF,EAAGjqF,GAAOhmB,KAAKglB,GACjFgrF,EAxPTJ,EAASvzG,UAAY,CACnBgH,YAAausG,EAUb9pF,IAAK,SAAUE,EAAOgwE,EAAO3oF,EAAS9P,GACpC,OAAOqoB,EAAGpoB,KAAMwoB,EAAOgwE,EAAO3oF,EAAS9P,GAAS,IAWlDqoB,GAAI,SAAUI,EAAOgwE,EAAO3oF,EAAS9P,GACnC,OAAOqoB,EAAGpoB,KAAMwoB,EAAOgwE,EAAO3oF,EAAS9P,GAAS,IASlD+yG,SAAU,SAAUtqF,GAClB,IAAIiqF,EAAKzyG,KAAKsyG,WACd,OAAQG,EAAGjqF,KAAWiqF,EAAGjqF,GAAO7mB,QAWlC8mB,IAAK,SAAUD,EAAO3Y,GACpB,IAAI4iG,EAAKzyG,KAAKsyG,WAEd,IAAK9pF,EAEH,OADAxoB,KAAKsyG,WAAa,GACXtyG,KAGT,GAAI6P,EAAS,CACX,GAAI4iG,EAAGjqF,GAAQ,CAGb,IAFA,IAAIuqF,EAAU,GAEL91G,EAAI,EAAGC,EAAIu1G,EAAGjqF,GAAO7mB,OAAQ1E,EAAIC,EAAGD,IACvCw1G,EAAGjqF,GAAOvrB,GAAG4D,IAAMgP,GACrBkjG,EAAQvwG,KAAKiwG,EAAGjqF,GAAOvrB,IAI3Bw1G,EAAGjqF,GAASuqF,EAGVN,EAAGjqF,IAA+B,IAArBiqF,EAAGjqF,GAAO7mB,eAClB8wG,EAAGjqF,eAGLiqF,EAAGjqF,GAGZ,OAAOxoB,MAQTkpB,QAAS,SAAU3nB,GACjB,IAAIkxG,EAAKzyG,KAAKsyG,WAAW/wG,GACrB8wG,EAAiBryG,KAAKuyG,iBAE1B,GAAIE,EAAI,CACN,IAAIt9F,EAAO1O,UACPusG,EAAS79F,EAAKxT,OAEdqxG,EAAS,IACX79F,EAAOg9F,EAAU/0G,KAAK+X,EAAM,IAK9B,IAFA,IAAIlO,EAAMwrG,EAAG9wG,OAEJ1E,EAAI,EAAGA,EAAIgK,GAAM,CACxB,IAAIgsG,EAAQR,EAAGx1G,GAEf,GAAIo1G,GAAkBA,EAAe7gG,QAAyB,MAAfyhG,EAAMza,QAAkB6Z,EAAe7gG,OAAOjQ,EAAM0xG,EAAMza,OACvGv7F,QADF,CAMA,OAAQ+1G,GACN,KAAK,EACHC,EAAMpyG,EAAEzD,KAAK61G,EAAMzjE,KACnB,MAEF,KAAK,EACHyjE,EAAMpyG,EAAEzD,KAAK61G,EAAMzjE,IAAKr6B,EAAK,IAC7B,MAEF,KAAK,EACH89F,EAAMpyG,EAAEzD,KAAK61G,EAAMzjE,IAAKr6B,EAAK,GAAIA,EAAK,IACtC,MAEF,QAEE89F,EAAMpyG,EAAE2C,MAAMyvG,EAAMzjE,IAAKr6B,GAIzB89F,EAAM3qF,KACRmqF,EAAGprG,OAAOpK,EAAG,GAEbgK,KAEAhK,MAMN,OADAo1G,GAAkBA,EAAea,cAAgBb,EAAea,aAAa3xG,GACtEvB,MAQTmzG,mBAAoB,SAAU5xG,GAC5B,IAAIkxG,EAAKzyG,KAAKsyG,WAAW/wG,GACrB8wG,EAAiBryG,KAAKuyG,iBAE1B,GAAIE,EAAI,CACN,IAAIt9F,EAAO1O,UACPusG,EAAS79F,EAAKxT,OAEdqxG,EAAS,IACX79F,EAAOg9F,EAAU/0G,KAAK+X,EAAM,EAAGA,EAAKxT,OAAS,IAM/C,IAHA,IAAI6tC,EAAMr6B,EAAKA,EAAKxT,OAAS,GACzBsF,EAAMwrG,EAAG9wG,OAEJ1E,EAAI,EAAGA,EAAIgK,GAAM,CACxB,IAAIgsG,EAAQR,EAAGx1G,GAEf,GAAIo1G,GAAkBA,EAAe7gG,QAAyB,MAAfyhG,EAAMza,QAAkB6Z,EAAe7gG,OAAOjQ,EAAM0xG,EAAMza,OACvGv7F,QADF,CAMA,OAAQ+1G,GACN,KAAK,EACHC,EAAMpyG,EAAEzD,KAAKoyC,GACb,MAEF,KAAK,EACHyjE,EAAMpyG,EAAEzD,KAAKoyC,EAAKr6B,EAAK,IACvB,MAEF,KAAK,EACH89F,EAAMpyG,EAAEzD,KAAKoyC,EAAKr6B,EAAK,GAAIA,EAAK,IAChC,MAEF,QAEE89F,EAAMpyG,EAAE2C,MAAMgsC,EAAKr6B,GAInB89F,EAAM3qF,KACRmqF,EAAGprG,OAAOpK,EAAG,GAEbgK,KAEAhK,MAMN,OADAo1G,GAAkBA,EAAea,cAAgBb,EAAea,aAAa3xG,GACtEvB,OA6IX,IAAI0mB,EAAW0rF,EACfp1G,EAAOD,QAAU2pB,G,gBClXjB,IAAI0rF,EAAW,EAAQ,KAEvBr1G,EAAQq2G,WAAahB,EAErB,IAAIptC,EAAM,EAAQ,IAEdquC,EAAO,EAAQ,KAEfC,EAAaD,EAAKC,WAClBC,EAA6BF,EAAKE,2BAKlCC,EAAgC,oBAAXvwG,UAA4BA,OAAOiO,iBACxDuiG,EAAkB,iDAClBC,EAAW,GAyBf,SAASC,EAAcjkG,EAAI7B,EAAGsjD,EAAKyiD,GA6BjC,OA5BAziD,EAAMA,GAAO,GAOTyiD,IAAc5uC,EAAI7L,gBACpB06C,EAAcnkG,EAAI7B,EAAGsjD,GAQd6T,EAAIhM,QAAQU,SAAuB,MAAZ7rD,EAAEimG,QAAkBjmG,EAAEimG,SAAWjmG,EAAEsf,SAC/DgkC,EAAI4iD,IAAMlmG,EAAEimG,OACZ3iD,EAAI6iD,IAAMnmG,EAAEomG,QAEQ,MAAbpmG,EAAEsf,SACPgkC,EAAI4iD,IAAMlmG,EAAEsf,QACZgkC,EAAI6iD,IAAMnmG,EAAEuf,SAGVymF,EAAcnkG,EAAI7B,EAAGsjD,GAGtBA,EAGT,SAAS0iD,EAAcnkG,EAAI7B,EAAGsjD,GAE5B,GAAI6T,EAAI1L,cAAgB5pD,EAAG2mB,sBAAuB,CAChD,IAAI/Z,EAAKzO,EAAEof,QACPinF,EAAKrmG,EAAEqf,QAEX,GAAIomF,EAAW5jG,GAAK,CAMlB,IAAIwlB,EAAMxlB,EAAG2mB,wBAGb,OAFA86B,EAAI4iD,IAAMz3F,EAAK4Y,EAAIqB,UACnB46B,EAAI6iD,IAAME,EAAKh/E,EAAIjkB,KAGnB,GAAIsiG,EAA2BG,EAAUhkG,EAAI4M,EAAI43F,GAG/C,OAFA/iD,EAAI4iD,IAAML,EAAS,QACnBviD,EAAI6iD,IAAMN,EAAS,IAMzBviD,EAAI4iD,IAAM5iD,EAAI6iD,IAAM,EAYtB,SAASG,EAAetmG,GACtB,OAAOA,GAAK5K,OAAOulB,MAwHrB,IAAI/E,EAAO+vF,EAAc,SAAU3lG,GACjCA,EAAEob,iBACFpb,EAAEkb,kBACFlb,EAAEumG,cAAe,GACf,SAAUvmG,GACZA,EAAE6d,aAAc,EAChB7d,EAAEumG,cAAe,GAyBnBr3G,EAAQ42G,cAAgBA,EACxB52G,EAAQo3G,eAAiBA,EACzBp3G,EAAQmxE,eAlIR,SAAwBx+D,EAAI7B,EAAG+lG,GAG7B,GAAa,OAFb/lG,EAAIsmG,EAAetmG,IAEbkmG,IACJ,OAAOlmG,EAGT,IAAIwmG,EAAYxmG,EAAEtM,KAGlB,GAFc8yG,GAAaA,EAAU5wG,QAAQ,UAAY,EAKlD,CACL,IAAI6wG,EAAsB,aAAdD,EAA2BxmG,EAAE4f,cAAc,GAAK5f,EAAEwe,eAAe,GAC7EioF,GAASX,EAAcjkG,EAAI4kG,EAAOzmG,EAAG+lG,QAJrCD,EAAcjkG,EAAI7B,EAAGA,EAAG+lG,GACxB/lG,EAAE0mG,QAAU1mG,EAAE2mG,WAAa3mG,EAAE2mG,WAAa,MAAQ3mG,EAAE0e,QAAU,GAAK,EAUrE,IAAIrB,EAASrd,EAAEqd,OAUf,OARe,MAAXrd,EAAE+f,YAA4B1rB,IAAXgpB,GAAwBuoF,EAAgB7kG,KAAKf,EAAEtM,QACpEsM,EAAE+f,MAAiB,EAAT1C,EAAa,EAAa,EAATA,EAAa,EAAa,EAATA,EAAa,EAAI,GAOxDrd,GAmGT9Q,EAAQmU,iBAvFR,SAA0BxB,EAAIlS,EAAMqS,EAAS4qB,GACvC+4E,EAqBF9jG,EAAGwB,iBAAiB1T,EAAMqS,EAAS4qB,GAGnC/qB,EAAGyB,YAAY,KAAO3T,EAAMqS,IA+DhC9S,EAAQ8jB,oBAnDR,SAA6BnR,EAAIlS,EAAMqS,EAAS4qB,GAC1C+4E,EACF9jG,EAAGmR,oBAAoBrjB,EAAMqS,EAAS4qB,GAEtC/qB,EAAG+kG,YAAY,KAAOj3G,EAAMqS,IAgDhC9S,EAAQ0mB,KAAOA,EACf1mB,EAAQ23G,mCArBR,SAA4C7mG,GAC1C,OAAmB,IAAZA,EAAE+f,OAA2B,IAAZ/f,EAAE+f,OAqB5B7wB,EAAQ43G,aAbR,SAAsB9mG,GAEpB,OAAOA,EAAE+f,MAAQ,I,gBClQnB,IAAIgnF,EAAM,EAAQ,KAEdC,EAAiB,CACnB,YAAe,CAAC,EAAG,EAAG,EAAG,GACzB,UAAa,CAAC,IAAK,IAAK,IAAK,GAC7B,aAAgB,CAAC,IAAK,IAAK,IAAK,GAChC,KAAQ,CAAC,EAAG,IAAK,IAAK,GACtB,WAAc,CAAC,IAAK,IAAK,IAAK,GAC9B,MAAS,CAAC,IAAK,IAAK,IAAK,GACzB,MAAS,CAAC,IAAK,IAAK,IAAK,GACzB,OAAU,CAAC,IAAK,IAAK,IAAK,GAC1B,MAAS,CAAC,EAAG,EAAG,EAAG,GACnB,eAAkB,CAAC,IAAK,IAAK,IAAK,GAClC,KAAQ,CAAC,EAAG,EAAG,IAAK,GACpB,WAAc,CAAC,IAAK,GAAI,IAAK,GAC7B,MAAS,CAAC,IAAK,GAAI,GAAI,GACvB,UAAa,CAAC,IAAK,IAAK,IAAK,GAC7B,UAAa,CAAC,GAAI,IAAK,IAAK,GAC5B,WAAc,CAAC,IAAK,IAAK,EAAG,GAC5B,UAAa,CAAC,IAAK,IAAK,GAAI,GAC5B,MAAS,CAAC,IAAK,IAAK,GAAI,GACxB,eAAkB,CAAC,IAAK,IAAK,IAAK,GAClC,SAAY,CAAC,IAAK,IAAK,IAAK,GAC5B,QAAW,CAAC,IAAK,GAAI,GAAI,GACzB,KAAQ,CAAC,EAAG,IAAK,IAAK,GACtB,SAAY,CAAC,EAAG,EAAG,IAAK,GACxB,SAAY,CAAC,EAAG,IAAK,IAAK,GAC1B,cAAiB,CAAC,IAAK,IAAK,GAAI,GAChC,SAAY,CAAC,IAAK,IAAK,IAAK,GAC5B,UAAa,CAAC,EAAG,IAAK,EAAG,GACzB,SAAY,CAAC,IAAK,IAAK,IAAK,GAC5B,UAAa,CAAC,IAAK,IAAK,IAAK,GAC7B,YAAe,CAAC,IAAK,EAAG,IAAK,GAC7B,eAAkB,CAAC,GAAI,IAAK,GAAI,GAChC,WAAc,CAAC,IAAK,IAAK,EAAG,GAC5B,WAAc,CAAC,IAAK,GAAI,IAAK,GAC7B,QAAW,CAAC,IAAK,EAAG,EAAG,GACvB,WAAc,CAAC,IAAK,IAAK,IAAK,GAC9B,aAAgB,CAAC,IAAK,IAAK,IAAK,GAChC,cAAiB,CAAC,GAAI,GAAI,IAAK,GAC/B,cAAiB,CAAC,GAAI,GAAI,GAAI,GAC9B,cAAiB,CAAC,GAAI,GAAI,GAAI,GAC9B,cAAiB,CAAC,EAAG,IAAK,IAAK,GAC/B,WAAc,CAAC,IAAK,EAAG,IAAK,GAC5B,SAAY,CAAC,IAAK,GAAI,IAAK,GAC3B,YAAe,CAAC,EAAG,IAAK,IAAK,GAC7B,QAAW,CAAC,IAAK,IAAK,IAAK,GAC3B,QAAW,CAAC,IAAK,IAAK,IAAK,GAC3B,WAAc,CAAC,GAAI,IAAK,IAAK,GAC7B,UAAa,CAAC,IAAK,GAAI,GAAI,GAC3B,YAAe,CAAC,IAAK,IAAK,IAAK,GAC/B,YAAe,CAAC,GAAI,IAAK,GAAI,GAC7B,QAAW,CAAC,IAAK,EAAG,IAAK,GACzB,UAAa,CAAC,IAAK,IAAK,IAAK,GAC7B,WAAc,CAAC,IAAK,IAAK,IAAK,GAC9B,KAAQ,CAAC,IAAK,IAAK,EAAG,GACtB,UAAa,CAAC,IAAK,IAAK,GAAI,GAC5B,KAAQ,CAAC,IAAK,IAAK,IAAK,GACxB,MAAS,CAAC,EAAG,IAAK,EAAG,GACrB,YAAe,CAAC,IAAK,IAAK,GAAI,GAC9B,KAAQ,CAAC,IAAK,IAAK,IAAK,GACxB,SAAY,CAAC,IAAK,IAAK,IAAK,GAC5B,QAAW,CAAC,IAAK,IAAK,IAAK,GAC3B,UAAa,CAAC,IAAK,GAAI,GAAI,GAC3B,OAAU,CAAC,GAAI,EAAG,IAAK,GACvB,MAAS,CAAC,IAAK,IAAK,IAAK,GACzB,MAAS,CAAC,IAAK,IAAK,IAAK,GACzB,SAAY,CAAC,IAAK,IAAK,IAAK,GAC5B,cAAiB,CAAC,IAAK,IAAK,IAAK,GACjC,UAAa,CAAC,IAAK,IAAK,EAAG,GAC3B,aAAgB,CAAC,IAAK,IAAK,IAAK,GAChC,UAAa,CAAC,IAAK,IAAK,IAAK,GAC7B,WAAc,CAAC,IAAK,IAAK,IAAK,GAC9B,UAAa,CAAC,IAAK,IAAK,IAAK,GAC7B,qBAAwB,CAAC,IAAK,IAAK,IAAK,GACxC,UAAa,CAAC,IAAK,IAAK,IAAK,GAC7B,WAAc,CAAC,IAAK,IAAK,IAAK,GAC9B,UAAa,CAAC,IAAK,IAAK,IAAK,GAC7B,UAAa,CAAC,IAAK,IAAK,IAAK,GAC7B,YAAe,CAAC,IAAK,IAAK,IAAK,GAC/B,cAAiB,CAAC,GAAI,IAAK,IAAK,GAChC,aAAgB,CAAC,IAAK,IAAK,IAAK,GAChC,eAAkB,CAAC,IAAK,IAAK,IAAK,GAClC,eAAkB,CAAC,IAAK,IAAK,IAAK,GAClC,eAAkB,CAAC,IAAK,IAAK,IAAK,GAClC,YAAe,CAAC,IAAK,IAAK,IAAK,GAC/B,KAAQ,CAAC,EAAG,IAAK,EAAG,GACpB,UAAa,CAAC,GAAI,IAAK,GAAI,GAC3B,MAAS,CAAC,IAAK,IAAK,IAAK,GACzB,QAAW,CAAC,IAAK,EAAG,IAAK,GACzB,OAAU,CAAC,IAAK,EAAG,EAAG,GACtB,iBAAoB,CAAC,IAAK,IAAK,IAAK,GACpC,WAAc,CAAC,EAAG,EAAG,IAAK,GAC1B,aAAgB,CAAC,IAAK,GAAI,IAAK,GAC/B,aAAgB,CAAC,IAAK,IAAK,IAAK,GAChC,eAAkB,CAAC,GAAI,IAAK,IAAK,GACjC,gBAAmB,CAAC,IAAK,IAAK,IAAK,GACnC,kBAAqB,CAAC,EAAG,IAAK,IAAK,GACnC,gBAAmB,CAAC,GAAI,IAAK,IAAK,GAClC,gBAAmB,CAAC,IAAK,GAAI,IAAK,GAClC,aAAgB,CAAC,GAAI,GAAI,IAAK,GAC9B,UAAa,CAAC,IAAK,IAAK,IAAK,GAC7B,UAAa,CAAC,IAAK,IAAK,IAAK,GAC7B,SAAY,CAAC,IAAK,IAAK,IAAK,GAC5B,YAAe,CAAC,IAAK,IAAK,IAAK,GAC/B,KAAQ,CAAC,EAAG,EAAG,IAAK,GACpB,QAAW,CAAC,IAAK,IAAK,IAAK,GAC3B,MAAS,CAAC,IAAK,IAAK,EAAG,GACvB,UAAa,CAAC,IAAK,IAAK,GAAI,GAC5B,OAAU,CAAC,IAAK,IAAK,EAAG,GACxB,UAAa,CAAC,IAAK,GAAI,EAAG,GAC1B,OAAU,CAAC,IAAK,IAAK,IAAK,GAC1B,cAAiB,CAAC,IAAK,IAAK,IAAK,GACjC,UAAa,CAAC,IAAK,IAAK,IAAK,GAC7B,cAAiB,CAAC,IAAK,IAAK,IAAK,GACjC,cAAiB,CAAC,IAAK,IAAK,IAAK,GACjC,WAAc,CAAC,IAAK,IAAK,IAAK,GAC9B,UAAa,CAAC,IAAK,IAAK,IAAK,GAC7B,KAAQ,CAAC,IAAK,IAAK,GAAI,GACvB,KAAQ,CAAC,IAAK,IAAK,IAAK,GACxB,KAAQ,CAAC,IAAK,IAAK,IAAK,GACxB,WAAc,CAAC,IAAK,IAAK,IAAK,GAC9B,OAAU,CAAC,IAAK,EAAG,IAAK,GACxB,IAAO,CAAC,IAAK,EAAG,EAAG,GACnB,UAAa,CAAC,IAAK,IAAK,IAAK,GAC7B,UAAa,CAAC,GAAI,IAAK,IAAK,GAC5B,YAAe,CAAC,IAAK,GAAI,GAAI,GAC7B,OAAU,CAAC,IAAK,IAAK,IAAK,GAC1B,WAAc,CAAC,IAAK,IAAK,GAAI,GAC7B,SAAY,CAAC,GAAI,IAAK,GAAI,GAC1B,SAAY,CAAC,IAAK,IAAK,IAAK,GAC5B,OAAU,CAAC,IAAK,GAAI,GAAI,GACxB,OAAU,CAAC,IAAK,IAAK,IAAK,GAC1B,QAAW,CAAC,IAAK,IAAK,IAAK,GAC3B,UAAa,CAAC,IAAK,GAAI,IAAK,GAC5B,UAAa,CAAC,IAAK,IAAK,IAAK,GAC7B,UAAa,CAAC,IAAK,IAAK,IAAK,GAC7B,KAAQ,CAAC,IAAK,IAAK,IAAK,GACxB,YAAe,CAAC,EAAG,IAAK,IAAK,GAC7B,UAAa,CAAC,GAAI,IAAK,IAAK,GAC5B,IAAO,CAAC,IAAK,IAAK,IAAK,GACvB,KAAQ,CAAC,EAAG,IAAK,IAAK,GACtB,QAAW,CAAC,IAAK,IAAK,IAAK,GAC3B,OAAU,CAAC,IAAK,GAAI,GAAI,GACxB,UAAa,CAAC,GAAI,IAAK,IAAK,GAC5B,OAAU,CAAC,IAAK,IAAK,IAAK,GAC1B,MAAS,CAAC,IAAK,IAAK,IAAK,GACzB,MAAS,CAAC,IAAK,IAAK,IAAK,GACzB,WAAc,CAAC,IAAK,IAAK,IAAK,GAC9B,OAAU,CAAC,IAAK,IAAK,EAAG,GACxB,YAAe,CAAC,IAAK,IAAK,GAAI,IAGhC,SAASC,EAAa73G,GAIpB,OAFAA,EAAI6K,KAAK8qB,MAAM31B,IAEJ,EAAI,EAAIA,EAAI,IAAM,IAAMA,EAUrC,SAAS83G,EAAcC,GAErB,OAAOA,EAAI,EAAI,EAAIA,EAAI,EAAI,EAAIA,EAGjC,SAASC,EAAY9mE,GAEnB,OAAIA,EAAIxsC,QAAyC,MAA/BwsC,EAAImzB,OAAOnzB,EAAIxsC,OAAS,GACjCmzG,EAAajiF,WAAWsb,GAAO,IAAM,KAGvC2mE,EAAaphF,SAASya,EAAK,KAGpC,SAAS+mE,EAAc/mE,GAErB,OAAIA,EAAIxsC,QAAyC,MAA/BwsC,EAAImzB,OAAOnzB,EAAIxsC,OAAS,GACjCozG,EAAcliF,WAAWsb,GAAO,KAGlC4mE,EAAcliF,WAAWsb,IAGlC,SAASgnE,EAAYzc,EAAIC,EAAI93F,GAO3B,OANIA,EAAI,EACNA,GAAK,EACIA,EAAI,IACbA,GAAK,GAGC,EAAJA,EAAQ,EACH63F,GAAMC,EAAKD,GAAM73F,EAAI,EAGtB,EAAJA,EAAQ,EACH83F,EAGD,EAAJ93F,EAAQ,EACH63F,GAAMC,EAAKD,IAAO,EAAI,EAAI73F,GAAK,EAGjC63F,EAGT,SAAS0c,EAAWpqG,EAAGC,EAAGlM,GACxB,OAAOiM,GAAKC,EAAID,GAAKjM,EAGvB,SAASs2G,EAAQlkD,EAAKpzD,EAAG06F,EAAGxtF,EAAGD,GAK7B,OAJAmmD,EAAI,GAAKpzD,EACTozD,EAAI,GAAKsnC,EACTtnC,EAAI,GAAKlmD,EACTkmD,EAAI,GAAKnmD,EACFmmD,EAGT,SAASmkD,EAASnkD,EAAKnmD,GAKrB,OAJAmmD,EAAI,GAAKnmD,EAAE,GACXmmD,EAAI,GAAKnmD,EAAE,GACXmmD,EAAI,GAAKnmD,EAAE,GACXmmD,EAAI,GAAKnmD,EAAE,GACJmmD,EAGT,IAAIokD,EAAa,IAAIX,EAAI,IACrBY,EAAiB,KAErB,SAASC,EAAWC,EAAUC,GAExBH,GACFF,EAASE,EAAgBG,GAG3BH,EAAiBD,EAAWK,IAAIF,EAAUF,GAAkBG,EAAQryG,SAUtE,SAAS0f,EAAM0yF,EAAUC,GACvB,GAAKD,EAAL,CAIAC,EAAUA,GAAW,GACrB,IAAI58F,EAASw8F,EAAWz3G,IAAI43G,GAE5B,GAAI38F,EACF,OAAOu8F,EAASK,EAAS58F,GAM3B,IAsBQ88F,EAtBJ1nE,GAFJunE,GAAsB,IAEH1tG,QAAQ,KAAM,IAAIqB,cAErC,GAAI8kC,KAAO0mE,EAGT,OAFAS,EAASK,EAASd,EAAe1mE,IACjCsnE,EAAWC,EAAUC,GACdA,EAIT,GAAsB,MAAlBxnE,EAAImzB,OAAO,GACb,OAAmB,IAAfnzB,EAAIxsC,QACFk0G,EAAKniF,SAASya,EAAI2nE,OAAO,GAAI,MAErB,GAAKD,GAAM,MAKvBR,EAAQM,GAAe,KAALE,IAAe,GAAU,KAALA,IAAe,EAAQ,IAALA,GAAkB,IAALA,IAAc,EAAQ,GAALA,GAAiB,GAALA,IAAa,EAAG,GAClHJ,EAAWC,EAAUC,GACdA,QANLN,EAAQM,EAAS,EAAG,EAAG,EAAG,GAOJ,IAAfxnE,EAAIxsC,QACTk0G,EAAKniF,SAASya,EAAI2nE,OAAO,GAAI,MAErB,GAAKD,GAAM,UAKvBR,EAAQM,GAAe,SAALE,IAAkB,IAAU,MAALA,IAAgB,EAAQ,IAALA,EAAW,GACvEJ,EAAWC,EAAUC,GACdA,QANLN,EAAQM,EAAS,EAAG,EAAG,EAAG,QAS9B,EAGF,IAAII,EAAK5nE,EAAI1qC,QAAQ,KACjBuyG,EAAK7nE,EAAI1qC,QAAQ,KAErB,IAAY,IAARsyG,GAAaC,EAAK,IAAM7nE,EAAIxsC,OAAQ,CACtC,IAAIs0G,EAAQ9nE,EAAI2nE,OAAO,EAAGC,GACtB9tE,EAASkG,EAAI2nE,OAAOC,EAAK,EAAGC,GAAMD,EAAK,IAAI5sG,MAAM,KACjD4zD,EAAQ,EAEZ,OAAQk5C,GACN,IAAK,OACH,GAAsB,IAAlBhuE,EAAOtmC,OAET,YADA0zG,EAAQM,EAAS,EAAG,EAAG,EAAG,GAI5B54C,EAAQm4C,EAAcjtE,EAAO/8B,OAI/B,IAAK,MACH,OAAsB,IAAlB+8B,EAAOtmC,YACT0zG,EAAQM,EAAS,EAAG,EAAG,EAAG,IAI5BN,EAAQM,EAASV,EAAYhtE,EAAO,IAAKgtE,EAAYhtE,EAAO,IAAKgtE,EAAYhtE,EAAO,IAAK80B,GACzF04C,EAAWC,EAAUC,GACdA,GAET,IAAK,OACH,OAAsB,IAAlB1tE,EAAOtmC,YACT0zG,EAAQM,EAAS,EAAG,EAAG,EAAG,IAI5B1tE,EAAO,GAAKitE,EAAcjtE,EAAO,IACjCiuE,EAAUjuE,EAAQ0tE,GAClBF,EAAWC,EAAUC,GACdA,GAET,IAAK,MACH,OAAsB,IAAlB1tE,EAAOtmC,YACT0zG,EAAQM,EAAS,EAAG,EAAG,EAAG,IAI5BO,EAAUjuE,EAAQ0tE,GAClBF,EAAWC,EAAUC,GACdA,GAET,QACE,QAINN,EAAQM,EAAS,EAAG,EAAG,EAAG,IAU5B,SAASO,EAAUC,EAAMC,GACvB,IAAIv1G,GAAKgyB,WAAWsjF,EAAK,IAAM,IAAM,KAAO,IAAM,IAI9Cn3G,EAAIk2G,EAAciB,EAAK,IACvBj5G,EAAIg4G,EAAciB,EAAK,IACvBxd,EAAKz7F,GAAK,GAAMA,GAAK8B,EAAI,GAAK9B,EAAI8B,EAAI9B,EAAI8B,EAC1C05F,EAAS,EAAJx7F,EAAQy7F,EAQjB,OANA0c,EADAe,EAAOA,GAAQ,GACDtB,EAA8C,IAAjCK,EAAYzc,EAAIC,EAAI93F,EAAI,EAAI,IAAWi0G,EAAsC,IAAzBK,EAAYzc,EAAIC,EAAI93F,IAAWi0G,EAA8C,IAAjCK,EAAYzc,EAAIC,EAAI93F,EAAI,EAAI,IAAW,GAE9I,IAAhBs1G,EAAKx0G,SACPy0G,EAAK,GAAKD,EAAK,IAGVC,EAsHT,SAASC,EAASC,EAAiBC,EAAQplD,GACzC,GAAMolD,GAAUA,EAAO50G,QAAa20G,GAAmB,GAAKA,GAAmB,EAA/E,CAIAnlD,EAAMA,GAAO,GACb,IAAIjzD,EAAQo4G,GAAmBC,EAAO50G,OAAS,GAC3C+2C,EAAY5wC,KAAKq4C,MAAMjiD,GACvB66C,EAAajxC,KAAK0tB,KAAKt3B,GACvBs4G,EAAYD,EAAO79D,GACnB+9D,EAAaF,EAAOx9D,GACpB29D,EAAKx4G,EAAQw6C,EAKjB,OAJAyY,EAAI,GAAK2jD,EAAaM,EAAWoB,EAAU,GAAIC,EAAW,GAAIC,IAC9DvlD,EAAI,GAAK2jD,EAAaM,EAAWoB,EAAU,GAAIC,EAAW,GAAIC,IAC9DvlD,EAAI,GAAK2jD,EAAaM,EAAWoB,EAAU,GAAIC,EAAW,GAAIC,IAC9DvlD,EAAI,GAAK4jD,EAAcK,EAAWoB,EAAU,GAAIC,EAAW,GAAIC,IACxDvlD,GAOT,IAAIwlD,EAAiBN,EAUrB,SAAS5kD,EAAK6kD,EAAiBC,EAAQK,GACrC,GAAML,GAAUA,EAAO50G,QAAa20G,GAAmB,GAAKA,GAAmB,EAA/E,CAIA,IAAIp4G,EAAQo4G,GAAmBC,EAAO50G,OAAS,GAC3C+2C,EAAY5wC,KAAKq4C,MAAMjiD,GACvB66C,EAAajxC,KAAK0tB,KAAKt3B,GACvBs4G,EAAYxzF,EAAMuzF,EAAO79D,IACzB+9D,EAAazzF,EAAMuzF,EAAOx9D,IAC1B29D,EAAKx4G,EAAQw6C,EACbm+D,EAAQx8C,EAAU,CAACy6C,EAAaM,EAAWoB,EAAU,GAAIC,EAAW,GAAIC,IAAM5B,EAAaM,EAAWoB,EAAU,GAAIC,EAAW,GAAIC,IAAM5B,EAAaM,EAAWoB,EAAU,GAAIC,EAAW,GAAIC,IAAM3B,EAAcK,EAAWoB,EAAU,GAAIC,EAAW,GAAIC,KAAO,QACrQ,OAAOE,EAAa,CAClBC,MAAOA,EACPn+D,UAAWA,EACXK,WAAYA,EACZ76C,MAAOA,GACL24G,GAON,IAAIC,EAAarlD,EA4CjB,SAAS4I,EAAU08C,EAAUx1G,GAC3B,GAAKw1G,GAAaA,EAASp1G,OAA3B,CAIA,IAAI+zG,EAAWqB,EAAS,GAAK,IAAMA,EAAS,GAAK,IAAMA,EAAS,GAMhE,MAJa,SAATx1G,GAA4B,SAATA,GAA4B,SAATA,IACxCm0G,GAAY,IAAMqB,EAAS,IAGtBx1G,EAAO,IAAMm0G,EAAW,KAGjC34G,EAAQimB,MAAQA,EAChBjmB,EAAQi6G,KAhKR,SAAcH,EAAOI,GACnB,IAAIC,EAAWl0F,EAAM6zF,GAErB,GAAIK,EAAU,CACZ,IAAK,IAAIj6G,EAAI,EAAGA,EAAI,EAAGA,IAEnBi6G,EAASj6G,GADPg6G,EAAQ,EACIC,EAASj6G,IAAM,EAAIg6G,GAAS,GAE3B,IAAMC,EAASj6G,IAAMg6G,EAAQC,EAASj6G,GAAK,EAGxDi6G,EAASj6G,GAAK,IAChBi6G,EAASj6G,GAAK,IACL45G,EAAM55G,GAAK,IACpBi6G,EAASj6G,GAAK,GAIlB,OAAOo9D,EAAU68C,EAA8B,IAApBA,EAASv1G,OAAe,OAAS,SA+IhE5E,EAAQo6G,MArIR,SAAeN,GACb,IAAIK,EAAWl0F,EAAM6zF,GAErB,GAAIK,EACF,QAAS,GAAK,KAAOA,EAAS,IAAM,KAAOA,EAAS,IAAM,KAAMA,EAAS,IAAIvzG,SAAS,IAAIL,MAAM,IAkIpGvG,EAAQs5G,SAAWA,EACnBt5G,EAAQ45G,eAAiBA,EACzB55G,EAAQ00D,KAAOA,EACf10D,EAAQ+5G,WAAaA,EACrB/5G,EAAQq6G,UAvDR,SAAmBP,EAAOh2G,EAAG7B,EAAG9B,GAG9B,GAFA25G,EAAQ7zF,EAAM6zF,GAOZ,OAJAA,EArLJ,SAAmBT,GACjB,GAAKA,EAAL,CAKA,IAUIiB,EACAC,EAXAxc,EAAIsb,EAAK,GAAK,IACdmB,EAAInB,EAAK,GAAK,IACdzV,EAAIyV,EAAK,GAAK,IACdoB,EAAO1vG,KAAKkzC,IAAI8/C,EAAGyc,EAAG5W,GAEtB8W,EAAO3vG,KAAKitB,IAAI+lE,EAAGyc,EAAG5W,GAEtBprE,EAAQkiF,EAAOD,EAEf/c,GAAKgd,EAAOD,GAAQ,EAIxB,GAAc,IAAVjiF,EACF8hF,EAAI,EACJC,EAAI,MACC,CAEHA,EADE7c,EAAI,GACFllE,GAASkiF,EAAOD,GAEhBjiF,GAAS,EAAIkiF,EAAOD,GAG1B,IAAIE,IAAWD,EAAO3c,GAAK,EAAIvlE,EAAQ,GAAKA,EACxCoiF,IAAWF,EAAOF,GAAK,EAAIhiF,EAAQ,GAAKA,EACxCqiF,IAAWH,EAAO9W,GAAK,EAAIprE,EAAQ,GAAKA,EAExCulE,IAAM2c,EACRJ,EAAIO,EAASD,EACJJ,IAAME,EACfJ,EAAI,EAAI,EAAIK,EAASE,EACZjX,IAAM8W,IACfJ,EAAI,EAAI,EAAIM,EAASD,GAGnBL,EAAI,IACNA,GAAK,GAGHA,EAAI,IACNA,GAAK,GAIT,IAAIlB,EAAO,CAAK,IAAJkB,EAASC,EAAG7c,GAMxB,OAJe,MAAX2b,EAAK,IACPD,EAAK3zG,KAAK4zG,EAAK,IAGVD,GA6HG0B,CAAUhB,GACb,MAALh2G,IAAcg2G,EAAM,IA9ZD55G,EA8ZoB4D,GA5ZzC5D,EAAI6K,KAAK8qB,MAAM31B,IAEJ,EAAI,EAAIA,EAAI,IAAM,IAAMA,IA2Z5B,MAAL+B,IAAc63G,EAAM,GAAK3B,EAAcl2G,IAClC,MAAL9B,IAAc25G,EAAM,GAAK3B,EAAch4G,IAChCm9D,EAAU67C,EAAUW,GAAQ,QAjavC,IAAuB55G,GAidvBF,EAAQ+6G,YArCR,SAAqBjB,EAAO95C,GAG1B,IAFA85C,EAAQ7zF,EAAM6zF,KAEQ,MAAT95C,EAEX,OADA85C,EAAM,GAAK9B,EAAch4C,GAClB1C,EAAUw8C,EAAO,SAiC5B95G,EAAQs9D,UAAYA,G,cClnBpB,IAAIggC,EAAM,EAEY,oBAAXp3F,SACTo3F,EAAMvyF,KAAKitB,IAAI9xB,OAAOq3F,kBAAoB,EAAG,IAe/C,IAEIA,EAAmBD,EACvBt9F,EAAQgzG,UAHQ,EAIhBhzG,EAAQu9F,iBAAmBA,G,cCf3Bv9F,EAAQ4lG,gBAPc,CACpBU,KAAM,EACN0U,WAAY,EACZC,WAAY,GAKdj7G,EAAQk7G,iBAFe,G,gBCNvB,IAAIC,EAAQ,EAAQ,IAEhBtqE,EAAYsqE,EAAMtqE,UAClBG,EAAYmqE,EAAMnqE,UAClB1nC,EAAO6xG,EAAM7xG,KACb4nC,EAAoBiqE,EAAMjqE,kBAC1BT,EAAW0qE,EAAM1qE,SACjB/qC,EAAWy1G,EAAMz1G,SAEjBggG,EAAc,EAAQ,KAEtB0V,EAAkB,EAAQ,KAE1Bxe,EAAc,EAAQ,KAEtBye,EAAY,EAAQ,KAEpBC,EAAY,EAAQ,KAEpB1V,EAAkB0V,EAAU1V,gBAC5BsV,EAAmBI,EAAUJ,iBAC7BK,EAAe7V,EAAY6V,aAE3BC,EAAmB,CACrBhiF,KAAM,EACNlE,MAAO,EACPohC,OAAQ,GAEN+kD,EAA4B,CAC9BvnG,IAAK,EACLuqD,OAAQ,EACRi9C,OAAQ,GAINC,EAA4B,CAAC,CAAC,iBAAkB,aAAc,GAAI,CAAC,oBAAqB,gBAAiB,GAAI,CAAC,oBAAqB,gBAAiB,GAAI,CAAC,kBAAmB,cAAe,gBAC3LC,EAAyB,GACzBC,EAAwB,GAY5B,SAASC,EAAev0F,GACtB,GAAIA,EAAO,CACTA,EAAMg/E,KAAOb,EAAYqW,SAASx0F,GAClC,IAAIi/E,EAAYj/E,EAAMi/E,UACR,WAAdA,IAA2BA,EAAY,UACvCj/E,EAAMi/E,UAAyB,MAAbA,GAAqBgV,EAAiBhV,GAAaA,EAAY,OAEjF,IAAIC,EAAoBl/E,EAAMk/E,mBAAqBl/E,EAAMy0F,aACnC,WAAtBvV,IAAmCA,EAAoB,UACvDl/E,EAAMk/E,kBAAyC,MAArBA,GAA6BgV,EAA0BhV,GAAqBA,EAAoB,MACxGl/E,EAAMm/E,cAGtBn/E,EAAMm/E,YAAcx1D,EAAkB3pB,EAAMm/E,eAwPlD,SAASuV,EAAkBxpE,EAAKlrB,EAAOukB,EAAM0J,EAAGC,GAE9C,GAAI3J,GAAQvkB,EAAM20F,aAAc,CAC9B,IAAIrlD,EAAStvC,EAAM40F,WAEJ,WAAXtlD,GACFrhB,EAAI1J,EAAKxX,MAAQ,EAAIwX,EAAK0J,EAC1BC,EAAI3J,EAAKpV,OAAS,EAAIoV,EAAK2J,GAClBohB,IACTrhB,EAAIqhB,EAAO,GAAK/qB,EAAK0J,EACrBC,EAAIohB,EAAO,GAAK/qB,EAAK2J,GAGvBhD,EAAI4jB,UAAU7gB,EAAGC,GAEjBhD,EAAI+jB,QAAQjvC,EAAM20F,cAClBzpE,EAAI4jB,WAAW7gB,GAAIC,IAIvB,SAAS2mE,EAAWC,EAAQ5pE,EAAK71B,EAAO2K,EAAO+0F,EAAYC,EAAS/mE,EAAGgxD,GACrE,IAAIgW,EAAaj1F,EAAMq/E,KAAKhqF,EAAM6/F,YAAc,GAChDD,EAAWv0G,KAAO2U,EAAM3U,KAGxB,IAAIw+F,EAAoB7pF,EAAM6pF,kBAC1BhxD,EAAI8mE,EAAUD,EAAa,EAEL,QAAtB7V,EACFhxD,EAAI8mE,EAAU3/F,EAAM8Z,OAAS,EACE,WAAtB+vE,IACThxD,EAAI8mE,EAAUD,EAAa1/F,EAAM8Z,OAAS,IAG3C9Z,EAAM8/F,cAAgBC,EAAmBH,IAAeI,EAAeP,EAAQ5pE,EAAK+pE,EAA0B,UAAdhW,EAAwBhxD,EAAI54B,EAAM0X,MAAsB,WAAdkyE,EAAyBhxD,EAAI54B,EAAM0X,MAAQ,EAAIkhB,EAAGC,EAAI74B,EAAM8Z,OAAS,EAAG9Z,EAAM0X,MAAO1X,EAAM8Z,QACtO,IAAIgwE,EAAc9pF,EAAM8pF,YAEpBA,IACFlxD,EAAIqnE,EAAmBrnE,EAAGgxD,EAAWE,GACrCjxD,GAAK74B,EAAM8Z,OAAS,EAAIgwE,EAAY,GAAK9pF,EAAMkgG,WAAa,GAG9DC,EAAOtqE,EAAK,aAAczB,EAAUwrE,EAAWQ,eAAgBz1F,EAAMy1F,eAAgB,IACrFD,EAAOtqE,EAAK,cAAe+pE,EAAWS,iBAAmB11F,EAAM01F,iBAAmB,eAClFF,EAAOtqE,EAAK,gBAAiBzB,EAAUwrE,EAAWU,kBAAmB31F,EAAM21F,kBAAmB,IAC9FH,EAAOtqE,EAAK,gBAAiBzB,EAAUwrE,EAAWW,kBAAmB51F,EAAM41F,kBAAmB,IAC9FJ,EAAOtqE,EAAK,YAAa+zD,GAGzBuW,EAAOtqE,EAAK,eAAgB,UAC5BsqE,EAAOtqE,EAAK,OAAQ71B,EAAM2pF,MAAQgV,GAClC,IAAIzU,EAAaD,EAAU2V,EAAW1V,YAAcv/E,EAAMu/E,WAAYC,GAClEqW,EAAWC,EAAQb,EAAWY,UAAY71F,EAAM61F,UAChDrW,EAAkBl2D,EAAU2rE,EAAWzV,gBAAiBx/E,EAAMw/E,iBAE9DD,IACFiW,EAAOtqE,EAAK,YAAas0D,GACzBgW,EAAOtqE,EAAK,cAAeq0D,GAC3Br0D,EAAI6qE,WAAW1gG,EAAM3U,KAAMutC,EAAGC,IAG5B2nE,IACFL,EAAOtqE,EAAK,YAAa2qE,GACzB3qE,EAAI8qE,SAAS3gG,EAAM3U,KAAMutC,EAAGC,IAIhC,SAASknE,EAAmBp1F,GAC1B,SAAUA,EAAMi2F,qBAAuBj2F,EAAMk2F,iBAAmBl2F,EAAMm2F,iBAKxE,SAASd,EAAeP,EAAQ5pE,EAAKlrB,EAAOiuB,EAAGC,EAAGnhB,EAAOoC,GACvD,IAAI8mF,EAAsBj2F,EAAMi2F,oBAC5BC,EAAkBl2F,EAAMk2F,gBACxBC,EAAkBn2F,EAAMm2F,gBACxBC,EAAYltE,EAAS+sE,GAMzB,GALAT,EAAOtqE,EAAK,aAAclrB,EAAMq2F,mBAAqB,GACrDb,EAAOtqE,EAAK,cAAelrB,EAAMs2F,oBAAsB,eACvDd,EAAOtqE,EAAK,gBAAiBlrB,EAAMu2F,sBAAwB,GAC3Df,EAAOtqE,EAAK,gBAAiBlrB,EAAMw2F,sBAAwB,GAEvDJ,GAAaF,GAAmBC,EAAiB,CACnDjrE,EAAIyB,YACJ,IAAI8pE,EAAmBz2F,EAAMy2F,iBAExBA,EAGH5C,EAAgBhnE,UAAU3B,EAAK,CAC7B+C,EAAGA,EACHC,EAAGA,EACHnhB,MAAOA,EACPoC,OAAQA,EACR11B,EAAGg9G,IAPLvrE,EAAI3G,KAAK0J,EAAGC,EAAGnhB,EAAOoC,GAWxB+b,EAAI+tD,YAGN,GAAImd,EAGF,GAFAZ,EAAOtqE,EAAK,YAAa+qE,GAEA,MAArBj2F,EAAMgtB,YAAqB,CAC7B,IAAIC,EAAsB/B,EAAIgC,YAC9BhC,EAAIgC,YAAcltB,EAAMgtB,YAAchtB,EAAM0R,QAC5CwZ,EAAII,OACJJ,EAAIgC,YAAcD,OAElB/B,EAAII,YAED,GAAIntC,EAAS83G,GAAsB,CACxC,IAAI9jG,EAAQ8jG,EAAoB9jG,OAChCA,EAAQkjF,EAAYG,oBAAoBrjF,EAAO,KAAM2iG,EAAQ4B,EAAiBT,KAEjE5gB,EAAYI,aAAatjF,IACpC+4B,EAAI2qD,UAAU1jF,EAAO87B,EAAGC,EAAGnhB,EAAOoC,GAItC,GAAI+mF,GAAmBC,EAIrB,GAHAX,EAAOtqE,EAAK,YAAagrE,GACzBV,EAAOtqE,EAAK,cAAeirE,GAEA,MAAvBn2F,EAAMmtB,cAAuB,CAC3BF,EAAsB/B,EAAIgC,YAC9BhC,EAAIgC,YAAcltB,EAAMmtB,cAAgBntB,EAAM0R,QAC9CwZ,EAAIK,SACJL,EAAIgC,YAAcD,OAElB/B,EAAIK,SAKV,SAASmrE,EAAgBvkG,EAAO8jG,GAG9BA,EAAoB9jG,MAAQA,EAG9B,SAASwkG,EAAe9pD,EAAKioD,EAAQ90F,EAAOukB,GAC1C,IAAIqyE,EAAQ52F,EAAMiuB,GAAK,EACnB4oE,EAAQ72F,EAAMkuB,GAAK,EACnB+wD,EAAYj/E,EAAMi/E,UAClBC,EAAoBl/E,EAAMk/E,kBAE9B,GAAI36D,EAAM,CACR,IAAIuyE,EAAe92F,EAAM82F,aAEzB,GAAIA,aAAwBl6G,MAE1Bg6G,EAAQryE,EAAK0J,EAAI8oE,EAAaD,EAAa,GAAIvyE,EAAKxX,OACpD8pF,EAAQtyE,EAAK2J,EAAI6oE,EAAaD,EAAa,GAAIvyE,EAAKpV,YAC/C,CACL,IAAIouC,EAAMu3C,GAAUA,EAAO7H,sBAAwB6H,EAAO7H,sBAAsBoH,EAAwBr0F,EAAOukB,GAAQ45D,EAAY8O,sBAAsBoH,EAAwBr0F,EAAOukB,GACxLqyE,EAAQr5C,EAAItvB,EACZ4oE,EAAQt5C,EAAIrvB,EAEZ+wD,EAAYA,GAAa1hC,EAAI0hC,UAC7BC,EAAoBA,GAAqB3hC,EAAI2hC,kBAK/C,IAAI8X,EAAah3F,EAAMg3F,WAEnBA,IACFJ,GAASI,EAAW,GACpBH,GAASG,EAAW,IASxB,OALAnqD,EAAMA,GAAO,IACT+pD,MAAQA,EACZ/pD,EAAIgqD,MAAQA,EACZhqD,EAAIoyC,UAAYA,EAChBpyC,EAAIqyC,kBAAoBA,EACjBryC,EAGT,SAAS2oD,EAAOtqE,EAAKhtB,EAAMtkB,GAEzB,OADAsxC,EAAIhtB,GAAQ41F,EAAU5oE,EAAKhtB,EAAMtkB,GAC1BsxC,EAAIhtB,GASb,SAASohF,EAAU/zD,EAAQsC,GACzB,OAAiB,MAAVtC,GAAkBsC,GAAa,GAAgB,gBAAXtC,GAAuC,SAAXA,EAAoB,KACzFA,EAAOp5B,OAASo5B,EAAOE,WAAa,OAASF,EAGjD,SAASuqE,EAAQxqE,GACf,OAAe,MAARA,GAAyB,SAATA,EAAkB,KACvCA,EAAKn5B,OAASm5B,EAAKG,WAAa,OAASH,EAG7C,SAASyrE,EAAan9G,EAAOq9G,GAC3B,MAAqB,iBAAVr9G,EACLA,EAAM+kD,YAAY,MAAQ,EACrBpwB,WAAW30B,GAAS,IAAMq9G,EAG5B1oF,WAAW30B,GAGbA,EAGT,SAAS07G,EAAmBrnE,EAAGgxD,EAAWE,GACxC,MAAqB,UAAdF,EAAwBhxD,EAAIkxD,EAAY,GAAmB,WAAdF,EAAyBhxD,EAAIkxD,EAAY,GAAK,EAAIA,EAAY,GAAK,EAAIlxD,EAAIkxD,EAAY,GAa7I1mG,EAAQ8lG,mBAjfR,SAA4Bv+E,GAG1B,OAFAu0F,EAAev0F,GACfje,EAAKie,EAAMq/E,KAAMkV,GACVv0F,GA+eTvnB,EAAQomG,WAjdR,SAAoBiW,EAAQ5pE,EAAKxqC,EAAMsf,EAAOukB,EAAM4G,GAClDnrB,EAAMq/E,KAuJR,SAAwByV,EAAQ5pE,EAAKxqC,EAAMsf,EAAOukB,EAAM4G,GAGlDA,IAAWwoE,IACbzoE,EAAI4zD,eAAiBT,EAAgBU,MAGvC,IAAImY,EAAepC,EAAOqC,kBAErBD,IAAgBpC,EAAOpmE,cAC1BwoE,EAAepC,EAAOqC,kBAAoBhZ,EAAYiZ,cAAc12G,EAAMsf,KAM9E,SAAsB80F,EAAQ5pE,EAAKgsE,EAAcl3F,EAAOukB,GACtD,IAAI8yE,EAAeH,EAAanqF,MAC5BuqF,EAAaJ,EAAaI,WAC1BC,EAAcL,EAAaK,YAC3BpY,EAAcn/E,EAAMm/E,YACpBqY,EAASb,EAAerC,EAAuBQ,EAAQ90F,EAAOukB,GAC9DqyE,EAAQY,EAAOZ,MACfC,EAAQW,EAAOX,MACf5X,EAAYuY,EAAOvY,UACnBC,EAAoBsY,EAAOtY,kBAE/BwV,EAAkBxpE,EAAKlrB,EAAOukB,EAAMqyE,EAAOC,GAC3C,IAAIY,EAAOtZ,EAAYuZ,YAAYd,EAAOU,EAAYrY,GAClD0Y,EAAOxZ,EAAYyZ,YAAYf,EAAOU,EAAarY,GACnD2Y,EAAQJ,EACRzC,EAAU2C,EAEVxY,IACF0Y,GAAS1Y,EAAY,GACrB6V,GAAW7V,EAAY,IAGzB,IAAI2Y,EAASD,EAAQR,EACrBjC,EAAmBp1F,IAAUq1F,EAAeP,EAAQ5pE,EAAKlrB,EAAOy3F,EAAME,EAAML,EAAYC,GAExF,IAAK,IAAI5+G,EAAI,EAAGA,EAAIu+G,EAAaa,MAAM16G,OAAQ1E,IAAK,CAYlD,IAXA,IASI0c,EATAshD,EAAOugD,EAAaa,MAAMp/G,GAC1B2Z,EAASqkD,EAAKrkD,OACd0lG,EAAa1lG,EAAOjV,OACpB03G,EAAap+C,EAAKo+C,WAClBkD,EAAYthD,EAAK5pC,MACjBqnB,EAAY,EACZ8jE,EAAYL,EACZM,EAAaL,EACbrjE,EAAaujE,EAAa,EAGvB5jE,EAAY4jE,MAAe3iG,EAAQ/C,EAAO8hC,IAAmB6qD,WAAiC,SAApB5pF,EAAM4pF,YACrF4V,EAAWC,EAAQ5pE,EAAK71B,EAAO2K,EAAO+0F,EAAYC,EAASkD,EAAW,QACtED,GAAa5iG,EAAM0X,MACnBmrF,GAAa7iG,EAAM0X,MACnBqnB,IAGF,KAAOK,GAAc,GAAsD,WAAhDp/B,EAAQ/C,EAAOmiC,IAAmBwqD,WAC3D4V,EAAWC,EAAQ5pE,EAAK71B,EAAO2K,EAAO+0F,EAAYC,EAASmD,EAAY,SACvEF,GAAa5iG,EAAM0X,MACnBorF,GAAc9iG,EAAM0X,MACpB0nB,IAMF,IAFAyjE,IAAcb,GAAgBa,EAAYL,IAAUC,EAASK,GAAcF,GAAa,EAEjF7jE,GAAaK,GAClBp/B,EAAQ/C,EAAO8hC,GAEfygE,EAAWC,EAAQ5pE,EAAK71B,EAAO2K,EAAO+0F,EAAYC,EAASkD,EAAY7iG,EAAM0X,MAAQ,EAAG,UACxFmrF,GAAa7iG,EAAM0X,MACnBqnB,IAGF4gE,GAAWD,GAjEbqD,CAAatD,EAAQ5pE,EAAKgsE,EAAcl3F,EAAOukB,GApKlC8zE,CAAevD,EAAQ5pE,EAAKxqC,EAAMsf,EAAOukB,EAAM4G,GAK9D,SAAyB2pE,EAAQ5pE,EAAKxqC,EAAMsf,EAAOukB,EAAM4G,GACvD,aAEA,IACImtE,EADAC,EAAanD,EAAmBp1F,GAEhCw4F,GAAa,EACbC,EAAavtE,EAAI4zD,iBAAmBT,EAAgBqV,WAEpDvoE,IAAWwoE,GACTxoE,IACFmtE,EAAYntE,EAAOnrB,MACnBw4F,GAAcD,GAAcE,GAAcH,GAM5CptE,EAAI4zD,eAAiByZ,EAAala,EAAgBU,KAAOV,EAAgBqV,YAGlE+E,IACLvtE,EAAI4zD,eAAiBT,EAAgBU,MAGzC,IAAI2Z,EAAY14F,EAAMg/E,MAAQgV,EAWzBwE,GAAcE,KAAeJ,EAAUtZ,MAAQgV,KAClD9oE,EAAI8zD,KAAO0Z,GAMb,IAAIC,EAAe7D,EAAO8D,eAEtB9D,EAAO+D,cAAgBH,IACzB5D,EAAO+D,YAAcH,EACrBC,EAAe7D,EAAO8D,eAAiB1tE,EAAI8zD,MAG7C,IAAIG,EAAcn/E,EAAMm/E,YACpBC,EAAiBp/E,EAAMo/E,eACvB8X,EAAepC,EAAOqC,kBAErBD,IAAgBpC,EAAOpmE,cAC1BwoE,EAAepC,EAAOqC,kBAAoBhZ,EAAY2a,eAAep4G,EAAMi4G,EAAcxZ,EAAaC,EAAgBp/E,EAAMnK,WAG9H,IAAI0hG,EAAcL,EAAaK,YAC3BwB,EAAY7B,EAAaa,MACzBhD,EAAamC,EAAanC,WAC1ByC,EAASb,EAAerC,EAAuBQ,EAAQ90F,EAAOukB,GAC9DqyE,EAAQY,EAAOZ,MACfC,EAAQW,EAAOX,MACf5X,EAAYuY,EAAOvY,WAAa,OAChCC,EAAoBsY,EAAOtY,kBAE/BwV,EAAkBxpE,EAAKlrB,EAAOukB,EAAMqyE,EAAOC,GAC3C,IAAIc,EAAOxZ,EAAYyZ,YAAYf,EAAOU,EAAarY,GACnD8Z,EAAQpC,EACRqC,EAAQtB,EAEZ,GAAIY,GAAcpZ,EAAa,CAE7B,IACImY,EADYnZ,EAAY+a,SAASx4G,EAAMi4G,GAE3CxZ,IAAgBmY,GAAcnY,EAAY,GAAKA,EAAY,IAC3D,IAAIsY,EAAOtZ,EAAYuZ,YAAYd,EAAOU,EAAYrY,GACtDsZ,GAAclD,EAAeP,EAAQ5pE,EAAKlrB,EAAOy3F,EAAME,EAAML,EAAYC,GAErEpY,IACF6Z,EAAQ1D,EAAmBsB,EAAO3X,EAAWE,GAC7C8Z,GAAS9Z,EAAY,IAOzBj0D,EAAI+zD,UAAYA,EAGhB/zD,EAAIupE,aAAe,SAEnBvpE,EAAIgC,YAAcltB,EAAM0R,SAAW,EAEnC,IAAK,IAAI/4B,EAAI,EAAGA,EAAIy7G,EAA0B/2G,OAAQ1E,IAAK,CACzD,IAAIwgH,EAAW/E,EAA0Bz7G,GACrCygH,EAAYD,EAAS,GACrBE,EAAUF,EAAS,GACnB54G,EAAMyf,EAAMo5F,GAEXZ,GAAcj4G,IAAQ+3G,EAAUc,KACnCluE,EAAImuE,GAAWvF,EAAU5oE,EAAKmuE,EAAS94G,GAAO44G,EAAS,KAK3DF,GAASlE,EAAa,EACtB,IAAIvV,EAAkBx/E,EAAMw/E,gBACxB8Z,EAAsBd,EAAaF,EAAU9Y,gBAAkB,KAC/D+Z,GAAsBf,GAAchZ,IAAoB8Z,EACxDE,GAAiBhB,GAAce,GAAsBv5F,EAAMu/E,aAAe+Y,EAAU/Y,WACpFA,EAAaD,EAAUt/E,EAAMu/E,WAAYC,GACzCqW,EAAWC,EAAQ91F,EAAM61F,UAEzBtW,IACEga,IACFruE,EAAI2C,UAAY2xD,GAGdga,IACFtuE,EAAIkB,YAAcmzD,IAIlBsW,IACG2C,GAAcx4F,EAAM61F,WAAayC,EAAUzC,WAC9C3qE,EAAIiB,UAAY0pE,IAKpB,GAAyB,IAArBkD,EAAU17G,OAEZkiG,GAAcr0D,EAAI6qE,WAAWgD,EAAU,GAAIC,EAAOC,GAClDpD,GAAY3qE,EAAI8qE,SAAS+C,EAAU,GAAIC,EAAOC,QAE9C,IAAStgH,EAAI,EAAGA,EAAIogH,EAAU17G,OAAQ1E,IAEpC4mG,GAAcr0D,EAAI6qE,WAAWgD,EAAUpgH,GAAIqgH,EAAOC,GAClDpD,GAAY3qE,EAAI8qE,SAAS+C,EAAUpgH,GAAIqgH,EAAOC,GAC9CA,GAASlE,EAlJyD0E,CAAgB3E,EAAQ5pE,EAAKxqC,EAAMsf,EAAOukB,EAAM4G,IAidxH1yC,EAAQk+G,eAAiBA,EACzBl+G,EAAQ6mG,UAAYA,EACpB7mG,EAAQq9G,QAAUA,EAClBr9G,EAAQs+G,aAAeA,EACvBt+G,EAAQmmG,aAVR,SAAsBl+F,EAAMsf,GAC1B,OAAe,MAARtf,IAAiBA,GAAQsf,EAAMi2F,qBAAuBj2F,EAAMk2F,iBAAmBl2F,EAAMm2F,iBAAmBn2F,EAAMm/E,e,gBCzhBvH,IAAIjsC,EAAe,EAAQ,IAEvBmiC,EAAc,EAAQ,KAEtBue,EAAQ,EAAQ,IAEhBnrE,EAAamrE,EAAMnrE,WACnBzlC,EAAS4wG,EAAM5wG,OACfsmC,EAAYsqE,EAAMtqE,UAClBG,EAAYmqE,EAAMnqE,UAClB3D,EAAO8tE,EAAM9tE,KACb4zE,EAAiB,GACjBC,EAAwB,EAExBC,EAAY,gCAGZzyE,EAAU,GAad,SAAS+xE,EAASx4G,EAAMs+F,GAEtB,IAAI9kG,EAAMwG,EAAO,KADjBs+F,EAAOA,GAhBU,mBAmBjB,GAAI0a,EAAex/G,GACjB,OAAOw/G,EAAex/G,GAMxB,IAHA,IAAI6+G,GAAar4G,EAAO,IAAImE,MAAM,MAC9BkoB,EAAQ,EAEHp0B,EAAI,EAAGC,EAAImgH,EAAU17G,OAAQ1E,EAAIC,EAAGD,IAE3Co0B,EAAQvpB,KAAKitB,IAAIopF,EAAYd,EAAUpgH,GAAIqmG,GAAMjyE,MAAOA,GAU1D,OAPI4sF,EAjCe,MAkCjBA,EAAwB,EACxBD,EAAiB,IAGnBC,IACAD,EAAex/G,GAAO6yB,EACfA,EA2DT,SAAS2qF,EAAYzpE,EAAGlhB,EAAOkyE,GAQ7B,MANkB,UAAdA,EACFhxD,GAAKlhB,EACkB,WAAdkyE,IACThxD,GAAKlhB,EAAQ,GAGRkhB,EAWT,SAAS2pE,EAAY1pE,EAAG/e,EAAQ+vE,GAO9B,MAN0B,WAAtBA,EACFhxD,GAAK/e,EAAS,EACiB,WAAtB+vE,IACThxD,GAAK/e,GAGA+e,EAYT,SAAS++D,EAAsBpgD,EAAK7sC,EAAOukB,GACzC,IAAIuyE,EAAe92F,EAAM82F,aACrBvqD,EAAWvsC,EAAM85F,aACjB7rE,EAAI1J,EAAK0J,EACTC,EAAI3J,EAAK2J,EACbqe,EAAWA,GAAY,EACvB,IAAIp9B,EAASoV,EAAKpV,OACdpC,EAAQwX,EAAKxX,MACbgtF,EAAa5qF,EAAS,EACtB8vE,EAAY,OACZC,EAAoB,MAExB,OAAQ4X,GACN,IAAK,OACH7oE,GAAKse,EACLre,GAAK6rE,EACL9a,EAAY,QACZC,EAAoB,SACpB,MAEF,IAAK,QACHjxD,GAAKse,EAAWx/B,EAChBmhB,GAAK6rE,EACL7a,EAAoB,SACpB,MAEF,IAAK,MACHjxD,GAAKlhB,EAAQ,EACbmhB,GAAKqe,EACL0yC,EAAY,SACZC,EAAoB,SACpB,MAEF,IAAK,SACHjxD,GAAKlhB,EAAQ,EACbmhB,GAAK/e,EAASo9B,EACd0yC,EAAY,SACZ,MAEF,IAAK,SACHhxD,GAAKlhB,EAAQ,EACbmhB,GAAK6rE,EACL9a,EAAY,SACZC,EAAoB,SACpB,MAEF,IAAK,aACHjxD,GAAKse,EACLre,GAAK6rE,EACL7a,EAAoB,SACpB,MAEF,IAAK,cACHjxD,GAAKlhB,EAAQw/B,EACbre,GAAK6rE,EACL9a,EAAY,QACZC,EAAoB,SACpB,MAEF,IAAK,YACHjxD,GAAKlhB,EAAQ,EACbmhB,GAAKqe,EACL0yC,EAAY,SACZ,MAEF,IAAK,eACHhxD,GAAKlhB,EAAQ,EACbmhB,GAAK/e,EAASo9B,EACd0yC,EAAY,SACZC,EAAoB,SACpB,MAEF,IAAK,gBACHjxD,GAAKse,EACLre,GAAKqe,EACL,MAEF,IAAK,iBACHte,GAAKlhB,EAAQw/B,EACbre,GAAKqe,EACL0yC,EAAY,QACZ,MAEF,IAAK,mBACHhxD,GAAKse,EACLre,GAAK/e,EAASo9B,EACd2yC,EAAoB,SACpB,MAEF,IAAK,oBACHjxD,GAAKlhB,EAAQw/B,EACbre,GAAK/e,EAASo9B,EACd0yC,EAAY,QACZC,EAAoB,SASxB,OALAryC,EAAMA,GAAO,IACT5e,EAAIA,EACR4e,EAAI3e,EAAIA,EACR2e,EAAIoyC,UAAYA,EAChBpyC,EAAIqyC,kBAAoBA,EACjBryC,EAsCT,SAASmtD,EAAat5G,EAAMu5G,EAAgBjb,EAAMkb,EAAU7+G,GAC1D,IAAK4+G,EACH,MAAO,GAGT,IAAIlB,GAAar4G,EAAO,IAAImE,MAAM,MAClCxJ,EAAU8+G,EAAuBF,EAAgBjb,EAAMkb,EAAU7+G,GAGjE,IAAK,IAAI1C,EAAI,EAAGgK,EAAMo2G,EAAU17G,OAAQ1E,EAAIgK,EAAKhK,IAC/CogH,EAAUpgH,GAAKyhH,EAAmBrB,EAAUpgH,GAAI0C,GAGlD,OAAO09G,EAAUruG,KAAK,MAGxB,SAASyvG,EAAuBF,EAAgBjb,EAAMkb,EAAU7+G,IAC9DA,EAAU2H,EAAO,GAAI3H,IACb2jG,KAAOA,EACXkb,EAAW5wE,EAAU4wE,EAAU,OACnC7+G,EAAQmlB,cAAgB8oB,EAAUjuC,EAAQmlB,cAAe,GACzD,IAAI65F,EAAUh/G,EAAQg/G,QAAU/wE,EAAUjuC,EAAQg/G,QAAS,GAG3Dh/G,EAAQi/G,YAAcpB,EAAS,IAAKla,GAGpC,IAAIub,EAAel/G,EAAQk/G,aAAerB,EAAS,IAAKla,GACxD3jG,EAAQs5C,YAAcrL,EAAUjuC,EAAQs5C,YAAa,IAKrD,IAFA,IAAI0iE,EAAe4C,EAAiBz2G,KAAKitB,IAAI,EAAGwpF,EAAiB,GAExDthH,EAAI,EAAGA,EAAI0hH,GAAWhD,GAAgBkD,EAAc5hH,IAC3D0+G,GAAgBkD,EAGlB,IAAIC,EAAgBtB,EAASgB,EAAUlb,GAYvC,OAVIwb,EAAgBnD,IAClB6C,EAAW,GACXM,EAAgB,GAGlBnD,EAAe4C,EAAiBO,EAChCn/G,EAAQ6+G,SAAWA,EACnB7+G,EAAQm/G,cAAgBA,EACxBn/G,EAAQg8G,aAAeA,EACvBh8G,EAAQ4+G,eAAiBA,EAClB5+G,EAGT,SAAS++G,EAAmBK,EAAUp/G,GACpC,IAAI4+G,EAAiB5+G,EAAQ4+G,eACzBjb,EAAO3jG,EAAQ2jG,KACfqY,EAAeh8G,EAAQg8G,aAE3B,IAAK4C,EACH,MAAO,GAGT,IAAIpsE,EAAYqrE,EAASuB,EAAUzb,GAEnC,GAAInxD,GAAaosE,EACf,OAAOQ,EAGT,IAAK,IAAI73G,EAAI,GAAIA,IAAK,CACpB,GAAIirC,GAAawpE,GAAgBz0G,GAAKvH,EAAQmlB,cAAe,CAC3Di6F,GAAYp/G,EAAQ6+G,SACpB,MAGF,IAAIQ,EAAkB,IAAN93G,EAAU+3G,EAAeF,EAAUpD,EAAch8G,EAAQk/G,aAAcl/G,EAAQi/G,aAAezsE,EAAY,EAAIrqC,KAAKq4C,MAAM4+D,EAASp9G,OAASg6G,EAAexpE,GAAa,EAEvLA,EAAYqrE,EADZuB,EAAWA,EAASjJ,OAAO,EAAGkJ,GACC1b,GAOjC,MAJiB,KAAbyb,IACFA,EAAWp/G,EAAQs5C,aAGd8lE,EAGT,SAASE,EAAej6G,EAAM22G,EAAckD,EAAcD,GAIxD,IAHA,IAAIvtF,EAAQ,EACRp0B,EAAI,EAECgK,EAAMjC,EAAKrD,OAAQ1E,EAAIgK,GAAOoqB,EAAQsqF,EAAc1+G,IAAK,CAChE,IAAI6vB,EAAW9nB,EAAKoI,WAAWnQ,GAC/Bo0B,GAAS,GAAKvE,GAAYA,GAAY,IAAM+xF,EAAeD,EAG7D,OAAO3hH,EAST,SAASiiH,EAAc5b,GAErB,OAAOka,EAAS,IAAKla,GAUvB,SAAS6a,EAAYn5G,EAAMs+F,GACzB,OAAO73D,EAAQ0yE,YAAYn5G,EAAMs+F,GAsBnC,SAAS8Z,EAAep4G,EAAMs+F,EAAM7sE,EAASitE,EAAgBvpF,GACnD,MAARnV,IAAiBA,GAAQ,IACzB,IAAIq0G,EAAazrE,EAAU81D,EAAgBwb,EAAc5b,IACrD+Y,EAAQr3G,EAAOA,EAAKmE,MAAM,MAAQ,GAClCsqB,EAAS4oF,EAAM16G,OAAS03G,EACxBwC,EAAcpoF,EACd0rF,GAAuB,EAM3B,GAJI1oF,IACFolF,GAAeplF,EAAQ,GAAKA,EAAQ,IAGlCzxB,GAAQmV,EAAU,CACpBglG,GAAuB,EACvB,IAAIC,EAAmBjlG,EAAS0hG,YAC5BwD,EAAkBllG,EAASyhG,WAE/B,GAAwB,MAApBwD,GAA4BvD,EAAcuD,EAC5Cp6G,EAAO,GACPq3G,EAAQ,QACH,GAAuB,MAAnBgD,EAOT,IANA,IAAI1/G,EAAU8+G,EAAuBY,GAAmB5oF,EAAUA,EAAQ,GAAKA,EAAQ,GAAK,GAAI6sE,EAAMnpF,EAASqkG,SAAU,CACvHG,QAASxkG,EAASwkG,QAClB1lE,YAAa9+B,EAAS8+B,cAIfh8C,EAAI,EAAGgK,EAAMo1G,EAAM16G,OAAQ1E,EAAIgK,EAAKhK,IAC3Co/G,EAAMp/G,GAAKyhH,EAAmBrC,EAAMp/G,GAAI0C,GAK9C,MAAO,CACL08G,MAAOA,EACP5oF,OAAQA,EACRooF,YAAaA,EACbxC,WAAYA,EACZ8F,qBAAsBA,GAmC1B,SAASzD,EAAc12G,EAAMsf,GAC3B,IAAIk3F,EAAe,CACjBa,MAAO,GACPhrF,MAAO,EACPoC,OAAQ,GAIV,GAFQ,MAARzuB,IAAiBA,GAAQ,KAEpBA,EACH,OAAOw2G,EAMT,IAHA,IACIr6G,EADAk1C,EAAY6nE,EAAU7nE,UAAY,EAGI,OAAlCl1C,EAAS+8G,EAAU5vG,KAAKtJ,KAAgB,CAC9C,IAAIs6G,EAAen+G,EAAOO,MAEtB49G,EAAejpE,GACjBkpE,EAAW/D,EAAcx2G,EAAKw6G,UAAUnpE,EAAWipE,IAGrDC,EAAW/D,EAAcr6G,EAAO,GAAIA,EAAO,IAC3Ck1C,EAAY6nE,EAAU7nE,UAGpBA,EAAYrxC,EAAKrD,QACnB49G,EAAW/D,EAAcx2G,EAAKw6G,UAAUnpE,EAAWrxC,EAAKrD,SAG1D,IAAI06G,EAAQb,EAAaa,MACrBoD,EAAgB,EAChB9D,EAAe,EAEf+D,EAAc,GACdC,EAAar7F,EAAMm/E,YACnBtpF,EAAWmK,EAAMnK,SACjBylG,EAAgBzlG,GAAYA,EAASyhG,WACrCiE,EAAiB1lG,GAAYA,EAAS0hG,YAEtC8D,IACe,MAAjBC,IAA0BA,GAAiBD,EAAW,GAAKA,EAAW,IACpD,MAAlBE,IAA2BA,GAAkBF,EAAW,GAAKA,EAAW,KAI1E,IAAK,IAAI1iH,EAAI,EAAGA,EAAIo/G,EAAM16G,OAAQ1E,IAAK,CAKrC,IAJA,IAAIg+D,EAAOohD,EAAMp/G,GACbo8G,EAAa,EACblnE,EAAY,EAEPjrC,EAAI,EAAGA,EAAI+zD,EAAKrkD,OAAOjV,OAAQuF,IAAK,CAC3C,IACIqyG,GADA5/F,EAAQshD,EAAKrkD,OAAO1P,IACDsyG,WAAal1F,EAAMq/E,KAAKhqF,EAAM6/F,YAAc,GAE/D/V,EAAc9pF,EAAM8pF,YAAc8V,EAAW9V,YAE7CH,EAAO3pF,EAAM2pF,KAAOiW,EAAWjW,MAAQh/E,EAAMg/E,KAE7Cwc,EAAcnmG,EAAMkgG,WAAajsE,EAErC2rE,EAAWM,WAAYqF,EAAc5b,IAOrC,GANAG,IAAgBqc,GAAerc,EAAY,GAAKA,EAAY,IAC5D9pF,EAAM8Z,OAASqsF,EACfnmG,EAAM0/F,WAAatrE,EAAUwrE,EAAW7V,eAAgBp/E,EAAMo/E,eAAgBoc,GAC9EnmG,EAAM4pF,UAAYgW,GAAcA,EAAWhW,WAAaj/E,EAAMi/E,UAC9D5pF,EAAM6pF,kBAAoB+V,GAAcA,EAAW/V,mBAAqB,SAElD,MAAlBqc,GAA0BJ,EAAgB9lG,EAAM0/F,WAAawG,EAC/D,MAAO,CACLxD,MAAO,GACPhrF,MAAO,EACPoC,OAAQ,GAIZ9Z,EAAMomG,UAAYvC,EAAS7jG,EAAM3U,KAAMs+F,GACvC,IAAI0c,EAAazG,EAAWwG,UACxBE,EAAuC,MAAdD,GAAqC,SAAfA,EAGnD,GAA0B,iBAAfA,GAAwE,MAA7CA,EAAW1+C,OAAO0+C,EAAWr+G,OAAS,GAC1EgY,EAAMumG,aAAeF,EACrBN,EAAYl9G,KAAKmX,GACjBqmG,EAAa,MAER,CACL,GAAIC,EAAwB,CAC1BD,EAAarmG,EAAMomG,UAGnB,IAAIxF,EAAsBhB,EAAWgB,oBACjC4F,EAAQ5F,GAAuBA,EAAoB9jG,MAWnD0pG,IACFA,EAAQxmB,EAAYymB,eAAeD,GAE/BxmB,EAAYI,aAAaomB,KAC3BH,EAAal4G,KAAKitB,IAAIirF,EAAYG,EAAM9uF,MAAQyuF,EAAcK,EAAM1sF,UAK1E,IAAI4sF,EAAW5c,EAAcA,EAAY,GAAKA,EAAY,GAAK,EAC/Duc,GAAcK,EACd,IAAIC,EAAoC,MAAjBV,EAAwBA,EAAgBztE,EAAY,KAEnD,MAApBmuE,GAA4BA,EAAmBN,KAC5CC,GAA0BK,EAAmBD,GAChD1mG,EAAM3U,KAAO,GACb2U,EAAMomG,UAAYC,EAAa,IAE/BrmG,EAAM3U,KAAOs5G,EAAa3kG,EAAM3U,KAAMs7G,EAAmBD,EAAU/c,EAAMnpF,EAASqkG,SAAU,CAC1FG,QAASxkG,EAASwkG,UAEpBhlG,EAAMomG,UAAYvC,EAAS7jG,EAAM3U,KAAMs+F,GACvC0c,EAAarmG,EAAMomG,UAAYM,IAKrCluE,GAAax4B,EAAM0X,MAAQ2uF,EAC3BzG,IAAeF,EAAavxG,KAAKitB,IAAIskF,EAAY1/F,EAAM0/F,aAGzDp+C,EAAK5pC,MAAQ8gB,EACb8oB,EAAKo+C,WAAaA,EAClBoG,GAAiBpG,EACjBsC,EAAe7zG,KAAKitB,IAAI4mF,EAAcxpE,GAGxCqpE,EAAaI,WAAaJ,EAAanqF,MAAQuc,EAAUtpB,EAAMy7F,UAAWpE,GAC1EH,EAAaK,YAAcL,EAAa/nF,OAASma,EAAUtpB,EAAMu1F,WAAY4F,GAEzEE,IACFnE,EAAaI,YAAc+D,EAAW,GAAKA,EAAW,GACtDnE,EAAaK,aAAe8D,EAAW,GAAKA,EAAW,IAGzD,IAAS1iH,EAAI,EAAGA,EAAIyiH,EAAY/9G,OAAQ1E,IAAK,CAC3C,IAAI0c,EACAumG,GADAvmG,EAAQ+lG,EAAYziH,IACCijH,aAEzBvmG,EAAM0X,MAAQqC,SAASwsF,EAAc,IAAM,IAAMvE,EAGnD,OAAOH,EAGT,SAAS+D,EAAWgB,EAAOpyE,EAAKqrE,GAK9B,IAJA,IAAIgH,EAAqB,KAARryE,EACbsyE,EAAOtyE,EAAIhlC,MAAM,MACjBkzG,EAAQkE,EAAMlE,MAETp/G,EAAI,EAAGA,EAAIwjH,EAAK9+G,OAAQ1E,IAAK,CACpC,IAAI+H,EAAOy7G,EAAKxjH,GACZ0c,EAAQ,CACV6/F,UAAWA,EACXx0G,KAAMA,EACNy0G,cAAez0G,IAASw7G,GAG1B,GAAKvjH,EAkBDo/G,EAAM75G,KAAK,CACToU,OAAQ,CAAC+C,SAnBP,CACN,IAAI/C,GAAUylG,EAAMA,EAAM16G,OAAS,KAAO06G,EAAM,GAAK,CACnDzlG,OAAQ,MACNA,OAQA8pG,EAAY9pG,EAAOjV,OACT,IAAd++G,GAAmB9pG,EAAO,GAAG6iG,aAAe7iG,EAAO,GAAK+C,GAEvD3U,IAAS07G,GAAaF,IAAe5pG,EAAOpU,KAAKmX,KApRxD8xB,EAAQ0yE,YAAc,SAAUn5G,EAAMs+F,GACpC,IAAI9zD,EAAMzC,IAEV,OADAyC,EAAI8zD,KAAOA,GA7YM,kBA8YV9zD,EAAI2uE,YAAYn5G,IAoSzBjI,EAAQu7G,aAlrBW,kBAmrBnBv7G,EAAQ6vC,UA/qBR,SAAmBpvC,EAAMkI,GACvB+lC,EAAQjuC,GAAQkI,GA+qBlB3I,EAAQygH,SAAWA,EACnBzgH,EAAQszC,gBAhoBR,SAAyBrrC,EAAMs+F,EAAMC,EAAWC,EAAmBC,EAAaC,EAAgBC,EAAMxpF,GACpG,OAAOwpF,EAmBT,SAAyB3+F,EAAMs+F,EAAMC,EAAWC,EAAmBC,EAAaC,EAAgBC,EAAMxpF,GACpG,IAAIqhG,EAAeE,EAAc12G,EAAM,CACrC2+F,KAAMA,EACNxpF,SAAUA,EACVmpF,KAAMA,EACNC,UAAWA,EACXE,YAAaA,EACbC,eAAgBA,IAEdkY,EAAaJ,EAAaI,WAC1BC,EAAcL,EAAaK,YAC3BtpE,EAAIypE,EAAY,EAAGJ,EAAYrY,GAC/B/wD,EAAI0pE,EAAY,EAAGL,EAAarY,GACpC,OAAO,IAAIhsC,EAAajlB,EAAGC,EAAGopE,EAAYC,GAhC5B8E,CAAgB37G,EAAMs+F,EAAMC,EAAWC,EAAmBC,EAAaC,EAAgBC,EAAMxpF,GAG7G,SAA0BnV,EAAMs+F,EAAMC,EAAWC,EAAmBC,EAAaC,EAAgBvpF,GAC/F,IAAIqhG,EAAe4B,EAAep4G,EAAMs+F,EAAMG,EAAaC,EAAgBvpF,GACvEyhG,EAAa4B,EAASx4G,EAAMs+F,GAE5BG,IACFmY,GAAcnY,EAAY,GAAKA,EAAY,IAG7C,IAAIoY,EAAcL,EAAaK,YAC3BtpE,EAAIypE,EAAY,EAAGJ,EAAYrY,GAC/B/wD,EAAI0pE,EAAY,EAAGL,EAAarY,GAChC36D,EAAO,IAAI2uB,EAAajlB,EAAGC,EAAGopE,EAAYC,GAE9C,OADAhzE,EAAKwwE,WAAamC,EAAanC,WACxBxwE,EAhBgH+3E,CAAiB57G,EAAMs+F,EAAMC,EAAWC,EAAmBC,EAAaC,EAAgBvpF,IAgoBjNpd,EAAQi/G,YAAcA,EACtBj/G,EAAQm/G,YAAcA,EACtBn/G,EAAQw0G,sBAAwBA,EAChCx0G,EAAQ8jH,yBA/bR,SAAkCzF,EAAcvyE,EAAMgoB,GAKpD,OAAO0gD,EAAsB,GAJZ,CACf6J,aAAcA,EACdgD,aAAcvtD,GAE6BhoB,IA2b/C9rC,EAAQuhH,aAAeA,EACvBvhH,EAAQmiH,cAAgBA,EACxBniH,EAAQohH,YAAcA,EACtBphH,EAAQqgH,eAAiBA,EACzBrgH,EAAQ2+G,cAAgBA,EACxB3+G,EAAQ+7G,SArBR,SAAkBx0F,GAGhB,IAAIg/E,GAAQh/E,EAAMw8F,UAAYx8F,EAAMy8F,aAAe,CAACz8F,EAAM08F,UAAW18F,EAAMsQ,YAAatQ,EAAMw8F,UAAY,IAAM,KAChHx8F,EAAMy8F,YAAc,cAAc/xG,KAAK,KACvC,OAAOs0F,GAAQl5D,EAAKk5D,IAASh/E,EAAM28F,UAAY38F,EAAMg/E,O,6BC7rBvD3lG,OAAOC,eAAeb,EAAS,aAAc,CAAEmB,OAAO,IACtDnB,EAAQ89D,cAAgB99D,EAAQg4D,cAAgBh4D,EAAQ84D,WAAa94D,EAAQysD,MAAQzsD,EAAQgL,OAAShL,EAAQ61B,WAAQ,EAKtH71B,EAAQ61B,MAJR,SAAe7sB,EAAK02C,GAEhB,YADkB,IAAdA,IAAwBA,EAAY,GACjCyf,OAAOpU,UAAU/hD,GAAOA,GAAOA,EAAIm7G,QAAQzkE,IAqBtD1/C,EAAQgL,OAlBR,SAAgBizC,EAAKjmB,GACjB,IAAIosF,EACAC,EASJ,GARW,MAAPrsF,GACAqsF,EAAc,MAAPpmE,EAAc,EAAIA,EACzBmmE,EAAO,IAGPC,EAAOrsF,EACPosF,EAAc,MAAPnmE,EAAc,EAAIA,GAEzBomE,EAAOD,EAAM,CACb,IAAItpG,EAAOspG,EACXA,EAAOC,EACPA,EAAOvpG,EAEX,OAAO/P,KAAKq4C,MAAMr4C,KAAKC,UAAYq5G,EAAOD,EAAO,GAAKA,IAsB1DpkH,EAAQysD,MAnBR,SAAetrD,EAAO88C,EAAKjmB,GACvB,OAAImnC,OAAO/xB,MAAMjsC,GACNu2D,IAEPyH,OAAO/xB,MAAM6Q,IAAQkhB,OAAO/xB,MAAMpV,GAC3B,EAEJimB,EAAMjmB,EACP72B,EAAQ88C,EACJA,EACA98C,EAAQ62B,EACJA,EACA72B,EACRA,EAAQ62B,EACJA,EACA72B,EAAQ88C,EACJA,EACA98C,GAMlBnB,EAAQ84D,WAHR,SAAoB33D,EAAOmjH,GACvB,OAAOA,EAAWv5G,KAAK8qB,MAAM10B,EAAQmjH,IAWzCtkH,EAAQg4D,cARR,SAAuBlsB,EAAMstB,GACzB,OAAiB,MAATA,GACI,MAARttB,GACAstB,EAAM5jB,GAAK1J,EAAK0J,GAChB4jB,EAAM5jB,GAAK1J,EAAK0J,EAAI1J,EAAKxX,OACzB8kC,EAAM3jB,GAAK3J,EAAK2J,GAChB2jB,EAAM3jB,GAAK3J,EAAK2J,EAAI3J,EAAKpV,QAQjC12B,EAAQ89D,cALR,SAAuBvG,EAAIC,GACvB,IAAIlB,EAAKiB,EAAG/hB,EAAIgiB,EAAGhiB,EACf+gB,EAAKgB,EAAG9hB,EAAI+hB,EAAG/hB,EACnB,OAAO6gB,EAAKA,EAAKC,EAAKA,I,6BC9D1B,IACQlB,EADJC,EAAaryD,MAAQA,KAAKqyD,YACtBD,EAAgB,SAAU70D,EAAG0N,GAI7B,OAHAmnD,EAAgBz0D,OAAO20D,gBAClB,CAAEC,UAAW,cAAgBrxD,OAAS,SAAU3D,EAAG0N,GAAK1N,EAAEg1D,UAAYtnD,IACvE,SAAU1N,EAAG0N,GAAK,IAAK,IAAIlM,KAAKkM,EAAOtN,OAAOkB,UAAUC,eAAe1B,KAAK6N,EAAGlM,KAAIxB,EAAEwB,GAAKkM,EAAElM,MAC3ExB,EAAG0N,IAErB,SAAU1N,EAAG0N,GAChB,GAAiB,mBAANA,GAA0B,OAANA,EAC3B,MAAM,IAAImU,UAAU,uBAAyBtS,OAAO7B,GAAK,iCAE7D,SAASunD,IAAOxyD,KAAK6F,YAActI,EADnC60D,EAAc70D,EAAG0N,GAEjB1N,EAAEsB,UAAkB,OAANoM,EAAatN,OAAOY,OAAO0M,IAAMunD,EAAG3zD,UAAYoM,EAAEpM,UAAW,IAAI2zD,KAGvF70D,OAAOC,eAAeb,EAAS,aAAc,CAAEmB,OAAO,IACtDnB,EAAQukH,WAAQ,EAChB,IAAI/mD,EAAU,EAAQ,IAClBypC,EAAS,EAAQ,IACjBvpC,EAAc,EAAQ,KACtB8mD,EAAa,EAAQ,KAErBD,EAAuB,SAAUpuD,GAEjC,SAASouD,EAAMhgH,EAAOkgH,EAAeC,EAAet6G,GAChD,IAAIgsD,EAAQD,EAAO91D,KAAK4C,OAASA,KAMjC,OALAmzD,EAAMuuD,UAAY,EAClBvuD,EAAM7xD,MAAQi5D,EAAQxH,MAAMx0D,OAAO+C,GACnC6xD,EAAMquD,cAAgBjnD,EAAQxH,MAAMx0D,OAAOijH,GAC3CruD,EAAMsuD,cAAgBlnD,EAAQxH,MAAMx0D,OAAOkjH,GAC3CtuD,EAAMhsD,IAAMozD,EAAQxH,MAAMx0D,OAAO4I,GAC1BgsD,EA+mBX,OAvnBAd,EAAUivD,EAAOpuD,GAUjBv1D,OAAOC,eAAe0jH,EAAMziH,UAAWb,OAAOC,YAAa,CACvDH,IAAK,WACD,OAAOwjH,EAAMrjH,aAEjBJ,YAAY,EACZwkB,cAAc,IAElBi/F,EAAMziH,UAAU08D,KAAO,WAwBnB,IAvBA,IAeIvwD,EACAC,EACA3N,EACAa,EACAyiG,EACAG,EACA4gB,EACAC,EAgCArvE,EACAC,EACAqvE,EAxDAvgH,EAAQtB,KAAKsB,MACbkgH,EAAgBxhH,KAAKwhH,cACrBC,EAAgBzhH,KAAKyhH,cACrBt6G,EAAMnH,KAAKmH,IACXq2F,EAAKl8F,EAAMixC,EACXkrD,EAAKn8F,EAAMkxC,EACXqkB,EAAK2qD,EAAcjvE,EACnBgkB,EAAKirD,EAAchvE,EACnBskB,EAAK2qD,EAAclvE,EACnBwkB,EAAK0qD,EAAcjvE,EACnBkqD,EAAKv1F,EAAIorC,EACToqD,EAAKx1F,EAAIqrC,EACTshB,EAAS,GACTguD,EAAU,GACVC,EAAS,CAAC,GAAI,IAST9kH,EAAI,EAAGA,EAAI,EAAGA,GAAK,EAWxB,GAVU,IAANA,GACAgO,EAAI,EAAIuyF,EAAK,GAAK3mC,EAAK,EAAIC,EAC3B9rD,GAAK,EAAIwyF,EAAK,EAAI3mC,EAAK,EAAIC,EAAK,EAAI4lC,EACpCp/F,EAAI,EAAIu5D,EAAK,EAAI2mC,IAGjBvyF,EAAI,EAAIwyF,EAAK,GAAKlnC,EAAK,EAAIQ,EAC3B/rD,GAAK,EAAIyyF,EAAK,EAAIlnC,EAAK,EAAIQ,EAAK,EAAI4lC,EACpCr/F,EAAI,EAAIi5D,EAAK,EAAIknC,GAEjB31F,KAAKinC,IAAI/jC,GAAK,MAAlB,CACI,GAAIlD,KAAKinC,IAAI9jC,GAAK,MACd,UAEJ9M,GAAKb,EAAI2N,GACD,GAAK9M,EAAI,GACb2jH,EAAQt/G,KAAKrE,QAGrBwjH,EAAO12G,EAAIA,EAAI,EAAI3N,EAAI0N,EACvB42G,EAAW95G,KAAK2rC,KAAKkuE,GACjBA,EAAO,KAEX/gB,IAAO31F,EAAI22G,IAAa,EAAI52G,IACnB,GAAK41F,EAAK,GACfkhB,EAAQt/G,KAAKo+F,IACjBG,IAAO91F,EAAI22G,IAAa,EAAI52G,IACnB,GAAK+1F,EAAK,GACf+gB,EAAQt/G,KAAKu+F,IAOrB,IAFA,IAAI75F,EAAI46G,EAAQngH,OACZqgH,EAAO96G,EACJA,GAIHqrC,GADAsvE,EAAK,GADL1jH,EAAI2jH,EADJ56G,GAAK,KAII26G,EAAKA,EAAKrkB,EACX,EAAIqkB,EAAKA,EAAK1jH,EAAI04D,EAClB,EAAIgrD,EAAK1jH,EAAIA,EAAI24D,EACjB34D,EAAIA,EAAIA,EAAIu+F,EACpBqlB,EAAO,GAAG76G,GAAKqrC,EACfC,EACIqvE,EAAKA,EAAKA,EAAKpkB,EACX,EAAIokB,EAAKA,EAAK1jH,EAAIo4D,EAClB,EAAIsrD,EAAK1jH,EAAIA,EAAI44D,EACjB54D,EAAIA,EAAIA,EAAIw+F,EACpBolB,EAAO,GAAG76G,GAAKsrC,EACfshB,EAAO5sD,GAAK,CAAE+6G,EAAG1vE,EAAG2vE,EAAG1vE,GAE3BsvE,EAAQE,GAAQ,EAChBF,EAAQE,EAAO,GAAK,EACpBluD,EAAOkuD,GAAQ,CAAEC,EAAGzkB,EAAI0kB,EAAGzkB,GAC3B3pC,EAAOkuD,EAAO,GAAK,CAAEC,EAAGvlB,EAAIwlB,EAAGvlB,GAC/BolB,EAAO,GAAGC,GAAQxkB,EAClBukB,EAAO,GAAGC,GAAQvkB,EAClBskB,EAAO,GAAGC,EAAO,GAAKtlB,EACtBqlB,EAAO,GAAGC,EAAO,GAAKrlB,EACtBmlB,EAAQngH,OAASqgH,EAAO,EACxBD,EAAO,GAAGpgH,OAASqgH,EAAO,EAC1BD,EAAO,GAAGpgH,OAASqgH,EAAO,EAC1BluD,EAAOnyD,OAASqgH,EAAO,EACvB,IAAIzrF,EAAOzuB,KAAKkzC,IAAIx3C,MAAM,KAAMu+G,EAAO,IACnC9wG,EAAMnJ,KAAKkzC,IAAIx3C,MAAM,KAAMu+G,EAAO,IAClC1vF,EAAQvqB,KAAKitB,IAAIvxB,MAAM,KAAMu+G,EAAO,IACpCvmD,EAAS1zD,KAAKitB,IAAIvxB,MAAM,KAAMu+G,EAAO,IACzC,OAAO,IAAItnD,EAAYgB,UAAUllC,EAAMtlB,EAAKohB,EAAQkE,EAAMilC,EAASvqD,IAEvEqwG,EAAMziH,UAAU68D,aAAe,SAAU38D,EAAGY,GAExC,YADgB,IAAZA,IAAsBA,EAAU,IAC7BK,KAAKiyG,SAASjyG,KAAK8xG,cAAc/yG,EAAGY,KAE/C2hH,EAAMziH,UAAUg9D,mBAAqB,SAAU98D,EAAGY,QAC9B,IAAZA,IAAsBA,EAAU,IACpC,IAAIy5B,EAAOp5B,KAAKmiH,WAAWxiH,GAC3B,OAAOK,KAAK+xG,UAAU/xG,KAAK8xG,cAAc/yG,EAAGq6B,GAAOA,IAEvDkoF,EAAMziH,UAAU+8D,6BAA+B,SAAU78D,EAAGY,QACxC,IAAZA,IAAsBA,EAAU,IACpC,IAAIy5B,EAAOp5B,KAAKmiH,WAAWxiH,GACvByiH,EAAWpiH,KAAK67D,mBAAmB98D,EAAGq6B,GAC1C,IAAKgpF,EACD,OAAO,EAEX,IAAIzgH,EAAS3B,KAAK2B,OAAOy3B,GACzB,OAAe,IAAXz3B,EACO,EAEJygH,EAAWzgH,GAEtB2/G,EAAMziH,UAAUizG,cAAgB,SAAU/yG,EAAGY,QACzB,IAAZA,IAAsBA,EAAU,IACpC,IAAI88C,EAAYz8C,KAAKqiH,aAAa1iH,GAC9B2iH,EAAetiH,KAAKuiH,aAAa5iH,GACjC6iH,EAAiB16G,KAAK+3F,IAAI,IAAKpjD,GAC/BgmE,EAA0B,KAC1BC,EAAgC,EAChCC,EAA8B,EAC9BC,EAAgB,EAChBC,EAAc,EACdC,EAAc,EACdC,EAAa,KACbn/F,EAAQ0+F,EAAa3gH,OACrBqhH,EAAQp/F,EAAQ,EAAI,EAAIA,EAAQ,EAmBpC,IAlBA0+F,EAAan3E,SAAQ,SAAU83E,EAAUhmH,GACrC,IAAIimH,EAAYD,EAAS3hH,MAAMuvD,SAAS9xD,GACpCokH,EAAUF,EAAS97G,IAAI0pD,SAAS9xD,GAChCqkH,EAAUF,EAAYC,GACR,MAAdJ,GAAsBK,EAAUL,KAChCN,EAA0BQ,EAC1BP,EAAgCzlH,EAAI+lH,EACpCL,GAA+B1lH,EAAI,GAAK+lH,EACxCJ,EAAgBM,EAChBL,EAAcM,EACdJ,EAAaK,EACbN,EAAcG,EAASI,yBAOlB,CAMT,IAAIC,EAAsBV,EACpB96G,KAAKinC,IAAI6zE,EAAgBC,GAAeD,EACxC,EACFW,EAAmC,MAAfV,EAClB/6G,KAAKinC,IAAI6zE,EAAgBC,GAAeA,EACxC,EAcN,GAb2BS,EAAsBd,GAC7Ce,EAAoBf,KAKGI,GACrBA,EAAgBE,EAAcN,KAEXK,GACnBA,EAAcC,EAAcN,IAI9B,OAAOI,GAAiBC,EAClBH,EACAC,EAGV,IAAIa,EAAUf,EAAwBz5D,OAAO,IAC7Cg6D,GAAS,EACT,IAAIS,EAAaD,EAAQ,GAAGliH,MAAMuvD,SAAS9xD,GACvC2kH,EAAWF,EAAQ,GAAGr8G,IAAI0pD,SAAS9xD,GACnC4kH,EAAWF,EAAaC,EACxBE,EAAaJ,EAAQ,GAAGliH,MAAMuvD,SAAS9xD,GACvC8kH,EAAWL,EAAQ,GAAGr8G,IAAI0pD,SAAS9xD,GAEnC4kH,GADWC,EAAaC,GAExBpB,EAA0Be,EAAQ,GAClCb,GAA+BK,EAC/BJ,EAAgBa,EAChBZ,EAAca,IAGdjB,EAA0Be,EAAQ,GAClCd,GAAiCM,EACjCJ,EAAgBgB,EAChBf,EAAcgB,KAI1BvC,EAAMziH,UAAUi9D,oBAAsB,SAAU/8D,EAAGY,GAE/C,YADgB,IAAZA,IAAsBA,EAAU,IAC7BK,KAAKkyG,WAAWlyG,KAAK8xG,cAAc/yG,EAAGY,KAEjD2hH,EAAMziH,UAAUk2D,cAAgB,SAAUh2D,EAAGY,GAGzC,YAFgB,IAAZA,IAAsBA,EAAU,IACrBK,KAAK8jH,WAAWnkH,GACfo1D,cAAch2D,IAElCuiH,EAAMziH,UAAU09D,SAAW,SAAUJ,EAAOx8D,GAExC,QADgB,IAAZA,IAAsBA,EAAU,IAChCw8D,GAAS,EACT,OAAOn8D,KAAKgyG,UAAU,GAE1B,GAAI71C,GAAS,EACT,OAAOn8D,KAAKgyG,UAAU,GAE1B,IAAI7zG,EAAI6B,KAAK+jH,IAAI5nD,EAAOx8D,GACxB,OAAOK,KAAKgyG,UAAU7zG,IAE1BmjH,EAAMziH,UAAU49D,eAAiB,SAAU96D,EAAQhC,QAC/B,IAAZA,IAAsBA,EAAU,IACpC,IAAIxB,EAAI6B,KAAKgkH,UAAUriH,EAAQhC,GAC/B,OAAOK,KAAKgyG,UAAU7zG,IAE1BmjH,EAAMziH,UAAUmqD,OAAS,SAAU7qD,GAC/B,OAAO6B,KAAKgyG,UAAU7zG,IAE1BmjH,EAAMziH,UAAUmzG,UAAY,SAAU7zG,GAClC,IAAImD,EAAQtB,KAAKsB,MACbkgH,EAAgBxhH,KAAKwhH,cACrBC,EAAgBzhH,KAAKyhH,cACrBt6G,EAAMnH,KAAKmH,IACf,GAAIhJ,GAAK,EACL,MAAO,CACH,IAAImjH,EAAMhgH,EAAOA,EAAOA,EAAOA,GAC/B,IAAIggH,EAAMhgH,EAAOkgH,EAAeC,EAAet6G,IAGvD,GAAIhJ,GAAK,EACL,MAAO,CACH,IAAImjH,EAAMhgH,EAAOkgH,EAAeC,EAAet6G,GAC/C,IAAIm6G,EAAMn6G,EAAKA,EAAKA,EAAKA,IAGjC,IAAI88G,EAAgBjkH,KAAKkkH,kBAAkB/lH,GACvCgmH,EAAgBF,EAAcG,mBAC9BC,EAAgBJ,EAAcK,mBAC9BhiB,EAAU2hB,EAAc3hB,QACxBiiB,EAAkBN,EAAcO,qBAChCC,EAAkBR,EAAcS,qBACpC,MAAO,CACH,IAAIpD,EAAMhgH,EAAO6iH,EAAeE,EAAe/hB,GAC/C,IAAIgf,EAAMhf,EAASiiB,EAAiBE,EAAiBt9G,KAG7Dm6G,EAAMziH,UAAUwkH,iBAAmB,WAC/B,OAAOrjH,KAAKsB,MAAMuvD,SAAS7wD,KAAKmH,MAEpCm6G,EAAMziH,UAAUqlH,kBAAoB,SAAU/lH,GAC1C,IAAImD,EAAQtB,KAAKsB,MACbqjH,EAAW3kH,KAAKwhH,cAChBoD,EAAW5kH,KAAKyhH,cAChBt6G,EAAMnH,KAAKmH,IAEf,GAAIhJ,GAAK,EACL,MAAO,CACHimH,mBAAoB9iH,EAAMmG,QAC1B68G,mBAAoBhjH,EAAMmG,QAC1B66F,QAAShhG,EAAMmG,QACf+8G,qBAAsBG,EAASl9G,QAC/Bi9G,qBAAsBE,EAASn9G,SAGvC,GAAItJ,GAAK,EACL,MAAO,CACHimH,mBAAoBO,EAASl9G,QAC7B68G,mBAAoBM,EAASn9G,QAC7B66F,QAASn7F,EAAIM,QACb+8G,qBAAsBr9G,EAAIM,QAC1Bi9G,qBAAsBv9G,EAAIM,SAGlC,IAAIo9G,EAAY,IAAI7gB,EAAO1pC,KAAKh5D,EAAOqjH,GAAUhpD,QAAQx9D,GACrD2mH,EAAY,IAAI9gB,EAAO1pC,KAAKqqD,EAAUC,GAAUjpD,QAAQx9D,GACxD4mH,EAAY,IAAI/gB,EAAO1pC,KAAKsqD,EAAUz9G,GAAKw0D,QAAQx9D,GACnD6mH,EAAc,IAAIhhB,EAAO1pC,KAAKuqD,EAAWC,GAAWnpD,QAAQx9D,GAC5D8mH,EAAc,IAAIjhB,EAAO1pC,KAAKwqD,EAAWC,GAAWppD,QAAQx9D,GAEhE,MAAO,CACHimH,mBAAoBS,EACpBP,mBAAoBU,EACpB1iB,QAJa,IAAI0B,EAAO1pC,KAAK0qD,EAAaC,GAAatpD,QAAQx9D,GAK/DqmH,qBAAsBS,EACtBP,qBAAsBK,IAG9BzD,EAAMziH,UAAUqmH,gBAAkB,SAAUvlH,QACxB,IAAZA,IAAsBA,EAAU,IACpC,IAAI88C,EAAYz8C,KAAKqiH,aAAa1iH,GAC9B2iH,EAAe,CACf,IAAIhB,EAAMthH,KAAKsB,MAAOtB,KAAKwhH,cAAexhH,KAAKyhH,cAAezhH,KAAKmH,MAEvE,GAAkB,IAAds1C,EACA,OAAO6lE,EA8BX,IA5BA,IAAI6C,EAAiBnlH,KAAKqjH,mBACtBb,EAAiB16G,KAAK+3F,IAAI,IAAKpjD,GAG/B2oE,EAAY,EACZC,EAAU,WACVD,GAAa,EACb,IAAIE,EAAY,GAChBhD,EAAan3E,SAAQ,SAAU7tC,GAE3B,IAAIkmH,EAAUlmH,EAAE0rD,OAAO,IACvBs8D,EAAU9iH,KAAKghH,EAAQ,GAAIA,EAAQ,OAGvC,IAAI+B,EAAWD,EAAU95E,QAAO,SAAU8B,EAAMhwC,GAAK,OAAOgwC,EAAOhwC,EAAE+lH,qBAAuB,GAO5F,GAAI+B,EAAY,IADS,IAAbG,GAAkBA,EAAWJ,GAAkBI,EAAW,GACzC/C,EACzB,MAAO,CAAEtkH,MAAOonH,GAEpBhD,EAAegD,EACfH,EAAiBI,KAGR,CACT,IAAIC,EAAUH,IACd,GAAuB,iBAAZG,EACP,OAAOA,EAAQtnH,QAG3BojH,EAAMziH,UAAU8C,OAAS,SAAUhC,GAG/B,YAFgB,IAAZA,IAAsBA,EAAU,IACpBK,KAAKuiH,aAAa5iH,GACjB6rC,QAAO,SAAU8B,EAAMhwC,GACpC,OAAOgwC,EAAOhwC,EAAE+lH,qBACjB,IAEP/B,EAAMziH,UAAUkzG,UAAY,SAAU5zG,EAAGwB,GAErC,QADgB,IAAZA,IAAsBA,EAAU,IAChCxB,GAAK,EACL,OAAO,EAEX,IAAIs+C,OAAkCv6C,IAAtBvC,EAAQ88C,UAA0Bz8C,KAAK0hH,UAAY/hH,EAAQ88C,UAE3E,OADez8C,KAAKgpD,OAAO7qD,GAAG,GACdwD,OAAO,CAAE86C,UAAWA,KAExC6kE,EAAMziH,UAAU88D,QAAU,SAAUQ,EAAOx8D,GAEvC,QADgB,IAAZA,IAAsBA,EAAU,IAChCw8D,GAAS,EACT,OAAOn8D,KAAKsB,MAAMmG,QAEtB,GAAI00D,GAAS,EACT,OAAOn8D,KAAKmH,IAAIM,QAEpB,IAAItJ,EAAI6B,KAAK+jH,IAAI5nD,EAAOx8D,GACxB,OAAOK,KAAKiyG,SAAS9zG,IAEzBmjH,EAAMziH,UAAUu9D,cAAgB,SAAUz6D,EAAQhC,QAC9B,IAAZA,IAAsBA,EAAU,IACpC,IAAIxB,EAAI6B,KAAKgkH,UAAUriH,EAAQhC,GAC/B,OAAOK,KAAKiyG,SAAS9zG,IAEzBmjH,EAAMziH,UAAUozG,SAAW,SAAU9zG,GACjC,OAAIA,GAAK,EACE6B,KAAKsB,MAAMmG,QAElBtJ,GAAK,EACE6B,KAAKmH,IAAIM,QAEbzH,KAAKkkH,kBAAkB/lH,GAAGmkG,SAErCgf,EAAMziH,UAAUq8D,iBAAmB,WAC/B,IAAI55D,EAAQtB,KAAKsB,MACbqjH,EAAW3kH,KAAKwhH,cAChBoD,EAAW5kH,KAAKyhH,cAChBt6G,EAAMnH,KAAKmH,IACf,QAAS7F,EAAMkzD,OAAOmwD,IAClBA,EAASnwD,OAAOowD,IAChBA,EAASpwD,OAAOrtD,KAExBm6G,EAAMziH,UAAUk9D,UAAY,SAAUI,EAAOx8D,GAEzC,QADgB,IAAZA,IAAsBA,EAAU,KAC/BK,KAAKk7D,mBACN,OAAO,KACPiB,EAAQ,EACRA,EAAQ,EAEHA,EAAQ,IACbA,EAAQ,GAEZ,IAAIh+D,EAAI6B,KAAK+jH,IAAI5nD,EAAOx8D,GACxB,OAAOK,KAAKkyG,WAAW/zG,IAE3BmjH,EAAMziH,UAAUy+D,gBAAkB,SAAU37D,EAAQhC,GAEhD,QADgB,IAAZA,IAAsBA,EAAU,KAC/BK,KAAKk7D,mBACN,OAAO,KAEX,IAAI/8D,EAAI6B,KAAKgkH,UAAUriH,EAAQhC,GAC/B,OAAOK,KAAKkyG,WAAW/zG,IAE3BmjH,EAAMziH,UAAUqzG,WAAa,SAAU/zG,GACnC,IAAK6B,KAAKk7D,mBACN,OAAO,KAEP/8D,EAAI,IACJA,EAAI,GAEJA,EAAI,IACJA,EAAI,GAER,IAAIsnH,EAAiBzlH,KAAKkkH,kBAAkB/lH,GACxCm2D,EAAKmxD,EAAenB,mBACpB/vD,EAAKkxD,EAAejB,qBACpBpnD,EAAeqoD,EAAenjB,QAC9BjlC,EAAc,IAAI2mC,EAAO1pC,KAAKhG,EAAIC,GAGtC,OADA8I,EAAYjK,UAAUgK,EAAa7qB,EAAI+hB,EAAG/hB,EAAG6qB,EAAa5qB,EAAI8hB,EAAG9hB,GAC1D6qB,GAEXikD,EAAMziH,UAAUwjH,aAAe,SAAU1iH,GAErC,YADgB,IAAZA,IAAsBA,EAAU,IACR,MAArBA,EAAQ88C,UAAoBz8C,KAAK0hH,UAAY/hH,EAAQ88C,WAEhE6kE,EAAMziH,UAAU0jH,aAAe,SAAU5iH,GAErC,QADgB,IAAZA,IAAsBA,EAAU,IACR,MAAxBA,EAAQ2iH,aACR,OAAO3iH,EAAQ2iH,aAEnB,IAAI7lE,EAAYz8C,KAAKqiH,aAAa1iH,GAClC,OAAOK,KAAKklH,gBAAgB,CAAEzoE,UAAWA,KAE7C6kE,EAAMziH,UAAUsjH,WAAa,SAAUxiH,GAInC,YAHgB,IAAZA,IAAsBA,EAAU,IAG7B,CAAE88C,UAFOz8C,KAAKqiH,aAAa1iH,GAEH2iH,aADZtiH,KAAKuiH,aAAa5iH,KAGzC2hH,EAAMziH,UAAUklH,IAAM,SAAU5nD,EAAOx8D,GAEnC,QADgB,IAAZA,IAAsBA,EAAU,IAChCw8D,GAAS,EACT,OAAO,EAEX,GAAIA,GAAS,EACT,OAAO,EAEX,IAAI/iC,EAAOp5B,KAAKmiH,WAAWxiH,GAEvBgC,EADQ3B,KAAK2B,OAAOy3B,GACH+iC,EACrB,OAAOn8D,KAAKgkH,UAAUriH,EAAQy3B,IAElCkoF,EAAMziH,UAAUmlH,UAAY,SAAUriH,EAAQhC,QAC1B,IAAZA,IAAsBA,EAAU,IACpC,IAAI08D,GAAY,EACZ16D,EAAS,IACT06D,GAAY,EACZ16D,GAAUA,GAad,IAXA,IAII+gH,EACAC,EALAlmE,EAAYz8C,KAAKqiH,aAAa1iH,GAC9B2iH,EAAetiH,KAAKuiH,aAAa5iH,GACjCy5B,EAAO,CAAEqjB,UAAWA,EAAW6lE,aAAcA,GAC7CG,EAA0B,KAG1BiD,EAA6B,EAC7BC,EAA2B,EAC3Br4E,EAAO,EACP1pB,EAAQ0+F,EAAa3gH,OACrBqhH,EAAQp/F,EAAQ,EAAI,EAAIA,EAAQ,EAC3B3mB,EAAI,EAAGA,EAAI2mB,EAAO3mB,GAAK,EAAG,CAC/B,IAAIyE,EAAQ26D,EAAYp/D,EAAI2mB,EAAQ,EAAI3mB,EACpCgmH,EAAWX,EAAarlH,GACxB+zD,EAAOiyD,EAASI,mBACpB,GAAI1hH,GAAU2rC,EAAO0jB,EAAM,CACvByxD,EAA0BQ,EAC1BP,EAAgChhH,EAAQshH,EACxCL,GAA+BjhH,EAAQ,GAAKshH,EAC5C0C,EAA6BrpD,EACvB16D,EAAS2rC,EACT0jB,EAAO1jB,EAAO3rC,EACpBgkH,EAA2BtpD,EACrBrL,EAAO1jB,EAAO3rC,EACdA,EAAS2rC,EACf,MAEJA,GAAQ0jB,EAEZ,GAA+B,MAA3ByxD,EACA,OAAOpmD,EAAY,EAAI,EAW3B,IANA,IAAItB,EAAQ/6D,KAAK2B,OAAOy3B,GACpBopF,EAAiB16G,KAAK+3F,IAAI,IAAKpjD,KAKtB,CAGT,IADkB,IAAVse,EAAc2qD,EAA6B3qD,EAAQ,GAC/CynD,EACR,OAAOE,EAGX,IADkB,IAAV3nD,EAAc4qD,EAA2B5qD,EAAQ,GAC7CynD,EACR,OAAOG,EAGX,IAAIiD,OAAgC,EAChCC,OAA8B,EAC9BrC,EAAUf,EAAwBz5D,OAAO,IAC7Cg6D,GAAS,EACT,IAAI8C,EAAkBtC,EAAQ,GAAGH,mBAC7B0C,EAAkBvC,EAAQ,GAAGH,mBAC7BqC,GAA8BI,GAC9BrD,EAA0Be,EAAQ,GAClCb,GAA+BK,EAE/B6C,EACIC,GAFJF,EAAgCF,KAKhCjD,EAA0Be,EAAQ,GAClCd,GAAiCM,EAGjC6C,EACIE,GAHJH,EACIF,EAA6BI,IAIrCJ,EAA6BE,EAC7BD,EAA2BE,IAGnCvE,EAAMziH,UAAUmnH,SAAW,SAAUrmH,QACjB,IAAZA,IAAsBA,EAAU,IACpC,IAAI2iH,EAAetiH,KAAKuiH,aAAa5iH,GACjCm0D,EAAS,CAACwuD,EAAa,GAAGhhH,MAAMmG,SAEpC,OADA66G,EAAan3E,SAAQ,SAAU7tC,GAAK,OAAOw2D,EAAOtxD,KAAKlF,EAAE6J,IAAIM,YACtDqsD,GAEXwtD,EAAMziH,UAAUilH,WAAa,SAAUnkH,GAEnC,YADgB,IAAZA,IAAsBA,EAAU,IAC7B,IAAI4hH,EAAW0E,SAASjmH,KAAKgmH,SAASrmH,KAEjD2hH,EAAMziH,UAAUgmB,MAAQ,SAAU6uC,EAAIC,EAAIC,GAKtC,OAJA5zD,KAAKsB,MAAMujB,MAAM6uC,EAAIC,EAAIC,GACzB5zD,KAAKwhH,cAAc38F,MAAM6uC,EAAIC,EAAIC,GACjC5zD,KAAKyhH,cAAc58F,MAAM6uC,EAAIC,EAAIC,GACjC5zD,KAAKmH,IAAI0d,MAAM6uC,EAAIC,EAAIC,GAChB5zD,MAEXshH,EAAMziH,UAAU00D,OAAS,SAAUmB,EAAOd,GAKtC,OAJA5zD,KAAKsB,MAAMiyD,OAAOmB,EAAOd,GACzB5zD,KAAKwhH,cAAcjuD,OAAOmB,EAAOd,GACjC5zD,KAAKyhH,cAAcluD,OAAOmB,EAAOd,GACjC5zD,KAAKmH,IAAIosD,OAAOmB,EAAOd,GAChB5zD,MAEXshH,EAAMziH,UAAUu0D,UAAY,SAAUuH,EAAIC,GAatC,MAZkB,iBAAPD,GACP36D,KAAKsB,MAAM8xD,UAAUuH,EAAIC,GACzB56D,KAAKwhH,cAAcpuD,UAAUuH,EAAIC,GACjC56D,KAAKyhH,cAAcruD,UAAUuH,EAAIC,GACjC56D,KAAKmH,IAAIisD,UAAUuH,EAAIC,KAGvB56D,KAAKsB,MAAM8xD,UAAUuH,GACrB36D,KAAKwhH,cAAcpuD,UAAUuH,GAC7B36D,KAAKyhH,cAAcruD,UAAUuH,GAC7B36D,KAAKmH,IAAIisD,UAAUuH,IAEhB36D,MAEXshH,EAAMziH,UAAU21D,OAAS,SAAUl3D,GAC/B,OAAa,MAALA,GACJ0C,KAAKsB,MAAMkzD,OAAOl3D,EAAEgE,QACpBtB,KAAKwhH,cAAchtD,OAAOl3D,EAAEkkH,gBAC5BxhH,KAAKyhH,cAAcjtD,OAAOl3D,EAAEmkH,gBAC5BzhH,KAAKmH,IAAIqtD,OAAOl3D,EAAE6J,MAE1Bm6G,EAAMziH,UAAU4I,MAAQ,WACpB,OAAO,IAAI65G,EAAMthH,KAAKsB,MAAOtB,KAAKwhH,cAAexhH,KAAKyhH,cAAezhH,KAAKmH,MAE9Em6G,EAAMziH,UAAUktD,OAAS,WACrB,MAAO,CACHzqD,MAAOtB,KAAKsB,MAAMyqD,SAClBy1D,cAAexhH,KAAKwhH,cAAcz1D,SAClC01D,cAAezhH,KAAKyhH,cAAc11D,SAClC5kD,IAAKnH,KAAKmH,IAAI4kD,WAGtBu1D,EAAMziH,UAAU6gC,UAAY,WACxB,MAAO,CACH1/B,KAAKsB,MAAMo+B,YACX1/B,KAAKwhH,cAAc9hF,YACnB1/B,KAAKyhH,cAAc/hF,YACnB1/B,KAAKmH,IAAIu4B,aACX1wB,KAAK,MAEJsyG,EAxnBe,CADT,EAAQ,IA0nBZtrD,UACbj5D,EAAQukH,MAAQA,EAChB,SAAWA,GACPA,EAAMrjH,YAAc,eAAiBqjH,EAAM9jH,KA0B3C8jH,EAAM4E,QAzBN,SAAiBhwD,GACb,GAAgB,MAAZA,EACA,OAAO,EAEX,GAAIA,aAAoBorD,EACpB,OAAO,EAEX,IAAI1vG,EAAMskD,EAASl4D,OAAOC,aACtBm8F,EAAQlkC,EACZ,IACI,IAAY,MAAPtkD,GAAeA,IAAQ0vG,EAAMrjH,cAC9Bs8D,EAAQxH,MAAMkD,QAAQmkC,EAAM94F,QAC5Bi5D,EAAQxH,MAAMkD,QAAQmkC,EAAMonB,gBAC5BjnD,EAAQxH,MAAMkD,QAAQmkC,EAAMqnB,gBAC5BlnD,EAAQxH,MAAMkD,QAAQmkC,EAAMjzF,MACF,mBAAnBizF,EAAM4rB,UACe,mBAArB5rB,EAAM0pB,WACb,OAAO,EAGf,MAAOj2G,GACH,OAAO,EAEX,OAAO,GAzBf,CA4BGyzG,EAAQvkH,EAAQukH,QAAUvkH,EAAQukH,MAAQ,KAC7CvkH,EAAQukH,MAAQA,EAChB,SAAWA,GACP,SAAS6E,EAAsBC,GAC3B,IAAI1nH,EAAI0nH,EAAIzkH,OACR4wC,EAAI,GACJ1gC,EAAM,GACN5G,EAAI,EACRsnC,EAAE,GAAK6zE,EAAI,GAAKn7G,EAEhB,IAAK,IAAIhO,EAAI,EAAGA,EAAIyB,EAAGzB,GAAK,EACxB4U,EAAI5U,GAAK,EAAIgO,EACbA,GAAKhO,EAAIyB,EAAI,EAAI,EAAM,KAAOmT,EAAI5U,GAClCs1C,EAAEt1C,IAAMmpH,EAAInpH,GAAKs1C,EAAEt1C,EAAI,IAAMgO,EAEjC,IAAShO,EAAI,EAAGA,EAAIyB,EAAGzB,GAAK,EAExBs1C,EAAE7zC,EAAIzB,EAAI,IAAM4U,EAAInT,EAAIzB,GAAKs1C,EAAE7zC,EAAIzB,GAEvC,OAAOs1C,EA6DX+uE,EAAM+E,cAbN,SAAuBvyD,GACnB,GAAc,MAAVA,GAAmB5yD,MAAMD,QAAQ6yD,IAAWA,EAAOnyD,OAAS,EAC5D,MAAM,IAAIqB,MAAM,kCAIpB,IAFA,IAAIsjH,EAlDR,SAA+BxyD,GAC3B,IAAIyyD,EAAQzyD,EAAOvtD,KAAI,SAAUxH,GAAK,OAAOw7D,EAAQxH,MAAMtrD,MAAM1I,MAC7DynH,EAAqB,GACrBC,EAAsB,GACtB/nH,EAAI6nH,EAAM5kH,OAAS,EAEvB,GAAU,IAANjD,EAKA,OAHA8nH,EAAmB,GAAK,IAAIjsD,EAAQxH,OAAO,EAAIwzD,EAAM,GAAGh0E,EAAIg0E,EAAM,GAAGh0E,GAAK,GAAI,EAAIg0E,EAAM,GAAG/zE,EAAI+zE,EAAM,GAAG/zE,GAAK,GAE7Gi0E,EAAoB,GAAK,IAAIlsD,EAAQxH,MAAM,EAAIyzD,EAAmB,GAAGj0E,EAAIg0E,EAAM,GAAGh0E,EAAG,EAAIi0E,EAAmB,GAAGh0E,EAAI+zE,EAAM,GAAG/zE,GACrH,CAACg0E,EAAoBC,GAMhC,IAFA,IAAIL,EAAM,GAEDnpH,EAAI,EAAGA,EAAIyB,EAAI,EAAGzB,GAAK,EAC5BmpH,EAAInpH,GAAK,EAAIspH,EAAMtpH,GAAGs1C,EAAI,EAAIg0E,EAAMtpH,EAAI,GAAGs1C,EAE/C6zE,EAAI,GAAKG,EAAM,GAAGh0E,EAAI,EAAIg0E,EAAM,GAAGh0E,EACnC6zE,EAAI1nH,EAAI,IAAM,EAAI6nH,EAAM7nH,EAAI,GAAG6zC,EAAIg0E,EAAM7nH,GAAG6zC,GAAK,EAEjD,IAAIA,EAAI4zE,EAAsBC,GAE9B,IAASnpH,EAAI,EAAGA,EAAIyB,EAAI,EAAGzB,GAAK,EAC5BmpH,EAAInpH,GAAK,EAAIspH,EAAMtpH,GAAGu1C,EAAI,EAAI+zE,EAAMtpH,EAAI,GAAGu1C,EAE/C4zE,EAAI,GAAKG,EAAM,GAAG/zE,EAAI,EAAI+zE,EAAM,GAAG/zE,EACnC4zE,EAAI1nH,EAAI,IAAM,EAAI6nH,EAAM7nH,EAAI,GAAG8zC,EAAI+zE,EAAM7nH,GAAG8zC,GAAK,EAEjD,IAAIA,EAAI2zE,EAAsBC,GAE9B,IAASnpH,EAAI,EAAGA,EAAIyB,EAAGzB,GAAK,EAExBupH,EAAmBhkH,KAAK,IAAI+3D,EAAQxH,MAAMxgB,EAAEt1C,GAAIu1C,EAAEv1C,KAE9CA,EAAIyB,EAAI,EACR+nH,EAAoBjkH,KAAK,IAAI+3D,EAAQxH,MAAM,EAAIwzD,EAAMtpH,EAAI,GAAGs1C,EAAIA,EAAEt1C,EAAI,GAAI,EAAIspH,EAAMtpH,EAAI,GAAGu1C,EAAIA,EAAEv1C,EAAI,KAGrGwpH,EAAoBjkH,KAAK,IAAI+3D,EAAQxH,OAAOwzD,EAAM7nH,GAAG6zC,EAAIA,EAAE7zC,EAAI,IAAM,GAAI6nH,EAAM7nH,GAAG8zC,EAAIA,EAAE9zC,EAAI,IAAM,IAG1G,MAAO,CAAC8nH,EAAoBC,GAMRC,CAAsB5yD,GACtC6yD,EAAS,GACJ1pH,EAAI,EAAG25D,EAAK0vD,EAAc,GAAG3kH,OAAQ1E,EAAI25D,EAAI35D,GAAK,EAAG,CAC1D,IAAIukH,EAAgB,IAAIjnD,EAAQxH,MAAMuzD,EAAc,GAAGrpH,GAAGs1C,EAAG+zE,EAAc,GAAGrpH,GAAGu1C,GAC7EivE,EAAgB,IAAIlnD,EAAQxH,MAAMuzD,EAAc,GAAGrpH,GAAGs1C,EAAG+zE,EAAc,GAAGrpH,GAAGu1C,GACjFm0E,EAAOnkH,KAAK,IAAI8+G,EAAMxtD,EAAO72D,GAAIukH,EAAeC,EAAe3tD,EAAO72D,EAAI,KAE9E,OAAO0pH,GA5Ef,CA+EGrF,EAAQvkH,EAAQukH,QAAUvkH,EAAQukH,MAAQ,KAC7CvkH,EAAQukH,MAAQA,G,6BC/vBhB3jH,OAAOC,eAAeb,EAAS,aAAc,CAAEmB,OAAO,IACtDnB,EAAQ6pH,cAAW,EACnB,IAAIntD,EAAKD,UAAUU,WAEnB,SAAW0sD,GACPA,EAASC,OAASrtD,UAAUstD,WAAWrjH,QAAQ,OAAS,EACxDmjH,EAASG,SAAWttD,EAAGxrD,MAAM,uBAC7B24G,EAASI,WAAaxtD,UAAUstD,WAAWrjH,QAAQ,OAAS,EAC5DmjH,EAASK,MAAQxtD,EAAGh2D,QAAQ,SAAW,EACvCmjH,EAASM,UAAYztD,EAAGxrD,MAAM,gBAC9B24G,EAASO,UAAY1tD,EAAGxrD,MAAM,UAI9B24G,EAASQ,YAAc3tD,EAAGh2D,QAAQ,aAAe,GAC7Cg2D,EAAGh2D,QAAQ,QAAU,GACrBg2D,EAAGh2D,QAAQ,SAAW,EAI1BmjH,EAASS,cAAiC,MAAjBpkH,OAAOqkH,QACP,MAArBrkH,OAAOqkH,OAAOC,KACe,MAA7BtkH,OAAOqkH,OAAOC,IAAIC,QACtBZ,EAASa,UAAYhuD,EAAGh2D,QAAQ,YAAc,GAAKg2D,EAAGh2D,QAAQ,SAAW,EACzEmjH,EAASc,SAAWjuD,EAAGh2D,QAAQ,WAAa,GAAKg2D,EAAGh2D,QAAQ,SAAW,EACvEmjH,EAASe,WAAaluD,EAAGh2D,QAAQ,aAAe,EAChDmjH,EAASgB,UAAYnuD,EAAGh2D,QAAQ,iBAAmB,GAC/Cg2D,EAAGh2D,QAAQ,WAAa,GACxBg2D,EAAGh2D,QAAQ,SAAW,EAM1BmjH,EAASiB,cAAgB,iBAAkB/kH,SAAS+N,gBAIpD+1G,EAASkB,gBAAyC,MAAvB7kH,OAAO8kH,eAAyBnB,EAASC,OACpED,EAASoB,iBAAkB,EAC3B,IACI,IAAIroH,EAAUhC,OAAOC,eAAe,GAAI,UAAW,CAC/CE,IAAK,WACD8oH,EAASoB,iBAAkB,KAG/BpiG,EAAM9iB,SAASiC,cAAc,OAC7B6gB,EAAI1U,kBACJ0U,EAAI1U,iBAAiB,SAAS,cAAiBvR,GAGvD,MAAOuoB,IAOP0+F,EAASqB,kBAAoBnlH,SAAS6iF,iBAClC,GAAK7iF,SAAS6iF,gBAAgB,6BAA8B,kBAAqB,oCACjFlsB,EAAGh2D,QAAQ,WAAa,EAC5BmjH,EAASsB,uBAAyBtB,EAASqB,iBAzD/C,CA0DclrH,EAAQ6pH,WAAa7pH,EAAQ6pH,SAAW,KACtD,SAAWA,GACP,SAASuB,IACL,IAAIr1D,EAAM7vD,OAAOjG,OACjB,OAAW,MAAP81D,GAA0B,MAAXA,EAAIs1D,KAAiC,MAAlBt1D,EAAIs1D,IAAI1kF,OACnCovB,EAAIs1D,IAAI1kF,SAEZ,UAEXkjF,EAASuB,aAAeA,EAIxBvB,EAASyB,cAHT,WACI,MAA0B,UAAnBF,KAKX,IAAIG,EAAW,CACX1+G,OAAQ,QACR4/E,OAAQ,QACR9yE,OAAQ,OACRC,MAAO,OACPzO,MAAO,MACPojB,KAAM,MACNqY,MAAO,OAYXijF,EAAS2B,iBAVT,SAA0B//F,GACtB,IAAIhiB,EAAO1D,SAASiC,cAAcujH,EAAS9/F,IAAU,OACjDggG,EAAY,KAAOhgG,EACnBigG,EAAcD,KAAahiH,EAK/B,OAJKiiH,IACDjiH,EAAKtB,aAAasjH,EAAW,WAC7BC,EAAyC,mBAApBjiH,EAAKgiH,IAEvBC,GAhCf,CAmCc1rH,EAAQ6pH,WAAa7pH,EAAQ6pH,SAAW,M,6BCnGtD,YAwBe,IAJf,SAAcplH,GACZ,OAAQA,GAASA,EAAMG,OAAU,YAASH,GAAS,K,6BCrBrD,mCAqBI6iD,EAAQ,aAAS,SAASpG,GAC5B,OAAO,YAAS,YAAYA,EAAQ,EAAG,KAAmB,OAG7C,O,6BCzBf,YAuBe,IAJf,SAAqBz8C,EAAOtD,GAC1B,OAAO,YAAgBsD,EAAOtD,K,6BCpBhC,oBAgCe,IAJf,SAAuBsD,EAAOtD,EAAOuD,GACnC,OAAO,YAAkBD,EAAOtD,EAAO,YAAauD,EAAU,M,6BC7BhE,oCAkCI8kD,EAAS,aAAS,SAASt3B,EAAYywB,GACzC,GAAkB,MAAdzwB,EACF,MAAO,GAET,IAAIttB,EAAS+9C,EAAU/9C,OAMvB,OALIA,EAAS,GAAK,YAAestB,EAAYywB,EAAU,GAAIA,EAAU,IACnEA,EAAY,GACH/9C,EAAS,GAAK,YAAe+9C,EAAU,GAAIA,EAAU,GAAIA,EAAU,MAC5EA,EAAY,CAACA,EAAU,KAElB,YAAYzwB,EAAY,YAAYywB,EAAW,GAAI,OAG7C,O,6BC/Cf,oBAOI5gD,EAHcnB,OAAOkB,UAGQC,eAyB7B+mD,EAAU,aAAiB,SAAS1kD,EAAQjD,EAAOM,GACjDM,EAAe1B,KAAK+D,EAAQ3C,GAC9B2C,EAAO3C,GAAKgE,KAAKtE,GAEjB,YAAgBiD,EAAQ3C,EAAK,CAACN,OAInB,O,6BCxCf,mCA0BI+jD,EAAa,aAAS,SAASzgD,EAAOikB,GACxC,OAAO,YAAkBjkB,GACrB,YAAeA,EAAO,YAAYikB,EAAQ,EAAG,KAAmB,IAChE,MAGS,O,6BChCf,6BAsCe,IANf,SAAe9mB,EAAQ8C,GACrB,OAAiB,MAAV9C,EACHA,EACA,YAAQA,EAAQ,YAAa8C,GAAW,O,6BCnC9C,qBAkCI0E,EAAQ,aAAe,SAASxH,EAAQolB,EAAQm4B,GAClD,YAAUv9C,EAAQolB,EAAQm4B,MAGb,O,6BCtCf,4BAmCIyN,EAAW,aAAe,SAAShrD,EAAQolB,GAC7C,YAAWA,EAAQ,YAAOA,GAASplB,MAGtB,O,6BCvCf,YAkCe,IAJf,SAAiBT,EAAOuwC,GACtB,OAAO,YAAYvwC,EAAOuwC,K,6BC/B5B,oEAiBI3vC,EAHcnB,OAAOkB,UAGQC,eA2DlB,IAxBf,SAAiBZ,GACf,GAAa,MAATA,EACF,OAAO,EAET,GAAI,YAAYA,KACX,YAAQA,IAA0B,iBAATA,GAA4C,mBAAhBA,EAAMmJ,QAC1D,YAASnJ,IAAU,YAAaA,IAAU,YAAYA,IAC1D,OAAQA,EAAMyD,OAEhB,IAAIiQ,EAAM,YAAO1T,GACjB,GApDW,gBAoDP0T,GAnDO,gBAmDUA,EACnB,OAAQ1T,EAAM0+C,KAEhB,GAAI,YAAY1+C,GACd,OAAQ,YAASA,GAAOyD,OAE1B,IAAK,IAAInD,KAAON,EACd,GAAIY,EAAe1B,KAAKc,EAAOM,GAC7B,OAAO,EAGX,OAAO,I,6BCzET,YAmCe,IAJf,SAAeN,GACb,OAAO,YAAUA,EA7BM,K,6BCHzB,YA4Be,IAJf,SAAmBA,GACjB,OAAO,YAAUA,EAAO2+C,K,6BCzB1B,mCAMIpS,EAAc9sC,OAAOkB,UAGrBC,EAAiB2rC,EAAY3rC,eAuB7BotC,EAAW,aAAS,SAASvtC,EAAQozD,GACvCpzD,EAAShB,OAAOgB,GAEhB,IAAI+C,GAAS,EACTC,EAASowD,EAAQpwD,OACjBs6C,EAAQt6C,EAAS,EAAIowD,EAAQ,QAAK7vD,EAMtC,IAJI+5C,GAAS,YAAe8V,EAAQ,GAAIA,EAAQ,GAAI9V,KAClDt6C,EAAS,KAGFD,EAAQC,GAMf,IALA,IAAIoiB,EAASguC,EAAQrwD,GACjBiqB,EAAQ,YAAO5H,GACf2kG,GAAc,EACdC,EAAch9F,EAAMhqB,SAEf+mH,EAAaC,GAAa,CACjC,IAAInqH,EAAMmtB,EAAM+8F,GACZxqH,EAAQS,EAAOH,SAEL0D,IAAVhE,GACC,YAAGA,EAAOusC,EAAYjsC,MAAUM,EAAe1B,KAAKuB,EAAQH,MAC/DG,EAAOH,GAAOulB,EAAOvlB,IAK3B,OAAOG,KAGM,O,6BC/Df,kCAsCe,IAVf,SAAoBqjB,EAAQta,EAAQ8qB,GAOlC,OANAxQ,EAAS,YAASA,GAClBwQ,EAAuB,MAAZA,EACP,EACA,YAAU,YAAUA,GAAW,EAAGxQ,EAAOrgB,QAE7C+F,EAAS,YAAaA,GACfsa,EAAO1e,MAAMkvB,EAAUA,EAAW9qB,EAAO/F,SAAW+F,I,6BCnC7D,kCA0Ce,IAdf,SAAkBsa,EAAQta,EAAQ8qB,GAChCxQ,EAAS,YAASA,GAClBta,EAAS,YAAaA,GAEtB,IAAI/F,EAASqgB,EAAOrgB,OAKhBwF,EAJJqrB,OAAwBtwB,IAAbswB,EACP7wB,EACA,YAAU,YAAU6wB,GAAW,EAAG7wB,GAItC,OADA6wB,GAAY9qB,EAAO/F,SACA,GAAKqgB,EAAO1e,MAAMkvB,EAAUrrB,IAAQO,I,6BCvCzD,2DAmDe,IArBf,SAAesa,EAAQk9B,EAAWmnD,GAKhC,OAJIA,GAAyB,iBAATA,GAAqB,YAAerkF,EAAQk9B,EAAWmnD,KACzEnnD,EAAYmnD,OAAQnkG,IAEtBmkG,OAAkBnkG,IAAVmkG,EAzBa,WAyB4BA,IAAU,IAI3DrkF,EAAS,YAASA,MAEQ,iBAAbk9B,GACO,MAAbA,IAAsB,YAASA,OAEpCA,EAAY,YAAaA,KACP,YAAWl9B,GACpB,YAAU,YAAcA,GAAS,EAAGqkF,GAGxCrkF,EAAO7Y,MAAM+1C,EAAWmnD,GAZtB,K,6BCpCX,mCAoCe,IATf,SAAgBrkF,EAAQtjB,EAAGu9C,GAMzB,OAJEv9C,GADGu9C,EAAQ,YAAej6B,EAAQtjB,EAAGu9C,QAAe/5C,IAANxD,GAC1C,EAEA,YAAUA,GAET,YAAW,YAASsjB,GAAStjB,K,6BCjCtC,mCAMIi+C,EAAa70C,KAAK0tB,KAClB0qB,EAAcp4C,KAAKq4C,MAyCR,IAhBf,SAAan+B,EAAQrgB,EAAQ6/C,GAC3Bx/B,EAAS,YAASA,GAGlB,IAAI4mG,GAFJjnH,EAAS,YAAUA,IAEM,YAAWqgB,GAAU,EAC9C,IAAKrgB,GAAUinH,GAAajnH,EAC1B,OAAOqgB,EAET,IAAIk8C,GAAOv8D,EAASinH,GAAa,EACjC,OACE,YAAc1oE,EAAYge,GAAM1c,GAChCx/B,EACA,YAAc26B,EAAWuhB,GAAM1c,K,6BC5CnC,mCAsCe,IAVf,SAAgBx/B,EAAQrgB,EAAQ6/C,GAC9Bx/B,EAAS,YAASA,GAGlB,IAAI4mG,GAFJjnH,EAAS,YAAUA,IAEM,YAAWqgB,GAAU,EAC9C,OAAQrgB,GAAUinH,EAAYjnH,EACzBqgB,EAAS,YAAcrgB,EAASinH,EAAWpnE,GAC5Cx/B,I,6BCnCN,mCAsCe,IAVf,SAAkBA,EAAQrgB,EAAQ6/C,GAChCx/B,EAAS,YAASA,GAGlB,IAAI4mG,GAFJjnH,EAAS,YAAUA,IAEM,YAAWqgB,GAAU,EAC9C,OAAQrgB,GAAUinH,EAAYjnH,EACzB,YAAcA,EAASinH,EAAWpnE,GAASx/B,EAC5CA,I,6BCnCN,yEAeIm0B,EAAU,OA+FC,IAxDf,SAAkBn0B,EAAQriB,GACxB,IAAIgC,EA5CqB,GA6CrBknH,EA5CuB,MA8C3B,GAAI,YAASlpH,GAAU,CACrB,IAAIu/C,EAAY,cAAev/C,EAAUA,EAAQu/C,UAAYA,EAC7Dv9C,EAAS,WAAYhC,EAAU,YAAUA,EAAQgC,QAAUA,EAC3DknH,EAAW,aAAclpH,EAAU,YAAaA,EAAQkpH,UAAYA,EAItE,IAAID,GAFJ5mG,EAAS,YAASA,IAEKrgB,OACvB,GAAI,YAAWqgB,GAAS,CACtB,IAAIs/B,EAAa,YAAct/B,GAC/B4mG,EAAYtnE,EAAW3/C,OAEzB,GAAIA,GAAUinH,EACZ,OAAO5mG,EAET,IAAI7a,EAAMxF,EAAS,YAAWknH,GAC9B,GAAI1hH,EAAM,EACR,OAAO0hH,EAET,IAAI1nH,EAASmgD,EACT,YAAUA,EAAY,EAAGn6C,GAAK6H,KAAK,IACnCgT,EAAO1e,MAAM,EAAG6D,GAEpB,QAAkBjF,IAAdg9C,EACF,OAAO/9C,EAAS0nH,EAKlB,GAHIvnE,IACFn6C,GAAQhG,EAAOQ,OAASwF,GAEtB,YAAS+3C,IACX,GAAIl9B,EAAO1e,MAAM6D,GAAK2hH,OAAO5pE,GAAY,CACvC,IAAIjxC,EACAuxG,EAAYr+G,EAMhB,IAJK+9C,EAAUt8C,SACbs8C,EAAYvzC,OAAOuzC,EAAUn7B,OAAQ,YAASoyB,EAAQ7nC,KAAK4wC,IAAc,MAE3EA,EAAU7I,UAAY,EACdpoC,EAAQixC,EAAU5wC,KAAKkxG,IAC7B,IAAIuJ,EAAS96G,EAAMvM,MAErBP,EAASA,EAAOmC,MAAM,OAAcpB,IAAX6mH,EAAuB5hH,EAAM4hH,SAEnD,GAAI/mG,EAAOve,QAAQ,YAAay7C,GAAY/3C,IAAQA,EAAK,CAC9D,IAAIzF,EAAQP,EAAO8hD,YAAY/D,GAC3Bx9C,GAAS,IACXP,EAASA,EAAOmC,MAAM,EAAG5B,IAG7B,OAAOP,EAAS0nH,I,6BC3GlB,WAGI9d,EAAY,EAwBD,IALf,SAAkBp0E,GAChB,IAAInoB,IAAOu8F,EACX,OAAO,YAASp0E,GAAUnoB,I,6BCxB5B,aAmBI+9C,EAAa,YAAgB,eAElB,O,6BCrBf,qBAuBIxqC,EAAY,aAAiB,SAAS5gB,EAAQg+C,EAAMz9C,GAEtD,OADAy9C,EAAOA,EAAK91C,cACLlI,GAAUO,EAAQ,YAAWy9C,GAAQA,MAG/B,O,6BC5Bf,oBAwBI0N,EAAY,aAAiB,SAAS1rD,EAAQg+C,EAAMz9C,GACtD,OAAOP,GAAUO,EAAQ,IAAM,IAAM,YAAWy9C,MAGnC,O,6BC5Bf,YAsBImO,EAAY,aAAiB,SAASnsD,EAAQg+C,EAAMz9C,GACtD,OAAOP,GAAUO,EAAQ,IAAM,IAAMy9C,EAAKr9B,iBAG7B,O,6BC1Bf,YAsBIwqC,EAAY,aAAiB,SAASnrD,EAAQg+C,EAAMz9C,GACtD,OAAOP,GAAUO,EAAQ,IAAM,IAAMy9C,EAAK91C,iBAG7B,O,6BC1Bf,aAqCe,IAPf,SAAenL,GAIb,OAAO,YAASA,IAAUA,IAAUA,I,6BClCtC,IAGIo+C,EAHJ,MAGqB,EAAKlmB,SAgCX,IAJf,SAAkBl4B,GAChB,MAAuB,iBAATA,GAAqBo+C,EAAep+C,K,6BChCpD,aAoCe,IAJf,SAAuBA,GACrB,OAAO,YAAUA,IAAUA,IA9BN,kBA8BoCA,GA9BpC,mB,6BCHvB,oBAsCe,IAhBf,SAAes+C,EAAQ6D,EAAOC,GAa5B,YAZcp+C,IAAVo+C,IACFA,EAAQD,EACRA,OAAQn+C,QAEIA,IAAVo+C,IAEFA,GADAA,EAAQ,YAASA,KACCA,EAAQA,EAAQ,QAEtBp+C,IAAVm+C,IAEFA,GADAA,EAAQ,YAASA,KACCA,EAAQA,EAAQ,GAE7B,YAAU,YAAS7D,GAAS6D,EAAOC,K,6BCnC5C,mBAoCe,IANf,SAAuBpiD,GACrB,OAAOA,EACH,YAAU,YAAUA,IA5BH,mCA6BN,IAAVA,EAAcA,EAAQ,I,6BCjC7B,mBAIIujD,EAAc,OAGdunE,EAAiB,IAAKt1F,SAmCX,IATf,SAAkB1R,EAAQinG,EAAOhtE,GAM/B,OALIA,GAAkB,MAATgtE,EACXA,EAAQ,EACCA,IACTA,GAASA,GAEJD,EAAe,YAAShnG,GAAQha,QAAQy5C,EAAa,IAAKwnE,GAAS,K,6BCvC5E,aAwBe,IAJf,SAAc5nH,GACZ,OAAO,YAAO,EAAGA,K,6BCrBnB,oBAqBIwiB,EAAQ,aAAS,SAASxiB,EAAM8T,GAClC,OAAO,YAAU9T,EAAM,EAAG8T,MAGb,O,cCzBf,IAAI+zG,EAAa,GACbC,EAAgB,GAIpB,SAASC,EAAU5kG,EAAK7kB,GAGpB,GAFAA,EAAUA,GAAW,QAETuC,IAARsiB,EACA,MAAM,IAAIxhB,MANN,yFASR,IAWIqmH,EAXA72F,GAA+B,IAApB7yB,EAAQqwB,QAAmB,UAAY,SAClD8B,OAAkC5vB,IAAtBvC,EAAQmyB,UAA0BnyB,EAAQmyB,UAAYhvB,SAASy1F,cAAc,QACzF+wB,EAAcJ,EAAWzlH,QAAQquB,GAiCrC,OA9BqB,IAAjBw3F,IACAA,EAAcJ,EAAW1mH,KAAKsvB,GAAa,EAC3Cq3F,EAAcG,GAAe,SAMEpnH,IAA/BinH,EAAcG,SAAuEpnH,IAAzCinH,EAAcG,GAAa92F,GACvE62F,EAAeF,EAAcG,GAAa92F,IAE1C62F,EAAeF,EAAcG,GAAa92F,GAsBlD,WACI,IAAI62F,EAAevmH,SAASiC,cAAc,SAE1C,OADAskH,EAAankH,aAAa,OAAQ,YAC3BmkH,EAzBmDE,GAErC,YAAb/2F,EACAV,EAAU7B,aAAao5F,EAAcv3F,EAAUlkB,WAAW,IAE1DkkB,EAAU1sB,YAAYikH,IAKJ,QAAtB7kG,EAAIpX,WAAW,KAAiBoX,EAAMA,EAAIsxF,OAAO,EAAGtxF,EAAI7iB,SAGxD0nH,EAAaG,WACbH,EAAaG,WAAWz3F,SAAWvN,EAEnC6kG,EAAa71G,aAAegR,EAGzB6kG,EASXrsH,EAAOD,QAAUqsH,EACjBpsH,EAAOD,QAAQqsH,UAAYA,G,6BCzD3B,mBA4Be,IALf,SAAmBlrH,GACjB,OAAiB,IAAVA,IAA4B,IAAVA,GACtB,YAAaA,IArBJ,oBAqBc,YAAWA,K,6BCDxB,IAJf,SAAeA,GACb,OAAgB,MAATA,I,6BCAM,IAJf,SAAgBA,GACd,OAAiB,OAAVA,I,6BCGM,IAJf,SAAqBA,GACnB,YAAiBgE,IAAVhE,I,oECfLusC,EAAc9sC,OAAOkB,UAGrB,EAAiB4rC,EAAY3rC,eAsBlB,MARf,SAAgC25D,EAAUrZ,EAAU5gD,EAAKG,GACvD,YAAiBuD,IAAbu2D,GACC,OAAA9xD,EAAA,GAAG8xD,EAAUhuB,EAAYjsC,MAAU,EAAepB,KAAKuB,EAAQH,GAC3D4gD,EAEFqZ,GCxBLgxD,EAAgB,CAClB,KAAM,KACN,IAAK,IACL,KAAM,IACN,KAAM,IACN,SAAU,QACV,SAAU,SAcG,MAJf,SAA0BC,GACxB,MAAO,KAAOD,EAAcC,I,gDCF1BC,EAAuB,iBACvBC,EAAsB,qBACtBC,EAAwB,gCAYxBC,EAA6B,mBAM7BC,EAAe,kCAGfC,EAAY,OAGZC,EAAoB,yBAMpB,EAHctsH,OAAOkB,UAGQC,eA+NlB,IArHf,SAAkBkjB,EAAQriB,EAASs8C,GAIjC,IAAI/Z,EAAW8qB,EAAA,EAAiBsC,QAAQtyC,EAAEgwC,kBAAoBA,EAAA,EAE1D/Q,GAAS,YAAej6B,EAAQriB,EAASs8C,KAC3Ct8C,OAAUuC,GAEZ8f,EAAS,YAASA,GAClBriB,EAAU,OAAAiqD,EAAA,GAAa,GAAIjqD,EAASuiC,EAAU,GAE9C,IAIIgoF,EACAC,EALA76D,EAAU,OAAA1F,EAAA,GAAa,GAAIjqD,EAAQ2vD,QAASptB,EAASotB,QAAS,GAC9D86D,EAAc,OAAAh7G,EAAA,GAAKkgD,GACnB+6D,EAAgB,YAAW/6D,EAAS86D,GAIpC1oH,EAAQ,EACR4oH,EAAc3qH,EAAQ2qH,aAAeN,EACrCjmG,EAAS,WAGTwmG,EAAe5+G,QAChBhM,EAAQgN,QAAUq9G,GAAWjmG,OAAS,IACvCumG,EAAYvmG,OAAS,KACpBumG,IAAgB,IAAgBP,EAAeC,GAAWjmG,OAAS,KACnEpkB,EAAQy9E,UAAY4sC,GAAWjmG,OAAS,KACzC,KAMEymG,EAAY,EAAeptH,KAAKuC,EAAS,aACxC,kBACCA,EAAQ6qH,UAAY,IAAIxiH,QAAQ,MAAO,KACxC,KACD,GAEJga,EAAOha,QAAQuiH,GAAc,SAASt8G,EAAOw8G,EAAaC,EAAkBC,EAAiBC,EAAeziF,GAsB1G,OArBAuiF,IAAqBA,EAAmBC,GAGxC5mG,GAAU/B,EAAO1e,MAAM5B,EAAOymC,GAAQngC,QAAQiiH,EAAmB,GAG7DQ,IACFP,GAAa,EACbnmG,GAAU,YAAc0mG,EAAc,UAEpCG,IACFT,GAAe,EACfpmG,GAAU,OAAS6mG,EAAgB,eAEjCF,IACF3mG,GAAU,iBAAmB2mG,EAAmB,+BAElDhpH,EAAQymC,EAASl6B,EAAMtM,OAIhBsM,KAGT8V,GAAU,OAIV,IAAI8mG,EAAW,EAAeztH,KAAKuC,EAAS,aAAeA,EAAQkrH,SACnE,GAAKA,GAKA,GAAIf,EAA2Bl7G,KAAKi8G,GACvC,MAAM,IAAI7nH,MAzNqB,2DAoN/B+gB,EAAS,iBAAmBA,EAAS,QASvCA,GAAUomG,EAAepmG,EAAO/b,QAAQ2hH,EAAsB,IAAM5lG,GACjE/b,QAAQ4hH,EAAqB,MAC7B5hH,QAAQ6hH,EAAuB,OAGlC9lG,EAAS,aAAe8mG,GAAY,OAAS,SAC1CA,EACG,GACA,wBAEJ,qBACCX,EACI,mBACA,KAEJC,EACG,uFAEA,OAEJpmG,EACA,gBAEF,IAAI5iB,EAAS,OAAAssD,EAAA,IAAQ,WACnB,OAAO1rD,SAASqoH,EAAaI,EAAY,UAAYzmG,GAClDvgB,WAAMtB,EAAWmoH,MAMtB,GADAlpH,EAAO4iB,OAASA,EACZ,OAAA8jC,EAAA,GAAQ1mD,GACV,MAAMA,EAER,OAAOA,I,6BC3QT,IAGI,EAHcxD,OAAOkB,UAGQC,eAclB,MAJf,SAAiBH,EAAQH,GACvB,OAAiB,MAAVG,GAAkB,EAAevB,KAAKuB,EAAQH,I,SCmBxC,IAJf,SAAaG,EAAQuwC,GACnB,OAAiB,MAAVvwC,GAAkB,YAAQA,EAAQuwC,EAAM,K,kDCblC,MANf,SAAkBvwC,EAAQw9C,GACxB,OAAO,YAAWx9C,EAAQw9C,GAAO,SAASj+C,EAAOgxC,GAC/C,OAAO,OAAAyb,EAAA,GAAMhsD,EAAQuwC,O,QCMrBic,EAAO,aAAS,SAASxsD,EAAQw9C,GACnC,OAAiB,MAAVx9C,EAAiB,GAAK,EAASA,EAAQw9C,MAGjC,O,gECGA,MAVf,SAAS2uE,EAAoBryD,EAAUrZ,EAAU5gD,EAAKG,EAAQolB,EAAQzD,GAOpE,OANI,OAAA7d,EAAA,GAASg2D,IAAa,OAAAh2D,EAAA,GAAS28C,KAEjC9+B,EAAMgC,IAAI88B,EAAUqZ,GACpB,YAAUA,EAAUrZ,OAAUl9C,EAAW4oH,EAAqBxqG,GAC9DA,EAAc,OAAE8+B,IAEXqZ,G,SCAL1O,EAAe,aAAS,SAAS50C,GAEnC,OADAA,EAAK3S,UAAKN,EAAW,GACd,YAAM8oD,EAAA,OAAW9oD,EAAWiT,MAGtB,O,iDCTA,EAFQ,YAfH,CAClB,QAAS,IACT,OAAQ,IACR,OAAQ,IACR,SAAU,IACV,QAAS,MCJP41G,EAAgB,4BAChBC,EAAmBr/G,OAAOo/G,EAAchnG,QA4B7B,IAPf,SAAkB/B,GAEhB,OADAA,EAAS,YAASA,KACAgpG,EAAiBp8G,KAAKoT,GACpCA,EAAOha,QAAQ+iH,EAAe,GAC9B/oG,I,6BC7BN,IAAIm2B,EAAYrwC,KAAKitB,IACjBgmB,EAAYjzC,KAAKkzC,IAeN,MAJf,SAAqBwB,EAAQl7C,EAAO6F,GAClC,OAAOq1C,GAAUzB,EAAUz5C,EAAO6F,IAAQq1C,EAASrE,EAAU72C,EAAO6F,I,gBCwCvD,IAZf,SAAiBq1C,EAAQl7C,EAAO6F,GAS9B,OARA7F,EAAQ,OAAAm/C,EAAA,GAASn/C,QACLY,IAARiF,GACFA,EAAM7F,EACNA,EAAQ,GAER6F,EAAM,OAAAs5C,EAAA,GAASt5C,GAEjBq1C,EAAS,OAAAE,EAAA,GAASF,GACX,EAAYA,EAAQl7C,EAAO6F,K,8BCnDpC,YACA,IAAI8jH,EAA8B,iBAAVroH,GAAsBA,GAAUA,EAAOjF,SAAWA,QAAUiF,EAErE,Q,gDCQA,IAJf,SAAmB1E,GACjB,OAAOA,GAAUA,I,6BCPnB,IAIIgtH,EAAY5gH,KAAK0hB,IA+BN,IApBf,SAAkB3qB,GAChB,IAAIuiB,EAAQ,EACRunG,EAAa,EAEjB,OAAO,WACL,IAAIC,EAAQF,IACRlrG,EApBO,IAoBiBorG,EAAQD,GAGpC,GADAA,EAAaC,EACTprG,EAAY,GACd,KAAM4D,GAzBI,IA0BR,OAAOnd,UAAU,QAGnBmd,EAAQ,EAEV,OAAOviB,EAAKmC,WAAMtB,EAAWuE,c,6BChCjC,YAGI0xC,EAAYrwC,KAAKitB,IAgCN,IArBf,SAAkB1zB,EAAMC,EAAOkyC,GAE7B,OADAlyC,EAAQ62C,OAAoBj2C,IAAVZ,EAAuBD,EAAKM,OAAS,EAAKL,EAAO,GAC5D,WAML,IALA,IAAI6T,EAAO1O,UACP/E,GAAS,EACTC,EAASw2C,EAAUhjC,EAAKxT,OAASL,EAAO,GACxCE,EAAQN,MAAMS,KAETD,EAAQC,GACfH,EAAME,GAASyT,EAAK7T,EAAQI,GAE9BA,GAAS,EAET,IADA,IAAIm/C,EAAY3/C,MAAMI,EAAQ,KACrBI,EAAQJ,GACfu/C,EAAUn/C,GAASyT,EAAKzT,GAG1B,OADAm/C,EAAUv/C,GAASkyC,EAAUhyC,GACtB,YAAMH,EAAMrB,KAAM6gD,M,6BC/B7B,+DAgCe,IAZf,SAA6B3R,EAAMkQ,GACjC,OAAI,YAAMlQ,IAAS,YAAmBkQ,GAC7B,YAAwB,YAAMlQ,GAAOkQ,GAEvC,SAASzgD,GACd,IAAI85D,EAAW,YAAI95D,EAAQuwC,GAC3B,YAAqBhtC,IAAbu2D,GAA0BA,IAAarZ,EAC3C,YAAMzgD,EAAQuwC,GACd,YAAYkQ,EAAUqZ,EAAU42C,M,6BC5BxC,WAce,IAJf,SAA4BnxG,GAC1B,OAAOA,GAAUA,IAAU,YAASA,K,6BCQvB,IAVf,SAAiCM,EAAK4gD,GACpC,OAAO,SAASzgD,GACd,OAAc,MAAVA,IAGGA,EAAOH,KAAS4gD,SACPl9C,IAAbk9C,GAA2B5gD,KAAOb,OAAOgB,Q,6BCfhD,mDAsCe,IAtBf,SAAiBA,EAAQuwC,EAAMm8E,GAO7B,IAJA,IAAI3pH,GAAS,EACTC,GAHJutC,EAAO,YAASA,EAAMvwC,IAGJgD,OACdR,GAAS,IAEJO,EAAQC,GAAQ,CACvB,IAAInD,EAAM,YAAM0wC,EAAKxtC,IACrB,KAAMP,EAAmB,MAAVxC,GAAkB0sH,EAAQ1sH,EAAQH,IAC/C,MAEFG,EAASA,EAAOH,GAElB,OAAI2C,KAAYO,GAASC,EAChBR,KAETQ,EAAmB,MAAVhD,EAAiB,EAAIA,EAAOgD,SAClB,YAASA,IAAW,YAAQnD,EAAKmD,KACjD,YAAQhD,IAAW,YAAYA,M,6BCnCpC,mBAmBe,IALf,SAAwBA,EAAQw4C,EAAUm0E,GACxC,IAAInqH,EAASg2C,EAASx4C,GACtB,OAAO,YAAQA,GAAUwC,EAAS,YAAUA,EAAQmqH,EAAY3sH,M,6BChBlE,oDAWIG,EAHcnB,OAAOkB,UAGQC,eAqClB,IA3Bf,SAAuBZ,EAAOqtH,GAC5B,IAAI/+E,EAAQ,YAAQtuC,GAChBstH,GAASh/E,GAAS,YAAYtuC,GAC9BuxG,GAAUjjE,IAAUg/E,GAAS,YAASttH,GACtCutH,GAAUj/E,IAAUg/E,IAAU/b,GAAU,YAAavxG,GACrDwtH,EAAcl/E,GAASg/E,GAAS/b,GAAUgc,EAC1CtqH,EAASuqH,EAAc,YAAUxtH,EAAMyD,OAAQmL,QAAU,GACzDnL,EAASR,EAAOQ,OAEpB,IAAK,IAAInD,KAAON,GACTqtH,IAAazsH,EAAe1B,KAAKc,EAAOM,IACvCktH,IAEQ,UAAPltH,GAECixG,IAAkB,UAAPjxG,GAA0B,UAAPA,IAE9BitH,IAAkB,UAAPjtH,GAA0B,cAAPA,GAA8B,cAAPA,IAEtD,YAAQA,EAAKmD,KAElBR,EAAOqB,KAAKhE,GAGhB,OAAO2C,I,6BC/BM,IANf,SAAiBE,EAAMmyC,GACrB,OAAO,SAASxqC,GACd,OAAO3H,EAAKmyC,EAAUxqC,O,6BCV1B,+BAqBe,IAVf,SAAqB+a,GACnB,IAAIorF,EAAY,YAAaprF,GAC7B,OAAwB,GAApBorF,EAAUxtG,QAAewtG,EAAU,GAAG,GACjC,YAAwBA,EAAU,GAAG,GAAIA,EAAU,GAAG,IAExD,SAASxwG,GACd,OAAOA,IAAWolB,GAAU,YAAYplB,EAAQolB,EAAQorF,M,6BCjB5D,oBAqBe,IAVf,SAAiBlgF,EAAYxtB,GAC3B,IAAIC,GAAS,EACTP,EAAS,YAAY8tB,GAAc/tB,MAAM+tB,EAAWttB,QAAU,GAKlE,OAHA,YAASstB,GAAY,SAAS/wB,EAAOM,EAAKywB,GACxC9tB,IAASO,GAASD,EAASvD,EAAOM,EAAKywB,MAElC9tB,I,6BClBT,YA+Be,IArBf,SAAwBy8C,EAAUN,GAChC,OAAO,SAASruB,EAAYxtB,GAC1B,GAAkB,MAAdwtB,EACF,OAAOA,EAET,IAAK,YAAYA,GACf,OAAO2uB,EAAS3uB,EAAYxtB,GAM9B,IAJA,IAAIE,EAASstB,EAAWttB,OACpBD,EAAQ47C,EAAY37C,GAAU,EAC9Bg8C,EAAWhgD,OAAOsxB,IAEdquB,EAAY57C,MAAYA,EAAQC,KACa,IAA/CF,EAASk8C,EAASj8C,GAAQA,EAAOi8C,KAIvC,OAAO1uB,K,6BCHI,IAjBf,SAAuBquB,GACrB,OAAO,SAAS3+C,EAAQ8C,EAAU01C,GAMhC,IALA,IAAIz1C,GAAS,EACTi8C,EAAWhgD,OAAOgB,GAClBgtB,EAAQwrB,EAASx4C,GACjBgD,EAASgqB,EAAMhqB,OAEZA,KAAU,CACf,IAAInD,EAAMmtB,EAAM2xB,EAAY37C,IAAWD,GACvC,IAA+C,IAA3CD,EAASk8C,EAASn/C,GAAMA,EAAKm/C,GAC/B,MAGJ,OAAOh/C,K,6BCpBX,YAwCe,IA9Bf,SAA0BT,EAAOuwC,GAC/B,GAAIvwC,IAAUuwC,EAAO,CACnB,IAAIk9E,OAAyBzpH,IAAVhE,EACfowG,EAAsB,OAAVpwG,EACZ0tH,EAAiB1tH,GAAUA,EAC3BqwG,EAAc,YAASrwG,GAEvBuwG,OAAyBvsG,IAAVusC,EACfigE,EAAsB,OAAVjgE,EACZkgE,EAAiBlgE,GAAUA,EAC3BmgE,EAAc,YAASngE,GAE3B,IAAMigE,IAAcE,IAAgBL,GAAerwG,EAAQuwC,GACtD8/D,GAAeE,GAAgBE,IAAmBD,IAAcE,GAChEN,GAAaG,GAAgBE,IAC5Bgd,GAAgBhd,IACjBid,EACH,OAAO,EAET,IAAMtd,IAAcC,IAAgBK,GAAe1wG,EAAQuwC,GACtDmgE,GAAe+c,GAAgBC,IAAmBtd,IAAcC,GAChEG,GAAaid,GAAgBC,IAC5Bnd,GAAgBmd,IACjBjd,EACH,OAAQ,EAGZ,OAAO,I,6BCrCT,4BA6Be,IAhBf,SAAoBhwG,EAAQw9C,EAAO75C,GAKjC,IAJA,IAAIZ,GAAS,EACTC,EAASw6C,EAAMx6C,OACfR,EAAS,KAEJO,EAAQC,GAAQ,CACvB,IAAIutC,EAAOiN,EAAMz6C,GACbxD,EAAQ,YAAQS,EAAQuwC,GAExB5sC,EAAUpE,EAAOgxC,IACnB,YAAQ/tC,EAAQ,YAAS+tC,EAAMvwC,GAAST,GAG5C,OAAOiD,I,8BC1BT,wBAGIi2C,EAAgC,iBAAXr6C,SAAuBA,UAAYA,QAAQmH,UAAYnH,QAG5Es6C,EAAaD,GAAgC,iBAAVp6C,GAAsBA,IAAWA,EAAOkH,UAAYlH,EAMvF06C,EAHgBL,GAAcA,EAAWt6C,UAAYq6C,EAG5B,IAAKM,YAASx1C,EACvC2pH,EAAcn0E,EAASA,EAAOm0E,iBAAc3pH,EAqBjC,IAXf,SAAqB8zC,EAAQD,GAC3B,GAAIA,EACF,OAAOC,EAAO1yC,QAEhB,IAAI3B,EAASq0C,EAAOr0C,OAChBR,EAAS0qH,EAAcA,EAAYlqH,GAAU,IAAIq0C,EAAOnwC,YAAYlE,GAGxE,OADAq0C,EAAOzuC,KAAKpG,GACLA,K,mDC/BT,aAee,IALf,SAAyB2qH,EAAY/1E,GACnC,IAAIC,EAASD,EAAS,YAAiB+1E,EAAW91E,QAAU81E,EAAW91E,OACvE,OAAO,IAAI81E,EAAWjmH,YAAYmwC,EAAQ81E,EAAW71E,WAAY61E,EAAWnqH,U,6BCZ9E,4BAiBe,IANf,SAAyBhD,GACvB,MAAqC,mBAAtBA,EAAOkH,aAA8B,YAAYlH,GAE5D,GADA,YAAW,YAAaA,M,6BCb9B,qCAeIotH,EATmBpuH,OAAOsxG,sBASqB,SAAStwG,GAE1D,IADA,IAAIwC,EAAS,GACNxC,GACL,YAAUwC,EAAQ,YAAWxC,IAC7BA,EAAS,YAAaA,GAExB,OAAOwC,GAN8B,IASxB,O,6BCxBf,mBAgBe,IAJf,SAAoBxC,EAAQolB,GAC1B,OAAOplB,GAAU,YAAWolB,EAAQ,YAAKA,GAASplB,K,6BCbpD,aAGI8iD,EAAc,OAeH,IANf,SAAkBz/B,GAChB,OAAOA,EACHA,EAAO1e,MAAM,EAAG,YAAgB0e,GAAU,GAAGha,QAAQy5C,EAAa,IAClEz/B,I,6BCdN,IAAIgqG,EAAe,KAiBJ,IAPf,SAAyBhqG,GAGvB,IAFA,IAAItgB,EAAQsgB,EAAOrgB,OAEZD,KAAWsqH,EAAap9G,KAAKoT,EAAOs/C,OAAO5/D,MAClD,OAAOA,I,6BCZM,IAFK,oB,6BCDpB,mCAgCe,IApBf,SAAyB66C,GACvB,OAAO,SAASv6B,GACdA,EAAS,YAASA,GAElB,IAAIs/B,EAAa,YAAWt/B,GACxB,YAAcA,QACd9f,EAEAwnH,EAAMpoE,EACNA,EAAW,GACXt/B,EAAOs/C,OAAO,GAEdpgB,EAAWI,EACX,YAAUA,EAAY,GAAGtyC,KAAK,IAC9BgT,EAAO1e,MAAM,GAEjB,OAAOomH,EAAIntE,KAAgB2E,K,6BCRhB,IAPf,SAAmB7/C,EAAM2f,EAAM7L,GAC7B,GAAmB,mBAAR9T,EACT,MAAM,IAAI+d,UAdQ,uBAgBpB,OAAOQ,YAAW,WAAave,EAAKmC,WAAMtB,EAAWiT,KAAU6L,K,6BChBjErjB,OAAOC,eAAeb,EAAS,aAAc,CAAEmB,OAAO,IACtDnB,EAAQkvH,UAAO,EAmBflvH,EAAQkvH,KAjBR,WASI,IAFA,IAAIpqD,EAAM,GACN9U,EAAW,uCACN9vD,EAAI,EAAGgK,EAAM8lD,EAASprD,OAAQ1E,EAAIgK,EAAKhK,GAAK,EAAG,CACpD,IAAI+B,EAAI+tD,EAAS9vD,GACbc,EAAqB,GAAhB+J,KAAKC,SAAiB,EAE/B85D,IADc,MAAN7iE,EAAYjB,EAAU,MAANiB,EAAiB,EAAJjB,EAAW,EAAMiB,GAC7C2E,SAAS,IAEtB,OAAOk+D,I,gECCI,MAVf,SAAoBrgE,EAAO0qH,GACzB,IAAIvqH,EAASH,EAAMG,OAGnB,IADAH,EAAM4F,KAAK8kH,GACJvqH,KACLH,EAAMG,GAAUH,EAAMG,GAAQzD,MAEhC,OAAOsD,G,iBC0BM,MA3Bf,SAAyB7C,EAAQ8vC,EAAOkR,GAOtC,IANA,IAAIj+C,GAAS,EACTyqH,EAAcxtH,EAAOytH,SACrBC,EAAc59E,EAAM29E,SACpBzqH,EAASwqH,EAAYxqH,OACrB2qH,EAAe3sE,EAAOh+C,SAEjBD,EAAQC,GAAQ,CACvB,IAAIR,EAAS,YAAiBgrH,EAAYzqH,GAAQ2qH,EAAY3qH,IAC9D,GAAIP,EACF,OAAIO,GAAS4qH,EACJnrH,EAGFA,GAAmB,QADdw+C,EAAOj+C,IACiB,EAAI,GAU5C,OAAO/C,EAAO+C,MAAQ+sC,EAAM/sC,O,eCQf,IA7Bf,SAAqButB,EAAYywB,EAAWC,GAExCD,EADEA,EAAU/9C,OACA,YAAS+9C,GAAW,SAASj+C,GACvC,OAAI,OAAAR,EAAA,GAAQQ,GACH,SAASvD,GACd,OAAO,YAAQA,EAA2B,IAApBuD,EAASE,OAAeF,EAAS,GAAKA,IAGzDA,KAGG,CAACs2C,EAAA,GAGf,IAAIr2C,GAAS,EACbg+C,EAAY,YAASA,EAAW,YAAU,MAE1C,IAAIv+C,EAAS,YAAQ8tB,GAAY,SAAS/wB,EAAOM,EAAKywB,GAIpD,MAAO,CAAE,SAHM,YAASywB,GAAW,SAASj+C,GAC1C,OAAOA,EAASvD,MAEa,QAAWwD,EAAO,MAASxD,MAG5D,OAAO,EAAWiD,GAAQ,SAASxC,EAAQ8vC,GACzC,OAAO,EAAgB9vC,EAAQ8vC,EAAOkR,Q,kDCzCtC4sE,EAAc,WAChB,IAAInqG,EAAM,SAAS9T,KAAK,KAAc,IAAWc,MAAQ,IAAWA,KAAKo9G,UAAY,IACrF,OAAOpqG,EAAO,iBAAmBA,EAAO,GAFzB,GAgBF,MAJf,SAAkB/gB,GAChB,QAASkrH,GAAeA,KAAclrH,G,eCJpCorH,EAAe,8BAGf96D,EAAY5vD,SAASlD,UACrB4rC,EAAc9sC,OAAOkB,UAGrB+yD,EAAeD,EAAUhuD,SAGzB,EAAiB8mC,EAAY3rC,eAG7B4tH,EAAa/gH,OAAO,IACtBimD,EAAax0D,KAAK,GAAgB4K,QAjBjB,sBAiBuC,QACvDA,QAAQ,yDAA0D,SAAW,KAmBjE,IARf,SAAsB9J,GACpB,SAAK,OAAAuE,EAAA,GAASvE,IAAU,EAASA,MAGnB,OAAA8F,EAAA,GAAW9F,GAASwuH,EAAaD,GAChC79G,KAAK,YAAS1Q,M,0CClBhB,ICtBXyuH,EAAa,mGAGbC,EAAe,WASfC,EDFJ,SAAuBxrH,GACrB,IAAIF,EAAS,OAAAslD,EAAA,GAAQplD,GAAM,SAAS7C,GAIlC,OAfmB,MAYf6Q,EAAMutC,MACRvtC,EAAMwpD,QAEDr6D,KAGL6Q,EAAQlO,EAAOkO,MACnB,OAAOlO,ECPU,EAAc,SAAS6gB,GACxC,IAAI7gB,EAAS,GAOb,OAN6B,KAAzB6gB,EAAO5U,WAAW,IACpBjM,EAAOqB,KAAK,IAEdwf,EAAOha,QAAQ2kH,GAAY,SAAS1+G,EAAOuuC,EAAQswE,EAAOC,GACxD5rH,EAAOqB,KAAKsqH,EAAQC,EAAU/kH,QAAQ4kH,EAAc,MAASpwE,GAAUvuC,MAElE9M,KAGM,O,gBC1Bf,IAAI8H,EAAO,EAAQ,KAEf+7D,EAAM,EAAQ,IAEdr2B,EAAS,EAAQ,IAEjBq+E,EAAU,EAAQ,KAElBC,EAAU,EAAQ,KAElBC,EAAU,EAAQ,KAElBt0F,EAAY,EAAQ,KAEpBu0F,EAAe,EAAQ,KAWvBC,GAAUpoD,EAAI7L,gBACdk0D,EAAe,CACjBC,OAAQJ,GAENK,EAAY,GA+EhB,IAAIC,EAAU,SAAUh/G,EAAIi/G,EAAKr0F,GAC/BA,EAAOA,GAAQ,GAKfp5B,KAAKytH,IAAMA,EAKXztH,KAAKwO,GAAKA,EACV,IAAI3M,EAAO7B,KACP0tH,EAAU,IAAIT,EACdU,EAAev0F,EAAKw0F,SAExB,GAAIR,EAAQ,CACV,IAAKC,EAAaQ,IAChB,MAAM,IAAI7qH,MAAM,wDAGlB2qH,EAAe,WACLA,GAAiBN,EAAaM,KACxCA,EAAe,UAGjB,IAAIG,EAAU,IAAIT,EAAaM,GAAcF,EAAKC,EAASt0F,EAAM5qB,GACjExO,KAAK0tH,QAAUA,EACf1tH,KAAK8tH,QAAUA,EACf,IAAIC,EAAe/oD,EAAIrgE,MAASqgE,EAAIzL,OAAqE,KAA5D,IAAI4zD,EAAaW,EAAQE,kBAAmBF,EAAQhsH,MACjG9B,KAAK6P,QAAU,IAAIm9G,EAAQU,EAASI,EAASC,EAAaD,EAAQhsH,MAKlE9B,KAAK24B,UAAY,IAAIC,EAAU,CAC7Bq1F,MAAO,CACLxiE,OAAQ9c,EAAOlwC,KAAKuB,KAAK+sG,MAAO/sG,SAGpCA,KAAK24B,UAAUr3B,QAMftB,KAAKkuH,cAGL,IAAIC,EAAoBT,EAAQU,eAC5BC,EAAkBX,EAAQY,aAE9BZ,EAAQU,eAAiB,SAAU1+G,GACjCy+G,EAAkB/wH,KAAKswH,EAASh+G,GAChCA,GAAMA,EAAG6+G,iBAAiB1sH,IAG5B6rH,EAAQY,aAAe,SAAU5+G,GAC/B2+G,EAAgBjxH,KAAKswH,EAASh+G,GAC9BA,EAAG8+G,YAAY3sH,KAInB2rH,EAAQ3uH,UAAY,CAClBgH,YAAa2nH,EAMbiB,MAAO,WACL,OAAOzuH,KAAKwO,IAOdlO,IAAK,SAAUoP,GACb1P,KAAK0tH,QAAQgB,QAAQh/G,GACrB1P,KAAKkuH,eAAgB,GAOvBtwG,OAAQ,SAAUlO,GAChB1P,KAAK0tH,QAAQiB,QAAQj/G,GACrB1P,KAAKkuH,eAAgB,GAWvBU,YAAa,SAAUC,EAAQlsD,GACzB3iE,KAAK8tH,QAAQc,aACf5uH,KAAK8tH,QAAQc,YAAYC,EAAQlsD,GAGnC3iE,KAAKkuH,eAAgB,GAOvBY,mBAAoB,SAAUC,GACxB/uH,KAAK8tH,QAAQgB,oBACf9uH,KAAK8tH,QAAQgB,mBAAmBC,GAGlC/uH,KAAKkuH,eAAgB,GAMvBc,mBAAoB,WAIlBhvH,KAAKkuH,cAAgBluH,KAAKivH,oBAAqB,EAC/CjvH,KAAK8tH,QAAQ56E,UAEblzC,KAAKkuH,cAAgBluH,KAAKivH,oBAAqB,GAUjD/7E,QAAS,WACPlzC,KAAKkuH,eAAgB,GAMvBnhB,MAAO,WACL,IAAImiB,EAEAlvH,KAAKkuH,gBACPgB,GAAkB,EAClBlvH,KAAKgvH,sBAGHhvH,KAAKivH,qBACPC,GAAkB,EAClBlvH,KAAKmvH,2BAGPD,GAAmBlvH,KAAKkpB,QAAQ,aAQlCkmG,SAAU,SAAU1/G,EAAI4U,GACtB,GAAItkB,KAAK8tH,QAAQsB,SAAU,CACzB,IAAIC,EAAWrvH,KAAK8tH,QAAQsB,SAAS1/G,EAAI4U,GAEzC,OADAtkB,KAAKsvH,eACED,IAQXE,YAAa,SAAU7/G,GACjB1P,KAAK8tH,QAAQyB,cACfvvH,KAAK8tH,QAAQyB,YAAY7/G,GACzB1P,KAAKsvH,iBAQTE,WAAY,WACNxvH,KAAK8tH,QAAQ0B,aACfxvH,KAAK8tH,QAAQ0B,aACbxvH,KAAKsvH,iBAOTA,aAAc,WACZtvH,KAAKivH,oBAAqB,GAM5BE,wBAAyB,WACvBnvH,KAAKivH,oBAAqB,EAC1BjvH,KAAK8tH,QAAQwB,cAAgBtvH,KAAK8tH,QAAQwB,gBAU5CG,OAAQ,SAAUr2F,GAChBA,EAAOA,GAAQ,GACfp5B,KAAK8tH,QAAQ2B,OAAOr2F,EAAK/H,MAAO+H,EAAK3F,QACrCzzB,KAAK6P,QAAQ4/G,UAMfC,eAAgB,WACd1vH,KAAK24B,UAAUkgC,SAMjB2kD,SAAU,WACR,OAAOx9G,KAAK8tH,QAAQtQ,YAMtBmS,UAAW,WACT,OAAO3vH,KAAK8tH,QAAQ6B,aAsBtBC,YAAa,SAAU/hH,EAAGwsF,GACxB,OAAOr6F,KAAK8tH,QAAQ8B,YAAY/hH,EAAGwsF,IAOrCw1B,eAAgB,SAAUC,GACxB9vH,KAAK6P,QAAQggH,eAAeC,IAS9BC,UAAW,SAAUx9E,EAAGC,GACtB,OAAOxyC,KAAK6P,QAAQkgH,UAAUx9E,EAAGC,IAUnCpqB,GAAI,SAAUogG,EAAWwH,EAAcjwH,GACrCC,KAAK6P,QAAQuY,GAAGogG,EAAWwH,EAAcjwH,IAQ3C0oB,IAAK,SAAU+/F,EAAWwH,GACxBhwH,KAAK6P,QAAQ4Y,IAAI+/F,EAAWwH,IAS9B9mG,QAAS,SAAUs/F,EAAWhgG,GAC5BxoB,KAAK6P,QAAQqZ,QAAQs/F,EAAWhgG,IAMlCqwC,MAAO,WACL74D,KAAK0tH,QAAQiB,UACb3uH,KAAK8tH,QAAQj1D,SAMfo3D,QAAS,WA7VX,IAAqBzhH,EA8VjBxO,KAAK24B,UAAUlV,OACfzjB,KAAK64D,QACL74D,KAAK0tH,QAAQuC,UACbjwH,KAAK8tH,QAAQmC,UACbjwH,KAAK6P,QAAQogH,UACbjwH,KAAK24B,UAAY34B,KAAK0tH,QAAU1tH,KAAK8tH,QAAU9tH,KAAK6P,QAAU,KAnW7CrB,EAoWLxO,KAAKwO,UAnWZ++G,EAAU/+G,KAsWnBzR,EAAQ+8D,QA5ZM,QA6Zd/8D,EAAQ4I,KAjZR,SAAc8nH,EAAKr0F,GACjB,IAAI82F,EAAK,IAAI1C,EAAQvkH,IAAQwkH,EAAKr0F,GAElC,OADAm0F,EAAU2C,EAAG1hH,IAAM0hH,EACZA,GA+YTnzH,EAAQkzH,QAvYR,SAAiBC,GACf,GAAIA,EACFA,EAAGD,cACE,CACL,IAAK,IAAIzxH,KAAO+uH,EACVA,EAAUzuH,eAAeN,IAC3B+uH,EAAU/uH,GAAKyxH,UAInB1C,EAAY,GAGd,OAAOvtH,MA2XTjD,EAAQozH,YAlXR,SAAqB3hH,GACnB,OAAO++G,EAAU/+G,IAkXnBzR,EAAQqzH,gBA/WR,SAAyB5yH,EAAM8K,GAC7B+kH,EAAa7vH,GAAQ8K,I,gBCrFvB,IAAIqmC,EAAS,EAAQ,IAEjBshE,EAAU,EAAQ,KAElBz4C,EAAe,EAAQ,IA2BvB64D,EAAQ,SAAUj3F,GAIpB,IAAK,IAAI56B,KAHT46B,EAAOA,GAAQ,GACf62E,EAAQ7yG,KAAK4C,KAAMo5B,GAEHA,EACVA,EAAKt6B,eAAeN,KACtBwB,KAAKxB,GAAO46B,EAAK56B,IAIrBwB,KAAKswH,UAAY,GACjBtwH,KAAKuwH,UAAY,KACjBvwH,KAAKowC,SAAU,GAGjBigF,EAAMxxH,UAAY,CAChBgH,YAAawqH,EACbG,SAAS,EAKTjvH,KAAM,QAQNshE,QAAQ,EAKR5nD,SAAU,WACR,OAAOjb,KAAKswH,UAAUhtH,SAQxBmtH,QAAS,SAAUp7G,GACjB,OAAOrV,KAAKswH,UAAUj7G,IAQxBq7G,YAAa,SAAUlzH,GAGrB,IAFA,IAAIyd,EAAWjb,KAAKswH,UAEXrzH,EAAI,EAAGA,EAAIge,EAAStZ,OAAQ1E,IACnC,GAAIge,EAAShe,GAAGO,OAASA,EACvB,OAAOyd,EAAShe,IAQtB0zH,WAAY,WACV,OAAO3wH,KAAKswH,UAAU3uH,QAOxBrB,IAAK,SAAU0mE,GAOb,OANIA,GAASA,IAAUhnE,MAAQgnE,EAAM7mE,SAAWH,OAC9CA,KAAKswH,UAAU9tH,KAAKwkE,GAEpBhnE,KAAK4wH,OAAO5pD,IAGPhnE,MAQT6wH,UAAW,SAAU7pD,EAAO72D,GAC1B,GAAI62D,GAASA,IAAUhnE,MAAQgnE,EAAM7mE,SAAWH,MAAQmQ,GAAeA,EAAYhQ,SAAWH,KAAM,CAClG,IAAIib,EAAWjb,KAAKswH,UAChBj7G,EAAM4F,EAASxX,QAAQ0M,GAEvBkF,GAAO,IACT4F,EAAS5T,OAAOgO,EAAK,EAAG2xD,GAExBhnE,KAAK4wH,OAAO5pD,IAIhB,OAAOhnE,MAET4wH,OAAQ,SAAU5pD,GACZA,EAAM7mE,QACR6mE,EAAM7mE,OAAOyd,OAAOopD,GAGtBA,EAAM7mE,OAASH,KACf,IAAI0tH,EAAU1tH,KAAKuwH,UACfL,EAAKlwH,KAAKizC,KAEVy6E,GAAWA,IAAY1mD,EAAMupD,YAC/B7C,EAAQY,aAAatnD,GAEjBA,aAAiBqpD,GACnBrpD,EAAM8pD,qBAAqBpD,IAI/BwC,GAAMA,EAAGh9E,WAOXt1B,OAAQ,SAAUopD,GAChB,IAAIkpD,EAAKlwH,KAAKizC,KACVy6E,EAAU1tH,KAAKuwH,UACft1G,EAAWjb,KAAKswH,UAChBj7G,EAAMs5B,EAAOlrC,QAAQwX,EAAU+rD,GAEnC,OAAI3xD,EAAM,IAIV4F,EAAS5T,OAAOgO,EAAK,GACrB2xD,EAAM7mE,OAAS,KAEXutH,IACFA,EAAQU,eAAepnD,GAEnBA,aAAiBqpD,GACnBrpD,EAAM+pD,uBAAuBrD,IAIjCwC,GAAMA,EAAGh9E,WAdAlzC,MAqBXgxH,UAAW,WACT,IAEIhqD,EACA/pE,EAHAge,EAAWjb,KAAKswH,UAChB5C,EAAU1tH,KAAKuwH,UAInB,IAAKtzH,EAAI,EAAGA,EAAIge,EAAStZ,OAAQ1E,IAC/B+pE,EAAQ/rD,EAAShe,GAEbywH,IACFA,EAAQU,eAAepnD,GAEnBA,aAAiBqpD,GACnBrpD,EAAM+pD,uBAAuBrD,IAIjC1mD,EAAM7mE,OAAS,KAIjB,OADA8a,EAAStZ,OAAS,EACX3B,MAQTixH,UAAW,SAAU3kF,EAAIvsC,GAGvB,IAFA,IAAIkb,EAAWjb,KAAKswH,UAEXrzH,EAAI,EAAGA,EAAIge,EAAStZ,OAAQ1E,IAAK,CACxC,IAAI+pE,EAAQ/rD,EAAShe,GACrBqvC,EAAGlvC,KAAK2C,EAASinE,EAAO/pE,GAG1B,OAAO+C,MAQT6tE,SAAU,SAAUvhC,EAAIvsC,GACtB,IAAK,IAAI9C,EAAI,EAAGA,EAAI+C,KAAKswH,UAAU3uH,OAAQ1E,IAAK,CAC9C,IAAI+pE,EAAQhnE,KAAKswH,UAAUrzH,GAC3BqvC,EAAGlvC,KAAK2C,EAASinE,GAEE,UAAfA,EAAMzlE,MACRylE,EAAM6G,SAASvhC,EAAIvsC,GAIvB,OAAOC,MAET8wH,qBAAsB,SAAUpD,GAC9B,IAAK,IAAIzwH,EAAI,EAAGA,EAAI+C,KAAKswH,UAAU3uH,OAAQ1E,IAAK,CAC9C,IAAI+pE,EAAQhnE,KAAKswH,UAAUrzH,GAC3BywH,EAAQY,aAAatnD,GAEjBA,aAAiBqpD,GACnBrpD,EAAM8pD,qBAAqBpD,KAIjCqD,uBAAwB,SAAUrD,GAChC,IAAK,IAAIzwH,EAAI,EAAGA,EAAI+C,KAAKswH,UAAU3uH,OAAQ1E,IAAK,CAC9C,IAAI+pE,EAAQhnE,KAAKswH,UAAUrzH,GAC3BywH,EAAQU,eAAepnD,GAEnBA,aAAiBqpD,GACnBrpD,EAAM+pD,uBAAuBrD,KAInC56E,MAAO,WAGL,OAFA9yC,KAAKowC,SAAU,EACfpwC,KAAKizC,MAAQjzC,KAAKizC,KAAKC,UAChBlzC,MAMTqwC,gBAAiB,SAAU6gF,GAOzB,IALA,IAAIroF,EAAO,KACPsoF,EAAU,IAAI35D,EAAa,EAAG,EAAG,EAAG,GACpCv8C,EAAWi2G,GAAmBlxH,KAAKswH,UACnCc,EAAS,GAEJn0H,EAAI,EAAGA,EAAIge,EAAStZ,OAAQ1E,IAAK,CACxC,IAAI+pE,EAAQ/rD,EAAShe,GAErB,IAAI+pE,EAAMqqD,SAAUrqD,EAAMopC,UAA1B,CAIA,IAAIkhB,EAAYtqD,EAAM32B,kBAClBmD,EAAYwzB,EAAMuqD,kBAAkBH,GAQpC59E,GACF29E,EAAQ5pH,KAAK+pH,GACbH,EAAQz/D,eAAele,IACvB3K,EAAOA,GAAQsoF,EAAQ1pH,SAClB48C,MAAM8sE,KAEXtoF,EAAOA,GAAQyoF,EAAU7pH,SACpB48C,MAAMitE,IAIf,OAAOzoF,GAAQsoF,IAGnBxiF,EAAO3B,SAASqjF,EAAOpgB,GACvB,IAAIvpF,EAAW2pG,EACfrzH,EAAOD,QAAU2pB,G,gBCvTjB,IAAI0xF,EAAY,EAAQ,KAIpBzV,EAFY,EAAQ,KAEQA,gBAC5B6uB,EAAqB,CAAC,CAAC,aAAc,GAAI,CAAC,gBAAiB,GAAI,CAAC,gBAAiB,GAAI,CAAC,cAAe,QAAS,CAAC,UAAW,QAAS,CAAC,WAAY,SAAU,CAAC,aAAc,KAGzKxhB,EAAQ,SAAU52E,GACpBp5B,KAAK2zC,WAAWva,GAAM,IAGxB,SAASq4F,EAAqBjiF,EAAKvrC,EAAK4kC,GACtC,IAAI0J,EAAa,MAATtuC,EAAIsuC,EAAY,EAAItuC,EAAIsuC,EAC5BukB,EAAe,MAAV7yD,EAAI6yD,GAAa,EAAI7yD,EAAI6yD,GAC9BtkB,EAAa,MAATvuC,EAAIuuC,EAAY,EAAIvuC,EAAIuuC,EAC5BukB,EAAe,MAAV9yD,EAAI8yD,GAAa,EAAI9yD,EAAI8yD,GAelC,OAbK9yD,EAAIrB,SACP2vC,EAAIA,EAAI1J,EAAKxX,MAAQwX,EAAK0J,EAC1BukB,EAAKA,EAAKjuB,EAAKxX,MAAQwX,EAAK0J,EAC5BC,EAAIA,EAAI3J,EAAKpV,OAASoV,EAAK2J,EAC3BukB,EAAKA,EAAKluB,EAAKpV,OAASoV,EAAK2J,GAI/BD,EAAIpI,MAAMoI,GAAK,EAAIA,EACnBukB,EAAK3sB,MAAM2sB,GAAM,EAAIA,EACrBtkB,EAAIrI,MAAMqI,GAAK,EAAIA,EACnBukB,EAAK5sB,MAAM4sB,GAAM,EAAIA,EACAvnB,EAAIiiF,qBAAqBl/E,EAAGC,EAAGskB,EAAIC,GAI1D,SAAS26D,EAAqBliF,EAAKvrC,EAAK4kC,GACtC,IAAIxX,EAAQwX,EAAKxX,MACboC,EAASoV,EAAKpV,OACdunB,EAAMlzC,KAAKkzC,IAAI3pB,EAAOoC,GACtB8e,EAAa,MAATtuC,EAAIsuC,EAAY,GAAMtuC,EAAIsuC,EAC9BC,EAAa,MAATvuC,EAAIuuC,EAAY,GAAMvuC,EAAIuuC,EAC9Bz0C,EAAa,MAATkG,EAAIlG,EAAY,GAAMkG,EAAIlG,EASlC,OAPKkG,EAAIrB,SACP2vC,EAAIA,EAAIlhB,EAAQwX,EAAK0J,EACrBC,EAAIA,EAAI/e,EAASoV,EAAK2J,EACtBz0C,GAAQi9C,GAGWxL,EAAIkiF,qBAAqBn/E,EAAGC,EAAG,EAAGD,EAAGC,EAAGz0C,GAia/D,IAFA,IAAI4zH,EA3ZJ3hB,EAAMnxG,UAAY,CAChBgH,YAAamqG,EAKbpgE,KAAM,OAKNC,OAAQ,KAKR7Z,QAAS,EAKTsb,YAAa,KAKbG,cAAe,KAUfd,SAAU,KAKVC,eAAgB,EAKhBkyD,WAAY,EAKZE,cAAe,EAKfC,cAAe,EAKf9wD,UAAW,EAMXE,eAAe,EAOfrtC,KAAM,KASNs+F,KAAM,KAON2d,SAAU,KAMVD,UAAW,KAMXpsF,WAAY,KAOZksF,SAAU,KAMVC,WAAY,KAMZ6Q,QAAS,KAKTzX,SAAU,OAKVtW,WAAY,KAKZkc,UAAW,KAMXlG,WAAY,KASZ/V,gBAAiB,EAKjBJ,eAAgB,KAShB0X,aAAc,SAMdyW,SAAU,KAMVvW,WAAY,KAKZ/X,UAAW,KAKXC,kBAAmB,KAKnB4a,aAAc,EAKdpE,gBAAiB,cAKjBD,eAAgB,EAKhBE,kBAAmB,EAKnBC,kBAAmB,EAKnBU,mBAAoB,cAKpBD,kBAAmB,EAKnBE,qBAAsB,EAKtBC,qBAAsB,EAQtBgX,eAAe,EAQf7Y,aAAc,EAedC,WAAY,KAKZqB,oBAAqB,KAKrBE,gBAAiB,KAKjBD,gBAAiB,EAKjBO,iBAAkB,EAMlBtX,YAAa,KAMbE,KAAM,KAMNxpF,SAAU,KAMV43G,MAAO,KAKPtzH,KAAM,SAAU+wC,EAAK9/B,EAAI+/B,GACvB,IACImtE,EAAYntE,GAAUA,EAAOnrB,MAG7B0tG,GAAiBpV,GAAaptE,EAAI4zD,iBAAmBT,EAAgBoV,WACzEvoE,EAAI4zD,eAAiBT,EAAgBoV,WAErC,IAAK,IAAI96G,EAAI,EAAGA,EAAIu0H,EAAmB7vH,OAAQ1E,IAAK,CAClD,IAAIulB,EAAOgvG,EAAmBv0H,GAC1Bu8G,EAAYh3F,EAAK,IAEjBwvG,GAXMhyH,KAWiBw5G,KAAeoD,EAAUpD,MAElDhqE,EAAIgqE,GAAapB,EAAU5oE,EAAKgqE,EAbxBx5G,KAayCw5G,IAAch3F,EAAK,KAoBxE,IAhBIwvG,GAjBQhyH,KAiBe4vC,OAASgtE,EAAUhtE,QAC5CJ,EAAIiB,UAlBMzwC,KAkBY4vC,OAGpBoiF,GArBQhyH,KAqBe6vC,SAAW+sE,EAAU/sE,UAC9CL,EAAIkB,YAtBM1wC,KAsBc6vC,SAGtBmiF,GAzBQhyH,KAyBeg2B,UAAY4mF,EAAU5mF,WAC/CwZ,EAAIgC,YAA+B,MA1BzBxxC,KA0Bcg2B,QAAkB,EA1BhCh2B,KA0B0Cg2B,UAGlDg8F,GA7BQhyH,KA6Be+xH,QAAUnV,EAAUmV,SAC7CviF,EAAIyiF,yBA9BMjyH,KA8B2B+xH,OAAS,eAG5C/xH,KAAK0vC,YAAa,CACpB,IAAIyC,EAlCMnyC,KAkCYmyC,UACtB3C,EAAI2C,UAAYA,GAAanyC,KAAKqyC,eAAiB3iC,GAAMA,EAAG4iC,aAAe5iC,EAAG4iC,eAAiB,KAGnG3C,QAAS,WACP,IAAIC,EAAO5vC,KAAK4vC,KAChB,OAAe,MAARA,GAAyB,SAATA,GAEzBF,UAAW,WACT,IAAIG,EAAS7vC,KAAK6vC,OAClB,OAAiB,MAAVA,GAA6B,SAAXA,GAAqB7vC,KAAKmyC,UAAY,GAUjEwB,WAAY,SAAUu+E,EAAYpmF,GAChC,GAAIomF,EACF,IAAK,IAAI10H,KAAQ00H,GACXA,EAAWpzH,eAAetB,KAAwB,IAAdsuC,KAAqC,IAAdA,EAAuB9rC,KAAKlB,eAAetB,GAA4B,MAApB00H,EAAW10H,MAC3HwC,KAAKxC,GAAQ00H,EAAW10H,KAWhC8kB,IAAK,SAAUre,EAAK/F,GACC,iBAAR+F,EACTjE,KAAKiE,GAAO/F,EAEZ8B,KAAK2zC,WAAW1vC,GAAK,IAQzBwD,MAAO,WACL,IAAI6jF,EAAW,IAAItrF,KAAK6F,YAExB,OADAylF,EAAS33C,WAAW3zC,MAAM,GACnBsrF,GAET/6C,YAAa,SAAUf,EAAKvrC,EAAK4kC,GAK/B,IAJA,IACIspF,GADsB,WAAbluH,EAAI1C,KAAoBmwH,EAAuBD,GAChCjiF,EAAKvrC,EAAK4kC,GAClCkH,EAAa9rC,EAAI8rC,WAEZ9yC,EAAI,EAAGA,EAAI8yC,EAAWpuC,OAAQ1E,IACrCk1H,EAAeC,aAAariF,EAAW9yC,GAAGkrC,OAAQ4H,EAAW9yC,GAAG45G,OAGlE,OAAOsb,IAKFl1H,EAAI,EAAGA,EAAIu0H,EAAmB7vH,OAAQ1E,IAAK,CAClD,IAAIulB,EAAOgvG,EAAmBv0H,GAExBulB,EAAK,KAAMmvG,IACfA,EAAWnvG,EAAK,IAAMA,EAAK,IAK/BwtF,EAAMz/D,YAAcohF,EAAWphF,YAC/B,IAAI7pB,EAAWspF,EACfhzG,EAAOD,QAAU2pB,G,cC5djB,IAAI2rG,EAAU,SAAU57G,EAAOk2C,GAG7B3sD,KAAKyW,MAAQA,EACbzW,KAAK2sD,OAASA,EAEd3sD,KAAKuB,KAAO,WAGd8wH,EAAQxzH,UAAUiwC,iBAAmB,SAAUU,GAC7C,OAAOA,EAAI8iF,cAActyH,KAAKyW,MAAOzW,KAAK2sD,QAAU,WAGtD,IAAIjmC,EAAW2rG,EACfr1H,EAAOD,QAAU2pB,G,gBCdjB,IAEI6rG,EAAmB,IAFb,EAAQ,KAEK,CAAQ,IAiE/B,SAASC,IACP,IAAIC,EAAezyH,KAAK0yH,eACxB1yH,KAAKwmC,OAASxmC,KAAKymC,QAAUzmC,KAAK0yH,eAAiB,KAEnD,IAAK,IAAIz1H,EAAI,EAAGA,EAAIw1H,EAAazlD,QAAQrrE,OAAQ1E,IAAK,CACpD,IAAI01H,EAAcF,EAAazlD,QAAQ/vE,GACnCqvC,EAAKqmF,EAAYrmF,GACrBA,GAAMA,EAAGtsC,KAAM2yH,EAAYC,WAC3BD,EAAYvZ,OAAOtmE,QAGrB2/E,EAAazlD,QAAQrrE,OAAS,EAGhC,SAASo4F,EAAatjF,GACpB,OAAOA,GAASA,EAAM4a,OAAS5a,EAAMgd,OAGvC12B,EAAQqjH,eA7ER,SAAwByS,GACtB,GAA6B,iBAAlBA,EAA4B,CACrC,IAAIJ,EAAeF,EAAiBz0H,IAAI+0H,GACxC,OAAOJ,GAAgBA,EAAah8G,MAEpC,OAAOo8G,GAyEX91H,EAAQ+8F,oBAzDR,SAA6B+4B,EAAep8G,EAAO2iG,EAAQ9sE,EAAIsmF,GAC7D,GAAKC,EAEE,IAA6B,iBAAlBA,EAA4B,CAE5C,GAAIp8G,GAASA,EAAMq8G,eAAiBD,IAAkBzZ,EACpD,OAAO3iG,EAKT,IAAIg8G,EAAeF,EAAiBz0H,IAAI+0H,GACpCF,EAAc,CAChBvZ,OAAQA,EACR9sE,GAAIA,EACJsmF,UAAWA,GAgBb,OAbIH,GAED14B,EADDtjF,EAAQg8G,EAAah8G,QACGg8G,EAAazlD,QAAQxqE,KAAKmwH,KAElDl8G,EAAQ,IAAIs8G,OACNvsF,OAAS/vB,EAAMgwB,QAAU+rF,EAC/BD,EAAiB3c,IAAIid,EAAep8G,EAAMi8G,eAAiB,CACzDj8G,MAAOA,EACPu2D,QAAS,CAAC2lD,KAEZl8G,EAAMnS,IAAMmS,EAAMq8G,aAAeD,GAG5Bp8G,EAGL,OAAOo8G,EAhCT,OAAOp8G,GAwDX1Z,EAAQg9F,aAAeA,G,cCpFvB,IAAIi5B,EAAW,SAAUjjF,GACvB/vC,KAAK+vC,WAAaA,GAAc,IAGlCijF,EAASn0H,UAAY,CACnBgH,YAAamtH,EACbZ,aAAc,SAAUjqF,EAAQ0uE,GAC9B72G,KAAK+vC,WAAWvtC,KAAK,CACnB2lC,OAAQA,EACR0uE,MAAOA,MAIb,IAAInwF,EAAWssG,EACfh2H,EAAOD,QAAU2pB,G,gBCjBjB,IAEI3hB,EAFQ,EAAQ,KAEMA,cAEtB6pC,EAAY,EAAQ,KAEpB4oB,EAAe,EAAQ,IAEvBJ,EAAS,EAAQ,KAEjBqrC,EAAc,EAAQ,KAEtBC,EAAa,EAAQ,KAErBE,EAAO,EAAQ,KAKfrI,EAAM3rD,EAAU2rD,IAChB04B,EAAY/xH,MAAMrC,UAAUmQ,KAE5BkkH,EAAYprH,KAAK8qB,MACjBsoE,EAAUpzF,KAAK0tD,IACfylC,EAAUnzF,KAAK8vB,IACfC,EAAK/vB,KAAK+vB,GACVs7F,EAAgB,EAAVrrH,KAAK+vB,GACX27B,EAAS,IAAM37B,EAGnB,SAASu7F,EAAOvuH,GACd,OAAOquH,EAAgB,IAANruH,GAAa,IAGhC,SAASq7F,EAAar7F,GACpB,OAAOA,EAPK,MAOYA,GAPZ,KAoBd,SAASsrC,EAAakjF,EAAOh2H,GACvBA,GACF4V,EAAKogH,EAAO,YAAa,UAAYJ,EAAU71H,KAAKC,EAAG,KAAO,KAIlE,SAAS4V,EAAKvD,EAAIlR,EAAKqG,KAChBA,GAAoB,WAAbA,EAAItD,MAAkC,WAAbsD,EAAItD,OAEvCmO,EAAGxK,aAAa1G,EAAKqG,GAQzB,SAASyuH,EAAUD,EAAO/uG,EAAOivG,EAAQ7jH,GACvC,GA5BF,SAAqB4U,EAAOivG,GAC1B,IAAI3jF,EAAO2jF,EAASjvG,EAAM61F,SAAW71F,EAAMsrB,KAC3C,OAAe,MAARA,GAnBE,SAmBcA,EA0BnB4jF,CAAYlvG,EAAOivG,GAAS,CAC9B,IAAI3jF,EAAO2jF,EAASjvG,EAAM61F,SAAW71F,EAAMsrB,KAE3C38B,EAAKogH,EAAO,OADZzjF,EAAgB,gBAATA,EA/CA,OA+CgCA,GAEvC38B,EAAKogH,EAAO,eAAqC,MAArB/uG,EAAMgtB,YAAsBhtB,EAAMgtB,YAAchtB,EAAM0R,QAAU1R,EAAM0R,cAElG/iB,EAAKogH,EAAO,OAnDL,QAsDT,GAhCF,SAAuB/uG,EAAOivG,GAC5B,IAAI1jF,EAAS0jF,EAASjvG,EAAMu/E,WAAav/E,EAAMurB,OAC/C,OAAiB,MAAVA,GAxBE,SAwBgBA,EA8BrB4jF,CAAcnvG,EAAOivG,GAAS,CAChC,IAAI1jF,EAAS0jF,EAASjvG,EAAMu/E,WAAav/E,EAAMurB,OAE/C58B,EAAKogH,EAAO,SADZxjF,EAAoB,gBAAXA,EAxDF,OAwDoCA,GAI3C58B,EAAKogH,EAAO,gBAFME,EAASjvG,EAAMw/E,gBAAkBx/E,EAAM6tB,aACtCohF,GAAUjvG,EAAM+tB,cAAgB3iC,EAAG4iC,eAAiB,IAGvEr/B,EAAKogH,EAAO,cAAeE,EAAS,SAAW,QAC/CtgH,EAAKogH,EAAO,iBAAyC,MAAvB/uG,EAAMmtB,cAAwBntB,EAAMmtB,cAAgBntB,EAAM0R,SACzE1R,EAAMqsB,UAGnB19B,EAAKogH,EAAO,mBAAoB/uG,EAAMqsB,SAAS3hC,KAAK,MACpDiE,EAAKogH,EAAO,oBAAqBH,EAAU5uG,EAAMssB,gBAAkB,KAEnE39B,EAAKogH,EAAO,mBAAoB,IAIlC/uG,EAAMovG,SAAWzgH,EAAKogH,EAAO,iBAAkB/uG,EAAMovG,SACrDpvG,EAAMqvG,UAAY1gH,EAAKogH,EAAO,kBAAmB/uG,EAAMqvG,UACvDrvG,EAAMsvG,YAAc3gH,EAAKogH,EAAO,oBAAqB/uG,EAAMsvG,iBAE3D3gH,EAAKogH,EAAO,SA9EL,QAkMX,IAAIQ,EAAU,GAEdA,EAAQtkF,MAAQ,SAAU7/B,GACxB,IAAI4U,EAAQ5U,EAAG4U,MACX+uG,EAAQ3jH,EAAGokH,QAEVT,IACHA,EAAQtuH,EAAc,QACtB2K,EAAGokH,QAAUT,GAGV3jH,EAAGw/B,MACNx/B,EAAGoiC,kBAGL,IAAI5C,EAAOx/B,EAAGw/B,KAEd,GAAIx/B,EAAGy/B,YAAa,CAClBD,EAAK+B,YACL/B,EAAKI,kBAAmB,EACxB5/B,EAAGyhC,UAAUjC,EAAMx/B,EAAG0hC,OACtB1hC,EAAGy/B,aAAc,EACjB,IAAI4kF,EAlIR,SAA0B7kF,GAKxB,IAJA,IAAIf,EAAM,GACN5rB,EAAO2sB,EAAK3sB,KACZyxG,EAAa9kF,EAAKjoC,MAEbhK,EAAI,EAAGA,EAAI+2H,GAAa,CAC/B,IACIC,EAAS,GACTC,EAAQ,EAEZ,OAJU3xG,EAAKtlB,MAKb,KAAKs9F,EAAIC,EACPy5B,EAAS,IACTC,EAAQ,EACR,MAEF,KAAK35B,EAAIE,EACPw5B,EAAS,IACTC,EAAQ,EACR,MAEF,KAAK35B,EAAII,EACPs5B,EAAS,IACTC,EAAQ,EACR,MAEF,KAAK35B,EAAIG,EACPu5B,EAAS,IACTC,EAAQ,EACR,MAEF,KAAK35B,EAAIK,EACP,IAAIoC,EAAKz6E,EAAKtlB,KACVggG,EAAK16E,EAAKtlB,KACV8hG,EAAKx8E,EAAKtlB,KACV+hG,EAAKz8E,EAAKtlB,KACVi3D,EAAQ3xC,EAAKtlB,KACbmiG,EAAS78E,EAAKtlB,KACdoiG,EAAM98E,EAAKtlB,KACXk3H,EAAY5xG,EAAKtlB,KACjBm3H,EAAiBtsH,KAAKinC,IAAIqwD,GAC1Bi1B,EAAWn0B,EAAak0B,EAAiBjB,KAASgB,EAAY/0B,GAAU+zB,GAAO/zB,GAAU+zB,GAEzFmB,EAAel1B,EAAS,EAAIA,EAAS+zB,EAAM/zB,EAAS+zB,EAAMA,EAC1DoB,GAAQ,EAGVA,IADEF,IAEOn0B,EAAak0B,IAGdE,GAAgBz8F,KAASs8F,EAGnC,IAAI32B,EAAK41B,EAAOp2B,EAAK+B,EAAK9D,EAAQ/mC,IAC9BupC,EAAK21B,EAAOn2B,EAAK+B,EAAK9D,EAAQhnC,IAI9BmgE,IAEAj1B,EADE+0B,EACOhB,EAAM,KAEC,KAANA,EAGZoB,GAAQ,EAEE,IAANt3H,GAMFkxC,EAAI3rC,KAAK,IAAKg7F,EAAIC,IAItB,IAAIlrD,EAAI6gF,EAAOp2B,EAAK+B,EAAK9D,EAAQ/mC,EAAQkrC,IACrC5sD,EAAI4gF,EAAOn2B,EAAK+B,EAAK9D,EAAQhnC,EAAQkrC,IAEzCjxD,EAAI3rC,KAAK,IAAK4wH,EAAOr0B,GAAKq0B,EAAOp0B,GAAKk0B,EAAU7zB,EAAM7rC,IAAU+gE,GAAQJ,EAAW5hF,EAAGC,GACtF,MAEF,KAAK+nD,EAAIM,EACPo5B,EAAS,IACT,MAEF,KAAK15B,EAAIO,EACHvoD,EAAI6gF,EAAO7wG,EAAKtlB,MAChBu1C,EAAI4gF,EAAO7wG,EAAKtlB,MADpB,IAEI8F,EAAIqwH,EAAO7wG,EAAKtlB,MAChB4D,EAAIuyH,EAAO7wG,EAAKtlB,MACpBkxC,EAAI3rC,KAAK,IAAK+vC,EAAGC,EAAG,IAAKD,EAAIxvC,EAAGyvC,EAAG,IAAKD,EAAIxvC,EAAGyvC,EAAI3xC,EAAG,IAAK0xC,EAAGC,EAAI3xC,EAAG,IAAK0xC,EAAGC,GAIjFyhF,GAAU9lF,EAAI3rC,KAAKyxH,GAEnB,IAAK,IAAI/sH,EAAI,EAAGA,EAAIgtH,EAAOhtH,IAEzBinC,EAAI3rC,KAAK4wH,EAAO7wG,EAAKtlB,OAIzB,OAAOkxC,EAAIn/B,KAAK,KAyBAwlH,CAAiBtlF,GAE3B6kF,EAAQtwH,QAAQ,OAAS,GAG3BwP,EAAKogH,EAAO,IAAKU,GAIrBT,EAAUD,EAAO/uG,GAAO,EAAO5U,GAC/BygC,EAAakjF,EAAO3jH,EAAG8jC,WAEL,MAAdlvB,EAAMtf,KACRyvH,EAAoB/kH,EAAIA,EAAG2gC,mBAE3BqkF,EAAkBhlH,IAQtB,IAAIilH,EAAW,CAEf,MAAiB,SAAUjlH,GACzB,IAAI4U,EAAQ5U,EAAG4U,MACX7N,EAAQ6N,EAAM7N,MAEdA,aAAiBm+G,mBAEnBn+G,EADUA,EAAMnS,KAIlB,GAAKmS,EAAL,CAIA,IAAI87B,EAAIjuB,EAAMiuB,GAAK,EACfC,EAAIluB,EAAMkuB,GAAK,EACfqiF,EAAKvwG,EAAM+M,MACXyjG,EAAKxwG,EAAMmP,OACX4/F,EAAQ3jH,EAAGokH,QAEVT,IACHA,EAAQtuH,EAAc,SACtB2K,EAAGokH,QAAUT,GAGX58G,IAAU/G,EAAGqlH,cAjOnB,SAAmBrlH,EAAIlR,EAAKqG,GAC1B6K,EAAG44E,eAAe,+BAAgC9pF,EAAKqG,GAiOrDmwH,CAAU3B,EAAO,OAAQ58G,GAEzB/G,EAAGqlH,WAAat+G,GAGlBxD,EAAKogH,EAAO,QAASwB,GACrB5hH,EAAKogH,EAAO,SAAUyB,GACtB7hH,EAAKogH,EAAO,IAAK9gF,GACjBt/B,EAAKogH,EAAO,IAAK7gF,GACjBrC,EAAakjF,EAAO3jH,EAAG8jC,WAEL,MAAdlvB,EAAMtf,KACRyvH,EAAoB/kH,EAAIA,EAAG2gC,mBAE3BqkF,EAAkBhlH,MAQlBulH,EAAU,GAEVC,EAAmB,IAAI19D,EAEvB29D,EAAiB,GACjBC,EAAoB,GACpBC,EAAuB,CACzB9+F,KAAM,QACNlE,MAAO,MACPohC,OAAQ,SACRglD,OAAQ,UAQNgc,EAAsB,SAAU/kH,EAAI4lH,GACtC,IAAIhxG,EAAQ5U,EAAG4U,MACXixG,EAAc7lH,EAAG8jC,UACjBgiF,EAA4B9lH,aAAckzF,GAAQt+E,EAAMwtG,cAC5DpiH,EAAG0gC,SAAWsyD,EAAWG,mBAAmBv+E,GAAO,GACnD,IAAItf,EAAOsf,EAAMtf,KAIjB,GAFQ,MAARA,IAAiBA,GAAQ,IAEpB09F,EAAWQ,aAAal+F,EAAMsf,GAAnC,CAKQ,MAARtf,IAAiBA,EAAO,KAGnBwwH,GAA6BD,IAChCL,EAAiB3tH,KAAK+tH,GAEtBJ,EAAiBxjE,eAAe6jE,GAEhCD,EAAWJ,GAGb,IAAIO,EAAY/lH,EAAGgmH,YAEdD,IACHA,EAAY1wH,EAAc,QAC1B2K,EAAGgmH,YAAcD,GAInB,IAAIE,EAAiBF,EAAUnxG,MAC3Bg/E,EAAOh/E,EAAMg/E,MAAQb,EAAY6V,aACjC2E,EAAewY,EAAUvY,eAEzB5Z,IAASmyB,EAAUtY,cACrBwY,EAAeryB,KAAOmyB,EAAUtY,YAAc7Z,EAE9C2Z,EAAewY,EAAUvY,eAAiByY,EAAeryB,MAG3D,IAAIG,EAAcn/E,EAAMm/E,YACpBC,EAAiBp/E,EAAMo/E,eACvB8X,EAAe9rG,EAAG+rG,kBAEjBD,IAAgB9rG,EAAGsjC,cACtBwoE,EAAe9rG,EAAG+rG,kBAAoBhZ,EAAY2a,eAAep4G,EAAMi4G,EAAcxZ,EAAaC,EAAgBp/E,EAAMnK,WAG1H,IAAI0hG,EAAcL,EAAaK,YAC3BxC,EAAamC,EAAanC,WAC9B3W,EAAWuY,eAAeka,EAAgBzlH,EAAI4U,EAAOgxG,GACrD,IAAIpa,EAAQia,EAAeja,MACvBC,EAAQga,EAAeha,MACvB5X,EAAY4xB,EAAe5xB,WAAa,OACxCC,EAAoB2xB,EAAe3xB,mBA+DzC,SAA0BiyB,EAAWD,EAA2BD,EAAajxG,EAAOgxG,EAAUpa,EAAOC,GACnG/jD,EAAOrf,SAASq9E,GAEZI,GAA6BD,GAC/Bn+D,EAAO7vD,KAAK6tH,EAAmBG,GAIjC,IAAItc,EAAe30F,EAAM20F,aAEzB,GAAIqc,GAAYrc,EAAc,CAC5B,IAAIrlD,EAAStvC,EAAM40F,WAEJ,WAAXtlD,GACFsnD,EAAQoa,EAASjkG,MAAQ,EAAIikG,EAAS/iF,EACtC4oE,EAAQma,EAAS7hG,OAAS,EAAI6hG,EAAS9iF,GAC9BohB,IACTsnD,EAAQtnD,EAAO,GAAK0hE,EAAS/iF,EAC7B4oE,EAAQvnD,EAAO,GAAK0hE,EAAS9iF,GAG/B4iF,EAAkB,IAAMla,EACxBka,EAAkB,IAAMja,EAExB/jD,EAAO7D,OAAO6hE,EAAmBA,EAAmBnc,GACpDmc,EAAkB,IAAMla,EACxBka,EAAkB,IAAMja,EAK1BhrE,EAAaslF,EAAWL,GA7FxBQ,CAAiBH,EAAWD,EAA2BD,EAAajxG,EAAOgxG,EAAUpa,EAAOC,GAC5F,IACImC,EAAQpC,EACRqC,EAFO9a,EAAYyZ,YAAYf,EAAOU,EAAarY,GAInDC,IACF6Z,EA2FJ,SAA4B/qE,EAAGgxD,EAAWE,GACxC,MAAqB,UAAdF,EAAwBhxD,EAAIkxD,EAAY,GAAmB,WAAdF,EAAyBhxD,EAAIkxD,EAAY,GAAK,EAAIA,EAAY,GAAK,EAAIlxD,EAAIkxD,EAAY,GA5FjImW,CAAmBsB,EAAO3X,EAAWE,GAC7C8Z,GAAS9Z,EAAY,IAIvB8Z,GAASlE,EAAa,EACtBia,EAAUmC,EAAWnxG,GAAO,EAAM5U,GAKlC,IAAIyvG,EAAuB3D,EAAa2D,qBACpC0W,EAAYnmH,EAAGomH,cAAgBpmH,EAAGomH,YAAc,IAChDC,EAAiBF,EAAUl0H,OAE/B,GAAIw9G,GAAwBzvG,EAAGsmH,wBAA0BtmH,EAAGumH,SAAWjxH,GACrE,GAAI0K,EAAGsjC,aAAe+iF,EACpB,IAAK,IAAI1gH,EAAM,EAAGA,EAAM0gH,IAAkB1gH,EACxC6gH,EAAmBL,EAAUxgH,GAAMkuF,EAAW+Z,EAAOC,EAAQloG,EAAMgkG,OAGlE,CACL3pG,EAAGumH,OAASjxH,EACZ0K,EAAGsmH,uBAAyB7W,EAC5B,IAAI9B,EAAY7B,EAAaa,MACzB8Z,EAAa9Y,EAAU17G,OAG3B,IAFI0T,EAAM,EAEHA,EAAM8gH,EAAY9gH,IAAO,CAE9B,IAAI+gH,EAAQP,EAAUxgH,GAClBghH,EAAiBhZ,EAAUhoG,GAE1B+gH,EAIMA,EAAME,WAAaD,IAC5BD,EAAMrkH,UAAY,GAClBqkH,EAAMhxH,YAAYtC,SAAS+kB,eAAewuG,MAL1CD,EAAQP,EAAUxgH,GAAOtQ,EAAc,SACvC0wH,EAAUrwH,YAAYgxH,GACtBA,EAAMhxH,YAAYtC,SAAS+kB,eAAewuG,KAM5CH,EAAmBE,EAAO7yB,EAAW+Z,EAAOC,EAAQloG,EAAMgkG,GAI5D,GAAI0c,EAAiBI,EAAY,CAC/B,KAAO9gH,EAAM0gH,EAAgB1gH,IAC3BogH,EAAUnwH,YAAYuwH,EAAUxgH,IAGlCwgH,EAAUl0H,OAASw0H,MA4CzB,SAASD,EAAmBE,EAAO7yB,EAAWhxD,EAAGC,GAG/Cv/B,EAAKmjH,EAAO,oBAAqB,UACjCnjH,EAAKmjH,EAAO,cAAef,EAAqB9xB,IAChDtwF,EAAKmjH,EAAO,IAAK7jF,GACjBt/B,EAAKmjH,EAAO,IAAK5jF,GAGnB,SAASkiF,EAAkBhlH,GACrBA,GAAMA,EAAGgmH,cAEPhmH,EAAGgmH,YAAYrwH,YACjBqK,EAAGgmH,YAAYrwH,WAAWC,YAAYoK,EAAGgmH,aAG3ChmH,EAAGgmH,YAAc,KACjBhmH,EAAGomH,YAAc,GACjBpmH,EAAGumH,OAAS,MAIhBhB,EAAQtjF,aAAe8iF,EAEvBQ,EAAQ1lF,MAAQ,SAAU7/B,GAGN,MAFNA,EAAG4U,MAELtf,KACRyvH,EAAoB/kH,GAAI,GAExBglH,EAAkBhlH,IAItB3S,EAAQmyC,KAAO2kF,EACf92H,EAAQ0Z,MAAQk+G,EAChB53H,EAAQiI,KAAOiwH,G,cCpgBfl4H,EAAQgI,cAJR,SAAuBvH,GACrB,OAAOsF,SAAS6iF,gBAHL,6BAG6BnoF,K,gBCH1C,IAEIuH,EAFQ,EAAQ,KAEMA,cAEtB4pC,EAAS,EAAQ,IAEjBM,EAAO,EAAQ,IAEf2qD,EAAS,EAAQ,KAEjB28B,EAAQ,EAAQ,KAEhBC,EAAW,EAAQ,KAEnB3C,EAAU2C,EAAStnF,KACnBylF,EAAW6B,EAAS//G,MACpBw+G,EAAUuB,EAASxxH,KAqBvB,SAASyxH,EAAUC,EAAMC,EAASC,EAAUC,EAAWC,GACrD92H,KAAK+2H,MAAQL,EACb12H,KAAKg3H,SAAWL,EAChB32H,KAAKi3H,UAAgC,iBAAbL,EAAwB,CAACA,GAAYA,EAC7D52H,KAAKk3H,WAAaL,EAClB72H,KAAKm3H,SAAWL,GAAW,OAC3B92H,KAAKo3H,OAAS,EAGhBX,EAAU53H,UAAUkG,cAAgBA,EASpC0xH,EAAU53H,UAAUw4H,QAAU,SAAUC,GACtC,IAAIX,EAAU32H,KAAKg3H,SAEfO,EAAOv3H,KAAKg3H,SAASvoH,qBAAqB,QAE9C,OAAoB,IAAhB8oH,EAAK51H,OAEH21H,IACFC,EAAOZ,EAAQ1mG,aAAajwB,KAAK+E,cAAc,QAC/C4xH,EAAQljH,aAGEpJ,WAERktH,EAAKltH,SAAW,SAAUqF,GACxB,IAAIuL,EAAWs8G,EAAKt8G,SAEpB,IAAKA,EACH,OAAO,EAGT,IAAK,IAAIhe,EAAIge,EAAStZ,OAAS,EAAG1E,GAAK,IAAKA,EAC1C,GAAIge,EAAShe,KAAOyS,EAClB,OAAO,EAIX,OAAO,IAIJ6nH,GAEA,KAGFA,EAAK,IAYhBd,EAAU53H,UAAU4sD,OAAS,SAAU+rE,EAASC,GAC9C,GAAKD,EAAL,CAIA,IAAID,EAAOv3H,KAAKq3H,SAAQ,GAExB,GAAIG,EAAQx3H,KAAKm3H,WAAaI,EAAKltH,SAASmtH,EAAQx3H,KAAKm3H,WAE/B,mBAAbM,GACTA,EAASD,OAEN,CAEL,IAAI/J,EAAMztH,KAAKM,IAAIk3H,GAEf/J,IACF+J,EAAQx3H,KAAKm3H,UAAY1J,MAW/BgJ,EAAU53H,UAAU64H,OAAS,SAAUjK,GAC1BztH,KAAKq3H,SAAQ,GACnBjyH,YAAYqoH,IASnBgJ,EAAU53H,UAAU84H,UAAY,SAAUH,GACxC,IAAID,EAAOv3H,KAAKq3H,SAAQ,GAEpBE,GAAQC,EAAQx3H,KAAKm3H,YACvBI,EAAKjyH,YAAYkyH,EAAQx3H,KAAKm3H,WAC9BK,EAAQx3H,KAAKm3H,UAAY,OAU7BV,EAAU53H,UAAU+4H,QAAU,WAC5B,IAAIL,EAAOv3H,KAAKq3H,SAAQ,GAExB,IAAKE,EAEH,MAAO,GAGT,IAAIM,EAAO,GAQX,OAPAlpF,EAAOtoC,KAAKrG,KAAKi3H,WAAW,SAAUxxC,GACpC,IAAIqyC,EAAOP,EAAK9oH,qBAAqBg3E,GAIrCoyC,EAAOA,EAAK72H,OAAO,GAAGsC,MAAMlG,KAAK06H,OAE5BD,GAQTpB,EAAU53H,UAAUk5H,cAAgB,WAClC,IAAIF,EAAO73H,KAAK43H,UACZ14G,EAAOlf,KACX2uC,EAAOtoC,KAAKwxH,GAAM,SAAUpK,GAC1BA,EAAIvuG,EAAKg4G,YAlKK,QA4KlBT,EAAU53H,UAAUm5H,SAAW,SAAUvK,GACnCA,IACFA,EAAIztH,KAAKk3H,YA7KG,MAqLhBT,EAAU53H,UAAUo5H,aAAe,WACjC,IAAIV,EAAOv3H,KAAKq3H,SAAQ,GAExB,GAAKE,EAAL,CAKA,IAAIM,EAAO73H,KAAK43H,UACZ14G,EAAOlf,KACX2uC,EAAOtoC,KAAKwxH,GAAM,SAAUpK,GA/Ld,MAgMRA,EAAIvuG,EAAKg4G,aAEXK,EAAKjyH,YAAYmoH,QAYvBgJ,EAAU53H,UAAUq5H,YAAc,SAAUC,GAC1C,OAAIA,aAAuBlpF,EAClB4kF,EACEsE,aAAuBv+B,EACzB+6B,EACEwD,aAAuB5B,EACzBtB,EAEApB,GAWX4C,EAAU53H,UAAUu5H,kBAAoB,SAAUD,GAChD,OAAOA,EAAYzC,aAUrBe,EAAU53H,UAAUw5H,cAAgB,SAAUF,GAC5C,OAAOA,EAAYrE,SAGrB,IAAIptG,EAAW+vG,EACfz5H,EAAOD,QAAU2pB,G,cCzQjB1pB,EAAOD,QAAU,SAASu7H,GACzB,IAAKA,EAAeC,gBAAiB,CACpC,IAAIv7H,EAASW,OAAOY,OAAO+5H,GAEtBt7H,EAAOie,WAAUje,EAAOie,SAAW,IACxCtd,OAAOC,eAAeZ,EAAQ,SAAU,CACvCa,YAAY,EACZC,IAAK,WACJ,OAAOd,EAAOE,KAGhBS,OAAOC,eAAeZ,EAAQ,KAAM,CACnCa,YAAY,EACZC,IAAK,WACJ,OAAOd,EAAOC,KAGhBU,OAAOC,eAAeZ,EAAQ,UAAW,CACxCa,YAAY,IAEbb,EAAOu7H,gBAAkB,EAE1B,OAAOv7H,I,6BCrBRW,OAAOC,eAAeb,EAAS,aAAc,CAAEmB,OAAO,IACtDnB,EAAQm4D,WAAQ,EAEhB,SAAWA,GAQPA,EAAMO,MAHN,SAAetB,GACX,OAAS,IAAMA,EAAOrsD,KAAK+vB,GAAM,KAQrCq9B,EAAMC,MAAQ,SAAUuB,EAAK8hE,GAGzB,YAFgB,IAAZA,IAAsBA,GAAU,IAC5BA,EAAU9hE,EAAMA,EAAM,KAClB5uD,KAAK+vB,GAAM,KAQ3Bq9B,EAAM1D,UAHN,SAAmBkD,GACf,OAAQA,EAAQ,KAAQA,EAAQ,EAAI,IAAM,IAvBlD,CA0BW33D,EAAQm4D,QAAUn4D,EAAQm4D,MAAQ,M,6BC7B7C,IACQ9C,EADJC,EAAaryD,MAAQA,KAAKqyD,YACtBD,EAAgB,SAAU70D,EAAG0N,GAI7B,OAHAmnD,EAAgBz0D,OAAO20D,gBAClB,CAAEC,UAAW,cAAgBrxD,OAAS,SAAU3D,EAAG0N,GAAK1N,EAAEg1D,UAAYtnD,IACvE,SAAU1N,EAAG0N,GAAK,IAAK,IAAIlM,KAAKkM,EAAOtN,OAAOkB,UAAUC,eAAe1B,KAAK6N,EAAGlM,KAAIxB,EAAEwB,GAAKkM,EAAElM,MAC3ExB,EAAG0N,IAErB,SAAU1N,EAAG0N,GAChB,GAAiB,mBAANA,GAA0B,OAANA,EAC3B,MAAM,IAAImU,UAAU,uBAAyBtS,OAAO7B,GAAK,iCAE7D,SAASunD,IAAOxyD,KAAK6F,YAActI,EADnC60D,EAAc70D,EAAG0N,GAEjB1N,EAAEsB,UAAkB,OAANoM,EAAatN,OAAOY,OAAO0M,IAAMunD,EAAG3zD,UAAYoM,EAAEpM,UAAW,IAAI2zD,KAGvF70D,OAAOC,eAAeb,EAAS,aAAc,CAAEmB,OAAO,IACtDnB,EAAQkpH,cAAW,EACnB,IAAI1rD,EAAU,EAAQ,IAClBE,EAAc,EAAQ,KACtBupC,EAAS,EAAQ,IAEjBiiB,EAA0B,SAAU/yD,GAEpC,SAAS+yD,EAASnyD,GACd,IAAIX,EAAQD,EAAO91D,KAAK4C,OAASA,KACjC,GAAc,MAAV8zD,EAAgB,CAChB,GAAsB,iBAAXA,EACP,OAAOmyD,EAASjjG,MAAM8wC,GAE1BX,EAAMW,OAASA,EAAOvtD,KAAI,SAAUxH,GAAK,OAAOw7D,EAAQxH,MAAMx0D,OAAOQ,WAGrEo0D,EAAMW,OAAS,GAEnB,OAAOX,EAmgBX,OA/gBAd,EAAU4zD,EAAU/yD,GAcpBv1D,OAAOC,eAAeqoH,EAASpnH,UAAWb,OAAOC,YAAa,CAC1DH,IAAK,WACD,OAAOmoH,EAAShoH,aAEpBJ,YAAY,EACZwkB,cAAc,IAElB1kB,OAAOC,eAAeqoH,EAASpnH,UAAW,QAAS,CAC/Cf,IAAK,WACD,OAA2B,IAAvBkC,KAAK8zD,OAAOnyD,OACL,KAEJ3B,KAAK8zD,OAAO,IAEvBj2D,YAAY,EACZwkB,cAAc,IAElB1kB,OAAOC,eAAeqoH,EAASpnH,UAAW,MAAO,CAC7Cf,IAAK,WACD,OAA2B,IAAvBkC,KAAK8zD,OAAOnyD,OACL,KAEJ3B,KAAK8zD,OAAO9zD,KAAK8zD,OAAOnyD,OAAS,IAE5C9D,YAAY,EACZwkB,cAAc,IAElB4jG,EAASpnH,UAAUgmB,MAAQ,SAAU6uC,EAAIC,EAAIC,GAGzC,YAFe,IAAXA,IAAqBA,EAAS,IAAI2G,EAAQxH,OAC9C/yD,KAAK8zD,OAAO3oB,SAAQ,SAAUpsC,GAAK,OAAOA,EAAE8lB,MAAM6uC,EAAIC,EAAIC,MACnD5zD,MAEXimH,EAASpnH,UAAU00D,OAAS,SAAUmB,EAAOd,GAEzC,OADA5zD,KAAK8zD,OAAO3oB,SAAQ,SAAUpsC,GAAK,OAAOA,EAAEw0D,OAAOmB,EAAOd,MACnD5zD,MAEXimH,EAASpnH,UAAUu0D,UAAY,SAAUC,EAAIC,GACzC,IAAIn1D,EAAIo8D,EAAQxH,MAAMx0D,OAAO80D,EAAIC,GAEjC,OADAtzD,KAAK8zD,OAAO3oB,SAAQ,SAAUpsC,GAAK,OAAOA,EAAEq0D,UAAUj1D,EAAEo0C,EAAGp0C,EAAEq0C,MACtDxyC,MAEXimH,EAASpnH,UAAU08D,KAAO,WACtB,GAA2B,IAAvBv7D,KAAK8zD,OAAOnyD,OACZ,OAAO,IAAI84D,EAAYgB,UAO3B,IALA,IAAI5E,EAAKtY,IACLuY,GAAMvY,IACNgY,EAAKhY,IACLwY,GAAMxY,IACNuV,EAAS9zD,KAAK8zD,OACT72D,EAAI,EAAG25D,EAAK9C,EAAOnyD,OAAQ1E,EAAI25D,EAAI35D,GAAK,EAAG,CAChD,IAAIk5D,EAAQrC,EAAO72D,GACfs1C,EAAI4jB,EAAM5jB,EACVC,EAAI2jB,EAAM3jB,EACVD,EAAIskB,IACJA,EAAKtkB,GACLA,EAAIukB,IACJA,EAAKvkB,GACLC,EAAI+jB,IACJA,EAAK/jB,GACLA,EAAIukB,IACJA,EAAKvkB,GAEb,OAAO,IAAIioB,EAAYgB,UAAU5E,EAAIN,EAAIO,EAAKD,EAAIE,EAAKR,IAE3D0vD,EAASpnH,UAAU68D,aAAe,SAAU38D,GACxC,IAAIqjH,EAAWpiH,KAAK67D,mBAAmB98D,GACvC,OAAOiB,KAAKo8D,cAAcgmD,IAE9B6D,EAASpnH,UAAUg9D,mBAAqB,SAAU98D,GAC9C,IAAI+0D,EAAS9zD,KAAK8zD,OACdlwC,EAAQkwC,EAAOnyD,OACnB,GAAc,IAAViiB,GAAyB,IAAVA,EACf,OAAO,EAKX,IAHA,IAAIjiB,EAAS,EACTygH,EAAW,EACXqW,EAAiBl6E,IACZthD,EAAI,EAAG25D,EAAKhzC,EAAQ,EAAG3mB,EAAI25D,EAAI35D,GAAK,EAAG,CAC5C,IAAIg+D,EAAO,IAAI+oC,EAAO1pC,KAAKxG,EAAO72D,GAAI62D,EAAO72D,EAAI,IAC7Cy7H,EAAaz9D,EAAKt5D,SAClBg3H,EAAqB19D,EAAKW,6BAA6B78D,GAEvD65H,EADK39D,EAAKU,QAAQg9D,GACD5kE,gBAAgBh1D,GACjC65H,EAAcH,IACdA,EAAiBG,EACjBxW,EAAWzgH,EAASg3H,EAAqBD,GAE7C/2H,GAAU+2H,EAEd,OAAOtW,GAEX6D,EAASpnH,UAAU+8D,6BAA+B,SAAU78D,GACxD,IAAIqjH,EAAWpiH,KAAK67D,mBAAmB98D,GACvC,GAAiB,IAAbqjH,EACA,OAAO,EAEX,IAAIzgH,EAAS3B,KAAK2B,SAClB,OAAe,IAAXA,EACO,EAEJygH,EAAWzgH,GAEtBskH,EAASpnH,UAAUi9D,oBAAsB,SAAU/8D,GAC/C,IAAIqjH,EAAWpiH,KAAK67D,mBAAmB98D,GACvC,OAAOiB,KAAKs9D,gBAAgB8kD,IAEhC6D,EAASpnH,UAAUk2D,cAAgB,SAAUh2D,GACzC,GAA2B,IAAvBiB,KAAK8zD,OAAOnyD,OACZ,OAAO,EASX,IAPA,IAAIkyD,EAAM0G,EAAQxH,MAAMtrD,MAAM1I,GAC1BwzC,EAAIshB,EAAIthB,EACRC,EAAIqhB,EAAIrhB,EACRshB,EAAS9zD,KAAK8zD,OACdlwC,EAAQkwC,EAAOnyD,OACfk3H,EAAaj1G,EAAQ,EACrBk1G,EAAoB,EACfC,EAAW,EAAGA,EAAWn1G,EAAOm1G,GAAY,EAAG,CACpD,IAAIz3H,EAAQwyD,EAAO+kE,GACf1xH,EAAM2sD,EAAOilE,GACjB,GAAIllE,EAAIW,OAAOlzD,GACX,OAAO,EAEX,IAAI03H,EAAU,IAAIh1B,EAAO1pC,KAAKh5D,EAAO6F,GACrC,GAAI6xH,EAAQjkE,cAAch2D,GACtB,OAAO,EAGX,GAAKyzC,GAAKlxC,EAAMkxC,GAAKA,EAAIrrC,EAAIqrC,GAAOA,EAAIlxC,EAAMkxC,GAAKA,GAAKrrC,EAAIqrC,EAAI,CAM5D,IAAIymF,EAAc33H,EAAMixC,EAAIA,EAAIprC,EAAIorC,EAAIA,EAAIjxC,EAAMixC,EAAIA,EAAIprC,EAAIorC,EAAIA,EAClE,GAAI0mF,GAAe,EAAG,CAElB,IAAIC,EAAS,IAAI3+D,EAAQxH,MAAMxgB,EAAI0mF,EAAazmF,GAC5C2mF,EAAM,IAAIn1B,EAAO1pC,KAAKv7D,EAAGm6H,GACzBF,EAAQt8D,mBAAmBy8D,KAE3BL,GAAqB,IAKjCD,EAAaE,EAGjB,OAAOD,EAAoB,GAAM,GAErC7S,EAASpnH,UAAU69D,mBAAqB,SAAUzB,GAE9C,IADA,IAAIm+D,EAAgB,GACXn8H,EAAI,EAAGyB,EAAIsB,KAAK8zD,OAAOnyD,OAAS,EAAG1E,EAAIyB,EAAGzB,GAAK,EAAG,CACvD,IAAI+N,EAAIhL,KAAK8zD,OAAO72D,GAChBgO,EAAIjL,KAAK8zD,OAAO72D,EAAI,GACpBo8H,EAAMp+D,EAAKyB,mBAAmB,IAAIsnC,EAAO1pC,KAAKtvD,EAAGC,IACjDouH,GACAD,EAAc52H,KAAK62H,GAG3B,OAAOD,EAAcz3H,OAAS,EAAIy3H,EAAgB,MAEtDnT,EAASpnH,UAAUq8D,iBAAmB,WAClC,IAAK,IAAIj+D,EAAI,EAAG25D,EAAK52D,KAAK8zD,OAAOnyD,OAAS,EAAG1E,EAAI25D,EAAI35D,GAAK,EAAG,CACzD,IAAI+N,EAAIhL,KAAK8zD,OAAO72D,GAChBgO,EAAIjL,KAAK8zD,OAAO72D,EAAI,GAExB,GADW,IAAI+mG,EAAO1pC,KAAKtvD,EAAGC,GACrBiwD,mBACL,OAAO,EAGf,OAAO,GAEX+qD,EAASpnH,UAAU8C,OAAS,WAExB,IADA,IAAIsF,EAAM,EACDhK,EAAI,EAAG25D,EAAK52D,KAAK8zD,OAAOnyD,OAAS,EAAG1E,EAAI25D,EAAI35D,GAAK,EAAG,CACzD,IAAI+N,EAAIhL,KAAK8zD,OAAO72D,GAChBgO,EAAIjL,KAAK8zD,OAAO72D,EAAI,GACxBgK,GAAO+D,EAAE6lD,SAAS5lD,GAEtB,OAAOhE,GAEXg/G,EAASpnH,UAAU88D,QAAU,SAAUQ,GACnC,IAAIrI,EAAS9zD,KAAK8zD,OACdlwC,EAAQkwC,EAAOnyD,OACnB,GAAc,IAAViiB,EACA,OAAO,KAEX,GAAc,IAAVA,EACA,OAAOkwC,EAAO,GAAGrsD,QAErB,GAAI00D,GAAS,EACT,OAAOrI,EAAO,GAAGrsD,QAErB,GAAI00D,GAAS,EACT,OAAOrI,EAAOlwC,EAAQ,GAAGnc,QAE7B,IACI9F,EADQ3B,KAAK2B,SACIw6D,EACrB,OAAOn8D,KAAKo8D,cAAcz6D,IAE9BskH,EAASpnH,UAAUu9D,cAAgB,SAAUz6D,GACzC,IAAImyD,EAAS9zD,KAAK8zD,OACdlwC,EAAQkwC,EAAOnyD,OACnB,GAAc,IAAViiB,EACA,OAAO,KAEX,GAAc,IAAVA,EACA,OAAOkwC,EAAO,GAAGrsD,QAErB,IAAI40D,GAAY,EACZ16D,EAAS,IACT06D,GAAY,EACZ16D,GAAUA,GAGd,IADA,IAAIkQ,EAAM,EACD5U,EAAI,EAAG25D,EAAKhzC,EAAQ,EAAG3mB,EAAI25D,EAAI35D,GAAK,EAAG,CAC5C,IAAIyE,EAAQ26D,EAAYp/D,EAAI25D,EAAK,EAAI35D,EACjC+N,EAAI8oD,EAAOpyD,GACXuJ,EAAI6oD,EAAOpyD,EAAQ,GACnBxE,EAAI,IAAI8mG,EAAO1pC,KAAKtvD,EAAGC,GACvB1N,EAAIyN,EAAE6lD,SAAS5lD,GACnB,GAAItJ,GAAUkQ,EAAMtU,EAChB,OAAOL,EAAEk/D,eAAeC,EAAY,GAAK,IAAM16D,EAASkQ,IAE5DA,GAAOtU,EAGX,OADgB8+D,EAAYvI,EAAOlwC,EAAQ,GAAKkwC,EAAO,IACtCrsD,SAErBw+G,EAASpnH,UAAUk9D,UAAY,SAAUI,GACrC,IACIv4C,EADS5jB,KAAK8zD,OACCnyD,OACnB,GAAc,IAAViiB,GAAyB,IAAVA,EACf,OAAO,KAEPu4C,EAAQ,IACRA,EAAQ,GAERA,EAAQ,IACRA,EAAQ,GAEZ,IACIx6D,EADQ3B,KAAK2B,SACIw6D,EACrB,OAAOn8D,KAAKs9D,gBAAgB37D,IAEhCskH,EAASpnH,UAAUy+D,gBAAkB,SAAU37D,GAC3C,IAAImyD,EAAS9zD,KAAK8zD,OACdlwC,EAAQkwC,EAAOnyD,OACnB,GAAc,IAAViiB,GAAyB,IAAVA,EACf,OAAO,KAEX,IAKI01G,EALAj9D,GAAY,EACZ16D,EAAS,IACT06D,GAAY,EACZ16D,GAAUA,GAId,IADA,IAAIkQ,EAAM,EACD5U,EAAI,EAAG25D,EAAKhzC,EAAQ,EAAG3mB,EAAI25D,EAAI35D,GAAK,EAAG,CAC5C,IAAIyE,EAAQ26D,EAAYp/D,EAAI25D,EAAK,EAAI35D,EACjC+N,EAAI8oD,EAAOpyD,GACXuJ,EAAI6oD,EAAOpyD,EAAQ,GACnBxE,EAAI,IAAI8mG,EAAO1pC,KAAKtvD,EAAGC,GACvB1N,EAAIyN,EAAE6lD,SAAS5lD,GACnB,GAAI/N,EAAEg+D,mBAAoB,CAEtB,GAAIv5D,GAAUkQ,EAAMtU,EAChB,OAAOL,EAAEogE,iBAAiBjB,EAAY,GAAK,IAAM16D,EAASkQ,IAE9DynH,EAAgBp8H,EAEpB2U,GAAOtU,EAEX,GAAI+7H,EAAe,CACf,IAAIn9D,EAAQE,EAAY,EAAI,EAC5B,OAAOi9D,EAAcv9D,UAAUI,GAEnC,OAAO,MAEX8pD,EAASpnH,UAAU06H,SAAW,SAE9B55H,QACoB,IAAZA,IAAsBA,EAAU,IACpC,IAAIm0D,EAAS9zD,KAAK8zD,OAElB,GAAIA,EAAOnyD,OAAS,EAChB,OAAO3B,KAOX,IALA,IAAIw5H,EAAY75H,EAAQ65H,WAAa,EAEjCC,EAAe,EAGZ3lE,EAAO2lE,EAAe,IAAI,CAC7B,IACIC,EAAcD,EAAe,EAC7BpjF,EAAYojF,EAAe,EAC3BE,EAAa7lE,EAHA2lE,GAIbG,EAAc9lE,EAAO4lE,GACrBG,EAAY/lE,EAAOzd,GACX,IAAI2tD,EAAO1pC,KAAKq/D,EAAYE,GACfn+D,aAAak+D,GACE/oE,SAAS+oE,IACrBJ,EAGxB1lE,EAAOzsD,OAAOqyH,EAAa,GAS3BD,GAAgB,EAKxB,OAAOz5H,MAEXimH,EAASpnH,UAAUi7H,OAAS,WACxB,IAAIhmE,EAAS9zD,KAAK8zD,OACdlwC,EAAQkwC,EAAOnyD,OACnB,GAAc,IAAViiB,EACA,OAAO,IAAIqiG,EAKf,IADA,IAAI8T,EAAajmE,EAAO,GACf72D,EAAI,EAAGA,EAAI2mB,EAAO3mB,GAAK,GACxB62D,EAAO72D,GAAGu1C,EAAIunF,EAAWvnF,GAGpBshB,EAAO72D,GAAGu1C,IAAMunF,EAAWvnF,GAAKshB,EAAO72D,GAAGs1C,EAAIwnF,EAAWxnF,KAF9DwnF,EAAajmE,EAAO72D,IAS5B,IAAI+8H,EAAgB,GACpB,IAAS/8H,EAAI,EAAGA,EAAI2mB,EAAO3mB,GAAK,EAAG,CAC/B,IAAIy3D,EAAQqlE,EAAW7lE,MAAMJ,EAAO72D,IACtB,IAAVy3D,IAIAA,EAAQ,KAEZslE,EAAcx3H,KAAK,CAACsxD,EAAO72D,GAAIA,EAAGy3D,IAYtC,GATAslE,EAAc5yH,MAAK,SAAU6yH,EAASC,GAClC,IAAIh0H,EAAM+zH,EAAQ,GAAKC,EAAQ,GAI/B,OAHY,IAARh0H,IACAA,EAAMg0H,EAAQ,GAAKD,EAAQ,IAExB/zH,KAIP8zH,EAAcr4H,OAAS,EAAG,CAC1B,IAAIw4H,EAAeH,EAAcA,EAAcr4H,OAAS,GACxDq4H,EAAclnH,QAAQqnH,GAa1B,IANA,IA+FIC,EA/FAC,EAAe,GAEfC,EAAc,GACdC,EAAS,SAAUC,GACnB,OAAOA,EAAO,GAAG72H,WAAa,IAAM62H,EAAO,IAEf,IAAzBR,EAAcr4H,QAAc,CAC/B,IAAI84H,EAAgBT,EAAc9uH,MAC9BwvH,EAAeD,EAAc,GAEjC,IAAIJ,EAAaE,EAAOE,IAIxB,IADA,IAAIE,GAAmB,GACfA,GACJ,GAAIL,EAAY34H,OAAS,EAErB24H,EAAY93H,KAAKi4H,GACjBE,GAAmB,MAElB,CACD,IAAIC,EAAiBN,EAAYpvH,MAC7B2vH,EAAgBD,EAAe,GAC/BE,EAAuBR,EAAYpvH,MACnC6vH,EAAsBD,EAAqB,GAC3CE,EAAeD,EAAoBrlE,MAAMmlE,EAAeH,GAC5D,GAAIM,EAAe,EAEfV,EAAY93H,KAAKs4H,GACjBR,EAAY93H,KAAKo4H,GACjBN,EAAY93H,KAAKi4H,GACjBE,GAAmB,OAElB,GAAqB,IAAjBK,EAAoB,CAMzB,IACI3mE,EAAewmE,EAAcxmE,aAAa0mE,EAAqBL,GAC/D5yH,KAAKinC,IAAIslB,EAAe,KAFZ,OAaPwmE,EAAcrmE,OAAOkmE,IAC1BK,EAAoBvmE,OAAOqmE,IAP3BR,EAAaE,EAAOK,IAAmBC,EAEvCP,EAAY93H,KAAKs4H,IAeZhzH,KAAKinC,KAAMslB,EAAe,GAAK,IAAO,GAxB/B,QA6BZimE,EAAY93H,KAAKs4H,GAEjBd,EAAcx3H,KAAKo4H,SASvBP,EAAaE,EAAOK,IAAmBC,EAEvCP,EAAY93H,KAAKs4H,IAU7BR,EAAY34H,OAAS,GACrB24H,EAAYpvH,MAKhB,IADA,IAAI+vH,GAAgC,EACpBv8H,GAAPzB,EAAI,EAAOq9H,EAAY34H,QAAQ1E,EAAIyB,EAAGzB,GAAK,EAAG,CACnD,IAAIi+H,EAAmBZ,EAAYr9H,GAAG,SACdiF,IAApBk4H,GAAiCc,EAAmBd,KACpDA,EAAkBc,EAClBD,EAA+Bh+H,GAGvC,IAAIk+H,EAA4B,GAChC,GAAIF,EAA+B,EAAG,CAClC,IAAIG,EAAgBd,EAAYh3H,MAAM23H,GAClCI,EAAiBf,EAAYh3H,MAAM,EAAG23H,GAC1CE,EAA4BC,EAAcp6H,OAAOq6H,QAGjDF,EAA4Bb,EAEhC,IAAIgB,EAAa,GACjB,IAASr+H,EAAI,EAAGyB,EAAIy8H,EAA0Bx5H,OAAQ1E,EAAIyB,EAAGzB,GAAK,EAC9Dq+H,EAAW94H,KAAK24H,EAA0Bl+H,GAAG,IAEjD,OAAO,IAAIgpH,EAASqV,IAExBrV,EAASpnH,UAAU21D,OAAS,SAAUz1D,GAClC,IAAIo0D,EAAQnzD,KACZ,OAAS,MAALjB,IAGAA,EAAE+0D,OAAOnyD,SAAW3B,KAAK8zD,OAAOnyD,QAG7B5C,EAAE+0D,OAAOvO,OAAM,SAAUv6C,EAAG/N,GAAK,OAAO+N,EAAEwpD,OAAOrB,EAAMW,OAAO72D,SAEzEgpH,EAASpnH,UAAU4I,MAAQ,WACvB,OAAO,IAAIw+G,EAASjmH,KAAK8zD,OAAOvtD,KAAI,SAAUxH,GAAK,OAAOA,EAAE0I,aAEhEw+G,EAASpnH,UAAUktD,OAAS,WACxB,OAAO/rD,KAAK8zD,OAAOvtD,KAAI,SAAUxH,GAAK,OAAOA,EAAEgtD,aAEnDk6D,EAASpnH,UAAU6gC,UAAY,WAC3B,OAAO1/B,KAAK8zD,OAAOvtD,KAAI,SAAUxH,GAAK,OAAOA,EAAEwzC,EAAI,KAAOxzC,EAAEyzC,KAAMxjC,KAAK,MAEpEi3G,EAhhBkB,CADZ,EAAQ,IAkhBZjwD,UACbj5D,EAAQkpH,SAAWA,EACnB,SAAWA,GACPA,EAAShoH,YAAc,eAAiBgoH,EAASzoH,KAiBjDyoH,EAASsV,WAhBT,SAAoBrlE,GAChB,GAAgB,MAAZA,EACA,OAAO,EAEX,GAAIA,aAAoB+vD,EACpB,OAAO,EAEX,IAAIr0G,EAAMskD,EAASl4D,OAAOC,aACtBu9H,EAAWtlE,EACf,OAAY,MAAPtkD,GAAeA,IAAQq0G,EAAShoH,cACN,mBAApBu9H,EAAS1B,QACa,mBAAtB0B,EAASjC,UAb5B,CAmBGtT,EAAWlpH,EAAQkpH,WAAalpH,EAAQkpH,SAAW,KACtDlpH,EAAQkpH,SAAWA,EACnB,SAAWA,GAaPA,EAASjjG,MAZT,SAAey4G,GACX,IAAIttF,EAAMstF,EAAUrxF,OACpB,GAAY,KAAR+D,EACA,OAAO,IAAI83E,EAIf,IAFA,IAAInyD,EAAS,GACT4nE,EAASvtF,EAAIhlC,MAAM,eACdlM,EAAI,EAAG25D,EAAK8kE,EAAO/5H,OAAQ1E,EAAI25D,EAAI35D,GAAK,EAC7C62D,EAAOtxD,KAAK,CAAE+vC,GAAImpF,EAAOz+H,GAAIu1C,GAAIkpF,EAAOz+H,EAAI,KAEhD,OAAO,IAAIgpH,EAASnyD,IAX5B,CAcGmyD,EAAWlpH,EAAQkpH,WAAalpH,EAAQkpH,SAAW,KACtDlpH,EAAQkpH,SAAWA,G,6BC5kBnB,IACQ7zD,EADJC,EAAaryD,MAAQA,KAAKqyD,YACtBD,EAAgB,SAAU70D,EAAG0N,GAI7B,OAHAmnD,EAAgBz0D,OAAO20D,gBAClB,CAAEC,UAAW,cAAgBrxD,OAAS,SAAU3D,EAAG0N,GAAK1N,EAAEg1D,UAAYtnD,IACvE,SAAU1N,EAAG0N,GAAK,IAAK,IAAIlM,KAAKkM,EAAOtN,OAAOkB,UAAUC,eAAe1B,KAAK6N,EAAGlM,KAAIxB,EAAEwB,GAAKkM,EAAElM,MAC3ExB,EAAG0N,IAErB,SAAU1N,EAAG0N,GAChB,GAAiB,mBAANA,GAA0B,OAANA,EAC3B,MAAM,IAAImU,UAAU,uBAAyBtS,OAAO7B,GAAK,iCAE7D,SAASunD,IAAOxyD,KAAK6F,YAActI,EADnC60D,EAAc70D,EAAG0N,GAEjB1N,EAAEsB,UAAkB,OAANoM,EAAatN,OAAOY,OAAO0M,IAAMunD,EAAG3zD,UAAYoM,EAAEpM,UAAW,IAAI2zD,KAGvF70D,OAAOC,eAAeb,EAAS,aAAc,CAAEmB,OAAO,IACtDnB,EAAQ4+H,YAAS,EACjB,IAAI33B,EAAS,EAAQ,IACjBzpC,EAAU,EAAQ,IAElBohE,EAAwB,SAAUzoE,GAElC,SAASyoE,EAAOppF,EAAGC,GACf,IAAI2gB,EAAQD,EAAO91D,KAAK4C,OAASA,KAOjC,OANIgkG,EAAO1pC,KAAKuD,OAAOtrB,GACnB4gB,EAAMy+C,SAAWr/D,EAAEprC,IAAIM,QAAQmrB,MAAM,GAGrCugC,EAAMy+C,SAAWr3C,EAAQxH,MAAMx0D,OAAOg0C,EAAGC,GAAG5f,MAAM,GAE/CugC,EAmGX,OA5GAd,EAAUspE,EAAQzoE,GAWlBv1D,OAAOC,eAAe+9H,EAAO98H,UAAW,OAAQ,CAC5Cf,IAAK,WACD,MAAO,KAEXD,YAAY,EACZwkB,cAAc,IAElB1kB,OAAOC,eAAe+9H,EAAO98H,UAAW,OAAQ,CAC5Cf,IAAK,WACD,OAAO,IAAIkmG,EAAO1pC,KAAKt6D,KAAKsB,MAAOtB,KAAKmH,MAE5CtJ,YAAY,EACZwkB,cAAc,IAElBs5G,EAAO98H,UAAU08D,KAAO,WACpB,OAAOv7D,KAAKi7D,KAAKM,QAErBogE,EAAO98H,UAAU68D,aAAe,SAAU38D,GACtC,OAAOiB,KAAKi7D,KAAKS,aAAa38D,IAElC48H,EAAO98H,UAAUg9D,mBAAqB,SAAU98D,GAC5C,OAAOiB,KAAKi7D,KAAKY,mBAAmB98D,IAExC48H,EAAO98H,UAAU+8D,6BAA+B,SAAU78D,GACtD,OAAOiB,KAAKi7D,KAAKW,6BAA6B78D,IAElD48H,EAAO98H,UAAUi9D,oBAAsB,SAAU/8D,GAC7C,OAAOiB,KAAKi7D,KAAKa,oBAAoB/8D,IAEzC48H,EAAO98H,UAAU8C,OAAS,WACtB,OAAO3B,KAAKi7D,KAAKt5D,UAErBg6H,EAAO98H,UAAU09D,SAAW,SAAUJ,GAClC,IAAIqnD,EAAUxjH,KAAKi7D,KAAKsB,SAASJ,GACjC,MAAO,CAAC,IAAIw/D,EAAOnY,EAAQ,IAAK,IAAImY,EAAOnY,EAAQ,MAEvDmY,EAAO98H,UAAU49D,eAAiB,SAAU96D,GACxC,IAAI6hH,EAAUxjH,KAAKi7D,KAAKwB,eAAe96D,GACvC,MAAO,CAAC,IAAIg6H,EAAOnY,EAAQ,IAAK,IAAImY,EAAOnY,EAAQ,MAEvDmY,EAAO98H,UAAUqmH,gBAAkB,WAC/B,MAAO,IAEXyW,EAAO98H,UAAU88D,QAAU,SAAUQ,GACjC,OAAOn8D,KAAKi7D,KAAKU,QAAQQ,IAE7Bw/D,EAAO98H,UAAUu9D,cAAgB,SAAUz6D,GACvC,OAAO3B,KAAKi7D,KAAKmB,cAAcz6D,IAEnCg6H,EAAO98H,UAAUk9D,UAAY,SAAUI,GACnC,OAAOn8D,KAAKi7D,KAAKc,UAAUI,IAE/Bw/D,EAAO98H,UAAUy+D,gBAAkB,SAAU37D,GACzC,OAAO3B,KAAKi7D,KAAKqC,gBAAgB37D,IAErCg6H,EAAO98H,UAAUq8D,iBAAmB,WAChC,OAA4B,MAAxBl7D,KAAK6xG,kBAGD7xG,KAAKsB,MAAMkzD,OAAOx0D,KAAKmH,MAEnCw0H,EAAO98H,UAAU4I,MAAQ,WACrB,OAAO,IAAIk0H,EAAO37H,KAAKmH,MAE3Bw0H,EAAO98H,UAAUgmB,MAAQ,SAAU6uC,EAAIC,EAAIC,GAEvC,OADA5zD,KAAKmH,IAAI0d,MAAM6uC,EAAIC,EAAIC,GAChB5zD,MAEX27H,EAAO98H,UAAU00D,OAAS,SAAUmB,EAAOd,GAEvC,OADA5zD,KAAKmH,IAAIosD,OAAOmB,EAAOd,GAChB5zD,MAEX27H,EAAO98H,UAAUu0D,UAAY,SAAUuH,EAAIC,GAOvC,MANkB,iBAAPD,EACP36D,KAAKmH,IAAIisD,UAAUuH,EAAIC,GAGvB56D,KAAKmH,IAAIisD,UAAUuH,GAEhB36D,MAEX27H,EAAO98H,UAAU21D,OAAS,SAAUx1D,GAChC,OAAQgB,KAAKuB,OAASvC,EAAEuC,MACpBvB,KAAKsB,MAAMkzD,OAAOx1D,EAAEsC,QACpBtB,KAAKmH,IAAIqtD,OAAOx1D,EAAEmI,MAE1Bw0H,EAAO98H,UAAUktD,OAAS,WACtB,MAAO,CACHxqD,KAAMvB,KAAKuB,KACXD,MAAOtB,KAAKsB,MAAMyqD,SAClB5kD,IAAKnH,KAAKmH,IAAI4kD,WAGtB4vE,EAAO98H,UAAU6gC,UAAY,WACzB,IAAIv4B,EAAMnH,KAAKmH,IACf,OAAOnH,KAAKuB,KAAO,IAAM4F,EAAIorC,EAAI,IAAMprC,EAAIqrC,GAExCmpF,EA7GgB,CADX,EAAQ,KA+GZnqB,SACZz0G,EAAQ4+H,OAASA,EACjB,SAAWA,GAiCPA,EAAOp9H,OAhCP,WAEI,IADA,IAAI4W,EAAO,GACF/L,EAAK,EAAGA,EAAK3C,UAAU9E,OAAQyH,IACpC+L,EAAK/L,GAAM3C,UAAU2C,GAEzB,IAAInC,EAAMkO,EAAKxT,OACXi6H,EAAOzmH,EAAK,GAEhB,GAAI6uF,EAAO1pC,KAAKuD,OAAO+9D,GACnB,OAAO,IAAID,EAAOC,GAGtB,GAAIrhE,EAAQxH,MAAMqD,YAAYwlE,GAC1B,OAAY,IAAR30H,EACO,IAAI00H,EAAOC,GAGfzmH,EAAK5O,KAAI,SAAUyC,GAAO,OAAO,IAAI2yH,EAAO3yH,MAGvD,GAAY,IAAR/B,EACA,OAAO,IAAI00H,GAAQxmH,EAAK,IAAKA,EAAK,IAItC,IADA,IAAI4nE,EAAW,GACN9/E,EAAI,EAAGA,EAAIgK,EAAKhK,GAAK,EAAG,CAC7B,IAAIs1C,GAAKp9B,EAAKlY,GACVu1C,GAAKr9B,EAAKlY,EAAI,GAClB8/E,EAASv6E,KAAK,IAAIm5H,EAAOppF,EAAGC,IAEhC,OAAOuqC,GA/Bf,CAkCG4+C,EAAS5+H,EAAQ4+H,SAAW5+H,EAAQ4+H,OAAS,KAChD5+H,EAAQ4+H,OAASA,G,6BCvKjB,IAAIlpE,EAAmBzyD,MAAQA,KAAKyyD,kBAAqB90D,OAAOY,OAAS,SAAUb,EAAGL,EAAGq1D,EAAGC,QAC7EzwD,IAAPywD,IAAkBA,EAAKD,GAC3B/0D,OAAOC,eAAeF,EAAGi1D,EAAI,CAAE90D,YAAY,EAAMC,IAAK,WAAa,OAAOT,EAAEq1D,OAC3E,SAAUh1D,EAAGL,EAAGq1D,EAAGC,QACTzwD,IAAPywD,IAAkBA,EAAKD,GAC3Bh1D,EAAEi1D,GAAMt1D,EAAEq1D,KAEVE,EAAsB5yD,MAAQA,KAAK4yD,qBAAwBj1D,OAAOY,OAAS,SAAUb,EAAG0e,GACxFze,OAAOC,eAAeF,EAAG,UAAW,CAAEG,YAAY,EAAMK,MAAOke,KAC9D,SAAS1e,EAAG0e,GACb1e,EAAW,QAAI0e,IAEfy2C,EAAgB7yD,MAAQA,KAAK6yD,cAAiB,SAAUC,GACxD,GAAIA,GAAOA,EAAIz0D,WAAY,OAAOy0D,EAClC,IAAI3xD,EAAS,GACb,GAAW,MAAP2xD,EAAa,IAAK,IAAIJ,KAAKI,EAAe,YAANJ,GAAmB/0D,OAAOkB,UAAUC,eAAe1B,KAAK01D,EAAKJ,IAAID,EAAgBtxD,EAAQ2xD,EAAKJ,GAEtI,OADAE,EAAmBzxD,EAAQ2xD,GACpB3xD,GAEXxD,OAAOC,eAAeb,EAAS,aAAc,CAAEmB,OAAO,IACtDnB,EAAQ8+H,YAAS,EACjB,IAAIrhE,EAAa,EAAQ,KACrBshE,EAAMjpE,EAAa,EAAQ,MAC3BgpE,EAAwB,WACxB,SAASA,EAAOr1H,EAAMoJ,EAAOqL,GACzB,IAAKzU,EACD,MAAM,IAAI4Y,UAAU,oCAExB,IAAIza,EACJ,GAAIk3H,EAAOE,SAASv1H,GAChB7B,EAAO6B,EAAK7B,UAEX,GAAoB,iBAAT6B,EACZ,GAA2B,QAAvBA,EAAK6C,cACL1E,EAAOm3H,EAAIrxB,yBAEV,GAAgB,MAAZjkG,EAAK,GAAY,CACtB,IAAI5B,EAAMk3H,EAAIrxB,kBAAkBjkG,GAEhC7B,EAAO7B,SAASk5H,WAAWp3H,EAAI6O,YAAY,QAG3C9O,EAAO7B,SAAS6iF,gBAAgBm2C,EAAIx9H,GAAG4mF,IAAK1+E,QAIhD7B,EAAO6B,EAEXxG,KAAK2E,KAAOA,EACRiL,GACA5P,KAAKypG,cAAc75F,GAEnBqL,GACAjb,KAAK+vB,OAAO9U,GA0VpB,OAvVAtd,OAAOC,eAAei+H,EAAOh9H,UAAWb,OAAOC,YAAa,CACxDH,IAAK,WACD,OAAO+9H,EAAO59H,aAElBJ,YAAY,EACZwkB,cAAc,IAElB1kB,OAAOC,eAAei+H,EAAOh9H,UAAW,OAAQ,CAC5Cf,IAAK,WACD,OAAOkC,KAAK2E,KAAK8I,UAErB5P,YAAY,EACZwkB,cAAc,IAElB1kB,OAAOC,eAAei+H,EAAOh9H,UAAW,KAAM,CAC1Cf,IAAK,WACD,OAAOkC,KAAK2E,KAAK6J,IAErB8T,IAAK,SAAU9T,GACXxO,KAAK2E,KAAK6J,GAAKA,GAEnB3Q,YAAY,EACZwkB,cAAc,IAElBw5G,EAAOh9H,UAAU20C,UAAY,SAAU4jB,EAAQz3D,GAC3C,OAAc,MAAVy3D,EACO0kE,EAAItoF,UAAUxzC,KAAK2E,OAE9Bm3H,EAAItoF,UAAUxzC,KAAK2E,KAAMyyD,EAAQz3D,GAC1BK,OAEX67H,EAAOh9H,UAAUu0D,UAAY,SAAUuH,EAAIC,EAAIj7D,GAG3C,YAFW,IAAPi7D,IAAiBA,EAAK,QACV,IAAZj7D,IAAsBA,EAAU,IAC1B,MAANg7D,EACOmhE,EAAI1oE,UAAUpzD,KAAK2E,OAE9Bm3H,EAAI1oE,UAAUpzD,KAAK2E,KAAMg2D,EAAIC,EAAIj7D,GAC1BK,OAEX67H,EAAOh9H,UAAU00D,OAAS,SAAUmB,EAAOsoC,EAAIC,EAAIt9F,GAE/C,YADgB,IAAZA,IAAsBA,EAAU,IACvB,MAAT+0D,EACOonE,EAAIvoE,OAAOvzD,KAAK2E,OAE3Bm3H,EAAIvoE,OAAOvzD,KAAK2E,KAAM+vD,EAAOsoC,EAAIC,EAAIt9F,GAC9BK,OAEX67H,EAAOh9H,UAAUgmB,MAAQ,SAAU6uC,EAAIC,GACnC,OAAU,MAAND,EACOooE,EAAIj3G,MAAM7kB,KAAK2E,OAE1Bm3H,EAAIj3G,MAAM7kB,KAAK2E,KAAM+uD,EAAIC,GAClB3zD,OAMX67H,EAAOh9H,UAAUo9H,sBAAwB,SAAUv0H,GAC/C,IAAImsD,EAAMgoE,EAAOK,OAAOx0H,GACxB,OAAOo0H,EAAIG,sBAAsBj8H,KAAK2E,KAAMkvD,IAEhDgoE,EAAOh9H,UAAUsQ,gBAAkB,SAAU3R,GAEzC,OADAs+H,EAAI3sH,gBAAgBnP,KAAK2E,KAAMnH,GACxBwC,MAEX67H,EAAOh9H,UAAUoG,aAAe,SAAUzH,GACtC,OAAOs+H,EAAI72H,aAAajF,KAAK2E,KAAMnH,IAEvCq+H,EAAOh9H,UAAUqG,aAAe,SAAU1H,EAAMU,GAE5C,OADA49H,EAAI52H,aAAalF,KAAK2E,KAAMnH,EAAMU,GAC3B8B,MAEX67H,EAAOh9H,UAAU4qG,cAAgB,SAAU75F,GAEvC,OADAksH,EAAIryB,cAAczpG,KAAK2E,KAAMiL,GACtB5P,MAEX67H,EAAOh9H,UAAUoU,KAAO,SAAUzV,EAAMU,GACpC,OAAY,MAARV,EACOs+H,EAAI7oH,KAAKjT,KAAK2E,MAEL,iBAATnH,QAA+B0E,IAAVhE,EACrB49H,EAAI7oH,KAAKjT,KAAK2E,KAAMnH,IAEX,iBAATA,EACPs+H,EAAI7oH,KAAKjT,KAAK2E,KAAMnH,GAGpBs+H,EAAI7oH,KAAKjT,KAAK2E,KAAMnH,EAAMU,GAEvB8B,OAEX67H,EAAOh9H,UAAUqmF,IAAM,WACnB,OAAOllF,KAAK2E,gBAAgBw3H,cACtBn8H,KACA67H,EAAOt9H,OAAOyB,KAAK2E,KAAK8mG,kBAElCowB,EAAOh9H,UAAU04H,KAAO,WACpB,IAAIx3H,EAAUC,KAAKklF,OAASllF,KACxBo8H,EAAWr8H,EAAQ4E,KAAK8J,qBAAqB,QAAQ,GACzD,OAAI2tH,EACOP,EAAOt9H,OAAO69H,GAElBP,EAAOt9H,OAAO,QAAQ+xB,SAASvwB,IAE1C87H,EAAOh9H,UAAUmG,KAAO,SAAUgX,EAASrc,GAGvC,YAFgB,IAAZA,IAAsBA,EAAU,IACpCm8H,EAAI92H,KAAKhF,KAAK2E,KAAMqX,EAASrc,GACtBK,MAEX67H,EAAOh9H,UAAU4mF,QAAU,WACvB,OAAOq2C,EAAIr2C,QAAQzlF,KAAK2E,OAE5Bk3H,EAAOh9H,UAAU4I,MAAQ,WACrB,OAAOo0H,EAAOt9H,OAAOyB,KAAK2E,KAAKuhB,WAAU,KAE7C21G,EAAOh9H,UAAU+e,OAAS,WAEtB,OADAk+G,EAAIl+G,OAAO5d,KAAK2E,MACT3E,MAEX67H,EAAOh9H,UAAUgf,MAAQ,WAErB,OADAi+G,EAAIj+G,MAAM7d,KAAK2E,MACR3E,MAEX67H,EAAOh9H,UAAUkxB,OAAS,SAAU9pB,GAEhC,OADA61H,EAAI/rG,OAAO/vB,KAAK2E,KAAMk3H,EAAOQ,QAAQp2H,IAC9BjG,MAEX67H,EAAOh9H,UAAUyxB,SAAW,SAAU5oB,GAElC,OADAo0H,EAAIxrG,SAAStwB,KAAK2E,KAAMk3H,EAAOE,SAASr0H,GAAUA,EAAO/C,KAAO+C,GACzD1H,MAEX67H,EAAOh9H,UAAUmxB,QAAU,SAAU/pB,GAEjC,OADA61H,EAAI9rG,QAAQhwB,KAAK2E,KAAMk3H,EAAOQ,QAAQp2H,IAC/BjG,MAEX67H,EAAOh9H,UAAUqxB,OAAS,SAAUjqB,GAEhC,OADA61H,EAAI5rG,OAAOlwB,KAAK2E,KAAMk3H,EAAOQ,QAAQp2H,IAC9BjG,MAEX67H,EAAOh9H,UAAUmJ,QAAU,SAAUxB,GAIjC,OAHIxG,KAAK2E,KAAKU,YACVrF,KAAK2E,KAAKU,WAAWgrB,aAAawrG,EAAOK,OAAO11H,GAAOxG,KAAK2E,MAEzDk3H,EAAOt9H,OAAOiI,IAEzBq1H,EAAOh9H,UAAU6H,MAAQ,WACrB,OAAO1G,KAAK2E,KAAK8O,WACXooH,EAAOt9H,OAAOyB,KAAK2E,KAAK8O,YACxB,MAEVooH,EAAOh9H,UAAU+H,KAAO,WACpB,OAAO5G,KAAK2E,KAAKqQ,UACX6mH,EAAOt9H,OAAOyB,KAAK2E,KAAKqQ,WACxB,MAEV6mH,EAAOh9H,UAAUf,IAAM,SAAU4D,GAC7B,IAAIslE,EAAQhnE,KAAK2E,KAAKiJ,WAAWlM,GACjC,OAAOslE,EAAQ60D,EAAOt9H,OAAOyoE,GAAS,MAE1C60D,EAAOh9H,UAAU4E,QAAU,SAAU+C,GAEjC,OADetF,MAAMrC,UAAUyE,MAAMlG,KAAK4C,KAAK2E,KAAKiJ,YACpCnK,QAAQo4H,EAAOK,OAAO11H,KAE1Cq1H,EAAOh9H,UAAU6S,KAAO,SAAUjM,GAC9B,IAAI62H,EAAO,GACP30G,EAAQm0G,EAAIpqH,KAAK1R,KAAK2E,KAAMc,GAChC,GAAIkiB,EACA,IAAK,IAAI1qB,EAAI,EAAG25D,EAAKjvC,EAAMhmB,OAAQ1E,EAAI25D,EAAI35D,GAAK,EAC5Cq/H,EAAK95H,KAAKq5H,EAAOt9H,OAAOopB,EAAM1qB,KAGtC,OAAOq/H,GAEXT,EAAOh9H,UAAU2rG,QAAU,SAAU/kG,GACjC,IAAI82H,EAAQT,EAAItxB,QAAQxqG,KAAK2E,KAAMc,GACnC,OAAO82H,EAAQV,EAAOt9H,OAAOg+H,GAAS,MAE1CV,EAAOh9H,UAAU0rG,kBAAoB,SAAUn5F,EAAWo6F,GACtD,IAAI7mG,EAAOm3H,EAAIvxB,kBAAkBvqG,KAAK2E,KAAMyM,EAAWo6F,GACvD,OAAO7mG,EAAOk3H,EAAOt9H,OAAOoG,GAAQ,MAExCk3H,EAAOh9H,UAAUiK,QAAU,SAAUrD,GACjC,IAAId,EAAO3E,KAAK2E,KAEZ4Q,GADUvV,KAAK2E,KAAKmE,QACVnE,EAAKmE,SACfnE,EAAKqN,iBACLrN,EAAKyN,mBACLzN,EAAKuN,oBACLvN,EAAKsN,uBACLtN,EAAKwN,kBACL,MACJ,OAAOoD,GAAWA,EAAQnY,KAAKuH,EAAMc,IAEzCo2H,EAAOh9H,UAAUwL,SAAW,SAAU28D,GAClC,OAAO80D,EAAIzxH,SAASrK,KAAK2E,KAAMk3H,EAAOE,SAAS/0D,GAASA,EAAMriE,KAAOqiE,IAEzE60D,EAAOh9H,UAAU2oB,KAAO,SAAU7iB,GAC9B,IAAI63H,EAAMX,EAAOt9H,OAAOoG,GACpBU,EAAarF,KAAK2E,KAAKU,WAI3B,OAHkB,MAAdA,GACAA,EAAW4qB,aAAausG,EAAI73H,KAAM3E,KAAK2E,MAEpC63H,EAAIzsG,OAAO/vB,OAEtB67H,EAAOh9H,UAAUsB,OAAS,SAAUoB,GAChC,IAAIpB,EAASH,KAEb,GAA8B,MAA1BG,EAAOwE,KAAKU,WACZ,OAAO,KAIX,GADAlF,EAAS07H,EAAOt9H,OAAO4B,EAAOwE,KAAKU,YACvB,MAAR9D,EACA,OAAOpB,EAGX,GACI,GAAoB,iBAAToB,EAAoBpB,EAAO2I,QAAQvH,GAAQpB,aAAkBoB,EACpE,OAAOpB,QAELA,EAAS07H,EAAOt9H,OAAO4B,EAAOwE,KAAKU,aAC7C,OAAOlF,GAEX07H,EAAOh9H,UAAUoc,SAAW,WAGxB,IAFA,IAAIA,EAAWjb,KAAK2E,KAAKiJ,WACrB0uH,EAAO,GACFr/H,EAAI,EAAGA,EAAIge,EAAStZ,OAAQ1E,GAAK,EAAG,CAEX,IADXge,EAAShe,GACXiH,UACbo4H,EAAK95H,KAAKq5H,EAAOt9H,OAAO0c,EAAShe,KAGzC,OAAOq/H,GAEXT,EAAOh9H,UAAUoyH,UAAY,SAAUvrH,EAAIiC,GAEvC,IADA,IAAIsT,EAAWjb,KAAKib,WACXhe,EAAI,EAAGC,EAAI+d,EAAStZ,OAAQ1E,EAAIC,EAAGD,GAAK,EAC7CyI,EAAGtI,KAAK6d,EAAShe,GAAIge,EAAShe,GAAIA,EAAGge,GACjCtT,GACAsT,EAAShe,GAAGg0H,UAAUvrH,EAAIiC,GAGlC,OAAO3H,MAEX67H,EAAOh9H,UAAU6C,MAAQ,WACrB,OAAOo6H,EAAIp6H,MAAM1B,KAAK2E,OAE1Bk3H,EAAOh9H,UAAU++B,SAAW,SAAUxsB,GAClC,OAAO0qH,EAAIl+F,SAAS59B,KAAK2E,KAAMyM,IAEnCyqH,EAAOh9H,UAAUq+B,SAAW,SAAU9rB,GAElC,OADA0qH,EAAI5+F,SAASl9B,KAAK2E,KAAMyM,GACjBpR,MAEX67H,EAAOh9H,UAAU0+B,YAAc,SAAUnsB,GAErC,OADA0qH,EAAIv+F,YAAYv9B,KAAK2E,KAAMyM,GACpBpR,MAEX67H,EAAOh9H,UAAU2+B,YAAc,SAAUpsB,EAAWqsB,GAEhD,OADAq+F,EAAIt+F,YAAYx9B,KAAK2E,KAAMyM,EAAWqsB,GAC/Bz9B,MAEX67H,EAAOh9H,UAAU49H,aAAe,SAAUlqF,EAAGC,GACzC,OAAOspF,EAAIW,aAAaz8H,KAAK2E,KAAM4tC,EAAGC,IAE1CqpF,EAAOh9H,UAAU69H,gBAAkB,WAC/B,OAAOZ,EAAIY,gBAAgB18H,KAAK2E,OAEpCk3H,EAAOh9H,UAAU89H,uBAAyB,SAAU59H,GAChD,IACI00D,EADOzzD,KAAK48H,QAAQ,CAAEl1H,OAAQ1H,KAAKklF,QACrBxqB,YAElB,OADA16D,KAAKozD,UAAUr0D,EAAEwzC,EAAIkhB,EAAOlhB,EAAGxzC,EAAEyzC,EAAIihB,EAAOjhB,GACrCxyC,MAEX67H,EAAOh9H,UAAUg+H,uBAAyB,SAAUrqG,EAAUgoB,EAAW9yC,GAErE,OADAo0H,EAAIe,uBAAuB78H,KAAK2E,KAAM6tB,EAAUgoB,EAAW9yC,GACpD1H,MAEX67H,EAAOh9H,UAAUg8B,QAAU,SAAUl7B,GACjC,OAAOm8H,EAAIjhG,QAAQ76B,KAAK2E,KAAMhF,IAElCk8H,EAAOh9H,UAAUi+H,iBAAmB,SAAUn9H,GAC1C,OAAOm8H,EAAIgB,iBAAiB98H,KAAK2E,KAAMhF,IAE3Ck8H,EAAOh9H,UAAUk+H,iBAAmB,SAAUp9H,EAASuvC,GACnD,OAAO4sF,EAAIiB,iBAAiB/8H,KAAK2E,KAAMhF,EAASuvC,IAMpD2sF,EAAOh9H,UAAUm+H,cAAgB,WAK7B,MAHgB,SADFh9H,KAAKylF,WAEfzlF,KAAKiT,KAAK,IAAKunD,EAAWvrB,KAAKuiB,UAAUxxD,KAAKiT,KAAK,OAEhDjT,MAQX67H,EAAOh9H,UAAU08D,KAAO,SAAU0hE,EAAwBv1H,GACtD,OAAOo0H,EAAIvgE,KAAKv7D,KAAK2E,KAAMs4H,EAAwBv1H,IAEvDm0H,EAAOh9H,UAAU+9H,QAAU,SAAUj9H,GAEjC,YADgB,IAAZA,IAAsBA,EAAU,IAC7Bm8H,EAAIc,QAAQ58H,KAAK2E,KAAM,CAC1Bu4H,UAAWv9H,EAAQu9H,UACnBx1H,OAAQ/H,EAAQ+H,OAASm0H,EAAOK,OAAOv8H,EAAQ+H,QAAU,QAiBjEm0H,EAAOh9H,UAAUsnD,OAAS,SAAU9tB,GAEhC,YADiB,IAAbA,IAAuBA,EAAW,GAClCr4B,KAAK2E,gBAAgBw4H,eACdrB,EAAI31E,OAAOnmD,KAAK2E,KAAM0zB,GAE1B,IAEXwjG,EAAOh9H,UAAUiwD,OAAS,WACtB,OAAO+sE,EAAOt9H,OAAOu9H,EAAIhtE,OAAO9uD,KAAK2E,QAEzCk3H,EAAOh9H,UAAUu+H,WAAa,WAC1B,OAAOtB,EAAIsB,WAAWp9H,KAAK2E,OAExBk3H,EAxXgB,GA0X3B9+H,EAAQ8+H,OAASA,EACjB,SAAWA,GAEP,SAASE,EAAS7lE,GACd,GAAgB,MAAZA,EACA,OAAO,EAEX,GAAIA,aAAoB2lE,EACpB,OAAO,EAEX,IAAIjqH,EAAMskD,EAASl4D,OAAOC,aACtBo9D,EAASnF,EACb,OAAY,MAAPtkD,GAAeA,IAAQiqH,EAAO59H,cAC/Bo9D,EAAO12D,gBAAgBwmG,YACG,mBAAnB9vC,EAAOxgC,SACW,mBAAlBwgC,EAAOlV,QACkB,mBAAzBkV,EAAO2hE,eACW,mBAAlB3hE,EAAOvM,OAMtB,SAASvwD,EAAOiI,EAAMoJ,EAAOqL,GACzB,OAAO,IAAI4gH,EAAOr1H,EAAMoJ,EAAOqL,GAgBnC,SAASihH,EAAO11H,GACZ,OAAIu1H,EAASv1H,GACFA,EAAK7B,KAET6B,EA1CXq1H,EAAO59H,YAAc,MAAQ49H,EAAOr+H,KAoBpCq+H,EAAOE,SAAWA,EAIlBF,EAAOt9H,OAASA,EAahBs9H,EAAOwB,cAZP,SAAuBC,GACnB,GAAkB,MAAdA,EAAO,GAAY,CAGnB,IAFA,IAAIC,EAASzB,EAAIrxB,kBAAkB6yB,GAC/BhB,EAAO,GACFr/H,EAAI,EAAG25D,EAAK2mE,EAAO3vH,WAAWjM,OAAQ1E,EAAI25D,EAAI35D,GAAK,EAAG,CAC3D,IAAIunF,EAAY+4C,EAAO3vH,WAAW3Q,GAClCq/H,EAAK95H,KAAKjE,EAAOuE,SAASk5H,WAAWx3C,GAAW,KAEpD,OAAO83C,EAEX,MAAO,CAAC/9H,EAAO++H,KASnBzB,EAAOK,OAASA,EAOhBL,EAAOQ,QANP,SAAiBp2H,GACb,OAAI/E,MAAMD,QAAQgF,GACPA,EAAMM,KAAI,SAAUC,GAAQ,OAAO01H,EAAO11H,MAE9C,CAAC01H,EAAOj2H,KAlDvB,CAqDG41H,EAAS9+H,EAAQ8+H,SAAW9+H,EAAQ8+H,OAAS,KAChD9+H,EAAQ8+H,OAASA,G,6BCxcjBl+H,OAAOC,eAAeb,EAAS,aAAc,CAAEmB,OAAO,IACtDnB,EAAQygI,mBAAqBzgI,EAAQ0gI,kBAAoB1gI,EAAQ2gI,cAAgB3gI,EAAQ4gI,eAAiB5gI,EAAQ6gI,oBAAsB7gI,EAAQ8gI,iBAAmB9gI,EAAQ+gI,cAAgB/gI,EAAQghI,gBAAkBhhI,EAAQihI,qBAAuBjhI,EAAQkhI,wBAA0BlhI,EAAQmhI,wBAA0BnhI,EAAQohI,mBAAqBphI,EAAQqhI,gBAAkBrhI,EAAQshI,oBAAiB,EACxY,IAAI7jE,EAAa,EAAQ,KAErB8jE,GAAc,EADL,EAAQ,KACQ5zB,kBAAkB,OAC3C6zB,EAAiB,gCACjBC,EAA0B,QAC1BC,EAA0B,iBAK9B,SAASJ,EAAe9rF,EAAGC,GACvB,IAAIzzC,EAAIu/H,EAAYD,iBAGpB,OAFAt/H,EAAEwzC,EAAIA,EACNxzC,EAAEyzC,EAAIA,EACCzzC,EAkBX,SAASq/H,EAAgBhnE,GACrB,IAAIsnE,EAAMJ,EAAYF,kBACtB,GAAc,MAAVhnE,EAAgB,CAChB,IAAIrzC,EAASqzC,EACT1vD,EAASg3H,EAEb,IAAK,IAAIlgI,KAAOulB,EACZrc,EAAOlJ,GAAOulB,EAAOvlB,GAG7B,OAAOkgI,EAuBX,SAASR,EAAwB1qF,GAC7B,IAAIkrF,EAAMN,IACNt1H,EAAuB,MAAb0qC,GAAqBA,EAAUvlC,MAAMswH,GACnD,IAAKz1H,EACD,OAAO41H,EAEX,IAAK,IAAIzhI,EAAI,EAAGyB,EAAIoK,EAAQnH,OAAQ1E,EAAIyB,EAAGzB,GAAK,EAAG,CAC/C,IACI0hI,EADuB71H,EAAQ7L,GACYgR,MAAMwwH,GACrD,GAAIE,EAAqB,CACrB,IAAIjrE,OAAK,EACLC,OAAK,EACLgH,OAAK,EACLC,OAAK,EACLlG,OAAQ,EACRkqE,EAAMR,IACNjpH,EAAOwpH,EAAoB,GAAGx1H,MAAMq1H,GACxC,OAAQG,EAAoB,GAAGt1H,eAC3B,IAAK,QACDqqD,EAAK7gC,WAAW1d,EAAK,IACrBw+C,OAAiBzxD,IAAZiT,EAAK,GAAmBu+C,EAAK7gC,WAAW1d,EAAK,IAClDypH,EAAMA,EAAIC,gBAAgBnrE,EAAIC,GAC9B,MACJ,IAAK,YACDgH,EAAK9nC,WAAW1d,EAAK,IACrBylD,EAAK/nC,WAAW1d,EAAK,IACrBypH,EAAMA,EAAIxrE,UAAUuH,EAAIC,GACxB,MACJ,IAAK,SACDlG,EAAQ7hC,WAAW1d,EAAK,IACxBwlD,EAAK9nC,WAAW1d,EAAK,KAAO,EAC5BylD,EAAK/nC,WAAW1d,EAAK,KAAO,EAExBypH,EADO,IAAPjkE,GAAmB,IAAPC,EACNgkE,EAAIxrE,UAAUuH,EAAIC,GAAIrH,OAAOmB,GAAOtB,WAAWuH,GAAKC,GAGpDgkE,EAAIrrE,OAAOmB,GAErB,MACJ,IAAK,QACDA,EAAQ7hC,WAAW1d,EAAK,IACxBypH,EAAMA,EAAIE,MAAMpqE,GAChB,MACJ,IAAK,QACDA,EAAQ7hC,WAAW1d,EAAK,IACxBypH,EAAMA,EAAIG,MAAMrqE,GAChB,MACJ,IAAK,SACDkqE,EAAI5zH,EAAI6nB,WAAW1d,EAAK,IACxBypH,EAAI3zH,EAAI4nB,WAAW1d,EAAK,IACxBypH,EAAIthI,EAAIu1B,WAAW1d,EAAK,IACxBypH,EAAIrhI,EAAIs1B,WAAW1d,EAAK,IACxBypH,EAAI/wH,EAAIglB,WAAW1d,EAAK,IACxBypH,EAAI5pB,EAAIniF,WAAW1d,EAAK,IACxB,MACJ,QACI,SAERupH,EAAMA,EAAIr1E,SAASu1E,IAG3B,OAAOF,EAiFX,SAASM,EAAoB5nE,EAAQjB,GAGjC,MAAO,CAAE5jB,EAFA4jB,EAAM5jB,EAAI6kB,EAAOpsD,EAAImrD,EAAM3jB,EAAI4kB,EAAO95D,EAAI,EAEnCk1C,EADP2jB,EAAM5jB,EAAI6kB,EAAOnsD,EAAIkrD,EAAM3jB,EAAI4kB,EAAO75D,EAAI,GAmBvD,SAASwgI,EAAgB3mE,GAErB,IAAI6nE,EAAKD,EAAoB5nE,EAAQ,CAAE7kB,EAAG,EAAGC,EAAG,IAC5C0sF,EAAKF,EAAoB5nE,EAAQ,CAAE7kB,EAAG,EAAGC,EAAG,IAC5CssF,EAAS,IAAMh3H,KAAK+vB,GAAM/vB,KAAKssD,MAAM6qE,EAAGzsF,EAAGysF,EAAG1sF,GAAK,GAEvD,MAAO,CACHusF,MAAOA,EACPC,MAHS,IAAMj3H,KAAK+vB,GAAM/vB,KAAKssD,MAAM8qE,EAAG1sF,EAAG0sF,EAAG3sF,GAI9C4sF,WAAY/nE,EAAOvpD,EACnBuxH,WAAYhoE,EAAO49C,EACnBzV,OAAQz3F,KAAK2rC,KAAK2jB,EAAOpsD,EAAIosD,EAAOpsD,EAAIosD,EAAOnsD,EAAImsD,EAAOnsD,GAC1Du0F,OAAQ13F,KAAK2rC,KAAK2jB,EAAO95D,EAAI85D,EAAO95D,EAAI85D,EAAO75D,EAAI65D,EAAO75D,GAC1D8hI,SAAUP,GA4ClB,SAASnB,EAAexnE,EAAOiB,GAC3B,IAAIlxD,EAAMm4H,EAAeloE,EAAM5jB,EAAG4jB,EAAM3jB,GAAG8sF,gBAAgBloE,GAC3D,OAAO,IAAIoD,EAAWzH,MAAM7sD,EAAIqsC,EAAGrsC,EAAIssC,GA/Q3Cz1C,EAAQshI,eAAiBA,EA4BzBthI,EAAQqhI,gBAAkBA,EAc1BrhI,EAAQohI,mBATR,SAA4B/mE,GACxB,OAAc,MAAVA,GACMA,aAAkBmoE,YACpBnoE,EAASgnE,EAAgBhnE,IAEtBknE,EAAYkB,6BAA6BpoE,IAE7CknE,EAAYH,sBAwEvBphI,EAAQmhI,wBAA0BA,EAWlCnhI,EAAQkhI,wBAVR,SAAiC7mE,GAC7B,IAAI/5D,EAAI+5D,GAAU,GAOlB,MAAO,WANQ,MAAP/5D,EAAE2N,EAAY3N,EAAE2N,EAAI,GAML,KALR,MAAP3N,EAAE4N,EAAY5N,EAAE4N,EAAI,GAKK,KAJlB,MAAP5N,EAAEC,EAAYD,EAAEC,EAAI,GAIe,KAH5B,MAAPD,EAAEE,EAAYF,EAAEE,EAAI,GAGyB,KAFtC,MAAPF,EAAEwQ,EAAYxQ,EAAEwQ,EAAI,GAEmC,KADhD,MAAPxQ,EAAE23G,EAAY33G,EAAE23G,EAAI,GAC6C,KAqE7Ej4G,EAAQihI,qBAlER,SAA8BxqF,GAC1B,IAAIisF,EACAJ,EACAx6G,EACJ,GAAI2uB,EAAW,CACX,IAAI0L,EAAYs/E,EAEhB,GAAIhrF,EAAUpJ,OAAO3mC,QAAQ,WAAa,EAAG,CACzC,IACIi8H,EAAmB3B,EADVG,EAAwB1qF,IAErCisF,EAAc,CAACC,EAAiBP,WAAYO,EAAiBN,YAC7DC,EAAW,CAACK,EAAiBL,UAC7Bx6G,EAAQ,CAAC66G,EAAiBngC,OAAQmgC,EAAiBlgC,QACnD,IAAImgC,EAAkB,GACC,IAAnBF,EAAY,IAA+B,IAAnBA,EAAY,IACpCE,EAAgBn9H,KAAK,aAAei9H,EAAYzwH,KAAK,KAAO,KAE/C,IAAb6V,EAAM,IAAyB,IAAbA,EAAM,IACxB86G,EAAgBn9H,KAAK,SAAWqiB,EAAM7V,KAAK,KAAO,KAElC,IAAhBqwH,EAAS,IACTM,EAAgBn9H,KAAK,UAAY68H,EAAS,GAAK,KAEnD7rF,EAAYmsF,EAAgB3wH,KAAK,SAEhC,CACD,IAAI4wH,EAAiBpsF,EAAUvlC,MAAM,sBACjC2xH,IACAH,EAAcG,EAAe,GAAGz2H,MAAM+1C,IAE1C,IAAI2gF,EAAcrsF,EAAUvlC,MAAM,mBAC9B4xH,IACAR,EAAWQ,EAAY,GAAG12H,MAAM+1C,IAEpC,IAAI4gF,EAAatsF,EAAUvlC,MAAM,kBAC7B6xH,IACAj7G,EAAQi7G,EAAW,GAAG32H,MAAM+1C,KAIxC,IAAIwU,EAAK7uC,GAASA,EAAM,GAAKgO,WAAWhO,EAAM,IAAM,EACpD,MAAO,CACHvD,IAAKkyB,GAAa,GAClBisF,YAAa,CACT9kE,GAAI8kE,GAAeA,EAAY,GACzB/rG,SAAS+rG,EAAY,GAAI,IACzB,EACN7kE,GAAI6kE,GAAeA,EAAY,GACzB/rG,SAAS+rG,EAAY,GAAI,IACzB,GAEVJ,SAAU,CACN3qE,MAAO2qE,GAAYA,EAAS,GAAK3rG,SAAS2rG,EAAS,GAAI,IAAM,EAC7DriC,GAAIqiC,GAAYA,EAAS,GACnB3rG,SAAS2rG,EAAS,GAAI,SACtBn9H,EACN+6F,GAAIoiC,GAAYA,EAAS,GACnB3rG,SAAS2rG,EAAS,GAAI,SACtBn9H,GAEV2iB,MAAO,CACH6uC,GAAIA,EACJC,GAAI9uC,GAASA,EAAM,GAAKgO,WAAWhO,EAAM,IAAM6uC,KA0C3D32D,EAAQghI,gBAAkBA,EAoB1BhhI,EAAQ+gI,cAnBR,SAAuB1mE,GACnB,IAAIpsD,EACAC,EACA3N,EACAC,EAUJ,OATI65D,GACApsD,EAAgB,MAAZosD,EAAOpsD,EAAY,EAAIosD,EAAOpsD,EAClCzN,EAAgB,MAAZ65D,EAAO75D,EAAY,EAAI65D,EAAO75D,EAClC0N,EAAImsD,EAAOnsD,EACX3N,EAAI85D,EAAO95D,GAGX0N,EAAIzN,EAAI,EAEL,CACHm2D,GAAIzoD,EAAInD,KAAK2rC,KAAKzoC,EAAIA,EAAIC,EAAIA,GAAKD,EACnC2oD,GAAIr2D,EAAIwK,KAAK2rC,KAAKn2C,EAAIA,EAAIC,EAAIA,GAAKA,IAa3CR,EAAQ8gI,iBATR,SAA0BzmE,GACtB,IAAIr4D,EAAI,CAAEwzC,EAAG,EAAGC,EAAG,GAInB,OAHI4kB,IACAr4D,EAAIigI,EAAoB5nE,EAAQr4D,IAE7B,CACH21D,MAAO8F,EAAWtF,MAAM1D,UAAUgJ,EAAWtF,MAAMO,MAAM3tD,KAAKssD,MAAMr1D,EAAEyzC,EAAGzzC,EAAEwzC,IAAM,MAUzFx1C,EAAQ6gI,oBANR,SAA6BxmE,GACzB,MAAO,CACHuD,GAAKvD,GAAUA,EAAOvpD,GAAM,EAC5B+sD,GAAKxD,GAAUA,EAAO49C,GAAM,IAWpCj4G,EAAQ4gI,eAAiBA,EAOzB5gI,EAAQ2gI,cAHR,SAAuBziE,EAAM7D,GACzB,OAAO,IAAIoD,EAAWF,KAAKqjE,EAAe1iE,EAAK35D,MAAO81D,GAASumE,EAAe1iE,EAAK9zD,IAAKiwD,KAa5Fr6D,EAAQ0gI,kBAPR,SAA2BjC,EAAUpkE,GACjC,IAAItD,EAAS0nE,aAAoBhhE,EAAWyrD,SAAWuV,EAAS1nE,OAAS0nE,EAIzE,OAHKt6H,MAAMD,QAAQ6yD,KACfA,EAAS,IAEN,IAAI0G,EAAWyrD,SAASnyD,EAAOvtD,KAAI,SAAUxH,GAAK,OAAO4+H,EAAe5+H,EAAGq4D,QAuBtFr6D,EAAQygI,mBApBR,SAA4B30F,EAAMuuB,GAC9B,IAAIr4D,EAAIu/H,EAAYD,iBACpBt/H,EAAEwzC,EAAI1J,EAAK0J,EACXxzC,EAAEyzC,EAAI3J,EAAK2J,EACX,IAAIutF,EAAUhhI,EAAEugI,gBAAgBloE,GAChCr4D,EAAEwzC,EAAI1J,EAAK0J,EAAI1J,EAAKxX,MACpBtyB,EAAEyzC,EAAI3J,EAAK2J,EACX,IAAIwtF,EAAUjhI,EAAEugI,gBAAgBloE,GAChCr4D,EAAEwzC,EAAI1J,EAAK0J,EAAI1J,EAAKxX,MACpBtyB,EAAEyzC,EAAI3J,EAAK2J,EAAI3J,EAAKpV,OACpB,IAAIwsG,EAAUlhI,EAAEugI,gBAAgBloE,GAChCr4D,EAAEwzC,EAAI1J,EAAK0J,EACXxzC,EAAEyzC,EAAI3J,EAAK2J,EAAI3J,EAAKpV,OACpB,IAAIysG,EAAUnhI,EAAEugI,gBAAgBloE,GAC5B0uC,EAAOh+F,KAAKkzC,IAAI+kF,EAAQxtF,EAAGytF,EAAQztF,EAAG0tF,EAAQ1tF,EAAG2tF,EAAQ3tF,GACzDklB,EAAO3vD,KAAKitB,IAAIgrG,EAAQxtF,EAAGytF,EAAQztF,EAAG0tF,EAAQ1tF,EAAG2tF,EAAQ3tF,GACzDwzD,EAAOj+F,KAAKkzC,IAAI+kF,EAAQvtF,EAAGwtF,EAAQxtF,EAAGytF,EAAQztF,EAAG0tF,EAAQ1tF,GACzDklB,EAAO5vD,KAAKitB,IAAIgrG,EAAQvtF,EAAGwtF,EAAQxtF,EAAGytF,EAAQztF,EAAG0tF,EAAQ1tF,GAC7D,OAAO,IAAIgoB,EAAWiB,UAAUqqC,EAAMC,EAAMtuC,EAAOquC,EAAMpuC,EAAOquC,K,cCzUpE/oG,EAAOD,QAAUojI,M,wPCKjB,IAAIC,EAAU,KAMdpjI,EAAOD,QAJP,WACE,OAAOqjI,M,gBCRT,IAAIn3H,EAAO,EAAQ,KAEfmpG,EAAW,EAAQ,KAEnBiuB,EAAgB,EAAQ,KAExBC,EAAa,EAAQ,KAErB3xF,EAAS,EAAQ,IASjBshE,EAAU,SAAU72E,GAEtBinG,EAAcjjI,KAAK4C,KAAMo5B,GACzBg5E,EAASh1G,KAAK4C,KAAMo5B,GACpBknG,EAAWljI,KAAK4C,KAAMo5B,GAMtBp5B,KAAKwO,GAAK4qB,EAAK5qB,IAAMvF,KAGvBgnG,EAAQpxG,UAAY,CAMlB0C,KAAM,UAON/D,KAAM,GAQNy1C,KAAM,KASNo+E,QAAQ,EASRkP,SAAU,KAMV/P,SAAS,EAOTgQ,MAAO,SAAUntE,EAAIC,GACnB,OAAQtzD,KAAKwwG,WACX,IAAK,aACHl9C,EAAK,EACL,MAEF,IAAK,WACHD,EAAK,EAIT,IAAIh2D,EAAI2C,KAAKwzC,UAERn2C,IACHA,EAAI2C,KAAKwzC,UAAY,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,IAGvCn2C,EAAE,IAAMg2D,EACRh2D,EAAE,IAAMi2D,EACRtzD,KAAKygI,qBACLzgI,KAAK8yC,OAAM,IAMb4tF,aAAc,aAKdC,YAAa,aAKbl1E,OAAQ,WACNzrD,KAAK4gI,mBAOP/yD,SAAU,SAAUvhC,EAAIvsC,KAKxBuzC,OAAQ,SAAU90C,EAAKN,GACrB,GAAY,aAARM,GAA8B,UAARA,GAA2B,WAARA,GAE3C,GAAIN,EAAO,CACT,IAAIwJ,EAAS1H,KAAKxB,GAEbkJ,IACHA,EAAS1H,KAAKxB,GAAO,IAGvBkJ,EAAO,GAAKxJ,EAAM,GAClBwJ,EAAO,GAAKxJ,EAAM,SAGpB8B,KAAKxB,GAAON,GAOhBwnB,KAAM,WACJ1lB,KAAKqxH,QAAS,EACdrxH,KAAKizC,MAAQjzC,KAAKizC,KAAKC,WAMzB1tB,KAAM,WACJxlB,KAAKqxH,QAAS,EACdrxH,KAAKizC,MAAQjzC,KAAKizC,KAAKC,WAOzBjgC,KAAM,SAAUzU,EAAKN,GACnB,GAAmB,iBAARM,EACTwB,KAAKszC,OAAO90C,EAAKN,QACZ,GAAIywC,EAAOlsC,SAASjE,GACzB,IAAK,IAAIhB,KAAQgB,EACXA,EAAIM,eAAetB,IACrBwC,KAAKszC,OAAO91C,EAAMgB,EAAIhB,IAM5B,OADAwC,KAAK8yC,OAAM,GACJ9yC,MAMT6gI,YAAa,SAAUN,GACrB,IAAIrQ,EAAKlwH,KAAKizC,KAEVi9E,GACFqQ,EAAS/R,YAAY0B,GAInBlwH,KAAKugI,UAAYvgI,KAAKugI,WAAaA,GACrCvgI,KAAK8gI,iBAGP9gI,KAAKugI,SAAWA,EAChBA,EAASttF,KAAOi9E,EAChBqQ,EAASptF,aAAenzC,KACxBA,KAAK8yC,OAAM,IAKbguF,eAAgB,WACd,IAAIP,EAAWvgI,KAAKugI,SAEhBA,IACEA,EAASttF,MACXstF,EAAShS,iBAAiBgS,EAASttF,MAGrCstF,EAASttF,KAAO,KAChBstF,EAASptF,aAAe,KACxBnzC,KAAKugI,SAAW,KAChBvgI,KAAK8yC,OAAM,KASf07E,YAAa,SAAU0B,GACrBlwH,KAAKizC,KAAOi9E,EAEZ,IAAI6Q,EAAY/gI,KAAK+gI,UAErB,GAAIA,EACF,IAAK,IAAI9jI,EAAI,EAAGA,EAAI8jI,EAAUp/H,OAAQ1E,IACpCizH,EAAGv3F,UAAUqoG,YAAYD,EAAU9jI,IAInC+C,KAAKugI,UACPvgI,KAAKugI,SAAS/R,YAAY0B,IAS9B3B,iBAAkB,SAAU2B,GAC1BlwH,KAAKizC,KAAO,KAEZ,IAAI8tF,EAAY/gI,KAAK+gI,UAErB,GAAIA,EACF,IAAK,IAAI9jI,EAAI,EAAGA,EAAI8jI,EAAUp/H,OAAQ1E,IACpCizH,EAAGv3F,UAAUsoG,eAAeF,EAAU9jI,IAItC+C,KAAKugI,UACPvgI,KAAKugI,SAAShS,iBAAiB2B,KAIrCvhF,EAAOtB,MAAM4iE,EAASqwB,GACtB3xF,EAAOtB,MAAM4iE,EAASowB,GACtB1xF,EAAOtB,MAAM4iE,EAASmC,GACtB,IAAI1rF,EAAWupF,EACfjzG,EAAOD,QAAU2pB,G,gBC5QjB,IAAIw6G,EAAO,EAAQ,KAEfrqB,EAAQ,EAAQ,KAIhBl0G,EAFQ,EAAQ,IAEIA,YAKpBw+H,EAAajgI,MAAMrC,UAAUyE,MAEjC,SAAS89H,EAAc15H,EAAQlJ,GAC7B,OAAOkJ,EAAOlJ,GAGhB,SAAS6iI,EAAc35H,EAAQlJ,EAAKN,GAClCwJ,EAAOlJ,GAAON,EAUhB,SAASojI,EAAkBlhC,EAAI9rC,EAAIp9B,GACjC,OAAQo9B,EAAK8rC,GAAMlpE,EAAUkpE,EAU/B,SAASmhC,EAAkBnhC,EAAI9rC,EAAIp9B,GACjC,OAAOA,EAAU,GAAMo9B,EAAK8rC,EAW9B,SAASohC,EAAiBphC,EAAI9rC,EAAIp9B,EAASi6B,EAAKswE,GAC9C,IAAIx6H,EAAMm5F,EAAGz+F,OAEb,GAAe,IAAX8/H,EACF,IAAK,IAAIxkI,EAAI,EAAGA,EAAIgK,EAAKhK,IACvBk0D,EAAIl0D,GAAKqkI,EAAkBlhC,EAAGnjG,GAAIq3D,EAAGr3D,GAAIi6B,OAG3C,KAAIwqG,EAAOz6H,GAAOm5F,EAAG,GAAGz+F,OAExB,IAAS1E,EAAI,EAAGA,EAAIgK,EAAKhK,IACvB,IAAK,IAAIiK,EAAI,EAAGA,EAAIw6H,EAAMx6H,IACxBiqD,EAAIl0D,GAAGiK,GAAKo6H,EAAkBlhC,EAAGnjG,GAAGiK,GAAIotD,EAAGr3D,GAAGiK,GAAIgwB,IAQ1D,SAASyqG,EAAQC,EAAMC,EAAMJ,GAC3B,IAAIK,EAAUF,EAAKjgI,OACfogI,EAAUF,EAAKlgI,OAEnB,GAAImgI,IAAYC,EAId,GAFuBD,EAAUC,EAI/BH,EAAKjgI,OAASogI,OAGd,IAAK,IAAI9kI,EAAI6kI,EAAS7kI,EAAI8kI,EAAS9kI,IACjC2kI,EAAKp/H,KAAgB,IAAXi/H,EAAeI,EAAK5kI,GAAKkkI,EAAW/jI,KAAKykI,EAAK5kI,KAM9D,IAAIykI,EAAOE,EAAK,IAAMA,EAAK,GAAGjgI,OAE9B,IAAS1E,EAAI,EAAGA,EAAI2kI,EAAKjgI,OAAQ1E,IAC/B,GAAe,IAAXwkI,EACEt3F,MAAMy3F,EAAK3kI,MACb2kI,EAAK3kI,GAAK4kI,EAAK5kI,SAGjB,IAAK,IAAIiK,EAAI,EAAGA,EAAIw6H,EAAMx6H,IACpBijC,MAAMy3F,EAAK3kI,GAAGiK,MAChB06H,EAAK3kI,GAAGiK,GAAK26H,EAAK5kI,GAAGiK,IAc/B,SAAS86H,EAAYJ,EAAMC,EAAMJ,GAC/B,GAAIG,IAASC,EACX,OAAO,EAGT,IAAI56H,EAAM26H,EAAKjgI,OAEf,GAAIsF,IAAQ46H,EAAKlgI,OACf,OAAO,EAGT,GAAe,IAAX8/H,GACF,IAAK,IAAIxkI,EAAI,EAAGA,EAAIgK,EAAKhK,IACvB,GAAI2kI,EAAK3kI,KAAO4kI,EAAK5kI,GACnB,OAAO,MAIX,KAAIykI,EAAOE,EAAK,GAAGjgI,OAEnB,IAAS1E,EAAI,EAAGA,EAAIgK,EAAKhK,IACvB,IAAK,IAAIiK,EAAI,EAAGA,EAAIw6H,EAAMx6H,IACxB,GAAI06H,EAAK3kI,GAAGiK,KAAO26H,EAAK5kI,GAAGiK,GACzB,OAAO,EAMf,OAAO,EAgBT,SAAS+6H,EAA2B7hC,EAAI9rC,EAAIC,EAAI8rC,EAAIliG,EAAG4iG,EAAIO,EAAInwC,EAAKswE,GAClE,IAAIx6H,EAAMm5F,EAAGz+F,OAEb,GAAe,IAAX8/H,EACF,IAAK,IAAIxkI,EAAI,EAAGA,EAAIgK,EAAKhK,IACvBk0D,EAAIl0D,GAAKilI,EAAsB9hC,EAAGnjG,GAAIq3D,EAAGr3D,GAAIs3D,EAAGt3D,GAAIojG,EAAGpjG,GAAIkB,EAAG4iG,EAAIO,OAGpE,KAAIogC,EAAOthC,EAAG,GAAGz+F,OAEjB,IAAS1E,EAAI,EAAGA,EAAIgK,EAAKhK,IACvB,IAAK,IAAIiK,EAAI,EAAGA,EAAIw6H,EAAMx6H,IACxBiqD,EAAIl0D,GAAGiK,GAAKg7H,EAAsB9hC,EAAGnjG,GAAGiK,GAAIotD,EAAGr3D,GAAGiK,GAAIqtD,EAAGt3D,GAAGiK,GAAIm5F,EAAGpjG,GAAGiK,GAAI/I,EAAG4iG,EAAIO,IAkBzF,SAAS4gC,EAAsB9hC,EAAI9rC,EAAIC,EAAI8rC,EAAIliG,EAAG4iG,EAAIO,GACpD,IAAI6gC,EAAiB,IAAX5tE,EAAK6rC,GACXtvC,EAAiB,IAAXuvC,EAAK/rC,GACf,OAAQ,GAAKA,EAAKC,GAAM4tE,EAAKrxE,GAAMwwC,IAAO,GAAKhtC,EAAKC,GAAM,EAAI4tE,EAAKrxE,GAAMiwC,EAAKohC,EAAKhkI,EAAIm2D,EAGzF,SAAS8tE,EAAWlkI,GAClB,GAAIyE,EAAYzE,GAAQ,CACtB,IAAI+I,EAAM/I,EAAMyD,OAEhB,GAAIgB,EAAYzE,EAAM,IAAK,CAGzB,IAFA,IAAIgI,EAAM,GAEDjJ,EAAI,EAAGA,EAAIgK,EAAKhK,IACvBiJ,EAAI1D,KAAK2+H,EAAW/jI,KAAKc,EAAMjB,KAGjC,OAAOiJ,EAGT,OAAOi7H,EAAW/jI,KAAKc,GAGzB,OAAOA,EAGT,SAASmkI,EAAYjsB,GAInB,OAHAA,EAAK,GAAKtuG,KAAKq4C,MAAMi2D,EAAK,IAC1BA,EAAK,GAAKtuG,KAAKq4C,MAAMi2D,EAAK,IAC1BA,EAAK,GAAKtuG,KAAKq4C,MAAMi2D,EAAK,IACnB,QAAUA,EAAKpnG,KAAK,KAAO,IAQpC,SAASszH,EAAgBC,EAAUzsG,EAAQ0sG,EAAcC,EAAWC,EAAUC,GAC5E,IAAIllI,EAAS8kI,EAASK,QAClBl/G,EAAS6+G,EAASM,QAClBC,EAAuB,WAAXhtG,EACZitG,EAAWN,EAAU9gI,OAEzB,GAAKohI,EAAL,CAKA,IAMIC,EANAC,EAAWR,EAAU,GAAGvkI,MACxBglI,EAAevgI,EAAYsgI,GAC3BE,GAAe,EACfC,GAAgB,EAEhB3B,EAASyB,EArBf,SAAqBT,GACnB,IAAIY,EAAYZ,EAAUA,EAAU9gI,OAAS,GAAGzD,MAChD,OAAOyE,EAAY0gI,GAAaA,EAAU,IAAM,EAAI,EAmBxBC,CAAYb,GAAa,EAGrDA,EAAUr7H,MAAK,SAAU4D,EAAGC,GAC1B,OAAOD,EAAE6wB,KAAO5wB,EAAE4wB,QAEpBmnG,EAAeP,EAAUM,EAAW,GAAGlnG,KAQvC,IANA,IAAI0nG,EAAa,GAEbC,EAAW,GACXC,EAAYhB,EAAU,GAAGvkI,MACzBwlI,GAAkB,EAEbzmI,EAAI,EAAGA,EAAI8lI,EAAU9lI,IAAK,CACjCsmI,EAAW/gI,KAAKigI,EAAUxlI,GAAG4+B,KAAOmnG,GAEpC,IAAI9kI,EAAQukI,EAAUxlI,GAAGiB,MAQzB,GANMglI,GAAgBlB,EAAY9jI,EAAOulI,EAAWhC,KAAYyB,GAAgBhlI,IAAUulI,IACxFC,GAAkB,GAGpBD,EAAYvlI,EAES,iBAAVA,EAAoB,CAC7B,IAAIylI,EAAa9sB,EAAM7zF,MAAM9kB,GAEzBylI,GACFzlI,EAAQylI,EACRR,GAAe,GAEfC,GAAgB,EAIpBI,EAAShhI,KAAKtE,GAGhB,GAAKykI,IAAgBe,EAArB,CAIA,IAAIL,EAAYG,EAAST,EAAW,GAEpC,IAAS9lI,EAAI,EAAGA,EAAI8lI,EAAW,EAAG9lI,IAC5BimI,EACFvB,EAAQ6B,EAASvmI,GAAIomI,EAAW5B,IAE5Bt3F,MAAMq5F,EAASvmI,KAAQktC,MAAMk5F,IAAeD,GAAkBD,IAChEK,EAASvmI,GAAKomI,GAKpBH,GAAgBvB,EAAQlkI,EAAO8kI,EAASvnD,QAAS0nD,GAAWW,EAAW5B,GAGvE,IAGI1+H,EACAq9F,EACA9rC,EACAC,EACA8rC,EAPAujC,EAAY,EACZC,EAAmB,EAQvB,GAAIV,EACF,IAAI/sB,EAAO,CAAC,EAAG,EAAG,EAAG,GAGvB,IAqFI0tB,EAAO,IAAI5C,EAAK,CAClBx5H,OAAQ66H,EAASvnD,QACjB+oD,KAAMf,EACN3vF,KAAMkvF,EAASyB,MACfpoG,MAAO2mG,EAAS0B,OAChBC,QA1FY,SAAUx8H,EAAQwvB,GAI9B,IAAIitG,EAEJ,GAAIjtG,EAAU,EACZitG,EAAQ,OACH,GAAIjtG,EAAU2sG,EAAkB,CAKrC,IAAKM,EAFGr8H,KAAKkzC,IAAI4oF,EAAY,EAAGb,EAAW,GAEvBoB,GAAS,KACvBZ,EAAWY,IAAUjtG,GADKitG,KAOhCA,EAAQr8H,KAAKkzC,IAAImpF,EAAOpB,EAAW,OAC9B,CACL,IAAKoB,EAAQP,EAAWO,EAAQpB,KAC1BQ,EAAWY,GAASjtG,GADgBitG,KAM1CA,EAAQr8H,KAAKkzC,IAAImpF,EAAQ,EAAGpB,EAAW,GAGzCa,EAAYO,EACZN,EAAmB3sG,EACnB,IAAIq3B,EAAQg1E,EAAWY,EAAQ,GAAKZ,EAAWY,GAE/C,GAAc,IAAV51E,EAMJ,GAHExrD,GAAKm0B,EAAUqsG,EAAWY,IAAU51E,EAGlCu0E,EAMF,GALAxuE,EAAKkvE,EAASW,GACd/jC,EAAKojC,EAAmB,IAAVW,EAAcA,EAAQA,EAAQ,GAC5C5vE,EAAKivE,EAASW,EAAQpB,EAAW,EAAIA,EAAW,EAAIoB,EAAQ,GAC5D9jC,EAAKmjC,EAASW,EAAQpB,EAAW,EAAIA,EAAW,EAAIoB,EAAQ,GAExDjB,EACFjB,EAA2B7hC,EAAI9rC,EAAIC,EAAI8rC,EAAIt9F,EAAGA,EAAIA,EAAGA,EAAIA,EAAIA,EAAGtF,EAAOiK,EAAQg7H,GAAWjB,OACrF,CAGL,GAAI0B,EACFjlI,EAAQ+jI,EAA2B7hC,EAAI9rC,EAAIC,EAAI8rC,EAAIt9F,EAAGA,EAAIA,EAAGA,EAAIA,EAAIA,EAAGqzG,EAAM,GAC9El4G,EAAQmkI,EAAYjsB,OACf,IAAIgtB,EAET,OAAO7B,EAAkBjtE,EAAIC,EAAIxxD,GAEjC7E,EAAQgkI,EAAsB9hC,EAAI9rC,EAAIC,EAAI8rC,EAAIt9F,EAAGA,EAAIA,EAAGA,EAAIA,EAAIA,GAGlE2gB,EAAOhc,EAAQg7H,EAAUxkI,QAG3B,GAAIglI,EACF1B,EAAiBgC,EAASW,GAAQX,EAASW,EAAQ,GAAIphI,EAAGtF,EAAOiK,EAAQg7H,GAAWjB,OAC/E,CACL,IAAIvjI,EAEJ,GAAIilI,EACF3B,EAAiBgC,EAASW,GAAQX,EAASW,EAAQ,GAAIphI,EAAGqzG,EAAM,GAChEl4G,EAAQmkI,EAAYjsB,OACf,IAAIgtB,EAET,OAAO7B,EAAkBiC,EAASW,GAAQX,EAASW,EAAQ,GAAIphI,GAE/D7E,EAAQojI,EAAkBkC,EAASW,GAAQX,EAASW,EAAQ,GAAIphI,GAGlE2gB,EAAOhc,EAAQg7H,EAAUxkI,KAW7BkmI,UAAW5B,IAOb,OAJI1sG,GAAqB,WAAXA,IACZguG,EAAKhuG,OAASA,GAGTguG,IAYT,IAAIO,EAAW,SAAU38H,EAAQ2rC,EAAM51C,EAAQimB,GAC7C1jB,KAAKskI,QAAU,GACftkI,KAAKg7E,QAAUtzE,EACf1H,KAAKgkI,MAAQ3wF,IAAQ,EACrBrzC,KAAK4iI,QAAUnlI,GAAU2jI,EACzBphI,KAAK6iI,QAAUn/G,GAAU29G,EACzBrhI,KAAKukI,WAAa,EAClBvkI,KAAKikI,OAAS,EACdjkI,KAAKwkI,UAAY,GACjBxkI,KAAKykI,aAAe,GACpBzkI,KAAK0kI,UAAY,IAGnBL,EAASxlI,UAAY,CAOnBihB,KAAM,SAAU+b,EAEdlQ,GACA,IAAIg5G,EAAS3kI,KAAKskI,QAElB,IAAK,IAAI5B,KAAY/2G,EACnB,GAAKA,EAAM7sB,eAAe4jI,GAA1B,CAIA,IAAKiC,EAAOjC,GAAW,CACrBiC,EAAOjC,GAAY,GAEnB,IAAIxkI,EAAQ8B,KAAK4iI,QAAQ5iI,KAAKg7E,QAAS0nD,GAEvC,GAAa,MAATxkI,EAEF,SAOW,IAAT29B,GACF8oG,EAAOjC,GAAUlgI,KAAK,CACpBq5B,KAAM,EACN39B,MAAOkkI,EAAWlkI,KAKxBymI,EAAOjC,GAAUlgI,KAAK,CACpBq5B,KAAMA,EACN39B,MAAOytB,EAAM+2G,KAIjB,OAAO1iI,MAQT4kI,OAAQ,SAAUt+H,GAGhB,OAFAtG,KAAKykI,aAAajiI,KAAK8D,GAEhBtG,MAET6kI,MAAO,WACL,IAAK,IAAI5nI,EAAI,EAAGA,EAAI+C,KAAK0kI,UAAU/iI,OAAQ1E,IACzC+C,KAAK0kI,UAAUznI,GAAG4nI,QAGpB7kI,KAAK8kI,SAAU,GAEjBC,OAAQ,WACN,IAAK,IAAI9nI,EAAI,EAAGA,EAAI+C,KAAK0kI,UAAU/iI,OAAQ1E,IACzC+C,KAAK0kI,UAAUznI,GAAG8nI,SAGpB/kI,KAAK8kI,SAAU,GAEjBE,SAAU,WACR,QAAShlI,KAAK8kI,SAEhBG,cAAe,WAEbjlI,KAAKskI,QAAU,GAEftkI,KAAK0kI,UAAU/iI,OAAS,EAIxB,IAHA,IAAIujI,EAAWllI,KAAKwkI,UAChBv9H,EAAMi+H,EAASvjI,OAEV1E,EAAI,EAAGA,EAAIgK,EAAKhK,IACvBioI,EAASjoI,GAAGG,KAAK4C,OAWrBsB,MAAO,SAAUw0B,EAAQ6sG,GACvB,IAWIwC,EAXAtjI,EAAO7B,KACPolI,EAAY,EAEZ5C,EAAe,aACjB4C,GAGEvjI,EAAKojI,iBAMT,IAAK,IAAIvC,KAAY1iI,KAAKskI,QACxB,GAAKtkI,KAAKskI,QAAQxlI,eAAe4jI,GAAjC,CAIA,IAAIoB,EAAOxB,EAAgBtiI,KAAM81B,EAAQ0sG,EAAcxiI,KAAKskI,QAAQ5B,GAAWA,EAAUC,GAErFmB,IACF9jI,KAAK0kI,UAAUliI,KAAKshI,GAEpBsB,IAEIplI,KAAK24B,WACP34B,KAAK24B,UAAU0sG,QAAQvB,GAGzBqB,EAAWrB,GAKf,GAAIqB,EAAU,CACZ,IAAIG,EAAaH,EAASjB,QAE1BiB,EAASjB,QAAU,SAAUx8H,EAAQwvB,GACnCouG,EAAW59H,EAAQwvB,GAEnB,IAAK,IAAIj6B,EAAI,EAAGA,EAAI4E,EAAK4iI,aAAa9iI,OAAQ1E,IAC5C4E,EAAK4iI,aAAaxnI,GAAGyK,EAAQwvB,IAYnC,OAJKkuG,GACHplI,KAAKilI,gBAGAjlI,MAOTyjB,KAAM,SAAU8hH,GAId,IAHA,IAAIC,EAAWxlI,KAAK0kI,UAChB/rG,EAAY34B,KAAK24B,UAEZ17B,EAAI,EAAGA,EAAIuoI,EAAS7jI,OAAQ1E,IAAK,CACxC,IAAI6mI,EAAO0B,EAASvoI,GAEhBsoI,GAEFzB,EAAKI,QAAQlkI,KAAKg7E,QAAS,GAG7BriD,GAAaA,EAAU8sG,WAAW3B,GAGpC0B,EAAS7jI,OAAS,GAQpBi6B,MAAO,SAAUC,GAEf,OADA77B,KAAKikI,OAASpoG,EACP77B,MAQTyK,KAAM,SAAU6hC,GAKd,OAJIA,GACFtsC,KAAKwkI,UAAUhiI,KAAK8pC,GAGftsC,MAMT0lI,SAAU,WACR,OAAO1lI,KAAK0kI,YAGhB,IAAIh+G,EAAW29G,EACfrnI,EAAOD,QAAU2pB,G,cC5nBjB,IAAIi/G,EAAa,WAIf3lI,KAAKmF,KAAO,KAKZnF,KAAKgkD,KAAO,KACZhkD,KAAK87F,KAAO,GAGV8pC,EAAkBD,EAAW9mI,UAOjC+mI,EAAgBj1G,OAAS,SAAU9rB,GACjC,IAAIw5D,EAAQ,IAAIwnE,EAAMhhI,GAEtB,OADA7E,KAAK8lI,YAAYznE,GACVA,GAQTunE,EAAgBE,YAAc,SAAUznE,GACjCr+D,KAAKmF,MAGRnF,KAAKgkD,KAAKr2C,KAAO0wD,EACjBA,EAAMljD,KAAOnb,KAAKgkD,KAClBqa,EAAM1wD,KAAO,KACb3N,KAAKgkD,KAAOqa,GALZr+D,KAAKmF,KAAOnF,KAAKgkD,KAAOqa,EAQ1Br+D,KAAK87F,QAQP8pC,EAAgBhoH,OAAS,SAAUygD,GACjC,IAAIljD,EAAOkjD,EAAMljD,KACbxN,EAAO0wD,EAAM1wD,KAEbwN,EACFA,EAAKxN,KAAOA,EAGZ3N,KAAKmF,KAAOwI,EAGVA,EACFA,EAAKwN,KAAOA,EAGZnb,KAAKgkD,KAAO7oC,EAGdkjD,EAAM1wD,KAAO0wD,EAAMljD,KAAO,KAC1Bnb,KAAK87F,QAOP8pC,EAAgB3+H,IAAM,WACpB,OAAOjH,KAAK87F,MAOd8pC,EAAgB/sE,MAAQ,WACtB74D,KAAKmF,KAAOnF,KAAKgkD,KAAO,KACxBhkD,KAAK87F,KAAO,GAQd,IAAI+pC,EAAQ,SAAUhhI,GAIpB7E,KAAK9B,MAAQ2G,EAKb7E,KAAK2N,KAKL3N,KAAKmb,MASHy5F,EAAM,SAAUmxB,GAClB/lI,KAAKgmI,MAAQ,IAAIL,EACjB3lI,KAAKimI,KAAO,GACZjmI,KAAKkmI,SAAWH,GAAW,GAC3B/lI,KAAKmmI,kBAAoB,MAGvBC,EAAWxxB,EAAI/1G,UAOnBunI,EAASxwB,IAAM,SAAUp3G,EAAKN,GAC5B,IAAIkN,EAAOpL,KAAKgmI,MACZz/H,EAAMvG,KAAKimI,KACXpuC,EAAU,KAEd,GAAgB,MAAZtxF,EAAI/H,GAAc,CACpB,IAAIyI,EAAMmE,EAAKnE,MAEXo3D,EAAQr+D,KAAKmmI,kBAEjB,GAAIl/H,GAAOjH,KAAKkmI,UAAYj/H,EAAM,EAAG,CAEnC,IAAIo/H,EAAiBj7H,EAAKjG,KAC1BiG,EAAKwS,OAAOyoH,UACL9/H,EAAI8/H,EAAe7nI,KAC1Bq5F,EAAUwuC,EAAenoI,MACzB8B,KAAKmmI,kBAAoBE,EAGvBhoE,EACFA,EAAMngE,MAAQA,EAEdmgE,EAAQ,IAAIwnE,EAAM3nI,GAGpBmgE,EAAM7/D,IAAMA,EACZ4M,EAAK06H,YAAYznE,GACjB93D,EAAI/H,GAAO6/D,EAGb,OAAOw5B,GAQTuuC,EAAStoI,IAAM,SAAUU,GACvB,IAAI6/D,EAAQr+D,KAAKimI,KAAKznI,GAClB4M,EAAOpL,KAAKgmI,MAEhB,GAAa,MAAT3nE,EAOF,OALIA,IAAUjzD,EAAK44C,OACjB54C,EAAKwS,OAAOygD,GACZjzD,EAAK06H,YAAYznE,IAGZA,EAAMngE,OAQjBkoI,EAASvtE,MAAQ,WACf74D,KAAKgmI,MAAMntE,QAEX74D,KAAKimI,KAAO,IAGd,IAAIv/G,EAAWkuF,EACf53G,EAAOD,QAAU2pB,G,cCzLjB,SAAS4/G,EAAiB9kI,EAAO+kI,EAAIC,EAAI/zH,GACvC,IAAIg0H,EAAQF,EAAK,EAEjB,GAAIE,IAAUD,EACZ,OAAO,EAGT,GAAI/zH,EAAQjR,EAAMilI,KAAUjlI,EAAM+kI,IAAO,EAAG,CAC1C,KAAOE,EAAQD,GAAM/zH,EAAQjR,EAAMilI,GAAQjlI,EAAMilI,EAAQ,IAAM,GAC7DA,KAaN,SAAoBjlI,EAAO+kI,EAAIC,GAC7BA,IAEA,KAAOD,EAAKC,GAAI,CACd,IAAIroI,EAAIqD,EAAM+kI,GACd/kI,EAAM+kI,KAAQ/kI,EAAMglI,GACpBhlI,EAAMglI,KAAQroI,GAhBduoI,CAAWllI,EAAO+kI,EAAIE,QAEtB,KAAOA,EAAQD,GAAM/zH,EAAQjR,EAAMilI,GAAQjlI,EAAMilI,EAAQ,KAAO,GAC9DA,IAIJ,OAAOA,EAAQF,EAajB,SAASI,EAAoBnlI,EAAO+kI,EAAIC,EAAIllI,EAAOmR,GAKjD,IAJInR,IAAUilI,GACZjlI,IAGKA,EAAQklI,EAAIllI,IAAS,CAM1B,IALA,IAGI48D,EAHA0oE,EAAQplI,EAAMF,GACdi1B,EAAOgwG,EACPl0G,EAAQ/wB,EAGLi1B,EAAOlE,GAGR5f,EAAQm0H,EAAOplI,EAFnB08D,EAAM3nC,EAAOlE,IAAU,IAEU,EAC/BA,EAAQ6rC,EAER3nC,EAAO2nC,EAAM,EAIjB,IAAIx/D,EAAI4C,EAAQi1B,EAEhB,OAAQ73B,GACN,KAAK,EACH8C,EAAM+0B,EAAO,GAAK/0B,EAAM+0B,EAAO,GAEjC,KAAK,EACH/0B,EAAM+0B,EAAO,GAAK/0B,EAAM+0B,EAAO,GAEjC,KAAK,EACH/0B,EAAM+0B,EAAO,GAAK/0B,EAAM+0B,GACxB,MAEF,QACE,KAAO73B,EAAI,GACT8C,EAAM+0B,EAAO73B,GAAK8C,EAAM+0B,EAAO73B,EAAI,GACnCA,IAKN8C,EAAM+0B,GAAQqwG,GAIlB,SAASC,EAAW3oI,EAAOsD,EAAOF,EAAOK,EAAQmlI,EAAMr0H,GACrD,IAAIs0H,EAAa,EACbC,EAAY,EACZ7+F,EAAS,EAEb,GAAI11B,EAAQvU,EAAOsD,EAAMF,EAAQwlI,IAAS,EAAG,CAG3C,IAFAE,EAAYrlI,EAASmlI,EAEd3+F,EAAS6+F,GAAav0H,EAAQvU,EAAOsD,EAAMF,EAAQwlI,EAAO3+F,IAAW,GAC1E4+F,EAAa5+F,GACbA,EAAyB,GAAfA,GAAU,KAEN,IACZA,EAAS6+F,GAIT7+F,EAAS6+F,IACX7+F,EAAS6+F,GAGXD,GAAcD,EACd3+F,GAAU2+F,MACL,CAGL,IAFAE,EAAYF,EAAO,EAEZ3+F,EAAS6+F,GAAav0H,EAAQvU,EAAOsD,EAAMF,EAAQwlI,EAAO3+F,KAAY,GAC3E4+F,EAAa5+F,GACbA,EAAyB,GAAfA,GAAU,KAEN,IACZA,EAAS6+F,GAIT7+F,EAAS6+F,IACX7+F,EAAS6+F,GAGX,IAAIn1H,EAAMk1H,EACVA,EAAaD,EAAO3+F,EACpBA,EAAS2+F,EAAOj1H,EAKlB,IAFAk1H,IAEOA,EAAa5+F,GAAQ,CAC1B,IAAI9qC,EAAI0pI,GAAc5+F,EAAS4+F,IAAe,GAE1Ct0H,EAAQvU,EAAOsD,EAAMF,EAAQjE,IAAM,EACrC0pI,EAAa1pI,EAAI,EAEjB8qC,EAAS9qC,EAIb,OAAO8qC,EAGT,SAAS8+F,EAAY/oI,EAAOsD,EAAOF,EAAOK,EAAQmlI,EAAMr0H,GACtD,IAAIs0H,EAAa,EACbC,EAAY,EACZ7+F,EAAS,EAEb,GAAI11B,EAAQvU,EAAOsD,EAAMF,EAAQwlI,IAAS,EAAG,CAG3C,IAFAE,EAAYF,EAAO,EAEZ3+F,EAAS6+F,GAAav0H,EAAQvU,EAAOsD,EAAMF,EAAQwlI,EAAO3+F,IAAW,GAC1E4+F,EAAa5+F,GACbA,EAAyB,GAAfA,GAAU,KAEN,IACZA,EAAS6+F,GAIT7+F,EAAS6+F,IACX7+F,EAAS6+F,GAGX,IAAIn1H,EAAMk1H,EACVA,EAAaD,EAAO3+F,EACpBA,EAAS2+F,EAAOj1H,MACX,CAGL,IAFAm1H,EAAYrlI,EAASmlI,EAEd3+F,EAAS6+F,GAAav0H,EAAQvU,EAAOsD,EAAMF,EAAQwlI,EAAO3+F,KAAY,GAC3E4+F,EAAa5+F,GACbA,EAAyB,GAAfA,GAAU,KAEN,IACZA,EAAS6+F,GAIT7+F,EAAS6+F,IACX7+F,EAAS6+F,GAGXD,GAAcD,EACd3+F,GAAU2+F,EAKZ,IAFAC,IAEOA,EAAa5+F,GAAQ,CAC1B,IAAI9qC,EAAI0pI,GAAc5+F,EAAS4+F,IAAe,GAE1Ct0H,EAAQvU,EAAOsD,EAAMF,EAAQjE,IAAM,EACrC8qC,EAAS9qC,EAET0pI,EAAa1pI,EAAI,EAIrB,OAAO8qC,EAGT,SAAS++F,EAAQ1lI,EAAOiR,GACtB,IACI9Q,EAGAwlI,EACAC,EALAC,EAnNsB,EAyNtBC,EAAY,EAChB3lI,EAASH,EAAMG,OAMf,IAAIkQ,EAAM,GAuCV,SAAS01H,EAAQtqI,GACf,IAAIuqI,EAASL,EAASlqI,GAClBwqI,EAAUL,EAAUnqI,GACpByqI,EAASP,EAASlqI,EAAI,GACtB0qI,EAAUP,EAAUnqI,EAAI,GAC5BmqI,EAAUnqI,GAAKwqI,EAAUE,EAErB1qI,IAAMqqI,EAAY,IACpBH,EAASlqI,EAAI,GAAKkqI,EAASlqI,EAAI,GAC/BmqI,EAAUnqI,EAAI,GAAKmqI,EAAUnqI,EAAI,IAGnCqqI,IACA,IAAI50E,EAAIu0E,EAAYzlI,EAAMkmI,GAASlmI,EAAOgmI,EAAQC,EAAS,EAAGh1H,GAC9D+0H,GAAU90E,EAGM,KAFhB+0E,GAAW/0E,IAQK,KAFhBi1E,EAAUd,EAAWrlI,EAAMgmI,EAASC,EAAU,GAAIjmI,EAAOkmI,EAAQC,EAASA,EAAU,EAAGl1H,MAMnFg1H,GAAWE,EAOjB,SAAkBH,EAAQC,EAASC,EAAQC,GACzC,IAAI1qI,EAAI,EAER,IAAKA,EAAI,EAAGA,EAAIwqI,EAASxqI,IACvB4U,EAAI5U,GAAKuE,EAAMgmI,EAASvqI,GAG1B,IAAI2qI,EAAU,EACVC,EAAUH,EACV94G,EAAO44G,EAGX,GAFAhmI,EAAMotB,KAAUptB,EAAMqmI,KAEJ,KAAZF,EAAe,CACnB,IAAK1qI,EAAI,EAAGA,EAAIwqI,EAASxqI,IACvBuE,EAAMotB,EAAO3xB,GAAK4U,EAAI+1H,EAAU3qI,GAGlC,OAGF,GAAgB,IAAZwqI,EAAe,CACjB,IAAKxqI,EAAI,EAAGA,EAAI0qI,EAAS1qI,IACvBuE,EAAMotB,EAAO3xB,GAAKuE,EAAMqmI,EAAU5qI,GAIpC,YADAuE,EAAMotB,EAAO+4G,GAAW91H,EAAI+1H,IAI9B,IACIE,EACAC,EACAC,EAHAC,EAAaZ,EAKjB,OAAU,CACRS,EAAS,EACTC,EAAS,EACTC,GAAO,EAEP,GACE,GAAIv1H,EAAQjR,EAAMqmI,GAAUh2H,EAAI+1H,IAAY,GAK1C,GAJApmI,EAAMotB,KAAUptB,EAAMqmI,KACtBE,IACAD,EAAS,EAES,KAAZH,EAAe,CACnBK,GAAO,EACP,YAOF,GAJAxmI,EAAMotB,KAAU/c,EAAI+1H,KACpBE,IACAC,EAAS,EAES,KAAZN,EAAe,CACnBO,GAAO,EACP,cAGIF,EAASC,GAAUE,GAE7B,GAAID,EACF,MAGF,EAAG,CAGD,GAAe,KAFfF,EAASb,EAAYzlI,EAAMqmI,GAAUh2H,EAAK+1H,EAASH,EAAS,EAAGh1H,IAE7C,CAChB,IAAKxV,EAAI,EAAGA,EAAI6qI,EAAQ7qI,IACtBuE,EAAMotB,EAAO3xB,GAAK4U,EAAI+1H,EAAU3qI,GAOlC,GAJA2xB,GAAQk5G,EACRF,GAAWE,GACXL,GAAWK,IAEI,EAAG,CAChBE,GAAO,EACP,OAMJ,GAFAxmI,EAAMotB,KAAUptB,EAAMqmI,KAEJ,KAAZF,EAAe,CACnBK,GAAO,EACP,MAKF,GAAe,KAFfD,EAASlB,EAAWh1H,EAAI+1H,GAAUpmI,EAAOqmI,EAASF,EAAS,EAAGl1H,IAE5C,CAChB,IAAKxV,EAAI,EAAGA,EAAI8qI,EAAQ9qI,IACtBuE,EAAMotB,EAAO3xB,GAAKuE,EAAMqmI,EAAU5qI,GAOpC,GAJA2xB,GAAQm5G,EACRF,GAAWE,EAGK,KAFhBJ,GAAWI,GAEQ,CACjBC,GAAO,EACP,OAMJ,GAFAxmI,EAAMotB,KAAU/c,EAAI+1H,KAEF,KAAZH,EAAe,CACnBO,GAAO,EACP,MAGFC,UACOH,GA5Za,GA4ZsBC,GA5ZtB,GA8ZtB,GAAIC,EACF,MAGEC,EAAa,IACfA,EAAa,GAGfA,GAAc,EAMhB,IAHAZ,EAAYY,GACA,IAAMZ,EAAY,GAEd,IAAZI,EAAe,CACjB,IAAKxqI,EAAI,EAAGA,EAAI0qI,EAAS1qI,IACvBuE,EAAMotB,EAAO3xB,GAAKuE,EAAMqmI,EAAU5qI,GAGpCuE,EAAMotB,EAAO+4G,GAAW91H,EAAI+1H,OACvB,IAAgB,IAAZH,EACT,MAAM,IAAIzkI,MAEV,IAAK/F,EAAI,EAAGA,EAAIwqI,EAASxqI,IACvBuE,EAAMotB,EAAO3xB,GAAK4U,EAAI+1H,EAAU3qI,IAnJlCirI,CAASV,EAAQC,EAASC,EAAQC,GAwJtC,SAAmBH,EAAQC,EAASC,EAAQC,GAC1C,IAAI1qI,EAAI,EAER,IAAKA,EAAI,EAAGA,EAAI0qI,EAAS1qI,IACvB4U,EAAI5U,GAAKuE,EAAMkmI,EAASzqI,GAG1B,IAAI2qI,EAAUJ,EAASC,EAAU,EAC7BI,EAAUF,EAAU,EACpB/4G,EAAO84G,EAASC,EAAU,EAC1BQ,EAAe,EACfC,EAAa,EAGjB,GAFA5mI,EAAMotB,KAAUptB,EAAMomI,KAEJ,KAAZH,EAAe,CAGnB,IAFAU,EAAev5G,GAAQ+4G,EAAU,GAE5B1qI,EAAI,EAAGA,EAAI0qI,EAAS1qI,IACvBuE,EAAM2mI,EAAelrI,GAAK4U,EAAI5U,GAGhC,OAGF,GAAgB,IAAZ0qI,EAAe,CAMjB,IAHAS,GAFAx5G,GAAQ64G,GAEY,EACpBU,GAFAP,GAAWH,GAEc,EAEpBxqI,EAAIwqI,EAAU,EAAGxqI,GAAK,EAAGA,IAC5BuE,EAAM4mI,EAAanrI,GAAKuE,EAAM2mI,EAAelrI,GAI/C,YADAuE,EAAMotB,GAAQ/c,EAAIg2H,IAIpB,IAAII,EAAaZ,EAEjB,OAAa,CACX,IAAIS,EAAS,EACTC,EAAS,EACTC,GAAO,EAEX,GACE,GAAIv1H,EAAQZ,EAAIg2H,GAAUrmI,EAAMomI,IAAY,GAK1C,GAJApmI,EAAMotB,KAAUptB,EAAMomI,KACtBE,IACAC,EAAS,EAES,KAAZN,EAAe,CACnBO,GAAO,EACP,YAOF,GAJAxmI,EAAMotB,KAAU/c,EAAIg2H,KACpBE,IACAD,EAAS,EAES,KAAZH,EAAe,CACnBK,GAAO,EACP,cAGIF,EAASC,GAAUE,GAE7B,GAAID,EACF,MAGF,EAAG,CAGD,GAAe,KAFfF,EAASL,EAAUR,EAAYp1H,EAAIg2H,GAAUrmI,EAAOgmI,EAAQC,EAASA,EAAU,EAAGh1H,IAEhE,CAOhB,IAJAg1H,GAAWK,EACXM,GAHAx5G,GAAQk5G,GAGY,EACpBK,GAHAP,GAAWE,GAGc,EAEpB7qI,EAAI6qI,EAAS,EAAG7qI,GAAK,EAAGA,IAC3BuE,EAAM4mI,EAAanrI,GAAKuE,EAAM2mI,EAAelrI,GAG/C,GAAgB,IAAZwqI,EAAe,CACjBO,GAAO,EACP,OAMJ,GAFAxmI,EAAMotB,KAAU/c,EAAIg2H,KAEF,KAAZF,EAAe,CACnBK,GAAO,EACP,MAKF,GAAe,KAFfD,EAASJ,EAAUd,EAAWrlI,EAAMomI,GAAU/1H,EAAK,EAAG81H,EAASA,EAAU,EAAGl1H,IAE1D,CAOhB,IAJAk1H,GAAWI,EACXK,GAHAx5G,GAAQm5G,GAGY,EACpBI,GAHAN,GAAWE,GAGc,EAEpB9qI,EAAI,EAAGA,EAAI8qI,EAAQ9qI,IACtBuE,EAAM4mI,EAAanrI,GAAK4U,EAAIs2H,EAAelrI,GAG7C,GAAI0qI,GAAW,EAAG,CAChBK,GAAO,EACP,OAMJ,GAFAxmI,EAAMotB,KAAUptB,EAAMomI,KAEJ,KAAZH,EAAe,CACnBO,GAAO,EACP,MAGFC,UACOH,GAxjBa,GAwjBsBC,GAxjBtB,GA0jBtB,GAAIC,EACF,MAGEC,EAAa,IACfA,EAAa,GAGfA,GAAc,GAGhBZ,EAAYY,GAEI,IACdZ,EAAY,GAGd,GAAgB,IAAZM,EAAe,CAMjB,IAHAS,GAFAx5G,GAAQ64G,GAEY,EACpBU,GAFAP,GAAWH,GAEc,EAEpBxqI,EAAIwqI,EAAU,EAAGxqI,GAAK,EAAGA,IAC5BuE,EAAM4mI,EAAanrI,GAAKuE,EAAM2mI,EAAelrI,GAG/CuE,EAAMotB,GAAQ/c,EAAIg2H,OACb,IAAgB,IAAZF,EACT,MAAM,IAAI3kI,MAIV,IAFAmlI,EAAev5G,GAAQ+4G,EAAU,GAE5B1qI,EAAI,EAAGA,EAAI0qI,EAAS1qI,IACvBuE,EAAM2mI,EAAelrI,GAAK4U,EAAI5U,IAvThCorI,CAAUb,EAAQC,EAASC,EAAQC,IAnEvCR,EAAW,GACXC,EAAY,GA8XZpnI,KAAKsoI,UAtXL,WACE,KAAOhB,EAAY,GAAG,CACpB,IAAI5oI,EAAI4oI,EAAY,EAEpB,GAAI5oI,GAAK,GAAK0oI,EAAU1oI,EAAI,IAAM0oI,EAAU1oI,GAAK0oI,EAAU1oI,EAAI,IAAMA,GAAK,GAAK0oI,EAAU1oI,EAAI,IAAM0oI,EAAU1oI,GAAK0oI,EAAU1oI,EAAI,GAC1H0oI,EAAU1oI,EAAI,GAAK0oI,EAAU1oI,EAAI,IACnCA,SAEG,GAAI0oI,EAAU1oI,GAAK0oI,EAAU1oI,EAAI,GACtC,MAGF6oI,EAAQ7oI,KA2WZsB,KAAKuoI,eAvWL,WACE,KAAOjB,EAAY,GAAG,CACpB,IAAI5oI,EAAI4oI,EAAY,EAEhB5oI,EAAI,GAAK0oI,EAAU1oI,EAAI,GAAK0oI,EAAU1oI,EAAI,IAC5CA,IAGF6oI,EAAQ7oI,KAgWZsB,KAAKwoI,QA9XL,SAAiBC,EAAWC,GAC1BvB,EAASG,GAAamB,EACtBrB,EAAUE,GAAaoB,EACvBpB,GAAa,GA+ajBtqI,EAAOD,QAjDP,SAAcyE,EAAOiR,EAAS8zH,EAAIC,GAC3BD,IACHA,EAAK,GAGFC,IACHA,EAAKhlI,EAAMG,QAGb,IAAIqe,EAAYwmH,EAAKD,EAErB,KAAIvmH,EAAY,GAAhB,CAIA,IAAIonH,EAAY,EAEhB,GAAIpnH,EAxnBkB,GA0nBpB2mH,EAAoBnlI,EAAO+kI,EAAIC,EAAID,GADnCa,EAAYd,EAAiB9kI,EAAO+kI,EAAIC,EAAI/zH,IACOA,OAFrD,CAMA,IAAIk2H,EAAK,IAAIzB,EAAQ1lI,EAAOiR,GACxBm2H,EA3nBN,SAAsBlqI,GAGpB,IAFA,IAAIX,EAAI,EAEDW,GAPe,IAQpBX,GAAS,EAAJW,EACLA,IAAM,EAGR,OAAOA,EAAIX,EAmnBE8qI,CAAa7oH,GAE1B,EAAG,CAGD,IAFAonH,EAAYd,EAAiB9kI,EAAO+kI,EAAIC,EAAI/zH,IAE5Bm2H,EAAQ,CACtB,IAAIpuD,EAAQx6D,EAERw6D,EAAQouD,IACVpuD,EAAQouD,GAGVjC,EAAoBnlI,EAAO+kI,EAAIA,EAAK/rD,EAAO+rD,EAAKa,EAAW30H,GAC3D20H,EAAY5sD,EAGdmuD,EAAGH,QAAQjC,EAAIa,GACfuB,EAAGL,YACHtoH,GAAaonH,EACbb,GAAMa,QACe,IAAdpnH,GAET2oH,EAAGJ,qB,cCtpBL,IAAIO,EAAe,CACjB,WAAc,EACd,cAAiB,EACjB,cAAiB,EACjB,eAAkB,EAClB,kBAAqB,EACrB,kBAAqB,EACrB,kBAAqB,EACrB,qBAAwB,EACxB,qBAAwB,GAW1B9rI,EAAOD,QARP,SAAkByyC,EAAKkzF,EAAUxkI,GAC/B,OAAI4qI,EAAahqI,eAAe4jI,GACvBxkI,EAASsxC,EAAI6qD,IAGfn8F,I,cCjBT,IAAIwoB,EAA6B,oBAAXzjB,SAA2BA,OAAOm1B,uBAAyBn1B,OAAOm1B,sBAAsB35B,KAAKwE,SACnHA,OAAO8lI,yBAA2B9lI,OAAO8lI,wBAAwBtqI,KAAKwE,SAAWA,OAAO+lI,0BAA4B/lI,OAAOgmI,8BAAgC,SAAU5nI,GACnKue,WAAWve,EAAM,KAGnBrE,EAAOD,QAAU2pB,G,gBCLjB,IAAIg8E,EAAa,EAAQ,KAErBlrC,EAAe,EAAQ,IAIvBygD,EAFY,EAAQ,KAESA,iBAM7BkZ,EAAU,IAAI35D,EAEd04C,EAAW,aAEfA,EAASrxG,UAAY,CACnBgH,YAAaqqG,EAObv+D,aAAc,SAAUnC,EAAK3G,GAC3B,IAAIvkB,EAAQtkB,KAAKskB,MACjBukB,EAAOvkB,EAAMutG,UAAYhpF,EAEzB7oC,KAAKowC,SAAWsyD,EAAWG,mBAAmBv+E,GAAO,GACrD,IAAItf,EAAOsf,EAAMtf,KAIjB,GAFQ,MAARA,IAAiBA,GAAQ,IAEpB09F,EAAWQ,aAAal+F,EAAMsf,GAAnC,CAQAkrB,EAAI05F,OAEJ,IAAI11F,EAAYxzC,KAAKwzC,UAEhBlvB,EAAMwtG,cAOT9xH,KAAKmwC,aAAaX,GANdgE,IACF29E,EAAQ5pH,KAAKshC,GACbsoF,EAAQz/D,eAAele,GACvB3K,EAAOsoF,GAOXzuB,EAAWS,WAAWnjG,KAAMwvC,EAAKxqC,EAAMsf,EAAOukB,EAAMovE,GACpDzoE,EAAI25F,aAGR,IAAIziH,EAAWwpF,EACflzG,EAAOD,QAAU2pB,G,cC4BjB3pB,EAAQo0C,UAhFR,SAAmB3B,EAAK4B,GACtB,IAKIg4F,EACAC,EACAC,EACAC,EAkCAxuE,EA1CAxoB,EAAInB,EAAMmB,EACVC,EAAIpB,EAAMoB,EACVnhB,EAAQ+f,EAAM/f,MACdoC,EAAS2d,EAAM3d,OACf11B,EAAIqzC,EAAMrzC,EAMVszB,EAAQ,IACVkhB,GAAQlhB,EACRA,GAASA,GAGPoC,EAAS,IACX+e,GAAQ/e,EACRA,GAAUA,GAGK,iBAAN11B,EACTqrI,EAAKC,EAAKC,EAAKC,EAAKxrI,EACXA,aAAamD,MACL,IAAbnD,EAAE4D,OACJynI,EAAKC,EAAKC,EAAKC,EAAKxrI,EAAE,GACA,IAAbA,EAAE4D,QACXynI,EAAKE,EAAKvrI,EAAE,GACZsrI,EAAKE,EAAKxrI,EAAE,IACU,IAAbA,EAAE4D,QACXynI,EAAKrrI,EAAE,GACPsrI,EAAKE,EAAKxrI,EAAE,GACZurI,EAAKvrI,EAAE,KAEPqrI,EAAKrrI,EAAE,GACPsrI,EAAKtrI,EAAE,GACPurI,EAAKvrI,EAAE,GACPwrI,EAAKxrI,EAAE,IAGTqrI,EAAKC,EAAKC,EAAKC,EAAK,EAKlBH,EAAKC,EAAKh4G,IAEZ+3G,GAAM/3G,GADN0pC,EAAQquE,EAAKC,GAEbA,GAAMh4G,EAAQ0pC,GAGZuuE,EAAKC,EAAKl4G,IAEZi4G,GAAMj4G,GADN0pC,EAAQuuE,EAAKC,GAEbA,GAAMl4G,EAAQ0pC,GAGZsuE,EAAKC,EAAK71G,IAEZ41G,GAAM51G,GADNsnC,EAAQsuE,EAAKC,GAEbA,GAAM71G,EAASsnC,GAGbquE,EAAKG,EAAK91G,IAEZ21G,GAAM31G,GADNsnC,EAAQquE,EAAKG,GAEbA,GAAM91G,EAASsnC,GAGjBvrB,EAAI2sD,OAAO5pD,EAAI62F,EAAI52F,GACnBhD,EAAI6sD,OAAO9pD,EAAIlhB,EAAQg4G,EAAI72F,GACpB,IAAP62F,GAAY75F,EAAIutD,IAAIxqD,EAAIlhB,EAAQg4G,EAAI72F,EAAI62F,EAAIA,GAAKvhI,KAAK+vB,GAAK,EAAG,GAC9D2X,EAAI6sD,OAAO9pD,EAAIlhB,EAAOmhB,EAAI/e,EAAS61G,GAC5B,IAAPA,GAAY95F,EAAIutD,IAAIxqD,EAAIlhB,EAAQi4G,EAAI92F,EAAI/e,EAAS61G,EAAIA,EAAI,EAAGxhI,KAAK+vB,GAAK,GACtE2X,EAAI6sD,OAAO9pD,EAAIg3F,EAAI/2F,EAAI/e,GAChB,IAAP81G,GAAY/5F,EAAIutD,IAAIxqD,EAAIg3F,EAAI/2F,EAAI/e,EAAS81G,EAAIA,EAAIzhI,KAAK+vB,GAAK,EAAG/vB,KAAK+vB,IACnE2X,EAAI6sD,OAAO9pD,EAAGC,EAAI42F,GACX,IAAPA,GAAY55F,EAAIutD,IAAIxqD,EAAI62F,EAAI52F,EAAI42F,EAAIA,EAAIthI,KAAK+vB,GAAc,IAAV/vB,KAAK+vB,M,gBCtFxD,IAAIoX,EAAO,EAAQ,IAEfL,EAAY,EAAQ,KAEpB46F,EAAgB,EAAQ,KAOxBruC,EAAWrzF,KAAK2rC,KAChBynD,EAAUpzF,KAAK0tD,IACfylC,EAAUnzF,KAAK8vB,IACfC,EAAK/vB,KAAK+vB,GAEV4xG,EAAO,SAAUrtH,GACnB,OAAOtU,KAAK2rC,KAAKr3B,EAAE,GAAKA,EAAE,GAAKA,EAAE,GAAKA,EAAE,KAGtCstH,EAAS,SAAUC,EAAGvtH,GACxB,OAAQutH,EAAE,GAAKvtH,EAAE,GAAKutH,EAAE,GAAKvtH,EAAE,KAAOqtH,EAAKE,GAAKF,EAAKrtH,KAGnDwtH,EAAS,SAAUD,EAAGvtH,GACxB,OAAQutH,EAAE,GAAKvtH,EAAE,GAAKutH,EAAE,GAAKvtH,EAAE,IAAM,EAAI,GAAKtU,KAAKs5F,KAAKsoC,EAAOC,EAAGvtH,KAGpE,SAASytH,EAAWhzE,EAAIN,EAAIO,EAAIC,EAAI+yE,EAAIxqC,EAAIP,EAAIC,EAAI+qC,EAAQ/rC,EAAK9uD,GAC/D,IAAImwD,EAAM0qC,GAAUlyG,EAAK,KACrBmyG,EAAK/uC,EAAQoE,IAAQxoC,EAAKC,GAAM,EAAMokC,EAAQmE,IAAQ9oC,EAAKQ,GAAM,EACjEkzE,GAAM,EAAI/uC,EAAQmE,IAAQxoC,EAAKC,GAAM,EAAMmkC,EAAQoE,IAAQ9oC,EAAKQ,GAAM,EACtEmzE,EAASF,EAAKA,GAAMjrC,EAAKA,GAAMkrC,EAAKA,GAAMjrC,EAAKA,GAE/CkrC,EAAS,IACXnrC,GAAM5D,EAAS+uC,GACflrC,GAAM7D,EAAS+uC,IAGjB,IAAIl1B,GAAK80B,IAAOxqC,GAAM,EAAI,GAAKnE,GAAU4D,EAAKA,GAAMC,EAAKA,GAAMD,EAAKA,GAAMkrC,EAAKA,GAAMjrC,EAAKA,GAAMgrC,EAAKA,KAAQjrC,EAAKA,GAAMkrC,EAAKA,GAAMjrC,EAAKA,GAAMgrC,EAAKA,MAAS,EACxJG,EAAMn1B,EAAIjW,EAAKkrC,EAAKjrC,EACpBorC,EAAMp1B,GAAKhW,EAAKgrC,EAAKjrC,EACrB/B,GAAMnmC,EAAKC,GAAM,EAAMmkC,EAAQoE,GAAO8qC,EAAMjvC,EAAQmE,GAAO+qC,EAC3DntC,GAAM1mC,EAAKQ,GAAM,EAAMmkC,EAAQmE,GAAO8qC,EAAMlvC,EAAQoE,GAAO+qC,EAC3Dl2E,EAAQ01E,EAAO,CAAC,EAAG,GAAI,EAAEI,EAAKG,GAAOprC,GAAKkrC,EAAKG,GAAOprC,IACtD2qC,EAAI,EAAEK,EAAKG,GAAOprC,GAAKkrC,EAAKG,GAAOprC,GACnC5iF,EAAI,GAAG,EAAI4tH,EAAKG,GAAOprC,IAAM,EAAIkrC,EAAKG,GAAOprC,GAC7CI,EAASwqC,EAAOD,EAAGvtH,GAEnBstH,EAAOC,EAAGvtH,KAAO,IACnBgjF,EAASvnE,GAGP6xG,EAAOC,EAAGvtH,IAAM,IAClBgjF,EAAS,GAGA,IAAPE,GAAYF,EAAS,IACvBA,GAAkB,EAAIvnE,GAGb,IAAPynE,GAAYF,EAAS,IACvBA,GAAkB,EAAIvnE,GAGxBqX,EAAKktD,QAAQ4B,EAAKhB,EAAIC,EAAI8B,EAAIC,EAAI9qC,EAAOkrC,EAAQC,EAAKC,GAGxD,IAAI+qC,EAAa,mCAObC,EAAY,sCAiRhB,SAASC,EAAkBp8F,EAAK/U,GAC9B,IAAIoxG,EAhRN,SAAmCjoH,GACjC,IAAKA,EACH,OAAO,IAAIqsB,EA8Bb,IAdA,IAII67F,EAJAC,EAAM,EACNC,EAAM,EACNC,EAAWF,EACXG,EAAWF,EAEXz7F,EAAO,IAAIN,EACX2rD,EAAM3rD,EAAU2rD,IAMhBuwC,EAAUvoH,EAAKtU,MAAMo8H,GAEhBntI,EAAI,EAAGA,EAAI4tI,EAAQnpI,OAAQzE,IAAK,CAevC,IAdA,IAEI8gG,EAFA+sC,EAAUD,EAAQ5tI,GAClB+2H,EAAS8W,EAAQzpE,OAAO,GAUxBviE,EAAIgsI,EAAQ98H,MAAMq8H,IAAc,GAChCU,EAAOjsI,EAAE4C,OAEJ1E,EAAI,EAAGA,EAAI+tI,EAAM/tI,IACxB8B,EAAE9B,GAAK41B,WAAW9zB,EAAE9B,IAKtB,IAFA,IAAIwrB,EAAM,EAEHA,EAAMuiH,GAAM,CACjB,IAAIC,EACAC,EACAnsC,EACAC,EACAK,EACAyqC,EACAxqC,EACAzoC,EAAK6zE,EACLn0E,EAAKo0E,EAET,OAAQ1W,GACN,IAAK,IACHyW,GAAO3rI,EAAE0pB,KACTkiH,GAAO5rI,EAAE0pB,KACTu1E,EAAMzD,EAAIE,EACVvrD,EAAKktD,QAAQ4B,EAAK0sC,EAAKC,GACvB,MAEF,IAAK,IACHD,EAAM3rI,EAAE0pB,KACRkiH,EAAM5rI,EAAE0pB,KACRu1E,EAAMzD,EAAIE,EACVvrD,EAAKktD,QAAQ4B,EAAK0sC,EAAKC,GACvB,MAEF,IAAK,IACHD,GAAO3rI,EAAE0pB,KACTkiH,GAAO5rI,EAAE0pB,KACTu1E,EAAMzD,EAAIC,EACVtrD,EAAKktD,QAAQ4B,EAAK0sC,EAAKC,GACvBC,EAAWF,EACXG,EAAWF,EACX1W,EAAS,IACT,MAEF,IAAK,IACHyW,EAAM3rI,EAAE0pB,KACRkiH,EAAM5rI,EAAE0pB,KACRu1E,EAAMzD,EAAIC,EACVtrD,EAAKktD,QAAQ4B,EAAK0sC,EAAKC,GACvBC,EAAWF,EACXG,EAAWF,EACX1W,EAAS,IACT,MAEF,IAAK,IACHyW,GAAO3rI,EAAE0pB,KACTu1E,EAAMzD,EAAIE,EACVvrD,EAAKktD,QAAQ4B,EAAK0sC,EAAKC,GACvB,MAEF,IAAK,IACHD,EAAM3rI,EAAE0pB,KACRu1E,EAAMzD,EAAIE,EACVvrD,EAAKktD,QAAQ4B,EAAK0sC,EAAKC,GACvB,MAEF,IAAK,IACHA,GAAO5rI,EAAE0pB,KACTu1E,EAAMzD,EAAIE,EACVvrD,EAAKktD,QAAQ4B,EAAK0sC,EAAKC,GACvB,MAEF,IAAK,IACHA,EAAM5rI,EAAE0pB,KACRu1E,EAAMzD,EAAIE,EACVvrD,EAAKktD,QAAQ4B,EAAK0sC,EAAKC,GACvB,MAEF,IAAK,IACH3sC,EAAMzD,EAAIG,EACVxrD,EAAKktD,QAAQ4B,EAAKj/F,EAAE0pB,KAAQ1pB,EAAE0pB,KAAQ1pB,EAAE0pB,KAAQ1pB,EAAE0pB,KAAQ1pB,EAAE0pB,KAAQ1pB,EAAE0pB,MACtEiiH,EAAM3rI,EAAE0pB,EAAM,GACdkiH,EAAM5rI,EAAE0pB,EAAM,GACd,MAEF,IAAK,IACHu1E,EAAMzD,EAAIG,EACVxrD,EAAKktD,QAAQ4B,EAAKj/F,EAAE0pB,KAASiiH,EAAK3rI,EAAE0pB,KAASkiH,EAAK5rI,EAAE0pB,KAASiiH,EAAK3rI,EAAE0pB,KAASkiH,EAAK5rI,EAAE0pB,KAASiiH,EAAK3rI,EAAE0pB,KAASkiH,GAC7GD,GAAO3rI,EAAE0pB,EAAM,GACfkiH,GAAO5rI,EAAE0pB,EAAM,GACf,MAEF,IAAK,IACHwiH,EAASP,EACTQ,EAASP,EACT,IAAI1jI,EAAMioC,EAAKjoC,MACX2rC,EAAW1D,EAAK3sB,KAEhBkoH,IAAYlwC,EAAIG,IAClBuwC,GAAUP,EAAM93F,EAAS3rC,EAAM,GAC/BikI,GAAUP,EAAM/3F,EAAS3rC,EAAM,IAGjC+2F,EAAMzD,EAAIG,EACV7jC,EAAK93D,EAAE0pB,KACP8tC,EAAKx3D,EAAE0pB,KACPiiH,EAAM3rI,EAAE0pB,KACRkiH,EAAM5rI,EAAE0pB,KACRymB,EAAKktD,QAAQ4B,EAAKitC,EAAQC,EAAQr0E,EAAIN,EAAIm0E,EAAKC,GAC/C,MAEF,IAAK,IACHM,EAASP,EACTQ,EAASP,EACL1jI,EAAMioC,EAAKjoC,MACX2rC,EAAW1D,EAAK3sB,KAEhBkoH,IAAYlwC,EAAIG,IAClBuwC,GAAUP,EAAM93F,EAAS3rC,EAAM,GAC/BikI,GAAUP,EAAM/3F,EAAS3rC,EAAM,IAGjC+2F,EAAMzD,EAAIG,EACV7jC,EAAK6zE,EAAM3rI,EAAE0pB,KACb8tC,EAAKo0E,EAAM5rI,EAAE0pB,KACbiiH,GAAO3rI,EAAE0pB,KACTkiH,GAAO5rI,EAAE0pB,KACTymB,EAAKktD,QAAQ4B,EAAKitC,EAAQC,EAAQr0E,EAAIN,EAAIm0E,EAAKC,GAC/C,MAEF,IAAK,IACH9zE,EAAK93D,EAAE0pB,KACP8tC,EAAKx3D,EAAE0pB,KACPiiH,EAAM3rI,EAAE0pB,KACRkiH,EAAM5rI,EAAE0pB,KACRu1E,EAAMzD,EAAII,EACVzrD,EAAKktD,QAAQ4B,EAAKnnC,EAAIN,EAAIm0E,EAAKC,GAC/B,MAEF,IAAK,IACH9zE,EAAK93D,EAAE0pB,KAASiiH,EAChBn0E,EAAKx3D,EAAE0pB,KAASkiH,EAChBD,GAAO3rI,EAAE0pB,KACTkiH,GAAO5rI,EAAE0pB,KACTu1E,EAAMzD,EAAII,EACVzrD,EAAKktD,QAAQ4B,EAAKnnC,EAAIN,EAAIm0E,EAAKC,GAC/B,MAEF,IAAK,IACHM,EAASP,EACTQ,EAASP,EACL1jI,EAAMioC,EAAKjoC,MACX2rC,EAAW1D,EAAK3sB,KAEhBkoH,IAAYlwC,EAAII,IAClBswC,GAAUP,EAAM93F,EAAS3rC,EAAM,GAC/BikI,GAAUP,EAAM/3F,EAAS3rC,EAAM,IAGjCyjI,EAAM3rI,EAAE0pB,KACRkiH,EAAM5rI,EAAE0pB,KACRu1E,EAAMzD,EAAII,EACVzrD,EAAKktD,QAAQ4B,EAAKitC,EAAQC,EAAQR,EAAKC,GACvC,MAEF,IAAK,IACHM,EAASP,EACTQ,EAASP,EACL1jI,EAAMioC,EAAKjoC,MACX2rC,EAAW1D,EAAK3sB,KAEhBkoH,IAAYlwC,EAAII,IAClBswC,GAAUP,EAAM93F,EAAS3rC,EAAM,GAC/BikI,GAAUP,EAAM/3F,EAAS3rC,EAAM,IAGjCyjI,GAAO3rI,EAAE0pB,KACTkiH,GAAO5rI,EAAE0pB,KACTu1E,EAAMzD,EAAII,EACVzrD,EAAKktD,QAAQ4B,EAAKitC,EAAQC,EAAQR,EAAKC,GACvC,MAEF,IAAK,IACH5rC,EAAKhgG,EAAE0pB,KACPu2E,EAAKjgG,EAAE0pB,KACP42E,EAAMtgG,EAAE0pB,KACRqhH,EAAK/qI,EAAE0pB,KACP62E,EAAKvgG,EAAE0pB,KAKPohH,EAJAhzE,EAAK6zE,EAAKn0E,EAAKo0E,EACfD,EAAM3rI,EAAE0pB,KACRkiH,EAAM5rI,EAAE0pB,KAEqBqhH,EAAIxqC,EAAIP,EAAIC,EAAIK,EAD7CrB,EAAMzD,EAAIK,EAC6C1rD,GACvD,MAEF,IAAK,IACH6vD,EAAKhgG,EAAE0pB,KACPu2E,EAAKjgG,EAAE0pB,KACP42E,EAAMtgG,EAAE0pB,KACRqhH,EAAK/qI,EAAE0pB,KACP62E,EAAKvgG,EAAE0pB,KAKPohH,EAJAhzE,EAAK6zE,EAAKn0E,EAAKo0E,EACfD,GAAO3rI,EAAE0pB,KACTkiH,GAAO5rI,EAAE0pB,KAEoBqhH,EAAIxqC,EAAIP,EAAIC,EAAIK,EAD7CrB,EAAMzD,EAAIK,EAC6C1rD,IAK9C,MAAX+kF,GAA6B,MAAXA,IACpBj2B,EAAMzD,EAAIM,EACV3rD,EAAKktD,QAAQ4B,GAEb0sC,EAAME,EACND,EAAME,GAGRJ,EAAUzsC,EAIZ,OADA9uD,EAAKwuD,WACExuD,EAKSi8F,CAA0Bh9F,GAuB1C,OAtBA/U,EAAOA,GAAQ,IAEV+X,UAAY,SAAUjC,GACzB,GAAIA,EAAK0uD,QAAS,CAChB1uD,EAAK0uD,QAAQ4sC,EAAUjoH,OAEnBitB,EAAMN,EAAKnC,eAGbmC,EAAKmC,YAAY7B,OAEd,CACL,IAAIA,EAAMN,EACVs7F,EAAUn5F,YAAY7B,KAI1BpW,EAAKs4B,eAAiB,SAAUr0D,GAC9BmsI,EAAcgB,EAAWntI,GACzB2C,KAAK8yC,OAAM,IAGN1Z,EAiETr8B,EAAQquI,iBAxDR,SAA0Bj9F,EAAK/U,GAC7B,OAAO,IAAI6V,EAAKs7F,EAAkBp8F,EAAK/U,KAwDzCr8B,EAAQsuI,iBA/CR,SAA0Bl9F,EAAK/U,GAC7B,OAAO6V,EAAK3nC,OAAOijI,EAAkBp8F,EAAK/U,KA+C5Cr8B,EAAQuuI,UArCR,SAAmBC,EAASnyG,GAI1B,IAHA,IAAIoyG,EAAW,GACXvkI,EAAMskI,EAAQ5pI,OAET1E,EAAI,EAAGA,EAAIgK,EAAKhK,IAAK,CAC5B,IAAIwuI,EAASF,EAAQtuI,GAEhBwuI,EAAOv8F,MACVu8F,EAAO35F,kBAGL25F,EAAOt8F,aACTs8F,EAAOt6F,UAAUs6F,EAAOv8F,KAAMu8F,EAAOr6F,OAAO,GAG9Co6F,EAAShpI,KAAKipI,EAAOv8F,MAGvB,IAAIw8F,EAAa,IAAIz8F,EAAK7V,GAc1B,OAZAsyG,EAAW55F,kBAEX45F,EAAWv6F,UAAY,SAAUjC,GAC/BA,EAAK2uD,WAAW2tC,GAEhB,IAAIh8F,EAAMN,EAAKnC,aAEXyC,GACFN,EAAKmC,YAAY7B,IAIdk8F,I,cClbT,IAAIvY,EAAgB,EAAVrrH,KAAK+vB,GAYf96B,EAAQ4uI,gBAVR,SAAyBj3E,GAOvB,OANAA,GAASy+D,GAEG,IACVz+D,GAASy+D,GAGJz+D,I,gBCTT,IAMIhuC,EANO,EAAQ,IAMCpf,OAAO,CACzB/F,KAAM,SACN6vC,MAAO,CACL4rD,GAAI,EACJC,GAAI,EACJl/F,EAAG,GAELozC,UAAW,SAAU3B,EAAK4B,EAAOS,GAG3BA,GACFrC,EAAI2sD,OAAO/qD,EAAM4rD,GAAK5rD,EAAMrzC,EAAGqzC,EAAM6rD,IAUvCztD,EAAIutD,IAAI3rD,EAAM4rD,GAAI5rD,EAAM6rD,GAAI7rD,EAAMrzC,EAAG,EAAa,EAAV+J,KAAK+vB,IAAQ,MAIzD76B,EAAOD,QAAU2pB,G,gBC/BjB,IAAIuoB,EAAO,EAAQ,IAEfkpE,EAAkB,EAAQ,KAI1ByzB,EAFoB,EAAQ,KAEaA,qBAOzCC,EAA8B,GAE9BnlH,EAAWuoB,EAAK3nC,OAAO,CACzB/F,KAAM,OACN6vC,MAAO,CAMLrzC,EAAG,EACHw0C,EAAG,EACHC,EAAG,EACHnhB,MAAO,EACPoC,OAAQ,GAEV0d,UAAW,SAAU3B,EAAK4B,GACxB,IAAImB,EACAC,EACAnhB,EACAoC,EAEAzzB,KAAKsvC,kBACPs8F,EAAqBC,EAA6Bz6F,EAAOpxC,KAAKskB,OAC9DiuB,EAAIs5F,EAA4Bt5F,EAChCC,EAAIq5F,EAA4Br5F,EAChCnhB,EAAQw6G,EAA4Bx6G,MACpCoC,EAASo4G,EAA4Bp4G,OACrCo4G,EAA4B9tI,EAAIqzC,EAAMrzC,EACtCqzC,EAAQy6F,IAERt5F,EAAInB,EAAMmB,EACVC,EAAIpB,EAAMoB,EACVnhB,EAAQ+f,EAAM/f,MACdoC,EAAS2d,EAAM3d,QAGZ2d,EAAMrzC,EAGTo6G,EAAgBhnE,UAAU3B,EAAK4B,GAF/B5B,EAAI3G,KAAK0J,EAAGC,EAAGnhB,EAAOoC,GAKxB+b,EAAI+tD,eAKRvgG,EAAOD,QAAU2pB,G,cCzDjB,IAAIkM,EAAQ9qB,KAAK8qB,MA+FjB,SAAS0c,EAAiB9c,EAAU2f,EAAW25F,GAC7C,IAAK35F,EACH,OAAO3f,EAKT,IAAIu5G,EAAkBn5G,EAAiB,EAAXJ,GAC5B,OAAQu5G,EAAkBn5G,EAAMuf,IAAc,GAAM,EAAI45F,EAAkB,GAAKA,GAAmBD,EAAqB,GAAK,IAAM,EAGpI/uI,EAAQivI,qBAzFR,SAA8BC,EAAaC,EAAY5nH,GACrD,GAAK4nH,EAAL,CAIA,IAAIr1E,EAAKq1E,EAAWr1E,GAChBC,EAAKo1E,EAAWp1E,GAChBP,EAAK21E,EAAW31E,GAChBQ,EAAKm1E,EAAWn1E,GACpBk1E,EAAYp1E,GAAKA,EACjBo1E,EAAYn1E,GAAKA,EACjBm1E,EAAY11E,GAAKA,EACjB01E,EAAYl1E,GAAKA,EACjB,IAAI5kB,EAAY7tB,GAASA,EAAM6tB,UAE1BA,IAIDvf,EAAW,EAALikC,KAAYjkC,EAAW,EAALkkC,KAC1Bm1E,EAAYp1E,GAAKo1E,EAAYn1E,GAAKxnB,EAAiBunB,EAAI1kB,GAAW,IAGhEvf,EAAW,EAAL2jC,KAAY3jC,EAAW,EAALmkC,KAC1Bk1E,EAAY11E,GAAK01E,EAAYl1E,GAAKznB,EAAiBinB,EAAIpkB,GAAW,OAkEtEp1C,EAAQ6uI,qBA9CR,SAA8BK,EAAaC,EAAY5nH,GACrD,GAAK4nH,EAAL,CAIA,IAAI3jC,EAAU2jC,EAAW35F,EACrBi2D,EAAU0jC,EAAW15F,EACrB25F,EAAcD,EAAW76G,MACzB+6G,EAAeF,EAAWz4G,OAC9Bw4G,EAAY15F,EAAIg2D,EAChB0jC,EAAYz5F,EAAIg2D,EAChByjC,EAAY56G,MAAQ86G,EACpBF,EAAYx4G,OAAS24G,EACrB,IAAIj6F,EAAY7tB,GAASA,EAAM6tB,UAE1BA,IAIL85F,EAAY15F,EAAIjD,EAAiBi5D,EAASp2D,GAAW,GACrD85F,EAAYz5F,EAAIlD,EAAiBk5D,EAASr2D,GAAW,GACrD85F,EAAY56G,MAAQvpB,KAAKitB,IAAIua,EAAiBi5D,EAAU4jC,EAAah6F,GAAW,GAAS85F,EAAY15F,EAAmB,IAAhB45F,EAAoB,EAAI,GAChIF,EAAYx4G,OAAS3rB,KAAKitB,IAAIua,EAAiBk5D,EAAU4jC,EAAcj6F,GAAW,GAAS85F,EAAYz5F,EAAoB,IAAjB45F,EAAqB,EAAI,MAyBrIrvI,EAAQuyC,iBAAmBA,G,gBChH3B,IAMI5oB,EANO,EAAQ,IAMCpf,OAAO,CACzB/F,KAAM,UACN6vC,MAAO,CACL4rD,GAAI,EACJC,GAAI,EACJ8B,GAAI,EACJC,GAAI,GAEN7tD,UAAW,SAAU3B,EAAK4B,GACxB,IAAIshB,EAAI,SACJngB,EAAInB,EAAM4rD,GACVxqD,EAAIpB,EAAM6rD,GACVjyF,EAAIomC,EAAM2tD,GACV9zF,EAAImmC,EAAM4tD,GACVsH,EAAKt7F,EAAI0nD,EAET6zC,EAAKt7F,EAAIynD,EAGbljB,EAAI2sD,OAAO5pD,EAAIvnC,EAAGwnC,GAClBhD,EAAIitD,cAAclqD,EAAIvnC,EAAGwnC,EAAI+zD,EAAIh0D,EAAI+zD,EAAI9zD,EAAIvnC,EAAGsnC,EAAGC,EAAIvnC,GACvDukC,EAAIitD,cAAclqD,EAAI+zD,EAAI9zD,EAAIvnC,EAAGsnC,EAAIvnC,EAAGwnC,EAAI+zD,EAAIh0D,EAAIvnC,EAAGwnC,GACvDhD,EAAIitD,cAAclqD,EAAIvnC,EAAGwnC,EAAI+zD,EAAIh0D,EAAI+zD,EAAI9zD,EAAIvnC,EAAGsnC,EAAGC,EAAIvnC,GACvDukC,EAAIitD,cAAclqD,EAAI+zD,EAAI9zD,EAAIvnC,EAAGsnC,EAAIvnC,EAAGwnC,EAAI+zD,EAAIh0D,EAAIvnC,EAAGwnC,GACvDhD,EAAI+tD,eAIRvgG,EAAOD,QAAU2pB,G,gBClCjB,IAAIuoB,EAAO,EAAQ,IAIf+8F,EAFoB,EAAQ,KAEaA,qBAOzCH,EAA8B,GAE9BnlH,EAAWuoB,EAAK3nC,OAAO,CACzB/F,KAAM,OACN6vC,MAAO,CAELylB,GAAI,EACJN,GAAI,EAEJO,GAAI,EACJC,GAAI,EACJ7/B,QAAS,GAEX5S,MAAO,CACLurB,OAAQ,OACRD,KAAM,MAERuB,UAAW,SAAU3B,EAAK4B,GACxB,IAAIylB,EACAN,EACAO,EACAC,EAEA/2D,KAAKsvC,kBACP08F,EAAqBH,EAA6Bz6F,EAAOpxC,KAAKskB,OAC9DuyC,EAAKg1E,EAA4Bh1E,GACjCN,EAAKs1E,EAA4Bt1E,GACjCO,EAAK+0E,EAA4B/0E,GACjCC,EAAK80E,EAA4B90E,KAEjCF,EAAKzlB,EAAMylB,GACXN,EAAKnlB,EAAMmlB,GACXO,EAAK1lB,EAAM0lB,GACXC,EAAK3lB,EAAM2lB,IAGb,IAAI7/B,EAAUka,EAAMla,QAEJ,IAAZA,IAIJsY,EAAI2sD,OAAOtlC,EAAIN,GAEXr/B,EAAU,IACZ4/B,EAAKD,GAAM,EAAI3/B,GAAW4/B,EAAK5/B,EAC/B6/B,EAAKR,GAAM,EAAIr/B,GAAW6/B,EAAK7/B,GAGjCsY,EAAI6sD,OAAOvlC,EAAIC,KAQjB4E,QAAS,SAAU58D,GACjB,IAAIqyC,EAAQpxC,KAAKoxC,MACjB,MAAO,CAACA,EAAMylB,IAAM,EAAI93D,GAAKqyC,EAAM0lB,GAAK/3D,EAAGqyC,EAAMmlB,IAAM,EAAIx3D,GAAKqyC,EAAM2lB,GAAKh4D,MAI/E/B,EAAOD,QAAU2pB,G,gBC1EjB,IAAIuoB,EAAO,EAAQ,IAEfo9F,EAAa,EAAQ,KAMrB3lH,EAAWuoB,EAAK3nC,OAAO,CACzB/F,KAAM,UACN6vC,MAAO,CACL0iB,OAAQ,KACRw4E,QAAQ,EACRC,iBAAkB,MAEpBp7F,UAAW,SAAU3B,EAAK4B,GACxBi7F,EAAWl7F,UAAU3B,EAAK4B,GAAO,MAIrCp0C,EAAOD,QAAU2pB,G,gBCpBjB,IAAI8lH,EAAe,EAAQ,KAEvBC,EAAe,EAAQ,KAkC3B1vI,EAAQo0C,UAhCR,SAAmB3B,EAAK4B,EAAOmsD,GAC7B,IAAIzpC,EAAS1iB,EAAM0iB,OACfw4E,EAASl7F,EAAMk7F,OAEnB,GAAIx4E,GAAUA,EAAOnyD,QAAU,EAAG,CAChC,GAAI2qI,GAAqB,WAAXA,EAAqB,CACjC,IAAIhmB,EAAgBmmB,EAAa34E,EAAQw4E,EAAQ/uC,EAAWnsD,EAAMm7F,kBAClE/8F,EAAI2sD,OAAOroC,EAAO,GAAG,GAAIA,EAAO,GAAG,IAGnC,IAFA,IAAI7sD,EAAM6sD,EAAOnyD,OAER1E,EAAI,EAAGA,GAAKsgG,EAAYt2F,EAAMA,EAAM,GAAIhK,IAAK,CACpD,IAAIyvI,EAAMpmB,EAAkB,EAAJrpH,GACpB0vI,EAAMrmB,EAAkB,EAAJrpH,EAAQ,GAC5B8B,EAAI+0D,GAAQ72D,EAAI,GAAKgK,GACzBuoC,EAAIitD,cAAciwC,EAAI,GAAIA,EAAI,GAAIC,EAAI,GAAIA,EAAI,GAAI5tI,EAAE,GAAIA,EAAE,SAEvD,CACU,WAAXutI,IACFx4E,EAAS04E,EAAa14E,EAAQypC,IAGhC/tD,EAAI2sD,OAAOroC,EAAO,GAAG,GAAIA,EAAO,GAAG,IAE1B72D,EAAI,EAAb,IAAK,IAAWC,EAAI42D,EAAOnyD,OAAQ1E,EAAIC,EAAGD,IACxCuyC,EAAI6sD,OAAOvoC,EAAO72D,GAAG,GAAI62D,EAAO72D,GAAG,IAIvCsgG,GAAa/tD,EAAI+tD,e,gBChCrB,IAAItuD,EAAO,EAAQ,IAEfo9F,EAAa,EAAQ,KAKrB3lH,EAAWuoB,EAAK3nC,OAAO,CACzB/F,KAAM,WACN6vC,MAAO,CACL0iB,OAAQ,KACRw4E,QAAQ,EACRC,iBAAkB,MAEpBjoH,MAAO,CACLurB,OAAQ,OACRD,KAAM,MAERuB,UAAW,SAAU3B,EAAK4B,GACxBi7F,EAAWl7F,UAAU3B,EAAK4B,GAAO,MAIrCp0C,EAAOD,QAAU2pB,G,gBCvBjB,IAAIioB,EAAS,EAAQ,IAEjBqkF,EAAW,EAAQ,KAWnB4Z,EAAiB,SAAUr6F,EAAGC,EAAGskB,EAAIC,EAAIhnB,EAAY88F,GAIvD7sI,KAAKuyC,EAAS,MAALA,EAAY,EAAIA,EACzBvyC,KAAKwyC,EAAS,MAALA,EAAY,EAAIA,EACzBxyC,KAAK82D,GAAW,MAANA,EAAa,EAAIA,EAC3B92D,KAAK+2D,GAAW,MAANA,EAAa,EAAIA,EAE3B/2D,KAAKuB,KAAO,SAEZvB,KAAK4C,OAASiqI,IAAe,EAC7B7Z,EAAS51H,KAAK4C,KAAM+vC,IAGtB68F,EAAe/tI,UAAY,CACzBgH,YAAa+mI,GAEfj+F,EAAO3B,SAAS4/F,EAAgB5Z,GAChC,IAAItsG,EAAWkmH,EACf5vI,EAAOD,QAAU2pB,G,gBCjCjB,IAYIomH,EAZA9nE,EAAM,EAAQ,IAEd+nE,EAAM,gCACNjkG,EAAwB,oBAAX7lC,OAAyB,KAAOA,OAC7C+pI,GAAY,EACZpoI,EAAMkkC,GAAOA,EAAIhmC,SASrB,GAAI8B,IAAQogE,EAAI7L,gBACd,KACGv0D,EAAI6kB,WAAWwjH,OAASroI,EAAI6kB,WAAWnpB,IAAI,QAASysI,GAErDD,EAAe,SAAUrnD,GACvB,OAAO7gF,EAAIG,cAAc,UAAY0gF,EAAU,oBAEjD,MAAO53E,GACPi/H,EAAe,SAAUrnD,GACvB,OAAO7gF,EAAIG,cAAc,IAAM0gF,EAAU,WAAasnD,EAAM,qBAsBlEhwI,EAAQ6H,IAAMA,EACd7H,EAAQmwI,WAvCR,SAAoBznD,GAClB,OAAOqnD,EAAarnD,IAuCtB1oF,EAAQowI,QAlBR,WACE,IAAIH,GAAcpoI,EAAlB,CAIAooI,GAAY,EACZ,IAAII,EAAcxoI,EAAIwoI,YAElBA,EAAYzrI,OAAS,GACvBiD,EAAIyoI,mBAAmBC,QAAQ,SAAU,8BAGzCF,EAAY,GAAGE,QAAQ,SAAU,iC,soBCzCrC;;;;;;;GAWQ,EAAO,CAAC,YAAkB,0BAAP,EAQzB,SAAU/iG,GAER,IAIIgjG,EAAwBC,EAJxBC,EAAS,CAAC,QAAS,aAAc,iBAAkB,uBACnDC,EAAW,YAAa5qI,UAAYA,SAAS6qI,cAAgB,EACjD,CAAC,SAAW,CAAC,aAAc,iBAAkB,uBACzDrqI,EAASpC,MAAMrC,UAAUyE,MAG7B,GAAKinC,EAAE/hB,MAAMolH,SACT,IAAM,IAAI3wI,EAAIwwI,EAAM9rI,OAAQ1E,GACxBstC,EAAE/hB,MAAMolH,SAAUH,IAAQxwI,IAAOstC,EAAE/hB,MAAMqlH,WAIjD,IAAI5uH,EAAUsrB,EAAE/hB,MAAMvJ,QAAQ6uH,WAAa,CACvCh0E,QAAS,SAET7vC,MAAO,WACH,GAAKjqB,KAAKkR,iBACN,IAAM,IAAIjU,EAAIywI,EAAO/rI,OAAQ1E,GACzB+C,KAAKkR,iBAAkBw8H,IAASzwI,GAAI4S,GAAS,QAGjD7P,KAAK+tI,aAAel+H,EAGxB06B,EAAEhoB,KAAKviB,KAAM,yBAA0Bif,EAAQigG,cAAcl/G,OAC7DuqC,EAAEhoB,KAAKviB,KAAM,yBAA0Bif,EAAQ+uH,cAAchuI,QAGjEoqB,SAAU,WACN,GAAKpqB,KAAK6gB,oBACN,IAAM,IAAI5jB,EAAIywI,EAAO/rI,OAAQ1E,GACzB+C,KAAK6gB,oBAAqB6sH,IAASzwI,GAAI4S,GAAS,QAGpD7P,KAAK+tI,aAAe,KAGxBxjG,EAAErnB,WAAWljB,KAAM,0BACnBuqC,EAAErnB,WAAWljB,KAAM,2BAGvBk/G,cAAe,SAAS14G,GACpB,IAAIynI,EAAQ1jG,EAAE/jC,GACV+lE,EAAU0hE,EAAM,iBAAkB1jG,EAAE7kC,GAAK,eAAiB,YAI9D,OAHK6mE,EAAQ5qE,SACT4qE,EAAUhiC,EAAE,SAET7W,SAAS64C,EAAQ/nD,IAAI,YAAa,KAAOkP,SAASu6G,EAAMzpH,IAAI,YAAa,KAAO,IAG3FwpH,cAAe,SAASxnI,GACpB,OAAO+jC,EAAE/jC,GAAMitB,UAGnByO,SAAU,CACNgsG,iBAAiB,EACjBC,iBAAiB,IAezB,SAASt+H,EAAQ2Y,GACb,IAAI4lH,EAAa5lH,GAASvlB,OAAOulB,MAC7BrT,EAAa7R,EAAMlG,KAAKqJ,UAAW,GACnC8uB,EAAa,EACb84G,EAAa,EACbC,EAAa,EACbC,EAAa,EACbphH,EAAa,EACbC,EAAa,EA8BjB,IA7BA5E,EAAQ+hB,EAAE/hB,MAAMgC,IAAI4jH,IACd7sI,KAAO,aAGR,WAAiB6sI,IAAaE,GAA4B,EAAnBF,EAAS7hH,QAChD,eAAiB6hH,IAAaE,EAASF,EAAS55B,YAChD,gBAAiB45B,IAAaE,EAASF,EAASI,aAChD,gBAAiBJ,IAAaC,GAAiC,EAAxBD,EAASK,aAGhD,SAAUL,GAAYA,EAASM,OAASN,EAASO,kBAClDN,GAAmB,EAAVC,EACTA,EAAS,GAIb/4G,EAAmB,IAAX+4G,EAAeD,EAASC,EAG3B,WAAYF,IAEb74G,EADA+4G,GAA4B,EAAnBF,EAASE,QAGjB,WAAYF,IACbC,EAASD,EAASC,OACF,IAAXC,IAAiB/4G,GAAmB,EAAV84G,IAInB,IAAXC,GAA2B,IAAXD,EAArB,CAOA,GAA4B,IAAvBD,EAASQ,UAAkB,CAC5B,IAAIv1B,EAAa9uE,EAAEhoB,KAAKviB,KAAM,0BAC9Bu1B,GAAU8jF,EACVi1B,GAAUj1B,EACVg1B,GAAUh1B,OACP,GAA4B,IAAvB+0B,EAASQ,UAAkB,CACnC,IAAIC,EAAatkG,EAAEhoB,KAAKviB,KAAM,0BAC9Bu1B,GAAUs5G,EACVP,GAAUO,EACVR,GAAUQ,EA6Bd,GAzBAN,EAAWzmI,KAAKitB,IAAKjtB,KAAKinC,IAAIu/F,GAASxmI,KAAKinC,IAAIs/F,MAE1Cb,GAAee,EAAWf,KAC5BA,EAAce,EAGTO,EAAsBV,EAAUG,KACjCf,GAAe,KAKlBsB,EAAsBV,EAAUG,KAEjCh5G,GAAU,GACV84G,GAAU,GACVC,GAAU,IAId/4G,EAASztB,KAAMytB,GAAU,EAAI,QAAU,QAASA,EAASi4G,GACzDa,EAASvmI,KAAMumI,GAAU,EAAI,QAAU,QAASA,EAASb,GACzDc,EAASxmI,KAAMwmI,GAAU,EAAI,QAAU,QAASA,EAASd,GAGpDvuH,EAAQijB,SAASisG,iBAAmBnuI,KAAKq2B,sBAAwB,CAClE,IAAI04G,EAAe/uI,KAAKq2B,wBACxBlJ,EAAU3E,EAAMyE,QAAU8hH,EAAax4G,KACvCnJ,EAAU5E,EAAM0E,QAAU6hH,EAAa99H,IAwB3C,OApBAuX,EAAM6lH,OAASA,EACf7lH,EAAM8lH,OAASA,EACf9lH,EAAMwmH,YAAcxB,EACpBhlH,EAAM2E,QAAUA,EAChB3E,EAAM4E,QAAUA,EAIhB5E,EAAMomH,UAAY,EAGlBz5H,EAAKrC,QAAQ0V,EAAO+M,EAAO84G,EAAQC,GAM/Bf,GAA0BxxG,aAAawxG,GAC3CA,EAAyB3tH,WAAWqvH,EAAiB,MAE7C1kG,EAAE/hB,MAAMsB,UAAYygB,EAAE/hB,MAAMoB,QAAQpmB,MAAMxD,KAAMmV,IAG5D,SAAS85H,IACLzB,EAAc,KAGlB,SAASsB,EAAsBV,EAAUG,GAQrC,OAAOtvH,EAAQijB,SAASgsG,iBAAqC,eAAlBE,EAAS7sI,MAAyBgtI,EAAW,KAAQ,EAxIpGhkG,EAAE7kC,GAAG4B,OAAO,CACRwmI,WAAY,SAASpoI,GACjB,OAAOA,EAAK1F,KAAKvB,KAAK,aAAciH,GAAM1F,KAAKkpB,QAAQ,eAG3DgmH,aAAc,SAASxpI,GACnB,OAAO1F,KAAKwpC,OAAO,aAAc9jC,QA5EX,gC,keCXlC1I,EAAOD,QAAU,k7B,oNCAjBC,EAAOD,QAAU,0nG,+LCCjBY,OAAOC,eAAeb,EAAS,aAAc,CAAEmB,OAAO,IACtDnB,EAAQmtC,UAAYntC,EAAQqH,SAAWrH,EAAQiH,WAAajH,EAAQ4F,YAAc5F,EAAQkE,QAAUlE,EAAQ0F,SAAW1F,EAAQyqD,UAAYzqD,EAAQsrD,SAAWtrD,EAAQywC,SAAWzwC,EAAQyrD,YAAczrD,EAAQorD,MAAQprD,EAAQqrD,YAAS,EACxO,IAAI+mF,EAAc,EAAQ,IAC1BxxI,OAAOC,eAAeb,EAAS,SAAU,CAAEc,YAAY,EAAMC,IAAK,WAAc,OAAOqxI,EAAY/mF,UACnGzqD,OAAOC,eAAeb,EAAS,QAAS,CAAEc,YAAY,EAAMC,IAAK,WAAc,OAAOqxI,EAAYhnF,SAClGxqD,OAAOC,eAAeb,EAAS,cAAe,CAAEc,YAAY,EAAMC,IAAK,WAAc,OAAOqxI,EAAY3mF,eACxG7qD,OAAOC,eAAeb,EAAS,WAAY,CAAEc,YAAY,EAAMC,IAAK,WAAc,OAAOqxI,EAAY3hG,YACrG7vC,OAAOC,eAAeb,EAAS,WAAY,CAAEc,YAAY,EAAMC,IAAK,WAAc,OAAOqxI,EAAY9mF,YACrG1qD,OAAOC,eAAeb,EAAS,YAAa,CAAEc,YAAY,EAAMC,IAAK,WAAc,OAAOqxI,EAAY3nF,aACtG7pD,OAAOC,eAAeb,EAAS,WAAY,CAAEc,YAAY,EAAMC,IAAK,WAAc,OAAOqxI,EAAY1sI,YACrG9E,OAAOC,eAAeb,EAAS,UAAW,CAAEc,YAAY,EAAMC,IAAK,WAAc,OAAOqxI,EAAYluI,WACpGtD,OAAOC,eAAeb,EAAS,cAAe,CAAEc,YAAY,EAAMC,IAAK,WAAc,OAAOqxI,EAAYxsI,eACxGhF,OAAOC,eAAeb,EAAS,aAAc,CAAEc,YAAY,EAAMC,IAAK,WAAc,OAAOqxI,EAAYnrI,cAIvGjH,EAAQqH,SAHO,SAAUlG,GACrB,OAAOA,GAASA,IAAUA,EAAM+E,QAMpClG,EAAQmtC,UAHQ,SAAUhsC,GACtB,OAAQgD,MAAMD,QAAQ/C,IAAUA,EAAQ20B,WAAW30B,GAAS,GAAK,I,6BClBrE,IAAIu0D,EAAmBzyD,MAAQA,KAAKyyD,kBAAqB90D,OAAOY,OAAS,SAAUb,EAAGL,EAAGq1D,EAAGC,QAC7EzwD,IAAPywD,IAAkBA,EAAKD,GAC3B/0D,OAAOC,eAAeF,EAAGi1D,EAAI,CAAE90D,YAAY,EAAMC,IAAK,WAAa,OAAOT,EAAEq1D,OAC3E,SAAUh1D,EAAGL,EAAGq1D,EAAGC,QACTzwD,IAAPywD,IAAkBA,EAAKD,GAC3Bh1D,EAAEi1D,GAAMt1D,EAAEq1D,KAEVE,EAAsB5yD,MAAQA,KAAK4yD,qBAAwBj1D,OAAOY,OAAS,SAAUb,EAAG0e,GACxFze,OAAOC,eAAeF,EAAG,UAAW,CAAEG,YAAY,EAAMK,MAAOke,KAC9D,SAAS1e,EAAG0e,GACb1e,EAAW,QAAI0e,IAEfy2C,EAAgB7yD,MAAQA,KAAK6yD,cAAiB,SAAUC,GACxD,GAAIA,GAAOA,EAAIz0D,WAAY,OAAOy0D,EAClC,IAAI3xD,EAAS,GACb,GAAW,MAAP2xD,EAAa,IAAK,IAAIJ,KAAKI,EAAe,YAANJ,GAAmB/0D,OAAOkB,UAAUC,eAAe1B,KAAK01D,EAAKJ,IAAID,EAAgBtxD,EAAQ2xD,EAAKJ,GAEtI,OADAE,EAAmBzxD,EAAQ2xD,GACpB3xD,GAEXxD,OAAOC,eAAeb,EAAS,aAAc,CAAEmB,OAAO,IACtDnB,EAAQqyI,eAAY,EACpB,IAAIA,EAAYv8E,EAAa,EAAQ,MACrC91D,EAAQqyI,UAAYA,G,6BCtBpBzxI,OAAOC,eAAeb,EAAS,aAAc,CAAEmB,OAAO,IACtDnB,EAAQsyI,UAAYtyI,EAAQuyI,aAAevyI,EAAQwyI,SAAWxyI,EAAQyyI,QAAUzyI,EAAQ0yI,aAAe1yI,EAAQ2yI,WAAa3yI,EAAQsvD,UAAYtvD,EAAQglB,UAAYhlB,EAAQwwD,WAAaxwD,EAAQwvD,gBAAa,EAC9M,IAAI4iF,EAAc,EAAQ,IACtBQ,EAAc,EAAQ,IAO1BhyI,OAAOC,eAAeb,EAAS,aAAc,CAAEc,YAAY,EAAMC,IAAK,WAAc,OAAO6xI,EAAYpjF,cACvG5uD,OAAOC,eAAeb,EAAS,aAAc,CAAEc,YAAY,EAAMC,IAAK,WAAc,OAAO6xI,EAAYpiF,cACvG5vD,OAAOC,eAAeb,EAAS,YAAa,CAAEc,YAAY,EAAMC,IAAK,WAAc,OAAO6xI,EAAY5tH,aAEtG,IAAI6tH,EAAsB,SAAUlqI,GAChC,IAAI2J,EAAQ1R,OAAOY,OAAO,MAC1B,OAAO,SAAW4vC,GAEd,OADU9+B,EAAM8+B,KACD9+B,EAAM8+B,GAAOzoC,EAAGyoC,MAGvCpxC,EAAQsvD,UAAYujF,GAAoB,SAAU5wI,GAC9C,OAAOA,EAAEgJ,QAAQ,aAAc,OAAOqB,iBAE1CtM,EAAQ2yI,WAAaE,GAAoB,SAAU5wI,GAC/C,OAAO,EAAImwI,EAAYtiF,YAAW,EAAIsiF,EAAYptH,WAAW/iB,IAAIgJ,QAAQ,KAAM,OAEnFjL,EAAQ0yI,aAAeG,GAAoB,SAAU5wI,GACjD,OAAO,EAAImwI,EAAY7hF,WAAWtuD,GAAGgJ,QAAQ,KAAM,QAEvDjL,EAAQyyI,QAAUI,GAAoB,SAAU5wI,GAC5C,OAAO,EAAImwI,EAAY7iF,WAAWttD,GAAGgJ,QAAQ,KAAM,QAEvDjL,EAAQwyI,SAAWK,GAAoB,SAAU5wI,GAC7C,OAAO,EAAImwI,EAAY7iF,WAAWttD,GAAGgJ,QAAQ,KAAM,QAEvDjL,EAAQuyI,aAAeM,GAAoB,SAAU5wI,GACjD,OAAO,EAAImwI,EAAY5hF,aAAY,EAAI4hF,EAAY7iF,WAAWttD,OAElEjC,EAAQsyI,UAAYO,GAAoB,SAAU5wI,GAC9C,OAAO,EAAImwI,EAAYtiF,YAAW,EAAIsiF,EAAYptH,WAAW/iB,Q,6BCxCjE,IAAIyzD,EAAmBzyD,MAAQA,KAAKyyD,kBAAqB90D,OAAOY,OAAS,SAAUb,EAAGL,EAAGq1D,EAAGC,QAC7EzwD,IAAPywD,IAAkBA,EAAKD,GAC3B/0D,OAAOC,eAAeF,EAAGi1D,EAAI,CAAE90D,YAAY,EAAMC,IAAK,WAAa,OAAOT,EAAEq1D,OAC3E,SAAUh1D,EAAGL,EAAGq1D,EAAGC,QACTzwD,IAAPywD,IAAkBA,EAAKD,GAC3Bh1D,EAAEi1D,GAAMt1D,EAAEq1D,KAEVE,EAAsB5yD,MAAQA,KAAK4yD,qBAAwBj1D,OAAOY,OAAS,SAAUb,EAAG0e,GACxFze,OAAOC,eAAeF,EAAG,UAAW,CAAEG,YAAY,EAAMK,MAAOke,KAC9D,SAAS1e,EAAG0e,GACb1e,EAAW,QAAI0e,IAEfy2C,EAAgB7yD,MAAQA,KAAK6yD,cAAiB,SAAUC,GACxD,GAAIA,GAAOA,EAAIz0D,WAAY,OAAOy0D,EAClC,IAAI3xD,EAAS,GACb,GAAW,MAAP2xD,EAAa,IAAK,IAAIJ,KAAKI,EAAe,YAANJ,GAAmB/0D,OAAOkB,UAAUC,eAAe1B,KAAK01D,EAAKJ,IAAID,EAAgBtxD,EAAQ2xD,EAAKJ,GAEtI,OADAE,EAAmBzxD,EAAQ2xD,GACpB3xD,GAEXxD,OAAOC,eAAeb,EAAS,aAAc,CAAEmB,OAAO,IACtDnB,EAAQ8yI,eAAY,EACpB,IAAIA,EAAYh9E,EAAa,EAAQ,MACrC91D,EAAQ8yI,UAAYA,G,6BCtBpB,IAAIp9E,EAAmBzyD,MAAQA,KAAKyyD,kBAAqB90D,OAAOY,OAAS,SAAUb,EAAGL,EAAGq1D,EAAGC,QAC7EzwD,IAAPywD,IAAkBA,EAAKD,GAC3B/0D,OAAOC,eAAeF,EAAGi1D,EAAI,CAAE90D,YAAY,EAAMC,IAAK,WAAa,OAAOT,EAAEq1D,OAC3E,SAAUh1D,EAAGL,EAAGq1D,EAAGC,QACTzwD,IAAPywD,IAAkBA,EAAKD,GAC3Bh1D,EAAEi1D,GAAMt1D,EAAEq1D,KAEVE,EAAsB5yD,MAAQA,KAAK4yD,qBAAwBj1D,OAAOY,OAAS,SAAUb,EAAG0e,GACxFze,OAAOC,eAAeF,EAAG,UAAW,CAAEG,YAAY,EAAMK,MAAOke,KAC9D,SAAS1e,EAAG0e,GACb1e,EAAW,QAAI0e,IAEfy2C,EAAgB7yD,MAAQA,KAAK6yD,cAAiB,SAAUC,GACxD,GAAIA,GAAOA,EAAIz0D,WAAY,OAAOy0D,EAClC,IAAI3xD,EAAS,GACb,GAAW,MAAP2xD,EAAa,IAAK,IAAIJ,KAAKI,EAAe,YAANJ,GAAmB/0D,OAAOkB,UAAUC,eAAe1B,KAAK01D,EAAKJ,IAAID,EAAgBtxD,EAAQ2xD,EAAKJ,GAEtI,OADAE,EAAmBzxD,EAAQ2xD,GACpB3xD,GAEXxD,OAAOC,eAAeb,EAAS,aAAc,CAAEmB,OAAO,IACtDnB,EAAQ6lG,UAAO,EACf,IAAIA,EAAO/vC,EAAa,EAAQ,MAChC91D,EAAQ6lG,KAAOA,G,6BCtBfjlG,OAAOC,eAAeb,EAAS,aAAc,CAAEmB,OAAO,IACtDnB,EAAQygC,YAAczgC,EAAQwgC,YAAcxgC,EAAQmgC,SAAWngC,EAAQ6gC,SAAW7gC,EAAQ8/B,cAAW,EACrG,IAAIizG,EAAS,cACTC,EAAY,OACZC,EAAa,SAAU7hG,GAAO,MAAO,IAAMA,EAAM,KACrD,SAAStR,EAASr2B,GACd,OAAQA,GAAQA,EAAKvB,cAAgBuB,EAAKvB,aAAa,UAAa,GAGxE,SAAS24B,EAASp3B,EAAMf,GACpB,GAAY,MAARe,GAA4B,MAAZf,EAChB,OAAO,EAEX,IAAIk4B,EAAaqyG,EAAWnzG,EAASr2B,IACjC4K,EAAY4+H,EAAWvqI,GAC3B,OAAyB,IAAlBe,EAAKtC,UACNy5B,EAAW31B,QAAQ8nI,EAAQ,KAAK5xF,SAAS9sC,GAInD,SAAS8rB,EAAS12B,EAAMf,GACpB,GAAY,MAARe,GAA4B,MAAZf,EAApB,CAGA,GAAwB,mBAAbA,EACP,OAAOy3B,EAAS12B,EAAMf,EAASo3B,EAASr2B,KAE5C,GAAwB,iBAAbf,GAA2C,IAAlBe,EAAKtC,SAAgB,CACrD,IAAIi5B,EAAU13B,EAASwI,MAAM8hI,IAAc,GACvC5yD,EAAW6yD,EAAWnzG,EAASr2B,IAAOwB,QAAQ8nI,EAAQ,KACtDr7F,EAAWtX,EAAQqO,QAAO,SAAU8B,EAAMq7C,GAC1C,OAAIr7C,EAAK7pC,QAAQusI,EAAWrnD,IAAQ,EACzB,GAAKr7C,EAAOq7C,EAAM,IAEtBr7C,IACR6vC,GAECA,KADJ1oC,EAAWA,EAASrK,SAEhB5jC,EAAKtB,aAAa,QAASuvC,KAKvC,SAASlX,EAAY/2B,EAAMf,GACvB,GAAY,MAARe,EAAJ,CAGA,GAAwB,mBAAbf,EACP,OAAO83B,EAAY/2B,EAAMf,EAASo3B,EAASr2B,KAE/C,KAAMf,GAAgC,iBAAbA,IAA4C,IAAlBe,EAAKtC,SAAgB,CACpE,IAAIi5B,GAAW13B,GAAY,IAAIwI,MAAM8hI,IAAc,GAC/C5yD,EAAW6yD,EAAWnzG,EAASr2B,IAAOwB,QAAQ8nI,EAAQ,KACtDr7F,EAAWtX,EAAQqO,QAAO,SAAU8B,EAAMq7C,GAC1C,IAAIv3E,EAAY4+H,EAAWrnD,GAC3B,OAAIr7C,EAAK7pC,QAAQ2N,IAAc,EACpBk8B,EAAKtlC,QAAQoJ,EAAW,KAE5Bk8B,IACR6vC,GAECA,KADJ1oC,EAAWhvC,EAAWgvC,EAASrK,OAAS,KAEpC5jC,EAAKtB,aAAa,QAASuvC,KAtDvC13C,EAAQ8/B,SAAWA,EAWnB9/B,EAAQ6gC,SAAWA,EAuBnB7gC,EAAQmgC,SAAWA,EAwBnBngC,EAAQwgC,YAAcA,EAmBtBxgC,EAAQygC,YAlBR,SAASA,EAAYh3B,EAAMf,EAAUg4B,GACjC,GAAY,MAARj3B,GAA4B,MAAZf,EAGpB,GAAgB,MAAZg4B,GAAwC,iBAAbh4B,EAA/B,CAIA,GAAwB,mBAAbA,EACP,OAAO+3B,EAAYh3B,EAAMf,EAASo3B,EAASr2B,GAAOi3B,GAAWA,GAEjE,GAAwB,iBAAbh4B,GACOA,EAASwI,MAAM8hI,IAAc,IACnC5kG,SAAQ,SAAUw9C,GACtB/qD,EAASp3B,EAAMmiF,GAAOprD,EAAY/2B,EAAMmiF,GAAOzrD,EAAS12B,EAAMmiF,WATlElrD,EAAWP,EAAS12B,EAAMf,GAAY83B,EAAY/2B,EAAMf,K,6BCxEhE,IAAIgtD,EAAmBzyD,MAAQA,KAAKyyD,kBAAqB90D,OAAOY,OAAS,SAAUb,EAAGL,EAAGq1D,EAAGC,QAC7EzwD,IAAPywD,IAAkBA,EAAKD,GAC3B/0D,OAAOC,eAAeF,EAAGi1D,EAAI,CAAE90D,YAAY,EAAMC,IAAK,WAAa,OAAOT,EAAEq1D,OAC3E,SAAUh1D,EAAGL,EAAGq1D,EAAGC,QACTzwD,IAAPywD,IAAkBA,EAAKD,GAC3Bh1D,EAAEi1D,GAAMt1D,EAAEq1D,KAEVqxC,EAAgB/jG,MAAQA,KAAK+jG,cAAiB,SAAS1mG,EAAGN,GAC1D,IAAK,IAAIgC,KAAK1B,EAAa,YAAN0B,GAAoBpB,OAAOkB,UAAUC,eAAe1B,KAAKL,EAASgC,IAAI0zD,EAAgB11D,EAASM,EAAG0B,IAE3HpB,OAAOC,eAAeb,EAAS,aAAc,CAAEmB,OAAO,IACtD6lG,EAAa,EAAQ,KAAShnG,GAC9BgnG,EAAa,EAAQ,KAAWhnG,GAChCgnG,EAAa,EAAQ,KAAWhnG,GAChCgnG,EAAa,EAAQ,KAAYhnG,GACjCgnG,EAAa,EAAQ,KAAYhnG,GACjCgnG,EAAa,EAAQ,KAAahnG,GAClCgnG,EAAa,EAAQ,KAAgBhnG,GAGrCgnG,EAAa,EAAQ,KAAWhnG,GAChCgnG,EAAa,EAAQ,KAAWhnG,GAChCgnG,EAAa,EAAQ,KAAWhnG,GAChCgnG,EAAa,EAAQ,KAAahnG,GAClCgnG,EAAa,EAAQ,KAAgBhnG,GACrCgnG,EAAa,EAAQ,KAAiBhnG,I,6BCzBtCY,OAAOC,eAAeb,EAAS,aAAc,CAAEmB,OAAO,IACtDnB,EAAQkzI,cAAgBlzI,EAAQg0B,iBAAmBh0B,EAAQmzI,sBAAmB,EAC9E,IAAIC,EAAW,EAAQ,KASvB,SAASp/G,EAAiBvqB,EAAMhJ,GAE5B,IAAI4zB,EAAW5qB,EAAK6H,eAChB7H,EAAK6H,cAAc2C,aACnBxK,EAAK6H,cAAc2C,YAAY8f,OAC7BtqB,EAAK6H,cAAc2C,YAAY+f,iBAAiBvqB,EAAM,MACtDvD,OAAO8tB,iBAAiBvqB,EAAM,MACpC,OAAI4qB,GAAY5zB,EACL4zB,EAASI,iBAAiBh0B,IAAS4zB,EAAS5zB,GAEhD4zB,EAXXr0B,EAAQmzI,iBAPR,SAA0B5rH,EAAO9mB,EAAMU,GACnC,IAAIkyI,GAAS,EAAID,EAASE,uBAAuB7yI,GACnC,MAAV4yI,IACA9rH,EAAM8rH,GAAUlyI,GAEpBomB,EAAM9mB,GAAQU,GAelBnB,EAAQg0B,iBAAmBA,EAK3Bh0B,EAAQkzI,cAJR,SAAuBn+G,GACnB,IAAIxN,EAAQyM,EAAiBe,GAC7B,OAAiB,MAATxN,IAAqC,WAAnBA,EAAM8V,UAA4C,SAAnB9V,EAAM8V,Y,6BC1BnEz8B,OAAOC,eAAeb,EAAS,aAAc,CAAEmB,OAAO,IACtDnB,EAAQszI,2BAAwB,EAChC,IAAIC,EAAgB,QAIpB,IAAI3kC,EAAW,GACX4kC,EAAW,CAAC,SAAU,KAAM,MAAO,KACnCC,EAAY1tI,SAAWA,SAASiC,cAAc,OAAOuf,MAAQ,GAkBjEvnB,EAAQszI,sBARR,SAA+BzxI,GAC3B,IAAIpB,EAAgBoB,EAfToJ,QAAQsoI,GAAe,SAAUtzH,EAAGyzH,GAAQ,OAAOA,EAAK3uH,iBAgBnE,GAAsB,MAAlB6pF,EAASnuG,GAAe,CACxB,IAAIkzI,EAAkBlzI,EAAK8jE,OAAO,GAAGx/C,cAAgBtkB,EAAK8F,MAAM,GAChEqoG,EAASnuG,GAAQA,KAAQgzI,EAAYhzI,EAb7C,SAAuBA,GACnB,IAAK,IAAIP,EAAI,EAAGA,EAAIszI,EAAS5uI,OAAQ1E,GAAK,EAAG,CACzC,IAAI0zI,EAAeJ,EAAStzI,GAAKO,EACjC,GAAImzI,KAAgBH,EAChB,OAAOG,EAGf,OAAO,KAMyCC,CAAcF,GAE9D,OAAO/kC,EAASnuG,K,6BCxBpBG,OAAOC,eAAeb,EAAS,aAAc,CAAEmB,OAAO,IACtDnB,EAAQ8zI,oBAAsB9zI,EAAQqgI,WAAargI,EAAQ+xD,OAAS/xD,EAAQ+zI,eAAiB/zI,EAAQg0I,oBAAsBh0I,EAAQi0I,kBAAoBj0I,EAAQk0I,iBAAmBl0I,EAAQm0I,wBAA0Bn0I,EAAQo0I,mBAAqBp0I,EAAQq0I,kBAAoBr0I,EAAQs0I,eAAiBt0I,EAAQopD,OAASppD,EAAQu0I,WAAQ,EACvU,IAAIC,EAAS,EAAQ,KACjB7nC,EAAS,EAAQ,KAErB,SAAS8nC,EAAqBhrI,EAAMyM,EAAM6G,QACjB,IAAjBA,IAA2BA,EAAe26C,KAC9C,IAAIr4C,EAAI5V,EAAKvB,aAAagO,GAC1B,GAAS,MAALmJ,EACA,OAAOtC,EAEX,IAAIpb,EAAIm0B,WAAWzW,GACnB,OAAO8/C,OAAO/xB,MAAMzrC,GAAKob,EAAepb,EAgB5C,SAAS2yI,EAAep2E,GACpB,MAAO,CACH,IACAu2E,EAAqBv2E,EAAM,MAC3Bu2E,EAAqBv2E,EAAM,MAC3B,IACAu2E,EAAqBv2E,EAAM,MAC3Bu2E,EAAqBv2E,EAAM,OAC7BjsD,KAAK,KAGX,SAASoiI,EAAkBK,GACvB,IAAI39E,EAASo9E,EAAwBO,GACrC,OAAsB,IAAlB39E,EAAOnyD,OACA,KAEJ+vI,EAAgB59E,GAAU,KAGrC,SAASq9E,EAAmB3V,GACxB,IAAI1nE,EAASo9E,EAAwB1V,GACrC,OAAsB,IAAlB1nE,EAAOnyD,OACA,KAEJ+vI,EAAgB59E,GAG3B,SAAS49E,EAAgB59E,GAErB,MAAO,KADGA,EAAOvtD,KAAI,SAAUxH,GAAK,OAAOA,EAAEwzC,EAAI,IAAMxzC,EAAEyzC,KACvCxjC,KAAK,MAE3B,SAASkiI,EAAwB1qI,GAC7B,IAAIstD,EAAS,GACT69E,EAAanrI,EAAKstD,OACtB,GAAI69E,EACA,IAAK,IAAI10I,EAAI,EAAG25D,EAAK+6E,EAAWC,cAAe30I,EAAI25D,EAAI35D,GAAK,EACxD62D,EAAOtxD,KAAKmvI,EAAWE,QAAQ50I,IAGvC,OAAO62D,EAGX,SAASm9E,EAAiBa,GACtB,IAAI90C,EAAKw0C,EAAqBM,EAAQ,KAAM,GACxC70C,EAAKu0C,EAAqBM,EAAQ,KAAM,GACxC/zI,EAAIyzI,EAAqBM,EAAQ,KACjCC,EAAKh0I,EAAIhB,EAAQu0I,MACrB,MAAO,CACH,IACAt0C,EACAC,EAAKl/F,EACL,IACAi/F,EAAK+0C,EACL90C,EAAKl/F,EACLi/F,EAAKj/F,EACLk/F,EAAK80C,EACL/0C,EAAKj/F,EACLk/F,EACA,IACAD,EAAKj/F,EACLk/F,EAAK80C,EACL/0C,EAAK+0C,EACL90C,EAAKl/F,EACLi/F,EACAC,EAAKl/F,EACL,IACAi/F,EAAK+0C,EACL90C,EAAKl/F,EACLi/F,EAAKj/F,EACLk/F,EAAK80C,EACL/0C,EAAKj/F,EACLk/F,EACA,IACAD,EAAKj/F,EACLk/F,EAAK80C,EACL/0C,EAAK+0C,EACL90C,EAAKl/F,EACLi/F,EACAC,EAAKl/F,EACL,KACFiR,KAAK,KAGX,SAASgiI,EAAkB5nC,GACvB,IAAIpM,EAAKw0C,EAAqBpoC,EAAS,KAAM,GACzCnM,EAAKu0C,EAAqBpoC,EAAS,KAAM,GACzCrK,EAAKyyC,EAAqBpoC,EAAS,MACnCpK,EAAKwyC,EAAqBpoC,EAAS,OAASrK,EAC5CizC,EAAMjzC,EAAKhiG,EAAQu0I,MACnBW,EAAMjzC,EAAKjiG,EAAQu0I,MAmCvB,MAlCQ,CACJ,IACAt0C,EACAC,EAAK+B,EACL,IACAhC,EAAKg1C,EACL/0C,EAAK+B,EACLhC,EAAK+B,EACL9B,EAAKg1C,EACLj1C,EAAK+B,EACL9B,EACA,IACAD,EAAK+B,EACL9B,EAAKg1C,EACLj1C,EAAKg1C,EACL/0C,EAAK+B,EACLhC,EACAC,EAAK+B,EACL,IACAhC,EAAKg1C,EACL/0C,EAAK+B,EACLhC,EAAK+B,EACL9B,EAAKg1C,EACLj1C,EAAK+B,EACL9B,EACA,IACAD,EAAK+B,EACL9B,EAAKg1C,EACLj1C,EAAKg1C,EACL/0C,EAAK+B,EACLhC,EACAC,EAAK+B,EACL,KACFhwF,KAAK,KAIX,SAAS+hI,EAAoBloG,GACzB,OAAOioG,EAAe,CAClBv+F,EAAGi/F,EAAqB3oG,EAAM,IAAK,GACnC2J,EAAGg/F,EAAqB3oG,EAAM,IAAK,GACnCxX,MAAOmgH,EAAqB3oG,EAAM,QAAS,GAC3CpV,OAAQ+9G,EAAqB3oG,EAAM,SAAU,GAC7Ck2D,GAAIyyC,EAAqB3oG,EAAM,KAAM,GACrCm2D,GAAIwyC,EAAqB3oG,EAAM,KAAM,KAI7C,SAASioG,EAAe/yI,GACpB,IACIw0C,EAAIx0C,EAAEw0C,EACNC,EAAIz0C,EAAEy0C,EACNnhB,EAAQtzB,EAAEszB,MACVoC,EAAS11B,EAAE01B,OACXy+G,EAAQpqI,KAAKkzC,IAAIj9C,EAAEghG,IAAMhhG,EAAE,WAAa,EAAGszB,EAAQ,GACnD8gH,EAAWrqI,KAAKkzC,IAAIj9C,EAAEghG,IAAMhhG,EAAE,cAAgB,EAAGszB,EAAQ,GACzD+gH,EAAQtqI,KAAKkzC,IAAIj9C,EAAEihG,IAAMjhG,EAAE,WAAa,EAAG01B,EAAS,GACpD4+G,EAAWvqI,KAAKkzC,IAAIj9C,EAAEihG,IAAMjhG,EAAE,cAAgB,EAAG01B,EAAS,GAoD9D,OAnDIy+G,GAASC,GAAYC,GAASC,EAC1B,CACA,IACA9/F,EACAC,EAAI4/F,EACJ,IACA3+G,EAAS2+G,EAAQC,EACjB,IACAF,EACAE,EACA,EACA,EACA,EACAF,EACAE,EACA,IACAhhH,EAAQ,EAAI8gH,EACZ,IACAA,EACAE,EACA,EACA,EACA,EACAF,GACCE,EACD,MACE5+G,EAAS4+G,EAAWD,GACtB,IACAF,EACAE,EACA,EACA,EACA,GACCF,GACAE,EACD,MACE/gH,EAAQ,EAAI6gH,GACd,IACAA,EACAE,EACA,EACA,EACA,GACCF,EACDE,EACA,KAIA,CAAC,IAAK7/F,EAAGC,EAAG,IAAKD,EAAIlhB,EAAO,IAAKmhB,EAAI/e,EAAQ,IAAK8e,EAAG,IAAKC,EAAG,MAE5DxjC,KAAK,KAalB,SAASouH,EAAW52H,GAChB,IAAIi/E,EAAUj/E,EAAKi/E,QAAQp8E,cAC3B,OAAQo8E,GACJ,IAAK,OACD,OAAOj/E,EAAKvB,aAAa,KAC7B,IAAK,OACD,OAAOosI,EAAe7qI,GAC1B,IAAK,UACD,OAAO4qI,EAAkB5qI,GAC7B,IAAK,WACD,OAAO2qI,EAAmB3qI,GAC9B,IAAK,UACD,OAAOwqI,EAAkBxqI,GAC7B,IAAK,SACD,OAAOyqI,EAAiBzqI,GAC5B,IAAK,OACD,OAAOuqI,EAAoBvqI,GAInC,MAAM,IAAIxD,MAAM,IAAOyiF,EAAU,8CAhQrC1oF,EAAQu0I,MAAQ,QAuBhBv0I,EAAQopD,OAbR,SAAgB3/C,EAAM6xB,QACD,IAAbA,IAAuBA,EAAW,GAKtC,IAJA,IAGI8tB,EAHAxkD,EAAS6E,EAAK8rI,iBACdC,EAAU,GACV1hF,EAAW,EAERA,EAAWlvD,GACdwkD,EAAS3/C,EAAKgsI,iBAAiB3hF,GAC/B0hF,EAAQ/vI,KAAK,CAAEquD,SAAUA,EAAUte,EAAG4T,EAAO5T,EAAGC,EAAG2T,EAAO3T,IAC1Dqe,GAAYx4B,EAEhB,OAAOk6G,GAaXx1I,EAAQs0I,eAAiBA,EAQzBt0I,EAAQq0I,kBAAoBA,EAQ5Br0I,EAAQo0I,mBAAqBA,EAe7Bp0I,EAAQm0I,wBAA0BA,EAyClCn0I,EAAQk0I,iBAAmBA,EA4C3Bl0I,EAAQi0I,kBAAoBA,EAW5Bj0I,EAAQg0I,oBAAsBA,EAgE9Bh0I,EAAQ+zI,eAAiBA,EAUzB/zI,EAAQ+xD,OATR,SAAgBtoD,GACZ,IAAI0oC,GAAO,EAAIw6D,EAAOgB,kBAAkB,SACxC,EAAI6mC,EAAOt+H,MAAMi8B,GAAM,EAAIqiG,EAAOt+H,MAAMzM,IACxC,IAAIjJ,EAAI6/H,EAAW52H,GAInB,OAHIjJ,GACA2xC,EAAKhqC,aAAa,IAAK3H,GAEpB2xC,GAyBXnyC,EAAQqgI,WAAaA,EAgCrBrgI,EAAQ8zI,oBA9BR,SAA6B4B,EAAaC,EAAax1C,EAAYC,GAC/D,IAAIw1C,EAAY,EAAI7qI,KAAK+vB,GAAK,KAC1B+6G,EAAKH,EACLrJ,EAAKsJ,EACLG,EAAK31C,EACL41C,EAAK31C,EACT,GAAI21C,EAAKD,EAAI,CACT,IAAIhhI,EAAMghI,EACVA,EAAKC,EACLA,EAAKjhI,EAET,IAAIkhI,EAAKD,EAAKD,EACVG,EAAKD,EAAKjrI,KAAK+vB,GAAK,IAAM,IAC1Bo7G,EAAKnrI,KAAK8vB,IAAIi7G,GACdK,EAAKprI,KAAK0tD,IAAIq9E,GACdM,EAAKrrI,KAAK8vB,IAAIk7G,GACdM,EAAKtrI,KAAK0tD,IAAIs9E,GAClB,OAAOC,GAAMJ,EACPC,EAEM,MAAQxJ,EAAK,IAAMA,EAAK,IAAMA,EAAK,aAAeA,EAAK,IAAMA,EAAK,IAAMA,EAAK,YAAcA,EAAK,MAAQwJ,EAAK,IAAMA,EAAK,IAAMA,EAAK,aAAeA,EAAK,IAAMA,EAAK,IAAMA,EAAK,YAAcA,EAAK,IAEhM,MAAQxJ,EAAK,IAAMA,EAAK,IAAMA,EAAK,aAAeA,EAAK,IAAMA,EAAK,IAAMA,EAAK,YAAcA,EAAK,IACtGwJ,EAEM,IAAMxJ,EAAK6J,EAAK,IAAM7J,EAAK8J,EAAK,IAAM9J,EAAK,IAAMA,EAAK,MAAQ4J,EAAK,MAAQ5J,EAAK+J,EAAK,IAAM/J,EAAKgK,EAAK,IAAMR,EAAKO,EAAK,IAAMP,EAAKQ,EAAK,IAAMR,EAAK,IAAMA,EAAK,MAAQI,EAAK,MAAQJ,EAAKK,EAAK,IAAML,EAAKM,EAAK,IAE1M,IAAM9J,EAAK6J,EAAK,IAAM7J,EAAK8J,EAAK,IAAM9J,EAAK,IAAMA,EAAK,MAAQ4J,EAAK,MAAQ5J,EAAK+J,EAAK,IAAM/J,EAAKgK,EAAhG,U,6BCnShB,IAAIC,EAAUrzI,MAAQA,KAAKqzI,QAAW,SAAUr0I,EAAG6O,GAC/C,IAAI1P,EAAI,GACR,IAAK,IAAIY,KAAKC,EAAOrB,OAAOkB,UAAUC,eAAe1B,KAAK4B,EAAGD,IAAM8O,EAAEpK,QAAQ1E,GAAK,IAC9EZ,EAAEY,GAAKC,EAAED,IACb,GAAS,MAALC,GAAqD,mBAAjCrB,OAAOsxG,sBACtB,KAAIhyG,EAAI,EAAb,IAAgB8B,EAAIpB,OAAOsxG,sBAAsBjwG,GAAI/B,EAAI8B,EAAE4C,OAAQ1E,IAC3D4Q,EAAEpK,QAAQ1E,EAAE9B,IAAM,GAAKU,OAAOkB,UAAUwxD,qBAAqBjzD,KAAK4B,EAAGD,EAAE9B,MACvEkB,EAAEY,EAAE9B,IAAM+B,EAAED,EAAE9B,KAE1B,OAAOkB,GAEXR,OAAOC,eAAeb,EAAS,aAAc,CAAEmB,OAAO,IACtDnB,EAAQu2I,sBAAwBv2I,EAAQggI,iBAAmBhgI,EAAQ+/H,iBAAmB//H,EAAQ89B,QAAU99B,EAAQw2I,gBAAkBx2I,EAAQ2/H,gBAAkB3/H,EAAQ0/H,aAAe1/H,EAAQk/H,sBAAwBl/H,EAAQy2I,uBAAyBz2I,EAAQ02I,qBAAuB12I,EAAQ6/H,QAAU7/H,EAAQw+D,UAAO,EACpT,IAAIf,EAAa,EAAQ,KACrB+2E,EAAS,EAAQ,KACjBmC,EAAS,EAAQ,KACjBhqC,EAAS,EAAQ,KACjBiqC,EAAU,EAAQ,KAClBC,EAAW,EAAQ,KAyCvB,SAAShX,EAAQp2H,EAAM7G,GAEnB,IAAIk0I,EAMJ,QAPgB,IAAZl0I,IAAsBA,EAAU,KAEd6G,EAAKilG,mBAKF,EAAI/B,EAAOkB,sBAAsBpkG,GAAO,CAC7D,IAAI,EAAIkjG,EAAOY,eAAe9jG,GAAO,CAEjC,IAAIstI,EAAKR,EAAsB9sI,GAAO+vB,EAAOu9G,EAAGv9G,KAAMw9G,EAAQD,EAAG7iI,IAAKogB,EAAQyiH,EAAGziH,MAAOoC,EAASqgH,EAAGrgH,OACpG,OAAO,IAAI+mC,EAAWiB,UAAUllC,EAAMw9G,EAAO1iH,EAAOoC,GAExD,OAAO,IAAI+mC,EAAWiB,UAAU,EAAG,EAAG,EAAG,GAE7C,IAAI/zD,EAAS/H,EAAQ+H,OAErB,IADgB/H,EAAQu9H,UACR,CACZ,IACI2W,EAAartI,EAAKo2H,UAEtB,MAAO/uH,GACHgmI,EAAa,CACTthG,EAAG/rC,EAAKwtI,WACRxhG,EAAGhsC,EAAKytI,UACR5iH,MAAO7qB,EAAK0tI,YACZzgH,OAAQjtB,EAAK2tI,cAGrB,IAAKzsI,EACD,OAAO8yD,EAAWiB,UAAUl9D,OAAOs1I,GAGvC,IAAIz8E,EAAS6kE,EAAsBz1H,EAAMkB,GACzC,OAAO,EAAIksI,EAASpW,oBAAoBqW,EAAYz8E,GAIpD,IAAIn8C,EAAWzU,EAAKoH,WAChBlP,EAAIuc,EAAStZ,OACjB,GAAU,IAANjD,EACA,OAAOk+H,EAAQp2H,EAAM,CAAEkB,OAAQA,IAE9BA,IACDA,EAASlB,GAEb,IAAK,IAAIvJ,EAAI,EAAGA,EAAIyB,EAAGzB,GAAK,EAAG,CAC3B,IAAI+pE,EAAQ/rD,EAAShe,GACjBm3I,OAAY,EAEZA,EAD4B,IAA5BptE,EAAMp5D,WAAWjM,OACLi7H,EAAQ51D,EAAO,CAAEt/D,OAAQA,IAIzBk1H,EAAQ51D,EAAO,CAAEt/D,OAAQA,EAAQw1H,WAAW,IAMxD2W,EAJCA,EAIYA,EAAWxvF,MAAM+vF,GAHjBA,EAMrB,OAAOP,EAyDf,SAAS5X,EAAsBz1H,EAAMkB,GACjC,IAAI,EAAIgiG,EAAOkB,sBAAsBljG,KAAW,EAAIgiG,EAAOkB,sBAAsBpkG,GAAO,CACpF,IAAI6tI,EAAY3sI,EAAOwjG,eACnBopC,EAAU9tI,EAAK0kG,eACnB,GAAImpC,GAAaC,EACb,OAAOD,EAAUE,UAAUlrF,SAASirF,GAI5C,OAAO,EAAIV,EAASxV,mBA6JxB,SAASoW,EAAgBhuI,EAAM7G,EAAS4B,GAKpC,IAAIs5B,GAAU,EAAI6uE,EAAOgB,kBAAkBnpG,GAC3CiF,EAAKpB,YAAYy1B,GACjB,IACI,OAAO45G,EAAe55G,EAASl7B,GAEnC,MAAOuI,IAGP,OAAO,aAEX,SAASusI,EAAe55G,EAASl7B,GAC7B,IAAI2B,EAAQ3B,EAAQ2B,MAAOo4B,EAAW/5B,EAAQ+5B,SAAUizB,EAAShtD,EAAQgtD,OAAQ/8C,EAAQyjI,EAAO1zI,EAAS,CAAC,QAAS,WAAY,YAC/H,EAAI4xI,EAAOt+H,MAAM4nB,EAASjrB,GAC1BtO,GAASu5B,EAAQ3pB,iBAAiB,aAAc5P,GAChDo4B,GAAYmB,EAAQ3pB,iBAAiB,WAAYwoB,GACjDizB,GAAU9xB,EAAQ3pB,iBAAiB,cAAey7C,GAClD,IAAI+nF,EAAM75G,EAEV,OADA65G,EAAIC,eACG,WAAc,OAAOD,EAAIE,cAyCpC,SAAStB,EAAsB9sI,GAC3B,IAAI+vB,EAAO,EACPtlB,EAAM,EACNogB,EAAQ,EACRoC,EAAS,EACb,GAAIjtB,EAAM,CAEN,IADA,IAAIw+B,EAAUx+B,EACPw+B,GACHzO,GAAQyO,EAAQ6vG,WAChB5jI,GAAO+zB,EAAQ8vG,WACf9vG,EAAUA,EAAQiE,gBAEd1S,GAAQ7C,UAAS,EAAIigH,EAAQ5iH,kBAAkBiU,EAAS,cAAe,IACvE/zB,GAAOyiB,UAAS,EAAIigH,EAAQ5iH,kBAAkBiU,EAAS,aAAc,KAG7E3T,EAAQ7qB,EAAKksB,YACbe,EAASjtB,EAAKqtB,aAElB,MAAO,CAAE0C,KAAMA,EAAMtlB,IAAKA,EAAKogB,MAAOA,EAAOoC,OAAQA,GAzXzD12B,EAAQw+D,KA1BR,SAAc/0D,EAAMy2H,EAAwBv1H,GACxC,IAAIwtB,EACAu2E,EAAkBjlG,EAAKilG,gBAG3B,IAAKA,EACD,OAAO,IAAIjxC,EAAWiB,UAAU,EAAG,EAAG,EAAG,GAE7C,IACIvmC,EAAM1uB,EAAKo2H,UAEf,MAAO/uH,GAEHqnB,EAAM,CACFqd,EAAG/rC,EAAKwtI,WACRxhG,EAAGhsC,EAAKytI,UACR5iH,MAAO7qB,EAAK0tI,YACZzgH,OAAQjtB,EAAK2tI,cAGrB,GAAIlX,EACA,OAAOziE,EAAWiB,UAAUl9D,OAAO22B,GAEvC,IAAIkiC,EAAS6kE,EAAsBz1H,EAAMkB,GAAU+jG,GACnD,OAAO,EAAImoC,EAASpW,oBAAoBtoG,EAAKkiC,IA4EjDr6D,EAAQ6/H,QAAUA,EA8BlB7/H,EAAQ02I,qBA5BR,SAA8BjtI,GAI1B,IAHA,IAAI7B,EAAO6B,EACPi/E,EAAU9gF,EAAOA,EAAK8gF,QAAQp8E,cAAgB,GAE/B,MAAZo8E,GAEHA,GADA9gF,EAAOA,EAAK6gC,mBACK7gC,EAAK8gF,QAAQp8E,cAAgB,GAElD,IAKItL,EACAw9D,EANAtoD,EAAO,SAAUzV,GACjB,IAAIwB,EAAI2F,EAAKM,aAAazH,GACtB4e,EAAIpd,EAAI6zB,WAAW7zB,GAAK,EAC5B,OAAOk9D,OAAO/xB,MAAM/tB,GAAK,EAAIA,GAIjC,OAAQqpE,GACJ,IAAK,OACDlqB,EAAO,IAAIf,EAAWiB,UAAUxoD,EAAK,KAAMA,EAAK,KAAMA,EAAK,SAAUA,EAAK,WAC1E,MACJ,IAAK,SACDlV,EAAIkV,EAAK,KACTsoD,EAAO,IAAIf,EAAWiB,UAAUxoD,EAAK,MAAQlV,EAAGkV,EAAK,MAAQlV,EAAG,EAAIA,EAAG,EAAIA,GAKnF,OAAOw9D,GAqBXx+D,EAAQy2I,uBAjBR,SAAgChtI,EAAMkB,GAClC,IAAI0vD,GAAS,EAAIw8E,EAASxV,mBAC1B,IAAI,EAAI10B,EAAOkB,sBAAsBljG,KAAW,EAAIgiG,EAAOkB,sBAAsBpkG,GAAO,CAGpF,IAFA,IAAI7B,EAAO6B,EACPuuI,EAAa,GACVpwI,GAAQA,IAAS+C,GAAQ,CAC5B,IAAI8rC,EAAY7uC,EAAKM,aAAa,cAAgB,KAC9C+vI,GAAa,EAAIpB,EAAS1V,yBAAyB1qF,GACvDuhG,EAAWvyI,KAAKwyI,GAChBrwI,EAAOA,EAAKU,WAEhB0vI,EAAW94H,UAAUkvB,SAAQ,SAAU9tC,GACnC+5D,EAASA,EAAO/N,SAAShsD,MAGjC,OAAO+5D,GAkBXr6D,EAAQk/H,sBAAwBA,EAsBhCl/H,EAAQ0/H,aAjBR,SAAsBj2H,EAAM+rC,EAAGC,GAC3B,IAAI0yC,EAAM1+E,aAAgB21H,cACpB31H,EACAA,EAAKilG,gBACP1sG,EAAImmF,EAAIm5C,iBACZt/H,EAAEwzC,EAAIA,EACNxzC,EAAEyzC,EAAIA,EACN,IACI,IAAIosF,EAAM15C,EAAIgmB,eACV+pC,EAAcl2I,EAAEugI,gBAAgBV,EAAI2V,WACpCW,EAAsBjZ,EAAsBz1H,EAAM0+E,GAAKqvD,UAC3D,OAAOU,EAAY3V,gBAAgB4V,GAEvC,MAAOrnI,GACH,OAAO9O,IAgEfhC,EAAQ2/H,gBAxCR,SAAyBl2H,GACrB,IAAIyM,EAAO,SAAUzV,GACjB,IAAIwB,EAAIwH,EAAKvB,aAAazH,GACtB4e,EAAIpd,EAAI6zB,WAAW7zB,GAAK,EAC5B,OAAOk9D,OAAO/xB,MAAM/tB,GAAK,EAAIA,GAEjC,OAAQ5V,aAAgB2kG,YAAc3kG,EAAKiH,SAASpE,eAChD,IAAK,OACD,OAAO,IAAImxD,EAAWiB,UAAUxoD,EAAK,KAAMA,EAAK,KAAMA,EAAK,SAAUA,EAAK,WAC9E,IAAK,SACD,OAAO,IAAIunD,EAAW26E,QAAQliI,EAAK,MAAOA,EAAK,MAAOA,EAAK,KAAMA,EAAK,MAC1E,IAAK,UACD,OAAO,IAAIunD,EAAW26E,QAAQliI,EAAK,MAAOA,EAAK,MAAOA,EAAK,MAAOA,EAAK,OAC3E,IAAK,WACD,IAAI6gD,GAAS,EAAI4/E,EAAOxC,yBAAyB1qI,GACjD,OAAO,IAAIg0D,EAAWyrD,SAASnyD,GAEnC,IAAK,UAKD,OAJIA,GAAS,EAAI4/E,EAAOxC,yBAAyB1qI,IACtC7E,OAAS,GAChBmyD,EAAOtxD,KAAKsxD,EAAO,IAEhB,IAAI0G,EAAWyrD,SAASnyD,GAEnC,IAAK,OACD,IAAIv2D,EAAIiJ,EAAKvB,aAAa,KAI1B,OAHKu1D,EAAWvrB,KAAKmmG,QAAQ73I,KACzBA,EAAIi9D,EAAWvrB,KAAKuiB,UAAUj0D,IAE3Bi9D,EAAWvrB,KAAKjsB,MAAMzlB,GAEjC,IAAK,OACD,OAAO,IAAIi9D,EAAWF,KAAKrnD,EAAK,MAAOA,EAAK,MAAOA,EAAK,MAAOA,EAAK,OAM5E,OAAO2pH,EAAQp2H,IAiEnBzJ,EAAQw2I,gBA9DR,SAAyB/sI,EAAMqtD,EAAKnsD,GAChC,IAAIw9E,EAAM1+E,aAAgB21H,cAAgB31H,EAAOA,EAAKilG,gBAElDlwC,EAAOqhE,EADXl1H,EAASA,GAAUw9E,GAEfzxB,EAAS8H,EAAKb,YAClB,IAAKa,EAAKisC,oCAAoC3zC,GAC1C,OAAO,KAEX,IAAIwhF,EAAO,KACP5vD,EAAUj/E,EAAKi/E,QAAQp8E,cAI3B,GAAgB,SAAZo8E,EAAoB,CACpB,IAAI6vD,EAAQ,IAAI96E,EAAWiB,UAAU5oC,WAAWrsB,EAAKvB,aAAa,MAAQ,KAAM4tB,WAAWrsB,EAAKvB,aAAa,MAAQ,KAAM4tB,WAAWrsB,EAAKvB,aAAa,UAAY,KAAM4tB,WAAWrsB,EAAKvB,aAAa,WAAa,MAEhNswI,EAAatZ,EAAsBz1H,EAAMkB,GACzC8tI,GAAuB,EAAI5B,EAAS7V,iBAAiBwX,GAGrDE,EAAUvwD,EAAIi5C,qBAClBsX,EAAQC,WAAWF,EAAqBnW,SAAU5rE,EAAOlhB,EAAGkhB,EAAOjhB,GACnE,IAAI3J,GAAO,EAAI+qG,EAASpW,oBAAoB8X,EAAOG,EAAQr+E,OAAO/N,SAASksF,IAC3EF,EAAO76E,EAAWiB,UAAUl9D,OAAOsqC,GAAM2+D,oCAAoC3zC,EAAK2hF,EAAqBnW,eAEtG,GAAgB,SAAZ55C,GACO,YAAZA,GACY,aAAZA,GACY,WAAZA,GACY,YAAZA,EAAuB,CAKvB,IAJA,IAAIkwD,EAAuB,SAAZlwD,EAAqBj/E,GAAO,EAAIktI,EAAO5kF,QAAQtoD,GAC1D+rI,GAAU,EAAImB,EAAOvtF,QAAQwvF,GAC7BC,EAAcr3F,IACds3F,EAAiB,GACZ54I,EAAI,EAAG25D,EAAK27E,EAAQ5wI,OAAQ1E,EAAI25D,EAAI35D,GAAK,EAAG,CACjD,IAAI64I,EAAWvD,EAAQt1I,GAGnB84I,GAAK,EAAInC,EAASvV,gBAAgByX,EAASvjG,EAAGujG,EAAStjG,GAC3DujG,EAAKA,EAAGzW,gBAAgBrD,EAAsBz1H,EAAMkB,IACpD,IAAIsuI,EAAMx7E,EAAWzH,MAAMx0D,OAAOw3I,GAC9BE,EAAiBD,EAAInlF,SAAS4C,GAI9ByiF,EAAkC,IAApBF,EAAInlF,SAASgD,GAC3BhD,EAAWolF,EAAiBC,EAC5BrlF,EAAW+kF,GACXA,EAAc/kF,EACdglF,EAAiB,CAAC,CAAE1vF,OAAQ2vF,EAAUI,YAAaA,KAE9CrlF,EAAW+kF,EAAc,GAC9BC,EAAerzI,KAAK,CAAE2jD,OAAQ2vF,EAAUI,YAAaA,IAG7DL,EAAezuI,MAAK,SAAU4D,EAAGC,GAAK,OAAOD,EAAEkrI,YAAcjrI,EAAEirI,eAC3DL,EAAe,KACfR,EAAO76E,EAAWzH,MAAMx0D,OAAOs3I,EAAe,GAAG1vF,SAGzD,OAAOkvF,GAMXt4I,EAAQ89B,QAHR,SAAiBr0B,EAAM7G,GACnB,OAAO60I,EAAgBhuI,EAAM7G,EAAS,YAM1C5C,EAAQ+/H,iBAHR,SAA0Bt2H,EAAM7G,GAC5B,OAAO60I,EAAgBhuI,EAAM7G,EAAS,qBAkE1C5C,EAAQggI,iBAlCR,SAA0Bv2H,EAAM7G,EAASuvC,GACrC,IAAI1gC,GAAK,EAAIk7F,EAAOmB,UAAU37D,GAE1BrU,GAAU,EAAI6uE,EAAOgB,kBAAkB,iBACvCyrC,GAAQ,EAAIzsC,EAAOgB,kBAAkB,UACzC,EAAI6mC,EAAOt+H,MAAMkjI,EAAO,CAAE,aAAc,IAAM3nI,IAC9CqsB,EAAQz1B,YAAY+wI,GACpB3vI,EAAKpB,YAAYy1B,GACjB,IACI,OAAO45G,EAAe55G,EAASl7B,GAEnC,MAAOkO,GAEH,GAAyD,SAArD/K,SAAS+N,gBAAgB5L,aAAa,WAAuB,CAE7D,IAAIyvI,EAAM75G,EACV65G,EAAI3T,UAAY,GAChB,IAAIj4F,EAAM7lC,OACNmzI,EAAc1B,EAAIzvI,aAAa,MAC/BmxI,IACAttG,EAAIutG,QAAQD,GAAe1B,GAG/B,IADA,IAAIp5H,EAAUwtB,EAAIwtG,WAAW5B,GACpBz3I,EAAI,EAAG25D,EAAKt7C,EAAQ3Z,OAAQ1E,EAAI25D,EAAI35D,GAAK,EAAG,CACjD,IAAIyK,EAAS4T,EAAQre,GACjBslI,EAAW,IAAIz5F,EAAIu7F,SAASqQ,EAAKhtI,EAAQzK,GAC7C6rC,EAAIi4F,UAAUv+H,KAAK+/H,GACnBmS,EAAI3T,UAAU9jI,GAAKslI,EACnBA,EAASgU,aAIrB,OAAO,cAwBXx5I,EAAQu2I,sBAAwBA,G,6BC/ahC31I,OAAOC,eAAeb,EAAS,aAAc,CAAEmB,OAAO,IACtDnB,EAAQokD,cAAW,EAkBnBpkD,EAAQokD,SAjBR,SAAkBz7C,EAAIk2B,GAClB,IAAIu3B,EAAQnzD,UACE,IAAV47B,IAAoBA,EAAQ,IAChC,IAAIjC,EAAQ,KACZ,OAAO,WAEH,IADA,IAAIxkB,EAAO,GACF/L,EAAK,EAAGA,EAAK3C,UAAU9E,OAAQyH,IACpC+L,EAAK/L,GAAM3C,UAAU2C,GAErBuwB,GACAoC,aAAapC,GAEjBA,EAAQ12B,OAAO2c,YAAW,WACtBla,EAAGlC,MAAM2vD,EAAOh+C,KACjBymB,M,sYCjBX;;;;;;;;;;;;;;;;;;;;;;;;;AAwBA,IAAI46G,EAA8B,oBAAXvzI,QAA8C,oBAAbH,UAAiD,oBAAd02D,UAEvFi9E,EAAkB,WAEpB,IADA,IAAIC,EAAwB,CAAC,OAAQ,UAAW,WACvCz5I,EAAI,EAAGA,EAAIy5I,EAAsB/0I,OAAQ1E,GAAK,EACrD,GAAIu5I,GAAah9E,UAAUU,UAAUz2D,QAAQizI,EAAsBz5I,KAAO,EACxE,OAAO,EAGX,OAAO,EAPa,GAqCtB,IAWIkkD,EAXqBq1F,GAAavzI,OAAOkqE,QA3B7C,SAA2BznE,GACzB,IAAI88D,GAAS,EACb,OAAO,WACDA,IAGJA,GAAS,EACTv/D,OAAOkqE,QAAQ3wD,UAAUM,MAAK,WAC5B0lD,GAAS,EACT98D,UAKN,SAAsBA,GACpB,IAAIixI,GAAY,EAChB,OAAO,WACAA,IACHA,GAAY,EACZ/2H,YAAW,WACT+2H,GAAY,EACZjxI,MACC+wI,MAyBT,SAASzyI,EAAW4yI,GAElB,OAAOA,GAA8D,sBADvD,GACoBjzI,SAASvG,KAAKw5I,GAUlD,SAASC,EAAyBrf,EAAS54H,GACzC,GAAyB,IAArB44H,EAAQtzH,SACV,MAAO,GAGT,IACIsgB,EADSgzG,EAAQnpH,cAAc2C,YAClB+f,iBAAiBymG,EAAS,MAC3C,OAAO54H,EAAW4lB,EAAI5lB,GAAY4lB,EAUpC,SAASsyH,EAActf,GACrB,MAAyB,SAArBA,EAAQ/pH,SACH+pH,EAEFA,EAAQnyH,YAAcmyH,EAAQzzF,KAUvC,SAASgzG,EAAgBvf,GAEvB,IAAKA,EACH,OAAO10H,SAASwiB,KAGlB,OAAQkyG,EAAQ/pH,UACd,IAAK,OACL,IAAK,OACH,OAAO+pH,EAAQnpH,cAAciX,KAC/B,IAAK,YACH,OAAOkyG,EAAQlyG,KAKnB,IAAI0xH,EAAwBH,EAAyBrf,GACjDp9F,EAAW48G,EAAsB58G,SACjCC,EAAY28G,EAAsB38G,UAClCC,EAAY08G,EAAsB18G,UAEtC,MAAI,wBAAwB1rB,KAAKwrB,EAAWE,EAAYD,GAC/Cm9F,EAGFuf,EAAgBD,EAActf,IAUvC,SAASyf,EAAiBz8F,GACxB,OAAOA,GAAaA,EAAUqrC,cAAgBrrC,EAAUqrC,cAAgBrrC,EAG1E,IAAI08F,EAASV,MAAgBvzI,OAAOk0I,uBAAwBr0I,SAAS6qI,cACjEyJ,EAASZ,GAAa,UAAU5nI,KAAK4qD,UAAUU,WASnD,SAASqK,EAAKzK,GACZ,OAAgB,KAAZA,EACKo9E,EAEO,KAAZp9E,EACKs9E,EAEFF,GAAUE,EAUnB,SAASC,EAAgB7f,GACvB,IAAKA,EACH,OAAO10H,SAAS+N,gBAQlB,IALA,IAAIymI,EAAiB/yE,EAAK,IAAMzhE,SAASwiB,KAAO,KAG5C2jB,EAAeuuF,EAAQvuF,cAAgB,KAEpCA,IAAiBquG,GAAkB9f,EAAQ+f,oBAChDtuG,GAAgBuuF,EAAUA,EAAQ+f,oBAAoBtuG,aAGxD,IAAIx7B,EAAWw7B,GAAgBA,EAAax7B,SAE5C,OAAKA,GAAyB,SAAbA,GAAoC,SAAbA,GAMsB,IAA1D,CAAC,KAAM,KAAM,SAAShK,QAAQwlC,EAAax7B,WAA2E,WAAvDopI,EAAyB5tG,EAAc,YACjGouG,EAAgBpuG,GAGlBA,EATEuuF,EAAUA,EAAQnpH,cAAcwC,gBAAkB/N,SAAS+N,gBA4BtE,SAAS2mI,EAAQ7yI,GACf,OAAwB,OAApBA,EAAKU,WACAmyI,EAAQ7yI,EAAKU,YAGfV,EAWT,SAAS8yI,EAAuBC,EAAUC,GAExC,KAAKD,GAAaA,EAASxzI,UAAayzI,GAAaA,EAASzzI,UAC5D,OAAOpB,SAAS+N,gBAIlB,IAAI+mI,EAAQF,EAASplI,wBAAwBqlI,GAAYE,KAAKC,4BAC1Dx2I,EAAQs2I,EAAQF,EAAWC,EAC3BxwI,EAAMywI,EAAQD,EAAWD,EAGzBnpF,EAAQzrD,SAASi1I,cACrBxpF,EAAMypF,SAAS12I,EAAO,GACtBitD,EAAM0pF,OAAO9wI,EAAK,GAClB,IA/CyBqwH,EACrB/pH,EA8CAyqI,EAA0B3pF,EAAM2pF,wBAIpC,GAAIR,IAAaQ,GAA2BP,IAAaO,GAA2B52I,EAAM+I,SAASlD,GACjG,MAjDe,UAFbsG,GADqB+pH,EAoDD0gB,GAnDDzqI,WAKH,SAAbA,GAAuB4pI,EAAgB7f,EAAQhyF,qBAAuBgyF,EAkDpE6f,EAAgBa,GAHdA,EAOX,IAAIC,EAAeX,EAAQE,GAC3B,OAAIS,EAAap0G,KACR0zG,EAAuBU,EAAap0G,KAAM4zG,GAE1CF,EAAuBC,EAAUF,EAAQG,GAAU5zG,MAY9D,SAASq0G,EAAU5gB,GACjB,IAAI3uB,EAAOpiG,UAAU9E,OAAS,QAAsBO,IAAjBuE,UAAU,GAAmBA,UAAU,GAAK,MAE3E4xI,EAAqB,QAATxvC,EAAiB,YAAc,aAC3Cp7F,EAAW+pH,EAAQ/pH,SAEvB,GAAiB,SAAbA,GAAoC,SAAbA,EAAqB,CAC9C,IAAI4hB,EAAOmoG,EAAQnpH,cAAcwC,gBAC7BynI,EAAmB9gB,EAAQnpH,cAAciqI,kBAAoBjpH,EACjE,OAAOipH,EAAiBD,GAG1B,OAAO7gB,EAAQ6gB,GAYjB,SAASE,EAAc1vG,EAAM2uF,GAC3B,IAAI1iG,EAAWruB,UAAU9E,OAAS,QAAsBO,IAAjBuE,UAAU,IAAmBA,UAAU,GAE1E+wB,EAAY4gH,EAAU5gB,EAAS,OAC/B//F,EAAa2gH,EAAU5gB,EAAS,QAChCghB,EAAW1jH,GAAY,EAAI,EAK/B,OAJA+T,EAAK53B,KAAOumB,EAAYghH,EACxB3vG,EAAK2yB,QAAUhkC,EAAYghH,EAC3B3vG,EAAKtS,MAAQkB,EAAa+gH,EAC1B3vG,EAAKxW,OAASoF,EAAa+gH,EACpB3vG,EAaT,SAAS4vG,EAAerjH,EAAQs5G,GAC9B,IAAIgK,EAAiB,MAAThK,EAAe,OAAS,MAChCiK,EAAkB,SAAVD,EAAmB,QAAU,SAEzC,OAAO7lH,WAAWuC,EAAO,SAAWsjH,EAAQ,UAAY7lH,WAAWuC,EAAO,SAAWujH,EAAQ,UAG/F,SAASC,EAAQlK,EAAMppH,EAAM+J,EAAMwpH,GACjC,OAAO/wI,KAAKitB,IAAIzP,EAAK,SAAWopH,GAAOppH,EAAK,SAAWopH,GAAOr/G,EAAK,SAAWq/G,GAAOr/G,EAAK,SAAWq/G,GAAOr/G,EAAK,SAAWq/G,GAAOnqE,EAAK,IAAM7wC,SAASrE,EAAK,SAAWq/G,IAASh7G,SAASmlH,EAAc,UAAqB,WAATnK,EAAoB,MAAQ,UAAYh7G,SAASmlH,EAAc,UAAqB,WAATnK,EAAoB,SAAW,WAAa,GAG5U,SAASoK,EAAeh2I,GACtB,IAAIwiB,EAAOxiB,EAASwiB,KAChB+J,EAAOvsB,EAAS+N,gBAChBgoI,EAAgBt0E,EAAK,KAAOxzC,iBAAiB1B,GAEjD,MAAO,CACLoE,OAAQmlH,EAAQ,SAAUtzH,EAAM+J,EAAMwpH,GACtCxnH,MAAOunH,EAAQ,QAAStzH,EAAM+J,EAAMwpH,IAIxC,IAAIE,EAAiB,SAAU7iF,EAAU8iF,GACvC,KAAM9iF,aAAoB8iF,GACxB,MAAM,IAAI55H,UAAU,sCAIpB65H,EAAc,WAChB,SAAShyE,EAAiBv/D,EAAQikB,GAChC,IAAK,IAAI1uB,EAAI,EAAGA,EAAI0uB,EAAMhqB,OAAQ1E,IAAK,CACrC,IAAIi8I,EAAavtH,EAAM1uB,GACvBi8I,EAAWr7I,WAAaq7I,EAAWr7I,aAAc,EACjDq7I,EAAW72H,cAAe,EACtB,UAAW62H,IAAYA,EAAW7tH,UAAW,GACjD1tB,OAAOC,eAAe8J,EAAQwxI,EAAW16I,IAAK06I,IAIlD,OAAO,SAAUF,EAAaG,EAAYC,GAGxC,OAFID,GAAYlyE,EAAiB+xE,EAAYn6I,UAAWs6I,GACpDC,GAAanyE,EAAiB+xE,EAAaI,GACxCJ,GAdO,GAsBdp7I,EAAiB,SAAUqG,EAAKzF,EAAKN,GAYvC,OAXIM,KAAOyF,EACTtG,OAAOC,eAAeqG,EAAKzF,EAAK,CAC9BN,MAAOA,EACPL,YAAY,EACZwkB,cAAc,EACdgJ,UAAU,IAGZpnB,EAAIzF,GAAON,EAGN+F,GAGLo1I,EAAW17I,OAAO+rD,QAAU,SAAUhiD,GACxC,IAAK,IAAIzK,EAAI,EAAGA,EAAIwJ,UAAU9E,OAAQ1E,IAAK,CACzC,IAAI8mB,EAAStd,UAAUxJ,GAEvB,IAAK,IAAIuB,KAAOulB,EACVpmB,OAAOkB,UAAUC,eAAe1B,KAAK2mB,EAAQvlB,KAC/CkJ,EAAOlJ,GAAOulB,EAAOvlB,IAK3B,OAAOkJ,GAUT,SAAS4xI,EAAcC,GACrB,OAAOF,EAAS,GAAIE,EAAS,CAC3BlnH,MAAOknH,EAAQhjH,KAAOgjH,EAAQloH,MAC9BmqC,OAAQ+9E,EAAQtoI,IAAMsoI,EAAQ9lH,SAWlC,SAAS4C,EAAsBmhG,GAC7B,IAAI3uF,EAAO,GAKX,IACE,GAAI07B,EAAK,IAAK,CACZ17B,EAAO2uF,EAAQnhG,wBACf,IAAImB,EAAY4gH,EAAU5gB,EAAS,OAC/B//F,EAAa2gH,EAAU5gB,EAAS,QACpC3uF,EAAK53B,KAAOumB,EACZqR,EAAKtS,MAAQkB,EACboR,EAAK2yB,QAAUhkC,EACfqR,EAAKxW,OAASoF,OAEdoR,EAAO2uF,EAAQnhG,wBAEjB,MAAOxoB,IAET,IAAI1M,EAAS,CACXo1B,KAAMsS,EAAKtS,KACXtlB,IAAK43B,EAAK53B,IACVogB,MAAOwX,EAAKxW,MAAQwW,EAAKtS,KACzB9C,OAAQoV,EAAK2yB,OAAS3yB,EAAK53B,KAIzBuoI,EAA6B,SAArBhiB,EAAQ/pH,SAAsBqrI,EAAethB,EAAQnpH,eAAiB,GAC9EgjB,EAAQmoH,EAAMnoH,OAASmmG,EAAQ0c,aAAe/yI,EAAOkwB,MACrDoC,EAAS+lH,EAAM/lH,QAAU+jG,EAAQ2c,cAAgBhzI,EAAOsyB,OAExDgmH,EAAiBjiB,EAAQ9kG,YAAcrB,EACvCqoH,EAAgBliB,EAAQ3jG,aAAeJ,EAI3C,GAAIgmH,GAAkBC,EAAe,CACnC,IAAItkH,EAASyhH,EAAyBrf,GACtCiiB,GAAkBhB,EAAerjH,EAAQ,KACzCskH,GAAiBjB,EAAerjH,EAAQ,KAExCj0B,EAAOkwB,OAASooH,EAChBt4I,EAAOsyB,QAAUimH,EAGnB,OAAOJ,EAAcn4I,GAGvB,SAASw4I,EAAqC1+H,EAAU9a,GACtD,IAAIy5I,EAAgBnzI,UAAU9E,OAAS,QAAsBO,IAAjBuE,UAAU,IAAmBA,UAAU,GAE/E2wI,EAAS7yE,EAAK,IACds1E,EAA6B,SAApB15I,EAAOsN,SAChBqsI,EAAezjH,EAAsBpb,GACrC8+H,EAAa1jH,EAAsBl2B,GACnC65I,EAAejD,EAAgB97H,GAE/Bma,EAASyhH,EAAyB12I,GAClCwzB,EAAiBd,WAAWuC,EAAOzB,gBACnCsmH,EAAkBpnH,WAAWuC,EAAO6kH,iBAGpCL,GAAiBC,IACnBE,EAAW9oI,IAAMnJ,KAAKitB,IAAIglH,EAAW9oI,IAAK,GAC1C8oI,EAAWxjH,KAAOzuB,KAAKitB,IAAIglH,EAAWxjH,KAAM,IAE9C,IAAIgjH,EAAUD,EAAc,CAC1BroI,IAAK6oI,EAAa7oI,IAAM8oI,EAAW9oI,IAAM0iB,EACzC4C,KAAMujH,EAAavjH,KAAOwjH,EAAWxjH,KAAO0jH,EAC5C5oH,MAAOyoH,EAAazoH,MACpBoC,OAAQqmH,EAAarmH,SASvB,GAPA8lH,EAAQW,UAAY,EACpBX,EAAQnnH,WAAa,GAMhBglH,GAAUyC,EAAQ,CACrB,IAAIK,EAAYrnH,WAAWuC,EAAO8kH,WAC9B9nH,EAAaS,WAAWuC,EAAOhD,YAEnCmnH,EAAQtoI,KAAO0iB,EAAiBumH,EAChCX,EAAQ/9E,QAAU7nC,EAAiBumH,EACnCX,EAAQhjH,MAAQ0jH,EAAkB7nH,EAClCmnH,EAAQlnH,OAAS4nH,EAAkB7nH,EAGnCmnH,EAAQW,UAAYA,EACpBX,EAAQnnH,WAAaA,EAOvB,OAJIglH,IAAWwC,EAAgBz5I,EAAOkK,SAAS2vI,GAAgB75I,IAAW65I,GAA0C,SAA1BA,EAAavsI,YACrG8rI,EAAUhB,EAAcgB,EAASp5I,IAG5Bo5I,EAGT,SAASY,EAA8C3iB,GACrD,IAAI4iB,EAAgB3zI,UAAU9E,OAAS,QAAsBO,IAAjBuE,UAAU,IAAmBA,UAAU,GAE/E4oB,EAAOmoG,EAAQnpH,cAAcwC,gBAC7BwpI,EAAiBV,EAAqCniB,EAASnoG,GAC/DgC,EAAQvpB,KAAKitB,IAAI1F,EAAK6kH,YAAajxI,OAAOq3I,YAAc,GACxD7mH,EAAS3rB,KAAKitB,IAAI1F,EAAK8kH,aAAclxI,OAAOs3I,aAAe,GAE3D/iH,EAAa4iH,EAAkC,EAAlBhC,EAAU/oH,GACvCoI,EAAc2iH,EAA0C,EAA1BhC,EAAU/oH,EAAM,QAE9C8Y,EAAS,CACXl3B,IAAKumB,EAAY6iH,EAAeppI,IAAMopI,EAAeH,UACrD3jH,KAAMkB,EAAa4iH,EAAe9jH,KAAO8jH,EAAejoH,WACxDf,MAAOA,EACPoC,OAAQA,GAGV,OAAO6lH,EAAcnxG,GAWvB,SAASqyG,EAAQhjB,GACf,IAAI/pH,EAAW+pH,EAAQ/pH,SACvB,GAAiB,SAAbA,GAAoC,SAAbA,EACzB,OAAO,EAET,GAAsD,UAAlDopI,EAAyBrf,EAAS,YACpC,OAAO,EAET,IAAInyH,EAAayxI,EAActf,GAC/B,QAAKnyH,GAGEm1I,EAAQn1I,GAWjB,SAASo1I,EAA6BjjB,GAEpC,IAAKA,IAAYA,EAAQkjB,eAAiBn2E,IACxC,OAAOzhE,SAAS+N,gBAGlB,IADA,IAAInB,EAAK8nH,EAAQkjB,cACVhrI,GAAoD,SAA9CmnI,EAAyBnnI,EAAI,cACxCA,EAAKA,EAAGgrI,cAEV,OAAOhrI,GAAM5M,SAAS+N,gBAcxB,SAAS8pI,EAAcC,EAAQpgG,EAAW/jB,EAASokH,GACjD,IAAIjB,EAAgBnzI,UAAU9E,OAAS,QAAsBO,IAAjBuE,UAAU,IAAmBA,UAAU,GAI/Eq0I,EAAa,CAAE7pI,IAAK,EAAGslB,KAAM,GAC7B0S,EAAe2wG,EAAgBa,EAA6BG,GAAUnD,EAAuBmD,EAAQ3D,EAAiBz8F,IAG1H,GAA0B,aAAtBqgG,EACFC,EAAaX,EAA8ClxG,EAAc2wG,OACpE,CAEL,IAAImB,OAAiB,EACK,iBAAtBF,EAE8B,UADhCE,EAAiBhE,EAAgBD,EAAct8F,KAC5B/sC,WACjBstI,EAAiBH,EAAOvsI,cAAcwC,iBAGxCkqI,EAD+B,WAAtBF,EACQD,EAAOvsI,cAAcwC,gBAErBgqI,EAGnB,IAAItB,EAAUI,EAAqCoB,EAAgB9xG,EAAc2wG,GAGjF,GAAgC,SAA5BmB,EAAettI,UAAwB+sI,EAAQvxG,GAWjD6xG,EAAavB,MAXmD,CAChE,IAAIyB,EAAkBlC,EAAe8B,EAAOvsI,eACxColB,EAASunH,EAAgBvnH,OACzBpC,EAAQ2pH,EAAgB3pH,MAE5BypH,EAAW7pI,KAAOsoI,EAAQtoI,IAAMsoI,EAAQW,UACxCY,EAAWt/E,OAAS/nC,EAAS8lH,EAAQtoI,IACrC6pI,EAAWvkH,MAAQgjH,EAAQhjH,KAAOgjH,EAAQnnH,WAC1C0oH,EAAWzoH,MAAQhB,EAAQkoH,EAAQhjH,MASvC,IAAI0kH,EAAqC,iBADzCxkH,EAAUA,GAAW,GAOrB,OALAqkH,EAAWvkH,MAAQ0kH,EAAkBxkH,EAAUA,EAAQF,MAAQ,EAC/DukH,EAAW7pI,KAAOgqI,EAAkBxkH,EAAUA,EAAQxlB,KAAO,EAC7D6pI,EAAWzoH,OAAS4oH,EAAkBxkH,EAAUA,EAAQpE,OAAS,EACjEyoH,EAAWt/E,QAAUy/E,EAAkBxkH,EAAUA,EAAQ+kC,QAAU,EAE5Ds/E,EAGT,SAASI,EAAQC,GAIf,OAHYA,EAAK9pH,MACJ8pH,EAAK1nH,OAcpB,SAAS2nH,EAAqBC,EAAWC,EAASV,EAAQpgG,EAAWqgG,GACnE,IAAIpkH,EAAUhwB,UAAU9E,OAAS,QAAsBO,IAAjBuE,UAAU,GAAmBA,UAAU,GAAK,EAElF,IAAmC,IAA/B40I,EAAU53I,QAAQ,QACpB,OAAO43I,EAGT,IAAIP,EAAaH,EAAcC,EAAQpgG,EAAW/jB,EAASokH,GAEvDU,EAAQ,CACVtqI,IAAK,CACHogB,MAAOypH,EAAWzpH,MAClBoC,OAAQ6nH,EAAQrqI,IAAM6pI,EAAW7pI,KAEnCohB,MAAO,CACLhB,MAAOypH,EAAWzoH,MAAQipH,EAAQjpH,MAClCoB,OAAQqnH,EAAWrnH,QAErB+nC,OAAQ,CACNnqC,MAAOypH,EAAWzpH,MAClBoC,OAAQqnH,EAAWt/E,OAAS8/E,EAAQ9/E,QAEtCjlC,KAAM,CACJlF,MAAOiqH,EAAQ/kH,KAAOukH,EAAWvkH,KACjC9C,OAAQqnH,EAAWrnH,SAInB+nH,EAAc79I,OAAOyR,KAAKmsI,GAAOh1I,KAAI,SAAU/H,GACjD,OAAO66I,EAAS,CACd76I,IAAKA,GACJ+8I,EAAM/8I,GAAM,CACbi9I,KAAMP,EAAQK,EAAM/8I,SAErB4I,MAAK,SAAU4D,EAAGC,GACnB,OAAOA,EAAEwwI,KAAOzwI,EAAEywI,QAGhBC,EAAgBF,EAAYhqI,QAAO,SAAUmqI,GAC/C,IAAItqH,EAAQsqH,EAAMtqH,MACdoC,EAASkoH,EAAMloH,OACnB,OAAOpC,GAASupH,EAAO1G,aAAezgH,GAAUmnH,EAAOzG,gBAGrDyH,EAAoBF,EAAc/5I,OAAS,EAAI+5I,EAAc,GAAGl9I,IAAMg9I,EAAY,GAAGh9I,IAErFq9I,EAAYR,EAAUlyI,MAAM,KAAK,GAErC,OAAOyyI,GAAqBC,EAAY,IAAMA,EAAY,IAa5D,SAASC,EAAoB39H,EAAOy8H,EAAQpgG,GAC1C,IAAIo/F,EAAgBnzI,UAAU9E,OAAS,QAAsBO,IAAjBuE,UAAU,GAAmBA,UAAU,GAAK,KAEpFs1I,EAAqBnC,EAAgBa,EAA6BG,GAAUnD,EAAuBmD,EAAQ3D,EAAiBz8F,IAChI,OAAOm/F,EAAqCn/F,EAAWuhG,EAAoBnC,GAU7E,SAASoC,EAAcxkB,GACrB,IACIpiG,EADSoiG,EAAQnpH,cAAc2C,YACf+f,iBAAiBymG,GACjCjlF,EAAI1f,WAAWuC,EAAO8kH,WAAa,GAAKrnH,WAAWuC,EAAO6mH,cAAgB,GAC1EzpG,EAAI3f,WAAWuC,EAAOhD,YAAc,GAAKS,WAAWuC,EAAO8mH,aAAe,GAK9E,MAJa,CACX7qH,MAAOmmG,EAAQ9kG,YAAc8f,EAC7B/e,OAAQ+jG,EAAQ3jG,aAAe0e,GAYnC,SAAS4pG,EAAqBd,GAC5B,IAAI1lI,EAAO,CAAE4gB,KAAM,QAASlE,MAAO,OAAQmpC,OAAQ,MAAOvqD,IAAK,UAC/D,OAAOoqI,EAAUrzI,QAAQ,0BAA0B,SAAUsN,GAC3D,OAAOK,EAAKL,MAchB,SAAS8mI,EAAiBxB,EAAQyB,EAAkBhB,GAClDA,EAAYA,EAAUlyI,MAAM,KAAK,GAGjC,IAAImzI,EAAaN,EAAcpB,GAG3B2B,EAAgB,CAClBlrH,MAAOirH,EAAWjrH,MAClBoC,OAAQ6oH,EAAW7oH,QAIjB+oH,GAAoD,IAA1C,CAAC,QAAS,QAAQ/4I,QAAQ43I,GACpCoB,EAAWD,EAAU,MAAQ,OAC7BE,EAAgBF,EAAU,OAAS,MACnCG,EAAcH,EAAU,SAAW,QACnCI,EAAwBJ,EAAqB,QAAX,SAStC,OAPAD,EAAcE,GAAYJ,EAAiBI,GAAYJ,EAAiBM,GAAe,EAAIL,EAAWK,GAAe,EAEnHJ,EAAcG,GADZrB,IAAcqB,EACeL,EAAiBK,GAAiBJ,EAAWM,GAE7CP,EAAiBF,EAAqBO,IAGhEH,EAYT,SAAS7qI,EAAKvO,EAAKiR,GAEjB,OAAIlT,MAAMrC,UAAU6S,KACXvO,EAAIuO,KAAK0C,GAIXjR,EAAIqO,OAAO4C,GAAO,GAqC3B,SAASyoI,EAAan1D,EAAWnlE,EAAMu6H,GAoBrC,YAnB8B56I,IAAT46I,EAAqBp1D,EAAYA,EAAUpkF,MAAM,EA1BxE,SAAmBH,EAAKqf,EAAMtkB,GAE5B,GAAIgD,MAAMrC,UAAU2jD,UAClB,OAAOr/C,EAAIq/C,WAAU,SAAUxyC,GAC7B,OAAOA,EAAIwS,KAAUtkB,KAKzB,IAAI+P,EAAQyD,EAAKvO,GAAK,SAAUc,GAC9B,OAAOA,EAAIue,KAAUtkB,KAEvB,OAAOiF,EAAIM,QAAQwK,GAcsDu0C,CAAUklC,EAAW,OAAQo1D,KAEvF3xG,SAAQ,SAAUqtG,GAC3BA,EAAmB,UAErBj4H,QAAQC,KAAK,yDAEf,IAAI9a,EAAK8yI,EAAmB,UAAKA,EAAS9yI,GACtC8yI,EAASuE,SAAW/4I,EAAW0B,KAIjC6c,EAAKg3H,QAAQqB,OAAStB,EAAc/2H,EAAKg3H,QAAQqB,QACjDr4H,EAAKg3H,QAAQ/+F,UAAY8+F,EAAc/2H,EAAKg3H,QAAQ/+F,WAEpDj4B,EAAO7c,EAAG6c,EAAMi2H,OAIbj2H,EAUT,SAASkpC,IAEP,IAAIzrD,KAAKme,MAAM6+H,YAAf,CAIA,IAAIz6H,EAAO,CACT2zC,SAAUl2D,KACVo1B,OAAQ,GACR6nH,YAAa,GACbzxI,WAAY,GACZ0xI,SAAS,EACT3D,QAAS,IAIXh3H,EAAKg3H,QAAQ/+F,UAAYshG,EAAoB97I,KAAKme,MAAOne,KAAK46I,OAAQ56I,KAAKw6C,UAAWx6C,KAAKL,QAAQw9I,eAKnG56H,EAAK84H,UAAYD,EAAqBp7I,KAAKL,QAAQ07I,UAAW94H,EAAKg3H,QAAQ/+F,UAAWx6C,KAAK46I,OAAQ56I,KAAKw6C,UAAWx6C,KAAKL,QAAQ+nF,UAAUlhC,KAAKq0F,kBAAmB76I,KAAKL,QAAQ+nF,UAAUlhC,KAAK/vB,SAG9LlU,EAAK66H,kBAAoB76H,EAAK84H,UAE9B94H,EAAK46H,cAAgBn9I,KAAKL,QAAQw9I,cAGlC56H,EAAKg3H,QAAQqB,OAASwB,EAAiBp8I,KAAK46I,OAAQr4H,EAAKg3H,QAAQ/+F,UAAWj4B,EAAK84H,WAEjF94H,EAAKg3H,QAAQqB,OAAOpoH,SAAWxyB,KAAKL,QAAQw9I,cAAgB,QAAU,WAGtE56H,EAAOs6H,EAAa78I,KAAK0nF,UAAWnlE,GAI/BviB,KAAKme,MAAMk/H,UAIdr9I,KAAKL,QAAQ83H,SAASl1G,IAHtBviB,KAAKme,MAAMk/H,WAAY,EACvBr9I,KAAKL,QAAQ29I,SAAS/6H,KAY1B,SAASg7H,EAAkB71D,EAAW81D,GACpC,OAAO91D,EAAUphC,MAAK,SAAU60F,GAC9B,IAAI39I,EAAO29I,EAAK39I,KAEhB,OADc29I,EAAK4B,SACDv/I,IAASggJ,KAW/B,SAASC,EAAyB7+I,GAIhC,IAHA,IAAI2xI,EAAW,EAAC,EAAO,KAAM,SAAU,MAAO,KAC1CmN,EAAY9+I,EAAS0iE,OAAO,GAAGx/C,cAAgBljB,EAAS0E,MAAM,GAEzDrG,EAAI,EAAGA,EAAIszI,EAAS5uI,OAAQ1E,IAAK,CACxC,IAAI05B,EAAS45G,EAAStzI,GAClB0gJ,EAAUhnH,EAAS,GAAKA,EAAS+mH,EAAY9+I,EACjD,QAA4C,IAAjCkE,SAASwiB,KAAKhB,MAAMq5H,GAC7B,OAAOA,EAGX,OAAO,KAQT,SAASlmE,IAsBP,OArBAz3E,KAAKme,MAAM6+H,aAAc,EAGrBO,EAAkBv9I,KAAK0nF,UAAW,gBACpC1nF,KAAK46I,OAAOzrI,gBAAgB,eAC5BnP,KAAK46I,OAAOt2H,MAAMkO,SAAW,GAC7BxyB,KAAK46I,OAAOt2H,MAAMrT,IAAM,GACxBjR,KAAK46I,OAAOt2H,MAAMiS,KAAO,GACzBv2B,KAAK46I,OAAOt2H,MAAM+N,MAAQ,GAC1BryB,KAAK46I,OAAOt2H,MAAMk3C,OAAS,GAC3Bx7D,KAAK46I,OAAOt2H,MAAMs5H,WAAa,GAC/B59I,KAAK46I,OAAOt2H,MAAMm5H,EAAyB,cAAgB,IAG7Dz9I,KAAK69I,wBAID79I,KAAKL,QAAQm+I,iBACf99I,KAAK46I,OAAOv1I,WAAWC,YAAYtF,KAAK46I,QAEnC56I,KAQT,SAAS+9I,EAAUvmB,GACjB,IAAInpH,EAAgBmpH,EAAQnpH,cAC5B,OAAOA,EAAgBA,EAAc2C,YAAc/N,OAoBrD,SAAS+6I,EAAoBxjG,EAAW76C,EAASwe,EAAO8/H,GAEtD9/H,EAAM8/H,YAAcA,EACpBF,EAAUvjG,GAAWtpC,iBAAiB,SAAUiN,EAAM8/H,YAAa,CAAE9vE,SAAS,IAG9E,IAAI+vE,EAAgBnH,EAAgBv8F,GAKpC,OA5BF,SAAS2jG,EAAsBnE,EAAcxxH,EAAOliB,EAAU83I,GAC5D,IAAIC,EAAmC,SAA1BrE,EAAavsI,SACtB/F,EAAS22I,EAASrE,EAAa3rI,cAAc2C,YAAcgpI,EAC/DtyI,EAAOwJ,iBAAiBsX,EAAOliB,EAAU,CAAE6nE,SAAS,IAE/CkwE,GACHF,EAAsBpH,EAAgBrvI,EAAOrC,YAAamjB,EAAOliB,EAAU83I,GAE7EA,EAAc57I,KAAKkF,GAgBnBy2I,CAAsBD,EAAe,SAAU//H,EAAM8/H,YAAa9/H,EAAMigI,eACxEjgI,EAAM+/H,cAAgBA,EACtB//H,EAAMmgI,eAAgB,EAEfngI,EAST,SAASogI,IACFv+I,KAAKme,MAAMmgI,gBACdt+I,KAAKme,MAAQ6/H,EAAoBh+I,KAAKw6C,UAAWx6C,KAAKL,QAASK,KAAKme,MAAOne,KAAKw+I,iBAkCpF,SAASX,IAxBT,IAA8BrjG,EAAWr8B,EAyBnCne,KAAKme,MAAMmgI,gBACbG,qBAAqBz+I,KAAKw+I,gBAC1Bx+I,KAAKme,OA3BqBq8B,EA2BQx6C,KAAKw6C,UA3BFr8B,EA2Bane,KAAKme,MAzBzD4/H,EAAUvjG,GAAW35B,oBAAoB,SAAU1C,EAAM8/H,aAGzD9/H,EAAMigI,cAAcjzG,SAAQ,SAAUzjC,GACpCA,EAAOmZ,oBAAoB,SAAU1C,EAAM8/H,gBAI7C9/H,EAAM8/H,YAAc,KACpB9/H,EAAMigI,cAAgB,GACtBjgI,EAAM+/H,cAAgB,KACtB//H,EAAMmgI,eAAgB,EACfngI,IAwBT,SAAS+rB,EAAUxrC,GACjB,MAAa,KAANA,IAAayrC,MAAMtX,WAAWn0B,KAAO03B,SAAS13B,GAWvD,SAASggJ,EAAUlnB,EAASpiG,GAC1Bz3B,OAAOyR,KAAKgmB,GAAQ+V,SAAQ,SAAU3oB,GACpC,IAAIyC,EAAO,IAEkE,IAAzE,CAAC,QAAS,SAAU,MAAO,QAAS,SAAU,QAAQxhB,QAAQ+e,IAAgB0nB,EAAU9U,EAAO5S,MACjGyC,EAAO,MAETuyG,EAAQlzG,MAAM9B,GAAQ4S,EAAO5S,GAAQyC,KAgIzC,IAAI05H,EAAYnI,GAAa,WAAW5nI,KAAK4qD,UAAUU,WA8GvD,SAAS0kF,EAAmBl3D,EAAWm3D,EAAgBC,GACrD,IAAIC,EAAartI,EAAKg2E,GAAW,SAAUyzD,GAEzC,OADWA,EAAK39I,OACAqhJ,KAGdG,IAAeD,GAAcr3D,EAAUphC,MAAK,SAAUkyF,GACxD,OAAOA,EAASh7I,OAASshJ,GAAiBtG,EAASuE,SAAWvE,EAASZ,MAAQmH,EAAWnH,SAG5F,IAAKoH,EAAY,CACf,IAAIC,EAAc,IAAMJ,EAAiB,IACrCK,EAAY,IAAMJ,EAAgB,IACtCv+H,QAAQC,KAAK0+H,EAAY,4BAA8BD,EAAc,4DAA8DA,EAAc,KAEnJ,OAAOD,EAoIT,IAAIG,EAAa,CAAC,aAAc,OAAQ,WAAY,YAAa,MAAO,UAAW,cAAe,QAAS,YAAa,aAAc,SAAU,eAAgB,WAAY,OAAQ,cAGhLC,EAAkBD,EAAW77I,MAAM,GAYvC,SAAS6wH,GAAUknB,GACjB,IAAI/tE,EAAU7mE,UAAU9E,OAAS,QAAsBO,IAAjBuE,UAAU,IAAmBA,UAAU,GAEzE/E,EAAQ09I,EAAgB37I,QAAQ43I,GAChCl4I,EAAMi8I,EAAgB97I,MAAM5B,EAAQ,GAAGV,OAAOo+I,EAAgB97I,MAAM,EAAG5B,IAC3E,OAAO4rE,EAAUnqE,EAAI8Y,UAAY9Y,EAGnC,IAAIk8I,GACI,OADJA,GAES,YAFTA,GAGgB,mBAiMpB,SAASC,GAAYn3G,EAAQo0G,EAAeF,EAAkBkD,GAC5D,IAAIhG,EAAU,CAAC,EAAG,GAKdiG,GAA0D,IAA9C,CAAC,QAAS,QAAQ/7I,QAAQ87I,GAItCE,EAAYt3G,EAAOh/B,MAAM,WAAW5C,KAAI,SAAUm5I,GACpD,OAAOA,EAAKt1G,UAKVk4D,EAAUm9C,EAAUh8I,QAAQiO,EAAK+tI,GAAW,SAAUC,GACxD,OAAgC,IAAzBA,EAAK52B,OAAO,YAGjB22B,EAAUn9C,KAAiD,IAArCm9C,EAAUn9C,GAAS7+F,QAAQ,MACnD8c,QAAQC,KAAK,gFAKf,IAAIm/H,EAAa,cACbC,GAAmB,IAAbt9C,EAAiB,CAACm9C,EAAUn8I,MAAM,EAAGg/F,GAASthG,OAAO,CAACy+I,EAAUn9C,GAASn5F,MAAMw2I,GAAY,KAAM,CAACF,EAAUn9C,GAASn5F,MAAMw2I,GAAY,IAAI3+I,OAAOy+I,EAAUn8I,MAAMg/F,EAAU,KAAO,CAACm9C,GAqC9L,OAlCAG,EAAMA,EAAIr5I,KAAI,SAAUwvG,EAAIr0G,GAE1B,IAAIi7I,GAAyB,IAAVj7I,GAAe89I,EAAYA,GAAa,SAAW,QAClEK,GAAoB,EACxB,OAAO9pC,EAGNvqE,QAAO,SAAUxgC,EAAGC,GACnB,MAAwB,KAApBD,EAAEA,EAAErJ,OAAS,KAAwC,IAA3B,CAAC,IAAK,KAAK8B,QAAQwH,IAC/CD,EAAEA,EAAErJ,OAAS,GAAKsJ,EAClB40I,GAAoB,EACb70I,GACE60I,GACT70I,EAAEA,EAAErJ,OAAS,IAAMsJ,EACnB40I,GAAoB,EACb70I,GAEAA,EAAEhK,OAAOiK,KAEjB,IAEF1E,KAAI,SAAU4nC,GACb,OAxGN,SAAiBA,EAAKwuG,EAAaJ,EAAeF,GAEhD,IAAIlzI,EAAQglC,EAAIlgC,MAAM,6BAClB/P,GAASiL,EAAM,GACf8b,EAAO9b,EAAM,GAGjB,IAAKjL,EACH,OAAOiwC,EAGT,GAA0B,IAAtBlpB,EAAKxhB,QAAQ,KAAY,CAC3B,IAAI+zH,OAAU,EACd,OAAQvyG,GACN,IAAK,KACHuyG,EAAU+kB,EACV,MACF,IAAK,IACL,IAAK,KACL,QACE/kB,EAAU6kB,EAId,OADW/C,EAAc9hB,GACbmlB,GAAe,IAAMz+I,EAC5B,GAAa,OAAT+mB,GAA0B,OAATA,EAAe,CAQzC,OALa,OAATA,EACKnd,KAAKitB,IAAIjyB,SAAS+N,gBAAgBsjI,aAAclxI,OAAOs3I,aAAe,GAEtEzyI,KAAKitB,IAAIjyB,SAAS+N,gBAAgBqjI,YAAajxI,OAAOq3I,YAAc,IAE/D,IAAMp8I,EAIpB,OAAOA,EAmEE4hJ,CAAQ3xG,EAAKwuG,EAAaJ,EAAeF,UAKhDlxG,SAAQ,SAAU4qE,EAAIr0G,GACxBq0G,EAAG5qE,SAAQ,SAAUu0G,EAAMK,GACrB71G,EAAUw1G,KACZnG,EAAQ73I,IAAUg+I,GAA2B,MAAnB3pC,EAAGgqC,EAAS,IAAc,EAAI,UAIvDxG,EA2OT,IAkWIyG,GAAW,CAKb3E,UAAW,SAMX8B,eAAe,EAMfmB,eAAe,EAOfR,iBAAiB,EAQjBR,SAAU,aAUV7lB,SAAU,aAOV/vC,UAnZc,CASdn4E,MAAO,CAELqoI,MAAO,IAEPmF,SAAS,EAETr3I,GA9HJ,SAAe6c,GACb,IAAI84H,EAAY94H,EAAK84H,UACjBkE,EAAgBlE,EAAUlyI,MAAM,KAAK,GACrC82I,EAAiB5E,EAAUlyI,MAAM,KAAK,GAG1C,GAAI82I,EAAgB,CAClB,IAAIC,EAAgB39H,EAAKg3H,QACrB/+F,EAAY0lG,EAAc1lG,UAC1BogG,EAASsF,EAActF,OAEvBuF,GAA2D,IAA9C,CAAC,SAAU,OAAO18I,QAAQ87I,GACvC12C,EAAOs3C,EAAa,OAAS,MAC7BxD,EAAcwD,EAAa,QAAU,SAErCC,EAAe,CACjB9+I,MAAO1D,EAAe,GAAIirG,EAAMruD,EAAUquD,IAC1C1hG,IAAKvJ,EAAe,GAAIirG,EAAMruD,EAAUquD,GAAQruD,EAAUmiG,GAAe/B,EAAO+B,KAGlFp6H,EAAKg3H,QAAQqB,OAASvB,EAAS,GAAIuB,EAAQwF,EAAaH,IAG1D,OAAO19H,IAgJP4lB,OAAQ,CAENyvG,MAAO,IAEPmF,SAAS,EAETr3I,GA7RJ,SAAgB6c,EAAM44H,GACpB,IAAIhzG,EAASgzG,EAAKhzG,OACdkzG,EAAY94H,EAAK84H,UACjB6E,EAAgB39H,EAAKg3H,QACrBqB,EAASsF,EAActF,OACvBpgG,EAAY0lG,EAAc1lG,UAE1B+kG,EAAgBlE,EAAUlyI,MAAM,KAAK,GAErCowI,OAAU,EAsBd,OApBEA,EADErvG,GAAW/B,GACH,EAAEA,EAAQ,GAEVm3G,GAAYn3G,EAAQyyG,EAAQpgG,EAAW+kG,GAG7B,SAAlBA,GACF3E,EAAO3pI,KAAOsoI,EAAQ,GACtBqB,EAAOrkH,MAAQgjH,EAAQ,IACI,UAAlBgG,GACT3E,EAAO3pI,KAAOsoI,EAAQ,GACtBqB,EAAOrkH,MAAQgjH,EAAQ,IACI,QAAlBgG,GACT3E,EAAOrkH,MAAQgjH,EAAQ,GACvBqB,EAAO3pI,KAAOsoI,EAAQ,IACK,WAAlBgG,IACT3E,EAAOrkH,MAAQgjH,EAAQ,GACvBqB,EAAO3pI,KAAOsoI,EAAQ,IAGxBh3H,EAAKq4H,OAASA,EACPr4H,GAkQL4lB,OAAQ,GAoBVk4G,gBAAiB,CAEfzI,MAAO,IAEPmF,SAAS,EAETr3I,GAlRJ,SAAyB6c,EAAM5iB,GAC7B,IAAIk7I,EAAoBl7I,EAAQk7I,mBAAqBxD,EAAgB90H,EAAK2zC,SAAS0kF,QAK/Er4H,EAAK2zC,SAAS1b,YAAcqgG,IAC9BA,EAAoBxD,EAAgBwD,IAMtC,IAAIyF,EAAgB7C,EAAyB,aACzC8C,EAAeh+H,EAAK2zC,SAAS0kF,OAAOt2H,MACpCrT,EAAMsvI,EAAatvI,IACnBslB,EAAOgqH,EAAahqH,KACpBid,EAAY+sG,EAAaD,GAE7BC,EAAatvI,IAAM,GACnBsvI,EAAahqH,KAAO,GACpBgqH,EAAaD,GAAiB,GAE9B,IAAIxF,EAAaH,EAAcp4H,EAAK2zC,SAAS0kF,OAAQr4H,EAAK2zC,SAAS1b,UAAW76C,EAAQ82B,QAASokH,EAAmBt4H,EAAK46H,eAIvHoD,EAAatvI,IAAMA,EACnBsvI,EAAahqH,KAAOA,EACpBgqH,EAAaD,GAAiB9sG,EAE9B7zC,EAAQm7I,WAAaA,EAErB,IAAIlD,EAAQj4I,EAAQ6gJ,SAChB5F,EAASr4H,EAAKg3H,QAAQqB,OAEtBxmI,EAAQ,CACV+L,QAAS,SAAiBk7H,GACxB,IAAIn9I,EAAQ08I,EAAOS,GAInB,OAHIT,EAAOS,GAAaP,EAAWO,KAAe17I,EAAQ8gJ,sBACxDviJ,EAAQ4J,KAAKitB,IAAI6lH,EAAOS,GAAYP,EAAWO,KAE1Cz9I,EAAe,GAAIy9I,EAAWn9I,IAEvCwiJ,UAAW,SAAmBrF,GAC5B,IAAIoB,EAAyB,UAAdpB,EAAwB,OAAS,MAC5Cn9I,EAAQ08I,EAAO6B,GAInB,OAHI7B,EAAOS,GAAaP,EAAWO,KAAe17I,EAAQ8gJ,sBACxDviJ,EAAQ4J,KAAKkzC,IAAI4/F,EAAO6B,GAAW3B,EAAWO,IAA4B,UAAdA,EAAwBT,EAAOvpH,MAAQupH,EAAOnnH,UAErG71B,EAAe,GAAI6+I,EAAUv+I,KAWxC,OAPA05I,EAAMzsG,SAAQ,SAAUkwG,GACtB,IAAIxyC,GAA+C,IAAxC,CAAC,OAAQ,OAAOplG,QAAQ43I,GAAoB,UAAY,YACnET,EAASvB,EAAS,GAAIuB,EAAQxmI,EAAMy0F,GAAMwyC,OAG5C94H,EAAKg3H,QAAQqB,OAASA,EAEfr4H,GA2NLi+H,SAAU,CAAC,OAAQ,QAAS,MAAO,UAOnC/pH,QAAS,EAMTokH,kBAAmB,gBAYrB8F,aAAc,CAEZ/I,MAAO,IAEPmF,SAAS,EAETr3I,GAlgBJ,SAAsB6c,GACpB,IAAI29H,EAAgB39H,EAAKg3H,QACrBqB,EAASsF,EAActF,OACvBpgG,EAAY0lG,EAAc1lG,UAE1B6gG,EAAY94H,EAAK84H,UAAUlyI,MAAM,KAAK,GACtCg3C,EAAQr4C,KAAKq4C,MACbggG,GAAuD,IAA1C,CAAC,MAAO,UAAU18I,QAAQ43I,GACvCxyC,EAAOs3C,EAAa,QAAU,SAC9BS,EAAST,EAAa,OAAS,MAC/BxD,EAAcwD,EAAa,QAAU,SASzC,OAPIvF,EAAO/xC,GAAQ1oD,EAAM3F,EAAUomG,MACjCr+H,EAAKg3H,QAAQqB,OAAOgG,GAAUzgG,EAAM3F,EAAUomG,IAAWhG,EAAO+B,IAE9D/B,EAAOgG,GAAUzgG,EAAM3F,EAAUquD,MACnCtmF,EAAKg3H,QAAQqB,OAAOgG,GAAUzgG,EAAM3F,EAAUquD,KAGzCtmF,IA4fPs+H,MAAO,CAELjJ,MAAO,IAEPmF,SAAS,EAETr3I,GApxBJ,SAAe6c,EAAM5iB,GACnB,IAAImhJ,EAGJ,IAAKlC,EAAmBr8H,EAAK2zC,SAASwxB,UAAW,QAAS,gBACxD,OAAOnlE,EAGT,IAAIw+H,EAAephJ,EAAQ63H,QAG3B,GAA4B,iBAAjBupB,GAIT,KAHAA,EAAex+H,EAAK2zC,SAAS0kF,OAAOriD,cAAcwoD,IAIhD,OAAOx+H,OAKT,IAAKA,EAAK2zC,SAAS0kF,OAAOvwI,SAAS02I,GAEjC,OADAxgI,QAAQC,KAAK,iEACN+B,EAIX,IAAI84H,EAAY94H,EAAK84H,UAAUlyI,MAAM,KAAK,GACtC+2I,EAAgB39H,EAAKg3H,QACrBqB,EAASsF,EAActF,OACvBpgG,EAAY0lG,EAAc1lG,UAE1B2lG,GAAuD,IAA1C,CAAC,OAAQ,SAAS18I,QAAQ43I,GAEvCp0I,EAAMk5I,EAAa,SAAW,QAC9Ba,EAAkBb,EAAa,MAAQ,OACvCt3C,EAAOm4C,EAAgB33I,cACvB43I,EAAUd,EAAa,OAAS,MAChCS,EAAST,EAAa,SAAW,QACjCe,EAAmBlF,EAAc+E,GAAc95I,GAQ/CuzC,EAAUomG,GAAUM,EAAmBtG,EAAO/xC,KAChDtmF,EAAKg3H,QAAQqB,OAAO/xC,IAAS+xC,EAAO/xC,IAASruD,EAAUomG,GAAUM,IAG/D1mG,EAAUquD,GAAQq4C,EAAmBtG,EAAOgG,KAC9Cr+H,EAAKg3H,QAAQqB,OAAO/xC,IAASruD,EAAUquD,GAAQq4C,EAAmBtG,EAAOgG,IAE3Er+H,EAAKg3H,QAAQqB,OAAStB,EAAc/2H,EAAKg3H,QAAQqB,QAGjD,IAAInnF,EAASjZ,EAAUquD,GAAQruD,EAAUvzC,GAAO,EAAIi6I,EAAmB,EAInE18H,EAAMqyH,EAAyBt0H,EAAK2zC,SAAS0kF,QAC7CuG,EAAmBtuH,WAAWrO,EAAI,SAAWw8H,IAC7CI,EAAmBvuH,WAAWrO,EAAI,SAAWw8H,EAAkB,UAC/DK,EAAY5tF,EAASlxC,EAAKg3H,QAAQqB,OAAO/xC,GAAQs4C,EAAmBC,EAQxE,OALAC,EAAYv5I,KAAKitB,IAAIjtB,KAAKkzC,IAAI4/F,EAAO3zI,GAAOi6I,EAAkBG,GAAY,GAE1E9+H,EAAKw+H,aAAeA,EACpBx+H,EAAKg3H,QAAQsH,OAAmCjjJ,EAA1BkjJ,EAAsB,GAAwCj4C,EAAM/gG,KAAK8qB,MAAMyuH,IAAazjJ,EAAekjJ,EAAqBG,EAAS,IAAKH,GAE7Jv+H,GA8sBLi1G,QAAS,aAcXhxE,KAAM,CAEJoxF,MAAO,IAEPmF,SAAS,EAETr3I,GA5oBJ,SAAc6c,EAAM5iB,GAElB,GAAI49I,EAAkBh7H,EAAK2zC,SAASwxB,UAAW,SAC7C,OAAOnlE,EAGT,GAAIA,EAAK26H,SAAW36H,EAAK84H,YAAc94H,EAAK66H,kBAE1C,OAAO76H,EAGT,IAAIu4H,EAAaH,EAAcp4H,EAAK2zC,SAAS0kF,OAAQr4H,EAAK2zC,SAAS1b,UAAW76C,EAAQ82B,QAAS92B,EAAQk7I,kBAAmBt4H,EAAK46H,eAE3H9B,EAAY94H,EAAK84H,UAAUlyI,MAAM,KAAK,GACtCm4I,EAAoBnF,EAAqBd,GACzCQ,EAAYt5H,EAAK84H,UAAUlyI,MAAM,KAAK,IAAM,GAE5Co4I,EAAY,GAEhB,OAAQ5hJ,EAAQ6hJ,UACd,KAAKnC,GACHkC,EAAY,CAAClG,EAAWiG,GACxB,MACF,KAAKjC,GACHkC,EAAYptB,GAAUknB,GACtB,MACF,KAAKgE,GACHkC,EAAYptB,GAAUknB,GAAW,GACjC,MACF,QACEkG,EAAY5hJ,EAAQ6hJ,SAyDxB,OAtDAD,EAAUp2G,SAAQ,SAAU7T,EAAM51B,GAChC,GAAI25I,IAAc/jH,GAAQiqH,EAAU5/I,SAAWD,EAAQ,EACrD,OAAO6gB,EAGT84H,EAAY94H,EAAK84H,UAAUlyI,MAAM,KAAK,GACtCm4I,EAAoBnF,EAAqBd,GAEzC,IAAIkB,EAAgBh6H,EAAKg3H,QAAQqB,OAC7B6G,EAAal/H,EAAKg3H,QAAQ/+F,UAG1B2F,EAAQr4C,KAAKq4C,MACbuhG,EAA4B,SAAdrG,GAAwBl7F,EAAMo8F,EAAclqH,OAAS8tB,EAAMshG,EAAWlrH,OAAuB,UAAd8kH,GAAyBl7F,EAAMo8F,EAAchmH,MAAQ4pB,EAAMshG,EAAWpvH,QAAwB,QAAdgpH,GAAuBl7F,EAAMo8F,EAAc/gF,QAAUrb,EAAMshG,EAAWxwI,MAAsB,WAAdoqI,GAA0Bl7F,EAAMo8F,EAActrI,KAAOkvC,EAAMshG,EAAWjmF,QAEjUmmF,EAAgBxhG,EAAMo8F,EAAchmH,MAAQ4pB,EAAM26F,EAAWvkH,MAC7DqrH,EAAiBzhG,EAAMo8F,EAAclqH,OAAS8tB,EAAM26F,EAAWzoH,OAC/DwvH,EAAe1hG,EAAMo8F,EAActrI,KAAOkvC,EAAM26F,EAAW7pI,KAC3D6wI,EAAkB3hG,EAAMo8F,EAAc/gF,QAAUrb,EAAM26F,EAAWt/E,QAEjEumF,EAAoC,SAAd1G,GAAwBsG,GAA+B,UAAdtG,GAAyBuG,GAAgC,QAAdvG,GAAuBwG,GAA8B,WAAdxG,GAA0ByG,EAG3K3B,GAAuD,IAA1C,CAAC,MAAO,UAAU18I,QAAQ43I,GAGvC2G,IAA0BriJ,EAAQsiJ,iBAAmB9B,GAA4B,UAAdtE,GAAyB8F,GAAiBxB,GAA4B,QAAdtE,GAAuB+F,IAAmBzB,GAA4B,UAAdtE,GAAyBgG,IAAiB1B,GAA4B,QAAdtE,GAAuBiG,GAGlQI,IAA8BviJ,EAAQwiJ,0BAA4BhC,GAA4B,UAAdtE,GAAyB+F,GAAkBzB,GAA4B,QAAdtE,GAAuB8F,IAAkBxB,GAA4B,UAAdtE,GAAyBiG,IAAoB3B,GAA4B,QAAdtE,GAAuBgG,GAElRO,EAAmBJ,GAAyBE,GAE5CR,GAAeK,GAAuBK,KAExC7/H,EAAK26H,SAAU,GAEXwE,GAAeK,KACjB1G,EAAYkG,EAAU7/I,EAAQ,IAG5B0gJ,IACFvG,EAvJR,SAA8BA,GAC5B,MAAkB,QAAdA,EACK,QACgB,UAAdA,EACF,MAEFA,EAiJWwG,CAAqBxG,IAGnCt5H,EAAK84H,UAAYA,GAAaQ,EAAY,IAAMA,EAAY,IAI5Dt5H,EAAKg3H,QAAQqB,OAASvB,EAAS,GAAI92H,EAAKg3H,QAAQqB,OAAQwB,EAAiB75H,EAAK2zC,SAAS0kF,OAAQr4H,EAAKg3H,QAAQ/+F,UAAWj4B,EAAK84H,YAE5H94H,EAAOs6H,EAAat6H,EAAK2zC,SAASwxB,UAAWnlE,EAAM,YAGhDA,GA4jBLi/H,SAAU,OAKV/qH,QAAS,EAOTokH,kBAAmB,WAQnBoH,gBAAgB,EAQhBE,yBAAyB,GAU3BG,MAAO,CAEL1K,MAAO,IAEPmF,SAAS,EAETr3I,GArQJ,SAAe6c,GACb,IAAI84H,EAAY94H,EAAK84H,UACjBkE,EAAgBlE,EAAUlyI,MAAM,KAAK,GACrC+2I,EAAgB39H,EAAKg3H,QACrBqB,EAASsF,EAActF,OACvBpgG,EAAY0lG,EAAc1lG,UAE1BgiG,GAAwD,IAA9C,CAAC,OAAQ,SAAS/4I,QAAQ87I,GAEpCgD,GAA6D,IAA5C,CAAC,MAAO,QAAQ9+I,QAAQ87I,GAO7C,OALA3E,EAAO4B,EAAU,OAAS,OAAShiG,EAAU+kG,IAAkBgD,EAAiB3H,EAAO4B,EAAU,QAAU,UAAY,GAEvHj6H,EAAK84H,UAAYc,EAAqBd,GACtC94H,EAAKg3H,QAAQqB,OAAStB,EAAcsB,GAE7Br4H,IAkQPmD,KAAM,CAEJkyH,MAAO,IAEPmF,SAAS,EAETr3I,GA9TJ,SAAc6c,GACZ,IAAKq8H,EAAmBr8H,EAAK2zC,SAASwxB,UAAW,OAAQ,mBACvD,OAAOnlE,EAGT,IAAI+4H,EAAU/4H,EAAKg3H,QAAQ/+F,UACvBgoG,EAAQ9wI,EAAK6Q,EAAK2zC,SAASwxB,WAAW,SAAU8wD,GAClD,MAAyB,oBAAlBA,EAASh7I,QACfs9I,WAEH,GAAIQ,EAAQ9/E,OAASgnF,EAAMvxI,KAAOqqI,EAAQ/kH,KAAOisH,EAAMnwH,OAASipH,EAAQrqI,IAAMuxI,EAAMhnF,QAAU8/E,EAAQjpH,MAAQmwH,EAAMjsH,KAAM,CAExH,IAAkB,IAAdhU,EAAKmD,KACP,OAAOnD,EAGTA,EAAKmD,MAAO,EACZnD,EAAK/W,WAAW,uBAAyB,OACpC,CAEL,IAAkB,IAAd+W,EAAKmD,KACP,OAAOnD,EAGTA,EAAKmD,MAAO,EACZnD,EAAK/W,WAAW,wBAAyB,EAG3C,OAAO+W,IAoTPkgI,aAAc,CAEZ7K,MAAO,IAEPmF,SAAS,EAETr3I,GAtgCJ,SAAsB6c,EAAM5iB,GAC1B,IAAI4yC,EAAI5yC,EAAQ4yC,EACZC,EAAI7yC,EAAQ6yC,EACZooG,EAASr4H,EAAKg3H,QAAQqB,OAItB8H,EAA8BhxI,EAAK6Q,EAAK2zC,SAASwxB,WAAW,SAAU8wD,GACxE,MAAyB,eAAlBA,EAASh7I,QACfmlJ,qBACiCzgJ,IAAhCwgJ,GACFniI,QAAQC,KAAK,iIAEf,IAAImiI,OAAkDzgJ,IAAhCwgJ,EAA4CA,EAA8B/iJ,EAAQgjJ,gBAEpG15G,EAAeouG,EAAgB90H,EAAK2zC,SAAS0kF,QAC7CgI,EAAmBvsH,EAAsB4S,GAGzC7T,EAAS,CACX5C,SAAUooH,EAAOpoH,UAGf+mH,EA9DN,SAA2Bh3H,EAAMsgI,GAC/B,IAAI3C,EAAgB39H,EAAKg3H,QACrBqB,EAASsF,EAActF,OACvBpgG,EAAY0lG,EAAc1lG,UAC1B5nB,EAAQ9qB,KAAK8qB,MACbutB,EAAQr4C,KAAKq4C,MAEb2iG,EAAU,SAAiB1mI,GAC7B,OAAOA,GAGL2mI,EAAiBnwH,EAAM4nB,EAAUnpB,OACjC2xH,EAAcpwH,EAAMgoH,EAAOvpH,OAE3B8uH,GAA4D,IAA/C,CAAC,OAAQ,SAAS18I,QAAQ8e,EAAK84H,WAC5C4H,GAA+C,IAAjC1gI,EAAK84H,UAAU53I,QAAQ,KAIrCy/I,EAAuBL,EAAwB1C,GAAc8C,GAH3CF,EAAiB,GAAMC,EAAc,EAGuCpwH,EAAQutB,EAAjE2iG,EACrCK,EAAqBN,EAAwBjwH,EAAVkwH,EAEvC,MAAO,CACLvsH,KAAM2sH,EANWH,EAAiB,GAAM,GAAKC,EAAc,GAAM,IAMtBC,GAAeJ,EAAcjI,EAAOrkH,KAAO,EAAIqkH,EAAOrkH,MACjGtlB,IAAKkyI,EAAkBvI,EAAO3pI,KAC9BuqD,OAAQ2nF,EAAkBvI,EAAOp/E,QACjCnpC,MAAO6wH,EAAoBtI,EAAOvoH,QAoCtB+wH,CAAkB7gI,EAAMtf,OAAOq3F,iBAAmB,IAAMqkD,GAElEjG,EAAc,WAANnmG,EAAiB,MAAQ,SACjComG,EAAc,UAANnmG,EAAgB,OAAS,QAKjC6wG,EAAmB5F,EAAyB,aAW5ClnH,OAAO,EACPtlB,OAAM,EAqBV,GAhBIA,EAJU,WAAVynI,EAG4B,SAA1BzvG,EAAax7B,UACRw7B,EAAakrG,aAAeoF,EAAQ/9E,QAEpConF,EAAiBnvH,OAAS8lH,EAAQ/9E,OAGrC+9E,EAAQtoI,IAIZslB,EAFU,UAAVoiH,EAC4B,SAA1B1vG,EAAax7B,UACPw7B,EAAairG,YAAcqF,EAAQlnH,OAEnCuwH,EAAiBvxH,MAAQkoH,EAAQlnH,MAGpCknH,EAAQhjH,KAEbosH,GAAmBU,EACrBjuH,EAAOiuH,GAAoB,eAAiB9sH,EAAO,OAAStlB,EAAM,SAClEmkB,EAAOsjH,GAAS,EAChBtjH,EAAOujH,GAAS,EAChBvjH,EAAOwoH,WAAa,gBACf,CAEL,IAAI0F,EAAsB,WAAV5K,GAAsB,EAAI,EACtC6K,EAAuB,UAAV5K,GAAqB,EAAI,EAC1CvjH,EAAOsjH,GAASznI,EAAMqyI,EACtBluH,EAAOujH,GAASpiH,EAAOgtH,EACvBnuH,EAAOwoH,WAAalF,EAAQ,KAAOC,EAIrC,IAAIntI,EAAa,CACf,cAAe+W,EAAK84H,WAQtB,OAJA94H,EAAK/W,WAAa6tI,EAAS,GAAI7tI,EAAY+W,EAAK/W,YAChD+W,EAAK6S,OAASikH,EAAS,GAAIjkH,EAAQ7S,EAAK6S,QACxC7S,EAAK06H,YAAc5D,EAAS,GAAI92H,EAAKg3H,QAAQsH,MAAOt+H,EAAK06H,aAElD16H,GAo7BLogI,iBAAiB,EAMjBpwG,EAAG,SAMHC,EAAG,SAkBLgxG,WAAY,CAEV5L,MAAO,IAEPmF,SAAS,EAETr3I,GAzpCJ,SAAoB6c,GApBpB,IAAuBi1G,EAAShsH,EAoC9B,OAXAkzI,EAAUn8H,EAAK2zC,SAAS0kF,OAAQr4H,EAAK6S,QAzBhBoiG,EA6BPj1G,EAAK2zC,SAAS0kF,OA7BEpvI,EA6BM+W,EAAK/W,WA5BzC7N,OAAOyR,KAAK5D,GAAY2/B,SAAQ,SAAU3oB,IAE1B,IADFhX,EAAWgX,GAErBg1G,EAAQtyH,aAAasd,EAAMhX,EAAWgX,IAEtCg1G,EAAQroH,gBAAgBqT,MA0BxBD,EAAKw+H,cAAgBpjJ,OAAOyR,KAAKmT,EAAK06H,aAAat7I,QACrD+8I,EAAUn8H,EAAKw+H,aAAcx+H,EAAK06H,aAG7B16H,GA2oCLkhI,OA9nCJ,SAA0BjpG,EAAWogG,EAAQj7I,EAAS+jJ,EAAiBvlI,GAErE,IAAIk+H,EAAmBP,EAAoB39H,EAAOy8H,EAAQpgG,EAAW76C,EAAQw9I,eAKzE9B,EAAYD,EAAqBz7I,EAAQ07I,UAAWgB,EAAkBzB,EAAQpgG,EAAW76C,EAAQ+nF,UAAUlhC,KAAKq0F,kBAAmBl7I,EAAQ+nF,UAAUlhC,KAAK/vB,SAQ9J,OANAmkH,EAAO11I,aAAa,cAAem2I,GAInCqD,EAAU9D,EAAQ,CAAEpoH,SAAU7yB,EAAQw9I,cAAgB,QAAU,aAEzDx9I,GAsnCLgjJ,qBAAiBzgJ,KAuGjByhJ,GAAS,WASX,SAASA,EAAOnpG,EAAWogG,GACzB,IAAIznF,EAAQnzD,KAERL,EAAU8G,UAAU9E,OAAS,QAAsBO,IAAjBuE,UAAU,GAAmBA,UAAU,GAAK,GAClFsyI,EAAe/4I,KAAM2jJ,GAErB3jJ,KAAKw+I,eAAiB,WACpB,OAAOpmH,sBAAsB+6B,EAAM1H,SAIrCzrD,KAAKyrD,OAAStK,EAASnhD,KAAKyrD,OAAOhtD,KAAKuB,OAGxCA,KAAKL,QAAU05I,EAAS,GAAIsK,EAAO3D,SAAUrgJ,GAG7CK,KAAKme,MAAQ,CACX6+H,aAAa,EACbK,WAAW,EACXe,cAAe,IAIjBp+I,KAAKw6C,UAAYA,GAAaA,EAAU50C,OAAS40C,EAAU,GAAKA,EAChEx6C,KAAK46I,OAASA,GAAUA,EAAOh1I,OAASg1I,EAAO,GAAKA,EAGpD56I,KAAKL,QAAQ+nF,UAAY,GACzB/pF,OAAOyR,KAAKiqI,EAAS,GAAIsK,EAAO3D,SAASt4D,UAAW/nF,EAAQ+nF,YAAYv8C,SAAQ,SAAU3tC,GACxF21D,EAAMxzD,QAAQ+nF,UAAUlqF,GAAQ67I,EAAS,GAAIsK,EAAO3D,SAASt4D,UAAUlqF,IAAS,GAAImC,EAAQ+nF,UAAY/nF,EAAQ+nF,UAAUlqF,GAAQ,OAIpIwC,KAAK0nF,UAAY/pF,OAAOyR,KAAKpP,KAAKL,QAAQ+nF,WAAWnhF,KAAI,SAAU/I,GACjE,OAAO67I,EAAS,CACd77I,KAAMA,GACL21D,EAAMxzD,QAAQ+nF,UAAUlqF,OAG5B4J,MAAK,SAAU4D,EAAGC,GACjB,OAAOD,EAAE4sI,MAAQ3sI,EAAE2sI,SAOrB53I,KAAK0nF,UAAUv8C,SAAQ,SAAUu4G,GAC3BA,EAAgB3G,SAAW/4I,EAAW0/I,EAAgBD,SACxDC,EAAgBD,OAAOtwF,EAAM3Y,UAAW2Y,EAAMynF,OAAQznF,EAAMxzD,QAAS+jJ,EAAiBvwF,EAAMh1C,UAKhGne,KAAKyrD,SAEL,IAAI6yF,EAAgBt+I,KAAKL,QAAQ2+I,cAC7BA,GAEFt+I,KAAKu+I,uBAGPv+I,KAAKme,MAAMmgI,cAAgBA,EAqD7B,OA9CArF,EAAY0K,EAAQ,CAAC,CACnBnlJ,IAAK,SACLN,MAAO,WACL,OAAOutD,EAAOruD,KAAK4C,QAEpB,CACDxB,IAAK,UACLN,MAAO,WACL,OAAOu5E,EAAQr6E,KAAK4C,QAErB,CACDxB,IAAK,uBACLN,MAAO,WACL,OAAOqgJ,EAAqBnhJ,KAAK4C,QAElC,CACDxB,IAAK,wBACLN,MAAO,WACL,OAAO2/I,EAAsBzgJ,KAAK4C,UA4B/B2jJ,EA7HI,GAqJbA,GAAOC,OAA2B,oBAAX3gJ,OAAyBA,OAASL,GAAQihJ,YACjEF,GAAOxE,WAAaA,EACpBwE,GAAO3D,SAAWA,GAEH,S,iDCtjFf,YAOA,IAAI8D,EAAU,WACV,GAAmB,oBAAR3jF,IACP,OAAOA,IASX,SAAS4jF,EAAS5gJ,EAAK3E,GACnB,IAAI2C,GAAU,EAQd,OAPAgC,EAAImjD,MAAK,SAAU+X,EAAO38D,GACtB,OAAI28D,EAAM,KAAO7/D,IACb2C,EAASO,GACF,MAIRP,EAEX,OAAsB,WAClB,SAAS2pG,IACL9qG,KAAKgkJ,YAAc,GAuEvB,OArEArmJ,OAAOC,eAAektG,EAAQjsG,UAAW,OAAQ,CAI7Cf,IAAK,WACD,OAAOkC,KAAKgkJ,YAAYriJ,QAE5B9D,YAAY,EACZwkB,cAAc,IAMlByoF,EAAQjsG,UAAUf,IAAM,SAAUU,GAC9B,IAAIkD,EAAQqiJ,EAAS/jJ,KAAKgkJ,YAAaxlJ,GACnC6/D,EAAQr+D,KAAKgkJ,YAAYtiJ,GAC7B,OAAO28D,GAASA,EAAM,IAO1BysC,EAAQjsG,UAAUyjB,IAAM,SAAU9jB,EAAKN,GACnC,IAAIwD,EAAQqiJ,EAAS/jJ,KAAKgkJ,YAAaxlJ,IAClCkD,EACD1B,KAAKgkJ,YAAYtiJ,GAAO,GAAKxD,EAG7B8B,KAAKgkJ,YAAYxhJ,KAAK,CAAChE,EAAKN,KAOpC4sG,EAAQjsG,UAAUukF,OAAS,SAAU5kF,GACjC,IAAIwrD,EAAUhqD,KAAKgkJ,YACftiJ,EAAQqiJ,EAAS/5F,EAASxrD,IACzBkD,GACDsoD,EAAQ3iD,OAAO3F,EAAO,IAO9BopG,EAAQjsG,UAAUwc,IAAM,SAAU7c,GAC9B,SAAUulJ,EAAS/jJ,KAAKgkJ,YAAaxlJ,IAKzCssG,EAAQjsG,UAAUg6D,MAAQ,WACtB74D,KAAKgkJ,YAAY38I,OAAO,IAO5ByjG,EAAQjsG,UAAUssC,QAAU,SAAU7kC,EAAUkpC,QAChC,IAARA,IAAkBA,EAAM,MAC5B,IAAK,IAAIpmC,EAAK,EAAG0qI,EAAK9zI,KAAKgkJ,YAAa56I,EAAK0qI,EAAGnyI,OAAQyH,IAAM,CAC1D,IAAIi1D,EAAQy1E,EAAG1qI,GACf9C,EAASlJ,KAAKoyC,EAAK6uB,EAAM,GAAIA,EAAM,MAGpCysC,EAzEU,GAtBX,GAsGV0rC,EAA8B,oBAAXvzI,QAA8C,oBAAbH,UAA4BG,OAAOH,WAAaA,SAGpGmhJ,OACsB,IAAXrhJ,GAA0BA,EAAOkF,OAASA,KAC1ClF,EAES,oBAATf,MAAwBA,KAAKiG,OAASA,KACtCjG,KAEW,oBAAXoB,QAA0BA,OAAO6E,OAASA,KAC1C7E,OAGJlB,SAAS,cAATA,GASPmiJ,EACqC,mBAA1B9rH,sBAIAA,sBAAsB35B,KAAKwlJ,GAE/B,SAAU39I,GAAY,OAAOsZ,YAAW,WAAc,OAAOtZ,EAASgE,KAAK0hB,SAAW,IAAO,KAqExG,IAGIm4H,EAAiB,CAAC,MAAO,QAAS,SAAU,OAAQ,QAAS,SAAU,OAAQ,UAE/EC,EAAwD,oBAArBh3E,iBAInCi3E,EAA0C,WAM1C,SAASA,IAMLrkJ,KAAKskJ,YAAa,EAMlBtkJ,KAAKukJ,sBAAuB,EAM5BvkJ,KAAKwkJ,mBAAqB,KAM1BxkJ,KAAKykJ,WAAa,GAClBzkJ,KAAK0kJ,iBAAmB1kJ,KAAK0kJ,iBAAiBjmJ,KAAKuB,MACnDA,KAAKkzC,QAjGb,SAAmB5sC,EAAUs1B,GACzB,IAAI+oH,GAAc,EAAOC,GAAe,EAAO34C,EAAe,EAO9D,SAAS44C,IACDF,IACAA,GAAc,EACdr+I,KAEAs+I,GACA96G,IAUR,SAASg7G,IACLZ,EAAwBW,GAO5B,SAAS/6G,IACL,IAAI/d,EAAYzhB,KAAK0hB,MACrB,GAAI24H,EAAa,CAEb,GAAI54H,EAAYkgF,EA7CN,EA8CN,OAMJ24C,GAAe,OAGfD,GAAc,EACdC,GAAe,EACfhlI,WAAWklI,EAAiBlpH,GAEhCqwE,EAAelgF,EAEnB,OAAO+d,EA6CYid,CAAS/mD,KAAKkzC,QAAQz0C,KAAKuB,MAzC9B,IAyMhB,OAxJAqkJ,EAAyBxlJ,UAAUkmJ,YAAc,SAAUx3E,IACjDvtE,KAAKykJ,WAAWhhJ,QAAQ8pE,IAC1BvtE,KAAKykJ,WAAWjiJ,KAAK+qE,GAGpBvtE,KAAKskJ,YACNtkJ,KAAKglJ,YASbX,EAAyBxlJ,UAAUomJ,eAAiB,SAAU13E,GAC1D,IAAI23E,EAAYllJ,KAAKykJ,WACjB/iJ,EAAQwjJ,EAAUzhJ,QAAQ8pE,IAEzB7rE,GACDwjJ,EAAU79I,OAAO3F,EAAO,IAGvBwjJ,EAAUvjJ,QAAU3B,KAAKskJ,YAC1BtkJ,KAAKmlJ,eASbd,EAAyBxlJ,UAAUq0C,QAAU,WACnBlzC,KAAKolJ,oBAIvBplJ,KAAKkzC,WAWbmxG,EAAyBxlJ,UAAUumJ,iBAAmB,WAElD,IAAIC,EAAkBrlJ,KAAKykJ,WAAWjzI,QAAO,SAAU+7D,GACnD,OAAOA,EAAS+3E,eAAgB/3E,EAASg4E,eAQ7C,OADAF,EAAgBl6G,SAAQ,SAAUoiC,GAAY,OAAOA,EAASi4E,qBACvDH,EAAgB1jJ,OAAS,GAQpC0iJ,EAAyBxlJ,UAAUmmJ,SAAW,WAGrCxO,IAAax2I,KAAKskJ,aAMvBxhJ,SAASoO,iBAAiB,gBAAiBlR,KAAK0kJ,kBAChDzhJ,OAAOiO,iBAAiB,SAAUlR,KAAKkzC,SACnCkxG,GACApkJ,KAAKwkJ,mBAAqB,IAAIp3E,iBAAiBptE,KAAKkzC,SACpDlzC,KAAKwkJ,mBAAmBl8E,QAAQxlE,SAAU,CACtC0I,YAAY,EACZi6I,WAAW,EACXh4E,eAAe,EACfi4E,SAAS,MAIb5iJ,SAASoO,iBAAiB,qBAAsBlR,KAAKkzC,SACrDlzC,KAAKukJ,sBAAuB,GAEhCvkJ,KAAKskJ,YAAa,IAQtBD,EAAyBxlJ,UAAUsmJ,YAAc,WAGxC3O,GAAcx2I,KAAKskJ,aAGxBxhJ,SAAS+d,oBAAoB,gBAAiB7gB,KAAK0kJ,kBACnDzhJ,OAAO4d,oBAAoB,SAAU7gB,KAAKkzC,SACtClzC,KAAKwkJ,oBACLxkJ,KAAKwkJ,mBAAmBmB,aAExB3lJ,KAAKukJ,sBACLzhJ,SAAS+d,oBAAoB,qBAAsB7gB,KAAKkzC,SAE5DlzC,KAAKwkJ,mBAAqB,KAC1BxkJ,KAAKukJ,sBAAuB,EAC5BvkJ,KAAKskJ,YAAa,IAStBD,EAAyBxlJ,UAAU6lJ,iBAAmB,SAAU5Q,GAC5D,IAAI7/D,EAAK6/D,EAAG77C,aAAcA,OAAsB,IAAPhkB,EAAgB,GAAKA,EAEvCkwE,EAAe79F,MAAK,SAAU9nD,GACjD,SAAUy5F,EAAax0F,QAAQjF,OAG/BwB,KAAKkzC,WAQbmxG,EAAyBl0B,YAAc,WAInC,OAHKnwH,KAAK4lJ,YACN5lJ,KAAK4lJ,UAAY,IAAIvB,GAElBrkJ,KAAK4lJ,WAOhBvB,EAAyBuB,UAAY,KAC9BvB,EAhMkC,GA0MzCwB,EAAqB,SAAWn+I,EAAQikB,GACxC,IAAK,IAAIviB,EAAK,EAAG0qI,EAAKn2I,OAAOyR,KAAKuc,GAAQviB,EAAK0qI,EAAGnyI,OAAQyH,IAAM,CAC5D,IAAI5K,EAAMs1I,EAAG1qI,GACbzL,OAAOC,eAAe8J,EAAQlJ,EAAK,CAC/BN,MAAOytB,EAAMntB,GACbX,YAAY,EACZwtB,UAAU,EACVhJ,cAAc,IAGtB,OAAO3a,GASPo+I,EAAc,SAAWp+I,GAOzB,OAHkBA,GAAUA,EAAO2G,eAAiB3G,EAAO2G,cAAc2C,aAGnDizI,GAItB8B,EAAYC,EAAe,EAAG,EAAG,EAAG,GAOxC,SAASC,EAAQ/nJ,GACb,OAAO20B,WAAW30B,IAAU,EAShC,SAASu6I,EAAerjH,GAEpB,IADA,IAAI8wH,EAAY,GACP98I,EAAK,EAAGA,EAAK3C,UAAU9E,OAAQyH,IACpC88I,EAAU98I,EAAK,GAAK3C,UAAU2C,GAElC,OAAO88I,EAAU16G,QAAO,SAAUoR,EAAMpqB,GAEpC,OAAOoqB,EAAOqpG,EADF7wH,EAAO,UAAY5C,EAAW,aAE3C,GAmCP,SAAS2zH,EAA0Bz+I,GAG/B,IAAIwsI,EAAcxsI,EAAOwsI,YAAaC,EAAezsI,EAAOysI,aAS5D,IAAKD,IAAgBC,EACjB,OAAO4R,EAEX,IAAI3wH,EAAS0wH,EAAYp+I,GAAQqpB,iBAAiBrpB,GAC9C0+I,EA3CR,SAAqBhxH,GAGjB,IAFA,IACIgxH,EAAW,GACNh9I,EAAK,EAAGi9I,EAFD,CAAC,MAAO,QAAS,SAAU,QAEDj9I,EAAKi9I,EAAY1kJ,OAAQyH,IAAM,CACrE,IAAIopB,EAAW6zH,EAAYj9I,GACvBlL,EAAQk3B,EAAO,WAAa5C,GAChC4zH,EAAS5zH,GAAYyzH,EAAQ/nJ,GAEjC,OAAOkoJ,EAmCQE,CAAYlxH,GACvBmxH,EAAWH,EAAS7vH,KAAO6vH,EAAS/zH,MACpCm0H,EAAUJ,EAASn1I,IAAMm1I,EAAS5qF,OAKlCnqC,EAAQ40H,EAAQ7wH,EAAO/D,OAAQoC,EAASwyH,EAAQ7wH,EAAO3B,QAqB3D,GAlByB,eAArB2B,EAAOqxH,YAOH3+I,KAAK8qB,MAAMvB,EAAQk1H,KAAcrS,IACjC7iH,GAASonH,EAAerjH,EAAQ,OAAQ,SAAWmxH,GAEnDz+I,KAAK8qB,MAAMa,EAAS+yH,KAAarS,IACjC1gH,GAAUglH,EAAerjH,EAAQ,MAAO,UAAYoxH,KAoDhE,SAA2B9+I,GACvB,OAAOA,IAAWo+I,EAAYp+I,GAAQ5E,SAAS+N,gBA9C1C61I,CAAkBh/I,GAAS,CAK5B,IAAIgyI,EAAgB5xI,KAAK8qB,MAAMvB,EAAQk1H,GAAYrS,EAC/CuF,EAAiB3xI,KAAK8qB,MAAMa,EAAS+yH,GAAWrS,EAMpB,IAA5BrsI,KAAKinC,IAAI2qG,KACTroH,GAASqoH,GAEoB,IAA7B5xI,KAAKinC,IAAI0qG,KACThmH,GAAUgmH,GAGlB,OAAOuM,EAAeI,EAAS7vH,KAAM6vH,EAASn1I,IAAKogB,EAAOoC,GAQ9D,IAAIm3E,EAGkC,oBAAvB+7C,mBACA,SAAUj/I,GAAU,OAAOA,aAAkBo+I,EAAYp+I,GAAQi/I,oBAKrE,SAAUj/I,GAAU,OAAQA,aAAkBo+I,EAAYp+I,GAAQyjG,YAC3C,mBAAnBzjG,EAAOk1H,SAiBtB,SAASgqB,EAAel/I,GACpB,OAAK8uI,EAGD5rC,EAAqBljG,GAhH7B,SAA2BA,GACvB,IAAI6zD,EAAO7zD,EAAOk1H,UAClB,OAAOopB,EAAe,EAAG,EAAGzqF,EAAKlqC,MAAOkqC,EAAK9nC,QA+GlCozH,CAAkBn/I,GAEtBy+I,EAA0Bz+I,GALtBq+I,EAuCf,SAASC,EAAezzG,EAAGC,EAAGnhB,EAAOoC,GACjC,MAAO,CAAE8e,EAAGA,EAAGC,EAAGA,EAAGnhB,MAAOA,EAAOoC,OAAQA,GAO/C,IAAIqzH,EAAmC,WAMnC,SAASA,EAAkBp/I,GAMvB1H,KAAK+mJ,eAAiB,EAMtB/mJ,KAAKgnJ,gBAAkB,EAMvBhnJ,KAAKinJ,aAAejB,EAAe,EAAG,EAAG,EAAG,GAC5ChmJ,KAAK0H,OAASA,EA0BlB,OAlBAo/I,EAAkBjoJ,UAAUqoJ,SAAW,WACnC,IAAIr+G,EAAO+9G,EAAe5mJ,KAAK0H,QAE/B,OADA1H,KAAKinJ,aAAep+G,EACZA,EAAKxX,QAAUrxB,KAAK+mJ,gBACxBl+G,EAAKpV,SAAWzzB,KAAKgnJ,iBAQ7BF,EAAkBjoJ,UAAUsoJ,cAAgB,WACxC,IAAIt+G,EAAO7oC,KAAKinJ,aAGhB,OAFAjnJ,KAAK+mJ,eAAiBl+G,EAAKxX,MAC3BrxB,KAAKgnJ,gBAAkBn+G,EAAKpV,OACrBoV,GAEJi+G,EAnD2B,GAsDlCM,EAOA,SAA6B1/I,EAAQ2/I,GACjC,IA/FoBvT,EACpBvhG,EAAUC,EAAUnhB,EAAkBoC,EAEtC6zH,EACAz+G,EA2FI0+G,GA9FJh1G,GADoBuhG,EA+FiBuT,GA9F9B90G,EAAGC,EAAIshG,EAAGthG,EAAGnhB,EAAQyiH,EAAGziH,MAAOoC,EAASqgH,EAAGrgH,OAElD6zH,EAAoC,oBAApBE,gBAAkCA,gBAAkB7pJ,OACpEkrC,EAAOlrC,OAAOY,OAAO+oJ,EAAOzoJ,WAEhCgnJ,EAAmBh9G,EAAM,CACrB0J,EAAGA,EAAGC,EAAGA,EAAGnhB,MAAOA,EAAOoC,OAAQA,EAClCxiB,IAAKuhC,EACLngB,MAAOkgB,EAAIlhB,EACXmqC,OAAQ/nC,EAAS+e,EACjBjc,KAAMgc,IAEH1J,GAyFHg9G,EAAmB7lJ,KAAM,CAAE0H,OAAQA,EAAQ6/I,YAAaA,KAK5DE,EAAmC,WAWnC,SAASA,EAAkBnhJ,EAAUohJ,EAAYC,GAc7C,GAPA3nJ,KAAK4nJ,oBAAsB,GAM3B5nJ,KAAK6nJ,cAAgB,IAAI/D,EACD,mBAAbx9I,EACP,MAAM,IAAI8Y,UAAU,2DAExBpf,KAAK8nJ,UAAYxhJ,EACjBtG,KAAK+nJ,YAAcL,EACnB1nJ,KAAKgoJ,aAAeL,EAoHxB,OA5GAF,EAAkB5oJ,UAAUypE,QAAU,SAAU5gE,GAC5C,IAAKjB,UAAU9E,OACX,MAAM,IAAIyd,UAAU,4CAGxB,GAAuB,oBAAZ6wF,SAA6BA,mBAAmBtyG,OAA3D,CAGA,KAAM+J,aAAkBo+I,EAAYp+I,GAAQuoG,SACxC,MAAM,IAAI7wF,UAAU,yCAExB,IAAI6oI,EAAejoJ,KAAK6nJ,cAEpBI,EAAa5sI,IAAI3T,KAGrBugJ,EAAa3lI,IAAI5a,EAAQ,IAAIo/I,EAAkBp/I,IAC/C1H,KAAK+nJ,YAAYhD,YAAY/kJ,MAE7BA,KAAK+nJ,YAAY70G,aAQrBu0G,EAAkB5oJ,UAAUqpJ,UAAY,SAAUxgJ,GAC9C,IAAKjB,UAAU9E,OACX,MAAM,IAAIyd,UAAU,4CAGxB,GAAuB,oBAAZ6wF,SAA6BA,mBAAmBtyG,OAA3D,CAGA,KAAM+J,aAAkBo+I,EAAYp+I,GAAQuoG,SACxC,MAAM,IAAI7wF,UAAU,yCAExB,IAAI6oI,EAAejoJ,KAAK6nJ,cAEnBI,EAAa5sI,IAAI3T,KAGtBugJ,EAAa7kE,OAAO17E,GACfugJ,EAAarrG,MACd58C,KAAK+nJ,YAAY9C,eAAejlJ,SAQxCynJ,EAAkB5oJ,UAAU8mJ,WAAa,WACrC3lJ,KAAKmoJ,cACLnoJ,KAAK6nJ,cAAchvF,QACnB74D,KAAK+nJ,YAAY9C,eAAejlJ,OAQpCynJ,EAAkB5oJ,UAAUymJ,aAAe,WACvC,IAAInyF,EAAQnzD,KACZA,KAAKmoJ,cACLnoJ,KAAK6nJ,cAAc18G,SAAQ,SAAUi9G,GAC7BA,EAAYlB,YACZ/zF,EAAMy0F,oBAAoBplJ,KAAK4lJ,OAU3CX,EAAkB5oJ,UAAU2mJ,gBAAkB,WAE1C,GAAKxlJ,KAAKulJ,YAAV,CAGA,IAAI/1G,EAAMxvC,KAAKgoJ,aAEXh+F,EAAUhqD,KAAK4nJ,oBAAoBrhJ,KAAI,SAAU6hJ,GACjD,OAAO,IAAIhB,EAAoBgB,EAAY1gJ,OAAQ0gJ,EAAYjB,oBAEnEnnJ,KAAK8nJ,UAAU1qJ,KAAKoyC,EAAKwa,EAASxa,GAClCxvC,KAAKmoJ,gBAOTV,EAAkB5oJ,UAAUspJ,YAAc,WACtCnoJ,KAAK4nJ,oBAAoBvgJ,OAAO,IAOpCogJ,EAAkB5oJ,UAAU0mJ,UAAY,WACpC,OAAOvlJ,KAAK4nJ,oBAAoBjmJ,OAAS,GAEtC8lJ,EAlJ2B,GAwJlCvC,EAA+B,oBAAZ1kF,QAA0B,IAAIA,QAAY,IAAIsjF,EAKjEuE,EAOA,SAASA,EAAe/hJ,GACpB,KAAMtG,gBAAgBqoJ,GAClB,MAAM,IAAIjpI,UAAU,sCAExB,IAAK3Y,UAAU9E,OACX,MAAM,IAAIyd,UAAU,4CAExB,IAAIsoI,EAAarD,EAAyBl0B,cACtC5iD,EAAW,IAAIk6E,EAAkBnhJ,EAAUohJ,EAAY1nJ,MAC3DklJ,EAAU5iI,IAAItiB,KAAMutE,IAK5B,CACI,UACA,YACA,cACFpiC,SAAQ,SAAUxuB,GAChB0rI,EAAexpJ,UAAU8d,GAAU,WAC/B,IAAIm3H,EACJ,OAAQA,EAAKoR,EAAUpnJ,IAAIkC,OAAO2c,GAAQnZ,MAAMswI,EAAIrtI,eAI5D,IAAI/E,OAEuC,IAA5BuiJ,EAASoE,eACTpE,EAASoE,eAEbA,EAGI,Q,mCC/5Bf,OAsBA,SAAUplJ,EAAQH,EAAUZ,GAGxB,GAAKe,EAAL,CA6HA,IAhHA,IA0GIqlJ,EA1GAC,EAAO,CACPC,EAAG,YACHC,EAAG,MACHC,GAAI,QACJC,GAAI,QACJC,GAAI,OACJC,GAAI,MACJC,GAAI,WACJC,GAAI,MACJC,GAAI,QACJC,GAAI,SACJC,GAAI,WACJC,GAAI,MACJC,GAAI,OACJC,GAAI,OACJC,GAAI,KACJC,GAAI,QACJC,GAAI,OACJC,GAAI,MACJC,GAAI,MACJC,GAAI,OACJC,GAAI,OACJC,IAAK,QAWLC,EAAe,CACfC,IAAK,IACLC,IAAK,IACLC,IAAK,IACLC,IAAK,IACLC,IAAM,IACNC,IAAK,IACLC,IAAK,IACLC,IAAK,IACLC,IAAK,IACLC,IAAK,IACLC,IAAK,IACLC,IAAK,IACLC,IAAK,IACLC,IAAK,KACLC,IAAK,IACLC,IAAK,KAaLC,EAAa,CACb,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,EAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,EAAK,IACL,IAAK,IACL,IAAK,IACL,IAAM,IACN,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,MASLC,EAAmB,CACnB,OAAU,MACV,QAAW,OACX,OAAU,QACV,OAAU,MACV,KAAQ,IACR,IAAO,uBAAuBp8I,KAAK4qD,UAAU4K,UAAY,OAAS,QAgB7DnnE,EAAI,EAAGA,EAAI,KAAMA,EACtBsrJ,EAAK,IAAMtrJ,GAAK,IAAMA,EAM1B,IAAKA,EAAI,EAAGA,GAAK,IAAKA,EAOlBsrJ,EAAKtrJ,EAAI,IAAMA,EAAE0G,WAuuBrBsnJ,EAAUpsJ,UAAUJ,KAAO,SAAS2Q,EAAM9I,EAAU86C,GAIhD,OAFAhyC,EAAOA,aAAgBlO,MAAQkO,EAAO,CAACA,GAD5BpP,KAENkrJ,cAAc9tJ,KAFR4C,KAEmBoP,EAAM9I,EAAU86C,GAFnCphD,MAuBfirJ,EAAUpsJ,UAAU2qC,OAAS,SAASp6B,EAAMgyC,GAExC,OADWphD,KACCvB,KAAKrB,KADN4C,KACiBoP,GAAM,cAAegyC,IAUrD6pG,EAAUpsJ,UAAUqqB,QAAU,SAAS9Z,EAAMgyC,GAKzC,OAJWphD,KACFmrJ,WAAW/7I,EAAO,IAAMgyC,IADtBphD,KAEFmrJ,WAAW/7I,EAAO,IAAMgyC,GAAQ,GAAIhyC,GAFlCpP,MAcfirJ,EAAUpsJ,UAAU8X,MAAQ,WAIxB,OAHW3W,KACNorJ,WAAa,GADPprJ,KAENmrJ,WAAa,GAFPnrJ,MAafirJ,EAAUpsJ,UAAUwsJ,aAAe,SAASx9I,EAAG2pH,GAI3C,IAAK,IAAMA,EAAQpmH,UAAY,KAAK3N,QAAQ,gBAAkB,EAC1D,OAAO,EAGX,GA9iBJ,SAAS6nJ,EAAW9zB,EAAStlC,GACzB,OAAgB,OAAZslC,GAAoBA,IAAY10H,IAIhC00H,IAAYtlC,GAITo5D,EAAW9zB,EAAQnyH,WAAY6sF,IAqiBlCo5D,CAAW9zB,EAPJx3H,KAOkB0H,QACzB,OAAO,EASX,GAAI,iBAAkBmG,GAA+B,mBAAnBA,EAAE09I,aAA6B,CAE7D,IAAIC,EAAqB39I,EAAE09I,eAAe,GACtCC,IAAuB39I,EAAEnG,SACzB8vH,EAAUg0B,GAKlB,MAA0B,SAAnBh0B,EAAQ/xC,SAAyC,UAAnB+xC,EAAQ/xC,SAA0C,YAAnB+xC,EAAQ/xC,SAAyB+xC,EAAQi0B,mBAMjHR,EAAUpsJ,UAAU6sJ,UAAY,WAC5B,IAAI7pJ,EAAO7B,KACX,OAAO6B,EAAK8pJ,WAAWnoJ,MAAM3B,EAAM4E,YAMvCwkJ,EAAUW,YAAc,SAASjtJ,GAC7B,IAAK,IAAIH,KAAOG,EACRA,EAAOG,eAAeN,KACtB+pJ,EAAK/pJ,GAAOG,EAAOH,IAG3B8pJ,EAAe,MASnB2C,EAAUtlJ,KAAO,WACb,IAAIkmJ,EAAoBZ,EAAUnoJ,GAClC,IAAK,IAAI6Z,KAAUkvI,EACU,MAArBlvI,EAAO2kD,OAAO,KACd2pF,EAAUtuI,GAAW,SAASA,GAC1B,OAAO,WACH,OAAOkvI,EAAkBlvI,GAAQnZ,MAAMqoJ,EAAmBplJ,YAF9C,CAIjBkW,KAKfsuI,EAAUtlJ,OAGV1C,EAAOgoJ,UAAYA,EAGkBjuJ,EAAOD,UACxCC,EAAOD,QAAUkuJ,QAlgCzB,KAugCQ,aACI,OAAOA,GACV,8BAh3BL,SAASa,EAAUntJ,EAAQ4C,EAAM+E,GACzB3H,EAAOuS,iBACPvS,EAAOuS,iBAAiB3P,EAAM+E,GAAU,GAI5C3H,EAAOwS,YAAY,KAAO5P,EAAM+E,GASpC,SAASylJ,EAAoBl+I,GAGzB,GAAc,YAAVA,EAAEtM,KAAoB,CACtB,IAAIyqJ,EAAYl/I,OAAOC,aAAac,EAAE+f,OAetC,OAJK/f,EAAE+e,WACHo/H,EAAYA,EAAU3iJ,eAGnB2iJ,EAIX,OAAIzD,EAAK16I,EAAE+f,OACA26H,EAAK16I,EAAE+f,OAGdk8H,EAAaj8I,EAAE+f,OACRk8H,EAAaj8I,EAAE+f,OAQnB9gB,OAAOC,aAAac,EAAE+f,OAAOvkB,cA8ExC,SAAS4iJ,EAAYztJ,GACjB,MAAc,SAAPA,GAAyB,QAAPA,GAAwB,OAAPA,GAAuB,QAAPA,EAmC9D,SAAS0tJ,EAAgB1tJ,EAAKkpF,EAAWtmC,GAcrC,OAVKA,IACDA,EA/BR,WACI,IAAKknG,EAED,IAAK,IAAI9pJ,KADT8pJ,EAAe,GACCC,EAIR/pJ,EAAM,IAAMA,EAAM,KAIlB+pJ,EAAKzpJ,eAAeN,KACpB8pJ,EAAaC,EAAK/pJ,IAAQA,GAItC,OAAO8pJ,EAeM6D,GAAiB3tJ,GAAO,UAAY,YAKnC,YAAV4iD,GAAwBsmC,EAAU/lF,SAClCy/C,EAAS,WAGNA,EAyBX,SAASgrG,EAAYC,EAAajrG,GAC9B,IAAIhyC,EACA5Q,EACAvB,EACAyqF,EAAY,GAMhB,IAFAt4E,EAxBJ,SAAyBi9I,GACrB,MAAoB,MAAhBA,EACO,CAAC,MAGZA,EAAcA,EAAYrkJ,QAAQ,SAAU,UACzBmB,MAAM,KAkBlBmjJ,CAAgBD,GAElBpvJ,EAAI,EAAGA,EAAImS,EAAKzN,SAAU1E,EAC3BuB,EAAM4Q,EAAKnS,GAGP+tJ,EAAiBxsJ,KACjBA,EAAMwsJ,EAAiBxsJ,IAMvB4iD,GAAoB,YAAVA,GAAwB2pG,EAAWvsJ,KAC7CA,EAAMusJ,EAAWvsJ,GACjBkpF,EAAUllF,KAAK,UAIfypJ,EAAYztJ,IACZkpF,EAAUllF,KAAKhE,GAQvB,MAAO,CACHA,IAAKA,EACLkpF,UAAWA,EACXtmC,OALJA,EAAS8qG,EAAgB1tJ,EAAKkpF,EAAWtmC,IAqB7C,SAAS6pG,EAAUsB,GACf,IAAI1qJ,EAAO7B,KAIX,GAFAusJ,EAAgBA,GAAiBzpJ,IAE3BjB,aAAgBopJ,GAClB,OAAO,IAAIA,EAAUsB,GAQzB1qJ,EAAK6F,OAAS6kJ,EAOd1qJ,EAAKupJ,WAAa,GAOlBvpJ,EAAKspJ,WAAa,GAQlB,IAOIqB,EAPAC,EAAkB,GAclBC,GAAmB,EAOnBC,GAAsB,EAQtBC,GAAsB,EAQ1B,SAASC,EAAgBC,GACrBA,EAAaA,GAAc,GAE3B,IACItuJ,EADAuuJ,GAAkB,EAGtB,IAAKvuJ,KAAOiuJ,EACJK,EAAWtuJ,GACXuuJ,GAAkB,EAGtBN,EAAgBjuJ,GAAO,EAGtBuuJ,IACDH,GAAsB,GAgB9B,SAASI,EAAYhB,EAAWtkE,EAAW75E,EAAGo/I,EAAcZ,EAAap1C,GACrE,IAAIh6G,EACAqJ,EAhTa4mJ,EAAYC,EAiTzBrkJ,EAAU,GACVs4C,EAASvzC,EAAEtM,KAGf,IAAKM,EAAKupJ,WAAWY,GACjB,MAAO,GAUX,IANc,SAAV5qG,GAAqB6qG,EAAYD,KACjCtkE,EAAY,CAACskE,IAKZ/uJ,EAAI,EAAGA,EAAI4E,EAAKupJ,WAAWY,GAAWrqJ,SAAU1E,EAKjD,GAJAqJ,EAAWzE,EAAKupJ,WAAWY,GAAW/uJ,IAIjCgwJ,IAAgB3mJ,EAAS8mJ,KAAOX,EAAgBnmJ,EAAS8mJ,MAAQ9mJ,EAAS2wG,QAM3E71D,GAAU96C,EAAS86C,SAWR,YAAVA,IAAyBvzC,EAAE4e,UAAY5e,EAAEye,UAtVjC4gI,EAsV6DxlE,EAtVjDylE,EAsV4D7mJ,EAASohF,UArV/FwlE,EAAW9lJ,OAAO4H,KAAK,OAASm+I,EAAW/lJ,OAAO4H,KAAK,OAqVoD,CAOtG,IAAIq+I,GAAeJ,GAAgB3mJ,EAASgnJ,OAASjB,EACjDkB,EAAiBN,GAAgB3mJ,EAAS8mJ,KAAOH,GAAgB3mJ,EAAS2wG,OAASA,GACnFo2C,GAAeE,IACf1rJ,EAAKupJ,WAAWY,GAAW3kJ,OAAOpK,EAAG,GAGzC6L,EAAQtG,KAAK8D,GAIrB,OAAOwC,EAaX,SAAS0kJ,EAAclnJ,EAAUuH,EAAGy/I,EAAOG,GAGnC5rJ,EAAKwpJ,aAAax9I,EAAGA,EAAEnG,QAAUmG,EAAE6/I,WAAYJ,EAAOG,KAI/B,IAAvBnnJ,EAASuH,EAAGy/I,KArVxB,SAAyBz/I,GACjBA,EAAEob,eACFpb,EAAEob,iBAINpb,EAAE6d,aAAc,EAgVRiiI,CAAgB9/I,GAvU5B,SAA0BA,GAClBA,EAAEkb,gBACFlb,EAAEkb,kBAINlb,EAAEumG,cAAe,EAkUTw5C,CAAiB//I,IAkGzB,SAASggJ,EAAgBhgJ,GAIE,iBAAZA,EAAE+f,QACT/f,EAAE+f,MAAQ/f,EAAEkf,SAGhB,IAAIi/H,EAAYD,EAAoBl+I,GAG/Bm+I,IAKS,SAAVn+I,EAAEtM,MAAmBmrJ,IAAqBV,EAK9CnqJ,EAAK6pJ,UAAUM,EA1evB,SAAyBn+I,GACrB,IAAI65E,EAAY,GAkBhB,OAhBI75E,EAAE+e,UACF86D,EAAUllF,KAAK,SAGfqL,EAAEqe,QACFw7D,EAAUllF,KAAK,OAGfqL,EAAEye,SACFo7D,EAAUllF,KAAK,QAGfqL,EAAE4e,SACFi7D,EAAUllF,KAAK,QAGZklF,EAuduBomE,CAAgBjgJ,GAAIA,GAJ1C6+I,GAAmB,GA6B3B,SAASqB,EAAcT,EAAOl+I,EAAM9I,EAAU86C,GAa1C,SAAS4sG,EAAkBC,GACvB,OAAO,WACHrB,EAAsBqB,IACpBxB,EAAgBa,GA7B1BvxH,aAAaywH,GACbA,EAAc5sI,WAAWitI,EAAiB,MAwC1C,SAASqB,EAAkBrgJ,GACvB2/I,EAAclnJ,EAAUuH,EAAGy/I,GAKZ,UAAXlsG,IACAsrG,EAAmBX,EAAoBl+I,IAK3C+R,WAAWitI,EAAiB,IApChCJ,EAAgBa,GAAS,EAgDzB,IAAK,IAAIrwJ,EAAI,EAAGA,EAAImS,EAAKzN,SAAU1E,EAAG,CAClC,IACIkxJ,EADUlxJ,EAAI,IAAMmS,EAAKzN,OACGusJ,EAAoBF,EAAkB5sG,GAAUgrG,EAAYh9I,EAAKnS,EAAI,IAAImkD,QACzGgtG,EAAYh/I,EAAKnS,GAAIkxJ,EAAiB/sG,EAAQksG,EAAOrwJ,IAc7D,SAASmxJ,EAAY/B,EAAa/lJ,EAAU86C,EAAQ6rG,EAAch2C,GAG9Dp1G,EAAKspJ,WAAWkB,EAAc,IAAMjrG,GAAU96C,EAK9C,IACIgmE,EADAmhF,GAFJpB,EAAcA,EAAYrkJ,QAAQ,OAAQ,MAEfmB,MAAM,KAK7BskJ,EAAS9rJ,OAAS,EAClBosJ,EAAc1B,EAAaoB,EAAUnnJ,EAAU86C,IAInDkrB,EAAO8/E,EAAYC,EAAajrG,GAIhCv/C,EAAKupJ,WAAW9+E,EAAK9tE,KAAOqD,EAAKupJ,WAAW9+E,EAAK9tE,MAAQ,GAGzDwuJ,EAAY1gF,EAAK9tE,IAAK8tE,EAAKob,UAAW,CAACnmF,KAAM+qE,EAAKlrB,QAAS6rG,EAAcZ,EAAap1C,GAQtFp1G,EAAKupJ,WAAW9+E,EAAK9tE,KAAKyuJ,EAAe,UAAY,QAAQ,CACzD3mJ,SAAUA,EACVohF,UAAWpb,EAAKob,UAChBtmC,OAAQkrB,EAAKlrB,OACbgsG,IAAKH,EACLh2C,MAAOA,EACPq2C,MAAOjB,KAhPfxqJ,EAAK8pJ,WAAa,SAASK,EAAWtkE,EAAW75E,GAC7C,IACI5Q,EADA8vE,EAAYigF,EAAYhB,EAAWtkE,EAAW75E,GAE9Ci/I,EAAa,GACbuB,EAAW,EACXC,GAA4B,EAGhC,IAAKrxJ,EAAI,EAAGA,EAAI8vE,EAAUprE,SAAU1E,EAC5B8vE,EAAU9vE,GAAGmwJ,MACbiB,EAAWvmJ,KAAKitB,IAAIs5H,EAAUthF,EAAU9vE,GAAGg6G,QAKnD,IAAKh6G,EAAI,EAAGA,EAAI8vE,EAAUprE,SAAU1E,EAOhC,GAAI8vE,EAAU9vE,GAAGmwJ,IAAjB,CAUI,GAAIrgF,EAAU9vE,GAAGg6G,OAASo3C,EACtB,SAGJC,GAA4B,EAG5BxB,EAAW//E,EAAU9vE,GAAGmwJ,KAAO,EAC/BI,EAAczgF,EAAU9vE,GAAGqJ,SAAUuH,EAAGk/D,EAAU9vE,GAAGqwJ,MAAOvgF,EAAU9vE,GAAGmwJ,UAMxEkB,GACDd,EAAczgF,EAAU9vE,GAAGqJ,SAAUuH,EAAGk/D,EAAU9vE,GAAGqwJ,OAyB7D,IAAIiB,EAA+B,YAAV1gJ,EAAEtM,MAAsBorJ,EAC7C9+I,EAAEtM,MAAQqrJ,GAAwBX,EAAYD,IAAeuC,GAC7D1B,EAAgBC,GAGpBH,EAAsB2B,GAAuC,WAAVzgJ,EAAEtM,MA+KzDM,EAAKqpJ,cAAgB,SAASsD,EAAcloJ,EAAU86C,GAClD,IAAK,IAAInkD,EAAI,EAAGA,EAAIuxJ,EAAa7sJ,SAAU1E,EACvCmxJ,EAAYI,EAAavxJ,GAAIqJ,EAAU86C,IAK/C0qG,EAAUS,EAAe,WAAYsB,GACrC/B,EAAUS,EAAe,UAAWsB,GACpC/B,EAAUS,EAAe,QAASsB,IAp2B1C,CA2gCsB,oBAAX5qJ,OAAyBA,OAAS,KAAyB,oBAAXA,OAAyBH,SAAW,O,cCjiC/F9F,EAAOD,QAAQ,SAAS8Q,GAAG,SAAS1P,EAAEa,GAAG,GAAGjB,EAAEiB,GAAG,OAAOjB,EAAEiB,GAAGjC,QAAQ,IAAIE,EAAEc,EAAEiB,GAAG,CAAC/B,EAAE+B,EAAE9B,GAAE,EAAGH,QAAQ,IAAI,OAAO8Q,EAAE7O,GAAG5B,KAAKH,EAAEF,QAAQE,EAAEA,EAAEF,QAAQoB,GAAGlB,EAAEC,GAAE,EAAGD,EAAEF,QAAQ,IAAIgB,EAAE,GAAG,OAAOI,EAAEd,EAAEwQ,EAAE1P,EAAEb,EAAES,EAAEI,EAAEZ,EAAE,SAASsQ,EAAE9P,EAAEiB,GAAGb,EAAET,EAAEmQ,EAAE9P,IAAIJ,OAAOC,eAAeiQ,EAAE9P,EAAE,CAACskB,cAAa,EAAGxkB,YAAW,EAAGC,IAAIkB,KAAKb,EAAEO,EAAE,SAASmP,GAAG,IAAI9P,EAAE8P,GAAGA,EAAExP,WAAW,WAAW,OAAOwP,EAAEg+D,SAAS,WAAW,OAAOh+D,GAAG,OAAO1P,EAAEZ,EAAEQ,EAAE,IAAIA,GAAGA,GAAGI,EAAET,EAAE,SAASmQ,EAAE1P,GAAG,OAAOR,OAAOkB,UAAUC,eAAe1B,KAAKyQ,EAAE1P,IAAIA,EAAEY,EAAE,QAAQZ,EAAEA,EAAEa,EAAE,GAAnd,CAAud,CAAC,SAAS6O,EAAE1P,EAAEJ,GAAG,aAAaJ,OAAOC,eAAeO,EAAE,aAAa,CAACD,OAAM,IAAK,IAAWjB,EAAE,SAAS4Q,GAAG,OAAOA,GAAGA,EAAExP,WAAWwP,EAAE,CAACg+D,QAAQh+D,GAA9C,CAAP9P,EAAE,IAA0DI,EAAE0tE,QAAQ5uE,EAAE4uE,SAAS,SAASh+D,EAAE1P,EAAEJ,GAAsB,IAAId,EAAEc,EAAE,EAAFA,CAAKA,EAAE,GAAGA,EAAE,IAArC,SAAW8P,GAAG9P,EAAE,KAA0B,KAAK,MAAM8P,EAAE9Q,QAAQE,EAAEF,SAAS,SAAS8Q,EAAE1P,EAAEJ,GAAG,IAAIiB,EAAEjB,EAAE,GAAG,iBAAiBiB,IAAIA,EAAE,CAAC,CAAC6O,EAAE5Q,EAAE+B,EAAE,MAAMA,EAAEyvJ,SAAS5gJ,EAAE9Q,QAAQiC,EAAEyvJ,QAAQ1wJ,EAAE,EAAFA,CAAK,WAAWiB,GAAE,IAAK,SAAS6O,EAAE1P,EAAEJ,IAAK8P,EAAE9Q,QAAQgB,EAAE,EAAFA,IAASyE,KAAK,CAACqL,EAAE5Q,EAAE,oeAAoe,MAAM,SAAS4Q,EAAE1P,EAAEJ,GAAG,aAAa8P,EAAE9Q,QAAQ,WAAW,IAAI8Q,EAAE,GAAG,OAAOA,EAAElK,SAAS,WAAW,IAAI,IAAIkK,EAAE,GAAG1P,EAAE,EAAEA,EAAE6B,KAAK2B,OAAOxD,IAAI,CAAC,IAAIJ,EAAEiC,KAAK7B,GAAGJ,EAAE,GAAG8P,EAAErL,KAAK,UAAUzE,EAAE,GAAG,IAAIA,EAAE,GAAG,KAAK8P,EAAErL,KAAKzE,EAAE,IAAI,OAAO8P,EAAEmB,KAAK,KAAKnB,EAAE5Q,EAAE,SAASkB,EAAEJ,GAAG,iBAAiBI,IAAIA,EAAE,CAAC,CAAC,KAAKA,EAAE,MAAM,IAAI,IAAIa,EAAE,GAAG/B,EAAE,EAAEA,EAAE+C,KAAK2B,OAAO1E,IAAI,CAAC,IAAIyB,EAAEsB,KAAK/C,GAAG,GAAG,iBAAiByB,IAAIM,EAAEN,IAAG,GAAI,IAAIzB,EAAE,EAAEA,EAAEkB,EAAEwD,OAAO1E,IAAI,CAAC,IAAIS,EAAES,EAAElB,GAAG,iBAAiBS,EAAE,IAAIsB,EAAEtB,EAAE,MAAMK,IAAIL,EAAE,GAAGA,EAAE,GAAGK,EAAEA,IAAIL,EAAE,GAAG,IAAIA,EAAE,GAAG,UAAUK,EAAE,KAAK8P,EAAErL,KAAK9E,MAAMmQ,IAAI,SAASA,EAAE1P,EAAEJ,GAAG,SAASiB,EAAE6O,GAAG,IAAI,IAAI1P,EAAE,EAAEA,EAAE0P,EAAElM,OAAOxD,IAAI,CAAC,IAAIJ,EAAE8P,EAAE1P,GAAGa,EAAE2qI,EAAE5rI,EAAEyQ,IAAI,GAAGxP,EAAE,CAACA,EAAEknF,OAAO,IAAI,IAAIjpF,EAAE,EAAEA,EAAE+B,EAAE+3B,MAAMp1B,OAAO1E,IAAI+B,EAAE+3B,MAAM95B,GAAGc,EAAEg5B,MAAM95B,IAAI,KAAKA,EAAEc,EAAEg5B,MAAMp1B,OAAO1E,IAAI+B,EAAE+3B,MAAMv0B,KAAK9D,EAAEX,EAAEg5B,MAAM95B,KAAK+B,EAAE+3B,MAAMp1B,OAAO5D,EAAEg5B,MAAMp1B,SAAS3C,EAAE+3B,MAAMp1B,OAAO5D,EAAEg5B,MAAMp1B,YAAY,CAAK,IAAIjE,EAAE,GAAV,IAAaT,EAAE,EAAEA,EAAEc,EAAEg5B,MAAMp1B,OAAO1E,IAAIS,EAAE8E,KAAK9D,EAAEX,EAAEg5B,MAAM95B,KAAK0sI,EAAE5rI,EAAEyQ,IAAI,CAACA,GAAGzQ,EAAEyQ,GAAG03E,KAAK,EAAEnvD,MAAMr5B,KAAK,SAAST,IAAI,IAAI4Q,EAAE/K,SAASiC,cAAc,SAAS,OAAO8I,EAAEtM,KAAK,WAAWjE,EAAE8H,YAAYyI,GAAGA,EAAE,SAASnP,EAAEmP,GAAG,IAAI1P,EAAEJ,EAAEiB,EAAE8D,SAASy1F,cAAc,2BAA2B1qF,EAAEW,GAAG,MAAM,GAAGxP,EAAE,CAAC,GAAGD,EAAE,OAAO05F,EAAEz5F,EAAEqG,WAAWC,YAAYtG,GAAG,GAAGod,EAAE,CAAC,IAAI1d,EAAEs2G,IAAIh2G,EAAE9B,IAAIA,EAAED,KAAKkB,EAAET,EAAEe,KAAK,KAAKO,EAAEN,GAAE,GAAIX,EAAEL,EAAEe,KAAK,KAAKO,EAAEN,GAAE,QAASM,EAAE/B,IAAIkB,EAAE6M,EAAEvM,KAAK,KAAKO,GAAGjB,EAAE,WAAWiB,EAAEqG,WAAWC,YAAYtG,IAAI,OAAOb,EAAE0P,GAAG,SAAS7O,GAAG,GAAGA,EAAE,CAAC,GAAGA,EAAEwlB,MAAM3W,EAAE2W,KAAKxlB,EAAE0vJ,QAAQ7gJ,EAAE6gJ,OAAO1vJ,EAAE2vJ,YAAY9gJ,EAAE8gJ,UAAU,OAAOxwJ,EAAE0P,EAAE7O,QAAQjB,KAAK,SAASL,EAAEmQ,EAAE1P,EAAEJ,EAAEiB,GAAG,IAAI/B,EAAEc,EAAE,GAAGiB,EAAEwlB,IAAI,GAAG3W,EAAE27G,WAAW37G,EAAE27G,WAAWz3F,QAAQygB,EAAEr0C,EAAElB,OAAO,CAAC,IAAIyB,EAAEoE,SAAS+kB,eAAe5qB,GAAGS,EAAEmQ,EAAED,WAAWlQ,EAAES,IAAI0P,EAAEvI,YAAY5H,EAAES,IAAIT,EAAEiE,OAAOkM,EAAEoiB,aAAavxB,EAAEhB,EAAES,IAAI0P,EAAEzI,YAAY1G,IAAI,SAASsM,EAAE6C,EAAE1P,GAAG,IAAIJ,EAAEI,EAAEqmB,IAAIxlB,EAAEb,EAAEuwJ,MAAMzxJ,EAAEkB,EAAEwwJ,UAAU,GAAG3vJ,GAAG6O,EAAE3I,aAAa,QAAQlG,GAAG/B,IAAIc,GAAG,mBAAmBd,EAAE80D,QAAQ,GAAG,MAAMh0D,GAAG,uDAAuD6wJ,KAAKvhG,SAAS5tB,mBAAmB1c,KAAKs3C,UAAUp9D,MAAM,OAAO4Q,EAAE27G,WAAW37G,EAAE27G,WAAWz3F,QAAQh0B,MAAM,CAAC,KAAK8P,EAAE4F,YAAY5F,EAAEvI,YAAYuI,EAAE4F,YAAY5F,EAAEzI,YAAYtC,SAAS+kB,eAAe9pB,KAAK,IAAI8C,EAAE,oBAAoBiC,SAAS,GAAG,oBAAoB+rJ,OAAOA,QAAQhuJ,EAAE,MAAM,IAAImC,MAAM,2JAA2J,IAAIzF,EAAEQ,EAAE,GAAG4rI,EAAE,GAAGrsI,EAAEuD,IAAIiC,SAASqC,MAAMrC,SAAS2L,qBAAqB,QAAQ,IAAIvR,EAAE,KAAK83G,EAAE,EAAEj2G,GAAE,EAAG05F,EAAE,aAAar8E,EAAE,oBAAoBo9C,WAAW,eAAe5qD,KAAK4qD,UAAUU,UAAU7wD,eAAewE,EAAE9Q,QAAQ,SAAS8Q,EAAE1P,EAAEJ,GAAGgB,EAAEhB,EAAE,IAAId,EAAEM,EAAEsQ,EAAE1P,GAAG,OAAOa,EAAE/B,GAAG,SAASkB,GAAG,IAAI,IAAIJ,EAAE,GAAGW,EAAE,EAAEA,EAAEzB,EAAE0E,OAAOjD,IAAI,CAAC,IAAIhB,EAAET,EAAEyB,IAAGsM,EAAE2+H,EAAEjsI,EAAE8Q,KAAM03E,OAAOnoF,EAAEyE,KAAKwI,GAAG7M,EAAYa,EAAT/B,EAAEM,EAAEsQ,EAAE1P,IAASlB,EAAE,GAAG,IAAQyB,EAAE,EAAEA,EAAEX,EAAE4D,OAAOjD,IAAI,CAAC,IAAIsM,EAAO,GAAG,KAAVA,EAAEjN,EAAEW,IAAYwnF,KAAK,CAAC,IAAI,IAAIrlF,EAAE,EAAEA,EAAEmK,EAAE+rB,MAAMp1B,OAAOd,IAAImK,EAAE+rB,MAAMl2B,YAAY8oI,EAAE3+H,EAAEwD,QAAQ,IAAIgkC,EAAE,WAAW,IAAI3kC,EAAE,GAAG,OAAO,SAAS1P,EAAEJ,GAAG,OAAO8P,EAAE1P,GAAGJ,EAAE8P,EAAE2D,OAAOm6D,SAAS38D,KAAK,OAA9E,IAAyF,SAASnB,EAAE1P,EAAEJ,GAAG,aAAa8P,EAAE9Q,QAAQ,SAAS8Q,EAAE1P,GAAG,IAAI,IAAIJ,EAAE,GAAGiB,EAAE,GAAG/B,EAAE,EAAEA,EAAEkB,EAAEwD,OAAO1E,IAAI,CAAC,IAAIyB,EAAEP,EAAElB,GAAGS,EAAEgB,EAAE,GAAwBirI,EAAE,CAACn7H,GAAGX,EAAE,IAAI5Q,EAAEunB,IAAjC9lB,EAAE,GAAqCgwJ,MAAhChwJ,EAAE,GAAsCiwJ,UAAjCjwJ,EAAE,IAA4CM,EAAEtB,GAAGsB,EAAEtB,GAAGq5B,MAAMv0B,KAAKmnI,GAAG5rI,EAAEyE,KAAKxD,EAAEtB,GAAG,CAAC8Q,GAAG9Q,EAAEq5B,MAAM,CAAC4yG,KAAK,OAAO5rI,IAAI,SAAS8P,EAAE1P,GAAG0P,EAAE9Q,QAAQ,SAAS8Q,EAAE1P,EAAEJ,EAAEiB,EAAE/B,GAAG,IAAIyB,EAAEhB,EAAEmQ,EAAEA,GAAG,GAAG7C,SAAS6C,EAAEg+D,QAAQ,WAAW7gE,GAAG,aAAaA,IAAItM,EAAEmP,EAAEnQ,EAAEmQ,EAAEg+D,SAAS,IAAwHtuE,EAApHsD,EAAE,mBAAmBnD,EAAEA,EAAEiC,QAAQjC,EAAqF,GAAnFS,IAAI0C,EAAE1B,OAAOhB,EAAEgB,OAAO0B,EAAEzB,gBAAgBjB,EAAEiB,iBAAiBJ,IAAI6B,EAAEf,SAASd,GAAY/B,GAAGM,EAAE,SAASsQ,IAAGA,EAAEA,GAAG7N,KAAKC,QAAQD,KAAKC,OAAOC,YAAYF,KAAKG,QAAQH,KAAKG,OAAOF,QAAQD,KAAKG,OAAOF,OAAOC,aAAc,oBAAoBE,sBAAsByN,EAAEzN,qBAAqBrC,GAAGA,EAAEX,KAAK4C,KAAK6N,GAAGA,GAAGA,EAAExN,uBAAuBwN,EAAExN,sBAAsBC,IAAIrD,IAAI4D,EAAEN,aAAahD,GAAGQ,IAAIR,EAAEQ,GAAGR,EAAE,CAAC,IAAIosI,EAAE9oI,EAAEhB,WAAWvC,EAAEqsI,EAAE9oI,EAAE1B,OAAO0B,EAAEE,aAAa4oI,EAAE9oI,EAAE1B,OAAO,SAAS0O,EAAE1P,GAAG,OAAOZ,EAAEH,KAAKe,GAAGb,EAAEuQ,EAAE1P,IAAI0C,EAAEE,aAAazD,EAAE,GAAG0D,OAAO1D,EAAEC,GAAG,CAACA,GAAG,MAAM,CAACuxJ,SAASpwJ,EAAE3B,QAAQW,EAAEiC,QAAQkB,KAAK,SAASgN,EAAE1P,EAAEJ,GAAG,aAAaJ,OAAOC,eAAeO,EAAE,aAAa,CAACD,OAAM,IAAKC,EAAE0tE,QAAQ,CAACruE,KAAK,aAAamuB,MAAM,CAAC0F,MAAM,CAAC9vB,KAAK26D,OAAO2P,QAAQ,KAAKp4C,OAAO,CAAClyB,KAAK26D,OAAO2P,QAAQ,IAAI7mE,KAAK,CAACzD,KAAKuL,OAAO++D,QAAQ,6BAA6BkjF,YAAY,CAACxtJ,KAAKuL,OAAO++D,QAAQ,WAAWmjF,WAAW,CAACztJ,KAAKuL,OAAO++D,QAAQ,QAAQojF,cAAc,CAAC1tJ,KAAKuL,OAAO++D,QAAQ,WAAWqjF,YAAY,CAAC3tJ,KAAKuL,OAAO++D,QAAQ,WAAWimE,OAAO,CAACvwI,KAAKoqE,QAAQE,SAAQ,GAAIsjF,YAAY,CAAC5tJ,KAAKuL,QAAQsiJ,YAAY,CAAC7tJ,KAAKuL,QAAQuiJ,UAAU,CAAC9tJ,KAAKuL,OAAO++D,QAAQ,QAAQyjF,SAAS,CAAC/tJ,KAAKuL,OAAO++D,QAAQ,SAASz6C,SAAS,CAACm+H,aAAa,WAAW,MAAM,CAACh5H,KAAK,MAAMlF,MAAMrxB,KAAKyzB,OAAO,EAAE,KAAKA,OAAOzzB,KAAKyzB,OAAO,EAAE,KAAK+7H,aAAaxvJ,KAAK8xI,OAAO,MAAM,EAAEkd,WAAWhvJ,KAAKqvJ,YAAY5uI,QAAQ,WAAW,OAAOzgB,KAAKyvJ,UAAUzvJ,KAAK+uJ,YAAY/uJ,KAAKgF,MAAM0qJ,gBAAgB,WAAW,MAAM,CAACr+H,MAAMrxB,KAAKqxB,MAAM,KAAKoC,OAAOzzB,KAAKyzB,OAAO,KAAK4lF,WAAWr5G,KAAKyzB,OAAO,KAAKu7H,WAAWhvJ,KAAKgvJ,WAAWQ,aAAaxvJ,KAAK8xI,OAAO9xI,KAAKyzB,OAAO,EAAE,KAAK,IAAIk8H,iBAAiB,WAAW,MAAM,CAACX,WAAWhvJ,KAAKivJ,cAAcx7H,OAAOzzB,KAAKyzB,OAAO,KAAK+7H,aAAaxvJ,KAAK8xI,OAAO9xI,KAAKyzB,OAAO,EAAE,UAAUzzB,KAAKyzB,OAAO,EAAE,KAAK,IAAIm8H,UAAU,WAAW,MAAM,CAACn8H,OAAOzzB,KAAKyzB,OAAO,KAAKpC,MAAMrxB,KAAKqxB,MAAM,KAAKyvF,SAAS9gH,KAAKsvJ,WAAWO,iBAAiB,WAAW,OAAO7vJ,KAAKyvJ,UAAUzvJ,KAAKmvJ,YAAYnvJ,KAAKovJ,cAAc7sI,KAAK,WAAW,MAAM,CAACutI,UAAS,EAAGv9G,EAAE,EAAEk9G,WAAU,IAAKzsE,QAAQ,WAAWhjF,KAAK2F,QAAQ8lC,QAAQ,CAAC9lC,KAAK,aAAaoqJ,UAAU,SAASliJ,GAAG,IAAI7N,KAAKyvJ,UAAU,CAACzvJ,KAAK8vJ,UAAS,EAAG,IAAI3xJ,EAAE6B,KAAKwgF,MAAM3wE,QAAQ7P,KAAKuyC,GAAG1kC,EAAE6e,OAAO7e,EAAE8f,QAAQ,GAAGjB,OAAOgH,SAASv1B,EAAEmmB,MAAMiS,KAAKvuB,QAAQ,KAAK,IAAI,MAAMgoJ,WAAW,SAASniJ,GAAG,GAAG7N,KAAK8vJ,WAAW9vJ,KAAKyvJ,UAAU,CAAC,IAAItxJ,GAAG0P,EAAE6e,OAAO7e,EAAE8f,QAAQ,GAAGjB,OAAO1sB,KAAKuyC,EAAEx0C,EAAEiC,KAAKwgF,MAAM3wE,QAAQ1R,EAAE,GAAGA,GAAG6B,KAAKqxB,MAAMrxB,KAAKyzB,QAAQ11B,EAAEumB,MAAMiS,KAAKp4B,EAAE,KAAK6B,KAAKwgF,MAAMyvE,YAAY3rI,MAAM+M,MAAMlzB,EAAE6B,KAAKyzB,OAAO,EAAE,MAAMt1B,EAAE6B,KAAKqxB,MAAMrxB,KAAKyzB,SAAS11B,EAAEumB,MAAMiS,KAAKv2B,KAAKqxB,MAAMrxB,KAAKyzB,OAAO,KAAKzzB,KAAKwgF,MAAMyvE,YAAY3rI,MAAM+M,MAAMrxB,KAAKqxB,MAAMrxB,KAAKyzB,OAAO,EAAE,KAAKzzB,KAAKkwJ,gBAAgBC,WAAW,SAAStiJ,GAAM7N,KAAK8vJ,WAAW9vJ,KAAKyvJ,aAAY5hJ,EAAE6e,OAAO7e,EAAEwe,eAAe,GAAGK,OAAO1sB,KAAKuyC,EAAEvyC,KAAKqxB,MAAMrxB,KAAKyzB,SAASzzB,KAAKwgF,MAAM3wE,QAAQyU,MAAMiS,KAAK,IAAIv2B,KAAKwgF,MAAMyvE,YAAY3rI,MAAM+M,MAAM,KAAKrxB,KAAK8vJ,UAAS,IAAKI,WAAW,WAAWlwJ,KAAKyvJ,WAAU,EAAGzvJ,KAAK8vJ,UAAS,EAAG,IAAIjiJ,EAAE7N,KAAKwgF,MAAM3wE,QAAQhC,EAAEuD,WAAW,oBAAoBvD,EAAEoN,SAAS,GAAG7J,UAAUpR,KAAKovJ,YAAYpvJ,KAAKwgF,MAAMyvE,YAAY3rI,MAAM0qI,WAAWhvJ,KAAKkvJ,YAAYlvJ,KAAKwgF,MAAM//D,QAAQ6D,MAAMuyF,MAAM,OAAO72G,KAAKq7E,MAAM,oBAAoB,SAASxtE,EAAE1P,GAAG0P,EAAE9Q,QAAQ,CAACoC,OAAO,WAAW,IAAI0O,EAAE7N,KAAK7B,EAAE0P,EAAEwjE,eAAetzE,EAAE8P,EAAE0yE,MAAMtL,IAAI92E,EAAE,OAAOJ,EAAE,MAAM,CAAC2mF,YAAY,cAAcpgE,MAAMzW,EAAE6hJ,gBAAgBtnI,GAAG,CAACgoI,UAAUviJ,EAAEmiJ,WAAWK,QAAQxiJ,EAAEsiJ,WAAWG,UAAUziJ,EAAEmiJ,WAAWO,SAAS1iJ,EAAEsiJ,aAAa,CAACpyJ,EAAE,MAAM,CAAC81D,IAAI,cAAc6wB,YAAY,kBAAkBpgE,MAAMzW,EAAE8hJ,mBAAmB9hJ,EAAEqmE,GAAG,KAAKn2E,EAAE,MAAM,CAAC81D,IAAI,UAAU6wB,YAAY,UAAUpgE,MAAMzW,EAAE+hJ,WAAW,CAAC/hJ,EAAEqmE,GAAGrmE,EAAE6lE,GAAG7lE,EAAE4S,YAAY5S,EAAEqmE,GAAG,KAAKn2E,EAAE,MAAM,CAAC81D,IAAI,UAAU6wB,YAAY,2BAA2BpgE,MAAMzW,EAAE0hJ,aAAannI,GAAG,CAACooI,UAAU3iJ,EAAEkiJ,UAAUU,WAAW5iJ,EAAEkiJ,YAAY,CAAChyJ,EAAE,IAAI,CAAC08E,MAAM5sE,EAAEshJ,mBAAmB/vJ,gBAAgB,Q,oCCA3iQ,ICAuM,ECevM,CACE5B,KAAM,cACNysE,OAAQ,CAAC,oBAAqB,oBAAqB,iBACnDt+C,MAAO,CACL2tD,MAAO37E,QAET4kB,KAAM,WACJ,MAAO,CACL8jB,MAAM,IAGVjV,SAAU,CACRs/H,SAAU,WACR,QAAS1wJ,KAAKs5E,MAAMr+D,UAEtB01I,WAAY,WACV,OAAO3wJ,KAAK4wJ,kBAAkBD,YAEhCE,cAAe,WACb,OAAO7wJ,KAAK8wJ,cAAcD,eAE5BE,gBAAiB,WACf,OAAO/wJ,KAAK4wJ,kBAAkBG,kBAGlC5xE,WAAY,CACV6xE,YAAa,WAAjB,kDAEEvlH,QAAS,CACPwlH,UADJ,WAE2B,KAAjBjxJ,KAAKs5E,MAAM9qE,GAEbxO,KAAK8wJ,cAAcI,aAAalxJ,KAAKs5E,OAErCt5E,KAAKqmC,MAAQrmC,KAAKqmC,MAGtB8qH,UAAW,WACTnxJ,KAAK8wJ,cAAcI,aAAalxJ,KAAKs5E,OACjCt5E,KAAK8wJ,cAAcM,iBAAoC,KAAjBpxJ,KAAKs5E,MAAM9qE,KACnDxO,KAAKqmC,MAAQrmC,KAAKqmC,S,OChDtB6yC,EAAY,YACd,GHRW,WAAa,IAAIm4E,EAAIrxJ,KAASyyG,EAAG4+C,EAAIhgF,eAAmB4D,EAAGo8E,EAAI9wE,MAAMtL,IAAIw9B,EAAG,OAAOx9B,EAAG,KAAK,CAACyP,YAAY,YAAY,CAACzP,EAAG,KAAK,CAAEo8E,EAAY,SAAEp8E,EAAG,QAAQ,CAAC7sD,GAAG,CAAC,MAAQipI,EAAIJ,YAAY,CAAEI,EAAQ,KAAE,CAACA,EAAIn9E,GAAG,MAAM,CAACm9E,EAAIn9E,GAAG,OAAO,GAAGm9E,EAAIl9E,KAAKk9E,EAAIn9E,GAAG,KAAKe,EAAG,OAAO,CAACwF,MAAM,CAACvkE,SAASm7I,EAAI/3E,OAAS+3E,EAAIR,cAAe,aAAaQ,EAAIV,aAAgBU,EAAI/3E,MAAMr+D,UAAWmN,GAAG,CAAC,MAAQipI,EAAIF,YAAY,CAACE,EAAIn9E,GAAGm9E,EAAI39E,GAAG29E,EAAI/3E,MAAMg4E,eAAeD,EAAIn9E,GAAG,KAAMm9E,EAAI/3E,MAAc,SAAErE,EAAG,KAAK,CAACzK,WAAW,CAAC,CAAChtE,KAAK,OAAOoqF,QAAQ,SAAS1pF,MAAOmzJ,EAAQ,KAAEv0E,WAAW,UAAUu0E,EAAI19E,GAAI09E,EAAI/3E,MAAc,UAAE,SAASn1E,GAAM,OAAO8wE,EAAG,gBAAgB,CAACz2E,IAAI2F,EAAKqK,GAAGoB,MAAM,CAAC,MAAQzL,QAAU,GAAGktJ,EAAIl9E,SAC9oB,IGUpB,EACA,KACA,KACA,MAIa,UAAA+E,E,+CClBf,Q,6BCAA,Q,6BCAA,Q,6BCAA,Q,6BCAA,Q,6BCAA,Q,6BCAA,Q,6BCAA,Q,6BCAA,Q,6BCAA,Q,6BCAA,Q,6BCAA,Q,6BCAA,Q,gBCAA,IAAIlmB,EAAO,EAAQ,IAEfmE,EAAO,EAAQ,IAEfo6F,EAAY,EAAQ,KAEpBn/C,EAAW,EAAQ,KAEnBo/C,EAAY,EAAQ,KAEpBC,EAAa,EAAQ,KAmFzB,SAASC,IACPF,EAAU/tI,KAAKzjB,KAAKwoB,OAGtB,SAASmpI,KAETA,EAAW9yJ,UAAUoxH,QAAU,aAE/B,IAAI2hC,EAAe,CAAC,QAAS,WAAY,aAAc,WAAY,UAAW,YAAa,YAAa,eAWpG5kC,EAAU,SAAUU,EAASI,EAAShkF,EAAO+nH,GAC/Cz/C,EAASh1G,KAAK4C,MACdA,KAAK0tH,QAAUA,EACf1tH,KAAK8tH,QAAUA,EACf9tH,KAAK6xJ,YAAcA,EACnB/nH,EAAQA,GAAS,IAAI6nH,EAKrB3xJ,KAAK8pC,MAAQ,KAOb9pC,KAAK8xJ,SAAW,GAMhB9xJ,KAAK+xJ,iBAML/xJ,KAAKgyJ,OAMLhyJ,KAAKiyJ,OAMLjyJ,KAAKkyJ,YACLX,EAAUn0J,KAAK4C,MACfA,KAAKmyJ,gBAAgBroH,IAiPvB,SAASsoH,EAAQj6B,EAAa5lF,EAAGC,GAC/B,GAAI2lF,EAAYA,EAAYvnB,UAAY,cAAgB,WAAWr+D,EAAGC,GAAI,CAIxE,IAHA,IACIsgE,EADApjG,EAAKyoH,EAGFzoH,GAAI,CAIT,GAAIA,EAAG6wH,WAAa7wH,EAAG6wH,SAAS9tF,QAAQF,EAAGC,GACzC,OAAO,EAGL9iC,EAAGmzD,SACLiwC,GAAW,GAGbpjG,EAAKA,EAAGvP,OAGV,OAAO2yG,GA3VE,SA8VX,OAAO,EAOT,SAASu/C,EAAkBC,EAAiB//G,EAAGC,GAC7C,IAAIs7E,EAAUwkC,EAAgBxkC,QAC9B,OAAOv7E,EAAI,GAAKA,EAAIu7E,EAAQtQ,YAAchrE,EAAI,GAAKA,EAAIs7E,EAAQ6B,YA9QjE3C,EAAQnuH,UAAY,CAClBgH,YAAamnH,EACbmlC,gBAAiB,SAAUroH,GACrB9pC,KAAK8pC,OACP9pC,KAAK8pC,MAAMmmF,UAGTnmF,IACFkpB,EAAK3sD,KAAKurJ,GAAc,SAAUp0J,GAChCssC,EAAM1hB,IAAM0hB,EAAM1hB,GAAG5qB,EAAMwC,KAAKxC,GAAOwC,QACtCA,MAEH8pC,EAAMj6B,QAAU7P,MAGlBA,KAAK8pC,MAAQA,GAEfsmH,UAAW,SAAU5nI,GACnB,IAAI+pB,EAAI/pB,EAAMurF,IACVvhE,EAAIhqB,EAAMwrF,IACVu+C,EAAYF,EAAkBryJ,KAAMuyC,EAAGC,GACvCggH,EAAcxyJ,KAAK8xJ,SACnBW,EAAoBD,EAAY9qJ,OAKhC+qJ,IAAsBA,EAAkBx/G,OAE1Cw/G,GADAD,EAAcxyJ,KAAK+vH,UAAUyiC,EAAYjgH,EAAGigH,EAAYhgH,IACxB9qC,QAGlC,IAAIgrJ,EAAU1yJ,KAAK8xJ,SAAWS,EAAY,CACxChgH,EAAGA,EACHC,EAAGA,GACDxyC,KAAK+vH,UAAUx9E,EAAGC,GAClBmgH,EAAgBD,EAAQhrJ,OACxBoiC,EAAQ9pC,KAAK8pC,MACjBA,EAAM8oH,WAAa9oH,EAAM8oH,UAAUD,EAAgBA,EAAchiD,OAAS,WAEtE8hD,GAAqBE,IAAkBF,GACzCzyJ,KAAK6yJ,kBAAkBL,EAAa,WAAYhqI,GAIlDxoB,KAAK6yJ,kBAAkBH,EAAS,YAAalqI,GAEzCmqI,GAAiBA,IAAkBF,GACrCzyJ,KAAK6yJ,kBAAkBH,EAAS,YAAalqI,IAGjDsqI,SAAU,SAAUtqI,GAClB,IAAIuqI,EAAevqI,EAAMwqI,eACrBC,EAAiBzqI,EAAMyqI,eAEN,mBAAjBF,GACF/yJ,KAAK6yJ,kBAAkB7yJ,KAAK8xJ,SAAU,WAAYtpI,GAG/B,iBAAjBuqI,IAGDE,GAAkBjzJ,KAAKkpB,QAAQ,YAAa,CAC3C3nB,KAAM,YACNinB,MAAOA,KAQbinG,OAAQ,SAAUjnG,GAChBxoB,KAAK8xJ,SAAW,IAQlBhoI,SAAU,SAAU0+F,EAAW0qC,GAC7B,IAAIrjJ,EAAU7P,KAAKwoH,GACnB34G,GAAWA,EAAQzS,KAAK4C,KAAMkzJ,IAMhCjjC,QAAS,WACPjwH,KAAK8pC,MAAMmmF,UACXjwH,KAAK0tH,QAAU1tH,KAAK8pC,MAAQ9pC,KAAK8tH,QAAU,MAO7C+B,eAAgB,SAAUC,GACxB,IAAIhmF,EAAQ9pC,KAAK8pC,MACjBA,EAAM8oH,WAAa9oH,EAAM8oH,UAAU9iC,IAWrC+iC,kBAAmB,SAAUM,EAAY3qC,EAAWhgG,GAElD,IAAI9Y,GADJyjJ,EAAaA,GAAc,IACPzrJ,OAEpB,IAAIgI,IAAMA,EAAGmzD,OAAb,CAOA,IAHA,IAAImtD,EAAe,KAAOxH,EACtB4qC,EA/MR,SAAyBC,EAASF,EAAY3qI,GAC5C,MAAO,CACLjnB,KAAM8xJ,EACN7qI,MAAOA,EAEP9gB,OAAQyrJ,EAAWzrJ,OAEnB4rJ,UAAWH,EAAWG,UACtBl/C,cAAc,EACdjnF,QAAS3E,EAAMurF,IACf3mF,QAAS5E,EAAMwrF,IACfu/C,aAAc/qI,EAAM+qI,aACpBC,OAAQhrI,EAAMgrI,OACdC,OAAQjrI,EAAMirI,OACdC,WAAYlrI,EAAMkrI,WAClBl/C,WAAYhsF,EAAM+rF,QAClBo/C,UAAWnrI,EAAMmrI,UACjB/lI,MAAOpF,EAAMoF,MACbnK,KAAMiuI,GA6LYkC,CAAgBprC,EAAW2qC,EAAY3qI,GAElD9Y,IACLA,EAAGsgH,KAAkBojC,EAAYh/C,aAAe1kG,EAAGsgH,GAAc5yH,KAAKsS,EAAI0jJ,IAC1E1jJ,EAAGwZ,QAAQs/F,EAAW4qC,GACtB1jJ,EAAKA,EAAGvP,QAEJizJ,EAAYh/C,gBAKbg/C,EAAYh/C,eAEfp0G,KAAKkpB,QAAQs/F,EAAW4qC,GAGxBpzJ,KAAK8tH,SAAW9tH,KAAK8tH,QAAQ+lC,gBAAe,SAAUC,GACjB,mBAAxBA,EAAM9jC,IACf8jC,EAAM9jC,GAAc5yH,KAAK02J,EAAOV,GAG9BU,EAAM5qI,SACR4qI,EAAM5qI,QAAQs/F,EAAW4qC,SAcjCrjC,UAAW,SAAUx9E,EAAGC,EAAGkwC,GAOzB,IANA,IAAIt3E,EAAOpL,KAAK0tH,QAAQqmC,iBACpB5iG,EAAM,CACR5e,EAAGA,EACHC,EAAGA,GAGIv1C,EAAImO,EAAKzJ,OAAS,EAAG1E,GAAK,EAAGA,IAAK,CACzC,IAAI+2J,EAEJ,GAAI5oJ,EAAKnO,KAAOylF,IACZt3E,EAAKnO,GAAGo0H,SAAW2iC,EAAmB5B,EAAQhnJ,EAAKnO,GAAIs1C,EAAGC,OAC3D2e,EAAImiG,YAAcniG,EAAImiG,UAAYloJ,EAAKnO,IAlQnC,WAoQD+2J,GAA6B,CAC/B7iG,EAAIzpD,OAAS0D,EAAKnO,GAClB,OAKN,OAAOk0D,GAET8iG,eAAgB,SAAUzrI,EAAOylG,GAC1BjuH,KAAKkyJ,cACRlyJ,KAAKkyJ,YAAc,IAAIT,GAGzB,IAAIyC,EAAal0J,KAAKkyJ,YACZ,UAAVjkC,GAAqBimC,EAAWr7F,QAChC,IAAIs7F,EAAcD,EAAWE,UAAU5rI,EAAOxoB,KAAK+vH,UAAUvnG,EAAMurF,IAAKvrF,EAAMwrF,IAAK,MAAMtsG,OAAQ1H,KAAK8pC,MAAM2jF,KAG5G,GAFU,QAAVQ,GAAmBimC,EAAWr7F,QAE1Bs7F,EAAa,CACf,IAAI5yJ,EAAO4yJ,EAAY5yJ,KACvBinB,EAAM+qI,aAAehyJ,EACrBvB,KAAK6yJ,kBAAkB,CACrBnrJ,OAAQysJ,EAAYzsJ,QACnBnG,EAAM4yJ,EAAY3rI,UAK3BwqC,EAAK3sD,KAAK,CAAC,QAAS,YAAa,UAAW,aAAc,WAAY,gBAAgB,SAAU7I,GAC9FwvH,EAAQnuH,UAAUrB,GAAQ,SAAUgrB,GAClC,IAGIkqI,EACAC,EAJApgH,EAAI/pB,EAAMurF,IACVvhE,EAAIhqB,EAAMwrF,IACVu+C,EAAYF,EAAkBryJ,KAAMuyC,EAAGC,GAU3C,GANa,YAATh1C,GAAuB+0J,IAGzBI,GADAD,EAAU1yJ,KAAK+vH,UAAUx9E,EAAGC,IACJ9qC,QAGb,cAATlK,EACFwC,KAAKq0J,QAAU1B,EACf3yJ,KAAKs0J,WAAa,CAAC9rI,EAAMurF,IAAKvrF,EAAMwrF,KAEpCh0G,KAAKu0J,MAAQ5B,OACR,GAAa,YAATn1J,EACTwC,KAAKu0J,MAAQ5B,OACR,GAAa,UAATn1J,EAAkB,CAC3B,GAAIwC,KAAKq0J,UAAYr0J,KAAKu0J,QAItBv0J,KAAKs0J,YACNn9F,EAAKnG,KAAKhxD,KAAKs0J,WAAY,CAAC9rI,EAAMurF,IAAKvrF,EAAMwrF,MAAQ,EACtD,OAGFh0G,KAAKs0J,WAAa,KAGpBt0J,KAAK6yJ,kBAAkBH,EAASl1J,EAAMgrB,OAuC1CwqC,EAAK3lB,MAAM2/E,EAAS5a,GACpBp/C,EAAK3lB,MAAM2/E,EAASukC,GACpB,IAAI7qI,EAAWsmG,EACfhwH,EAAOD,QAAU2pB,G,cChbjB,SAAS6qI,IACPvxJ,KAAKooB,GAAG,YAAapoB,KAAKw0J,WAAYx0J,MACtCA,KAAKooB,GAAG,YAAapoB,KAAKy0J,MAAOz0J,MACjCA,KAAKooB,GAAG,UAAWpoB,KAAK00J,SAAU10J,MAwEpC,SAASu/B,EAAM73B,EAAQmG,GACrB,MAAO,CACLnG,OAAQA,EACR4rJ,UAAWzlJ,GAAKA,EAAEylJ,WAjEtB/B,EAAU1yJ,UAAY,CACpBgH,YAAa0rJ,EACbiD,WAAY,SAAU3mJ,GAGpB,IAFA,IAAI8mJ,EAAiB9mJ,EAAEnG,OAEhBitJ,IAAmBA,EAAenkD,WACvCmkD,EAAiBA,EAAex0J,OAG9Bw0J,IACF30J,KAAK40J,gBAAkBD,EACvBA,EAAelkD,UAAW,EAC1BzwG,KAAK60J,GAAKhnJ,EAAEsf,QACZntB,KAAK80J,GAAKjnJ,EAAEuf,QACZptB,KAAK6yJ,kBAAkBtzH,EAAMo1H,EAAgB9mJ,GAAI,YAAaA,EAAE2a,SAGpEisI,MAAO,SAAU5mJ,GACf,IAAI8mJ,EAAiB30J,KAAK40J,gBAE1B,GAAID,EAAgB,CAClB,IAAIpiH,EAAI1kC,EAAEsf,QACNqlB,EAAI3kC,EAAEuf,QACNimC,EAAK9gB,EAAIvyC,KAAK60J,GACdvhG,EAAK9gB,EAAIxyC,KAAK80J,GAClB90J,KAAK60J,GAAKtiH,EACVvyC,KAAK80J,GAAKtiH,EACVmiH,EAAen0B,MAAMntE,EAAIC,EAAIzlD,GAC7B7N,KAAK6yJ,kBAAkBtzH,EAAMo1H,EAAgB9mJ,GAAI,OAAQA,EAAE2a,OAC3D,IAAIusI,EAAa/0J,KAAK+vH,UAAUx9E,EAAGC,EAAGmiH,GAAgBjtJ,OAClDstJ,EAAiBh1J,KAAKi1J,YAC1Bj1J,KAAKi1J,YAAcF,EAEfJ,IAAmBI,IACjBC,GAAkBD,IAAeC,GACnCh1J,KAAK6yJ,kBAAkBtzH,EAAMy1H,EAAgBnnJ,GAAI,YAAaA,EAAE2a,OAG9DusI,GAAcA,IAAeC,GAC/Bh1J,KAAK6yJ,kBAAkBtzH,EAAMw1H,EAAYlnJ,GAAI,YAAaA,EAAE2a,UAKpEksI,SAAU,SAAU7mJ,GAClB,IAAI8mJ,EAAiB30J,KAAK40J,gBAEtBD,IACFA,EAAelkD,UAAW,GAG5BzwG,KAAK6yJ,kBAAkBtzH,EAAMo1H,EAAgB9mJ,GAAI,UAAWA,EAAE2a,OAE1DxoB,KAAKi1J,aACPj1J,KAAK6yJ,kBAAkBtzH,EAAMv/B,KAAKi1J,YAAapnJ,GAAI,OAAQA,EAAE2a,OAG/DxoB,KAAK40J,gBAAkB,KACvB50J,KAAKi1J,YAAc,OAWvB,IAAIvuI,EAAW6qI,EACfv0J,EAAOD,QAAU2pB,G,gBCrFjB,IAAIs+C,EAAM,EAAQ,IAIdkwF,EAFuB,EAAQ,KAESA,iBAExCxhD,EAAW,GA8Df,SAASH,EAA2BpiD,EAAKzhD,EAAIylJ,EAAKC,EAAK7gB,GACrD,GAAI7kI,EAAG2mB,uBAAyB2uC,EAAI1L,eAAiBg6C,EAAW5jG,GAAK,CACnE,IAAIkZ,EAAQlZ,EAAmB,kBAAMA,EAAmB,gBAAI,IAExD2lJ,EAqCR,SAAmCC,EAAS1sI,EAAO2rH,GAQjD,IAPA,IAAIghB,EAAkBhhB,EAAU,WAAa,QACzC8gB,EAAczsI,EAAM2sI,GACpBC,EAAe5sI,EAAM6sI,UACrBC,GAAkB,EAClBD,EAAY,GACZE,EAAa,GAER14J,EAAI,EAAGA,EAAI,EAAGA,IAAK,CAC1B,IAAI4rC,EAAOysH,EAAQr4J,GAAGo5B,wBAClBugC,EAAK,EAAI35D,EACTs1C,EAAI1J,EAAKtS,KACTic,EAAI3J,EAAK53B,IACbwkJ,EAAUjzJ,KAAK+vC,EAAGC,GAClBkjH,EAAkBA,GAAmBF,GAAgBjjH,IAAMijH,EAAa5+F,IAAOpkB,IAAMgjH,EAAa5+F,EAAK,GACvG++F,EAAWnzJ,KAAK8yJ,EAAQr4J,GAAG43I,WAAYygB,EAAQr4J,GAAG63I,WAIpD,OAAO4gB,GAAmBL,EAAcA,GAAezsI,EAAM6sI,UAAYA,EAAW7sI,EAAM2sI,GAAmBhhB,EAAU2gB,EAAiBS,EAAYF,GAAaP,EAAiBO,EAAWE,IAxDzKC,CAWtB,SAA6BlmJ,EAAIkZ,GAC/B,IAAI0sI,EAAU1sI,EAAM0sI,QAEpB,GAAIA,EACF,OAAOA,EAGTA,EAAU1sI,EAAM0sI,QAAU,GAI1B,IAHA,IAAIO,EAAS,CAAC,OAAQ,SAClBC,EAAS,CAAC,MAAO,UAEZ74J,EAAI,EAAGA,EAAI,EAAGA,IAAK,CAC1B,IAAI84J,EAASjzJ,SAASiC,cAAc,OAChCixJ,EAAMD,EAAOzxI,MACb2xI,EAAQh5J,EAAI,EACZi5J,GAASj5J,GAAK,GAAK,EACvB+4J,EAAIjkI,QAAU,CAAC,qBAAsB,qBAAsB,aAAc,YAAa,kBAAmB,oBAAqB,UAAW,WAEzI8jI,EAAOI,GAAS,KAAMH,EAAOI,GAAS,KAAML,EAAO,EAAII,GAAS,QAASH,EAAO,EAAII,GAAS,QAAS,IAAIlnJ,KAAK,eAC/GU,EAAGtK,YAAY2wJ,GACfT,EAAQ9yJ,KAAKuzJ,GAGf,OAAOT,EAnCSa,CAAoBzmJ,EAAIkZ,GACeA,EAAO2rH,GAE5D,GAAI8gB,EAEF,OADAA,EAAYlkG,EAAKgkG,EAAKC,IACf,EAIX,OAAO,EAmDT,SAAS9hD,EAAW5jG,GAClB,MAAqC,WAA9BA,EAAGjC,SAASqU,cAGrB/kB,EAAQq5J,oBA9FR,SAA6BjlG,EAAKklG,EAAQC,EAAUnB,EAAKC,GACvD,OAAO7hD,EAA2BG,EAAU2iD,EAAQlB,EAAKC,GAAK,IAAS7hD,EAA2BpiD,EAAKmlG,EAAU5iD,EAAS,GAAIA,EAAS,KA8FzI32G,EAAQw2G,2BAA6BA,EACrCx2G,EAAQu2G,WAAaA,G,cClIrB,IAAIijD,EAAMzuJ,KAAK0uJ,IAAI,GAEnB,SAASC,EAAYC,EAAMC,EAAMC,EAAUC,EAASC,EAASC,GAC3D,IAAIC,EAAWH,EAAU,IAAMC,EAC3BG,EAAWP,EAAK/0J,OAEpB,GAAIo1J,EAASj4J,eAAek4J,GAC1B,OAAOD,EAASC,GAGlB,GAAa,IAATL,EAAY,CAEd,IAAIO,EAAWpvJ,KAAK8qB,MAAM9qB,KAAK0uJ,KAAK,GAAKS,GAAY,GAAKH,GAAWP,GACrE,OAAOG,EAAKE,GAAUM,GAMxB,IAHA,IAAIC,EAAaN,EAAU,GAAKD,EAC5BQ,EAAcR,EAAW,EAEtBC,EAAU,GAAKO,GACpBA,IAKF,IAFA,IAAI9tG,EAAM,EAEDpiD,EAAI,EAAGmwJ,EAAc,EAAGnwJ,EAAI+vJ,EAAU/vJ,IAAK,CAClD,IAAIowJ,EAAS,GAAKpwJ,EAEZowJ,EAASR,IACbxtG,IAAQ+tG,EAAc,GAAK,EAAI,GAAKX,EAAKE,GAAU1vJ,GACjDuvJ,EAAYC,EAAMC,EAAO,EAAGS,EAAaD,EAAYL,EAAUQ,EAAQP,GACzEM,KAKJ,OADAN,EAASC,GAAY1tG,EACdA,EAkDTvsD,EAAQm4J,iBA7BR,SAA0B5wJ,EAAKsqB,GAC7B,IAAI2oI,EAAK,CAAC,CAACjzJ,EAAI,GAAIA,EAAI,GAAI,EAAG,EAAG,EAAG,GAAIsqB,EAAK,GAAKtqB,EAAI,IAAKsqB,EAAK,GAAKtqB,EAAI,IAAK,CAAC,EAAG,EAAG,EAAGA,EAAI,GAAIA,EAAI,GAAI,GAAIsqB,EAAK,GAAKtqB,EAAI,IAAKsqB,EAAK,GAAKtqB,EAAI,IAAK,CAACA,EAAI,GAAIA,EAAI,GAAI,EAAG,EAAG,EAAG,GAAIsqB,EAAK,GAAKtqB,EAAI,IAAKsqB,EAAK,GAAKtqB,EAAI,IAAK,CAAC,EAAG,EAAG,EAAGA,EAAI,GAAIA,EAAI,GAAI,GAAIsqB,EAAK,GAAKtqB,EAAI,IAAKsqB,EAAK,GAAKtqB,EAAI,IAAK,CAACA,EAAI,GAAIA,EAAI,GAAI,EAAG,EAAG,EAAG,GAAIsqB,EAAK,GAAKtqB,EAAI,IAAKsqB,EAAK,GAAKtqB,EAAI,IAAK,CAAC,EAAG,EAAG,EAAGA,EAAI,GAAIA,EAAI,GAAI,GAAIsqB,EAAK,GAAKtqB,EAAI,IAAKsqB,EAAK,GAAKtqB,EAAI,IAAK,CAACA,EAAI,GAAIA,EAAI,GAAI,EAAG,EAAG,EAAG,GAAIsqB,EAAK,GAAKtqB,EAAI,IAAKsqB,EAAK,GAAKtqB,EAAI,IAAK,CAAC,EAAG,EAAG,EAAGA,EAAI,GAAIA,EAAI,GAAI,GAAIsqB,EAAK,GAAKtqB,EAAI,IAAKsqB,EAAK,GAAKtqB,EAAI,KACjiByyJ,EAAW,GACXl6F,EAAM45F,EAAYc,EAAI,EAAG,EAAG,EAAG,EAAGR,GAEtC,GAAY,IAARl6F,EAAJ,CASA,IAFA,IAAI26F,EAAK,GAEAv6J,EAAI,EAAGA,EAAI,EAAGA,IACrB,IAAK,IAAIiK,EAAI,EAAGA,EAAI,EAAGA,IACZ,MAATswJ,EAAGtwJ,KAAeswJ,EAAGtwJ,GAAK,GAC1BswJ,EAAGtwJ,MAAQjK,EAAIiK,GAAK,GAAK,EAAI,GAC7BuvJ,EAAYc,EAAI,EAAS,IAANt6J,EAAU,EAAI,EAAG,GAAKA,EAAG,GAAKiK,EAAG6vJ,GAAYl6F,EAAMjuC,EAAK3xB,GAI/E,OAAO,SAAUk0D,EAAKsmG,EAAWC,GAC/B,IAAIC,EAAKF,EAAYD,EAAG,GAAKE,EAAYF,EAAG,GAAK,EACjDrmG,EAAI,IAAMsmG,EAAYD,EAAG,GAAKE,EAAYF,EAAG,GAAKA,EAAG,IAAMG,EAC3DxmG,EAAI,IAAMsmG,EAAYD,EAAG,GAAKE,EAAYF,EAAG,GAAKA,EAAG,IAAMG,M,gBCzF/D,IAAIC,EAAY,EAAQ,KAKpBnG,EAAa,WAKfzxJ,KAAK63J,OAAS,IAkDhB,SAAS7mG,EAAK8mG,GACZ,IAAIzkG,EAAKykG,EAAU,GAAG,GAAKA,EAAU,GAAG,GACpCxkG,EAAKwkG,EAAU,GAAG,GAAKA,EAAU,GAAG,GACxC,OAAOhwJ,KAAK2rC,KAAK4f,EAAKA,EAAKC,EAAKA,GAlDlCm+F,EAAW5yJ,UAAY,CACrBgH,YAAa4rJ,EACb2C,UAAW,SAAU5rI,EAAO9gB,EAAQ5F,GAGlC,OAFA9B,KAAK+3J,SAASvvI,EAAO9gB,EAAQ5F,GAEtB9B,KAAKg4J,WAAWxvI,IAEzBqwC,MAAO,WAEL,OADA74D,KAAK63J,OAAOl2J,OAAS,EACd3B,MAET+3J,SAAU,SAAUvvI,EAAO9gB,EAAQ5F,GACjC,IAAI6rB,EAAUnF,EAAMmF,QAEpB,GAAKA,EAAL,CAWA,IAPA,IAAIsqI,EAAY,CACdnkG,OAAQ,GACRnmC,QAAS,GACTjmB,OAAQA,EACR8gB,MAAOA,GAGAvrB,EAAI,EAAGgK,EAAM0mB,EAAQhsB,OAAQ1E,EAAIgK,EAAKhK,IAAK,CAClD,IAAIq3G,EAAQ3mF,EAAQ1wB,GAChBo6B,EAAMugI,EAAUjkD,cAAc7xG,EAAMwyG,EAAO,IAC/C2jD,EAAUnkG,OAAOtxD,KAAK,CAAC60B,EAAI08E,IAAK18E,EAAI28E,MACpCikD,EAAUtqI,QAAQnrB,KAAK8xG,GAGzBt0G,KAAK63J,OAAOr1J,KAAKy1J,KAEnBD,WAAY,SAAUxvI,GACpB,IAAK,IAAIggG,KAAa0vC,EACpB,GAAIA,EAAYp5J,eAAe0pH,GAAY,CACzC,IAAI2rC,EAAc+D,EAAY1vC,GAAWxoH,KAAK63J,OAAQrvI,GAEtD,GAAI2rI,EACF,OAAOA,KAiBjB,IAAI+D,EAAc,CAChBC,MAAO,SAAUC,EAAO5vI,GACtB,IAAIu6G,EAAWq1B,EAAMz2J,OAErB,GAAKohI,EAAL,CAIA,IAZY+0B,EAYRO,GAAYD,EAAMr1B,EAAW,IAAM,IAAIjvE,OACvCwkG,GAAYF,EAAMr1B,EAAW,IAAM,IAAIjvE,QAAUukG,EAErD,GAAIC,GAAYA,EAAS32J,OAAS,GAAK02J,GAAYA,EAAS12J,OAAS,EAAG,CACtE,IAAI+xJ,EAAa1iG,EAAKqnG,GAAYrnG,EAAKsnG,IACtCliI,SAASs9H,KAAgBA,EAAa,GACvClrI,EAAMkrI,WAAaA,EACnB,IAAI6E,EAlBD,GADOT,EAmBeO,GAlBV,GAAG,GAAKP,EAAU,GAAG,IAAM,GAAIA,EAAU,GAAG,GAAKA,EAAU,GAAG,IAAM,GAqBnF,OAFAtvI,EAAMgrI,OAAS+E,EAAY,GAC3B/vI,EAAMirI,OAAS8E,EAAY,GACpB,CACLh3J,KAAM,QACNmG,OAAQ0wJ,EAAM,GAAG1wJ,OACjB8gB,MAAOA,OAMX9B,EAAW+qI,EACfz0J,EAAOD,QAAU2pB,G,gBClGjB,IAAIssC,EAAO,EAAQ,IAEfgS,EAAM,EAAQ,IAEdqrD,EAAQ,EAAQ,KAEhBmoC,EAAU,EAAQ,KAItB,SAASC,EAAiBztJ,EAAGC,GAC3B,OAAID,EAAEulG,SAAWtlG,EAAEslG,OACbvlG,EAAEqlG,IAAMplG,EAAEolG,EAOLrlG,EAAEslG,GAAKrlG,EAAEqlG,GAGXtlG,EAAEqlG,EAAIplG,EAAEolG,EAGVrlG,EAAEulG,OAAStlG,EAAEslG,OAStB,IAAI0c,EAAU,WAEZjtH,KAAK04J,OAAS,GACd14J,KAAK24J,aAAe,GACpB34J,KAAK44J,gBAAkB,GAGzB3rC,EAAQpuH,UAAY,CAClBgH,YAAaonH,EAMbp/C,SAAU,SAAUvhC,EAAIvsC,GACtB,IAAK,IAAI9C,EAAI,EAAGA,EAAI+C,KAAK04J,OAAO/2J,OAAQ1E,IACtC+C,KAAK04J,OAAOz7J,GAAG4wE,SAASvhC,EAAIvsC,IAYhCg0J,eAAgB,SAAUtoG,EAAQotG,GAOhC,OANAA,EAAgBA,IAAiB,EAE7BptG,GACFzrD,KAAK84J,kBAAkBD,GAGlB74J,KAAK24J,cASdG,kBAAmB,SAAUD,GAC3B74J,KAAK44J,gBAAkB,EAIvB,IAHA,IAAIl4D,EAAQ1gG,KAAK04J,OACbK,EAAc/4J,KAAK24J,aAEd17J,EAAI,EAAGgK,EAAMy5F,EAAM/+F,OAAQ1E,EAAIgK,EAAKhK,IAC3C+C,KAAKg5J,yBAAyBt4D,EAAMzjG,GAAI,KAAM47J,GAGhDE,EAAYp3J,OAAS3B,KAAK44J,gBAC1B5zF,EAAI7L,iBAAmBq/F,EAAQO,EAAaN,IAE9CO,yBAA0B,SAAUtpJ,EAAIupJ,EAAWJ,GACjD,IAAInpJ,EAAG2hH,QAAWwnC,EAAlB,CAIAnpJ,EAAGgxH,eAEChxH,EAAG0gC,SACL1gC,EAAG+7C,SAGL/7C,EAAGixH,cACH,IAAIu4B,EAAkBxpJ,EAAG6wH,SAEzB,GAAI24B,EAAiB,CAGjBD,EADEA,EACUA,EAAU31J,QAEV,GAMd,IAHA,IAAI61J,EAAkBD,EAClBE,EAAiB1pJ,EAEdypJ,GAELA,EAAgBh5J,OAASi5J,EACzBD,EAAgBv4B,kBAChBq4B,EAAUz2J,KAAK22J,GACfC,EAAiBD,EACjBA,EAAkBA,EAAgB54B,SAItC,GAAI7wH,EAAG8gH,QAAS,CAGd,IAFA,IAAIv1G,EAAWvL,EAAG4gH,UAETrzH,EAAI,EAAGA,EAAIge,EAAStZ,OAAQ1E,IAAK,CACxC,IAAI+pE,EAAQ/rD,EAAShe,GAGjByS,EAAG0gC,UACL42B,EAAM52B,SAAU,GAGlBpwC,KAAKg5J,yBAAyBhyF,EAAOiyF,EAAWJ,GAIlDnpJ,EAAG0gC,SAAU,OAEb1gC,EAAGygG,YAAc8oD,EACjBj5J,KAAK24J,aAAa34J,KAAK44J,mBAAqBlpJ,IAQhDg/G,QAAS,SAAUh/G,GACbA,EAAG6gH,YAAcvwH,OAIjB0P,aAAc2gH,GAChB3gH,EAAGohH,qBAAqB9wH,MAG1BA,KAAKsuH,aAAa5+G,GAElB1P,KAAK04J,OAAOl2J,KAAKkN,KAOnBi/G,QAAS,SAAUj/G,GACjB,GAAU,MAANA,EAAY,CAEd,IAAK,IAAIzS,EAAI,EAAGA,EAAI+C,KAAK04J,OAAO/2J,OAAQ1E,IAAK,CAC3C,IAAI6E,EAAO9B,KAAK04J,OAAOz7J,GAEnB6E,aAAgBuuH,GAClBvuH,EAAKivH,uBAAuB/wH,MAOhC,OAHAA,KAAK04J,OAAS,GACd14J,KAAK24J,aAAe,QACpB34J,KAAK44J,gBAAkB,GAIzB,GAAIlpJ,aAAcxO,MACX,CAAIjE,EAAI,EAAb,IAAK,IAAWC,EAAIwS,EAAG/N,OAAQ1E,EAAIC,EAAGD,IACpC+C,KAAK2uH,QAAQj/G,EAAGzS,QAFpB,CAQA,IAAIoY,EAAM29C,EAAKvvD,QAAQzD,KAAK04J,OAAQhpJ,GAEhC2F,GAAO,IACTrV,KAAKouH,eAAe1+G,GAEpB1P,KAAK04J,OAAOrxJ,OAAOgO,EAAK,GAEpB3F,aAAc2gH,GAChB3gH,EAAGqhH,uBAAuB/wH,SAIhCsuH,aAAc,SAAU5+G,GAMtB,OALIA,IACFA,EAAG6gH,UAAYvwH,KACf0P,EAAGojC,OAAM,IAGJ9yC,MAETouH,eAAgB,SAAU1+G,GAKxB,OAJIA,IACFA,EAAG6gH,UAAY,MAGVvwH,MAMTiwH,QAAS,WACPjwH,KAAKq5J,YAAcr5J,KAAK04J,OAAS,MAEnCY,oBAAqBb,GAEvB,IAAI/xI,EAAWumG,EACfjwH,EAAOD,QAAU2pB,G,gBCvOjB,IAAI0wC,EAAS,EAAQ,KAEjBiE,EAAS,EAAQ,IAOjBk+F,EAAYniG,EAAOrf,SAGvB,SAASooD,EAAgBt7F,GACvB,OAAOA,EAHK,MAGYA,GAHZ,KAWd,IAAIw7H,EAAgB,SAAUjnG,IAC5BA,EAAOA,GAAQ,IAEL5G,WAMRxyB,KAAKwyB,SAAW,CAAC,EAAG,IAGD,MAAjB4G,EAAKimG,WAMPr/H,KAAKq/H,SAAW,GAGbjmG,EAAKvU,QAMR7kB,KAAK6kB,MAAQ,CAAC,EAAG,IASnB7kB,KAAK4zD,OAAS5zD,KAAK4zD,QAAU,MAG3B4lG,EAAqBn5B,EAAcxhI,UACvC26J,EAAmBhmH,UAAY,KAM/BgmH,EAAmBC,mBAAqB,WACtC,OAAOt5D,EAAgBngG,KAAKq/H,WAAal/B,EAAgBngG,KAAKwyB,SAAS,KAAO2tE,EAAgBngG,KAAKwyB,SAAS,KAAO2tE,EAAgBngG,KAAK6kB,MAAM,GAAK,IAAMs7E,EAAgBngG,KAAK6kB,MAAM,GAAK,IAG3L,IAAI60I,EAAW,GAEfF,EAAmB54B,gBAAkB,WACnC,IAAIzgI,EAASH,KAAKG,OACdw5J,EAAqBx5J,GAAUA,EAAOqzC,UACtCimH,EAAqBz5J,KAAKy5J,qBAC1Bp8J,EAAI2C,KAAKwzC,UAEb,GAAMimH,GAAsBE,EAA5B,CAKAt8J,EAAIA,GAAK+5D,EAAO74D,SAEZk7J,EACFz5J,KAAKuxH,kBAAkBl0H,GAEvBk8J,EAAUl8J,GAIRs8J,IACEF,EACFriG,EAAO9F,IAAIj0D,EAAG8C,EAAOqzC,UAAWn2C,GAEhC+5D,EAAO7vD,KAAKlK,EAAG8C,EAAOqzC,YAK1BxzC,KAAKwzC,UAAYn2C,EACjB,IAAI0zG,EAAmB/wG,KAAK+wG,iBAE5B,GAAwB,MAApBA,GAAiD,IAArBA,EAAwB,CACtD/wG,KAAK+wC,eAAe2oH,GACpB,IAAIE,EAAOF,EAAS,GAAK,GAAK,EAAI,EAC9BG,EAAOH,EAAS,GAAK,GAAK,EAAI,EAC9BhmG,IAAOgmG,EAAS,GAAKE,GAAQ7oD,EAAmB6oD,GAAQF,EAAS,IAAM,EACvE/lG,IAAO+lG,EAAS,GAAKG,GAAQ9oD,EAAmB8oD,GAAQH,EAAS,IAAM,EAC3Er8J,EAAE,IAAMq2D,EACRr2D,EAAE,IAAMq2D,EACRr2D,EAAE,IAAMs2D,EACRt2D,EAAE,IAAMs2D,EAGV3zD,KAAK85J,aAAe95J,KAAK85J,cAAgB1iG,EAAO74D,SAChD64D,EAAOvuD,OAAO7I,KAAK85J,aAAcz8J,QAtC/BA,GAAKk8J,EAAUl8J,IAyCnBm8J,EAAmBjoC,kBAAoB,SAAUl0H,GAC/C,OAAOgjI,EAAc9O,kBAAkBvxH,KAAM3C,IAQ/Cm8J,EAAmBrpH,aAAe,SAAUX,GAC1C,IAAInyC,EAAI2C,KAAKwzC,UACT6mD,EAAM7qD,EAAI6qD,KAAO,EAEjBh9F,EACFmyC,EAAIW,aAAakqD,EAAMh9F,EAAE,GAAIg9F,EAAMh9F,EAAE,GAAIg9F,EAAMh9F,EAAE,GAAIg9F,EAAMh9F,EAAE,GAAIg9F,EAAMh9F,EAAE,GAAIg9F,EAAMh9F,EAAE,IAErFmyC,EAAIW,aAAakqD,EAAK,EAAG,EAAGA,EAAK,EAAG,IAIxCm/D,EAAmB9nH,iBAAmB,SAAUlC,GAC9C,IAAI6qD,EAAM7qD,EAAI6qD,KAAO,EACrB7qD,EAAIW,aAAakqD,EAAK,EAAG,EAAGA,EAAK,EAAG,IAGtC,IAAI0/D,EAAe,GACfC,EAAkB5iG,EAAO74D,SAE7Bi7J,EAAmBS,kBAAoB,SAAU58J,GAC/C,GAAKA,EAAL,CAKA,IAAIq2D,EAAKr2D,EAAE,GAAKA,EAAE,GAAKA,EAAE,GAAKA,EAAE,GAC5Bs2D,EAAKt2D,EAAE,GAAKA,EAAE,GAAKA,EAAE,GAAKA,EAAE,GAC5Bm1B,EAAWxyB,KAAKwyB,SAChB3N,EAAQ7kB,KAAK6kB,MAEbs7E,EAAgBzsC,EAAK,KACvBA,EAAK5rD,KAAK2rC,KAAKigB,IAGbysC,EAAgBxsC,EAAK,KACvBA,EAAK7rD,KAAK2rC,KAAKkgB,IAGbt2D,EAAE,GAAK,IACTq2D,GAAMA,GAGJr2D,EAAE,GAAK,IACTs2D,GAAMA,GAGRnhC,EAAS,GAAKn1B,EAAE,GAChBm1B,EAAS,GAAKn1B,EAAE,GAChBwnB,EAAM,GAAK6uC,EACX7uC,EAAM,GAAK8uC,EACX3zD,KAAKq/H,SAAWv3H,KAAKssD,OAAO/2D,EAAE,GAAKs2D,EAAIt2D,EAAE,GAAKq2D,KAOhD8lG,EAAmB/4B,mBAAqB,WACtC,GAAKzgI,KAAKwzC,UAAV,CAIA,IAAIrzC,EAASH,KAAKG,OACd9C,EAAI2C,KAAKwzC,UAETrzC,GAAUA,EAAOqzC,YAEnB4jB,EAAO9F,IAAIyoG,EAAc55J,EAAO25J,aAAcz8J,GAC9CA,EAAI08J,GAGN,IAAInmG,EAAS5zD,KAAK4zD,OAEdA,IAAWA,EAAO,IAAMA,EAAO,MACjComG,EAAgB,GAAKpmG,EAAO,GAC5BomG,EAAgB,GAAKpmG,EAAO,GAC5BwD,EAAO9F,IAAIyoG,EAAc18J,EAAG28J,GAC5BD,EAAa,IAAMnmG,EAAO,GAC1BmmG,EAAa,IAAMnmG,EAAO,GAC1Bv2D,EAAI08J,GAGN/5J,KAAKi6J,kBAAkB58J,KAQzBm8J,EAAmBzoH,eAAiB,SAAUogB,GAC5C,IAAI9zD,EAAI2C,KAAKwzC,UAGb,OAFA2d,EAAMA,GAAO,GAER9zD,GAML8zD,EAAI,GAAKrpD,KAAK2rC,KAAKp2C,EAAE,GAAKA,EAAE,GAAKA,EAAE,GAAKA,EAAE,IAC1C8zD,EAAI,GAAKrpD,KAAK2rC,KAAKp2C,EAAE,GAAKA,EAAE,GAAKA,EAAE,GAAKA,EAAE,IAEtCA,EAAE,GAAK,IACT8zD,EAAI,IAAMA,EAAI,IAGZ9zD,EAAE,GAAK,IACT8zD,EAAI,IAAMA,EAAI,IAGTA,IAhBLA,EAAI,GAAK,EACTA,EAAI,GAAK,EACFA,IAyBXqoG,EAAmB7mH,sBAAwB,SAAUJ,EAAGC,GACtD,IAAIue,EAAK,CAACxe,EAAGC,GACTsnH,EAAe95J,KAAK85J,aAMxB,OAJIA,GACFz+F,EAAO3J,eAAeX,EAAIA,EAAI+oG,GAGzB/oG,GAWTyoG,EAAmBU,uBAAyB,SAAU3nH,EAAGC,GACvD,IAAIue,EAAK,CAACxe,EAAGC,GACTgB,EAAYxzC,KAAKwzC,UAMrB,OAJIA,GACF6nB,EAAO3J,eAAeX,EAAIA,EAAIvd,GAGzBud,GAYTsvE,EAAc9O,kBAAoB,SAAU7pH,EAAQrK,GAElDk8J,EADAl8J,EAAIA,GAAK,IAET,IAAIu2D,EAASlsD,EAAOksD,OAChB/uC,EAAQnd,EAAOmd,OAAS,CAAC,EAAG,GAC5Bw6G,EAAW33H,EAAO23H,UAAY,EAC9B7sG,EAAW9qB,EAAO8qB,UAAY,CAAC,EAAG,GAsBtC,OApBIohC,IAEFv2D,EAAE,IAAMu2D,EAAO,GACfv2D,EAAE,IAAMu2D,EAAO,IAGjBwD,EAAOvyC,MAAMxnB,EAAGA,EAAGwnB,GAEfw6G,GACFjoE,EAAO7D,OAAOl2D,EAAGA,EAAGgiI,GAGlBzrE,IAEFv2D,EAAE,IAAMu2D,EAAO,GACfv2D,EAAE,IAAMu2D,EAAO,IAGjBv2D,EAAE,IAAMm1B,EAAS,GACjBn1B,EAAE,IAAMm1B,EAAS,GACVn1B,GAGT,IAAIqpB,EAAW25G,EACfrjI,EAAOD,QAAU2pB,G,gBCnUjB,IAAI29G,EAAW,EAAQ,KAEnBz3D,EAAW,EAAQ,KAEnBsrC,EAAQ,EAAQ,IAEhB1qE,EAAW0qE,EAAM1qE,SACjBxpC,EAAak0G,EAAMl0G,WACnBvB,EAAWy1G,EAAMz1G,SACjBE,EAAcu1G,EAAMv1G,YACpBc,EAAUy0G,EAAMz0G,QAMhB68H,EAAa,WAKftgI,KAAK+gI,UAAY,IA8HnB,SAASo5B,EAAUC,EAAY1yJ,EAAQm0B,EAAMD,EAAO9F,EAAQxvB,EAAUq8H,EAAc1mH,GAE9EuxB,EAAS5R,IACXt1B,EAAWwvB,EACXA,EAAS8F,EACTA,EAAQ,GAED53B,EAAW8xB,IAChBxvB,EAAWwvB,EACXA,EAAS,SACT8F,EAAQ,GAED53B,EAAW43B,IAChBt1B,EAAWs1B,EACXA,EAAQ,GAED53B,EAAW63B,IAChBv1B,EAAWu1B,EACXA,EAAO,KAECA,IACNA,EAAO,KAIjBu+H,EAAWC,gBAuDb,SAASC,EAAiBF,EAAYlrH,EAAMnrB,EAAQrc,EAAQm0B,EAAMD,EAAO3f,GACvE,IAAIs+I,EAAa,GACbC,EAAgB,EAEpB,IAAK,IAAIh9J,KAAQkK,EACVA,EAAO5I,eAAetB,KAIP,MAAhBumB,EAAOvmB,GACLiF,EAASiF,EAAOlK,MAAWmF,EAAY+E,EAAOlK,IAChD88J,EAAiBF,EAAYlrH,EAAOA,EAAO,IAAM1xC,EAAOA,EAAMumB,EAAOvmB,GAAOkK,EAAOlK,GAAOq+B,EAAMD,EAAO3f,IAEnGA,GACFs+I,EAAW/8J,GAAQumB,EAAOvmB,GAC1Bi9J,EAAcL,EAAYlrH,EAAM1xC,EAAMkK,EAAOlK,KAE7C+8J,EAAW/8J,GAAQkK,EAAOlK,GAG5Bg9J,KAEuB,MAAhB9yJ,EAAOlK,IAAkBye,GAClCw+I,EAAcL,EAAYlrH,EAAM1xC,EAAMkK,EAAOlK,KAI7Cg9J,EAAgB,GAClBJ,EAAWv/H,QAAQqU,GAAM,GAAOpvB,KAAa,MAAR+b,EAAe,IAAMA,EAAM0+H,GAAY3+H,MAAMA,GAAS,GAlF7F0+H,CAAiBF,EAAY,GAAIA,EAAY1yJ,EAAQm0B,EAAMD,EAAO3f,GAGlE,IAAI8kH,EAAYq5B,EAAWr5B,UAAUz9H,QACjCsgB,EAAQm9G,EAAUp/H,OAEtB,SAAS8I,MACPmZ,GAGEtd,GAAYA,IAMXsd,GACHtd,GAAYA,IAKd,IAAK,IAAIrJ,EAAI,EAAGA,EAAI8jI,EAAUp/H,OAAQ1E,IACpC8jI,EAAU9jI,GAAGwN,KAAKA,GAAMnJ,MAAMw0B,EAAQ6sG,GA+D1C,SAAS83B,EAAc/qJ,EAAIw/B,EAAM1xC,EAAMU,GAGrC,GAAKgxC,EAEE,CAEL,IAAIvjB,EAAQ,GACZA,EAAMujB,GAAQ,GACdvjB,EAAMujB,GAAM1xC,GAAQU,EACpBwR,EAAGuD,KAAK0Y,QANRjc,EAAGuD,KAAKzV,EAAMU,GA/OlBoiI,EAAWzhI,UAAY,CACrBgH,YAAay6H,EAcbzlG,QAAS,SAAUqU,EAAMmE,GACvB,IAAI3rC,EACAgzJ,GAAiB,EACjBhrJ,EAAK1P,KACLkwH,EAAKlwH,KAAKizC,KAEd,GAAI/D,EAAM,CACR,IAAIyrH,EAAezrH,EAAK/lC,MAAM,KAC1BqZ,EAAO9S,EAEXgrJ,EAAqC,UAApBC,EAAa,GAE9B,IAAK,IAAI19J,EAAI,EAAGC,EAAIy9J,EAAah5J,OAAQ1E,EAAIC,EAAGD,IACzCulB,IAILA,EAAOA,EAAKm4I,EAAa19J,KAGvBulB,IACF9a,EAAS8a,QAGX9a,EAASgI,EAGX,GAAKhI,EAAL,CAKA,IAAIq5H,EAAYrxH,EAAGqxH,UACfwB,EAAW,IAAI8B,EAAS38H,EAAQ2rC,GAapC,OAZAkvF,EAASqC,QAAO,SAAUl9H,GACxBgI,EAAGojC,MAAM4nH,MACRjwJ,MAAK,WAENs2H,EAAU15H,OAAO5D,EAAQs9H,EAAWwB,GAAW,MAEjDxB,EAAUv+H,KAAK+/H,GAEXrS,GACFA,EAAGv3F,UAAUqoG,YAAYuB,GAGpBA,EAlBL31D,EAAS,aAAe19B,EAAO,+BAAiCx/B,EAAGlB,KAyBvE6rJ,cAAe,SAAU90B,GAIvB,IAHA,IAAIxE,EAAY/gI,KAAK+gI,UACjB95H,EAAM85H,EAAUp/H,OAEX1E,EAAI,EAAGA,EAAIgK,EAAKhK,IACvB8jI,EAAU9jI,GAAGwmB,KAAK8hH,GAIpB,OADAxE,EAAUp/H,OAAS,EACZ3B,MAiCTm6J,UAAW,SAAUzyJ,EAAQm0B,EAAMD,EAAO9F,EAAQxvB,EAAUq8H,GAC1Dw3B,EAAUn6J,KAAM0H,EAAQm0B,EAAMD,EAAO9F,EAAQxvB,EAAUq8H,IAOzDi4B,YAAa,SAAUlzJ,EAAQm0B,EAAMD,EAAO9F,EAAQxvB,EAAUq8H,GAC5Dw3B,EAAUn6J,KAAM0H,EAAQm0B,EAAMD,EAAO9F,EAAQxvB,EAAUq8H,GAAc,KAkIzE,IAAIj8G,EAAW45G,EACftjI,EAAOD,QAAU2pB,G,gBClRjB,IAAIm0I,EAAc,EAAQ,KAgB1B,SAAS35B,EAAKvhI,GACZK,KAAKg7E,QAAUr7E,EAAQ+H,OAEvB1H,KAAK86J,MAAQn7J,EAAQokI,MAAQ,IAE7B/jI,KAAKikI,OAAStkI,EAAQi8B,OAAS,EAG/B57B,KAAK+6J,cAAe,EAEpB/6J,KAAKqzC,KAAuB,MAAhB1zC,EAAQ0zC,MAAuB1zC,EAAQ0zC,KACnDrzC,KAAKg7J,IAAMr7J,EAAQq7J,KAAO,EAC1Bh7J,KAAK81B,OAASn2B,EAAQm2B,QAAU,SAChC91B,KAAKkkI,QAAUvkI,EAAQukI,QACvBlkI,KAAKokI,UAAYzkI,EAAQykI,UACzBpkI,KAAKi7J,UAAYt7J,EAAQs7J,UACzBj7J,KAAKk7J,YAAc,EACnBl7J,KAAK8kI,SAAU,EAGjB5D,EAAKriI,UAAY,CACfgH,YAAaq7H,EACb5pG,KAAM,SAAU6jI,EAAYC,GAQ1B,GALKp7J,KAAK+6J,eACR/6J,KAAKq7J,WAAaF,EAAan7J,KAAKikI,OACpCjkI,KAAK+6J,cAAe,GAGlB/6J,KAAK8kI,QACP9kI,KAAKk7J,aAAeE,MADtB,CAKA,IAAIlkI,GAAWikI,EAAan7J,KAAKq7J,WAAar7J,KAAKk7J,aAAel7J,KAAK86J,MAEvE,KAAI5jI,EAAU,GAAd,CAIAA,EAAUpvB,KAAKkzC,IAAI9jB,EAAS,GAC5B,IAAIpB,EAAS91B,KAAK81B,OACdwlI,EAA+B,iBAAXxlI,EAAsB+kI,EAAY/kI,GAAUA,EAChEoC,EAAiC,mBAAfojI,EAA4BA,EAAWpkI,GAAWA,EAGxE,OAFAl3B,KAAKyd,KAAK,QAASya,GAEH,IAAZhB,EACEl3B,KAAKqzC,MACPrzC,KAAKu7J,QAAQJ,GAGN,YAKTn7J,KAAKw7J,cAAe,EACb,WAGF,QAETD,QAAS,SAAUJ,GACjB,IAAI/5J,GAAa+5J,EAAan7J,KAAKq7J,WAAar7J,KAAKk7J,aAAel7J,KAAK86J,MACzE96J,KAAKq7J,WAAaF,EAAa/5J,EAAYpB,KAAKg7J,IAChDh7J,KAAKk7J,YAAc,EACnBl7J,KAAKw7J,cAAe,GAEtB/9I,KAAM,SAAU42F,EAAWrrG,GAGrBhJ,KAFJq0G,EAAY,KAAOA,IAGjBr0G,KAAKq0G,GAAWr0G,KAAKg7E,QAAShyE,IAGlC67H,MAAO,WACL7kI,KAAK8kI,SAAU,GAEjBC,OAAQ,WACN/kI,KAAK8kI,SAAU,IAGnB,IAAIp+G,EAAWw6G,EACflkI,EAAOD,QAAU2pB,G,cC/FjB,IAAIoP,EAAS,CAKX4B,OAAQ,SAAUg7B,GAChB,OAAOA,GAOT+oG,YAAa,SAAU/oG,GACrB,OAAOA,EAAIA,GAObgpG,aAAc,SAAUhpG,GACtB,OAAOA,GAAK,EAAIA,IAOlBipG,eAAgB,SAAUjpG,GACxB,OAAKA,GAAK,GAAK,EACN,GAAMA,EAAIA,GAGX,MAASA,GAAKA,EAAI,GAAK,IAQjCkpG,QAAS,SAAUlpG,GACjB,OAAOA,EAAIA,EAAIA,GAOjBmpG,SAAU,SAAUnpG,GAClB,QAASA,EAAIA,EAAIA,EAAI,GAOvBopG,WAAY,SAAUppG,GACpB,OAAKA,GAAK,GAAK,EACN,GAAMA,EAAIA,EAAIA,EAGhB,KAAQA,GAAK,GAAKA,EAAIA,EAAI,IAQnCqpG,UAAW,SAAUrpG,GACnB,OAAOA,EAAIA,EAAIA,EAAIA,GAOrBspG,WAAY,SAAUtpG,GACpB,OAAO,KAAMA,EAAIA,EAAIA,EAAIA,GAO3BupG,aAAc,SAAUvpG,GACtB,OAAKA,GAAK,GAAK,EACN,GAAMA,EAAIA,EAAIA,EAAIA,GAGnB,KAAQA,GAAK,GAAKA,EAAIA,EAAIA,EAAI,IAQxCwpG,UAAW,SAAUxpG,GACnB,OAAOA,EAAIA,EAAIA,EAAIA,EAAIA,GAOzBypG,WAAY,SAAUzpG,GACpB,QAASA,EAAIA,EAAIA,EAAIA,EAAIA,EAAI,GAO/B0pG,aAAc,SAAU1pG,GACtB,OAAKA,GAAK,GAAK,EACN,GAAMA,EAAIA,EAAIA,EAAIA,EAAIA,EAGxB,KAAQA,GAAK,GAAKA,EAAIA,EAAIA,EAAIA,EAAI,IAQ3C2pG,aAAc,SAAU3pG,GACtB,OAAO,EAAI5qD,KAAK8vB,IAAI86B,EAAI5qD,KAAK+vB,GAAK,IAOpCykI,cAAe,SAAU5pG,GACvB,OAAO5qD,KAAK0tD,IAAI9C,EAAI5qD,KAAK+vB,GAAK,IAOhC0kI,gBAAiB,SAAU7pG,GACzB,MAAO,IAAO,EAAI5qD,KAAK8vB,IAAI9vB,KAAK+vB,GAAK66B,KAQvC8pG,cAAe,SAAU9pG,GACvB,OAAa,IAANA,EAAU,EAAI5qD,KAAK+3F,IAAI,KAAMntC,EAAI,IAO1C+pG,eAAgB,SAAU/pG,GACxB,OAAa,IAANA,EAAU,EAAI,EAAI5qD,KAAK+3F,IAAI,GAAI,GAAKntC,IAO7CgqG,iBAAkB,SAAUhqG,GAC1B,OAAU,IAANA,EACK,EAGC,IAANA,EACK,GAGJA,GAAK,GAAK,EACN,GAAM5qD,KAAK+3F,IAAI,KAAMntC,EAAI,GAG3B,IAAqC,EAA7B5qD,KAAK+3F,IAAI,GAAI,IAAMntC,EAAI,MAQxCiqG,WAAY,SAAUjqG,GACpB,OAAO,EAAI5qD,KAAK2rC,KAAK,EAAIif,EAAIA,IAO/BkqG,YAAa,SAAUlqG,GACrB,OAAO5qD,KAAK2rC,KAAK,KAAMif,EAAIA,IAO7BmqG,cAAe,SAAUnqG,GACvB,OAAKA,GAAK,GAAK,GACL,IAAO5qD,KAAK2rC,KAAK,EAAIif,EAAIA,GAAK,GAGjC,IAAO5qD,KAAK2rC,KAAK,GAAKif,GAAK,GAAKA,GAAK,IAQ9CoqG,UAAW,SAAUpqG,GACnB,IAAI1zD,EACAgM,EAAI,GAGR,OAAU,IAAN0nD,EACK,EAGC,IAANA,EACK,IAGJ1nD,GAAKA,EAAI,GACZA,EAAI,EACJhM,EAAID,IAEJC,EAdM,GAcE8I,KAAKi1J,KAAK,EAAI/xJ,IAAM,EAAIlD,KAAK+vB,KAG9B7sB,EAAIlD,KAAK+3F,IAAI,EAAG,IAAMntC,GAAK,IAAM5qD,KAAK0tD,KAAK9C,EAAI1zD,IAAM,EAAI8I,KAAK+vB,IAjB/D,MAwBVmlI,WAAY,SAAUtqG,GACpB,IAAI1zD,EACAgM,EAAI,GAGR,OAAU,IAAN0nD,EACK,EAGC,IAANA,EACK,IAGJ1nD,GAAKA,EAAI,GACZA,EAAI,EACJhM,EAAID,IAEJC,EAdM,GAcE8I,KAAKi1J,KAAK,EAAI/xJ,IAAM,EAAIlD,KAAK+vB,IAGhC7sB,EAAIlD,KAAK+3F,IAAI,GAAI,GAAKntC,GAAK5qD,KAAK0tD,KAAK9C,EAAI1zD,IAAM,EAAI8I,KAAK+vB,IAjBvD,IAiBkE,IAO5EolI,aAAc,SAAUvqG,GACtB,IAAI1zD,EACAgM,EAAI,GACJjM,EAAI,GAER,OAAU,IAAN2zD,EACK,EAGC,IAANA,EACK,IAGJ1nD,GAAKA,EAAI,GACZA,EAAI,EACJhM,EAAID,IAEJC,EAAID,EAAI+I,KAAKi1J,KAAK,EAAI/xJ,IAAM,EAAIlD,KAAK+vB,KAGlC66B,GAAK,GAAK,EACE1nD,EAAIlD,KAAK+3F,IAAI,EAAG,IAAMntC,GAAK,IAAM5qD,KAAK0tD,KAAK9C,EAAI1zD,IAAM,EAAI8I,KAAK+vB,IAAM94B,IAA3E,GAGHiM,EAAIlD,KAAK+3F,IAAI,GAAI,IAAMntC,GAAK,IAAM5qD,KAAK0tD,KAAK9C,EAAI1zD,IAAM,EAAI8I,KAAK+vB,IAAM94B,GAAK,GAAM,IAQzFm+J,OAAQ,SAAUxqG,GAChB,IAAI1zD,EAAI,QACR,OAAO0zD,EAAIA,IAAM1zD,EAAI,GAAK0zD,EAAI1zD,IAOhCm+J,QAAS,SAAUzqG,GACjB,IAAI1zD,EAAI,QACR,QAAS0zD,EAAIA,IAAM1zD,EAAI,GAAK0zD,EAAI1zD,GAAK,GAOvCo+J,UAAW,SAAU1qG,GACnB,IAAI1zD,EAAI,UAER,OAAK0zD,GAAK,GAAK,EACCA,EAAIA,IAAM1zD,EAAI,GAAK0zD,EAAI1zD,GAA9B,GAGF,KAAQ0zD,GAAK,GAAKA,IAAM1zD,EAAI,GAAK0zD,EAAI1zD,GAAK,IAQnDq+J,SAAU,SAAU3qG,GAClB,OAAO,EAAI58B,EAAOwnI,UAAU,EAAI5qG,IAOlC4qG,UAAW,SAAU5qG,GACnB,OAAIA,EAAI,EAAI,KACH,OAASA,EAAIA,EACXA,EAAI,EAAI,KACV,QAAUA,GAAK,IAAM,MAAQA,EAAI,IAC/BA,EAAI,IAAM,KACZ,QAAUA,GAAK,KAAO,MAAQA,EAAI,MAElC,QAAUA,GAAK,MAAQ,MAAQA,EAAI,SAQ9C6qG,YAAa,SAAU7qG,GACrB,OAAIA,EAAI,GAC0B,GAAzB58B,EAAOunI,SAAa,EAAJ3qG,GAGY,GAA9B58B,EAAOwnI,UAAc,EAAJ5qG,EAAQ,GAAW,KAG3ChsC,EAAWoP,EACf94B,EAAOD,QAAU2pB,G,gBCzXjB,IAEI4zE,EAFU,EAAQ,KAESA,iBAE3BtnC,EAAO,EAAQ,IAEf4Z,EAAW,EAAQ,KAEnBpV,EAAe,EAAQ,IAEvBghG,EAAU,EAAQ,KAElBgF,EAAQ,EAAQ,KAEhBplI,EAAwB,EAAQ,KAEhC26F,EAAQ,EAAQ,KAEhB/tD,EAAM,EAAQ,IAOlB,SAASy4F,EAAW54J,GAClB,OAAO6uB,SAAS7uB,EAAK,IAmBvB,IAAIssH,EAAU,IAAI35D,EAAa,EAAG,EAAG,EAAG,GACpCkmG,EAAW,IAAIlmG,EAAa,EAAG,EAAG,EAAG,GAmEzC,IAAI01D,EAAU,SAAUprH,EAAM4rH,EAASt0F,GACrCp5B,KAAKuB,KAAO,SAEZ,IAAIo8J,GAAgB77J,EAAK2L,UACU,WAAhC3L,EAAK2L,SAASqU,cACjB9hB,KAAK49J,MAAQxkI,EAAO45B,EAAK1rD,OAAO,GAAI8xB,GAAQ,IAK5Cp5B,KAAKq6F,IAAMjhE,EAAKkhE,kBAAoBA,EAMpCt6F,KAAK69J,cAAgBF,EAMrB39J,KAAK8B,KAAOA,EACZ,IAAIg8J,EAAYh8J,EAAKwiB,MAEjBw5I,IACFA,EAAU,+BAAiC,cAC3CA,EAAU,uBAAyBA,EAAU,eAAiBA,EAAU,yBAA2B,OACnGh8J,EAAKiQ,UAAY,IAOnB/R,KAAK0tH,QAAUA,EAMf,IAAIqwC,EAAa/9J,KAAKg+J,YAAc,GAMhCC,EAASj+J,KAAKk+J,QAAU,GAa5B,GAPAl+J,KAAKm+J,aAAe,GAKpBn+J,KAAKo+J,2BAA4B,EAE5BT,EAKE,CACL,IAAItsI,EAAQvvB,EAAKuvB,MACboC,EAAS3xB,EAAK2xB,OAEA,MAAd2F,EAAK/H,QACPA,EAAQ+H,EAAK/H,OAGI,MAAf+H,EAAK3F,SACPA,EAAS2F,EAAK3F,QAGhBzzB,KAAKq6F,IAAMjhE,EAAKkhE,kBAAoB,EAEpCx4F,EAAKuvB,MAAQA,EAAQrxB,KAAKq6F,IAC1Bv4F,EAAK2xB,OAASA,EAASzzB,KAAKq6F,IAC5Br6F,KAAKq+J,OAAShtI,EACdrxB,KAAKs+J,QAAU7qI,EAGf,IAAI8qI,EAAY,IAAIf,EAAM17J,EAAM9B,KAAMA,KAAKq6F,KAC3CkkE,EAAUC,aAAc,EACxBD,EAAUE,cAGVR,EAtLgB,QAsLQM,EACxBA,EAAUhuD,OAvLM,OAyLhBwtD,EAAWv7J,KAzLK,QA0LhBxC,KAAK0+J,SAAW58J,MAlCC,CACjB9B,KAAKq+J,OAASr+J,KAAK2+J,SAAS,GAC5B3+J,KAAKs+J,QAAUt+J,KAAK2+J,SAAS,GAC7B,IAAIC,EAAU5+J,KAAK0+J,SArFvB,SAAoBrtI,EAAOoC,GACzB,IAAImrI,EAAU97J,SAASiC,cAAc,OAUrC,OARA65J,EAAQt6I,MAAMyN,QAAU,CAAC,oBAOzB,SAAWV,EAAQ,KAAM,UAAYoC,EAAS,KAAM,YAAa,WAAY,kBAAkBzkB,KAAK,KAAO,IACpG4vJ,EA0EyBC,CAAW7+J,KAAKq+J,OAAQr+J,KAAKs+J,SAC3Dx8J,EAAKsD,YAAYw5J,GAsCnB5+J,KAAK8+J,YAAc,KACnB9+J,KAAK++J,eAAiB,IAGxB7xC,EAAQruH,UAAY,CAClBgH,YAAaqnH,EACbnhD,QAAS,WACP,MAAO,UAOTizF,eAAgB,WACd,OAAOh/J,KAAK69J,eAMd7vC,gBAAiB,WACf,OAAOhuH,KAAK0+J,UAEdO,sBAAuB,WACrB,IAAIC,EAAel/J,KAAKguH,kBAExB,GAAIkxC,EACF,MAAO,CACLrqB,WAAYqqB,EAAarqB,YAAc,EACvCC,UAAWoqB,EAAapqB,WAAa,IAS3C5hG,QAAS,SAAUisH,GACjB,IAAI/zJ,EAAOpL,KAAK0tH,QAAQqmC,gBAAe,GACnCgK,EAAa/9J,KAAKg+J,YACtBh+J,KAAKo/J,UAAYt3J,KAAKC,SAEtB/H,KAAKq/J,WAAWj0J,EAAM+zJ,EAAUn/J,KAAKo/J,WAGrC,IAAK,IAAIniK,EAAI,EAAGA,EAAI8gK,EAAWp8J,OAAQ1E,IAAK,CAC1C,IAAIozG,EAAI0tD,EAAW9gK,GACf62J,EAAQ9zJ,KAAKk+J,QAAQ7tD,GAEzB,IAAKyjD,EAAM0K,aAAe1K,EAAM5gH,QAAS,CACvC,IAAIosH,EAAmB,IAANriK,EAAU+C,KAAKu/J,iBAAmB,KACnDzL,EAAM5gH,QAAQosH,IAKlB,OADAt/J,KAAKsvH,eACEtvH,MAETovH,SAAU,SAAU1/G,EAAI8vJ,GACtB,IAAI9vJ,EAAG+vJ,WAAP,CAIA,IAAIpwC,EAAW,IAAI3/G,EAAG7J,YAAY,CAChCye,MAAO5U,EAAG4U,MACV8sB,MAAO1hC,EAAG0hC,MACVi/D,EAAG3gG,EAAG2gG,EACNC,GAAI5gG,EAAG4gG,GACPztC,OAAQnzD,EAAGmzD,SAQb,OANAwsD,EAASqwC,OAAShwJ,EAClBA,EAAG+vJ,WAAapwC,EAChBmwC,GAAcnwC,EAAShe,SAASmuD,GAEhCx/J,KAAK++J,eAAev8J,KAAK6sH,GAElBA,IAETE,YAAa,SAAU7/G,GACrB,IAAI2/G,EAAW3/G,EAAG+vJ,WACdE,EAAgB3/J,KAAK++J,eACrB1pJ,EAAM29C,EAAKvvD,QAAQk8J,EAAetwC,GAElCh6G,GAAO,GACTsqJ,EAAct4J,OAAOgO,EAAK,GAG5B3F,EAAG+vJ,WAAa,MAElBjwC,WAAY,SAAU9/G,GAGpB,IAFA,IAAIiwJ,EAAgB3/J,KAAK++J,eAEhB9hK,EAAI,EAAGA,EAAI0iK,EAAch+J,OAAQ1E,IAAK,CAC7C,IAAI2uC,EAAO+zH,EAAc1iK,GAAGyiK,OAExB9zH,IACFA,EAAK6zH,WAAa,MAItBE,EAAch+J,OAAS,GAEzB2tH,aAAc,WACZ,IAAIqwC,EAAgB3/J,KAAK++J,eACrB93J,EAAM04J,EAAch+J,OACpBi+J,EAAa5/J,KAAK8+J,YAGtB,GAFAc,GAAcA,EAAW/mG,QAEpB5xD,EAAL,CAIAuxJ,EAAQmH,EAAe3/J,KAAK0tH,QAAQ4rC,qBAG/BsG,IACHA,EAAa5/J,KAAK8+J,YAAc9+J,KAAK6/J,SAzTlB,MA4TrB,IAAI/wJ,EAAQ,GACZ8wJ,EAAWpwH,IAAI05F,OAEf,IAAK,IAAIjsI,EAAI,EAAGA,EAAIgK,GAAM,CACxB,IAAIyI,EAAKiwJ,EAAc1iK,GACnB6iK,EAAapwJ,EAAGgwJ,OAGdI,GAAcA,EAAW7sH,MAO/Bh2C,IAGK6iK,EAAW1vD,YACd1gG,EAAG8jC,UAAYssH,EAAWtsH,UAC1B9jC,EAAGoqJ,aAAegG,EAAWhG,aAC7BpqJ,EAAGygG,YAAc2vD,EAAW3vD,YAE5BnwG,KAAK+/J,WAAWrwJ,EAAIkwJ,GAAY,EAAM9wJ,MAdtC6wJ,EAAct4J,OAAOpK,EAAG,GACxB6iK,EAAWL,WAAa,KACxBx4J,KAgBJ24J,EAAWpwH,IAAI25F,YAEjB62B,cAAe,WACb,OAAOhgK,KAAK6/J,SA1VS,MA4VvBR,WAAY,SAAUj0J,EAAM+zJ,EAAUc,GACpC,GAAIjgK,KAAKo/J,YAAca,EAAvB,CAIAd,EAAWA,IAAY,EAEvBn/J,KAAKkgK,mBAAmB90J,GAExB,IAAI+0J,EAAWngK,KAAKogK,aAAah1J,EAAM+zJ,GAMvC,GAJIn/J,KAAKo+J,2BACPp+J,KAAKqgK,sBAGFF,EAAU,CACb,IAAIt+J,EAAO7B,KACXo4B,GAAsB,WACpBv2B,EAAKw9J,WAAWj0J,EAAM+zJ,EAAUc,SAItCI,mBAAoB,WAClB,IAAI7wH,EAAMxvC,KAAK6/J,SAlXC,QAkXuBrwH,IACnCne,EAAQrxB,KAAK0+J,SAASrtI,MACtBoC,EAASzzB,KAAK0+J,SAASjrI,OAC3B+b,EAAI8wH,UAAU,EAAG,EAAGjvI,EAAOoC,GAE3BzzB,KAAKugK,kBAAiB,SAAUzM,GAC1BA,EAAM0M,SACRhxH,EAAI2qD,UAAU25D,EAAMrmC,IAAK,EAAG,EAAGp8F,EAAOoC,OAI5C2sI,aAAc,SAAUh1J,EAAM+zJ,GAG5B,IAFA,IAAIsB,EAAY,GAEPC,EAAK,EAAGA,EAAK1gK,KAAKg+J,YAAYr8J,OAAQ++J,IAAM,CACnD,IAAInwD,EAASvwG,KAAKg+J,YAAY0C,IAC1B5M,EAAQ9zJ,KAAKk+J,QAAQ3tD,IAEfiuD,aAAe1K,IAAU9zJ,KAAK8+J,cAAgBhL,EAAM1jH,SAAW+uH,IACvEsB,EAAUj+J,KAAKsxJ,GAMnB,IAFA,IAAIqM,GAAW,EAENztG,EAAI,EAAGA,EAAI+tG,EAAU9+J,OAAQ+wD,IAAK,CACzC,IAAIohG,EACAtkH,GADAskH,EAAQ2M,EAAU/tG,IACNljB,IACZ1gC,EAAQ,GACZ0gC,EAAI05F,OACJ,IAAI5nI,EAAQ69J,EAAWrL,EAAM6M,aAAe7M,EAAM8M,YAC9CC,GAAY1B,GAAYrL,EAAMhjD,aAAexmG,KAAK0hB,IAClDkN,EAAY2nI,GAAYv2J,KAAK0hB,MAC7BszI,EAAaxL,EAAMvjD,SAAWvwG,KAAKg+J,YAAY,GAAKh+J,KAAKu/J,iBAAmB,KAEhF,GAAIzL,EAAM6M,eAAiB7M,EAAMgN,WAC/BhN,EAAMj7F,OAAM,EAAOymG,QACd,GAAIh+J,IAAUwyJ,EAAM6M,aAAc,CACvC,IAAII,EAAU31J,EAAK9J,GAEdy/J,EAAQjwD,aAAgBiwD,EAAQC,WAAY7B,GAC/CrL,EAAMj7F,OAAM,EAAOymG,IAIR,IAAXh+J,IACFif,QAAQrY,MAAM,4CACd5G,EAAQwyJ,EAAM6M,cAGhB,IAAK,IAAI1jK,EAAIqE,EAAOrE,EAAI62J,EAAMgN,WAAY7jK,IAAK,CAC7C,IAAIyS,EAAKtE,EAAKnO,GAMd,GAJA+C,KAAK+/J,WAAWrwJ,EAAIokJ,EAAOqL,EAAUrwJ,GAErCY,EAAG0gC,QAAU1gC,EAAGsjC,aAAc,EAE1B6tH,EAKF,GAHYv2J,KAAK0hB,MAAQkN,EAGb,GACV,MAKN46H,EAAM8M,YAAc3jK,EAEhB62J,EAAM8M,YAAc9M,EAAMgN,aAC5BX,GAAW,GAGTrxJ,EAAMmyJ,iBAERzxH,EAAI25F,UAGN35F,EAAI25F,UAYN,OATInkE,EAAI9L,KAENlG,EAAK3sD,KAAKrG,KAAKk+J,SAAS,SAAUpK,GAC5BA,GAASA,EAAMtkH,KAAOskH,EAAMtkH,IAAI0xH,MAClCpN,EAAMtkH,IAAI0xH,UAKTf,GAETJ,WAAY,SAAUrwJ,EAAIyxJ,EAAcC,EAAYtyJ,GAClD,IAAI0gC,EAAM2xH,EAAa3xH,IACnBnyC,EAAIqS,EAAG8jC,UAEX,IAAK2tH,EAAa/wH,SAAWgxH,KAC5B1xJ,EAAG0gG,WACoB,IAArB1gG,EAAG4U,MAAM0R,WAGP34B,GAAMA,EAAE,IAAOA,EAAE,OACjBqS,EAAGghG,UA9bZ,SAA6BhhG,EAAI2hB,EAAOoC,GAStC,OARA09F,EAAQ5pH,KAAKmI,EAAG2gC,mBAEZ3gC,EAAG8jC,WACL29E,EAAQz/D,eAAehiD,EAAG8jC,WAG5BkqH,EAASrsI,MAAQA,EACjBqsI,EAASjqI,OAASA,GACV09F,EAAQv5D,UAAU8lG,GAqbL2D,CAAoB3xJ,EAAI1P,KAAKq+J,OAAQr+J,KAAKs+J,UAAW,CACtE,IAAIrF,EAAYvpJ,EAAGygG,YACf8wD,EAAkBnyJ,EAAMmyJ,gBAEvBA,IAtbX,SAA2BhI,EAAWqI,GAEpC,GAAIrI,IAAcqI,EAChB,OAAO,EAGT,IAAKrI,IAAcqI,GAAiBrI,EAAUt3J,SAAW2/J,EAAc3/J,OACrE,OAAO,EAGT,IAAK,IAAI1E,EAAI,EAAGA,EAAIg8J,EAAUt3J,OAAQ1E,IACpC,GAAIg8J,EAAUh8J,KAAOqkK,EAAcrkK,GACjC,OAAO,EAIX,OAAO,EAsaqBskK,CAAkBtI,EAAWgI,KAE/CA,IACFzxH,EAAI25F,UACJr6H,EAAMmyJ,gBAAkB,KAExBnyJ,EAAM2gC,OAAS,MAIbwpH,IACFzpH,EAAI05F,OA9ad,SAAgB+vB,EAAWzpH,GACzB,IAAK,IAAIvyC,EAAI,EAAGA,EAAIg8J,EAAUt3J,OAAQ1E,IAAK,CACzC,IAAIsjI,EAAW04B,EAAUh8J,GACzBsjI,EAASpwF,aAAaX,GACtBA,EAAIyB,YACJsvF,EAASpvF,UAAU3B,EAAK+wF,EAASnvF,OACjC5B,EAAIs0F,OAEJvD,EAAS7uF,iBAAiBlC,IAuapBgyH,CAAOvI,EAAWzpH,GAClB1gC,EAAMmyJ,gBAAkBhI,IAI5BvpJ,EAAGshG,aAAethG,EAAGshG,YAAYxhE,GACjC9/B,EAAG6/B,MAAMC,EAAK1gC,EAAM2gC,QAAU,MAC9B3gC,EAAM2gC,OAAS//B,EACfA,EAAGuhG,YAAcvhG,EAAGuhG,WAAWzhE,KAUnCqwH,SAAU,SAAUtvD,EAAQiwD,GACtBxgK,KAAK69J,gBAAkB79J,KAAKo+J,4BAC9B7tD,EA7fc,QAggBhB,IAAIujD,EAAQ9zJ,KAAKk+J,QAAQ3tD,GAyBzB,OAvBKujD,KAEHA,EAAQ,IAAI0J,EAAM,MAAQjtD,EAAQvwG,KAAMA,KAAKq6F,MACvCkW,OAASA,EACfujD,EAAM0K,aAAc,EAEhBx+J,KAAKm+J,aAAa5tD,GACpBv9C,EAAK7sD,MAAM2tJ,EAAO9zJ,KAAKm+J,aAAa5tD,IAAS,GAEtCvwG,KAAKm+J,aAAa5tD,EA1gBF,MA2gBrBv9C,EAAK7sD,MAAM2tJ,EAAO9zJ,KAAKm+J,aAAa5tD,EA3gBf,MA2gBmD,GAGxEiwD,IACF1M,EAAM0M,QAAUA,GAGlBxgK,KAAKyhK,YAAYlxD,EAAQujD,GAGzBA,EAAM2K,eAGD3K,GAET2N,YAAa,SAAUlxD,EAAQujD,GAC7B,IAAI4N,EAAY1hK,KAAKk+J,QACjBH,EAAa/9J,KAAKg+J,YAClB/2J,EAAM82J,EAAWp8J,OACjBggK,EAAY,KACZ1kK,GAAK,EACL2hK,EAAU5+J,KAAK0+J,SAEnB,GAAIgD,EAAUnxD,GACZ3jC,EAAS,UAAY2jC,EAAS,+BAKhC,GAjiBJ,SAAsBujD,GACpB,QAAKA,MAIDA,EAAM0K,aAIkB,mBAAjB1K,EAAMrkC,QAAkD,mBAAlBqkC,EAAM5gH,SAwhBhD0uH,CAAa9N,GAAlB,CAKA,GAAI7sJ,EAAM,GAAKspG,EAASwtD,EAAW,GAAI,CACrC,IAAK9gK,EAAI,EAAGA,EAAIgK,EAAM,KAChB82J,EAAW9gK,GAAKszG,GAAUwtD,EAAW9gK,EAAI,GAAKszG,GAD3BtzG,KAMzB0kK,EAAYD,EAAU3D,EAAW9gK,IAQnC,GALA8gK,EAAW12J,OAAOpK,EAAI,EAAG,EAAGszG,GAC5BmxD,EAAUnxD,GAAUujD,GAIfA,EAAM0M,QACT,GAAImB,EAAW,CACb,IAAIE,EAAUF,EAAUl0C,IAEpBo0C,EAAQ1xJ,YACVyuJ,EAAQ3uI,aAAa6jI,EAAMrmC,IAAKo0C,EAAQ1xJ,aAExCyuJ,EAAQx5J,YAAY0uJ,EAAMrmC,UAGxBmxC,EAAQnrJ,WACVmrJ,EAAQ3uI,aAAa6jI,EAAMrmC,IAAKmxC,EAAQnrJ,YAExCmrJ,EAAQx5J,YAAY0uJ,EAAMrmC,UAhC9B7gD,EAAS,mBAAqB2jC,EAAS,kBAsC3CuxD,UAAW,SAAUx1H,EAAIvsC,GACvB,IACIswG,EACApzG,EAFA8gK,EAAa/9J,KAAKg+J,YAItB,IAAK/gK,EAAI,EAAGA,EAAI8gK,EAAWp8J,OAAQ1E,IACjCozG,EAAI0tD,EAAW9gK,GACfqvC,EAAGlvC,KAAK2C,EAASC,KAAKk+J,QAAQ7tD,GAAIA,IAItCkwD,iBAAkB,SAAUj0H,EAAIvsC,GAC9B,IACI+zJ,EACAzjD,EACApzG,EAHA8gK,EAAa/9J,KAAKg+J,YAKtB,IAAK/gK,EAAI,EAAGA,EAAI8gK,EAAWp8J,OAAQ1E,IACjCozG,EAAI0tD,EAAW9gK,IACf62J,EAAQ9zJ,KAAKk+J,QAAQ7tD,IAEXmuD,aACRlyH,EAAGlvC,KAAK2C,EAAS+zJ,EAAOzjD,IAK9BwjD,eAAgB,SAAUvnH,EAAIvsC,GAC5B,IACI+zJ,EACAzjD,EACApzG,EAHA8gK,EAAa/9J,KAAKg+J,YAKtB,IAAK/gK,EAAI,EAAGA,EAAI8gK,EAAWp8J,OAAQ1E,IACjCozG,EAAI0tD,EAAW9gK,IACf62J,EAAQ9zJ,KAAKk+J,QAAQ7tD,IAEVmuD,aACTlyH,EAAGlvC,KAAK2C,EAAS+zJ,EAAOzjD,IAS9B0xD,UAAW,WACT,OAAO/hK,KAAKk+J,SAEdgC,mBAAoB,SAAU90J,GAK5B,SAAS42J,EAAgB3sJ,GACnBssJ,IACEA,EAAUb,aAAezrJ,IAC3BssJ,EAAUvxH,SAAU,GAGtBuxH,EAAUb,WAAazrJ,GAI3B,GAdArV,KAAKugK,kBAAiB,SAAUzM,EAAOzjD,GACrCyjD,EAAM1jH,QAAU0jH,EAAMmO,QAAS,KAa7BjiK,KAAK69J,cACP,IAAK,IAAI5gK,EAAI,EAAGA,EAAImO,EAAKzJ,OAAQ1E,IAAK,CAGpC,IAFIyS,EAAKtE,EAAKnO,IAEPszG,SAAWnlG,EAAKnO,EAAI,GAAGszG,QAAU7gG,EAAGohG,YAAa,CACtD9wG,KAAKo+J,2BAA4B,EACjC,OAKN,IAEI8D,EAFAP,EAAY,KACZQ,EAAwB,EAG5B,IAASllK,EAAI,EAAGA,EAAImO,EAAKzJ,OAAQ1E,IAAK,CACpC,IAAIyS,EAEAokJ,EADAvjD,GADA7gG,EAAKtE,EAAKnO,IACEszG,OAGZ2xD,IAAe3xD,IACjB2xD,EAAa3xD,EACb4xD,EAAwB,GAWtBzyJ,EAAGohG,cACLgjD,EAAQ9zJ,KAAK6/J,SAAStvD,EAjrBR,KAirBkCvwG,KAAKo+J,4BAC/CttD,aAAc,EACpBqxD,EAAwB,GAExBrO,EAAQ9zJ,KAAK6/J,SAAStvD,GAAU4xD,EAAwB,EAtrBjC,IAsrBgE,GAAIniK,KAAKo+J,2BAG7FtK,EAAM0K,aACT5xF,EAAS,UAAY2jC,EAAS,kCAAoCujD,EAAMtlJ,IAGtEslJ,IAAU6N,IACZ7N,EAAMmO,QAAS,EAEXnO,EAAM6M,eAAiB1jK,IACzB62J,EAAM1jH,SAAU,GAGlB0jH,EAAM6M,aAAe1jK,EAEhB62J,EAAMhjD,YAITgjD,EAAM8M,aAAe,EAHrB9M,EAAM8M,YAAc3jK,EAMtB+kK,EAAgB/kK,GAChB0kK,EAAY7N,GAGVpkJ,EAAG0gC,UACL0jH,EAAM1jH,SAAU,EAEZ0jH,EAAMhjD,aAAegjD,EAAM8M,YAAc,IAE3C9M,EAAM8M,YAAc3jK,IAK1B+kK,EAAgB/kK,GAChB+C,KAAKugK,kBAAiB,SAAUzM,EAAOzjD,IAEhCyjD,EAAMmO,QAAUnO,EAAMsO,kBAAoB,IAC7CtO,EAAM1jH,SAAU,EAChB0jH,EAAM6M,aAAe7M,EAAMgN,WAAahN,EAAM8M,YAAc,GAI1D9M,EAAM1jH,SAAW0jH,EAAM8M,YAAc,IACvC9M,EAAM8M,YAAc9M,EAAM6M,kBAQhC9nG,MAAO,WAEL,OADA74D,KAAKugK,iBAAiBvgK,KAAKqiK,aACpBriK,MAETqiK,YAAa,SAAUvO,GACrBA,EAAMj7F,SAERi2D,mBAAoB,SAAUC,GAC5B/uH,KAAKu/J,iBAAmBxwC,GAa1BH,YAAa,SAAUre,EAAQ5tC,GAC7B,GAAIA,EAAQ,CACV,IAAI2/F,EAActiK,KAAKm+J,aAElBmE,EAAY/xD,GAGfv9C,EAAK7sD,MAAMm8J,EAAY/xD,GAAS5tC,GAAQ,GAFxC2/F,EAAY/xD,GAAU5tC,EAKxB,IAAK,IAAI1lE,EAAI,EAAGA,EAAI+C,KAAKg+J,YAAYr8J,OAAQ1E,IAAK,CAChD,IAAIslK,EAAUviK,KAAKg+J,YAAY/gK,GAE/B,GAAIslK,IAAYhyD,GAAUgyD,IAAYhyD,EA/wBf,IA+wBkD,CACvE,IAAIujD,EAAQ9zJ,KAAKk+J,QAAQqE,GACzBvvG,EAAK7sD,MAAM2tJ,EAAOwO,EAAY/xD,IAAS,OAU/CiyD,SAAU,SAAUjyD,GAClB,IAAI0tD,EAASj+J,KAAKk+J,QACdH,EAAa/9J,KAAKg+J,YAClBlK,EAAQmK,EAAO1tD,GAEdujD,IAILA,EAAMrmC,IAAIpoH,WAAWC,YAAYwuJ,EAAMrmC,YAChCwwC,EAAO1tD,GACdwtD,EAAW12J,OAAO2rD,EAAKvvD,QAAQs6J,EAAYxtD,GAAS,KAMtDkf,OAAQ,SAAUp+F,EAAOoC,GACvB,GAAKzzB,KAAK0+J,SAASp6I,MASZ,CACL,IAAIs6I,EAAU5+J,KAAK0+J,SAEnBE,EAAQt6I,MAAMC,QAAU,OAExB,IAAI6U,EAAOp5B,KAAK49J,MAOhB,GANS,MAATvsI,IAAkB+H,EAAK/H,MAAQA,GACrB,MAAVoC,IAAmB2F,EAAK3F,OAASA,GACjCpC,EAAQrxB,KAAK2+J,SAAS,GACtBlrI,EAASzzB,KAAK2+J,SAAS,GACvBC,EAAQt6I,MAAMC,QAAU,GAEpBvkB,KAAKq+J,SAAWhtI,GAASoC,IAAWzzB,KAAKs+J,QAAS,CAIpD,IAAK,IAAI9vJ,KAHTowJ,EAAQt6I,MAAM+M,MAAQA,EAAQ,KAC9ButI,EAAQt6I,MAAMmP,OAASA,EAAS,KAEjBzzB,KAAKk+J,QACdl+J,KAAKk+J,QAAQp/J,eAAe0P,IAC9BxO,KAAKk+J,QAAQ1vJ,GAAIihH,OAAOp+F,EAAOoC,GAInCu/B,EAAK3sD,KAAKrG,KAAKyiK,oBAAoB,SAAU3O,GAC3CA,EAAMrkC,OAAOp+F,EAAOoC,MAEtBzzB,KAAKkzC,SAAQ,GAGflzC,KAAKq+J,OAAShtI,EACdrxB,KAAKs+J,QAAU7qI,MAtCS,CAExB,GAAa,MAATpC,GAA2B,MAAVoC,EACnB,OAGFzzB,KAAKq+J,OAAShtI,EACdrxB,KAAKs+J,QAAU7qI,EACfzzB,KAAK6/J,SAtzBS,QAszBepwC,OAAOp+F,EAAOoC,GAiC7C,OAAOzzB,MAOT0iK,WAAY,SAAUnyD,GACpB,IAAIujD,EAAQ9zJ,KAAKk+J,QAAQ3tD,GAErBujD,GACFA,EAAMj7F,SAOVo3D,QAAS,WACPjwH,KAAK8B,KAAKiQ,UAAY,GACtB/R,KAAK8B,KAAO9B,KAAK0tH,QAAU1tH,KAAK0+J,SAAW1+J,KAAKk+J,QAAU,MAS5DyE,kBAAmB,SAAUvpI,GAG3B,GAFAA,EAAOA,GAAQ,GAEXp5B,KAAK69J,gBAAkB79J,KAAKqgK,mBAC9B,OAAOrgK,KAAKk+J,QAx3BE,QAw3BqBzwC,IAGrC,IAAIm1C,EAAa,IAAIpF,EAAM,QAASx9J,KAAMo5B,EAAKypI,YAAc7iK,KAAKq6F,KAIlE,GAHAuoE,EAAWnE,cACXmE,EAAW/pG,OAAM,EAAOz/B,EAAK21F,iBAAmB/uH,KAAKu/J,kBAEjDnmI,EAAKypI,YAAc7iK,KAAKq6F,IAAK,CAC/Br6F,KAAKkzC,UACL,IAAI7hB,EAAQuxI,EAAWn1C,IAAIp8F,MACvBoC,EAASmvI,EAAWn1C,IAAIh6F,OACxB+b,EAAMozH,EAAWpzH,IACrBxvC,KAAK8hK,WAAU,SAAUhO,GACnBA,EAAM0K,YACRhvH,EAAI2qD,UAAU25D,EAAMrmC,IAAK,EAAG,EAAGp8F,EAAOoC,GAC7BqgI,EAAMgP,iBACfF,EAAWpzH,IAAI05F,OACf4qB,EAAMgP,eAAeF,EAAWpzH,KAChCozH,EAAWpzH,IAAI25F,mBAQnB,IAHA,IAAIr6H,EAAQ,GACRiqJ,EAAc/4J,KAAK0tH,QAAQqmC,gBAAe,GAErC92J,EAAI,EAAGA,EAAI87J,EAAYp3J,OAAQ1E,IAAK,CAC3C,IAAIyS,EAAKqpJ,EAAY97J,GAErB+C,KAAK+/J,WAAWrwJ,EAAIkzJ,GAAY,EAAM9zJ,GAI1C,OAAO8zJ,EAAWn1C,KAMpBjQ,SAAU,WACR,OAAOx9G,KAAKq+J,QAMd1uC,UAAW,WACT,OAAO3vH,KAAKs+J,SAEdK,SAAU,SAAUoE,GAClB,IAAI3pI,EAAOp5B,KAAK49J,MACZoF,EAAK,CAAC,QAAS,UAAUD,GACzBE,EAAM,CAAC,cAAe,gBAAgBF,GACtCG,EAAM,CAAC,cAAe,cAAcH,GACpCI,EAAM,CAAC,eAAgB,iBAAiBJ,GAE5C,GAAgB,MAAZ3pI,EAAK4pI,IAA4B,SAAb5pI,EAAK4pI,GAC3B,OAAOnwI,WAAWuG,EAAK4pI,IAGzB,IAAIlhK,EAAO9B,KAAK8B,KAEZk0J,EAAMlzJ,SAASkO,YAAY+f,iBAAiBjvB,GAChD,OAAQA,EAAKmhK,IAAQxF,EAAWzH,EAAIgN,KAAQvF,EAAW37J,EAAKwiB,MAAM0+I,MAASvF,EAAWzH,EAAIkN,KAAS,IAAMzF,EAAWzH,EAAImN,KAAS,GAAK,GAExIvzC,YAAa,SAAU1gF,EAAMmrD,GAC3BA,EAAMA,GAAOr6F,KAAKq6F,IAClB,IAAIizB,EAASxqH,SAASiC,cAAc,UAChCyqC,EAAM89E,EAAOvgF,WAAW,MACxBlE,EAAOqG,EAAKmB,kBACZ/rB,EAAQ4qB,EAAK5qB,MACb8+I,EAAiB9+I,EAAMw+E,WAAazI,EACpC2I,EAAgB1+E,EAAM0+E,cAAgB3I,EACtC4I,EAAgB3+E,EAAM2+E,cAAgB5I,EACtCloD,EAAY7tB,EAAMorB,YAAcprB,EAAM6tB,UAAY,EAClDkxH,EAAav7J,KAAKitB,IAAIod,EAAY,GAAI6wD,EAAgBogE,GACtDE,EAAcx7J,KAAKitB,IAAIod,EAAY,EAAG6wD,EAAgBogE,GACtDG,EAAYz7J,KAAKitB,IAAIod,EAAY,GAAI8wD,EAAgBmgE,GACrDI,EAAe17J,KAAKitB,IAAIod,EAAY,EAAG8wD,EAAgBmgE,GACvD/xI,EAAQwX,EAAKxX,MAAQgyI,EAAaC,EAClC7vI,EAASoV,EAAKpV,OAAS8vI,EAAYC,EACvCl2C,EAAOj8F,MAAQA,EAAQgpE,EACvBizB,EAAO75F,OAASA,EAAS4mE,EACzB7qD,EAAI3qB,MAAMw1E,EAAKA,GACf7qD,EAAI8wH,UAAU,EAAG,EAAGjvI,EAAOoC,GAC3B+b,EAAI6qD,IAAMA,EACV,IAAIopE,EAAgB,CAClBjxI,SAAU0c,EAAK1c,SACf6sG,SAAUnwF,EAAKmwF,SACfx6G,MAAOqqB,EAAKrqB,OAEdqqB,EAAK1c,SAAW,CAAC6wI,EAAax6H,EAAK0J,EAAGgxH,EAAY16H,EAAK2J,GACvDtD,EAAKmwF,SAAW,EAChBnwF,EAAKrqB,MAAQ,CAAC,EAAG,GACjBqqB,EAAK0xF,kBAED1xF,GACFA,EAAKK,MAAMC,GAGb,IACIk0H,EAAW,IADE3wC,EACa,CAC5BzuG,MAAO,CACLiuB,EAAG,EACHC,EAAG,EACH/7B,MAAO62G,KAgBX,OAZ8B,MAA1Bm2C,EAAcjxI,WAChBkxI,EAASlxI,SAAW0c,EAAK1c,SAAWixI,EAAcjxI,UAGtB,MAA1BixI,EAAcpkC,WAChBqkC,EAASrkC,SAAWnwF,EAAKmwF,SAAWokC,EAAcpkC,UAGzB,MAAvBokC,EAAc5+I,QAChB6+I,EAAS7+I,MAAQqqB,EAAKrqB,MAAQ4+I,EAAc5+I,OAGvC6+I,IAGX,IAAIh9I,EAAWwmG,EACflwH,EAAOD,QAAU2pB,G,gBC1gCjB,IAAIssC,EAAO,EAAQ,IAIfsnC,EAFU,EAAQ,KAESA,iBAE3B0V,EAAQ,EAAQ,KAEhBqiB,EAAU,EAAQ,KAMtB,SAASrqG,IACP,OAAO,EAYT,SAAS27I,EAAUn1J,EAAIs/G,EAASzzB,GAC9B,IAAIupE,EAAS5wG,EAAK3mB,eACdhb,EAAQy8F,EAAQtQ,WAChB/pF,EAASq6F,EAAQ6B,YACjBk0C,EAAcD,EAAOt/I,MAczB,OAZIu/I,IAEFA,EAAYrxI,SAAW,WACvBqxI,EAAYttI,KAAO,EACnBstI,EAAY5yJ,IAAM,EAClB4yJ,EAAYxyI,MAAQA,EAAQ,KAC5BwyI,EAAYpwI,OAASA,EAAS,KAC9BmwI,EAAO1+J,aAAa,iBAAkBsJ,IAGxCo1J,EAAOvyI,MAAQA,EAAQgpE,EACvBupE,EAAOnwI,OAASA,EAAS4mE,EAClBupE,EAYT,IAAIpG,EAAQ,SAAUhvJ,EAAIs/G,EAASzzB,GACjC,IAAIozB,EACJpzB,EAAMA,GAAOC,EAEK,iBAAP9rF,EACTi/G,EAAMk2C,EAAUn1J,EAAIs/G,EAASzzB,GAEtBrnC,EAAKvwD,SAAS+L,KAEnBA,GADAi/G,EAAMj/G,GACGA,IAGbxO,KAAKwO,GAAKA,EACVxO,KAAKytH,IAAMA,EACX,IAAIq2C,EAAWr2C,EAAInpG,MAEfw/I,IAEFr2C,EAAIs2C,cAAgB/7I,EAEpB87I,EAAS,uBAAyB,OAClCA,EAAS,eAAiB,OAC1BA,EAAS,yBAA2B,OACpCA,EAAS,+BAAiC,gBAC1CA,EAAkB,QAAI,EAEtBA,EAAiB,OAAI,EAErBA,EAAS,gBAAkB,GAG7B9jK,KAAKgkK,QAAU,KACfhkK,KAAKikK,QAAU,KACfjkK,KAAK8tH,QAAUA,EACf9tH,KAAK2iE,OAAS,KAQd3iE,KAAKs/J,WAAa,EAOlBt/J,KAAKkkK,YAAa,EAOlBlkK,KAAKmkK,eAAiB,GAMtBnkK,KAAKq6F,IAAMA,GAGbmjE,EAAM3+J,UAAY,CAChBgH,YAAa23J,EACbptH,SAAS,EACT6xH,QAAQ,EACRrB,YAAa,EACbD,aAAc,EACdG,WAAY,EACZhwD,aAAa,EACbsxD,gBAAiB,WACf,OAAOpiK,KAAK8gK,WAAa9gK,KAAK2gK,cAEhClC,YAAa,WACXz+J,KAAKwvC,IAAMxvC,KAAKytH,IAAI1gF,WAAW,MAC/B/sC,KAAKwvC,IAAI6qD,IAAMr6F,KAAKq6F,KAEtB+pE,iBAAkB,WAChB,IAAI/pE,EAAMr6F,KAAKq6F,IACfr6F,KAAKgkK,QAAUL,EAAU,QAAU3jK,KAAKwO,GAAIxO,KAAK8tH,QAASzzB,GAC1Dr6F,KAAKikK,QAAUjkK,KAAKgkK,QAAQj3H,WAAW,MAE3B,IAARstD,GACFr6F,KAAKikK,QAAQp/I,MAAMw1E,EAAKA,IAQ5Bo1B,OAAQ,SAAUp+F,EAAOoC,GACvB,IAAI4mE,EAAMr6F,KAAKq6F,IACXozB,EAAMztH,KAAKytH,IACXq2C,EAAWr2C,EAAInpG,MACf0/I,EAAUhkK,KAAKgkK,QAEfF,IACFA,EAASzyI,MAAQA,EAAQ,KACzByyI,EAASrwI,OAASA,EAAS,MAG7Bg6F,EAAIp8F,MAAQA,EAAQgpE,EACpBozB,EAAIh6F,OAASA,EAAS4mE,EAElB2pE,IACFA,EAAQ3yI,MAAQA,EAAQgpE,EACxB2pE,EAAQvwI,OAASA,EAAS4mE,EAEd,IAARA,GACFr6F,KAAKikK,QAAQp/I,MAAMw1E,EAAKA,KAU9BxhC,MAAO,SAAUwrG,EAAU/E,GACzB,IAqBMgF,EArBF72C,EAAMztH,KAAKytH,IACXj+E,EAAMxvC,KAAKwvC,IACXne,EAAQo8F,EAAIp8F,MACZoC,EAASg6F,EAAIh6F,OAEb8wI,GADAjF,EAAaA,GAAct/J,KAAKs/J,WACft/J,KAAKkkK,aAAeG,GACrCF,EAAiBnkK,KAAKmkK,eACtB9pE,EAAMr6F,KAAKq6F,KAEXkqE,IACGvkK,KAAKgkK,SACRhkK,KAAKokK,mBAGPpkK,KAAKikK,QAAQhyC,yBAA2B,OACxCjyH,KAAKikK,QAAQ9pE,UAAUszB,EAAK,EAAG,EAAGp8F,EAAQgpE,EAAK5mE,EAAS4mE,IAG1D7qD,EAAI8wH,UAAU,EAAG,EAAGjvI,EAAOoC,GAEvB6rI,GAA6B,gBAAfA,KAGZA,EAAWvvH,YAEbu0H,EAA8BhF,EAAWkF,kBAAoBx0D,EAAMz/D,YAAYf,EAAK8vH,EAAY,CAC9F/sH,EAAG,EACHC,EAAG,EACHnhB,MAAOA,EACPoC,OAAQA,IAEV6rI,EAAWkF,iBAAmBF,GAEvBhF,EAAW7oJ,QAChB6tJ,EAA8BjyC,EAAQxzH,UAAUiwC,iBAAiB1xC,KAAKkiK,EAAY9vH,IAGtFA,EAAI05F,OACJ15F,EAAIiB,UAAY6zH,GAA+BhF,EAC/C9vH,EAAIi1H,SAAS,EAAG,EAAGpzI,EAAOoC,GAC1B+b,EAAI25F,WAGN,GAAIo7B,EAAgB,CAClB,IAAIP,EAAUhkK,KAAKgkK,QACnBx0H,EAAI05F,OACJ15F,EAAIgC,YAAc2yH,EAClB30H,EAAI2qD,UAAU6pE,EAAS,EAAG,EAAG3yI,EAAOoC,GACpC+b,EAAI25F,aAIV,IAAIziH,EAAW82I,EACfxgK,EAAOD,QAAU2pB,G,gBC1OjB,IAAIssC,EAAO,EAAQ,IAIfogD,EAFS,EAAQ,KAEGA,WAEpBh7E,EAAwB,EAAQ,KAEhCisG,EAAW,EAAQ,KAwCnBzrG,EAAY,SAAUj5B,GACxBA,EAAUA,GAAW,GACrBK,KAAKiuH,MAAQtuH,EAAQsuH,OAAS,GAE9BjuH,KAAKkkI,QAAUvkI,EAAQukI,SAAW,aAGlClkI,KAAK0kK,OAAS,GACd1kK,KAAK2kK,UAAW,EAChB3kK,KAAK4kK,MACL5kK,KAAKk7J,YACLl7J,KAAK6kK,YACL7kK,KAAK8kI,SAAU,EACf1xB,EAAWh2G,KAAK4C,OAGlB44B,EAAU/5B,UAAY,CACpBgH,YAAa+yB,EAMbysG,QAAS,SAAUvB,GACjB9jI,KAAK0kK,OAAOliK,KAAKshI,IAOnB9C,YAAa,SAAUuB,GACrBA,EAAS5pG,UAAY34B,KAGrB,IAFA,IAAI8kK,EAAQviC,EAASmD,WAEZzoI,EAAI,EAAGA,EAAI6nK,EAAMnjK,OAAQ1E,IAChC+C,KAAKqlI,QAAQy/B,EAAM7nK,KAQvBwoI,WAAY,SAAU3B,GACpB,IAAIzuH,EAAM29C,EAAKvvD,QAAQzD,KAAK0kK,OAAQ5gC,GAEhCzuH,GAAO,GACTrV,KAAK0kK,OAAOr9J,OAAOgO,EAAK,IAQ5B4rH,eAAgB,SAAUsB,GAGxB,IAFA,IAAIuiC,EAAQviC,EAASmD,WAEZzoI,EAAI,EAAGA,EAAI6nK,EAAMnjK,OAAQ1E,IAChC+C,KAAKylI,WAAWq/B,EAAM7nK,IAGxBslI,EAAS5pG,UAAY,MAEvBipD,QAAS,WASP,IARA,IAAI/lD,GAAO,IAAIvxB,MAAO83D,UAAYpiE,KAAKk7J,YAEnC3lI,EAAQsG,EAAO77B,KAAK4kK,MACpBE,EAAQ9kK,KAAK0kK,OACbz9J,EAAM69J,EAAMnjK,OACZojK,EAAiB,GACjBC,EAAgB,GAEX/nK,EAAI,EAAGA,EAAIgK,EAAKhK,IAAK,CAC5B,IAAI6mI,EAAOghC,EAAM7nK,GACb4Q,EAAIi2H,EAAKxsG,KAAKuE,EAAMtG,GAGpB1nB,IACFk3J,EAAeviK,KAAKqL,GACpBm3J,EAAcxiK,KAAKshI,IAKvB,IAAS7mI,EAAI,EAAGA,EAAIgK,GACd69J,EAAM7nK,GAAGu+J,cACXsJ,EAAM7nK,GAAK6nK,EAAM79J,EAAM,GACvB69J,EAAM55J,MACNjE,KAEAhK,IAIJgK,EAAM89J,EAAepjK,OAErB,IAAS1E,EAAI,EAAGA,EAAIgK,EAAKhK,IACvB+nK,EAAc/nK,GAAGwgB,KAAKsnJ,EAAe9nK,IAGvC+C,KAAK4kK,MAAQ/oI,EACb77B,KAAKkkI,QAAQ3uG,GAIbv1B,KAAKkpB,QAAQ,QAASqM,GAElBv1B,KAAKiuH,MAAMxiE,QACbzrD,KAAKiuH,MAAMxiE,UAGfw5G,WAAY,WACV,IAAIpjK,EAAO7B,KACXA,KAAK2kK,UAAW,EAShBvsI,GAPA,SAASd,IACHz1B,EAAK8iK,WACPvsI,EAAsBd,IACrBz1B,EAAKijI,SAAWjjI,EAAK+/E,eAU5BtgF,MAAO,WACLtB,KAAK4kK,OAAQ,IAAIt6J,MAAO83D,UACxBpiE,KAAKk7J,YAAc,EAEnBl7J,KAAKilK,cAMPxhJ,KAAM,WACJzjB,KAAK2kK,UAAW,GAMlB9/B,MAAO,WACA7kI,KAAK8kI,UACR9kI,KAAK6kK,aAAc,IAAIv6J,MAAO83D,UAC9BpiE,KAAK8kI,SAAU,IAOnBC,OAAQ,WACF/kI,KAAK8kI,UACP9kI,KAAKk7J,cAAe,IAAI5wJ,MAAO83D,UAAYpiE,KAAK6kK,YAChD7kK,KAAK8kI,SAAU,IAOnBjsE,MAAO,WACL74D,KAAK0kK,OAAS,IAMhBQ,WAAY,WACV,OAAQllK,KAAK0kK,OAAO/iK,QActBk5B,QAAS,SAAUnzB,EAAQ/H,GAEzB,IAAI4iI,EAAW,IAAI8B,EAAS38H,GAD5B/H,EAAUA,GAAW,IACuB0zC,KAAM1zC,EAAQlC,OAAQkC,EAAQ+jB,QAE1E,OADA1jB,KAAKghI,YAAYuB,GACVA,IAGXvvE,EAAK3lB,MAAMzU,EAAWw6E,GACtB,IAAI1sF,EAAWkS,EACf57B,EAAOD,QAAU2pB,G,gBCtPjB,IAkBMy+I,EAEAC,EApBFC,EAAS,EAAQ,KAEjBn0J,EAAmBm0J,EAAOn0J,iBAC1B2P,EAAsBwkJ,EAAOxkJ,oBAC7BqtD,EAAiBm3F,EAAOn3F,eACxBimC,EAAiBkxD,EAAOlxD,eAExBxlE,EAAS,EAAQ,IAEjByjE,EAAW,EAAQ,KAEnBptC,EAAM,EAAQ,IAIdsgG,EAAuBtgG,EAAI1L,aAE3BisG,GAGEH,EAAsB,CACxBI,YAAa,EACbC,UAAW,EACXC,YAAa,EACbC,WAAY,GAMP,CACLC,MAbET,EAAoB,CAAC,QAAS,WAAY,aAAc,WAAY,UAAW,YAAa,YAAa,eAc3G7wD,MAbsB,CAAC,aAAc,WAAY,aAcjDuxD,QAPwBl3H,EAAOpoC,IAAI4+J,GAAmB,SAAU3nK,GAChE,IAAIsoK,EAAKtoK,EAAKwK,QAAQ,QAAS,WAC/B,OAAOo9J,EAAoBtmK,eAAegnK,GAAMA,EAAKtoK,OASrDuoK,EACK,CAAC,YAAa,WADnBA,EAEO,CAAC,cAAe,aAG3B,SAASC,EAAaxoK,GACpB,MAAgB,eAATA,GAAyBwnE,EAAIhM,QAAQU,QAAU,iBAAmBl8D,EAG3E,SAASyoK,EAAmBz9I,GAC1B,IAAI8E,EAAc9E,EAAM8E,YACxB,MAAuB,QAAhBA,GAAyC,UAAhBA,EA4ClC,SAAS44I,EAAU19I,GACjBA,IAAUA,EAAMmrI,WAAY,GAmB9B,SAASwS,EAAUjwG,EAAUxmD,GAI3B,IAHA,IAAI02J,EAAQ12J,EACR8xB,GAAU,EAEP4kI,GAA4B,IAAnBA,EAAMliK,YAAoBs9B,EAAU4kI,EAAMC,eAAiBD,IAAU12J,GAAM02J,IAAUlwG,EAAS27F,cAC5GuU,EAAQA,EAAM/gK,WAGhB,OAAOm8B,EAUT,SAAS8kI,EAAgBpwG,EAAU1tC,GACjCxoB,KAAKuB,KAAOinB,EAAMjnB,KAClBvB,KAAK0H,OAAS1H,KAAK4qB,cAAgBsrC,EAASu3D,IAC5CztH,KAAKstB,YAAc9E,EAAM8E,YAEzBttB,KAAKitB,QAAUzE,EAAMyE,QACrBjtB,KAAKktB,QAAU1E,EAAM0E,QAIvB,IAAIq5I,EAAuBD,EAAgBznK,UAI3C0nK,EAAqBx9I,gBAAkBw9I,EAAqBv9I,yBAA2Bu9I,EAAqBt9I,eAAiB0lB,EAAOvmC,KAMpI,IAAIo+J,EAAmB,CACrBhW,UAAW,SAAUhoI,GACnBA,EAAQ0lD,EAAeluE,KAAKytH,IAAKjlG,GACjCxoB,KAAKymK,mBAAqB,CAACj+I,EAAMurF,IAAKvrF,EAAMwrF,KAC5Ch0G,KAAKkpB,QAAQ,YAAaV,IAE5B4nI,UAAW,SAAU5nI,GACnBA,EAAQ0lD,EAAeluE,KAAKytH,IAAKjlG,GACjC,IAAIk+I,EAAY1mK,KAAKymK,oBAEjBC,GAAcl+I,EAAMurF,MAAQ2yD,EAAU,IAAMl+I,EAAMwrF,MAAQ0yD,EAAU,IACtEC,EAAqB3mK,MAAM,GAG7BA,KAAKkpB,QAAQ,YAAaV,IAE5B6nI,QAAS,SAAU7nI,GACjBA,EAAQ0lD,EAAeluE,KAAKytH,IAAKjlG,GACjCm+I,EAAqB3mK,MAAM,GAC3BA,KAAKkpB,QAAQ,UAAWV,IAE1BsqI,SAAU,SAAUtqI,GAClBA,EAAQ0lD,EAAeluE,KAAKytH,IAAKjlG,GAG7BxoB,KAAK4mK,oBACPp+I,EAAMwqI,eAAiB,gBAQzB,IAAIx7B,EAAUhvG,EAAMkF,WAAalF,EAAMsD,cACvCtD,EAAMyqI,eAAiBkT,EAAUnmK,KAAMw3H,GACvCx3H,KAAKkpB,QAAQ,WAAYV,IAE3BioI,WAAY,SAAUjoI,GAIpB09I,EADA19I,EAAQ0lD,EAAeluE,KAAKytH,IAAKjlG,IAEjCxoB,KAAK+xJ,iBAAmB,IAAIznJ,KAC5BtK,KAAK6P,QAAQokJ,eAAezrI,EAAO,SAKnCg+I,EAAiBpW,UAAUhzJ,KAAK4C,KAAMwoB,GACtCg+I,EAAiBhW,UAAUpzJ,KAAK4C,KAAMwoB,IAExC8nI,UAAW,SAAU9nI,GAEnB09I,EADA19I,EAAQ0lD,EAAeluE,KAAKytH,IAAKjlG,IAEjCxoB,KAAK6P,QAAQokJ,eAAezrI,EAAO,UAInCg+I,EAAiBpW,UAAUhzJ,KAAK4C,KAAMwoB,IAExC+nI,SAAU,SAAU/nI,GAElB09I,EADA19I,EAAQ0lD,EAAeluE,KAAKytH,IAAKjlG,IAEjCxoB,KAAK6P,QAAQokJ,eAAezrI,EAAO,OACnCg+I,EAAiBnW,QAAQjzJ,KAAK4C,KAAMwoB,IAU/B,IAAIle,KAAStK,KAAK+xJ,iBAnNH,KAoNlByU,EAAiBh7I,MAAMpuB,KAAK4C,KAAMwoB,IAGtCg9I,YAAa,SAAUh9I,GACrBg+I,EAAiBhW,UAAUpzJ,KAAK4C,KAAMwoB,IAIxCk9I,YAAa,SAAUl9I,GAMhBy9I,EAAmBz9I,IACtBg+I,EAAiBpW,UAAUhzJ,KAAK4C,KAAMwoB,IAG1Ci9I,UAAW,SAAUj9I,GACnBg+I,EAAiBnW,QAAQjzJ,KAAK4C,KAAMwoB,IAEtCm9I,WAAY,SAAUn9I,GAMfy9I,EAAmBz9I,IACtBg+I,EAAiB1T,SAAS11J,KAAK4C,KAAMwoB,KAS3CmmB,EAAOtoC,KAAK,CAAC,QAAS,aAAc,WAAY,gBAAgB,SAAU7I,GACxEgpK,EAAiBhpK,GAAQ,SAAUgrB,GACjCA,EAAQ0lD,EAAeluE,KAAKytH,IAAKjlG,GACjCxoB,KAAKkpB,QAAQ1rB,EAAMgrB,OAYvB,IAAIq+I,EAAoB,CACtBnB,YAAa,SAAUl9I,GAMhBy9I,EAAmBz9I,IACtBq+I,EAAkBzW,UAAUhzJ,KAAK4C,KAAMwoB,IAG3Ci9I,UAAW,SAAUj9I,GACnBq+I,EAAkBxW,QAAQjzJ,KAAK4C,KAAMwoB,IAEvC4nI,UAAW,SAAU5nI,GACnBxoB,KAAKkpB,QAAQ,YAAaV,IAE5B6nI,QAAS,SAAU7nI,GACjB,IAAIs+I,EAA0B9mK,KAAK4mK,kBACnCD,EAAqB3mK,MAAM,GAC3BA,KAAKkpB,QAAQ,UAAWV,GAEpBs+I,IACFt+I,EAAMwqI,eAAiB,iBACvBhzJ,KAAKkpB,QAAQ,WAAYV,MAS/B,SAASu+I,EAA4B7wG,EAAUpnD,GAC7C,IAAIk4J,EAAcl4J,EAAMk4J,YAEpBhiG,EAAIhL,uBAQNrrB,EAAOtoC,KAAKk/J,EAAyBM,SAAS,SAAUoB,GACtDC,EAA4Bp4J,EAAOm4J,GAAiB,SAAUz+I,GAE5Dw+I,EAAYC,GAAiB7pK,KAAK84D,EAAU1tC,UAgB5Cw8C,EAAI3L,sBACN1qB,EAAOtoC,KAAKk/J,EAAyBjxD,OAAO,SAAU2yD,GACpDC,EAA4Bp4J,EAAOm4J,GAAiB,SAAUz+I,GAE5Dw+I,EAAYC,GAAiB7pK,KAAK84D,EAAU1tC,GA7QtD,SAAuB1Z,GACrBA,EAAMq4J,UAAW,EAEO,MAApBr4J,EAAMs4J,aACRrrI,aAAajtB,EAAMs4J,YACnBt4J,EAAMs4J,WAAa,MAGrBt4J,EAAMs4J,WAAaxnJ,YAAW,WAC5B9Q,EAAMq4J,UAAW,EACjBr4J,EAAMs4J,WAAa,OAClB,KAmQKC,CAAcv4J,SAWpB6/B,EAAOtoC,KAAKk/J,EAAyBK,OAAO,SAAUqB,GACpDC,EAA4Bp4J,EAAOm4J,GAAiB,SAAUz+I,GAC5DA,EAAQ2rF,EAAe3rF,GAElB1Z,EAAMq4J,UAETH,EAAYC,GAAiB7pK,KAAK84D,EAAU1tC,UAYtD,SAAS8+I,EAA6BpxG,EAAUpnD,GAY9C,SAASy4J,EAAMN,GAcbC,EAA4Bp4J,EAAOm4J,GAbnC,SAA6Bz+I,GAC3BA,EAAQ2rF,EAAe3rF,GAMlB29I,EAAUjwG,EAAU1tC,EAAM9gB,UAC7B8gB,EAtSR,SAA8B0tC,EAAU1tC,GAGtC,OAAO0lD,EAAehY,EAASu3D,IAAK,IAAI64C,EAAgBpwG,EAAU1tC,IAAQ,GAmS5Dg/I,CAAqBtxG,EAAU1tC,GACvC1Z,EAAMk4J,YAAYC,GAAiB7pK,KAAK84D,EAAU1tC,MAImB,CACvE6lD,SAAS,IAzBTrJ,EAAIhL,uBACNrrB,EAAOtoC,KAAK0/J,EAAmCwB,GAKvCviG,EAAI3L,sBACV1qB,EAAOtoC,KAAK0/J,EAAiCwB,GAwBnD,SAASL,EAA4Bp4J,EAAOm4J,EAAiBQ,EAAUhtI,GACrE3rB,EAAMk0E,QAAQikF,GAAmBQ,EACjC34J,EAAM44J,aAAaT,GAAmBxsI,EACtCvpB,EAAiBpC,EAAM64J,UAAW3B,EAAaiB,GAAkBQ,EAAUhtI,GAG7E,SAASmtI,EAAyB94J,GAChC,IAAIk0E,EAAUl0E,EAAMk0E,QAEpB,IAAK,IAAIikF,KAAmBjkF,EACtBA,EAAQlkF,eAAemoK,IACzBpmJ,EAAoB/R,EAAM64J,UAAW3B,EAAaiB,GAAkBjkF,EAAQikF,GAAkBn4J,EAAM44J,aAAaT,IAIrHn4J,EAAMk0E,QAAU,GAWlB,SAAS2jF,EAAqBzwG,EAAU2xG,GAGtC,GAFA3xG,EAASuwG,mBAAqB,KAE1BnB,GAAwBpvG,EAAS0wG,kBAAoBiB,EAAoB,CAC3E3xG,EAAS0wG,kBAAoBiB,EAC7B,IAAIC,EAAqB5xG,EAAS6xG,oBAClCF,EAAqBP,EAA6BpxG,EAAU4xG,GAAsBF,EAAyBE,IAS/G,SAASE,EAAgBL,EAAWX,GAClChnK,KAAK2nK,UAAYA,EACjB3nK,KAAKgnK,YAAcA,EAGnBhnK,KAAKgjF,QAAU,GACfhjF,KAAK0nK,aAAe,GACpB1nK,KAAKonK,WAAa,KAClBpnK,KAAKmnK,UAAW,EAQlB,SAASc,EAAgBx6C,EAAKokC,GAC5Bz/C,EAASh1G,KAAK4C,MACdA,KAAKytH,IAAMA,EACXztH,KAAK6xJ,YAAcA,EACnB7xJ,KAAKkoK,mBAAqB,IAAIF,EAAgBv6C,EAAK+4C,GAE/ClB,IACFtlK,KAAK+nK,oBAAsB,IAAIC,EAAgBllK,SAAU+jK,IAO3D7mK,KAAK4mK,mBAAoB,EAKzB5mK,KAAKymK,mBAAqB,KAC1BM,EAA4B/mK,KAAMA,KAAKkoK,oBAGzC,IAAIC,EAAuBF,EAAgBppK,UAE3CspK,EAAqBl4C,QAAU,WAC7B23C,EAAyB5nK,KAAKkoK,oBAE1B5C,GACFsC,EAAyB5nK,KAAK+nK,sBAIlCI,EAAqBvV,UAAY,SAAU9iC,GACzC9vH,KAAKytH,IAAInpG,QAAUtkB,KAAKytH,IAAInpG,MAAMqsF,OAASmf,GAAe,YAG5DnhF,EAAOtB,MAAM46H,EAAiB71D,GAC9B,IAAI1rF,EAAWuhJ,EACfjrK,EAAOD,QAAU2pB,G,gBCxfjB,IAAIioB,EAAS,EAAQ,IAErB5xC,EAAQi2D,KAAOrkB,EAEf,IAAIyoB,EAAS,EAAQ,KAErBr6D,EAAQq6D,OAASA,EAEjB,IAAIiE,EAAS,EAAQ,IAErBt+D,EAAQs+D,OAASA,EAEjB,IAAI+sG,EAAY,EAAQ,KAExBrrK,EAAQ85G,MAAQuxD,EAEhB,IAAIC,EAAW,EAAQ,KAEvBtrK,EAAQmyC,KAAOm5H,EAEf,IAAIC,EAAY,EAAQ,KAETA,EAAUC,SACzBxrK,EAAQwrK,SAAWD,EAAUC,SAE7B,IAAIC,EAAS,EAAQ,KAErBzrK,EAAQszH,MAAQm4C,EAEhB,IAAIC,EAAQ,EAAQ,IAEpB1rK,EAAQkyC,KAAOw5H,EAEf,IAAIC,EAAS,EAAQ,KAErB3rK,EAAQg2H,MAAQ21C,EAEhB,IAAIC,EAAgB,EAAQ,KAE5B5rK,EAAQ6rK,aAAeD,EAEvB,IAAIE,EAAQ,EAAQ,KAEpB9rK,EAAQ6lG,KAAOimE,EAEf,IAAIC,EAA0B,EAAQ,KAEtC/rK,EAAQgsK,uBAAyBD,EAEjC,IAAIE,EAAO,EAAQ,KAEnBjsK,EAAQksK,IAAMD,EAEd,IAAIE,EAAe,EAAQ,KAE3BnsK,EAAQosK,YAAcD,EAEtB,IAAIE,EAAU,EAAQ,KAEtBrsK,EAAQssK,OAASD,EAEjB,IAAIE,EAAW,EAAQ,KAEvBvsK,EAAQwsK,QAAUD,EAElB,IAAIE,EAAW,EAAQ,KAEvBzsK,EAAQo4I,QAAUq0B,EAElB,IAAIC,EAAS,EAAQ,KAErB1sK,EAAQ2sK,MAAQD,EAEhB,IAAIE,EAAU,EAAQ,KAEtB5sK,EAAQ6sK,OAASD,EAEjB,IAAIE,EAAQ,EAAQ,KAEpB9sK,EAAQu9D,KAAOuvG,EAEf,IAAIC,EAAW,EAAQ,KAEvB/sK,EAAQgtK,QAAUD,EAElB,IAAIE,EAAY,EAAQ,KAExBjtK,EAAQkpH,SAAW+jD,EAEnB,IAAIC,EAAQ,EAAQ,KAEpBltK,EAAQmtK,KAAOD,EAEf,IAAIE,EAAQ,EAAQ,KAEpBptK,EAAQqtK,KAAOD,EAEf,IAAIE,EAAQ,EAAQ,KAEpBttK,EAAQutK,KAAOD,EAEf,IAAIE,EAAU,EAAQ,KAEtBxtK,EAAQytK,OAASD,EAEjB,IAAIE,EAAQ,EAAQ,KAEpB1tK,EAAQ2tK,KAAOD,EAEf,IAAIE,EAAY,EAAQ,KAExB5tK,EAAQ6tK,SAAWD,EAEnB,IAAIE,EAAkB,EAAQ,KAE9B9tK,EAAQ6vI,eAAiBi+B,EAEzB,IAAIC,EAAkB,EAAQ,KAE9B/tK,EAAQguK,eAAiBD,EAEzB,IAAIE,EAAW,EAAQ,KAEvBjuK,EAAQs1H,QAAU24C,EAElB,IAAIC,EAAgB,EAAQ,IAE5BluK,EAAQy6D,aAAeyzG,G,gBC/HvB,IAAI9zG,EAAO,EAAQ,IAEfijC,EAAQ,EAAQ,KAKhB9iC,EAAUxvD,KAAKkzC,IACfuc,EAAUzvD,KAAKitB,IACfmmE,EAAUpzF,KAAK0tD,IACfylC,EAAUnzF,KAAK8vB,IACfu7F,EAAgB,EAAVrrH,KAAK+vB,GACXv2B,EAAQ61D,EAAK54D,SACb4I,EAAMgwD,EAAK54D,SACX2sK,EAAY/zG,EAAK54D,SAoDrB,IAAI4sK,EAAO,GACPC,EAAO,GAqJXruK,EAAQsuK,WAjMR,SAAoBv3G,EAAQ9Y,EAAKjmB,GAC/B,GAAsB,IAAlB++B,EAAOnyD,OAAX,CAIA,IAKI1E,EALA8B,EAAI+0D,EAAO,GACXv9B,EAAOx3B,EAAE,GACTszB,EAAQtzB,EAAE,GACVkS,EAAMlS,EAAE,GACRy8D,EAASz8D,EAAE,GAGf,IAAK9B,EAAI,EAAGA,EAAI62D,EAAOnyD,OAAQ1E,IAC7B8B,EAAI+0D,EAAO72D,GACXs5B,EAAO+gC,EAAQ/gC,EAAMx3B,EAAE,IACvBszB,EAAQklC,EAAQllC,EAAOtzB,EAAE,IACzBkS,EAAMqmD,EAAQrmD,EAAKlS,EAAE,IACrBy8D,EAASjE,EAAQiE,EAAQz8D,EAAE,IAG7Bi8C,EAAI,GAAKzkB,EACTykB,EAAI,GAAK/pC,EACT8jB,EAAI,GAAK1C,EACT0C,EAAI,GAAKymC,IA2KXz+D,EAAQ6hG,SA9JR,SAAkBpB,EAAIC,EAAI5mC,EAAIN,EAAIvb,EAAKjmB,GACrCimB,EAAI,GAAKsc,EAAQkmC,EAAI3mC,GACrB7b,EAAI,GAAKsc,EAAQmmC,EAAIlnC,GACrBxhC,EAAI,GAAKwiC,EAAQimC,EAAI3mC,GACrB9hC,EAAI,GAAKwiC,EAAQkmC,EAAIlnC,IA2JvBx5D,EAAQ8hG,UAvIR,SAAmBrB,EAAIC,EAAI5mC,EAAIN,EAAIO,EAAIC,EAAI2lC,EAAIC,EAAI3hD,EAAKjmB,GACtD,IAEI93B,EAFAskG,EAAenH,EAAMmH,aACrBjD,EAAUlE,EAAMkE,QAEhB5/F,EAAI6iG,EAAa/D,EAAI3mC,EAAIC,EAAI4lC,EAAIyuE,GAMrC,IALAnwH,EAAI,GAAKuD,IACTvD,EAAI,GAAKuD,IACTxpB,EAAI,IAAMwpB,IACVxpB,EAAI,IAAMwpB,IAELthD,EAAI,EAAGA,EAAIyB,EAAGzB,IAAK,CACtB,IAAIs1C,EAAI+rD,EAAQd,EAAI3mC,EAAIC,EAAI4lC,EAAIyuE,EAAKluK,IACrC+9C,EAAI,GAAKsc,EAAQ/kB,EAAGyI,EAAI,IACxBjmB,EAAI,GAAKwiC,EAAQhlB,EAAGxd,EAAI,IAK1B,IAFAr2B,EAAI6iG,EAAa9D,EAAIlnC,EAAIQ,EAAI4lC,EAAIyuE,GAE5BnuK,EAAI,EAAGA,EAAIyB,EAAGzB,IAAK,CACtB,IAAIu1C,EAAI8rD,EAAQb,EAAIlnC,EAAIQ,EAAI4lC,EAAIyuE,EAAKnuK,IACrC+9C,EAAI,GAAKsc,EAAQ9kB,EAAGwI,EAAI,IACxBjmB,EAAI,GAAKwiC,EAAQ/kB,EAAGzd,EAAI,IAG1BimB,EAAI,GAAKsc,EAAQkmC,EAAIxiD,EAAI,IACzBjmB,EAAI,GAAKwiC,EAAQimC,EAAIzoE,EAAI,IACzBimB,EAAI,GAAKsc,EAAQolC,EAAI1hD,EAAI,IACzBjmB,EAAI,GAAKwiC,EAAQmlC,EAAI3nE,EAAI,IACzBimB,EAAI,GAAKsc,EAAQmmC,EAAIziD,EAAI,IACzBjmB,EAAI,GAAKwiC,EAAQkmC,EAAI1oE,EAAI,IACzBimB,EAAI,GAAKsc,EAAQqlC,EAAI3hD,EAAI,IACzBjmB,EAAI,GAAKwiC,EAAQolC,EAAI5nE,EAAI,KAyG3Bh4B,EAAQ+hG,cAzFR,SAAuBtB,EAAIC,EAAI5mC,EAAIN,EAAIO,EAAIC,EAAI/b,EAAKjmB,GAClD,IAAIstE,EAAoBjI,EAAMiI,kBAC1B9B,EAAcnG,EAAMmG,YAEpB5lC,EAAKpD,EAAQD,EAAQ+qC,EAAkB7E,EAAI3mC,EAAIC,GAAK,GAAI,GACxD8D,EAAKrD,EAAQD,EAAQ+qC,EAAkB5E,EAAIlnC,EAAIQ,GAAK,GAAI,GACxDxkB,EAAIguD,EAAY/C,EAAI3mC,EAAIC,EAAI6D,GAC5BnoB,EAAI+tD,EAAY9C,EAAIlnC,EAAIQ,EAAI6D,GAChC5f,EAAI,GAAKsc,EAAQkmC,EAAI1mC,EAAIvkB,GACzByI,EAAI,GAAKsc,EAAQmmC,EAAI1mC,EAAIvkB,GACzBzd,EAAI,GAAKwiC,EAAQimC,EAAI1mC,EAAIvkB,GACzBxd,EAAI,GAAKwiC,EAAQkmC,EAAI1mC,EAAIvkB,IA+E3Bz1C,EAAQkiG,QA7DR,SAAiB1sD,EAAGC,EAAGusD,EAAIC,EAAI9B,EAAYC,EAAUC,EAAepiD,EAAKjmB,GACvE,IAAIu2I,EAAUn0G,EAAKnc,IACfuwH,EAAUp0G,EAAKpiC,IACf9kB,EAAOnI,KAAKinC,IAAImuD,EAAaC,GAEjC,GAAIltF,EAAOkjH,EAAM,MAAQljH,EAAO,KAM9B,OAJA+qC,EAAI,GAAKzI,EAAIwsD,EACb/jD,EAAI,GAAKxI,EAAIwsD,EACbjqE,EAAI,GAAKwd,EAAIwsD,OACbhqE,EAAI,GAAKyd,EAAIwsD,GA6Bf,GAzBA19F,EAAM,GAAK25F,EAAQiC,GAAc6B,EAAKxsD,EACtCjxC,EAAM,GAAK45F,EAAQgC,GAAc8B,EAAKxsD,EACtCrrC,EAAI,GAAK8zF,EAAQkC,GAAY4B,EAAKxsD,EAClCprC,EAAI,GAAK+zF,EAAQiC,GAAY6B,EAAKxsD,EAClC84H,EAAQtwH,EAAK15C,EAAO6F,GACpBokK,EAAQx2I,EAAKzzB,EAAO6F,IAEpB+1F,GAA0Bi2B,GAET,IACfj2B,GAA0Bi2B,IAG5Bh2B,GAAsBg2B,GAEP,IACbh2B,GAAsBg2B,GAGpBj2B,EAAaC,IAAaC,EAC5BD,GAAYg2B,EACHj2B,EAAaC,GAAYC,IAClCF,GAAci2B,GAGZ/1B,EAAe,CACjB,IAAIvrF,EAAMsrF,EACVA,EAAWD,EACXA,EAAarrF,EAKf,IAAK,IAAI6iD,EAAQ,EAAGA,EAAQyoC,EAAUzoC,GAAS5sD,KAAK+vB,GAAK,EACnD68B,EAAQwoC,IACVguE,EAAU,GAAKjwE,EAAQvmC,GAASqqC,EAAKxsD,EACrC24H,EAAU,GAAKhwE,EAAQxmC,GAASsqC,EAAKxsD,EACrC84H,EAAQtwH,EAAKkwH,EAAWlwH,GACxBuwH,EAAQx2I,EAAKm2I,EAAWn2I,M,gBCnN9B,IAAI6Z,EAAY,EAAQ,KAEpBqsB,EAAO,EAAQ,KAEfuwG,EAAQ,EAAQ,KAEhBC,EAAY,EAAQ,KAEpB1uE,EAAM,EAAQ,KAId4uC,EAFQ,EAAQ,KAEQA,gBAExBvxC,EAAQ,EAAQ,KAEhBsxE,EAAc,EAAQ,KAEtBnxE,EAAM3rD,EAAU2rD,IAChB44B,EAAgB,EAAVrrH,KAAK+vB,GAQf,IAAI6oE,EAAQ,EAAE,GAAI,GAAI,GAClBc,EAAU,EAAE,GAAI,GAQpB,SAASmqE,EAAanuE,EAAIC,EAAI5mC,EAAIN,EAAIO,EAAIC,EAAI2lC,EAAIC,EAAIpqD,EAAGC,GAEvD,GAAIA,EAAIirD,GAAMjrD,EAAI+jB,GAAM/jB,EAAIukB,GAAMvkB,EAAImqD,GAAMnqD,EAAIirD,GAAMjrD,EAAI+jB,GAAM/jB,EAAIukB,GAAMvkB,EAAImqD,EAC5E,OAAO,EAGT,IAXI9qF,EAWA+5J,EAASxxE,EAAMqG,YAAYhD,EAAIlnC,EAAIQ,EAAI4lC,EAAInqD,EAAGkuD,GAElD,GAAe,IAAXkrE,EACF,OAAO,EAOP,IALA,IAEIC,EACAC,EAHA/oK,EAAI,EACJgpK,GAAY,EAIP9uK,EAAI,EAAGA,EAAI2uK,EAAQ3uK,IAAK,CAC/B,IAAIkB,EAAIuiG,EAAMzjG,GAEVgoB,EAAa,IAAN9mB,GAAiB,IAANA,EAAU,GAAM,EAC7Bi8F,EAAMkE,QAAQd,EAAI3mC,EAAIC,EAAI4lC,EAAIv+F,GAE9Bo0C,IAKLw5H,EAAW,IACbA,EAAW3xE,EAAMmH,aAAa9D,EAAIlnC,EAAIQ,EAAI4lC,EAAI6E,GAE1CA,EAAQ,GAAKA,EAAQ,IAAMuqE,EAAW,IAnC5Cl6J,WAAM2vF,EAAQ,GAClBA,EAAQ,GAAKA,EAAQ,GACrBA,EAAQ,GAAK3vF,GAqCPg6J,EAAMzxE,EAAMkE,QAAQb,EAAIlnC,EAAIQ,EAAI4lC,EAAI6E,EAAQ,IAExCuqE,EAAW,IACbD,EAAM1xE,EAAMkE,QAAQb,EAAIlnC,EAAIQ,EAAI4lC,EAAI6E,EAAQ,MAI/B,IAAbuqE,EAEE5tK,EAAIqjG,EAAQ,GACdz+F,GAAK8oK,EAAMpuE,EAAKx4E,GAAQA,EACf9mB,EAAIqjG,EAAQ,GACrBz+F,GAAK+oK,EAAMD,EAAM5mJ,GAAQA,EAEzBliB,GAAK45F,EAAKmvE,EAAM7mJ,GAAQA,EAItB9mB,EAAIqjG,EAAQ,GACdz+F,GAAK8oK,EAAMpuE,EAAKx4E,GAAQA,EAExBliB,GAAK45F,EAAKkvE,EAAM5mJ,GAAQA,GAK9B,OAAOliB,EAIX,SAASipK,EAAiBxuE,EAAIC,EAAI5mC,EAAIN,EAAIO,EAAIC,EAAIxkB,EAAGC,GAEnD,GAAIA,EAAIirD,GAAMjrD,EAAI+jB,GAAM/jB,EAAIukB,GAAMvkB,EAAIirD,GAAMjrD,EAAI+jB,GAAM/jB,EAAIukB,EACxD,OAAO,EAGT,IAAI60G,EAASxxE,EAAMgI,gBAAgB3E,EAAIlnC,EAAIQ,EAAIvkB,EAAGkuD,GAElD,GAAe,IAAXkrE,EACF,OAAO,EAEP,IAAIztK,EAAIi8F,EAAMiI,kBAAkB5E,EAAIlnC,EAAIQ,GAExC,GAAI54D,GAAK,GAAKA,GAAK,EAAG,CAIpB,IAHA,IAAI4E,EAAI,EACJkpK,EAAK7xE,EAAMmG,YAAY9C,EAAIlnC,EAAIQ,EAAI54D,GAE9BlB,EAAI,EAAGA,EAAI2uK,EAAQ3uK,IAAK,CAE/B,IAAIgoB,EAAoB,IAAby7E,EAAMzjG,IAAyB,IAAbyjG,EAAMzjG,GAAW,GAAM,EAC3Cm9F,EAAMmG,YAAY/C,EAAI3mC,EAAIC,EAAI4pC,EAAMzjG,IAEpCs1C,IAKLmuD,EAAMzjG,GAAKkB,EACb4E,GAAKkpK,EAAKxuE,EAAKx4E,GAAQA,EAEvBliB,GAAKg0D,EAAKk1G,EAAKhnJ,GAAQA,GAI3B,OAAOliB,EAGHkiB,EAAoB,IAAby7E,EAAM,IAAyB,IAAbA,EAAM,GAAW,GAAM,EAGpD,OAFStG,EAAMmG,YAAY/C,EAAI3mC,EAAIC,EAAI4pC,EAAM,IAEpCnuD,EAEA,EAGFwkB,EAAK0mC,EAAKx4E,GAAQA,EAO/B,SAASinJ,EAAWlvE,EAAIC,EAAIl/F,EAAGm/F,EAAYC,EAAUC,EAAe7qD,EAAGC,GAGrE,IAFAA,GAAKyqD,GAEGl/F,GAAKy0C,GAAKz0C,EAChB,OAAO,EAGT,IAAI8T,EAAM/J,KAAK2rC,KAAK11C,EAAIA,EAAIy0C,EAAIA,GAChCkuD,EAAM,IAAM7uF,EACZ6uF,EAAM,GAAK7uF,EACX,IAAI5B,EAAOnI,KAAKinC,IAAImuD,EAAaC,GAEjC,GAAIltF,EAAO,KACT,OAAO,EAGT,GAAIA,EAAOkjH,EAAM,KAAM,CAErBj2B,EAAa,EACbC,EAAWg2B,EACX,IAAIzlH,EAAM0vF,EAAgB,GAAK,EAE/B,OAAI7qD,GAAKmuD,EAAM,GAAK1D,GAAMzqD,GAAKmuD,EAAM,GAAK1D,EACjCtvF,EAEA,EAIX,GAAI0vF,EAAe,CACbvrF,EAAMqrF,EACVA,EAAayuC,EAAgBxuC,GAC7BA,EAAWwuC,EAAgB95H,QAE3BqrF,EAAayuC,EAAgBzuC,GAC7BC,EAAWwuC,EAAgBxuC,GAGzBD,EAAaC,IACfA,GAAYg2B,GAKd,IAFA,IAAIpwH,EAAI,EAEC9F,EAAI,EAAGA,EAAI,EAAGA,IAAK,CAC1B,IAAIkvK,EAAKzrE,EAAMzjG,GAEf,GAAIkvK,EAAKnvE,EAAKzqD,EAAG,CACf,IAAImiB,EAAQ5sD,KAAKssD,MAAM5hB,EAAG25H,GACtBz+J,EAAM0vF,EAAgB,GAAK,EAE3B1oC,EAAQ,IACVA,EAAQy+D,EAAMz+D,IAGZA,GAASwoC,GAAcxoC,GAASyoC,GAAYzoC,EAAQy+D,GAAOj2B,GAAcxoC,EAAQy+D,GAAOh2B,KACtFzoC,EAAQ5sD,KAAK+vB,GAAK,GAAK68B,EAAkB,IAAV5sD,KAAK+vB,KACtCnqB,GAAOA,GAGT3K,GAAK2K,IAKX,OAAO3K,EAGT,SAASqpK,EAAY7pJ,EAAM4vB,EAAWk6H,EAAU95H,EAAGC,GAOjD,IANA,IAvMqBxnC,EAAGC,EAuMpBlI,EAAI,EACJ27F,EAAK,EACLC,EAAK,EACLnB,EAAK,EACLC,EAAK,EAEAxgG,EAAI,EAAGA,EAAIslB,EAAK5gB,QAAS,CAChC,IAAIq8F,EAAMz7E,EAAKtlB,KAwBf,OAtBI+gG,IAAQzD,EAAIC,GAAKv9F,EAAI,IAElBovK,IACHtpK,GAAK2oK,EAAYhtE,EAAIC,EAAInB,EAAIC,EAAIlrD,EAAGC,KAQ9B,IAANv1C,IAOFugG,EAFAkB,EAAKn8E,EAAKtlB,GAGVwgG,EAFAkB,EAAKp8E,EAAKtlB,EAAI,IAKR+gG,GACN,KAAKzD,EAAIC,EAKPkE,EAFAlB,EAAKj7E,EAAKtlB,KAGV0hG,EAFAlB,EAAKl7E,EAAKtlB,KAGV,MAEF,KAAKs9F,EAAIE,EACP,GAAI4xE,GACF,GAAIpxG,EAAKpoB,cAAc6rD,EAAIC,EAAIp8E,EAAKtlB,GAAIslB,EAAKtlB,EAAI,GAAIk1C,EAAWI,EAAGC,GACjE,OAAO,OAITzvC,GAAK2oK,EAAYhtE,EAAIC,EAAIp8E,EAAKtlB,GAAIslB,EAAKtlB,EAAI,GAAIs1C,EAAGC,IAAM,EAG1DksD,EAAKn8E,EAAKtlB,KACV0hG,EAAKp8E,EAAKtlB,KACV,MAEF,KAAKs9F,EAAIG,EACP,GAAI2xE,GACF,GAAIb,EAAM34H,cAAc6rD,EAAIC,EAAIp8E,EAAKtlB,KAAMslB,EAAKtlB,KAAMslB,EAAKtlB,KAAMslB,EAAKtlB,KAAMslB,EAAKtlB,GAAIslB,EAAKtlB,EAAI,GAAIk1C,EAAWI,EAAGC,GAC9G,OAAO,OAGTzvC,GAAK4oK,EAAajtE,EAAIC,EAAIp8E,EAAKtlB,KAAMslB,EAAKtlB,KAAMslB,EAAKtlB,KAAMslB,EAAKtlB,KAAMslB,EAAKtlB,GAAIslB,EAAKtlB,EAAI,GAAIs1C,EAAGC,IAAM,EAGvGksD,EAAKn8E,EAAKtlB,KACV0hG,EAAKp8E,EAAKtlB,KACV,MAEF,KAAKs9F,EAAII,EACP,GAAI0xE,GACF,GAAIZ,EAAU54H,cAAc6rD,EAAIC,EAAIp8E,EAAKtlB,KAAMslB,EAAKtlB,KAAMslB,EAAKtlB,GAAIslB,EAAKtlB,EAAI,GAAIk1C,EAAWI,EAAGC,GAC5F,OAAO,OAGTzvC,GAAKipK,EAAiBttE,EAAIC,EAAIp8E,EAAKtlB,KAAMslB,EAAKtlB,KAAMslB,EAAKtlB,GAAIslB,EAAKtlB,EAAI,GAAIs1C,EAAGC,IAAM,EAGrFksD,EAAKn8E,EAAKtlB,KACV0hG,EAAKp8E,EAAKtlB,KACV,MAEF,KAAKs9F,EAAIK,EAEP,IAAIoC,EAAKz6E,EAAKtlB,KACVggG,EAAK16E,EAAKtlB,KACV8hG,EAAKx8E,EAAKtlB,KACV+hG,EAAKz8E,EAAKtlB,KACVi3D,EAAQ3xC,EAAKtlB,KACbmiG,EAAS78E,EAAKtlB,KAElBA,GAAK,EACL,IAAImgG,EAAgB,EAAI76E,EAAKtlB,KACzB45D,EAAK/uD,KAAK8vB,IAAIs8B,GAAS6qC,EAAK/B,EAC5BzmC,EAAKzuD,KAAK0tD,IAAItB,GAAS8qC,EAAK/B,EAE5BhgG,EAAI,EACN8F,GAAK2oK,EAAYhtE,EAAIC,EAAI9nC,EAAIN,EAAIhkB,EAAGC,IAGpCgrD,EAAK3mC,EACL4mC,EAAKlnC,GAIP,IAAIs+F,GAAMtiH,EAAIyqD,GAAMgC,EAAKD,EAAK/B,EAE9B,GAAIqvE,GACF,GAAItvE,EAAIlqD,cAAcmqD,EAAIC,EAAI+B,EAAI9qC,EAAOA,EAAQkrC,EAAQhC,EAAejrD,EAAW0iH,EAAIriH,GACrF,OAAO,OAGTzvC,GAAKmpK,EAAWlvE,EAAIC,EAAI+B,EAAI9qC,EAAOA,EAAQkrC,EAAQhC,EAAey3D,EAAIriH,GAGxEksD,EAAK52F,KAAK8vB,IAAIs8B,EAAQkrC,GAAUL,EAAK/B,EACrC2B,EAAK72F,KAAK0tD,IAAItB,EAAQkrC,GAAUJ,EAAK/B,EACrC,MAEF,KAAK1C,EAAIO,EACP0C,EAAKkB,EAAKn8E,EAAKtlB,KACfwgG,EAAKkB,EAAKp8E,EAAKtlB,KAGX45D,EAAK2mC,EAFGj7E,EAAKtlB,KAGbs5D,EAAKknC,EAFIl7E,EAAKtlB,KAIlB,GAAIovK,GACF,GAAIpxG,EAAKpoB,cAAc2qD,EAAIC,EAAI5mC,EAAI4mC,EAAItrD,EAAWI,EAAGC,IAAMyoB,EAAKpoB,cAAcgkB,EAAI4mC,EAAI5mC,EAAIN,EAAIpkB,EAAWI,EAAGC,IAAMyoB,EAAKpoB,cAAcgkB,EAAIN,EAAIinC,EAAIjnC,EAAIpkB,EAAWI,EAAGC,IAAMyoB,EAAKpoB,cAAc2qD,EAAIjnC,EAAIinC,EAAIC,EAAItrD,EAAWI,EAAGC,GACxN,OAAO,OAITzvC,GAAK2oK,EAAY70G,EAAI4mC,EAAI5mC,EAAIN,EAAIhkB,EAAGC,GACpCzvC,GAAK2oK,EAAYluE,EAAIjnC,EAAIinC,EAAIC,EAAIlrD,EAAGC,GAGtC,MAEF,KAAK+nD,EAAIM,EACP,GAAIwxE,GACF,GAAIpxG,EAAKpoB,cAAc6rD,EAAIC,EAAInB,EAAIC,EAAItrD,EAAWI,EAAGC,GACnD,OAAO,OAITzvC,GAAK2oK,EAAYhtE,EAAIC,EAAInB,EAAIC,EAAIlrD,EAAGC,GAOtCksD,EAAKlB,EACLmB,EAAKlB,GASX,OAJK4uE,IArWgBrhK,EAqWW2zF,EArWR1zF,EAqWYwyF,EApW7B31F,KAAKinC,IAAI/jC,EAAIC,GAHR,QAwWVlI,GAAK2oK,EAAYhtE,EAAIC,EAAInB,EAAIC,EAAIlrD,EAAGC,IAAM,GAG/B,IAANzvC,EAWThG,EAAQ01C,QARR,SAAiBG,EAAUL,EAAGC,GAC5B,OAAO45H,EAAYx5H,EAAU,GAAG,EAAOL,EAAGC,IAQ5Cz1C,EAAQ81C,cALR,SAAuBD,EAAUT,EAAWI,EAAGC,GAC7C,OAAO45H,EAAYx5H,EAAUT,GAAW,EAAMI,EAAGC,K,cCjWnDz1C,EAAQ81C,cA3BR,SAAuB2qD,EAAIC,EAAI5mC,EAAIN,EAAIpkB,EAAWI,EAAGC,GACnD,GAAkB,IAAdL,EACF,OAAO,EAGT,IAAIwhC,EAAKxhC,EACL2hG,EAAK,EAGT,GAAIthG,EAAIirD,EAAK9pB,GAAMnhC,EAAI+jB,EAAKod,GAAMnhC,EAAIirD,EAAK9pB,GAAMnhC,EAAI+jB,EAAKod,GAAMphC,EAAIirD,EAAK7pB,GAAMphC,EAAIskB,EAAK8c,GAAMphC,EAAIirD,EAAK7pB,GAAMphC,EAAIskB,EAAK8c,EACpH,OAAO,EAGT,GAAI6pB,IAAO3mC,EAIT,OAAO/uD,KAAKinC,IAAIwD,EAAIirD,IAAO7pB,EAAK,EAGlC,IAAI9hE,GANFiiI,GAAMr2C,EAAKlnC,IAAOinC,EAAK3mC,IAMVtkB,EAAIC,GALXgrD,EAAKjnC,EAAKM,EAAK4mC,IAAOD,EAAK3mC,GASnC,OAFShlD,EAAMA,GAAOiiI,EAAKA,EAAK,IAEnBngE,EAAK,EAAIA,EAAK,I,gBCnC7B,IAAIymB,EAAQ,EAAQ,KAgCpBr9F,EAAQ81C,cAfR,SAAuB2qD,EAAIC,EAAI5mC,EAAIN,EAAIO,EAAIC,EAAI2lC,EAAIC,EAAIxqD,EAAWI,EAAGC,GACnE,GAAkB,IAAdL,EACF,OAAO,EAGT,IAAIwhC,EAAKxhC,EAET,QAAIK,EAAIirD,EAAK9pB,GAAMnhC,EAAI+jB,EAAKod,GAAMnhC,EAAIukB,EAAK4c,GAAMnhC,EAAImqD,EAAKhpB,GAAMnhC,EAAIirD,EAAK9pB,GAAMnhC,EAAI+jB,EAAKod,GAAMnhC,EAAIukB,EAAK4c,GAAMnhC,EAAImqD,EAAKhpB,GAAMphC,EAAIirD,EAAK7pB,GAAMphC,EAAIskB,EAAK8c,GAAMphC,EAAIukB,EAAK6c,GAAMphC,EAAImqD,EAAK/oB,GAAMphC,EAAIirD,EAAK7pB,GAAMphC,EAAIskB,EAAK8c,GAAMphC,EAAIukB,EAAK6c,GAAMphC,EAAImqD,EAAK/oB,IAItOymB,EAAM4H,kBAAkBxE,EAAIC,EAAI5mC,EAAIN,EAAIO,EAAIC,EAAI2lC,EAAIC,EAAIpqD,EAAGC,EAAG,OAC1DmhC,EAAK,I,gBC7BnB,IAEI6uB,EAFS,EAAQ,KAEcA,sBA8BnCzlG,EAAQ81C,cAfR,SAAuB2qD,EAAIC,EAAI5mC,EAAIN,EAAIO,EAAIC,EAAI5kB,EAAWI,EAAGC,GAC3D,GAAkB,IAAdL,EACF,OAAO,EAGT,IAAIwhC,EAAKxhC,EAET,QAAIK,EAAIirD,EAAK9pB,GAAMnhC,EAAI+jB,EAAKod,GAAMnhC,EAAIukB,EAAK4c,GAAMnhC,EAAIirD,EAAK9pB,GAAMnhC,EAAI+jB,EAAKod,GAAMnhC,EAAIukB,EAAK4c,GAAMphC,EAAIirD,EAAK7pB,GAAMphC,EAAIskB,EAAK8c,GAAMphC,EAAIukB,EAAK6c,GAAMphC,EAAIirD,EAAK7pB,GAAMphC,EAAIskB,EAAK8c,GAAMphC,EAAIukB,EAAK6c,IAI1K6uB,EAAsBhF,EAAIC,EAAI5mC,EAAIN,EAAIO,EAAIC,EAAIxkB,EAAGC,EAAG,OAChDmhC,EAAK,I,gBC7BnB,IAEIg4D,EAFQ,EAAQ,KAEQA,gBACxBxY,EAAgB,EAAVrrH,KAAK+vB,GAwDf96B,EAAQ81C,cAzCR,SAAuBmqD,EAAIC,EAAIl/F,EAAGm/F,EAAYC,EAAUC,EAAejrD,EAAWI,EAAGC,GACnF,GAAkB,IAAdL,EACF,OAAO,EAGT,IAAIwhC,EAAKxhC,EACTI,GAAKyqD,EACLxqD,GAAKyqD,EACL,IAAI1/F,EAAIuK,KAAK2rC,KAAKlB,EAAIA,EAAIC,EAAIA,GAE9B,GAAIj1C,EAAIo2E,EAAK51E,GAAKR,EAAIo2E,EAAK51E,EACzB,OAAO,EAGT,GAAI+J,KAAKinC,IAAImuD,EAAaC,GAAYg2B,EAAM,KAE1C,OAAO,EAGT,GAAI/1B,EAAe,CACjB,IAAIvrF,EAAMqrF,EACVA,EAAayuC,EAAgBxuC,GAC7BA,EAAWwuC,EAAgB95H,QAE3BqrF,EAAayuC,EAAgBzuC,GAC7BC,EAAWwuC,EAAgBxuC,GAGzBD,EAAaC,IACfA,GAAYg2B,GAGd,IAAIz+D,EAAQ5sD,KAAKssD,MAAM5hB,EAAGD,GAM1B,OAJImiB,EAAQ,IACVA,GAASy+D,GAGJz+D,GAASwoC,GAAcxoC,GAASyoC,GAAYzoC,EAAQy+D,GAAOj2B,GAAcxoC,EAAQy+D,GAAOh2B,I,cClCjGngG,EAAOD,QAtBP,SAAqBygG,EAAIC,EAAI5mC,EAAIN,EAAIhkB,EAAGC,GACtC,GAAIA,EAAIirD,GAAMjrD,EAAI+jB,GAAM/jB,EAAIirD,GAAMjrD,EAAI+jB,EACpC,OAAO,EAIT,GAAIA,IAAOknC,EACT,OAAO,EAGT,IAAI/vF,EAAM6oD,EAAKknC,EAAK,GAAK,EACrBt/F,GAAKq0C,EAAIirD,IAAOlnC,EAAKknC,GAEf,IAANt/F,GAAiB,IAANA,IACbuP,EAAM6oD,EAAKknC,EAAK,IAAO,IAGzB,IAAI0uE,EAAKhuK,GAAK04D,EAAK2mC,GAAMA,EAEzB,OAAO2uE,IAAO55H,EAAIgM,IAAW4tH,EAAK55H,EAAI7kC,EAAM,I,gBCnB9C,IAAIkhC,EAAY,EAAQ,KAIpByoB,EAFU,EAAQ,IAES3F,eAC3B6oC,EAAM3rD,EAAU2rD,IAChBzmC,EAAS,CAAC,GAAI,GAAI,IAClBqnC,EAAWrzF,KAAK2rC,KAChB64H,EAAYxkK,KAAKssD,MA2FrBp3D,EAAOD,QAzFP,SAAkBmyC,EAAM7xC,GACtB,IACI2gG,EACAuuE,EACAtvK,EACAiK,EACAwrD,EALAnwC,EAAO2sB,EAAK3sB,KAOZi4E,EAAID,EAAIC,EACRE,EAAIH,EAAIG,EACRD,EAAIF,EAAIE,EACRK,EAAIP,EAAIO,EACRF,EAAIL,EAAIK,EACRD,EAAIJ,EAAII,EAEZ,IAAK19F,EAAI,EAAGiK,EAAI,EAAGjK,EAAIslB,EAAK5gB,QAAS,CAKnC,OAJAq8F,EAAMz7E,EAAKtlB,KACXiK,EAAIjK,EACJsvK,EAAS,EAEDvuE,GACN,KAAKxD,EAIL,KAAKC,EACH8xE,EAAS,EACT,MAEF,KAAK7xE,EACH6xE,EAAS,EACT,MAEF,KAAK5xE,EACH4xE,EAAS,EACT,MAEF,KAAK3xE,EACH,IAAIroD,EAAIl1C,EAAE,GACNm1C,EAAIn1C,EAAE,GACNq2D,EAAKynC,EAAS99F,EAAE,GAAKA,EAAE,GAAKA,EAAE,GAAKA,EAAE,IACrCs2D,EAAKwnC,EAAS99F,EAAE,GAAKA,EAAE,GAAKA,EAAE,GAAKA,EAAE,IACrCq3D,EAAQ43G,GAAWjvK,EAAE,GAAKs2D,EAAIt2D,EAAE,GAAKq2D,GAEzCnxC,EAAKtlB,IAAMy2D,EACXnxC,EAAKtlB,MAAQs1C,EAEbhwB,EAAKtlB,IAAM02D,EACXpxC,EAAKtlB,MAAQu1C,EAGbjwB,EAAKtlB,MAAQy2D,EACbnxC,EAAKtlB,MAAQ02D,EAEbpxC,EAAKtlB,MAAQy3D,EAEbnyC,EAAKtlB,MAAQy3D,EAGbxtD,EADAjK,GAAK,EAEL,MAEF,KAAK69F,EAEH/7F,EAAE,GAAKwjB,EAAKtlB,KACZ8B,EAAE,GAAKwjB,EAAKtlB,KACZo6D,EAAiBt4D,EAAGA,EAAG1B,GACvBklB,EAAKrb,KAAOnI,EAAE,GACdwjB,EAAKrb,KAAOnI,EAAE,GAEdA,EAAE,IAAMwjB,EAAKtlB,KACb8B,EAAE,IAAMwjB,EAAKtlB,KACbo6D,EAAiBt4D,EAAGA,EAAG1B,GACvBklB,EAAKrb,KAAOnI,EAAE,GACdwjB,EAAKrb,KAAOnI,EAAE,GAGlB,IAAK2zD,EAAI,EAAGA,EAAI65G,EAAQ75G,IAAK,CAC3B,IAAI3zD,KAAI+0D,EAAOpB,IACb,GAAKnwC,EAAKtlB,KACZ8B,EAAE,GAAKwjB,EAAKtlB,KACZo6D,EAAiBt4D,EAAGA,EAAG1B,GAEvBklB,EAAKrb,KAAOnI,EAAE,GACdwjB,EAAKrb,KAAOnI,EAAE,O,gBC9FpB,IAAIsxH,EAAQ,EAAQ,KAEhBz2B,EAAS,EAAQ,KAEjBgJ,EAAO,EAAQ,KAEfymE,EAAS,EAAQ,KAEjBa,EAAO,EAAQ,KAEf/0B,EAAU,EAAQ,KAElB76E,EAAO,EAAQ,KAEfrrB,EAAO,EAAQ,IAEf86H,EAAU,EAAQ,KAElB9jD,EAAW,EAAQ,KAEnB2mB,EAAiB,EAAQ,KAEzB58B,EAAQ,EAAQ,KAEhB54C,EAAS,EAAQ,KAIjBg0E,EAFQ,EAAQ,KAESA,iBAEzBlzB,EAAQ,EAAQ,IAEhB1qE,EAAW0qE,EAAM1qE,SACjBlmC,EAAS4wG,EAAM5wG,OACf4kC,EAAWgsE,EAAMhsE,SACjB9B,EAAO8tE,EAAM9tE,KACb/jC,EAAO6xG,EAAM7xG,KAKbmmK,EAAgB,SAQpB,SAAS3tI,EAASqmD,GACZ13C,EAAS03C,KAEXA,GADa,IAAInmD,WACJC,gBAAgBkmD,EAAK,aASpC,IALqB,IAAjBA,EAAIhhF,WACNghF,EAAMA,EAAIzxE,YAI0B,QAA/ByxE,EAAIz3E,SAASpE,eAA4C,IAAjB67E,EAAIhhF,UACjDghF,EAAMA,EAAI/0E,YAGZ,OAAO+0E,EAGT,SAASunF,IACPzsK,KAAK0sK,MAAQ,GACb1sK,KAAK2sK,MAAQ,KACb3sK,KAAK4sK,WAAY,EACjB5sK,KAAK6sK,SAAU,EAGjBJ,EAAU5tK,UAAUmkB,MAAQ,SAAUrO,EAAK8lB,GACzCA,EAAMA,GAAO,GACb,IAAIyqD,EAAMrmD,EAASlqB,GAEnB,IAAKuwE,EACH,MAAM,IAAIliF,MAAM,eAGlB,IAAIlB,EAAO,IAAIuuH,EACfrwH,KAAK2sK,MAAQ7qK,EAEb,IAAIgrK,EAAU5nF,EAAIjgF,aAAa,YAAc,GAGzCosB,EAAQwB,WAAWqyD,EAAIjgF,aAAa,UAAYw1B,EAAIpJ,OACpDoC,EAASZ,WAAWqyD,EAAIjgF,aAAa,WAAaw1B,EAAIhH,QAE1D0W,MAAM9Y,KAAWA,EAAQ,MACzB8Y,MAAM1W,KAAYA,EAAS,MAE3Bs5I,EAAgB7nF,EAAKpjF,EAAM,MAAM,GAGjC,IAFA,IAQIkrK,EACAC,EATAjmG,EAAQke,EAAIzxE,WAETuzD,GACLhnE,KAAKktK,WAAWlmG,EAAOllE,GAEvBklE,EAAQA,EAAM72D,YAMhB,GAAI28J,EAAS,CACX,IAAIK,EAAa/iI,EAAK0iI,GAAS3jK,MAAMqjK,GAEjCW,EAAWxrK,QAAU,IACvBqrK,EAAc,CACZz6H,EAAG1f,WAAWs6I,EAAW,IAAM,GAC/B36H,EAAG3f,WAAWs6I,EAAW,IAAM,GAC/B97I,MAAOwB,WAAWs6I,EAAW,IAC7B15I,OAAQZ,WAAWs6I,EAAW,MAKpC,GAAIH,GAAwB,MAAT37I,GAA2B,MAAVoC,IAClCw5I,EAAmBG,EAAqBJ,EAAa37I,EAAOoC,IAEvDgH,EAAI4yI,eAAe,CAOtB,IAAIC,EAASxrK,GACbA,EAAO,IAAIuuH,GACN/vH,IAAIgtK,GACTA,EAAOzoJ,MAAQooJ,EAAiBpoJ,MAAMvhB,QACtCgqK,EAAO96I,SAAWy6I,EAAiBz6I,SAASlvB,QAkBhD,OAZKm3B,EAAI8yI,gBAA2B,MAATl8I,GAA2B,MAAVoC,GAC1C3xB,EAAK++H,YAAY,IAAIqpC,EAAK,CACxB94H,MAAO,CACLmB,EAAG,EACHC,EAAG,EACHnhB,MAAOA,EACPoC,OAAQA,MAMP,CACL3xB,KAAMA,EACNuvB,MAAOA,EACPoC,OAAQA,EACRu5I,YAAaA,EACbC,iBAAkBA,IAItBR,EAAU5tK,UAAUquK,WAAa,SAAUM,EAASC,GAClD,IAWI/9J,EAcEu7F,EAzBFx9F,EAAW+/J,EAAQ//J,SAASpE,cAahC,GATiB,SAAboE,EAEFzN,KAAK4sK,WAAY,EACK,SAAbn/J,IACTzN,KAAK6sK,SAAU,GAKb7sK,KAAK4sK,WAGP,GAFI3hE,EAASyiE,EAAcjgK,GAEf,CACV,IAAIo2D,EAAMonC,EAAO7tG,KAAK4C,KAAMwtK,GACxBh/J,EAAKg/J,EAAQvoK,aAAa,MAE1BuJ,IACFxO,KAAK0sK,MAAMl+J,GAAMq1D,SAIjBonC,EAAS0iE,EAAYlgK,MAGvBiC,EAAKu7F,EAAO7tG,KAAK4C,KAAMwtK,EAASC,GAChCA,EAAYntK,IAAIoP,IAMpB,IAFA,IAAIs3D,EAAQwmG,EAAQ/5J,WAEbuzD,GACkB,IAAnBA,EAAM9iE,UACRlE,KAAKktK,WAAWlmG,EAAOt3D,GAIF,IAAnBs3D,EAAM9iE,UAAkBlE,KAAK6sK,SAC/B7sK,KAAK4tK,WAAW5mG,EAAOt3D,GAGzBs3D,EAAQA,EAAM72D,YAIC,SAAb1C,EACFzN,KAAK4sK,WAAY,EACK,SAAbn/J,IACTzN,KAAK6sK,SAAU,IAInBJ,EAAU5tK,UAAU+uK,WAAa,SAAUJ,EAASC,GAClD,GAAyB,IAArBD,EAAQtpK,SAAgB,CAC1B,IAAImvD,EAAKm6G,EAAQvoK,aAAa,OAAS,EACnCquD,EAAKk6G,EAAQvoK,aAAa,OAAS,EACvCjF,KAAK6tK,QAAUh7I,WAAWwgC,GAC1BrzD,KAAK8tK,QAAUj7I,WAAWygC,GAG5B,IAAItuD,EAAO,IAAI49F,EAAK,CAClBt+E,MAAO,CACLtf,KAAMwoK,EAAQh6J,YACds+G,eAAe,GAEjBt/F,SAAU,CAACxyB,KAAK6tK,QAAU,EAAG7tK,KAAK8tK,QAAU,KAE9CC,EAAaN,EAAazoK,GAC1B+nK,EAAgBS,EAASxoK,EAAMhF,KAAK0sK,OACpC,IAAI5rD,EAAW97G,EAAKsf,MAAMw8F,SAEtBA,GAAYA,EAAW,IAEzB97G,EAAKsf,MAAMw8F,SAAW,EACtB97G,EAAK6f,MAAQ7f,EAAK6f,OAAS,CAAC,EAAG,GAC/B7f,EAAK6f,MAAM,IAAMi8F,EAAW,EAC5B97G,EAAK6f,MAAM,IAAMi8F,EAAW,GAG9B,IAAIj4E,EAAO7jC,EAAKqrC,kBAGhB,OAFArwC,KAAK6tK,QAAUhlI,EAAKxX,MACpBo8I,EAAYntK,IAAI0E,GACTA,GAGT,IAAI2oK,EAAc,CAChB,EAAK,SAAUH,EAASC,GACtB,IAAIh1E,EAAI,IAAI43B,EAGZ,OAFA09C,EAAaN,EAAah1E,GAC1Bs0E,EAAgBS,EAAS/0E,EAAGz4F,KAAK0sK,OAC1Bj0E,GAET,KAAQ,SAAU+0E,EAASC,GACzB,IAAI5kI,EAAO,IAAIqhI,EAWf,OAVA6D,EAAaN,EAAa5kI,GAC1BkkI,EAAgBS,EAAS3kI,EAAM7oC,KAAK0sK,OACpC7jI,EAAK0K,SAAS,CACZhB,EAAG1f,WAAW26I,EAAQvoK,aAAa,MAAQ,GAC3CutC,EAAG3f,WAAW26I,EAAQvoK,aAAa,MAAQ,GAC3CosB,MAAOwB,WAAW26I,EAAQvoK,aAAa,UAAY,GACnDwuB,OAAQZ,WAAW26I,EAAQvoK,aAAa,WAAa,KAIhD4jC,GAET,OAAU,SAAU2kI,EAASC,GAC3B,IAAI37B,EAAS,IAAIu3B,EAQjB,OAPA0E,EAAaN,EAAa37B,GAC1Bi7B,EAAgBS,EAAS17B,EAAQ9xI,KAAK0sK,OACtC56B,EAAOv+F,SAAS,CACdypD,GAAInqE,WAAW26I,EAAQvoK,aAAa,OAAS,GAC7Cg4F,GAAIpqE,WAAW26I,EAAQvoK,aAAa,OAAS,GAC7ClH,EAAG80B,WAAW26I,EAAQvoK,aAAa,MAAQ,KAEtC6sI,GAET,KAAQ,SAAU07B,EAASC,GACzB,IAAIxyG,EAAO,IAAIX,EASf,OARAyzG,EAAaN,EAAaxyG,GAC1B8xG,EAAgBS,EAASvyG,EAAMj7D,KAAK0sK,OACpCzxG,EAAK1nB,SAAS,CACZsjB,GAAIhkC,WAAW26I,EAAQvoK,aAAa,OAAS,GAC7CsxD,GAAI1jC,WAAW26I,EAAQvoK,aAAa,OAAS,GAC7C6xD,GAAIjkC,WAAW26I,EAAQvoK,aAAa,OAAS,GAC7C8xD,GAAIlkC,WAAW26I,EAAQvoK,aAAa,OAAS,KAExCg2D,GAET,QAAW,SAAUuyG,EAASC,GAC5B,IAAIrkE,EAAU,IAAI+rC,EASlB,OARA44B,EAAaN,EAAarkE,GAC1B2jE,EAAgBS,EAASpkE,EAASppG,KAAK0sK,OACvCtjE,EAAQ71D,SAAS,CACfypD,GAAInqE,WAAW26I,EAAQvoK,aAAa,OAAS,GAC7Cg4F,GAAIpqE,WAAW26I,EAAQvoK,aAAa,OAAS,GAC7C85F,GAAIlsE,WAAW26I,EAAQvoK,aAAa,OAAS,GAC7C+5F,GAAInsE,WAAW26I,EAAQvoK,aAAa,OAAS,KAExCmkG,GAET,QAAW,SAAUokE,EAASC,GAC5B,IAAI35G,EAAS05G,EAAQvoK,aAAa,UAE9B6uD,IACFA,EAASk6G,EAAYl6G,IAGvB,IAAI29E,EAAU,IAAIs4B,EAAQ,CACxB34H,MAAO,CACL0iB,OAAQA,GAAU,MAKtB,OAFAi6G,EAAaN,EAAah8B,GAC1Bs7B,EAAgBS,EAAS/7B,EAASzxI,KAAK0sK,OAChCj7B,GAET,SAAY,SAAU+7B,EAASC,GAC7B,IAAIv+H,EAAO,IAAID,EACf8+H,EAAaN,EAAav+H,GAC1B69H,EAAgBS,EAASt+H,EAAMlvC,KAAK0sK,OACpC,IAAI54G,EAAS05G,EAAQvoK,aAAa,UAWlC,OATI6uD,IACFA,EAASk6G,EAAYl6G,IAGR,IAAImyD,EAAS,CAC1B70E,MAAO,CACL0iB,OAAQA,GAAU,OAKxB,MAAS,SAAU05G,EAASC,GAC1B,IAAIQ,EAAM,IAAIr0E,EAUd,OATAm0E,EAAaN,EAAaQ,GAC1BlB,EAAgBS,EAASS,EAAKjuK,KAAK0sK,OACnCuB,EAAI58D,SAAS,CACX56F,MAAO+2J,EAAQvoK,aAAa,cAC5BstC,EAAGi7H,EAAQvoK,aAAa,KACxButC,EAAGg7H,EAAQvoK,aAAa,KACxBosB,MAAOm8I,EAAQvoK,aAAa,SAC5BwuB,OAAQ+5I,EAAQvoK,aAAa,YAExBgpK,GAET,KAAQ,SAAUT,EAASC,GACzB,IAAIl7H,EAAIi7H,EAAQvoK,aAAa,MAAQ,EACjCutC,EAAIg7H,EAAQvoK,aAAa,MAAQ,EACjCouD,EAAKm6G,EAAQvoK,aAAa,OAAS,EACnCquD,EAAKk6G,EAAQvoK,aAAa,OAAS,EACvCjF,KAAK6tK,OAASh7I,WAAW0f,GAAK1f,WAAWwgC,GACzCrzD,KAAK8tK,OAASj7I,WAAW2f,GAAK3f,WAAWygC,GACzC,IAAImlC,EAAI,IAAI43B,EAGZ,OAFA09C,EAAaN,EAAah1E,GAC1Bs0E,EAAgBS,EAAS/0E,EAAGz4F,KAAK0sK,OAC1Bj0E,GAET,MAAS,SAAU+0E,EAASC,GAC1B,IAAIl7H,EAAIi7H,EAAQvoK,aAAa,KACzButC,EAAIg7H,EAAQvoK,aAAa,KAEpB,MAALstC,IAEFvyC,KAAK6tK,OAASh7I,WAAW0f,IAGlB,MAALC,IAEFxyC,KAAK8tK,OAASj7I,WAAW2f,IAG3B,IAAI6gB,EAAKm6G,EAAQvoK,aAAa,OAAS,EACnCquD,EAAKk6G,EAAQvoK,aAAa,OAAS,EACnCwzF,EAAI,IAAI43B,EAKZ,OAJA09C,EAAaN,EAAah1E,GAC1Bs0E,EAAgBS,EAAS/0E,EAAGz4F,KAAK0sK,OACjC1sK,KAAK6tK,QAAUx6G,EACfrzD,KAAK8tK,QAAUx6G,EACRmlC,GAET,KAAQ,SAAU+0E,EAASC,GAIzB,IAAIlwK,EAAIiwK,EAAQvoK,aAAa,MAAQ,GAEjCiqC,EAAOk8F,EAAiB7tI,GAG5B,OAFAwwK,EAAaN,EAAav+H,GAC1B69H,EAAgBS,EAASt+H,EAAMlvC,KAAK0sK,OAC7Bx9H,IAGPw+H,EAAgB,CAClB,eAAkB,SAAUF,GAC1B,IAAI32G,EAAKnjC,SAAS85I,EAAQvoK,aAAa,OAAS,EAAG,IAC/CsxD,EAAK7iC,SAAS85I,EAAQvoK,aAAa,OAAS,EAAG,IAC/C6xD,EAAKpjC,SAAS85I,EAAQvoK,aAAa,OAAS,GAAI,IAChD8xD,EAAKrjC,SAAS85I,EAAQvoK,aAAa,OAAS,EAAG,IAC/CipK,EAAW,IAAIthC,EAAe/1E,EAAIN,EAAIO,EAAIC,GAI9C,OAKJ,SAAkCy2G,EAASU,GACzC,IAAIzqJ,EAAO+pJ,EAAQ/5J,WAEnB,KAAOgQ,GAAM,CACX,GAAsB,IAAlBA,EAAKvf,SAAgB,CACvB,IAAIikC,EAAS1kB,EAAKxe,aAAa,UAI7BkjC,EAFEA,EAAO1kC,QAAQ,KAAO,EAEfiwB,SAASyU,EAAQ,IAAM,IACvBA,EAEAtV,WAAWsV,GAEX,EAGX,IAAIgmI,EAAY1qJ,EAAKxe,aAAa,eAAiB,UACnDipK,EAAS97C,aAAajqF,EAAQgmI,GAGhC1qJ,EAAOA,EAAKtT,aA5BZi+J,CAAyBZ,EAASU,GAE3BA,GAET,eAAkB,SAAUV,MA4B9B,SAASO,EAAa5tK,EAAQ6mE,GACxB7mE,GAAUA,EAAOkuK,mBACdrnG,EAAMqnG,mBACTrnG,EAAMqnG,iBAAmB,IAG3BniI,EAAS86B,EAAMqnG,iBAAkBluK,EAAOkuK,mBAI5C,SAASL,EAAYM,GAInB,IAHA,IAAIljK,EAAOg/B,EAAKkkI,GAAcnlK,MAAMqjK,GAChC14G,EAAS,GAEJ72D,EAAI,EAAGA,EAAImO,EAAKzJ,OAAQ1E,GAAK,EAAG,CACvC,IAAIs1C,EAAI1f,WAAWznB,EAAKnO,IACpBu1C,EAAI3f,WAAWznB,EAAKnO,EAAI,IAC5B62D,EAAOtxD,KAAK,CAAC+vC,EAAGC,IAGlB,OAAOshB,EAGT,IAAIy6G,EAAgB,CAClB,KAAQ,OACR,OAAU,SACV,eAAgB,YAChB,QAAW,UACX,eAAgB,cAChB,iBAAkB,gBAClB,mBAAoB,WACpB,oBAAqB,iBACrB,iBAAkB,UAClB,kBAAmB,WACnB,oBAAqB,aACrB,cAAe,aACf,YAAa,WACb,aAAc,YACd,cAAe,aACf,aAAc,YACd,qBAAsB,gBAGxB,SAASxB,EAAgBS,EAAS99J,EAAI6nH,EAAMi3C,GAC1C,IAAIC,EAAU/+J,EAAG2+J,kBAAoB,GACjCK,EAAuB,SAAZh/J,EAAGnO,KAElB,GAAyB,IAArBisK,EAAQtpK,WA+Ed,SAAiCspK,EAAS7oK,GACxC,IAAI6uC,EAAYg6H,EAAQvoK,aAAa,aAErC,GAAIuuC,EAAW,CACbA,EAAYA,EAAUxrC,QAAQ,KAAM,KACpC,IAAI3K,EAAI,KACJsxK,EAAe,GACnBn7H,EAAUxrC,QAAQu2H,GAAgB,SAAUpwF,EAAK5sC,EAAMrD,GACrDywK,EAAansK,KAAKjB,EAAMrD,MAG1B,IAAK,IAAIjB,EAAI0xK,EAAahtK,OAAS,EAAG1E,EAAI,EAAGA,GAAK,EAAG,CACnD,IAAIiB,EAAQywK,EAAa1xK,GACrBsE,EAAOotK,EAAa1xK,EAAI,GAG5B,OAFAI,EAAIA,GAAK+5D,EAAO74D,SAERgD,GACN,IAAK,YACHrD,EAAQksC,EAAKlsC,GAAOiL,MAAMqjK,GAC1Bp1G,EAAOhE,UAAU/1D,EAAGA,EAAG,CAACw1B,WAAW30B,EAAM,IAAK20B,WAAW30B,EAAM,IAAM,KACrE,MAEF,IAAK,QACHA,EAAQksC,EAAKlsC,GAAOiL,MAAMqjK,GAC1Bp1G,EAAOvyC,MAAMxnB,EAAGA,EAAG,CAACw1B,WAAW30B,EAAM,IAAK20B,WAAW30B,EAAM,IAAMA,EAAM,MACvE,MAEF,IAAK,SACHA,EAAQksC,EAAKlsC,GAAOiL,MAAMqjK,GAC1Bp1G,EAAO7D,OAAOl2D,EAAGA,EAAGw1B,WAAW30B,EAAM,KACrC,MAEF,IAAK,OACHA,EAAQksC,EAAKlsC,GAAOiL,MAAMqjK,GAC1BjsJ,QAAQC,KAAK,uCACb,MAEF,IAAK,SACCtiB,EAAQksC,EAAKlsC,GAAOiL,MAAMqjK,GAC9BnvK,EAAE,GAAKw1B,WAAW30B,EAAM,IACxBb,EAAE,GAAKw1B,WAAW30B,EAAM,IACxBb,EAAE,GAAKw1B,WAAW30B,EAAM,IACxBb,EAAE,GAAKw1B,WAAW30B,EAAM,IACxBb,EAAE,GAAKw1B,WAAW30B,EAAM,IACxBb,EAAE,GAAKw1B,WAAW30B,EAAM,KAK9ByG,EAAKs1J,kBAAkB58J,IA/HvBuxK,CAAwBpB,EAAS99J,GACjCpI,EAAOmnK,EAqIX,SAA6BjB,GAC3B,IAAIlpJ,EAAQkpJ,EAAQvoK,aAAa,SAC7B9D,EAAS,GAEb,IAAKmjB,EACH,OAAOnjB,EAGT,IAEI0tK,EAFAC,EAAY,GAChBC,EAAW14H,UAAY,EAGvB,KAAoD,OAA5Cw4H,EAAiBE,EAAWzgK,KAAKgW,KACvCwqJ,EAAUD,EAAe,IAAMA,EAAe,GAGhD,IAAK,IAAIG,KAAeT,EAClBA,EAAczvK,eAAekwK,IAA0C,MAA1BF,EAAUE,KACzD7tK,EAAOotK,EAAcS,IAAgBF,EAAUE,IAInD,OAAO7tK,EA3JW8tK,CAAoBzB,KAE/BgB,GACH,IAAK,IAAIQ,KAAeT,EACtB,GAAIA,EAAczvK,eAAekwK,GAAc,CAC7C,IAAIE,EAAY1B,EAAQvoK,aAAa+pK,GAEpB,MAAbE,IACFT,EAAQF,EAAcS,IAAgBE,GAOhD,IAAIC,EAAaT,EAAW,WAAa,OACrCU,EAAeV,EAAW,aAAe,SAC7Ch/J,EAAG4U,MAAQ5U,EAAG4U,OAAS,IAAI0rF,EAC3B,IAAIq/D,EAAU3/J,EAAG4U,MACD,MAAhBmqJ,EAAQ7+H,MAAgBy/H,EAAQ/sJ,IAAI6sJ,EAAYG,EAASb,EAAQ7+H,KAAM2nF,IACrD,MAAlBk3C,EAAQ5+H,QAAkBw/H,EAAQ/sJ,IAAI8sJ,EAAcE,EAASb,EAAQ5+H,OAAQ0nF,IAC7ElxH,EAAK,CAAC,YAAa,UAAW,cAAe,gBAAiB,aAAc,aAAa,SAAUq8H,GACjG,IAAI6sC,EAA0B,cAAb7sC,GAA4BgsC,EAAW,kBAAoBhsC,EACvD,MAArB+rC,EAAQ/rC,IAAqB2sC,EAAQ/sJ,IAAIitJ,EAAY18I,WAAW47I,EAAQ/rC,QAGrE+rC,EAAQ11D,cAAyC,SAAzB01D,EAAQ11D,eACnC01D,EAAQ11D,aAAe,cAGI,eAAzB01D,EAAQ11D,eACV01D,EAAQ11D,aAAe,UAGC,UAAtB01D,EAAQlrE,YACVkrE,EAAQlrE,UAAY,QAGI,QAAtBkrE,EAAQlrE,YACVkrE,EAAQlrE,UAAY,SAGtBl9F,EAAK,CAAC,iBAAkB,UAAW,WAAY,aAAc,aAAc,YAAa,YAAa,iBAAiB,SAAUq8H,GACzG,MAArB+rC,EAAQ/rC,IAAqB2sC,EAAQ/sJ,IAAIogH,EAAU+rC,EAAQ/rC,OAGzD+rC,EAAQ99H,WACVjhC,EAAG4U,MAAMqsB,SAAWvG,EAAKqkI,EAAQ99H,UAAUxnC,MAAMqjK,IAG/C6C,EAAQD,IAA2C,SAA1BC,EAAQD,KAEnC1/J,EAAG0/J,IAAgB,GAGrB1/J,EAAG2+J,iBAAmBI,EAGxB,IAAIe,EAAW,mBAEf,SAASF,EAASnhI,EAAKopF,GAIrB,IAAIk4C,EAAWl4C,GAAQppF,GAAOA,EAAIlgC,MAAMuhK,GAExC,OAAIC,EAEQl4C,EADAntF,EAAKqlI,EAAS,KAKnBthI,EAGT,IAAIowF,EAAiB,mEAwDrB,IAAIwwC,EAAa,6BAkCjB,SAAS3B,EAAqBJ,EAAa37I,EAAOoC,GAChD,IAAI8rE,EAASluE,EAAQ27I,EAAY37I,MAC7BmuE,EAAS/rE,EAASu5I,EAAYv5I,OAC9B5O,EAAQ/c,KAAKkzC,IAAIukD,EAAQC,GAI7B,MAAO,CACL36E,MAHiB,CAACA,EAAOA,GAIzB2N,SAHoB,GAAGw6I,EAAYz6H,EAAIy6H,EAAY37I,MAAQ,GAAKxM,EAAQwM,EAAQ,IAAK27I,EAAYx6H,EAAIw6H,EAAYv5I,OAAS,GAAK5O,EAAQ4O,EAAS,IA6BpJ12B,EAAQ8hC,SAAWA,EACnB9hC,EAAQqwK,qBAAuBA,EAC/BrwK,EAAQwrK,SAPR,SAAkB5zJ,EAAK8lB,GAErB,OADa,IAAIgyI,GACHzpJ,MAAMrO,EAAK8lB,K,gBC9qB3B,IAEIi1I,EAFU,EAAQ,IAEG7+G,SAazB,SAASy5D,EAAYlqB,EAAI9rC,EAAIC,EAAI8rC,EAAIliG,EAAG4iG,EAAIO,GAC1C,IAAI6gC,EAAiB,IAAX5tE,EAAK6rC,GACXtvC,EAAiB,IAAXuvC,EAAK/rC,GACf,OAAQ,GAAKA,EAAKC,GAAM4tE,EAAKrxE,GAAMwwC,IAAO,GAAKhtC,EAAKC,GAAM,EAAI4tE,EAAKrxE,GAAMiwC,EAAKohC,EAAKhkI,EAAIm2D,EAiDzFt3D,EAAOD,QAvCP,SAAkB+2D,EAAQ67G,GAKxB,IAJA,IAAI1oK,EAAM6sD,EAAOnyD,OACbuE,EAAM,GACN2qD,EAAW,EAEN5zD,EAAI,EAAGA,EAAIgK,EAAKhK,IACvB4zD,GAAY6+G,EAAW57G,EAAO72D,EAAI,GAAI62D,EAAO72D,IAG/C,IAAI2yK,EAAO/+G,EAAW,EAGtB,IAFA++G,EAAOA,EAAO3oK,EAAMA,EAAM2oK,EAEjB3yK,EAAI,EAAGA,EAAI2yK,EAAM3yK,IAAK,CAC7B,IAGImjG,EAEA7rC,EACA8rC,EANAhpE,EAAMp6B,GAAK2yK,EAAO,IAAMD,EAAS1oK,EAAMA,EAAM,GAC7CoO,EAAMvN,KAAKq4C,MAAM9oB,GACjBt0B,EAAIs0B,EAAMhiB,EAEVi/C,EAAKR,EAAOz+C,EAAMpO,GAIjB0oK,GAKHvvE,EAAKtsC,GAAQz+C,EAAM,EAAIpO,GAAOA,GAC9BstD,EAAKT,GAAQz+C,EAAM,GAAKpO,GACxBo5F,EAAKvsC,GAAQz+C,EAAM,GAAKpO,KANxBm5F,EAAKtsC,EAAe,IAARz+C,EAAYA,EAAMA,EAAM,GACpCk/C,EAAKT,EAAOz+C,EAAMpO,EAAM,EAAIA,EAAM,EAAIoO,EAAM,GAC5CgrF,EAAKvsC,EAAOz+C,EAAMpO,EAAM,EAAIA,EAAM,EAAIoO,EAAM,IAO9C,IAAI+xF,EAAKrkG,EAAIA,EACT8sK,EAAK9sK,EAAIqkG,EACblhG,EAAI1D,KAAK,CAAC8nH,EAAYlqB,EAAG,GAAI9rC,EAAG,GAAIC,EAAG,GAAI8rC,EAAG,GAAIt9F,EAAGqkG,EAAIyoE,GAAKvlD,EAAYlqB,EAAG,GAAI9rC,EAAG,GAAIC,EAAG,GAAI8rC,EAAG,GAAIt9F,EAAGqkG,EAAIyoE,KAG/G,OAAO3pK,I,gBChET,IAAIu5F,EAAU,EAAQ,IAElBqwE,EAAQrwE,EAAQzkD,IAChB+0H,EAAQtwE,EAAQ1qE,IAChBi7I,EAAUvwE,EAAQ56E,MAClB6qJ,EAAajwE,EAAQ5uC,SACrBo/G,EAAQxwE,EAAQn/F,IAChB4vK,EAAUzwE,EAAQh4F,MAClB0oK,EAAQ1wE,EAAQpuC,IAgGpBr0D,EAAOD,QA3EP,SAAkB+2D,EAAQw4E,EAAQqjC,EAAQS,GACxC,IAIIC,EACAC,EACAt1H,EACAjmB,EAPAw7I,EAAM,GACNn0J,EAAI,GACJ00C,EAAK,GACLC,EAAK,GAMT,GAAIq/G,EAAY,CACdp1H,EAAM,CAACuD,IAAUA,KACjBxpB,EAAM,EAAEwpB,KAAWA,KAEnB,IAAK,IAAIthD,EAAI,EAAGgK,EAAM6sD,EAAOnyD,OAAQ1E,EAAIgK,EAAKhK,IAC5C6yK,EAAM90H,EAAKA,EAAK8Y,EAAO72D,IACvB8yK,EAAMh7I,EAAKA,EAAK++B,EAAO72D,IAIzB6yK,EAAM90H,EAAKA,EAAKo1H,EAAW,IAC3BL,EAAMh7I,EAAKA,EAAKq7I,EAAW,IAG7B,IAASnzK,EAAI,EAAGgK,EAAM6sD,EAAOnyD,OAAQ1E,EAAIgK,EAAKhK,IAAK,CACjD,IAAIk5D,EAAQrC,EAAO72D,GAEnB,GAAI0yK,EACFU,EAAYv8G,EAAO72D,EAAIA,EAAI,EAAIgK,EAAM,GACrCqpK,EAAYx8G,GAAQ72D,EAAI,GAAKgK,OACxB,CACL,GAAU,IAANhK,GAAWA,IAAMgK,EAAM,EAAG,CAC5BspK,EAAI/tK,KAAK0tK,EAAQp8G,EAAO72D,KACxB,SAEAozK,EAAYv8G,EAAO72D,EAAI,GACvBqzK,EAAYx8G,EAAO72D,EAAI,GAI3BkzK,EAAM/zJ,EAAGk0J,EAAWD,GAEpBL,EAAQ5zJ,EAAGA,EAAGkwH,GACd,IAAIkkC,EAAKd,EAAWv5G,EAAOk6G,GACvBpuE,EAAKytE,EAAWv5G,EAAOm6G,GACvBhnH,EAAMknH,EAAKvuE,EAEH,IAAR34C,IACFknH,GAAMlnH,EACN24C,GAAM34C,GAGR0mH,EAAQl/G,EAAI10C,GAAIo0J,GAChBR,EAAQj/G,EAAI30C,EAAG6lF,GACf,IAAIwuE,EAAMR,EAAM,GAAI95G,EAAOrF,GACvB47E,EAAMujC,EAAM,GAAI95G,EAAOpF,GAEvBq/G,IACFL,EAAMU,EAAKA,EAAKz1H,GAChB80H,EAAMW,EAAKA,EAAK17I,GAChBg7I,EAAMrjC,EAAKA,EAAK1xF,GAChB80H,EAAMpjC,EAAKA,EAAK33G,IAGlBw7I,EAAI/tK,KAAKiuK,GACTF,EAAI/tK,KAAKkqI,GAOX,OAJIijC,GACFY,EAAI/tK,KAAK+tK,EAAIhhK,SAGRghK,I,gBCrGT,IAAIthI,EAAO,EAAQ,IAGfvoB,EAAWuoB,EAAK3nC,OAAO,CACzB/F,KAAM,WACN6vC,MAAO,CACL+K,MAAO,MAETu0H,iBAAkB,WAIhB,IAHA,IAAI39H,EAAY/yC,KAAKmvC,YACjBgN,EAAQn8C,KAAKoxC,MAAM+K,MAEdl/C,EAAI,EAAGA,EAAIk/C,EAAMx6C,OAAQ1E,IAEhC81C,EAAYA,GAAaoJ,EAAMl/C,GAAGkyC,YAGpCnvC,KAAKmvC,YAAc4D,EACnB/yC,KAAKowC,QAAUpwC,KAAKowC,SAAW2C,GAEjCi+D,YAAa,WACXhxG,KAAK0wK,mBAKL,IAHA,IAAIv0H,EAAQn8C,KAAKoxC,MAAM+K,OAAS,GAC5Bt3B,EAAQ7kB,KAAK+wC,iBAER9zC,EAAI,EAAGA,EAAIk/C,EAAMx6C,OAAQ1E,IAC3Bk/C,EAAMl/C,GAAGiyC,MACZiN,EAAMl/C,GAAG60C,kBAGXqK,EAAMl/C,GAAGiyC,KAAK8B,SAASnsB,EAAM,GAAIA,EAAM,GAAIs3B,EAAMl/C,GAAGoyC,yBAGxD8B,UAAW,SAAU3B,EAAK4B,GAGxB,IAFA,IAAI+K,EAAQ/K,EAAM+K,OAAS,GAElBl/C,EAAI,EAAGA,EAAIk/C,EAAMx6C,OAAQ1E,IAChCk/C,EAAMl/C,GAAGk0C,UAAU3B,EAAK2M,EAAMl/C,GAAGm0C,OAAO,IAG5C6/D,WAAY,WAGV,IAFA,IAAI90D,EAAQn8C,KAAKoxC,MAAM+K,OAAS,GAEvBl/C,EAAI,EAAGA,EAAIk/C,EAAMx6C,OAAQ1E,IAChCk/C,EAAMl/C,GAAGkyC,aAAc,GAG3BkB,gBAAiB,WAGf,OAFArwC,KAAK0wK,mBAEEzhI,EAAKpwC,UAAUwxC,gBAAgBjzC,KAAK4C,SAI/ChD,EAAOD,QAAU2pB,G,gBCvDjB,IAEIsmB,EAFQ,EAAQ,IAECA,SAEjB2jI,EAAa,EAAQ,KAErBn5G,EAAe,EAAQ,IAU3B,SAASo5G,EAAsBx3I,GAC7Bu3I,EAAWvzK,KAAK4C,KAAMo5B,GACtBp5B,KAAK6wK,cAAgB,GACrB7wK,KAAK8wK,uBAAyB,GAC9B9wK,KAAK+wK,QAAU,EACf/wK,KAAKghK,UAAW,EAGlB4P,EAAsB/xK,UAAUiyG,aAAc,EAE9C8/D,EAAsB/xK,UAAUmyK,iBAAmB,WACjDhxK,KAAK6wK,cAAgB,GACrB7wK,KAAK8wK,uBAAyB,GAC9B9wK,KAAK+wK,QAAU,EACf/wK,KAAK8yC,QACL9yC,KAAKghK,UAAW,GAGlB4P,EAAsB/xK,UAAUoyK,eAAiB,SAAU94C,EAAa+4C,GAClEA,EACFlxK,KAAK8wK,uBAAuBtuK,KAAK21H,GAEjCn4H,KAAK6wK,cAAcruK,KAAK21H,GAG1Bn4H,KAAK8yC,SAGP89H,EAAsB/xK,UAAUsyK,gBAAkB,SAAUC,EAAcF,GACxEA,EAAgBA,IAAiB,EAEjC,IAAK,IAAIj0K,EAAI,EAAGA,EAAIm0K,EAAazvK,OAAQ1E,IACvC+C,KAAKixK,eAAeG,EAAan0K,GAAIi0K,IAIzCN,EAAsB/xK,UAAUwyK,uBAAyB,SAAU/kI,GACjE,IAAK,IAAIrvC,EAAI+C,KAAK+wK,QAAS9zK,EAAI+C,KAAK6wK,cAAclvK,OAAQ1E,IACxDqvC,GAAMA,EAAGtsC,KAAK6wK,cAAc5zK,IAG9B,IAASA,EAAI,EAAGA,EAAI+C,KAAK8wK,uBAAuBnvK,OAAQ1E,IACtDqvC,GAAMA,EAAGtsC,KAAK8wK,uBAAuB7zK,KAIzC2zK,EAAsB/xK,UAAU4sD,OAAS,WACvCzrD,KAAK4gI,kBAEL,IAAK,IAAI3jI,EAAI+C,KAAK+wK,QAAS9zK,EAAI+C,KAAK6wK,cAAclvK,OAAQ1E,IAAK,EACzDk7H,EAAcn4H,KAAK6wK,cAAc5zK,IAEzBkD,OAASH,KACrBm4H,EAAY1sE,SACZ0sE,EAAYh4H,OAAS,KAGvB,IAASlD,EAAI,EAAGA,EAAI+C,KAAK8wK,uBAAuBnvK,OAAQ1E,IAAK,CAC3D,IAAIk7H,KAAcn4H,KAAK8wK,uBAAuB7zK,IAElCkD,OAASH,KACrBm4H,EAAY1sE,SACZ0sE,EAAYh4H,OAAS,OAIzBywK,EAAsB/xK,UAAU0wC,MAAQ,SAAUC,EAAKC,GAErD,IAAK,IAAIxyC,EAAI+C,KAAK+wK,QAAS9zK,EAAI+C,KAAK6wK,cAAclvK,OAAQ1E,IAAK,EACzDk7H,EAAcn4H,KAAK6wK,cAAc5zK,IACzB+zG,aAAemnB,EAAYnnB,YAAYxhE,GACnD2oF,EAAY5oF,MAAMC,EAAKvyC,IAAM+C,KAAK+wK,QAAU,KAAO/wK,KAAK6wK,cAAc5zK,EAAI,IAC1Ek7H,EAAYlnB,YAAcknB,EAAYlnB,WAAWzhE,GAGnDxvC,KAAK+wK,QAAU9zK,EAEf,IAASA,EAAI,EAAGA,EAAI+C,KAAK8wK,uBAAuBnvK,OAAQ1E,IAAK,CAC3D,IAAIk7H,KAAcn4H,KAAK8wK,uBAAuB7zK,IAClC+zG,aAAemnB,EAAYnnB,YAAYxhE,GACnD2oF,EAAY5oF,MAAMC,EAAW,IAANvyC,EAAU,KAAO+C,KAAK8wK,uBAAuB7zK,EAAI,IACxEk7H,EAAYlnB,YAAcknB,EAAYlnB,WAAWzhE,GAGnDxvC,KAAK8wK,uBAAyB,GAC9B9wK,KAAKghK,UAAW,GAGlB,IAAI3jK,EAAI,GAERuzK,EAAsB/xK,UAAUwxC,gBAAkB,WAChD,IAAKrwC,KAAK+xC,MAAO,CAGf,IAFA,IAAIlJ,EAAO,IAAI2uB,EAAajZ,IAAUA,KAAWA,KAAWA,KAEnDthD,EAAI,EAAGA,EAAI+C,KAAK6wK,cAAclvK,OAAQ1E,IAAK,CAClD,IAAIk7H,EAAcn4H,KAAK6wK,cAAc5zK,GACjCq0H,EAAY6G,EAAY9nF,kBAAkB5oC,QAE1C0wH,EAAYshC,sBACdnoC,EAAU5/D,eAAeymE,EAAY5G,kBAAkBl0H,IAGzDwrC,EAAKwb,MAAMitE,GAGbtxH,KAAK+xC,MAAQlJ,EAGf,OAAO7oC,KAAK+xC,OAGd6+H,EAAsB/xK,UAAU4zC,QAAU,SAAUF,EAAGC,GACrD,IAAIE,EAAW1yC,KAAK2yC,sBAAsBJ,EAAGC,GAG7C,GAFWxyC,KAAKqwC,kBAEPoC,QAAQC,EAAS,GAAIA,EAAS,IACrC,IAAK,IAAIz1C,EAAI,EAAGA,EAAI+C,KAAK6wK,cAAclvK,OAAQ1E,IAAK,CAGlD,GAFkB+C,KAAK6wK,cAAc5zK,GAErBw1C,QAAQF,EAAGC,GACzB,OAAO,EAKb,OAAO,GAGTxF,EAAS4jI,EAAuBD,GAChC,IAAIjqJ,EAAWkqJ,EACf5zK,EAAOD,QAAU2pB,G,gBClJjB,IAMIA,EANO,EAAQ,IAMCpf,OAAO,CACzB/F,KAAM,MACN6vC,MAAO,CACL4rD,GAAI,EACJC,GAAI,EACJl/F,EAAG,EACHm/F,WAAY,EACZC,SAAoB,EAAVr1F,KAAK+vB,GACfs8F,WAAW,GAEb7vG,MAAO,CACLurB,OAAQ,OACRD,KAAM,MAERuB,UAAW,SAAU3B,EAAK4B,GACxB,IAAImB,EAAInB,EAAM4rD,GACVxqD,EAAIpB,EAAM6rD,GACVl/F,EAAI+J,KAAKitB,IAAIqc,EAAMrzC,EAAG,GACtBm/F,EAAa9rD,EAAM8rD,WACnBC,EAAW/rD,EAAM+rD,SACjBg3B,EAAY/iF,EAAM+iF,UAClBm9C,EAAQxpK,KAAK8vB,IAAIslE,GACjBq0E,EAAQzpK,KAAK0tD,IAAI0nC,GACrB1tD,EAAI2sD,OAAOm1E,EAAQvzK,EAAIw0C,EAAGg/H,EAAQxzK,EAAIy0C,GACtChD,EAAIutD,IAAIxqD,EAAGC,EAAGz0C,EAAGm/F,EAAYC,GAAWg3B,MAI5Cn3H,EAAOD,QAAU2pB,G,gBClCjB,IAAIuoB,EAAO,EAAQ,IAEfkoB,EAAO,EAAQ,IAEfq6G,EAAS,EAAQ,KAEjBjvE,EAAqBivE,EAAOjvE,mBAC5Bd,EAAiB+vE,EAAO/vE,eACxBlB,EAAcixE,EAAOjxE,YACrBjC,EAAUkzE,EAAOlzE,QACjB6D,EAAwBqvE,EAAOrvE,sBAC/B3B,EAAoBgxE,EAAOhxE,kBAM3BrvC,EAAM,GAEV,SAASsgH,EAAargI,EAAOjzC,EAAGuzK,GAC9B,IAAIC,EAAOvgI,EAAMugI,KACbC,EAAOxgI,EAAMwgI,KAEjB,OAAa,OAATD,GAA0B,OAATC,EACZ,EAAEF,EAAYlxE,EAAoBlC,GAASltD,EAAMylB,GAAIzlB,EAAMygI,KAAMzgI,EAAMugI,KAAMvgI,EAAM0lB,GAAI34D,IAAKuzK,EAAYlxE,EAAoBlC,GAASltD,EAAMmlB,GAAInlB,EAAM0gI,KAAM1gI,EAAMwgI,KAAMxgI,EAAM2lB,GAAI54D,IAEjL,EAAEuzK,EAAYvvE,EAAwB5B,GAAanvD,EAAMylB,GAAIzlB,EAAMygI,KAAMzgI,EAAM0lB,GAAI34D,IAAKuzK,EAAYvvE,EAAwB5B,GAAanvD,EAAMmlB,GAAInlB,EAAM0gI,KAAM1gI,EAAM2lB,GAAI54D,IAIpL,IAAIuoB,EAAWuoB,EAAK3nC,OAAO,CACzB/F,KAAM,eACN6vC,MAAO,CACLylB,GAAI,EACJN,GAAI,EACJO,GAAI,EACJC,GAAI,EACJ86G,KAAM,EACNC,KAAM,EAIN56I,QAAS,GAEX5S,MAAO,CACLurB,OAAQ,OACRD,KAAM,MAERuB,UAAW,SAAU3B,EAAK4B,GACxB,IAAIylB,EAAKzlB,EAAMylB,GACXN,EAAKnlB,EAAMmlB,GACXO,EAAK1lB,EAAM0lB,GACXC,EAAK3lB,EAAM2lB,GACX86G,EAAOzgI,EAAMygI,KACbC,EAAO1gI,EAAM0gI,KACbH,EAAOvgI,EAAMugI,KACbC,EAAOxgI,EAAMwgI,KACb16I,EAAUka,EAAMla,QAEJ,IAAZA,IAIJsY,EAAI2sD,OAAOtlC,EAAIN,GAEH,MAARo7G,GAAwB,MAARC,GACd16I,EAAU,IACZqrE,EAAmB1rC,EAAIg7G,EAAM/6G,EAAI5/B,EAASi6B,GAC1C0gH,EAAO1gH,EAAI,GACX2F,EAAK3F,EAAI,GACToxC,EAAmBhsC,EAAIu7G,EAAM/6G,EAAI7/B,EAASi6B,GAC1C2gH,EAAO3gH,EAAI,GACX4F,EAAK5F,EAAI,IAGX3hB,EAAIqtD,iBAAiBg1E,EAAMC,EAAMh7G,EAAIC,KAEjC7/B,EAAU,IACZuqE,EAAe5qC,EAAIg7G,EAAMF,EAAM76G,EAAI5/B,EAASi6B,GAC5C0gH,EAAO1gH,EAAI,GACXwgH,EAAOxgH,EAAI,GACX2F,EAAK3F,EAAI,GACTswC,EAAelrC,EAAIu7G,EAAMF,EAAM76G,EAAI7/B,EAASi6B,GAC5C2gH,EAAO3gH,EAAI,GACXygH,EAAOzgH,EAAI,GACX4F,EAAK5F,EAAI,IAGX3hB,EAAIitD,cAAco1E,EAAMC,EAAMH,EAAMC,EAAM96G,EAAIC,MASlD4E,QAAS,SAAUx9D,GACjB,OAAOszK,EAAazxK,KAAKoxC,MAAOjzC,GAAG,IAQrC49D,UAAW,SAAU59D,GACnB,IAAIY,EAAI0yK,EAAazxK,KAAKoxC,MAAOjzC,GAAG,GACpC,OAAOg5D,EAAK3F,UAAUzyD,EAAGA,MAI7B/B,EAAOD,QAAU2pB,G,gBChHjB,IAMIA,EANO,EAAQ,IAMCpf,OAAO,CACzB/F,KAAM,UACN6vC,MAAO,CACL4rD,GAAI,EACJC,GAAI,EACJ5rE,MAAO,EACPoC,OAAQ,GAEV0d,UAAW,SAAU3B,EAAK4B,GACxB,IAAImB,EAAInB,EAAM4rD,GACVxqD,EAAIpB,EAAM6rD,GACVjyF,EAAIomC,EAAM/f,MACVpmB,EAAImmC,EAAM3d,OACd+b,EAAI2sD,OAAO5pD,EAAGC,EAAIxnC,GAClBwkC,EAAIitD,cAAclqD,EAAIvnC,EAAGwnC,EAAIxnC,EAAGunC,EAAQ,EAAJvnC,EAAQ,EAAGwnC,EAAIxnC,EAAI,EAAGunC,EAAGC,EAAIvnC,GACjEukC,EAAIitD,cAAclqD,EAAQ,EAAJvnC,EAAQ,EAAGwnC,EAAIxnC,EAAI,EAAGunC,EAAIvnC,EAAGwnC,EAAIxnC,EAAGunC,EAAGC,EAAIxnC,GACjEwkC,EAAI+tD,eAIRvgG,EAAOD,QAAU2pB,G,gBC1BjB,IAMIA,EANO,EAAQ,IAMCpf,OAAO,CACzB/F,KAAM,QACN6vC,MAAO,CACL4rD,GAAI,EACJC,GAAI,EACJ5rE,MAAO,EACPoC,OAAQ,GAEV0d,UAAW,SAAU3B,EAAK4B,GACxB,IAAImB,EAAInB,EAAM4rD,GACVxqD,EAAIpB,EAAM6rD,GACVjyF,EAAIomC,EAAM/f,MACVpmB,EAAImmC,EAAM3d,OACd+b,EAAI2sD,OAAO5pD,EAAGC,GACdhD,EAAIitD,cAAclqD,EAAIvnC,EAAI,EAAGwnC,EAAQ,EAAJvnC,EAAQ,EAAGsnC,EAAQ,EAAJvnC,EAAOwnC,EAAIvnC,EAAI,EAAGsnC,EAAGC,EAAIvnC,GACzEukC,EAAIitD,cAAclqD,EAAQ,EAAJvnC,EAAOwnC,EAAIvnC,EAAI,EAAGsnC,EAAIvnC,EAAI,EAAGwnC,EAAQ,EAAJvnC,EAAQ,EAAGsnC,EAAGC,MAIzEx1C,EAAOD,QAAU2pB,G,gBCzBjB,IAAIuoB,EAAO,EAAQ,IAMfpX,EAAK/vB,KAAK+vB,GACV29B,EAAM1tD,KAAK0tD,IACX59B,EAAM9vB,KAAK8vB,IAEXlR,EAAWuoB,EAAK3nC,OAAO,CACzB/F,KAAM,SACN6vC,MAAO,CACLmB,EAAG,EACHC,EAAG,EACHz0C,EAAG,EACHW,EAAG,GAELyyC,UAAW,SAAU3B,EAAK4B,GACxB,IAAI1yC,EAAI0yC,EAAM1yC,EAEd,GAAKA,KAAKA,EAAI,GAAd,CAIA,IAAI6zC,EAAInB,EAAMmB,EACVC,EAAIpB,EAAMoB,EACVz0C,EAAIqzC,EAAMrzC,EACVg0K,EAAQ,EAAIl6I,EAAKn5B,EACjBg4D,GAAO7+B,EAAK,EAChB2X,EAAI2sD,OAAO5pD,EAAIx0C,EAAI65B,EAAI8+B,GAAMlkB,EAAIz0C,EAAIy3D,EAAIkB,IAEzC,IAAK,IAAIz5D,EAAI,EAAGkK,EAAMzI,EAAI,EAAGzB,EAAIkK,EAAKlK,IACpCy5D,GAAOq7G,EACPviI,EAAI6sD,OAAO9pD,EAAIx0C,EAAI65B,EAAI8+B,GAAMlkB,EAAIz0C,EAAIy3D,EAAIkB,IAG3ClnB,EAAI+tD,gBAKRvgG,EAAOD,QAAU2pB,G,gBC1CjB,IAMIA,EANO,EAAQ,IAMCpf,OAAO,CACzB/F,KAAM,OACN6vC,MAAO,CACL4rD,GAAI,EACJC,GAAI,EACJl/F,EAAG,EACH60I,GAAI,GAENzhG,UAAW,SAAU3B,EAAK4B,GACxB,IAAImB,EAAInB,EAAM4rD,GACVxqD,EAAIpB,EAAM6rD,GACVk2B,EAAgB,EAAVrrH,KAAK+vB,GACf2X,EAAI2sD,OAAO5pD,EAAInB,EAAMrzC,EAAGy0C,GACxBhD,EAAIutD,IAAIxqD,EAAGC,EAAGpB,EAAMrzC,EAAG,EAAGo1H,GAAK,GAC/B3jF,EAAI2sD,OAAO5pD,EAAInB,EAAMwhG,GAAIpgG,GACzBhD,EAAIutD,IAAIxqD,EAAGC,EAAGpB,EAAMwhG,GAAI,EAAGzf,GAAK,MAIpCn2H,EAAOD,QAAU2pB,G,gBCzBjB,IAAIuoB,EAAO,EAAQ,IAMfumB,EAAM1tD,KAAK0tD,IACX59B,EAAM9vB,KAAK8vB,IACXo6I,EAASlqK,KAAK+vB,GAAK,IAEnBnR,EAAWuoB,EAAK3nC,OAAO,CACzB/F,KAAM,OACN6vC,MAAO,CACL4rD,GAAI,EACJC,GAAI,EACJl/F,EAAG,GACH20D,EAAG,EACHh0D,EAAG,GAEL4lB,MAAO,CACLurB,OAAQ,OACRD,KAAM,MAERuB,UAAW,SAAU3B,EAAK4B,GACxB,IAAImB,EACAC,EAEAz0C,EADA+8F,EAAI1pD,EAAMrzC,EAEV20D,EAAIthB,EAAMshB,EACVh0D,EAAI0yC,EAAM1yC,EACV8+F,EAAKpsD,EAAM4rD,GACXS,EAAKrsD,EAAM6rD,GACfztD,EAAI2sD,OAAOqB,EAAIC,GAEf,IAAK,IAAIxgG,EAAI,EAAGgK,EAAM6zF,EAAEn5F,OAAQ1E,EAAIgK,EAAKhK,IAAK,CAC5Cc,EAAI+8F,EAAE79F,GAEN,IAAK,IAAIiK,EAAI,EAAGA,GAAK,IAAMxI,EAAGwI,IAC5BqrC,EAAIx0C,EAAIy3D,EAAI9C,EAAIh0D,EAAIwI,EAAI,IAAM8qK,GAAUp6I,EAAI1wB,EAAI8qK,GAAUx0E,EAC1DhrD,EAAIz0C,EAAIy3D,EAAI9C,EAAIh0D,EAAIwI,EAAI,IAAM8qK,GAAUx8G,EAAItuD,EAAI8qK,GAAUv0E,EAC1DjuD,EAAI6sD,OAAO9pD,EAAGC,OAMtBx1C,EAAOD,QAAU2pB,G,gBC9CjB,IAAIuoB,EAAO,EAAQ,IAEfgjI,EAAoB,EAAQ,KAM5BvrJ,EAAWuoB,EAAK3nC,OAAO,CACzB/F,KAAM,SACN6vC,MAAO,CACL4rD,GAAI,EACJC,GAAI,EACJ21C,GAAI,EACJ70I,EAAG,EACHm/F,WAAY,EACZC,SAAoB,EAAVr1F,KAAK+vB,GACfs8F,WAAW,GAEb5kF,MAAO0iI,EAAkBhjI,EAAKpwC,UAAU0wC,OACxC4B,UAAW,SAAU3B,EAAK4B,GACxB,IAAImB,EAAInB,EAAM4rD,GACVxqD,EAAIpB,EAAM6rD,GACV21C,EAAK9qI,KAAKitB,IAAIqc,EAAMwhG,IAAM,EAAG,GAC7B70I,EAAI+J,KAAKitB,IAAIqc,EAAMrzC,EAAG,GACtBm/F,EAAa9rD,EAAM8rD,WACnBC,EAAW/rD,EAAM+rD,SACjBg3B,EAAY/iF,EAAM+iF,UAClBm9C,EAAQxpK,KAAK8vB,IAAIslE,GACjBq0E,EAAQzpK,KAAK0tD,IAAI0nC,GACrB1tD,EAAI2sD,OAAOm1E,EAAQ1+B,EAAKrgG,EAAGg/H,EAAQ3+B,EAAKpgG,GACxChD,EAAI6sD,OAAOi1E,EAAQvzK,EAAIw0C,EAAGg/H,EAAQxzK,EAAIy0C,GACtChD,EAAIutD,IAAIxqD,EAAGC,EAAGz0C,EAAGm/F,EAAYC,GAAWg3B,GACxC3kF,EAAI6sD,OAAOv0F,KAAK8vB,IAAIulE,GAAYy1C,EAAKrgG,EAAGzqC,KAAK0tD,IAAI2nC,GAAYy1C,EAAKpgG,GAEvD,IAAPogG,GACFpjG,EAAIutD,IAAIxqD,EAAGC,EAAGogG,EAAIz1C,EAAUD,EAAYi3B,GAG1C3kF,EAAI+tD,eAIRvgG,EAAOD,QAAU2pB,G,gBC3CjB,IAAIs+C,EAAM,EAAQ,IAgBdktG,EAAa,CAAC,CAAC,aAAc,GAAI,CAAC,cAAe,QAAS,CAAC,gBAAiB,GAAI,CAAC,gBAAiB,IAuCtGl1K,EAAOD,QArCP,SAAkBo1K,GAEhB,OAAOntG,EAAIhM,QAAQW,IAAMqL,EAAIhM,QAAQc,SAAW,GAAK,WACnD,IAEIp1B,EAFAu0H,EAAYj5J,KAAKmwG,YACjB7rF,EAAQtkB,KAAKskB,MAGjB,GAAI20I,EACF,IAAK,IAAIh8J,EAAI,EAAGA,EAAIg8J,EAAUt3J,OAAQ1E,IAAK,CACzC,IAAIsjI,EAAW04B,EAAUh8J,GACrBm0C,EAAQmvF,GAAYA,EAASnvF,MAC7B7vC,EAAOg/H,GAAYA,EAASh/H,KAEhC,GAAI6vC,IAAmB,WAAT7vC,GAAqB6vC,EAAM8rD,aAAe9rD,EAAM+rD,UAAqB,SAAT57F,KAAqB6vC,EAAM/f,QAAU+f,EAAM3d,SAAU,CAC7H,IAAK,IAAIvsB,EAAI,EAAGA,EAAIgrK,EAAWvwK,OAAQuF,IAGrCgrK,EAAWhrK,GAAG,GAAKod,EAAM4tJ,EAAWhrK,GAAG,IACvCod,EAAM4tJ,EAAWhrK,GAAG,IAAMgrK,EAAWhrK,GAAG,GAG1Cw9B,GAAW,EACX,OAON,GAFAytI,EAAa3uK,MAAMxD,KAAMyG,WAErBi+B,EACF,IAASx9B,EAAI,EAAGA,EAAIgrK,EAAWvwK,OAAQuF,IACrCod,EAAM4tJ,EAAWhrK,GAAG,IAAMgrK,EAAWhrK,GAAG,IAG1CirK,I,gBCpDN,IAAIljI,EAAO,EAAQ,IAMfpX,EAAK/vB,KAAK+vB,GACVD,EAAM9vB,KAAK8vB,IACX49B,EAAM1tD,KAAK0tD,IAEX9uC,EAAWuoB,EAAK3nC,OAAO,CACzB/F,KAAM,OACN6vC,MAAO,CACL4rD,GAAI,EACJC,GAAI,EACJv+F,EAAG,EACHk0I,GAAI,KACJ70I,EAAG,GAELozC,UAAW,SAAU3B,EAAK4B,GACxB,IAAI1yC,EAAI0yC,EAAM1yC,EAEd,GAAKA,KAAKA,EAAI,GAAd,CAIA,IAAI6zC,EAAInB,EAAM4rD,GACVxqD,EAAIpB,EAAM6rD,GACVl/F,EAAIqzC,EAAMrzC,EACV60I,EAAKxhG,EAAMwhG,GAEL,MAANA,IACFA,EAAKl0I,EAAI,EAEPX,EAAI65B,EAAI,EAAIC,EAAKn5B,GAAKk5B,EAAIC,EAAKn5B,GAC/BX,EAAI,GAGR,IAAIg0K,EAAQl6I,EAAKn5B,EACbg4D,GAAO7+B,EAAK,EACZu6I,EAAS7/H,EAAIx0C,EAAI65B,EAAI8+B,GACrB27G,EAAS7/H,EAAIz0C,EAAIy3D,EAAIkB,GACzBA,GAAOq7G,EAEPviI,EAAI2sD,OAAOi2E,EAAQC,GAEnB,IAAK,IAA4BC,EAAxBr1K,EAAI,EAAGkK,EAAU,EAAJzI,EAAQ,EAAOzB,EAAIkK,EAAKlK,IAC5Cq1K,EAAKr1K,EAAI,GAAM,EAAI21I,EAAK70I,EACxByxC,EAAI6sD,OAAO9pD,EAAI+/H,EAAK16I,EAAI8+B,GAAMlkB,EAAI8/H,EAAK98G,EAAIkB,IAC3CA,GAAOq7G,EAGTviI,EAAI+tD,gBAIRvgG,EAAOD,QAAU2pB,G,gBCxDjB,IAAIuoB,EAAO,EAAQ,IAMfrX,EAAM9vB,KAAK8vB,IACX49B,EAAM1tD,KAAK0tD,IAEX9uC,EAAWuoB,EAAK3nC,OAAO,CACzB/F,KAAM,WACN6vC,MAAO,CACL4rD,GAAI,EACJC,GAAI,EACJl/F,EAAG,EACH60I,GAAI,EACJr1I,EAAG,EACHqY,SAAU,OAEZ0O,MAAO,CACLurB,OAAQ,OACRD,KAAM,MAERuB,UAAW,SAAU3B,EAAK4B,GACxB,IAAIylB,EACAN,EACAO,EACAC,EACA+jC,EAAI1pD,EAAMrzC,EACVA,EAAIqzC,EAAMwhG,GACVr1I,EAAI6zC,EAAM7zC,EACV4vB,EAAUikB,EAAM4rD,GAChB5vE,EAAUgkB,EAAM6rD,GAChB1nE,EAA2B,QAAnB6b,EAAMx7B,SAAqB,GAAK,EAE5C,KAAIw7B,EAAMx7B,UAAYklF,GAAK/8F,GAA3B,CAIA,IAEIm2D,EAFAnuD,EAAM,EACN9I,EAAI,EAER45D,GAAMikC,EAAIvlE,EAAQx3B,GAAK65B,EAAI,GAAKrC,EAAQh4B,EAAIq6B,EAAI,GAAKzK,EACrDopC,GAAMukC,EAAIvlE,EAAQx3B,GAAKy3D,EAAI,GAAKj4D,EAAIi4D,EAAI,GAAKpoC,EAC7CoiB,EAAI2sD,OAAOtlC,EAAIN,GAEf,GACExwD,UACOhI,EAAIgI,GAAO+0F,EAAIvlE,EAAQx3B,IAAO,GAEvC,GACEm2D,EAAQpsD,KAAK+vB,GAAK,IAAM56B,EACxB65D,GAAMgkC,EAAIvlE,EAAQx3B,GAAK65B,EAAIs8B,GAAS3+B,EAAQh4B,EAAIq6B,GAAKkjE,EAAI/8F,EAAIw3B,GAAS2+B,GAAS/mC,EAC/E4pC,GAAM+jC,EAAIvlE,EAAQx3B,GAAKy3D,EAAItB,GAAS32D,EAAIi4D,GAAKslC,EAAI/8F,EAAIw3B,GAAS2+B,GAAS9mC,EACvEoiB,EAAI6sD,OAAOvlC,EAAIC,GACf95D,UACOA,GAAKc,EAAIgI,GAAO+0F,EAAIvlE,EAAQx3B,GAAK,SAI9Cf,EAAOD,QAAU2pB,G,gBC5DjB,IAAIioB,EAAS,EAAQ,IAEjBqkF,EAAW,EAAQ,KAUnB+3C,EAAiB,SAAUx4H,EAAGC,EAAGz0C,EAAGgyC,EAAY88F,GAIlD7sI,KAAKuyC,EAAS,MAALA,EAAY,GAAMA,EAC3BvyC,KAAKwyC,EAAS,MAALA,EAAY,GAAMA,EAC3BxyC,KAAKjC,EAAS,MAALA,EAAY,GAAMA,EAE3BiC,KAAKuB,KAAO,SAEZvB,KAAK4C,OAASiqI,IAAe,EAC7B7Z,EAAS51H,KAAK4C,KAAM+vC,IAGtBg7H,EAAelsK,UAAY,CACzBgH,YAAaklK,GAEfp8H,EAAO3B,SAAS+9H,EAAgB/3C,GAChC,IAAItsG,EAAWqkJ,EACf/tK,EAAOD,QAAU2pB,G,gBC/BjB,EAAQ,MAQR0pG,EANe,EAAQ,KAEQA,iBAIf,MAFF,EAAQ,O,gBCNtB,IAEIrrH,EAFQ,EAAQ,KAEMA,cAEtBiuD,EAAO,EAAQ,IAEf4Z,EAAW,EAAQ,KAEnB39B,EAAO,EAAQ,IAEf2qD,EAAS,EAAQ,KAEjB28B,EAAQ,EAAQ,KAEhBg8C,EAAY,EAAQ,KAEpBC,EAAkB,EAAQ,KAE1BC,EAAkB,EAAQ,KAE1BC,EAAgB,EAAQ,KAExBl8C,EAAW,EAAQ,KAEnB3C,EAAU2C,EAAStnF,KACnBylF,EAAW6B,EAAS//G,MACpBw+G,EAAUuB,EAASxxH,KAMvB,SAASy4J,EAAW54J,GAClB,OAAO6uB,SAAS7uB,EAAK,IAevB,SAAS8tK,EAAqBxyK,EAAQ6mE,GACpC,OAAOA,GAAS7mE,GAAU6mE,EAAM3hE,aAAelF,EAGjD,SAASqwB,EAAYrwB,EAAQ6mE,EAAO4rG,GAClC,GAAID,EAAqBxyK,EAAQ6mE,IAAU4rG,EAAa,CACtD,IAAIziK,EAAcyiK,EAAYziK,YAC9BA,EAAchQ,EAAO8vB,aAAa+2C,EAAO72D,GAAehQ,EAAOiF,YAAY4hE,IAI/E,SAASh3C,EAAQ7vB,EAAQ6mE,GACvB,GAAI2rG,EAAqBxyK,EAAQ6mE,GAAQ,CACvC,IAAIvzD,EAAatT,EAAOsT,WACxBA,EAAatT,EAAO8vB,aAAa+2C,EAAOvzD,GAActT,EAAOiF,YAAY4hE,IAS7E,SAASppD,EAAOzd,EAAQ6mE,GAClBA,GAAS7mE,GAAU6mE,EAAM3hE,aAAelF,GAC1CA,EAAOmF,YAAY0hE,GAIvB,SAASoxD,EAAkBD,GACzB,OAAOA,EAAYzC,YAGrB,SAAS2C,EAAcF,GACrB,OAAOA,EAAYrE,QAWrB,IAAI++C,EAAa,SAAU/wK,EAAM4rH,EAASt0F,EAAMs9F,GAC9C12H,KAAK8B,KAAOA,EACZ9B,KAAK0tH,QAAUA,EACf1tH,KAAK49J,MAAQxkI,EAAO45B,EAAK1rD,OAAO,GAAI8xB,GAAQ,IAC5C,IAAI05I,EAAS/tK,EAAc,OAC3B+tK,EAAO5tK,aAAa,QAAS,8BAC7B4tK,EAAO5tK,aAAa,UAAW,OAC/B4tK,EAAO5tK,aAAa,cAAe,QACnC4tK,EAAOxuJ,MAAMyN,QAAU,mDACvB,IAAIghJ,EAAShuK,EAAc,KAC3B+tK,EAAO1tK,YAAY2tK,GACnB,IAAIp8C,EAAU5xH,EAAc,KAC5B+tK,EAAO1tK,YAAYuxH,GACnB32H,KAAKgzK,gBAAkB,IAAIR,EAAgB97C,EAAMC,GACjD32H,KAAKizK,gBAAkB,IAAIR,EAAgB/7C,EAAMC,GACjD32H,KAAKkzK,cAAgB,IAAIR,EAAch8C,EAAMC,GAC7C,IAAIw8C,EAAWrwK,SAASiC,cAAc,OACtCouK,EAAS7uJ,MAAMyN,QAAU,oCACzB/xB,KAAKozK,QAAUN,EACf9yK,KAAKg3H,SAAWL,EAChB32H,KAAKqzK,gBAAkBN,EACvB/yK,KAAKszK,UAAYH,EACjBrxK,EAAKsD,YAAY+tK,GACjBA,EAAS/tK,YAAY0tK,GACrB9yK,KAAKyvH,OAAOr2F,EAAK/H,MAAO+H,EAAK3F,QAC7BzzB,KAAKuzK,aAAe,IAGtBV,EAAWh0K,UAAY,CACrBgH,YAAagtK,EACb9mG,QAAS,WACP,MAAO,OAETiiD,gBAAiB,WACf,OAAOhuH,KAAKszK,WAEdE,UAAW,WACT,OAAOxzK,KAAKozK,SAEdK,WAAY,WACV,OAAOzzK,KAAKg3H,UAEdioC,sBAAuB,WACrB,IAAIC,EAAel/J,KAAKguH,kBAExB,GAAIkxC,EACF,MAAO,CACLrqB,WAAYqqB,EAAarqB,YAAc,EACvCC,UAAWoqB,EAAapqB,WAAa,IAI3C5hG,QAAS,WACP,IAAI9nC,EAAOpL,KAAK0tH,QAAQqmC,gBAAe,GAEvC/zJ,KAAKq/J,WAAWj0J,IAElB0jH,mBAAoB,SAAUC,GAIxB/uH,KAAKqzK,iBAAmBrzK,KAAK0zK,iBAC/B1zK,KAAKqzK,gBAAgB/tK,YAAYtF,KAAK0zK,iBAGxC,IAAIC,EAAS5uK,EAAc,QAC3B4uK,EAAOzuK,aAAa,QAASlF,KAAKw9G,YAClCm2D,EAAOzuK,aAAa,SAAUlF,KAAK2vH,aACnCgkD,EAAOzuK,aAAa,IAAK,GACzByuK,EAAOzuK,aAAa,IAAK,GACzByuK,EAAOzuK,aAAa,KAAM,GAC1ByuK,EAAOrvJ,MAAMsrB,KAAOm/E,EAEpB/uH,KAAKqzK,gBAAgBjuK,YAAYuuK,GAEjC3zK,KAAK0zK,gBAAkBC,GAEzBtU,WAAY,SAAUj0J,GACpBpL,KAAKgzK,gBAAgBj7C,gBACrB/3H,KAAKizK,gBAAgBl7C,gBACrB/3H,KAAKkzK,cAAcn7C,gBACnB,IAII96H,EA9IayS,EA0IbinH,EAAU32H,KAAKg3H,SACf48C,EAAc5zK,KAAKuzK,aACnBM,EAAUzoK,EAAKzJ,OACfmyK,EAAiB,GAGrB,IAAK72K,EAAI,EAAGA,EAAI42K,EAAS52K,IAAK,CAC5B,IAAIk7H,EAAc/sH,EAAKnO,GACnB82K,GAlJWrkK,EAkJYyoH,aAjJblpF,EACT4kF,EACEnkH,aAAckqF,EAChB+6B,EACEjlH,aAAc6mH,EAChBtB,EAEApB,EA2IDmgD,EAAa37C,EAAcF,IAAgBC,EAAkBD,GAE5DA,EAAY/nB,YACX+nB,EAAY/nF,UACd2jI,GAAYA,EAASxkI,MAAM4oF,GAE3Bn4H,KAAKizK,gBAAgBxnH,OAAO0sE,GAExBA,EAAY7zG,QACdtkB,KAAKgzK,gBAAgBvnH,OAAO0sE,EAAY7zG,MAAMsrB,MAC9C5vC,KAAKgzK,gBAAgBvnH,OAAO0sE,EAAY7zG,MAAMurB,QAC9C7vC,KAAKkzK,cAAcznH,OAAOuoH,EAAY77C,IAGxCA,EAAY/nF,SAAU,GAGxB0jI,EAAetxK,KAAK21H,IAIxB,IACI87C,EADAhkK,EAAOsiK,EAAUqB,EAAaE,GAIlC,IAAK72K,EAAI,EAAGA,EAAIgT,EAAKtO,OAAQ1E,IAAK,CAGhC,IAFIkH,EAAO8L,EAAKhT,IAEP46F,QACP,IAAK,IAAInlC,EAAI,EAAGA,EAAIvuD,EAAKyf,MAAO8uC,IAAK,CAE/BshH,EAAa37C,EADbF,EAAcy7C,EAAYzvK,EAAK+vK,QAAQxhH,KAA3C,IAEIyhH,EAAiB/7C,EAAkBD,GACvCv6G,EAAO+4G,EAASq9C,GAChBp2J,EAAO+4G,EAASw9C,IAKtB,IAAKl3K,EAAI,EAAGA,EAAIgT,EAAKtO,OAAQ1E,IAAK,CAChC,IAAIkH,EAEJ,IAFIA,EAAO8L,EAAKhT,IAEPm3K,MACP,IAAS1hH,EAAI,EAAGA,EAAIvuD,EAAKyf,MAAO8uC,IAAK,CAE/BshH,EAAa37C,EADbF,EAAc27C,EAAe3vK,EAAK+vK,QAAQxhH,KAE1CyhH,EAAiB/7C,EAAkBD,GACvC87C,EAAiBzjJ,EAAYmmG,EAASq9C,EAAYC,GAAkBjkJ,EAAQ2mG,EAASq9C,GAEjFA,EACFxjJ,EAAYmmG,EAASw9C,EAAgBH,GAC5BC,EACTzjJ,EAAYmmG,EAASw9C,EAAgBF,GAErCjkJ,EAAQ2mG,EAASw9C,GAInB3jJ,EAAYmmG,EAASw9C,EAAgBH,GACrCC,EAAiBE,GAAkBH,GAAcC,EAEjDj0K,KAAKgzK,gBAAgBqB,iBAAiBL,GAAcG,EAAgBh8C,GACpEn4H,KAAKkzK,cAAcmB,iBAAiBL,GAAcG,EAAgBh8C,GAClEn4H,KAAKizK,gBAAgBj7C,SAASG,QAE3B,IAAKh0H,EAAK0zF,QACf,IAASnlC,EAAI,EAAGA,EAAIvuD,EAAKyf,MAAO8uC,IAAK,CAE/BshH,EAAa37C,EADbF,EAAc27C,EAAe3vK,EAAK+vK,QAAQxhH,KAE1CyhH,EAAiB/7C,EAAkBD,GACnC67C,EAAa37C,EAAcF,GAC3Bg8C,EAAiB/7C,EAAkBD,GACvCn4H,KAAKgzK,gBAAgBh7C,SAASG,GAC9Bn4H,KAAKgzK,gBAAgBqB,iBAAiBL,GAAcG,EAAgBh8C,GACpEn4H,KAAKkzK,cAAcl7C,SAASG,GAC5Bn4H,KAAKkzK,cAAcmB,iBAAiBL,GAAcG,EAAgBh8C,GAClEn4H,KAAKizK,gBAAgBj7C,SAASG,GAE1Bg8C,GAEF3jJ,EAAYmmG,EAASw9C,EAAgBH,GAGvCC,EAAiBD,GAAcG,GAAkBF,GAKvDj0K,KAAKgzK,gBAAgB/6C,eACrBj4H,KAAKizK,gBAAgBh7C,eACrBj4H,KAAKkzK,cAAcj7C,eACnBj4H,KAAKuzK,aAAeO,GAEtBQ,SAAU,SAAUh9C,GAClB,IAMQC,EANJZ,EAAU32H,KAAKozK,QAGnB,OAAoB,KAFhB77C,EAAOZ,EAAQloH,qBAAqB,SAE/B9M,OAEH21H,IACEC,EAAOZ,EAAQ1mG,aAAalrB,EAAc,QAC9C4xH,EAAQljH,aAGEpJ,WAERktH,EAAKltH,SAAW,SAAUqF,GACxB,IAAIuL,EAAWs8G,EAAKt8G,SAEpB,IAAKA,EACH,OAAO,EAGT,IAAK,IAAIhe,EAAIge,EAAStZ,OAAS,EAAG1E,GAAK,IAAKA,EAC1C,GAAIge,EAAShe,KAAOyS,EAClB,OAAO,EAIX,OAAO,IAIJ6nH,GAEA,KAGFA,EAAK,IAGhB9H,OAAQ,SAAUp+F,EAAOoC,GACvB,IAAI0/I,EAAWnzK,KAAKszK,UAEpBH,EAAS7uJ,MAAMC,QAAU,OAEzB,IAAI6U,EAAOp5B,KAAK49J,MAOhB,GANS,MAATvsI,IAAkB+H,EAAK/H,MAAQA,GACrB,MAAVoC,IAAmB2F,EAAK3F,OAASA,GACjCpC,EAAQrxB,KAAK2+J,SAAS,GACtBlrI,EAASzzB,KAAK2+J,SAAS,GACvBwU,EAAS7uJ,MAAMC,QAAU,GAErBvkB,KAAKq+J,SAAWhtI,GAASrxB,KAAKs+J,UAAY7qI,EAAQ,CACpDzzB,KAAKq+J,OAAShtI,EACdrxB,KAAKs+J,QAAU7qI,EACf,IAAI8gJ,EAAgBpB,EAAS7uJ,MAC7BiwJ,EAAcljJ,MAAQA,EAAQ,KAC9BkjJ,EAAc9gJ,OAASA,EAAS,KAChC,IAAIkjG,EAAU32H,KAAKozK,QAEnBz8C,EAAQzxH,aAAa,QAASmsB,GAC9BslG,EAAQzxH,aAAa,SAAUuuB,GAG7BzzB,KAAK0zK,kBACP1zK,KAAK0zK,gBAAgBxuK,aAAa,QAASmsB,GAE3CrxB,KAAK0zK,gBAAgBxuK,aAAa,SAAUuuB,KAOhD+pF,SAAU,WACR,OAAOx9G,KAAKq+J,QAMd1uC,UAAW,WACT,OAAO3vH,KAAKs+J,SAEdK,SAAU,SAAUoE,GAClB,IAAI3pI,EAAOp5B,KAAK49J,MACZoF,EAAK,CAAC,QAAS,UAAUD,GACzBE,EAAM,CAAC,cAAe,gBAAgBF,GACtCG,EAAM,CAAC,cAAe,cAAcH,GACpCI,EAAM,CAAC,eAAgB,iBAAiBJ,GAE5C,GAAgB,MAAZ3pI,EAAK4pI,IAA4B,SAAb5pI,EAAK4pI,GAC3B,OAAOnwI,WAAWuG,EAAK4pI,IAGzB,IAAIlhK,EAAO9B,KAAK8B,KAEZk0J,EAAMlzJ,SAASkO,YAAY+f,iBAAiBjvB,GAChD,OAAQA,EAAKmhK,IAAQxF,EAAWzH,EAAIgN,KAAQvF,EAAW37J,EAAKwiB,MAAM0+I,MAASvF,EAAWzH,EAAIkN,KAAS,IAAMzF,EAAWzH,EAAImN,KAAS,GAAK,GAExIlzC,QAAS,WACPjwH,KAAK8B,KAAKiQ,UAAY,GACtB/R,KAAKg3H,SAAWh3H,KAAKqzK,gBAAkBrzK,KAAKozK,QAAUpzK,KAAK0zK,gBAAkB1zK,KAAKszK,UAAYtzK,KAAK0tH,QAAU,MAE/G70D,MAAO,WACD74D,KAAKszK,WACPtzK,KAAK8B,KAAKwD,YAAYtF,KAAKszK,YAG/BkB,UAAW,WAGT,OAFAx0K,KAAKkzC,UAEE,oCADIzT,mBAAmBz/B,KAAKozK,QAAQqB,UAAUzsK,QAAQ,MAAO,aAYxEgrD,EAAK3sD,KAAK,CAAC,WAAY,cAAe,YAAa,mBAAoB,iBAAkB,YAAa,WAAY,WAAY,aAAc,gBAAgB,SAAU7I,GAPtK,IAAgCmf,EAQ9Bk2J,EAAWh0K,UAAUrB,IARSmf,EAQsBnf,EAP7C,WACLovE,EAAS,2CAA6CjwD,EAAS,UAQnE,IAAI+J,EAAWmsJ,EACf71K,EAAOD,QAAU2pB,G,cC/YjB,SAASguJ,KAiJT,SAASC,EAAY1kK,EAAMkvE,EAAYy1F,EAAQC,GAM7C,IALA,IAAIC,EAAe,EACfC,EAAe51F,EAAWx9E,OAC1Bq1F,EAAS,EACTE,EAAS,EAEN49E,EAAeC,EAAcD,IAAgB,CAClD,IAAI57F,EAAYiG,EAAW21F,GAE3B,GAAK57F,EAAU2e,QAaR,CAGL,IAFIq8E,EAAU,GAELj3K,EAAIi6F,EAAQj6F,EAAIi6F,EAAShe,EAAUt1D,MAAO3mB,IACjDi3K,EAAQ1xK,KAAKvF,GAGfi8E,EAAUg7F,QAAUA,EACpBh9E,GAAUhe,EAAUt1D,UArBE,CAGtB,IAFA,IAAIswJ,EAAU,GAELj3K,EAAI+5F,EAAQ/5F,EAAI+5F,EAAS9d,EAAUt1D,MAAO3mB,IACjDi3K,EAAQ1xK,KAAKvF,GAGfi8E,EAAUg7F,QAAUA,EACpBl9E,GAAU9d,EAAUt1D,MAEfs1D,EAAUk7F,QACbl9E,GAAUhe,EAAUt1D,QAc1B,OAAOu7D,EAjLTu1F,EAAK71K,UAAY,CACfoR,KAAM,SAAU4kK,EAAQD,EAAQpgH,GACzBA,IACHA,EAAS,SAAUxpD,EAAGC,GACpB,OAAOD,IAAMC,IAIjBjL,KAAKw0D,OAASA,EACd,IAAI3yD,EAAO7B,KACX60K,EAASA,EAAOvxK,QAGhB,IAAI0xK,GAFJJ,EAASA,EAAOtxK,SAEI3B,OAChBszK,EAASJ,EAAOlzK,OAChBuzK,EAAa,EACbC,EAAgBH,EAASC,EACzBG,EAAW,CAAC,CACdp+E,QAAS,EACT7X,WAAY,KAGV+X,EAASl3F,KAAKq1K,cAAcD,EAAS,GAAIR,EAAQC,EAAQ,GAE7D,GAAIO,EAAS,GAAGp+E,OAAS,GAAKg+E,GAAU99E,EAAS,GAAK+9E,EAAQ,CAG5D,IAFA,IAAIf,EAAU,GAELj3K,EAAI,EAAGA,EAAI23K,EAAOjzK,OAAQ1E,IACjCi3K,EAAQ1xK,KAAKvF,GAIf,MAAO,CAAC,CACNi3K,QAASA,EACTtwJ,MAAOgxJ,EAAOjzK,SAKlB,SAAS2zK,IACP,IAAK,IAAIC,GAAgB,EAAIL,EAAYK,GAAgBL,EAAYK,GAAgB,EAAG,CACtF,IAAIC,EACAC,EAAUL,EAASG,EAAe,GAClCG,EAAaN,EAASG,EAAe,GACrCr+E,GAAUw+E,EAAaA,EAAW1+E,OAAS,GAAKu+E,EAEhDE,IAEFL,EAASG,EAAe,QAAKrzK,GAG/B,IAAIyzK,EAASF,GAAWA,EAAQz+E,OAAS,EAAIg+E,EACzCY,EAAYF,GAAc,GAAKx+E,GAAUA,EAAS+9E,EAEtD,GAAKU,GAAWC,EAAhB,CAqBA,IAZKD,GAAUC,GAAaH,EAAQz+E,OAAS0+E,EAAW1+E,QACtDw+E,EAqHD,CACLx+E,QAFe9nD,EApHYwmI,GAsHd1+E,OACb7X,WAAYjwC,EAAKiwC,WAAW77E,MAAM,IAtH5BzB,EAAKg0K,cAAcL,EAASr2F,gBAAYj9E,GAAW,MAEnDszK,EAAWC,GAEFz+E,SACTn1F,EAAKg0K,cAAcL,EAASr2F,YAAY,OAAMj9E,IAGhDg1F,EAASr1F,EAAKwzK,cAAcG,EAAUZ,EAAQC,EAAQU,GAElDC,EAASx+E,OAAS,GAAKg+E,GAAU99E,EAAS,GAAK+9E,EACjD,OAAON,EAAY9yK,EAAM2zK,EAASr2F,WAAYy1F,EAAQC,GAGtDO,EAASG,GAAgBC,OAvBzBJ,EAASG,QAAgBrzK,EA4HnC,IAAmBgtC,EAjGbgmI,IAGF,KAAOA,GAAcC,GAAe,CAClC,IAAIjvK,EAAMovK,IAEV,GAAIpvK,EACF,OAAOA,IAIb2vK,cAAe,SAAU12F,EAAYi1F,EAAOv8E,GAC1C,IAAIjxF,EAAOu4E,EAAWA,EAAWx9E,OAAS,GAEtCiF,GAAQA,EAAKwtK,QAAUA,GAASxtK,EAAKixF,UAAYA,EAGnD1Y,EAAWA,EAAWx9E,OAAS,GAAK,CAClCiiB,MAAOhd,EAAKgd,MAAQ,EACpBwwJ,MAAOA,EACPv8E,QAASA,GAGX1Y,EAAW38E,KAAK,CACdohB,MAAO,EACPwwJ,MAAOA,EACPv8E,QAASA,KAIfw9E,cAAe,SAAUG,EAAUZ,EAAQC,EAAQU,GAOjD,IANA,IAAIP,EAASJ,EAAOjzK,OAChBszK,EAASJ,EAAOlzK,OAChBq1F,EAASw+E,EAASx+E,OAClBE,EAASF,EAASu+E,EAClBO,EAAc,EAEX9+E,EAAS,EAAIg+E,GAAU99E,EAAS,EAAI+9E,GAAUj1K,KAAKw0D,OAAOogH,EAAO59E,EAAS,GAAI69E,EAAO39E,EAAS,KACnGF,IACAE,IACA4+E,IAUF,OAPIA,GACFN,EAASr2F,WAAW38E,KAAK,CACvBohB,MAAOkyJ,IAIXN,EAASx+E,OAASA,EACXE,GAETxtF,SAAU,SAAUxL,GAClB,OAAOA,EAAMoF,SAEf0L,KAAM,SAAU9Q,GACd,OAAOA,EAAMoF,UAgDjB,IAAIivK,EAAY,IAAImC,EAMpB13K,EAAOD,QAJP,SAAkB83K,EAAQD,EAAQtuK,GAChC,OAAOisK,EAAUtiK,KAAK4kK,EAAQD,EAAQtuK,K,gBClMxC,IAAImwH,EAAY,EAAQ,KAEpB9nF,EAAS,EAAQ,IAEjBi+B,EAAW,EAAQ,KAEnBw7F,EAAY,EAAQ,KAexB,SAASoK,EAAgB97C,EAAMC,GAC7BF,EAAUr5H,KAAK4C,KAAM02H,EAAMC,EAAS,CAAC,iBAAkB,kBAAmB,uBAG5EhoF,EAAO3B,SAASwlI,EAAiB/7C,GASjC+7C,EAAgB3zK,UAAUw1K,iBAAmB,SAAUL,EAAY77C,GACjE,GAAIA,GAAeA,EAAY7zG,MAAO,CACpC,IAAIpF,EAAOlf,KACX2uC,EAAOtoC,KAAK,CAAC,OAAQ,WAAW,SAAU0vK,GACxC,GAAI59C,EAAY7zG,MAAMyxJ,KAA2D,WAAzC59C,EAAY7zG,MAAMyxJ,GAAcx0K,MAA8D,WAAzC42H,EAAY7zG,MAAMyxJ,GAAcx0K,MAAoB,CAC/I,IAGIksH,EAHAygD,EAAW/1C,EAAY7zG,MAAMyxJ,GAC7Bx+C,EAAOr4G,EAAKm4G,SAAQ,GAIpB62C,EAAS76D,MAEXoa,EAAMygD,EAAS76D,KAEVkkB,EAAKltH,SAAS6jK,EAAS76D,OAE1Bn0F,EAAKw4G,OAAOjK,IAIdA,EAAMvuG,EAAK5e,IAAI4tK,GAGjBhvJ,EAAK84G,SAASG,GACd,IAAI3pH,EAAKi/G,EAAIxoH,aAAa,MAC1B+uK,EAAW9uK,aAAa6wK,EAAc,QAAUvnK,EAAK,WAc7DgkK,EAAgB3zK,UAAUyB,IAAM,SAAU4tK,GACxC,IAAIzgD,EAEJ,GAAsB,WAAlBygD,EAAS3sK,KACXksH,EAAMztH,KAAK+E,cAAc,sBACpB,IAAsB,WAAlBmpK,EAAS3sK,KAIlB,OADAqrE,EAAS,0BACF,KAHP6gD,EAAMztH,KAAK+E,cAAc,kBAe3B,OAJAmpK,EAAS1/J,GAAK0/J,EAAS1/J,IAAMxO,KAAKo3H,SAClC3J,EAAIvoH,aAAa,KAAM,KAAOlF,KAAK+2H,MAAQ,aAAem3C,EAAS1/J,IACnExO,KAAKg2K,UAAU9H,EAAUzgD,GACzBztH,KAAK03H,OAAOjK,GACLA,GAST+kD,EAAgB3zK,UAAU4sD,OAAS,SAAUyiH,GAC3C,IAAIhvJ,EAAOlf,KACXy2H,EAAU53H,UAAU4sD,OAAOruD,KAAK4C,KAAMkuK,GAAU,WAC9C,IAAI3sK,EAAO2sK,EAAS3sK,KAChBkkF,EAAUyoF,EAAS76D,KAAK5tB,QAEf,WAATlkF,GAAiC,mBAAZkkF,GAAyC,WAATlkF,GAAiC,mBAAZkkF,EAE5EvmE,EAAK82J,UAAU9H,EAAUA,EAAS76D,OAGlCn0F,EAAKy4G,UAAUu2C,GACfhvJ,EAAK5e,IAAI4tK,QAafsE,EAAgB3zK,UAAUm3K,UAAY,SAAU9H,EAAUzgD,GACxD,GAAsB,WAAlBygD,EAAS3sK,KACXksH,EAAIvoH,aAAa,KAAMgpK,EAAS37H,GAChCk7E,EAAIvoH,aAAa,KAAMgpK,EAAS17H,GAChCi7E,EAAIvoH,aAAa,KAAMgpK,EAASp3G,IAChC22D,EAAIvoH,aAAa,KAAMgpK,EAASn3G,QAC3B,IAAsB,WAAlBm3G,EAAS3sK,KAMlB,YADAqrE,EAAS,0BAJT6gD,EAAIvoH,aAAa,KAAMgpK,EAAS37H,GAChCk7E,EAAIvoH,aAAa,KAAMgpK,EAAS17H,GAChCi7E,EAAIvoH,aAAa,IAAKgpK,EAASnwK,GAM7BmwK,EAAStrK,OAEX6qH,EAAIvoH,aAAa,gBAAiB,kBAGlCuoH,EAAIvoH,aAAa,gBAAiB,qBAIpCuoH,EAAI17G,UAAY,GAIhB,IAFA,IAAIwkG,EAAS23D,EAASn+H,WAEb9yC,EAAI,EAAGgK,EAAMsvG,EAAO50G,OAAQ1E,EAAIgK,IAAOhK,EAAG,CACjD,IAAIwmB,EAAOzjB,KAAK+E,cAAc,QAC9B0e,EAAKve,aAAa,SAA6B,IAAnBqxG,EAAOt5G,GAAGkrC,OAAe,KACrD,IAAI0uE,EAAQN,EAAOt5G,GAAG45G,MAEtB,GAAIA,EAAMpzG,QAAQ,SAAW,EAAG,CAE9B,IAAIuyB,EAAUoyI,EAAUplJ,MAAM6zF,GAAO,GACjCo/D,EAAM7N,EAAUjxD,MAAMN,GAM1BpzF,EAAKve,aAAa,aAAc,IAAM+wK,GACtCxyJ,EAAKve,aAAa,eAAgB8wB,QAElCvS,EAAKve,aAAa,aAAcqxG,EAAOt5G,GAAG45G,OAG5C4W,EAAIroH,YAAYqe,GAKlByqJ,EAAS76D,KAAOoa,GASlB+kD,EAAgB3zK,UAAUm5H,SAAW,SAAUG,GAC7C,GAAIA,EAAY7zG,MAAO,CACrB,IAAI4pJ,EAAW/1C,EAAY7zG,MAAMsrB,KAE7Bs+H,GAAYA,EAAS76D,MACvBojB,EAAU53H,UAAUm5H,SAAS56H,KAAK4C,KAAMkuK,EAAS76D,OAGnD66D,EAAW/1C,EAAY7zG,MAAMurB,SAEbq+H,EAAS76D,MACvBojB,EAAU53H,UAAUm5H,SAAS56H,KAAK4C,KAAMkuK,EAAS76D,QAKvD,IAAI3sF,EAAW8rJ,EACfx1K,EAAOD,QAAU2pB,G,gBC/MjB,IAAI+vG,EAAY,EAAQ,KAEpB9nF,EAAS,EAAQ,IAEjByoB,EAAS,EAAQ,KAerB,SAASq7G,EAAgB/7C,EAAMC,GAC7BF,EAAUr5H,KAAK4C,KAAM02H,EAAMC,EAAS,WAAY,uBAGlDhoF,EAAO3B,SAASylI,EAAiBh8C,GAOjCg8C,EAAgB5zK,UAAU4sD,OAAS,SAAU0sE,GAC3C,IAAI9E,EAAQrzH,KAAKq4H,cAAcF,GAE3B9E,GACFrzH,KAAKg2K,UAAU3iD,EAAO8E,EAAYhoB,aAAa,GAGjD,IAAI+lE,EAASl2K,KAAKo4H,kBAAkBD,GAEhC+9C,GAGFl2K,KAAKg2K,UAAUE,EAAQ/9C,EAAYhoB,aAAa,GAGlDnwG,KAAKg4H,SAASG,IAYhBs6C,EAAgB5zK,UAAUm3K,UAAY,SAAUG,EAAUld,EAAW1lC,GACnE,GAAI0lC,GAAaA,EAAUt3J,OAAS,EAAG,CAErC,IAEIy0K,EACA5nK,EAHA+oH,EAAOv3H,KAAKq3H,SAAQ,GACpBkJ,EAAW04B,EAAU,GAGrBxrC,EAAM8F,EAAS,WAAa,OAE5BgN,EAAS9S,IAEXj/G,EAAK+xH,EAAS9S,GAAKxoH,aAAa,MAChCmxK,EAAa71C,EAAS9S,GAEjB8J,EAAKltH,SAAS+rK,IAGjB7+C,EAAKnyH,YAAYgxK,KAInB5nK,EAAK,KAAOxO,KAAK+2H,MAAQ,SAAW/2H,KAAKo3H,SACvCp3H,KAAKo3H,QACPg/C,EAAap2K,KAAK+E,cAAc,aACrBG,aAAa,KAAMsJ,GAC9B+oH,EAAKnyH,YAAYgxK,GACjB71C,EAAS9S,GAAO2oD,GAIlB,IAAIrC,EAAW/zK,KAAKk4H,YAAYqI,GAEhC,GAAIA,EAAS/sF,WAAa+sF,EAASpgI,OAAO25J,eAAiBvmC,EAAQ,CASjE,IAAI//E,EAAYtyC,MAAMrC,UAAUyE,MAAMlG,KAAKmjI,EAAS/sF,WAEpD4jB,EAAO9F,IAAIivE,EAAS/sF,UAAW+sF,EAASpgI,OAAO25J,aAAcv5B,EAAS/sF,WACtEugI,EAASxkI,MAAMgxF,GAEfA,EAAS/sF,UAAYA,OAErBugI,EAASxkI,MAAMgxF,GAGjB,IAAIkL,EAASzrI,KAAKq4H,cAAckI,GAChC61C,EAAWrkK,UAAY,GAQvBqkK,EAAWhxK,YAAYqmI,EAAOvlH,aAC9BiwJ,EAASjxK,aAAa,YAAa,QAAUsJ,EAAK,KAE9CyqJ,EAAUt3J,OAAS,GAErB3B,KAAKg2K,UAAUI,EAAYnd,EAAU31J,MAAM,GAAIiwH,QAI7C4iD,GACFA,EAASjxK,aAAa,YAAa,SAWzCutK,EAAgB5zK,UAAUm5H,SAAW,SAAUG,GAC7C,IAAIj5G,EAAOlf,KAEPm4H,EAAYhoB,aACdxhE,EAAOtoC,KAAK8xH,EAAYhoB,aAAa,SAAUowB,GACzCA,EAASltB,MACXojB,EAAU53H,UAAUm5H,SAAS56H,KAAK8hB,EAAMqhH,EAASltB,MAG/CktB,EAAS81C,UACX5/C,EAAU53H,UAAUm5H,SAAS56H,KAAK8hB,EAAMqhH,EAAS81C,cAMzD,IAAI3vJ,EAAW+rJ,EACfz1K,EAAOD,QAAU2pB,G,gBC3JjB,IAAI+vG,EAAY,EAAQ,KAiBxB,SAASi8C,EAAch8C,EAAMC,GAC3BF,EAAUr5H,KAAK4C,KAAM02H,EAAMC,EAAS,CAAC,UAAW,oBAAqB,cAkKvE,SAAS2/C,EAAUhyJ,GAEjB,OAAOA,IAAUA,EAAMw+E,YAAcx+E,EAAM0+E,eAAiB1+E,EAAM2+E,eAAiB3+E,EAAMy1F,gBAAkBz1F,EAAM21F,mBAAqB31F,EAAM41F,mBApLjI,EAAQ,IAmBdltE,SAAS0lI,EAAej8C,GAS/Bi8C,EAAc7zK,UAAUw1K,iBAAmB,SAAUL,EAAY77C,GAC/D,GAAIA,GAAem+C,EAAUn+C,EAAY7zG,OAAQ,CAE/C,IAAImpG,EAEJ,GAAI0K,EAAYo+C,WAEd9oD,EAAM0K,EAAYo+C,WACPv2K,KAAKq3H,SAAQ,GAEdhtH,SAAS8tH,EAAYo+C,aAE7Bv2K,KAAK03H,OAAOjK,QAIdA,EAAMztH,KAAKM,IAAI63H,GAGjBn4H,KAAKg4H,SAASG,GACd,IAAI3pH,EAAKi/G,EAAIxoH,aAAa,MAC1B+uK,EAAW1vJ,MAAM9S,OAAS,QAAUhD,EAAK,MAW7CkkK,EAAc7zK,UAAUyB,IAAM,SAAU63H,GACtC,IAAI1K,EAAMztH,KAAK+E,cAAc,UAU7B,OAJAozH,EAAYq+C,aAAer+C,EAAYq+C,cAAgBx2K,KAAKo3H,SAC5D3J,EAAIvoH,aAAa,KAAM,KAAOlF,KAAK+2H,MAAQ,WAAaoB,EAAYq+C,cACpEx2K,KAAKg2K,UAAU79C,EAAa1K,GAC5BztH,KAAK03H,OAAOjK,GACLA,GASTilD,EAAc7zK,UAAU4sD,OAAS,SAAUuoH,EAAY77C,GAGrD,GAAIm+C,EAFQn+C,EAAY7zG,OAEF,CACpB,IAAIpF,EAAOlf,KACXy2H,EAAU53H,UAAU4sD,OAAOruD,KAAK4C,KAAMm4H,GAAa,WACjDj5G,EAAK82J,UAAU79C,EAAaA,EAAYo+C,oBAI1Cv2K,KAAK4d,OAAOo2J,EAAY77C,IAQ5Bu6C,EAAc7zK,UAAU+e,OAAS,SAAUo2J,EAAY77C,GACrB,MAA5BA,EAAYq+C,eACdx2K,KAAK23H,UAAUq8C,GACfA,EAAW1vJ,MAAM9S,OAAS,KAW9BkhK,EAAc7zK,UAAUm3K,UAAY,SAAU79C,EAAa1K,GACzD,IAAIgpD,EAAWhpD,EAAIh/G,qBAAqB,gBAGtCgoK,EADsB,IAApBA,EAAS90K,OACA3B,KAAK+E,cAAc,gBAEnB0xK,EAAS,GAGtB,IAIItpJ,EACAC,EACAU,EACA+oF,EAPAvyF,EAAQ6zG,EAAY7zG,MACpBi7E,EAAS44B,EAAYtzG,OAAQszG,EAAYtzG,MAAM,IAAU,EACzD26E,EAAS24B,EAAYtzG,OAAQszG,EAAYtzG,MAAM,IAAU,EAO7D,GAAIP,EAAMw+E,YAAcx+E,EAAM0+E,eAAiB1+E,EAAM2+E,cACnD91E,EAAU7I,EAAM0+E,eAAiB,EACjC51E,EAAU9I,EAAM2+E,eAAiB,EACjCn1E,EAAOxJ,EAAMw+E,WACb+T,EAAQvyF,EAAMy+E,gBACT,KAAIz+E,EAAMy1F,eAQf,YADA/5G,KAAK23H,UAAUlK,EAAKnpG,GANpB6I,EAAU7I,EAAM21F,mBAAqB,EACrC7sF,EAAU9I,EAAM41F,mBAAqB,EACrCpsF,EAAOxJ,EAAMy1F,eACblD,EAAQvyF,EAAM01F,gBAOhBy8D,EAASvxK,aAAa,KAAMioB,EAAUoyE,GACtCk3E,EAASvxK,aAAa,KAAMkoB,EAAUoyE,GACtCi3E,EAASvxK,aAAa,cAAe2xG,GAGrC,IAEI6/D,EAFQ5oJ,EAAO,EAAIyxE,EAEI,IADfzxE,EAAO,EAAI0xE,EAEvBi3E,EAASvxK,aAAa,eAAgBwxK,GAEtCjpD,EAAIvoH,aAAa,IAAK,SACtBuoH,EAAIvoH,aAAa,IAAK,SACtBuoH,EAAIvoH,aAAa,QAAS4C,KAAK0tB,KAAK1H,EAAO,EAAI,KAAO,KACtD2/F,EAAIvoH,aAAa,SAAU4C,KAAK0tB,KAAK1H,EAAO,EAAI,KAAO,KACvD2/F,EAAIroH,YAAYqxK,GAGhBt+C,EAAYo+C,WAAa9oD,GAS3BilD,EAAc7zK,UAAUm5H,SAAW,SAAUG,GACvCA,EAAYo+C,YACd9/C,EAAU53H,UAAUm5H,SAAS56H,KAAK4C,KAAMm4H,EAAYo+C,aASxD,IAAI7vJ,EAAWgsJ,EACf11K,EAAOD,QAAU2pB,G,gBC1LjB,EAAQ,MAQR0pG,EANe,EAAQ,KAEQA,iBAIf,MAFF,EAAQ,O,gBCNtB,IAAIprD,EAAM,EAAQ,IAIdtT,EAFU,EAAQ,IAEOA,eAEzB8F,EAAe,EAAQ,IAEvB4wG,EAAY,EAAQ,KAEpB3lE,EAAc,EAAQ,KAEtBC,EAAa,EAAQ,KAErBwN,EAAW,EAAQ,KAEnBxhE,EAAc,EAAQ,KAEtBkrD,EAAS,EAAQ,KAEjBgJ,EAAO,EAAQ,KAEf3zD,EAAO,EAAQ,IAEfL,EAAY,EAAQ,KAEpBokF,EAAW,EAAQ,KAEnB2jD,EAAU,EAAQ,KAIlBp8E,EAAM3rD,EAAU2rD,IAChB3nE,EAAQ9qB,KAAK8qB,MACb6gB,EAAO3rC,KAAK2rC,KACZ1E,EAAMjnC,KAAKinC,IACXnX,EAAM9vB,KAAK8vB,IACX49B,EAAM1tD,KAAK0tD,IACX+B,EAAUzvD,KAAKitB,IAEnB,IAAKiwC,EAAI7L,gBAAiB,CACxB,IAEI0hC,EAAI,MACJ+7E,EAAK/7E,EAAI,EAITg8E,EAAkB,SAAUnnK,GAC9BA,EAAG4U,MAAMyN,QAAU,uDACnBriB,EAAGonK,UAAYj8E,EAAI,IAAMA,EACzBnrF,EAAGqnK,YAAc,OAOfC,EAAU,SAAUj5K,EAAG06F,EAAGxtF,GAC5B,MAAO,OAAS,CAAClN,EAAG06F,EAAGxtF,GAAG+D,KAAK,KAAO,KAGpC+gB,EAAS,SAAU5vB,EAAQ6mE,GACzBA,GAAS7mE,GAAU6mE,EAAM3hE,aAAelF,GAC1CA,EAAOiF,YAAY4hE,IAInBppD,EAAS,SAAUzd,EAAQ6mE,GACzBA,GAAS7mE,GAAU6mE,EAAM3hE,aAAelF,GAC1CA,EAAOmF,YAAY0hE,IAInBiwG,EAAY,SAAU1mE,EAAQF,EAAGC,GAEnC,OA/BgB,KA+BRz9E,WAAW09E,IAAW,GA9BnB,KA8BuC19E,WAAWw9E,IAAM,GAAcC,GAG/E+K,EAAe3Y,EAAW2Y,aAK1B67D,EAAqB,SAAUxnK,EAAImnG,EAAO7gF,GAC5C,IAAIkhF,EAAWkxD,EAAUplJ,MAAM6zF,GAC/B7gF,GAAWA,EAEPmU,MAAMnU,KACRA,EAAU,GAGRkhF,IACFxnG,EAAGmnG,MAAQmgE,EAAQ9/D,EAAS,GAAIA,EAAS,GAAIA,EAAS,IACtDxnG,EAAGsmB,QAAUA,EAAUkhF,EAAS,KA6IhCigE,EAAsB,SAAUC,EAAO71K,EAAM+iB,EAAO+yJ,GACtD,IAAIC,EAAkB,SAAT/1K,EACTmO,EAAK0nK,EAAM3oK,qBAAqBlN,GAAM,GAEvB,MAAf+iB,EAAM/iB,IAAiC,SAAhB+iB,EAAM/iB,KAAqB+1K,IAAWA,GAAUhzJ,EAAM6tB,YAC/EilI,EAAME,EAAS,SAAW,WAAa,OAEnChzJ,EAAM/iB,aAAiByxH,GACzBp1G,EAAOw5J,EAAO1nK,GAGXA,IACHA,EAAKinK,EAAQzpC,WAAW3rI,IAG1B+1K,EAnJiB,SAAU5nK,EAAI4U,EAAO+yJ,GAExC,IAP+BxgE,EAC3BK,EAMAtnE,EAAOtrB,EAAMsrB,KAEjB,GAAY,MAARA,EAEF,GAAIA,aAAgBojF,EAAU,CAC5B,IAAIukD,EACA7iH,EAAQ,EACR7mC,EAAQ,CAAC,EAAG,GAEZte,EAAQ,EAERioK,EAAY,EACZ3uI,EAAOwuI,EAAKhnI,kBACZonI,EAAY5uI,EAAKxX,MACjBqmJ,EAAa7uI,EAAKpV,OAEtB,GAAkB,WAAdmc,EAAKruC,KAAmB,CAC1Bg2K,EAAe,WACf,IAAI/jI,EAAY6jI,EAAK7jI,UACjB4sD,EAAK,CAACxwD,EAAK2C,EAAIklI,EAAW7nI,EAAK4C,EAAIklI,GACnCpjH,EAAK,CAAC1kB,EAAKknB,GAAK2gH,EAAW7nI,EAAKmnB,GAAK2gH,GAErClkI,IACFke,EAAe0uC,EAAIA,EAAI5sD,GACvBke,EAAe4C,EAAIA,EAAI9gB,IAGzB,IAAI6f,EAAKiB,EAAG,GAAK8rC,EAAG,GAChB9sC,EAAKgB,EAAG,GAAK8rC,EAAG,IACpB1rC,EAA6B,IAArB5sD,KAAKssD,MAAMf,EAAIC,GAAYxrD,KAAK+vB,IAE5B,IACV68B,GAAS,KAKPA,EAAQ,OACVA,EAAQ,OAEL,CACL6iH,EAAe,iBACXn3E,EAAK,CAACxwD,EAAK2C,EAAIklI,EAAW7nI,EAAK4C,EAAIklI,GACnClkI,EAAY6jI,EAAK7jI,UADrB,IAEI3uB,EAAQwyJ,EAAKxyJ,MACbwM,EAAQomJ,EACRhkJ,EAASikJ,EACb7pJ,EAAQ,EACPuyE,EAAG,GAAKv3D,EAAK0J,GAAKlhB,GAAQ+uE,EAAG,GAAKv3D,EAAK2J,GAAK/e,GAEzC+f,GACFke,EAAe0uC,EAAIA,EAAI5sD,GAGzBniB,GAASxM,EAAM,GAAKg2E,EACpBpnE,GAAU5O,EAAM,GAAKg2E,EACrB,IAAI5lE,EAAYsiC,EAAQlmC,EAAOoC,GAC/BlkB,EAAQ,EAAQ0lB,EAChBuiJ,EAAY,EAAI5nI,EAAK7xC,EAAIk3B,EAAY1lB,EAKvC,IAAIooK,EAAQ/nI,EAAKG,WAAWzsC,QAC5Bq0K,EAAMvwK,MAAK,SAAUwwK,EAAKC,GACxB,OAAOD,EAAIzvI,OAAS0vI,EAAI1vI,UAO1B,IALA,IAAIxmC,EAASg2K,EAAMh2K,OAEfm2K,EAAoB,GACpBvhE,EAAS,GAEJt5G,EAAI,EAAGA,EAAI0E,EAAQ1E,IAAK,CAC/B,IAAIwmB,EAAOk0J,EAAM16K,GACb86K,GAjFqBlhE,EAiFYpzF,EAAKozF,MAhF5CK,WAAWkxD,EAAUplJ,MAAM6zF,GACxB,CAACmgE,EAAQ9/D,EAAS,GAAIA,EAAS,GAAIA,EAAS,IAAKA,EAAS,KAgF3DX,EAAO/zG,KAAKihB,EAAK0kB,OAASqvI,EAAYjoK,EAAQ,IAAMwoK,EAAc,IAExD,IAAN96K,GAAWA,IAAM0E,EAAS,GAC5Bm2K,EAAkBt1K,KAAKu1K,GAI3B,GAAIp2K,GAAU,EAAG,CACf,IAAIq2K,EAASF,EAAkB,GAAG,GAC9BG,EAASH,EAAkB,GAAG,GAC9BI,EAAWJ,EAAkB,GAAG,GAAKxzJ,EAAM0R,QAC3CmiJ,EAAWL,EAAkB,GAAG,GAAKxzJ,EAAM0R,QAC/CtmB,EAAGnO,KAAOg2K,EACV7nK,EAAGiN,OAAS,OACZjN,EAAGme,MAAQ,OACXne,EAAGglD,MAAQA,EACXhlD,EAAGmnG,MAAQmhE,EACXtoK,EAAGuoK,OAASA,EACZvoK,EAAG6mG,OAASA,EAAOvnG,KAAK,KAGxBU,EAAGsmB,QAAUmiJ,EAEbzoK,EAAGyoK,SAAWD,EAGK,WAAjBX,IACF7nK,EAAG0oK,cAAgBvqJ,EAAM7e,KAAK,WAIhCkoK,EAAmBxnK,EAAIkgC,EAAMtrB,EAAM0R,SAuC5BqiJ,CAAe3oK,EAAI4U,EAAO+yJ,GAlChB,SAAU3nK,EAAI4U,GAU/BA,EAAMqsB,WACRjhC,EAAG4oK,UAAYh0J,EAAMqsB,SAAS3hC,KAAK,MAGjB,MAAhBsV,EAAMurB,QAAoBvrB,EAAMurB,kBAAkBmjF,GACpDkkD,EAAmBxnK,EAAI4U,EAAMurB,OAAQvrB,EAAM0R,SAmBAuiJ,CAAiB7oK,EAAI4U,GAChEyL,EAAOqnJ,EAAO1nK,KAEd0nK,EAAME,EAAS,SAAW,WAAa,QACvC15J,EAAOw5J,EAAO1nK,KAIdokD,EAAS,CAAC,GAAI,GAAI,IAwLtB7kB,EAAKpwC,UAAU25K,SAAW,SAAUC,GAClC,IAAIn0J,EAAQtkB,KAAKskB,MACb8yJ,EAAQp3K,KAAK04K,OAEZtB,IACHA,EAAQT,EAAQzpC,WAAW,SAC3B2pC,EAAgBO,GAChBp3K,KAAK04K,OAAStB,GAGhBD,EAAoBC,EAAO,OAAQ9yJ,EAAOtkB,MAC1Cm3K,EAAoBC,EAAO,SAAU9yJ,EAAOtkB,MAC5C,IAAI3C,EAAI2C,KAAKwzC,UACTmlI,EAAqB,MAALt7K,EAChBu7K,EAAWxB,EAAM3oK,qBAAqB,UAAU,GAEpD,GAAImqK,EAAU,CACZ,IAAIzmI,EAAY7tB,EAAM6tB,UAKtB,GAAIwmI,IAAkBr0J,EAAM+tB,cAAe,CACzC,IAAIwqB,EAAMx/D,EAAE,GAAKA,EAAE,GAAKA,EAAE,GAAKA,EAAE,GACjC80C,GAAasB,EAAK1E,EAAI8tB,IAGxB+7G,EAASC,OAAS1mI,EAAY,KAGhC,IAAIjD,EAAOlvC,KAAKkvC,OAASlvC,KAAKkvC,KAAO,IAAIN,GAErC5uC,KAAKmvC,cACPD,EAAK+B,YACL/B,EAAKI,kBAAmB,EACxBtvC,KAAKmxC,UAAUjC,EAAMlvC,KAAKoxC,OAC1BlC,EAAKwuD,WACL19F,KAAKmvC,aAAc,GAGrBioI,EAAMloI,KA9Ne,SAAUA,EAAM7xC,GACrC,IAMIkvK,EACAt4C,EACAj2B,EACA/gG,EACAyhG,EACAC,EAXAnE,EAAID,EAAIC,EACRE,EAAIH,EAAIG,EACRD,EAAIF,EAAIE,EACRG,EAAIL,EAAIK,EACRD,EAAIJ,EAAII,EACRxsD,EAAM,GAON5rB,EAAO2sB,EAAK3sB,KACZyxG,EAAa9kF,EAAKjoC,MAEtB,IAAKhK,EAAI,EAAGA,EAAI+2H,GAAa,CAK3B,OAHAC,EAAS,GACTs4C,EAAS,EAFTvuE,EAAMz7E,EAAKtlB,MAKT,KAAKu9F,EACHy5B,EAAS,MACTs4C,EAAS,EACT7tE,EAAKn8E,EAAKtlB,KACV0hG,EAAKp8E,EAAKtlB,KACV62D,EAAO,GAAG,GAAK4qC,EACf5qC,EAAO,GAAG,GAAK6qC,EACf,MAEF,KAAKlE,EACHw5B,EAAS,MACTs4C,EAAS,EACT7tE,EAAKn8E,EAAKtlB,KACV0hG,EAAKp8E,EAAKtlB,KACV62D,EAAO,GAAG,GAAK4qC,EACf5qC,EAAO,GAAG,GAAK6qC,EACf,MAEF,KAAKhE,EACL,KAAKD,EACHu5B,EAAS,MACTs4C,EAAS,EACT,IAII7vE,EACAC,EALA9lC,EAAKt0C,EAAKtlB,KACVs5D,EAAKh0C,EAAKtlB,KACV65D,EAAKv0C,EAAKtlB,KACV85D,EAAKx0C,EAAKtlB,KAIV+gG,IAAQrD,GAEV+B,EAAK5lC,EACL6lC,EAAK5lC,EACLD,GAAMA,EAAK,EAAID,GAAM,EACrBE,GAAMA,EAAK,EAAIR,GAAM,EACrBM,GAAM6nC,EAAK,EAAI7nC,GAAM,EACrBN,GAAMooC,EAAK,EAAIpoC,GAAM,IAErBmmC,EAAKn6E,EAAKtlB,KACV0/F,EAAKp6E,EAAKtlB,MAGZ62D,EAAO,GAAG,GAAK+C,EACf/C,EAAO,GAAG,GAAKyC,EACfzC,EAAO,GAAG,GAAKgD,EACfhD,EAAO,GAAG,GAAKiD,EACfjD,EAAO,GAAG,GAAK4oC,EACf5oC,EAAO,GAAG,GAAK6oC,EACf+B,EAAKhC,EACLiC,EAAKhC,EACL,MAEF,KAAK/B,EACH,IAAIroD,EAAI,EACJC,EAAI,EACJkhB,EAAK,EACLC,EAAK,EACLe,EAAQ,EAERr3D,IAEFk1C,EAAIl1C,EAAE,GACNm1C,EAAIn1C,EAAE,GACNq2D,EAAKjgB,EAAKp2C,EAAE,GAAKA,EAAE,GAAKA,EAAE,GAAKA,EAAE,IACjCs2D,EAAKlgB,EAAKp2C,EAAE,GAAKA,EAAE,GAAKA,EAAE,GAAKA,EAAE,IACjCq3D,EAAQ5sD,KAAKssD,OAAO/2D,EAAE,GAAKs2D,EAAIt2D,EAAE,GAAKq2D,IAGxC,IAAIspC,EAAKz6E,EAAKtlB,KACVggG,EAAK16E,EAAKtlB,KACV8hG,EAAKx8E,EAAKtlB,KACV+hG,EAAKz8E,EAAKtlB,KACVigG,EAAa36E,EAAKtlB,KAAOy3D,EACzByoC,EAAW56E,EAAKtlB,KAAOigG,EAAaxoC,EAGxCz3D,IACA,IAAIk3H,EAAY5xG,EAAKtlB,KACjBugG,EAAKR,EAAKplE,EAAIslE,GAAc6B,EAC5BtB,EAAKR,EAAKznC,EAAI0nC,GAAc8B,EAG5Bz9F,GAFAs1D,EAAKmmC,EAAKplE,EAAIulE,GAAY4B,EAC1BxoC,EAAK0mC,EAAKznC,EAAI2nC,GAAY6B,EACnBm1B,EAAY,OAAS,QAE5BrsH,KAAKinC,IAAIyuD,EAAK3mC,GAAM,OAElB/uD,KAAKinC,IAAIouD,EAAWD,GAAc,IAGhCi3B,IACF32B,GAAM,OAIJ11F,KAAKinC,IAAI0uD,EAAKR,GAAM,KAClBk3B,GAAa32B,EAAKR,IAAOm3B,GAAa32B,EAAKR,EAC7CzmC,GAAM,MAENA,GAAM,MAEC49D,GAAa12B,EAAKR,IAAOk3B,GAAa12B,EAAKR,EACpDpmC,GAAM,MAENA,GAAM,OAKZ1oB,EAAI3rC,KAAKjB,EAAMqxB,IAAQoqE,EAAK+B,GAAMrrC,EAAKnhB,GAAKsoD,EAAI+7E,GA7V5C,IA6VwDhkJ,IAAQqqE,EAAK+B,GAAMrrC,EAAKnhB,GAAKqoD,EAAI+7E,GA7VzF,IA6VqGhkJ,IAAQoqE,EAAK+B,GAAMrrC,EAAKnhB,GAAKsoD,EAAI+7E,GA7VtI,IA6VkJhkJ,IAAQqqE,EAAK+B,GAAMrrC,EAAKnhB,GAAKqoD,EAAI+7E,GA7VnL,IA6V+LhkJ,GAAO4qE,EAAK9pC,EAAKnhB,GAAKsoD,EAAI+7E,GA7VzN,IA6VqOhkJ,GAAO6qE,EAAK9pC,EAAKnhB,GAAKqoD,EAAI+7E,GA7V/P,IA6V2QhkJ,GAAOikC,EAAKnD,EAAKnhB,GAAKsoD,EAAI+7E,GA7VrS,IA6ViThkJ,GAAO2jC,EAAK5C,EAAKnhB,GAAKqoD,EAAI+7E,IAC/Ul4E,EAAK7nC,EACL8nC,EAAKpoC,EACL,MAEF,KAAKgkC,EAAIO,EACP,IAAIsF,EAAKtsC,EAAO,GACZQ,EAAKR,EAAO,GAEhBssC,EAAG,GAAK79E,EAAKtlB,KACbmjG,EAAG,GAAK79E,EAAKtlB,KAEbq3D,EAAG,GAAK8rC,EAAG,GAAK79E,EAAKtlB,KACrBq3D,EAAG,GAAK8rC,EAAG,GAAK79E,EAAKtlB,KAEjBI,IACFq0D,EAAe0uC,EAAIA,EAAI/iG,GACvBq0D,EAAe4C,EAAIA,EAAIj3D,IAGzB+iG,EAAG,GAAKxtE,EAAMwtE,EAAG,GAAKvF,EAAI+7E,GAC1BtiH,EAAG,GAAK1hC,EAAM0hC,EAAG,GAAKumC,EAAI+7E,GAC1Bx2E,EAAG,GAAKxtE,EAAMwtE,EAAG,GAAKvF,EAAI+7E,GAC1BtiH,EAAG,GAAK1hC,EAAM0hC,EAAG,GAAKumC,EAAI+7E,GAC1BzoI,EAAI3rC,KACJ,MAAO49F,EAAG,GAtXN,IAsXiBA,EAAG,GACxB,MAAO9rC,EAAG,GAvXN,IAuXiB8rC,EAAG,GACxB,MAAO9rC,EAAG,GAxXN,IAwXiBA,EAAG,GACxB,MAAO8rC,EAAG,GAzXN,IAyXiB9rC,EAAG,IACxB,MAEF,KAAKimC,EAAIM,EAEP1sD,EAAI3rC,KAAK,OAGb,GAAI+pK,EAAS,EAAG,CACdp+H,EAAI3rC,KAAKyxH,GAET,IAAK,IAAIvhE,EAAI,EAAGA,EAAI65G,EAAQ75G,IAAK,CAC/B,IAAI3zD,EAAI+0D,EAAOpB,GACfr1D,GAAKq0D,EAAe3yD,EAAGA,EAAG1B,GAE1B8wC,EAAI3rC,KAAKowB,EAAM7zB,EAAE,GAAK87F,EAAI+7E,GAxYtB,IAwYkChkJ,EAAM7zB,EAAE,GAAK87F,EAAI+7E,GAAKlkH,EAAI65G,EAAS,EAxYrE,IAwYiF,MAK3F,OAAOp+H,EAAIn/B,KAAK,IA4CHwlH,CAAiBtlF,EAAMlvC,KAAKwzC,WACzC4jI,EAAM9yJ,MAAMw0J,OAAS7B,EAAUj3K,KAAKuwG,OAAQvwG,KAAKqwG,EAAGrwG,KAAKswG,IAEzDvgF,EAAO0oJ,EAASrB,GAEE,MAAd9yJ,EAAMtf,KACRhF,KAAK2xC,aAAa8mI,EAASz4K,KAAKqwC,mBAEhCrwC,KAAK+4K,eAAeN,IAIxBxpI,EAAKpwC,UAAUm6K,SAAW,SAAUP,GAClC76J,EAAO66J,EAASz4K,KAAK04K,QACrB14K,KAAK+4K,eAAeN,IAGtBxpI,EAAKpwC,UAAUo6K,MAAQ,SAAUR,GAC/B1oJ,EAAO0oJ,EAASz4K,KAAK04K,QACrB14K,KAAKk5K,eAAeT,IAatB7+E,EAAO/6F,UAAU25K,SAAW,SAAUC,GACpC,IAGIU,EACAC,EAXkBnL,EAOlB3pJ,EAAQtkB,KAAKskB,MACb7N,EAAQ6N,EAAM7N,MAKlB,GAXsB,iBAFAw3J,EAaVx3J,IAXsBw3J,EAAIxoF,SAAyC,QAA9BwoF,EAAIxoF,QAAQ3jE,cAWzC,CAClB,IAAIxd,EAAMmS,EAAMnS,IAEhB,GAAIA,IAAQtE,KAAKq5K,UACfF,EAAKn5K,KAAKs5K,YACVF,EAAKp5K,KAAKu5K,iBACL,CACL,IAAIC,EAAoB/iK,EAAMgjK,aAC1BC,EAAkBF,EAAkBnoJ,MACpCsoJ,EAAmBH,EAAkB/lJ,OACzC+lJ,EAAkBnoJ,MAAQ,OAC1BmoJ,EAAkB/lJ,OAAS,OAE3B0lJ,EAAK1iK,EAAM4a,MACX+nJ,EAAK3iK,EAAMgd,OAEX+lJ,EAAkBnoJ,MAAQqoJ,EAC1BF,EAAkB/lJ,OAASkmJ,EAE3B35K,KAAKq5K,UAAY/0K,EACjBtE,KAAKs5K,YAAcH,EACnBn5K,KAAKu5K,aAAeH,EAGtB3iK,EAAQnS,OAEJmS,IAAUzW,KAAKq5K,YACjBF,EAAKn5K,KAAKs5K,YACVF,EAAKp5K,KAAKu5K,cAId,GAAK9iK,EAAL,CAIA,IAAI87B,EAAIjuB,EAAMiuB,GAAK,EACfC,EAAIluB,EAAMkuB,GAAK,EACfqiF,EAAKvwG,EAAM+M,MACXyjG,EAAKxwG,EAAMmP,OACXmmJ,EAAKt1J,EAAM21E,OACX4/E,EAAKv1J,EAAM41E,QACXxmC,EAAKpvC,EAAMovC,IAAM,EACjBC,EAAKrvC,EAAMqvC,IAAM,EACjBmmH,EAAUF,GAAMC,EAChBzC,EAAQp3K,KAAK04K,OAEZtB,IAGHA,EAAQT,EAAQ/xK,IAAIG,cAAc,OAClC8xK,EAAgBO,GAChBp3K,KAAK04K,OAAStB,GAGhB,IAEI/5K,EAFA08K,EAAa3C,EAAM9yJ,MACnB01J,GAAc,EAEdz6E,EAAS,EACTC,EAAS,EASb,GAPIx/F,KAAKwzC,YACPn2C,EAAI2C,KAAKwzC,UACT+rD,EAAS9rD,EAAKp2C,EAAE,GAAKA,EAAE,GAAKA,EAAE,GAAKA,EAAE,IACrCmiG,EAAS/rD,EAAKp2C,EAAE,GAAKA,EAAE,GAAKA,EAAE,GAAKA,EAAE,IACrC28K,EAAc38K,EAAE,IAAMA,EAAE,IAGtB28K,EAAa,CAMf,IAAI55E,EAAK,CAAC7tD,EAAGC,GACT8hB,EAAK,CAAC/hB,EAAIsiF,EAAIriF,GACd+hB,EAAK,CAAChiB,EAAGC,EAAIsiF,GACbz0B,EAAK,CAAC9tD,EAAIsiF,EAAIriF,EAAIsiF,GACtBpjE,EAAe0uC,EAAIA,EAAI/iG,GACvBq0D,EAAe4C,EAAIA,EAAIj3D,GACvBq0D,EAAe6C,EAAIA,EAAIl3D,GACvBq0D,EAAe2uC,EAAIA,EAAIhjG,GACvB,IAAIo6D,EAAOF,EAAQ6oC,EAAG,GAAI9rC,EAAG,GAAIC,EAAG,GAAI8rC,EAAG,IACvC3oC,EAAOH,EAAQ6oC,EAAG,GAAI9rC,EAAG,GAAIC,EAAG,GAAI8rC,EAAG,IACvC45E,EAAkB,GACtBA,EAAgBz3K,KAAK,OAAQnF,EAAE,GAAKkiG,EArjB5B,IAqjB2C,OAAQliG,EAAE,GAAKmiG,EArjB1D,IAqjByE,OAAQniG,EAAE,GAAKkiG,EArjBxF,IAqjBuG,OAAQliG,EAAE,GAAKmiG,EArjBtH,IAqjBqI,MAAO5sE,EAAM2f,EAAIgtD,EAASliG,EAAE,IArjBjK,IAqjB6K,MAAOu1B,EAAM4f,EAAIgtD,EAASniG,EAAE,KACjN08K,EAAWtjJ,QAAU,KAAO7D,EAAM6kC,GAAQ,MAAQ7kC,EAAM8kC,GAAQ,OAEhEqiH,EAAWvoK,OAAS0oK,4CAAoCD,EAAgBjrK,KAAK,IAAM,4BAE/E3R,IACFk1C,EAAIA,EAAIgtD,EAASliG,EAAE,GACnBm1C,EAAIA,EAAIgtD,EAASniG,EAAE,IAGrB08K,EAAWvoK,OAAS,GACpBuoK,EAAWxjJ,KAAO3D,EAAM2f,GAAK,KAC7BwnI,EAAW9oK,IAAM2hB,EAAM4f,GAAK,KAG9B,IAAI2nI,EAAUn6K,KAAKo6K,SACfC,EAASr6K,KAAKs6K,QAEbH,IACHA,EAAUxD,EAAQ/xK,IAAIG,cAAc,OACpC/E,KAAKo6K,SAAWD,GAGlB,IAAII,EAAeJ,EAAQ71J,MAE3B,GAAIw1J,EAAS,CAEX,GAAMX,GAAMC,EAmBVmB,EAAalpJ,MAAQuB,EAAM2sE,EAAS45E,EAAKtkD,EAAK+kD,GAAM,KACpDW,EAAa9mJ,OAASb,EAAM4sE,EAAS45E,EAAKtkD,EAAK+kD,GAAM,SApBtC,CACf,IAAIW,EAAW,IAAIznD,MACflxH,EAAO7B,KAEXw6K,EAASh0I,OAAS,WAChBg0I,EAASh0I,OAAS,KAClB2yI,EAAKqB,EAASnpJ,MACd+nJ,EAAKoB,EAAS/mJ,OAEd8mJ,EAAalpJ,MAAQuB,EAAM2sE,EAAS45E,EAAKtkD,EAAK+kD,GAAM,KACpDW,EAAa9mJ,OAASb,EAAM4sE,EAAS45E,EAAKtkD,EAAK+kD,GAAM,KAErDh4K,EAAKy3K,YAAcH,EACnBt3K,EAAK03K,aAAeH,EACpBv3K,EAAKw3K,UAAY5iK,GAGnB+jK,EAASl2K,IAAMmS,EAMZ4jK,KACHA,EAAS1D,EAAQ/xK,IAAIG,cAAc,QAC5Buf,MAAM8V,SAAW,SACxBp6B,KAAKs6K,QAAUD,GAGjB,IAAII,EAAcJ,EAAO/1J,MACzBm2J,EAAYppJ,MAAQuB,GAAOiiG,EAAKnhE,EAAKmhE,EAAK+kD,GAAMr6E,GAChDk7E,EAAYhnJ,OAASb,GAAOkiG,EAAKnhE,EAAKmhE,EAAK+kD,GAAMr6E,GACjDi7E,EAAYjpK,OAAS0oK,gDAAwCxmH,EAAKmhE,EAAK+kD,EAAKr6E,EAAS,QAAU5rC,EAAKmhE,EAAK+kD,EAAKr6E,EAAS,IAElH66E,EAAOh1K,YACV+xK,EAAMhyK,YAAYi1K,GAGhBF,EAAQ90K,aAAeg1K,GACzBA,EAAOj1K,YAAY+0K,QAGrBI,EAAalpJ,MAAQuB,EAAM2sE,EAASs1B,GAAM,KAC1C0lD,EAAa9mJ,OAASb,EAAM4sE,EAASs1B,GAAM,KAC3CsiD,EAAMhyK,YAAY+0K,GAEdE,GAAUA,EAAOh1K,aACnB+xK,EAAM9xK,YAAY+0K,GAClBr6K,KAAKs6K,QAAU,MAInB,IAAII,EAAY,GACZ39G,EAAQz4C,EAAM0R,QAEd+mC,EAAQ,IACV29G,GAAa,kBAAoB9nJ,EAAc,IAARmqC,GAAe,MAGxD29G,GAAaR,0DAAkDzjK,EAAQ,wBACvE8jK,EAAa/oK,OAASkpK,EACtBtD,EAAM9yJ,MAAMw0J,OAAS7B,EAAUj3K,KAAKuwG,OAAQvwG,KAAKqwG,EAAGrwG,KAAKswG,IAEzDvgF,EAAO0oJ,EAASrB,GAEE,MAAd9yJ,EAAMtf,MACRhF,KAAK2xC,aAAa8mI,EAASz4K,KAAKqwC,qBAIpCupD,EAAO/6F,UAAUm6K,SAAW,SAAUP,GACpC76J,EAAO66J,EAASz4K,KAAK04K,QACrB14K,KAAK04K,OAAS,KACd14K,KAAKs6K,QAAU,KACft6K,KAAKo6K,SAAW,KAChBp6K,KAAK+4K,eAAeN,IAGtB7+E,EAAO/6F,UAAUo6K,MAAQ,SAAUR,GACjC1oJ,EAAO0oJ,EAASz4K,KAAK04K,QACrB14K,KAAKk5K,eAAeT,IAOtB,IAsCIkC,EArCAC,EAAiB,GACjBC,EAAsB,EAEtBC,EAASh4K,SAASiC,cAAc,OAoCpC09F,EAAY71D,UAAU,eAAe,SAAU5nC,EAAMi8G,GACnD,IAAIr8G,EAAM+xK,EAAQ/xK,IAEb+1K,KACHA,EAAgB/1K,EAAIG,cAAc,QACpBuf,MAAMyN,QAAU,wFAC9B4kJ,EAAQ/xK,IAAI0gB,KAAKlgB,YAAYu1K,IAG/B,IACEA,EAAcr2J,MAAMg/E,KAAO2d,EAC3B,MAAO3kG,IAMT,OAHAq+J,EAAc5oK,UAAY,GAE1B4oK,EAAcv1K,YAAYR,EAAIijB,eAAe7iB,IACtC,CACLqsB,MAAOspJ,EAAcjoJ,gBAmMzB,IAhMA,IAAIy+F,EAAU,IAAI35D,EAEd7lB,EAAe,SAAU8mI,EAAS5vI,EAAMgpF,EAAUkpD,GACpD,IAAIz2J,EAAQtkB,KAAKskB,MAEjBtkB,KAAKowC,SAAWsyD,EAAWG,mBAAmBv+E,GAAO,GACrD,IAAItf,EAAOsf,EAAMtf,KAIjB,GAFQ,MAARA,IAAiBA,GAAQ,IAEpBA,EAAL,CAMA,GAAIsf,EAAMq/E,KAAM,CACd,IAAI6X,EAAe/Y,EAAYiZ,cAAc12G,EAAMsf,GACnDtf,EAAO,GAEP,IAAK,IAAI/H,EAAI,EAAGA,EAAIu+G,EAAaa,MAAM16G,OAAQ1E,IAAK,CAIlD,IAHA,IAAI2Z,EAAS4kG,EAAaa,MAAMp/G,GAAG2Z,OAC/BmoG,EAAW,GAEN73G,EAAI,EAAGA,EAAI0P,EAAOjV,OAAQuF,IACjC63G,EAASv8G,KAAKoU,EAAO1P,GAAGlC,MAG1BA,EAAKxC,KAAKu8G,EAAS/vG,KAAK,KAG1BhK,EAAOA,EAAKgK,KAAK,MAGnB,IAAIujC,EACAC,EACAwoI,EAAQ12J,EAAMi/E,UACd03E,EAAgB32J,EAAMk/E,kBACtBwd,EA7Fa,SAAUk6D,GAC3B,IAAIl6D,EAAY45D,EAAeM,GAE/B,IAAKl6D,EAAW,CAEV65D,EARkB,MASpBA,EAAsB,EACtBD,EAAiB,IAGnB,IACI75D,EADAz8F,EAAQw2J,EAAOx2J,MAGnB,IACEA,EAAMg/E,KAAO43E,EACbn6D,EAAaz8F,EAAMy8F,WAAW53G,MAAM,KAAK,GACzC,MAAO0E,IAETmzG,EAAY,CACV18F,MAAOA,EAAM08F,WAzBQ,SA0BrBm6D,QAAS72J,EAAM82J,aA1BM,SA2BrBvC,OAAQv0J,EAAMsQ,YA3BO,SA4BrBgoB,KAAyC,EAAnC/pB,WAAWvO,EAAMw8F,UAAY,IACnCu6D,OAAQt6D,GAAc,mBAExB65D,EAAeM,GAAcl6D,EAC7B65D,IAGF,OAAO75D,EAgESs6D,CAAah3J,EAAMg/E,MAE/BA,EAAO0d,EAAU18F,MAAQ,IAAM08F,EAAUm6D,QAAU,IAAMn6D,EAAU63D,OAAS,IAAM73D,EAAUpkE,KAAO,OAASokE,EAAUq6D,OAAS,IACnIxpD,EAAWA,GAAYpvB,EAAYpyD,gBAAgBrrC,EAAMs+F,EAAM03E,EAAOC,EAAe32J,EAAMm/E,YAAan/E,EAAMo/E,gBAE9G,IAAIrmG,EAAI2C,KAAKwzC,UAQb,GANIn2C,IAAM09K,IACR5pD,EAAQ5pH,KAAKshC,GACbsoF,EAAQz/D,eAAer0D,GACvBwrC,EAAOsoF,GAGJ4pD,EAgBHxoI,EAAI1J,EAAK0J,EACTC,EAAI3J,EAAK2J,MAjBM,CACf,IAAI4oE,EAAe92F,EAAM82F,aAEzB,GAAIA,aAAwBl6G,MAC1BqxC,EAAI1J,EAAK0J,EAAI8oE,EAAaD,EAAa,GAAIvyE,EAAKxX,OAChDmhB,EAAI3J,EAAK2J,EAAI6oE,EAAaD,EAAa,GAAIvyE,EAAKpV,QAChDunJ,EAAQA,GAAS,WACZ,CACL,IAAIn5G,EAAM7hE,KAAKuxG,sBAAwBvxG,KAAKuxG,sBAAsB,GAAIjtF,EAAOukB,GAAQ45D,EAAY8O,sBAAsB,GAAIjtF,EAAOukB,GAClI0J,EAAIsvB,EAAItvB,EACRC,EAAIqvB,EAAIrvB,EAERwoI,EAAQA,GAASn5G,EAAI0hC,UACrB03E,EAAgBA,GAAiBp5G,EAAI2hC,mBAOzCjxD,EAAIkwD,EAAYuZ,YAAYzpE,EAAGs/E,EAASxgG,MAAO2pJ,GAC/CxoI,EAAIiwD,EAAYyZ,YAAY1pE,EAAGq/E,EAASp+F,OAAQwnJ,GAEhDzoI,GAAKq/E,EAASp+F,OAAS,EAoCvB,IAEIg4G,EACA8vC,EACAC,EAJAtuC,EAAaypC,EAAQzpC,WACrBuuC,EAAYz7K,KAAK07K,WAKhBD,EAqBHF,GADA9vC,GADA+vC,EAASC,EAAUhoK,YACHtD,aACIA,aApBpBsrK,EAAYvuC,EAAW,QACvBzB,EAASyB,EAAW,QACpBquC,EAAaruC,EAAW,YACxBsuC,EAAStuC,EAAW,QAGpBquC,EAAWj3J,MAAM,gBAAkB,OACnCuyJ,EAAgB4E,GAChBhwC,EAAOkwC,YAAa,EACpBJ,EAAWnzJ,IAAK,EAChBqzJ,EAAU7vI,KAAO,MACjB6vI,EAAU7gJ,GAAK,YACf7K,EAAO0rJ,EAAWD,GAClBzrJ,EAAO0rJ,EAAWhwC,GAClB17G,EAAO0rJ,EAAWF,GAClBv7K,KAAK07K,WAAaD,GAQpB,IAAI//C,EAAS,CAACnpF,EAAGC,GACbopI,EAAiBH,EAAUn3J,MAE3BjnB,GAAK09K,GACPrpH,EAAegqE,EAAQA,EAAQr+H,GAC/Bm+K,EAAOpzJ,IAAK,EACZozJ,EAAOpkH,OAAS/5D,EAAE,GAAG6jH,QAAQ,GAt3BrB,IAs3BkC7jH,EAAE,GAAG6jH,QAAQ,GAt3B/C,IAs3B4D7jH,EAAE,GAAG6jH,QAAQ,GAt3BzE,IAs3BsF7jH,EAAE,GAAG6jH,QAAQ,GAAK,OAEhHs6D,EAAOrzI,QAAUvV,EAAM8oG,EAAO,KAAO,GAAK,KAAO9oG,EAAM8oG,EAAO,KAAO,GAErE8/C,EAAO5nH,OAAS,MAChBgoH,EAAerlJ,KAAO,MACtBqlJ,EAAe3qK,IAAM,QAErBuqK,EAAOpzJ,IAAK,EACZwzJ,EAAerlJ,KAAO3D,EAAM2f,GAAK,KACjCqpI,EAAe3qK,IAAM2hB,EAAM4f,GAAK,MAGlC+oI,EAAWv5J,OAr3BJlV,OAq3BiC9H,GAr3BvBgD,QAAQ,KAAM,SAASA,QAAQ,KAAM,UAu3BtD,IACEuzK,EAAWj3J,MAAMg/E,KAAOA,EAE1B,MAAOz1F,IAEPspK,EAAoBsE,EAAW,OAAQ,CACrC7rI,KAAMtrB,EAAM61F,SACZnkF,QAAS1R,EAAM0R,SACdh2B,MACHm3K,EAAoBsE,EAAW,SAAU,CACvC5rI,OAAQvrB,EAAMu/E,WACd7tE,QAAS1R,EAAM0R,QACf2a,SAAUrsB,EAAMqsB,UAAY,MAE3B3wC,MACHy7K,EAAUn3J,MAAMw0J,OAAS7B,EAAUj3K,KAAKuwG,OAAQvwG,KAAKqwG,EAAGrwG,KAAKswG,IAE7DvgF,EAAO0oJ,EAASgD,KAGd1C,EAAiB,SAAUN,GAC7B76J,EAAO66J,EAASz4K,KAAK07K,YACrB17K,KAAK07K,WAAa,MAGhBxC,EAAiB,SAAUT,GAC7B1oJ,EAAO0oJ,EAASz4K,KAAK07K,aAGnBtwK,EAAO,CAAC8kG,EAAUxhE,EAAakrD,EAAQ3qD,EAAM2zD,GAExC3lG,EAAI,EAAGA,EAAImO,EAAKzJ,OAAQ1E,IAAK,CACpC,IAAIoL,EAAQ+C,EAAKnO,GAAG4B,UACpBwJ,EAAMspC,aAAeA,EACrBtpC,EAAM0wK,eAAiBA,EACvB1wK,EAAM6wK,eAAiBA,EAGzBt2E,EAAK/jG,UAAU25K,SAAW,SAAUC,GAClC,IAAIn0J,EAAQtkB,KAAKskB,MAEC,MAAdA,EAAMtf,KACRhF,KAAK2xC,aAAa8mI,EAAS,CACzBlmI,EAAGjuB,EAAMiuB,GAAK,EACdC,EAAGluB,EAAMkuB,GAAK,EACdnhB,MAAO,EACPoC,OAAQ,GACPzzB,KAAKqwC,mBAAmB,GAE3BrwC,KAAK+4K,eAAeN,IAIxB71E,EAAK/jG,UAAUm6K,SAAW,SAAUP,GAClCz4K,KAAK+4K,eAAeN,IAGtB71E,EAAK/jG,UAAUo6K,MAAQ,SAAUR,GAC/Bz4K,KAAKk5K,eAAeT,M,gBCx+BxB,IAAI7rG,EAAW,EAAQ,KAEnB+pG,EAAU,EAAQ,KAIlBtwK,EAFQ,EAAQ,IAEHA,KAOjB,SAASo3J,EAAW54J,GAClB,OAAO6uB,SAAS7uB,EAAK,IAOvB,SAASg3K,EAAW/5K,EAAM4rH,GACxBipD,EAAQxpC,UACRntI,KAAK8B,KAAOA,EACZ9B,KAAK0tH,QAAUA,EACf,IAAIouD,EAAch5K,SAASiC,cAAc,OACrC0zK,EAAU31K,SAASiC,cAAc,OACrC+2K,EAAYx3J,MAAMyN,QAAU,mFAC5B0mJ,EAAQn0J,MAAMyN,QAAU,kCACxBjwB,EAAKsD,YAAY02K,GACjB97K,KAAK+7K,SAAWtD,EAChBz4K,KAAKg8K,aAAeF,EACpB97K,KAAKyvH,SAEL,IAAItB,EAAoBT,EAAQU,eAC5BC,EAAkBX,EAAQY,aAE9BZ,EAAQU,eAAiB,SAAU1+G,GACjCy+G,EAAkB/wH,KAAKswH,EAASh+G,GAE5BA,GACFA,EAAGspK,UAAYtpK,EAAGspK,SAASP,IAI/B/qD,EAAQY,aAAe,SAAU5+G,GAE/BA,EAAGupK,OAASvpK,EAAGupK,MAAMR,GACrBpqD,EAAgBjxH,KAAKswH,EAASh+G,IAGhC1P,KAAKi8K,aAAc,EAGrBJ,EAAWh9K,UAAY,CACrBgH,YAAag2K,EACb9vG,QAAS,WACP,MAAO,OAMTiiD,gBAAiB,WACf,OAAOhuH,KAAKg8K,cAEd/c,sBAAuB,WACrB,IAAIC,EAAel/J,KAAKguH,kBAExB,GAAIkxC,EACF,MAAO,CACLrqB,WAAYqqB,EAAarqB,YAAc,EACvCC,UAAWoqB,EAAapqB,WAAa,IAQ3C5hG,QAAS,WACP,IAAI9nC,EAAOpL,KAAK0tH,QAAQqmC,gBAAe,GAAM,GAE7C/zJ,KAAKq/J,WAAWj0J,IAElBi0J,WAAY,SAAUj0J,GAGpB,IAFA,IAAIqtK,EAAUz4K,KAAK+7K,SAEV9+K,EAAI,EAAGA,EAAImO,EAAKzJ,OAAQ1E,IAAK,CACpC,IAAIyS,EAAKtE,EAAKnO,GAEVyS,EAAG0gG,WAAa1gG,EAAG2hH,QAChB3hH,EAAGwsK,qBACNxsK,EAAGspK,SAASP,GAId/oK,EAAGwsK,qBAAsB,IAErBxsK,EAAGwsK,qBACLxsK,EAAGupK,MAAMR,GAGX/oK,EAAGwsK,qBAAsB,EAErBxsK,EAAG0gC,UACL1gC,EAAGshG,aAAethG,EAAGshG,eACpBthG,EAAG8oK,UAAY9oK,EAAG6/B,OAAOnyC,KAAKsS,EAAI+oK,GACnC/oK,EAAGuhG,YAAcvhG,EAAGuhG,eAIxBvhG,EAAG0gC,SAAU,EAGXpwC,KAAKi8K,cAIPj8K,KAAKg8K,aAAa52K,YAAYqzK,GAE9Bz4K,KAAKi8K,aAAc,IAGvBxsD,OAAQ,SAAUp+F,EAAOoC,GACnBpC,EAAiB,MAATA,EAAgBrxB,KAAKm8K,YAAc9qJ,EAC3CoC,EAAmB,MAAVA,EAAiBzzB,KAAKo8K,aAAe3oJ,EAElD,GAAIzzB,KAAKq+J,SAAWhtI,GAASrxB,KAAKs+J,UAAY7qI,EAAQ,CACpDzzB,KAAKq+J,OAAShtI,EACdrxB,KAAKs+J,QAAU7qI,EACf,IAAI4oJ,EAAmBr8K,KAAKg8K,aAAa13J,MACzC+3J,EAAiBhrJ,MAAQA,EAAQ,KACjCgrJ,EAAiB5oJ,OAASA,EAAS,OAGvCw8F,QAAS,WACPjwH,KAAK8B,KAAKiQ,UAAY,GACtB/R,KAAK+7K,SAAW/7K,KAAKg8K,aAAeh8K,KAAK0tH,QAAU,MAErDlQ,SAAU,WACR,OAAOx9G,KAAKq+J,QAEd1uC,UAAW,WACT,OAAO3vH,KAAKs+J,SAEdzlG,MAAO,WACD74D,KAAKg8K,cACPh8K,KAAK8B,KAAKwD,YAAYtF,KAAKg8K,eAG/BG,UAAW,WACT,IAAIr6K,EAAO9B,KAAK8B,KACZk0J,EAAMl0J,EAAKw6K,aACf,OAAQx6K,EAAKoyI,aAAeupB,EAAWzH,EAAI3kI,QAAUosI,EAAWzH,EAAIumB,aAAe9e,EAAWzH,EAAIwmB,cAAgB,GAEpHJ,WAAY,WACV,IAAIt6K,EAAO9B,KAAK8B,KACZk0J,EAAMl0J,EAAKw6K,aACf,OAAQx6K,EAAKqyI,cAAgBspB,EAAWzH,EAAIviI,SAAWgqI,EAAWzH,EAAIymB,YAAchf,EAAWzH,EAAI0mB,eAAiB,IAWxHr2K,EAAK,CAAC,WAAY,cAAe,YAAa,mBAAoB,iBAAkB,YAAa,WAAY,WAAY,aAAc,YAAa,gBAAgB,SAAU7I,GAP9K,IAAgCmf,EAQ9Bk/J,EAAWh9K,UAAUrB,IARSmf,EAQsBnf,EAP7C,WACLovE,EAAS,iDAAmDjwD,EAAS,UAQzE,IAAI+J,EAAWm1J,EACf7+K,EAAOD,QAAU2pB,G,6BC9KjB,Q,6BCAA,Q,6BCAA,Q,6BCAA,Q,6BCAA,Q,6BCAA,Q,6BCAA,Q,6BCAA,Q,6BCAA,Q,6BCAA,Q,6BCAA,Q,6BCAA,Q,6BCAA,Q,6BCAA,Q,6BCAA,Q,6BCAA,Q,6BCAA,Q,6BCAA,Q,6BCAA,Q,6BCAA,Q,6BCAA,Q,6BCAA,Q,6BCAA,Q,6BCAA,Q,6BCAA,Q,6BCAA,Q,6BCAA,Q,cCAA1pB,EAAOD,QAAU,06C,6BCAjB,Q,6BCAA,Q,6BCAA,Q,6BCAA,Q,6BCAA,Q,6BCAA,Q,6BCAA,Q,6BCAA,Q,iBCAA,iCAC6B,oBAAT8E,MAAwBA,MAChCoB,OACRO,EAAQzB,SAASlD,UAAU2E,MAiB/B,SAASm5K,EAAQnuK,EAAIouK,GACnB58K,KAAK68K,IAAMruK,EACXxO,KAAK88K,SAAWF,EAflB7/K,EAAQ6iB,WAAa,WACnB,OAAO,IAAI+8J,EAAQn5K,EAAMpG,KAAKwiB,WAAY9Q,EAAOrI,WAAYs1B,eAE/Dh/B,EAAQggL,YAAc,WACpB,OAAO,IAAIJ,EAAQn5K,EAAMpG,KAAK2/K,YAAajuK,EAAOrI,WAAYu2K,gBAEhEjgL,EAAQg/B,aACRh/B,EAAQigL,cAAgB,SAASlhJ,GAC3BA,GACFA,EAAQmhJ,SAQZN,EAAQ99K,UAAUq+K,MAAQP,EAAQ99K,UAAUg1D,IAAM,aAClD8oH,EAAQ99K,UAAUo+K,MAAQ,WACxBj9K,KAAK88K,SAAS1/K,KAAK0R,EAAO9O,KAAK68K,MAIjC9/K,EAAQogL,OAAS,SAASh5K,EAAMi5K,GAC9BrhJ,aAAa53B,EAAKk5K,gBAClBl5K,EAAKm5K,aAAeF,GAGtBrgL,EAAQwgL,SAAW,SAASp5K,GAC1B43B,aAAa53B,EAAKk5K,gBAClBl5K,EAAKm5K,cAAgB,GAGvBvgL,EAAQygL,aAAezgL,EAAQqkC,OAAS,SAASj9B,GAC/C43B,aAAa53B,EAAKk5K,gBAElB,IAAID,EAAQj5K,EAAKm5K,aACbF,GAAS,IACXj5K,EAAKk5K,eAAiBz9J,YAAW,WAC3Bzb,EAAKs5K,YACPt5K,EAAKs5K,eACNL,KAKP,EAAQ,KAIRrgL,EAAQswE,aAAgC,oBAATxrE,MAAwBA,KAAKwrE,mBAClB,IAAXzqE,GAA0BA,EAAOyqE,cACxCrtE,MAAQA,KAAKqtE,aACrCtwE,EAAQ2gL,eAAkC,oBAAT77K,MAAwBA,KAAK67K,qBAClB,IAAX96K,GAA0BA,EAAO86K,gBACxC19K,MAAQA,KAAK09K,iB,oCC9DvC,6BACI,aAEA,IAAI96K,EAAOyqE,aAAX,CAIA,IAIIswG,EA6HItuJ,EAZAuuJ,EArBAC,EACAC,EAjGJC,EAAa,EACbC,EAAgB,GAChBC,GAAwB,EACxBr5K,EAAMhC,EAAOE,SAoJbo7K,EAAWvgL,OAAO0F,gBAAkB1F,OAAO0F,eAAeT,GAC9Ds7K,EAAWA,GAAYA,EAASt+J,WAAas+J,EAAWt7K,EAGf,qBAArC,GAAGe,SAASvG,KAAKwF,EAAO2c,SApFxBo+J,EAAoB,SAAS/zJ,GACzBrK,EAAQmuD,UAAS,WAAcywG,EAAav0J,QAIpD,WAGI,GAAIhnB,EAAOw7K,cAAgBx7K,EAAOy7K,cAAe,CAC7C,IAAIC,GAA4B,EAC5BC,EAAe37K,EAAO47K,UAM1B,OALA57K,EAAO47K,UAAY,WACfF,GAA4B,GAEhC17K,EAAOw7K,YAAY,GAAI,KACvBx7K,EAAO47K,UAAYD,EACZD,GAwEJG,GAIA77K,EAAO87K,iBA9CVd,EAAU,IAAIc,gBACVC,MAAMH,UAAY,SAASh2J,GAE/B21J,EADa31J,EAAMjG,OAIvBo7J,EAAoB,SAAS/zJ,GACzBg0J,EAAQgB,MAAMR,YAAYx0J,KA2CvBhlB,GAAO,uBAAwBA,EAAIG,cAAc,WAtCpDsqB,EAAOzqB,EAAIiM,gBACf8sK,EAAoB,SAAS/zJ,GAGzB,IAAI9kB,EAASF,EAAIG,cAAc,UAC/BD,EAAO8hC,mBAAqB,WACxBu3I,EAAav0J,GACb9kB,EAAO8hC,mBAAqB,KAC5BvX,EAAK/pB,YAAYR,GACjBA,EAAS,MAEbuqB,EAAKjqB,YAAYN,KAKrB64K,EAAoB,SAAS/zJ,GACzBhK,WAAWu+J,EAAc,EAAGv0J,KAlD5Bi0J,EAAgB,gBAAkB/1K,KAAKC,SAAW,IAClD+1K,EAAkB,SAASt1J,GACvBA,EAAMzE,SAAWnhB,GACK,iBAAf4lB,EAAMjG,MACyB,IAAtCiG,EAAMjG,KAAK9e,QAAQo6K,IACnBM,GAAc31J,EAAMjG,KAAKjf,MAAMu6K,EAAcl8K,UAIjDiB,EAAOsO,iBACPtO,EAAOsO,iBAAiB,UAAW4sK,GAAiB,GAEpDl7K,EAAOuO,YAAY,YAAa2sK,GAGpCH,EAAoB,SAAS/zJ,GACzBhnB,EAAOw7K,YAAYP,EAAgBj0J,EAAQ,OAgEnDs0J,EAAS7wG,aA1KT,SAAsB/mE,GAEI,mBAAbA,IACTA,EAAW,IAAIvE,SAAS,GAAKuE,IAI/B,IADA,IAAI6O,EAAO,IAAIjU,MAAMuF,UAAU9E,OAAS,GAC/B1E,EAAI,EAAGA,EAAIkY,EAAKxT,OAAQ1E,IAC7BkY,EAAKlY,GAAKwJ,UAAUxJ,EAAI,GAG5B,IAAI4hL,EAAO,CAAEv4K,SAAUA,EAAU6O,KAAMA,GAGvC,OAFA6oK,EAAcD,GAAcc,EAC5BlB,EAAkBI,GACXA,KA6JTG,EAASR,eAAiBA,EA1J1B,SAASA,EAAe9zJ,UACbo0J,EAAcp0J,GAyBzB,SAASu0J,EAAav0J,GAGlB,GAAIq0J,EAGAr+J,WAAWu+J,EAAc,EAAGv0J,OACzB,CACH,IAAIi1J,EAAOb,EAAcp0J,GACzB,GAAIi1J,EAAM,CACNZ,GAAwB,EACxB,KAjCZ,SAAaY,GACT,IAAIv4K,EAAWu4K,EAAKv4K,SAChB6O,EAAO0pK,EAAK1pK,KAChB,OAAQA,EAAKxT,QACb,KAAK,EACD2E,IACA,MACJ,KAAK,EACDA,EAAS6O,EAAK,IACd,MACJ,KAAK,EACD7O,EAAS6O,EAAK,GAAIA,EAAK,IACvB,MACJ,KAAK,EACD7O,EAAS6O,EAAK,GAAIA,EAAK,GAAIA,EAAK,IAChC,MACJ,QACI7O,EAAS9C,WAnDrB,EAmDsC2R,IAiBlB8hB,CAAI4nJ,GACN,QACEnB,EAAe9zJ,GACfq0J,GAAwB,MAvE5C,CAyLkB,oBAATp8K,UAAyC,IAAXe,EAAyB5C,KAAO4C,EAASf,Q,wCCxLhF,IAOIi9K,EACAC,EARAx/J,EAAUviB,EAAOD,QAAU,GAU/B,SAASiiL,IACL,MAAM,IAAIh8K,MAAM,mCAEpB,SAASi8K,IACL,MAAM,IAAIj8K,MAAM,qCAsBpB,SAASk8K,EAAWC,GAChB,GAAIL,IAAqBl/J,WAErB,OAAOA,WAAWu/J,EAAK,GAG3B,IAAKL,IAAqBE,IAAqBF,IAAqBl/J,WAEhE,OADAk/J,EAAmBl/J,WACZA,WAAWu/J,EAAK,GAE3B,IAEI,OAAOL,EAAiBK,EAAK,GAC/B,MAAMtxK,GACJ,IAEI,OAAOixK,EAAiB1hL,KAAK,KAAM+hL,EAAK,GAC1C,MAAMtxK,GAEJ,OAAOixK,EAAiB1hL,KAAK4C,KAAMm/K,EAAK,MAvCnD,WACG,IAEQL,EADsB,mBAAfl/J,WACYA,WAEAo/J,EAEzB,MAAOnxK,GACLixK,EAAmBE,EAEvB,IAEQD,EADwB,mBAAjBhjJ,aACcA,aAEAkjJ,EAE3B,MAAOpxK,GACLkxK,EAAqBE,GAjB7B,GAwEA,IAEIG,EAFA7hK,EAAQ,GACR8hK,GAAW,EAEXC,GAAc,EAElB,SAASC,IACAF,GAAaD,IAGlBC,GAAW,EACPD,EAAaz9K,OACb4b,EAAQ6hK,EAAap+K,OAAOuc,GAE5B+hK,GAAc,EAEd/hK,EAAM5b,QACN69K,KAIR,SAASA,IACL,IAAIH,EAAJ,CAGA,IAAIvjJ,EAAUojJ,EAAWK,GACzBF,GAAW,EAGX,IADA,IAAIp4K,EAAMsW,EAAM5b,OACVsF,GAAK,CAGP,IAFAm4K,EAAe7hK,EACfA,EAAQ,KACC+hK,EAAar4K,GACdm4K,GACAA,EAAaE,GAAYroJ,MAGjCqoJ,GAAc,EACdr4K,EAAMsW,EAAM5b,OAEhBy9K,EAAe,KACfC,GAAW,EAnEf,SAAyBtpB,GACrB,GAAIgpB,IAAuBhjJ,aAEvB,OAAOA,aAAag6H,GAGxB,IAAKgpB,IAAuBE,IAAwBF,IAAuBhjJ,aAEvE,OADAgjJ,EAAqBhjJ,aACdA,aAAag6H,GAExB,IAEWgpB,EAAmBhpB,GAC5B,MAAOloJ,GACL,IAEI,OAAOkxK,EAAmB3hL,KAAK,KAAM24J,GACvC,MAAOloJ,GAGL,OAAOkxK,EAAmB3hL,KAAK4C,KAAM+1J,KAgD7C0pB,CAAgB3jJ,IAiBpB,SAAS4jJ,EAAKP,EAAK39K,GACfxB,KAAKm/K,IAAMA,EACXn/K,KAAKwB,MAAQA,EAYjB,SAAS4G,KA5BTmX,EAAQmuD,SAAW,SAAUyxG,GACzB,IAAIhqK,EAAO,IAAIjU,MAAMuF,UAAU9E,OAAS,GACxC,GAAI8E,UAAU9E,OAAS,EACnB,IAAK,IAAI1E,EAAI,EAAGA,EAAIwJ,UAAU9E,OAAQ1E,IAClCkY,EAAKlY,EAAI,GAAKwJ,UAAUxJ,GAGhCsgB,EAAM/a,KAAK,IAAIk9K,EAAKP,EAAKhqK,IACJ,IAAjBoI,EAAM5b,QAAiB09K,GACvBH,EAAWM,IASnBE,EAAK7gL,UAAUo4B,IAAM,WACjBj3B,KAAKm/K,IAAI37K,MAAM,KAAMxD,KAAKwB,QAE9B+d,EAAQogK,MAAQ,UAChBpgK,EAAQy5C,SAAU,EAClBz5C,EAAQylD,IAAM,GACdzlD,EAAQqgK,KAAO,GACfrgK,EAAQu6C,QAAU,GAClBv6C,EAAQsgK,SAAW,GAInBtgK,EAAQ6I,GAAKhgB,EACbmX,EAAQugK,YAAc13K,EACtBmX,EAAQ7B,KAAOtV,EACfmX,EAAQkJ,IAAMrgB,EACdmX,EAAQwgK,eAAiB33K,EACzBmX,EAAQygK,mBAAqB53K,EAC7BmX,EAAQ28D,KAAO9zE,EACfmX,EAAQ0gK,gBAAkB73K,EAC1BmX,EAAQ2gK,oBAAsB93K,EAE9BmX,EAAQu1D,UAAY,SAAUt3E,GAAQ,MAAO,IAE7C+hB,EAAQk4B,QAAU,SAAUj6C,GACxB,MAAM,IAAIwF,MAAM,qCAGpBuc,EAAQ4gK,IAAM,WAAc,MAAO,KACnC5gK,EAAQ6gK,MAAQ,SAAU1yK,GACtB,MAAM,IAAI1K,MAAM,mCAEpBuc,EAAQ8gK,MAAQ,WAAa,OAAO,I,6BCvLpC,Q,6BCAA,Q,6BCAA,Q,6BCAA,Q,6BCAA,Q,6BCAA,Q,6BCAA,Q,6BCAA,Q,6BCAA,Q,6BCAA,Q,6BCAA,Q,6BCAA,Q,6BCAA,Q,6BCAA,Q,6BCAA,Q,6BCAA,Q,6BCAA,Q,6BCAA,Q,6BCAA,Q,6BCAA,Q,6BCAA,Q,6BCAA,Q,6BCAA,Q,6BCAA,Q,6BCAA,Q,6BCAA,Q,6BCAA,Q,6BCAA,Q,6BCAA,Q,6BCAA,Q,6BCAA,Q,6BCAA,Q,6BCAA,Q,6BCAA,Q,6BCAA,Q,6BCAA,Q,6BCAA,Q,cCAArjL,EAAOD,QAAU,k8F,6BCAjB,Q,6BCAA,Q,6BCAA,Q,6BCAA,Q,6BCAA,Q,6BCAA,Q,6BCAA,Q,6BCAA,Q,6BCAA,Q,6BCCA,IAAIs2I,EAAUrzI,MAAQA,KAAKqzI,QAAW,SAAUr0I,EAAG6O,GAC/C,IAAI1P,EAAI,GACR,IAAK,IAAIY,KAAKC,EAAOrB,OAAOkB,UAAUC,eAAe1B,KAAK4B,EAAGD,IAAM8O,EAAEpK,QAAQ1E,GAAK,IAC9EZ,EAAEY,GAAKC,EAAED,IACb,GAAS,MAALC,GAAqD,mBAAjCrB,OAAOsxG,sBACtB,KAAIhyG,EAAI,EAAb,IAAgB8B,EAAIpB,OAAOsxG,sBAAsBjwG,GAAI/B,EAAI8B,EAAE4C,OAAQ1E,IAC3D4Q,EAAEpK,QAAQ1E,EAAE9B,IAAM,GAAKU,OAAOkB,UAAUwxD,qBAAqBjzD,KAAK4B,EAAGD,EAAE9B,MACvEkB,EAAEY,EAAE9B,IAAM+B,EAAED,EAAE9B,KAE1B,OAAOkB,GAEXR,OAAOC,eAAeb,EAAS,aAAc,CAAEmB,OAAO,IACtDnB,EAAQy+D,OAASz+D,EAAQkU,IAAMlU,EAAQs1B,MAAQt1B,EAAQw5B,KAAOx5B,EAAQk+D,UAAO,EAC7E,IAAIT,EAAa,EAAQ,KACrB8lH,EAAS,EAAQ,KAMrBvjL,EAAQk+D,KALG,SAAUslH,EAAmBC,EAAUC,GAG9C,OAAOC,EAAWH,GAFN,EAAID,EAAOK,gBAAgBH,EAAUC,EAAkBn/K,OAASk/K,EAASn8E,cAC3E,EAAIi8E,EAAOK,gBAAgBH,EAAUC,EAAkBt5K,KAAOq5K,EAASx7E,aAChCy7E,IAMrD1jL,EAAQw5B,KAHG,SAAUgqJ,EAAmBC,EAAUC,GAC9C,OAAOC,EAAWH,EAAmBC,EAASl8E,aAAck8E,EAAS57E,gBAAiB67E,IAM1F1jL,EAAQs1B,MAHI,SAAUkuJ,EAAmBC,EAAUC,GAC/C,OAAOC,EAAWH,EAAmBC,EAAS/7E,cAAe+7E,EAASz7E,iBAAkB07E,IAM5F1jL,EAAQkU,IAHE,SAAUsvK,EAAmBC,EAAUC,GAC7C,OAAOC,EAAWH,EAAmBC,EAASl8E,aAAck8E,EAAS/7E,cAAeg8E,IAOxF,SAASC,EAAWH,EAAmBjsH,EAAIC,EAAIksH,GAC3C,IAAIxlH,EAAO,IAAIT,EAAWF,KAAKhG,EAAIC,GAC/B5yD,EAAS4+K,EAAkB5+K,OAC/B,OAAO4+K,EAAkBh6K,KAAI,SAAUutI,EAAIpyI,GACvC,IAAIk/K,EAAS9sC,EAAG8sC,OAAQz4I,EAASkrG,EAAOS,EAAI,CAAC,WACzC33E,EAAQykH,GAAUH,EAAkBG,QACjCl/K,EAAQ,IAAMC,EAAS,IACvBD,EAAQ,IAAOC,EAClB5C,EAAIk8D,EAAKU,QAAQQ,GAIrB,OAHIh0B,EAAOkrB,IAAMlrB,EAAOmrB,KACpBv0D,EAAEq0D,UAAUjrB,EAAOkrB,IAAM,EAAGlrB,EAAOmrB,IAAM,IAEtC,EAAIgtH,EAAOO,UAAU9hL,EAAE6zB,QAAS,EAAGuV,MAblDprC,EAAQy+D,OAHK,SAAU+kH,EAAmBC,EAAUC,GAChD,OAAOC,EAAWH,EAAmBC,EAAS57E,gBAAiB47E,EAASz7E,iBAAkB07E,K,6BClC9F,IACQruH,EADJC,EAAaryD,MAAQA,KAAKqyD,YACtBD,EAAgB,SAAU70D,EAAG0N,GAI7B,OAHAmnD,EAAgBz0D,OAAO20D,gBAClB,CAAEC,UAAW,cAAgBrxD,OAAS,SAAU3D,EAAG0N,GAAK1N,EAAEg1D,UAAYtnD,IACvE,SAAU1N,EAAG0N,GAAK,IAAK,IAAIlM,KAAKkM,EAAOtN,OAAOkB,UAAUC,eAAe1B,KAAK6N,EAAGlM,KAAIxB,EAAEwB,GAAKkM,EAAElM,MAC3ExB,EAAG0N,IAErB,SAAU1N,EAAG0N,GAChB,GAAiB,mBAANA,GAA0B,OAANA,EAC3B,MAAM,IAAImU,UAAU,uBAAyBtS,OAAO7B,GAAK,iCAE7D,SAASunD,IAAOxyD,KAAK6F,YAActI,EADnC60D,EAAc70D,EAAG0N,GAEjB1N,EAAEsB,UAAkB,OAANoM,EAAatN,OAAOY,OAAO0M,IAAMunD,EAAG3zD,UAAYoM,EAAEpM,UAAW,IAAI2zD,KAGvF70D,OAAOC,eAAeb,EAAS,aAAc,CAAEmB,OAAO,IACtDnB,EAAQo4I,aAAU,EAClB,IAAI56E,EAAU,EAAQ,IAClBE,EAAc,EAAQ,KAEtB06E,EAAyB,SAAUjiF,GAEnC,SAASiiF,EAAQ5iG,EAAGC,EAAGxnC,EAAGC,GACtB,IAAIkoD,EAAQD,EAAO91D,KAAK4C,OAASA,KAKjC,OAJAmzD,EAAM5gB,EAAS,MAALA,EAAY,EAAIA,EAC1B4gB,EAAM3gB,EAAS,MAALA,EAAY,EAAIA,EAC1B2gB,EAAMnoD,EAAS,MAALA,EAAY,EAAIA,EAC1BmoD,EAAMloD,EAAS,MAALA,EAAY,EAAIA,EACnBkoD,EA0MX,OAjNAd,EAAU8iF,EAASjiF,GASnBv1D,OAAOC,eAAeu3I,EAAQt2I,UAAWb,OAAOC,YAAa,CACzDH,IAAK,WACD,OAAOq3I,EAAQl3I,aAEnBJ,YAAY,EACZwkB,cAAc,IAElB1kB,OAAOC,eAAeu3I,EAAQt2I,UAAW,SAAU,CAC/Cf,IAAK,WACD,OAAO,IAAIy8D,EAAQxH,MAAM/yD,KAAKuyC,EAAGvyC,KAAKwyC,IAE1C30C,YAAY,EACZwkB,cAAc,IAKlB8yH,EAAQt2I,UAAU08D,KAAO,WACrB,OAAOd,EAAYgB,UAAU0tC,YAAYnpG,OAK7Cm1I,EAAQt2I,UAAU67D,UAAY,WAC1B,OAAO16D,KAAKyzD,QAEhB0hF,EAAQt2I,UAAUmnG,QAAU,SAAU3yC,EAAIC,GACtC,IAAIvwD,EAAIswD,EACJxyD,EAAU,MAANyyD,EAAaA,EAAKD,EAG1B,OAFArzD,KAAKgL,GAAK,EAAIjI,EACd/C,KAAKiL,GAAK,EAAIpK,EACPb,MAEXm1I,EAAQt2I,UAAUiiL,mBAAqB,SAAUvuI,EAAGC,GAChD,IAAIqhB,EAAM0G,EAAQxH,MAAMx0D,OAAOg0C,EAAGC,GAC9B6gB,EAAKQ,EAAIthB,EAAIvyC,KAAKuyC,EAClB+gB,EAAKO,EAAIrhB,EAAIxyC,KAAKwyC,EAClBxnC,EAAIhL,KAAKgL,EACTC,EAAIjL,KAAKiL,EACb,OAAQooD,EAAKA,GAAOroD,EAAIA,GAAMsoD,EAAKA,GAAOroD,EAAIA,IAElDkqI,EAAQt2I,UAAUk2D,cAAgB,SAAUxiB,EAAGC,GAC3C,OAAOxyC,KAAK8gL,mBAAmBvuI,EAAGC,IAAM,GAM5C2iG,EAAQt2I,UAAU69D,mBAAqB,SAAUzB,GAC7C,IAAIm+D,EAAgB,GAChBr6B,EAAK/+F,KAAKgL,EACVg0F,EAAKh/F,KAAKiL,EACV6nI,EAAK73E,EAAK35D,MACVy/K,EAAK9lH,EAAK9zD,IACVuG,EAAMutD,EAAKI,SACXprD,EAAO6iI,EAAG7iI,KAAK,IAAIsqD,EAAQxH,MAAM/yD,KAAKuyC,EAAGvyC,KAAKwyC,IAC9CwuI,EAAO,IAAIzmH,EAAQxH,MAAMrlD,EAAI6kC,GAAKwsD,EAAKA,GAAKrxF,EAAI8kC,GAAKwsD,EAAKA,IAC1DiiF,EAAQ,IAAI1mH,EAAQxH,MAAM9iD,EAAKsiC,GAAKwsD,EAAKA,GAAK9uF,EAAKuiC,GAAKwsD,EAAKA,IAC7Dh0F,EAAI0C,EAAI6jD,IAAIyvH,GACZ/1K,EAAIyC,EAAI6jD,IAAI0vH,GAEZ1jL,EAAI0N,EAAIA,EAAID,GADRiF,EAAKshD,IAAI0vH,GAAS,GAE1B,GAAI1jL,EAAI,EACJ,OAAO,KAEX,GAAIA,EAAI,EAAG,CACP,IAAIuE,EAAOgG,KAAK2rC,KAAKl2C,GACjB2jL,IAAOj2K,EAAInJ,GAAQkJ,EACnBm2K,IAAOl2K,EAAInJ,GAAQkJ,EACvB,IAAKk2K,EAAK,GAAKA,EAAK,KAAOC,EAAK,GAAKA,EAAK,GAEtC,OAAO,KAEPD,GAAM,GAAKA,GAAM,GACjB9nD,EAAc52H,KAAKswI,EAAGrhF,KAAKsvH,EAAIG,IAE/BC,GAAM,GAAKA,GAAM,GACjB/nD,EAAc52H,KAAKswI,EAAGrhF,KAAKsvH,EAAII,QAGlC,CACD,IAAIhjL,GAAK8M,EAAID,EACb,KAAI7M,GAAK,GAAKA,GAAK,GAKf,OAAO,KAJPi7H,EAAc52H,KAAKswI,EAAGrhF,KAAKsvH,EAAI5iL,IAOvC,OAAOi7H,GAUX+b,EAAQt2I,UAAU2oG,oCAAsC,SAAUzoG,EAAG21D,QACnD,IAAVA,IAAoBA,EAAQ,GAChC,IAAIb,EAAM0G,EAAQxH,MAAMtrD,MAAM1I,GAC1B21D,GACAb,EAAIN,OAAOmB,EAAO10D,KAAK06D,aAE3B,IAEIv5D,EAFAkyD,EAAKQ,EAAIthB,EAAIvyC,KAAKuyC,EAClB+gB,EAAKO,EAAIrhB,EAAIxyC,KAAKwyC,EAEtB,GAAW,IAAP6gB,EAEA,OADAlyD,EAASnB,KAAKu7D,OAAOutC,uBAAuBj1C,GACxCa,EACOvzD,EAAOoyD,QAAQmB,EAAO10D,KAAK06D,aAE/Bv5D,EAEX,IAAI9D,EAAIi2D,EAAKD,EACT+tH,EAAW/jL,EAAIA,EACfgkL,EAAWrhL,KAAKgL,EAAIhL,KAAKgL,EACzBs2K,EAAWthL,KAAKiL,EAAIjL,KAAKiL,EACzBsnC,EAAIzqC,KAAK2rC,KAAK,GAAK,EAAI4tI,EAAWD,EAAWE,IAE7C9uI,EAAIn1C,GADRk1C,EAAI8gB,EAAK,GAAK9gB,EAAIA,GAGlB,OADApxC,EAAS,IAAIo5D,EAAQxH,MAAM/yD,KAAKuyC,EAAIA,EAAGvyC,KAAKwyC,EAAIA,GAC5CkiB,EACOvzD,EAAOoyD,QAAQmB,EAAO10D,KAAK06D,aAE/Bv5D,GAMXg0I,EAAQt2I,UAAU0iL,aAAe,SAAUxiL,GACvC,IAWIwzC,EACAC,EAZAqhB,EAAM0G,EAAQxH,MAAMtrD,MAAM1I,GAC1By+F,EAAK3pC,EAAIthB,EACTkrD,EAAK5pC,EAAIrhB,EACTxnC,EAAIhL,KAAKgL,EACTC,EAAIjL,KAAKiL,EACTwoD,EAASzzD,KAAKu7D,OAAO9H,OACrBupC,EAAKvpC,EAAOlhB,EACZ0qD,EAAKxpC,EAAOjhB,EAEZgvI,EAAKhkF,EAAK/pC,EAAOlhB,EAAIvnC,EAAI,EACzBy2K,EAAKjkF,EAAK/pC,EAAOlhB,EAAIvnC,EAAI,EAiB7B,OAdIw2K,GAAMC,EAENlvI,EACKvnC,EAAIA,GAAMwyF,EAAKR,GACXhyF,EAAIA,GAAKyyF,EAAKR,KAHvBzqD,EAAIgrD,EAAK/pC,EAAOlhB,EAAIkrD,EANJ,GAMyBA,EANzB,IASkBR,IAAQhyF,EAAIA,GAAKuyF,EAAKR,IAChDA,EAIRxqD,EACKvnC,EAAIA,GAAMwyF,EAAKR,GACXhyF,EAAIA,GAAKuyF,EAAKR,KAHvBzqD,EAAIkrD,EAAKhqC,EAAOjhB,EAAIgrD,EAbJ,GAayBA,EAbzB,IAgBkBR,IAAQhyF,EAAIA,GAAKyyF,EAAKR,IAChDA,EAEL,IAAI1iC,EAAQxH,MAAMxgB,EAAGC,GAAG0hB,MAAML,IAEzCshF,EAAQt2I,UAAUgmB,MAAQ,SAAU6uC,EAAIC,GAGpC,OAFA3zD,KAAKgL,GAAK0oD,EACV1zD,KAAKiL,GAAK0oD,EACH3zD,MAEXm1I,EAAQt2I,UAAU00D,OAAS,SAAUmB,EAAOd,GACxC,IAAI/qB,EAAO4xB,EAAYgB,UAAU0tC,YAAYnpG,MAC7C6oC,EAAK0qB,OAAOmB,EAAOd,GACnB,IAAIw1C,EAAU+rC,EAAQusC,SAAS74I,GAK/B,OAJA7oC,KAAKgL,EAAIo+F,EAAQp+F,EACjBhL,KAAKiL,EAAIm+F,EAAQn+F,EACjBjL,KAAKuyC,EAAI62D,EAAQ72D,EACjBvyC,KAAKwyC,EAAI42D,EAAQ52D,EACVxyC,MAEXm1I,EAAQt2I,UAAUu0D,UAAY,SAAUC,EAAIC,GACxC,IAAIv0D,EAAIw7D,EAAQxH,MAAMx0D,OAAO80D,EAAIC,GAGjC,OAFAtzD,KAAKuyC,GAAKxzC,EAAEwzC,EACZvyC,KAAKwyC,GAAKzzC,EAAEyzC,EACLxyC,MAEXm1I,EAAQt2I,UAAU21D,OAAS,SAAU40C,GACjC,OAAmB,MAAXA,GACJA,EAAQ72D,IAAMvyC,KAAKuyC,GACnB62D,EAAQ52D,IAAMxyC,KAAKwyC,GACnB42D,EAAQp+F,IAAMhL,KAAKgL,GACnBo+F,EAAQn+F,IAAMjL,KAAKiL,GAE3BkqI,EAAQt2I,UAAU4I,MAAQ,WACtB,OAAO,IAAI0tI,EAAQn1I,KAAKuyC,EAAGvyC,KAAKwyC,EAAGxyC,KAAKgL,EAAGhL,KAAKiL,IAEpDkqI,EAAQt2I,UAAUktD,OAAS,WACvB,MAAO,CAAExZ,EAAGvyC,KAAKuyC,EAAGC,EAAGxyC,KAAKwyC,EAAGxnC,EAAGhL,KAAKgL,EAAGC,EAAGjL,KAAKiL,IAEtDkqI,EAAQt2I,UAAU6gC,UAAY,WAC1B,OAAO1/B,KAAKuyC,EAAI,IAAMvyC,KAAKwyC,EAAI,IAAMxyC,KAAKgL,EAAI,IAAMhL,KAAKiL,GAEtDkqI,EAlNiB,CADX,EAAQ,IAoNZn/E,UACbj5D,EAAQo4I,QAAUA,EAClB,SAAWA,GACPA,EAAQl3I,YAAc,eAAiBk3I,EAAQ33I,KAqB/C23I,EAAQwsC,UApBR,SAAmBzrH,GACf,GAAgB,MAAZA,EACA,OAAO,EAEX,GAAIA,aAAoBi/E,EACpB,OAAO,EAEX,IAAIvjI,EAAMskD,EAASl4D,OAAOC,aACtBmrG,EAAUlzC,EACd,OAAY,MAAPtkD,GAAeA,IAAQujI,EAAQl3I,cACX,iBAAdmrG,EAAQ72D,GACM,iBAAd62D,EAAQ52D,GACM,iBAAd42D,EAAQp+F,GACM,iBAAdo+F,EAAQn+F,GACY,mBAApBm+F,EAAQpD,SACuB,mBAA/BoD,EAAQ03E,oBAjB3B,CAuBG3rC,EAAUp4I,EAAQo4I,UAAYp4I,EAAQo4I,QAAU,KACnDp4I,EAAQo4I,QAAUA,EAClB,SAAWA,GAQP,SAASnyH,EAAMnV,GACX,OAAIsnI,EAAQwsC,UAAU9zK,GACXA,EAAEpG,QAETvG,MAAMD,QAAQ4M,GACP,IAAIsnI,EAAQtnI,EAAE,GAAIA,EAAE,GAAIA,EAAE,GAAIA,EAAE,IAEpC,IAAIsnI,EAAQtnI,EAAE0kC,EAAG1kC,EAAE2kC,EAAG3kC,EAAE7C,EAAG6C,EAAE5C,GARxCkqI,EAAQ52I,OANR,SAAgBg0C,EAAGC,EAAGxnC,EAAGC,GACrB,OAAS,MAALsnC,GAA0B,iBAANA,EACb,IAAI4iG,EAAQ5iG,EAAGC,EAAGxnC,EAAGC,GAEzB+X,EAAMuvB,IAYjB4iG,EAAQnyH,MAAQA,EAKhBmyH,EAAQusC,SAJR,SAAkB74I,GACd,IAAI4qB,EAAS5qB,EAAK4qB,OAClB,OAAO,IAAI0hF,EAAQ1hF,EAAOlhB,EAAGkhB,EAAOjhB,EAAG3J,EAAKxX,MAAQ,EAAGwX,EAAKpV,OAAS,IApB7E,CAuBG0hH,EAAUp4I,EAAQo4I,UAAYp4I,EAAQo4I,QAAU,KACnDp4I,EAAQo4I,QAAUA,G,6BC1RlB,IAAI1iF,EAAmBzyD,MAAQA,KAAKyyD,kBAAqB90D,OAAOY,OAAS,SAAUb,EAAGL,EAAGq1D,EAAGC,QAC7EzwD,IAAPywD,IAAkBA,EAAKD,GAC3B/0D,OAAOC,eAAeF,EAAGi1D,EAAI,CAAE90D,YAAY,EAAMC,IAAK,WAAa,OAAOT,EAAEq1D,OAC3E,SAAUh1D,EAAGL,EAAGq1D,EAAGC,QACTzwD,IAAPywD,IAAkBA,EAAKD,GAC3Bh1D,EAAEi1D,GAAMt1D,EAAEq1D,KAEVqxC,EAAgB/jG,MAAQA,KAAK+jG,cAAiB,SAAS1mG,EAAGN,GAC1D,IAAK,IAAIgC,KAAK1B,EAAa,YAAN0B,GAAoBpB,OAAOkB,UAAUC,eAAe1B,KAAKL,EAASgC,IAAI0zD,EAAgB11D,EAASM,EAAG0B,IAE3HpB,OAAOC,eAAeb,EAAS,aAAc,CAAEmB,OAAO,IACtD6lG,EAAa,EAAQ,KAAWhnG,GAChCgnG,EAAa,EAAQ,KAAchnG,I,6BCZnC,IACQq1D,EADJC,EAAaryD,MAAQA,KAAKqyD,YACtBD,EAAgB,SAAU70D,EAAG0N,GAI7B,OAHAmnD,EAAgBz0D,OAAO20D,gBAClB,CAAEC,UAAW,cAAgBrxD,OAAS,SAAU3D,EAAG0N,GAAK1N,EAAEg1D,UAAYtnD,IACvE,SAAU1N,EAAG0N,GAAK,IAAK,IAAIlM,KAAKkM,EAAOtN,OAAOkB,UAAUC,eAAe1B,KAAK6N,EAAGlM,KAAIxB,EAAEwB,GAAKkM,EAAElM,MAC3ExB,EAAG0N,IAErB,SAAU1N,EAAG0N,GAChB,GAAiB,mBAANA,GAA0B,OAANA,EAC3B,MAAM,IAAImU,UAAU,uBAAyBtS,OAAO7B,GAAK,iCAE7D,SAASunD,IAAOxyD,KAAK6F,YAActI,EADnC60D,EAAc70D,EAAG0N,GAEjB1N,EAAEsB,UAAkB,OAANoM,EAAatN,OAAOY,OAAO0M,IAAMunD,EAAG3zD,UAAYoM,EAAEpM,UAAW,IAAI2zD,KAGnFC,EAAmBzyD,MAAQA,KAAKyyD,kBAAqB90D,OAAOY,OAAS,SAAUb,EAAGL,EAAGq1D,EAAGC,QAC7EzwD,IAAPywD,IAAkBA,EAAKD,GAC3B/0D,OAAOC,eAAeF,EAAGi1D,EAAI,CAAE90D,YAAY,EAAMC,IAAK,WAAa,OAAOT,EAAEq1D,OAC3E,SAAUh1D,EAAGL,EAAGq1D,EAAGC,QACTzwD,IAAPywD,IAAkBA,EAAKD,GAC3Bh1D,EAAEi1D,GAAMt1D,EAAEq1D,KAEVE,EAAsB5yD,MAAQA,KAAK4yD,qBAAwBj1D,OAAOY,OAAS,SAAUb,EAAG0e,GACxFze,OAAOC,eAAeF,EAAG,UAAW,CAAEG,YAAY,EAAMK,MAAOke,KAC9D,SAAS1e,EAAG0e,GACb1e,EAAW,QAAI0e,IAEfy2C,EAAgB7yD,MAAQA,KAAK6yD,cAAiB,SAAUC,GACxD,GAAIA,GAAOA,EAAIz0D,WAAY,OAAOy0D,EAClC,IAAI3xD,EAAS,GACb,GAAW,MAAP2xD,EAAa,IAAK,IAAIJ,KAAKI,EAAe,YAANJ,GAAmB/0D,OAAOkB,UAAUC,eAAe1B,KAAK01D,EAAKJ,IAAID,EAAgBtxD,EAAQ2xD,EAAKJ,GAEtI,OADAE,EAAmBzxD,EAAQ2xD,GACpB3xD,GAEPygL,EAAiB5hL,MAAQA,KAAK4hL,eAAkB,SAAUhnJ,EAAIgR,EAAMi2I,GACpE,GAAIA,GAA6B,IAArBp7K,UAAU9E,OAAc,IAAK,IAA4BmgL,EAAxB7kL,EAAI,EAAGC,EAAI0uC,EAAKjqC,OAAY1E,EAAIC,EAAGD,KACxE6kL,GAAQ7kL,KAAK2uC,IACRk2I,IAAIA,EAAK5gL,MAAMrC,UAAUyE,MAAMlG,KAAKwuC,EAAM,EAAG3uC,IAClD6kL,EAAG7kL,GAAK2uC,EAAK3uC,IAGrB,OAAO29B,EAAG55B,OAAO8gL,GAAM5gL,MAAMrC,UAAUyE,MAAMlG,KAAKwuC,KAEtDjuC,OAAOC,eAAeb,EAAS,aAAc,CAAEmB,OAAO,IACtDnB,EAAQkyC,UAAO,EACf,IAAIqxI,EAAS,EAAQ,KACjBt8E,EAAS,EAAQ,IACjBzpC,EAAU,EAAQ,IAClBwnH,EAAU,EAAQ,KAClBxgE,EAAa,EAAQ,KACrB9mD,EAAc,EAAQ,KACtBD,EAAa,EAAQ,IACrBwnH,EAAU,EAAQ,KAClBC,EAAW,EAAQ,KACnBC,EAAW,EAAQ,KACnBC,EAAY,EAAQ,KACpBC,EAAc,EAAQ,KACtBC,EAAOxvH,EAAa,EAAQ,MAC5B5jB,EAAsB,SAAUikB,GAEhC,SAASjkB,EAAK95B,GACV,IAAIg+C,EAAQD,EAAO91D,KAAK4C,OAASA,KAGjC,GAFAmzD,EAAMuuD,UAAY,EAClBvuD,EAAM4pB,SAAW,GACb77E,MAAMD,QAAQkU,GACd,GAAI6uF,EAAO1pC,KAAKuD,OAAO1oD,EAAK,KAAO4sK,EAAQzgE,MAAM4E,QAAQ/wG,EAAK,IAAK,CAC/D,IAAImtK,EAAgB,KACVntK,EACNg2B,SAAQ,SAAUztC,EAAGT,GACX,IAANA,GACAk2D,EAAMovH,cAActzI,EAAKuzI,cAAc,IAAK9kL,EAAE4D,QAE7B,MAAjBghL,GAA0BA,EAAcn7K,IAAIqtD,OAAO92D,EAAE4D,QACrD6xD,EAAMovH,cAActzI,EAAKuzI,cAAc,IAAK9kL,EAAE4D,QAE9C0iG,EAAO1pC,KAAKuD,OAAOngE,GACnBy1D,EAAMovH,cAActzI,EAAKuzI,cAAc,IAAK9kL,EAAEyJ,MAEzC46K,EAAQzgE,MAAM4E,QAAQxoH,IAC3By1D,EAAMovH,cAActzI,EAAKuzI,cAAc,IAAK9kL,EAAE8jH,cAAe9jH,EAAE+jH,cAAe/jH,EAAEyJ,MAEpFm7K,EAAgB5kL,SAGnB,CACSyX,EACNg2B,SAAQ,SAAUnsC,GACdA,EAAE0yG,WACFv+C,EAAMovH,cAAcvjL,WAKnB,MAARmW,IACD6uF,EAAO1pC,KAAKuD,OAAO1oD,IACnBg+C,EAAMovH,cAActzI,EAAKuzI,cAAc,IAAKrtK,EAAK7T,QACjD6xD,EAAMovH,cAActzI,EAAKuzI,cAAc,IAAKrtK,EAAKhO,OAE5C46K,EAAQzgE,MAAM4E,QAAQ/wG,IAC3Bg+C,EAAMovH,cAActzI,EAAKuzI,cAAc,IAAKrtK,EAAK7T,QACjD6xD,EAAMovH,cAActzI,EAAKuzI,cAAc,IAAKrtK,EAAKqsG,cAAersG,EAAKssG,cAAetsG,EAAKhO,OAEpFo6G,EAAW0E,SAASsV,WAAWpmH,GAChCA,EAAK2+C,QAAU3+C,EAAK2+C,OAAOnyD,QAC3BwT,EAAK2+C,OAAO3oB,SAAQ,SAAUgrB,EAAOz0D,GACjC,IAAIs3H,EAAoB,IAAVt3H,EACRutC,EAAKuzI,cAAc,IAAKrsH,GACxBlnB,EAAKuzI,cAAc,IAAKrsH,GAC9BhD,EAAMovH,cAAcvpD,MAIvB7jH,EAAKu8F,WACVv+C,EAAMovH,cAAcptK,IAG5B,OAAOg+C,EAw3BX,OAj7BAd,EAAUpjB,EAAMikB,GA2DhBv1D,OAAOC,eAAeqxC,EAAKpwC,UAAWb,OAAOC,YAAa,CACtDH,IAAK,WACD,OAAOmxC,EAAKhxC,aAEhBJ,YAAY,EACZwkB,cAAc,IAElB1kB,OAAOC,eAAeqxC,EAAKpwC,UAAW,QAAS,CAC3Cf,IAAK,WACD,IAAIi/E,EAAW/8E,KAAK+8E,SAChBn5D,EAAQm5D,EAASp7E,OACrB,GAAc,IAAViiB,EACA,OAAO,KAEX,IAAK,IAAI3mB,EAAI,EAAGA,EAAI2mB,EAAO3mB,GAAK,EAAG,CAC/B,IAAI+7H,EAAUj8C,EAAS9/E,GACvB,GAAI+7H,EAAQvnB,UACR,OAAOunB,EAAQ13H,MAIvB,OAAOy7E,EAASn5D,EAAQ,GAAGzc,KAE/BtJ,YAAY,EACZwkB,cAAc,IAElB1kB,OAAOC,eAAeqxC,EAAKpwC,UAAW,MAAO,CACzCf,IAAK,WACD,IAAIi/E,EAAW/8E,KAAK+8E,SAChBn5D,EAAQm5D,EAASp7E,OACrB,GAAc,IAAViiB,EACA,OAAO,KAEX,IAAK,IAAI3mB,EAAI2mB,EAAQ,EAAG3mB,GAAK,EAAGA,GAAK,EAAG,CACpC,IAAI+7H,EAAUj8C,EAAS9/E,GACvB,GAAI+7H,EAAQvnB,UACR,OAAOunB,EAAQ7xH,IAIvB,OAAO41E,EAASn5D,EAAQ,GAAGzc,KAE/BtJ,YAAY,EACZwkB,cAAc,IAElB4sB,EAAKpwC,UAAUs9F,OAAS,WAGpB,IAFA,IAAI23C,EACA3+H,EAAO,GACF/L,EAAK,EAAGA,EAAK3C,UAAU9E,OAAQyH,IACpC+L,EAAK/L,GAAM3C,UAAU2C,GAEzB,OAAOpJ,KAAKuiL,eAAezuC,EAAKouC,EAASO,OAAOlkL,QAAQnB,KAAKoG,MAAMswI,EAAI8tC,EAAc,CAAC,MAAOzsK,GAAM,MAEvG85B,EAAKpwC,UAAUw9F,OAAS,WAGpB,IAFA,IAAIy3C,EACA3+H,EAAO,GACF/L,EAAK,EAAGA,EAAK3C,UAAU9E,OAAQyH,IACpC+L,EAAK/L,GAAM3C,UAAU2C,GAEzB,OAAOpJ,KAAKuiL,eAAezuC,EAAKmuC,EAAStmD,OAAOp9H,QAAQnB,KAAKoG,MAAMswI,EAAI8tC,EAAc,CAAC,MAAOzsK,GAAM,MAEvG85B,EAAKpwC,UAAU6jL,QAAU,WAGrB,IAFA,IAAI5uC,EACA3+H,EAAO,GACF/L,EAAK,EAAGA,EAAK3C,UAAU9E,OAAQyH,IACpC+L,EAAK/L,GAAM3C,UAAU2C,GAEzB,OAAOpJ,KAAKuiL,eAAezuC,EAAKquC,EAAUQ,QAAQpkL,QAAQnB,KAAKoG,MAAMswI,EAAI8tC,EAAc,CAAC,MAAOzsK,GAAM,MAEzG85B,EAAKpwC,UAAUw+F,MAAQ,SAAU0B,EAAIC,EAAI4jF,EAAeC,EAAcC,EAAWC,EAAMC,GACnF,IAAI1hL,EAAQtB,KAAKmH,KAAO,IAAIozD,EAAQxH,MAChCe,EAAyB,iBAATivH,EACdV,EAAKY,YAAY3hL,EAAMixC,EAAGjxC,EAAMkxC,EAAGusD,EAAIC,EAAI4jF,EAAeC,EAAcC,EAAWC,EAAMC,GACzFX,EAAKY,YAAY3hL,EAAMixC,EAAGjxC,EAAMkxC,EAAGusD,EAAIC,EAAI4jF,EAAeC,EAAcC,EAAWC,EAAKxwI,EAAGwwI,EAAKvwI,GACtG,GAAc,MAAVshB,EACA,IAAK,IAAI72D,EAAI,EAAG25D,EAAK9C,EAAOnyD,OAAQ1E,EAAI25D,EAAI35D,GAAK,EAC7C+C,KAAK0iL,QAAQ5uH,EAAO72D,GAAI62D,EAAO72D,EAAI,GAAI62D,EAAO72D,EAAI,GAAI62D,EAAO72D,EAAI,GAAI62D,EAAO72D,EAAI,GAAI62D,EAAO72D,EAAI,IAGvG,OAAO+C,MAEXivC,EAAKpwC,UAAUqkL,OAAS,SAAUrsH,EAAIN,EAAIhkB,EAAGC,GACzC,IAAIlxC,EAAQtB,KAAKmH,KAAO,IAAIozD,EAAQxH,MAChCxwC,EAAO,CAAC,IAAKjhB,EAAMixC,EAAGjxC,EAAMkxC,GAChC,GAAkB,iBAAPqkB,EACPt0C,EAAK/f,KAAK,IAAKq0D,EAAIN,EAAIhkB,EAAGC,OAEzB,CACD,IAAIzzC,EAAIw3D,EACRh0C,EAAK/f,KAAK,IAAKq0D,EAAGtkB,EAAGskB,EAAGrkB,EAAGzzC,EAAEwzC,EAAGxzC,EAAEyzC,GAEtC,IAAItD,EAAOD,EAAKjsB,MAAMT,EAAKvT,KAAK,MAEhC,OADAhP,KAAKuiL,cAAcrzI,EAAK6tC,SAASz5E,MAAM,IAChCtD,MAEXivC,EAAKpwC,UAAUo+K,MAAQ,WACnB,OAAOj9K,KAAKuiL,cAAcP,EAAQmB,MAAM5kL,WAE5C0wC,EAAKpwC,UAAUukL,WAAa,SAAUtvH,EAAQn0D,QAC1B,IAAZA,IAAsBA,EAAU,IACpC,IAAI2hB,EAAM+gK,EAAKe,WAAWtvH,EAAQn0D,GAC9B0xD,EAAMpiB,EAAKjsB,MAAM1B,GACjB+vC,GAAOA,EAAI0rB,UACX/8E,KAAKuiL,cAAclxH,EAAI0rB,WAG/B9tC,EAAKpwC,UAAU08D,KAAO,WAClB,IAKIA,EALAwhB,EAAW/8E,KAAK+8E,SAChBn5D,EAAQm5D,EAASp7E,OACrB,GAAc,IAAViiB,EACA,OAAO,KAGX,IAAK,IAAI3mB,EAAI,EAAGA,EAAI2mB,EAAO3mB,GAAK,EAAG,CAC/B,IAAI+7H,EAAUj8C,EAAS9/E,GACvB,GAAI+7H,EAAQvnB,UAAW,CACnB,IAAI4xE,EAAcrqD,EAAQz9D,OACP,MAAf8nH,IACA9nH,EAAOA,EAAOA,EAAKlX,MAAMg/H,GAAeA,IAIpD,GAAY,MAAR9nH,EACA,OAAOA,EAGX,IAAI+nH,EAAcvmG,EAASn5D,EAAQ,GACnC,OAAO,IAAI62C,EAAYgB,UAAU6nH,EAAYn8K,IAAIorC,EAAG+wI,EAAYn8K,IAAIqrC,EAAG,EAAG,IAE9EvD,EAAKpwC,UAAU0jL,cAAgB,SAAUgB,GACrC,IAEIC,EAFA5/J,EAAQ5jB,KAAK+8E,SAASp7E,OACtBkwG,EAA4B,IAAVjuF,EAAc5jB,KAAK+8E,SAASn5D,EAAQ,GAAK,KAG/D,GAAI1iB,MAAMD,QAAQsiL,GACd,IAAK,IAAItmL,EAAI,EAAG25D,EAAK2sH,EAAI5hL,OAAQ1E,EAAI25D,EAAI35D,GAAK,EAAG,CAC7C,IAAI+7H,EAAUuqD,EAAItmL,GAClBumL,EAAiBxjL,KAAKyjL,eAAezqD,EAASnnB,EAJpC,MAKV7xG,KAAK+8E,SAASv6E,KAAKghL,GACnB3xE,EAAkB2xE,OAGV,MAAPD,GAAeA,EAAI7xE,YACxB8xE,EAAiBxjL,KAAKyjL,eAAeF,EAAK1xE,EAV5B,MAWd7xG,KAAK+8E,SAASv6E,KAAKghL,IAEvB,OAAOxjL,MAEXivC,EAAKpwC,UAAU6kL,cAAgB,SAAUhiL,EAAO6hL,GAC5C,IAOIC,EAPA5/J,EAAQ5jB,KAAK+8E,SAASp7E,OAI1B,GAHID,EAAQ,IACRA,EAAQkiB,EAAQliB,EAAQ,GAExBA,EAAQkiB,GAASliB,EAAQ,EACzB,MAAM,IAAIsB,MAAM,uBAGpB,IAAI6uG,EAAkB,KAClB8xE,EAAc,KAWlB,GAVc,IAAV//J,IACIliB,GAAS,EAETiiL,GADA9xE,EAAkB7xG,KAAK+8E,SAASr7E,EAAQ,IACViiL,aAG9B9xE,EAAkB,KAClB8xE,EAAc3jL,KAAK+8E,SAAS,KAG/B77E,MAAMD,QAAQsiL,GAKf,IAAK,IAAItmL,EAAI,EAAG25D,EAAK2sH,EAAI5hL,OAAQ1E,EAAI25D,EAAI35D,GAAK,EAAG,CAC7C,IAAI+7H,EAAUuqD,EAAItmL,GAClBumL,EAAiBxjL,KAAKyjL,eAAezqD,EAASnnB,EAAiB8xE,GAC/D3jL,KAAK+8E,SAAS11E,OAAO3F,EAAQzE,EAAG,EAAGumL,GACnC3xE,EAAkB2xE,OARtBA,EAAiBxjL,KAAKyjL,eAAeF,EAAK1xE,EAAiB8xE,GAC3D3jL,KAAK+8E,SAAS11E,OAAO3F,EAAO,EAAG8hL,GAUnC,OAAOxjL,MAEXivC,EAAKpwC,UAAU+kL,cAAgB,SAAUliL,GACrC,IAAI2T,EAAMrV,KAAK6jL,SAASniL,GACpBoiL,EAAiB9jL,KAAK+8E,SAAS11E,OAAOgO,EAAK,GAAG,GAC9Cw8F,EAAkBiyE,EAAejyE,gBACjC8xE,EAAcG,EAAeH,YAWjC,OATI9xE,IACAA,EAAgB8xE,YAAcA,GAE9BA,IACAA,EAAY9xE,gBAAkBA,GAE9BiyE,EAAenyE,gBAAkBgyE,GACjC3jL,KAAK+jL,0BAA0BJ,GAE5BG,GAEX70I,EAAKpwC,UAAUmlL,eAAiB,SAAUtiL,EAAO6hL,GAC7C,IACIC,EADAnuK,EAAMrV,KAAK6jL,SAASniL,GAEpBuiL,EAAkBjkL,KAAK+8E,SAAS1nE,GAChCw8F,EAAkBoyE,EAAgBpyE,gBAClC8xE,EAAcM,EAAgBN,YAC9BO,EAAqBD,EAAgBtyE,eACzC,GAAKzwG,MAAMD,QAAQsiL,GAQd,CACDvjL,KAAK+8E,SAAS11E,OAAO3F,EAAO,GAC5B,IAAK,IAAIzE,EAAI,EAAG25D,EAAK2sH,EAAI5hL,OAAQ1E,EAAI25D,EAAI35D,GAAK,EAAG,CAC7C,IAAI+7H,EAAUuqD,EAAItmL,GAClBumL,EAAiBxjL,KAAKyjL,eAAezqD,EAASnnB,EAAiB8xE,GAC/D3jL,KAAK+8E,SAAS11E,OAAO3F,EAAQzE,EAAG,EAAGumL,GACnC3xE,EAAkB2xE,EACdU,GAAsBV,EAAe7xE,iBACrCuyE,GAAqB,SAf7BV,EAAiBxjL,KAAKyjL,eAAeF,EAAK1xE,EAAiB8xE,GAC3D3jL,KAAK+8E,SAAS11E,OAAOgO,EAAK,EAAGmuK,GACzBU,GAAsBV,EAAe7xE,iBAErCuyE,GAAqB,GAezBA,GAAsBP,GACtB3jL,KAAK+jL,0BAA0BJ,IAGvC10I,EAAKpwC,UAAUslL,WAAa,SAAUziL,GAClC,IAAI2T,EAAMrV,KAAK6jL,SAASniL,GACxB,OAAO1B,KAAK+8E,SAAS1nE,IAEzB45B,EAAKpwC,UAAUglL,SAAW,SAAUniL,GAChC,IAAIC,EAAS3B,KAAK+8E,SAASp7E,OAC3B,GAAe,IAAXA,EACA,MAAM,IAAIqB,MAAM,yBAGpB,IADA,IAAI/F,EAAIyE,EACDzE,EAAI,GACPA,EAAI0E,EAAS1E,EAEjB,GAAIA,GAAK0E,GAAU1E,EAAI,EACnB,MAAM,IAAI+F,MAAM,uBAEpB,OAAO/F,GAEXgyC,EAAKpwC,UAAUulL,UAAY,SAAUjoH,EAAOx8D,QACxB,IAAZA,IAAsBA,EAAU,IACpC,IAAI+B,EAAQ1B,KAAKqkL,eAAeloH,EAAOx8D,GACvC,OAAK+B,EAGE1B,KAAKmkL,WAAWziL,GAFZ,MAIfutC,EAAKpwC,UAAUylL,gBAAkB,SAAU3iL,EAAQhC,QAC/B,IAAZA,IAAsBA,EAAU,IACpC,IAAI+B,EAAQ1B,KAAKukL,qBAAqB5iL,EAAQhC,GAC9C,OAAK+B,EAEE1B,KAAKmkL,WAAWziL,GADZ,MAGfutC,EAAKpwC,UAAUwlL,eAAiB,SAAUloH,EAAOx8D,GAE7C,QADgB,IAAZA,IAAsBA,EAAU,IACP,IAAzBK,KAAK+8E,SAASp7E,OACd,OAAO,KAEX,IAAI26D,GAAO,EAAIgkH,EAAO92H,OAAO2S,EAAO,EAAG,GACnC1hC,EAAMz6B,KAAKmiH,WAAWxiH,GAEtBgC,EADM3B,KAAK2B,OAAO84B,GACH6hC,EACnB,OAAOt8D,KAAKukL,qBAAqB5iL,EAAQ84B,IAE7CwU,EAAKpwC,UAAU0lL,qBAAuB,SAAU5iL,EAAQhC,QACpC,IAAZA,IAAsBA,EAAU,IACpC,IAAIikB,EAAQ5jB,KAAK+8E,SAASp7E,OAC1B,GAAc,IAAViiB,EACA,OAAO,KAEX,IAAIy4C,GAAY,EACZ16D,EAAS,IACT06D,GAAY,EACZ16D,GAAUA,GAMd,IAJA,IAAI86C,EAAYz8C,KAAKqiH,aAAa1iH,GAC9B6kL,EAAsBxkL,KAAKklH,gBAAgBvlH,GAC3C2tC,EAAO,EACPm3I,EAAmB,KACdxnL,EAAI,EAAGA,EAAI2mB,EAAO3mB,GAAK,EAAG,CAC/B,IAAIyE,EAAQ26D,EAAYp/D,EAAI2mB,EAAQ,EAAI3mB,EACpC+7H,EAAUh5H,KAAK+8E,SAASr7E,GACxB4gH,EAAekiE,EAAoB9iL,GACnCuF,EAAM+xH,EAAQr3H,OAAO,CAAE86C,UAAWA,EAAW6lE,aAAcA,IAC/D,GAAI0W,EAAQvnB,UAAW,CACnB,GAAI9vG,GAAU2rC,EAAOrmC,EACjB,OAAOvF,EAEX+iL,EAAmB/iL,EAEvB4rC,GAAQrmC,EAIZ,OAAOw9K,GAEXx1I,EAAKpwC,UAAU6lL,uBAAyB,SAAU/kL,QAC9B,IAAZA,IAAsBA,EAAU,IAGpC,IAFA,IAAI88C,EAAYz8C,KAAKqiH,aAAa1iH,GAC9B6kL,EAAsB,GACjBvnL,EAAI,EAAG25D,EAAK52D,KAAK+8E,SAASp7E,OAAQ1E,EAAI25D,EAAI35D,GAAK,EAAG,CACvD,IACIqlH,EADUtiH,KAAK+8E,SAAS9/E,GACDioH,gBAAgB,CAAEzoE,UAAWA,IACxD+nI,EAAoBhiL,KAAK8/G,GAE7B,OAAOkiE,GAEXv1I,EAAKpwC,UAAUklL,0BAA4B,SAAU/qD,GAGjD,IAFA,IAAI/4E,EAAW+4E,EAAQnnB,gBACnB7sE,EAAUg0F,EACPh0F,IAAYA,EAAQ2sE,gBAGnB3sE,EAAQ2/I,oBADI,MAAZ1kI,EAC8BA,EAAS0kI,oBAGT,KAElC1kI,EAAWjb,EACXA,EAAUA,EAAQ2+I,aAG1B10I,EAAKpwC,UAAU4kL,eAAiB,SAAUzqD,EAASnnB,EAAiB8xE,GAChE3qD,EAAQnnB,gBAAkBA,EAC1BmnB,EAAQ2qD,YAAcA,EACC,MAAnB9xE,IACAA,EAAgB8xE,YAAc3qD,GAEf,MAAf2qD,IACAA,EAAY9xE,gBAAkBmnB,GAElC,IAAIkrD,EAAqBlrD,EAUzB,OATIA,EAAQrnB,iBAERqnB,EAAQ2rD,oBAAsB3rD,EAC9BkrD,EAAqBP,GAGC,MAAtBO,GACAlkL,KAAK+jL,0BAA0BG,GAE5BlrD,GAEX/pF,EAAKpwC,UAAU68D,aAAe,SAAU38D,EAAGY,QACvB,IAAZA,IAAsBA,EAAU,IACpC,IAAIxB,EAAI6B,KAAK8xG,cAAc/yG,EAAGY,GAC9B,OAAKxB,EAGE6B,KAAKiyG,SAAS9zG,GAFV,MAIf8wC,EAAKpwC,UAAUg9D,mBAAqB,SAAU98D,EAAGY,QAC7B,IAAZA,IAAsBA,EAAU,IACpC,IAAIy5B,EAAOp5B,KAAKmiH,WAAWxiH,GACvBxB,EAAI6B,KAAK8xG,cAAc/yG,EAAGq6B,GAC9B,OAAKj7B,EAGE6B,KAAK+xG,UAAU5zG,EAAGi7B,GAFd,GAIf6V,EAAKpwC,UAAU+8D,6BAA+B,SAAU78D,EAAGY,QACvC,IAAZA,IAAsBA,EAAU,IACpC,IAAIy5B,EAAOp5B,KAAKmiH,WAAWxiH,GACvByiH,EAAWpiH,KAAK67D,mBAAmB98D,EAAGq6B,GAC1C,GAAiB,IAAbgpF,EACA,OAAO,EAEX,IAAIzgH,EAAS3B,KAAK2B,OAAOy3B,GACzB,OAAe,IAAXz3B,EACO,EAEJygH,EAAWzgH,GAEtBstC,EAAKpwC,UAAUizG,cAAgB,SAAU/yG,EAAGY,GAExC,QADgB,IAAZA,IAAsBA,EAAU,IACP,IAAzBK,KAAK+8E,SAASp7E,OACd,OAAO,KAMX,IAJA,IAEImwG,EAFAr1D,EAAYz8C,KAAKqiH,aAAa1iH,GAC9B6kL,EAAsBxkL,KAAKklH,gBAAgBvlH,GAE3CilL,EAAqBrmI,IAChBthD,EAAI,EAAG25D,EAAK52D,KAAK+8E,SAASp7E,OAAQ1E,EAAI25D,EAAI35D,GAAK,EAAG,CACvD,IAAI+7H,EAAUh5H,KAAK+8E,SAAS9/E,GACxBqlH,EAAekiE,EAAoBvnL,GACvC,GAAI+7H,EAAQvnB,UAAW,CACnB,IAAIozE,EAAuB7rD,EAAQlnB,cAAc/yG,EAAG,CAChD09C,UAAWA,EACX6lE,aAAcA,IAEdwiE,EAAsB9rD,EAAQ/mB,SAAS4yE,GACvC9wH,GAAkB,EAAIusH,EAAOzlH,eAAeiqH,EAAqB/lL,GACjEg1D,EAAkB6wH,IAClB9yE,EAAgB,CAAEizE,aAAc9nL,EAAGiB,MAAO2mL,GAC1CD,EAAqB7wH,IAIjC,OAAI+9C,GAGG,CAAEizE,aAAc/kL,KAAK+8E,SAASp7E,OAAS,EAAGzD,MAAO,IAE5D+wC,EAAKpwC,UAAUi9D,oBAAsB,SAAU/8D,EAAGY,GAE9C,QADgB,IAAZA,IAAsBA,EAAU,IACP,IAAzBK,KAAK+8E,SAASp7E,OACd,OAAO,KAMX,IAJA,IAEIm6D,EAFArf,EAAYz8C,KAAKqiH,aAAa1iH,GAC9B6kL,EAAsBxkL,KAAKklH,gBAAgBvlH,GAE3CilL,EAAqBrmI,IAChBthD,EAAI,EAAG25D,EAAK52D,KAAK+8E,SAASp7E,OAAQ1E,EAAI25D,EAAI35D,GAAK,EAAG,CACvD,IAAI+7H,EAAUh5H,KAAK+8E,SAAS9/E,GACxBqlH,EAAekiE,EAAoBvnL,GACvC,GAAI+7H,EAAQ99D,mBAAoB,CAC5B,IAAI2pH,EAAuB7rD,EAAQlnB,cAAc/yG,EAAG,CAChD09C,UAAWA,EACX6lE,aAAcA,IAEdwiE,EAAsB9rD,EAAQ/mB,SAAS4yE,GACvC9wH,GAAkB,EAAIusH,EAAOzlH,eAAeiqH,EAAqB/lL,GACjEg1D,EAAkB6wH,IAClB9oH,EAAsBk9D,EAAQ9mB,WAAW2yE,GACzCD,EAAqB7wH,IAIjC,OAAI+H,GAGG,MAEX7sB,EAAKpwC,UAAUk2D,cAAgB,SAAUh2D,EAAGY,QACxB,IAAZA,IAAsBA,EAAU,IACpC,IAAIqlL,EAAYhlL,KAAKilL,YAAYtlL,GACjC,IAAKqlL,EACD,OAAO,EAGX,IADA,IAAIE,EAAmB,EACdjoL,EAAI,EAAG25D,EAAKouH,EAAUrjL,OAAQ1E,EAAI25D,EAAI35D,GAAK,EAAG,CACpC+nL,EAAU/nL,GACZ83D,cAAch2D,KACvBmmL,GAAoB,GAI5B,OAAOA,EAAmB,GAAM,GAEpCj2I,EAAKpwC,UAAU88D,QAAU,SAAUQ,EAAOx8D,GAEtC,QADgB,IAAZA,IAAsBA,EAAU,IACP,IAAzBK,KAAK+8E,SAASp7E,OACd,OAAO,KAEX,GAAIw6D,GAAS,EACT,OAAOn8D,KAAKsB,MAAMmG,QAEtB,GAAI00D,GAAS,EACT,OAAOn8D,KAAKmH,IAAIM,QAEpB,IAAI2xB,EAAOp5B,KAAKmiH,WAAWxiH,GAEvBgC,EADa3B,KAAK2B,OAAOy3B,GACH+iC,EAC1B,OAAOn8D,KAAKo8D,cAAcz6D,EAAQy3B,IAEtC6V,EAAKpwC,UAAUu9D,cAAgB,SAAUz6D,EAAQhC,GAE7C,QADgB,IAAZA,IAAsBA,EAAU,IACP,IAAzBK,KAAK+8E,SAASp7E,OACd,OAAO,KAEX,GAAe,IAAXA,EACA,OAAO3B,KAAKsB,MAAMmG,QAEtB,IAAI40D,GAAY,EACZ16D,EAAS,IACT06D,GAAY,EACZ16D,GAAUA,GAMd,IAJA,IAEIwjL,EAFA1oI,EAAYz8C,KAAKqiH,aAAa1iH,GAC9B6kL,EAAsBxkL,KAAKklH,gBAAgBvlH,GAE3C2tC,EAAO,EACFrwC,EAAI,EAAG25D,EAAK52D,KAAK+8E,SAASp7E,OAAQ1E,EAAI25D,EAAI35D,GAAK,EAAG,CACvD,IAAIyE,EAAQ26D,EAAYp/D,EAAI25D,EAAK,EAAI35D,EACjC+7H,EAAUh5H,KAAK+8E,SAASr7E,GACxB4gH,EAAekiE,EAAoB9iL,GACnCnE,EAAIy7H,EAAQr3H,OAAO,CACnB86C,UAAWA,EACX6lE,aAAcA,IAElB,GAAI0W,EAAQvnB,UAAW,CACnB,GAAI9vG,GAAU2rC,EAAO/vC,EACjB,OAAOy7H,EAAQ58D,eAAeC,EAAY,GAAK,IAAM16D,EAAS2rC,GAAO,CACjEmP,UAAWA,EACX6lE,aAAcA,IAGtB6iE,EAAqBnsD,EAEzB1rF,GAAQ/vC,EAIZ,OAAI4nL,EACO9oH,EAAY8oH,EAAmBh+K,IAAMg+K,EAAmB7jL,MAGjDtB,KAAK+8E,SAAS/8E,KAAK+8E,SAASp7E,OAAS,GACpCwF,IAAIM,SAE3BwnC,EAAKpwC,UAAUozG,SAAW,SAAU9zG,GAChC,IAAI4+E,EAAW/8E,KAAK+8E,SAChBqoG,EAAcroG,EAASp7E,OAC3B,GAAoB,IAAhByjL,EACA,OAAO,KACX,IAAIL,EAAe5mL,EAAE4mL,aACrB,GAAIA,EAAe,EACf,OAAOhoG,EAAS,GAAGk1B,SAAS,GAChC,GAAI8yE,GAAgBK,EAChB,OAAOroG,EAASqoG,EAAc,GAAGnzE,SAAS,GAE9C,IAAIozE,GAAS,EAAI/E,EAAO92H,OAAOrrD,EAAED,MAAO,EAAG,GAC3C,OAAO6+E,EAASgoG,GAAc9yE,SAASozE,IAE3Cp2I,EAAKpwC,UAAU09D,SAAW,SAAUJ,EAAOx8D,GAEvC,QADgB,IAAZA,IAAsBA,EAAU,IACP,IAAzBK,KAAK+8E,SAASp7E,OACd,OAAO,KAEX,IAAI26D,GAAO,EAAIgkH,EAAO92H,OAAO2S,EAAO,EAAG,GACnC/iC,EAAOp5B,KAAKmiH,WAAWxiH,GAEvBgC,EADM3B,KAAK2B,OAAOy3B,GACHkjC,EACnB,OAAOt8D,KAAKy8D,eAAe96D,EAAQy3B,IAEvC6V,EAAKpwC,UAAU49D,eAAiB,SAAU96D,EAAQhC,GAE9C,QADgB,IAAZA,IAAsBA,EAAU,IACP,IAAzBK,KAAK+8E,SAASp7E,OACd,OAAO,KAEX,IAAI06D,GAAY,EACZ16D,EAAS,IACT06D,GAAY,EACZ16D,GAAUA,GAUd,IARA,IAGI6hH,EACA8hE,EACAC,EACAC,EACArnL,EAPAs+C,EAAYz8C,KAAKqiH,aAAa1iH,GAC9B6kL,EAAsBxkL,KAAKklH,gBAAgBvlH,GAC3C2tC,EAAO,EAMFrwC,EAAI,EAAG25D,EAAK52D,KAAK+8E,SAASp7E,OAAQ1E,EAAI25D,EAAI35D,GAAK,EAAG,CACvD,IAAIwoL,EAAUppH,EAAYp/D,EAAI25D,EAAK,EAAI35D,EACnC+7H,EAAUh5H,KAAKmkL,WAAWsB,GAE1BrsJ,EAAO,CAAEqjB,UAAWA,EAAW6lE,aADhBkiE,EAAoBiB,IAEnCx+K,EAAM+xH,EAAQr3H,OAAOy3B,GACzB,GAAI4/F,EAAQ99D,qBACRqqH,EAAmBvsD,EACnBwsD,EAAwBC,EACpB9jL,GAAU2rC,EAAOrmC,GAAK,CACtBq+K,EAAsBG,EACtBjiE,EAAUwV,EAAQv8D,gBAAgBJ,EAAY,GAAK,IAAM16D,EAAS2rC,GAAOlU,GACzE,MAGRkU,GAAQrmC,EAEZ,IAAKs+K,EACD,OAAO,KAEN/hE,IACD8hE,EAAsBE,EACtBrnL,EAAIk+D,EAAY,EAAI,EACpBmnD,EAAU+hE,EAAiBvzE,UAAU7zG,IAGzC,IAAIunL,EAAW1lL,KAAKyH,QAChB/F,EAAQ4jL,EACZI,EAAS1B,eAAetiL,EAAO8hH,GAC/B,IAAImiE,EAAqBjkL,EACrBkkL,EAAmBlkL,EAAQ,EAC3BmkL,EAAmBnkL,EAAQ,EAE1B8hH,EAAQ,GAAGtoD,qBACZwqH,EAAS9B,cAAc+B,GACvBC,GAAoB,EACpBC,GAAoB,GAGxB,IAAIC,EAAYJ,EAASvB,WAAWyB,GAAkBtkL,MACtDokL,EAAShC,cAAckC,EAAkB32I,EAAKuzI,cAAc,IAAKsD,IACjED,GAAoB,EAEfriE,EAAQ,GAAGtoD,qBACZwqH,EAAS9B,cAAciC,EAAmB,GAC1CA,GAAoB,GAGxB,IAAIE,EAAmCF,EAAmBF,EAAqB,EAC/E,IAAS1oL,EAAI4oL,EAAkBjvH,EAAK8uH,EAAS3oG,SAASp7E,OAAQ1E,EAAI25D,EAAI35D,GAAK,EAAG,CAC1E,IAAI+oL,EAAkBhmL,KAAKmkL,WAAWlnL,EAAI8oL,GAE1C,GAAqB,OADjB/sD,EAAU0sD,EAASvB,WAAWlnL,IACtBsE,OACPykL,EAAgBrB,oBAAoBx9K,IAAIqtD,OAAOwkE,EAAQ2rD,oBAAoBx9K,KAAM,CAGlF,IAAI8+K,EAAmBh3I,EAAKuzI,cAAc,IAAKwD,EAAgB7+K,KAC/Du+K,EAAS1B,eAAe/mL,EAAGgpL,IAMnC,MAAO,CAFS,IAAIh3I,EAAKy2I,EAAS3oG,SAASz5E,MAAM,EAAGsiL,IACnC,IAAI32I,EAAKy2I,EAAS3oG,SAASz5E,MAAMsiL,MAGtD32I,EAAKpwC,UAAU69D,mBAAqB,SAAUzB,EAAMt7D,QAChC,IAAZA,IAAsBA,EAAU,IACpC,IAAIqlL,EAAYhlL,KAAKilL,YAAYtlL,GACjC,GAAiB,MAAbqlL,EACA,OAAO,KAGX,IADA,IAAI5rD,EAAgB,KACXn8H,EAAI,EAAG25D,EAAKouH,EAAUrjL,OAAQ1E,EAAI25D,EAAI35D,GAAK,EAAG,CACnD,IAAIu+H,EAAWwpD,EAAU/nL,GACrB6lD,EAAemY,EAAKrD,UAAU4jE,GAC9B14E,IACqB,MAAjBs2E,IACAA,EAAgB,IAEhBl4H,MAAMD,QAAQ6hD,GACds2E,EAAc52H,KAAKgB,MAAM41H,EAAet2E,GAGxCs2E,EAAc52H,KAAKsgD,IAI/B,OAAOs2E,GAEXnqF,EAAKpwC,UAAUq8D,iBAAmB,WAC9B,IAAK,IAAIj+D,EAAI,EAAG25D,EAAK52D,KAAK+8E,SAASp7E,OAAQ1E,EAAI25D,EAAI35D,GAAK,EAAG,CAEvD,GADc+C,KAAK+8E,SAAS9/E,GAChBi+D,mBACR,OAAO,EAGf,OAAO,GAEXjsB,EAAKpwC,UAAUu2I,QAAU,WACrB,IAAIr4D,EAAW/8E,KAAK+8E,SAEpB,OADkC,IAApBA,EAASp7E,QAAqC,MAArBo7E,EAAS,GAAGx7E,MAGvD0tC,EAAKpwC,UAAU8C,OAAS,SAAUhC,GAE9B,QADgB,IAAZA,IAAsBA,EAAU,IACP,IAAzBK,KAAK+8E,SAASp7E,OACd,OAAO,EAIX,IAFA,IAAI6iL,EAAsBxkL,KAAKklH,gBAAgBvlH,GAC3CgC,EAAS,EACJ1E,EAAI,EAAG25D,EAAK52D,KAAK+8E,SAASp7E,OAAQ1E,EAAI25D,EAAI35D,GAAK,EAAG,CACvD,IAAI+7H,EAAUh5H,KAAK+8E,SAAS9/E,GACxBqlH,EAAekiE,EAAoBvnL,GACvC0E,GAAUq3H,EAAQr3H,OAAO,CAAE2gH,aAAcA,IAE7C,OAAO3gH,GAEXstC,EAAKpwC,UAAUkzG,UAAY,SAAU5zG,EAAGwB,QACpB,IAAZA,IAAsBA,EAAU,IACpC,IAAIikB,EAAQ5jB,KAAK+8E,SAASp7E,OAC1B,GAAc,IAAViiB,EACA,OAAO,EAEX,IAAImhK,EAAe5mL,EAAE4mL,aACrB,GAAIA,EAAe,EACf,OAAO,EAEX,IAAIM,GAAS,EAAI/E,EAAO92H,OAAOrrD,EAAED,MAAO,EAAG,GACvC6mL,GAAgBnhK,IAChBmhK,EAAenhK,EAAQ,EACvByhK,EAAS,GAKb,IAHA,IAAI5oI,EAAYz8C,KAAKqiH,aAAa1iH,GAC9B6kL,EAAsBxkL,KAAKklH,gBAAgBvlH,GAC3CgC,EAAS,EACJ1E,EAAI,EAAGA,EAAI8nL,EAAc9nL,GAAK,EAAG,CACtC,IAAIipL,EAAYlmL,KAAK+8E,SAAS9/E,GAC1BkpL,EAAiB3B,EAAoBvnL,GACzC0E,GAAUukL,EAAUvkL,OAAO,CAAE86C,UAAWA,EAAW6lE,aAAc6jE,IAErE,IAAIntD,EAAUh5H,KAAK+8E,SAASgoG,GACxBziE,EAAekiE,EAAoBO,GAEvC,OADApjL,GAAUq3H,EAAQjnB,UAAUszE,EAAQ,CAAE5oI,UAAWA,EAAW6lE,aAAcA,KAG9ErzE,EAAKpwC,UAAUk9D,UAAY,SAAUI,EAAOx8D,GAExC,QADgB,IAAZA,IAAsBA,EAAU,IACP,IAAzBK,KAAK+8E,SAASp7E,OACd,OAAO,KAEX,IAAI26D,GAAO,EAAIgkH,EAAO92H,OAAO2S,EAAO,EAAG,GACnC/iC,EAAOp5B,KAAKmiH,WAAWxiH,GAEvBgC,EADM3B,KAAK2B,OAAOy3B,GACHkjC,EACnB,OAAOt8D,KAAKs9D,gBAAgB37D,EAAQy3B,IAExC6V,EAAKpwC,UAAUy+D,gBAAkB,SAAU37D,EAAQhC,GAE/C,QADgB,IAAZA,IAAsBA,EAAU,IACP,IAAzBK,KAAK+8E,SAASp7E,OACd,OAAO,KAEX,IAAI06D,GAAY,EACZ16D,EAAS,IACT06D,GAAY,EACZ16D,GAAUA,GAMd,IAJA,IAEI4jL,EAFA9oI,EAAYz8C,KAAKqiH,aAAa1iH,GAC9B6kL,EAAsBxkL,KAAKklH,gBAAgBvlH,GAE3C2tC,EAAO,EACFrwC,EAAI,EAAG25D,EAAK52D,KAAK+8E,SAASp7E,OAAQ1E,EAAI25D,EAAI35D,GAAK,EAAG,CACvD,IAAIyE,EAAQ26D,EAAYp/D,EAAI25D,EAAK,EAAI35D,EACjC+7H,EAAUh5H,KAAK+8E,SAASr7E,GACxB4gH,EAAekiE,EAAoB9iL,GACnCuF,EAAM+xH,EAAQr3H,OAAO,CAAE86C,UAAWA,EAAW6lE,aAAcA,IAC/D,GAAI0W,EAAQ99D,mBAAoB,CAC5B,GAAIv5D,GAAU2rC,EAAOrmC,EACjB,OAAO+xH,EAAQ17D,iBAAiBjB,EAAY,GAAK,IAAM16D,EAAS2rC,GAAO,CACnEmP,UAAWA,EACX6lE,aAAcA,IAGtBijE,EAAmBvsD,EAEvB1rF,GAAQrmC,EAGZ,GAAIs+K,EAAkB,CAClB,IAAIpnL,EAAIk+D,EAAY,EAAI,EACxB,OAAOkpH,EAAiBrzE,WAAW/zG,GAGvC,OAAO,MAEX8wC,EAAKpwC,UAAUqzG,WAAa,SAAU/zG,GAClC,IAAIylB,EAAQ5jB,KAAK+8E,SAASp7E,OAC1B,GAAc,IAAViiB,EACA,OAAO,KAEX,IAAImhK,EAAe5mL,EAAE4mL,aACrB,GAAIA,EAAe,EACf,OAAO/kL,KAAK+8E,SAAS,GAAGm1B,WAAW,GAEvC,GAAI6yE,GAAgBnhK,EAChB,OAAO5jB,KAAK+8E,SAASn5D,EAAQ,GAAGsuF,WAAW,GAE/C,IAAImzE,GAAS,EAAI/E,EAAO92H,OAAOrrD,EAAED,MAAO,EAAG,GAC3C,OAAO8B,KAAK+8E,SAASgoG,GAAc7yE,WAAWmzE,IAElDp2I,EAAKpwC,UAAUwjH,aAAe,SAAU1iH,GAEpC,YADgB,IAAZA,IAAsBA,EAAU,IACR,MAArBA,EAAQ88C,UAAoBz8C,KAAK0hH,UAAY/hH,EAAQ88C,WAEhExN,EAAKpwC,UAAUqmH,gBAAkB,SAAUvlH,GAEvC,QADgB,IAAZA,IAAsBA,EAAU,IACD,MAA/BA,EAAQ6kL,oBAA6B,CACrC,IAAI/nI,EAAYz8C,KAAKqiH,aAAa1iH,GAClC,OAAOK,KAAK0kL,uBAAuB,CAAEjoI,UAAWA,IAEpD,OAAO98C,EAAQ6kL,qBAEnBv1I,EAAKpwC,UAAUsjH,WAAa,SAAUxiH,GAIlC,YAHgB,IAAZA,IAAsBA,EAAU,IAG7B,CAAE88C,UAFOz8C,KAAKqiH,aAAa1iH,GAEH6kL,oBADLxkL,KAAKklH,gBAAgBvlH,KAGnDsvC,EAAKpwC,UAAUmnH,SAAW,SAAUrmH,QAChB,IAAZA,IAAsBA,EAAU,IACpC,IAAIo9E,EAAW/8E,KAAK+8E,SAChBn5D,EAAQm5D,EAASp7E,OACrB,GAAc,IAAViiB,EACA,OAAO,KAKX,IAHA,IAAI4gK,EAAsBxkL,KAAKklH,gBAAgBvlH,GAC3Cm0D,EAAS,GACTsyH,EAAgB,GACXnpL,EAAI,EAAGA,EAAI2mB,EAAO3mB,GAAK,EAAG,CAC/B,IAAI+7H,EAAUj8C,EAAS9/E,GACvB,GAAI+7H,EAAQvnB,UAAW,CACnB,IAAI6T,EAAYk/D,EAAoBvnL,GAChCqoH,EAAU3jH,OAAS,EAEnB2jH,EAAUn6E,SAAQ,SAAU7tC,GAAK,OAAO8oL,EAAc5jL,KAAKlF,EAAEgE,UAG7D8kL,EAAc5jL,KAAKw2H,EAAQ13H,YAG1B8kL,EAAczkL,OAAS,IAC5BykL,EAAc5jL,KAAKu6E,EAAS9/E,EAAI,GAAGkK,KACnC2sD,EAAOtxD,KAAK4jL,GACZA,EAAgB,IAOxB,OAJIA,EAAczkL,OAAS,IACvBykL,EAAc5jL,KAAKxC,KAAKmH,KACxB2sD,EAAOtxD,KAAK4jL,IAETtyH,GAEX7kB,EAAKpwC,UAAUomL,YAAc,SAAUtlL,QACnB,IAAZA,IAAsBA,EAAU,IACpC,IAAIm0D,EAAS9zD,KAAKgmH,SAASrmH,GAC3B,OAAKm0D,EAGEA,EAAOvtD,KAAI,SAAUpD,GAAO,OAAO,IAAIo+G,EAAW0E,SAAS9iH,MAFvD,MAIf8rC,EAAKpwC,UAAUgmB,MAAQ,SAAU6uC,EAAIC,EAAIC,GAErC,OADA5zD,KAAK+8E,SAAS5xC,SAAQ,SAAUnsC,GAAK,OAAOA,EAAE6lB,MAAM6uC,EAAIC,EAAIC,MACrD5zD,MAEXivC,EAAKpwC,UAAU00D,OAAS,SAAUmB,EAAOd,GAErC,OADA5zD,KAAK+8E,SAAS5xC,SAAQ,SAAU6tF,GAAW,OAAOA,EAAQzlE,OAAOmB,EAAOd,MACjE5zD,MAEXivC,EAAKpwC,UAAUu0D,UAAY,SAAUuH,EAAIC,GAOrC,MANkB,iBAAPD,EACP36D,KAAK+8E,SAAS5xC,SAAQ,SAAUnsC,GAAK,OAAOA,EAAEo0D,UAAUuH,EAAIC,MAG5D56D,KAAK+8E,SAAS5xC,SAAQ,SAAUnsC,GAAK,OAAOA,EAAEo0D,UAAUuH,MAErD36D,MAEXivC,EAAKpwC,UAAU4I,MAAQ,WACnB,IAAIynC,EAAO,IAAID,EAEf,OADAjvC,KAAK+8E,SAAS5xC,SAAQ,SAAUnsC,GAAK,OAAOkwC,EAAKqzI,cAAcvjL,EAAEyI,YAC1DynC,GAEXD,EAAKpwC,UAAU21D,OAAS,SAAUz1D,GAC9B,GAAS,MAALA,EACA,OAAO,EAEX,IAAIg+E,EAAW/8E,KAAK+8E,SAChBspG,EAAgBtnL,EAAEg+E,SAClBn5D,EAAQm5D,EAASp7E,OACrB,GAAI0kL,EAAc1kL,SAAWiiB,EACzB,OAAO,EAEX,IAAK,IAAI3mB,EAAI,EAAGA,EAAI2mB,EAAO3mB,GAAK,EAAG,CAC/B,IAAI+N,EAAI+xE,EAAS9/E,GACbgO,EAAIo7K,EAAcppL,GACtB,GAAI+N,EAAEzJ,OAAS0J,EAAE1J,OAASyJ,EAAEwpD,OAAOvpD,GAC/B,OAAO,EAGf,OAAO,GAEXgkC,EAAKpwC,UAAUktD,OAAS,WACpB,OAAO/rD,KAAK+8E,SAASx2E,KAAI,SAAUvH,GAAK,OAAOA,EAAE+sD,aAErD9c,EAAKpwC,UAAU6gC,UAAY,WACvB,IAAK1/B,KAAKo1I,UACN,MAAM,IAAIpyI,MAAM,0BAEpB,OAAOhD,KAAK+8E,SAASx2E,KAAI,SAAUvH,GAAK,OAAOA,EAAE0gC,eAAgB1wB,KAAK,MAE1EigC,EAAKpwC,UAAU8E,SAAW,WACtB,OAAO3D,KAAK0/B,aAETuP,EAl7Bc,CAm7BvBurB,EAAWxE,UACbj5D,EAAQkyC,KAAOA,EACf,SAAWA,GACPA,EAAKhxC,YAAc,eAAiBgxC,EAAKzxC,KAmBzCyxC,EAAKq3I,OAlBL,SAAgBpwH,GACZ,GAAgB,MAAZA,EACA,OAAO,EAEX,GAAIA,aAAoBjnB,EACpB,OAAO,EAEX,IAAIr9B,EAAMskD,EAASl4D,OAAOC,aACtBixC,EAAOgnB,EACX,QAAY,MAAPtkD,GAAeA,IAAQq9B,EAAKhxC,cAC7BiD,MAAMD,QAAQiuC,EAAK6tC,WACI,mBAAhB7tC,EAAKitD,QACW,mBAAhBjtD,EAAKmtD,QACY,mBAAjBntD,EAAKwzI,UAfxB,CAqBGzzI,EAAOlyC,EAAQkyC,OAASlyC,EAAQkyC,KAAO,KAC1ClyC,EAAQkyC,KAAOA,EACf,SAAWA,GAyBP,SAASuzI,EAAcjhL,GAGnB,IAFA,IAAIuyI,EAAI7/D,EAAIgB,EACR9/D,EAAO,GACF/L,EAAK,EAAGA,EAAK3C,UAAU9E,OAAQyH,IACpC+L,EAAK/L,EAAK,GAAK3C,UAAU2C,GAE7B,GAAa,MAAT7H,EACA,OAAQuyI,EAAKouC,EAASO,OAAOlkL,QAAQnB,KAAKoG,MAAMswI,EAAI8tC,EAAc,CAAC,MAAOzsK,GAAM,IAEpF,GAAa,MAAT5T,EACA,OAAQ0yE,EAAKguG,EAAStmD,OAAOp9H,QAAQnB,KAAKoG,MAAMywE,EAAI2tG,EAAc,CAAC,MAAOzsK,GAAM,IAEpF,GAAa,MAAT5T,EACA,OAAQ0zE,EAAKktG,EAAUQ,QAAQpkL,QAAQnB,KAAKoG,MAAMyxE,EAAI2sG,EAAc,CAAC,MAAOzsK,GAAM,IAEtF,GAAa,MAAT5T,GAAyB,MAATA,EAChB,OAAOygL,EAAQmB,MAAM5kL,SAEzB,MAAM,IAAIyE,MAAM,8BAAiCzB,EAAO,KAnB5D0tC,EAAKjsB,MAvBL,SAAe4vB,GACX,IAAKA,EACD,OAAO,IAAI3D,EAEf,IAAIC,EAAO,IAAID,EAEXs3I,EAAWt3I,EAAKuiB,UAAU5e,GAAU3kC,MADxB,6GAEhB,GAAgB,MAAZs4K,EACA,IAAK,IAAItpL,EAAI,EAAG25D,EAAK2vH,EAAS5kL,OAAQ1E,EAAI25D,EAAI35D,GAAK,EAAG,CAClD,IAGIkY,EAHUoxK,EAAStpL,GAGJgR,MAFP,uEAGZ,GAAY,MAARkH,EAAc,CACd,IAAI5T,EAAO4T,EAAK,GACZumH,EAASvmH,EAAK7R,MAAM,GAAGiD,KAAI,SAAUyE,GAAK,OAAQA,KAClDguH,EAAUwpD,EAAcplL,KAAKoG,MAAMg/K,EAAeZ,EAAc,CAAC,KAAMrgL,GAAOm6H,GAAQ,IAC1FxsF,EAAKqzI,cAAcvpD,IAI/B,OAAO9pF,GAuBXD,EAAKuzI,cAAgBA,EA7CzB,CA8CGvzI,EAAOlyC,EAAQkyC,OAASlyC,EAAQkyC,KAAO,KAC1ClyC,EAAQkyC,KAAOA,EACf,SAAWA,GACPA,EAAKuiB,UAAY4wH,EAAYoE,kBAC7Bv3I,EAAKmmG,QAAUitC,EAAKjtC,QACpBnmG,EAAKw3I,QAAUpE,EAAKoE,QACpBx3I,EAAKm0I,WAAaf,EAAKe,WACvBn0I,EAAKg0I,YAAcZ,EAAKY,YAL5B,CAMGh0I,EAAOlyC,EAAQkyC,OAASlyC,EAAQkyC,KAAO,KAC1ClyC,EAAQkyC,KAAOA,G,6BC7jCf,IACQmjB,EADJC,EAAaryD,MAAQA,KAAKqyD,YACtBD,EAAgB,SAAU70D,EAAG0N,GAI7B,OAHAmnD,EAAgBz0D,OAAO20D,gBAClB,CAAEC,UAAW,cAAgBrxD,OAAS,SAAU3D,EAAG0N,GAAK1N,EAAEg1D,UAAYtnD,IACvE,SAAU1N,EAAG0N,GAAK,IAAK,IAAIlM,KAAKkM,EAAOtN,OAAOkB,UAAUC,eAAe1B,KAAK6N,EAAGlM,KAAIxB,EAAEwB,GAAKkM,EAAElM,MAC3ExB,EAAG0N,IAErB,SAAU1N,EAAG0N,GAChB,GAAiB,mBAANA,GAA0B,OAANA,EAC3B,MAAM,IAAImU,UAAU,uBAAyBtS,OAAO7B,GAAK,iCAE7D,SAASunD,IAAOxyD,KAAK6F,YAActI,EADnC60D,EAAc70D,EAAG0N,GAEjB1N,EAAEsB,UAAkB,OAANoM,EAAatN,OAAOY,OAAO0M,IAAMunD,EAAG3zD,UAAYoM,EAAEpM,UAAW,IAAI2zD,KAGvF70D,OAAOC,eAAeb,EAAS,aAAc,CAAEmB,OAAO,IACtDnB,EAAQomL,WAAQ,EAChB,IAAIn/E,EAAS,EAAQ,IACjBi+E,EAAW,EAAQ,KAEnBkB,EAAuB,SAAUjwH,GAEjC,SAASiwH,IACL,OAAkB,OAAXjwH,GAAmBA,EAAO1vD,MAAMxD,KAAMyG,YAAczG,KA6G/D,OA/GAqyD,EAAU8wH,EAAOjwH,GAIjBv1D,OAAOC,eAAeulL,EAAMtkL,UAAW,MAAO,CAC1Cf,IAAK,WACD,IAAKkC,KAAK2kL,oBACN,MAAM,IAAI3hL,MAAM,2IAIpB,OAAOhD,KAAK2kL,oBAAoBx9K,KAEpCtJ,YAAY,EACZwkB,cAAc,IAElB1kB,OAAOC,eAAeulL,EAAMtkL,UAAW,OAAQ,CAC3Cf,IAAK,WACD,MAAO,KAEXD,YAAY,EACZwkB,cAAc,IAElB1kB,OAAOC,eAAeulL,EAAMtkL,UAAW,OAAQ,CAC3Cf,IAAK,WACD,OAAO,IAAIkmG,EAAO1pC,KAAKt6D,KAAKsB,MAAOtB,KAAKmH,MAE5CtJ,YAAY,EACZwkB,cAAc,IAElB8gK,EAAMtkL,UAAU08D,KAAO,WACnB,OAAOv7D,KAAKi7D,KAAKM,QAErB4nH,EAAMtkL,UAAU68D,aAAe,SAAU38D,GACrC,OAAOiB,KAAKi7D,KAAKS,aAAa38D,IAElCokL,EAAMtkL,UAAUg9D,mBAAqB,SAAU98D,GAC3C,OAAOiB,KAAKi7D,KAAKY,mBAAmB98D,IAExCokL,EAAMtkL,UAAU+8D,6BAA+B,SAAU78D,GACrD,OAAOiB,KAAKi7D,KAAKW,6BAA6B78D,IAElDokL,EAAMtkL,UAAUi9D,oBAAsB,SAAU/8D,GAC5C,OAAOiB,KAAKi7D,KAAKa,oBAAoB/8D,IAEzCokL,EAAMtkL,UAAU8C,OAAS,WACrB,OAAO3B,KAAKi7D,KAAKt5D,UAErBwhL,EAAMtkL,UAAU09D,SAAW,SAAUJ,GACjC,IAAIqnD,EAAUxjH,KAAKi7D,KAAKsB,SAASJ,GACjC,MAAO,CAEHqnD,EAAQ,GAAGtoD,mBAAqB,IAAI+mH,EAAStmD,OAAOnY,EAAQ,IAAMxjH,KAAKyH,QACvE,IAAIw6K,EAAStmD,OAAOnY,EAAQ,MAGpC2/D,EAAMtkL,UAAU49D,eAAiB,SAAU96D,GACvC,IAAI6hH,EAAUxjH,KAAKi7D,KAAKwB,eAAe96D,GACvC,MAAO,CACH6hH,EAAQ,GAAGtoD,mBAAqB,IAAI+mH,EAAStmD,OAAOnY,EAAQ,IAAMxjH,KAAKyH,QACvE,IAAIw6K,EAAStmD,OAAOnY,EAAQ,MAGpC2/D,EAAMtkL,UAAUqmH,gBAAkB,WAC9B,MAAO,IAEXi+D,EAAMtkL,UAAU88D,QAAU,SAAUQ,GAChC,OAAOn8D,KAAKi7D,KAAKU,QAAQQ,IAE7BgnH,EAAMtkL,UAAUu9D,cAAgB,SAAUz6D,GACtC,OAAO3B,KAAKi7D,KAAKmB,cAAcz6D,IAEnCwhL,EAAMtkL,UAAUk9D,UAAY,SAAUI,GAClC,OAAOn8D,KAAKi7D,KAAKc,UAAUI,IAE/BgnH,EAAMtkL,UAAUy+D,gBAAkB,SAAU37D,GACxC,OAAO3B,KAAKi7D,KAAKqC,gBAAgB37D,IAErCwhL,EAAMtkL,UAAUq8D,iBAAmB,WAC/B,SAAKl7D,KAAK6xG,kBAAoB7xG,KAAK2kL,uBAG3B3kL,KAAKsB,MAAMkzD,OAAOx0D,KAAKmH,MAEnCg8K,EAAMtkL,UAAUgmB,MAAQ,WACpB,OAAO7kB,MAEXmjL,EAAMtkL,UAAU00D,OAAS,WACrB,OAAOvzD,MAEXmjL,EAAMtkL,UAAUu0D,UAAY,WACxB,OAAOpzD,MAEXmjL,EAAMtkL,UAAU21D,OAAS,SAAUx1D,GAC/B,OAAQgB,KAAKuB,OAASvC,EAAEuC,MACpBvB,KAAKsB,MAAMkzD,OAAOx1D,EAAEsC,QACpBtB,KAAKmH,IAAIqtD,OAAOx1D,EAAEmI,MAE1Bg8K,EAAMtkL,UAAU4I,MAAQ,WACpB,OAAO,IAAI07K,GAEfA,EAAMtkL,UAAUktD,OAAS,WACrB,MAAO,CACHxqD,KAAMvB,KAAKuB,KACXD,MAAOtB,KAAKsB,MAAMyqD,SAClB5kD,IAAKnH,KAAKmH,IAAI4kD,WAGtBo3H,EAAMtkL,UAAU6gC,UAAY,WACxB,OAAO1/B,KAAKuB,MAET4hL,EAhHe,CADV,EAAQ,KAkHZ3xE,SACZz0G,EAAQomL,MAAQA,EAChB,SAAWA,GAIPA,EAAM5kL,OAHN,WACI,OAAO,IAAI4kL,GAFnB,CAKGA,EAAQpmL,EAAQomL,QAAUpmL,EAAQomL,MAAQ,KAC7CpmL,EAAQomL,MAAQA,G,6BC7IhB,IACQ/wH,EADJC,EAAaryD,MAAQA,KAAKqyD,YACtBD,EAAgB,SAAU70D,EAAG0N,GAI7B,OAHAmnD,EAAgBz0D,OAAO20D,gBAClB,CAAEC,UAAW,cAAgBrxD,OAAS,SAAU3D,EAAG0N,GAAK1N,EAAEg1D,UAAYtnD,IACvE,SAAU1N,EAAG0N,GAAK,IAAK,IAAIlM,KAAKkM,EAAOtN,OAAOkB,UAAUC,eAAe1B,KAAK6N,EAAGlM,KAAIxB,EAAEwB,GAAKkM,EAAElM,MAC3ExB,EAAG0N,IAErB,SAAU1N,EAAG0N,GAChB,GAAiB,mBAANA,GAA0B,OAANA,EAC3B,MAAM,IAAImU,UAAU,uBAAyBtS,OAAO7B,GAAK,iCAE7D,SAASunD,IAAOxyD,KAAK6F,YAActI,EADnC60D,EAAc70D,EAAG0N,GAEjB1N,EAAEsB,UAAkB,OAANoM,EAAatN,OAAOY,OAAO0M,IAAMunD,EAAG3zD,UAAYoM,EAAEpM,UAAW,IAAI2zD,KAGvF70D,OAAOC,eAAeb,EAAS,aAAc,CAAEmB,OAAO,IACtDnB,EAAQ0lL,YAAS,EACjB,IAAIz+E,EAAS,EAAQ,IACjB+9E,EAAU,EAAQ,KAClBxnH,EAAU,EAAQ,IAClB0nH,EAAW,EAAQ,KAEnBQ,EAAwB,SAAUvvH,GAElC,SAASuvH,EAAOlwI,EAAGC,GACf,IAAI2gB,EAAQD,EAAO91D,KAAK4C,OAASA,KASjC,OARAmzD,EAAMs+C,WAAY,EAClBt+C,EAAMw+C,gBAAiB,EACnB3N,EAAO1pC,KAAKuD,OAAOtrB,IAAMwvI,EAAQzgE,MAAM4E,QAAQ3zE,GAC/C4gB,EAAMy+C,SAAWr/D,EAAEprC,IAAIM,QAAQmrB,MAAM,GAGrCugC,EAAMy+C,SAAWr3C,EAAQxH,MAAMx0D,OAAOg0C,EAAGC,GAAG5f,MAAM,GAE/CugC,EAuGX,OAlHAd,EAAUowH,EAAQvvH,GAalBv1D,OAAOC,eAAe6kL,EAAO5jL,UAAW,QAAS,CAC7Cf,IAAK,WACD,MAAM,IAAIkF,MAAM,sEAEpBnF,YAAY,EACZwkB,cAAc,IAElB1kB,OAAOC,eAAe6kL,EAAO5jL,UAAW,OAAQ,CAC5Cf,IAAK,WACD,MAAO,KAEXD,YAAY,EACZwkB,cAAc,IAElBogK,EAAO5jL,UAAU08D,KAAO,WACpB,OAAO,MAEXknH,EAAO5jL,UAAU68D,aAAe,WAC5B,OAAO17D,KAAKmH,IAAIM,SAEpBg7K,EAAO5jL,UAAUg9D,mBAAqB,WAClC,OAAO,GAEX4mH,EAAO5jL,UAAU+8D,6BAA+B,WAC5C,OAAO,GAEX6mH,EAAO5jL,UAAUizG,cAAgB,WAC7B,OAAO,GAEX2wE,EAAO5jL,UAAUi9D,oBAAsB,WACnC,OAAO,MAEX2mH,EAAO5jL,UAAU8C,OAAS,WACtB,OAAO,GAEX8gL,EAAO5jL,UAAUkzG,UAAY,WACzB,OAAO,GAEX0wE,EAAO5jL,UAAU09D,SAAW,WACxB,MAAO,CAACv8D,KAAKyH,QAASzH,KAAKyH,UAE/Bg7K,EAAO5jL,UAAU49D,eAAiB,WAC9B,MAAO,CAACz8D,KAAKyH,QAASzH,KAAKyH,UAE/Bg7K,EAAO5jL,UAAUqmH,gBAAkB,WAC/B,MAAO,IAEXu9D,EAAO5jL,UAAU88D,QAAU,WACvB,OAAO37D,KAAKmH,IAAIM,SAEpBg7K,EAAO5jL,UAAUu9D,cAAgB,WAC7B,OAAOp8D,KAAKmH,IAAIM,SAEpBg7K,EAAO5jL,UAAUozG,SAAW,WACxB,OAAOjyG,KAAKmH,IAAIM,SAEpBg7K,EAAO5jL,UAAUk9D,UAAY,WACzB,OAAO,MAEX0mH,EAAO5jL,UAAUy+D,gBAAkB,WAC/B,OAAO,MAEXmlH,EAAO5jL,UAAUqzG,WAAa,WAC1B,OAAO,MAEXuwE,EAAO5jL,UAAUq8D,iBAAmB,WAChC,OAAO,GAEXunH,EAAO5jL,UAAUgmB,MAAQ,SAAU6uC,EAAIC,EAAIC,GAEvC,OADA5zD,KAAKmH,IAAI0d,MAAM6uC,EAAIC,EAAIC,GAChB5zD,MAEXyiL,EAAO5jL,UAAU00D,OAAS,SAAUmB,EAAOd,GAEvC,OADA5zD,KAAKmH,IAAIosD,OAAOmB,EAAOd,GAChB5zD,MAEXyiL,EAAO5jL,UAAUu0D,UAAY,SAAUuH,EAAIC,GAOvC,MANkB,iBAAPD,EACP36D,KAAKmH,IAAIisD,UAAUuH,EAAIC,GAGvB56D,KAAKmH,IAAIisD,UAAUuH,GAEhB36D,MAEXyiL,EAAO5jL,UAAU4I,MAAQ,WACrB,OAAO,IAAIg7K,EAAOziL,KAAKmH,MAE3Bs7K,EAAO5jL,UAAU21D,OAAS,SAAUx1D,GAChC,OAAOgB,KAAKuB,OAASvC,EAAEuC,MAAQvB,KAAKmH,IAAIqtD,OAAOx1D,EAAEmI,MAErDs7K,EAAO5jL,UAAUktD,OAAS,WACtB,MAAO,CACHxqD,KAAMvB,KAAKuB,KACX4F,IAAKnH,KAAKmH,IAAI4kD,WAGtB02H,EAAO5jL,UAAU6gC,UAAY,WACzB,IAAIv4B,EAAMnH,KAAKmH,IACf,OAAOnH,KAAKuB,KAAO,IAAM4F,EAAIorC,EAAI,IAAMprC,EAAIqrC,GAExCiwI,EAnHgB,CADX,EAAQ,KAqHZjxE,SACZz0G,EAAQ0lL,OAASA,EACjB,SAAWA,GAoDPA,EAAOlkL,OAnDP,WAEI,IADA,IAAI4W,EAAO,GACF/L,EAAK,EAAGA,EAAK3C,UAAU9E,OAAQyH,IACpC+L,EAAK/L,GAAM3C,UAAU2C,GAEzB,IAAInC,EAAMkO,EAAKxT,OACXi6H,EAAOzmH,EAAK,GAEhB,GAAI6uF,EAAO1pC,KAAKuD,OAAO+9D,GACnB,OAAO,IAAI6mD,EAAO7mD,GAGtB,GAAImmD,EAAQzgE,MAAM4E,QAAQ0V,GACtB,OAAO,IAAI6mD,EAAO7mD,GAGtB,GAAIrhE,EAAQxH,MAAMqD,YAAYwlE,GAAO,CACjC,GAAY,IAAR30H,EACA,OAAO,IAAIw7K,EAAO7mD,GAKtB,IAFA,IAAI8qD,EAAa,GAERzpL,EAAI,EAAGA,EAAIgK,EAAKhK,GAAK,EAChB,IAANA,EACAypL,EAAWlkL,KAAK,IAAIigL,EAAOttK,EAAKlY,KAGhCypL,EAAWlkL,KAAK,IAAIy/K,EAAStmD,OAAOxmH,EAAKlY,KAGjD,OAAOypL,EAGX,GAAY,IAARz/K,EACA,OAAO,IAAIw7K,GAAQttK,EAAK,IAAKA,EAAK,IAGtC,IAAI4nE,EAAW,GACf,IAAS9/E,EAAI,EAAGA,EAAIgK,EAAKhK,GAAK,EAAG,CAC7B,IAAIs1C,GAAKp9B,EAAKlY,GACVu1C,GAAKr9B,EAAKlY,EAAI,GACR,IAANA,EACA8/E,EAASv6E,KAAK,IAAIigL,EAAOlwI,EAAGC,IAG5BuqC,EAASv6E,KAAK,IAAIy/K,EAAStmD,OAAOppF,EAAGC,IAG7C,OAAOuqC,GAlDf,CAqDG0lG,EAAS1lL,EAAQ0lL,SAAW1lL,EAAQ0lL,OAAS,KAChD1lL,EAAQ0lL,OAASA,G,6BClMjB,IACQrwH,EADJC,EAAaryD,MAAQA,KAAKqyD,YACtBD,EAAgB,SAAU70D,EAAG0N,GAI7B,OAHAmnD,EAAgBz0D,OAAO20D,gBAClB,CAAEC,UAAW,cAAgBrxD,OAAS,SAAU3D,EAAG0N,GAAK1N,EAAEg1D,UAAYtnD,IACvE,SAAU1N,EAAG0N,GAAK,IAAK,IAAIlM,KAAKkM,EAAOtN,OAAOkB,UAAUC,eAAe1B,KAAK6N,EAAGlM,KAAIxB,EAAEwB,GAAKkM,EAAElM,MAC3ExB,EAAG0N,IAErB,SAAU1N,EAAG0N,GAChB,GAAiB,mBAANA,GAA0B,OAANA,EAC3B,MAAM,IAAImU,UAAU,uBAAyBtS,OAAO7B,GAAK,iCAE7D,SAASunD,IAAOxyD,KAAK6F,YAActI,EADnC60D,EAAc70D,EAAG0N,GAEjB1N,EAAEsB,UAAkB,OAANoM,EAAatN,OAAOY,OAAO0M,IAAMunD,EAAG3zD,UAAYoM,EAAEpM,UAAW,IAAI2zD,KAGvF70D,OAAOC,eAAeb,EAAS,aAAc,CAAEmB,OAAO,IACtDnB,EAAQ4lL,aAAU,EAClB,IAAIZ,EAAU,EAAQ,KAClBxnH,EAAU,EAAQ,IAElBooH,EAAyB,SAAUzvH,GAEnC,SAASyvH,EAAQ/mD,EAAM+qD,EAAMC,EAAMC,EAAMC,EAAMC,GAC3C,IAAI5zH,EAAQD,EAAO91D,KAAK4C,OAASA,KAgBjC,OAfI+hL,EAAQzgE,MAAM4E,QAAQ0V,IACtBzoE,EAAMquD,cAAgBoa,EAAKpa,cAAc/5G,QAAQmrB,MAAM,GACvDugC,EAAMsuD,cAAgBma,EAAKna,cAAch6G,QAAQmrB,MAAM,GACvDugC,EAAMy+C,SAAWgqB,EAAKz0H,IAAIM,QAAQmrB,MAAM,IAEnB,iBAATgpG,GACZzoE,EAAMquD,cAAgB,IAAIjnD,EAAQxH,MAAM6oE,EAAM+qD,GAAM/zJ,MAAM,GAC1DugC,EAAMsuD,cAAgB,IAAIlnD,EAAQxH,MAAM6zH,EAAMC,GAAMj0J,MAAM,GAC1DugC,EAAMy+C,SAAW,IAAIr3C,EAAQxH,MAAM+zH,EAAMC,GAAMn0J,MAAM,KAGrDugC,EAAMquD,cAAgBjnD,EAAQxH,MAAMx0D,OAAOq9H,GAAMhpG,MAAM,GACvDugC,EAAMsuD,cAAgBlnD,EAAQxH,MAAMx0D,OAAOooL,GAAM/zJ,MAAM,GACvDugC,EAAMy+C,SAAWr3C,EAAQxH,MAAMx0D,OAAOqoL,GAAMh0J,MAAM,IAE/CugC,EA8HX,OAhJAd,EAAUswH,EAASzvH,GAoBnBv1D,OAAOC,eAAe+kL,EAAQ9jL,UAAW,OAAQ,CAC7Cf,IAAK,WACD,MAAO,KAEXD,YAAY,EACZwkB,cAAc,IAElB1kB,OAAOC,eAAe+kL,EAAQ9jL,UAAW,QAAS,CAC9Cf,IAAK,WACD,OAAO,IAAIikL,EAAQzgE,MAAMthH,KAAKsB,MAAOtB,KAAKwhH,cAAexhH,KAAKyhH,cAAezhH,KAAKmH,MAEtFtJ,YAAY,EACZwkB,cAAc,IAElBsgK,EAAQ9jL,UAAU08D,KAAO,WACrB,OAAOv7D,KAAKo6F,MAAM7+B,QAEtBonH,EAAQ9jL,UAAU68D,aAAe,SAAU38D,GACvC,OAAOiB,KAAKo6F,MAAM1+B,aAAa38D,IAEnC4jL,EAAQ9jL,UAAUg9D,mBAAqB,SAAU98D,GAC7C,OAAOiB,KAAKo6F,MAAMv+B,mBAAmB98D,IAEzC4jL,EAAQ9jL,UAAU+8D,6BAA+B,SAAU78D,GACvD,OAAOiB,KAAKo6F,MAAMx+B,6BAA6B78D,IAEnD4jL,EAAQ9jL,UAAUi9D,oBAAsB,SAAU/8D,GAC9C,OAAOiB,KAAKo6F,MAAMt+B,oBAAoB/8D,IAE1C4jL,EAAQ9jL,UAAU8C,OAAS,WACvB,OAAO3B,KAAKo6F,MAAMz4F,UAEtBghL,EAAQ9jL,UAAU09D,SAAW,SAAUJ,EAAOx8D,QAC1B,IAAZA,IAAsBA,EAAU,IAEpC,IAAI6jH,EAAUxjH,KAAKo6F,MAAM79B,SAASJ,EAAOx8D,GACzC,MAAO,CAAC,IAAIgjL,EAAQn/D,EAAQ,IAAK,IAAIm/D,EAAQn/D,EAAQ,MAEzDm/D,EAAQ9jL,UAAU49D,eAAiB,SAAU96D,EAAQhC,QACjC,IAAZA,IAAsBA,EAAU,IAEpC,IAAI6jH,EAAUxjH,KAAKo6F,MAAM39B,eAAe96D,EAAQhC,GAChD,MAAO,CAAC,IAAIgjL,EAAQn/D,EAAQ,IAAK,IAAIm/D,EAAQn/D,EAAQ,MAEzDm/D,EAAQ9jL,UAAUmzG,UAAY,SAAU7zG,GACpC,IAAIqlH,EAAUxjH,KAAKo6F,MAAM4X,UAAU7zG,GACnC,MAAO,CAAC,IAAIwkL,EAAQn/D,EAAQ,IAAK,IAAIm/D,EAAQn/D,EAAQ,MAEzDm/D,EAAQ9jL,UAAUqmH,gBAAkB,WAChC,MAAO,IAEXy9D,EAAQ9jL,UAAU88D,QAAU,SAAUQ,GAClC,OAAOn8D,KAAKo6F,MAAMz+B,QAAQQ,IAE9BwmH,EAAQ9jL,UAAUu9D,cAAgB,SAAUz6D,GACxC,OAAO3B,KAAKo6F,MAAMh+B,cAAcz6D,IAEpCghL,EAAQ9jL,UAAUk9D,UAAY,SAAUI,GACpC,OAAOn8D,KAAKo6F,MAAMr+B,UAAUI,IAEhCwmH,EAAQ9jL,UAAUy+D,gBAAkB,SAAU37D,GAC1C,OAAO3B,KAAKo6F,MAAM98B,gBAAgB37D,IAEtCghL,EAAQ9jL,UAAUq8D,iBAAmB,WACjC,IAAKl7D,KAAK6xG,gBACN,OAAO,EAEX,IAAIvwG,EAAQtB,KAAKsB,MACbqjH,EAAW3kH,KAAKwhH,cAChBoD,EAAW5kH,KAAKyhH,cAChBt6G,EAAMnH,KAAKmH,IACf,QAAS7F,EAAMkzD,OAAOmwD,IAClBA,EAASnwD,OAAOowD,IAChBA,EAASpwD,OAAOrtD,KAExBw7K,EAAQ9jL,UAAUgmB,MAAQ,SAAU6uC,EAAIC,EAAIC,GAIxC,OAHA5zD,KAAKwhH,cAAc38F,MAAM6uC,EAAIC,EAAIC,GACjC5zD,KAAKyhH,cAAc58F,MAAM6uC,EAAIC,EAAIC,GACjC5zD,KAAKmH,IAAI0d,MAAM6uC,EAAIC,EAAIC,GAChB5zD,MAEX2iL,EAAQ9jL,UAAU00D,OAAS,SAAUmB,EAAOd,GAIxC,OAHA5zD,KAAKwhH,cAAcjuD,OAAOmB,EAAOd,GACjC5zD,KAAKyhH,cAAcluD,OAAOmB,EAAOd,GACjC5zD,KAAKmH,IAAIosD,OAAOmB,EAAOd,GAChB5zD,MAEX2iL,EAAQ9jL,UAAUu0D,UAAY,SAAUuH,EAAIC,GAWxC,MAVkB,iBAAPD,GACP36D,KAAKwhH,cAAcpuD,UAAUuH,EAAIC,GACjC56D,KAAKyhH,cAAcruD,UAAUuH,EAAIC,GACjC56D,KAAKmH,IAAIisD,UAAUuH,EAAIC,KAGvB56D,KAAKwhH,cAAcpuD,UAAUuH,GAC7B36D,KAAKyhH,cAAcruD,UAAUuH,GAC7B36D,KAAKmH,IAAIisD,UAAUuH,IAEhB36D,MAEX2iL,EAAQ9jL,UAAU21D,OAAS,SAAUx1D,GACjC,OAAQgB,KAAKsB,MAAMkzD,OAAOx1D,EAAEsC,QACxBtB,KAAKmH,IAAIqtD,OAAOx1D,EAAEmI,MAClBnH,KAAKwhH,cAAchtD,OAAOx1D,EAAEwiH,gBAC5BxhH,KAAKyhH,cAAcjtD,OAAOx1D,EAAEyiH,gBAEpCkhE,EAAQ9jL,UAAU4I,MAAQ,WACtB,OAAO,IAAIk7K,EAAQ3iL,KAAKwhH,cAAexhH,KAAKyhH,cAAezhH,KAAKmH,MAEpEw7K,EAAQ9jL,UAAUktD,OAAS,WACvB,MAAO,CACHxqD,KAAMvB,KAAKuB,KACXD,MAAOtB,KAAKsB,MAAMyqD,SAClBy1D,cAAexhH,KAAKwhH,cAAcz1D,SAClC01D,cAAezhH,KAAKyhH,cAAc11D,SAClC5kD,IAAKnH,KAAKmH,IAAI4kD,WAGtB42H,EAAQ9jL,UAAU6gC,UAAY,WAC1B,IAAIyzG,EAAKnzI,KAAKwhH,cACVwlE,EAAKhnL,KAAKyhH,cACVt6G,EAAMnH,KAAKmH,IACf,MAAO,CAACnH,KAAKuB,KAAM4xI,EAAG5gG,EAAG4gG,EAAG3gG,EAAGw0I,EAAGz0I,EAAGy0I,EAAGx0I,EAAGrrC,EAAIorC,EAAGprC,EAAIqrC,GAAGxjC,KAAK,MAE3D2zK,EAjJiB,CADZ,EAAQ,KAmJZnxE,SACZz0G,EAAQ4lL,QAAUA,EAClB,SAAWA,GAmCPA,EAAQpkL,OAlCR,WAEI,IADA,IAAI4W,EAAO,GACF/L,EAAK,EAAGA,EAAK3C,UAAU9E,OAAQyH,IACpC+L,EAAK/L,GAAM3C,UAAU2C,GAEzB,IAAInC,EAAMkO,EAAKxT,OACXi6H,EAAOzmH,EAAK,GAEhB,GAAI4sK,EAAQzgE,MAAM4E,QAAQ0V,GACtB,OAAO,IAAI+mD,EAAQ/mD,GAGvB,GAAIrhE,EAAQxH,MAAMqD,YAAYwlE,GAAO,CACjC,GAAY,IAAR30H,EACA,OAAO,IAAI07K,EAAQxtK,EAAK,GAAIA,EAAK,GAAIA,EAAK,IAI9C,IADA,IAAIuxK,EAAa,GACRzpL,EAAI,EAAGA,EAAIgK,EAAKhK,GAAK,EAC1BypL,EAAWlkL,KAAK,IAAImgL,EAAQxtK,EAAKlY,GAAIkY,EAAKlY,EAAI,GAAIkY,EAAKlY,EAAI,KAE/D,OAAOypL,EAGX,GAAY,IAARz/K,EACA,OAAO,IAAI07K,EAAQxtK,EAAK,GAAIA,EAAK,GAAIA,EAAK,GAAIA,EAAK,GAAIA,EAAK,GAAIA,EAAK,IAGzE,IAAI4nE,EAAW,GACf,IAAS9/E,EAAI,EAAGA,EAAIgK,EAAKhK,GAAK,EAC1B8/E,EAASv6E,KAAK,IAAImgL,EAAQxtK,EAAKlY,GAAIkY,EAAKlY,EAAI,GAAIkY,EAAKlY,EAAI,GAAIkY,EAAKlY,EAAI,GAAIkY,EAAKlY,EAAI,GAAIkY,EAAKlY,EAAI,KAEpG,OAAO8/E,GAjCf,CAoCG4lG,EAAU5lL,EAAQ4lL,UAAY5lL,EAAQ4lL,QAAU,KACnD5lL,EAAQ4lL,QAAUA,G,6BC7MlB,IAAIf,EAAiB5hL,MAAQA,KAAK4hL,eAAkB,SAAUhnJ,EAAIgR,EAAMi2I,GACpE,GAAIA,GAA6B,IAArBp7K,UAAU9E,OAAc,IAAK,IAA4BmgL,EAAxB7kL,EAAI,EAAGC,EAAI0uC,EAAKjqC,OAAY1E,EAAIC,EAAGD,KACxE6kL,GAAQ7kL,KAAK2uC,IACRk2I,IAAIA,EAAK5gL,MAAMrC,UAAUyE,MAAMlG,KAAKwuC,EAAM,EAAG3uC,IAClD6kL,EAAG7kL,GAAK2uC,EAAK3uC,IAGrB,OAAO29B,EAAG55B,OAAO8gL,GAAM5gL,MAAMrC,UAAUyE,MAAMlG,KAAKwuC,KAEtDjuC,OAAOC,eAAeb,EAAS,aAAc,CAAEmB,OAAO,IACtDnB,EAAQypL,uBAAoB,EAC5B,IAAIlG,EAAS,EAAQ,KACrB,SAAS/sH,EAAOhhB,EAAGC,EAAG2hB,GAClB,MAAO,CACH5hB,EAAGA,EAAIzqC,KAAK8vB,IAAIu8B,GAAO3hB,EAAI1qC,KAAK0tD,IAAIrB,GACpC3hB,EAAGD,EAAIzqC,KAAK0tD,IAAIrB,GAAO3hB,EAAI1qC,KAAK8vB,IAAIu8B,IAG5C,SAAS8yH,EAAIpwH,EAAIN,EAAI2wH,EAAIC,EAAIrwH,EAAIC,GAG7B,MAAO,CAFG,EAAI,EAGJF,EAFA,EAAI,EAEOqwH,EAHX,EAAI,EAIJ3wH,EAHA,EAAI,EAGO4wH,EAJX,EAAI,EAKJrwH,EAJA,EAAI,EAIOowH,EALX,EAAI,EAMJnwH,EALA,EAAI,EAKOowH,EACjBrwH,EACAC,GAGR,SAASqwH,EAAIvwH,EAAIN,EAAIwoC,EAAIC,EAAItqC,EAAOmuH,EAAcC,EAAWhsH,EAAIC,EAAImmE,GAGjE,IAGImqD,EACAptG,EACAC,EACA8iB,EACAC,EAPAqqF,EAAkB,IAAVx/K,KAAK+vB,GAAY,IACzBs8B,EAAOrsD,KAAK+vB,GAAK,MAAS68B,GAAS,GACnCmN,EAAM,GAMV,GAAKq7D,EAuCDjjD,EAAKijD,EAAU,GACfhjD,EAAKgjD,EAAU,GACflgC,EAAKkgC,EAAU,GACfjgC,EAAKigC,EAAU,OA1CH,CAEZrmE,GADAwwH,EAAK9zH,EAAOsD,EAAIN,GAAKpC,IACb5hB,EACRgkB,EAAK8wH,EAAG70I,EAIR,IAAID,GAAKskB,GAFTC,GADAuwH,EAAK9zH,EAAOuD,EAAIC,GAAK5C,IACb5hB,IAEY,EAChBC,GAAK+jB,GAFTQ,EAAKswH,EAAG70I,IAEY,EAChB3xC,EAAK0xC,EAAIA,GAAMwsD,EAAKA,GAAOvsD,EAAIA,GAAMwsD,EAAKA,GAC1Cn+F,EAAI,IAEJk+F,GADAl+F,EAAIiH,KAAK2rC,KAAK5yC,GAEdm+F,GAAKn+F,GAET,IAAI0mL,EAAMxoF,EAAKA,EACXyoF,EAAMxoF,EAAKA,EACXtsC,GAAKmwH,IAAiBC,GAAa,EAAI,GACvCh7K,KAAK2rC,KAAK3rC,KAAKinC,KAAKw4I,EAAMC,EAAMD,EAAM/0I,EAAIA,EAAIg1I,EAAMj1I,EAAIA,IAAMg1I,EAAM/0I,EAAIA,EAAIg1I,EAAMj1I,EAAIA,KAC1FyqD,EAAMtqC,EAAIqsC,EAAKvsD,EAAKwsD,GAAMnoC,EAAKC,GAAM,EACrCmmC,EAAMvqC,GAAKssC,EAAKzsD,EAAKwsD,GAAMxoC,EAAKQ,GAAM,EACtCkjB,EAAKnyE,KAAKi1J,MAAMxmG,EAAK0mC,GAAM+B,GAC3B9kB,EAAKpyE,KAAKi1J,MAAMhmG,EAAKkmC,GAAM+B,GAC3B/kB,EAAKpjB,EAAKmmC,EAAKl1F,KAAK+vB,GAAKoiD,EAAKA,EAC9BC,EAAKpjB,EAAKkmC,EAAKl1F,KAAK+vB,GAAKqiD,EAAKA,EAC1BD,EAAK,IACLA,EAAe,EAAVnyE,KAAK+vB,GAASoiD,GAEnBC,EAAK,IACLA,EAAe,EAAVpyE,KAAK+vB,GAASqiD,GAEnB4oG,GAAa7oG,EAAKC,IAClBD,GAAgB,EAAVnyE,KAAK+vB,KAEVirJ,GAAa5oG,EAAKD,IACnBC,GAAgB,EAAVpyE,KAAK+vB,IASnB,IAAIm7G,EAAK94D,EAAKD,EACd,GAAInyE,KAAKinC,IAAIikG,GAAMs0C,EAAM,CACrB,IAAIG,EAAQvtG,EACRwtG,EAAQ5wH,EACR6wH,EAAQ5wH,EACZmjB,EAAKD,EAAKqtG,GAAQxE,GAAa5oG,EAAKD,EAAK,GAAK,GAG9CpY,EAAMulH,EAFNtwH,EAAKkmC,EAAK+B,EAAKj3F,KAAK8vB,IAAIsiD,GACxBnjB,EAAKkmC,EAAK+B,EAAKl3F,KAAK0tD,IAAI0kB,GACN6kB,EAAIC,EAAItqC,EAAO,EAAGouH,EAAW4E,EAAOC,EAAO,CACzDztG,EACAutG,EACAzqF,EACAC,IAGR+1C,EAAK94D,EAAKD,EACV,IAAIk5D,EAAKrrI,KAAK8vB,IAAIqiD,GACdm5D,EAAKtrI,KAAK0tD,IAAIykB,GACd+sG,EAAKl/K,KAAK8vB,IAAIsiD,GACd0tG,EAAK9/K,KAAK0tD,IAAI0kB,GACd/7E,EAAI2J,KAAK+/K,IAAI70C,EAAK,GAClB80C,EAAM,EAAI,GAAM/oF,EAAK5gG,GACrB4pL,EAAM,EAAI,GAAM/oF,EAAK7gG,GACrBu6F,EAAK,CAAC7hC,EAAIN,GACVoiC,EAAK,CAAC9hC,EAAKixH,EAAK10C,EAAI78E,EAAKwxH,EAAK50C,GAC9B60C,EAAK,CAAClxH,EAAKgxH,EAAKF,EAAI7wH,EAAKgxH,EAAKf,GAC9BiB,EAAK,CAACnxH,EAAIC,GAGd,GAFA4hC,EAAG,GAAK,EAAID,EAAG,GAAKC,EAAG,GACvBA,EAAG,GAAK,EAAID,EAAG,GAAKC,EAAG,GACnBukC,EACA,MAAO,CAACvkC,EAAIqvF,EAAIC,GAAIjnL,OAAO6gE,GAM3B,IAFA,IAAIqmH,EAAS,GACTtxH,GAFJiL,EAAM,CAAC82B,EAAIqvF,EAAIC,GAAIjnL,OAAO6gE,GAAK7yD,OAAO7F,MAAM,MAE/BxH,OACJ1E,EAAI,EAAGA,EAAI25D,EAAI35D,GAAK,EACzBirL,EAAOjrL,GACHA,EAAI,EACEs2D,GAAQsO,EAAI5kE,EAAI,IAAK4kE,EAAI5kE,GAAIk3D,GAAK3hB,EAClC+gB,GAAQsO,EAAI5kE,IAAK4kE,EAAI5kE,EAAI,GAAIk3D,GAAK5hB,EAEhD,OAAO21I,EAqDf,SAASn5I,EAAIo5I,GACT,IAAIC,EAnDR,SAAex1I,GACX,IAAKA,EACD,OAAO,KAEX,IAAIy1I,EAAS,2CAETC,EAAa,IAAI38K,OAAO,WAAa08K,EAAS,wCAA0CA,EAAS,QAAUA,EAAS,QACxH,MAEIE,EAAkB,IAAI58K,OAE1B,qCAAuC08K,EAAS,QAAUA,EAAS,KAAM,MACrEG,EAAc,CACdx9K,EAAG,EACH1N,EAAG,EACHuD,EAAG,EACH3D,EAAG,EACHG,EAAG,EACHorL,EAAG,EACHzpL,EAAG,EACHb,EAAG,EACHie,EAAG,EACHi0F,EAAG,GAEHq4E,EAAW,GAwBf,OAvBA91I,EAAS5qC,QAAQsgL,GAAY,SAAUx2K,EAAOksF,EAAK7oF,GAC/C,IAAI8yB,EAAS,GACT0gJ,EAAU3qF,EAAI30F,cAClB8L,EAAKnN,QAAQugL,GAAiB,SAAUv9K,EAAGC,GAIvC,OAHIA,GACAg9B,EAAOzlC,MAAMyI,GAEVD,KAEK,MAAZ29K,GAAmB1gJ,EAAOtmC,OAAS,IACnC+mL,EAASlmL,KAAKo/K,EAAc,CAAC5jF,GAAM/1D,EAAO5gC,OAAO,EAAG,IAAI,IACxDshL,EAAU,IACV3qF,EAAc,MAARA,EAAc,IAAM,KAG9B,IADA,IAAIp6E,EAAQ4kK,EAAYG,GACjB1gJ,EAAOtmC,QAAUiiB,IACpB8kK,EAASlmL,KAAKo/K,EAAc,CAAC5jF,GAAM/1D,EAAO5gC,OAAO,EAAGuc,IAAQ,IACvDA,KAIT,OAAO9R,KAEJ42K,EAGS1lK,CAAMmlK,GAEtB,IAAKC,IAAcA,EAAUzmL,OACzB,MAAO,CAAC,CAAC,IAAK,EAAG,IAOrB,IALA,IAAI4wC,EAAI,EACJC,EAAI,EACJo2I,EAAK,EACLC,EAAK,EACL9rG,EAAW,GACN9/E,EAAI,EAAG25D,EAAKwxH,EAAUzmL,OAAQ1E,EAAI25D,EAAI35D,GAAK,EAAG,CACnD,IAAIc,EAAI,GACRg/E,EAASv6E,KAAKzE,GACd,IAAIi7H,EAAUovD,EAAUnrL,GACpB0rL,EAAU3vD,EAAQ,GACtB,GAAI2vD,IAAYA,EAAQ7mK,cAEpB,OADA/jB,EAAE,GAAK4qL,EAAQ7mK,cACP/jB,EAAE,IACN,IAAK,IACDA,EAAE,GAAKi7H,EAAQ,GACfj7H,EAAE,GAAKi7H,EAAQ,GACfj7H,EAAE,GAAKi7H,EAAQ,GACfj7H,EAAE,GAAKi7H,EAAQ,GACfj7H,EAAE,GAAKi7H,EAAQ,GACfj7H,EAAE,IAAMi7H,EAAQ,GAAKzmF,EACrBx0C,EAAE,IAAMi7H,EAAQ,GAAKxmF,EACrB,MACJ,IAAK,IACDz0C,EAAE,IAAMi7H,EAAQ,GAAKxmF,EACrB,MACJ,IAAK,IACDz0C,EAAE,IAAMi7H,EAAQ,GAAKzmF,EACrB,MACJ,IAAK,IACDq2I,GAAM5vD,EAAQ,GAAKzmF,EACnBs2I,GAAM7vD,EAAQ,GAAKxmF,EACnB,IAAK,IAAItrC,EAAI,EAAG4hL,EAAK9vD,EAAQr3H,OAAQuF,EAAI4hL,EAAI5hL,GAAK,EAC9CnJ,EAAEmJ,IAAM8xH,EAAQ9xH,IAAMA,EAAI,EAAIqrC,EAAIC,GAEtC,MACJ,QACI,IAAStrC,EAAI,EAAG4hL,EAAK9vD,EAAQr3H,OAAQuF,EAAI4hL,EAAI5hL,GAAK,EAC9CnJ,EAAEmJ,IAAM8xH,EAAQ9xH,IAAMA,EAAI,EAAIqrC,EAAIC,QAM9C,IAAStrC,EAAI,EAAG4hL,EAAK9vD,EAAQr3H,OAAQuF,EAAI4hL,EAAI5hL,GAAK,EAC9CnJ,EAAEmJ,GAAK8xH,EAAQ9xH,GAGvB,OAAQnJ,EAAE,IACN,IAAK,IACDw0C,GAAKq2I,EACLp2I,GAAKq2I,EACL,MACJ,IAAK,IACDt2I,EAAIx0C,EAAE,GACN,MACJ,IAAK,IACDy0C,EAAIz0C,EAAE,GACN,MACJ,IAAK,IACD6qL,EAAK7qL,EAAEA,EAAE4D,OAAS,GAClBknL,EAAK9qL,EAAEA,EAAE4D,OAAS,GAClB4wC,EAAIx0C,EAAEA,EAAE4D,OAAS,GACjB6wC,EAAIz0C,EAAEA,EAAE4D,OAAS,GACjB,MACJ,QACI4wC,EAAIx0C,EAAEA,EAAE4D,OAAS,GACjB6wC,EAAIz0C,EAAEA,EAAE4D,OAAS,IAI7B,OAAOo7E,EAEX,SAASvrB,EAAUtiB,GACf,IAAIk5I,EAAYr5I,EAAIG,GAChBt/B,EAAQ,CAAE2iC,EAAG,EAAGC,EAAG,EAAGu2I,GAAI,EAAGC,GAAI,EAAG/mE,EAAG,EAAGC,EAAG,EAAG+mE,GAAI,KAAMC,GAAI,MAClE,SAASC,EAAYj6I,EAAM3xC,EAAG6rL,GAC1B,IAAIC,EACAC,EACJ,IAAKp6I,EACD,MAAO,CAAC,IAAK3xC,EAAEg1C,EAAGh1C,EAAEi1C,EAAGj1C,EAAEg1C,EAAGh1C,EAAEi1C,EAAGj1C,EAAEg1C,EAAGh1C,EAAEi1C,GAM5C,OAJMtD,EAAK,IAAM,CAAEiyD,EAAG,EAAGxG,EAAG,KACxBp9F,EAAE0rL,GAAK,KACP1rL,EAAE2rL,GAAK,MAEHh6I,EAAK,IACT,IAAK,IACD3xC,EAAE0kH,EAAI/yE,EAAK,GACX3xC,EAAE2kH,EAAIhzE,EAAK,GACX,MACJ,IAAK,IACD,OAA4B,IAAxBrc,WAAWqc,EAAK,KAAqC,IAAxBrc,WAAWqc,EAAK,IAItC,CAAC,IAAKA,EAAK,GAAIA,EAAK,IAExB,CAAC,KAAKluC,OAAOomL,EAAI5jL,MAAM,EAAG,CAACjG,EAAEg1C,EAAGh1C,EAAEi1C,GAAGxxC,OAAOkuC,EAAK5rC,MAAM,MAClE,IAAK,IAWD,MAVa,MAAT8lL,GAAyB,MAATA,GAEhBC,EAAW,EAAN9rL,EAAEg1C,EAAQh1C,EAAEwrL,GACjBO,EAAW,EAAN/rL,EAAEi1C,EAAQj1C,EAAEyrL,KAIjBK,EAAK9rL,EAAEg1C,EACP+2I,EAAK/rL,EAAEi1C,GAEJ,CAAC,IAAK62I,EAAIC,GAAItoL,OAAOkuC,EAAK5rC,MAAM,IAC3C,IAAK,IAWD,MAVa,MAAT8lL,GAAyB,MAATA,GAEhB7rL,EAAE0rL,GAAW,EAAN1rL,EAAEg1C,EAAQh1C,EAAE0rL,GACnB1rL,EAAE2rL,GAAW,EAAN3rL,EAAEi1C,EAAQj1C,EAAE2rL,KAInB3rL,EAAE0rL,GAAK1rL,EAAEg1C,EACTh1C,EAAE2rL,GAAK3rL,EAAEi1C,GAEN,CAAC,KAAKxxC,OAAOimL,EAAI1pL,EAAEg1C,EAAGh1C,EAAEi1C,EAAGj1C,EAAE0rL,GAAI1rL,EAAE2rL,GAAIh6I,EAAK,GAAIA,EAAK,KAChE,IAAK,IAGD,OAFA3xC,EAAE0rL,GAAK/5I,EAAK,GACZ3xC,EAAE2rL,GAAKh6I,EAAK,GACL,CAAC,KAAKluC,OAAOimL,EAAI1pL,EAAEg1C,EAAGh1C,EAAEi1C,EAAGtD,EAAK,GAAIA,EAAK,GAAIA,EAAK,GAAIA,EAAK,KACtE,IAAK,IACD,MAAO,CAAC,KAAKluC,OAAOkuC,EAAK,GAAI3xC,EAAEi1C,GACnC,IAAK,IACD,MAAO,CAAC,KAAKxxC,OAAOzD,EAAEg1C,EAAGrD,EAAK,IAQtC,OAAOA,EAEX,SAASq6I,EAAOC,EAAIvsL,GAChB,GAAIusL,EAAGvsL,GAAG0E,OAAS,EAAG,CAClB6nL,EAAGvsL,GAAGsS,QAEN,IADA,IAAIk6K,EAAKD,EAAGvsL,GACLwsL,EAAG9nL,QAEN4kL,EAAStpL,GAAK,IACdA,GAAK,EACLusL,EAAGniL,OAAOpK,EAAG,EAAG,CAAC,KAAK+D,OAAOyoL,EAAGpiL,OAAO,EAAG,KAE9CmiL,EAAGniL,OAAOpK,EAAG,GACb25D,EAAKwxH,EAAUzmL,QAMvB,IAHA,IAAI4kL,EAAW,GACXmD,EAAc,GACd9yH,EAAKwxH,EAAUzmL,OACV1E,EAAI,EAAGA,EAAI25D,EAAI35D,GAAK,EAAG,CAC5B,IAAI0rL,EAAU,GACVP,EAAUnrL,KACV0rL,EAAUP,EAAUnrL,GAAG,IAEX,MAAZ0rL,IAEApC,EAAStpL,GAAK0rL,EACV1rL,EAAI,IACJysL,EAAcnD,EAAStpL,EAAI,KAInCmrL,EAAUnrL,GAAKksL,EAAYf,EAAUnrL,GAAI2S,EAAO85K,GAC5B,MAAhBnD,EAAStpL,IAA0B,MAAZ0rL,IACvBpC,EAAStpL,GAAK,KAIlBssL,EAAOnB,EAAWnrL,GAClB,IAAIsmL,EAAM6E,EAAUnrL,GAChB0sL,EAASpG,EAAI5hL,OACjBiO,EAAM2iC,EAAIgxI,EAAIoG,EAAS,GACvB/5K,EAAM4iC,EAAI+wI,EAAIoG,EAAS,GACvB/5K,EAAMm5K,GAAKl2J,WAAW0wJ,EAAIoG,EAAS,KAAO/5K,EAAM2iC,EAChD3iC,EAAMo5K,GAAKn2J,WAAW0wJ,EAAIoG,EAAS,KAAO/5K,EAAM4iC,EAMpD,OAHK41I,EAAU,GAAG,IAA0B,MAApBA,EAAU,GAAG,IACjCA,EAAUt1K,QAAQ,CAAC,IAAK,EAAG,IAExBs1K,EAuBXrrL,EAAQypL,kBATR,SAA2B5zI,GACvB,OAAO4e,EAAU5e,GACZrsC,KAAI,SAAUyyH,GACf,OAAOA,EAAQzyH,KAAI,SAAUpC,GAAQ,MAAwB,iBAATA,EAAoBA,GAAO,EAAIm8K,EAAO1tJ,OAAOzuB,EAAM,SAEtG6K,KAAK,KACL7F,MAAM,KACN6F,KAAK,O,6BC1YdrR,OAAOC,eAAeb,EAAS,aAAc,CAAEmB,OAAO,IACtDnB,EAAQ0pL,QAAU1pL,EAAQkmL,YAAclmL,EAAQqmL,WAAarmL,EAAQq4I,aAAU,EAC/E,IAAI76E,EAAU,EAAQ,IAClBqvH,EAAqB,IAAIj+K,OAAO,sBAapC,SAASmnD,EAAIp0D,EAAGrB,GACZ,OAASqB,EAAIrB,EAAKA,GAAKA,EA6F3B,SAAS4lL,EAAYzlF,EAAIC,EAAI2rC,EAAIC,EAAI30E,EAAOmuH,EAAcC,EAAWvwI,EAAGC,GAIpE,QAHc,IAAVkiB,IAAoBA,EAAQ,QACX,IAAjBmuH,IAA2BA,EAAe,QAC5B,IAAdC,IAAwBA,EAAY,GAC7B,IAAP15C,GAAmB,IAAPC,EACZ,MAAO,GAEX92F,GAAKirD,EACLhrD,GAAKirD,EACL2rC,EAAKthI,KAAKinC,IAAIq6F,GACdC,EAAKvhI,KAAKinC,IAAIs6F,GACd,IAWIwgD,EAXAr6I,GAAO+C,EAAI,EACXu3I,GAAOt3I,EAAI,EACXu3I,EAAOjiL,KAAK8vB,IAAK88B,EAAQ5sD,KAAK+vB,GAAM,KACpCmyJ,EAAOliL,KAAK0tD,IAAKd,EAAQ5sD,KAAK+vB,GAAM,KACpCoyJ,EAAMF,EAAOv6I,EAAMw6I,EAAOF,EAC1BI,GAAO,EAAIF,EAAOx6I,EAAMu6I,EAAOD,EAC/BK,EAAOF,EAAMA,EACbG,EAAOF,EAAMA,EACbG,EAAMjhD,EAAKA,EACXkhD,EAAMjhD,EAAKA,EACXkhD,EAAQJ,EAAOE,EAAMD,EAAOE,EAEhC,GAAIC,EAAQ,EACRnhD,EAAKthI,KAAK2rC,KAAK82I,GAASnhD,EACxBC,EAAKvhI,KAAK2rC,KAAK82I,GAASlhD,EACxBwgD,EAAM,MAEL,CACD,IAAIW,EAAO,EACP3H,IAAiBC,IACjB0H,GAAQ,GAEZX,EACIW,EACI1iL,KAAK2rC,MAAM42I,EAAMC,EAAMD,EAAMD,EAAOE,EAAMH,IAASE,EAAMD,EAAOE,EAAMH,IAElF,IAAIM,EAAOZ,EAAMzgD,EAAK8gD,EAAO7gD,EACzBqhD,GAAQ,EAAIb,EAAMxgD,EAAK4gD,EAAO7gD,EAC9BzuE,EAAKovH,EAAOU,EAAMT,EAAOU,EAAMn4I,EAAI,EACnCqoB,EAAKovH,EAAOS,EAAMV,EAAOW,EAAMl4I,EAAI,EACnC2hB,EAAMrsD,KAAKssD,OAAO81H,EAAMQ,GAAOrhD,GAAK4gD,EAAMQ,GAAOrhD,GAAMthI,KAAKssD,MAAM,EAAG,GACrEg/E,EAAKj/E,GAAO,EAAIA,EAAM,EAAIrsD,KAAK+vB,GAAKs8B,EAIpCw2H,GAHJx2H,EACIrsD,KAAKssD,QAAQ81H,EAAMQ,GAAOrhD,IAAM4gD,EAAMQ,GAAOrhD,GACzCthI,KAAKssD,OAAO81H,EAAMQ,GAAOrhD,GAAK4gD,EAAMQ,GAAOrhD,KACnC,EAAIj1E,EAAM,EAAIrsD,KAAK+vB,GAAKs8B,EACtB,IAAd2uH,GAAmB6H,EAAK,EACxBA,GAAM,EAAI7iL,KAAK+vB,GAEI,IAAdirJ,GAAmB6H,EAAK,IAC7BA,GAAM,EAAI7iL,KAAK+vB,IAiBnB,IAfA,IAAI+yJ,EAAY,EAALD,EAAU7iL,KAAK+vB,GACtB0rJ,EAAMz7K,KAAK0tB,KAAKo1J,EAAM,GAAK,EAAIA,EAAMA,GACrCC,EAAOF,EAAKpH,EACZplL,EAAM,EAAI,EAAK2J,KAAK0tD,IAAIq1H,EAAO,GAAK/iL,KAAK0tD,IAAIq1H,EAAO,GAAM/iL,KAAK0tD,IAAIq1H,EAAO,GAC1EC,EAASf,EAAO3gD,EAChB2hD,EAAShB,EAAO1gD,EAChB2hD,EAAShB,EAAO5gD,EAChB6hD,EAASjB,EAAO3gD,EAChB6hD,EAAKpjL,KAAK8vB,IAAIw7G,GACd+3C,EAAKrjL,KAAK0tD,IAAI49E,GACdt8E,GAAM34D,GAAK2sL,EAASK,EAAKF,EAASC,GAClCn0H,GAAM54D,GAAK6sL,EAASG,EAAKJ,EAASG,GAClCxuF,EAAK,EACLC,EAAK,EACLx7F,EAAS,GACJzC,EAAI,EAAGA,EAAI6kL,EAAK7kL,GAAK,EAAG,CAC7B00I,GAAMy3C,EAGNnuF,EAAKouF,GAFLI,EAAKpjL,KAAK8vB,IAAIw7G,IAEK63C,GADnBE,EAAKrjL,KAAK0tD,IAAI49E,IACmBz4E,EACjCgiC,EAAKquF,EAASE,EAAKH,EAASI,EAAKvwH,EACjC,IAAIvH,GAAMl1D,GAAK2sL,EAASK,EAAKF,EAASC,GAClC53H,GAAMn1D,GAAK6sL,EAASG,EAAKJ,EAASG,GAElCxpL,EAAY,EAAJhD,EACZyC,EAAOO,GAASw6D,OAAOpF,EAAK0mC,GAC5Br8F,EAAOO,EAAQ,GAAKw6D,OAAOnF,EAAK0mC,GAChCt8F,EAAOO,EAAQ,GAAKw6D,OAAOwgC,EAAKrpC,EAAKmqC,GACrCr8F,EAAOO,EAAQ,GAAKw6D,OAAOygC,EAAKrpC,EAAKmqC,GACrCt8F,EAAOO,EAAQ,GAAKw6D,OAAOwgC,EAAKc,GAChCr8F,EAAOO,EAAQ,GAAKw6D,OAAOygC,EAAKc,GAChC3mC,EAAK4lC,EAAKrpC,EACV0D,EAAK4lC,EAAKrpC,EAEd,OAAOnyD,EAAOoF,KAAI,SAAUR,GAAO,OAAQA,EAAIm7G,QAAQ,MA3L3DnkH,EAAQq4I,QANR,SAAiB7yH,GACb,MAAoB,iBAATA,GAGJqnK,EAAmBh7K,KAAK2T,IAkGnCxlB,EAAQqmL,WAfR,SAAoBtvH,EAAQn0D,QACR,IAAZA,IAAsBA,EAAU,IACpC,IAAIyrL,EAAM,GAWV,OAVIt3H,GAAUA,EAAOnyD,QACjBmyD,EAAO3oB,SAAQ,SAAUpsC,GACjBmC,MAAMD,QAAQlC,GACdqsL,EAAI5oL,KAAK,CAAE+vC,EAAGxzC,EAAE,GAAIyzC,EAAGzzC,EAAE,KAGzBqsL,EAAI5oL,KAAK,CAAE+vC,EAAGxzC,EAAEwzC,EAAGC,EAAGzzC,EAAEyzC,OAjFxC,SAAcshB,EAAQlhC,EAAOy4J,EAAapO,EAAOv6F,GAC7C,IAAIngE,EAAO,GACPpb,EAAM2sD,EAAOA,EAAOnyD,OAAS,GAC7B2pL,EAAmB,MAAT14J,GAAiBA,EAAQ,EACnC24J,EAAU34J,GAAS,EAEvB,GAAIqqJ,GAASqO,EAAS,CAElB,IAAIlrF,GADJtsC,EAASA,EAAOxwD,SACA,GACZkoL,EAAK,IAAIjxH,EAAQxH,MAAM5rD,EAAIorC,GAAK6tD,EAAG7tD,EAAIprC,EAAIorC,GAAK,EAAGprC,EAAIqrC,GAAK4tD,EAAG5tD,EAAIrrC,EAAIqrC,GAAK,GAChFshB,EAAOzsD,OAAO,EAAG,EAAGmkL,GAExB,IAAIC,EAAK33H,EAAO,GACZ72D,EAAI,EAQR,IANIouL,EACA9oK,EAAK/f,KAAK,IAAKipL,EAAGl5I,EAAGk5I,EAAGj5I,GAGxBjwB,EAAK/f,KAAK,IAAKipL,EAAGl5I,EAAGk5I,EAAGj5I,GAErBv1C,GAAKggL,EAAQnpH,EAAOnyD,OAASmyD,EAAOnyD,OAAS,IAAI,CACpD,IAAIkQ,EAAMiiD,EAAOhB,EAAI71D,EAAG62D,EAAOnyD,SAC3B0xD,EAAKo4H,EAAGl5I,EAAI1gC,EAAI0gC,EAChB+gB,EAAKm4H,EAAGj5I,EAAI3gC,EAAI2gC,EACpB,GAAI84I,IACQ,IAAPj4H,GAAmB,IAAPC,KACD,MAAXovB,GAAmBA,EAAQj/E,QAAQxG,EAAI,GAAK,GAAI,CAIjD,IAAI+zD,EAAOlpD,KAAK2rC,KAAK4f,EAAKA,EAAKC,EAAKA,GAChCo4H,EAAOr4H,EAAKvrD,KAAKkzC,IAAIuwI,EAASv6H,EAAO,GAAMA,EAC3C26H,EAAOr4H,EAAKxrD,KAAKkzC,IAAIuwI,EAASv6H,EAAO,GAAMA,EAC3C6F,EAAKhlD,EAAI0gC,EAAIm5I,EACbn1H,EAAK1kD,EAAI2gC,EAAIm5I,EACjBppK,EAAK/f,KAAK,IAAKq0D,EAAIN,GAMnB,IAFA,IAAI5oD,EAAOmmD,EAAOhB,EAAI71D,EAAI,EAAG62D,EAAOnyD,SAE7B1E,EAAI62D,EAAOnyD,OAAS,GACQ,IAA/BmG,KAAK8qB,MAAMjlB,EAAK4kC,EAAI1gC,EAAI0gC,IACO,IAA/BzqC,KAAK8qB,MAAMjlB,EAAK6kC,EAAI3gC,EAAI2gC,IACxB7kC,EAAOmmD,EAAOhB,EAAI71D,EAAI,EAAG62D,EAAOnyD,SAChC1E,GAAK,EAETo2D,EAAK1lD,EAAK4kC,EAAI1gC,EAAI0gC,EAClB+gB,EAAK3lD,EAAK6kC,EAAI3gC,EAAI2gC,EAClBwe,EAAOlpD,KAAKitB,IAAI,EAAGjtB,KAAK2rC,KAAK4f,EAAKA,EAAKC,EAAKA,IAC5C,IAAIs4H,EAAOv4H,EAAKvrD,KAAKkzC,IAAIuwI,EAASv6H,EAAO,GAAMA,EAC3C66H,EAAOv4H,EAAKxrD,KAAKkzC,IAAIuwI,EAASv6H,EAAO,GAAMA,EAC3C8F,EAAKjlD,EAAI0gC,EAAIq5I,EACb70H,EAAKllD,EAAI2gC,EAAIq5I,EACjBtpK,EAAK/f,KAAK,IAAKqP,EAAI0gC,EAAG1gC,EAAI2gC,EAAGskB,EAAIC,GACjCllD,EAAM,IAAI0oD,EAAQxH,MAAM+D,EAAIC,QAG5Bx0C,EAAK/f,KAAK,IAAKqP,EAAI0gC,EAAG1gC,EAAI2gC,GAE9Bi5I,EAAK55K,EACL5U,GAAK,EAQT,OANIggL,EACA16J,EAAK/f,KAAK,KAGV+f,EAAK/f,KAAK,IAAK2E,EAAIorC,EAAGprC,EAAIqrC,GAEvBjwB,EAAKhc,KAAI,SAAU6V,GAAK,MAAqB,iBAANA,EAAiBA,GAAKA,EAAE8kG,QAAQ,MAAQlyG,KAAK,KAepFkyJ,CAAKkqB,EAAKzrL,EAAQizB,MAA8B,MAAvBjzB,EAAQ0rL,aAAuB1rL,EAAQ0rL,YAAa1rL,EAAQs9K,MAAOt9K,EAAQ+iF,UA+F/G3lF,EAAQkmL,YAAcA,EActBlmL,EAAQ0pL,QAbR,SAAiBqF,EAAQC,EAAQhtF,EAAIC,EAAI4jF,EAAeC,EAAcC,EAAWkJ,EAAOC,QAC9D,IAAlBrJ,IAA4BA,EAAgB,QAC3B,IAAjBC,IAA2BA,EAAe,QAC5B,IAAdC,IAAwBA,EAAY,GACxC,IAAIvgK,EAAO,GACPuxC,EAASmvH,EAAY6I,EAAQC,EAAQhtF,EAAIC,EAAI4jF,EAAeC,EAAcC,EAAWkJ,EAAOC,GAChG,GAAc,MAAVn4H,EACA,IAAK,IAAI72D,EAAI,EAAG25D,EAAK9C,EAAOnyD,OAAQ1E,EAAI25D,EAAI35D,GAAK,EAC7CslB,EAAK/f,KAAK,IAAKsxD,EAAO72D,GAAI62D,EAAO72D,EAAI,GAAI62D,EAAO72D,EAAI,GAAI62D,EAAO72D,EAAI,GAAI62D,EAAO72D,EAAI,GAAI62D,EAAO72D,EAAI,IAGzG,OAAOslB,EAAKvT,KAAK,O,6BCnNrB,IAAIk9K,EAAYlsL,MAAQA,KAAKksL,UAAa,WAStC,OARAA,EAAWvuL,OAAO+rD,QAAU,SAASvrD,GACjC,IAAK,IAAIa,EAAG/B,EAAI,EAAGyB,EAAI+H,UAAU9E,OAAQ1E,EAAIyB,EAAGzB,IAE5C,IAAK,IAAI8B,KADTC,EAAIyH,UAAUxJ,GACOU,OAAOkB,UAAUC,eAAe1B,KAAK4B,EAAGD,KACzDZ,EAAEY,GAAKC,EAAED,IAEjB,OAAOZ,IAEKqF,MAAMxD,KAAMyG,YAEhC9I,OAAOC,eAAeb,EAAS,aAAc,CAAEmB,OAAO,IACtDnB,EAAQ8jL,SAAW9jL,EAAQ4jL,oBAAiB,EAC5C,IAAIL,EAAS,EAAQ,KACjB9lH,EAAa,EAAQ,KAKzBz9D,EAAQ4jL,eAJR,SAAwBplH,EAAMpmD,GAE1B,YADa,IAATA,IAAmBA,EAAO,IACvB,IAAIqlD,EAAWzH,MAAMutH,EAAOzwC,UAAUs8C,oBAAoBh3K,EAAKo9B,EAAGgpB,EAAKlqC,OAAQivJ,EAAOzwC,UAAUs8C,oBAAoBh3K,EAAKq9B,EAAG+oB,EAAK9nC,UAM5I12B,EAAQ8jL,SAHR,SAAkB1qH,EAAOzB,EAAO03H,GAC5B,OAAOF,EAAS,CAAEx3H,MAAOA,EAAOliC,SAAU2jC,EAAMpK,UAAYqgI,K,6BCrBhE,IAAI35H,EAAmBzyD,MAAQA,KAAKyyD,kBAAqB90D,OAAOY,OAAS,SAAUb,EAAGL,EAAGq1D,EAAGC,QAC7EzwD,IAAPywD,IAAkBA,EAAKD,GAC3B/0D,OAAOC,eAAeF,EAAGi1D,EAAI,CAAE90D,YAAY,EAAMC,IAAK,WAAa,OAAOT,EAAEq1D,OAC3E,SAAUh1D,EAAGL,EAAGq1D,EAAGC,QACTzwD,IAAPywD,IAAkBA,EAAKD,GAC3Bh1D,EAAEi1D,GAAMt1D,EAAEq1D,KAEVqxC,EAAgB/jG,MAAQA,KAAK+jG,cAAiB,SAAS1mG,EAAGN,GAC1D,IAAK,IAAIgC,KAAK1B,EAAa,YAAN0B,GAAoBpB,OAAOkB,UAAUC,eAAe1B,KAAKL,EAASgC,IAAI0zD,EAAgB11D,EAASM,EAAG0B,IAEvHstL,EAAmBrsL,MAAQA,KAAKqsL,iBAAoB,SAAUv5H,GAC9D,OAAQA,GAAOA,EAAIz0D,WAAcy0D,EAAM,CAAE,QAAWA,IAExDn1D,OAAOC,eAAeb,EAAS,aAAc,CAAEmB,OAAO,IACtDnB,EAAQuvL,YAAS,EACjB,IAAIC,EAAWF,EAAgB,EAAQ,KACvCtvL,EAAQuvL,OAASC,EAAS1gH,QAC1B,EAAQ,KACRk4B,EAAa,EAAQ,KAAWhnG,GAChCgnG,EAAa,EAAQ,KAAYhnG,GACjCgnG,EAAa,EAAQ,KAAahnG,GAClCgnG,EAAa,EAAQ,KAAahnG,GAClCgnG,EAAa,EAAQ,KAAahnG,GAClCgnG,EAAa,EAAQ,KAAehnG,GACpCgnG,EAAa,EAAQ,KAAehnG,GACpCgnG,EAAa,EAAQ,KAAWhnG,GAChCgnG,EAAa,EAAQ,KAAWhnG,GAChCgnG,EAAa,EAAQ,KAAchnG,GACnCgnG,EAAa,EAAQ,KAAWhnG,GAChCgnG,EAAa,EAAQ,KAAUhnG,GAC/BgnG,EAAa,EAAQ,KAAahnG,GAClCgnG,EAAa,EAAQ,KAAkBhnG,GACvCgnG,EAAa,EAAQ,KAAgBhnG,I,6BChCrC,IAAIsvL,EAAmBrsL,MAAQA,KAAKqsL,iBAAoB,SAAUv5H,GAC9D,OAAQA,GAAOA,EAAIz0D,WAAcy0D,EAAM,CAAE,QAAWA,IAExDn1D,OAAOC,eAAeb,EAAS,aAAc,CAAEmB,OAAO,IACtD,IAAIquL,EAAWF,EAAgB,EAAQ,KAGvC,GAFA,EAAQ,KACS,EAAQ,KACVzlE,SAASoB,gBAAiB,CACrCukE,EAAS1gH,QAAQrjD,MAAMvJ,QAAQwxI,WAAa,CACxCxmI,MAAO,SAAU1H,EAAMjkB,EAAIsrB,GACvB,IAAK5pB,KAAKkR,iBACN,OAAO,EAEXlR,KAAKkR,iBAAiB,aAAc0Y,EAAQ,CACxCukD,SAAS,MAIrB,IAAIzuE,EAAO6sL,EAAS1gH,QAAQrjD,MAAMvJ,QAAQ6uH,WAC1C,GAAIpuI,EAAM,CACN,IAAI8sL,EAAU9sL,EAAKuqB,MACnBvqB,EAAKuqB,MAAQ,WACT,IAAIkpC,EAAQnzD,KACRkR,EAAmBlR,KAAKkR,iBAC5B,IAAKA,EACD,OAAO,EAEXlR,KAAKkR,iBAAmB,SAAU1T,EAAMqS,GACpCqB,EAAiB9T,KAAK+1D,EAAO31D,EAAMqS,EAAS,CAAEs+D,SAAS,KAE3Dq+G,EAAQpvL,KAAK4C,MACbA,KAAKkR,iBAAmBA,IAMhCjO,OAAOwpL,WAAaA,SAAS5tL,UAAUssC,UACvCshJ,SAAS5tL,UAAUssC,QAAUjqC,MAAMrC,UAAUssC,SA4B9C,CAAC8kE,QAAQpxG,UAAW6tL,SAAS7tL,UAAW8tL,iBAAiB9tL,WAtBpDssC,SAAQ,SAAUhnC,GACdxG,OAAOkB,UAAUC,eAAe1B,KAAK+G,EAAM,WAG/CxG,OAAOC,eAAeuG,EAAM,SAAU,CAClCke,cAAc,EACdxkB,YAAY,EACZwtB,UAAU,EACVntB,MAAO,WAEH,IADA,IAAIiX,EAAO,GACF/L,EAAK,EAAGA,EAAK3C,UAAU9E,OAAQyH,IACpC+L,EAAK/L,GAAM3C,UAAU2C,GAEzB,IAAIwjL,EAAU9pL,SAASkjB,yBACvB7Q,EAAKg2B,SAAQ,SAAUniC,GACnB,IAAI6jL,EAAS7jL,aAAe6uI,KAC5B+0C,EAAQxnL,YAAYynL,EAAS7jL,EAAMlG,SAAS+kB,eAAe/a,OAAO9D,QAEtEhJ,KAAKoF,YAAYwnL,U,6BC9DjC,IAAIn6H,EAAmBzyD,MAAQA,KAAKyyD,kBAAqB90D,OAAOY,OAAS,SAAUb,EAAGL,EAAGq1D,EAAGC,QAC7EzwD,IAAPywD,IAAkBA,EAAKD,GAC3B/0D,OAAOC,eAAeF,EAAGi1D,EAAI,CAAE90D,YAAY,EAAMC,IAAK,WAAa,OAAOT,EAAEq1D,OAC3E,SAAUh1D,EAAGL,EAAGq1D,EAAGC,QACTzwD,IAAPywD,IAAkBA,EAAKD,GAC3Bh1D,EAAEi1D,GAAMt1D,EAAEq1D,KAEVE,EAAsB5yD,MAAQA,KAAK4yD,qBAAwBj1D,OAAOY,OAAS,SAAUb,EAAG0e,GACxFze,OAAOC,eAAeF,EAAG,UAAW,CAAEG,YAAY,EAAMK,MAAOke,KAC9D,SAAS1e,EAAG0e,GACb1e,EAAW,QAAI0e,IAEfy2C,EAAgB7yD,MAAQA,KAAK6yD,cAAiB,SAAUC,GACxD,GAAIA,GAAOA,EAAIz0D,WAAY,OAAOy0D,EAClC,IAAI3xD,EAAS,GACb,GAAW,MAAP2xD,EAAa,IAAK,IAAIJ,KAAKI,EAAe,YAANJ,GAAmB/0D,OAAOkB,UAAUC,eAAe1B,KAAK01D,EAAKJ,IAAID,EAAgBtxD,EAAQ2xD,EAAKJ,GAEtI,OADAE,EAAmBzxD,EAAQ2xD,GACpB3xD,GAEXxD,OAAOC,eAAeb,EAAS,aAAc,CAAEmB,OAAO,IACtDnB,EAAQ+vL,UAAO,EACf,IAAIA,EAAOj6H,EAAa,EAAQ,MAChC91D,EAAQ+vL,KAAOA,G,6BCtBf,IAAIr6H,EAAmBzyD,MAAQA,KAAKyyD,kBAAqB90D,OAAOY,OAAS,SAAUb,EAAGL,EAAGq1D,EAAGC,QAC7EzwD,IAAPywD,IAAkBA,EAAKD,GAC3B/0D,OAAOC,eAAeF,EAAGi1D,EAAI,CAAE90D,YAAY,EAAMC,IAAK,WAAa,OAAOT,EAAEq1D,OAC3E,SAAUh1D,EAAGL,EAAGq1D,EAAGC,QACTzwD,IAAPywD,IAAkBA,EAAKD,GAC3Bh1D,EAAEi1D,GAAMt1D,EAAEq1D,KAEVE,EAAsB5yD,MAAQA,KAAK4yD,qBAAwBj1D,OAAOY,OAAS,SAAUb,EAAG0e,GACxFze,OAAOC,eAAeF,EAAG,UAAW,CAAEG,YAAY,EAAMK,MAAOke,KAC9D,SAAS1e,EAAG0e,GACb1e,EAAW,QAAI0e,IAEfy2C,EAAgB7yD,MAAQA,KAAK6yD,cAAiB,SAAUC,GACxD,GAAIA,GAAOA,EAAIz0D,WAAY,OAAOy0D,EAClC,IAAI3xD,EAAS,GACb,GAAW,MAAP2xD,EAAa,IAAK,IAAIJ,KAAKI,EAAe,YAANJ,GAAmB/0D,OAAOkB,UAAUC,eAAe1B,KAAK01D,EAAKJ,IAAID,EAAgBtxD,EAAQ2xD,EAAKJ,GAEtI,OADAE,EAAmBzxD,EAAQ2xD,GACpB3xD,GAEXxD,OAAOC,eAAeb,EAAS,aAAc,CAAEmB,OAAO,IACtDnB,EAAQgwL,cAAW,EACnB,IAAIA,EAAWl6H,EAAa,EAAQ,MACpC91D,EAAQgwL,SAAWA,G,6BCtBnB,IAAIt6H,EAAmBzyD,MAAQA,KAAKyyD,kBAAqB90D,OAAOY,OAAS,SAAUb,EAAGL,EAAGq1D,EAAGC,QAC7EzwD,IAAPywD,IAAkBA,EAAKD,GAC3B/0D,OAAOC,eAAeF,EAAGi1D,EAAI,CAAE90D,YAAY,EAAMC,IAAK,WAAa,OAAOT,EAAEq1D,OAC3E,SAAUh1D,EAAGL,EAAGq1D,EAAGC,QACTzwD,IAAPywD,IAAkBA,EAAKD,GAC3Bh1D,EAAEi1D,GAAMt1D,EAAEq1D,KAEVqxC,EAAgB/jG,MAAQA,KAAK+jG,cAAiB,SAAS1mG,EAAGN,GAC1D,IAAK,IAAIgC,KAAK1B,EAAa,YAAN0B,GAAoBpB,OAAOkB,UAAUC,eAAe1B,KAAKL,EAASgC,IAAI0zD,EAAgB11D,EAASM,EAAG0B,IAE3HpB,OAAOC,eAAeb,EAAS,aAAc,CAAEmB,OAAO,IACtDnB,EAAQklD,WAAallD,EAAQ8oD,QAAU9oD,EAAQwpD,OAASxpD,EAAQ0mD,cAAgB1mD,EAAQymD,YAAczmD,EAAQsnD,MAAQtnD,EAAQynD,KAAOznD,EAAQ4F,YAAc5F,EAAQkE,aAAU,EAC7K,IAAIkuI,EAAc,EAAQ,IAC1BxxI,OAAOC,eAAeb,EAAS,UAAW,CAAEc,YAAY,EAAMC,IAAK,WAAc,OAAOqxI,EAAYluI,WACpGtD,OAAOC,eAAeb,EAAS,cAAe,CAAEc,YAAY,EAAMC,IAAK,WAAc,OAAOqxI,EAAYxsI,eACxGhF,OAAOC,eAAeb,EAAS,OAAQ,CAAEc,YAAY,EAAMC,IAAK,WAAc,OAAOqxI,EAAY3qF,QACjG7mD,OAAOC,eAAeb,EAAS,QAAS,CAAEc,YAAY,EAAMC,IAAK,WAAc,OAAOqxI,EAAY9qF,SAClG1mD,OAAOC,eAAeb,EAAS,cAAe,CAAEc,YAAY,EAAMC,IAAK,WAAc,OAAOqxI,EAAY3rF,eACxG7lD,OAAOC,eAAeb,EAAS,gBAAiB,CAAEc,YAAY,EAAMC,IAAK,WAAc,OAAOqxI,EAAY1rF,iBAC1G9lD,OAAOC,eAAeb,EAAS,SAAU,CAAEc,YAAY,EAAMC,IAAK,WAAc,OAAOqxI,EAAY5oF,UACnG5oD,OAAOC,eAAeb,EAAS,UAAW,CAAEc,YAAY,EAAMC,IAAK,WAAc,OAAOqxI,EAAYtpF,WACpGloD,OAAOC,eAAeb,EAAS,aAAc,CAAEc,YAAY,EAAMC,IAAK,WAAc,OAAOqxI,EAAYltF,cACvG8hD,EAAa,EAAQ,KAAWhnG,I,6BCgFhC,SAASiwL,EAAoB5hL,EAAM5M,GAG/B,IAFA,IAAIyuL,EAAW,GACXC,EAAO,GACFjwL,EAAI,EAAGgK,EAAMmE,EAAKzJ,OAAQ1E,EAAIgK,EAAKhK,GAAK,EAAG,CAChD,IAAIkH,EAAOiH,EAAKnO,GACZkwL,EAAUhpL,EAAK3F,GACf2uL,EACAF,EAASE,GAAWlwL,EAGpBiwL,EAAK1qL,KAAK2B,GAGlB,MAAO,CACH8oL,SAAUA,EACVC,KAAMA,GArHdvvL,OAAOC,eAAeb,EAAS,aAAc,CAAEmB,OAAO,IACtDnB,EAAQkT,UAAO,EAoGflT,EAAQkT,KAnGR,SAAcm9K,EAASr6E,EAASv0G,GAY5B,IAXA,IAQI2F,EACAgpL,EATAE,EAASL,EAAoBI,EAAS5uL,GACtC8uL,EAASN,EAAoBj6E,EAASv0G,GACtC+uL,EAAUD,EAAOJ,KACjBM,EAAcH,EAAOJ,SACrBQ,EAAcH,EAAOL,SACrBS,EAAQ,GACRzyK,EAAW,GACXhe,EAAI,EAGJ0wL,EAAY,EACT1wL,EAAImwL,EAAQzrL,QAAQ,CAGvB,GADAwrL,GADAhpL,EAAOipL,EAAQnwL,IACAuB,GAGX,GAAKivL,EAAY3uL,eAAequL,GAG3B,CACD,IAAIS,EAAeH,EAAYN,GAC/BlyK,EAASzY,KAAKuwG,EAAQ66E,SAJtB3yK,EAASzY,KAAK,UAOjB,CAED,IAAIqrL,EAAWN,EADfI,GAAa,GAEb1yK,EAASzY,KAAKqrL,GAAY,MAE9B5wL,GAAK,EAET,IAAI6wL,EAAe7yK,EAAS3X,MAAM,GAElC,IADArG,EAAI,EACGA,EAAI6wL,EAAansL,QACI,OAApBmsL,EAAa7wL,IACb2gB,EAAO3gB,GACP8wL,EAAe9wL,IAGfA,GAAK,EAIb,IADA,IAAIiK,EAAKjK,EAAI,EACNA,EAAI81G,EAAQpxG,QAAQ,CAEvBwrL,GADAhpL,EAAO4uG,EAAQ91G,IACAuB,GACf,IAAIwvL,EAAeF,EAAa5mL,GAChC,GAAI8mL,EAEA,GAAIb,IADkBa,EAAaxvL,GAE/B0I,GAAK,OAIL,GAAKsmL,EAAY1uL,eAAequL,GAG3B,CACD,IAAIc,EAAmBH,EAAa5mL,EAAI,GACxC,GAAI+mL,EACkBA,EAAiBzvL,KACf2uL,GAChBvvK,EAAO3gB,GACP8wL,EAAe7mL,GACfA,GAAK,GAGLypB,EAAO1zB,EAAGkH,QAZlBwsB,EAAO1zB,EAAGkH,QAmBlBwsB,EAAO1zB,EAAGkH,GAEdlH,GAAK,EAGT,IADA,IAAIy1D,EAAIo7H,EAAansL,OAASuF,GACtBA,GAAK,GAAK4mL,EAAansL,QAE3Bic,GADA80C,GAAK,GACMz1D,GAEf,SAAS2gB,EAAOlc,GACZ,IAAIi0D,EAAO,CAAEj0D,MAAOA,EAAOH,KAAM,EAAG4C,KAAM,MAC1CupL,EAAMlrL,KAAKmzD,GAEf,SAAShlC,EAAOjvB,EAAOyC,GACnB,IAAIwxD,EAAO,CAAEj0D,MAAOA,EAAOyC,KAAMA,EAAM5C,KAAM,GAC7CmsL,EAAMlrL,KAAKmzD,GAEf,SAASo4H,EAAersL,GACpBosL,EAAazmL,OAAO3F,EAAO,GAE/B,MAAO,CACHgsL,MAAOA,K,6BClGf,IAAIj7H,EAAmBzyD,MAAQA,KAAKyyD,kBAAqB90D,OAAOY,OAAS,SAAUb,EAAGL,EAAGq1D,EAAGC,QAC7EzwD,IAAPywD,IAAkBA,EAAKD,GAC3B/0D,OAAOC,eAAeF,EAAGi1D,EAAI,CAAE90D,YAAY,EAAMC,IAAK,WAAa,OAAOT,EAAEq1D,OAC3E,SAAUh1D,EAAGL,EAAGq1D,EAAGC,QACTzwD,IAAPywD,IAAkBA,EAAKD,GAC3Bh1D,EAAEi1D,GAAMt1D,EAAEq1D,KAEVqxC,EAAgB/jG,MAAQA,KAAK+jG,cAAiB,SAAS1mG,EAAGN,GAC1D,IAAK,IAAIgC,KAAK1B,EAAa,YAAN0B,GAAoBpB,OAAOkB,UAAUC,eAAe1B,KAAKL,EAASgC,IAAI0zD,EAAgB11D,EAASM,EAAG0B,IAE3HpB,OAAOC,eAAeb,EAAS,aAAc,CAAEmB,OAAO,IACtDnB,EAAQ2lD,QAAU3lD,EAAQmxL,YAAcnxL,EAAQoxL,UAAYpxL,EAAQqxL,UAAYrxL,EAAQsxL,gBAAkBtxL,EAAQuxL,WAAavxL,EAAQwxL,UAAYxxL,EAAQg4F,SAAWh4F,EAAQyxL,OAASzxL,EAAQgtD,aAAehtD,EAAQmvC,SAAWnvC,EAAQmqD,UAAYnqD,EAAQ0K,MAAQ1K,EAAQ6K,cAAgB7K,EAAQ0F,SAAW1F,EAAQ2qD,QAAU3qD,EAAQ4qD,QAAU5qD,EAAQuK,OAASvK,EAAQoJ,MAAQpJ,EAAQstD,MAAQttD,EAAQouD,KAAOpuD,EAAQse,SAAM,EACla,IAAI8zH,EAAc,EAAQ,IAgB1B,SAASq/C,EAAOtwL,EAAO4b,GACnB,OAAgB,MAAT5b,EAAgBA,EAAQ4b,EA4BnC,SAASu0K,EAAgB7rK,GACrB,MAAgB,cAATA,EAGX,SAAS4rK,EAAUnqL,EAAKirC,EAAMu/I,GAE1B,IAAIvoL,OADc,IAAduoL,IAAwBA,EAAY,KAExC,IAAIr/K,EAAOlO,MAAMD,QAAQiuC,GAAQA,EAAOA,EAAK/lC,MAAMslL,GACnD,GAAIr/K,EAAKzN,OAEL,IADAuE,EAAMjC,EACCmL,EAAKzN,QAAQ,CAChB,IAAInD,EAAM4Q,EAAKG,QACf,GAAI5R,OAAOuI,KAASA,IAAO1H,KAAOA,KAAO0H,GAIrC,OAHAA,EAAMA,EAAI1H,GAOtB,OAAO0H,EAhEXvI,OAAOC,eAAeb,EAAS,MAAO,CAAEc,YAAY,EAAMC,IAAK,WAAc,OAAOqxI,EAAY9zH,OAChG1d,OAAOC,eAAeb,EAAS,OAAQ,CAAEc,YAAY,EAAMC,IAAK,WAAc,OAAOqxI,EAAYhkF,QACjGxtD,OAAOC,eAAeb,EAAS,QAAS,CAAEc,YAAY,EAAMC,IAAK,WAAc,OAAOqxI,EAAY9kF,SAClG1sD,OAAOC,eAAeb,EAAS,QAAS,CAAEc,YAAY,EAAMC,IAAK,WAAc,OAAOqxI,EAAYhpI,SAClGxI,OAAOC,eAAeb,EAAS,SAAU,CAAEc,YAAY,EAAMC,IAAK,WAAc,OAAOqxI,EAAY7nI,UACnG3J,OAAOC,eAAeb,EAAS,UAAW,CAAEc,YAAY,EAAMC,IAAK,WAAc,OAAOqxI,EAAYxnF,WACpGhqD,OAAOC,eAAeb,EAAS,UAAW,CAAEc,YAAY,EAAMC,IAAK,WAAc,OAAOqxI,EAAYznF,WACpG/pD,OAAOC,eAAeb,EAAS,WAAY,CAAEc,YAAY,EAAMC,IAAK,WAAc,OAAOqxI,EAAY1sI,YACrG9E,OAAOC,eAAeb,EAAS,gBAAiB,CAAEc,YAAY,EAAMC,IAAK,WAAc,OAAOqxI,EAAYvnI,iBAC1GjK,OAAOC,eAAeb,EAAS,QAAS,CAAEc,YAAY,EAAMC,IAAK,WAAc,OAAOqxI,EAAY1nI,SAClG9J,OAAOC,eAAeb,EAAS,YAAa,CAAEc,YAAY,EAAMC,IAAK,WAAc,OAAOqxI,EAAYjoF,aACtGvpD,OAAOC,eAAeb,EAAS,WAAY,CAAEc,YAAY,EAAMC,IAAK,WAAc,OAAOqxI,EAAYjjG,YACrGvuC,OAAOC,eAAeb,EAAS,eAAgB,CAAEc,YAAY,EAAMC,IAAK,WAAc,OAAOqxI,EAAYplF,gBACzGg6C,EAAa,EAAQ,KAAahnG,GAClCgnG,EAAa,EAAQ,KAAchnG,GAInCA,EAAQyxL,OAASA,EAKjBzxL,EAAQg4F,SAJR,SAAkB9wF,EAAKzF,EAAKsb,GACxB,IAAI5b,EAAe,MAAP+F,EAAcA,EAAIzF,GAAO,KACrC,YAAwB0D,IAAjB4X,EAA6B00K,EAAOtwL,EAAO4b,GAAgB5b,GActEnB,EAAQwxL,UAXR,SAAmBtqL,EAAKzF,EAAKsb,GACzB,IAAI5b,EAAe,MAAP+F,EAAcA,EAAIzF,GAAO,KACrC,OAAa,MAATN,EACO4b,GAEX5b,GAASA,EACLg+D,OAAO/xB,MAAMjsC,KAAWg+D,OAAO9lC,SAASl4B,GACjC4b,EAEJ5b,IAUXnB,EAAQuxL,WAPR,SAAoBrqL,EAAKzF,EAAKsb,GAC1B,IAAI5b,EAAe,MAAP+F,EAAcA,EAAIzF,GAAO,KACrC,OAAa,MAATN,EACO4b,IAEF5b,GAMbnB,EAAQsxL,gBAAkBA,EAmB1BtxL,EAAQqxL,UAAYA,EAmBpBrxL,EAAQoxL,UAlBR,SAAmBlqL,EAAKirC,EAAMhxC,EAAOuwL,QACf,IAAdA,IAAwBA,EAAY,KACxC,IAAIr/K,EAAOlO,MAAMD,QAAQiuC,GAAQA,EAAOA,EAAK/lC,MAAMslL,GAC/CC,EAAUt/K,EAAKlE,MACnB,GAAIwjL,IAAYL,EAAgBK,GAAU,CACtC,IAAIC,EAAU1qL,EACdmL,EAAK+7B,SAAQ,SAAU3sC,GACd6vL,EAAgB7vL,KACG,MAAhBmwL,EAAQnwL,KACRmwL,EAAQnwL,GAAO,IAEnBmwL,EAAUA,EAAQnwL,OAG1BmwL,EAAQD,GAAWxwL,EAEvB,OAAO+F,GAoBXlH,EAAQmxL,YAjBR,SAAqBjqL,EAAKirC,EAAMu/I,QACV,IAAdA,IAAwBA,EAAY,KACxC,IAAIr/K,EAAOlO,MAAMD,QAAQiuC,GAAQA,EAAK5rC,QAAU4rC,EAAK/lC,MAAMslL,GACvDG,EAAmBx/K,EAAKlE,MAC5B,GAAI0jL,EACA,GAAIx/K,EAAKzN,OAAS,EAAG,CACjB,IAAIktL,EAAWT,EAAUnqL,EAAKmL,GAC1By/K,UACOA,EAASD,eAIb3qL,EAAI2qL,GAGnB,OAAO3qL,GA8BXlH,EAAQ2lD,QA3BR,SAASA,EAAQz+C,EAAK6qL,EAAOrrK,QACX,IAAVqrK,IAAoBA,EAAQ,KAChC,IAAI5oL,EAAM,GAkBV,IAAK,IAAI1H,KAjBTb,OAAOyR,KAAKnL,GAAKknC,SAAQ,SAAU3sC,GAC/B,IAAIqG,EAAMZ,EAAIzF,GACVmJ,EAAsB,iBAAR9C,GAAoB3D,MAAMD,QAAQ4D,GAIpD,GAHI8C,GAAQ8b,GAAQA,EAAK5e,KACrB8C,GAAO,GAEPA,EAAM,CACN,IAAIonL,EAAersI,EAAQ79C,EAAKiqL,EAAOrrK,GACvC9lB,OAAOyR,KAAK2/K,GAAc5jJ,SAAQ,SAAU6jJ,GACxC9oL,EAAI1H,EAAMswL,EAAQE,GAAWD,EAAaC,WAI9C9oL,EAAI1H,GAAOqG,KAIHZ,EACPtG,OAAOkB,UAAUC,eAAe1B,KAAK6G,EAAKzF,GAInD,OAAO0H,I,6BC9IXvI,OAAOC,eAAeb,EAAS,aAAc,CAAEmB,OAAO,IACtDnB,EAAQkyL,iBAAc,EAiBtBlyL,EAAQkyL,YAbR,SAAqBC,GAEjB,IADA,IAAIC,EAAY,GACP/lL,EAAK,EAAGA,EAAK3C,UAAU9E,OAAQyH,IACpC+lL,EAAU/lL,EAAK,GAAK3C,UAAU2C,GAElC+lL,EAAUhkJ,SAAQ,SAAU+sC,GACxBv6E,OAAOmqE,oBAAoBoQ,EAASr5E,WAAWssC,SAAQ,SAAU3tC,GAChD,gBAATA,GACAG,OAAOC,eAAesxL,EAAYrwL,UAAWrB,EAAMG,OAAOkrE,yBAAyBqP,EAASr5E,UAAWrB,Y,6BCbvH,IAAI60D,EAAaryD,MAAQA,KAAKqyD,WAAc,WACxC,IAAID,EAAgB,SAAU70D,EAAG0N,GAI7B,OAHAmnD,EAAgBz0D,OAAO20D,gBAClB,CAAEC,UAAW,cAAgBrxD,OAAS,SAAU3D,EAAG0N,GAAK1N,EAAEg1D,UAAYtnD,IACvE,SAAU1N,EAAG0N,GAAK,IAAK,IAAIlM,KAAKkM,EAAOtN,OAAOkB,UAAUC,eAAe1B,KAAK6N,EAAGlM,KAAIxB,EAAEwB,GAAKkM,EAAElM,MAC3ExB,EAAG0N,IAE5B,OAAO,SAAU1N,EAAG0N,GAChB,GAAiB,mBAANA,GAA0B,OAANA,EAC3B,MAAM,IAAImU,UAAU,uBAAyBtS,OAAO7B,GAAK,iCAE7D,SAASunD,IAAOxyD,KAAK6F,YAActI,EADnC60D,EAAc70D,EAAG0N,GAEjB1N,EAAEsB,UAAkB,OAANoM,EAAatN,OAAOY,OAAO0M,IAAMunD,EAAG3zD,UAAYoM,EAAEpM,UAAW,IAAI2zD,IAZ3C,GAe5C70D,OAAOC,eAAeb,EAAS,aAAc,CAAEmB,OAAO,IACtDnB,EAAQk8I,YAAcl8I,EAAQqyL,aAAU,EACxC,IAAIh9H,EAAgBz0D,OAAO20D,gBACtB,CAAEC,UAAW,cAAgBrxD,OAC1B,SAAU3D,EAAG0N,GACT1N,EAAEg1D,UAAYtnD,IAEtB,SAAU1N,EAAG0N,GAET,IAAK,IAAIlM,KAAKkM,EACNtN,OAAOkB,UAAUC,eAAe1B,KAAK6N,EAAGlM,KACxCxB,EAAEwB,GAAKkM,EAAElM,KAQzB,SAASqwL,EAAQzmG,EAAK7xE,GAElB,SAASjF,IACL7R,KAAK6F,YAAc8iF,EAFvBv2B,EAAcu2B,EAAK7xE,GAInB6xE,EAAI9pF,UACS,OAATiY,EACMnZ,OAAOY,OAAOuY,IACZjF,EAAIhT,UAAYiY,EAAKjY,UAAY,IAAIgT,GAErD9U,EAAQqyL,QAAUA,EAClB,IAKIC,EAAgB,eAAezgL,KAAK,GAJpC,eAI+C,iBAAiBA,KAAK,GACrE,cA2BJ7R,EAAQk8I,YApBR,SAAqB7nI,EAAW0F,GAC5B,IAAI6xE,EAiBJ,OAhBI0mG,EACA1mG,EAAqB,SAAUz1B,GAE3B,SAASy1B,IACL,OAAkB,OAAXz1B,GAAmBA,EAAO1vD,MAAMxD,KAAMyG,YAAczG,KAE/D,OAJAqyD,EAAUs2B,EAAKz1B,GAIRy1B,EALS,CAMlB7xE,GAMFs4K,EAHAzmG,EAAM,WACF,OAAO7xE,EAAKtT,MAAMxD,KAAMyG,YAEfqQ,GAEjBnZ,OAAOC,eAAe+qF,EAAK,OAAQ,CAAEzqF,MAAOkT,IACrCu3E,I,6BC5EX,IAAIl2B,EAAmBzyD,MAAQA,KAAKyyD,kBAAqB90D,OAAOY,OAAS,SAAUb,EAAGL,EAAGq1D,EAAGC,QAC7EzwD,IAAPywD,IAAkBA,EAAKD,GAC3B/0D,OAAOC,eAAeF,EAAGi1D,EAAI,CAAE90D,YAAY,EAAMC,IAAK,WAAa,OAAOT,EAAEq1D,OAC3E,SAAUh1D,EAAGL,EAAGq1D,EAAGC,QACTzwD,IAAPywD,IAAkBA,EAAKD,GAC3Bh1D,EAAEi1D,GAAMt1D,EAAEq1D,KAEVE,EAAsB5yD,MAAQA,KAAK4yD,qBAAwBj1D,OAAOY,OAAS,SAAUb,EAAG0e,GACxFze,OAAOC,eAAeF,EAAG,UAAW,CAAEG,YAAY,EAAMK,MAAOke,KAC9D,SAAS1e,EAAG0e,GACb1e,EAAW,QAAI0e,IAEfy2C,EAAgB7yD,MAAQA,KAAK6yD,cAAiB,SAAUC,GACxD,GAAIA,GAAOA,EAAIz0D,WAAY,OAAOy0D,EAClC,IAAI3xD,EAAS,GACb,GAAW,MAAP2xD,EAAa,IAAK,IAAIJ,KAAKI,EAAe,YAANJ,GAAmB/0D,OAAOkB,UAAUC,eAAe1B,KAAK01D,EAAKJ,IAAID,EAAgBtxD,EAAQ2xD,EAAKJ,GAEtI,OADAE,EAAmBzxD,EAAQ2xD,GACpB3xD,GAEXxD,OAAOC,eAAeb,EAAS,aAAc,CAAEmB,OAAO,IACtDnB,EAAQuyL,eAAY,EACpB,IAAIA,EAAYz8H,EAAa,EAAQ,MACrC91D,EAAQuyL,UAAYA,G,6BCtBpB,IAAI78H,EAAmBzyD,MAAQA,KAAKyyD,kBAAqB90D,OAAOY,OAAS,SAAUb,EAAGL,EAAGq1D,EAAGC,QAC7EzwD,IAAPywD,IAAkBA,EAAKD,GAC3B/0D,OAAOC,eAAeF,EAAGi1D,EAAI,CAAE90D,YAAY,EAAMC,IAAK,WAAa,OAAOT,EAAEq1D,OAC3E,SAAUh1D,EAAGL,EAAGq1D,EAAGC,QACTzwD,IAAPywD,IAAkBA,EAAKD,GAC3Bh1D,EAAEi1D,GAAMt1D,EAAEq1D,KAEVqxC,EAAgB/jG,MAAQA,KAAK+jG,cAAiB,SAAS1mG,EAAGN,GAC1D,IAAK,IAAIgC,KAAK1B,EAAa,YAAN0B,GAAoBpB,OAAOkB,UAAUC,eAAe1B,KAAKL,EAASgC,IAAI0zD,EAAgB11D,EAASM,EAAG0B,IAE3HpB,OAAOC,eAAeb,EAAS,aAAc,CAAEmB,OAAO,IACtDnB,EAAQwyL,KAAOxyL,EAAQgyD,SAAWhyD,EAAQgwD,SAAWhwD,EAAQod,SAAWpd,EAAQ2vD,SAAW3vD,EAAQ0vD,OAAS1vD,EAAQyvD,IAAMzvD,EAAQ4vD,OAAS5vD,EAAQoM,MAAQpM,EAAQovD,SAAWpvD,EAAQ+vD,WAAa/vD,EAAQswD,SAAWtwD,EAAQ4P,OAAS5P,EAAQ4G,SAAW5G,EAAQywC,cAAW,EAC7Q,IAAI2hG,EAAc,EAAQ,IAC1BxxI,OAAOC,eAAeb,EAAS,WAAY,CAAEc,YAAY,EAAMC,IAAK,WAAc,OAAOqxI,EAAY3hG,YACrG7vC,OAAOC,eAAeb,EAAS,WAAY,CAAEc,YAAY,EAAMC,IAAK,WAAc,OAAOqxI,EAAYxrI,YACrGhG,OAAOC,eAAeb,EAAS,SAAU,CAAEc,YAAY,EAAMC,IAAK,WAAc,OAAOqxI,EAAYxiI,UACnGhP,OAAOC,eAAeb,EAAS,WAAY,CAAEc,YAAY,EAAMC,IAAK,WAAc,OAAOqxI,EAAY9hF,YACrG1vD,OAAOC,eAAeb,EAAS,aAAc,CAAEc,YAAY,EAAMC,IAAK,WAAc,OAAOqxI,EAAYriF,cACvGnvD,OAAOC,eAAeb,EAAS,WAAY,CAAEc,YAAY,EAAMC,IAAK,WAAc,OAAOqxI,EAAYhjF,YACrGxuD,OAAOC,eAAeb,EAAS,QAAS,CAAEc,YAAY,EAAMC,IAAK,WAAc,OAAOqxI,EAAYhmI,SAClGxL,OAAOC,eAAeb,EAAS,SAAU,CAAEc,YAAY,EAAMC,IAAK,WAAc,OAAOqxI,EAAYxiF,UACnGhvD,OAAOC,eAAeb,EAAS,MAAO,CAAEc,YAAY,EAAMC,IAAK,WAAc,OAAOqxI,EAAY3iF,OAChG7uD,OAAOC,eAAeb,EAAS,SAAU,CAAEc,YAAY,EAAMC,IAAK,WAAc,OAAOqxI,EAAY1iF,UACnG9uD,OAAOC,eAAeb,EAAS,WAAY,CAAEc,YAAY,EAAMC,IAAK,WAAc,OAAOqxI,EAAYziF,YACrG/uD,OAAOC,eAAeb,EAAS,WAAY,CAAEc,YAAY,EAAMC,IAAK,WAAc,OAAOqxI,EAAYh1H,YACrGxc,OAAOC,eAAeb,EAAS,WAAY,CAAEc,YAAY,EAAMC,IAAK,WAAc,OAAOqxI,EAAYpiF,YACrGpvD,OAAOC,eAAeb,EAAS,WAAY,CAAEc,YAAY,EAAMC,IAAK,WAAc,OAAOqxI,EAAYpgF,YACrG,IAAIygI,EAAS,EAAQ,KACrB7xL,OAAOC,eAAeb,EAAS,OAAQ,CAAEc,YAAY,EAAMC,IAAK,WAAc,OAAO0xL,EAAOlhL,QAC5Fy1F,EAAa,EAAQ,KAAahnG,GAClCgnG,EAAa,EAAQ,KAAehnG,GACpCgnG,EAAa,EAAQ,KAAWhnG,GAChCgnG,EAAa,EAAQ,KAAWhnG,GAChCgnG,EAAa,EAAQ,KAAiBhnG,I,6BCjCtCY,OAAOC,eAAeb,EAAS,aAAc,CAAEmB,OAAO,IACtDnB,EAAQuR,UAAO,EAWfvR,EAAQuR,KAVR,SAAcmhL,GACV,IAAItuL,EAAS,KACb,IACIA,EAAS8B,OAAOssL,KAAKE,GAEzB,MAAO5hL,IAGP,OAAO1M,I,6BCTXxD,OAAOC,eAAeb,EAAS,aAAc,CAAEmB,OAAO,IACtDnB,EAAQ2yL,cAAW,EAsBnB3yL,EAAQ2yL,SAjBR,SAAkBvhJ,GAId,IAHA,IAAIx4B,EAAO,WACPg6K,GAAa,EACb3tK,EAASmsB,EACJlxC,EAAI,EAAG25D,EAAK50C,EAAOrgB,OAAQ1E,EAAI25D,EAAI35D,GAAK,EAAG,CAChD,IAAI2yL,EAAgB5tK,EAAO5U,WAAWnQ,GAElC2yL,EAAgB,MAASD,IAEzBC,GADA5tK,EAASqrC,SAAS5tB,mBAAmBzd,KACd5U,WAAWnQ,GAClC0yL,GAAa,GAEjBh6K,GAAQi6K,EACRj6K,IAASA,GAAQ,IAAMA,GAAQ,IAAMA,GAAQ,IAAMA,GAAQ,IAAMA,GAAQ,IAE7E,OAAOA,IAAS,I,6BCtBpB,IAAI02K,EAAmBrsL,MAAQA,KAAKqsL,iBAAoB,SAAUv5H,GAC9D,OAAQA,GAAOA,EAAIz0D,WAAcy0D,EAAM,CAAE,QAAWA,IAExDn1D,OAAOC,eAAeb,EAAS,aAAc,CAAEmB,OAAO,IACtDnB,EAAQ8yL,kBAAe,EACvB,IAAItD,EAAWF,EAAgB,EAAQ,KAwCvCtvL,EAAQ8yL,aAvCR,SAAsBxgK,EAAM1vB,QAKR,IAAZA,IAAsBA,EAAU,IAEpC,IAAIgoB,EAAQ4kK,EAAS1gH,QAAQhxD,UAAUwU,EAAM,MAAM,GA2BnD,OA1BA1H,EAAMwjB,SAAQ,SAAUxmC,GACpB,IAAI6B,EAAO7B,EACX,GAAI6B,EAAM,CACN,IAAIoJ,EAAQpJ,EAAKgF,WACjB,GAAIoE,EACA,IAAK,IAAI3S,EAAI,EAAG25D,EAAKhnD,EAAMjO,OAAQ1E,EAAI25D,EAAI35D,GAAK,EAAG,CAC/C,IAAIgW,EAAOrD,EAAMzL,KAAKlH,GACtB,GAAIgW,EAAM,CACN,IAAIpO,EAAMoO,EAAK/U,MAAMmL,cACjBymL,EAAS78K,EAAKzV,KAAK6L,eAKnBymL,EAAOhjI,WAAW,OAClBjoD,EAAIioD,WAAW,gBAEfjoD,EAAIioD,WAAW,UACfjoD,EAAIioD,WAAW,eACftmD,EAAK2I,gBAAgB2gL,SAOzCnwL,EAAQ2hB,IACDqG,GAEJ,EAAI4kK,EAAS1gH,SAAS,UAAU97C,OAAOpI,GAAO0H,S,6BCwBzD,SAAS0gK,EAAmB38C,EAAIw0C,EAAI7yJ,GAKhC,IAJA,IAAIkrB,EAAW,IAAI/+C,MAAM0mL,EAAGjmL,OAAS,GACjCqjC,EAAU,IAAI9jC,MAAM0mL,EAAGjmL,OAAS,GAEhCquL,EAAMj7J,EAAM,EACP93B,EAAI,EAAGA,GAAK2qL,EAAGjmL,OAAQ1E,GAAK,EACjCgjD,EAAShjD,GAAKA,EAElB,IAASA,EAAI,EAAGA,GAAKm2I,EAAGzxI,OAAQ1E,GAAK,EAAG,CACpC,IAAIk2I,EAAKC,EAAGhmI,WAAWnQ,EAAI,GACvBgzL,EAAOhzL,EAAI83B,EAAM93B,EAAI83B,EAAM,EAC3Bm7J,EAAOtI,EAAGjmL,OAASozB,EAAM93B,EAAI83B,EAAM93B,EAAI2qL,EAAGjmL,OAC9CqjC,EAAQ,GAAK/nC,EAGb,IADA,IAAIkzL,EAASlzL,EACJiK,EAAI,EAAGA,EAAI+oL,EAAM/oL,GAAK,EAC3B89B,EAAQ99B,GAAK8oL,EAEjB,IAAS9oL,EAAI+oL,EAAM/oL,GAAKgpL,EAAMhpL,GAAK,EAAG,CAClC,IAAI8pD,EAAOmiF,IAAOy0C,EAAGx6K,WAAWlG,EAAI,GAC9B+4C,EAAS/4C,EAAI,GACbY,KAAKkzC,IACMiF,EAAS/4C,GAAK,EACd89B,EAAQ99B,EAAI,GAAK,EACb+4C,EAAS/4C,EAAI,GAAK,GACvC89B,EAAQ99B,GAAK8pD,EACbm/H,EAASroL,KAAKkzC,IAAIm1I,EAAQn/H,GAE9B,IAAS9pD,EAAIgpL,EAAO,EAAGhpL,GAAK0gL,EAAGjmL,OAAQuF,GAAK,EACxC89B,EAAQ99B,GAAK8oL,EAEjB,GAAIG,EAASp7J,EAGT,OAEJ,IAAIld,EAAOooC,EACXA,EAAWjb,EACXA,EAAUntB,EAEd,IAAIgqD,EAAM5hB,EAAS2nI,EAAGjmL,QACtB,OAAOkgE,EAAM9sC,OAAM7yB,EAAY2/D,EA3GnClkE,OAAOC,eAAeb,EAAS,aAAc,CAAEmB,OAAO,IACtDnB,EAAQqzL,2BAAwB,EAgEhCrzL,EAAQqzL,sBA/CR,SAA+B5yL,EAAM6yL,EAAYC,GAQ7C,IAPA,IAGIC,EAHAC,EAA0B1oL,KAAKkzC,IAAI,EAAGlzC,KAAKq4C,MAAoB,IAAd3iD,EAAKmE,SAEtD8uL,EAAe3oL,KAAKq4C,MAAoB,GAAd3iD,EAAKmE,QAAgB,EAE/C+uL,GAAwB,EACxBC,EAAgBnzL,EAAK6L,cAEhBD,EAAK,EAAGwnL,EAAeP,EAAYjnL,EAAKwnL,EAAajvL,OAAQyH,IAAM,CACxE,IAAIynL,EAAYD,EAAaxnL,GACzB0nL,EAAgBR,EAAQO,GAC5B,QAAsB3uL,IAAlB4uL,GACAhpL,KAAKinC,IAAI+hJ,EAAcnvL,OAASgvL,EAAchvL,SAC1C6uL,EAAyB,CAC7B,IAAIO,EAAyBD,EAAcznL,cAC3C,GAAI0nL,IAA2BJ,EAAe,CAC1C,GAAIG,IAAkBtzL,EAClB,SAEJ,OAAOqzL,EAEX,GAAIH,EACA,SAEJ,GAAII,EAAcnvL,OAAS,EAGvB,SAGJ,IAAIkvD,EAAWk/H,EAAmBY,EAAeI,EAAwBN,EAAe,GACxF,QAAiBvuL,IAAb2uD,EACA,SAEAA,EAAW,GACX6/H,GAAwB,EACxBH,EAAgBM,IAIhBJ,EAAe5/H,EACf0/H,EAAgBM,IAI5B,OAAON,I,6BChEX5yL,OAAOC,eAAeb,EAAS,aAAc,CAAEmB,OAAO,IACtDnB,EAAQi0L,eAAiBj0L,EAAQk0L,gBAAkBl0L,EAAQovL,oBAAsBpvL,EAAQm0L,aAAen0L,EAAQgL,OAAShL,EAAQ+1D,IAAM/1D,EAAQmtC,UAAYntC,EAAQ22B,SAAW32B,EAAQgsD,cAAgBhsD,EAAQ+6C,UAAY/6C,EAAQ2/C,SAAW3/C,EAAQ0jD,SAAW1jD,EAAQ0sD,QAAU1sD,EAAQysD,MAAQzsD,EAAQwrD,cAAgBxrD,EAAQ+qD,UAAY/qD,EAAQq5B,SAAWr5B,EAAQsrD,SAAWtrD,EAAQotC,WAAQ,EACpY,IAAIglG,EAAc,EAAQ,IAC1BxxI,OAAOC,eAAeb,EAAS,QAAS,CAAEc,YAAY,EAAMC,IAAK,WAAc,OAAOqxI,EAAYhlG,SAClGxsC,OAAOC,eAAeb,EAAS,WAAY,CAAEc,YAAY,EAAMC,IAAK,WAAc,OAAOqxI,EAAY9mF,YACrG1qD,OAAOC,eAAeb,EAAS,WAAY,CAAEc,YAAY,EAAMC,IAAK,WAAc,OAAOqxI,EAAY/4G,YACrGz4B,OAAOC,eAAeb,EAAS,YAAa,CAAEc,YAAY,EAAMC,IAAK,WAAc,OAAOqxI,EAAYrnF,aACtGnqD,OAAOC,eAAeb,EAAS,gBAAiB,CAAEc,YAAY,EAAMC,IAAK,WAAc,OAAOqxI,EAAY5mF,iBAC1G5qD,OAAOC,eAAeb,EAAS,QAAS,CAAEc,YAAY,EAAMC,IAAK,WAAc,OAAOqxI,EAAY3lF,SAClG7rD,OAAOC,eAAeb,EAAS,UAAW,CAAEc,YAAY,EAAMC,IAAK,WAAc,OAAOqxI,EAAY1lF,WACpG9rD,OAAOC,eAAeb,EAAS,WAAY,CAAEc,YAAY,EAAMC,IAAK,WAAc,OAAOqxI,EAAY1uF,YACrG9iD,OAAOC,eAAeb,EAAS,WAAY,CAAEc,YAAY,EAAMC,IAAK,WAAc,OAAOqxI,EAAYzyF,YACrG/+C,OAAOC,eAAeb,EAAS,YAAa,CAAEc,YAAY,EAAMC,IAAK,WAAc,OAAOqxI,EAAYr3F,aACtGn6C,OAAOC,eAAeb,EAAS,gBAAiB,CAAEc,YAAY,EAAMC,IAAK,WAAc,OAAOqxI,EAAYpmF,iBAC1GprD,OAAOC,eAAeb,EAAS,WAAY,CAAEc,YAAY,EAAMC,IAAK,WAAc,OAAOqxI,EAAYz7G,YACrG,IAAIy9J,EAAS,EAAQ,KAwBrB,SAASD,EAAarsL,GAClB,MAAsB,iBAARA,GAAsC,MAAlBA,EAAIvB,OAAO,GAxBjD3F,OAAOC,eAAeb,EAAS,YAAa,CAAEc,YAAY,EAAMC,IAAK,WAAc,OAAOqzL,EAAOjnJ,aASjGntC,EAAQ+1D,IAHR,SAAap0D,EAAGrB,GACZ,OAASqB,EAAIrB,EAAKA,GAAKA,GAe3BN,EAAQgL,OAZR,SAAgBs4C,EAAOC,GACnB,GAAa,MAATA,EACAA,EAAiB,MAATD,EAAgB,EAAIA,EAC5BA,EAAQ,OAEP,GAAIC,EAAQD,EAAO,CACpB,IAAIxuC,EAAMwuC,EACVA,EAAQC,EACRA,EAAQzuC,EAEZ,OAAO/J,KAAKq4C,MAAMr4C,KAAKC,UAAYu4C,EAAQD,EAAQ,GAAKA,IAM5DtjD,EAAQm0L,aAAeA,EA0BvBn0L,EAAQovL,oBAzBR,SAA6BpmL,EAAK8tD,GAC9B,GAAW,MAAP9tD,EACA,OAAO,EAEX,IAAIub,EACJ,GAAmB,iBAARvb,GAEP,GADAub,EAAMuR,WAAW9sB,GACbmrL,EAAanrL,KACbub,GAAO,IACH46C,OAAO9lC,SAAS9U,IAChB,OAAOA,EAAMuyC,OAKrBvyC,EAAMvb,EAEV,OAAKm2D,OAAO9lC,SAAS9U,GAGjBA,EAAM,GAAKA,EAAM,EACVA,EAAMuyC,EAEVvyC,EALI,GA4CfvkB,EAAQk0L,gBApCR,SAAyBpsL,EAAKusL,GAQ1B,IAKIh7I,EALAoG,EAAS3pB,WAAWhuB,GACxB,GAAIq3D,OAAO/xB,MAAMqS,GACb,OAAO,KAIX,GAAa,MAAT40I,EAEAh7I,EAAS,iBAER,GAAIl1C,MAAMD,QAAQmwL,GAAQ,CAC3B,GAAqB,IAAjBA,EAAMzvL,OACN,OAAO,KAEXy0C,EAASg7I,EAAMpiL,KAAK,SAEE,iBAAVoiL,IACZh7I,EAASg7I,GAEb,IAAInsK,EA1BJ,SAAiBmxB,GACb,IAAIttC,EAAU,IAAI6C,OAAO,wBAA0ByqC,EAAS,MAAM9nC,KAAKzJ,GACvE,OAAKiE,EAGEA,EAAQ,GAFJ,KAuBJuoL,CAAQj7I,GACnB,OAAa,OAATnxB,EACO,KAEJ,CACHA,KAAMA,EACN/mB,MAAOs+C,IAgCfz/C,EAAQi0L,eA5BR,SAAwB97J,GACpB,GAAmB,iBAARA,EAAkB,CACzB,IAAIqB,EAAO,EACPw9G,EAAQ,EACR1hH,EAAQ,EACRmpC,EAAS,EAeb,OAdoB,MAAhBtmC,EAAIo8J,UAAoBp1H,OAAO9lC,SAASlB,EAAIo8J,YAC5Cv9C,EAAQv4E,EAAStmC,EAAIo8J,UAEH,MAAlBp8J,EAAIomC,YAAsBY,OAAO9lC,SAASlB,EAAIomC,cAC9CjpC,EAAQkE,EAAOrB,EAAIomC,YAEP,MAAZpmC,EAAIqB,MAAgB2lC,OAAO9lC,SAASlB,EAAIqB,QACxCA,EAAOrB,EAAIqB,MACA,MAAXrB,EAAIjkB,KAAeirD,OAAO9lC,SAASlB,EAAIjkB,OACvC8iI,EAAQ7+G,EAAIjkB,KACC,MAAbikB,EAAI7C,OAAiB6pC,OAAO9lC,SAASlB,EAAI7C,SACzCA,EAAQ6C,EAAI7C,OACE,MAAd6C,EAAIsmC,QAAkBU,OAAO9lC,SAASlB,EAAIsmC,UAC1CA,EAAStmC,EAAIsmC,QACV,CAAEvqD,IAAK8iI,EAAO1hH,MAAOA,EAAOmpC,OAAQA,EAAQjlC,KAAMA,GAE7D,IAAI1xB,EAAM,EAIV,OAHW,MAAPqwB,GAAegnC,OAAO9lC,SAASlB,KAC/BrwB,EAAMqwB,GAEH,CAAEjkB,IAAKpM,EAAKwtB,MAAOxtB,EAAK22D,OAAQ32D,EAAK0xB,KAAM1xB,K,6BCpItD,IAAI4tD,EAAmBzyD,MAAQA,KAAKyyD,kBAAqB90D,OAAOY,OAAS,SAAUb,EAAGL,EAAGq1D,EAAGC,QAC7EzwD,IAAPywD,IAAkBA,EAAKD,GAC3B/0D,OAAOC,eAAeF,EAAGi1D,EAAI,CAAE90D,YAAY,EAAMC,IAAK,WAAa,OAAOT,EAAEq1D,OAC3E,SAAUh1D,EAAGL,EAAGq1D,EAAGC,QACTzwD,IAAPywD,IAAkBA,EAAKD,GAC3Bh1D,EAAEi1D,GAAMt1D,EAAEq1D,KAEVE,EAAsB5yD,MAAQA,KAAK4yD,qBAAwBj1D,OAAOY,OAAS,SAAUb,EAAG0e,GACxFze,OAAOC,eAAeF,EAAG,UAAW,CAAEG,YAAY,EAAMK,MAAOke,KAC9D,SAAS1e,EAAG0e,GACb1e,EAAW,QAAI0e,IAEfy2C,EAAgB7yD,MAAQA,KAAK6yD,cAAiB,SAAUC,GACxD,GAAIA,GAAOA,EAAIz0D,WAAY,OAAOy0D,EAClC,IAAI3xD,EAAS,GACb,GAAW,MAAP2xD,EAAa,IAAK,IAAIJ,KAAKI,EAAe,YAANJ,GAAmB/0D,OAAOkB,UAAUC,eAAe1B,KAAK01D,EAAKJ,IAAID,EAAgBtxD,EAAQ2xD,EAAKJ,GAEtI,OADAE,EAAmBzxD,EAAQ2xD,GACpB3xD,GAEXxD,OAAOC,eAAeb,EAAS,aAAc,CAAEmB,OAAO,IACtDnB,EAAQw0L,iBAAc,EACtB,IAAIA,EAAc1+H,EAAa,EAAQ,MACvC91D,EAAQw0L,YAAcA,G,6BCtBtB,IAAI9+H,EAAmBzyD,MAAQA,KAAKyyD,kBAAqB90D,OAAOY,OAAS,SAAUb,EAAGL,EAAGq1D,EAAGC,QAC7EzwD,IAAPywD,IAAkBA,EAAKD,GAC3B/0D,OAAOC,eAAeF,EAAGi1D,EAAI,CAAE90D,YAAY,EAAMC,IAAK,WAAa,OAAOT,EAAEq1D,OAC3E,SAAUh1D,EAAGL,EAAGq1D,EAAGC,QACTzwD,IAAPywD,IAAkBA,EAAKD,GAC3Bh1D,EAAEi1D,GAAMt1D,EAAEq1D,KAEVqxC,EAAgB/jG,MAAQA,KAAK+jG,cAAiB,SAAS1mG,EAAGN,GAC1D,IAAK,IAAIgC,KAAK1B,EAAa,YAAN0B,GAAoBpB,OAAOkB,UAAUC,eAAe1B,KAAKL,EAASgC,IAAI0zD,EAAgB11D,EAASM,EAAG0B,IAE3HpB,OAAOC,eAAeb,EAAS,aAAc,CAAEmB,OAAO,IACtD6lG,EAAa,EAAQ,KAAehnG,GACpCgnG,EAAa,EAAQ,KAAYhnG,I,6BCZjCY,OAAOC,eAAeb,EAAS,aAAc,CAAEmB,OAAO,IACtDnB,EAAQy0L,OAASz0L,EAAQK,KAAOL,EAAQyG,MAAQzG,EAAQ8mB,MAAQ9mB,EAAQokD,SAAWpkD,EAAQqL,KAAOrL,EAAQ2gB,KAAO3gB,EAAQiH,gBAAa,EACtI,IAAImrI,EAAc,EAAQ,IAM1B,SAAS3rI,EAAMkC,EAAI8pC,EAAKr6B,GACpB,GAAIA,EACA,OAAQA,EAAKxT,QACT,KAAK,EACD,OAAO+D,EAAGtI,KAAKoyC,GACnB,KAAK,EACD,OAAO9pC,EAAGtI,KAAKoyC,EAAKr6B,EAAK,IAC7B,KAAK,EACD,OAAOzP,EAAGtI,KAAKoyC,EAAKr6B,EAAK,GAAIA,EAAK,IACtC,KAAK,EACD,OAAOzP,EAAGtI,KAAKoyC,EAAKr6B,EAAK,GAAIA,EAAK,GAAIA,EAAK,IAC/C,KAAK,EACD,OAAOzP,EAAGtI,KAAKoyC,EAAKr6B,EAAK,GAAIA,EAAK,GAAIA,EAAK,GAAIA,EAAK,IACxD,KAAK,EACD,OAAOzP,EAAGtI,KAAKoyC,EAAKr6B,EAAK,GAAIA,EAAK,GAAIA,EAAK,GAAIA,EAAK,GAAIA,EAAK,IACjE,KAAK,EACD,OAAOzP,EAAGtI,KAAKoyC,EAAKr6B,EAAK,GAAIA,EAAK,GAAIA,EAAK,GAAIA,EAAK,GAAIA,EAAK,GAAIA,EAAK,IAC1E,QACI,OAAOzP,EAAGlC,MAAMgsC,EAAKr6B,GAGjC,OAAOzP,EAAGtI,KAAKoyC,GAWnB,SAASiiJ,EAAOjwL,EAAO2C,GACnB,IAAK,IAAIlH,EAAI,EAAG25D,EAAKp1D,EAAMG,OAAQ1E,EAAI25D,EAAI35D,GAAK,EAC5C,GAAIuE,EAAMvE,KAAOkH,EACb,OAAO3C,EAAMgB,KAAKhB,EAAM6F,OAAOpK,EAAG,GAAG,IAxCjDU,OAAOC,eAAeb,EAAS,aAAc,CAAEc,YAAY,EAAMC,IAAK,WAAc,OAAOqxI,EAAYnrI,cACvGrG,OAAOC,eAAeb,EAAS,OAAQ,CAAEc,YAAY,EAAMC,IAAK,WAAc,OAAOqxI,EAAYzxH,QACjG/f,OAAOC,eAAeb,EAAS,OAAQ,CAAEc,YAAY,EAAMC,IAAK,WAAc,OAAOqxI,EAAY/mI,QACjGzK,OAAOC,eAAeb,EAAS,WAAY,CAAEc,YAAY,EAAMC,IAAK,WAAc,OAAOqxI,EAAYhuF,YACrGxjD,OAAOC,eAAeb,EAAS,QAAS,CAAEc,YAAY,EAAMC,IAAK,WAAc,OAAOqxI,EAAYtrH,SAwBlG9mB,EAAQyG,MAAQA,EAQhBzG,EAAQK,KAPR,SAAcsI,EAAI8pC,GAEd,IADA,IAAIr6B,EAAO,GACF/L,EAAK,EAAGA,EAAK3C,UAAU9E,OAAQyH,IACpC+L,EAAK/L,EAAK,GAAK3C,UAAU2C,GAE7B,OAAO5F,EAAMkC,EAAI8pC,EAAKr6B,IAmC1BpY,EAAQy0L,OAzBR,SAAgB9rL,EAAI8pC,EAAKkiJ,GACrB,IAAItiL,EAAO,GACPC,EAAQ,GAqBZ,OApBQ,WAEJ,IADA,IAAI8F,EAAO,GACF/L,EAAK,EAAGA,EAAK3C,UAAU9E,OAAQyH,IACpC+L,EAAK/L,GAAM3C,UAAU2C,GAEzB,IAAIuoL,GAAW,EACXnzL,EAAM2W,EAAKnG,KAAK,KAYpB,OAXIxQ,KAAO6Q,GACPsiL,GAAW,EACXF,EAAOriL,EAAM5Q,KAGT4Q,EAAKzN,QAAU,YACR0N,EAAMD,EAAKG,SAEtBH,EAAK5M,KAAKhE,GACV6Q,EAAM7Q,GAAOgF,EAAMkC,EAAI8pC,GAAO,KAAMr6B,IAEjCu8K,EAAgBA,EAAcriL,EAAM7Q,GAAMmzL,GAAYtiL,EAAM7Q,M,6BClE3E,SAASozL,EAAY3tL,GACjB,MAAsB,iBAARA,GAAoBA,EAAI6Y,MAA4B,mBAAb7Y,EAAI6Y,KAG7D,SAAS+0K,EAAQ5tL,GACb,OAAc,MAAPA,IAAgBA,aAAekpE,SAAWykH,EAAY3tL,IAGjE,SAAS6tL,IAEL,IADA,IAAIC,EAAS,GACJ3oL,EAAK,EAAGA,EAAK3C,UAAU9E,OAAQyH,IACpC2oL,EAAO3oL,GAAM3C,UAAU2C,GAE3B,IAAIV,EAAU,GACdqpL,EAAO5mJ,SAAQ,SAAUniC,GACjB9H,MAAMD,QAAQ+H,GACdN,EAAQlG,KAAKgB,MAAMkF,EAASM,GAG5BN,EAAQlG,KAAKwG,MAGrB,IAAIgpL,EAAWtpL,EAAQ49C,MAAK,SAAUub,GAAO,OAAOgwH,EAAQhwH,MAC5D,GAAImwH,EAAU,CACV,IAAIC,EAAWvpL,EAAQnC,KAAI,SAAUs7D,GACjC,OAAOgwH,EAAQhwH,GAAOA,EAAMsL,QAAQ3wD,SAAgB,IAARqlD,MAEhD,OAAOsL,QAAQ+kH,IAAID,GAAUn1K,MAAK,SAAU3Z,GACxC,OAAOA,EAAIqoC,QAAO,SAAU8B,EAAMnpC,GAAQ,OAAgB,IAATA,GAAkBmpC,KAAS,MAGpF,OAAO5kC,EAAQ68C,OAAM,SAAUsc,GAAO,OAAe,IAARA,KAjCjDlkE,OAAOC,eAAeb,EAAS,aAAc,CAAEmB,OAAO,IACtDnB,EAAQo1L,kBAAoBp1L,EAAQ+0L,eAAiB/0L,EAAQ80L,QAAU90L,EAAQ60L,iBAAc,EAI7F70L,EAAQ60L,YAAcA,EAItB70L,EAAQ80L,QAAUA,EA0BlB90L,EAAQ+0L,eAAiBA,EASzB/0L,EAAQo1L,kBARR,WAEI,IADA,IAAIJ,EAAS,GACJ3oL,EAAK,EAAGA,EAAK3C,UAAU9E,OAAQyH,IACpC2oL,EAAO3oL,GAAM3C,UAAU2C,GAE3B,IAAIlD,EAAM4rL,EAAeC,GACzB,MAAsB,kBAAR7rL,EAAoBinE,QAAQ3wD,QAAQtW,GAAOA,I,6BC1C7D,IAAIusD,EAAmBzyD,MAAQA,KAAKyyD,kBAAqB90D,OAAOY,OAAS,SAAUb,EAAGL,EAAGq1D,EAAGC,QAC7EzwD,IAAPywD,IAAkBA,EAAKD,GAC3B/0D,OAAOC,eAAeF,EAAGi1D,EAAI,CAAE90D,YAAY,EAAMC,IAAK,WAAa,OAAOT,EAAEq1D,OAC3E,SAAUh1D,EAAGL,EAAGq1D,EAAGC,QACTzwD,IAAPywD,IAAkBA,EAAKD,GAC3Bh1D,EAAEi1D,GAAMt1D,EAAEq1D,KAEVqxC,EAAgB/jG,MAAQA,KAAK+jG,cAAiB,SAAS1mG,EAAGN,GAC1D,IAAK,IAAIgC,KAAK1B,EAAa,YAAN0B,GAAoBpB,OAAOkB,UAAUC,eAAe1B,KAAKL,EAASgC,IAAI0zD,EAAgB11D,EAASM,EAAG0B,IAE3HpB,OAAOC,eAAeb,EAAS,aAAc,CAAEmB,OAAO,IACtD6lG,EAAa,EAAQ,KAAehnG,GACpCgnG,EAAa,EAAQ,KAAehnG,I,6BCZpCY,OAAOC,eAAeb,EAAS,aAAc,CAAEmB,OAAO,IACtDnB,EAAQq1L,iBAAmBr1L,EAAQs1L,8BAAgCt1L,EAAQu1L,uBAAyBv1L,EAAQw1L,cAAW,EACvH,IAAIC,EAAW,EAAQ,KACnBjhD,EAAS,EAAQ,KAuErBx0I,EAAQw1L,SAtER,SAAkBp0L,EAAGs0L,EAAah4J,QAClB,IAARA,IAAkBA,EAAM,IAO5B,IANA,IAGIi4J,EACAv3K,EAJAgtB,EAAS1N,EAAI0N,QAAU,EACvBwqJ,EAAY,GACZzsL,EAAM,GAGN0sL,EAAQ,KACH31L,EAAI,EAAGA,EAAIkB,EAAEwD,OAAQ1E,GAAK,EAAG,CAClCy1L,EAAOxsL,EAAIjJ,GAAKkB,EAAElB,GAClB,IAAK,IAAIiK,EAAI,EAAG4hL,EAAK2J,EAAY9wL,OAAQuF,EAAI4hL,EAAI5hL,GAAK,EAAG,CACrD,IAAI2rL,EAAaJ,EAAYvrL,GACzB5F,EAAQuxL,EAAWvxL,MAAQ6mC,EAC3BhhC,EAAM0rL,EAAW1rL,IAAMghC,EACvBlrC,GAAKqE,GAASrE,EAAIkK,IACE,iBAATurL,EACPA,EAAOxsL,EAAIjJ,GAAK,CACZkB,EAAGA,EAAElB,GACL2S,MAAOijL,EAAWjjL,OAItB8iL,EAAK9iL,OAAQ,EAAI2hI,EAAOloC,aAAY,EAAIkoC,EAAOloC,YAAY,GAAIqpF,EAAK9iL,OAAQijL,EAAWjjL,OAEvF6qB,EAAIq4J,2BACoB,MAApBJ,EAAKD,cACLC,EAAKD,YAAc,IAEvBC,EAAKD,YAAYjwL,KAAK0E,MAIlCiU,EAAOjV,EAAIjJ,EAAI,IAINu1L,EAASpjD,UAAU3sI,SAASiwL,IAASF,EAASpjD,UAAU3sI,SAAS0Y,IACtEy3K,EAAQA,EAGJ7vK,KAAKs3C,UAAUq4H,EAAK9iL,SAAWmT,KAAKs3C,UAAUl/C,EAAKvL,OACnDgjL,EAAMz0L,GAAKu0L,EAAKv0L,GAGhBw0L,EAAUnwL,KAAKowL,GACfA,EAAQF,IAGPF,EAASpjD,UAAU3sI,SAASiwL,IAM5BF,EAASpjD,UAAU3sI,SAAS0Y,IAJjCy3K,EAAQA,EACRD,EAAUnwL,KAAKowL,GACfA,EAAQF,GAURE,GAASA,GAAS,IAAMF,EA5BxBE,EAAQF,EAkChB,OAHa,MAATE,GACAD,EAAUnwL,KAAKowL,GAEZD,GAQX51L,EAAQu1L,uBALR,SAAgCG,EAAa/wL,GACzC,OAAO+wL,EACDA,EAAYjhL,QAAO,SAAUxG,GAAK,OAAOA,EAAE1J,MAAQI,GAASA,GAASsJ,EAAE7D,OACvE,IAYVpK,EAAQs1L,8BATR,SAAuCI,EAAanxL,EAAO6F,GACvD,OAAOsrL,EACDA,EAAYjhL,QAAO,SAAUxG,GAC3B,OAAQ1J,GAAS0J,EAAE1J,OAASA,EAAQ0J,EAAE7D,KACjCA,EAAM6D,EAAE1J,OAAS6F,GAAO6D,EAAE7D,KAC1B6D,EAAE1J,OAASA,GAAS0J,EAAE7D,IAAMA,KAEnC,IAiBVpK,EAAQq1L,iBAdR,SAA0BK,EAAa/wL,EAAOymC,GAY1C,OAXIsqJ,GACAA,EAAYtnJ,SAAQ,SAAUngC,GACtBA,EAAE1J,MAAQI,GAASsJ,EAAE7D,KAAOzF,EAC5BsJ,EAAE7D,KAAOghC,EAEJn9B,EAAE1J,OAASI,IAChBsJ,EAAE1J,OAAS6mC,EACXn9B,EAAE7D,KAAOghC,MAIdsqJ,I,6BCvGX90L,OAAOC,eAAeb,EAAS,aAAc,CAAEmB,OAAO,IACtDnB,EAAQg2L,cAAW,EAYnBh2L,EAAQg2L,SAHR,SAAkB/tL,GACd,OAAOA,EAAKgD,QAAQ,KAAM,O,6BCX9BrK,OAAOC,eAAeb,EAAS,aAAc,CAAEmB,OAAO,IACtDnB,EAAQi2L,aAAU,EAKlB,SAAWA,GAgBP,SAASrnJ,EAAYztC,GACjB,OAAQA,SAEa,kBAAVA,GACU,iBAAVA,GACU,iBAAVA,EAGf,SAAS+C,EAAQ/C,GACb,OAAOgD,MAAMD,QAAQ/C,GAgBzB,SAAS+0L,EAAUvsL,EAAOkC,GAEtB,GAAIlC,IAAUkC,EACV,OAAO,EAGX,GAAI+iC,EAAYjlC,IAAUilC,EAAY/iC,GAClC,OAAO,EAGX,IAAIkqI,EAAK7xI,EAAQyF,GACbq6K,EAAK9/K,EAAQ2H,GAEjB,OAAIkqI,IAAOiuC,IAIPjuC,GAAMiuC,EA8Bd,SAAwBr6K,EAAOkC,GAE3B,GAAIlC,IAAUkC,EACV,OAAO,EAGX,GAAIlC,EAAM/E,SAAWiH,EAAOjH,OACxB,OAAO,EAGX,IAAK,IAAI1E,EAAI,EAAGyB,EAAIgI,EAAM/E,OAAQ1E,EAAIyB,EAAGzB,GAAK,EAC1C,IAAKg2L,EAAUvsL,EAAMzJ,GAAI2L,EAAO3L,IAC5B,OAAO,EAIf,OAAO,EA7CIi2L,CAAexsL,EAAOkC,GAkDrC,SAAyBlC,EAAOkC,GAE5B,GAAIlC,IAAUkC,EACV,OAAO,EAIX,IAAK,IAAIpK,KAAOkI,EACZ,KAAMlI,KAAOoK,GACT,OAAO,EAKf,IAAK,IAAIpK,KAAOoK,EACZ,KAAMpK,KAAOkI,GACT,OAAO,EAKf,IAAK,IAAIlI,KAAOkI,EACZ,IAAKusL,EAAUvsL,EAAMlI,GAAMoK,EAAOpK,IAC9B,OAAO,EAIf,OAAO,EA1EA20L,CAAgBzsL,EAAOkC,IAUlC,SAASwqL,EAASl1L,GAEd,OAAIytC,EAAYztC,GACLA,EAGP+C,EAAQ/C,GA+DhB,SAAuBA,GAEnB,IADA,IAAIiD,EAAS,IAAID,MAAMhD,EAAMyD,QACpB1E,EAAI,EAAGyB,EAAIR,EAAMyD,OAAQ1E,EAAIyB,EAAGzB,GAAK,EAC1CkE,EAAOlE,GAAKm2L,EAASl1L,EAAMjB,IAE/B,OAAOkE,EAnEIkyL,CAAcn1L,GAwE7B,SAAwBA,GACpB,IAAIiD,EAAS,GAIb,OAHAxD,OAAOyR,KAAKlR,GAAOitC,SAAQ,SAAU3sC,GACjC2C,EAAO3C,GAAO40L,EAASl1L,EAAMM,OAE1B2C,EA1EAmyL,CAAep1L,GA9E1B80L,EAAQvyH,YAAc9iE,OAAO+iE,OAAO,IAIpCsyH,EAAQO,WAAa51L,OAAO+iE,OAAO,IAenCsyH,EAAQrnJ,YAAcA,EAItBqnJ,EAAQ/xL,QAAUA,EAIlB+xL,EAAQvwL,SAHR,SAAkBvE,GACd,OAAQytC,EAAYztC,KAAW+C,EAAQ/C,IAmC3C80L,EAAQC,UAAYA,EAoBpBD,EAAQI,SAAWA,EApFvB,CA8Jar2L,EAAQi2L,UAAYj2L,EAAQi2L,QAAU,M,6BCpKnDr1L,OAAOC,eAAeb,EAAS,aAAc,CAAEmB,OAAO,IACtDnB,EAAQy2L,aAAU,EAElB,SAAWA,GACP,SAASC,EAAUlyJ,GAEf,MADa,UACNA,EAAIu0E,OAAO,EADL,QACen0G,QAgEhC,SAAS+xL,EAAcC,GACnB,IAMIC,EANAC,EAAMF,EAAQ3rL,QAAQ,MAAO,IAE7BtG,GADJmyL,EAAMC,mBAAmBD,IACTpwL,QAAQ,KACpB+8B,EAAWqzJ,EAAIvwL,MAAM,EAAG5B,GACxBqyL,EAAOvzJ,EAASr3B,MAAM,KAAK,GAAGA,MAAM,KAAK,GACzCoZ,EAAOsxK,EAAIvwL,MAAM5B,EAAQ,GAIzBkyL,EAFApzJ,EAAS/8B,QAAQ,WAAa,EAEduwL,KAAKzxK,GAIL8qC,SAAS5tB,mBAAmBld,IAIhD,IADA,IAAI0xK,EAAK,IAAInkF,WAAW8jF,EAAcjyL,QAC7B1E,EAAI,EAAGA,EAAI22L,EAAcjyL,OAAQ1E,GAAK,EAC3Cg3L,EAAGh3L,GAAK22L,EAAcxmL,WAAWnQ,GAErC,OAAO,IAAIi3L,KAAK,CAACD,GAAK,CAAE1yL,KAAMwyL,IAGlC,SAASI,EAAaC,EAAMC,GACxB,IAAIC,EAAarxL,OAAOu2D,UAAU86H,WAClC,GAAIA,EAGAA,EAAWF,EAAMC,OAEhB,CAMD,IAAI9yJ,EAAMt+B,OAAOsxL,IAAIC,gBAAgBJ,GACjCK,EAAO3xL,SAASiC,cAAc,KAClC0vL,EAAK1+K,KAAOwrB,EACZkzJ,EAAKC,SAAWL,EAChBvxL,SAASwiB,KAAKlgB,YAAYqvL,GAC1BA,EAAKjpK,QACL1oB,SAASwiB,KAAKhgB,YAAYmvL,GAE1BxxL,OAAOsxL,IAAII,gBAAgBpzJ,IAgBnC,SAASgtJ,EAAUpgJ,GACf,IAAIjoC,EAAM2sB,WAAWsb,GACrB,OAAO+tB,OAAO/xB,MAAMjkC,GAAO,KAAOA,EA7HtCstL,EAAQC,UAAYA,EA6DpBD,EAAQoB,eAxDR,SAAwBrzJ,EAAKj7B,GAEzB,GAAKi7B,IAAOkyJ,EAAUlyJ,GAAtB,CAKA,IAAIszJ,EAAU,WACVvuL,EAAS,IAAItD,MAAM,yBAA2Bu+B,KAE9CkiH,EAASxgJ,OAAO6xL,WAEZ,SAAUjvJ,GACN,GAAmB,MAAfA,EAAInC,OAAgB,CACpB,IAAIqxJ,EAAS,IAAID,WACjBC,EAAOvuJ,OAAS,SAAUW,GACtB,IAAI6tJ,EAAU7tJ,EAAIz/B,OAAOvG,OACzBmF,EAAS,KAAM0uL,IAEnBD,EAAOtuJ,QAAUouJ,EACjBE,EAAOE,cAAcpvJ,EAAIpB,eAGzBowJ,KAGV,SAAUhvJ,GASR,GAAmB,MAAfA,EAAInC,OAAgB,CACpB,IAAI9M,EAAS2K,EAAIp4B,MAAM,KAAK+B,OAAS,MACtB,QAAX0rB,IACAA,EAAS,WAEb,IAAIs+J,EAAO,cAAgBt+J,EAAS,WAChCu+J,EAAQ,IAAIrlF,WAAWjqE,EAAIpB,UAC3B2wJ,EAASF,EAAOtmC,KAfT,SAAUymC,GAGrB,IAFA,IACI/3L,EAAI,GACCL,EAAI,EAAGA,EAAIo4L,EAAI1zL,OAAQ1E,GAFjB,MAGXK,EAAEkF,KAAKsK,OAAOC,aAAavJ,MAAM,KAAM6xL,EAAIC,SAASr4L,EAAGA,EAH5C,SAKf,OAAOK,EAAE0R,KAAK,IASWrL,CAASwxL,IAClC7uL,EAAS,KAAM8uL,QAGfP,KAGRhvJ,EAAM,IAAIC,eACdD,EAAIgB,aAAe5jC,OAAO6xL,WAAa,OAAS,cAChDjvJ,EAAIQ,KAAK,MAAO9E,GAAK,GACrBsE,EAAI30B,iBAAiB,QAAS2jL,GAC9BhvJ,EAAI30B,iBAAiB,QAAQ,WAAc,OAAOuyI,EAAO59G,MACzDA,EAAIxB,YAlDAzkB,YAAW,WAAc,OAAOtZ,EAAS,KAAMi7B,OA4EvDiyJ,EAAQE,cAAgBA,EAyBxBF,EAAQW,aAAeA,EAKvBX,EAAQ+B,gBAJR,SAAyB5B,EAASU,GAE9BF,EADWT,EAAcC,GACNU,IA4DvBb,EAAQgC,aA9CR,SAAsBtwG,EAAKvlF,QACP,IAAZA,IAAsBA,EAAU,IACpC,IAAImtK,EAAU,KACV2oB,EAAuB,SAAU/zL,GAIjC,OAHe,MAAXorK,IACAA,EAhBZ,SAAsB5nF,GAClB,IAAIp8E,EAAUo8E,EAAIj3E,MAAM,gDACxB,OAAInF,GAAWA,EAAQ,GACZA,EAAQ,GAAGd,QAAQ,MAAO,KAAKmB,MAAM,KAEzC,KAWWusL,CAAaxwG,IAEZ,MAAX4nF,EACOyhB,EAAUzhB,EAAQprK,IAEtB,MAEPi0L,EAAuB,SAAUC,GACjC,IAAI9sL,EAAUo8E,EAAIj3E,MAAM2nL,GACxB,OAAI9sL,GAAWA,EAAQ,GACZylL,EAAUzlL,EAAQ,IAEtB,MAEP/F,EAAIpD,EAAQ0xB,MAOhB,GANS,MAALtuB,IACAA,EAAI4yL,EAAqB,+CAEpB,MAAL5yL,IACAA,EAAI0yL,EAAqB,IAEpB,MAAL1yL,EACA,MAAM,IAAIC,MAAM,uCAEpB,IAAInC,EAAIlB,EAAQ8zB,OAOhB,GANS,MAAL5yB,IACAA,EAAI80L,EAAqB,gDAEpB,MAAL90L,IACAA,EAAI40L,EAAqB,IAEpB,MAAL50L,EACA,MAAM,IAAImC,MAAM,wCAOpB,MADc6yL,sBAJAp2J,mBAAmBylD,GAC5Bl9E,QAAQ,KAAM,OACdA,QAAQ,KAAM,QA7K3B,CAmLajL,EAAQy2L,UAAYz2L,EAAQy2L,QAAU,M,6BCtLnD,IAAInH,EAAmBrsL,MAAQA,KAAKqsL,iBAAoB,SAAUv5H,GAC9D,OAAQA,GAAOA,EAAIz0D,WAAcy0D,EAAM,CAAE,QAAWA,IAExDn1D,OAAOC,eAAeb,EAAS,aAAc,CAAEmB,OAAO,IACtDnB,EAAQ+4L,UAAO,EACf,IACIC,EADAxJ,EAAWF,EAAgB,EAAQ,KAEnC2J,EAAiB,CACjB/2D,GAAI,SAAUp6H,GACV,OAAOA,GAEXoxL,GAAI,SAAUpxL,GACV,OAAOkxL,EAAiBlxL,GAE5BqxL,GAAI,SAAUrxL,GACV,OAAOkxL,EAAiBlxL,EAAM,IAElCsxL,GAAI,SAAUtxL,GACV,OAAOkxL,EAAiBlxL,EAAM,MAElC4mL,GAAI,SAAU5mL,GACV,OAAOkxL,GAAmB,KAAOlxL,EAAO,KAE5CuxL,GAAI,SAAUvxL,GACV,OAAOkxL,GAAmB,KAAOlxL,EAAO,MAKhD,SAAWixL,GACP,SAASnjK,EAAQ0jK,EAAUC,EAAWrxK,GAClC,IAAIW,GAAM,EAAI2mK,EAAS1gH,SAAS,UAC3BrnD,IAAI,CACLD,QAAS,eACTiO,SAAU,WACV+D,MAAO,KACPtlB,KAAM,KACNogB,MAAOglK,GAAYpxK,GAAQ,IAC3BwO,OAAQ6iK,GAAarxK,GAAQ,MAE5BqL,SAASxtB,SAASwiB,MACnBs3B,EAAO,CACPvrB,MAAOzL,EAAIyL,SAAW,EACtBoC,OAAQ7N,EAAI6N,UAAY,GAG5B,OADA7N,EAAIhI,SACGg/B,EAEXk5I,EAAKnjK,QAAUA,EAWfmjK,EAAKS,KAVL,SAAc1xL,EAAKogB,GACO,MAAlB8wK,IACAA,EAAiBpjK,EAAQ,IAAK,IAAK,MAAMtB,OAE7C,IAAIwtC,EAAU55C,EAAO+wK,EAAe/wK,GAAQ,KAC5C,OAAI45C,EACOA,EAAQh6D,GAEZA,GA5Bf,CA+BU9H,EAAQ+4L,OAAS/4L,EAAQ+4L,KAAO,M,6BC5D1C,IAAIrjI,EAAmBzyD,MAAQA,KAAKyyD,kBAAqB90D,OAAOY,OAAS,SAAUb,EAAGL,EAAGq1D,EAAGC,QAC7EzwD,IAAPywD,IAAkBA,EAAKD,GAC3B/0D,OAAOC,eAAeF,EAAGi1D,EAAI,CAAE90D,YAAY,EAAMC,IAAK,WAAa,OAAOT,EAAEq1D,OAC3E,SAAUh1D,EAAGL,EAAGq1D,EAAGC,QACTzwD,IAAPywD,IAAkBA,EAAKD,GAC3Bh1D,EAAEi1D,GAAMt1D,EAAEq1D,KAEVE,EAAsB5yD,MAAQA,KAAK4yD,qBAAwBj1D,OAAOY,OAAS,SAAUb,EAAG0e,GACxFze,OAAOC,eAAeF,EAAG,UAAW,CAAEG,YAAY,EAAMK,MAAOke,KAC9D,SAAS1e,EAAG0e,GACb1e,EAAW,QAAI0e,IAEfy2C,EAAgB7yD,MAAQA,KAAK6yD,cAAiB,SAAUC,GACxD,GAAIA,GAAOA,EAAIz0D,WAAY,OAAOy0D,EAClC,IAAI3xD,EAAS,GACb,GAAW,MAAP2xD,EAAa,IAAK,IAAIJ,KAAKI,EAAe,YAANJ,GAAmB/0D,OAAOkB,UAAUC,eAAe1B,KAAK01D,EAAKJ,IAAID,EAAgBtxD,EAAQ2xD,EAAKJ,GAEtI,OADAE,EAAmBzxD,EAAQ2xD,GACpB3xD,GAEXxD,OAAOC,eAAeb,EAAS,aAAc,CAAEmB,OAAO,IACtDnB,EAAQ++H,SAAM,EACd,IAAIA,EAAMjpE,EAAa,EAAQ,MAC/B91D,EAAQ++H,IAAMA,G,6BCtBd,IAAIrpE,EAAmBzyD,MAAQA,KAAKyyD,kBAAqB90D,OAAOY,OAAS,SAAUb,EAAGL,EAAGq1D,EAAGC,QAC7EzwD,IAAPywD,IAAkBA,EAAKD,GAC3B/0D,OAAOC,eAAeF,EAAGi1D,EAAI,CAAE90D,YAAY,EAAMC,IAAK,WAAa,OAAOT,EAAEq1D,OAC3E,SAAUh1D,EAAGL,EAAGq1D,EAAGC,QACTzwD,IAAPywD,IAAkBA,EAAKD,GAC3Bh1D,EAAEi1D,GAAMt1D,EAAEq1D,KAEVqxC,EAAgB/jG,MAAQA,KAAK+jG,cAAiB,SAAS1mG,EAAGN,GAC1D,IAAK,IAAIgC,KAAK1B,EAAa,YAAN0B,GAAoBpB,OAAOkB,UAAUC,eAAe1B,KAAKL,EAASgC,IAAI0zD,EAAgB11D,EAASM,EAAG0B,IAE3HpB,OAAOC,eAAeb,EAAS,aAAc,CAAEmB,OAAO,IACtD6lG,EAAa,EAAQ,KAAWhnG,GAChCgnG,EAAa,EAAQ,KAAahnG,I,6BCkBH,IACvBy5L,EACA1tJ,EAhCRnrC,OAAOC,eAAeb,EAAS,aAAc,CAAEmB,OAAO,IACtDnB,EAAQ0hJ,qBAAuB1hJ,EAAQq7B,2BAAwB,EAC/Dr7B,EAAQq7B,sBAAwB,WAC5B,IAAI00D,EACAhkD,EAAM7lC,OAYV,GAXW,MAAP6lC,GAOW,OANXgkD,EACIhkD,EAAI1Q,uBACA0Q,EAAImgG,6BACJngG,EAAIkgG,0BACJlgG,EAAI2tJ,wBACJ3tJ,EAAIigG,2BAERj8C,EAAMA,EAAIruF,KAAKqqC,IAGZ,MAAPgkD,EAAa,CACb,IAAI4pG,EAAa,EACjB5pG,EAAM,SAAUxmF,GACZ,IAAIqwL,GAAW,IAAIrsL,MAAO83D,UACtBw0H,EAAa9uL,KAAKitB,IAAI,EAAG,IAAM4hK,EAAWD,IAC1CloL,EAAKoR,YAAW,WAChBtZ,EAASqwL,EAAWC,KACrBA,GAEH,OADAF,EAAaC,EAAWC,EACjBpoL,GAGf,OAAOs+E,EA1BqB,GA4BhC/vF,EAAQ0hJ,sBAGO,OADP31G,EAAM7lC,UAENuzL,EACI1tJ,EAAI21G,sBACA31G,EAAI+tJ,4BACJ/tJ,EAAIguJ,mCACJhuJ,EAAIiuJ,wBACJjuJ,EAAIkuJ,+BACJluJ,EAAImuJ,uBACJnuJ,EAAIouJ,8BACJpuJ,EAAIquJ,yBACJruJ,EAAIsuJ,kCAERZ,EAAMA,EAAI/3L,KAAKqqC,IAGZ,MAAP0tJ,IACAA,EAAMz6J,cAEHy6J,I,6BCjDc,IACjB5xL,EAHRjH,OAAOC,eAAeb,EAAS,aAAc,CAAEmB,OAAO,IACtDnB,EAAQs6L,oBAAiB,EACzBt6L,EAAQs6L,gBACAzyL,EAAM9B,UACFwkB,UACG,WACH1iB,EAAI0iB,UAAUzJ,SAGlB5a,OAAOq0L,aACA,WACH,IAAIhwK,EAAYrkB,OAAOq0L,eACnBhwK,IACIA,EAAUzJ,MACVyJ,EAAUzJ,QAELyJ,EAAUiwK,iBACfjwK,EAAUiwK,oBAKnB,c,6BCrBX,IAAI3V,EAAiB5hL,MAAQA,KAAK4hL,eAAkB,SAAUhnJ,EAAIgR,EAAMi2I,GACpE,GAAIA,GAA6B,IAArBp7K,UAAU9E,OAAc,IAAK,IAA4BmgL,EAAxB7kL,EAAI,EAAGC,EAAI0uC,EAAKjqC,OAAY1E,EAAIC,EAAGD,KACxE6kL,GAAQ7kL,KAAK2uC,IACRk2I,IAAIA,EAAK5gL,MAAMrC,UAAUyE,MAAMlG,KAAKwuC,EAAM,EAAG3uC,IAClD6kL,EAAG7kL,GAAK2uC,EAAK3uC,IAGrB,OAAO29B,EAAG55B,OAAO8gL,GAAM5gL,MAAMrC,UAAUyE,MAAMlG,KAAKwuC,KAEtDjuC,OAAOC,eAAeb,EAAS,aAAc,CAAEmB,OAAO,IACtDnB,EAAQy6L,UAAYz6L,EAAQiI,UAAO,EACnC,IAAIyyL,EAAW,EAAQ,KACnBC,EAAS,EAAQ,KACjBnmD,EAAS,EAAQ,KACjBomD,EAAW,EAAQ,KACnBjuF,EAAS,EAAQ,KACjBkuF,EAAa,EAAQ,KAczB,SAASC,EAAiBC,EAAUC,EAAiBp4L,GAQjD,IAPA,IAIIq4L,EAJAC,EAAMt4L,EAAQs4L,IACdC,EAAWv4L,EAAQu4L,SACnB7+E,EAAa15G,EAAQ05G,WACrB8+E,EAAc,EAEdC,EAAc,GACdC,EAAQN,EAAgBp2L,OAAS,EAC5BuF,EAAI,EAAGA,GAAKmxL,EAAOnxL,GAAK,EAAG,CAChC,IAAI2rL,EAAakF,EAAgB7wL,GAC7B45G,EAAW,KACf,GAA0B,iBAAf+xE,EAAyB,CAChC,IAAIyF,EAAkBzF,EAAWjjL,MAC7B2oL,EAASZ,EAAS97D,OAAOt9H,OAAO,QAAS+5L,GAC7CN,EAAYO,EAAO5zL,KACnB,IAAIxG,EAAI00L,EAAW10L,EACf85L,GAAO/wL,IAAMmxL,IACbl6L,GAAK85L,GAETD,EAAUxkL,YAAcrV,EAExB,IAAIq6L,EAAkBF,EAAgB79G,MAClC+9G,GACAD,EAAOr7J,SAASs7J,GAKhB74L,EAAQmzL,0BACRyF,EAAOtlL,KAAK,cAAe4/K,EAAWJ,YAAYzjL,KAAK,WAI1C9M,KADjB4+G,EAAWjuF,WAAWylK,EAAgB,iBAElCx3E,EAAWo3E,GACXp3E,GAAYA,EAAWq3E,IACvBA,EAAcr3E,QAGdm3E,GAAO/wL,IAAMmxL,IACbxF,GAAcoF,GAElBD,EAAYl1L,SAAS+kB,eAAegrK,GAAc,KAC9CqF,GAAYA,EAAWC,IACvBA,EAAcD,GAGtBJ,EAAS1yL,YAAY4yL,GAWzB,OATIG,IACAC,EAAYD,YAAcA,GAE1B9+E,EACA++E,EAAY/+E,WAAaA,EAEpB8+E,IACLC,EAAY/+E,WAA2B,IAAd8+E,GAEtBC,EAEX,IAAIK,EAAU,MACd,SAASC,EAAOC,EAAI73E,GAChB,IAAI83E,EAAY/lK,WAAW8lK,GAC3B,OAAIF,EAAQ7pL,KAAK+pL,GACNC,EAAY93E,EAEhB83E,EA+MX77L,EAAQiI,KA7KR,SAAcwB,EAAMwV,EAASrc,QACT,IAAZA,IAAsBA,EAAU,IACpCqc,EAAU07K,EAAO90F,KAAKmwF,SAAS/2K,GAC/B,IAAIi8K,EAAMt4L,EAAQs4L,IACdY,EAAWl5L,EAAQk5L,SACnBC,EAAiBn5L,EAAQo5L,mBACzBC,EAAyC,WAAnBF,GACH,WAAnBA,GACmB,QAAnBA,EAEAvmJ,EAAI5yC,EAAQ4yC,OACNrwC,IAANqwC,IACAA,EAAI/rC,EAAKvB,aAAa,MAAQ,GAGlC,IAAIg0L,EAAMt5L,EAAQmzL,yBACdL,EAAc9yL,EAAQ8yL,YACtBA,IAAgBvxL,MAAMD,QAAQwxL,KAC9BA,EAAc,CAACA,IAGnB,IAAIyG,EAAoBv5L,EAAQ05G,WAC5B8/E,EAAuC,SAAtBD,EACjB7/E,EAAa8/E,EAAiB,QAAUD,GAAqB,OACjE,EAAIxvF,EAAO7rF,OAAOrX,IAClB,EAAI+qI,EAAOt+H,MAAMzM,EAAM,CAEnB,YAAa,WAIb+d,QAASvI,GAAWrc,EAAQy5L,aAAe,KAAO,SAGtD,IAQIC,EAWA/lI,EAnBAgmI,GAAc,EAAI/nD,EAAOt+H,MAAMzM,EAAM,aACrCs6G,EAAWjuF,WAAWymK,GACrBx4E,IACDA,EAAW,IACNk4E,IAAuBvG,GAAiB6G,IACzC,EAAI/nD,EAAOt+H,MAAMzM,EAAM,YAAa,GAAKs6G,IAI7C+3E,GAEwB,iBAAbA,IACPA,EAAW,CAAEt7L,EAAGs7L,IAEpBQ,EAjKR,SAA4BzpL,EAAOpJ,GAC/B,IAAIg2H,EAAMm7D,EAAS97D,OAAOt9H,OAAOiI,GAC7BqyL,EAAWlB,EAAS97D,OAAOt9H,OAAO,YAClChB,EAAIqS,EAAMrS,EACd,GAAIA,QAA6B2E,IAAxB0N,EAAM,cAA6B,CACxC,IAAIs/B,EAAOyoJ,EAAS97D,OAAOt9H,OAAO,QAAQ0U,KAAK,IAAK1V,GAAG+yB,SAASksG,EAAIjF,QACpEshE,EAAS5lL,KAAK,aAAc,IAAMi8B,EAAK1gC,IAK3C,MAHqB,iBAAVoB,GACPipL,EAAS5lL,KAAKrD,GAEXipL,EAASl0L,KAsJI40L,CAAmBV,EAAUryL,IAG7C6yL,EAAgBv2L,SAASkjB,yBAQ7B,IALA,IACIwzK,EADArxJ,EAAS,EAETk0E,EAAQrgG,EAAQ7S,MAAM,MACtBswL,EAAe,GACfC,EAAQr9E,EAAM16G,OAAS,EAClB1E,EAAI,EAAGA,GAAKy8L,EAAOz8L,GAAK,EAAG,CAChCq2D,EAAK+lD,EACL,IAAIsgF,EAAgB,SAChB7B,GAAW,EAAIpuF,EAAOgB,kBAAkB,SACxCkvF,OAAc,EACd3+H,EAAOohD,EAAMp/G,GACjB,GAAIg+D,EACA,GAAIw3H,EAAa,CAEb,IAYIoH,GARJD,EAAc/B,EAAiBC,EAJTJ,EAAO90F,KAAK2vF,SAASt3H,EAAMw3H,EAAa,CAC1DtqJ,QAASA,EACT2qJ,yBAA0BmG,IAE4B,CACtDhB,IAAKh7L,IAAMy8L,GAASzB,EACpBC,SAAUp3E,EACVzH,WAAY8/E,EAAiB,KAAO9/E,EACpCy5E,yBAA0BmG,KAIA5/E,WAC1BwgF,GAAeV,GAAwB,IAANl8L,IACjCq2D,EAAKumI,GAEC,IAAN58L,IACAu8L,EAAuC,GAA1BI,EAAYzB,kBAIzBF,GAAOh7L,IAAMy8L,IACbz+H,GAAQg9H,GAEZH,EAAStkL,YAAcynD,MAG1B,CAID68H,EAAStkL,YAAc,IACvBmmL,GAAiB,gBACjB,IAAIG,EAAgBhC,EAASxzK,MAC7Bw1K,EAAcxoJ,YAAc,EAC5BwoJ,EAAcroJ,cAAgB,EAC1BghJ,IACAmH,EAAc,IAGlBA,GACAH,EAAaj3L,KAAKo3L,GAElB38L,EAAI,GACJ66L,EAAS5yL,aAAa,KAAMouD,IAG5Br2D,EAAI,GAAK47L,IACTf,EAAS5yL,aAAa,IAAKqtC,GAE/BulJ,EAAS1mL,UAAU2oL,QAAUJ,EAC7BN,EAAcj0L,YAAY0yL,GAC1B3vJ,GAAU8yB,EAAKt5D,OAAS,EAG5B,GAAIq3L,EACA,GAAIvG,EACAn/H,EA7JZ,SAAqB0mI,EAAWP,EAAcQ,EAAY5gF,GACtD,IAAKn4G,MAAMD,QAAQw4L,GACf,OAAO,EAEX,IAAI/6L,EAAI+6L,EAAa93L,OACrB,IAAKjD,EACD,OAAO,EAKX,IAJA,IAAIk7L,EAAcH,EAAa,GAC3BS,EAAYxB,EAAOkB,EAAYzB,YAAa8B,IAAeA,EAC3DE,EAAe,EACfC,EAAe1B,EAAOr/E,EAAY4gF,GAC7Bh9L,EAAI,EAAGA,EAAIyB,EAAGzB,GAAK,EAAG,CAG3Bk9L,GADkBzB,GADlBkB,EAAcH,EAAax8L,IACUo8G,WAAY4gF,IAAeG,EAGpE,IACI9mI,EADA+mI,EAAY3B,EAAOkB,EAAYzB,YAAa8B,IAAeA,EAE/D,OAAQD,GACJ,IAAK,SACD1mI,EAAK4mI,EAAY,EAAI,IAAOG,EAAYF,EAAe,EACvD,MACJ,IAAK,SACD7mI,GAAO,IAAO+mI,EAAaF,EAC3B,MACJ,QACA,IAAK,MACD7mI,EAAK,GAAM4mI,EAGnB,OAAO5mI,EA+HMgnI,CAAYxB,EAAgBW,EAAc34E,EAAUzH,QAExD,GAAuB,QAAnBy/E,EAELxlI,EAAK,YAEJ,CACD,IAAIinI,OAAK,EAWT,OAVIb,EAAQ,GACRa,EAAK1nK,WAAWwmF,IAAe,EAC/BkhF,GAAMb,EACDjB,EAAQ7pL,KAAKyqG,KACdkhF,GAAMz5E,IAIVy5E,EAAK,EAEDzB,GACJ,IAAK,SACDxlI,EAAK,GAAMinI,EAAK,EAAI,KACpB,MACJ,IAAK,SACDjnI,GAAMinI,EAAK,GAAM,WAOL,IAAnBzB,EACLxlI,EAAK,MAEAwlI,EACLxlI,EAAKwlI,GAILxlI,EAAK,EAEyB,MAA1B9sD,EAAKvB,aAAa,MAClBuB,EAAKtB,aAAa,IAAK,IAAMs0L,GAAc,WAGnCH,EAAc5lL,WACpBvO,aAAa,KAAMouD,GAC7B9sD,EAAKpB,YAAYi0L,IAyRrBt8L,EAAQy6L,UA/MR,SAAmBxyL,EAAM43C,EAAMxnB,EAAQz1B,QACpB,IAAXy1B,IAAqBA,EAAS,SAClB,IAAZz1B,IAAsBA,EAAU,IACpC,IAAI0xB,EAAQurB,EAAKvrB,MACboC,EAASmpB,EAAKnpB,OACd6qG,EAAc3+H,EAAQ2+H,cAAe,EAAI50B,EAAOgB,kBAAkB,OAClE8vF,GAAQ,EAAI9wF,EAAOgB,kBAAkB,QACrC0rB,GAAQ,EAAI1sB,EAAOgB,kBAAkB,SACrC+vF,EAAQ33L,SAAS+kB,eAAe,KACpC,EAAI0pH,EAAOt+H,MAAMunL,EAAOplK,GACxBolK,EAAMp1L,YAAYgxH,GAElBokE,EAAMl2K,MAAM0R,QAAU,IAOtBwkK,EAAMl2K,MAAMC,QAAU,QACtB6xG,EAAM9xG,MAAMC,QAAU,QACtB6xG,EAAMhxH,YAAYq1L,GAClBn8D,EAAYl5H,YAAYo1L,GACxB,IAAIE,EAAyC,MAA1Bp8D,EAAYj5H,WAC3Bq1L,GACA53L,SAASwiB,KAAKlgB,YAAYk5H,GAc9B,IAZA,IAOIq8D,EAEAthF,EACAuhF,EAVA3C,EAAMt4L,EAAQs4L,KAAO,KACrB/4I,EAAYv/C,EAAQu/C,WAAa,IACjC27I,EAASl7L,EAAQk7L,OAAS,IAAIlvL,OAAOhM,EAAQk7L,QAAU,UACvDC,GAAkC,IAAtBn7L,EAAQm7L,UACpBC,EAAO,GACPC,EAAgB,GAChB3+E,EAAQ,GAKRy3B,EA7GR,SAAmB9uI,EAAMk6C,EAAW+4I,EAAK4C,GACrC,IAAIrtI,EAAQ,GACRytI,EAAa,GACjB,GAAiB,MAAb/7I,EAAmB,CACnB,IAAInoB,EAAQ/xB,EAAKmE,MAAM+1C,GAEvB,GADAsO,EAAMhrD,KAAKgB,MAAMgqD,EAAOz2B,GACC,iBAAdmoB,EACP,IAAK,IAAIjiD,EAAI,EAAGC,EAAI65B,EAAMp1B,OAAS,EAAG1E,EAAIC,EAAGD,GAAK,EAC9Cg+L,EAAWz4L,KAAK08C,OAIpB,KAAIg8I,EAAOl2L,EAAKiJ,MAAM,IAAItC,OAAOuzC,EAAW,MAC5C,IAASjiD,EAAI,EAAGC,EAAI65B,EAAMp1B,OAAS,EAAG1E,EAAIC,EAAGD,GAAK,EAC9Cg+L,EAAWz4L,KAAK04L,EAAOA,EAAKj+L,GAAK,SAIxC,CACD,IAAIkiD,EAAO,GACX,IAASliD,EAAI,EAAGC,EAAI8H,EAAKrD,OAAQ1E,EAAIC,EAAGD,GAAK,EAAG,CAC5C,IAAIwzI,EAAOzrI,EAAK/H,GACH,MAATwzI,GACAjjF,EAAMhrD,KAAK28C,GACX87I,EAAWz4L,KAAK,KAChB28C,EAAO,IAEFsxF,EAAKxiI,MAAM,iBAEZkxC,EAAKx9C,SACL6rD,EAAMhrD,KAAK28C,GACX87I,EAAWz4L,KAAK,KAEpBgrD,EAAMhrD,KAAKiuI,GACXwqD,EAAWz4L,KAAK,IAChB28C,EAAO,IAGPA,GAAQsxF,EAGZtxF,EAAKx9C,QACL6rD,EAAMhrD,KAAK28C,GAInB,IAASliD,EAAI,EAAGA,EAAIuwD,EAAM7rD,OAAQ1E,GAAK,EAAG,CAEtC,IADIkiD,EAAOqO,EAAMvwD,IACRwG,QAAQw0L,IAAQ,GAAK94I,EAAKx9C,OAAS,EAAG,CAE3C,IADA,IACSuF,EAAI,EAAGwrD,GADZ37B,EAAQooB,EAAKh2C,MAAM8uL,IACGt2L,OAAS,EAAGuF,EAAIwrD,EAAGxrD,GAAK,EAC9C6vB,EAAM1vB,OAAO,EAAIH,EAAI,EAAG,EAAG+wL,GAE/B,IAAIkD,EAASpkK,EAAMvlB,QAAO,SAAU4pL,GAAQ,MAAgB,KAATA,KACnD5tI,EAAMnmD,OAAO7D,MAAMgqD,EAAOo0H,EAAc,CAAC3kL,EAAG,GAAIk+L,GAAQ,KACpDD,EAAOC,EAAO50L,KAAI,WAAc,MAAO,OACtC2E,MACL+vL,EAAW5zL,OAAO7D,MAAMy3L,EAAYrZ,EAAc,CAAC3kL,EAAG,GAAIi+L,GAAM,KAIxE,IAASj+L,EAAI,EAAGA,EAAIuwD,EAAM7rD,OAAQ1E,GAAK,EAAG,CACtC,IACIyE,GADAy9C,EAAOqO,EAAMvwD,IACA6rH,OAAO+xE,GACpBn5L,EAAQ,GAAKA,EAAQy9C,EAAKx9C,OAAS,IACnC6rD,EAAMnmD,OAAOpK,EAAG,EAAGkiD,EAAKqgE,UAAU,EAAG99G,EAAQ,GAAIy9C,EAAKqgE,UAAU99G,EAAQ,IACxEu5L,EAAW5zL,OAAOpK,EAAG,EAAG,KAGhC,MAAO,CAAEuwD,MAAOA,EAAOytI,WAAYA,GAwC1BI,CAAUr2L,EAAMrF,EAAQu/C,UAAW+4I,EAAK4C,GAASrtI,EAAQsmF,EAAGtmF,MAAOytI,EAAannD,EAAGmnD,WACnFK,EAAY,EAAGC,EAAY,EAAGC,EAAYhuI,EAAM7rD,OAAQ25L,EAAYE,EAAWF,GAAa,EAAG,CACpG,IAAIn8I,EAAOqO,EAAM8tI,GAEjB,GAAKn8I,EAIL,GAAIA,IAAS84I,EAAb,CAcA,GAPwB,MAApB57E,EAAMk/E,IACNX,EAAmBK,EAAWK,EAAY,IAAM,GAChDb,EAAMl4K,KAAO,GAAK85F,EAAMk/E,GAAaX,EAAmBz7I,GAGxDs7I,EAAMl4K,KAAO48B,EAEbi3E,EAAMqlE,yBAA2BpqK,EAEjCgrF,EAAMk/E,GAAad,EAAMl4K,KACzBy4K,EAAcO,GAAaN,EAAWK,GAElCX,IACAI,EAAKQ,IAAa,EAClBA,GAAa,EACbZ,EAAY,OAGf,CACD,GAAIG,GAEA,IAAKz+E,EAAMk/E,IAAcZ,EAAW,CAChC,IAAIe,IAAgBf,EAChBgB,EAA8B,IAAhBx8I,EAAKx9C,OAEvB,GADAg5L,EAAYx7I,EAAKx9C,OAAS,EACtB+5L,GAAeC,EAAa,CAE5B,GAAIA,EAAa,CACb,IAAKt/E,EAAMk/E,GAAY,CAEnBl/E,EAAQ,GACR,MAKJ7uD,EAAMnmD,OAAOi0L,EAAW,EAAGn8I,EAAOqO,EAAM8tI,EAAY,IACpDL,EAAW5zL,OAAOi0L,EAAY,EAAG,GACjCP,EAAKQ,IAAa,EAClBA,GAAa,EACbC,GAAa,EACbF,GAAa,EACb,SAGJ9tI,EAAM8tI,GAAan8I,EAAKqgE,UAAU,EAAGm7E,GACrCntI,EAAM8tI,EAAY,GACdn8I,EAAKqgE,UAAUm7E,GAAantI,EAAM8tI,EAAY,QAIlD9tI,EAAMnmD,OAAOi0L,EAAW,EAAGn8I,EAAKqgE,UAAU,EAAGm7E,GAAYx7I,EAAKqgE,UAAUm7E,IACxEM,EAAW5zL,OAAOi0L,EAAW,EAAG,IAChCE,GAAa,EAETD,IAAcR,EAAKQ,EAAY,KAC/BA,GAAa,GAGrBD,GAAa,EACb,eAGH,IAAKj/E,EAAMk/E,GAAY,CACxBl/E,EAAMk/E,GAAap8I,EACnB47I,EAAKQ,IAAa,EAClBA,GAAa,EACb,SAEJA,GAAa,EACbD,GAAa,EAGjB,GAAc,MAAV7nK,EAAgB,CAEhB,GAAkB,MAAd4lF,EAAoB,CACpB,IAAIuiF,OAEF,EAaFviF,GAVIuiF,EADsB,SAAtBxmK,EAAOikF,WACO,CAAEn7G,MAAO,IAAK+mB,KAAM,MAGpBwyK,EAAS5nD,UAAUohD,gBAAgB77J,EAAOikF,WAAY,CAChE,QACE,CACFn7G,MAAO,EACP+mB,KAAM,OAGW/mB,MACA,OAArB09L,EAAY32K,OACR2yK,EAAWhxE,SAASe,WACpBtO,GAAc+c,EAAMwG,UAAUnpG,OAG9B4lF,GAAcmhF,EAAM59D,UAAUnpG,QAI1C,GAAI4lF,EAAagD,EAAM16G,OAAS8xB,EAAQ,CAEpC,IAAIooK,EAAgB/zL,KAAKq4C,MAAM1sB,EAAS4lF,GAAc,EAClDyiF,EAAWz/E,EAAMw/E,GACjBE,EAAe1/E,EAAMw/E,EAAgB,GAEzC,GADAx/E,EAAMh1G,OAAOw0L,EAAgB,GACb,MAAZC,EACA,MAGJ,IAAIt9E,EAAW7+G,EAAQ6+G,SACvB,IAAKA,EACD,MAEoB,iBAAbA,IACPA,EAAW,KAEf,IAAIw9E,EAAeF,EACfC,GAAgBjB,IAChBkB,GAAgBpB,EAAmBmB,GAEvC,IAAIE,EAAgBD,EAAar6L,OAC7Bu6L,OAAgB,EAChBC,OAAW,EACf,EAAG,CAWC,GAVAA,EAAWH,EAAaC,GACxBC,EAAgBF,EAAax8E,UAAU,EAAGy8E,GACrCE,EAGIA,EAASluL,MAAMixC,KACpBg9I,GAAiBC,GAHjBD,GAAiBlB,EAAca,GAKnCK,GAAiB19E,EACjBi8E,EAAMl4K,KAAO25K,EACT9lE,EAAMqlE,yBAA2BpqK,EAAO,CACxCgrF,EAAMw/E,GAAiBK,EACvB,MAEJD,GAAiB,QACZA,GAAiB,GAC1B,aApJJlB,EAAKQ,IAAa,EAGlBl/E,EADAk/E,GAAa,GACM,GA2J3B,OANIb,GACA,EAAIhxF,EAAO9rF,QAAQ0gH,IAGnB,EAAI50B,EAAO9rF,QAAQ48K,GAEhBn+E,EAAMrtG,KAAKipL,K,6BCrkBtBt6L,OAAOC,eAAeb,EAAS,aAAc,CAAEmB,OAAO,IACtDnB,EAAQ8/H,uBAAyB9/H,EAAQ8nB,MAAQ9nB,EAAQw2D,OAASx2D,EAAQq2D,UAAYr2D,EAAQy2C,eAAY,EAC1G,IAAIgnB,EAAa,EAAQ,KACrB+2E,EAAS,EAAQ,KACjB6qD,EAAS,EAAQ,KACjBxoD,EAAW,EAAQ,KAiDvB,SAAS/uH,EAAMre,EAAMktD,EAAIC,GACrB,IAAI0oI,GAAgB,EAAI9qD,EAAOt+H,MAAMzM,EAAM,aACvCgtC,GAAY,EAAIogG,EAAS5V,sBAAsBq+D,GACnD,GAAU,MAAN3oI,EACA,OAAOlgB,EAAU3uB,MAErB8uC,EAAW,MAANA,EAAaD,EAAKC,EAEvB0oI,GADAA,EAAgB7oJ,EAAUlyB,KACItZ,QAAQ,kBAAmB,IAAIoiC,OAC7D,IAAIkyJ,EAAW,SAAW5oI,EAAK,IAAMC,EAAK,IAC1CntD,EAAKtB,aAAa,aAAcm3L,EAAgB,IAAMC,GAAUlyJ,QA7CpErtC,EAAQy2C,UAbR,SAAmBhtC,EAAM4wD,EAAQz3D,GAE7B,QADgB,IAAZA,IAAsBA,EAAU,IACtB,MAAVy3D,EACA,OAAO,EAAIw8E,EAAS1V,0BAAyB,EAAIqT,EAAOt+H,MAAMzM,EAAM,cAExE,GAAI7G,EAAQ48L,SACR/1L,EAAKtB,aAAa,aAAa,EAAI0uI,EAAS3V,yBAAyB7mE,QADzE,CAIA,IAAIolI,EAAgBh2L,EAAKgtC,UACrBipJ,GAAe,EAAI7oD,EAASzV,oBAAoB/mE,GACpDolI,EAAczC,QAAQ2C,WAAWD,KAoBrC1/L,EAAQq2D,UAjBR,SAAmB5sD,EAAMm0D,EAAIC,EAAIj7D,QAClB,IAAPi7D,IAAiBA,EAAK,QACV,IAAZj7D,IAAsBA,EAAU,IACpC,IAAI08L,GAAgB,EAAI9qD,EAAOt+H,MAAMzM,EAAM,aACvCgtC,GAAY,EAAIogG,EAAS5V,sBAAsBq+D,GACnD,GAAU,MAAN1hI,EACA,OAAOnnB,EAAUisF,YAGrB48D,GADAA,EAAgB7oJ,EAAUlyB,KACItZ,QAAQ,sBAAuB,IAAIoiC,OACjE,IAEIuyJ,EAAe,cAFPh9L,EAAQ48L,SAAW5hI,EAAKnnB,EAAUisF,YAAY9kE,GAAKA,GAErB,KAD9Bh7D,EAAQ48L,SAAW3hI,EAAKpnB,EAAUisF,YAAY7kE,GAAKA,GACP,IAGxDp0D,EAAKtB,aAAa,aAAcy3L,EAAe,IAAMN,GAAejyJ,SAkBxErtC,EAAQw2D,OAfR,SAAgB/sD,EAAMkuD,EAAOsoC,EAAIC,EAAIt9F,QACjB,IAAZA,IAAsBA,EAAU,IACpC,IAAI08L,GAAgB,EAAI9qD,EAAOt+H,MAAMzM,EAAM,aACvCgtC,GAAY,EAAIogG,EAAS5V,sBAAsBq+D,GACnD,GAAa,MAAT3nI,EACA,OAAOlhB,EAAU6rF,SAGrBg9D,GADAA,EAAgB7oJ,EAAUlyB,KACItZ,QAAQ,mBAAoB,IAAIoiC,OAC9DsqB,GAAS,IACT,IAEIkoI,EAAY,WAFDj9L,EAAQ48L,SAAW7nI,EAAQlhB,EAAU6rF,SAAS3qE,MAAQA,IAC/C,MAANsoC,GAAoB,MAANC,EAAa,IAAMD,EAAK,IAAMC,EAAK,IACd,IACnDz2F,EAAKtB,aAAa,aAAcm3L,EAAgB,IAAMO,GAAWxyJ,SAerErtC,EAAQ8nB,MAAQA,EAoChB9nB,EAAQ8/H,uBAnCR,SAAgCr2H,EAAMgsB,EAAUgoB,EAAW9yC,GACvD,IAAI2vB,EAAMmjC,EAAWzH,MAAMx0D,OAAOi0B,GAC9BqhC,EAAM2G,EAAWzH,MAAMx0D,OAAOi8C,GAC7B9yC,IAEDA,EADUlB,aAAgB21H,cAAgB31H,EAAOA,EAAKilG,iBAQ1D,IAAIzsG,EAAI6lB,EAAMre,GACdA,EAAKtB,aAAa,YAAa,IAC/B,IAAIq2D,GAAO,EAAI6gI,EAAOx/D,SAASp2H,EAAM,CAAEkB,OAAQA,IAAUmd,MAAM7lB,EAAE00D,GAAI10D,EAAE20D,IAEnEkpI,GAAoB,EAAIjpD,EAASzV,sBACrC0+D,EAAkBC,cAAcvhI,EAAKhpB,EAAIgpB,EAAKlqC,MAAQ,GAAIkqC,EAAK/oB,EAAI+oB,EAAK9nC,OAAS,GAEjF,IAAIspK,GAAqB,EAAInpD,EAASzV,sBAClCzpE,EAAQr9B,EAAIg9B,aAAaR,EAAKx8B,EAAI5vB,QAAQ2rD,UAAU,EAAG,IACvDsB,GACAqoI,EAAmBrnD,UAAUhhF,EAAO,EAAG,GAG3C,IAAIsoI,GAAsB,EAAIppD,EAASzV,sBACnC8+D,EAAgB5lK,EAAI5vB,QAAQkuD,KAAK9B,EAAK0H,EAAKlqC,MAAQ,GACvD2rK,EAAoBF,aAAa,EAAIzlK,EAAIkb,EAAI0qJ,EAAc1qJ,EAAG,EAAIlb,EAAImb,EAAIyqJ,EAAczqJ,GAExF,IAAIosF,GAAM,EAAIw9D,EAAOngE,uBAAuBz1H,EAAMkB,GAE9C8rC,GAAY,EAAIogG,EAASzV,sBAC7B3qF,EAAU0pJ,UAAUF,EAAoB5lI,OAAO/N,SAAS0zI,EAAmB3lI,OAAO/N,SAASwzI,EAAkBzlI,OAAO/N,SAASu1E,EAAI/5G,MAAM7lB,EAAE00D,GAAI10D,EAAE20D,QAC/IntD,EAAKtB,aAAa,aAAa,EAAI0uI,EAAS3V,yBAAyBzqF,EAAU4jB,W,6BCpGnF,IAAIi1H,EAAmBrsL,MAAQA,KAAKqsL,iBAAoB,SAAUv5H,GAC9D,OAAQA,GAAOA,EAAIz0D,WAAcy0D,EAAM,CAAE,QAAWA,IAExDn1D,OAAOC,eAAeb,EAAS,aAAc,CAAEmB,OAAO,IACtDnB,EAAQogM,sBAAmB,EAC3B,IAAI5Q,EAAWF,EAAgB,EAAQ,KACnCuL,EAAa,EAAQ,KACrBuF,EAAkC,WAClC,SAASA,EAAiBz1L,EAAQ01L,EAAiBC,GAC/Cr9L,KAAKs9L,iBAAmB,EACxBt9L,KAAKquI,OAAS,EACdruI,KAAKsuI,OAAS,EACdtuI,KAAKwoH,UAAYovE,EAAWhxE,SAAS2B,iBAAiB,SAChD,QACA,aACNvoH,KAAK0H,OAASA,EACd1H,KAAKo9L,gBAAkBA,EACvBp9L,KAAKq9L,aAAeA,EACpBr9L,KAAKu9L,QAAUv9L,KAAKu9L,QAAQ9+L,KAAKuB,MACjCA,KAAKw9L,SAAWx9L,KAAKw9L,SAAS/+L,KAAKuB,MA6CvC,OA3CAm9L,EAAiBt+L,UAAU4+L,OAAS,WAC5B7F,EAAWhxE,SAASoB,gBACpBhoH,KAAK0H,OAAOwJ,iBAAiBlR,KAAKwoH,UAAWxoH,KAAKu9L,QAAS,CACvDpvH,SAAS,KAIb,EAAIo+G,EAAS1gH,SAAS7rE,KAAK0H,QAAQ0gB,GAAG,aAAcpoB,KAAKu9L,UAGjEJ,EAAiBt+L,UAAUif,QAAU,WAC7B85K,EAAWhxE,SAASoB,gBACpBhoH,KAAK0H,OAAOmZ,oBAAoB7gB,KAAKwoH,UAAWxoH,KAAKu9L,UAGrD,EAAIhR,EAAS1gH,SAAS7rE,KAAK0H,QAAQ+gB,IAAI,eAG/C00K,EAAiBt+L,UAAU0+L,QAAU,SAAU1vL,GAC3C,IAOI6vL,EAPAvqI,EAAQnzD,MACa,MAArBA,KAAKq9L,cAAyBr9L,KAAKq9L,aAAaxvL,MAGpD7N,KAAKquI,QAAUxgI,EAAEwgI,OACjBruI,KAAKsuI,QAAUzgI,EAAEygI,OACjBzgI,EAAEob,iBAEkB,IAAhBjpB,KAAKquI,QAAgC,IAAhBruI,KAAKsuI,SAC1BzgI,EAAEkb,kBACF20K,GAAU,IAEE,IAAZA,GAA8C,IAA1B19L,KAAKs9L,mBACzBt9L,KAAKs9L,iBAAmBllK,uBAAsB,WAC1C+6B,EAAMqqI,SAAS3vL,SAI3BsvL,EAAiBt+L,UAAU2+L,SAAW,SAAU3vL,GAC5C7N,KAAKs9L,iBAAmB,EACxBt9L,KAAKo9L,gBAAgBvvL,EAAG7N,KAAKquI,OAAQruI,KAAKsuI,QAC1CtuI,KAAKquI,OAAS,EACdruI,KAAKsuI,OAAS,GAEX6uD,EAzD0B,GA2DrCpgM,EAAQogM,iBAAmBA,G,6BClE3Bx/L,OAAOC,eAAeb,EAAS,aAAc,CAAEmB,OAAO,IACtDnB,EAAQsgI,cAAgBtgI,EAAQ4gM,aAAe5gM,EAAQg/H,cAAW,EAClE,IAAI47D,EAAW,EAAQ,KAOvB56L,EAAQg/H,SAAW47D,EAAS97D,OAAOE,SAOnCh/H,EAAQ4gM,aAAehG,EAAS97D,OAAOt9H,OAOvCxB,EAAQsgI,cAAgBs6D,EAAS97D,OAAOwB,e,6BCvBxC1/H,OAAOC,eAAeb,EAAS,aAAc,CAAEmB,OAAO,IACtDnB,EAAQ6gM,gBAAa,EACrB,IAAIC,EAAY,EAAQ,MAExB,SAAWD,GACP,IAAIvuL,EAAQ,IAAImxD,QAChB,SAAS1iE,EAAI05H,GACT,IAAIsmE,EAASzuL,EAAMvR,IAAI05H,GACvB,OAAIsmE,IAGJA,GAAS,EAAID,EAAUE,cAAcvmE,GACrCnoH,EAAMiT,IAAIk1G,EAASsmE,GACZA,GAMXF,EAAWn/L,KAAO,SAAU+4H,EAASlrF,GACjC,IAAIwxJ,EAAShgM,EAAI05H,GAEjB,OADAsmE,EAAOr/L,KAAK6tC,GACL,WAAc,OAAOwxJ,EAAOt0J,OAAO8C,KAE9CsxJ,EAAW/kI,MAAQ,SAAU2+D,IAT7B,SAAgBsmE,GACZA,EAAOrmH,UACPpoE,EAAM+zE,OAAO06G,EAAOtmE,SASpB55G,CADa9f,EAAI05H,KArBzB,CAwBgBz6H,EAAQ6gM,aAAe7gM,EAAQ6gM,WAAa,M,6BC5B5DjgM,OAAOC,eAAeb,EAAS,aAAc,CAAEmB,OAAO,IACtDnB,EAAQghM,kBAAe,EACvB,IAAIvL,EAAW,EAAQ,KACnBwL,EAAa,EAAQ,KACzBjhM,EAAQghM,aAAyC,oBAAnB11C,eACxB21C,EAAWD,aACXvL,EAASuL,c,6BCNfpgM,OAAOC,eAAeb,EAAS,aAAc,CAAEmB,OAAO,IACtDnB,EAAQghM,kBAAe,EACvB,IAAIzd,EAAS,EAAQ,KAqErBvjL,EAAQghM,aApER,SAAsBvmE,GAClB,IAAIsmE,EAAS,KACThpH,EAAY,GA4BZ5rD,GAAU,EAAIo3J,EAAOn/H,WAAU,WAC/B2zB,EAAU3pC,SAAQ,SAAUs8H,GAAY,OAAOA,EAASjwC,SAUxD//C,EAAU,WACNqmH,GAAUA,EAAOz4L,aACby4L,EAAO/hL,iBACP+hL,EAAO/hL,gBAAgB/K,YAAY6P,oBAAoB,SAAUqI,GAErE40K,EAAOz4L,WAAWC,YAAYw4L,GAC9BA,EAAS,KACThpH,EAAY,KAapB,MAAO,CACH0iD,QAASA,EACT/4H,KA9BO,SAAUgpK,GACZq2B,IACDA,EAhCK,WACkC,WAAvC/sK,iBAAiBymG,GAAShlG,WACdglG,EAAQlzG,MACdkO,SAAW,YAErB,IAAIvuB,EAAMnB,SAASiC,cAAc,UAoBjC,OAnBAd,EAAIuiC,OAAS,WACTviC,EAAI8X,gBAAgB/K,YAAYE,iBAAiB,SAAUgY,GAC3DA,KAEJjlB,EAAIqgB,MAAMC,QAAU,QACpBtgB,EAAIqgB,MAAMkO,SAAW,WACrBvuB,EAAIqgB,MAAMrT,IAAM,IAChBhN,EAAIqgB,MAAMiS,KAAO,IACjBtyB,EAAIqgB,MAAMmP,OAAS,OACnBxvB,EAAIqgB,MAAM+M,MAAQ,OAClBptB,EAAIqgB,MAAM8V,SAAW,SACrBn2B,EAAIqgB,MAAM25K,cAAgB,OAC1Bh6L,EAAIqgB,MAAMw0J,OAAS,KACnB70K,EAAIqgB,MAAM0R,QAAU,IACpB/xB,EAAIiB,aAAa,WAAY,MAC7BjB,EAAI1C,KAAO,YACXi2H,EAAQpyH,YAAYnB,GAEpBA,EAAIse,KAAO,cACJte,EAOM1F,KAEwB,IAAjCu2E,EAAUrxE,QAAQgkK,IAClB3yF,EAAUtyE,KAAKilK,IA0BnBhwF,QAASA,EACTjuC,OAdS,SAAUi+H,GACnB,IAAIpyJ,EAAMy/D,EAAUrxE,QAAQgkK,IACf,IAATpyJ,GACAy/D,EAAUztE,OAAOgO,EAAK,GAGD,IAArBy/D,EAAUnzE,QAAgBm8L,GAC1BrmH,Q,6BC7DZ95E,OAAOC,eAAeb,EAAS,aAAc,CAAEmB,OAAO,IACtDnB,EAAQghM,kBAAe,EACvB,IAAIzd,EAAS,EAAQ,KA+CrBvjL,EAAQghM,aA9CR,SAAsBvmE,GAClB,IAAIsmE,EAAS,KACThpH,EAAY,GACZ5rD,GAAU,EAAIo3J,EAAOn/H,WAAU,WAC/B2zB,EAAU3pC,SAAQ,SAAUs8H,GACxBA,EAASjwC,SAiBb//C,EAAU,WACNqmH,IACAA,EAAOn4C,aACP7wE,EAAY,GACZgpH,EAAS,OAajB,MAAO,CACHtmE,QAASA,EACT/4H,KA3BO,SAAUgpK,GANR,IACLzoK,EAMC8+L,KAND9+L,EAAI,IAAIqpJ,eAAen/H,IACzBo/C,QAAQkvD,GACVtuG,IAKI40K,EAJG9+L,IAM8B,IAAjC81E,EAAUrxE,QAAQgkK,IAClB3yF,EAAUtyE,KAAKilK,IAuBnBhwF,QAASA,EACTjuC,OAdS,SAAUi+H,GACnB,IAAIpyJ,EAAMy/D,EAAUrxE,QAAQgkK,IACf,IAATpyJ,GACAy/D,EAAUztE,OAAOgO,EAAK,GAGD,IAArBy/D,EAAUnzE,QAAgBm8L,GAC1BrmH,Q,6BCvCZ95E,OAAOC,eAAeb,EAAS,aAAc,CAAEmB,OAAO,IACtDnB,EAAQmhM,eAAY,EAEpB,SAAWA,GACP,IAAI3gL,EAAQ,GAER0H,EAAO,GACPk5K,EAAW,EACX/7H,EAAU,WAAc,OAAOY,YAAYh3C,OAC3CoyK,EAAO,SAAU7gL,GAAS,OAAOA,EAAM,IACvC2a,EAAW,SAAUoU,GAAM,OAAyB,IAAlBrnB,EAAKziB,KAAK8pC,IAAa8xI,KACzDA,EAAc,WACd,IAAI9xI,EAAK,WAAc,OAAOrnB,EAAK5d,OAAO,EAAG4d,EAAKtjB,QAAQwpC,SAAQ,SAAU7tC,GAAK,OAAOA,QACxF,GAA8B,oBAAnBohL,eAAgC,CACvC,IAAI5qC,EAAK,IAAI4qC,eAAkBC,EAAQ7qC,EAAG6qC,MAAO0f,EAAUvqD,EAAG8qC,MAE9D,OADAD,EAAMH,UAAYlyI,EACX,WAAc,OAAO+xJ,EAAQjgB,YAAY,OAEpD,OAAO,WAAc,OAAOx+J,WAAW0sB,IAPzB,GASdgyJ,EAAY,WACZH,EAAW/7H,IAhBC,IAAO,GAkBnB,IADA,IAAIm8H,EAAMH,EAAK7gL,GACRghL,IAAQL,EAAUM,eAAe,CACpC,IAAIl4L,EAAWi4L,EAAIj4L,SAAUic,EAAOg8K,EAAIh8K,KACxCg8K,EAAIj4L,SAAW,KACf,IAAIqH,EAAOrH,GAAYA,EAASic,GAC5B5U,EACA4wL,EAAIj4L,SAAWqH,EAGf4P,EAAMhO,QAEVgvL,EAAMH,EAAK7gL,GAEfghL,GAAOrmK,EAASomK,IAEpBJ,EAAUO,aAAe,SAAUn4L,EAAUic,GACzC,IAAIs8J,EAAO,CACPv4K,SAAUA,EACVic,KAAMA,GAEVhF,EAAM/a,KAAKq8K,GACX3mJ,EAASomK,IAEbJ,EAAUM,YAAc,WACpB,IAAI1qD,EAAI7/D,EACR,OAAwF,QAA9EA,EAA0B,QAApB6/D,EAAKt6E,iBAA8B,IAAPs6E,OAAgB,EAASA,EAAG4qD,kBAA+B,IAAPzqH,OAAgB,EAASA,EAAG0qH,mBAAqBv8H,KAAa+7H,GA5CtK,CA8CephM,EAAQmhM,YAAcnhM,EAAQmhM,UAAY,M,6BClDzD,Q,6BCAA,Q,6BCAA,Q,6BCAA,Q,6BCAA,Q,6BCAA,Q,6BCAA,Q,6BCAA,Q,6BCAA,Q,6BCAA,Q,6BCAA,Q,6BCAA,Q,6BCAA,Q,6BCAA,Q,6BCAA,Q,6BCAA,Q,6BCAA,Q,6BCAA,Q,6BCAA,Q,6BCAA,Q,uzfCCA,ICDgM,EDChM,CACI1gM,KAAM,OACN+kB,KAFJ,WAGQ,MAAO,CACH1d,IAAK,UAGb1F,OAPJ,SAOA,GACQ,OACR,qB,OEQe,EAXC,YACd,OAREA,OAAQC,GAWV,EACA,KACA,KACA,M,QCZFw/L,EAAKn7G,QAAU,SAASrE,GACpBA,EAAIlG,UAAU0lH,EAAKphM,KAAMohM,IAGdA,QCNyL,ECCxM,CACIphM,KAAM,eACNmuB,MAAO,CACHne,SAAU,CACNjM,KAAMoqE,QACNE,SAAS,GAEbgzH,QAAS/xL,QAEb2+B,QAAS,CACLqzJ,QADR,SACA,GACY9+L,KAAKq7E,MAAM,QAASxtE,KAG5B1O,OAdJ,SAcA,GACQ,IAAR,sBAGQ,OAFAa,KAAK6+L,UAAYv6K,EAAMyqG,gBAAkB/uH,KAAK6+L,SAGtD,EAAY,UACIpkH,MAAhB,gBADA,UAEA,cAFA,OAGA,wBACgBn2D,MAAhB,GAJY,CAKZ,wBCNe,G,OAXC,YACd,OATE,OAAQ,GAYV,EACA,KACA,KACA,M,SCf2M,ECC7M,CACI9mB,KAAM,oBACN2B,OAFJ,SAEA,GACQ,OACR,EAAY,OAAZ,6BAAY,CACZ,wBCae,G,OAXC,YACd,OATE,OAAQ,GAYV,EACA,KACA,KACA,M,SCZF,CAAC4/L,EAAcC,GAAmB7zJ,SAAQ,SAAAhnC,GACtCA,EAAKs/E,QAAU,SAAArE,GACXA,EAAIlG,UAAU/0E,EAAK3G,KAAM2G,OAIlB,OACX46L,eACAC,qB,SCTW,GACXz8K,KADW,WAEP,MAAO,CACH08K,SAAU,KACVC,cAAc,KACdC,iBAAiB,OAGzB1zJ,QAAS,CACL2zJ,aADK,WACU,WACPxkD,EAAS56I,KAAKk/L,cACd1kJ,EAAYx6C,KAAKm/L,iBACjBn/L,KAAKi/L,UACLj/L,KAAKi/L,SAASxnH,UAElBz3E,KAAKi/L,SAAW,IAAIt7C,IAAOnpG,EAAWogG,EAAQ,CAC1CS,UAAW,eACXiC,SAAU,SAAC+hD,GACP,EAAKC,aAAaD,IAEtB5nE,SAAS,SAAC4nE,GACN,EAAKE,aAAaF,OAI9BG,cAjBK,WAkBGx/L,KAAKi/L,UACLj/L,KAAKi/L,SAASxnH,WAGtB6nH,aAtBK,aAyBLC,aAzBK,cA4BTE,cApCW,WAqCPz/L,KAAKw/L,kBClCTE,SACAC,EAAW,GACXC,EAAS,EAgBb,SAASC,EAAanwL,EAAI+nC,EAAS4vB,GAC/B,OAAO,WAA8C,IAA9BgpF,EAA8B,uDAApB,GAAIG,EAAgB,uDAAJ,GAExCnpF,GACAgpF,EAAQ3oJ,QACR8oJ,EAAU9oJ,SACXgI,EAAGrF,SAASmmJ,EAAU9oJ,UACtBgI,EAAGrF,SAASgmJ,EAAQ3oJ,SACpBgI,IAAO2gJ,EAAQ3oJ,SAIf2/D,EAAMtnE,QAAQm/L,gBACb73H,EAAMtnE,QAAQm/L,cAAc70L,SAASmmJ,EAAU9oJ,SAC5C2/D,EAAMtnE,QAAQm/L,cAAc70L,SAASgmJ,EAAQ3oJ,WAIjDgI,EAjCI,oBAiCQotE,YAAczV,EAAMtnE,QAAQ2P,EAjCpC,oBAiCgDotE,YACpDzV,EAAMtnE,QAAQ2P,EAlCV,oBAkCsBotE,YAAYuzE,EAASG,GAE/C9gJ,EApCI,oBAoCQxR,OAASwR,EApCjB,oBAoC6BxR,MAAMmyJ,EAASG,MAlC5D1tJ,SAASoO,iBAAiB,aAAa,SAAArD,GAAO6xL,EAAY7xL,KAC1D/K,SAASoO,iBAAiB,WAAW,SAAArD,GACjC8xL,EAASx0J,SAAQ,SAAAxmC,GACbA,EALQ,oBAKMm7L,cAAcjyL,EAAG6xL,SAqCxB,OACXjhM,KADW,SACNiR,EAAI+nC,EAAS4vB,GACds4H,EAASn9L,KAAKkN,GACd,IAAMlB,EAAKoxL,IACXlwL,EA9CQ,oBA8CM,CACVlB,KACAsxL,cAAeD,EAAanwL,EAAI+nC,EAAS4vB,GACzCyV,WAAYrlC,EAAQqlC,WACpB5+E,MAAOu5C,EAAQv5C,QAIvButD,OAZW,SAYJ/7C,EAAI+nC,EAAS4vB,GAChB33D,EAvDQ,oBAuDIowL,cAAgBD,EAAanwL,EAAI+nC,EAAS4vB,GACtD33D,EAxDQ,oBAwDIotE,WAAarlC,EAAQqlC,WACjCptE,EAzDQ,oBAyDIxR,MAAQu5C,EAAQv5C,OAGhCsrC,OAlBW,SAkBJ95B,GACHiwL,EAASx0J,SAAQ,SAAUxmC,EAAM1H,GAC7B,GAAI0H,EAAK6J,KAAOkB,EA9DZ,oBA8DwBlB,GAExB,OADAmxL,EAASt4L,OAAOpK,EAAG,IACZ,O,SCxE4K,ECEnM,CACEO,KAAM,UACN2B,OAFF,SAEA,GACI,OACJ,QACA,8BAAM,OAAN,oDAIE8qE,OAAQ,CAAC,oBAAqB,qBAC9Bt+C,MAAO,CACL2tD,MAAO,CACL/3E,KAAML,QAGVgpE,QAAS,WACP,MAAO,CACL4mF,cAAe9wJ,OAGnBm/E,WAAY,CACV6xE,YAAJ,WAEEzuI,KAAM,WACJ,MAAO,CACLsuI,cAAe,OAGnBplH,QAAS,CACPylH,aAAc,SAAlB,GACqB,KAAX/sJ,EAAKqK,KACPxO,KAAK6wJ,cAAgB1sJ,GAEvBnE,KAAK4wJ,kBAAkBmvC,uBAAuB57L,MCjBrC,EAXC,YACd,OARE,OAAQ,GAWV,EACA,KACA,KACA,M,QC0LF,SAAS67L,IAAT,WACE,OAAOC,OACT,oEACA,qBACI,EAAJ,qCAEA,kBACI,QAAJ,UAQA,SAASC,EAAmB1hM,GAA5B,WACE,OAAOyhM,OACT,0DACA,qBACI,EAAJ,uBAEA,kBACI,QAAJ,cASA,SAASE,EAAkB59K,EAAMqB,GAC1B5jB,KAAKogM,UACRC,EAAYjjM,KAAK4C,KAAMuiB,GAGzB,IAAI8zB,EAAYr2C,KAAKogM,SAASnlL,SAAStZ,OAAS,EAIhD,GAHI00C,EAAY,GAA6C,KAAxCr2C,KAAKogM,SAASnlL,SAASo7B,GAAW7nC,IACrDxO,KAAKogM,SAASnlL,SAAS5T,OAAOgvC,EAAW,GAEtC9zB,GAAuB,GAAfA,EAAK5gB,OAAlB,CAIA2+L,EAAaljM,KAAK4C,KAAMA,KAAKogM,SAAU79K,GACvCg+K,GAAanjM,KAAK4C,KAAMA,KAAKogM,SAASnlL,UAEtC,IAAIulL,EAAY58K,EAAsB,GAAd5jB,KAAKmoC,OAG7B,GAFAnoC,KAAKygM,SAAWzgM,KAAKogM,SAASnlL,SAE1BulL,EAAY,EAAG,CACjB,IAAIE,EAAO,CACTzlL,SAAU,GACV0lL,YAAaV,OAAOW,SAAS,IAAIt2L,KAAQ,uBACzCkE,GAAI,IACJqyL,SAAU,IACVvvC,SAAU2uC,OAAOa,WACvB,oDACA,kBAEMC,SAAU,EACVC,UAAWhhM,KAAKogM,SAAS5xL,IAE3BxO,KAAKygM,SAASj+L,KAAKk+L,KAQvB,SAASO,EAAwB1+K,GAAjC,WACOviB,KAAKogM,UACRC,EAAYjjM,KAAK4C,KAAMuiB,GAEpBviB,KAAK2wJ,aACR3wJ,KAAKkhM,YAAclhM,KAAKygM,UAE1BzgM,KAAKogM,SAASnlL,SAAW,GACzBqlL,EAAaljM,KAAK4C,KAAMA,KAAKogM,SAAU79K,GACvCg+K,GAAanjM,KAAK4C,KAAMA,KAAKogM,SAASnlL,UACtCjb,KAAKygM,SAAWzgM,KAAKogM,SAASnlL,SAC9Bjb,KAAKmiF,WAAU,WACbg/G,EAAQ/jM,KAAK,EAAjB,oBAQA,SAAS+jM,EAAQx8L,GAAjB,WACEA,EAAKmzE,UAAU3sC,SAAQ,SAAzB,GACQ/uB,EAAE07D,UAAUn2E,OAAS,IACvBya,EAAEiqB,MAAO,EACT86J,EAAQ/jM,KAAK,EAAnB,OASA,SAASijM,EAAY99K,GAArB,WACEA,EAAK4oB,SAAQ,SAAf,GACI,IAAIi2J,GAAS,EAOb,GANA7+K,EAAK4oB,SAAQ,SAAjB,GACM,GAAI7tC,EAAE0jM,WAAajiM,EAAEyP,GAEnB,OADA4yL,GAAS,GACF,MAGNA,EAEH,OADA,EAAN,oCACa,KAUb,SAASd,EAAahjM,EAAGilB,GAAzB,WACEA,EAAK4oB,SAAQ,SAAf,GACQ7tC,EAAEkR,IAAM4N,EAAE4kL,iBACc,IAAf1jM,EAAE2d,WACX3d,EAAE2d,SAAW,IAEX,EAAV,qBACQmB,EAAEilL,WAAa/jM,GAEjBA,EAAE2d,SAASzY,KAAK4Z,GAChBkkL,EAAaljM,KAAK,EAAxB,SASA,SAASmjM,GAAap9L,GAAtB,WACEA,EAAIiE,KAAKk6L,IACTn+L,EAAIgoC,SAAQ,SAAd,GACQ/uB,EAAEnB,UACJslL,GAAanjM,KAAK,EAAxB,eAUA,SAASkkM,GAASt2L,EAAGC,GAGnB,OAFS,IAAIX,KAAKU,EAAE21L,aAAav+H,UACxB,IAAI93D,KAAKW,EAAE01L,aAAav+H,UCxWoK,ODoCvM,CACE5kE,KAAM,cACN0sE,QAAS,WACP,MAAO,CACL0mF,kBAAmB5wJ,OAGvBiqE,OAAQ,CAAC,qBACTt+C,MAAO,CACLia,QAAS,CACPrkC,KAAMoqE,QACNE,SAAS,IAGbtpD,KAdF,WAeI,MAAO,CACL2+K,YAAa,GACbT,SAAU,GACVt4J,OAAQ,EACRo5J,aAAc,GACdC,iBAAiB,EACjBC,cAAe,GACf9wC,YAAY,EACZ+wC,UAAU,EACVC,cAAc,EACdvB,SAAU,KACV3sK,OAAQ,IACR8mH,YAAa,IAGjBnpH,SAAU,CACRwwK,cADJ,WAEM,OAAO5hM,KAAK6hM,kBAAkBD,gBAGlCn2J,QAAS,CACPu0J,qBAAJ,EAEI8B,cAHJ,WAIM9hM,KAAK0hM,UAAY1hM,KAAK0hM,UAGxBK,cAPJ,WAQU/hM,KAAK2hM,eAGT3hM,KAAKwgF,MAAMwhH,QAAQnxC,cAAgB,KACnC7wJ,KAAK2hM,cAAe,EACpB3hM,KAAK6hM,kBAAkBI,UAAYjiM,KAAKogM,SAAS9uC,SACjDtxJ,KAAK6hM,kBAAkBxmH,MAAM,iBAAkBr7E,KAAKogM,YAGtDL,uBAjBJ,SAiBA,GACM,GAAe,KAAX57L,EAAKqK,GAAW,CAClBxO,KAAKmoC,SACL,IAAIjpB,EAAOlf,KACXggM,EAAqB5iM,KAAK4C,MAAM6c,MAAK,WACnCqC,EAAKipB,iBAGPnoC,KAAK2hM,cAAe,EACpB3hM,KAAK6hM,kBAAkBI,UAAY99L,EAAKmtJ,SACxCtxJ,KAAK6hM,kBAAkBxmH,MAAM,iBAAkBl3E,IAGnD+9L,eA9BJ,WA8BA,WACU/9L,EAAOnE,KAAKuhM,aAChBrB,EAAmB9iM,KAAK4C,KAAMmE,GAAMigC,SAAQ,WAC1C,EAAR,mBACQ,EAAR,cACQ,EAAR,uBACQ,EAAR,mBAGI+9J,oBAvCJ,SAuCA,GACM,IAAIvM,EAAM,IAAIjqL,OAAO3L,KAAKuhM,aAAc,KACxC,OAAOp9L,EAAK6D,QAAQ4tL,EAAK,wBAE3BwM,kBA3CJ,SA2CA,cACMlC,EAAmB9iM,KAAK4C,KAAMmE,GAAMigC,SAAQ,WAC1C,EAAR,mBACQ,EAAR,cACQ,EAAR,uBACQ,EAAR,mBAGIi+J,cAnDJ,WAoDWriM,KAAK2wJ,aAGV3wJ,KAAKogM,SAASnlL,SAAWjb,KAAKkhM,YAC9BlhM,KAAKuhM,aAAe,GACpBvhM,KAAKyhM,cAAgB,GACrBzhM,KAAKygM,SAAWzgM,KAAKogM,SAASnlL,SAC9Bjb,KAAK2wJ,YAAa,IAEpB2xC,cA7DJ,SA6DA,GACMtiM,KAAKu6I,YAAcv7I,EAAEy0B,SAGzB0rD,WAAY,CACVojH,QAAJ,GAEE19H,MAAO,CACL08H,aAAc,SAAlB,GACM,GAAgB,IAAZnlL,EAAEguB,QAIN,KAAIhuB,GAAKpc,KAAKwiM,sBAAwBxiM,KAAKyhM,cAAc9/L,OAAS,GAAlE,CAGA,IA4Nc49B,EA5NVrgB,EAAOlf,MA4NGu/B,EA3NH,CAAE/gC,IAAK4d,EAAGwH,MAAO,GA4NzBq8K,OAAOwC,KAAK,iBAAkBljK,IA5NA6E,SAAQ,SAA/C,GACYy9B,GAAOA,EAAIt/C,MAAQs/C,EAAIt/C,KAAKnX,OAC9B8T,EAAKuiL,cAAgB5/H,EAAIt/C,KAAKnX,eAThCpL,KAAKyhM,cAAgB,IAazBlnD,YAhBJ,SAgBA,cACM,GAAS,GAALn+H,EAAJ,CAEA,GADAA,GAAK,IAEX,qCACA,oCAEQpc,KAAKyzB,OAAS,QACtB,IACA,qCACA,oCAEQ,MAAM,IAAIzwB,MAAM,uDAEZoZ,GAAKpc,KAAK6hM,kBAAkBa,UAC9B1iM,KAAKyzB,OAASzzB,KAAK6hM,kBAAkBa,UAC/C,oCACU1iM,KAAKyzB,OAASzzB,KAAK6hM,kBAAkBc,UAErC3iM,KAAKyzB,OAASrX,EAGlBpc,KAAKmiF,WAAU,WACb,EAAR,0CAIEW,QAlJF,WAmJI,GAAK7/E,OAAOg9L,OAAZ,CAIah9L,OAAOg9L,OACxB,sCACMjgM,KAAKyzB,OAASzzB,KAAK6hM,kBAAkBc,gBALrCpiL,QAAQrY,MAAM,mCAQlB86E,QA5JF,WA6JIhjF,KAAKggM,yBE/KM,GAXC,YACd,ICRW,WAAa,IAAI3uC,EAAIrxJ,KAASyyG,EAAG4+C,EAAIhgF,eAAmB4D,EAAGo8E,EAAI9wE,MAAMtL,IAAIw9B,EAAG,OAAOx9B,EAAG,MAAM,CAACzK,WAAW,CAAC,CAAChtE,KAAK,OAAOoqF,QAAQ,SAAS1pF,MAAOmzJ,EAAW,QAAEv0E,WAAW,YAAY4H,YAAY,kCAAkCjK,MAAM,CAAC42E,EAAIuwC,eAAet9K,MAAM,CAAEmP,OAAO49H,EAAI59H,OAAQ,OAAQ,CAACwhD,EAAG,MAAM,CAACyP,YAAY,+BAA+B,CAACzP,EAAG,MAAM,CAACyP,YAAY,0CAA0C,CAACzP,EAAG,MAAM,CAACyP,YAAY,qBAAqB,CAACzP,EAAG,MAAM,CAACyP,YAAY,2BAA2B,CAACzP,EAAG,QAAQ,CAACzK,WAAW,CAAC,CAAChtE,KAAK,QAAQoqF,QAAQ,UAAU1pF,MAAOmzJ,EAAgB,aAAEv0E,WAAW,iBAAiBltE,MAAM,CAAC,KAAO,OAAO,YAAc,kBAAkBuiE,SAAS,CAAC,MAASk/E,EAAgB,cAAGjpI,GAAG,CAAC,MAAQ,SAASkqD,GAAQ++E,EAAImwC,iBAAgB,GAAM,MAAQ,SAASlvH,GAAWA,EAAO5qE,OAAOuiF,YAAqBonE,EAAIkwC,aAAajvH,EAAO5qE,OAAOxJ,WAAUmzJ,EAAIn9E,GAAG,KAAKe,EAAG,IAAI,CAAC7sD,GAAG,CAAC,MAAQipI,EAAI6wC,kBAAkB7wC,EAAIn9E,GAAG,KAAKe,EAAG,KAAK,CAACzK,WAAW,CAAC,CAAChtE,KAAK,OAAOoqF,QAAQ,SAAS1pF,MAAOmzJ,EAAImwC,iBAAmBnwC,EAAIowC,cAAc9/L,OAAS,EAAGm7E,WAAW,gDAAgD4H,YAAY,4BAA4B2sE,EAAI19E,GAAI09E,EAAiB,eAAE,SAASltJ,GAAM,OAAO8wE,EAAG,KAAK,CAACz2E,IAAI2F,EAAKqK,GAAG2jE,SAAS,CAAC,UAAYk/E,EAAI39E,GAAG29E,EAAI8wC,oBAAoBh+L,KAAQikB,GAAG,CAAC,MAAQ,SAASkqD,GAAQ,OAAO++E,EAAI+wC,kBAAkBj+L,UAAY,GAAGktJ,EAAIn9E,GAAG,KAAMm9E,EAAc,WAAEp8E,EAAG,KAAK,CAAC7sD,GAAG,CAAC,MAAQipI,EAAIgxC,iBAAiBhxC,EAAIl9E,SAASk9E,EAAIn9E,GAAG,KAAKe,EAAG,MAAM,CAACyP,YAAY,+BAA+B,CAACzP,EAAG,aAAa,CAAC7sD,GAAG,CAAC,iBAAiBipI,EAAIixC,gBAAgB,CAACrtH,EAAG,MAAM,CAACyP,YAAY,qCAAqC,CAACzP,EAAG,QAAQ,CAACrlE,MAAM,CAAC,cAAgB,gBAAgBwY,GAAG,CAAC,MAAQipI,EAAIywC,gBAAgB,CAAEzwC,EAAY,SAAE,CAACA,EAAIn9E,GAAG,MAAM,CAACm9E,EAAIn9E,GAAG,OAAO,GAAGm9E,EAAIn9E,GAAG,KAAKe,EAAG,OAAO,CAACwF,MAAM,CAACvkE,SAASm7I,EAAIswC,cAAcv5K,GAAG,CAAC,MAAQipI,EAAI0wC,gBAAgB,CAAC1wC,EAAIn9E,GAAGm9E,EAAI39E,GAAG29E,EAAI+uC,UAAY/uC,EAAI+uC,SAAS9uC,eAAeD,EAAIn9E,GAAG,KAAKe,EAAG,MAAM,CAACzK,WAAW,CAAC,CAAChtE,KAAK,OAAOoqF,QAAQ,SAAS1pF,MAAOmzJ,EAAY,SAAEv0E,WAAW,aAAa4H,YAAY,oCAAoC90E,MAAM,CAAC,cAAgB,iBAAiB,CAACqlE,EAAG,WAAW,CAACphB,IAAI,UAAUjkD,MAAM,CAAC,MAAQyhJ,EAAIovC,UAAUr4K,GAAG,CAAC,gBAAgBipI,EAAI0uC,2BAA2B,MAAM,OAAO1uC,EAAIn9E,GAAG,KAAKe,EAAG,IAAI,CAACyP,YAAY,yCAAyC90E,MAAM,CAAC,UAAU,UAC/uE,IDUpB,EACA,KACA,KACA,M,QEdqM,GCiBvM,CACEpS,KAAM,oBACNqtE,OAAQ,CAAC,GACTX,QAAS,WACP,MAAO,CACL23H,kBAAmB7hM,OAGvB2rB,MAAO,CACLstB,YAAa,CACX13C,KAAMuL,OACN++D,QAAS,aAEX82H,UAAW,CACTphM,KAAM26D,OACN2P,QAAS,GAEX62H,UAAW,CACTnhM,KAAM26D,OACN2P,QAAS,GAEX+2H,UAAW,GACXhB,cAAe,IAEjBr/K,KAxBF,WAyBI,MAAO,CACLqjB,SAAS,EACTq8J,UAAW,KAGfz3H,WAAY,CACVq4H,aAAJ,GAEE1jH,WAAY,CACV2jH,YAAJ,IAEEr3J,QAAS,CACPs3J,aADJ,WAEM/iM,KAAK4lC,SAAU,IAGnBi/B,MAAO,CACLj/B,QADJ,SACA,GACUxpB,GACFpc,KAAKi/L,SAASxzI,WAIpBu3B,QAhDF,WAiDIhjF,KAAKk/L,cAAgBl/L,KAAK6hF,IAAI0W,cAClC,oCAEIv4F,KAAKm/L,iBAAmBn/L,KAAK6hF,IAAI0W,cACrC,gCAEIz1F,SAASwiB,KAAKlgB,YAAYpF,KAAKk/L,eAC/Bl/L,KAAKo/L,gBAEPK,cA1DF,WA2DIz/L,KAAK6hF,IAAIz8E,YAAYpF,KAAKk/L,iBCzDf,I,OAXC,YACd,ICTW,WAAa,IAAI7tC,EAAIrxJ,KAASyyG,EAAG4+C,EAAIhgF,eAAmB4D,EAAGo8E,EAAI9wE,MAAMtL,IAAIw9B,EAAG,OAAOx9B,EAAG,MAAM,CAACzK,WAAW,CAAC,CAAChtE,KAAK,eAAeoqF,QAAQ,iBAAiB1pF,MAAOmzJ,EAAgB,aAAEv0E,WAAW,iBAAiB4H,YAAY,yBAAyB,CAACzP,EAAG,MAAM,CAACyP,YAAY,8BAA8Bt8D,GAAG,CAAC,MAAQ,SAASkqD,GAAQ++E,EAAIzrH,SAAWyrH,EAAIzrH,WAAW,CAACqvC,EAAG,QAAQ,CAACzK,WAAW,CAAC,CAAChtE,KAAK,QAAQoqF,QAAQ,UAAU1pF,MAAOmzJ,EAAa,UAAEv0E,WAAW,cAAcltE,MAAM,CAAC,YAAY,GAAG,KAAO,OAAO,YAAcyhJ,EAAIp4G,YAAY,SAAW,IAAIk5B,SAAS,CAAC,MAASk/E,EAAa,WAAGjpI,GAAG,CAAC,MAAQ,SAASkqD,GAAWA,EAAO5qE,OAAOuiF,YAAqBonE,EAAI4wC,UAAU3vH,EAAO5qE,OAAOxJ,WAAUmzJ,EAAIn9E,GAAG,KAAKe,EAAG,IAAI,CAACyP,YAAY,oCAAoCjK,MAAM,CAAC42E,EAAIuxC,eAAevxC,EAAIn9E,GAAG,KAAKe,EAAG,eAAe,CAACrlE,MAAM,CAAC,QAAUyhJ,EAAIzrH,YAAY,KAC3zB,IDWpB,EACA,KACA,KACA,M,SEbFo9J,GAAYv/G,QAAU,SAASrE,GAC3BA,EAAIlG,UAAU8pH,GAAYxlM,KAAMwlM,KAGrBA,UCNyL,GCCxM,CACIxlM,KAAM,eACNmuB,MAAO,CACHixB,KAAM,CACFr7C,KAAMuL,OACN++D,QAAS,UAEbgrC,MAAO,CACHt1G,KAAMuL,OACN++D,QAAS,WAEb3tE,MAAO,CACHqD,KAAMoqE,QACNn0B,SAAS,GAEbk2E,QAAS,MAEbjiF,QAAS,CACLw3J,aADR,WAEYjjM,KAAKq7E,MAAM,SAAUr7E,KAAK9B,SAGlC2mE,MAAO,CACH3mE,MADR,SACA,GACY8B,KAAK0tH,QACjB,mDACA,yBAGIvuH,OA7BJ,SA6BA,GACQ,OACR,EAAY,OACIs7E,MAAhB,+DADA,OAEA,iBACA,6BAHA,UAIA,oBAJY,CAKZ,SACgB,MAAhB,sBACgB,MAAhB,iDAEA,4CCtBe,I,OAXC,YACd,QATE,OAAQ,GAYV,EACA,KACA,KACA,M,SCbFyoH,GAAaz/G,QAAU,SAAArE,GACnBA,EAAIlG,UAAUgqH,GAAa1lM,KAAM0lM,KAGtBA,UCN+L,GC0C9M,CACI1lM,KAAM,qBACNmuB,MAAO,CACHw3K,QAAS,CACL5hM,KAAMoqE,QACNE,SAAS,IAGjBtpD,KARJ,WASQ,MAAO,CACH6gL,SAAU,EACVC,YAAa,KACbC,WAAY,KAGpB73J,QAAS,CACL83J,iBADR,SACA,GACYvjM,KAAKqjM,YAAc9hM,EACnBvB,KAAKsjM,WAAa,IAEtBE,mBALR,SAKA,GACYxjM,KAAKsjM,WAAa/gL,EAAKkhL,QAE3BC,gBARR,SAQA,GACY1jM,KAAKsjM,WAAa/gL,EAAK/T,IAK3BqqD,MAdR,WAeY74D,KAAKsjM,WAAa,IAEtBx6E,OAjBR,WAkBY,GAAI9oH,KAAKwgF,MAAMi7D,KAAM,CACjB,IAAIvsG,EAAOlvC,KAAKwgF,MAAMi7D,KAAKkoD,MAAMz0J,KACjClvC,KAAKsjM,WAA6B,IAAhBp0J,EAAKvtC,OAAe,GAAKutC,EAAKA,EAAKvtC,OAAS,GAAG8hM,OAErEzjM,KAAKq7E,MAAM,SAAUr7E,KAAK4jM,eAGlC/+H,MAAO,CACHu+H,SAAU,CACNvzL,QADZ,WACA,WAEwC,QAApB7P,KAAKqjM,cACLrjM,KAAKsjM,WAAa,GAClBtjM,KAAKmiF,WAAU,WACX,EAAxB,uBAKYd,WAAW,IAMnBjwD,SAAU,CACNwyK,YADR,WAEY,MAAO,CACHR,SAAUpjM,KAAKojM,SACfC,YAAarjM,KAAKqjM,YAClBC,WAAYtjM,KAAKsjM,cAI7BtgH,QAnEJ,WAoEQhjF,KAAK8oH,WC3FE,I,OAXC,YACd,ICTW,WAAa,IAAIuoC,EAAIrxJ,KAASyyG,EAAG4+C,EAAIhgF,eAAmB4D,EAAGo8E,EAAI9wE,MAAMtL,IAAIw9B,EAAG,OAAOx9B,EAAG,MAAM,CAACyP,YAAY,iCAAiC,CAACzP,EAAG,aAAa,CAACyP,YAAY,+BAA+BpL,MAAM,CAACp7E,MAAOmzJ,EAAY,SAAE/qJ,SAAS,SAAUu9L,GAAMxyC,EAAI+xC,SAASS,GAAK/mH,WAAW,aAAa,CAAC7H,EAAG,aAAa,CAACrlE,MAAM,CAAC,MAAQ,OAAO,MAAQ,KAAKyhJ,EAAIn9E,GAAG,KAAKe,EAAG,aAAa,CAACrlE,MAAM,CAAC,MAAQ,OAAO,MAAQ,MAAM,GAAGyhJ,EAAIn9E,GAAG,KAAKe,EAAG,SAAS,CAACyP,YAAY,mCAAmCjK,MAAM,CAACqpH,IAAyB,OAApBzyC,EAAIgyC,aAAsBj7K,GAAG,CAAC,MAAQ,SAASkqD,GAAQ,OAAO++E,EAAIkyC,iBAAiB,SAAS,CAAClyC,EAAIn9E,GAAG,SAASm9E,EAAIn9E,GAAG,KAAKe,EAAG,SAAS,CAACyP,YAAY,mCAAmCjK,MAAM,CAACqpH,IAAyB,OAApBzyC,EAAIgyC,aAAsBj7K,GAAG,CAAC,MAAQ,SAASkqD,GAAQ,OAAO++E,EAAIkyC,iBAAiB,SAAS,CAAClyC,EAAIn9E,GAAG,SAASm9E,EAAIn9E,GAAG,KAAKe,EAAG,SAAS,CAACyP,YAAY,qCAAqCjK,MAAM,CAACqpH,IAAyB,SAApBzyC,EAAIgyC,aAAwBj7K,GAAG,CAAC,MAAQ,SAASkqD,GAAQ,OAAO++E,EAAIkyC,iBAAiB,WAAW,CAAClyC,EAAIn9E,GAAG,SAASm9E,EAAIn9E,GAAG,KAAMm9E,EAAW,QAAEp8E,EAAG,SAAS,CAACyP,YAAY,oCAAoCjK,MAAM,CAACqpH,IAAyB,QAApBzyC,EAAIgyC,aAAuBj7K,GAAG,CAAC,MAAQ,SAASkqD,GAAQ,OAAO++E,EAAIkyC,iBAAiB,UAAU,CAAClyC,EAAIn9E,GAAG,SAASm9E,EAAIl9E,KAAKk9E,EAAIn9E,GAAG,KAAKe,EAAG,MAAM,CAACyP,YAAY,+BAA+B,CAAqB,MAAnB2sE,EAAIgyC,aAA0C,MAAnBhyC,EAAIgyC,YAAqBpuH,EAAG,QAAQ,CAACzK,WAAW,CAAC,CAAChtE,KAAK,QAAQoqF,QAAQ,UAAU1pF,MAAOmzJ,EAAc,WAAEv0E,WAAW,eAAeltE,MAAM,CAAC,KAAO,OAAO,YAAkC,MAApByhJ,EAAIgyC,YAAuB,UAAY,WAAWlxH,SAAS,CAAC,MAASk/E,EAAc,YAAGjpI,GAAG,CAAC,MAAQ,SAASkqD,GAAWA,EAAO5qE,OAAOuiF,YAAqBonE,EAAIiyC,WAAWhxH,EAAO5qE,OAAOxJ,WAAUmzJ,EAAIl9E,KAAKk9E,EAAIn9E,GAAG,MAA2B,OAApBm9E,EAAIgyC,aAA4C,OAApBhyC,EAAIgyC,cAAyBhyC,EAAIiyC,WAAW3hM,OAAS,EAAGszE,EAAG,MAAM,CAACyP,YAAY,qCAAqCt8D,GAAG,CAAC,MAAQipI,EAAIx4F,SAASw4F,EAAIl9E,OAAOk9E,EAAIn9E,GAAG,KAAyB,QAAnBm9E,EAAIgyC,YAAuBpuH,EAAG,WAAW,CAACphB,IAAI,OAAO6wB,YAAY,6BAA6B90E,MAAM,CAAC,WAAWyhJ,EAAI+xC,SAAS,qBAAoB,EAAK,KAAO,EAAE,cAAc,qCAAqCh7K,GAAG,CAAC,OAASipI,EAAImyC,sBAAsBnyC,EAAIl9E,KAAKk9E,EAAIn9E,GAAG,KAAMm9E,EAAI8xC,SAA8B,OAAnB9xC,EAAIgyC,YAAsBpuH,EAAG,sBAAsB,CAACyP,YAAY,4BAA4Bt8D,GAAG,CAAC,iBAAiBipI,EAAIqyC,mBAAmBryC,EAAIl9E,KAAKk9E,EAAIn9E,GAAG,KAAKe,EAAG,MAAM,CAACyP,YAAY,mCAAmC2sE,EAAIn9E,GAAG,KAAKe,EAAG,SAAS,CAACyP,YAAY,uCAAuCt8D,GAAG,CAAC,MAAQipI,EAAIvoC,SAAS,CAACuoC,EAAIn9E,GAAG,UAAU,KAC/7E,IDWpB,EACA,KACA,KACA,M,SEbF6vH,GAAmBtgH,QAAU,SAAArE,GACzBA,EAAIlG,UAAU6qH,GAAmBvmM,KAAMumM,KAG5BA,U,UCJTC,GAA6B,oBAAX/gM,OAGlBghM,GAAgB,SAASj6I,GAAS,2BACtC,YAAkBA,EAAlB,+CAA2B,KACnB8qB,EADmB,QACDptE,OAAOw8L,qBAAuB,GAClDpvH,EAAUnzE,QACZmzE,EAAU3pC,SAAQ,SAAAzlC,GAChBA,QALgC,+ECLgK,GC+CxM,CACElI,KAAM,qBACNqtE,OAAQ,CCjDK,CACXtoD,KADW,WAEP,MAAO,CACH4hL,iBAAiB,IAGzB14J,QAAS,CACL24J,kBADK,SACav2L,GACC,mBAAXA,EAAEtM,MACFvB,KAAKmkM,iBAAkB,EACvBnkM,KAAKqkM,YAAYx2L,IAEjB7N,KAAKmkM,iBAAkB,GAG/BG,kBATK,SASaz2L,GACV7N,KAAKmkM,iBACTnkM,KAAKqkM,YAAYx2L,IAErBw2L,YAbK,SAaOx2L,OD8BpB,GACE8d,MAAO,CACLztB,MAAO,GACPqmM,YAAa,CACXhjM,KAAMQ,SACN8pE,QATK,cAWP24H,WAAY,CACVjjM,KAAMQ,SACN8pE,QAZW,SAAjB,cAcI+2H,UAAW,GACX6B,WAAJ,GACIC,cAAe,GACfC,aAAc,CACZpjM,KAAMoqE,QACNE,SAAS,GAEXx6C,MAAO,CACL9vB,KAAM26D,OACN2P,QAAS,IAGbtpD,KAzBF,WA0BI,MAAO,CACLqiL,WAAY,GACZx5L,KAAM,GACNw6B,SAAS,EACTi/J,YAAa,EACbC,aAAa,IAGjB1zK,SAAU,CACR2zK,UADJ,WACA,WACM,OAAQ/kM,KAAKoL,MAAQ,IAAI7E,KAAI,SAAnC,+BAGEklC,QAAS,CACP44J,YAAarnL,EAAEmkC,UAAS,SAA5B,GACMnhD,KAAKukM,YAAYvkM,KAAK4kM,WAAY5kM,KAAKglM,SACvChlM,KAAKq7E,MAAM,QAASr7E,KAAK4kM,cAC/B,KACII,QALJ,SAKA,GACMhlM,KAAKoL,KAAOgR,GAAK,GACjBpc,KAAK6kM,YAAc,EACf7kM,KAAKoL,KAAKzJ,OAAS,EACrB3B,KAAK4lC,SAAU,EAEf5lC,KAAK4lC,SAAU,GAGnBm9J,aAdJ,WAeM/iM,KAAK4lC,SAAU,GAEjBq/J,WAjBJ,WAkBUjlM,KAAKoL,KAAKzJ,OAAS,IAAG3B,KAAK4lC,SAAU,IAE3CurH,UApBJ,SAoBA,GACMnxJ,KAAK4kM,WAAa5kM,KAAK+kM,UAAUrjM,GACjC1B,KAAKq7E,MAAM,QAASr7E,KAAK+kM,UAAUrjM,IACnC1B,KAAKq7E,MAAM,SAAUr7E,KAAK+kM,UAAUrjM,GAAQA,EAAO1B,KAAKoL,KAAK1J,IAC7D1B,KAAKoL,KAAOpL,KAAKoL,KAAK/D,OAAO3F,EAAO,GACpC1B,KAAK4lC,SAAU,EACf5lC,KAAK8kM,aAAc,GAErBI,mBA5BJ,YA6BYllM,KAAK6kM,YAGX7kM,KAAKmxJ,UAAUnxJ,KAAK6kM,aAEtBM,cAlCJ,SAkCA,GACmB,SAAT5jM,EACEvB,KAAK6kM,YAAc7kM,KAAKoL,KAAKzJ,OAAS,EACxC3B,KAAK6kM,WAAa,EAElB7kM,KAAK6kM,YAAc,EAGjB7kM,KAAK6kM,YAAc,EACrB7kM,KAAK6kM,WAAa7kM,KAAKoL,KAAKzJ,OAAS,EAErC3B,KAAK6kM,YAAc,GAIzBO,iBAjDJ,WAkDMplM,KAAKwgF,MAAM6kH,SAAS/gL,MAAM+M,MAAQrxB,KAAKwgF,MAAM1uE,MAAM4gB,YAAc,MAEnE4yK,UApDJ,SAoDA,GACA,IACA,4CACA,qBACA,0CACA,SAEQ,OADA/kL,QAAQrY,MAAMoU,GACPnY,IAGXohM,kBA9DJ,WA+DMvlM,KAAKoL,KAAO,GACZpL,KAAKq7E,MAAM,QAAS,KAA1B,8BACMr7E,KAAK4lC,QAAU5lC,KAAK8kM,aAAc,IAGtCjgI,MAAO,CACLj/B,QADJ,SACA,GACUxpB,GACFpc,KAAKi/L,SAASxzI,WAIpB+e,WAAY,CACVq4H,aAAJ,GAEE7/G,QArHF,WF9BiC,IAASw0C,EAAS9xH,EEoJ/C1F,KAAK8kM,aAAT,EACI9kM,KAAKk/L,cAAgBl/L,KAAK6hF,IAAI0W,cAClC,mCAEIv4F,KAAKm/L,iBAAmBn/L,KAAK6hF,IAAI0W,cACrC,gCAEQv4F,KAAK2kM,cAAc7hM,SAASwiB,KAAKlgB,YAAYpF,KAAKk/L,eACtDl/L,KAAKo/L,eACa,GAAdp/L,KAAKqxB,OF7J6BmmG,EE8J1C,iBF9JmD9xH,EE8JnD,sBF7JMs+L,KACCxsE,EAAQ0sE,sBACX1sE,EAAQ0sE,oBAAsB,GAC9B1sE,EAAQguE,OAAS,IAAIn9C,KAAe47C,IACpCzsE,EAAQguE,OAAOl9H,QAAQkvD,IAEzBA,EAAQ0sE,oBAAoB1hM,KAAKkD,KEyJ7B1F,KAAKk/L,cAAc56K,MAAM+M,MAAQrxB,KAAKqxB,MAAQ,MAGlDouK,cArIF,WFnBoC,IAASjoE,EAAS9xH,EEyJ9C1F,KAAK2kM,eFzJgCntE,EE0J7C,iBF1JsD9xH,EE0JtD,sBFzJO8xH,GAAYA,EAAQ0sE,sBACzB1sE,EAAQ0sE,oBAAoB78L,OAAOmwH,EAAQ0sE,oBAAoBzgM,QAAQiC,GAAK,GACvE8xH,EAAQ0sE,oBAAoBviM,QAC/B61H,EAAQguE,OAAO7/C,eEuJG,GAAd3lJ,KAAKqxB,OAAYrxB,KAAK6hF,IAAIz8E,YAAYpF,KAAKk/L,iBEpKpC,I,OAXC,YACd,ICTW,WAAa,IAAI7tC,EAAIrxJ,KAASyyG,EAAG4+C,EAAIhgF,eAAmB4D,EAAGo8E,EAAI9wE,MAAMtL,IAAIw9B,EAAG,OAAOx9B,EAAG,MAAM,CAACzK,WAAW,CAAC,CAAChtE,KAAK,eAAeoqF,QAAQ,iBAAiB1pF,MAAOmzJ,EAAgB,aAAEv0E,WAAW,iBAAiB4H,YAAY,wBAAwB,CAACzP,EAAG,MAAM,CAACphB,IAAI,QAAQ6wB,YAAY,+BAA+B,CAACzP,EAAG,QAAQo8E,EAAIp9E,GAAG,CAACzJ,WAAW,CAAC,CAAChtE,KAAK,QAAQoqF,QAAQ,UAAU1pF,MAAOmzJ,EAAc,WAAEv0E,WAAW,eAAeltE,MAAM,CAAC,KAAO,QAAQuiE,SAAS,CAAC,MAASk/E,EAAc,YAAGjpI,GAAG,CAAC,MAAQipI,EAAI4zC,WAAW,QAAU,CAAC,SAAS3yH,GAAQ,OAAIA,EAAO/wE,KAAKkC,QAAQ,QAAQ4tJ,EAAIr9E,GAAG1B,EAAOvlD,QAAQ,OAAO,GAAGulD,EAAO9zE,IAAI,CAAC,OAAO,cAAuB,MAAO8zE,EAAOvpD,kBAAkBupD,EAAOrpD,iBAAwBooI,EAAI8zC,cAAc,UAAS,SAAS7yH,GAAQ,OAAIA,EAAO/wE,KAAKkC,QAAQ,QAAQ4tJ,EAAIr9E,GAAG1B,EAAOvlD,QAAQ,KAAK,GAAGulD,EAAO9zE,IAAI,CAAC,KAAK,YAAqB,MAAO8zE,EAAOvpD,kBAAkBupD,EAAOrpD,iBAAwBooI,EAAI8zC,cAAc,UAAS,SAAS7yH,GAAQ,OAAIA,EAAO/wE,KAAKkC,QAAQ,QAAQ4tJ,EAAIr9E,GAAG1B,EAAOvlD,QAAQ,QAAQ,GAAGulD,EAAO9zE,IAAI,SAAkB,MAAO8zE,EAAOrpD,iBAAwBooI,EAAI6zC,mBAAmB1hM,MAAM,KAAMiD,aAAY,SAAS6rE,GAAQ,IAAIA,EAAO/wE,KAAKkC,QAAQ,QAAQ4tJ,EAAIr9E,GAAG1B,EAAOvlD,QAAQ,MAAM,GAAGulD,EAAO9zE,IAAI,CAAC,MAAM,WAAa,OAAO,KAAO8zE,EAAOvpD,kBAAkBupD,EAAOrpD,iBAAiBooI,EAAIzrH,SAAU,GAAO,SAAS0sC,GAAQ,IAAIA,EAAO/wE,KAAKkC,QAAQ,QAAQ4tJ,EAAIr9E,GAAG1B,EAAOvlD,QAAQ,MAAM,EAAEulD,EAAO9zE,IAAI,OAAS,OAAO,KAAO6yJ,EAAIzrH,SAAU,IAAQ,iBAAmByrH,EAAI+yC,kBAAkB,eAAiB/yC,EAAI+yC,kBAAkB,kBAAoB/yC,EAAI+yC,kBAAkB,MAAQ,CAAC,SAAS9xH,GAAWA,EAAO5qE,OAAOuiF,YAAqBonE,EAAIuzC,WAAWtyH,EAAO5qE,OAAOxJ,QAAOmzJ,EAAIizC,qBAAqB,QAAQjzC,EAAI36E,QAAO,IAAQ26E,EAAIn9E,GAAG,KAAKm9E,EAAIz9E,GAAG,QAAO,WAAW,MAAO,CAACqB,EAAG,IAAI,CAACwF,MAAM,CAAC42E,EAAIuxC,iBAAgBvxC,EAAIn9E,GAAG,KAAKm9E,EAAIz9E,GAAG,SAAQ,WAAW,MAAO,CAAEy9E,EAAe,YAAEp8E,EAAG,IAAI,CAAC7sD,GAAG,CAAC,MAAQipI,EAAIk0C,qBAAqBl0C,EAAIl9E,UAAS,GAAGk9E,EAAIn9E,GAAG,KAAKe,EAAG,MAAM,CAACzK,WAAW,CAAC,CAAChtE,KAAK,OAAOoqF,QAAQ,SAAS1pF,MAAOmzJ,EAAW,QAAEv0E,WAAW,YAAYjpB,IAAI,WAAW6wB,YAAY,iCAAiCjK,MAAM,CAAC42E,EAAIqzC,gBAAgB,CAACzvH,EAAG,KAAKo8E,EAAI19E,GAAI09E,EAAa,WAAE,SAASltJ,EAAKzC,GAAO,OAAOuzE,EAAG,KAAK,CAACz2E,IAAI2F,EAAKs2E,MAAM,CAAC,qCAAqC42E,EAAIwzC,YAAYnjM,GAAOywE,SAAS,CAAC,UAAYk/E,EAAI39E,GAAG29E,EAAIi0C,UAAUnhM,KAAQikB,GAAG,CAAC,WAAa,SAASkqD,GAAQ++E,EAAIwzC,WAAWnjM,GAAO,MAAQ,SAAS4wE,GAAQ,OAAO++E,EAAIF,UAAUzvJ,UAAa,SACp4E,IDWpB,EACA,KACA,KACA,M,SEbF+jM,GAAahiH,QAAU,SAASrE,GAC5BA,EAAIlG,UAAUusH,GAAajoM,KAAMioM,KAGtBA,U,yHCAf,IAAIhtG,GAAI,SAA2Br8E,GAC/B,OAAS,MAALA,QAA4B,IAAPA,EACd,KAEJA,GAOPspL,GAAsB,SAAUhoM,GAChC,GAAS,MAALA,QAA4B,IAAPA,EACrB,OAAO,EAEX,IAAK,IAAIg1D,KAAKh1D,EACV,GAAIA,EAAEoB,eAAe4zD,GACjB,OAAO,EAGf,OAAO,GA6BX,SAASizI,GAAUC,EAAIrjL,GAEnB,GAAImjL,GAAoBnjL,EAAKhlB,GACzB,MAAO,CACH6e,EAAG,KACHnf,EAAG,KACH+3G,EAAG,MAIX,GAhCJ,SAAsB4wF,GAClB,MAAsC,MAA/BA,EAAGtkI,OAAO,GAAGj4D,cA+BhBw8L,CAAaD,GAAK,CAClB,IAAI7nM,EAAI,CACJqe,EAAG,CAACmG,EAAKhlB,EAAEuoM,KAAMvjL,EAAKhlB,EAAEwoM,KAAMxjL,EAAKhlB,EAAEyoM,MACrC/oM,EAAG,CAACslB,EAAKhlB,EAAE0oM,KAAM1jL,EAAKhlB,EAAE2oM,KAAM3jL,EAAKhlB,EAAE4oM,MACrCnxF,EAAG,CAACzyF,EAAKhlB,EAAE6oM,KAAM7jL,EAAKhlB,EAAE8oM,KAAM9jL,EAAKhlB,EAAE+oM,OAGzC,IAAK,IAAI5zI,KAAK30D,EAAG,CACb,IAAK,IAAId,EAAI,EAAGA,EAAIc,EAAE20D,GAAG/wD,OAAQ1E,IACzB,iBAAiB2R,KAAK7Q,EAAE20D,GAAGz1D,MAC3Bc,EAAE20D,GAAGz1D,GAAK,MAGlBc,EAAE20D,GAAK30D,EAAE20D,GAAG1jD,KAAK,KAErB,OAAOjR,EAGX,MAAO,CACHqe,EAAGq8E,GAAEl2E,EAAKhlB,EAAEuoM,MACZ7oM,EAAGw7F,GAAEl2E,EAAKhlB,EAAE0oM,MACZjxF,EAAGvc,GAAEl2E,EAAKhlB,EAAE6oM,OASpB,SAASG,GAAUX,EAAIrjL,GAOnB,GAAImjL,GAAoBnjL,EAAKhlB,GACzB,OAAO,IAAI2D,MAAM,GAAG0uC,KAAK,MAE7B,IAAI7xC,EAEET,EAAEsoM,EAAG9vF,OAAO,EAAG,GAAGzsG,cAClB4B,EAAE26L,EAAG9vF,OAAO,EAAG,GAAGzsG,cAExB,GAAkC,KAA9Bu8L,EAAGtkI,OAAO,GAAGj4D,eAAyB,OAAH4B,EAEnClN,GADIyoM,EAAK/tG,GAAEl2E,EAAKhlB,EAAEkpM,MAAQ,IAAMhuG,GAAEl2E,EAAKhlB,EAAEmpM,OACzC,UAAY,IAAIxlM,MAAM,GAAG0uC,KAAK,aAC3B,GAAkC,KAA9Bg2J,EAAGtkI,OAAO,GAAGj4D,cAAsB,CAC1C,IAAIm9L,EAAK,CACL/tG,GAAEl2E,EAAKhlB,EAAEkpM,MAAQ,IAAMhuG,GAAEl2E,EAAKhlB,EAAEmpM,MAChCjuG,GAAEl2E,EAAKhlB,EAAEopM,MAAQ,IAAMluG,GAAEl2E,EAAKhlB,EAAEqpM,OAEpC7oM,YAAQyoM,EAAR,GAAe,IAAItlM,MAAM,GAAG0uC,KAAK,YAE3B,SAAHtyC,GAAe,SAAHA,GAAe,SAAHA,GAAe,OAAH2N,GACnClN,EAAI,CACA06F,GAAEl2E,EAAKhlB,EAAEkpM,MAAQ,IAAMhuG,GAAEl2E,EAAKhlB,EAAEmpM,MAChCjuG,GAAEl2E,EAAKhlB,EAAEopM,MAAQ,IAAMluG,GAAEl2E,EAAKhlB,EAAEqpM,MAChCnuG,GAAEl2E,EAAKhlB,EAAEspM,MAAQ,IAAMpuG,GAAEl2E,EAAKhlB,EAAEupM,OAEpC/oM,eAAQA,GAAR,GAAc,IAAImD,MAAM,GAAG0uC,KAAK,SAEhC7xC,EAAI,CACA06F,GAAEl2E,EAAKhlB,EAAEkpM,MAAQ,IAAMhuG,GAAEl2E,EAAKhlB,EAAEmpM,MAChCjuG,GAAEl2E,EAAKhlB,EAAEopM,MAAQ,IAAMluG,GAAEl2E,EAAKhlB,EAAEqpM,MAChCnuG,GAAEl2E,EAAKhlB,EAAEspM,MAAQ,IAAMpuG,GAAEl2E,EAAKhlB,EAAEupM,MAChCruG,GAAEl2E,EAAKhlB,EAAEwpM,MAAQ,IAAMtuG,GAAEl2E,EAAKhlB,EAAEypM,OAK5C,OAAOjpM,EAAEwI,KAAI,SAAS6V,GAClB,MAAG,MAAMxN,KAAKwN,GACH,KAEJA,KASf,SAAS6qL,GAAQrB,EAAIrjL,GAKjB,IAEMjlB,EAAIsoM,EAAG9vF,OAAO,EAAG,GAAGzsG,cAC1B,GAAIq8L,GAAoBnjL,EAAKhlB,KAAO,8CAA8CqR,KAAKg3L,GACnF,MAAM,UAAHtoM,GAAgB,UAAHA,EACH,CACL,CAACm7F,GAAEl2E,EAAKhlB,EAAE2pM,OAAQzuG,GAAEl2E,EAAKhlB,EAAE4pM,QAAQn4L,KAAK,KACxC,CAACypF,GAAEl2E,EAAKhlB,EAAE6pM,OAAQ3uG,GAAEl2E,EAAKhlB,EAAE8pM,QAAQr4L,KAAK,MAC1ChO,OAAO,IAAIE,MAAM,GAAG0uC,KAAK,OAEpB,IAAI1uC,MAAM,GAAG0uC,KAAK,MAGjC,GAAGtyC,EAAEmG,QAAQ,UAAU,GAAGnG,EAAEmG,QAAQ,UAAU,GAAGnG,EAAEmG,QAAQ,UAAU,EACjE,MAAS,CACL,CAACg1F,GAAEl2E,EAAKhlB,EAAE2pM,OAAQzuG,GAAEl2E,EAAKhlB,EAAE4pM,QAAQn4L,KAAK,KACxC,CAACypF,GAAEl2E,EAAKhlB,EAAE6pM,OAAQ3uG,GAAEl2E,EAAKhlB,EAAE8pM,QAAQr4L,KAAK,KACxC,CAACypF,GAAEl2E,EAAKhlB,EAAE+pM,OAAQ7uG,GAAEl2E,EAAKhlB,EAAEgqM,QAAQv4L,KAAK,MAC1ChO,OAAO,IAAIE,MAAM,GAAG0uC,KAAK,OAE/B,GAAGtyC,EAAEmG,QAAQ,UAAU,EACnB,MAAS,CACL,CAACg1F,GAAEl2E,EAAKhlB,EAAE2pM,OAAQzuG,GAAEl2E,EAAKhlB,EAAE4pM,OAAO1uG,GAAEl2E,EAAKhlB,EAAE6pM,QAAQp4L,KAAK,KACxD,CAACypF,GAAEl2E,EAAKhlB,EAAE8pM,OAAQ5uG,GAAEl2E,EAAKhlB,EAAE+pM,OAAO7uG,GAAEl2E,EAAKhlB,EAAEgqM,QAAQv4L,KAAK,KACxD,CAACypF,GAAEl2E,EAAKhlB,EAAEiqM,OAAQ/uG,GAAEl2E,EAAKhlB,EAAEkqM,OAAOhvG,GAAEl2E,EAAKhlB,EAAEmqM,QAAQ14L,KAAK,KACxD,CAACypF,GAAEl2E,EAAKhlB,EAAEoqM,QAASlvG,GAAEl2E,EAAKhlB,EAAEqqM,QAAQnvG,GAAEl2E,EAAKhlB,EAAEsqM,SAAS74L,KAAK,MAC7DhO,OAAO,IAAIE,MAAM,GAAG0uC,KAAK,OAE/B,OAAQtyC,GACJ,IAAK,SACL,IAAK,SACD,MAAS,CACL,CAACm7F,GAAEl2E,EAAKhlB,EAAE2pM,OAAQzuG,GAAEl2E,EAAKhlB,EAAE4pM,QAAQn4L,KAAK,KACxC,CAACypF,GAAEl2E,EAAKhlB,EAAE6pM,OAAQ3uG,GAAEl2E,EAAKhlB,EAAE8pM,QAAQr4L,KAAK,KACxC,CAACypF,GAAEl2E,EAAKhlB,EAAE+pM,OAAQ7uG,GAAEl2E,EAAKhlB,EAAEgqM,QAAQv4L,KAAK,KACxC,CAACypF,GAAEl2E,EAAKhlB,EAAEiqM,OAAQ/uG,GAAEl2E,EAAKhlB,EAAEkqM,QAAQz4L,KAAK,MAEhD,IAAK,SACL,IAAK,SACL,IAAK,SACD,MAAS,CACL,CAACypF,GAAEl2E,EAAKhlB,EAAE2pM,OAAQzuG,GAAEl2E,EAAKhlB,EAAE4pM,OAAO1uG,GAAEl2E,EAAKhlB,EAAE6pM,QAAQp4L,KAAK,KACxD,CAACypF,GAAEl2E,EAAKhlB,EAAE8pM,OAAQ5uG,GAAEl2E,EAAKhlB,EAAE+pM,OAAO7uG,GAAEl2E,EAAKhlB,EAAEgqM,QAAQv4L,KAAK,KACxD,CAACypF,GAAEl2E,EAAKhlB,EAAEiqM,OAAQ/uG,GAAEl2E,EAAKhlB,EAAEkqM,QAAQz4L,KAAK,KACxC,CAACypF,GAAEl2E,EAAKhlB,EAAEoqM,QAASlvG,GAAEl2E,EAAKhlB,EAAEqqM,SAAS54L,KAAK,MAElD,IAAK,SACL,IAAK,SACL,IAAK,SACL,IAAK,SACL,IAAK,SACL,IAAK,SACL,IAAK,SACD,MAAS,CACL,CAACypF,GAAEl2E,EAAKhlB,EAAE2pM,OAAQzuG,GAAEl2E,EAAKhlB,EAAE4pM,OAAO1uG,GAAEl2E,EAAKhlB,EAAE6pM,QAAQp4L,KAAK,KACxD,CAACypF,GAAEl2E,EAAKhlB,EAAE8pM,OAAQ5uG,GAAEl2E,EAAKhlB,EAAE+pM,OAAO7uG,GAAEl2E,EAAKhlB,EAAEgqM,QAAQv4L,KAAK,KACxD,CAACypF,GAAEl2E,EAAKhlB,EAAEiqM,OAAQ/uG,GAAEl2E,EAAKhlB,EAAEkqM,OAAOhvG,GAAEl2E,EAAKhlB,EAAEmqM,QAAQ14L,KAAK,KACxD,CAACypF,GAAEl2E,EAAKhlB,EAAEoqM,QAASlvG,GAAEl2E,EAAKhlB,EAAEqqM,QAAQnvG,GAAEl2E,EAAKhlB,EAAEsqM,SAAS74L,KAAK,MAEnE,IAAK,SACL,IAAK,SACD,MAAS,CACL,CAACypF,GAAEl2E,EAAKhlB,EAAE2pM,OAAQzuG,GAAEl2E,EAAKhlB,EAAE4pM,OAAO1uG,GAAEl2E,EAAKhlB,EAAE6pM,QAAQp4L,KAAK,KACxD,CAACypF,GAAEl2E,EAAKhlB,EAAE8pM,OAAQ5uG,GAAEl2E,EAAKhlB,EAAE+pM,OAAO7uG,GAAEl2E,EAAKhlB,EAAEgqM,QAAQv4L,KAAK,KACxD,CAACypF,GAAEl2E,EAAKhlB,EAAEiqM,OAAQ/uG,GAAEl2E,EAAKhlB,EAAEkqM,OAAOhvG,GAAEl2E,EAAKhlB,EAAEmqM,QAAQ14L,KAAK,KACxD,CAACypF,GAAEl2E,EAAKhlB,EAAEoqM,QAASlvG,GAAEl2E,EAAKhlB,EAAEqqM,QAAQnvG,GAAEl2E,EAAKhlB,EAAEsqM,QAAQpvG,GAAEl2E,EAAKhlB,EAAEuqM,SAAS94L,KAAK,MAEpF,IAAK,SACL,IAAK,SACL,IAAK,SACD,MAAS,CACL,CAACypF,GAAEl2E,EAAKhlB,EAAE2pM,OAAQzuG,GAAEl2E,EAAKhlB,EAAE4pM,OAAO1uG,GAAEl2E,EAAKhlB,EAAE6pM,OAAO3uG,GAAEl2E,EAAKhlB,EAAE8pM,QAAQr4L,KAAK,KACxE,CAACypF,GAAEl2E,EAAKhlB,EAAE+pM,OAAQ7uG,GAAEl2E,EAAKhlB,EAAEgqM,OAAO9uG,GAAEl2E,EAAKhlB,EAAEiqM,OAAO/uG,GAAEl2E,EAAKhlB,EAAEkqM,QAAQz4L,KAAK,KACxE,CAACypF,GAAEl2E,EAAKhlB,EAAEmqM,OAAQjvG,GAAEl2E,EAAKhlB,EAAEoqM,QAAQlvG,GAAEl2E,EAAKhlB,EAAEqqM,QAAQnvG,GAAEl2E,EAAKhlB,EAAEsqM,SAAS74L,KAAK,KAC3E,CAACypF,GAAEl2E,EAAKhlB,EAAEuqM,QAASrvG,GAAEl2E,EAAKhlB,EAAEwqM,QAAQtvG,GAAEl2E,EAAKhlB,EAAEyqM,QAAQvvG,GAAEl2E,EAAKhlB,EAAE0qM,SAASj5L,KAAK,MAEpF,QACI,MAAkC,SAA/B42L,EAAG9vF,OAAO,EAAG,GAAGzsG,eAAuD,SAA/Bu8L,EAAG9vF,OAAO,EAAG,GAAGzsG,cAC9C,CACL,CAACovF,GAAEl2E,EAAKhlB,EAAE2pM,OAAQzuG,GAAEl2E,EAAKhlB,EAAE4pM,OAAO1uG,GAAEl2E,EAAKhlB,EAAE6pM,QAAQp4L,KAAK,KACxD,CAACypF,GAAEl2E,EAAKhlB,EAAE8pM,OAAQ5uG,GAAEl2E,EAAKhlB,EAAE+pM,OAAO7uG,GAAEl2E,EAAKhlB,EAAEgqM,QAAQv4L,KAAK,KACxD,CAACypF,GAAEl2E,EAAKhlB,EAAEiqM,OAAQ/uG,GAAEl2E,EAAKhlB,EAAEkqM,OAAOhvG,GAAEl2E,EAAKhlB,EAAEmqM,QAAQ14L,KAAK,KACxD,CAACypF,GAAEl2E,EAAKhlB,EAAEoqM,QAASlvG,GAAEl2E,EAAKhlB,EAAEqqM,QAAQnvG,GAAEl2E,EAAKhlB,EAAEsqM,SAAS74L,KAAK,MAGjC,SAA/B42L,EAAG9vF,OAAO,EAAG,GAAGzsG,cACN,CACL,CAACovF,GAAEl2E,EAAKhlB,EAAE2pM,OAAQzuG,GAAEl2E,EAAKhlB,EAAE4pM,OAAO1uG,GAAEl2E,EAAKhlB,EAAE6pM,QAAQp4L,KAAK,KACxD,CAACypF,GAAEl2E,EAAKhlB,EAAE8pM,OAAQ5uG,GAAEl2E,EAAKhlB,EAAE+pM,OAAO7uG,GAAEl2E,EAAKhlB,EAAEgqM,QAAQv4L,KAAK,KACxD,CAACypF,GAAEl2E,EAAKhlB,EAAEiqM,OAAQ/uG,GAAEl2E,EAAKhlB,EAAEkqM,QAAQz4L,KAAK,KACxC,CAACypF,GAAEl2E,EAAKhlB,EAAEoqM,QAASlvG,GAAEl2E,EAAKhlB,EAAEqqM,SAAS54L,KAAK,MAG3C,IAAI9N,MAAM,GAAG0uC,KAAK,OAUtB,IClQqL,GC0FpM,CACA,sBACA,QC5Fe,CACXjkB,MAAO,CACH2tD,MAAO,CACH/3E,KAAM5D,OACNkuE,QAAS,KAGjBtpD,KAPW,WAQP,MAAO,CACH9M,KAAMyyL,OAAOC,IAAIC,SAASC,QAGlC1vL,QAAS,CACL2vL,WADK,SACMC,GACP,MAAY,KAARA,GAAuB,IAARA,QAGE,IAATA,GAAwB,MAAQA,EAFjC,OAKXA,EAAO,IAAIj+L,KAAKi+L,IACEC,WAAa,GAAM,GAAMD,EAAKC,WAAa,EAAK,KAAOD,EAAKC,WAAa,IAE5E,KADLD,EAAKE,WAAa,GAAMF,EAAKE,UAAc,IAAMF,EAAKE,WACrC,IAAMF,EAAKG,eAE1CC,mBAbK,SAacvsL,GACf,OAAKA,GAAU,KAALA,EAGHA,EAFI,MAIfwsL,WAnBK,SAmBMxsL,GACP,MACI,CACI,KAAM8rL,OAAOC,IAAIC,SAASC,MAAMQ,QAChC,EAAKX,OAAOC,IAAIC,SAASC,MAAMS,aAC/B,EAAKZ,OAAOC,IAAIC,SAASC,MAAMU,eAC/B,EAAKb,OAAOC,IAAIC,SAASC,MAAMW,aACjC5sL,IAAMA,GAGhB6sL,iBA7BK,SA6BY96J,GACb,OAAKA,GAAc,KAAPA,IAGZA,EAAMA,EAAIhlC,MAAM,MACZ+B,MACGijC,EAAIn/B,KAAK,MAJL,qBAMfk6L,WAAY,SAAU9sL,GAClB,OAAKA,GAAU,KAALA,GAGFA,EAAI,KAAM8kG,QAAQ,GAFf,MAKfioF,YAAa,SAAU/sL,GACnB,OAAKA,GAAU,KAALA,EAGHA,EAAE8kG,QAAQ,GAFN,MAIf9tD,UAAW,SAAUh3C,GACjB,MAAS,eAALA,EACO8rL,OAAOC,IAAIC,SAASC,MAAMe,UACtB,YAALhtL,EACC8rL,OAAOC,IAAIC,SAASC,MAAMgB,OACrB,cAALjtL,EACA8rL,OAAOC,IAAIC,SAASC,MAAMiB,WACtB,WAALltL,EACC8rL,OAAOC,IAAIC,SAASC,MAAMkB,aAD/B,IAKd99J,QAAS,CAEL+9J,WAAY,SAAUr7J,GAClB,GAAW,MAAPA,GAAsB,IAAPA,GAAoB,MAAPA,EAC5B,MAAO,CAAC,KAAM,IAMlB,IAJA,IAAIhrC,EAAMgrC,EAAIxqC,WAAWwF,MAAM,KAE3BsgM,EAAY,GACZC,EAAW,GACNzsM,EAAI,EAAGA,EAAIkG,EAAIxB,OAAQ1E,IAAK,CACjC,IAAI0sM,EAAY92K,WAAW1vB,EAAIlG,IAC3BktC,MAAMw/J,KACNA,EAAY,MAEhB,IAAIC,EAAWzmM,EAAIlG,GAAG+K,QAAQ,WAAY,IAC1CyhM,EAAUjnM,KAAKmnM,GACfD,EAASlnM,KAAKonM,GAGlB,MAAO,CAACH,EAAUz6L,KAAK,KAAM06L,EAAS16L,KAAK,OAG/C66L,YAAa,SAAUztL,GAKnB,OAHSla,OADLka,EAAIA,EAAEjT,MAAM,KAAK,MAEjBiT,EAAI,GAEDA,EAAI,IAAM,GAAK,SDTlC,UACA,GADA,WAEA,OFmKe,SAAUwpL,EAAIrjL,GACzB,MAAO,CACH42E,GAAIwsG,GAAUC,EAAIrjL,GAClBunL,GAAIvD,GAAUX,EAAIrjL,GAClBwnL,KAAM9C,GAAQrB,EAAIrjL,IEvK1B,4BAEA,EAJA,WAKA,2BEhFe,GAXC,YACd,ICRW,WAAa,IAAI8uI,EAAIrxJ,KAASyyG,EAAG4+C,EAAIhgF,eAAmB4D,EAAGo8E,EAAI9wE,MAAMtL,IAAIw9B,EAAG,OAAOx9B,EAAG,MAAM,CAACA,EAAG,QAAQ,CAACyP,YAAY,gCAAgC90E,MAAM,CAAC,KAAO,SAAS,KAAO,iBAAiBuiE,SAAS,CAAC,MAAQk/E,EAAI/3E,MAAMssH,MAAMv0C,EAAIn9E,GAAG,KAAKe,EAAG,MAAM,CAACyP,YAAY,cAAcgG,YAAY,CAAC,OAAS,UAAU,CAACzV,EAAG,MAAM,CAACyP,YAAY,qBAAqBjK,MAAM,CAAC,wBAAyB42E,EAAI/3E,MAAM0wH,iBAAiB,CAAC34C,EAAIn9E,GAAGm9E,EAAI39E,GAAG29E,EAAI/3E,MAAM97E,SAAS6zJ,EAAIn9E,GAAG,KAAKe,EAAG,KAAK,CAACyP,YAAY,wBAAwB,CAACzP,EAAG,KAAK,CAACA,EAAG,QAAQ,CAACo8E,EAAIn9E,GAAGm9E,EAAI39E,GAAG29E,EAAI57I,KAAKw0L,qBAAqB54C,EAAIn9E,GAAG,KAAKe,EAAG,OAAO,CAACo8E,EAAIn9E,GAAGm9E,EAAI39E,GAAG29E,EAAIt9E,GAAG,qBAAPs9E,CAA6BA,EAAI/3E,MAAM/3E,YAAY8vJ,EAAIn9E,GAAG,KAAKe,EAAG,KAAK,CAACA,EAAG,QAAQ,CAACo8E,EAAIn9E,GAAGm9E,EAAI39E,GAAG29E,EAAI57I,KAAKy0L,qBAAqB74C,EAAIn9E,GAAG,KAAKe,EAAG,OAAO,CAACo8E,EAAIn9E,GAAGm9E,EAAI39E,GAAG29E,EAAIt9E,GAAG,qBAAPs9E,CAA6BA,EAAI/3E,MAAMssH,UAAUv0C,EAAIn9E,GAAG,KAAKe,EAAG,KAAK,CAACA,EAAG,QAAQ,CAACo8E,EAAIn9E,GAAG,eAAem9E,EAAIn9E,GAAG,KAAKe,EAAG,OAAO,CAACo8E,EAAIn9E,GAAGm9E,EAAI39E,GAAG29E,EAAIt9E,GAAG,qBAAPs9E,CAA6BA,EAAI/3E,MAAM6wH,kBAAkB94C,EAAIn9E,GAAG,KAAKe,EAAG,KAAK,CAACA,EAAG,QAAQ,CAACo8E,EAAIn9E,GAAGm9E,EAAI39E,GAAG29E,EAAI57I,KAAK20L,iBAAiB/4C,EAAIn9E,GAAG,KAAKe,EAAG,OAAO,CAACo8E,EAAIn9E,GAAGm9E,EAAI39E,GAAG29E,EAAIt9E,GAAG,cAAPs9E,CAAsBA,EAAI/3E,MAAM+wH,cAAch5C,EAAIn9E,GAAG,KAAKe,EAAG,KAAK,CAACo8E,EAAIn9E,GAAG,UAAUm9E,EAAIn9E,GAAG,KAAKe,EAAG,KAAK,CAACA,EAAG,QAAQ,CAACo8E,EAAIn9E,GAAGm9E,EAAI39E,GAAG29E,EAAI57I,KAAK60L,eAAej5C,EAAIn9E,GAAG,KAAKe,EAAG,OAAO,CAACo8E,EAAIn9E,GAAGm9E,EAAI39E,GAAG29E,EAAIt9E,GAAG,aAAPs9E,CAAqBA,EAAI/3E,MAAMixH,mBAAmBl5C,EAAIn9E,GAAG,KAAKe,EAAG,KAAK,CAACA,EAAG,QAAQ,CAACo8E,EAAIn9E,GAAGm9E,EAAI39E,GAAG29E,EAAI57I,KAAK+0L,sBAAsBn5C,EAAIn9E,GAAG,KAAKe,EAAG,OAAO,CAACo8E,EAAIn9E,GAAGm9E,EAAI39E,GAAG29E,EAAIt9E,GAAG,aAAPs9E,CAAqBA,EAAI/3E,MAAMmxH,aAAap5C,EAAIn9E,GAAG,KAAKe,EAAG,KAAK,CAACo8E,EAAIn9E,GAAG,UAAUm9E,EAAIn9E,GAAG,KAAKe,EAAG,KAAK,CAACA,EAAG,QAAQ,CAACo8E,EAAIn9E,GAAGm9E,EAAI39E,GAAG29E,EAAI57I,KAAKi1L,2BAA2Br5C,EAAIn9E,GAAG,KAAKe,EAAG,OAAO,CAACo8E,EAAIn9E,GAAGm9E,EAAI39E,GAAG29E,EAAIu0C,GAAGzsG,GAAG/8E,MAAMi1I,EAAIn9E,GAAG,KAAKe,EAAG,KAAK,CAACo8E,EAAIn9E,GAAG,SAASm9E,EAAIn9E,GAAG,KAAKe,EAAG,KAAK,CAACA,EAAG,QAAQ,CAACo8E,EAAIn9E,GAAGm9E,EAAI39E,GAAG29E,EAAI57I,KAAKk1L,2BAA2Bt5C,EAAIn9E,GAAG,KAAKe,EAAG,OAAO,CAACo8E,EAAIn9E,GAAGm9E,EAAI39E,GAAG29E,EAAIu0C,GAAGzsG,GAAGl8F,MAAMo0J,EAAIn9E,GAAG,KAAKe,EAAG,KAAK,CAACo8E,EAAIn9E,GAAG,SAASm9E,EAAIn9E,GAAG,KAAKe,EAAG,KAAK,CAACA,EAAG,QAAQ,CAACo8E,EAAIn9E,GAAGm9E,EAAI39E,GAAG29E,EAAI57I,KAAKm1L,6BAA6Bv5C,EAAIn9E,GAAG,KAAKe,EAAG,OAAO,CAACo8E,EAAIn9E,GAAGm9E,EAAI39E,GAAG29E,EAAIu0C,GAAGzsG,GAAG6b,MAAMq8C,EAAIn9E,GAAG,KAAKe,EAAG,KAAK,CAACo8E,EAAIn9E,GAAG,YAAYm9E,EAAIn9E,GAAG,KAAKe,EAAG,KAAK,CAACyP,YAAY,yBAAyB,CAACzP,EAAG,KAAK,CAACA,EAAG,QAAQ,CAACo8E,EAAIn9E,GAAGm9E,EAAI39E,GAAG29E,EAAI57I,KAAKo1L,gBAAgBx5C,EAAIn9E,GAAG,KAAKe,EAAG,OAAO,CAACo8E,EAAIn9E,GAAGm9E,EAAI39E,GAAG29E,EAAIt9E,GAAG,qBAAPs9E,CAA6BA,EAAI/3E,MAAMwxH,kBAAkBz5C,EAAIn9E,GAAG,KAAKe,EAAG,KAAK,CAACo8E,EAAIn9E,GAAG,UAAUm9E,EAAIn9E,GAAG,KAAKm9E,EAAI19E,GAAG,GAAI,SAASjhB,EAAEz1D,GAAG,OAAOg4E,EAAG,KAAK,CAACz2E,IAAIvB,GAAG,CAACg4E,EAAG,QAAQ,CAACo8E,EAAIn9E,GAAGm9E,EAAI39E,GAAG29E,EAAI57I,KAAKs1L,0BAA0B15C,EAAI39E,GAAGhhB,MAAM2+F,EAAIn9E,GAAG,KAAKe,EAAG,OAAO,CAACo8E,EAAIn9E,GAAGm9E,EAAI39E,GAAG29E,EAAIu0C,GAAGkE,GAAG7sM,OAAOo0J,EAAIn9E,GAAG,KAAKe,EAAG,KAAK,CAACo8E,EAAIn9E,GAAG,cAAam9E,EAAIn9E,GAAG,KAAKm9E,EAAI19E,GAAG,GAAI,SAASjhB,EAAEz1D,GAAG,OAAOg4E,EAAG,KAAK,CAACz2E,IAAIvB,EAAE,GAAG,CAACg4E,EAAG,QAAQ,CAACo8E,EAAIn9E,GAAGm9E,EAAI39E,GAAG29E,EAAI57I,KAAKu1L,mBAAmB35C,EAAI39E,GAAGhhB,MAAM2+F,EAAIn9E,GAAG,KAAKe,EAAG,OAAO,CAACo8E,EAAIn9E,GAAGm9E,EAAI39E,GAAG29E,EAAIu0C,GAAGmE,KAAK9sM,OAAOo0J,EAAIn9E,GAAG,KAAKe,EAAG,KAAK,CAACo8E,EAAIn9E,GAAG,aAAY,GAAGm9E,EAAIn9E,GAAG,KAAKe,EAAG,MAAM,CAACyP,YAAY,sBAAsB,CAACzP,EAAG,IAAI,CAACo8E,EAAIn9E,GAAGm9E,EAAI39E,GAAG29E,EAAI9zJ,EAAE0tM,MAAQ,MAAM55C,EAAIn9E,GAAG,KAAKe,EAAG,OAAO,CAACo8E,EAAIn9E,GAAG,SAASm9E,EAAIn9E,GAAG,KAAKe,EAAG,OAAO,CAACo8E,EAAIn9E,GAAGm9E,EAAI39E,GAAG29E,EAAI57I,KAAKy1L,8BAA8B75C,EAAIn9E,GAAG,KAAKe,EAAG,MAAM,CAACyP,YAAY,8BAA8B,CAACzP,EAAG,KAAK,CAACo8E,EAAIn9E,GAAGm9E,EAAI39E,GAAG29E,EAAI57I,KAAK01L,sBAAsB95C,EAAIn9E,GAAG,KAAKe,EAAG,IAAI,CAACo8E,EAAIn9E,GAAGm9E,EAAI39E,GAAG29E,EAAI9zJ,EAAE6tM,QAAU,GAAG,WAAW/5C,EAAIn9E,GAAG,KAAKe,EAAG,MAAM,CAACyP,YAAY,+BAA+B,CAACzP,EAAG,KAAK,CAACo8E,EAAIn9E,GAAGm9E,EAAI39E,GAAG29E,EAAI57I,KAAK41L,0BAA0Bh6C,EAAIn9E,GAAG,KAAKe,EAAG,IAAI,CAACo8E,EAAIn9E,GAAGm9E,EAAI39E,GAAG29E,EAAI9zJ,EAAE+tM,QAAU,GAAGj6C,EAAI39E,GAAG29E,EAAI57I,KAAK81L,mBAAmBl6C,EAAIn9E,GAAG,KAAKe,EAAG,MAAM,CAACyP,YAAY,mBAAmB,CAACzP,EAAG,MAAM,CAACyP,YAAY,gBAAgB90E,MAAM,CAAC,cAAcyhJ,EAAI/3E,MAAM51C,SAAS,CAAC2tH,EAAIn9E,GAAGm9E,EAAI39E,GAAG29E,EAAIt9E,GAAG,aAAPs9E,CAAqBA,EAAI/3E,MAAM51C,YAAY2tH,EAAIn9E,GAAG,MAA2B,GAArBm9E,EAAI/3E,MAAM51C,QAAiB2tH,EAAI9zJ,EAAEiuM,KAA6Jn6C,EAAIl9E,KAA3Jc,EAAG,MAAM,CAACyP,YAAY,iBAAiB,CAAC2sE,EAAIn9E,GAAGm9E,EAAI39E,GAAG29E,EAAI57I,KAAKg2L,oBAAoB,KAAKp6C,EAAI39E,GAAG29E,EAAIt9E,GAAG,mBAAPs9E,CAA2BA,EAAI9zJ,EAAEmuM,uBAAgCr6C,EAAIn9E,GAAG,MAA2B,GAArBm9E,EAAI/3E,MAAM51C,OAAcuxC,EAAG,MAAM,CAACyP,YAAY,iBAAiB,CAAC2sE,EAAIn9E,GAAGm9E,EAAI39E,GAAG29E,EAAI/3E,MAAMqyH,kBAAkBt6C,EAAIl9E,aACtyH,IDUpB,EACA,KACA,KACA,M,QEZFy3H,GAASnoH,QAAU,SAASrE,GACxBA,EAAIlG,UAAU0yH,GAASpuM,KAAMouM,KAGlBA,UCN8L,GCC7M,CACIpuM,KAAM,oBACNmuB,MAAO,CACHixB,KAAM,CACFr7C,KAAMuL,OACN++D,QAAS,UAEbnoC,OAAQ,CACJniC,KAAM,CAACuL,OAAQovD,QACf2vI,UAAU,IAGlB1sM,OAZJ,SAYA,GACQ,IAAR,sBACA,EAAY,SAAZ,oCAAY,CAAZ,sBACA,KAEQ,OACR,EAAY,OAAZ,qGAAY,CACZ,6CACA,MCFe,I,OAXC,YACd,QATE,OAAQ,GAYV,EACA,KACA,KACA,M,SCbF2sM,GAAkBroH,QAAU,SAAArE,GACxBA,EAAIlG,UAAU4yH,GAAkBtuM,KAAMsuM,KAG3BA,UCNuL,GCCtM,CACItuM,KAAM,aACNmuB,MAAO,CACH0F,MAAOvkB,OACP2mB,OAAQ3mB,QAEZ3N,OANJ,SAMA,GACQ,IAAR,sBACQ,IAAK,IAAb,iBACgBa,KAAK+rM,OAAOr5I,KACZpuC,EAAMouC,GAAK,KAA3B,2FAIQ,OACR,EAAY,OAAZ,6BAAY,CACZ,wBCEe,I,OAXC,YACd,QATE,OAAQ,GAYV,EACA,KACA,KACA,M,SCbFs5I,GAAWvoH,QAAU,SAAArE,GACjBA,EAAIlG,UAAU8yH,GAAWxuM,KAAMwuM,KAGpBA,UCNgM,GCC/M,CACIxuM,KAAM,sBACNmuB,MAAO,CACHztB,MAAO,KACPu1B,OAAQ,CACJlyB,KAAMuL,OACN++D,QAAS,MAEbi1C,SAAU,CACNv/G,KAAMuL,OACN++D,QAAS,MAEbx6C,MAAO,CACH9vB,KAAMuL,OACN++D,QAAS,OAEbogI,SAAU,CACN1qM,KAAMQ,SACN8pE,QAAS,eAGjBtpD,KArBJ,WAsBQ,MAAO,CACH2pL,MAAM,EACNC,SAAU,GACVjkL,KAAK,IAGbujB,QAAS,CACL2gK,iBADR,WAEYpsM,KAAKmsM,SAAWnsM,KAAK9B,MACrB8B,KAAKksM,MAAO,EACZlsM,KAAKisM,SAASjsM,OAElBqsM,YANR,SAMA,GACYrsM,KAAKmsM,SAAWt+L,EAAEnG,OAAOxJ,MACzB8B,KAAKisM,SAASjsM,OAElBssM,iBAVR,SAUA,GAC8B,KAAdz+L,EAAEkf,SAAgBlf,EAAEnG,OAAOomB,QAEnCy+K,gBAbR,SAaA,GACgBvsM,KAAKkoB,MACTloB,KAAKksM,MAAO,EACRlsM,KAAKmsM,UAAYnsM,KAAK9B,OAC1B8B,KAAKq7E,MAAM,SAAUr7E,QAEzBokC,QAnBR,WAoBYpkC,KAAKq7E,MAAM,QAASr7E,KAAKmsM,YAGjC3hI,WAAY,CACR38C,MAAO,CACH25C,SADZ,SACA,GACgB93D,EAAGme,WAIf1uB,OA1DJ,SA0DA,GACQ,IAAR,SAwBQ,OAtBIqtM,EADAxsM,KAAKksM,KAEjB,WAAgB,WAAhB,0BAAgB,SAAhB,OAEA,eAFgB,GAAhB,OAGA,iBAHA,MAIA,sBAJA,KAKA,sBACgB,MAAhB,+BACgB,MAAhB,8BAPgB,MAAhB,CAQA,eAIA,EAAgB,OAAhB,UACA,uBACoBzxH,MAApB,+BACoBn2D,MAApB,8BAHA,OAIA,mBAJgB,CAKhB,aAKA,EAAY,OACIm2D,MAAhB,wBACgBn2D,MAAhB,CACoB+M,MAAO,KAA3B,WACoBoC,OAAQ,KAA5B,YACoBqtF,SAAU,KAA9B,cACoBpqF,OAAQ12B,KAAKkoB,IAAM,gBAAkB,0BAN7C,CAQZ,MC1Ee,I,OAXC,YACd,QATE,OAAQ,GAYV,EACA,KACA,KACA,M,SCbFukL,GAAoBhpH,QAAU,SAAArE,GAC1BA,EAAIlG,UAAUuzH,GAAoBjvM,KAAMivM,KAG7BA,UCN0L,GCYzM,CACIjvM,KAAM,gBACNmuB,MAAO,CACH+X,OAAQ,CAAEmoC,QAAS,GACnB6gI,IAAK,CAAE7gI,QAAS,GAChBlqE,OAAR,YACQgrM,QAAS,CAAE9gI,SAAS,IAExBtpD,KARJ,WASQ,MAAO,CACHqqL,OAAQ,EACRjzK,MAAO,OAGfkrC,MAAO,CACH6nI,IADR,SACA,GAC+B,GAAf1sM,KAAK0jC,QAA8B,GAAf1jC,KAAK0jC,QACzB1jC,KAAKupM,WAGb7lK,OANR,SAMA,GACqB,GAALtnB,EAAQpc,KAAK6sM,WAC7B,wBACA,iBAGIphK,QAAS,CACLohK,SADR,WACA,WACY7vB,cAAch9K,KAAK25B,OACnB35B,KAAK25B,MAAQojJ,aAAY,WACjB,EAApB,4BACA,MAEQ+vB,YAPR,WAOA,WACY9vB,cAAch9K,KAAK25B,OACnB35B,KAAK25B,MAAQojJ,aAAY,WACjB,EAApB,4BACA,MAEQwsB,QAbR,WAcYvsB,cAAch9K,KAAK25B,OACnB35B,KAAK4sM,OAAS9kM,KAAK0tB,KAAKx1B,KAAK0sM,IAAM,KAEvCz1K,IAjBR,SAiBA,GAC0B,GAAVyM,EAAa1jC,KAAK6sM,WAClC,wBACA,iBAGI7pH,QAAJ,sBACQhjF,KAAKmiF,WAAU,WACX,EAAZ,mBC5Ce,I,OAXC,YACd,ICTW,WAAa,IAAIkvE,EAAIrxJ,KAASyyG,EAAG4+C,EAAIhgF,eAAmB4D,EAAGo8E,EAAI9wE,MAAMtL,IAAIw9B,EAAG,OAAOx9B,EAAG,MAAM,CAACyP,YAAY,iBAAiBjK,MAAM,kBAAkB42E,EAAI1vJ,QAAQ,CAAC0vJ,EAAI19E,GAAG,GAAI,SAASjyE,GAAO,OAAOuzE,EAAG,MAAM,CAACz2E,IAAIkD,EAAMgjF,YAAY,uBAAuBjK,MAAM,CAAE,6BAA8B/4E,EAAQ2vJ,EAAIu7C,aAAYv7C,EAAIn9E,GAAG,KAAMm9E,EAAW,QAAEp8E,EAAG,MAAM,CAACyP,YAAY,WAAWjK,MAAqB,IAAf42E,EAAI3tH,OAAe,aAAe,eAAe,CAAC2tH,EAAIn9E,GAAG,aAAam9E,EAAI39E,GAAG29E,EAAIq7C,KAAmB,OAAZr7C,EAAIq7C,IAAe,IAAK,KAAK,YAAYr7C,EAAIl9E,MAAM,KACzf,IDWpB,EACA,KACA,KACA,M,SEbF44H,GAActpH,QAAU,SAAArE,GACpBA,EAAIlG,UAAU6zH,GAAcvvM,KAAMuvM,KAGvBA,UCN8L,GCsE7M,CACE,KAAF,oBACE,MAAF,CACI,KAAJ,0BACI,YAAJ,yBACI,UAAJ,8BAEE,MAAF,CACI,gBADJ,SACA,GACM,IAAN,qCACM,EAAN,kCACM,EAAN,oDAGE,KAdF,WAeI,MAAJ,CACM,IAAN,KACM,KAAN,0BACM,kBAAN,GACM,UAAN,CACQ,QAAR,kCACQ,QAAR,oCACQ,QAAR,kCAEM,kBAAN,EACM,UAAN,CACA,4BACA,+BACA,2CACA,2CACA,8CACA,0BACA,6BACA,uCACA,+BACA,mCAEM,eAAN,GACM,sBAAN,GACM,cAAN,GACM,UAAN,uCACM,iBAAN,EACM,eAAN,qDACM,eAAN,GACM,aAAN,GACM,iBAAN,EACM,gBAAN,KAGE,QAAF,CACI,QAAJ,YACM,GAAN,EAIQ,OAHR,4BACU,MAAV,4BAEA,wBAGI,QAAJ,YACM,GAAN,EAIQ,OAHR,4BACU,MAAV,4BAEA,yBAIE,QAAF,CAEI,aAFJ,SAEA,KACM,KAAN,iBACM,KAAN,oBACM,KAAN,qCAGI,UARJ,SAQA,GACM,IAAN,GACQ,MAAR,CACU,KAAV,WACU,KAAV,mBACY,OAAZ,UAEU,SAAV,CACY,MAAZ,GAEU,SAAV,CACY,UAAZ,CACc,MAAd,YAGU,UAAV,CACY,MAAZ,UACY,SAAZ,EACY,UAAZ,cACc,IAAd,iEACc,GAAd,EACgB,OAAhB,QAKQ,MAAR,CACU,UAAV,CACY,MAAZ,EACY,UAAZ,CACc,MAAd,YAGU,cAAV,CACY,QAAZ,YAEU,UAAV,CACY,SAAZ,GAEU,SAAV,CACY,UAAZ,CACc,MAAd,YAGU,SAAV,GACU,IAAV,EACU,IAAV,KAEQ,QAAR,CACU,MAAV,EACU,QAAV,OACU,YAAV,CACY,KAAZ,SAEU,UAAV,YACY,IAAZ,KACA,sDAKY,OAJA,EAAZ,qBACc,GAAd,mEAEY,GAAZ,wCAIQ,OAAR,EACU,KAAV,MACU,OAAV,OACU,KAAV,mBACY,OAAZ,YAEU,KAAV,OACU,UAAV,CACY,MAAZ,6CACc,OAAd,EACc,MAAd,yBACA,CACc,OAAd,EACc,MAAd,2BAGU,UAAV,CACY,OAAZ,CACc,MAAd,UACc,UAAd,CACgB,MAAhB,eAKQ,KAAR,CACU,KAAV,KACU,MAAV,KACU,OAAV,KACU,cAAV,IAGM,KAAN,YACM,KAAN,kBAGI,oBA5GJ,SA4GA,GACM,IAAN,sBAAQ,MAAR,yBACM,IAAN,EACQ,OAAR,EAEM,IAAN,UACM,OAAN,iBAGA,WAFA,GAKI,eAxHJ,SAwHA,GACM,OAAN,oCACM,CAAN,+DACA,oBACQ,GAAR,WACU,KAAV,6DACU,KAAV,wCACU,IAAV,oDAAY,MAAZ,yBACA,OACY,KAAZ,+DACY,KAAZ,kDAAc,OAAd,mBAEU,IAAV,oDAAY,MAAZ,yBACA,OACY,KAAZ,qEAAc,OAAd,YACY,KAAZ,uEAAc,OAAd,YAGA,2BACQ,QAAR,cACA,YAEM,OAAN,mDACA,8FACA,oBACA,SACQ,KAAR,6BACQ,KAAR,gCACA,aAGI,YAvJJ,SAuJA,GACA,2CACM,KAAN,gEAGE,QA/NF,WAgOA,mBACM,KAAN,mCACM,KAAN,oCACM,KAAN,6DCtRe,I,OAXC,YACd,ICTW,WAAa,IAAI17C,EAAIrxJ,KAASyyG,EAAG4+C,EAAIhgF,eAAmB4D,EAAGo8E,EAAI9wE,MAAMtL,IAAIw9B,EAAG,OAAOx9B,EAAG,MAAM,CAACyP,YAAY,uBAAuB,CAACzP,EAAG,MAAM,CAACyP,YAAY,cAAc,CAACzP,EAAG,MAAM,CAACyP,YAAY,oBAAoB,CAACzP,EAAG,MAAM,CAACyP,YAAY,iBAAiB,CAAC2sE,EAAIn9E,GAAGm9E,EAAI39E,GAAG29E,EAAI57I,KAAKu3L,qBAAqB,eAAgB37C,EAAI47C,aAAe57C,EAAI47C,YAAYtrM,OAAS,EAAGszE,EAAG,OAAO,CAACo8E,EAAIn9E,GAAGm9E,EAAI39E,GAAG29E,EAAI67C,kBAAkB,MAAM77C,EAAIl9E,OAAOk9E,EAAIn9E,GAAG,KAAKe,EAAG,MAAM,CAACyP,YAAY,kBAAkBjK,MAAM,CAAC,OAAmD,UAA1C42E,EAAI87C,UAAU97C,EAAI+7C,eAAe1pK,QAChgB,UAAsD,aAA1C2tH,EAAI87C,UAAU97C,EAAI+7C,eAAe1pK,QAC7C,QAAoD,WAA1C2tH,EAAI87C,UAAU97C,EAAI+7C,eAAe1pK,WAAsB2tH,EAAIn9E,GAAG,KAAKe,EAAG,MAAM,CAACyP,YAAY,YAAY,CAAC2sE,EAAIn9E,GAAGm9E,EAAI39E,IAAK29E,EAAI+7C,eAAeC,OAAS,GAAK,QAASh8C,EAAIn9E,GAAG,KAAKe,EAAG,MAAM,CAACyP,YAAY,YAAY,CAAC2sE,EAAIn9E,GAAGm9E,EAAI39E,GAAG29E,EAAIi8C,UAAW,SAAYj8C,EAAI+7C,eAAqB,YAAQ/7C,EAAIn9E,GAAG,KAAKe,EAAG,MAAM,CAACyP,YAAY,WAAW90E,MAAM,CAAC,MAAQyhJ,EAAI+7C,eAA4B,YAAI/7C,EAAI57I,KAAK47I,EAAI+7C,eAAeG,aAAa,KAAK,CAACl8C,EAAIn9E,GAAG,eAAem9E,EAAI39E,GAAG29E,EAAI+7C,eAA4B,YAAI/7C,EAAI57I,KAAK47I,EAAI+7C,eAAeG,aAAa,IAAI,kBAAkBl8C,EAAIn9E,GAAG,KAAKe,EAAG,MAAM,CAACyP,YAAY,2BAA2B,CAACzP,EAAG,eAAe,CAACyV,YAAY,CAAC,MAAQ,OAAO,OAAS,SAAS96E,MAAM,CAAC,aAAa,iBAAiB,CAAEyhJ,EAAIm8C,sBAAsB7rM,OAAS,EAAGszE,EAAG,KAAK,CAACyP,YAAY,cAAc2sE,EAAI19E,GAAI09E,EAAyB,uBAAE,SAASltJ,GAAM,OAAO8wE,EAAG,KAAK,CAACz2E,IAAI2F,EAAK3F,IAAIi8E,MAAM,CAAC,oBAAsB42E,EAAIo8C,iBAAmB,IAAMp8C,EAAIq8C,iBAA4C,GAAxBr8C,EAAIo8C,mBACl8Bp8C,EAAIs8C,eAAezvJ,SAAS/5C,EAAK3F,MAAOoR,MAAM,CAAC,GAAKzL,EAAK3F,MAAM,CAAe,YAAb2F,EAAK3F,IAAmBy2E,EAAG,MAAM,CAACA,EAAG,QAAQ,CAACrlE,MAAM,CAAC,MAAQyhJ,EAAI57I,KAAKtR,EAAK3F,MAAQ2F,EAAK3F,MAAM,CAAC6yJ,EAAIn9E,GAAG,yBAAyBm9E,EAAI39E,GAAG29E,EAAI57I,KAAKtR,EAAK3F,MAAQ2F,EAAK3F,KAAK,wBAAwB6yJ,EAAIn9E,GAAG,KAAMm9E,EAAIs8C,eAAezvJ,SAAS/5C,EAAK3F,MAAQ6yJ,EAAIo8C,iBAAmB,EAAGx4H,EAAG,MAAM,CAACyP,YAAY,WAAWt8D,GAAG,CAAC,MAAQ,SAASkqD,GAAQ++E,EAAIq8C,iBAAmBr8C,EAAIq8C,mBAAmB,CAACz4H,EAAG,MAAM,CAACrlE,MAAM,CAAC,IAAM,+BAA+B,GAAK,eAAeyhJ,EAAIl9E,KAAKk9E,EAAIn9E,GAAG,KAAKe,EAAG,MAAM,CAACyP,YAAY,cAAc2sE,EAAI19E,GAAIxvE,EAAU,OAAE,SAASU,GAAK,OAAOowE,EAAG,IAAI,CAACz2E,IAAIqG,EAAI+K,MAAM,CAAC,MAAQ/K,EAAiB,YAAK,GAAMwsJ,EAAI57I,KAAK5Q,EAAI4gB,QAAY5gB,EAAQ,KAAM,GAAMA,EAAU,OAAKA,EAAQ,OAAK,CAACwsJ,EAAIn9E,GAAG,yBAAyBm9E,EAAI39E,GAAG7uE,EAAiB,YAAK,GAAMwsJ,EAAI57I,KAAK5Q,EAAI4gB,QAAY5gB,EAAQ,KAAM,GAAMA,EAAU,OAAKA,EAAQ,MAAI,6BAA4B,KAAKwsJ,EAAIl9E,KAAKk9E,EAAIn9E,GAAG,KAAmB,YAAb/vE,EAAK3F,MAAsB6yJ,EAAIo8C,kBAAoB,GAAKp8C,EAAIq8C,iBAAkBz4H,EAAG,MAAM,CAACyV,YAAY,CAAC,cAAc,QAAQ2mE,EAAI19E,GAAIxvE,EAAU,OAAE,SAAS6iE,EAAM/pE,GAAG,OAAOg4E,EAAG,MAAM,CAACz2E,IAAIvB,GAAG,CAACg4E,EAAG,QAAQ,CAACyP,YAAY,eAAegG,YAAY,CAAC,eAAe,SAAS,CAAC2mE,EAAIn9E,GAAG,yBAAyBm9E,EAAI39E,GAAK29E,EAAI57I,KAAsB,kBAAI,KAAOxY,EAAE,IAAK,0BAA0Bo0J,EAAIn9E,GAAG,KAAKe,EAAG,MAAM,CAACyP,YAAY,0BAA0BgG,YAAY,CAAC,eAAe,QAAQ,CAACzV,EAAG,IAAI,CAACyP,YAAY,kBAAkBjK,MAAM,CAAC,wBAAyB42E,EAAIu8C,aAAa1vJ,SAAS8oB,EAAMvhD,SAASnB,MAAM,CAAEuyF,MAAOw6C,EAAIw8C,gBAAgB3vJ,SAAS8oB,EAAMvhD,QAAU,UAAU,QAAS2C,GAAG,CAAC,MAAQ,SAASkqD,GAAQ,OAAO++E,EAAIy8C,YAAY9mI,EAAMvhD,WAAW,CAAC4rI,EAAIn9E,GAAG,2BAA2Bm9E,EAAI39E,GAAG1M,EAAMvhD,QAAU,MAAM,mCAAkC,GAAG4rI,EAAIl9E,UAAS,GAAGk9E,EAAIl9E,QAAQ,GAAGk9E,EAAIn9E,GAAG,KAAKe,EAAG,MAAM,CAACyP,YAAY,KAAK90E,MAAM,CAAC,GAAK,oBAAoByhJ,EAAIn9E,GAAG,KAAMm9E,EAAI47C,aAAe57C,EAAI47C,YAAYtrM,OAAS,EAAGszE,EAAG,KAAK,CAACyP,YAAY,mBAAmB2sE,EAAI19E,GAAI09E,EAAe,aAAE,SAASltJ,EAAKzC,GAAO,OAAOuzE,EAAG,KAAK,CAACz2E,IAAI2F,EAAKs2E,MAAM,CAAC,YAAY/4E,GAAS2vJ,EAAI67C,mBAAmB9kL,GAAG,CAAC,MAAQ,SAASkqD,GAAQ,OAAO++E,EAAI08C,aAAa5pM,EAAKzC,MAAU,CAAC2vJ,EAAIn9E,GAAGm9E,EAAI39E,GAAGhyE,EAAM,GAAG,iBAAgB,GAAG2vJ,EAAIl9E,SACzqE,IDQpB,EACA,KACA,WACA,M,SEbF65H,GAAkBvqH,QAAU,SAAArE,GACxBA,EAAIlG,UAAU80H,GAAkBxwM,KAAMwwM,KAG3BA,UCNiM,GCwFhN,CACE,KAAF,uBACE,MAAF,CACI,KAAJ,0BACI,UAAJ,0BACI,YAAJ,0BAEE,KAAF,WACI,MAAJ,CACM,KAAN,0BACM,kBAAN,KACM,KAAN,CACQ,MAAR,EACQ,KAAR,EACQ,OAAR,GAEM,UAAN,CACQ,aAAR,KACQ,MAAR,KACQ,QAAR,IACQ,IAAR,IACQ,QAAR,IACQ,gBAAR,KACQ,sBAAR,IACQ,wBAAR,QACQ,yBAAR,IACQ,YAAR,IACQ,gBAAR,KACQ,WAAR,KACQ,mBAAR,KACQ,gBAAR,KACQ,mBAAR,KACQ,SAAR,GACQ,SAAR,GAEM,WAAN,SAGE,QAAF,CAEI,iBAFJ,SAEA,GACM,KAAN,aACM,KAAN,wCACA,yBACQ,KAAR,kCAEM,KAAN,yDAGI,aAXJ,SAWA,GACM,YAAN,wBACA,KAEA,IAIE,QAzDF,WAyDI,IAAJ,OACI,GAAJ,kBACM,KAAN,oCACM,IAAN,0CAAQ,OAAR,wBACA,KACQ,KAAR,sBAEQ,KAAR,oCCrIe,I,OAXC,YACd,ICTW,WAAa,IAAI38C,EAAIrxJ,KAASyyG,EAAG4+C,EAAIhgF,eAAmB4D,EAAGo8E,EAAI9wE,MAAMtL,IAAIw9B,EAAG,OAAOx9B,EAAG,MAAM,CAACyP,YAAY,0BAA0B,CAACzP,EAAG,MAAM,CAACyP,YAAY,mBAAmB,CAAE2sE,EAAqB,kBAAEp8E,EAAG,MAAM,CAACyP,YAAY,kBAAkB,CAACzP,EAAG,eAAe,CAACyV,YAAY,CAAC,MAAQ,OAAO,OAAS,SAAS96E,MAAM,CAAC,aAAa,iBAAiB,CAACqlE,EAAG,MAAM,CAACyP,YAAY,eAAepgE,MAAM,CAAEmP,OAAQ49H,EAAI48C,WAAY50F,WAAYg4C,EAAI48C,aAAc,CAACh5H,EAAG,MAAM,CAACyP,YAAY,sBAAsB,CAAC2sE,EAAIn9E,GAAGm9E,EAAI39E,GAAG29E,EAAI57I,KAAKy4L,uBAAuB78C,EAAIn9E,GAAG,KAAKe,EAAG,MAAM,CAACyP,YAAY,sBAAsB,CAAC2sE,EAAIn9E,GAAGm9E,EAAI39E,GAAG29E,EAAI88C,kBAAkBC,cAAgB,WAAW/8C,EAAIn9E,GAAG,KAAKe,EAAG,MAAM,CAACyP,YAAY,eAAepgE,MAAM,CAAEmP,OAAQ49H,EAAI48C,WAAY50F,WAAYg4C,EAAI48C,aAAc,CAACh5H,EAAG,MAAM,CAACyP,YAAY,sBAAsB,CAAC2sE,EAAIn9E,GAAGm9E,EAAI39E,GAAG29E,EAAI57I,KAAK44L,OAAOh9C,EAAIn9E,GAAG,KAAKe,EAAG,MAAM,CAACyP,YAAY,sBAAsB,CAAC2sE,EAAIn9E,GAAGm9E,EAAI39E,GAAG29E,EAAI88C,kBAAkBG,OAAS,WAAWj9C,EAAIn9E,GAAG,KAAKe,EAAG,MAAM,CAACyP,YAAY,eAAepgE,MAAM,CAAEmP,OAAQ49H,EAAI48C,WAAY50F,WAAYg4C,EAAI48C,aAAc,CAACh5H,EAAG,MAAM,CAACyP,YAAY,eAAe,CAAC2sE,EAAIn9E,GAAGm9E,EAAI39E,GAAG29E,EAAI57I,KAAK84L,aAAal9C,EAAIn9E,GAAG,KAAKe,EAAG,MAAM,CAACyP,YAAY,eAAe,CAAC2sE,EAAIn9E,GAAGm9E,EAAI39E,GAAG29E,EAAI88C,kBAAkBK,SAAW,GAAG,OAAOn9C,EAAIn9E,GAAG,KAAKe,EAAG,MAAM,CAACyP,YAAY,eAAe,CAAC2sE,EAAIn9E,GAAGm9E,EAAI39E,GAAG29E,EAAI57I,KAAKg5L,QAAQp9C,EAAIn9E,GAAG,KAAKe,EAAG,MAAM,CAACyP,YAAY,eAAe,CAAC2sE,EAAIn9E,GAAGm9E,EAAI39E,GAAG29E,EAAI88C,kBAAkBzB,KAAO,GAAG,SAASr7C,EAAIn9E,GAAG,KAAKe,EAAG,MAAM,CAACyP,YAAY,eAAepgE,MAAM,CAAEmP,OAAQ49H,EAAI48C,WAAY50F,WAAYg4C,EAAI48C,aAAc,CAACh5H,EAAG,MAAM,CAACyP,YAAY,eAAe,CAAC2sE,EAAIn9E,GAAGm9E,EAAI39E,GAAG29E,EAAI57I,KAAKi5L,mBAAmBr9C,EAAIn9E,GAAG,KAAKe,EAAG,MAAM,CAACyP,YAAY,eAAe,CAAC2sE,EAAIn9E,GAAGm9E,EAAI39E,GAAG29E,EAAI88C,kBAAkBnpK,SAAW,GAAG,OAAOqsH,EAAIn9E,GAAG,KAAKe,EAAG,MAAM,CAACyP,YAAY,eAAe,CAAC2sE,EAAIn9E,GAAGm9E,EAAI39E,GAAG29E,EAAI57I,KAAKk5L,WAAWt9C,EAAIn9E,GAAG,KAAKe,EAAG,MAAM,CAACyP,YAAY,eAAe,CAAC2sE,EAAIn9E,GAAGm9E,EAAI39E,GAAG29E,EAAIu9C,aAAav9C,EAAI88C,kBAAkBU,uBAAuBx9C,EAAIn9E,GAAG,KAAKe,EAAG,MAAM,CAACyP,YAAY,eAAepgE,MAAM,CAAEmP,OAAQ49H,EAAI48C,WAAY50F,WAAYg4C,EAAI48C,aAAc,CAACh5H,EAAG,MAAM,CAACyP,YAAY,cAAc90E,MAAM,CAAC,MAAQyhJ,EAAIy9C,4BAA4B,CAACz9C,EAAIn9E,GAAGm9E,EAAI39E,GAAG29E,EAAI57I,KAAKq5L,8BAA8Bz9C,EAAIn9E,GAAG,KAAKe,EAAG,MAAM,CAACyP,YAAY,eAAe,CAAC2sE,EAAIn9E,GAAGm9E,EAAI39E,GAAG29E,EAAI88C,kBAAkBY,uBAAyB,GAAG,OAAO19C,EAAIn9E,GAAG,KAAKe,EAAG,MAAM,CAACyP,YAAY,cAAc90E,MAAM,CAAC,MAAQyhJ,EAAI29C,wBAAwB,CAAC39C,EAAIn9E,GAAGm9E,EAAI39E,GAAG29E,EAAI57I,KAAKu5L,0BAA0B39C,EAAIn9E,GAAG,KAAKe,EAAG,MAAM,CAACyP,YAAY,eAAe,CAAC2sE,EAAIn9E,GAAGm9E,EAAI39E,GAAG29E,EAAI57I,KAAK47I,EAAI88C,kBAAkBc,0BAA4B,WAAW59C,EAAIn9E,GAAG,KAAKe,EAAG,MAAM,CAACyP,YAAY,eAAepgE,MAAM,CAAEmP,OAAQ49H,EAAI48C,WAAY50F,WAAYg4C,EAAI48C,aAAc,CAACh5H,EAAG,MAAM,CAACyP,YAAY,cAAc90E,MAAM,CAAC,MAAQyhJ,EAAI69C,+BAA+B,CAAC79C,EAAIn9E,GAAGm9E,EAAI39E,GAAG29E,EAAI57I,KAAKy5L,iCAAiC79C,EAAIn9E,GAAG,KAAKe,EAAG,MAAM,CAACyP,YAAY,eAAe,CAAC2sE,EAAIn9E,GAAGm9E,EAAI39E,GAAG29E,EAAI88C,kBAAkBgB,0BAA4B,GAAG,OAAO99C,EAAIn9E,GAAG,KAAKe,EAAG,MAAM,CAACyP,YAAY,cAAc90E,MAAM,CAAC,MAAQyhJ,EAAI57I,KAAK25L,gBAAgB,CAAC/9C,EAAIn9E,GAAGm9E,EAAI39E,GAAG29E,EAAI57I,KAAK25L,kBAAkB/9C,EAAIn9E,GAAG,KAAKe,EAAG,MAAM,CAACyP,YAAY,eAAe,CAAC2sE,EAAIn9E,GAAGm9E,EAAI39E,GAAG29E,EAAI88C,kBAAkBkB,aAAe,QAAQh+C,EAAIn9E,GAAG,KAAMm9E,EAAI88C,kBAAyB,QAAEl5H,EAAG,MAAM,CAACA,EAAG,MAAM,CAACyP,YAAY,sBAAsB,CAAC2sE,EAAIn9E,GAAG,UAAUm9E,EAAIn9E,GAAG,KAAKe,EAAG,MAAM,CAACyP,YAAY,gBAAgB,CAACzP,EAAG,MAAM,CAACyP,YAAY,cAAc90E,MAAM,CAAC,MAAQyhJ,EAAIi+C,gCAAgC,CAACj+C,EAAIn9E,GAAGm9E,EAAI39E,GAAG29E,EAAI57I,KAAK65L,kCAAkCj+C,EAAIn9E,GAAG,KAAKe,EAAG,MAAM,CAACyP,YAAY,eAAe,CAAC2sE,EAAIn9E,GAAGm9E,EAAI39E,GAAG29E,EAAIu9C,aAAav9C,EAAI88C,kBAAkBoB,qBAAqBl+C,EAAIn9E,GAAG,KAAKe,EAAG,MAAM,CAACyP,YAAY,cAAc90E,MAAM,CAAC,MAAQyhJ,EAAI57I,KAAK+5L,mBAAmB,CAACn+C,EAAIn9E,GAAGm9E,EAAI39E,GAAG29E,EAAI57I,KAAK+5L,qBAAqBn+C,EAAIn9E,GAAG,KAAKe,EAAG,MAAM,CAACyP,YAAY,cAAc90E,MAAM,CAAC,MAAQyhJ,EAAI57I,KAAK47I,EAAI88C,kBAAkBsB,cAAc,CAACp+C,EAAIn9E,GAAGm9E,EAAI39E,GAAG29E,EAAI57I,KAAK47I,EAAI88C,kBAAkBsB,aAAe,WAAWp+C,EAAIn9E,GAAG,KAAKe,EAAG,MAAM,CAACyP,YAAY,sBAAsB,CAAC2sE,EAAIn9E,GAAGm9E,EAAI39E,GAAG29E,EAAI57I,KAAKi6L,yBAAyBr+C,EAAIn9E,GAAG,KAAKe,EAAG,MAAM,CAACyP,YAAY,gBAAgB,CAACzP,EAAG,MAAM,CAACyP,YAAY,cAAc90E,MAAM,CAAC,MAAQyhJ,EAAI57I,KAAKk6L,mCAAmC,CAACt+C,EAAIn9E,GAAGm9E,EAAI39E,GAAG29E,EAAI57I,KAAKk6L,qCAAqCt+C,EAAIn9E,GAAG,KAAKe,EAAG,MAAM,CAACyP,YAAY,eAAe,CAAC2sE,EAAIn9E,GAAGm9E,EAAI39E,GAAG29E,EAAI88C,kBAAkByB,oBAAsB,GAAG,OAAOv+C,EAAIn9E,GAAG,KAAKe,EAAG,MAAM,CAACyP,YAAY,cAAc90E,MAAM,CAAC,MAAQyhJ,EAAI57I,KAAKo6L,gCAAgC,CAACx+C,EAAIn9E,GAAGm9E,EAAI39E,GAAG29E,EAAI57I,KAAKo6L,kCAAkCx+C,EAAIn9E,GAAG,KAAKe,EAAG,MAAM,CAACyP,YAAY,eAAe,CAAC2sE,EAAIn9E,GAAGm9E,EAAI39E,GAAG29E,EAAI88C,kBAAkB2B,iBAAmB,GAAG,SAASz+C,EAAIn9E,GAAG,KAAKe,EAAG,MAAM,CAACyP,YAAY,gBAAgB,CAACzP,EAAG,MAAM,CAACyP,YAAY,qBAAqB90E,MAAM,CAAC,MAAQyhJ,EAAI57I,KAAKs6L,8CAA8C,CAAC1+C,EAAIn9E,GAAG,qBAAqBm9E,EAAI39E,GAAG29E,EAAI57I,KAAKs6L,6CAA+C,SAAS1+C,EAAIn9E,GAAG,KAAKe,EAAG,MAAM,CAACyP,YAAY,qBAAqB90E,MAAM,CAAC,MAAQyhJ,EAAI57I,KAAK47I,EAAI88C,kBAAkB6B,sBAAsB,CAAC3+C,EAAIn9E,GAAG,qBAAqBm9E,EAAI39E,GAAG29E,EAAI57I,KAAK47I,EAAI88C,kBAAkB6B,qBAAuB,aAAa3+C,EAAIl9E,QAAQ,GAAGk9E,EAAIl9E,KAAKk9E,EAAIn9E,GAAG,KAAMm9E,EAAqB,kBAAEp8E,EAAG,MAAM,CAACyP,YAAY,iBAAiB,CAACzP,EAAG,MAAM,CAACyP,YAAY,iCAAiC2sE,EAAIn9E,GAAG,KAAKe,EAAG,MAAM,CAACyP,YAAY,YAAY,CAAC2sE,EAAIn9E,GAAGm9E,EAAI39E,IAAK29E,EAAI88C,kBAAkBzB,KAAO,GAAK,QAASr7C,EAAIn9E,GAAG,KAAKe,EAAG,MAAM,CAACyP,YAAY,WAAW90E,MAAM,CAAC,MAAQyhJ,EAAI57I,KAAK47I,EAAI88C,kBAAkBc,2BAA2B,CAAC59C,EAAIn9E,GAAG,eAAem9E,EAAI39E,GAAG29E,EAAI57I,KAAK47I,EAAI88C,kBAAkBc,0BAA0B,gBAAgB59C,EAAIn9E,GAAG,KAAKe,EAAG,aAAa,CAACrlE,MAAM,CAAC,UAAY,OAAO,OAAS,UAAU,CAACqlE,EAAG,MAAM,CAACyP,YAAY,WAAWgG,YAAY,CAAC,MAAQ,mBAAmB,OAAS,YAAY,CAAC2mE,EAAIn9E,GAAG,mBAAmBm9E,EAAI39E,GAAG29E,EAAI88C,kBAA4B,UAAG,oBAAoB98C,EAAIn9E,GAAG,KAAKe,EAAG,MAAM,CAACyP,YAAY,eAAe90E,MAAM,CAAC,KAAO,WAAWmgE,KAAK,WAAW,CAACkF,EAAG,MAAM,CAACo8E,EAAIn9E,GAAGm9E,EAAI39E,GAAG29E,EAAI88C,kBAA4B,kBAAW,GAAG98C,EAAIl9E,OAAOk9E,EAAIn9E,GAAG,KAAMm9E,EAAIqvC,KAAKlmE,OAAS,EAAGvlD,EAAG,YAAY,CAACyV,YAAY,CAAC,OAAS,cAAc,aAAa,UAAU96E,MAAM,CAAC,aAAa,CAAC,GAAG,eAAeyhJ,EAAIqvC,KAAKh/L,MAAM,MAAQ2vJ,EAAIqvC,KAAKlmE,OAAO,OAAS,uBAAuBpyG,GAAG,CAAC,iBAAiBipI,EAAI4+C,oBAAoB5+C,EAAIl9E,MAAM,KAC7rM,IDWpB,EACA,KACA,WACA,M,SEbF+7H,GAAqBzsH,QAAU,SAAArE,GAC3BA,EAAIlG,UAAUg3H,GAAqB1yM,KAAM0yM,KAG9BA,UCNsL,GCOrM,CACI1yM,KAAM,YACNmuB,MAAO,CACHztB,MAAO,CACHqD,KAAM,KACNsqM,UAAU,GAEdlsM,QAAS,CACL4B,KAAML,MACN2qM,UAAU,IAGlB3hI,QAZJ,WAaQ,MAAO,CACHimI,UAAWnwM,QCFR,I,OAXC,YACd,ICTW,WAAa,IAAiByyG,EAATzyG,KAAgBqxE,eAAmB4D,EAAnCj1E,KAA0CugF,MAAMtL,IAAIw9B,EAAG,OAAOx9B,EAAG,MAAM,CAACyP,YAAY,uBAApF1kF,KAA+G2zE,GAA/G3zE,KAA8H,SAAE,SAASmE,EAAKzC,GAAO,OAAOuzE,EAAG,kBAAkB,CAACz2E,IAAIkD,EAAMkO,MAAM,CAAC,OAASzL,QAAU,KAClO,IDWpB,EACA,KACA,KACA,M,SEfuM,GCCzM,CACI3G,KAAM,gBACNmuB,MAAO,CACHvF,OAAQ,CACJ7kB,KAAM,CAAC5D,OAAQuD,OACf2qM,UAAU,IAGlBtpL,KARJ,WAQA,WACQ,MAAO,CACH6tL,eAAe,EACfC,MAAOrzL,EAAE/b,QAAQjB,KAAKomB,QAClC,8BAAgB,OAAhB,8BACA,yDACA,qBACA,KAGIy+C,MAAO,CACHz+C,OADR,WACA,WACYpmB,KAAKqwM,MAAQrzL,EAAE/b,QAAQjB,KAAKomB,QACxC,8BAAgB,OAAhB,8BACA,yDACA,qBACA,KAGI6jD,OAAQ,CAAC,aACTx+B,QAAS,CACL6kK,UADR,SACA,GACgBtwM,KAAKmwM,UAAUjyM,QAAUke,IACzBpc,KAAKmwM,UAAU90H,MAAM,QAASj/D,GAC9Bpc,KAAKmwM,UAAU90H,MAAM,SAAUj/D,KAGvCm0L,YAPR,SAOA,SACY1iM,EAAEkb,kBACE/oB,KAAKmwM,UAAUjyM,QAAUke,IACzBpc,KAAKqwM,MAAQnzM,EACb8C,KAAKmwM,UAAU90H,MAAM,QAASj/D,GAC9Bpc,KAAKmwM,UAAU90H,MAAM,SAAUj/D,EAAG7e,GAClCyC,KAAKowM,eAAgB,IAG7BI,WAhBR,SAgBA,GACY3iM,EAAEkb,kBACF/oB,KAAKowM,eAAiBpwM,KAAKowM,eAE/BK,YApBR,WAqBY,IAAZ,iDACA,mDACgBzwM,KAAKmwM,UAAUjyM,QAAUke,IACzBpc,KAAKmwM,UAAU90H,MAAM,QAASj/D,GAC9Bpc,KAAKmwM,UAAU90H,MAAM,SAAUj/D,EAAG7e,KAG1C0D,QAAS+b,EAAE/b,SAEf9B,OA1DJ,WA0DA,0BACQ,OAAK6d,EAAE/b,QAAQjB,KAAKomB,QAiB5B,EAAgB,OACIq0D,MAApB,CACA,mBACA,qBACA,CACwB,KAAxB,mBACwB,IAAxB,kBACA,YAA4B,OAA5B,gCAPA,UAWA,8BAXgB,CAYhB,uBACA,OACoB,MAApB,qBADoB,GAApB,OAEA,gCAEA,EAAoB,MAApB,8BAAoB,CACpB,6BACwB,OACxB,EAA4B,MACI,MAAhC,CACA,+BACA,kCAHgC,GAAhC,OAKA,0DAL4B,CAM5B,iBA1CuC,IAAvBz6E,KAAKomB,OAAOzkB,OACL,KAGvB,EAAoB,OACI84E,MAAxB,CACA,mBACA,+CAHA,UAKA,gEALoB,CAMpB,qBAyCIuI,QA/GJ,WA+GA,WACQlgF,SAASwiB,KAAKpU,iBAAiB,SAAS,SAAhD,GACY,EAAZ,sBChGe,GAXC,YACd,QARE,OAAQ,GAWV,EACA,KACA,KACA,M,QCXF,CAACw/L,GAAWC,IAAexlK,SAAQ,SAAAhnC,GAC/BA,EAAKs/E,QAAU,SAAArE,GACXA,EAAIlG,UAAU/0E,EAAK3G,KAAM2G,OAIlB,QACXusM,aACAC,kB,oBCTAC,GAAY,SAASv4K,EAAUkH,GAE/Bv/B,KAAKy6B,IACLz6B,KAAKq4B,SAAWA,EAChBr4B,KAAKu/B,MAAQA,EACbv/B,KAAK6wM,IAAMC,KAAQ7hK,KAAK3nC,OAAO,CAC3B/F,KAAM,MACN4vC,UAAW,SAASjC,EAAMkC,GACtBlC,EAAKitD,OAAO,IAAK,KACjBjtD,EAAKmtD,OAAO,IAAK,KACjBntD,EAAK6tD,IAAI,IAAK,IAAK,GAAc,IAAVj1F,KAAK+vB,GAAU,GACtCqX,EAAK6tD,IAAI,IAAK,IAAK,GAAc,EAAVj1F,KAAK+vB,GAAkB,GAAV/vB,KAAK+vB,IAAU,IAEvD84E,OAAQ,YAEZ3wG,KAAK+wM,SAAWD,KAAQ7hK,KAAK3nC,OAAO,CAChC/F,KAAM,UACN4vC,UAAW,SAASjC,EAAMkC,GACtBlC,EAAKitD,OAAO,IAAK,KACjBjtD,EAAKmtD,OAAO,IAAK,KACjBntD,EAAK6tD,IAAI,IAAK,IAAK,GAAc,GAAVj1F,KAAK+vB,GAAU,GAAG,GACzCqX,EAAK6tD,IAAI,IAAK,IAAK,GAAc,EAAVj1F,KAAK+vB,GAAkB,IAAV/vB,KAAK+vB,OAGjD73B,KAAKkwH,GAAK4gF,KAAQnrM,KAAK7C,SAASyL,eAAe,UAAW,CACtD8iB,MAAO,KACPoC,OAAQ,IACRk9E,OAAQ,YAEZ3wG,KAAKgxM,OACLhxM,KAAKixM,GACLjxM,KAAKkxM,QACLlxM,KAAKmxM,OACLnxM,KAAKoxM,kBAGTR,GAAU/xM,UAAUwyM,kBAAoB,SAAStuM,GAC7C,IAAIsuM,EAAoB,IAAIP,KAAQ5mC,KAAK,CACrC94H,MAAO,CACHmB,EAAG,IACHC,EAAG,IACHnhB,MAAOtuB,EACP0wB,OAAQ,IAEZnP,MAAO,CACHsrB,KAAM,aAGd5vC,KAAKkwH,GAAG5vH,IAAI+wM,IAGhBT,GAAU/xM,UAAUyyM,WAAa,SAAStsM,EAAM6xG,EAAOtkE,EAAGC,EAAG++J,GACzD,IAAIv1L,EAAU,IAAI80L,KAAQluG,KAAK,CAC3Bt+E,MAAO,CACHtf,KAAMA,EACNm1G,SAAUtD,EACVtT,UAAW,SACXhxD,EAAGA,EACHC,EAAGA,EACHsuE,SAAUywF,KAGlBvxM,KAAKkwH,GAAG5vH,IAAI0b,IAGhB40L,GAAU/xM,UAAU2yM,UAAY,SAASltM,EAAKiuC,EAAGC,EAAGzvC,GAChD,IAAIkrK,EAAM,IAAI6iC,KAAQ/9E,MAAM,CACxBzuG,MAAO,CACH7N,MAAOnS,EACPiuC,EAAGA,EACHC,EAAGA,EACHnhB,MAAOtuB,EACP0wB,OAAQ1wB,GAEZ4tG,OAAQ,YAEZ3wG,KAAKkwH,GAAG5vH,IAAI2tK,IAGhB2iC,GAAU/xM,UAAU8G,KAAO,WACvB3F,KAAKgxM,OAAS,IAAIF,KAAQx2I,KAAK,CAC3BlpB,MAAO,CACHylB,GAAI,IACJN,GAAI,IACJO,GAAI,IACJC,GAAI,KAERzyC,MAAO,CACHurB,OAAQ,WAEZ8gE,OAAQ,YAEZ3wG,KAAKixM,GAAK,IAAIjxM,KAAK6wM,IAAI,CACnBvsL,MAAO,CACHurB,OAAQ,UACRD,KAAM,MAEV+gE,OAAQ,YAEZ3wG,KAAKkxM,QAAU,IAAIlxM,KAAK+wM,SAAS,CAC7BzsL,MAAO,CACHurB,OAAQ,UACRD,KAAM,MAEV+gE,OAAQ,YAGZ3wG,KAAKmxM,OAAS,IAAIL,KAAQx2I,KAAK,CAC3BlpB,MAAO,CACHylB,GAAI,IACJN,GAAI,IACJO,GAAI,IACJC,GAAI,KAERzyC,MAAO,CACHurB,OAAQ,WAEZ8gE,OAAQ,aAIhBigG,GAAU/xM,UAAUM,OAAS,WAiBzB,IAAIsyM,EAfAzxM,KAAKy6B,IAAIi3K,cACT1xM,KAAKwxM,UAAU,mCAAoC,IAAK,GAAI,KAC5DxxM,KAAKkwH,GAAG5vH,IAAIN,KAAKixM,KACe,GAAzBjxM,KAAKy6B,IAAIi3K,eAChB1xM,KAAKwxM,UAAU,wCAAyC,IAAK,GAAI,KACjExxM,KAAKixM,GAAG3sL,MAAMurB,OAAS,UACvB7vC,KAAKkwH,GAAG5vH,IAAIN,KAAKixM,KAIrBjxM,KAAKy6B,IAAIw2K,GAAKjxM,KAAKy6B,IAAIw2K,GAAGjpM,QAAQ,IAAK,IACvChI,KAAKy6B,IAAIk3K,QAAU3xM,KAAKy6B,IAAIk3K,QAAQ3pM,QAAQ,IAAK,IACjDhI,KAAKy6B,IAAIm3K,KAAO5xM,KAAKy6B,IAAIm3K,KAAK5pM,QAAQ,IAAK,IAC3ChI,KAAKy6B,IAAInP,KAAOtrB,KAAKy6B,IAAInP,KAAKtjB,QAAQ,IAAK,IAG3ChI,KAAKy6B,IAAIiyK,IAAM1sM,KAAKy6B,IAAIo3K,QACxBJ,EAAMzxM,KAAKy6B,IAAIiyK,IAAI1kM,QAAQ,IAAK,IAChChI,KAAKqxM,kBAAmBI,EAAM,IAAO,KAEX,GAAtBzxM,KAAKy6B,IAAIq3K,SACT9xM,KAAKwxM,UAAU,wCAAyC,IAAK,IAAK,IACtC,GAArBxxM,KAAKy6B,IAAIq3K,UAChB9xM,KAAKwxM,UAAU,wCAAyC,IAAK,IAAK,IAEtExxM,KAAKsxM,WAAWtxM,KAAKy6B,IAAIw2K,GAAI,UAAW,IAAK,IAAK,KAEnB,GAA3BjxM,KAAKy6B,IAAIs3K,cACT/xM,KAAKwxM,UAAU,wCAAyC,IAAK,IAAK,IACjC,GAA1BxxM,KAAKy6B,IAAIs3K,eAChB/xM,KAAKwxM,UAAU,wCAAyC,IAAK,IAAK,IAEtExxM,KAAKsxM,WAAWtxM,KAAKy6B,IAAIk3K,QAAS,UAAW,IAAK,IAAK,KAE3B,GAAxB3xM,KAAKy6B,IAAIu3K,WACThyM,KAAKwxM,UAAU,wCAAyC,IAAK,IAAK,IACpC,GAAvBxxM,KAAKy6B,IAAIu3K,YAChBhyM,KAAKwxM,UAAU,wCAAyC,IAAK,IAAK,IAEtExxM,KAAKsxM,WAAWtxM,KAAKy6B,IAAIm3K,KAAM,UAAW,IAAK,IAAK,IAGhD5xM,KAAKy6B,IAAIw3K,YACTjyM,KAAKsxM,WAAWtxM,KAAKy6B,IAAInP,KAAM,UAAW,IAAK,IAAK,IAGxDtrB,KAAKkwH,GAAG5vH,IAAIN,KAAKkxM,SACjBlxM,KAAKkwH,GAAG5vH,IAAIN,KAAKgxM,QACjBhxM,KAAKkwH,GAAG5vH,IAAIN,KAAKmxM,QAEjBnxM,KAAKwxM,UAAU,wCAAyC,IAAK,IAAK,KAClExxM,KAAKwxM,UAAU,qCAAsC,IAAK,IAAK,KAC/DxxM,KAAKwxM,UAAU,qCAAsC,IAAK,IAAK,KAO/DxxM,KAAKsxM,WAAWtxM,KAAKy6B,IAAIiyK,IAAK,UAAW,IAAK,IAAK,KAGvDkE,GAAU/xM,UAAUqzM,SAAW,WAE3BlyM,KAAKoxM,kBAMTR,GAAU/xM,UAAUuyM,eAAiB,WACjC,IAAIlyL,EAAOlf,KAGXigM,OAAOwC,KAAK,+BAAgCvjL,EAAKqgB,OAAO,SAASsiC,GAC7D3iD,EAAKgxG,GAAGr3D,QACR35C,EAAKub,IAAMonC,EAAIt/C,KACfrD,EAAKvZ,OACLuZ,EAAK/f,aAIEyxM,UC/M6L,GCuJ5M,CACIpzM,KAAM,mBACNmuB,MAAO,CACHwmL,WAAY,CACR5wM,KAAM,MAEV6wM,gBAAiB,CACb7wM,KAAM,MAEV8wM,SAAU,CACN9wM,KAAMoqE,QACNkgI,UAAU,GAEdr9L,GAAI,CACAjN,KAAMuL,OACN++L,UAAU,GAEdyG,WAAY,CACR/wM,KAAML,MACN2qM,UAAU,GAEd0G,QAAS,CACLhxM,KAAML,MACN2qE,QAAS,IAEb2mI,iBAAR,CACYjxM,KAAZ,MACYsqM,UAAU,IAGlBtpL,KA9BJ,WA+BQ,MAAO,CACHkwL,aAAcz1L,EAAEkqC,UAAUlnD,KAAKsyM,YAC/BI,eAAgB11L,EAAEkqC,UAAUlnD,KAAKsyM,YACjC9sL,KAAM,SACNpa,KAAM,CACFunM,UAAU,EACVC,WAAY,EACZC,UAAW,EACXr4E,OAAQx6H,KAAKsyM,WAAW3wM,OACxBmxM,cAAe,MAEnBC,YAAZ,GACYC,iBAAkB,CAAEz1M,EAAG,MAG/B0sE,OAAQ,CAAC,iBACTC,QA/CJ,WAgDQ,MAAO,CACH+oI,WAAYjzM,OAGpB8iF,QApDJ,WAqDY9iF,KAAKqyM,WAAUryM,KAAKwlB,KAAO,WAEnCw9D,QAvDJ,WAyDQhjF,KAAKkzM,gBAELlzM,KAAKgzM,iBAAmBhzM,KAAKsyM,WAAW,IAE5C7mK,QAAS,CACL0nK,iBADR,SACA,GACgBnzM,KAAKwlB,OAASjkB,IAGA,QAAdvB,KAAKwlB,MAA2B,QAATjkB,IAG3BvB,KAAKwlB,KAAOjkB,KAEhB6xM,UAVR,SAUA,GACYpzM,KAAKwlB,KAAO6tL,GAGhBH,cAdR,WAegBlzM,KAAKqyM,UACL,IAAI,GAApB,gCAGQiB,gBAnBR,WAoBYtzM,KAAKoL,KAAKunM,UAAY3yM,KAAKoL,KAAKunM,SAC5B3yM,KAAKoL,KAAKunM,SACV3yM,KAAKuzM,oBAELvzM,KAAKwzM,oBAGbC,OA3BR,WA2BA,WACgBzzM,KAAK0yM,eAAe/wM,OAAS3B,KAAKoL,KAAKynM,UACvCtoK,EAAE,mCAAmC1P,QAAQ,CACzC5pB,KAAM,IAC1B,gBACoB,EAApB,uBACoBs5B,EAAE,mCAAmC/lB,IAAI,CAA7D,cAGsBxkB,KAAKoL,KAAKwnM,WAAa9qM,KAAK0tB,KAAKx1B,KAAKoL,KAAKovH,OAASx6H,KAAKoL,KAAKynM,aAChE7yM,KAAKoL,KAAKwnM,WAAa,GAE3B5yM,KAAK0yM,eAAiB1yM,KAAK0yM,eAAe1xM,OAAOhB,KAAK0zM,kBACtD1zM,KAAKmiF,WAAU,WACX53C,EAAE,mCAAmC1P,QAAQ,CACzC5pB,KAAM,IAC9B,gBACwB,EAAxB,uBACwBs5B,EAAE,mCAAmC/lB,IAAI,CAAjE,gBAKQ+uL,kBAlDR,WAmDYv2B,cAAch9K,KAAKoL,KAAK0nM,eACxB9yM,KAAKoL,KAAK0nM,cAAgB/1B,YAAY/8K,KAAKyzM,OAAQ,MAEvDD,iBAtDR,WAuDYx2B,cAAch9K,KAAKoL,KAAK0nM,eACxB9yM,KAAKoL,KAAKunM,UAAW,GAEzBgB,qBA1DR,WA2DgB3zM,KAAKoL,KAAKunM,UACV31B,cAAch9K,KAAKoL,KAAK0nM,gBAGhCc,qBA/DR,WAgEgB5zM,KAAKoL,KAAKunM,UACV3yM,KAAKuzM,qBAGbM,qBApER,SAoEA,GACY7zM,KAAKoL,KAAKwnM,WAAa7zM,EAIvBiB,KAAK0yM,eAAiB1yM,KAAK0zM,kBAE/BA,eA3ER,WA4EY,IAAIpyM,GAAStB,KAAKoL,KAAKwnM,WAAa,GAAK5yM,KAAKoL,KAAKynM,UAC/C1rM,EAAM7F,EAAQtB,KAAKoL,KAAKynM,UAC5B,OAAO7yM,KAAKyyM,aAAanvM,MAAMhC,EAAO6F,IAE1C2sM,mBAhFR,SAgFA,GACY92B,cAAch9K,KAAKoL,KAAK0nM,eACxB9yM,KAAKgzM,iBAAmBe,EAExB/zM,KAAKQ,MAAMwyM,iBAAmBe,EAC9B/zM,KAAKwlB,KAAO,WACZxlB,KAAKg0M,cAAcC,QAAS,GAEhCC,WAxFR,WAwFA,WACYl0M,KAAKwlB,KAAO,QACZxlB,KAAKmiF,WAAU,WACN,EAArB,2BAEoB,EAApB,gCAEgB,EAAhB,8BAGQgyH,UAlGR,WAmGgBn0M,KAAKsyM,WAAW3wM,OAAS3B,KAAKoL,KAAKynM,UACnC7yM,KAAKwlB,KAAO,WAEZxlB,KAAKwlB,KAAO,UAGpB4uL,oBAzGR,SAyGA,GACYp0M,KAAKgzM,iBAAmBhzM,KAAKsyM,WAAW5wM,GAExC1B,KAAKQ,MAAMwyM,iBAAmBhzM,KAAKsyM,WAAW5wM,IAElD2yM,eA9GR,SA8GA,GACYr0M,KAAKwzM,mBACLxzM,KAAKoL,KAAKwnM,WAAa,EACvB5yM,KAAKyyM,aAAez1L,EAAEkqC,UAAUlnD,KAAKsyM,YACjB,MAAhB/yK,EAAM+0K,QAAgC,MAAd/0K,EAAM/c,MAA+B,MAAf+c,EAAMq4G,QAEpE,qBACgB53I,KAAKyyM,aAAarrM,MAAK,SAAvC,+EACA,uBACgBpH,KAAKyyM,aAAarrM,MAAK,SAAvC,2EACA,uBACgBpH,KAAKyyM,aAAarrM,MAAK,SAAvC,2EACA,wBACgBpH,KAAKyyM,aAAarrM,MAAK,SAAvC,oFAEYpH,KAAK0yM,eAAiB1yM,KAAK0zM,oBC9TxB,I,OAXC,YACd,ICTW,WAAa,IAAIriD,EAAIrxJ,KAASyyG,EAAG4+C,EAAIhgF,eAAmB4D,EAAGo8E,EAAI9wE,MAAMtL,IAAIw9B,EAAG,OAAOx9B,EAAG,MAAM,CAACyP,YAAY,qBAAqBjK,MAAM,CAAC,YAAa42E,EAAIghD,WAAW,CAACp9H,EAAG,MAAM,CAACzK,WAAW,CAAC,CAAChtE,KAAK,OAAOoqF,QAAQ,SAAS1pF,MAAOmzJ,EAAY,SAAEv0E,WAAW,aAAa4H,YAAY,2BAA2B,CAACzP,EAAG,MAAM,CAACwF,MAAM,CAACqpH,IAAkB,WAAbzyC,EAAI7rI,MAAmB4C,GAAG,CAAC,MAAQ,SAASkqD,GAAQ,OAAO++E,EAAI+hD,UAAU,aAAa,CAAC/hD,EAAIn9E,GAAG,UAAUm9E,EAAIn9E,GAAG,KAAKe,EAAG,MAAM,CAACwF,MAAM,CAACqpH,IAAkB,WAAbzyC,EAAI7rI,MAAmB4C,GAAG,CAAC,MAAQ,SAASkqD,GAAQ,OAAO++E,EAAI+hD,UAAU,aAAa,CAAC/hD,EAAIn9E,GAAG,YAAYm9E,EAAIn9E,GAAG,KAAKe,EAAG,KAAK,CAACzK,WAAW,CAAC,CAAChtE,KAAK,OAAOoqF,QAAQ,SAAS1pF,MAAoB,WAAbmzJ,EAAI7rI,MAAqB6rI,EAAIkhD,QAAQ5wM,OAAS,EAAGm7E,WAAW,4CAA4C4H,YAAY,2BAA2B,CAACzP,EAAG,KAAK,CAACwF,MAAM,CAAEqpH,IAAkB,QAAbzyC,EAAI7rI,MAAgB4C,GAAG,CAAC,MAAQ,SAASkqD,GAAQ,OAAO++E,EAAI8hD,iBAAiB,aAAa,CAAC9hD,EAAIn9E,GAAG,SAASm9E,EAAIn9E,GAAG,KAAKe,EAAG,KAAK,CAACwF,MAAM,CAAEqpH,IAAkB,QAAbzyC,EAAI7rI,MAAgB4C,GAAG,CAAC,MAAQ,SAASkqD,GAAQ,OAAO++E,EAAI8hD,iBAAiB,UAAU,CAAC9hD,EAAIn9E,GAAG,aAAam9E,EAAIn9E,GAAG,KAAKe,EAAG,MAAM,CAACzK,WAAW,CAAC,CAAChtE,KAAK,OAAOoqF,QAAQ,SAAS1pF,MAAoB,WAAbmzJ,EAAI7rI,KAAmBs3D,WAAW,sBAAsB4H,YAAY,8BAA8B,CAACzP,EAAG,MAAM,CAACrlE,MAAM,CAAC,GAAK,cAAcyhJ,EAAIn9E,GAAG,KAAKe,EAAG,MAAM,CAACzK,WAAW,CAAC,CAAChtE,KAAK,OAAOoqF,QAAQ,SAAS1pF,MAAoB,WAAbmzJ,EAAI7rI,KAAmBs3D,WAAW,sBAAsB4H,YAAY,8BAA8B,CAAE2sE,EAAIihD,WAAW3wM,OAAS0vJ,EAAIjmJ,KAAKynM,UAAW59H,EAAG,MAAM,CAACz2E,IAAI,OAAOkmF,YAAY,2BAA2BjK,MAAM,CAAC85H,OAAQljD,EAAIkhD,QAAQ5wM,OAAS,IAAI,CAACszE,EAAG,MAAM,CAACyP,YAAY,oCAAoC,CAACzP,EAAG,sBAAsB,CAACyV,YAAY,CAAC,eAAe,OAAO96E,MAAM,CAAC,KAAO,QAAQ,OAAS,MAAM,CAACyhJ,EAAIn9E,GAAG,SAASm9E,EAAIn9E,GAAG,KAAKe,EAAG,sBAAsB,CAACyV,YAAY,CAAC,eAAe,OAAO96E,MAAM,CAAC,KAAO,QAAQ,OAAS,MAAM,CAACyhJ,EAAIn9E,GAAG,SAASm9E,EAAIn9E,GAAG,KAAKe,EAAG,sBAAsB,CAACyV,YAAY,CAAC,eAAe,OAAO96E,MAAM,CAAC,KAAO,QAAQ,OAAS,MAAM,CAACyhJ,EAAIn9E,GAAG,SAASm9E,EAAIn9E,GAAG,KAAKe,EAAG,sBAAsB,CAACyV,YAAY,CAAC,eAAe,OAAO96E,MAAM,CAAC,KAAO,QAAQ,OAAS,OAAO,CAACyhJ,EAAIn9E,GAAG,UAAU,GAAGm9E,EAAIn9E,GAAG,KAAKe,EAAG,MAAM,CAACyP,YAAY,kCAAkC,CAACzP,EAAG,MAAM,CAACyP,YAAY,4CAA4C,CAACzP,EAAG,WAAW,CAACyV,YAAY,CAAC,MAAQ,QAAQ96E,MAAM,CAAC,KAAOyhJ,EAAIqhD,eAAe,KAAO,QAAQ,OAAS,GAAG,oBAAoB,CAAC3jF,gBAAiB,UAAWlY,MAAO,OAAQiK,SAAU,SAAS14F,GAAG,CAAC,cAAcipI,EAAIgjD,iBAAiB,CAACp/H,EAAG,kBAAkB,CAACrlE,MAAM,CAAC,MAAQ,GAAG,MAAQ,MAAMolE,YAAYq8E,EAAIj9E,GAAG,CAAC,CAAC51E,IAAI,UAAUkH,GAAG,SAASoJ,GAAO,MAAO,CAACmmE,EAAG,sBAAsB,CAACrlE,MAAM,CAAC,OAASd,EAAMilM,IAAIrwK,cAAc,MAAK,EAAM,cAAc2tH,EAAIn9E,GAAG,KAAKe,EAAG,kBAAkB,CAACrlE,MAAM,CAAC,MAAQ,MAAM,KAAO,UAAUyhJ,EAAIn9E,GAAG,KAAKe,EAAG,kBAAkB,CAACrlE,MAAM,CAAC,MAAQ,MAAM,KAAO,KAAK,MAAQ,SAASyhJ,EAAIn9E,GAAG,KAAKe,EAAG,kBAAkB,CAACrlE,MAAM,CAAC,MAAQ,KAAK,MAAQ,MAAM,SAAW,UAAUolE,YAAYq8E,EAAIj9E,GAAG,CAAC,CAAC51E,IAAI,UAAUkH,GAAG,SAASoJ,GAAO,MAAO,CAACuiJ,EAAIn9E,GAAGm9E,EAAI39E,IAAI5kE,EAAMilM,IAAItJ,QAAU,KAAMvpF,QAAQ,IAAI,UAAU,MAAK,EAAM,aAAamwC,EAAIn9E,GAAG,KAAKe,EAAG,kBAAkB,CAACrlE,MAAM,CAAC,MAAQ,OAAO,MAAQ,MAAM,SAAW,UAAUolE,YAAYq8E,EAAIj9E,GAAG,CAAC,CAAC51E,IAAI,UAAUkH,GAAG,SAASoJ,GAAO,MAAO,CAACuiJ,EAAIn9E,GAAGm9E,EAAI39E,GAAG5kE,EAAMilM,IAAIx2M,EAAE0tM,KAAK/pF,QAAQ,IAAI,SAAS,MAAK,EAAM,cAAcmwC,EAAIn9E,GAAG,KAAKe,EAAG,kBAAkB,CAACrlE,MAAM,CAAC,MAAQ,OAAO,MAAQ,MAAM,SAAW,UAAUolE,YAAYq8E,EAAIj9E,GAAG,CAAC,CAAC51E,IAAI,UAAUkH,GAAG,SAASoJ,GAAO,MAAO,CAACuiJ,EAAIn9E,GAAGm9E,EAAI39E,GAAG5kE,EAAMilM,IAAIS,OAAOtzF,QAAQ,IAAI,SAAS,MAAK,EAAM,cAAcmwC,EAAIn9E,GAAG,KAAKe,EAAG,kBAAkB,CAACrlE,MAAM,CAAC,MAAQ,OAAO,MAAQ,MAAM,SAAW,UAAUolE,YAAYq8E,EAAIj9E,GAAG,CAAC,CAAC51E,IAAI,UAAUkH,GAAG,SAASoJ,GAAO,MAAO,CAACuiJ,EAAIn9E,GAAGm9E,EAAI39E,GAAG5kE,EAAMilM,IAAIx2M,EAAE6tM,OAAOlqF,QAAQ,IAAI,SAAS,MAAK,EAAM,eAAe,IAAI,GAAGmwC,EAAIn9E,GAAG,KAAKe,EAAG,MAAM,CAACyP,YAAY,kCAAkC,CAACzP,EAAG,MAAM,CAACyP,YAAY,qCAAqCt8D,GAAG,CAAC,WAAaipI,EAAIsiD,qBAAqB,WAAatiD,EAAIuiD,uBAAuB,CAAC3+H,EAAG,MAAM,CAACyP,YAAY,kCAAkC,CAACzP,EAAG,WAAW,CAACyV,YAAY,CAAC,MAAQ,QAAQ96E,MAAM,CAAC,KAAOyhJ,EAAIqhD,eAAe,KAAO,QAAQ,eAAc,EAAM,YAAY,CAAC/hG,OAAQ,YAAYvoF,GAAG,CAAC,YAAYipI,EAAIyiD,qBAAqB,CAAC7+H,EAAG,kBAAkB,CAACrlE,MAAM,CAAC,MAAQ,GAAG,MAAQ,MAAMolE,YAAYq8E,EAAIj9E,GAAG,CAAC,CAAC51E,IAAI,UAAUkH,GAAG,SAASoJ,GAAO,MAAO,CAACmmE,EAAG,sBAAsB,CAACrlE,MAAM,CAAC,OAASd,EAAMilM,IAAIrwK,cAAc,MAAK,EAAM,cAAc2tH,EAAIn9E,GAAG,KAAKe,EAAG,kBAAkB,CAACrlE,MAAM,CAAC,MAAQ,MAAM,KAAO,OAAO,wBAAwB,MAAMyhJ,EAAIn9E,GAAG,KAAKe,EAAG,kBAAkB,CAACrlE,MAAM,CAAC,MAAQ,MAAM,KAAO,KAAK,MAAQ,MAAM,wBAAwB,MAAMyhJ,EAAIn9E,GAAG,KAAKe,EAAG,kBAAkB,CAACrlE,MAAM,CAAC,MAAQ,KAAK,MAAQ,MAAM,wBAAwB,IAAIolE,YAAYq8E,EAAIj9E,GAAG,CAAC,CAAC51E,IAAI,UAAUkH,GAAG,SAASoJ,GAAO,MAAO,CAACuiJ,EAAIn9E,GAAGm9E,EAAI39E,IAAI5kE,EAAMilM,IAAItJ,QAAU,KAAMvpF,QAAQ,IAAI,UAAU,MAAK,EAAM,aAAamwC,EAAIn9E,GAAG,KAAKe,EAAG,kBAAkB,CAACrlE,MAAM,CAAC,MAAQ,OAAO,MAAQ,MAAM,wBAAwB,IAAIolE,YAAYq8E,EAAIj9E,GAAG,CAAC,CAAC51E,IAAI,UAAUkH,GAAG,SAASoJ,GAAO,MAAO,CAACuiJ,EAAIn9E,GAAGm9E,EAAI39E,GAAG5kE,EAAMilM,IAAIx2M,EAAE0tM,KAAK/pF,QAAQ,IAAI,SAAS,MAAK,EAAM,cAAcmwC,EAAIn9E,GAAG,KAAKe,EAAG,kBAAkB,CAACrlE,MAAM,CAAC,MAAQ,OAAO,MAAQ,MAAM,wBAAwB,IAAIolE,YAAYq8E,EAAIj9E,GAAG,CAAC,CAAC51E,IAAI,UAAUkH,GAAG,SAASoJ,GAAO,MAAO,CAACuiJ,EAAIn9E,GAAGm9E,EAAI39E,GAAG5kE,EAAMilM,IAAIS,OAAOtzF,QAAQ,IAAI,SAAS,MAAK,EAAM,cAAcmwC,EAAIn9E,GAAG,KAAKe,EAAG,kBAAkB,CAACrlE,MAAM,CAAC,MAAQ,OAAO,MAAQ,MAAM,wBAAwB,IAAIolE,YAAYq8E,EAAIj9E,GAAG,CAAC,CAAC51E,IAAI,UAAUkH,GAAG,SAASoJ,GAAO,MAAO,CAACuiJ,EAAIn9E,GAAGm9E,EAAI39E,GAAG5kE,EAAMilM,IAAIx2M,EAAE6tM,OAAOlqF,QAAQ,IAAI,SAAS,MAAK,EAAM,eAAe,IAAI,KAAKmwC,EAAIn9E,GAAG,KAAKe,EAAG,MAAM,CAACyP,YAAY,oCAAoC,CAACzP,EAAG,YAAY,CAACyV,YAAY,CAAC,MAAQ,QAAQ,OAAS,iBAAiB96E,MAAM,CAAC,aAAa,CAACyhJ,EAAIjmJ,KAAKynM,WAAW,eAAexhD,EAAIjmJ,KAAKwnM,WAAW,OAAS,0CAA0C,MAAQvhD,EAAIjmJ,KAAKovH,OAAO,SAAW62B,EAAIjmJ,KAAKunM,UAAUvqL,GAAG,CAAC,iBAAiBipI,EAAIwiD,wBAAwBxiD,EAAIn9E,GAAG,KAAKe,EAAG,gBAAgB,CAACyV,YAAY,CAAC,MAAQ,QAAQ,OAAS,iBAAiBtiE,GAAG,CAAC,MAAQipI,EAAIiiD,kBAAkB,CAACjiD,EAAIn9E,GAAG,iCAAiCm9E,EAAI39E,GAAG29E,EAAIjmJ,KAAKunM,SAAW,MAAQ,OAAO,iCAAiC,SAASthD,EAAIl9E,KAAKk9E,EAAIn9E,GAAG,KAAMm9E,EAAIihD,WAAW3wM,QAAU0vJ,EAAIjmJ,KAAKynM,UAAW59H,EAAG,MAAM,CAACz2E,IAAI,WAAWkmF,YAAY,+BAA+BgG,YAAY,CAAC,SAAW,aAAa,CAACzV,EAAG,cAAc,CAACwF,MAAM,CAAC,aAAc42E,EAAIihD,WAAW3wM,QAAU,GAAGiO,MAAM,CAAC,QAAU,QAAQ,UAAW,EAAM,OAAS,SAASwY,GAAG,CAAC,OAASipI,EAAI+iD,sBAAsB/iD,EAAI19E,GAAI09E,EAAc,YAAE,SAASltJ,GAAM,OAAO8wE,EAAG,mBAAmB,CAACz2E,IAAI2F,EAAKyhM,IAAI,CAAC3wH,EAAG,4BAA4B,CAACz2E,IAAI2F,EAAKyhM,GAAGh2L,MAAM,CAAC,cAAcyhJ,EAAI8gD,WAAW,mBAAmB9gD,EAAI+gD,gBAAgB,MAAQjuM,EAAK,oBAAoBktJ,EAAImhD,qBAAqB,MAAK,GAAGnhD,EAAIn9E,GAAG,KAAKe,EAAG,MAAM,CAACyP,YAAY,iCAAiCt8D,GAAG,CAAC,MAAQipI,EAAI6iD,aAAa,CAAC7iD,EAAIn9E,GAAG,MAAMe,EAAG,IAAI,CAACyP,YAAY,2BAA2B,GAAG2sE,EAAIl9E,OAAOk9E,EAAIn9E,GAAG,KAAMm9E,EAAIihD,WAAW3wM,OAAS0vJ,EAAIjmJ,KAAKynM,UAAW59H,EAAG,MAAM,CAACzK,WAAW,CAAC,CAAChtE,KAAK,OAAOoqF,QAAQ,SAAS1pF,MAAoB,aAAbmzJ,EAAI7rI,KAAqBs3D,WAAW,wBAAwB4H,YAAY,gCAAgC,CAACzP,EAAG,4BAA4B,CAACz2E,IAAI,UAAUoR,MAAM,CAAC,cAAcyhJ,EAAIihD,WAAW,cAAcjhD,EAAI8gD,WAAW,mBAAmB9gD,EAAI+gD,gBAAgB,oBAAoB/gD,EAAImhD,iBAAiB,MAAQnhD,EAAI2hD,oBAAoB3hD,EAAIn9E,GAAG,KAAKe,EAAG,MAAM,CAACyP,YAAY,iCAAiCt8D,GAAG,CAAC,MAAQipI,EAAI6iD,aAAa,CAAC7iD,EAAIn9E,GAAG,MAAMe,EAAG,IAAI,CAACyP,YAAY,2BAA2B,GAAG2sE,EAAIl9E,KAAKk9E,EAAIn9E,GAAG,KAAKe,EAAG,MAAM,CAACzK,WAAW,CAAC,CAAChtE,KAAK,OAAOoqF,QAAQ,SAAS1pF,MAAoB,UAAbmzJ,EAAI7rI,KAAkBs3D,WAAW,qBAAqB4H,YAAY,6BAA6B,CAACzP,EAAG,yBAAyB,CAACphB,IAAI,cAAcjkD,MAAM,CAAC,cAAcyhJ,EAAI8gD,WAAW,mBAAmB9gD,EAAI+gD,gBAAgB,QAAiClwM,IAA5BmvJ,EAAI2hD,iBAAiBpN,GAAmB,GAAKv0C,EAAI2hD,iBAAiBpN,GAAG,UAAqC1jM,IAA9BmvJ,EAAI2hD,iBAAiBx1M,KAAqB,GAAK6zJ,EAAI2hD,iBAAiBx1M,KAAK,WAAuC0E,IAA/BmvJ,EAAI2hD,iBAAiByB,MAAsB,GAAKpjD,EAAI2hD,iBAAiByB,MAAM,iBAA+CvyM,IAAnCmvJ,EAAI2hD,iBAAiB0B,WAAkCrjD,EAAI2hD,iBAAiB0B,UAAU,eAA8CxyM,IAApCmvJ,EAAI2hD,iBAAiB2B,YAAmCtjD,EAAI2hD,iBAAiB2B,cAActjD,EAAIn9E,GAAG,KAAKe,EAAG,MAAM,CAACyP,YAAY,gCAAgCt8D,GAAG,CAAC,MAAQipI,EAAI8iD,YAAY,CAACl/H,EAAG,IAAI,CAACyP,YAAY,uBAAuB2sE,EAAIn9E,GAAG,SAAS,GAAGm9E,EAAIn9E,GAAG,KAAKe,EAAG,MAAM,CAACzK,WAAW,CAAC,CAAChtE,KAAK,OAAOoqF,QAAQ,SAAS1pF,MAAoB,QAAbmzJ,EAAI7rI,KAAgBs3D,WAAW,mBAAmB4N,YAAY,CAAC,OAAS,SAAS,CAACzV,EAAG,eAAe,CAACrlE,MAAM,CAAC,WAAWyhJ,EAAIkhD,YAAY,GAAGlhD,EAAIn9E,GAAG,KAAiB,WAAXm9E,EAAI7rI,KAAiByvD,EAAG,MAAM,CAACyV,YAAY,CAAC,OAAS,SAAS,CAACzV,EAAG,uBAAuB,CAACwF,MAAM,CAAC,aAAa42E,EAAIkhD,QAAQ5wM,OAAS,GAAGiO,MAAM,CAAC,QAAiC1N,IAA5BmvJ,EAAI2hD,iBAAiBpN,GAAmB,GAAKv0C,EAAI2hD,iBAAiBpN,OAAO,GAAGv0C,EAAIl9E,SACtwR,IDWpB,EACA,KACA,KACA,M,SEbFygI,GAAiBnxH,QAAU,SAAArE,GACvBA,EAAIlG,UAAU07H,GAAiBp3M,KAAMo3M,KAG1BA,UCN2L,GC4B1M,CACIp3M,KAAM,iBACN+kB,KAFJ,WAGQ,MAAO,CACH9M,KAAZ,0BACYo/L,YAAZ,GACYC,iBAAZ,IAGInpL,MAAO,CACH2tD,MAAO,CACH/3E,KAAM5D,OACNkuM,UAAU,IAGlB5hI,OAAQ,CAAC,cACTpF,MAAO,CACH,WADR,SACA,KACY7kE,KAAK+0M,YACL/0M,KAAKg1M,aACLh1M,KAAKusE,QAAQA,QAAQA,QAAQA,QAAQ0oI,aAAjD,IAGIt8L,QAAS,CACLu8L,WADR,SACA,GACY,OAAWhzM,MAAP6D,EAAyB,GACtB,CACH,EAAK,MACL,EAAK,MACL,EAAK,MACL,KAAM,OACtB,gBAGI0lC,QAAS,CACLspK,UADR,WAEY,IAAI5hJ,EAAhB,KACY8sI,OACZ,kDACgB,WAAhB,gBAEA,qBACgB,EAAhB,uBAGQkV,WAXR,WAYYn1M,KAAKizM,WAAWztL,KAAO,SACvBxlB,KAAKizM,WAAWe,cAAcC,QAAS,EACnCj0M,KAAKizM,WAAW7nM,KAAKunM,UACrB3yM,KAAKizM,WAAWM,qBAGxB6B,oBAAR,WACYnV,OAAO/jH,KAAK,cACZ+jH,OAAO/jH,KAAK,aAGhBm5H,YAvBR,WAwBYt4B,YAAY,WACR/8K,KAAK+0M,aACrB,mBAGI3jL,SAAJ,CACQkkL,UAAR,WACY,IAAInyM,EAAhB,0BACgBoyM,EAAhB,sBACY,OAAOpyM,EAAIkE,OAAO,EAA9B,IAEQmuM,WAAR,WACY,IAAIryM,EAAhB,0BACgBoyM,EAAhB,sBACY,OAAOpyM,EAAIG,MAAMiyM,KAGzBvyH,QA3EJ,WA4EYhjF,KAAKs5E,MAAMssH,KACX5lM,KAAK+0M,YACL/0M,KAAKq1M,cACjB,2CACA,2BAEgBr1M,KAAKusE,QAAQA,QAAQ0oI,aAArC,KC3Fe,I,OAXC,YACd,ICTW,WAAa,IAAI5jD,EAAIrxJ,KAASyyG,EAAG4+C,EAAIhgF,eAAmB4D,EAAGo8E,EAAI9wE,MAAMtL,IAAIw9B,EAAG,OAAOx9B,EAAG,MAAM,CAACyP,YAAY,iCAAiC,CAACzP,EAAG,MAAM,CAACyP,YAAY,oCAAoC,CAACzP,EAAG,OAAO,CAACo8E,EAAIn9E,GAAGm9E,EAAI39E,GAAG29E,EAAI/3E,MAAMssH,SAASv0C,EAAIn9E,GAAG,KAAKe,EAAG,MAAM,CAACyP,YAAY,WAAWt8D,GAAG,CAAC,MAAQipI,EAAI+jD,sBAAsB,CAACngI,EAAG,IAAI,CAACyP,YAAY,uBAAuB2sE,EAAIn9E,GAAGm9E,EAAI39E,GAAG29E,EAAI57I,KAAKggM,aAAapkD,EAAIn9E,GAAG,KAAKe,EAAG,MAAM,CAACyP,YAAY,mEAAmEgG,YAAY,CAAC,MAAQ,YAAY,CAACzV,EAAG,QAAQ,CAACyV,YAAY,CAAC,MAAQ,SAAS2mE,EAAI19E,GAAI09E,EAAa,WAAE,SAASltJ,EAAKzC,GAAO,OAAOuzE,EAAG,KAAK,CAACz2E,IAAIkD,EAAMgpF,YAAY,CAAC,OAAS,OAAO,gBAAgB,oBAAoB,YAAY,OAAO,MAAQ,SAAS,CAACzV,EAAG,KAAK,CAACyP,YAAY,eAAe,CAAC2sE,EAAIn9E,GAAGm9E,EAAI39E,GAAGvvE,EAAKoyB,KAAK/3B,QAAQ6yJ,EAAIn9E,GAAG,KAAKe,EAAG,KAAK,CAACrlE,MAAM,CAAC,MAAQ,UAAU,CAACyhJ,EAAIn9E,GAAGm9E,EAAI39E,GAAGvvE,EAAKoyB,KAAKr4B,UAAUmzJ,EAAIn9E,GAAG,KAAKe,EAAG,KAAK,CAACyP,YAAY,cAAcgG,YAAY,CAAC,aAAa,SAAS,CAAC2mE,EAAIn9E,GAAGm9E,EAAI39E,GAAGvvE,EAAKkuB,MAAM7zB,QAAQ6yJ,EAAIn9E,GAAG,KAAKe,EAAG,KAAK,CAACyV,YAAY,CAAC,eAAe,SAAS,CAAC2mE,EAAIn9E,GAAGm9E,EAAI39E,GAAGvvE,EAAKkuB,MAAMn0B,eAAc,KAAKmzJ,EAAIn9E,GAAG,KAAKe,EAAG,MAAM,CAACyP,YAAY,qEAAqE,CAACzP,EAAG,QAAQ,CAACyV,YAAY,CAAC,MAAQ,SAAS2mE,EAAI19E,GAAI09E,EAAc,YAAE,SAASltJ,EAAKzC,GAAO,OAAOuzE,EAAG,KAAK,CAACz2E,IAAIkD,EAAMgpF,YAAY,CAAC,OAAS,OAAO,gBAAgB,oBAAoB,YAAY,OAAO,MAAQ,SAAS,CAACzV,EAAG,KAAK,CAACyP,YAAY,eAAe,CAAC2sE,EAAIn9E,GAAGm9E,EAAI39E,GAAGvvE,EAAKoyB,KAAK/3B,QAAQ6yJ,EAAIn9E,GAAG,KAAKe,EAAG,KAAK,CAACrlE,MAAM,CAAC,MAAQ,UAAU,CAACyhJ,EAAIn9E,GAAGm9E,EAAI39E,GAAGvvE,EAAKoyB,KAAKr4B,UAAUmzJ,EAAIn9E,GAAG,KAAKe,EAAG,KAAK,CAACyP,YAAY,cAAcgG,YAAY,CAAC,aAAa,SAAS,CAAC2mE,EAAIn9E,GAAGm9E,EAAI39E,GAAGvvE,EAAKkuB,MAAM7zB,QAAQ6yJ,EAAIn9E,GAAG,KAAKe,EAAG,KAAK,CAACyV,YAAY,CAAC,eAAe,SAAS,CAAC2mE,EAAIn9E,GAAGm9E,EAAI39E,GAAGvvE,EAAKkuB,MAAMn0B,eAAc,SACrwD,IDWpB,EACA,KACA,KACA,M,SEbFw3M,GAAejyH,QAAU,SAAArE,GACrBA,EAAIlG,UAAUw8H,GAAel4M,KAAMk4M,KAGxBA,UCNiM,GCyBhN,CACE,KAAF,uBACE,MAAF,CACI,GAAJ,cACI,QAAJ,eACI,KAAJ,eAEE,KAPF,WAQI,MAAJ,CACM,KAAN,0BACM,cAAN,KACM,cAAN,KACM,SAAN,KACM,UAAN,GACM,WAAN,IAGE,QAAF,CAEI,gBAFJ,WAGM,KAAN,aACM,IAAN,+BACM,OAAN,oEAAQ,IAAR,OACA,SACU,KAAV,yCACU,KAAV,yCACU,KAAV,yBACA,uCACY,EAAZ,mCACc,EAAd,gBACgB,IAAhB,IACgB,KAAhB,OACgB,GAAhB,YAKA,2BACQ,KAAR,cACA,cAGE,QA1CF,WA2CI,KAAJ,oBCjDe,I,OAXC,YACd,ICTW,WAAa,IAAIrkD,EAAIrxJ,KAASyyG,EAAG4+C,EAAIhgF,eAAmB4D,EAAGo8E,EAAI9wE,MAAMtL,IAAIw9B,EAAG,OAAOx9B,EAAG,MAAM,CAACyP,YAAY,gBAAgB,CAAG2sE,EAAIskD,QAAmGtkD,EAAIl9E,KAA9Fc,EAAG,MAAM,CAACyP,YAAY,gBAAgB,CAAC2sE,EAAIn9E,GAAGm9E,EAAI39E,GAAG29E,EAAI57I,KAAKmgM,4BAAqCvkD,EAAIn9E,GAAG,KAAKe,EAAG,MAAM,CAACyP,YAAY,mBAAmB,CAACzP,EAAG,MAAM,CAACyP,YAAY,mBAAmB,CAACzP,EAAG,IAAI,CAACo8E,EAAIn9E,GAAGm9E,EAAI39E,GAAG29E,EAAI57I,KAAKogM,wBAAwB,KAAKxkD,EAAI39E,GAAG29E,EAAIykD,eAAe,eAAezkD,EAAI39E,GAAG29E,EAAI57I,KAAK44L,IAAI,KAAKh9C,EAAI39E,GAAG29E,EAAI0kD,UAAU,eAAe1kD,EAAIn9E,GAAG,KAAKe,EAAG,IAAI,CAACo8E,EAAIn9E,GAAGm9E,EAAI39E,GAAG29E,EAAI57I,KAAKugM,iCAAiC,KAAK3kD,EAAI39E,GAAG29E,EAAI4kD,oBAAoB5kD,EAAIn9E,GAAG,KAAKe,EAAG,MAAM,CAACyP,YAAY,aAAa,CAACzP,EAAG,MAAM,CAACyV,YAAY,CAAC,OAAS,UAAU,CAAC2mE,EAAIn9E,GAAGm9E,EAAI39E,GAAG29E,EAAI57I,KAAKygM,wBAAwB,KAAK7kD,EAAI39E,GAAG29E,EAAI8kD,UAAUx0M,WAAW0vJ,EAAIn9E,GAAG,KAAKe,EAAG,WAAW,CAACzK,WAAW,CAAC,CAAChtE,KAAK,UAAUoqF,QAAQ,YAAY1pF,MAAOmzJ,EAAa,UAAEv0E,WAAW,cAAc4N,YAAY,CAAC,MAAQ,QAAQ96E,MAAM,CAAC,OAAS,GAAG,OAAS,MAAM,KAAOyhJ,EAAI8kD,UAAU,oBAAoB,CAAE1iL,OAAQ,OAAQu7H,WAAY,UAAWn4C,MAAO,UAAU,CAAC5hC,EAAG,kBAAkB,CAACrlE,MAAM,CAAC,MAAQyhJ,EAAI57I,KAAK2gM,KAAK,KAAO,MAAM,MAAQ,MAAM/kD,EAAIn9E,GAAG,KAAKe,EAAG,kBAAkB,CAACrlE,MAAM,CAAC,MAAQyhJ,EAAI57I,KAAK4gM,gBAAgB,KAAO,UAAUhlD,EAAIn9E,GAAG,KAAKe,EAAG,kBAAkB,CAACrlE,MAAM,CAAC,MAAQyhJ,EAAI57I,KAAK6gM,iBAAiB,KAAO,SAAS,GAAGjlD,EAAIn9E,GAAG,KAAKe,EAAG,MAAM,CAACyV,YAAY,CAAC,OAAS,WAAW,SAC/1C,IDWpB,EACA,KACA,WACA,M,SEbF6rH,GAAqB9yH,QAAU,SAASrE,GACpCA,EAAIlG,UAAUq9H,GAAqB/4M,KAAM+4M,KAG9BA,UCNR,SAASjO,GAAWC,GACvB,OAAOtI,OAAOW,SAAS2H,EAAM,cAE1B,SAASiO,GAAWC,GACvBxW,OAAOwC,KAAK,4CAA6C,CACrDj0L,GAAIioM,IACLryK,SAAQ,SAAAy9B,GACFA,EAAIt/C,KAAKm0L,UAIdzzM,OAAOojC,KAAKw7B,EAAIt/C,KAAKm0L,UAAW,UAH5BC,OAAOC,MAAM1O,OAAOC,IAAIC,SAASC,MAAMwO,gBAI5Ch6L,MAAK,SAAAglD,GACJ80I,OAAOC,MAAM/0I,EAAI15D,QAGlB,SAASyW,GAAOzW,EAAKq8B,GACxB+F,EAAEusK,aAAa3uM,EAAKq8B,EAAY,UAAY,SAC5C5kB,YAAW,WACP2qB,EAAEwsK,gBACH,KCoBP,QACIxO,KAAM,KACNyO,MAAO,KACPC,KAAM,MC3CsM,GD6ChN,CACIz5M,KAAM,uBACNmuB,MAAO,CACHwmL,WAAY,CACR5wM,KAAM,KACNsqM,UAAU,GAEduG,gBAAiB,CACb7wM,KAAM,KACNsqM,UAAU,GAEdjG,GAAI,CACArkM,KAAMuL,OACN++L,UAAU,GAEdwG,SAAU,CACN9wM,KAAMoqE,QACNkgI,UAAU,GAEdruM,KAAM,CACF+D,KAAM,KACNsqE,QAAS,IAEb4oI,MAAO,CACHlzM,KAAM,KACNsqE,QAAS,IAEbqrI,OAAR,CACY31M,KAAZ,QACYsqM,UAAZ,IAGItpL,KAhCJ,WAiCQ,MAAO,CACH40L,QAAS,KACTC,YAAa,GACbC,UAAW,GACX9O,KAAwB,MAAlB+O,GAAU/O,KAAe,IAAIj+L,KAASgtM,GAAU/O,KACtDgP,UAAW,OACXC,YAAa,KAGrBvtI,OAAQ,CAAC,cACTpF,MAAO,CACH+gI,GADR,SACA,GACY5lM,KAAKu3M,UAAY,OACjBv3M,KAAKuoM,KAAO,IAAIj+L,KAChBtK,KAAKy3M,gBACLH,GAAY,CACR/O,KAAM,KACNyO,MAAO,KACPC,KAAM,MAEVj3M,KAAKuoM,KAAoC,MAA7B+O,GAAUt3M,KAAKu3M,WAAqB,IAAIjtM,KAASgtM,GAAUt3M,KAAKu3M,aAGpF9rK,QAAS,CACLisK,mBADR,WAEY13M,KAAKQ,MAAMm3M,qBAEfxC,WAJR,WAKYn1M,KAAKizM,WAAWztL,KAAO,SACvBxlB,KAAKizM,WAAWe,cAAcC,QAAS,EACnCj0M,KAAKizM,WAAW7nM,KAAKunM,UACrB3yM,KAAKizM,WAAWM,qBAGxBqE,WAXR,WAYY3X,OAAOwC,KAAK,+BAAxB,wCACgB,GAAhB,8BACoB,IAApB,yCACwB,GAAxB,iCAG4B,OAFAziM,KAAKizM,WAAWF,YAA5C,qBAC4B/yM,KAAKizM,WAAWztL,KAA5C,UACmC,EAGfmxL,OAAOC,MAAM,iBAEbD,OAAOC,MAAM,aAEjC,8BACgBD,OAAOC,MAAM/5L,EAAK1U,SAI1B0vM,YA9BR,WA+BY73M,KAAKm3M,QAAUW,QAAQnyM,KAAK7C,SAASyL,eAAe,mCAExDkpM,cAjCR,WAiCA,WACYxX,OACZ,oDACgB,WAAhB,UAEA,qBACgB,IAAhB,yCACoB,GAApB,cAEwB,GAAxB,aAC4B,MAA5B,CACgC,MAAhC,OACgC,MAAhC,SAIA,GACA,oBAAgC,OAAhC,4BAEgC,OAAO97L,EAAKoC,KAAI,SAAhD,UACA,YACA,kBAEA,GACA,oBAAgC,OAAhC,2BACA,CACgC,IAAhC,4BACA,gBACA,mBAEA,iDAMgC,OAJAhJ,EAAEuV,QAAQ,CACNilM,MAAO,OACP75M,MAAO,UAEJX,QAEvC,kBACwB,GAAxB,yBAC4B,MAA5B,CACgC,MAAhC,MACgC,MAAhC,SAEA,2BAC4B,MAA5B,CACgC,MAAhC,UACgC,MAAhC,kBAKgB,EAAhB,0BACA,cACA,WACgB,EAAhB,kBAGQy6M,UA3FR,SA2FA,KACYh4M,KAAKw3M,YAAcj6M,EACnByC,KAAKu3M,UAAY,OACjBD,GAAY,CACR/O,KAAM,KACNyO,MAAO,KACPC,KAAM,MAEVj3M,KAAKuoM,KAAoC,MAA7B+O,GAAUt3M,KAAKu3M,WAAqB,IAAIjtM,KAASgtM,GAAUt3M,KAAKu3M,WAC5Ev3M,KAAKi4M,SAETC,kBAtGR,SAsGA,GACgBl4M,KAAKu3M,WAAah2M,IACtBvB,KAAKu3M,UAAYh2M,EACjBvB,KAAKuoM,KAA0B,MAAnB+O,GAAU/1M,GAAgB,IAAI+I,KAASgtM,GAAU/1M,GAC7DvB,KAAKi4M,UAETE,WA5GR,SA4GA,GACYb,GAAUt3M,KAAKu3M,WAAahP,EAC5BvoM,KAAKi4M,SAETA,MAhHR,WAiHYG,kBACZ,QACA,eACA,cACA,UACA,eACA,aACA,mBAGQC,aA3HR,WA4HkC,kBAAlBr4M,KAAKq3M,WAAmD,qBAAlBr3M,KAAKq3M,WAAsD,iBAAlBr3M,KAAKq3M,UAEpFpX,OAAOwC,KAAK,+CAAgD,CACxDlhM,KAAM,CACFgnM,KAAM,EACNyO,MAAO,EACPC,KAAM,GAC9B,gBACoB1O,KAAMD,GAAWtoM,KAAKuoM,MACtB3C,GAAI5lM,KAAK4lM,GACT0S,WAAYt4M,KAAKm3M,QAAQoB,aAAapvM,MAAM,KAAK,GACjDqvM,UAAWx4M,KAAKm3M,QAAQ35F,WACxBi7F,WAAYz4M,KAAKm3M,QAAQxnF,cAC7C,qBACoB6mF,GAApB,WACA,kBACoBG,OAAOC,MAAM/0I,EAAI15D,SAIrBlF,OAAOy1M,aAAaC,QAAQ,6BAA8B51L,KAAKs3C,UAAU,CACrEkuI,KAAMD,GAAWtoM,KAAKuoM,MACtB3C,GAAI5lM,KAAK4lM,MAEbhwL,SAASG,KAAO,gCEtOjB,I,OAXC,YACd,ICTW,WAAa,IAAIs7I,EAAIrxJ,KAASyyG,EAAG4+C,EAAIhgF,eAAmB4D,EAAGo8E,EAAI9wE,MAAMtL,IAAIw9B,EAAG,OAAOx9B,EAAG,MAAM,CAACyP,YAAY,0BAA0B,CAACzP,EAAG,MAAM,CAACyP,YAAY,iCAAiC,CAACzP,EAAG,OAAO,CAACo8E,EAAIn9E,GAAGm9E,EAAI39E,GAAG29E,EAAI7zJ,MAAQ6zJ,EAAIu0C,OAAOv0C,EAAIn9E,GAAG,KAAMm9E,EAAIojD,OAAuB,QAAdpjD,EAAIojD,MAAiBx/H,EAAG,OAAO,CAACyP,YAAY,gBAAgB,CAAC2sE,EAAIn9E,GAAGm9E,EAAI39E,GAAG29E,EAAIojD,UAAUpjD,EAAIl9E,KAAKk9E,EAAIn9E,GAAG,KAAMm9E,EAAI4hD,WAAWX,WAAW3wM,OAAS0vJ,EAAI4hD,WAAW7nM,KAAKynM,UAAW59H,EAAG,MAAM,CAACyP,YAAY,OAAOt8D,GAAG,CAAC,MAAQipI,EAAI8jD,aAAa,CAAC9jD,EAAIn9E,GAAG,QAAQm9E,EAAIl9E,OAAOk9E,EAAIn9E,GAAG,KAAwB,MAAlBm9E,EAAI8gD,YAAuB9gD,EAAI+gD,iBAAoB/gD,EAAIghD,SAA6LhhD,EAAIl9E,KAAvLc,EAAG,gBAAgB,CAACyV,YAAY,CAAC,MAAQ,QAAQ,SAAW,WAAW,IAAM,QAAQ,eAAe,QAAQtiE,GAAG,CAAC,MAAQipI,EAAIqmD,qBAAqB,CAACrmD,EAAIn9E,GAAG,0BAAmCm9E,EAAIn9E,GAAG,KAA8B,WAAxBm9E,EAAI4hD,WAAWztL,MAAoB6rI,EAAI6lD,OAAQjiI,EAAG,gBAAgB,CAACyV,YAAY,CAAC,MAAQ,QAAQ,eAAe,OAAO,SAAW,WAAW,IAAM,SAAStiE,GAAG,CAAC,MAAQipI,EAAIumD,aAAa,CAACvmD,EAAIn9E,GAAG,0BAA0Bm9E,EAAIl9E,KAAKk9E,EAAIn9E,GAAG,KAAKe,EAAG,MAAM,CAACyP,YAAY,2CAA2C,CAACzP,EAAG,aAAa,CAACphB,IAAI,MAAM6wB,YAAY,KAAK90E,MAAM,CAAC,QAAUyhJ,EAAI+lD,aAAahvL,GAAG,CAAC,OAASipI,EAAI2mD,WAAW1+H,MAAM,CAACp7E,MAAOmzJ,EAAa,UAAE/qJ,SAAS,SAAUu9L,GAAMxyC,EAAIgmD,UAAUxT,GAAK/mH,WAAW,eAAeu0E,EAAIn9E,GAAG,KAAKe,EAAG,MAAM,CAACyP,YAAY,oCAAoCt8D,GAAG,CAAC,MAAQipI,EAAIgnD,gBAAgBhnD,EAAIn9E,GAAG,KAAKe,EAAG,iBAAiB,CAACyP,YAAY,KAAKgG,YAAY,CAAC,eAAe,QAAQ96E,MAAM,CAAC,KAAOyhJ,EAAIkmD,UAAU,KAAO,SAASnvL,GAAG,CAAC,OAASipI,EAAI8mD,YAAY7+H,MAAM,CAACp7E,MAAOmzJ,EAAQ,KAAE/qJ,SAAS,SAAUu9L,GAAMxyC,EAAIk3C,KAAK1E,GAAK/mH,WAAW,UAAUu0E,EAAIn9E,GAAG,KAAuB,qBAAjBm9E,EAAIgmD,WAAqD,iBAAjBhmD,EAAIgmD,UAA8BpiI,EAAG,KAAK,CAACyP,YAAY,iDAAiD,CAACzP,EAAG,KAAK,CAACwF,MAAM,CAAEqpH,IAAuB,SAAlBzyC,EAAIkmD,WAAuBnvL,GAAG,CAAC,MAAQ,SAASkqD,GAAQ,OAAO++E,EAAI6mD,kBAAkB,WAAW,CAAC7mD,EAAIn9E,GAAG,OAAOm9E,EAAIn9E,GAAG,KAAKe,EAAG,KAAK,CAACwF,MAAM,CAAEqpH,IAAuB,UAAlBzyC,EAAIkmD,WAAwBnvL,GAAG,CAAC,MAAQ,SAASkqD,GAAQ,OAAO++E,EAAI6mD,kBAAkB,YAAY,CAAC7mD,EAAIn9E,GAAG,OAAOm9E,EAAIn9E,GAAG,KAAKe,EAAG,KAAK,CAACwF,MAAM,CAAEqpH,IAAuB,SAAlBzyC,EAAIkmD,WAAuBnvL,GAAG,CAAC,MAAQ,SAASkqD,GAAQ,OAAO++E,EAAI6mD,kBAAkB,WAAW,CAAC7mD,EAAIn9E,GAAG,SAASm9E,EAAIl9E,MAAM,GAAGk9E,EAAIn9E,GAAG,KAAKm9E,EAAIv9E,GAAG,IAAI,KAC9tE,CAAC,WAAa,IAAiB2+B,EAATzyG,KAAgBqxE,eAAmB4D,EAAnCj1E,KAA0CugF,MAAMtL,IAAIw9B,EAAG,OAAOx9B,EAAG,MAAM,CAACyP,YAAY,iCAAiC,CAACzP,EAAG,MAAM,CAACrlE,MAAM,CAAC,GAAK,wCDWtL,EACA,KACA,KACA,M,SEbFgpM,GAAqBn1H,QAAU,SAAArE,GAC3BA,EAAIlG,UAAU0/H,GAAqBp7M,KAAMo7M,KAG9BA,U,ojBCoETC,GAAmBA,GAAnBA,GAtEa,CACjBhiG,MAAO,CAAC,UAAW,UAAW,UAAW,UAAW,WACpDiiG,YAAa,CACXC,QAAS,UACTC,mBAAoB,UACpBC,aAAc,UACdC,WAAY,UACZC,UAAW,UACXC,aAAc,UACdC,iBAAkB,UAClBC,iBAAkB,UAClBC,iBAAkB,UAClBC,gBAAiB,UACjBC,gBAAiB,UACjBC,gBAAiB,WAEnB9H,KAAM,CACJp2I,OAAQ,GACRjlC,KAAM,GACNlE,MAAO,IAETsnL,QAAS,CACPzwL,QAAS,OACT0wL,SAAS,EACTC,UAAW,SAASt6K,GAClB,GAAI,UAAU3wB,KAAK2wB,EAAM,GAAGu6K,gBAC1B,IAAI57M,EAAQqhC,EAAM,GAAGu6K,eAATv6K,OACRlQ,EAAOA,MAAM0qL,MAAM77M,GAAO87M,OAAOC,kBAAkB,SAAnD,YACC,GAAI,gBAAgBrrM,KAAK2wB,EAAM,GAAGu6K,gBACnCzqL,EAAOA,MAAM0qL,MAAMx6K,EAAM,GAAGu6K,gBAAgBE,OAC9CC,kBAAkB,UADhB,YAGC,GAAI,0BAA0BrrM,KAAK2wB,EAAM,GAAGu6K,gBAC7CzqL,EAAOA,MAAM0qL,MAAMx6K,EAAM,GAAGu6K,gBAAgBE,OAC9CE,gBADE,YAIA7qL,EAAOA,MAAMkQ,EAAM,GAAGu6K,eAAtB,OAEN,IAAK,IAAI78M,EAAI,EAAGA,EAAIsiC,EAAM59B,OAAQ1E,IAC5BsiC,EAAMtiC,GAAGk9M,YAAcjS,OAAOC,IAAIC,SAASC,MAApB,uBACrB9oK,EAAMtiC,GAAGiB,MAAQ,EACnBqhC,EAAMtiC,GAAGk9M,YAAT,IAA2BjS,OAAOC,IAAIC,SAASC,MAAM+R,QAArD,IAEA76K,EAAMtiC,GAAGk9M,YAAT,IAA2BjS,OAAOC,IAAIC,SAASC,MAAMgS,WAArD,KAGA96K,EAAMtiC,GAAGk9M,YAAcjS,OAAOC,IAAIC,SAASC,MAApB,qBACrB9oK,EAAMtiC,GAAGiB,MAAQ,EACnBqhC,EAAMtiC,GAAGk9M,YAAT,IAA2BjS,OAAOC,IAAIC,SAASC,MAAMiS,IAArD,IAEA/6K,EAAMtiC,GAAGk9M,YAAT,IAA2BjS,OAAOC,IAAIC,SAASC,MAAMkS,KAArD,KAGJlrL,mJACgIkQ,EAAMtiC,GAAG45G,MADzI,6CAEwBt3E,EAAMtiC,GAAGk9M,WAFjC,4CAGwB56K,EAAMtiC,GAAGiB,MAHjC,yCAMF,OAAOmxB,IAGXmrL,SAAU,CACR,CACEj5M,KAAM,YAKN,CAEJwtH,gBAAiB,SAEb0rF,GAAiB,CACrBC,UAAW,CACT7jG,MAAO,YAGL8jG,GAAkB,CACtBn1L,MAAM,EACNk1L,UAAW,CACTn5M,KAAM,SACNs1G,MAAO,YAIJ,SAAS+jG,GACdC,EACAC,EACAvS,EACAwS,EACAvrK,EACAwrK,EACAC,EACAC,EACAC,GAEA,IAAMC,GAAgBH,GAAwB,GAChC,GAAXH,GACD7a,OAAOwC,KAAK,4BAA6B,CACvCj0L,GAAIqsM,EACJtS,KAAMD,GAAWC,GACjBh6I,MAAOwsJ,EACPM,aAAcP,EACdM,aAAcA,IACbh3K,SAAQ,SAACy9B,GACV,GAAe,GAAXi5I,EAAc,CAChB,IAAMQ,EAAYz5I,EAAIt/C,KAAK+4L,UAC3BN,EAAcO,UAAYD,EAAUC,UACpCP,EAAc3R,OAASiS,EAAUjS,OACjC2R,EAAcQ,UAAYF,EAAUE,UACpCR,EAAc3I,SAAWiJ,EAAUjJ,SACnC2I,EAAcS,WAAY,EAoa3B,SAAuBl5L,EAAMitB,EAAK+rK,EAAWJ,EAAcvkK,EAAQy7J,GACxE,IAAK9vL,EAEH,YADAitB,EAAIqpB,QAGN,GAAIjiB,EAAQ,EACNxwB,EAASs1L,SAASn5L,EAAK+4L,UAAW9rK,EAAK+rK,EAAWJ,EAAcvkK,EAAQy7J,IACrEsJ,OAAOxwK,SAAQ,SAAChnC,GACrBA,EAAKoyB,MAAQ,IACbpyB,EAAK8M,KAAO,OAEdmV,EAAOw1L,QAAQ5oM,SAASm4B,SAAQ,SAAChnC,GAC/BA,EAAKoyB,MAAQ,IACI,UAAbpyB,EAAK5C,OACP4C,EAAK8M,KAAO,KAEG,QAAb9M,EAAK5C,OACP4C,EAAKq3D,QAAU,QAGnBp1C,EAAOy1L,OAAOtlL,MAAQ,IACtBnQ,EAAOy1L,OAAOrgJ,QAAU,GACxBhsB,EAAIssK,UAAU11L,GAAQ,OACjB,CACL,IAAIA,EAASs1L,SAASn5L,EAAK+4L,UAAW9rK,EAAK+rK,EAAWJ,EAAcvkK,EAAQy7J,GAC5E7iK,EAAIssK,UAAU11L,GAAQ,IA5blB21L,CAAcl6I,EAAIt/C,KAAMitB,EAAKwrK,EAAcO,UAAWJ,EAAcC,EAAcE,EAAUjJ,eAE5F2I,EAAcS,WAAY,EAC1BO,GAAen6I,EAAIt/C,KAAMitB,EAAK4rK,MAE/Bv+L,MAAK,WACN2yB,EAAIqpB,WACHq5H,KAAI,WACU,GAAX4oB,IACFE,EAAcO,WAAY,EAC1BP,EAAcS,WAAY,MAIlB,GAAXX,GACD7a,OAAOwC,KAAK,gCAAiC,CAC3Cj0L,GAAIqsM,EACJtS,KAAMD,GAAWC,GACjB0T,cAAab,IACZh3K,SAAQ,SAACy9B,GACV,IAAIuvH,EAAQlwL,MAAM0qC,KAAK,IAAIw0B,IAAIyB,EAAIt/C,KAAK85F,MAAM91G,KAAI,SAAApC,GAEhD,OADAA,EAAK4zM,MAAQ7P,OAAOC,IAAIC,SAASC,MAAMlkM,EAAK3F,KACrC2F,EAAK8gB,UAEd,GAAG48C,EAAIt/C,KAAK25L,cAAcr6I,EAAIt/C,KAAK25L,aAAav6M,OAAO,EAAE,CACvD,IAAIwB,EAAM,GACV0+D,EAAIt/C,KAAK25L,aAAa/wK,SAAQ,SAAAhnC,GAC5BhB,EAAIX,KAAK,CACPu1M,MAAS5zM,EAAK3F,IAAd,MAAuB2F,EAAKjG,OAAoB,IAAbiG,EAAKjG,MAAaiG,EAAKjG,MAAMgjH,QAAQ,GAAtB,IAAlD,IAA8E/8G,EAAKg4M,cAGvFt6I,EAAIt/C,KAAK65L,WAAaj5M,OAEtB0+D,EAAIt/C,KAAK65L,WAAa,CACpB,CAACrE,MAAM,KAGXl2I,EAAIt/C,KAAKmsH,KAAM0iD,EAAM7qL,KAAI,SAACpC,EAAKzC,GAAN,MAAe,CACtC26M,OAAQ36M,EACRujB,KAAK9gB,MAEP09D,EAAIt/C,KAAK+5L,YAAY,CACnBC,WAAU,GAEZP,GAAen6I,EAAIt/C,KAAMitB,EAAK4rK,MAC7BlpB,KAAI,WACL8oB,EAAcO,WAAY,EAC1BP,EAAcS,WAAY,KAKzB,SAASO,GAAez5L,EAAMitB,EAAKoH,GACxC,GAAKr0B,EAAK85F,OAA+B,IAAtB95F,EAAK85F,MAAM16G,OAA9B,CAIA6tC,EAAIqpB,QAEA77C,EAAEwnC,KAAKjiC,EAAK85F,MAAM91G,KAAI,SAACpC,GAAD,OAAUA,EAAK5C,SAAOI,OAAS,IACvD4gB,EAAK85F,MAAMlxE,SAAQ,SAAChnC,GACA,MAAdA,EAAK5C,OACP4C,EAAKiD,KAAO,QAGhBmb,EAAK85F,MAAMj1G,MAAK,SAAC4D,EAAGC,GAAJ,OAAUD,EAAE5D,KAAO6D,EAAE7D,SAGvC,IAAMu4K,EAAQ,CACZ36K,KAAMud,EAAK65L,WAAW71M,KAAI,SAACpC,GAAD,OAAUA,EAAK4zM,SAAO/oM,KAAK,SACrD4gJ,UAAW,CACT/4C,MAAO,UACPiK,SAAU,GACVlsF,WAAY,MAKV4nL,EAAQ,CACZj7M,KAAM,WACNghB,KAAMA,EAAK85F,MAAM,GAAGgrE,GAAG9gL,KAAI,SAACpC,GAAD,OAAUA,EAAKouC,KAC1CkqK,SAAUhC,IAER,gBAAgB7rM,KAAK4tM,EAAMj6L,KAAK,IAClCi6L,EAAME,UAAY,CAChBrkL,SADgB,SACPp7B,GAEP,GACiC,MAA/Bu/M,EAAMj6L,KAAKtlB,GAAGkM,MAAM,KAAK,IACzBqzM,EAAMj6L,KAAKtlB,GAAGkM,MAAM,KAAK,GAAK,GAAK,EAEnC,IAAI5L,EAAIi/M,EAAMj6L,KAAKtlB,GAErB,IAAKM,EAAG,OAAO,EARL,MASIA,EAAE4L,MAAM,KACtB,MAAY,MAVF,aAcdqzM,EAAME,UAAY,CAChB7C,UAAW,SAAS37M,EAAOwD,GACzB,MAAI,UAAUkN,KAAK1Q,IACjBA,GAAQA,OACD67M,MAAM77M,GAAO87M,OAAOC,kBAAkB,UACpC,gBAAgBrrM,KAAK1Q,IAC9BA,GAAgB,KACT67M,MAAM77M,GAAO87M,OAAOC,kBAAkB,WACpC,0BAA0BrrM,KAAK1Q,GACjC67M,MAAM77M,GAAO87M,OAAOE,qBADtB,IAOb,IAAMyC,EAAQp6L,EAAKmsH,KAAKnoI,KAAI,SAACpC,GAAD,MAAW,CACrC3G,KAAM2G,EAAK8gB,KACX23L,UAAWjC,GACX8B,SAAUhC,OAGNvkM,EAAW,GACX2lM,EAAS,CACbxqL,MAAQulB,EAAe,IAAN,IACjBr0B,KAAMA,EAAK85F,MAAM91G,KAAI,SAACpC,GAKpB,OAJGA,EAAK4zM,QAAU7P,OAAOC,IAAIC,SAASC,MAAMwU,SAC1C14M,EAAK4zM,MAAW7P,OAAOC,IAAIC,SAASC,MAAMwU,OAA1C,KAAqD14M,EAAK8gB,KAA1D,KAEF/O,KAAY/R,EAAK4zM,OAAW5zM,EAAK+iJ,SACjC,GAAU/iJ,EAAK4zM,SAEjB1lL,MAAO,GACPnc,YAwDIylM,EAASp5L,EAAK85F,MAAM91G,KAAI,SAACpC,GAU7B,MATiB,iBAAdA,EAAK3G,MACN2G,EAAKkjL,GAAGl8I,SAAQ,SAAA2xK,GACXA,EAAMtqK,EAAE,IACTsqK,EAAMtqK,EAAI,IACHsqK,EAAMtqK,EAAE,IACfsqK,EAAMtqK,EAAI,MAIT,CACLjxC,KACEghB,EAAK+5L,YAAYC,WACjBp4M,EAAK4zM,QAAU7P,OAAOC,IAAIC,SAASC,MAAM0U,WACrC,SACA,CAAE,EAAK,MAAO,EAAK,QAAS54M,EAAK5C,MACvCy7M,YAAa,GACb1wE,QAAQ,EACR9uI,QAAS2G,EAAK4zM,MACdx1L,KAAMpe,EAAKkjL,GAAG9gL,KAAI,SAACpC,GAAD,OAAUA,EAAKquC,KACjCyqK,WAAY94M,EAAKuqI,KACjBn4F,OAAQ,OACR85D,EACE9tF,EAAK+5L,YAAYC,WACjBp4M,EAAK4zM,QAAU7P,OAAOC,IAAIC,SAASC,MAAM0U,WACrC,IACA,EACNG,UAAW,CACTC,OAAQ,CACNtmG,MAAO1yG,EAAKi5M,iBAYjBxmK,IACDiiK,GAAiBjH,KAAO,CACtBp2I,OAAO,GACPjlC,KAAM,GACNlE,MAAO,GACPphB,IAAK,MAGT,IAAMmV,EAASA,GAATA,CACJu5J,QACA68B,QACAG,QACAd,SACAF,SACA0B,WA7GF,SAAoBp1K,EAAQq1K,GACrB3/M,OAAOqsD,UACVrsD,OAAOqsD,QAAU,SAAS/lD,GAIxB,IAHA,IAAIs5M,EAAW5/M,OAAOyR,KAAKnL,GACzBhH,EAAIsgN,EAAS57M,OACb67M,EAAW,IAAIt8M,MAAMjE,GAChBA,KAAKugN,EAASvgN,GAAK,CAACsgN,EAAStgN,GAAIgH,EAAIs5M,EAAStgN,KAErD,OAAOugN,IAEX,IAAIC,EAAa9/M,OAAOqsD,QAAQxa,EAAIkuK,YAAY7B,OAAO,GAAG3lM,UACvD1E,QAAO,SAACrN,GAAD,OAAWA,EAAK,MACvBoC,KAAI,SAACpC,GAAD,OAAUA,EAAK,MAEhBw5M,EACJp7L,EAAK85F,MACF7qG,QAAO,SAACrN,GAAD,OAAWs5M,EAAWv/J,SAAX,GAAuB/5C,EAAK4zM,UAC9CvmM,QAAO,SAACrN,GAAD,MAAuB,KAAbA,EAAK5C,QAAaI,OAAS,EAC3Ci8M,EAASN,EAAIp/M,MAAM,GACnB2/M,EAASP,EAAIp/M,MAAM,GACnBi4D,EAAQmnJ,EAAInsG,MAAM,CAACysG,EAAQC,IAC3BC,EAAYR,EAAIQ,UAAU,CAC9Bl6L,MAAO+5L,EACPX,YAAa,KAEX3rL,EAAQysL,EAAU,GAAKA,EAAU,GAAGzsL,MAAQ,GAC5CkhB,EAAIurK,EAAU,GACd3nJ,EAAM,GAAK2nJ,EAAU,GAAGC,aAAe1sL,EAAQ,EAC/C8kC,EAAM,GAMV,OAJEsnJ,EAAWv/J,SAASgqJ,OAAOC,IAAIC,SAASC,MAAM2V,cAAgB,WAE9DzrK,GAAa,GAARlhB,GAEA,CACL9vB,KAAM,OACN6vC,MAAO0mK,QAAQ8D,QAAQqC,eACrB,CACE1rK,EAAGA,EACHC,EAAG2jB,EAAM,GACT9kC,MAAe,GAARA,EACPoC,OAAQ6pL,EAAI1gK,KAAK,CAAC,EAAGihK,IAAS,IAEhC,CACEtrK,EAAGtK,EAAOi2K,SAAS3rK,EACnBC,EAAGvK,EAAOi2K,SAAS1rK,EACnBnhB,MAAO4W,EAAOi2K,SAAS7sL,MACvBoC,OAAQwU,EAAOi2K,SAASzqL,SAG5BnP,MAAOg5L,EAAIh5L,WA4DVu0L,IAELrpK,EAAIssK,UAAU11L,GAAQ,QA/LpBopB,EAAIqpB,QAiMD,SAASslJ,GAAsB57L,EAAMitB,GAC1C,GAAKjtB,EAAK85F,OAA+B,IAAtB95F,EAAK85F,MAAM16G,OAA9B,CAKIqb,EAAEwnC,KAAKjiC,EAAK85F,MAAM91G,KAAI,SAACpC,GAAD,OAAUA,EAAK5C,SAAOI,OAAS,IACvD4gB,EAAK85F,MAAMlxE,SAAQ,SAAChnC,GACA,MAAdA,EAAK5C,OACP4C,EAAKiD,KAAO,QAGhBmb,EAAK85F,MAAMj1G,MAAK,SAAC4D,EAAGC,GAAJ,OAAUD,EAAE5D,KAAO6D,EAAE7D,SAGvC,IAAMu4K,EAAQ,CACZ36K,KAAMud,EAAK65L,WAAW71M,KAAI,SAACpC,GAAD,OAAUA,EAAK4zM,SAAO/oM,KAAK,SACrD4gJ,UAAW,CACT/4C,MAAO,UACPiK,SAAU,GACVlsF,WAAY,MAIV4nL,EAAQ,CACZj7M,KAAM,WACNghB,KAAMA,EAAK85F,MAAM,GAAGgrE,GAAG9gL,KAAI,SAACpC,GAAD,OAAUA,EAAKouC,KAC1CkqK,SAAUhC,GACVpiL,SAAU,MAER,gBAAgBzpB,KAAK4tM,EAAMj6L,KAAK,MAClCi6L,EAAME,UAAY,CAChBrkL,SADgB,SACPp7B,GAEP,GACiC,MAA/Bu/M,EAAMj6L,KAAKtlB,GAAGkM,MAAM,KAAK,IACzBqzM,EAAMj6L,KAAKtlB,GAAGkM,MAAM,KAAK,GAAK,GAAK,EAEnC,IAAI5L,EAAIi/M,EAAMj6L,KAAKtlB,GAErB,IAAKM,EAAG,OAAO,EARL,MASIA,EAAE4L,MAAM,KACtB,MAAY,MAVF,cAehB,IAAMwzM,EAAQp6L,EAAKmsH,KAAKnoI,KAAI,SAACpC,GAAD,MAAW,CACrC3G,KAAM2G,EAAK8gB,KACX23L,UAAWjC,GACX8B,SAAUhC,OAGNvkM,EAAW,GACX2lM,EAAS,CACbxqL,MAAO,IACP9O,KAAMA,EAAK85F,MAAM91G,KAAI,SAACpC,GAEpB,OADA+R,KAAY/R,EAAK4zM,OAAW5zM,EAAK+iJ,SACjC,GAAU/iJ,EAAK4zM,SAEjB1lL,MAAO,GACPnc,YAwDIylM,EAASp5L,EAAK85F,MAAM91G,KAAI,SAACpC,GAU7B,MATiB,iBAAdA,EAAK3G,MACN2G,EAAKkjL,GAAGl8I,SAAQ,SAAA2xK,GACXA,EAAMtqK,EAAE,IACTsqK,EAAMtqK,EAAI,IACHsqK,EAAMtqK,EAAE,IACfsqK,EAAMtqK,EAAI,MAIT,CACLjxC,KACEghB,EAAK+5L,YAAYC,WACjBp4M,EAAK4zM,QAAU7P,OAAOC,IAAIC,SAASC,MAAM0U,WACrC,SACA,CAAE,EAAK,MAAO,EAAK,QAAS54M,EAAK5C,MACvCy7M,YAAa,GACb1wE,QAAQ,EACR9uI,QAAS2G,EAAK4zM,MACdx1L,KAAMpe,EAAKkjL,GAAG9gL,KAAI,SAACpC,GAAD,OAAUA,EAAKquC,KACjCyqK,WAAY94M,EAAKuqI,KACjBn4F,OAAQ,OACR85D,EACE9tF,EAAK+5L,YAAYC,WACjBp4M,EAAK4zM,QAAU7P,OAAOC,IAAIC,SAASC,MAAM0U,WACrC,IACA,EACNG,UAAW,CACTC,OAAQ,CACNtmG,MAAO1yG,EAAKi5M,iBAadh3L,EAASA,GAATA,CACJu5J,QACA68B,QACAG,QACAd,SACAF,SACA0B,WAtGF,SAAoBp1K,EAAQq1K,GACrB3/M,OAAOqsD,UACVrsD,OAAOqsD,QAAU,SAAS/lD,GAIxB,IAHA,IAAIs5M,EAAW5/M,OAAOyR,KAAKnL,GACzBhH,EAAIsgN,EAAS57M,OACb67M,EAAW,IAAIt8M,MAAMjE,GAChBA,KAAKugN,EAASvgN,GAAK,CAACsgN,EAAStgN,GAAIgH,EAAIs5M,EAAStgN,KAErD,OAAOugN,IAEX,IAAIC,EAAa9/M,OAAOqsD,QAAQxa,EAAIkuK,YAAY7B,OAAO,GAAG3lM,UACvD1E,QAAO,SAACrN,GAAD,OAAWA,EAAK,MACvBoC,KAAI,SAACpC,GAAD,OAAUA,EAAK,MAEhBw5M,EACJp7L,EAAK85F,MACF7qG,QAAO,SAACrN,GAAD,OAAWs5M,EAAWv/J,SAAX,GAAuB/5C,EAAK4zM,UAC9CvmM,QAAO,SAACrN,GAAD,MAAuB,KAAbA,EAAK5C,QAAaI,OAAS,EAC3Ci8M,EAASN,EAAIp/M,MAAM,GACnB2/M,EAASP,EAAIp/M,MAAM,GACnBi4D,EAAQmnJ,EAAInsG,MAAM,CAACysG,EAAQC,IAC3BC,EAAYR,EAAIQ,UAAU,CAC9Bl6L,MAAO+5L,EACPX,YAAa,KAEX3rL,EAAQysL,EAAU,GAAKA,EAAU,GAAGzsL,MAAQ,GAC5CkhB,EAAIurK,EAAU,GACd3nJ,EAAM,GAAK2nJ,EAAU,GAAGC,aAAe1sL,EAAQ,EAC/C8kC,EAAM,GAMV,OAJEsnJ,EAAWv/J,SAASgqJ,OAAOC,IAAIC,SAASC,MAAM2V,cAAgB,WAE9DzrK,GAAa,GAARlhB,GAEA,CACL9vB,KAAM,OACN6vC,MAAO0mK,QAAQ8D,QAAQqC,eACrB,CACE1rK,EAAGA,EACHC,EAAG2jB,EAAM,GACT9kC,MAAe,GAARA,EACPoC,OAAQ6pL,EAAI1gK,KAAK,CAAC,EAAGihK,IAAS,IAEhC,CACEtrK,EAAGtK,EAAOi2K,SAAS3rK,EACnBC,EAAGvK,EAAOi2K,SAAS1rK,EACnBnhB,MAAO4W,EAAOi2K,SAAS7sL,MACvBoC,OAAQwU,EAAOi2K,SAASzqL,SAG5BnP,MAAOg5L,EAAIh5L,WAqDVu0L,IAELrpK,EAAIssK,UAAU11L,GAAQ,QAtKpBopB,EAAIqpB,QC7WR,IAAIs+I,GAAU,KACVG,GAAY,CAAE/O,KAAM,KAAMyO,MAAO,KAAMC,KAAM,MCHwF,GDI1H,CACbz5M,KAAM,sBACNmuB,MAAO,CACLnuB,KAAM,CAAE+D,KAAMuL,OAAQ++L,UAAU,GAChCr9L,GAAI,CAAEjN,KAAMuL,OAAQ++L,UAAU,GAC9BwG,SAAU,CAAE9wM,KAAMoqE,QAASE,SAAS,GACpCovI,eAAgB,CAAE15M,KAAMoqE,QAASE,SAAS,GAC1CqvI,aAAc,CAAE35M,KAAM26D,OAAQ2P,QAAS,GACvCuyI,mBAAoB,CAClBvyI,QAAS,CAAEwyI,aAAc,CAAG,CAAEhD,aAAc,MAG9CiD,SAAU,CAAE/8M,KAAMoqE,QAASE,SAAS,GACpC0yI,UAAW,CAAEh9M,KAAM+I,KAAMuhE,QAAS,IAAIvhE,OAExCiY,KAfa,WAgBX,MAAO,CACL9M,KAAMyyL,OAAOC,IAAIC,SAASC,MAC1BmW,WAAYtE,eAAelyM,QAAQ,KAAM,KAAKA,QAAQ,KAAM,KAC5DovM,YAAa,GACbC,UAAW,GACXoH,aAAc,GACdlH,UAAW,OACXmH,cAAe,EACfnW,KAAwB,MAAlB+O,GAAU/O,KAAevoM,KAAKu+M,UAAYjH,GAAU/O,KAC1DoW,SAAU3+M,KAAKu+M,UAAUn8I,UAEzBw8I,cAAe,CACbC,aAAc7+M,KAAK8+M,oBAErBC,cAAc,EACd/D,cAAe,CACbO,WAAW,EACXlS,OAAQ,EACRmS,UAAW,EACXC,WAAW,EACXpJ,UAAU,KAIhBrvH,QAxCa,WAyCXm0H,GAAUW,QAAQnyM,KAChB7C,SAASyL,eAAe,iCAE1BvO,KAAKg/M,SACLh/M,KAAKi/M,YACLj/M,KAAKk/M,iBAEPzzK,QAAS,CAEPqzK,mBAFO,SAEYjjL,GAChB,OAAOA,EAAKumC,UAAYpiE,KAAKu+M,UAAUn8I,WAG1C+8I,eAAgB,WAOZ,IAAI3sK,EACAn1C,GAPgB,QAAlB2C,KAAKu3M,YACPv3M,KAAK0+M,cAAgB,EACrB1+M,KAAKuoM,KAAO,IAAIj+L,KAAKtK,KAAKuoM,KAAKnmI,UAAY,QAEvB,SAAlBpiE,KAAKu3M,aACPv3M,KAAK0+M,cAAgB,EAIjB1+M,KAAKuoM,KAAKC,WAAa,EAAI,GAAK,GAClCh2J,EAAIxyC,KAAKuoM,KAAKG,cAAgB,EAC9BrrM,EAAI,KAEJm1C,EAAIxyC,KAAKuoM,KAAKG,cACdrrM,EAAI2C,KAAKuoM,KAAKC,WAAa,EAAI,GAEjCxoM,KAAKuoM,KAAO,IAAIj+L,KAAKkoC,EAAI,IAAMn1C,GAC/B2C,KAAK2+M,SAAW,IAAIr0M,KAClBtK,KAAK2+M,SAASjW,cAAgB,KAAO1oM,KAAK2+M,SAASnW,WAAa,KAG9C,QAAlBxoM,KAAKu3M,YACPv3M,KAAK0+M,cAAgB,EACrB1+M,KAAKuoM,KAAO,IAAIj+L,KAAKtK,KAAKuoM,KAAKG,cAAgB,EAAI,IACnD1oM,KAAK2+M,SAAW,IAAIr0M,KAAKtK,KAAK2+M,SAASjW,cAAgB,KAEzD1oM,KAAKi4M,SAGPmH,eAAgB,WAOZ,IAAI5sK,EACAn1C,GAPgB,QAAlB2C,KAAKu3M,YACPv3M,KAAK0+M,cAAgB,EACrB1+M,KAAKuoM,KAAO,IAAIj+L,KAAKtK,KAAKuoM,KAAKnmI,UAAY,QAEvB,SAAlBpiE,KAAKu3M,aACPv3M,KAAK0+M,cAAgB,EAIjB1+M,KAAKuoM,KAAKC,WAAa,EAAI,GAAK,IAClCh2J,EAAIxyC,KAAKuoM,KAAKG,cAAgB,EAC9BrrM,EAAI,IAEJm1C,EAAIxyC,KAAKuoM,KAAKG,cACdrrM,EAAI2C,KAAKuoM,KAAKC,WAAa,EAAI,GAEjCxoM,KAAKuoM,KAAO,IAAIj+L,KAAKkoC,EAAI,IAAMn1C,GAC/B2C,KAAK2+M,SAAW,IAAIr0M,KAClBtK,KAAK2+M,SAASjW,cAAgB,KAAO1oM,KAAK2+M,SAASnW,WAAa,KAG9C,QAAlBxoM,KAAKu3M,YACPv3M,KAAK0+M,cAAgB,EACrB1+M,KAAKuoM,KAAO,IAAIj+L,KAAKtK,KAAKuoM,KAAKG,cAAgB,EAAI,IACnD1oM,KAAK2+M,SAAW,IAAIr0M,KAAKtK,KAAK2+M,SAASjW,cAAgB,KAEzD1oM,KAAKi4M,SAGPgH,UAlEO,WAmELr/L,WACE,WACE5f,KAAKi4M,QACLj4M,KAAKi/M,aACLxgN,KAAKuB,MACP,OAGJq/M,UA3EO,WA2EK,WACNrzL,EAAM,IAAI1hB,KAAKyvM,MAAMzvM,KAAK0hB,OAAOguL,OAAO,eAAe53I,UAEvDp2C,EADY,IAAI1hB,KAAKtK,KAAK2+M,UAAUv8I,YAEtCpiE,KAAK2+M,SAAW,IAAIr0M,KAAK0hB,GACzBhsB,KAAK++M,cAAe,EACpB/+M,KAAKmiF,WAAU,WACb,EAAK48H,cAAe,OAK1BG,cAvFO,WAuFS,WACdl/M,KAAKq/M,YACLz/L,YAAW,WACT,EAAKs/L,kBACJ,MAGLF,OA9FO,WAgGLh/M,KAAKo3M,YAAcp3M,KAAKo+M,mBAExBp+M,KAAKq3M,UAAY,EACjBr3M,KAAKs/M,cAEPtH,UArGO,SAqGG57L,GACO,GAAXA,EAAEle,MACJ8B,KAAKusE,QAAQgzI,mBAAoB,EAEjCv/M,KAAKusE,QAAQgzI,mBAAoB,EAEnCv/M,KAAKy+M,aAAeriM,EAAEmsL,KACtBvoM,KAAKu3M,UAAY,OACjBv3M,KAAK0+M,cAAgB,EACrBpH,GAAY,CAAE/O,KAAM,KAAMyO,MAAO,KAAMC,KAAM,MAC9B,GAAX76L,EAAEle,OAAyB,GAAXke,EAAEle,OAAyB,GAAXke,EAAEle,OAAcke,EAAEle,MACpD8B,KAAKuoM,KAAoC,MAA7B+O,GAAUt3M,KAAKu3M,WAAqBv3M,KAAKu+M,UAAYjH,GAAUt3M,KAAKu3M,WAChFv3M,KAAK2+M,SAAwC,MAA7BrH,GAAUt3M,KAAKu3M,WAAqBv3M,KAAKu+M,UAAYjH,GAAUt3M,KAAKu3M,WAKtFv3M,KAAKi4M,SAEPC,kBAxHO,SAwHW32M,EAAMi+M,GAClBx/M,KAAKu3M,YAAciI,IACvBx/M,KAAKu3M,UAAYiI,EACjBx/M,KAAK0+M,cAAgBn9M,EAED,GAAlBvB,KAAKq3M,WACa,GAAlBr3M,KAAKq3M,WACa,GAAlBr3M,KAAKq3M,WACa,GAAlBr3M,KAAKq3M,WAELr3M,KAAKuoM,KAC0B,MAA7B+O,GAAUt3M,KAAKu3M,WACX,IAAIjtM,MAAK,IAAIA,MAAO83D,WACpBk1I,GAAUt3M,KAAKu3M,WACrBv3M,KAAK2+M,SAC0B,MAA7BrH,GAAUt3M,KAAKu3M,WACX,IAAIjtM,MAAK,IAAIA,MAAO83D,WACpBk1I,GAAUt3M,KAAKu3M,aAErBv3M,KAAKuoM,KAC0B,MAA7B+O,GAAUt3M,KAAKu3M,WACX,IAAIjtM,KACJgtM,GAAUt3M,KAAKu3M,WACrBv3M,KAAK2+M,SAC0B,MAA7BrH,GAAUt3M,KAAKu3M,WACX,IAAIjtM,KACJgtM,GAAUt3M,KAAKu3M,YAEvBv3M,KAAKi4M,UAEPE,WAtJO,SAsJI5P,GACT+O,GAAUt3M,KAAKu3M,WAAahP,EAC5BvoM,KAAKi4M,SAEPqH,WAAW,WACT1E,GACE56M,KAAKwO,GACLxO,KAAKq3M,UACLr3M,KAAKuoM,KACLvoM,KAAK0+M,cACLvH,GACAn3M,KAAKg7M,cACLh7M,KAAKi7M,eACLj7M,KAAKk7M,aACLl7M,KAAKs+M,SAAS,IAAI,MAGtBrG,MAAOj7L,EAAEmkC,UAAS,WAChBnhD,KAAKs/M,eACJ,KACHG,YA1KO,WA2KL,IAAMlgL,EAAQ,CACZ/wB,GAAIxO,KAAKwO,GACT6jM,SAAUryM,KAAKqyM,SACf6I,aAAcl7M,KAAKk7M,aACnBkD,mBAAoBr7L,KAAKs3C,UAAUr6D,KAAKo+M,oBACxCE,SAAUt+M,KAAKs+M,SACfC,UAAWv+M,KAAKu+M,WAElBt7M,OAAOy1M,aAAaC,QAClB,0BACA51L,KAAKs3C,UAAU96B,IAEjBt8B,OAAOojC,KAAK,oCAEdgyK,aAzLO,WA2LL,GADA93L,QAAQi2I,KAAKx2J,KAAKi7M,gBACI,KAAlBj7M,KAAKq3M,WAAsC,KAAlBr3M,KAAKq3M,UAAkB,CAClD,GAAIr3M,KAAKk7M,aAAe,EACtB,IAAIwE,EAAe,OAEfA,EAAe,EAGrBzf,OACGwC,KAAK,wCAAyC,CAC7C8F,KAAMD,GAAWtoM,KAAKuoM,MACtBoX,MAAO3/M,KAAKwO,GACZ8pM,WAAYnB,GAAQoB,aAAapvM,MAAM,KAAK,GAC5CqvM,UAAWrB,GAAQ35F,WACnBi7F,WAAYtB,GAAQxnF,YACpB+vF,eACAzD,aAAcj8M,KAAKi7M,iBAEpB72K,SAAQ,SAACy9B,GACR20I,GAAW30I,EAAIt/C,SAEhB1F,MAAK,SAACglD,GACL80I,OAAOC,MAAM/0I,EAAI15D,aAGrB,GAAsB,QAAlBnI,KAAKu3M,WAAyC,SAAlBv3M,KAAKu3M,UAEnCt0M,OAAOy1M,aAAaC,QAClB,+BACA51L,KAAKs3C,UAAU,CACb78D,KAAMwC,KAAKxC,KACXgR,GAAIxO,KAAKwO,GACT+oM,UAAWv3M,KAAKu3M,UAChBhP,KAAMD,GAAWtoM,KAAKuoM,SAG1B3yL,SAASG,KAAT,sBACoB,QAAlB/V,KAAKu3M,UAAsB,QAAU,aAElC,GAAsB,QAAlBv3M,KAAKu3M,UAAqB,CAEnC,IAAIh2M,SAEFA,EADEvB,KAAKqyM,UACkB,kBAAlBryM,KAAKq3M,UAAgC,EAErC,EAETpX,OACGwC,KAAK,kDAAmD,CACvD8F,KAAMD,GAAWtoM,KAAKuoM,MACtBhnM,OACA85M,aAAcr7M,KAAKq3M,UACnBsI,MAAO3/M,KAAKwO,GACZ8pM,WAAYnB,GAAQoB,aAAapvM,MAAM,KAAK,GAC5CqvM,UAAWrB,GAAQ35F,WACnBi7F,WAAYtB,GAAQxnF,cAErBvrF,SAAQ,SAACy9B,GACR20I,GAAW30I,EAAIt/C,SAEhB1F,MAAK,SAACglD,GACL80I,OAAOC,MAAM/0I,EAAI15D,WAM7B08D,MAAO,CACL65I,cADK,SACShgN,GACH,GAALA,IACFsB,KAAKw+M,WAAatE,eAAelyM,QAAQ,KAAM,KAAKA,QAAQ,KAAM,MAE3D,GAALtJ,IACFsB,KAAKw+M,WAAavE,kBAAkB,SACjCjyM,QAAQ,KAAM,KACdA,QAAQ,KAAM,MAEV,GAALtJ,IACFsB,KAAKw+M,WAAavE,kBAAkB,QACjCjyM,QAAQ,KAAM,KACdA,QAAQ,KAAM,OAGrBo2M,mBAhBK,SAgBchiM,GAAG,WACpBA,EAAE+uB,SAAQ,SAAChnC,GACTA,EAAKy7M,SAAWz7M,EAAKy7M,SAAW,EAAKnqM,KAAKtR,EAAKy7M,UAAY,GACvDz7M,EAAKk6M,cAAgBl6M,EAAKk6M,aAAa18M,OAAS,GAClDwC,EAAKk6M,aAAalzK,SAAQ,SAAC2xK,GACzBA,EAAM+C,WAAa,EAAKpqM,KAAKqnM,EAAM+C,kBAKzC7/M,KAAKo3M,YAAch7L,IAIvBgV,SAAU,CACR0uL,QAAS,WACP,MAAsB,QAAlB9/M,KAAKu3M,UACE,IAAIjtM,KAAKtK,KAAKuoM,MAAMnmI,UACpB,IAAI93D,KAAQtK,KAAKu+M,UAAU7V,cAA3B,KAA4C1oM,KAAKu+M,UAAU/V,WAAa,GAAxE,IAA6ExoM,KAAKu+M,UAAU9V,WAAarmI,UACvF,SAAlBpiE,KAAKu3M,UACL,IAAIjtM,KAAKtK,KAAKuoM,MAAMnmI,UAAY,IAAI93D,KAAKtK,KAAKu+M,UAAU7V,cAAgB,KAAO1oM,KAAKu+M,UAAU/V,WAAa,IAAIpmI,UAC7F,QAAlBpiE,KAAKu3M,UACL,IAAIjtM,KAAKtK,KAAKuoM,MAAMnmI,UAAY,IAAI93D,KAAKtK,KAAKu+M,UAAU7V,cAAgB,IAAItmI,eADhF,GAKT29I,gBAZQ,WAaN,IAAMC,EAAahgN,KAAKg7M,cAAcO,UAClC0E,EAAe,CACjBC,WAAY,SACZC,aAAc,KACdC,WAAY,MACZC,aAAc,MAYhB,OAVIrgN,KAAKi7M,gBAMPgF,EAAaC,WAAaF,EAAa,QAAS,SAChDC,EAAaG,WAAaJ,EAAa,MAAQ,MAC/CC,EAAaI,aAAeL,EAAa,KAAM,OAP/CC,EAAaC,WAAaF,EAAa,QAAS,SAChDC,EAAaE,aAAeH,EAAa,MAAQ,MACjDC,EAAaI,aAAeL,EAAa,KAAO,KAChDC,EAAaG,WAAaJ,EAAa,MAAQ,OAM1CC,GAGTK,YAjCQ,WAiCM,WACRC,EAAW,CACb,CAACxI,MAAOtiM,KAAK+qM,qBACZC,WAAYzgN,KAAKg7M,cAAc3I,SAAW58L,KAAKirM,0BAA0BjrM,KAAKkrM,2BAC/E,CAAC5I,MAAOtiM,KAAKmrM,4BACZH,WAAYzgN,KAAKg7M,cAAc3I,SAAW58L,KAAKorM,iCAAiCprM,KAAKqrM,iCACrFC,UAAW,QAAUtrM,KAAKurM,sCAAwC,KAAOvrM,KAAKwrM,yCASjF,OANAV,EAASp1K,SAAQ,SAAAqsF,GACfA,EAAQipF,WAAajpF,EAAQipF,WAAWz4M,QAAQ,MAAO,SACpDwvH,EAAQupF,WAAa,EAAKzC,WAC3B9mF,EAAQipF,YAAcjpF,EAAQupF,cAG3BR,KE5WE,I,OAXC,YACd,ICTW,WAAa,IAAIlvD,EAAIrxJ,KAASyyG,EAAG4+C,EAAIhgF,eAAmB4D,EAAGo8E,EAAI9wE,MAAMtL,IAAIw9B,EAAG,OAAOx9B,EAAG,MAAM,CAACyP,YAAY,yBAAyB,CAACzP,EAAG,MAAM,CAACyP,YAAY,0CAA0C,CAAE2sE,EAAkB,eAAEp8E,EAAG,MAAM,CAACyP,YAAY,uCAAuCt8D,GAAG,CAAC,MAAQipI,EAAIouD,cAAc,CAACxqI,EAAG,IAAI,CAACyP,YAAY,mBAAmB2sE,EAAIl9E,KAAKk9E,EAAIn9E,GAAG,KAAKe,EAAG,oBAAoB,CAACyP,YAAY,KAAK90E,MAAM,CAAC,MAAQyhJ,EAAI+lD,aAAahvL,GAAG,CAAC,OAASipI,EAAI2mD,WAAW1+H,MAAM,CAACp7E,MAAOmzJ,EAAa,UAAE/qJ,SAAS,SAAUu9L,GAAMxyC,EAAIgmD,UAAUxT,GAAK/mH,WAAW,eAAeu0E,EAAIn9E,GAAG,KAAwB,MAAlBm9E,EAAIgmD,UAAmBpiI,EAAG,MAAM,CAACyP,YAAY,mCAAmCt8D,GAAG,CAAC,MAAQipI,EAAIgnD,gBAAgBhnD,EAAIl9E,KAAKk9E,EAAIn9E,GAAG,KAAKe,EAAG,MAAM,CAACyP,YAAY,2BAA2B,CAACzP,EAAG,SAAS,CAACyP,YAAY,2BAA2Bt8D,GAAG,CAAC,MAAQipI,EAAI8tD,kBAAkB9tD,EAAIn9E,GAAG,KAAMm9E,EAAgB,aAAEp8E,EAAG,iBAAiB,CAACyV,YAAY,CAAC,MAAQ,SAAS96E,MAAM,CAAC,OAASyhJ,EAAImtD,WAAW,KAAOntD,EAAIkmD,UAAU,KAAO,QAAQ,iBAAiBlmD,EAAIutD,eAAex2L,GAAG,CAAC,OAASipI,EAAI8mD,YAAY7+H,MAAM,CAACp7E,MAAOmzJ,EAAQ,KAAE/qJ,SAAS,SAAUu9L,GAAMxyC,EAAIk3C,KAAK1E,GAAK/mH,WAAW,UAAUu0E,EAAIl9E,KAAKk9E,EAAIn9E,GAAG,KAAKe,EAAG,SAAS,CAACyP,YAAY,4BAA4B90E,MAAM,CAAC,UAAYyhJ,EAAIyuD,SAAS13L,GAAG,CAAC,MAAQipI,EAAI+tD,mBAAmB,GAAG/tD,EAAIn9E,GAAG,KAAMm9E,EAAIotD,aAAa98M,OAAS,EAAGszE,EAAG,KAAK,CAACyP,YAAY,+CAA+CgG,YAAY,CAAC,eAAe,UAAU2mE,EAAI19E,GAAI09E,EAAgB,cAAE,SAASltJ,GAAM,OAAO8wE,EAAG,KAAK,CAACz2E,IAAI2F,EAAK5C,KAAKk5E,MAAM,CAAEqpH,IAAK3/L,EAAKq7M,iBAAmBnuD,EAAIkmD,WAAYnvL,GAAG,CAAC,MAAQ,SAASkqD,GAAQ,OAAO++E,EAAI6mD,kBAAkB/zM,EAAK5C,KAAM4C,EAAKq7M,mBAAmB,CAACnuD,EAAIn9E,GAAG,aAAam9E,EAAI39E,GAAGvvE,EAAK4zM,OAAO,iBAAgB,GAAG1mD,EAAIl9E,MAAM,GAAGk9E,EAAIn9E,GAAG,KAAKe,EAAG,MAAM,CAACyP,YAAY,gCAAgC,CAACzP,EAAG,MAAM,CAACrlE,MAAM,CAAC,GAAK,kCAAkCyhJ,EAAIn9E,GAAG,KAAMm9E,EAAI2pD,cAAuB,UAAE/lI,EAAG,MAAM,CAACyP,YAAY,qBAAqBpgE,MAAM,CAAErT,IAAMjR,KAAKi7M,eAAwB,MAAP,QAAgB,CAAChmI,EAAG,MAAM,CAACyP,YAAY,mBAAmB,CAACzP,EAAG,MAAM,CAACyP,YAAY,kBAAkB,CAACzP,EAAG,aAAa,CAACyP,YAAY,OAAO90E,MAAM,CAAC,OAAS,QAAQ,UAAY,WAAW,CAACqlE,EAAG,MAAM,CAACrlE,MAAM,CAAC,KAAO,WAAWmgE,KAAK,WAAW,CAACshF,EAAIn9E,GAAGm9E,EAAI39E,GAAG29E,EAAI57I,KAAKyrM,+BAA+B7vD,EAAIn9E,GAAG,KAAKe,EAAG,MAAM,CAACrlE,MAAM,CAAC,IAAM,8CAA8C,IAAM,SAAS,GAAGyhJ,EAAIn9E,GAAG,KAAKe,EAAG,MAAM,CAACyP,YAAY,mBAAmB,CAACzP,EAAG,IAAI,CAACo8E,EAAIn9E,GAAGm9E,EAAI39E,GAAG29E,EAAI57I,KAAK0rM,8BAA8B9vD,EAAIn9E,GAAG,KAAKe,EAAG,IAAI,CAACrlE,MAAM,CAAC,MAAUyhJ,EAAI2pD,cAAoB,OAAI,IAAO3pD,EAAI57I,KAAQ,MAAK,CAAC47I,EAAIn9E,GAAG,iBAAiBm9E,EAAI39E,GAAG29E,EAAI2pD,cAAc3R,QAAQ,IAAIh4C,EAAI39E,GAAG29E,EAAI57I,KAAK2rM,KAAK,sBAAsB/vD,EAAIn9E,GAAG,KAAKe,EAAG,MAAM,CAACyP,YAAY,mBAAmB,CAACzP,EAAG,MAAM,CAACyP,YAAY,kBAAkB,CAACzP,EAAG,aAAa,CAACyP,YAAY,OAAO90E,MAAM,CAAC,OAAS,QAAQ,UAAY,WAAW,CAACqlE,EAAG,MAAM,CAACrlE,MAAM,CAAC,KAAO,WAAWmgE,KAAK,WAAW,CAACshF,EAAIn9E,GAAGm9E,EAAI39E,GAAG29E,EAAI57I,KAAK4rM,kCAAkChwD,EAAIn9E,GAAG,KAAKe,EAAG,MAAM,CAACrlE,MAAM,CAAC,IAAM,iDAAiD,IAAM,SAAS,GAAGyhJ,EAAIn9E,GAAG,KAAKe,EAAG,MAAM,CAACyP,YAAY,mBAAmB,CAACzP,EAAG,IAAI,CAACo8E,EAAIn9E,GAAGm9E,EAAI39E,GAAG29E,EAAI57I,KAAK6rM,iCAAiCjwD,EAAIn9E,GAAG,KAAKe,EAAG,IAAI,CAACrlE,MAAM,CAAC,MAAUyhJ,EAAI2pD,cAAuB,UAAI,IAAO3pD,EAAI57I,KAAQ,MAAK,CAAC47I,EAAIn9E,GAAG,iBAAiBm9E,EAAI39E,GAAG29E,EAAI2pD,cAAcQ,WAAW,IAAInqD,EAAI39E,GAAG29E,EAAI57I,KAAK2rM,KAAK,sBAAsB/vD,EAAIn9E,GAAG,KAAKe,EAAG,MAAM,CAACyP,YAAY,iBAAiB,CAAC2sE,EAAIn9E,GAAG,IAAIm9E,EAAI39E,GAAG29E,EAAI57I,KAAKy7L,SAAS,cAAcj8H,EAAG,aAAa,CAACyP,YAAY,OAAO90E,MAAM,CAAC,OAAS,QAAQ,QAAUyhJ,EAAI57I,KAAK8rM,uBAAuB,UAAY,WAAW,CAACtsI,EAAG,MAAM,CAACrlE,MAAM,CAAC,IAAM,mCAAmC,IAAM,SAAS,KAAKyhJ,EAAIl9E,KAAKk9E,EAAIn9E,GAAG,KAAMm9E,EAAI2pD,cAAuB,UAAE/lI,EAAG,MAAM,CAACyP,YAAY,YAAYpgE,MAAM,CAAE+M,MAAOggI,EAAI0uD,gBAAgBG,WACztH9tL,WAAYi/H,EAAI0uD,gBAAgBI,eAAgB,CAAClrI,EAAG,MAAM,CAACyP,YAAY,WAAWpgE,MAAM,CAAE+M,MAAOggI,EAAI0uD,gBAAgBK,WAClGlkE,YAAamV,EAAI0uD,gBAAgBM,eAAgB,CAAChvD,EAAIn9E,GAAG,aAAam9E,EAAI39E,GAAG29E,EAAIivD,YAAY,GAAU,OAAG,cAAcrrI,EAAG,aAAa,CAACyP,YAAY,OAAO90E,MAAM,CAAC,OAAS,QAAQ,UAAY,WAAW,CAACqlE,EAAG,MAAM,CAACrlE,MAAM,CAAC,KAAO,WAAWuiE,SAAS,CAAC,UAAYk/E,EAAI39E,GAAG29E,EAAIivD,YAAY,GAAe,aAAIvwI,KAAK,YAAYshF,EAAIn9E,GAAG,KAAKe,EAAG,MAAM,CAACrlE,MAAM,CAAC,IAAM,mCAAmC,IAAM,SAAS,GAAGyhJ,EAAIn9E,GAAG,KAAKe,EAAG,MAAM,CAACyP,YAAY,YAAY,CAAC2sE,EAAIn9E,GAAG,aAAam9E,EAAI39E,GAAG29E,EAAIivD,YAAY,GAAU,OAAG,cAAcrrI,EAAG,aAAa,CAACyP,YAAY,OAAO90E,MAAM,CAAC,OAAS,QAAQ,UAAY,WAAW,CAACqlE,EAAG,MAAM,CAACrlE,MAAM,CAAC,KAAO,WAAWuiE,SAAS,CAAC,UAAYk/E,EAAI39E,GAAG29E,EAAIivD,YAAY,GAAe,aAAIvwI,KAAK,YAAYshF,EAAIn9E,GAAG,KAAKe,EAAG,MAAM,CAACrlE,MAAM,CAAC,IAAM,mCAAmC,IAAM,SAAS,KAAKyhJ,EAAIl9E,WACl0B,IDSpB,EACA,KACA,KACA,M,SEbFqtI,GAAoB/9H,QAAU,SAAArE,GAC1BA,EAAIlG,UAAUsoI,GAAoBhkN,KAAMgkN,KAG7BA,UCNsL,GCsBrM,CACEhkN,KAAM,YACN+kB,KAFF,WAGI,MAAO,CACLk/L,QAAQ,EACR9hC,MAAO,GACP+hC,mBAAoB,GACpBC,SAAS,EACTC,cAAe,KAGnBxwL,SAAU,CACRywL,OADJ,WAEM,OAAO7hN,KAAKusE,UAGhB9gC,QAAS,CACPqhE,OADJ,WAEM9sG,KAAK6hN,OAAOxmI,MAAM,eAAe,IAEnCymI,GAJJ,WAKM,IAAK9hN,KAAK2hN,QAAS,OAAO3hN,KAAK8sG,SAC/B9sG,KAAK6hN,OAAOE,YAAY/hN,KAAK4hN,gBAE/BI,MARJ,WASMhiN,KAAK2hN,SAAW3hN,KAAK2hN,UAGzBliB,cA5BF,aA6BE38G,QA7BF,WA6BA,WACIm9G,OACJ,0CACA,kBACM,OAAN,gBAEA,qBACM,EAAN,mBACM,EAAN,6CACM,EAAN,wBACM,EAAN,eC1Ce,I,OAXC,YACd,ICTW,WAAa,IAAI5uC,EAAIrxJ,KAASyyG,EAAG4+C,EAAIhgF,eAAmB4D,EAAGo8E,EAAI9wE,MAAMtL,IAAIw9B,EAAG,OAAOx9B,EAAG,aAAa,CAACrlE,MAAM,CAAC,MAAQyhJ,EAAIsuB,MAAM,MAAQ,IAAI,KAAOtuB,EAAIowD,SAAS,CAACxsI,EAAG,MAAM,CAACyP,YAAY,2BAA2B,CAACzP,EAAG,MAAM,CAACyP,YAAY,iCAAiC,CAACzP,EAAG,aAAa,GAAG,CAACA,EAAG,MAAM,CAACyP,YAAY,wCAAwC,CAAC2sE,EAAIn9E,GAAG,yBAAyBm9E,EAAI39E,GAAG29E,EAAIqwD,oBAAoB,2BAA2B,KAAKrwD,EAAIn9E,GAAG,KAAKe,EAAG,MAAM,CAACyP,YAAY,qCAAqC90E,MAAM,CAAC,cAAgB,iBAAiB,CAACqlE,EAAG,OAAO,CAACwF,MAAM,CAACxkE,QAAQo7I,EAAIswD,SAASv5L,GAAG,CAAC,MAAQipI,EAAI2wD,SAAS3wD,EAAIn9E,GAAG,KAAKe,EAAG,SAAS,CAAC7sD,GAAG,CAAC,MAAQipI,EAAI2wD,QAAQ,CAAC3wD,EAAIn9E,GAAG,kBAAkBm9E,EAAIn9E,GAAG,KAAKe,EAAG,MAAM,CAACyP,YAAY,mCAAmC90E,MAAM,CAAC,KAAO,UAAUmgE,KAAK,UAAU,CAACkF,EAAG,SAAS,CAACyP,YAAY,cAAcgG,YAAY,CAAC,eAAe,QAAQtiE,GAAG,CAAC,MAAQipI,EAAIvkD,SAAS,CAACukD,EAAIn9E,GAAG,QAAQm9E,EAAIn9E,GAAG,KAAKe,EAAG,SAAS,CAACyP,YAAY,cAAc90E,MAAM,CAAC,UAAYyhJ,EAAIswD,SAASv5L,GAAG,CAAC,MAAQipI,EAAIywD,KAAK,CAACzwD,EAAIn9E,GAAG,cAC7/B,IDWpB,EACA,KACA,KACA,M,SEwXF,SAAS+tI,KAAT,WACE,OAAOhiB,OACT,4DACI,SAAJ,eACI,aAAJ,IAEA,kBACI,OAAJ,kCACI,EAAJ,kCAEA,qBACI,EAAJ,mCACI,EAAJ,2CAOA,SAASiiB,GAAiBr0M,GAA1B,WAEM7C,EAAIu/B,EAAE18B,EAAEnG,QACRgrD,EAAI1nD,EAAEiI,KAAK,aACX5V,EAAI2N,EAAEiI,KAAK,aACXjU,EAAIgM,EAAEiI,KAAK,iBAEXssB,EAAQ,CACV4iL,WAAYniN,KAAK6hN,OAAOjc,GACxBwc,UAAWpiN,KAAK6hN,OAAO7jK,MACvBqkK,4BAA6BriN,KAAKsiN,aAAaC,iBAEjDvjN,EAAKA,EAAUA,EAAEmK,MAAM,KAAKnI,OAAO0xD,GAA1B,CAACA,IACRvnB,SAAQ,SAAZ,GACI5L,EAAMnjB,GAAK,EAAf,mBAEEmjB,EAAMliC,GAAK,EACXmlN,GAAsBplN,KAAK4C,KAAMu/B,GAkBnC,SAASijL,GAAsBjjL,GAC7B,IAAIrgB,EAAOlf,KACXuqC,EAAEwsK,cAEFJ,OAAO8L,QAAQ,iBAAiB,WAE9BxiB,OACJ,cACA,kBACM,EAAN,kDAEA,qBACM,GAAN,QACM,YAAN,WACQ,EAAR,gBACA,KACM,EAAN,kCAEIjgM,KAAKi9K,WC/c0L,OD2RnM,CACEz/K,KAAM,UACN+kB,KAFF,WAGI,MAAO,CACLk/L,QAAQ,EACRiB,SAAS,EACTC,mBAAmB,EACnBC,YAAa,GACbN,aAAc,GACdO,UAAW,GACXniB,KAAM,EACNoiB,WAAW,IAGfr3K,QAAS,CACPqhE,OADJ,WAEM9sG,KAAK6hN,OAAOxmI,MAAM,eAAe,IAEnC0nI,WAJJ,SAIA,GACMb,GAAiB9kN,KAAK4C,KAAM6N,IAE9Bm1M,WAPJ,WAQMhjN,KAAK0gM,KAAoB,GAAb1gM,KAAK0gM,KAAY,EAAI,GAEnCuiB,YAVJ,WAWMjjN,KAAK8iN,WAAa9iN,KAAK8iN,UACvBb,GAAc7kN,KAAK4C,OAErBkjN,UAuHJ,SAAmB9mM,GAEjB,IAAImjB,EAAQ,CACV4iL,WAAYniN,KAAK6hN,OAAOjc,GACxBwc,UAAWpiN,KAAK6hN,OAAO7jK,MACvBmlK,0BAA2B,EAC3BC,eAAgBhnM,EAChBimM,4BAA6BriN,KAAKsiN,aAAaC,gBAEjDC,GAAsBplN,KAAK4C,KAAMu/B,KA9HjCnO,SAAU,CACRywL,OADJ,WAEM,OAAO7hN,KAAKusE,SAEd+wI,IAJJ,WAKM,OAAOt9M,KAAK2iN,kBAClB,yCACA,wDAEIU,gBATJ,WAUM,OAAOrjN,KAAK6hN,OAAOgB,UAAUQ,gBAAgB98M,KAAI,SAAvD,GAEQ,OADAlJ,EAAEa,MAAQw1B,SAASr2B,EAAEa,OACdb,MAGXimN,sBAfJ,WAgBM,OAAOtjN,KAAK6hN,OAAOgB,UAAUS,sBAAsB/8M,KAAI,SAA7D,GAEQ,OADAlJ,EAAEa,MAAQw1B,SAASr2B,EAAEa,OACdb,MAGXkmN,cArBJ,WAsBM,OAAOvjN,KAAK6hN,OAAOgB,UAAUU,cAAch9M,KAAI,SAArD,GAEQ,OADAlJ,EAAEa,MAAQw1B,SAASr2B,EAAEa,OACdb,MAGXmmN,cA3BJ,WA4BM,OAAOxjN,KAAK6hN,OAAOlL,QAAuB,GAAb32M,KAAK0gM,MAEpC+iB,cA9BJ,WA+BM,OAAOzjN,KAAK6hN,OAAOlL,QAAuB,GAAb32M,KAAK0gM,MAEpCgjB,cAjCJ,WAkCM,OAAO1jN,KAAK6hN,OAAOlL,QAAU32M,KAAK0iN,SAEpCiB,YApCJ,WAqCM,OAAQ3jN,KAAK6hN,OAAOlL,QAAU32M,KAAK0iN,SAErCkB,QAvCJ,WAwCM,OAAQ5jN,KAAK6hN,OAAOlL,SAGxB7zH,QAzEF,WAyEA,WACIm/H,GAAc7kN,KAAK4C,MAAMokC,SAAQ,SAArC,GACM,EAAN,cAGEzrB,QAAS,CACPkrM,iBAAkB,SAAtB,GACM,IAAI9lN,EAAI,CACN,GAAM,OACN,GAAM,QACN,GAAM,SACd,GACM,OAAIA,GAGGqe,GAET0nM,eAAgB,SAApB,GACM,OAAS,GAAL1nM,EACK,KAEF,MAET2nM,WAAY,SAAhB,GACM,OAAS,GAAL3nM,EACK4nM,SAAS/jB,OAAOhjB,MAElB+mC,SAAS/jB,OAAO55J,QE5Wd,I,OAXC,YACd,ICTW,WAAa,IAAIgrH,EAAIrxJ,KAASyyG,EAAG4+C,EAAIhgF,eAAmB4D,EAAGo8E,EAAI9wE,MAAMtL,IAAIw9B,EAAG,OAAOx9B,EAAG,aAAa,CAACrlE,MAAM,CAAC,MAAQ,IAAI,KAAOyhJ,EAAIowD,SAAS,CAACxsI,EAAG,MAAM,CAACyP,YAAY,uDAAuD90E,MAAM,CAAC,KAAO,UAAUmgE,KAAK,UAAU,CAACkF,EAAG,SAAS,CAACyP,YAAY,cAAcjK,MAAM,CAAC,qBAAqB42E,EAAIqxD,SAASt6L,GAAG,CAAC,MAAQ,SAASkqD,GAAQ++E,EAAIqxD,SAAU,KAAQ,CAACrxD,EAAIn9E,GAAG,UAAUm9E,EAAIn9E,GAAG,KAAKe,EAAG,SAAS,CAACyP,YAAY,cAAcjK,MAAM,CAAC,sBAAsB42E,EAAIqxD,SAASt6L,GAAG,CAAC,MAAQ,SAASkqD,GAAQ++E,EAAIqxD,SAAU,KAAS,CAACrxD,EAAIn9E,GAAG,aAAam9E,EAAIn9E,GAAG,KAAKe,EAAG,MAAM,CAACyP,YAAY,iCAAiCjK,MAAM,CAAC55E,GAAGwwJ,EAAIqxD,SAAS9yM,MAAM,CAAC,KAAO,UAAUmgE,KAAK,UAAU,CAACkF,EAAG,SAAS,CAACyP,YAAY,cAAct8D,GAAG,CAAC,MAAQipI,EAAIvkD,SAAS,CAACukD,EAAIn9E,GAAG,QAAQm9E,EAAIn9E,GAAG,KAAMm9E,EAAiB,cAAEp8E,EAAG,SAAS,CAACyP,YAAY,cAAct8D,GAAG,CAAC,MAAQipI,EAAI2xD,aAAa,CAAC3xD,EAAIn9E,GAAGm9E,EAAI39E,GAAa,GAAV29E,EAAIqvC,KAAU,MAAM,UAAUrvC,EAAIl9E,OAAOk9E,EAAIn9E,GAAG,KAAKe,EAAG,MAAM,CAACyP,YAAY,+BAA+B,CAACzP,EAAG,MAAM,CAACyP,YAAY,sCAAsC,CAACzP,EAAG,KAAK,CAACo8E,EAAIn9E,GAAG,YAAYm9E,EAAIn9E,GAAG,KAAKe,EAAG,MAAM,CAACA,EAAG,WAAW,CAACrlE,MAAM,CAAC,OAAQ,GAAM0pE,MAAM,CAACp7E,MAAOmzJ,EAAqB,kBAAE/qJ,SAAS,SAAUu9L,GAAMxyC,EAAIsxD,kBAAkB9e,GAAK/mH,WAAW,sBAAsB,CAACu0E,EAAIn9E,GAAG,YAAYm9E,EAAIn9E,GAAG,KAAKe,EAAG,WAAW,CAACrlE,MAAM,CAAC,OAAQ,GAAO0pE,MAAM,CAACp7E,MAAOmzJ,EAAqB,kBAAE/qJ,SAAS,SAAUu9L,GAAMxyC,EAAIsxD,kBAAkB9e,GAAK/mH,WAAW,sBAAsB,CAACu0E,EAAIn9E,GAAG,gBAAgB,GAAGm9E,EAAIn9E,GAAG,KAAKe,EAAG,IAAI,CAACo8E,EAAIn9E,GAAG,mCAAmCm9E,EAAIn9E,GAAG,KAAKe,EAAG,MAAM,CAACyP,YAAY,uCAAuCjK,MAAM,CAACwpI,MAAM5yD,EAAIuyD,UAAU,CAAEvyD,EAAW,QAAEp8E,EAAG,QAAQ,CAACA,EAAG,QAAQ,CAACA,EAAG,KAAK,CAACA,EAAG,KAAK,CAACo8E,EAAIn9E,GAAG,UAAUm9E,EAAIn9E,GAAG,KAAKe,EAAG,KAAK,CAACo8E,EAAIn9E,GAAG,OAAOe,EAAG,IAAI,CAACwF,MAAM,CAAC,YAAY42E,EAAIyxD,WAAWlzM,MAAM,CAAC,KAAO,uBAAuBwY,GAAG,CAAC,MAAQipI,EAAI4xD,iBAAiB5xD,EAAIn9E,GAAG,KAAKe,EAAG,KAAK,CAACo8E,EAAIn9E,GAAG,SAASm9E,EAAIn9E,GAAG,KAAKe,EAAG,KAAK,CAACo8E,EAAIn9E,GAAG,YAAYm9E,EAAIn9E,GAAG,KAAMm9E,EAAiB,cAAEp8E,EAAG,QAAQ,CAACA,EAAG,KAAK,CAACA,EAAG,KAAK,CAACA,EAAG,MAAM,CAACyV,YAAY,CAAC,eAAe,OAAO,aAAa,SAAS,CAAC2mE,EAAIn9E,GAAG,UAAUm9E,EAAIn9E,GAAG,KAAKe,EAAG,KAAK,CAACo8E,EAAIn9E,GAAGm9E,EAAI39E,GAAG29E,EAAIt9E,GAAG,mBAAPs9E,CAA2BA,EAAIuxD,YAAYsB,mBAAmB7yD,EAAIn9E,GAAG,KAAKe,EAAG,KAAK,CAACA,EAAG,YAAY,CAACyP,YAAY,cAAc90E,MAAM,CAAC,YAAc,GAAG,eAAe,mCAAmC0pE,MAAM,CAACp7E,MAAOmzJ,EAAIixD,aAAyB,aAAEh8M,SAAS,SAAUu9L,GAAMxyC,EAAIlwE,KAAKkwE,EAAIixD,aAAc,eAAgBze,IAAM/mH,WAAW,8BAA8Bu0E,EAAI19E,GAAI09E,EAAmB,iBAAE,SAASltJ,GAAM,OAAO8wE,EAAG,YAAY,CAACz2E,IAAI2F,EAAKjG,MAAM0R,MAAM,CAAC,MAAQzL,EAAKa,KAAK,MAAQb,EAAKjG,YAAW,IAAI,GAAGmzJ,EAAIn9E,GAAG,KAAKe,EAAG,KAAK,CAACA,EAAG,IAAI,CAACrlE,MAAM,CAAC,KAAO,sBAAsB,YAAY,eAAe,gBAAgB,GAAG,YAAY,2BAA2BwY,GAAG,CAAC,MAAQipI,EAAI0xD,aAAa,CAAC1xD,EAAIn9E,GAAG,YAAYm9E,EAAIn9E,GAAG,KAAKe,EAAG,KAAK,CAACA,EAAG,KAAK,CAACA,EAAG,MAAM,CAACyV,YAAY,CAAC,eAAe,OAAO,aAAa,SAAS,CAAC2mE,EAAIn9E,GAAG,iBAAiBm9E,EAAIn9E,GAAG,KAAKe,EAAG,KAAK,CAACo8E,EAAIn9E,GAAGm9E,EAAI39E,GAAG29E,EAAIuxD,YAAYuB,oBAAoB9yD,EAAIn9E,GAAG,KAAKe,EAAG,KAAK,CAACA,EAAG,WAAW,CAACyP,YAAY,aAAapL,MAAM,CAACp7E,MAAOmzJ,EAAIixD,aAA2B,eAAEh8M,SAAS,SAAUu9L,GAAMxyC,EAAIlwE,KAAKkwE,EAAIixD,aAAc,iBAAkBze,IAAM/mH,WAAW,kCAAkC,GAAGu0E,EAAIn9E,GAAG,KAAKe,EAAG,KAAK,CAACA,EAAG,IAAI,CAACrlE,MAAM,CAAC,KAAO,sBAAsB,YAAY,iBAAiB,gBAAgB,GAAG,YAAY,6BAA6BwY,GAAG,CAAC,MAAQipI,EAAI0xD,aAAa,CAAC1xD,EAAIn9E,GAAG,YAAYm9E,EAAIn9E,GAAG,KAAKe,EAAG,KAAK,CAACA,EAAG,KAAK,CAACA,EAAG,MAAM,CAACyV,YAAY,CAAC,eAAe,OAAO,aAAa,SAAS,CAAC2mE,EAAIn9E,GAAG,eAAem9E,EAAIn9E,GAAG,KAAKe,EAAG,KAAK,CAACo8E,EAAIn9E,GAAGm9E,EAAI39E,GAAG29E,EAAIuxD,YAAYwB,mBAAmB/yD,EAAIn9E,GAAG,KAAKe,EAAG,KAAK,CAACA,EAAG,WAAW,CAACyP,YAAY,aAAapL,MAAM,CAACp7E,MAAOmzJ,EAAIixD,aAA0B,cAAEh8M,SAAS,SAAUu9L,GAAMxyC,EAAIlwE,KAAKkwE,EAAIixD,aAAc,gBAAiBze,IAAM/mH,WAAW,iCAAiC,GAAGu0E,EAAIn9E,GAAG,KAAKe,EAAG,KAAK,CAACA,EAAG,IAAI,CAACrlE,MAAM,CAAC,KAAO,sBAAsB,YAAY,gBAAgB,gBAAgB,GAAG,YAAY,4BAA4BwY,GAAG,CAAC,MAAQipI,EAAI0xD,aAAa,CAAC1xD,EAAIn9E,GAAG,YAAYm9E,EAAIn9E,GAAG,KAAKe,EAAG,KAAK,CAACA,EAAG,KAAK,CAACA,EAAG,MAAM,CAACyV,YAAY,CAAC,eAAe,OAAO,aAAa,SAAS,CAAC2mE,EAAIn9E,GAAG,kBAAkBm9E,EAAIn9E,GAAG,KAAKe,EAAG,KAAK,CAACo8E,EAAIn9E,GAAGm9E,EAAI39E,GAAG29E,EAAIuxD,YAAYyB,oBAAoBhzD,EAAIn9E,GAAG,KAAKe,EAAG,KAAK,CAACA,EAAG,WAAW,CAACyP,YAAY,aAAapL,MAAM,CAACp7E,MAAOmzJ,EAAIixD,aAA2B,eAAEh8M,SAAS,SAAUu9L,GAAMxyC,EAAIlwE,KAAKkwE,EAAIixD,aAAc,iBAAkBze,IAAM/mH,WAAW,kCAAkC,GAAGu0E,EAAIn9E,GAAG,KAAKe,EAAG,KAAK,CAACA,EAAG,IAAI,CAACrlE,MAAM,CAAC,KAAO,sBAAsB,YAAY,iBAAiB,gBAAgB,iBAAiB,YAAY,0BAA0BwY,GAAG,CAAC,MAAQipI,EAAI0xD,aAAa,CAAC1xD,EAAIn9E,GAAG,YAAYm9E,EAAIn9E,GAAG,KAAKe,EAAG,KAAK,CAACA,EAAG,KAAK,CAACA,EAAG,MAAM,CAACyV,YAAY,CAAC,eAAe,OAAO,aAAa,SAAS,CAAC2mE,EAAIn9E,GAAG,kBAAkBm9E,EAAIn9E,GAAG,KAAKe,EAAG,KAAK,CAACo8E,EAAIn9E,GAAGm9E,EAAI39E,GAAG29E,EAAIuxD,YAAY0B,oBAAoBjzD,EAAIn9E,GAAG,KAAKe,EAAG,KAAK,CAACA,EAAG,WAAW,CAACyP,YAAY,aAAapL,MAAM,CAACp7E,MAAOmzJ,EAAIixD,aAA2B,eAAEh8M,SAAS,SAAUu9L,GAAMxyC,EAAIlwE,KAAKkwE,EAAIixD,aAAc,iBAAkBze,IAAM/mH,WAAW,kCAAkC,GAAGu0E,EAAIn9E,GAAG,KAAKe,EAAG,KAAK,CAACA,EAAG,IAAI,CAACrlE,MAAM,CAAC,KAAO,sBAAsB,YAAY,iBAAiB,gBAAgB,iBAAiB,YAAY,0BAA0BwY,GAAG,CAAC,MAAQipI,EAAI0xD,aAAa,CAAC1xD,EAAIn9E,GAAG,YAAYm9E,EAAIn9E,GAAG,KAAKe,EAAG,KAAK,CAACA,EAAG,KAAK,CAACA,EAAG,MAAM,CAACyV,YAAY,CAAC,eAAe,OAAO,aAAa,SAAS,CAAC2mE,EAAIn9E,GAAG,mBAAmBm9E,EAAIn9E,GAAG,KAAKe,EAAG,KAAK,CAACo8E,EAAIn9E,GAAGm9E,EAAI39E,GAAG29E,EAAIuxD,YAAY2B,sBAAsBlzD,EAAIn9E,GAAG,KAAKe,EAAG,KAAK,CAACA,EAAG,WAAW,CAACyP,YAAY,aAAapL,MAAM,CAACp7E,MAAOmzJ,EAAIixD,aAA6B,iBAAEh8M,SAAS,SAAUu9L,GAAMxyC,EAAIlwE,KAAKkwE,EAAIixD,aAAc,mBAAoBze,IAAM/mH,WAAW,oCAAoC,GAAGu0E,EAAIn9E,GAAG,KAAKe,EAAG,KAAK,CAACA,EAAG,IAAI,CAACrlE,MAAM,CAAC,KAAO,sBAAsB,YAAY,mBAAmB,gBAAgB,mBAAmB,YAAY,4BAA4BwY,GAAG,CAAC,MAAQipI,EAAI0xD,aAAa,CAAC1xD,EAAIn9E,GAAG,YAAYm9E,EAAIn9E,GAAG,KAAKe,EAAG,KAAK,CAACA,EAAG,KAAK,CAACA,EAAG,MAAM,CAACyV,YAAY,CAAC,eAAe,OAAO,aAAa,SAAS,CAAC2mE,EAAIn9E,GAAG,mBAAmBm9E,EAAIn9E,GAAG,KAAKe,EAAG,KAAK,CAACo8E,EAAIn9E,GAAGm9E,EAAI39E,GAAG29E,EAAIuxD,YAAY4B,sBAAsBnzD,EAAIn9E,GAAG,KAAKe,EAAG,KAAK,CAACA,EAAG,WAAW,CAACyP,YAAY,aAAapL,MAAM,CAACp7E,MAAOmzJ,EAAIixD,aAA6B,iBAAEh8M,SAAS,SAAUu9L,GAAMxyC,EAAIlwE,KAAKkwE,EAAIixD,aAAc,mBAAoBze,IAAM/mH,WAAW,oCAAoC,GAAGu0E,EAAIn9E,GAAG,KAAKe,EAAG,KAAK,CAACA,EAAG,IAAI,CAACrlE,MAAM,CAAC,KAAO,sBAAsB,YAAY,mBAAmB,gBAAgB,mBAAmB,YAAY,4BAA4BwY,GAAG,CAAC,MAAQipI,EAAI0xD,aAAa,CAAC1xD,EAAIn9E,GAAG,YAAYm9E,EAAIn9E,GAAG,KAAKe,EAAG,KAAK,CAACA,EAAG,KAAK,CAACA,EAAG,MAAM,CAACyV,YAAY,CAAC,eAAe,OAAO,aAAa,SAAS,CAAC2mE,EAAIn9E,GAAG,iBAAiBm9E,EAAIn9E,GAAG,KAAKe,EAAG,KAAK,CAACo8E,EAAIn9E,GAAGm9E,EAAI39E,GAAG29E,EAAIuxD,YAAY6B,mCAAmCpzD,EAAIn9E,GAAG,KAAKe,EAAG,KAAK,CAACA,EAAG,WAAW,CAACyP,YAAY,aAAapL,MAAM,CAACp7E,MAAOmzJ,EAAIixD,aAA0C,8BAAEh8M,SAAS,SAAUu9L,GAAMxyC,EAAIlwE,KAAKkwE,EAAIixD,aAAc,gCAAiCze,IAAM/mH,WAAW,iDAAiD,GAAGu0E,EAAIn9E,GAAG,KAAKe,EAAG,KAAK,CAACA,EAAG,IAAI,CAACrlE,MAAM,CAAC,KAAO,sBAAsB,YAAY,gCAAgC,gBAAgB,4FAA4F,YAAY,+BAA+BwY,GAAG,CAAC,MAAQipI,EAAI0xD,aAAa,CAAC1xD,EAAIn9E,GAAG,YAAYm9E,EAAIn9E,GAAG,KAAKe,EAAG,KAAK,CAACA,EAAG,KAAK,CAACA,EAAG,MAAM,CAACyV,YAAY,CAAC,eAAe,OAAO,aAAa,SAAS,CAAC2mE,EAAIn9E,GAAG,sBAAsBm9E,EAAIn9E,GAAG,KAAKe,EAAG,KAAK,CAACo8E,EAAIn9E,GAAGm9E,EAAI39E,GAAG29E,EAAIuxD,YAAY8B,mCAAmCrzD,EAAIn9E,GAAG,KAAKe,EAAG,KAAK,CAACA,EAAG,WAAW,CAACyP,YAAY,aAAapL,MAAM,CAACp7E,MAAOmzJ,EAAIixD,aAA0C,8BAAEh8M,SAAS,SAAUu9L,GAAMxyC,EAAIlwE,KAAKkwE,EAAIixD,aAAc,gCAAiCze,IAAM/mH,WAAW,iDAAiD,GAAGu0E,EAAIn9E,GAAG,KAAKe,EAAG,KAAK,CAACA,EAAG,IAAI,CAACrlE,MAAM,CAAC,KAAO,sBAAsB,YAAY,gCAAgC,gBAAgB,4FAA4F,YAAY,+BAA+BwY,GAAG,CAAC,MAAQipI,EAAI0xD,aAAa,CAAC1xD,EAAIn9E,GAAG,cAAcm9E,EAAIl9E,KAAKk9E,EAAIn9E,GAAG,KAAMm9E,EAAiB,cAAEp8E,EAAG,QAAQ,CAACA,EAAG,KAAK,CAACA,EAAG,KAAK,CAACA,EAAG,MAAM,CAACyV,YAAY,CAAC,eAAe,OAAO,aAAa,SAAS,CAAC2mE,EAAIn9E,GAAG,iBAAiBm9E,EAAIn9E,GAAG,KAAKe,EAAG,KAAK,CAACo8E,EAAIn9E,GAAGm9E,EAAI39E,GAAG29E,EAAIuxD,YAAY+B,mCAAmCtzD,EAAIn9E,GAAG,KAAKe,EAAG,KAAK,CAACA,EAAG,WAAW,CAACyP,YAAY,aAAapL,MAAM,CAACp7E,MAAOmzJ,EAAIixD,aAA0C,8BAAEh8M,SAAS,SAAUu9L,GAAMxyC,EAAIlwE,KAAKkwE,EAAIixD,aAAc,gCAAiCze,IAAM/mH,WAAW,iDAAiD,GAAGu0E,EAAIn9E,GAAG,KAAKe,EAAG,KAAK,CAACA,EAAG,IAAI,CAACrlE,MAAM,CAAC,KAAO,sBAAsB,YAAY,gCAAgC,gBAAgB,4FAA4F,YAAY,+BAA+BwY,GAAG,CAAC,MAAQipI,EAAI0xD,aAAa,CAAC1xD,EAAIn9E,GAAG,YAAYm9E,EAAIn9E,GAAG,KAAKe,EAAG,KAAK,CAACA,EAAG,KAAK,CAACA,EAAG,MAAM,CAACyV,YAAY,CAAC,eAAe,OAAO,aAAa,SAAS,CAAC2mE,EAAIn9E,GAAG,sBAAsBm9E,EAAIn9E,GAAG,KAAKe,EAAG,KAAK,CAACo8E,EAAIn9E,GAAGm9E,EAAI39E,GAAG29E,EAAIuxD,YAAYgC,mCAAmCvzD,EAAIn9E,GAAG,KAAKe,EAAG,KAAK,CAACA,EAAG,WAAW,CAACyP,YAAY,aAAapL,MAAM,CAACp7E,MAAOmzJ,EAAIixD,aAA0C,8BAAEh8M,SAAS,SAAUu9L,GAAMxyC,EAAIlwE,KAAKkwE,EAAIixD,aAAc,gCAAiCze,IAAM/mH,WAAW,iDAAiD,GAAGu0E,EAAIn9E,GAAG,KAAKe,EAAG,KAAK,CAACA,EAAG,IAAI,CAACrlE,MAAM,CAAC,KAAO,sBAAsB,YAAY,gCAAgC,gBAAgB,4FAA4F,YAAY,+BAA+BwY,GAAG,CAAC,MAAQipI,EAAI0xD,aAAa,CAAC1xD,EAAIn9E,GAAG,YAAYm9E,EAAIn9E,GAAG,KAAKe,EAAG,KAAK,CAACA,EAAG,KAAK,CAACA,EAAG,MAAM,CAACyV,YAAY,CAAC,eAAe,OAAO,aAAa,SAAS,CAAC2mE,EAAIn9E,GAAG,eAAem9E,EAAIn9E,GAAG,KAAKe,EAAG,KAAK,CAACo8E,EAAIn9E,GAAGm9E,EAAI39E,GAAG29E,EAAIuxD,YAAYiC,mBAAmBxzD,EAAIn9E,GAAG,KAAKe,EAAG,KAAK,CAACA,EAAG,WAAW,CAACyP,YAAY,aAAapL,MAAM,CAACp7E,MAAOmzJ,EAAIixD,aAA0B,cAAEh8M,SAAS,SAAUu9L,GAAMxyC,EAAIlwE,KAAKkwE,EAAIixD,aAAc,gBAAiBze,IAAM/mH,WAAW,iCAAiC,GAAGu0E,EAAIn9E,GAAG,KAAKe,EAAG,KAAK,CAACA,EAAG,IAAI,CAACrlE,MAAM,CAAC,KAAO,sBAAsB,YAAY,gBAAgB,gBAAgB,GAAG,YAAY,4BAA4BwY,GAAG,CAAC,MAAQipI,EAAI0xD,aAAa,CAAC1xD,EAAIn9E,GAAG,YAAYm9E,EAAIn9E,GAAG,KAAKe,EAAG,KAAK,CAACA,EAAG,KAAK,CAACA,EAAG,MAAM,CAACyV,YAAY,CAAC,eAAe,OAAO,aAAa,SAAS,CAAC2mE,EAAIn9E,GAAG,eAAem9E,EAAIn9E,GAAG,KAAKe,EAAG,KAAK,CAACo8E,EAAIn9E,GAAGm9E,EAAI39E,GAAG29E,EAAIuxD,YAAYkC,sBAAsBzzD,EAAIn9E,GAAG,KAAKe,EAAG,KAAK,CAACA,EAAG,WAAW,CAACyP,YAAY,aAAapL,MAAM,CAACp7E,MAAOmzJ,EAAIixD,aAA6B,iBAAEh8M,SAAS,SAAUu9L,GAAMxyC,EAAIlwE,KAAKkwE,EAAIixD,aAAc,mBAAoBze,IAAM/mH,WAAW,oCAAoC,GAAGu0E,EAAIn9E,GAAG,KAAKe,EAAG,KAAK,CAACA,EAAG,IAAI,CAACrlE,MAAM,CAAC,KAAO,sBAAsB,YAAY,mBAAmB,gBAAgB,GAAG,YAAY,+BAA+BwY,GAAG,CAAC,MAAQipI,EAAI0xD,aAAa,CAAC1xD,EAAIn9E,GAAG,YAAYm9E,EAAIn9E,GAAG,KAAKe,EAAG,KAAK,CAACA,EAAG,KAAK,CAACA,EAAG,MAAM,CAACyV,YAAY,CAAC,eAAe,OAAO,aAAa,SAAS,CAAC2mE,EAAIn9E,GAAG,YAAYm9E,EAAIn9E,GAAG,KAAKe,EAAG,KAAK,CAACo8E,EAAIn9E,GAAGm9E,EAAI39E,GAAG29E,EAAIuxD,YAAYmC,iBAAiB1zD,EAAIn9E,GAAG,KAAKe,EAAG,KAAK,CAACA,EAAG,WAAW,CAACyP,YAAY,aAAapL,MAAM,CAACp7E,MAAOmzJ,EAAIixD,aAAwB,YAAEh8M,SAAS,SAAUu9L,GAAMxyC,EAAIlwE,KAAKkwE,EAAIixD,aAAc,cAAeze,IAAM/mH,WAAW,+BAA+B,GAAGu0E,EAAIn9E,GAAG,KAAKe,EAAG,KAAK,CAACA,EAAG,IAAI,CAACrlE,MAAM,CAAC,KAAO,sBAAsB,YAAY,cAAc,gBAAgB,GAAG,YAAY,0BAA0BwY,GAAG,CAAC,MAAQipI,EAAI0xD,aAAa,CAAC1xD,EAAIn9E,GAAG,YAAYm9E,EAAIn9E,GAAG,KAAKe,EAAG,KAAK,CAACA,EAAG,KAAK,CAACA,EAAG,MAAM,CAACyV,YAAY,CAAC,eAAe,OAAO,aAAa,SAAS,CAAC2mE,EAAIn9E,GAAG,cAAcm9E,EAAIn9E,GAAG,KAAKe,EAAG,KAAK,CAACo8E,EAAIn9E,GAAGm9E,EAAI39E,GAAG29E,EAAIt9E,GAAG,iBAAPs9E,CAAyBA,EAAIuxD,YAAYoC,iCAAiC3zD,EAAIn9E,GAAG,KAAKe,EAAG,KAAK,CAACA,EAAG,YAAY,CAACyP,YAAY,cAAc90E,MAAM,CAAC,YAAc,GAAG,eAAe,mCAAmC0pE,MAAM,CAACp7E,MAAOmzJ,EAAIixD,aAAuC,2BAAEh8M,SAAS,SAAUu9L,GAAMxyC,EAAIlwE,KAAKkwE,EAAIixD,aAAc,6BAA8Bze,IAAM/mH,WAAW,4CAA4Cu0E,EAAI19E,GAAI09E,EAAyB,uBAAE,SAASltJ,GAAM,OAAO8wE,EAAG,YAAY,CAACz2E,IAAI2F,EAAKjG,MAAM0R,MAAM,CAAC,MAAQzL,EAAKa,KAAK,MAAQb,EAAKjG,YAAW,IAAI,GAAGmzJ,EAAIn9E,GAAG,KAAKe,EAAG,KAAK,CAACA,EAAG,IAAI,CAACrlE,MAAM,CAAC,KAAO,sBAAsB,YAAY,6BAA6B,gBAAgB,GAAG,YAAY,yCAAyCwY,GAAG,CAAC,MAAQipI,EAAI0xD,aAAa,CAAC1xD,EAAIn9E,GAAG,YAAYm9E,EAAIn9E,GAAG,KAAKe,EAAG,KAAK,CAACA,EAAG,KAAK,CAACA,EAAG,MAAM,CAACyV,YAAY,CAAC,eAAe,OAAO,aAAa,SAAS,CAAC2mE,EAAIn9E,GAAG,cAAcm9E,EAAIn9E,GAAG,KAAKe,EAAG,KAAK,CAACo8E,EAAIn9E,GAAGm9E,EAAI39E,GAAG29E,EAAIt9E,GAAG,aAAPs9E,CAAqBA,EAAIuxD,YAAYqC,iBAAiB5zD,EAAIn9E,GAAG,KAAKe,EAAG,KAAK,CAACA,EAAG,YAAY,CAACyP,YAAY,cAAc90E,MAAM,CAAC,YAAc,GAAG,eAAe,mCAAmC0pE,MAAM,CAACp7E,MAAOmzJ,EAAIixD,aAAuB,WAAEh8M,SAAS,SAAUu9L,GAAMxyC,EAAIlwE,KAAKkwE,EAAIixD,aAAc,aAAcze,IAAM/mH,WAAW,4BAA4Bu0E,EAAI19E,GAAI09E,EAAiB,eAAE,SAASltJ,GAAM,OAAO8wE,EAAG,YAAY,CAACz2E,IAAI2F,EAAKjG,MAAM0R,MAAM,CAAC,MAAQzL,EAAKa,KAAK,MAAQb,EAAKjG,YAAW,IAAI,GAAGmzJ,EAAIn9E,GAAG,KAAKe,EAAG,KAAK,CAACA,EAAG,IAAI,CAACrlE,MAAM,CAAC,KAAO,sBAAsB,YAAY,aAAa,gBAAgB,GAAG,YAAY,yBAAyBwY,GAAG,CAAC,MAAQipI,EAAI0xD,aAAa,CAAC1xD,EAAIn9E,GAAG,YAAYm9E,EAAIn9E,GAAG,KAAKe,EAAG,KAAK,CAACA,EAAG,KAAK,CAACA,EAAG,MAAM,CAACyV,YAAY,CAAC,eAAe,OAAO,aAAa,SAAS,CAAC2mE,EAAIn9E,GAAG,eAAem9E,EAAIn9E,GAAG,KAAKe,EAAG,KAAK,CAACo8E,EAAIn9E,GAAGm9E,EAAI39E,GAAG29E,EAAIuxD,YAAYsC,cAAc7zD,EAAIn9E,GAAG,KAAKe,EAAG,KAAK,CAACA,EAAG,WAAW,CAACyP,YAAY,aAAapL,MAAM,CAACp7E,MAAOmzJ,EAAIixD,aAAqB,SAAEh8M,SAAS,SAAUu9L,GAAMxyC,EAAIlwE,KAAKkwE,EAAIixD,aAAc,WAAYze,IAAM/mH,WAAW,4BAA4B,GAAGu0E,EAAIn9E,GAAG,KAAKe,EAAG,KAAK,CAACA,EAAG,IAAI,CAACrlE,MAAM,CAAC,KAAO,sBAAsB,YAAY,WAAW,gBAAgB,GAAG,YAAY,uBAAuBwY,GAAG,CAAC,MAAQipI,EAAI0xD,aAAa,CAAC1xD,EAAIn9E,GAAG,cAAcm9E,EAAIl9E,KAAKk9E,EAAIn9E,GAAG,KAAMm9E,EAAe,YAAEp8E,EAAG,QAAQ,CAACA,EAAG,KAAK,CAACA,EAAG,KAAK,CAACA,EAAG,MAAM,CAACyV,YAAY,CAAC,eAAe,OAAO,aAAa,SAAS,CAAC2mE,EAAIn9E,GAAG,YAAYm9E,EAAIn9E,GAAG,KAAKe,EAAG,KAAK,CAACo8E,EAAIn9E,GAAGm9E,EAAI39E,GAAG29E,EAAIt9E,GAAG,mBAAPs9E,CAA2BA,EAAIuxD,YAAYsB,mBAAmB7yD,EAAIn9E,GAAG,KAAKe,EAAG,KAAK,CAACA,EAAG,YAAY,CAACyP,YAAY,cAAc90E,MAAM,CAAC,YAAc,GAAG,eAAe,mCAAmC0pE,MAAM,CAACp7E,MAAOmzJ,EAAIixD,aAAyB,aAAEh8M,SAAS,SAAUu9L,GAAMxyC,EAAIlwE,KAAKkwE,EAAIixD,aAAc,eAAgBze,IAAM/mH,WAAW,8BAA8Bu0E,EAAI19E,GAAI09E,EAAmB,iBAAE,SAASltJ,GAAM,OAAO8wE,EAAG,YAAY,CAACz2E,IAAI2F,EAAKjG,MAAM0R,MAAM,CAAC,MAAQzL,EAAKa,KAAK,MAAQb,EAAKjG,YAAW,IAAI,GAAGmzJ,EAAIn9E,GAAG,KAAKe,EAAG,KAAK,CAACA,EAAG,IAAI,CAACrlE,MAAM,CAAC,KAAO,sBAAsB,YAAY,eAAe,gBAAgB,GAAG,YAAY,2BAA2BwY,GAAG,CAAC,MAAQipI,EAAI0xD,aAAa,CAAC1xD,EAAIn9E,GAAG,YAAYm9E,EAAIn9E,GAAG,KAAKe,EAAG,KAAK,CAACA,EAAG,KAAK,CAACA,EAAG,MAAM,CAACyV,YAAY,CAAC,eAAe,OAAO,aAAa,SAAS,CAAC2mE,EAAIn9E,GAAG,WAAWe,EAAG,OAAO,CAACyP,YAAY,QAAQ,CAAC2sE,EAAIn9E,GAAG,kBAAkBm9E,EAAIn9E,GAAG,KAAKe,EAAG,KAAK,CAACo8E,EAAIn9E,GAAGm9E,EAAI39E,GAAG29E,EAAIuxD,YAAYiC,mBAAmBxzD,EAAIn9E,GAAG,KAAKe,EAAG,KAAK,CAACA,EAAG,WAAW,CAACyP,YAAY,aAAapL,MAAM,CAACp7E,MAAOmzJ,EAAIixD,aAA0B,cAAEh8M,SAAS,SAAUu9L,GAAMxyC,EAAIlwE,KAAKkwE,EAAIixD,aAAc,gBAAiBze,IAAM/mH,WAAW,iCAAiC,GAAGu0E,EAAIn9E,GAAG,KAAKe,EAAG,KAAK,CAACA,EAAG,IAAI,CAACrlE,MAAM,CAAC,KAAO,sBAAsB,YAAY,gBAAgB,gBAAgB,GAAG,YAAY,4BAA4BwY,GAAG,CAAC,MAAQipI,EAAI0xD,aAAa,CAAC1xD,EAAIn9E,GAAG,YAAYm9E,EAAIn9E,GAAG,KAAKe,EAAG,KAAK,CAACA,EAAG,KAAK,CAACA,EAAG,MAAM,CAACyV,YAAY,CAAC,eAAe,OAAO,aAAa,SAAS,CAAC2mE,EAAIn9E,GAAG,WAAWe,EAAG,OAAO,CAACyP,YAAY,QAAQ,CAAC2sE,EAAIn9E,GAAG,iBAAiBm9E,EAAIn9E,GAAG,KAAKe,EAAG,KAAK,CAACo8E,EAAIn9E,GAAGm9E,EAAI39E,GAAG29E,EAAIuxD,YAAYkC,sBAAsBzzD,EAAIn9E,GAAG,KAAKe,EAAG,KAAK,CAACA,EAAG,WAAW,CAACyP,YAAY,aAAapL,MAAM,CAACp7E,MAAOmzJ,EAAIixD,aAA6B,iBAAEh8M,SAAS,SAAUu9L,GAAMxyC,EAAIlwE,KAAKkwE,EAAIixD,aAAc,mBAAoBze,IAAM/mH,WAAW,oCAAoC,GAAGu0E,EAAIn9E,GAAG,KAAKe,EAAG,KAAK,CAACA,EAAG,IAAI,CAACrlE,MAAM,CAAC,KAAO,sBAAsB,YAAY,mBAAmB,gBAAgB,GAAG,YAAY,+BAA+BwY,GAAG,CAAC,MAAQipI,EAAI0xD,aAAa,CAAC1xD,EAAIn9E,GAAG,YAAYm9E,EAAIn9E,GAAG,KAAKe,EAAG,KAAK,CAACA,EAAG,KAAK,CAACA,EAAG,MAAM,CAACyV,YAAY,CAAC,eAAe,OAAO,aAAa,SAAS,CAAC2mE,EAAIn9E,GAAG,QAAQe,EAAG,OAAO,CAACyP,YAAY,QAAQ,CAAC2sE,EAAIn9E,GAAG,qCAAqCm9E,EAAIn9E,GAAG,KAAKe,EAAG,KAAK,CAACo8E,EAAIn9E,GAAGm9E,EAAI39E,GAAG29E,EAAIuxD,YAAYmC,iBAAiB1zD,EAAIn9E,GAAG,KAAKe,EAAG,KAAK,CAACA,EAAG,WAAW,CAACyP,YAAY,aAAapL,MAAM,CAACp7E,MAAOmzJ,EAAIixD,aAAwB,YAAEh8M,SAAS,SAAUu9L,GAAMxyC,EAAIlwE,KAAKkwE,EAAIixD,aAAc,cAAeze,IAAM/mH,WAAW,+BAA+B,GAAGu0E,EAAIn9E,GAAG,KAAKe,EAAG,KAAK,CAACA,EAAG,IAAI,CAACrlE,MAAM,CAAC,KAAO,sBAAsB,YAAY,cAAc,gBAAgB,GAAG,YAAY,0BAA0BwY,GAAG,CAAC,MAAQipI,EAAI0xD,aAAa,CAAC1xD,EAAIn9E,GAAG,YAAYm9E,EAAIn9E,GAAG,KAAKe,EAAG,KAAK,CAACA,EAAG,KAAK,CAACA,EAAG,MAAM,CAACyV,YAAY,CAAC,eAAe,OAAO,aAAa,SAAS,CAAC2mE,EAAIn9E,GAAG,cAAce,EAAG,OAAO,CAACyP,YAAY,QAAQ,CAAC2sE,EAAIn9E,GAAG,iBAAiBm9E,EAAIn9E,GAAG,KAAKe,EAAG,KAAK,CAACo8E,EAAIn9E,GAAGm9E,EAAI39E,GAAG29E,EAAIuxD,YAAYsC,cAAc7zD,EAAIn9E,GAAG,KAAKe,EAAG,KAAK,CAACA,EAAG,WAAW,CAACyP,YAAY,aAAapL,MAAM,CAACp7E,MAAOmzJ,EAAIixD,aAAqB,SAAEh8M,SAAS,SAAUu9L,GAAMxyC,EAAIlwE,KAAKkwE,EAAIixD,aAAc,WAAYze,IAAM/mH,WAAW,4BAA4B,GAAGu0E,EAAIn9E,GAAG,KAAKe,EAAG,KAAK,CAACA,EAAG,IAAI,CAACrlE,MAAM,CAAC,KAAO,sBAAsB,YAAY,WAAW,gBAAgB,GAAG,YAAY,uBAAuBwY,GAAG,CAAC,MAAQipI,EAAI0xD,aAAa,CAAC1xD,EAAIn9E,GAAG,cAAcm9E,EAAIl9E,OAAOc,EAAG,MAAM,CAACyP,YAAY,sCAAsC,CAACzP,EAAG,IAAI,CAACA,EAAG,QAAQ,CAACo8E,EAAIn9E,GAAG,aAAam9E,EAAIn9E,GAAG,KAAKe,EAAG,SAAS,CAACyP,YAAY,cAAct8D,GAAG,CAAC,MAAQ,SAASkqD,GAAQ,OAAO++E,EAAI6xD,UAAU,MAAM,CAAC7xD,EAAIn9E,GAAG,UAAUm9E,EAAIn9E,GAAG,KAAKe,EAAG,IAAI,CAACA,EAAG,QAAQ,CAACo8E,EAAIn9E,GAAG,aAAam9E,EAAIn9E,GAAG,KAAKe,EAAG,SAAS,CAACyP,YAAY,cAAct8D,GAAG,CAAC,MAAQ,SAASkqD,GAAQ,OAAO++E,EAAI6xD,UAAU,MAAM,CAAC7xD,EAAIn9E,GAAG,oBACxqjB,IDWpB,EACA,KACA,KACA,M,SEf6M,GCS/M,CACE12E,KAAM,sBACNmuB,MAAO,CACLnG,MAAM,EACNogL,GAAI,GACJ5nJ,MAAJ,GACI24J,OAAJ,CACMp1M,KAAN,QACMsqE,SAAN,IAGEtpD,KAXF,WAYI,MAAO,CACL4iM,eAAe,EACfC,aAAa,EACbvC,UAAW,KAGfp3K,QAAS,CACPs2K,YADJ,SACA,GACM9hB,OACN,uCACQ,cAAR,EACQ,UAAR,IAEA,kBACQ,OAAR,gBAEMjgM,KAAKmlN,eAAgB,EACrBnlN,KAAKolN,aAAc,GAErBC,UAbJ,WAaA,WACMplB,OACN,qDACQ,SAAR,GACQ,aAAR,IAEA,kBACQ,OAAR,gBAEA,qBACQ,EAAR,sBAIE9gH,WAAY,CACVmmI,UAAJ,GACIC,QAAJ,IAEE1gJ,MAAO,CACLr/C,KADJ,SACA,GACUpJ,GACFpc,KAAKmlN,cAAgB/oM,EACrBpc,KAAKqlN,cAELrlN,KAAKmlN,cAAgB/oM,EACrBpc,KAAKolN,YAAchpM,KAIzB0mE,QA5DF,cCSe,GAXC,YACd,ICRW,WAAa,IAAiB2vB,EAATzyG,KAAgBqxE,eAAmB4D,EAAnCj1E,KAA0CugF,MAAMtL,IAAIw9B,EAAG,OAAOx9B,EAAG,MAAM,CAACyP,YAAY,yBAAyB,CAA7G1kF,KAAgI,cAAEi1E,EAAG,aAArIj1E,KAAsJm0E,KAAtJn0E,KAA+Jk0E,GAAG,KAAlKl0E,KAAuL,YAAEi1E,EAAG,WAA5Lj1E,KAA2Mm0E,MAAM,KAC7N,IDUpB,EACA,KACA,KACA,M,QEZFqxI,GAAoB/hI,QAAU,SAASrE,GACnCA,EAAIlG,UAAUssI,GAAoBhoN,KAAMgoN,KAG7BA,I,GAAAA,MCN2H,GCA3H,CACbhoN,KAAM,iBACN+kB,KAFa,WAGX,MAAO,CACL9M,KAAMyyL,OAAOC,IAAIC,SAASC,MAC1Bod,UAAW,GACXC,cAAe,CACb,CAAC3N,MAAOtiM,KAAKkwM,mBAAoBznN,MAAO,KACxC,CAAC65M,MAAOtiM,KAAKmwM,sBAAuB1nN,MAAO,KAC3C,CAAC65M,MAAOtiM,KAAKowM,uBAAwB3nN,MAAO,MAE9C4nN,MAAO,GACPC,UAAW,IACX5P,UAAW,GACX6P,eAAe,EACfC,YAAa,EACbC,WAAY,EACZC,cAAe,CACb,EAAK1wM,KAAKowM,uBACV,EAAKpwM,KAAKmwM,uBAEZQ,cAAe,CACbntI,OAAQ,KACRotI,WAAY,QAIlB1tM,QAAS,CACP2vL,WADO,SACIlsL,GACT,OAAKA,GAAU,KAALA,EAGD29L,MAAM39L,GAAG49L,OAAUE,eAAnB,aAFA,OAMbzuK,QAAS,CAEP66K,cAFO,SAEOrtI,GACZ,MAAc,OAAXA,EAA0B,KACtBA,EAAOjxE,QAAQ,MAAO,UAG/Bu+M,oBAPO,SAOa7lB,GAClB1gM,KAAKimN,YAAcvlB,EACnB1gM,KAAKwmN,gBAGPC,YAZO,WAaLzmN,KAAK8lN,MAAQ,GACb9lN,KAAK+lN,UAAY,IACjB/lN,KAAKumN,oBAAoB,IAG3BC,aAlBO,WAmBLhuI,QAAQkuI,cACRzmB,OAAOwC,KAAK,wCAAwC,CAClDmD,GAAI5lM,KAAK8lN,MAAM92M,KAAK,KACpB23M,eAAgBC,aAAap4M,GAC7Bk1B,OAAQ1jC,KAAK+lN,UACbnT,WAAY5yM,KAAKimN,YACjBpT,UAAW,KACVzuK,QAAQ,SAASy9B,GACfA,EAAIt/C,OACLviB,KAAKm2M,UAAYt0I,EAAIt/C,KAAKnX,MAAQ,GAClCpL,KAAKkmN,WAAarkJ,EAAIt/C,KAAKi4G,QAAU,IAEvC/7H,KAAKuB,OAAO6c,KAAK,SAASA,GACvBA,GAAQA,EAAK1U,KACdnI,KAAK6mN,SAAS3+M,MAAMuN,KAAKoH,EAAK1U,OAEhC1J,KAAKuB,OAAOkyL,IAAI,WAChB15G,QAAQsuI,cACRroN,KAAKuB,QAGT+mN,gBAxCO,SAwCShT,GACdv7H,QAAQkuI,cACRzmB,OAAOwC,KAAK,uCAAuC,CACjDj0L,GAAIulM,EAAIiT,YACP5iL,QAAQ,SAASy9B,GACfA,EAAIt/C,OACLviB,KAAKomN,cAAL,OAA+BvkJ,EAAIt/C,KAAJ,QAAsB,KACrDviB,KAAKomN,cAAL,WAAmCvkJ,EAAIt/C,KAAJ,YAA0B,KAC7DviB,KAAKgmN,eAAgB,IAEvBvnN,KAAKuB,OAAO6c,KAAK,SAASA,GACvBA,GAAQA,EAAK1U,KACdnI,KAAK6mN,SAAS3+M,MAAMuN,KAAKoH,EAAK1U,OAEhC1J,KAAKuB,OAAOkyL,IAAI,WACf15G,QAAQsuI,cACTroN,KAAKuB,SAGXgjF,QA/Fa,WAgGXhjF,KAAKwmN,eACLvmB,OAAOwC,KAAK,qCACX,CAAEkkB,eAAgBC,aAAap4M,KAAK41B,QAAQ,SAASy9B,GAAI,WACrDA,EAAIt/C,MAAQs/C,EAAIt/C,KAAK5gB,OAAS,GAC/BkgE,EAAIt/C,KAAK4oB,SAAQ,SAAAhnC,GACf,EAAKshN,UAAUjjN,KAAK,CAAEu1M,MAAO5zM,EAAK3G,KAAMU,MAAOiG,EAAKyhM,SAGvDnnM,KAAKuB,SCrFG,I,OAXC,YACd,ICTW,WAAa,IAAIqxJ,EAAIrxJ,KAASyyG,EAAG4+C,EAAIhgF,eAAmB4D,EAAGo8E,EAAI9wE,MAAMtL,IAAIw9B,EAAG,OAAOx9B,EAAG,MAAM,CAACyP,YAAY,cAAc,CAACzP,EAAG,MAAM,CAACyP,YAAY,eAAe,CAACzP,EAAG,MAAM,CAACyP,YAAY,cAAc,CAAC2sE,EAAIn9E,GAAGm9E,EAAI39E,GAAG29E,EAAI57I,KAAKwxM,qBAAqB,OAAO51D,EAAIn9E,GAAG,KAAKe,EAAG,YAAY,CAACyV,YAAY,CAAC,MAAQ,SAAS96E,MAAM,CAAC,SAAW,GAAG,gBAAgB,GAAG,KAAO,SAAS,YAAcyhJ,EAAI57I,KAAKyxM,kBAAkB5tI,MAAM,CAACp7E,MAAOmzJ,EAAS,MAAE/qJ,SAAS,SAAUu9L,GAAMxyC,EAAIy0D,MAAMjiB,GAAK/mH,WAAW,UAAUu0E,EAAI19E,GAAI09E,EAAa,WAAE,SAASltJ,GAAM,OAAO8wE,EAAG,YAAY,CAACz2E,IAAI2F,EAAKjG,MAAMwsF,YAAY,CAAC,YAAY,SAAS96E,MAAM,CAAC,MAAQzL,EAAK4zM,MAAM,MAAQ5zM,EAAKjG,YAAW,GAAGmzJ,EAAIn9E,GAAG,KAAKe,EAAG,MAAM,CAACyP,YAAY,aAAagG,YAAY,CAAC,cAAc,SAAS,CAAC2mE,EAAIn9E,GAAGm9E,EAAI39E,GAAG29E,EAAI57I,KAAK0xM,SAAS,OAAO91D,EAAIn9E,GAAG,KAAKe,EAAG,YAAY,CAACyV,YAAY,CAAC,MAAQ,SAAS96E,MAAM,CAAC,YAAcyhJ,EAAI57I,KAAKyxM,iBAAiB,KAAO,UAAU5tI,MAAM,CAACp7E,MAAOmzJ,EAAa,UAAE/qJ,SAAS,SAAUu9L,GAAMxyC,EAAI00D,UAAUliB,GAAK/mH,WAAW,cAAcu0E,EAAI19E,GAAI09E,EAAiB,eAAE,SAASltJ,GAAM,OAAO8wE,EAAG,YAAY,CAACz2E,IAAI2F,EAAKjG,MAAMwsF,YAAY,CAAC,YAAY,SAAS96E,MAAM,CAAC,MAAQzL,EAAK4zM,MAAM,MAAQ5zM,EAAKjG,YAAW,GAAGmzJ,EAAIn9E,GAAG,KAAKe,EAAG,MAAM,CAACyP,YAAY,gBAAgB,CAACzP,EAAG,YAAY,CAACrlE,MAAM,CAAC,KAAO,UAAUwY,GAAG,CAAC,MAAQipI,EAAIo1D,cAAc,CAACp1D,EAAIn9E,GAAGm9E,EAAI39E,GAAG29E,EAAI57I,KAAK2xM,YAAY/1D,EAAIn9E,GAAG,KAAKe,EAAG,YAAY,CAACrlE,MAAM,CAAC,KAAO,SAAS,KAAO,WAAWwY,GAAG,CAAC,MAAQipI,EAAIm1D,eAAe,CAACn1D,EAAIn9E,GAAGm9E,EAAI39E,GAAG29E,EAAI57I,KAAK4xM,cAAc,IAAI,GAAGh2D,EAAIn9E,GAAG,KAAKe,EAAG,MAAM,CAACyP,YAAY,cAAc,CAACzP,EAAG,WAAW,CAACyP,YAAY,iBAAiBgG,YAAY,CAAC,MAAQ,QAAQ96E,MAAM,CAAC,KAAOyhJ,EAAI8kD,UAAU,aAAa9kD,EAAI57I,KAAK6xM,YAAY,yBAAyB,qBAAqB,CAACryI,EAAG,kBAAkB,CAACrlE,MAAM,CAAC,KAAO,aAAa,MAAQyhJ,EAAI57I,KAAKwxM,oBAAoB,MAAQ,SAAS,wBAAwB,MAAM51D,EAAIn9E,GAAG,KAAKe,EAAG,kBAAkB,CAACrlE,MAAM,CAAC,KAAO,WAAW,MAAQyhJ,EAAI57I,KAAK8xM,kBAAkB,MAAQ,MAAM,MAAQ,SAAS,wBAAwB,MAAMl2D,EAAIn9E,GAAG,KAAKe,EAAG,kBAAkB,CAACrlE,MAAM,CAAC,KAAO,SAAS,MAAQyhJ,EAAI57I,KAAK0xM,QAAQ,MAAQ,MAAM,MAAQ,UAAUnyI,YAAYq8E,EAAIj9E,GAAG,CAAC,CAAC51E,IAAI,UAAUkH,GAAG,SAASoJ,GAAO,MAAO,CAACmmE,EAAG,MAAM,CAACo8E,EAAIn9E,GAAGm9E,EAAI39E,GAAG29E,EAAI80D,cAAcr3M,EAAMilM,IAAIrwK,mBAAmB2tH,EAAIn9E,GAAG,KAAKe,EAAG,kBAAkB,CAACrlE,MAAM,CAAC,KAAO,eAAe,MAAUyhJ,EAAI57I,KAAiB,aAAI,IAAO47I,EAAI57I,KAAS,KAAG,MAAQ,UAAUu/D,YAAYq8E,EAAIj9E,GAAG,CAAC,CAAC51E,IAAI,UAAUkH,GAAG,SAASoJ,GAAO,MAAO,CAACmmE,EAAG,MAAM,CAACo8E,EAAIn9E,GAAGm9E,EAAI39E,GAAG29E,EAAIt9E,GAAG,aAAPs9E,CAAqBviJ,EAAMilM,IAAIyT,yBAAyBn2D,EAAIn9E,GAAG,KAAKe,EAAG,kBAAkB,CAACrlE,MAAM,CAAC,KAAO,cAAc,MAAQyhJ,EAAI57I,KAAKgyM,OAAO,MAAQ,MAAM,MAAQ,SAAS,wBAAwB,IAAIzyI,YAAYq8E,EAAIj9E,GAAG,CAAC,CAAC51E,IAAI,UAAUkH,GAAG,SAASoJ,GAAO,MAAO,CAACmmE,EAAG,MAAM,CAACo8E,EAAIn9E,GAAGm9E,EAAI39E,GAAG29E,EAAI57I,KAAO3G,EAAMilM,IAAe,YAAI,uBAAwB1iD,EAAIn9E,GAAG,KAAKe,EAAG,kBAAkB,CAACrlE,MAAM,CAAC,KAAO,YAAY,MAAQyhJ,EAAI57I,KAAKiyM,aAAa,MAAQ,MAAM,MAAQ,UAAU1yI,YAAYq8E,EAAIj9E,GAAG,CAAC,CAAC51E,IAAI,UAAUkH,GAAG,SAASoJ,GAAO,MAAO,CAAuB,IAArBA,EAAMilM,IAAIiT,UAAe/xI,EAAG,MAAM,CAACyP,YAAY,UAAUt8D,GAAG,CAAC,MAAQ,SAASkqD,GAAQ,OAAO++E,EAAI01D,gBAAgBj4M,EAAMilM,QAAQ,CAAC1iD,EAAIn9E,GAAG,yCAAyCm9E,EAAIl9E,aAAa,GAAGk9E,EAAIn9E,GAAG,KAAKe,EAAG,gBAAgB,CAACrlE,MAAM,CAAC,eAAeyhJ,EAAI40D,YAAY,YAAY,GAAG,MAAQ50D,EAAI60D,WAAW,sBAAsB,GAAG,WAAa,GAAG,OAAS,oCAAoC99L,GAAG,CAAC,iBAAiBipI,EAAIk1D,wBAAwB,GAAGl1D,EAAIn9E,GAAG,KAAKe,EAAG,YAAY,CAACrlE,MAAM,CAAC,MAAQyhJ,EAAI57I,KAAKkyM,aAAa,QAAUt2D,EAAI20D,cAAc,MAAQ,SAAS59L,GAAG,CAAC,iBAAiB,SAASkqD,GAAQ++E,EAAI20D,cAAc1zI,KAAU,CAAC2C,EAAG,eAAe,CAACyV,YAAY,CAAC,OAAS,QAAQ,MAAQ,QAAQ96E,MAAM,CAAC,aAAa,iBAAiB,CAACqlE,EAAG,MAAM,CAACyP,YAAY,eAAe,CAACzP,EAAG,MAAM,CAACyP,YAAY,eAAe,CAAC2sE,EAAIn9E,GAAGm9E,EAAI39E,GAAG29E,EAAI57I,KAAKmyM,UAAU,OAAOv2D,EAAIn9E,GAAG,KAAKe,EAAG,MAAM,CAACyP,YAAY,gBAAgBvS,SAAS,CAAC,UAAYk/E,EAAI39E,GAAG29E,EAAIi1D,cAAcj1D,EAAI57I,KAAK47I,EAAI+0D,cAAcntI,eAAeo4E,EAAIn9E,GAAG,KAAKe,EAAG,MAAM,CAACyP,YAAY,iBAAiB2sE,EAAIn9E,GAAG,KAAKe,EAAG,MAAM,CAACyP,YAAY,eAAe,CAACzP,EAAG,MAAM,CAACyP,YAAY,eAAe,CAAC2sE,EAAIn9E,GAAGm9E,EAAI39E,GAAG29E,EAAI57I,KAAKoyM,gCAAgC,OAAOx2D,EAAIn9E,GAAG,KAAKe,EAAG,MAAM,CAACyP,YAAY,gBAAgBvS,SAAS,CAAC,UAAYk/E,EAAI39E,GAAG29E,EAAIi1D,cAAcj1D,EAAI57I,KAAK47I,EAAI+0D,cAAcC,sBAAsB,IAAI,KAChtI,IDWpB,EACA,KACA,WACA,M,SEfyI,GCC5H,CACb7oN,KAAM,kBACNmuB,MAAO,CACL4yL,UAAW,CAAEh9M,KAAMuL,OAAQ++L,UAAU,IAEvCtpL,KALa,WAMX,MAAO,CACL9M,KAAKyyL,OAAOC,IAAIC,SAASC,MACzBmW,WAAYtE,eAAelyM,QAAQ,KAAM,KAAKA,QAAQ,KAAM,KAC5Dy9M,UAAW,GACXqC,YAAa,GACbhC,MAAO,GACPiC,aAAc,GACdC,UAAW,GACX7R,UAAW,GACX8P,YAAa,EACbC,WAAY,EAEZtH,cAAe,CACbC,aAAc7+M,KAAK8+M,sBAIzBnmM,QAAS,CACP2vL,WADO,SACIlsL,GACT,OAAKA,GAAU,KAALA,EAGD29L,MAAM39L,GAAG49L,OAAUE,eAAnB,aAFA,OAMbzuK,QAAS,CAEPqzK,mBAFO,SAEYjjL,GACjB,IAAMosL,EAAmB,IAAI39M,KAAKtK,KAAKu+M,WAAWn8I,UAC5C8lJ,EAAc,IAAI59M,KAAK29M,GAC7BC,EAAYC,SAASD,EAAY1f,WAAa,GAC9C,IAAM4f,EAAeF,EAAY9lJ,UACjC,OAAOvmC,EAAKumC,UAAY6lJ,GAAoBpsL,EAAKumC,UAAYgmJ,GAG/D7B,oBAVO,SAUa7lB,GAClB1gM,KAAKimN,YAAcvlB,EACnB1gM,KAAKqoN,uBAGPA,oBAfO,WAgBL7vI,QAAQkuI,cACRzmB,OAAOwC,KAAK,mCACV,CAAE6lB,eAAgB1B,aAAap4M,GAC7Bo3L,GAAI5lM,KAAK8lN,MAAM92M,KAAK,KACpB1N,MAAOtB,KAAKgoN,UAAU,GAAKjO,MAAM/5M,KAAKgoN,UAAU,IAAIhO,OAAO,cAAc,GACzE7yM,IAAKnH,KAAKgoN,UAAU,GAAKjO,MAAM/5M,KAAKgoN,UAAU,IAAIhO,OAAO,cAAc,GACvEuO,KAAMvoN,KAAK+nN,aACXS,UAAWxoN,KAAKimN,YAChBwC,SAAU,KACTrkL,QAAQ,SAASy9B,GACfA,EAAIt/C,OACLviB,KAAKm2M,UAAYt0I,EAAIt/C,KAAKnX,MAAQ,GAClCpL,KAAKkmN,WAAarkJ,EAAIt/C,KAAKi4G,QAAU,IAExC/7H,KAAKuB,OAAO6c,KAAK,SAASA,GACxBA,GAAQA,EAAK1U,KACdnI,KAAK6mN,SAAS3+M,MAAMuN,KAAKoH,EAAK1U,OAE/B1J,KAAKuB,OAAOkyL,IAAI,WACjB15G,QAAQsuI,cACProN,KAAKuB,QAGV0oN,sBAvCO,SAuCe7sL,GACCk+K,MAAMl+K,EAAK,IAAI5rB,KAAK8pM,MAAMl+K,EAAK,IAAK,OACvC,KAChB77B,KAAK2oN,gBAAgB9sL,EAAK,IAC1B77B,KAAK6mN,SAAS+B,QAAQnzM,KAAKozM,sBAI/BF,gBA/CO,SA+CS3jL,GACdhlC,KAAKgoN,UAAY,CACf,IAAI19M,KAAKyvM,MAAM/0K,GAASlQ,SAAS,EAAG,UACpC,IAAIxqB,KAAK06B,KAIb44C,SAtDO,WAuDL59E,KAAKylN,UAAY,GACjBxlB,OAAOwC,KAAK,qCACX,CAAEkkB,eAAgBC,aAAap4M,KAAK41B,QAAQ,SAASy9B,GAAI,WACrDA,EAAIt/C,MAAQs/C,EAAIt/C,KAAK5gB,OAAS,GAC/BkgE,EAAIt/C,KAAK4oB,SAAQ,SAAAhnC,GACf,EAAKshN,UAAUjjN,KAAK,CAAEu1M,MAAO5zM,EAAK3G,KAAMU,MAAOiG,EAAKyhM,SAGxDnnM,KAAKuB,OACPigM,OAAOwC,KAAK,6CACX,CAAEkkB,eAAgBC,aAAap4M,KAAK41B,QAAQ,SAASy9B,GACjDA,EAAIt/C,OACLviB,KAAK8nN,YAAcjmJ,EAAIt/C,KAAJ,UAAwB,CAAC,CAACw1L,MAAOtiM,KAAKqzM,WAAY5qN,MAAO,OAAQsP,UAAU,MAEhG/O,KAAKuB,QAGT+oN,YAxEO,WAyEL/oN,KAAK8lN,MAAQ,GACb9lN,KAAKgoN,UAAY,GACjBhoN,KAAKylN,UAAY,GACjBzlN,KAAK+nN,aAAe,GACpB/nN,KAAKimN,YAAc,EACnBjmN,KAAKkmN,WAAa,EAClBlmN,KAAK49E,WACL59E,KAAK2oN,gBAAgB3oN,KAAKu+M,WAC1Bv+M,KAAKqoN,uBAGPW,aApFO,WAqFLxwI,QAAQkuI,cACRzmB,OAAOwC,KAAK,sCACV,CAAE6lB,eAAgB1B,aAAap4M,GAC7Bo3L,GAAI5lM,KAAK8lN,MAAM92M,KAAK,KACpB1N,MAAOtB,KAAKgoN,UAAU,GAAKjO,MAAM/5M,KAAKgoN,UAAU,IAAIhO,OAAO,cAAc,GACzE7yM,IAAKnH,KAAKgoN,UAAU,GAAKjO,MAAM/5M,KAAKgoN,UAAU,IAAIhO,OAAO,cAAc,GACvEuO,KAAMvoN,KAAK+nN,aACXS,UAAW,EACXC,SAAU,QACTrkL,QAAQ,SAASy9B,GACfA,EAAIt/C,KACLi0L,GAAW30I,EAAIt/C,MAEfviB,KAAK6mN,SAAS3+M,MAAMuN,KAAA,SAEvBhX,KAAKuB,OAAO6c,KAAK,SAASA,GACxBA,GAAQA,EAAK1U,KACdnI,KAAK6mN,SAAS3+M,MAAMuN,KAAKoH,EAAK1U,OAE/B1J,KAAKuB,OAAOkyL,IAAI,WACjB15G,QAAQsuI,cACProN,KAAKuB,SAIZgjF,QA9Ia,WA+IXhjF,KAAK49E,WACL59E,KAAK2oN,gBAAgB3oN,KAAKu+M,WAC1Bv+M,KAAKqoN,wBC/HM,I,OAXC,YACd,ICTW,WAAa,IAAIh3D,EAAIrxJ,KAASyyG,EAAG4+C,EAAIhgF,eAAmB4D,EAAGo8E,EAAI9wE,MAAMtL,IAAIw9B,EAAG,OAAOx9B,EAAG,MAAM,CAACyP,YAAY,eAAe,CAACzP,EAAG,MAAM,CAACyP,YAAY,eAAe,CAACzP,EAAG,MAAM,CAACyP,YAAY,aAAagG,YAAY,CAAC,cAAc,MAAM,CAAC2mE,EAAIn9E,GAAG,SAASm9E,EAAI39E,GAAG29E,EAAI57I,KAAKwxM,qBAAqB,OAAO51D,EAAIn9E,GAAG,KAAKe,EAAG,YAAY,CAACyV,YAAY,CAAC,MAAQ,SAAS96E,MAAM,CAAC,SAAW,GAAG,gBAAgB,GAAG,KAAO,SAAS,YAAcyhJ,EAAI57I,KAAKyxM,kBAAkB5tI,MAAM,CAACp7E,MAAOmzJ,EAAS,MAAE/qJ,SAAS,SAAUu9L,GAAMxyC,EAAIy0D,MAAMjiB,GAAK/mH,WAAW,UAAUu0E,EAAI19E,GAAI09E,EAAa,WAAE,SAASltJ,GAAM,OAAO8wE,EAAG,YAAY,CAACz2E,IAAI2F,EAAKjG,MAAMwsF,YAAY,CAAC,YAAY,SAAS96E,MAAM,CAAC,MAAQzL,EAAK4zM,MAAM,MAAQ5zM,EAAKjG,YAAW,GAAGmzJ,EAAIn9E,GAAG,KAAKe,EAAG,MAAM,CAACyP,YAAY,cAAc,CAAC2sE,EAAIn9E,GAAGm9E,EAAI39E,GAAG29E,EAAI57I,KAAKwzM,SAAS,IAAI53D,EAAI39E,GAAG29E,EAAI57I,KAAKyzM,mBAAmB,OAAO73D,EAAIn9E,GAAG,KAAKe,EAAG,iBAAiB,CAACrlE,MAAM,CAAC,KAAO,YAAY,OAASyhJ,EAAImtD,WAAW,KAAO,SAAS,kBAAkB,IAAI,iBAAiBntD,EAAIutD,cAAc,oBAAoBvtD,EAAI57I,KAAK0zM,0BAA0B,kBAAkB93D,EAAI57I,KAAK2zM,yBAAyBhhM,GAAG,CAAC,OAASipI,EAAIq3D,uBAAuBpvI,MAAM,CAACp7E,MAAOmzJ,EAAa,UAAE/qJ,SAAS,SAAUu9L,GAAMxyC,EAAI22D,UAAUnkB,GAAK/mH,WAAW,eAAeu0E,EAAIn9E,GAAG,KAAKe,EAAG,MAAM,CAACyP,YAAY,cAAc,CAAC2sE,EAAIn9E,GAAGm9E,EAAI39E,GAAG29E,EAAI57I,KAAK4zM,oBAAoB,OAAOh4D,EAAIn9E,GAAG,KAAKe,EAAG,YAAY,CAACyV,YAAY,CAAC,MAAQ,SAAS96E,MAAM,CAAC,KAAO,SAAS,YAAcyhJ,EAAI57I,KAAKyxM,kBAAkB5tI,MAAM,CAACp7E,MAAOmzJ,EAAgB,aAAE/qJ,SAAS,SAAUu9L,GAAMxyC,EAAI02D,aAAalkB,GAAK/mH,WAAW,iBAAiBu0E,EAAI19E,GAAI09E,EAAe,aAAE,SAASltJ,GAAM,OAAO8wE,EAAG,YAAY,CAACz2E,IAAI2F,EAAKjG,MAAMwsF,YAAY,CAAC,YAAY,SAAS96E,MAAM,CAAC,MAAQzL,EAAK4zM,MAAM,MAAQ5zM,EAAKjG,YAAW,GAAGmzJ,EAAIn9E,GAAG,KAAKe,EAAG,MAAM,CAACyP,YAAY,gBAAgB,CAACzP,EAAG,YAAY,CAACrlE,MAAM,CAAC,KAAO,UAAUwY,GAAG,CAAC,MAAQipI,EAAI03D,cAAc,CAAC13D,EAAIn9E,GAAGm9E,EAAI39E,GAAG29E,EAAI57I,KAAK2xM,YAAY/1D,EAAIn9E,GAAG,KAAKe,EAAG,YAAY,CAACrlE,MAAM,CAAC,KAAO,SAAS,KAAO,WAAWwY,GAAG,CAAC,MAAQ,SAASkqD,GAAQ,OAAO++E,EAAIk1D,oBAAoB,MAAM,CAACl1D,EAAIn9E,GAAG,WAAWm9E,EAAI39E,GAAG29E,EAAI57I,KAAK4xM,UAAU,YAAYh2D,EAAIn9E,GAAG,KAAKe,EAAG,YAAY,CAACrlE,MAAM,CAAC,KAAO,SAAS,KAAO,UAAU,SAAoC,IAAzByhJ,EAAI8kD,UAAUx0M,QAAcymB,GAAG,CAAC,MAAQ,SAASkqD,GAAQ,OAAO++E,EAAI23D,kBAAkB,CAAC33D,EAAIn9E,GAAGm9E,EAAI39E,GAAG29E,EAAI57I,KAAK6zM,QAAQ,aAAa,IAAI,GAAGj4D,EAAIn9E,GAAG,KAAKe,EAAG,MAAM,CAACyP,YAAY,cAAc,CAACzP,EAAG,WAAW,CAACyP,YAAY,iBAAiBgG,YAAY,CAAC,MAAQ,QAAQ96E,MAAM,CAAC,KAAOyhJ,EAAI8kD,UAAU,yBAAyB,mBAAmB,aAAa9kD,EAAI57I,KAAK6xM,cAAc,CAACryI,EAAG,kBAAkB,CAACrlE,MAAM,CAAC,KAAO,gBAAgB,MAAQyhJ,EAAI57I,KAAK8zM,gBAAgB,MAAQ,OAAO,MAAQ,MAAM,MAAQ,SAAS,wBAAwB,MAAMl4D,EAAIn9E,GAAG,KAAKe,EAAG,kBAAkB,CAACrlE,MAAM,CAAC,KAAO,KAAK,MAAQyhJ,EAAI57I,KAAK8xM,kBAAkB,MAAQ,OAAO,MAAQ,MAAM,MAAQ,SAAS,wBAAwB,MAAMl2D,EAAIn9E,GAAG,KAAKe,EAAG,kBAAkB,CAACrlE,MAAM,CAAC,MAAQyhJ,EAAI57I,KAAK+zM,+BAA+B,MAAQ,OAAO,MAAQ,MAAM,MAAQ,SAAS,wBAAwB,IAAIx0I,YAAYq8E,EAAIj9E,GAAG,CAAC,CAAC51E,IAAI,UAAUkH,GAAG,SAASoJ,GAAO,MAAO,CAACmmE,EAAG,MAAM,CAACyP,YAAY,aAAa,CAAC2sE,EAAIn9E,GAAGm9E,EAAI39E,GAAG5kE,EAAMilM,IAAI0V,UAAU,cAAcp4D,EAAIn9E,GAAG,KAAKe,EAAG,kBAAkB,CAACrlE,MAAM,CAAC,KAAO,SAAS,MAAQyhJ,EAAI57I,KAAKi0M,6BAA6B,MAAQ,OAAO,MAAQ,MAAM,MAAQ,SAAS,wBAAwB,MAAMr4D,EAAIn9E,GAAG,KAAKe,EAAG,kBAAkB,CAACrlE,MAAM,CAAC,KAAO,YAAY,MAAQyhJ,EAAI57I,KAAK0zM,0BAA0B,MAAQ,MAAM,MAAQ,UAAUn0I,YAAYq8E,EAAIj9E,GAAG,CAAC,CAAC51E,IAAI,UAAUkH,GAAG,SAASoJ,GAAO,MAAO,CAACmmE,EAAG,MAAM,CAACo8E,EAAIn9E,GAAGm9E,EAAI39E,GAAG29E,EAAIt9E,GAAG,aAAPs9E,CAAqBviJ,EAAMilM,IAAI76K,sBAAsBm4H,EAAIn9E,GAAG,KAAKe,EAAG,kBAAkB,CAACrlE,MAAM,CAAC,KAAO,UAAU,MAAQyhJ,EAAI57I,KAAK2zM,wBAAwB,MAAQ,MAAM,MAAQ,SAAS,wBAAwB,IAAIp0I,YAAYq8E,EAAIj9E,GAAG,CAAC,CAAC51E,IAAI,UAAUkH,GAAG,SAASoJ,GAAO,MAAO,CAACmmE,EAAG,MAAM,CAACo8E,EAAIn9E,GAAGm9E,EAAI39E,GAAG29E,EAAIt9E,GAAG,aAAPs9E,CAAqBviJ,EAAMilM,IAAI4V,oBAAoBt4D,EAAIn9E,GAAG,KAAKe,EAAG,kBAAkB,CAACrlE,MAAM,CAAC,KAAO,WAAW,MAAQyhJ,EAAI57I,KAAKm0M,yBAAyB,MAAQ,MAAM,MAAQ,YAAYv4D,EAAIn9E,GAAG,KAAKe,EAAG,kBAAkB,CAACrlE,MAAM,CAAC,KAAO,cAAc,MAAQyhJ,EAAI57I,KAAKo0M,uBAAyB,IAAOx4D,EAAI57I,KAAQ,IAAI,IAAI,MAAQ,MAAM,MAAQ,YAAY47I,EAAIn9E,GAAG,KAAKe,EAAG,kBAAkB,CAACrlE,MAAM,CAAC,KAAO,cAAc,MAAQyhJ,EAAI57I,KAAKq0M,4BAA8B,IAAOz4D,EAAI57I,KAAQ,IAAI,IAAI,MAAQ,MAAM,MAAQ,YAAY47I,EAAIn9E,GAAG,KAAKe,EAAG,kBAAkB,CAACrlE,MAAM,CAAC,KAAO,YAAY,MAAQyhJ,EAAI57I,KAAKs0M,0BAA4B,IAAO14D,EAAI57I,KAAQ,IAAI,IAAI,MAAQ,MAAM,MAAQ,YAAY47I,EAAIn9E,GAAG,KAAKe,EAAG,kBAAkB,CAACrlE,MAAM,CAAC,KAAO,WAAW,MAAQyhJ,EAAI57I,KAAKu0M,0BAA0B,MAAQ,MAAM,MAAQ,SAAS,wBAAwB,OAAO,GAAG34D,EAAIn9E,GAAG,KAAKe,EAAG,gBAAgB,CAACrlE,MAAM,CAAC,eAAeyhJ,EAAI40D,YAAY,YAAY,GAAG,MAAQ50D,EAAI60D,WAAW,sBAAsB,GAAG,WAAa,GAAG,OAAS,oCAAoC99L,GAAG,CAAC,iBAAiBipI,EAAIk1D,wBAAwB,OACl0J,IDWpB,EACA,KACA,WACA,M,ihBEdK,IAKM0D,GAAoB,CAC/BjkL,EAAG,yBACHkkL,EAAG,iCACHC,EAAG,gCAUQC,GAAsB,6BAStBC,aACVD,GAAsB,CACrBE,SAAU,6BACVzrB,QAAS,UACT0rB,iBAAiB,IAJR,MAP4B,gCAaV,CAC3BD,SAAU,gCACVzrB,QAAS,UACT0rB,iBAAiB,IATR,MAL0B,gCAgBV,CACzBD,SAAU,gCACVzrB,QAAS,UACT0rB,iBAAiB,IAdR,MAHuB,8BAmBV,CACtBD,SAAU,8BACVzrB,QAAS,UACT0rB,iBAAiB,IAnBR,MAFyB,gCAuBV,CACxBD,SAAU,gCACVzrB,QAAS,UACT0rB,iBAAiB,IAxBR,IAsGAC,GAAoBtiB,OAAOC,IAAIC,SAASC,MAApB,sBACpBoiB,GAAoBviB,OAAOC,IAAIC,SAASC,MAApB,6BACpBqiB,GAAyBxiB,OAAOC,IAAIC,SAASC,MAApB,wBAGzBsiB,GAAgB,CAC3B3kL,EAAGkiK,OAAOC,IAAIC,SAASC,MAApB,oCACH6hB,EAAGhiB,OAAOC,IAAIC,SAASC,MAApB,wCAWQuiB,GAAgB,SAAC1rM,EAAMsJ,EAAOqiM,EAAUt8J,EAAOu8J,EAAYC,GACtE,GAA0B,KAAvBviM,EAAM9gB,OAAOxJ,QAAiBsqB,EAAM9gB,OAAOsjN,SAASC,MAErD,OADAziM,EAAM9gB,OAAOxJ,MAAQ,UACEgE,IAAf4oN,GAA6BC,EAAyB,KAAbD,EAEnD,GAA0B,KAAvBtiM,EAAM9gB,OAAOxJ,MAEd,OADAsqB,EAAM9gB,OAAOxJ,MAAQ,UACEgE,IAAf4oN,GAA6BC,EAAyB,KAAbD,EAEnD,IAAII,EAAW1iM,EAAM9gB,OAAOxJ,MAE5BgtN,EAAWA,EAASljN,QAAQ,WAAY,IAExC,IAAIw0C,EAAS3pB,WAAWq4L,GAExB,GAAG/gL,MAAMqS,GACP,YAAuBt6C,IAAf4oN,GAA6BC,EAAyB,KAAbD,EAOnD,QAJgB5oN,IAAb2oN,IACDruK,EAAS3pB,WAAW2pB,EAAO0kE,QAAQ2pG,UAGxB3oN,IAAVqsD,EAAqB,OACWA,EAAMplD,MAAM,KAAK5C,IAAIssB,YADhC,UACfs4L,EADe,KACHC,EADG,KAEtB,GAAG,CAACD,EAAYC,GAAYltK,SAAS4sK,IAAetuK,GAAU2uK,EAC5D,OAAO3uK,EAAO74C,WAEhB,GAAG64C,EAAS2uK,GAAc3uK,EAAS4uK,GAC/B5uK,GAAU2uK,GAAcL,IAAeK,EAGzC,OADAjsM,EAAK2nM,SAAS3+M,MAASuN,KAAK84C,MAA5B,KAAsCA,EAAtC,UACuBrsD,IAAf4oN,GAA6BC,EAAyB,KAAbD,EAIrD,OAAOtuK,EAAO74C,YAIH0nN,GAAgB,CAAC,UAAU,UAAU,UAAU,WC5LqK,GCiDjO,CACE7tN,KAAM,gBACNmuB,MAAF,CACI2/L,UAAW,CAAE/pN,KAAMoqE,QAASkgI,UAAU,GACtC0f,MAAO,CAAEhqN,KAAM5D,OAAQkuM,UAAU,IAEnChnI,MAAF,CACI0mJ,MADJ,SACA,GAEM,OADAvrN,KAAKwrN,aAAa3mN,GACXA,IAGX0d,KAZF,WAaI,MAAO,CACL9M,KAAN,0BACM40M,wBAAN,GACMoB,qBFxC8B,8BEyC9BC,UAAW,OAGf/yM,QAAF,CACI2vL,WADJ,SACA,GACM,OAAKlsL,GAAU,KAALA,EAGD29L,MAAM39L,GAAG49L,OAAO,eAA/B,aAFe,OAMbvuK,QAAF,CAEIkgL,aAFJ,SAEA,KACM,OAAN,cACA,WACenuN,EAAKgiH,UAAU,EAA9B,2CADM,GAKFosG,gBATJ,WAUM5rN,KAAKq7E,MAAM,gBAAiBr7E,KAAKurN,QAGnCC,aAbJ,SAaA,GACMxrN,KAAK0rN,UAAY,KFnEa,gCEoEpC,UACA,2DACA,oBACA,yCACA,gEAEA,cAIE1oI,QAtDF,WAuDIhjF,KAAKwrN,aAAaxrN,KAAKurN,SCrFZ,I,OAXC,YACd,ICTW,WAAa,IAAIl6D,EAAIrxJ,KAASyyG,EAAG4+C,EAAIhgF,eAAmB4D,EAAGo8E,EAAI9wE,MAAMtL,IAAIw9B,EAAG,OAAOx9B,EAAG,MAAM,CAACyP,YAAY,iBAAiBpgE,MAAM,CAAEunM,gBAAgB,mCAAyCx6D,EAAIk6D,MAAgB,WAA7D,UAAgF,CAAE,CAAC,EAAE,GAAGrtK,SAASmzG,EAAIk6D,MAAMptM,OAAQ82D,EAAG,MAAM,CAACyP,YAAY,SAAS90E,MAAM,CAAC,IAAM,oCAAoCyhJ,EAAIl9E,KAAKk9E,EAAIn9E,GAAG,KAAKe,EAAG,MAAM,CAACyP,YAAY,cAAcpgE,MAAM,CAAE0qI,WAAcqC,EAAIg5D,wBAAwBh5D,EAAIk6D,MAAM7nL,QAAkB,QAAI,OAAS,CAACuxC,EAAG,MAAM,CAACyP,YAAY,OAAOpgE,MAAM,CAAE0qI,WAAa,GAAMqC,EAAIg5D,wBAAwBh5D,EAAIk6D,MAAM7nL,QAAkB,aAAS2tH,EAAIn9E,GAAG,KAAMm9E,EAAIi6D,WAAaj6D,EAAIk6D,MAAM/tN,KAAKmE,OAAS,GAAIszE,EAAG,aAAa,CAACrlE,MAAM,CAAC,eAAe,iBAAiB,OAAS,QAAQ,UAAY,MAAM,QAAUyhJ,EAAIk6D,MAAM/tN,OAAO,CAAE6zJ,EAAa,UAAEp8E,EAAG,MAAM,CAACyP,YAAY,UAAUt8D,GAAG,CAAC,MAAQ,SAASkqD,GAAQ,OAAO++E,EAAIu6D,qBAAqB,CAACv6D,EAAIn9E,GAAG,WAAWm9E,EAAI39E,GAAG29E,EAAIs6D,aAAat6D,EAAIk6D,MAAM/tN,KAAM,KAAK,YAAY6zJ,EAAIl9E,OAAOk9E,EAAIl9E,KAAKk9E,EAAIn9E,GAAG,KAAMm9E,EAAIi6D,WAAaj6D,EAAIk6D,MAAM/tN,KAAKmE,QAAU,GAAIszE,EAAG,MAAM,CAACyP,YAAY,UAAUt8D,GAAG,CAAC,MAAQ,SAASkqD,GAAQ,OAAO++E,EAAIu6D,qBAAqB,CAACv6D,EAAIn9E,GAAG,SAASm9E,EAAI39E,GAAG29E,EAAIk6D,MAAM/tN,MAAM,UAAU6zJ,EAAIl9E,KAAKk9E,EAAIn9E,GAAG,KAAKe,EAAG,aAAa,CAACrlE,MAAM,CAAC,eAAe,iBAAiB,OAAS,QAAQ,UAAY,SAAS,CAACqlE,EAAG,MAAM,CAACyP,YAAY,gBAAgB2sE,EAAIn9E,GAAG,KAAKe,EAAG,MAAM,CAACyV,YAAY,CAAC,YAAY,oBAAoB96E,MAAM,CAAC,KAAO,WAAWmgE,KAAK,WAAW,CAACkF,EAAG,MAAM,CAACyP,YAAY,aAAa,CAAC2sE,EAAIn9E,GAAGm9E,EAAI39E,GAAG29E,EAAI57I,KAAKq2M,OAAO,MAAM72I,EAAG,OAAO,CAACo8E,EAAIn9E,GAAGm9E,EAAI39E,GAAG29E,EAAIk6D,MAAM/tN,WAAW6zJ,EAAIn9E,GAAG,KAAKe,EAAG,MAAM,CAACyP,YAAY,aAAa,CAAC2sE,EAAIn9E,GAAGm9E,EAAI39E,GAAG29E,EAAI57I,KAAKs2M,YAAY,MAAM92I,EAAG,OAAO,CAACo8E,EAAIn9E,GAAGm9E,EAAI39E,GAAG29E,EAAIk6D,MAAM3lB,SAASv0C,EAAIn9E,GAAG,KAAKe,EAAG,MAAM,CAACyP,YAAY,aAAa,CAAC2sE,EAAIn9E,GAAGm9E,EAAI39E,GAAG29E,EAAI57I,KAAKu2M,oBAAoB,eAAe/2I,EAAG,OAAO,CAAC3wD,MAAM,CAAEuyF,MAAQ,GAAMw6C,EAAIg5D,wBAAwBh5D,EAAIk6D,MAAM7nL,QAAkB,UAAM,CAAC2tH,EAAIn9E,GAAG,eAAem9E,EAAI39E,GAAG29E,EAAIk6D,MAAM7nL,OAAS2tH,EAAI57I,KAAK47I,EAAIk6D,MAAM7nL,QAAU,MAAM,kBAAkB2tH,EAAIn9E,GAAG,KAAKe,EAAG,MAAM,CAACyP,YAAY,aAAa,CAAC2sE,EAAIn9E,GAAGm9E,EAAI39E,GAAG29E,EAAI57I,KAAKw2M,qBAAqB,eAAeh3I,EAAG,OAAO,CAAC3wD,MAAM,CAAEuyF,MAAQ,GAAMw6C,EAAIg5D,wBAAwBh5D,EAAIk6D,MAAM7nL,QAAkB,UAAM,CAAC2tH,EAAIn9E,GAAG,eAAem9E,EAAI39E,GAAG29E,EAAIk6D,MAAMW,WAAa76D,EAAI57I,KAAK47I,EAAIk6D,MAAMW,YAAc,MAAM,kBAAkB76D,EAAIn9E,GAAG,KAAMm9E,EAAIk6D,MAAM7nL,SAAW2tH,EAAIo6D,qBAAsBx2I,EAAG,MAAM,CAACyP,YAAY,aAAa,CAAC2sE,EAAIn9E,GAAG,aAAam9E,EAAI39E,GAAG29E,EAAI57I,KAAKmzM,SAAS,eAAe3zI,EAAG,OAAO,CAAC3wD,MAAM,CAAEuyF,MAAQ,GAAMw6C,EAAIg5D,wBAAwBh5D,EAAIk6D,MAAM7nL,QAAkB,UAAM,CAAC2tH,EAAIn9E,GAAG,eAAem9E,EAAI39E,GAAG29E,EAAIq6D,WAAW,kBAAkBr6D,EAAIl9E,KAAKk9E,EAAIn9E,GAAG,KAAKe,EAAG,MAAM,CAACyP,YAAY,aAAa,CAAC2sE,EAAIn9E,GAAGm9E,EAAI39E,GAAG29E,EAAI57I,KAAK02M,YAAY,eAAel3I,EAAG,OAAO,CAACo8E,EAAIn9E,GAAGm9E,EAAI39E,GAAG29E,EAAIt9E,GAAG,aAAPs9E,CAAqBA,EAAIk6D,MAAMY,uBAAuB,KAC/vF,IDWpB,EACA,KACA,WACA,M,SEf8I,GCCjI,CACb3uN,KAAM,oBACNmuB,MAAO,CACLygM,OAAQ,CAAE7qN,KAAML,MAAO2qM,UAAU,IAEnC1sH,WAAY,CAACktI,kBACb9pM,KANa,WAOX,MAAO,CACL9M,KAAKyyL,OAAOC,IAAIC,SAASC,QAG7B58J,QAAS,CAEPotG,cAFO,SAEOn6I,GACZ,GAAG,CAAC,EAAE,GAAGw/C,SAASl+C,KAAKosN,OAAOzqN,QAAS,CACrC,GAAO,IAAJjD,EAAS,MAAO,CAAE4tN,KAAM,GAAIC,MAAO,KACtC,GAAO,IAAJ7tN,EAAS,MAAO,CAAE4tN,KAAM,IAAKC,MAAO,SAClC,KAAG,CAAC,EAAE,GAAGruK,SAASl+C,KAAKosN,OAAOzqN,QAMnC,OAAO,IAAJjD,EAAgB,CAAE4tN,KAAM,EAAGC,MAAO,KAC9B,IAAJ7tN,EAAgB,CAAE4tN,KAAM,IAAKC,MAAO,IACpC7tN,EAAI,GAAM,EACJ,CACL4tN,KAAM,IAAMxkN,KAAKq4C,MAAMzhD,EAAE,GAAK,EAC9B6tN,MAAO,IAAMzkN,KAAKq4C,MAAMzhD,EAAE,GAAK,KAG1B,CACL4tN,KAAO,KAAO5tN,EAAE,EAAI,GAAK,IACzB6tN,MAAO,KAAM7tN,EAAE,EAAI,GAAK,IAf5B,GAAO,IAAJA,EAAS,MAAO,CAAE4tN,KAAM,GAAIC,MAAO,KACtC,GAAO,IAAJ7tN,EAAS,MAAO,CAAE4tN,KAAM,IAAKC,MAAO,KACvC,GAAO,IAAJ7tN,EAAS,MAAO,CAAE4tN,KAAM,IAAKC,MAAO,KACvC,GAAO,IAAJ7tN,EAAS,MAAO,CAAE4tN,KAAM,IAAKC,MAAO,OAiB3CC,mBA3BO,SA2BYC,GACjBzsN,KAAKq7E,MAAM,qBAAsBoxI,MCrBxB,I,OAXC,YACd,ICTW,WAAa,IAAIp7D,EAAIrxJ,KAASyyG,EAAG4+C,EAAIhgF,eAAmB4D,EAAGo8E,EAAI9wE,MAAMtL,IAAIw9B,EAAG,OAAOx9B,EAAG,MAAM,CAACyP,YAAY,eAAe2sE,EAAI19E,GAAI09E,EAAU,QAAE,SAASltJ,EAAKzC,GAAO,OAAOuzE,EAAG,MAAM,CAACz2E,IAAIkD,EAAMgjF,YAAY,UAAUpgE,MAAM,CAC3NrT,IAAKogJ,EAAIxY,cAAcn3I,EAAM,GAAS,KAAI,KAC1C60B,KAAM86H,EAAIxY,cAAcn3I,EAAM,GAAU,MAAI,OAC1C,CAACuzE,EAAG,gBAAgB,CAACrlE,MAAM,CAAC,cAAc,GAAG,MAAQzL,GAAMikB,GAAG,CAAC,cAAgBipI,EAAIm7D,uBAAuB,MAAK,KACrG,IDQpB,EACA,KACA,WACA,M,SEfiO,GCoBnO,CACE,KAAF,kBACE,MAAF,CACIE,UAAW,CAAEnrN,KAAMoqE,QAASkgI,UAAU,GACtC0S,UAAW,CAAEh9M,KAAMuL,OAAQ++L,UAAU,GACrCv/H,KAAM,CAAE/qE,KAAM5D,OAAQkuM,UAAU,IAElC,MAAF,CACIv/H,KADJ,SACA,GAEM,OADAtsE,KAAK2sN,eACE9nN,IAGX,KAbF,WAcI,MAAJ,CACM,KAAN,0BACM,YAAN,KACM,WAAN,mDACM,QAAN,yBAEM,cAAN,uCACM,SAAN,CACA,CACQ,KAAR,SACQ,MAAR,EACQ,YAAR,EACQ,WAAR,IACQ,MAAR,GACQ,IAAR,MAGM,WAAN,EACM,WAAN,IAGE,QAAF,CAEIi6M,mBAFJ,SAEA,GACM,OAAN,gDAGI8N,eANJ,SAMA,GACM,IAAN,YAEA,GADA,2CACA,8BACA,KACA,KACA,KACA,KA4IM,OA3IN,YACQ/qJ,EAAI12B,SAAQ,SAApB,GACU,IAAV,2CACU0hL,EAAMrqN,KAAKu3M,MAAM51M,EAAKouC,GAAGynK,OAAO,UAChC8S,EAAOtqN,KAAK,CAAtB,gCACUuqN,EAAOvqN,KAAK2B,EAAKquC,EAAe,aAChCw6K,EAAOxqN,KAAK2B,EAAKquC,EAAa,cAGxC,CACQo/J,KAAM,CACJp2I,OAAQ,OAEVg/I,SAAUyS,EACVpR,OAAQ,CACNt5L,KAAM,CAChB,4BACA,iCACA,gCAEUqtI,UAAW,CAAE/4C,MAAO,WACpBtkE,EAAG,GACH26K,UAAW,GACXC,WAAY,IAEdxT,QAAS,CACPzwL,QAAS,OACTkkM,YAAa,CACX7rN,KAAM,UAERs4M,UAAW,SAArB,GACY,IAAZ,kBACgBwT,EAAiB,8BAerB,OAdAA,GAAkB,gDAA9B,cACYA,GAAkB,MAA9B,+BAA8B,mCAC9B,6DACYA,GAAkB,MAA9B,6BAA8B,mCAC9B,6DACYA,GAAkB,8BAA9B,gBAA8B,mCAC9B,WADA,IACA,SADA,cAEYA,GAAkB,8BAA9B,gBAA8B,mCAC9B,WADA,IACA,SADA,cAEYA,GAAkB,8BAA9B,gBAA8B,mCAC9B,WADA,IACA,SADA,cAEYA,GAAkB,mDAA9B,+BAA8B,mCAC9B,mBACYA,GAAkB,WAItB7Q,MAAO,CACLj7M,KAAM,WACNghB,KAAMsqM,EACNpQ,SAAU,CACRj3L,MAAM,EACNk1L,UAAW,CACT7jG,MAAO,aAIb8lG,MAAO,CACLp7M,KAAM,QACN/D,KAAMiY,KAAK2rM,IACX3E,SAAU,CACRj3L,MAAM,EACNk1L,UAAW,CACT7jG,MAAO,YAGXy2G,SAAU,CACR9nM,MAAM,IAGVm2L,OAAQ,CAChB,CACU,KAAV,4BACU,KAAV,MACU,KAAV,EACU,SAAV,GACU,UAAV,CACY,MAAZ,CACc,KAAd,SACc,EAAd,MACc,GAAd,OACc,WAAd,CACA,CACgB,OAAhB,mBAEA,CACgB,OAAhB,uBAMA,CACU,KAAV,iCACU,KAAV,MACU,KAAV,EACU,SAAV,GACU,UAAV,CACY,MAAZ,CACc,KAAd,SACc,EAAd,MACc,GAAd,OACc,WAAd,CACA,CACgB,OAAhB,mBAEA,CACgB,OAAhB,uBAMA,CACU,KAAV,+BACU,KAAV,MACU,KAAV,EACU,SAAV,GACU,UAAV,CACY,MAAZ,CACc,KAAd,SACc,EAAd,MACc,GAAd,OACc,WAAd,CACA,CACgB,OAAhB,mBAEA,CACgB,OAAhB,0BAWIgR,aA5JJ,SA4JA,GACA,uBACA,2CACM1sB,OAAOwC,KAAK,wCAClB,iBACQ,KAAR,2CACA,+BACA,yCAIQziM,KAAKutN,YAAcvtN,KAAK4sN,eAAe/qJ,EAAIt/C,KAAKi4G,QAChD56G,YAAW,WACT,EAAV,aACU,IAAV,0CACA,gBACkBk8L,UAAU,EAA5B,kBACA,IATU97M,KAAKwtN,WAAY,GAU3B,6BACQxtN,KAAK6mN,SAAS3+M,MAAMuN,KAAKoH,EAAK1U,OACtC,2BACQ,KAAR,cACA,cAGE,QAxNF,cCDe,I,OAXC,YACd,ICTW,WAAa,IAAIkpJ,EAAIrxJ,KAASyyG,EAAG4+C,EAAIhgF,eAAmB4D,EAAGo8E,EAAI9wE,MAAMtL,IAAIw9B,EAAG,OAAOx9B,EAAG,MAAM,CAACzK,WAAW,CAAC,CAAChtE,KAAK,UAAUoqF,QAAQ,YAAY1pF,MAAOmzJ,EAAa,UAAEv0E,WAAW,cAAc4H,YAAY,oBAAoB,CAACzP,EAAG,MAAM,CAACyP,YAAY,wBAAwB,CAAC2sE,EAAIn9E,GAAGm9E,EAAI39E,GAAG29E,EAAI57I,KAAKg4M,4BAA4Bp8D,EAAIn9E,GAAG,KAAKe,EAAG,MAAM,CAACyP,YAAY,eAAe,CAACzP,EAAG,iBAAiB,CAACrlE,MAAM,CAAC,KAAO,OAAO,KAAO,QAAQ,YAAcyhJ,EAAI57I,KAAK8yL,KAAK,OAASl3C,EAAImtD,WAAW,UAAW,EAAM,WAAY,EAAM,iBAAiBntD,EAAIutD,eAAex2L,GAAG,CAAC,OAAS,SAASkqD,GAAQ,OAAO++E,EAAIs7D,cAAa,KAAQrzI,MAAM,CAACp7E,MAAOmzJ,EAAW,QAAE/qJ,SAAS,SAAUu9L,GAAMxyC,EAAIq8D,QAAQ7pB,GAAK/mH,WAAW,cAAc,GAAGu0E,EAAIn9E,GAAG,KAAKe,EAAG,MAAM,CAACzK,WAAW,CAAC,CAAChtE,KAAK,OAAOoqF,QAAQ,SAAS1pF,OAAQmzJ,EAAIm8D,UAAW1wI,WAAW,eAAe4H,YAAY,uBAAuBpgE,MAAM,CAAE+M,MAAOggI,EAAIq7D,UAAW,QAAS,SAAU98M,MAAM,CAAC,GAAK,kBAAkByhJ,EAAIn9E,GAAG,KAAKe,EAAG,MAAM,CAACzK,WAAW,CAAC,CAAChtE,KAAK,OAAOoqF,QAAQ,SAAS1pF,MAAOmzJ,EAAa,UAAEv0E,WAAW,cAAc4H,YAAY,gBAAgB,CAACzP,EAAG,MAAM,CAACrlE,MAAM,CAAC,IAAM,0CACjkC,IDWpB,EACA,KACA,WACA,M,SEf+N,GCoBjO,CACE,KAAF,gBACE,MAAF,CACI88M,UAAW,CAAEnrN,KAAMoqE,QAASkgI,UAAU,GACtC0S,UAAW,CAAEh9M,KAAMuL,OAAQ++L,UAAU,GACrCv/H,KAAM,CAAE/qE,KAAM5D,OAAQkuM,UAAU,IAElC,MAAF,CACIv/H,KADJ,SACA,GAEM,OADAtsE,KAAK2sN,eACE9nN,IAGX,KAbF,WAcI,MAAJ,CACM,KAAN,0BACM,YAAN,KACM,WAAN,mDACM,QAAN,yBAEM,cAAN,uCACM,WAAN,EACM,WAAN,IAGE,QAAF,CAEIi6M,mBAFJ,SAEA,GACM,OAAN,gDAGI8N,eANJ,SAMA,GACA,cACA,6CACA,KACA,KAwEM,OAvEN,YACQ/qJ,EAAI12B,SAAQ,SAApB,GACU0hL,EAAMrqN,KAAKu3M,MAAM51M,EAAKouC,GAAGynK,OAAO,UAChC2T,EAAMnrN,KAAK2B,EAAKquC,MAG1B,CACQqkE,MAAO,CAAC,WACR2lG,MAAO,CACLj7M,KAAM,WACNghB,KAAMsqM,EACNpQ,SAAU,CACR/B,UAAW,CACT7jG,MAAO,YAGX+2G,aAAa,GAEfjU,QAAS,CACPzwL,QAAS,OACT2wL,UAAW,SAArB,GACY,IAAZ,OACgBwT,EAAiB,8BAMrB,OALAA,GAAkB,MAA9B,oBACYA,GAAkB,oHAC9B,oBACA,aAFA,gCAEA,QAFA,IAEA,aAFA,cAGYA,GAAkB,WAItB1Q,MAAO,CACLp7M,KAAM,QACN/D,KAAMiY,KAAKo4M,QACXP,SAAU,CACR9nM,MAAM,GAERi3L,SAAU,CACRj3L,MAAM,EACNk1L,UAAW,CACT7jG,MAAO,aAIb8kG,OAAQ,CAChB,CACU,KAAV,gBACU,KAAV,OACU,KAAV,EACU,QAAV,EACU,OAAV,OACU,UAAV,CACY,OAAZ,CACc,MAAd,EACc,MAAd,YAGU,UAAV,CACY,OAAZ,CACc,MAAd,6CACgB,OAAhB,EACgB,MAAhB,WACA,CACgB,OAAhB,EACgB,MAAhB,aACA,SASIgR,aArFJ,SAqFA,GACA,uBACA,2CACM1sB,OAAOwC,KAAK,kCAClB,iBACQ,KAAR,2CACA,+BACA,qCAIQziM,KAAKutN,YAAcvtN,KAAK4sN,eAAe/qJ,EAAIt/C,KAAK04C,MAChDr7C,YAAW,WACT,EAAV,aACU,IAAV,wCACA,gBACkBk8L,UAAU,EAA5B,kBACA,IATU97M,KAAKwtN,WAAY,GAU3B,6BACQ,KAAR,6BACA,2BACQ,KAAR,cACA,cAGE,QAvIF,cCDe,I,OAXC,YACd,ICTW,WAAa,IAAIn8D,EAAIrxJ,KAASyyG,EAAG4+C,EAAIhgF,eAAmB4D,EAAGo8E,EAAI9wE,MAAMtL,IAAIw9B,EAAG,OAAOx9B,EAAG,MAAM,CAACzK,WAAW,CAAC,CAAChtE,KAAK,UAAUoqF,QAAQ,YAAY1pF,MAAOmzJ,EAAa,UAAEv0E,WAAW,cAAc4H,YAAY,kBAAkB,CAACzP,EAAG,MAAM,CAACyP,YAAY,wBAAwB,CAAC2sE,EAAIn9E,GAAGm9E,EAAI39E,GAAG29E,EAAI57I,KAAKq4M,2BAA2Bz8D,EAAIn9E,GAAG,KAAKe,EAAG,MAAM,CAACyP,YAAY,eAAe,CAACzP,EAAG,iBAAiB,CAACrlE,MAAM,CAAC,KAAO,OAAO,KAAO,QAAQ,YAAcyhJ,EAAI57I,KAAK8yL,KAAK,OAASl3C,EAAImtD,WAAW,UAAW,EAAM,WAAY,EAAM,iBAAiBntD,EAAIutD,eAAex2L,GAAG,CAAC,OAAS,SAASkqD,GAAQ,OAAO++E,EAAIs7D,cAAa,KAAQrzI,MAAM,CAACp7E,MAAOmzJ,EAAW,QAAE/qJ,SAAS,SAAUu9L,GAAMxyC,EAAIq8D,QAAQ7pB,GAAK/mH,WAAW,cAAc,GAAGu0E,EAAIn9E,GAAG,KAAKe,EAAG,MAAM,CAACzK,WAAW,CAAC,CAAChtE,KAAK,OAAOoqF,QAAQ,SAAS1pF,OAAQmzJ,EAAIm8D,UAAW1wI,WAAW,eAAe4H,YAAY,uBAAuBpgE,MAAM,CAAE+M,MAAOggI,EAAIq7D,UAAW,QAAS,SAAU98M,MAAM,CAAC,GAAK,gBAAgByhJ,EAAIn9E,GAAG,KAAKe,EAAG,MAAM,CAACzK,WAAW,CAAC,CAAChtE,KAAK,OAAOoqF,QAAQ,SAAS1pF,MAAOmzJ,EAAa,UAAEv0E,WAAW,cAAc4H,YAAY,gBAAgB,CAACzP,EAAG,MAAM,CAACrlE,MAAM,CAAC,IAAM,0CAC5jC,IDWpB,EACA,KACA,WACA,M,SEf8N,GCoHhO,CACE,KAAF,eACE,MAAF,CACI,OAAJ,2BAEE,MAAF,CACI,OADJ,SACA,GAGM,OAFA,KAAN,YACM,KAAN,gBACA,IAGE,KAZF,WAaI,MAAJ,CACM,KAAN,0BACM,cAAN,GACM,QAAN,CACA,CACQ,MAAR,EACQ,MAAR,0CACA,CACQ,MAAR,EACQ,MAAR,8CAGM,UAAN,cAGE,QAAF,CAEI,aAFJ,SAEA,GACM,KAAN,yBAGI,gBANJ,WAOM,KAAN,yBACQ,OAAR,mCACQ,MAAR,CACU,GAAV,kBACU,SAAV,wBACU,OAAV,uBAEQ,WAAR,KAII,aAlBJ,SAkBA,GACM,IAAN,iBACM,EAAN,8BACM,EAAN,4DACM,EAAN,wCACM,EAAN,8BACM,KAAN,aAGI,iBA3BJ,SA2BA,GACM,KAAN,gDAGI,mBA/BJ,SA+BA,GACM,KAAN,oBACA,SADA,OAEA,sCAII,aAtCJ,SAsCA,KACM,MAAN,kBACA,iBAEA,eACA,iBAEA,mBACA,sBADM,IAKJ,QA9EF,WA+EI,KAAJ,4BChLe,I,OAXC,YACd,ICTW,WAAa,IAAIyhJ,EAAIrxJ,KAASyyG,EAAG4+C,EAAIhgF,eAAmB4D,EAAGo8E,EAAI9wE,MAAMtL,IAAIw9B,EAAG,OAAOx9B,EAAG,MAAM,CAACyP,YAAY,wBAAwB,CAACzP,EAAG,MAAM,CAACyP,YAAY,iBAAiB,CAACzP,EAAG,OAAO,CAACo8E,EAAIn9E,GAAGm9E,EAAI39E,GAAG29E,EAAI57I,KAAKs4M,0BAA0B18D,EAAIn9E,GAAG,KAAKe,EAAG,aAAa,CAACrlE,MAAM,CAAC,eAAe,sBAAsB,OAAS,OAAO,UAAY,MAAM,QAAUyhJ,EAAI57I,KAAKu4M,6BAA6B,CAAC/4I,EAAG,MAAM,CAACrlE,MAAM,CAAC,IAAM,0CAA0C,GAAGyhJ,EAAIn9E,GAAG,KAAKe,EAAG,MAAM,CAACyP,YAAY,gBAAgB,CAACzP,EAAG,MAAM,CAACyP,YAAY,iBAAiB,CAACzP,EAAG,OAAO,CAACo8E,EAAIn9E,GAAGm9E,EAAI39E,GAAG29E,EAAI57I,KAAKs4M,0BAA0B18D,EAAIn9E,GAAG,KAAKe,EAAG,YAAY,CAACrlE,MAAM,CAAC,eAAe,UAAU,iBAAiB,WAAWwY,GAAG,CAAC,OAAS,SAAUvjB,GAC7sBwsJ,EAAI48D,aAAa,CAACC,YAAarpN,EAAM,EAAE,MACtCy0E,MAAM,CAACp7E,MAAOmzJ,EAAI88D,UAAqB,YAAE7nN,SAAS,SAAUu9L,GAAMxyC,EAAIlwE,KAAKkwE,EAAI88D,UAAW,cAAetqB,IAAM/mH,WAAW,4BAA4B,GAAGu0E,EAAIn9E,GAAG,KAAKe,EAAG,MAAM,CAACzK,WAAW,CAAC,CAAChtE,KAAK,OAAOoqF,QAAQ,SAAS1pF,MAAOmzJ,EAAI88D,UAAqB,YAAErxI,WAAW,0BAA0B4H,YAAY,kBAAkB,CAACzP,EAAG,IAAI,CAACo8E,EAAIn9E,GAAGm9E,EAAI39E,GAAG29E,EAAI57I,KAAK24M,kCAAkC/8D,EAAIn9E,GAAG,KAAKe,EAAG,WAAW,CAACrlE,MAAM,CAAC,KAAO,SAAS,YAAcyhJ,EAAI57I,KAAK44M,SAASjmM,GAAG,CAAC,KAAOipI,EAAIi9D,kBAAkBh1I,MAAM,CAACp7E,MAAOmzJ,EAAI88D,UAAsB,aAAE7nN,SAAS,SAAUu9L,GAAMxyC,EAAIlwE,KAAKkwE,EAAI88D,UAAW,eAAgBtqB,IAAM/mH,WAAW,2BAA2B,CAAC7H,EAAG,WAAW,CAAClF,KAAK,UAAU,CAACshF,EAAIn9E,GAAGm9E,EAAI39E,GAAG29E,EAAI57I,KAAK84M,kBAAkB,GAAGl9D,EAAIn9E,GAAG,KAAKe,EAAG,YAAY,CAACrlE,MAAM,CAAC,KAAO,WAAWwY,GAAG,CAAC,MAAQ,SAASkqD,GAAQ,OAAO++E,EAAI48D,aAAa,CAACO,aAAcn9D,EAAI88D,UAAUK,kBAAkB,CAACn9D,EAAIn9E,GAAG,eAAem9E,EAAI39E,GAAG29E,EAAI57I,KAAK6M,KAAK,iBAAiB,KAAK+uI,EAAIn9E,GAAG,KAAKe,EAAG,MAAM,CAACyP,YAAY,iBAAiB2sE,EAAIn9E,GAAG,KAAKe,EAAG,MAAM,CAACyP,YAAY,iBAAiB,CAACzP,EAAG,OAAO,CAACo8E,EAAIn9E,GAAGm9E,EAAI39E,GAAG29E,EAAI57I,KAAKg5M,gCAAgCp9D,EAAIn9E,GAAG,KAAKe,EAAG,aAAa,CAACrlE,MAAM,CAAC,eAAe,sBAAsB,OAAS,OAAO,UAAY,MAAM,QAAUyhJ,EAAI88D,UAAUO,2BAA6Br9D,EAAI57I,KAAKk5M,kCAAoCt9D,EAAI57I,KAAKm5M,mCAAmC,CAAC35I,EAAG,MAAM,CAACrlE,MAAM,CAAC,IAAM,yCAAyCyhJ,EAAIn9E,GAAG,KAAKe,EAAG,YAAY,CAACrlE,MAAM,CAAC,eAAe,UAAU,iBAAiB,WAAWwY,GAAG,CAAC,OAAS,SAAUvjB,GACtgDwsJ,EAAI48D,aAAa,CAACS,2BAA4B7pN,EAAM,EAAE,MACrDy0E,MAAM,CAACp7E,MAAOmzJ,EAAI88D,UAAoC,2BAAE7nN,SAAS,SAAUu9L,GAAMxyC,EAAIlwE,KAAKkwE,EAAI88D,UAAW,6BAA8BtqB,IAAM/mH,WAAW,2CAA2C,GAAGu0E,EAAIn9E,GAAG,KAAKe,EAAG,MAAM,CAACyP,YAAY,iBAAiB2sE,EAAIn9E,GAAG,KAA4D,QAAtDm9E,EAAIw9D,aAAax9D,EAAI88D,UAAUvoB,GAAI,eAA0B3wH,EAAG,MAAM,CAACA,EAAG,MAAM,CAACyP,YAAY,iBAAiB,CAACzP,EAAG,OAAO,CAACo8E,EAAIn9E,GAAGm9E,EAAI39E,GAAG29E,EAAI57I,KAAKq5M,kCAAkCz9D,EAAIn9E,GAAG,KAAKe,EAAG,aAAa,CAACrlE,MAAM,CAAC,eAAe,sBAAsB,OAAS,OAAO,UAAY,MAAM,QAAUyhJ,EAAI88D,UAAUY,iBAAmB19D,EAAI57I,KAAKu5M,mCAAqC39D,EAAI57I,KAAKw5M,qCAAqC,CAACh6I,EAAG,MAAM,CAACrlE,MAAM,CAAC,IAAM,yCAAyCyhJ,EAAIn9E,GAAG,KAAKe,EAAG,YAAY,CAACrlE,MAAM,CAAC,eAAe,UAAU,iBAAiB,WAAWwY,GAAG,CAAC,OAAS,SAAUvjB,GAC51BwsJ,EAAI48D,aAAa,CAACc,iBAAkBlqN,EAAM,EAAE,MAC3Cy0E,MAAM,CAACp7E,MAAOmzJ,EAAI88D,UAA0B,iBAAE7nN,SAAS,SAAUu9L,GAAMxyC,EAAIlwE,KAAKkwE,EAAI88D,UAAW,mBAAoBtqB,IAAM/mH,WAAW,iCAAiC,GAAGu0E,EAAIn9E,GAAG,KAAKe,EAAG,MAAM,CAACyP,YAAY,mBAAmB2sE,EAAIl9E,KAAKk9E,EAAIn9E,GAAG,KAAMm9E,EAAIg6D,cAAcntK,SAASmzG,EAAIw9D,aAAax9D,EAAI88D,UAAUvoB,GAAI,iBAAkB3wH,EAAG,MAAM,CAACA,EAAG,MAAM,CAACyP,YAAY,iBAAiB,CAACzP,EAAG,OAAO,CAACo8E,EAAIn9E,GAAGm9E,EAAI39E,GAAG29E,EAAI57I,KAAKy5M,kCAAkC79D,EAAIn9E,GAAG,KAAKe,EAAG,aAAa,CAACrlE,MAAM,CAAC,eAAe,sBAAsB,OAAS,OAAO,UAAY,MAAM,QAAUyhJ,EAAI88D,UAAUgB,YAAc99D,EAAI57I,KAAK25M,oCAAsC/9D,EAAI57I,KAAK45M,sCAAsC,CAACp6I,EAAG,MAAM,CAACrlE,MAAM,CAAC,IAAM,yCAAyCyhJ,EAAIn9E,GAAG,KAAKe,EAAG,YAAY,CAACrlE,MAAM,CAAC,eAAe,UAAU,iBAAiB,WAAWwY,GAAG,CAAC,OAAS,SAAUvjB,GACz1BwsJ,EAAI48D,aAAa,CAACkB,YAAatqN,EAAM,EAAI,MACxCy0E,MAAM,CAACp7E,MAAOmzJ,EAAI88D,UAAqB,YAAE7nN,SAAS,SAAUu9L,GAAMxyC,EAAIlwE,KAAKkwE,EAAI88D,UAAW,cAAetqB,IAAM/mH,WAAW,4BAA4B,GAAGu0E,EAAIn9E,GAAG,KAAKe,EAAG,MAAM,CAACyP,YAAY,mBAAmB2sE,EAAIl9E,KAAKk9E,EAAIn9E,GAAG,KAAKe,EAAG,MAAM,CAACyP,YAAY,iBAAiB,CAACzP,EAAG,OAAO,CAACo8E,EAAIn9E,GAAGm9E,EAAI39E,GAAG29E,EAAI57I,KAAK65M,gCAAgCj+D,EAAIn9E,GAAG,KAAKe,EAAG,aAAa,CAACrlE,MAAM,CAAC,eAAe,sBAAsB,OAAS,OAAO,UAAY,MAAM,QAAUyhJ,EAAI57I,KAAK85M,qCAAqC,CAACt6I,EAAG,MAAM,CAACrlE,MAAM,CAAC,IAAM,0CAA0C,GAAGyhJ,EAAIn9E,GAAG,KAAKe,EAAG,MAAM,CAACyP,YAAY,gBAAgB,CAACzP,EAAG,MAAM,CAACyP,YAAY,kBAAkB,CAACzP,EAAG,IAAI,CAACo8E,EAAIn9E,GAAGm9E,EAAI39E,GAAG29E,EAAI57I,KAAK+5M,qCAAqCn+D,EAAIn9E,GAAG,KAAKe,EAAG,YAAY,CAACrlE,MAAM,CAAC,YAAcyhJ,EAAI57I,KAAKg6M,iCAAiCn2I,MAAM,CAACp7E,MAAOmzJ,EAAI88D,UAAkB,SAAE7nN,SAAS,SAAUu9L,GAAMxyC,EAAIlwE,KAAKkwE,EAAI88D,UAAW,WAAYtqB,IAAM/mH,WAAW,uBAAuBu0E,EAAI19E,GAAI09E,EAAW,SAAE,SAASltJ,GAAM,OAAO8wE,EAAG,YAAY,CAACz2E,IAAI2F,EAAKjG,MAAM0R,MAAM,CAAC,MAAQzL,EAAK4zM,MAAM,MAAQ5zM,EAAKjG,YAAW,IAAI,GAAGmzJ,EAAIn9E,GAAG,KAAKe,EAAG,MAAM,CAACyP,YAAY,kBAAkB,CAACzP,EAAG,IAAI,CAACo8E,EAAIn9E,GAAGm9E,EAAI39E,GAAG29E,EAAI57I,KAAKi6M,sCAAsCr+D,EAAIn9E,GAAG,KAAKe,EAAG,WAAW,CAACrlE,MAAM,CAAC,KAAO,SAAS,YAAcyhJ,EAAI57I,KAAK44M,SAASjmM,GAAG,CAAC,KAAOipI,EAAIs+D,oBAAoBr2I,MAAM,CAACp7E,MAAOmzJ,EAAI88D,UAAgB,OAAE7nN,SAAS,SAAUu9L,GAAMxyC,EAAIlwE,KAAKkwE,EAAI88D,UAAW,SAAUtqB,IAAM/mH,WAAW,qBAAqB,CAAC7H,EAAG,WAAW,CAAClF,KAAK,UAAU,CAACshF,EAAIn9E,GAAGm9E,EAAI39E,GAAG29E,EAAI57I,KAAKm6M,wCAAwC,GAAGv+D,EAAIn9E,GAAG,KAAKe,EAAG,YAAY,CAACrlE,MAAM,CAAC,KAAO,WAAWwY,GAAG,CAAC,MAAQipI,EAAIw+D,kBAAkB,CAACx+D,EAAIn9E,GAAG,eAAem9E,EAAI39E,GAAG29E,EAAI57I,KAAK6M,KAAK,gBAAgB,SAC5pD,IDGpB,EACA,KACA,WACA,M,SEf+I,GCClI,CACb9kB,KAAM,eACNmuB,MAAO,CACLmkM,YAAa,CAAEvuN,KAAMuL,OAAQ++L,UAAU,GACvCkkB,OAAQ,CAAExuN,KAAM5D,OAAQkuM,UAAU,GAClCmkB,UAAW,CAAEzuN,KAAMuL,OAAQ++L,UAAU,GACrCqhB,UAAW,CAAC3rN,KAAM26D,OAAS2vI,UAAU,GACrCokB,YAAa,CAAC1uN,KAAMoqE,QAASkgI,UAAU,GACvCqkB,oBAAqB,CAAC3uN,KAAMoqE,QAASkgI,UAAU,GAC/CskB,YAAa,CAAC5uN,KAAMoqE,QAASkgI,UAAU,IAEzChnI,MAAO,CACLirJ,YADK,SACOjrN,GAEV,OADA7E,KAAKowN,QAAUvrN,EACRA,GAETkrN,OALK,SAKEzjJ,GAGL,OAFAtsE,KAAKmuN,UAAYnxM,EAAEkqC,UAAUolB,GAC7BtsE,KAAK49E,WACEtR,IAGX/pD,KAtBa,WAuBX,MAAO,CACL9M,KAAKyyL,OAAOC,IAAIC,SAASC,MACzBgoB,iBtBzB0B,EsByBRC,etBxBM,EsBwBUC,mBtBvBN,EsBuB0B5F,iBACtD6F,gBAAiB,CAAC,CAChBhzN,KAAMiY,KAAKg7M,0BAA2B5rN,ItB3Bd,EsB4BxB6rN,OAAQ,8BAA+BC,UAAW,oCACjD,CACDnzN,KAAMiY,KAAKm7M,0BAA2B/rN,ItB7BhB,EsB8BtB6rN,OAAQ,iCAAkCC,UAAW,uCACpD,CACDnzN,KAAMiY,KAAKo7M,0BAA2BhsN,ItB/BZ,EsBgC1B6rN,OAAQ,gCAAiCC,UAAW,uCAEtDP,QAASpwN,KAAK8vN,atBpCY,EsBqC1BgB,eAAgB9wN,KAAKiwN,YACrB9B,UAAW,GACX4C,cAAe,CACb,CAAChZ,MAAOtiM,KAAKu7M,kCAAmC9yN,MAAO,GACvD,CAAC65M,MAAOA,KAAKtiM,KAAKw7M,mBAAsB/yN,MAAO,GAC/C,CAAC65M,MAAOA,KAAKtiM,KAAK81L,aAAgBrtM,MAAO,GACzC,CAAC65M,MAAOA,KAAKtiM,KAAK81L,aAAgBrtM,MAAO,GACzC,CAAC65M,MAAOA,KAAKtiM,KAAK81L,aAAgBrtM,MAAO,GACzC,CAAC65M,MAAOA,KAAKtiM,KAAK81L,aAAgBrtM,MAAO,GACzC,CAAC65M,MAAOA,KAAKtiM,KAAK81L,aAAgBrtM,MAAO,MAI/CutC,QAAS,CAEPylL,YAFO,WAGL,OAAQlxN,KAAKgwN,WACX,IAAK,cACHhwN,KAAKq7E,MAAM,aAAc,eACzB,MAEF,IAAK,eACH,GAAGr7E,KAAKkwN,oBAAsB,OAC9BlwN,KAAK8wN,gBAAkB9wN,KAAK8wN,eACdhuN,SAASy1F,cAAc,iBAC/Bj0E,MAAMkvB,UAAZ,WAAkCxzC,KAAK8wN,eAAiB,QAAU,QAAlE,IACiBhuN,SAASy1F,cAAc,eAC/Bj0E,MAAMC,QAAUvkB,KAAK8wN,eAAiB,QAAQ,SAQ7DK,cAtBO,SAsBO/yN,GAEZ,GADA4B,KAAKowN,QAAUhyN,EACZ4B,KAAKmuN,UAAW,CACjB,IAAMiD,EAAUpxN,KAAKmwN,YAA6B,uBAAf,aACnCnwN,KAAKmuN,UAAUiD,GAAUhzN,EAE3B4B,KAAKq7E,MAAM,aAAcj9E,IAG3BizN,eA/BO,WAiCL,OAAIrxN,KAAKmwN,atBnFiB,IsBoFvBnwN,KAAKowN,SAC2B,OAAhCpwN,KAAKmuN,UAAL,WACgC,OAAhCnuN,KAAKmuN,UAAL,WACAjyJ,OAAOl8D,KAAKmuN,UAAL,WAA+BjyJ,OAAOl8D,KAAKmuN,UAAL,YAM7CnuN,KAAKmwN,atB7FkB,IsB8FxBnwN,KAAKowN,SACmC,OAAxCpwN,KAAKmuN,UAAL,mBACwC,OAAxCnuN,KAAKmuN,UAAL,mBACAjyJ,OAAOl8D,KAAKmuN,UAAL,mBAAuCjyJ,OAAOl8D,KAAKmuN,UAAL,oBARrDnuN,KAAK6mN,SAAS3+M,MAAMuN,KAAK67M,mCAClB,MAYFtxN,KAAKmuN,WAGdoD,kBAvDO,SAuDW1sN,GAEf,OADIA,IAAKA,EAAM,IACJA,EAAI7E,KAAKmuN,UAAUqD,QAAQtwG,QAAQ,GAA9C,IAAoDypG,GAAc3qN,KAAKmuN,UAAUsD,WAGnFC,kBA5DM,SA4DYlpM,GACjB,IAAM4oM,EAAUpxN,KAAKmwN,YAAmC,+BAArB,mBACnCnwN,KAAKmuN,UAAUiD,GAAUxG,GACvB5qN,KAAMwoB,EAAO,EACVxoB,KAAKmuN,UAAUwD,iBAFK,IAEe3xN,KAAKmuN,UAAUyD,iBACrD5xN,KAAKmuN,UAAUyD,mBAInBC,cArEO,SAqEOrpM,GACZ,IAAM4oM,EAAUpxN,KAAKmwN,YAAsB,cAAR,MACnCnwN,KAAKmuN,UAAUiD,GAAUxG,GAAc5qN,KAAMwoB,EAAO,EAA3B,QAAuC,IAGlEspM,eA1EO,SA0EQtpM,GACb,IAAM4oM,EAAUpxN,KAAKmwN,YAA4B,oBAAd,YACnCnwN,KAAKmuN,UAAUiD,GAAUxG,GAAc5qN,KAAMwoB,EAAO,EAA3B,UAAyC,GAAG,IAGvEupM,eA/EO,SA+EQvpM,GACb,IAAM4oM,EAAUpxN,KAAKmwN,YAA4B,oBAAd,YACnCnwN,KAAKmuN,UAAUiD,GAAUxG,GAAc5qN,KAAMwoB,EAAO,EAA3B,UAAyC,GAAG,IAGvEo1D,SApFO,WAqFL59E,KAAKmuN,UAAYnxM,EAAEkqC,UAAUlnD,KAAK+vN,QAC/B/vN,KAAKmuN,YACNnuN,KAAKowN,QAAUpwN,KAAKmuN,UAAL,WACZnuN,KAAKmwN,aAAkD,KAAnCnwN,KAAKmuN,UAAL,eACrBnuN,KAAKowN,QAAUpwN,KAAKmuN,UAAL,sBAEbnuN,KAAKmwN,aAAgBnwN,KAAKmuN,UAAL,mBACvBnuN,KAAKmuN,UAAL,iBAAqCnuN,KAAKmuN,UAAL,kBAEpCnuN,KAAKmwN,cAAgBnwN,KAAKmuN,UAAL,+BACtBnuN,KAAKmuN,UAAL,6BAAiDnuN,KAAKmuN,UAAL,qBAKzDnrI,QAtJa,WAuJRhjF,KAAKiwN,cACQntN,SAASy1F,cAAc,iBAC/Bj0E,MAAMkvB,UAAY,gBACP1wC,SAASy1F,cAAc,eAC/Bj0E,MAAMC,QAAU,SAE3BvkB,KAAK49E,aC3IM,I,OAXC,YACd,ICTW,WAAa,IAAIyzE,EAAIrxJ,KAASyyG,EAAG4+C,EAAIhgF,eAAmB4D,EAAGo8E,EAAI9wE,MAAMtL,IAAIw9B,EAAG,OAAOx9B,EAAG,MAAM,CAACyP,YAAY,eAAe,CAACzP,EAAG,MAAM,CAACyP,YAAY,aAAat8D,GAAG,CAAC,MAAQipI,EAAI6/D,cAAc,CAAC7/D,EAAIn9E,GAAG,SAASm9E,EAAI39E,GAAG29E,EAAI8+D,YAAc9+D,EAAI57I,KAAKu8M,0BAA4B3gE,EAAI57I,KAAKw8M,qBAAqB,UAAUh9I,EAAG,aAAa,CAACrlE,MAAM,CAAC,eAAe,sBAAsB,OAAS,OAAO,UAAY,QAAQ,QAAUyhJ,EAAI57I,KAAKy8M,wBAAwB,CAACj9I,EAAG,MAAM,CAACyP,YAAY,YAAY90E,MAAM,CAAC,IAAM,yCAAyCyhJ,EAAIn9E,GAAG,KAAKe,EAAG,MAAM,CAACzK,WAAW,CAAC,CAAChtE,KAAK,OAAOoqF,QAAQ,SAAS1pF,OAAQmzJ,EAAI6+D,oBAAqBpzI,WAAW,yBAAyB4H,YAAY,aAAa90E,MAAM,CAAC,GAAKyhJ,EAAI2+D,UAAU,IAAM,wCAAwC,GAAG3+D,EAAIn9E,GAAG,KAAKe,EAAG,MAAM,CAACyP,YAAY,aAAa2sE,EAAI19E,GAAI09E,EAAmB,iBAAE,SAASjzJ,GAAM,OAAO62E,EAAG,MAAM,CAACz2E,IAAIJ,EAAKyG,IAAI6/E,YAAY,YAAYjK,MAAM,CAAC,mBAAoB42E,EAAI++D,UAAYhyN,EAAKyG,KAAKyf,MAAM,CAAE+M,MAAQggI,EAAI67D,UAAY,MAAQ9kM,GAAG,CAAC,MAAQ,SAASkqD,GAAQ,OAAO++E,EAAI8/D,cAAc/yN,EAAKyG,QAAQ,CAACowE,EAAG,MAAM,CAACA,EAAG,MAAM,CAACrlE,MAAM,CAAC,IAAMyhJ,EAAI++D,UAAYhyN,EAAKyG,IAAMzG,EAAKuyN,UAAWvyN,EAAKsyN,YAAYr/D,EAAIn9E,GAAG,KAAKe,EAAG,MAAM,CAACyP,YAAY,YAAYpgE,MAAM,CAAEuyF,MAAOw6C,EAAI++D,UAAYhyN,EAAKyG,IAAM,UAAU,YAAa,CAACwsJ,EAAIn9E,GAAG,aAAam9E,EAAI39E,GAAGt1E,EAAKZ,MAAM,mBAAkB,GAAG6zJ,EAAIn9E,GAAG,KAAwB,gBAAlBm9E,EAAI2+D,WAA+B3+D,EAAIy/D,eAAgB77I,EAAG,MAAM,CAACyP,YAAY,iBAAiB2sE,EAAIl9E,KAAKk9E,EAAIn9E,GAAG,KAAwB,gBAAlBm9E,EAAI2+D,UAA6B/6I,EAAG,MAAM,CAACyP,YAAY,iBAAiB,CAACzP,EAAG,MAAM,CAACyP,YAAY,cAAc,CAAE2sE,EAAI++D,UAAY/+D,EAAIg/D,iBAAkBp7I,EAAG,MAAM,CAACyP,YAAY,cAAc,CAACzP,EAAG,MAAM,CAACyP,YAAY,iBAAiB,CAACzP,EAAG,OAAO,CAACo8E,EAAIn9E,GAAGm9E,EAAI39E,GAAG29E,EAAI57I,KAAK08M,yCAAyC9gE,EAAIn9E,GAAG,KAAKe,EAAG,aAAa,CAACrlE,MAAM,CAAC,eAAe,sBAAsB,OAAS,OAAO,UAAY,QAAQ,QAAUyhJ,EAAI57I,KAAK28M,qCAAqC,CAACn9I,EAAG,MAAM,CAACrlE,MAAM,CAAC,IAAM,0CAA0C,GAAGyhJ,EAAIn9E,GAAG,KAAOm9E,EAAI8+D,YAA2U9+D,EAAIl9E,KAAlUc,EAAG,WAAW,CAACrlE,MAAM,CAAC,KAAO,SAAS,YAAcyhJ,EAAI57I,KAAK44M,SAASjmM,GAAG,CAAC,KAAOipI,EAAIqgE,mBAAmBp4I,MAAM,CAACp7E,MAAOmzJ,EAAI88D,UAA0B,iBAAE7nN,SAAS,SAAUu9L,GAAMxyC,EAAIlwE,KAAKkwE,EAAI88D,UAAW,mBAAoBtqB,IAAM/mH,WAAW,+BAA+B,CAAC7H,EAAG,WAAW,CAAClF,KAAK,UAAU,CAACshF,EAAIn9E,GAAG,SAAS,GAAYm9E,EAAIn9E,GAAG,KAAMm9E,EAAe,YAAEp8E,EAAG,WAAW,CAACrlE,MAAM,CAAC,KAAO,SAAS,YAAcyhJ,EAAI57I,KAAK44M,SAASjmM,GAAG,CAAC,KAAOipI,EAAIqgE,mBAAmBp4I,MAAM,CAACp7E,MAAOmzJ,EAAI88D,UAAsC,6BAAE7nN,SAAS,SAAUu9L,GAAMxyC,EAAIlwE,KAAKkwE,EAAI88D,UAAW,+BAAgCtqB,IAAM/mH,WAAW,2CAA2C,CAAC7H,EAAG,WAAW,CAAClF,KAAK,UAAU,CAACshF,EAAIn9E,GAAG,SAAS,GAAGm9E,EAAIl9E,MAAM,GAAGk9E,EAAIl9E,KAAKk9E,EAAIn9E,GAAG,KAAMm9E,EAAI++D,UAAY/+D,EAAIi/D,eAAgBr7I,EAAG,MAAM,CAACyP,YAAY,cAAc,CAACzP,EAAG,MAAM,CAACyP,YAAY,iBAAiB,CAACzP,EAAG,OAAO,CAACo8E,EAAIn9E,GAAGm9E,EAAI39E,GAAG29E,EAAI57I,KAAK48M,kCAAkChhE,EAAIn9E,GAAG,KAAKe,EAAG,aAAa,CAACrlE,MAAM,CAAC,eAAe,sBAAsB,OAAS,OAAO,UAAY,QAAQ,QAAUyhJ,EAAI++D,UAAY/+D,EAAIg/D,iBAAmBh/D,EAAI57I,KAAK68M,6BAA8BjhE,EAAI57I,KAAK88M,+BAA+B,CAACt9I,EAAG,MAAM,CAACrlE,MAAM,CAAC,IAAM,0CAA0C,GAAGyhJ,EAAIn9E,GAAG,KAAOm9E,EAAI8+D,YAA+R9+D,EAAIl9E,KAAtRc,EAAG,WAAW,CAACrlE,MAAM,CAAC,KAAO,SAAS,YAAcyhJ,EAAI57I,KAAK44M,SAASjmM,GAAG,CAAC,KAAOipI,EAAIwgE,eAAev4I,MAAM,CAACp7E,MAAOmzJ,EAAI88D,UAAa,IAAE7nN,SAAS,SAAUu9L,GAAMxyC,EAAIlwE,KAAKkwE,EAAI88D,UAAW,MAAOtqB,IAAM/mH,WAAW,kBAAkB,CAAC7H,EAAG,WAAW,CAAClF,KAAK,UAAU,CAACshF,EAAIn9E,GAAG,QAAQ,GAAYm9E,EAAIn9E,GAAG,KAAMm9E,EAAe,YAAEp8E,EAAG,WAAW,CAACrlE,MAAM,CAAC,KAAO,SAAS,YAAcyhJ,EAAI57I,KAAK44M,SAASjmM,GAAG,CAAC,KAAOipI,EAAIwgE,eAAev4I,MAAM,CAACp7E,MAAOmzJ,EAAI88D,UAAqB,YAAE7nN,SAAS,SAAUu9L,GAAMxyC,EAAIlwE,KAAKkwE,EAAI88D,UAAW,cAAetqB,IAAM/mH,WAAW,0BAA0B,CAAC7H,EAAG,WAAW,CAAClF,KAAK,UAAU,CAACshF,EAAIn9E,GAAG,QAAQ,GAAGm9E,EAAIl9E,MAAM,GAAGk9E,EAAIl9E,KAAKk9E,EAAIn9E,GAAG,KAAMm9E,EAAI++D,UAAY/+D,EAAIg/D,iBAAkBp7I,EAAG,MAAM,CAACyP,YAAY,aAAagG,YAAY,CAAC,gBAAgB,SAAS,CAACzV,EAAG,MAAM,CAACyP,YAAY,iBAAiB,CAACzP,EAAG,OAAO,CAACo8E,EAAIn9E,GAAGm9E,EAAI39E,GAAG29E,EAAI57I,KAAK+8M,wCAAwCnhE,EAAIn9E,GAAG,KAAKe,EAAG,aAAa,CAACrlE,MAAM,CAAC,eAAe,sBAAsB,OAAS,OAAO,UAAY,QAAQ,QAAUyhJ,EAAI57I,KAAKg9M,oCAAoC,CAACx9I,EAAG,MAAM,CAACrlE,MAAM,CAAC,IAAM,0CAA0C,GAAGyhJ,EAAIn9E,GAAG,KAAOm9E,EAAI8+D,YAAoT9+D,EAAIl9E,KAA3Sc,EAAG,WAAW,CAACrlE,MAAM,CAAC,KAAO,SAAS,YAAcyhJ,EAAI57I,KAAK44M,SAASjmM,GAAG,CAAC,KAAOipI,EAAI0gE,gBAAgBz4I,MAAM,CAACp7E,MAAOmzJ,EAAI88D,UAAmB,UAAE7nN,SAAS,SAAUu9L,GAAMxyC,EAAIlwE,KAAKkwE,EAAI88D,UAAW,YAAatqB,IAAM/mH,WAAW,wBAAwB,CAAC7H,EAAG,WAAW,CAAClF,KAAK,UAAU,CAACshF,EAAIn9E,GAAG,UAAU,GAAYm9E,EAAIn9E,GAAG,KAAMm9E,EAAe,YAAEp8E,EAAG,WAAW,CAACrlE,MAAM,CAAC,KAAO,SAAS,YAAcyhJ,EAAI57I,KAAK44M,SAASjmM,GAAG,CAAC,KAAOipI,EAAI0gE,gBAAgBz4I,MAAM,CAACp7E,MAAOmzJ,EAAI88D,UAA2B,kBAAE7nN,SAAS,SAAUu9L,GAAMxyC,EAAIlwE,KAAKkwE,EAAI88D,UAAW,oBAAqBtqB,IAAM/mH,WAAW,gCAAgC,CAAC7H,EAAG,WAAW,CAAClF,KAAK,UAAU,CAACshF,EAAIn9E,GAAG,UAAU,GAAGm9E,EAAIl9E,KAAKk9E,EAAIn9E,GAAG,KAAKe,EAAG,MAAM,CAACyP,YAAY,oBAAoB,CAACzP,EAAG,MAAM,CAACrlE,MAAM,CAAC,IAAM,qCAAqCyhJ,EAAIn9E,GAAG,eAAem9E,EAAI39E,GAAG29E,EAAI57I,KAAKi9M,wCAAwC,eAAerhE,EAAI39E,GAAG29E,EAAIkgE,kBAAmBlgE,EAAI8+D,YAAwC9+D,EAAI88D,UAAUwE,kBAAxCthE,EAAI88D,UAAUyE,YAA8C,gBAAgBvhE,EAAIn9E,GAAG,MAAQm9E,EAAI8+D,aAA2C,KAA5B9+D,EAAI88D,UAAUyE,WAAgD,OAA5BvhE,EAAI88D,UAAUyE,WACz3KvhE,EAAI8+D,aAAmD,KAApC9+D,EAAI88D,UAAUwE,mBAAgE,OAApCthE,EAAI88D,UAAUwE,kBAA6B19I,EAAG,MAAM,CAACyP,YAAY,sBAAsB,CAACzP,EAAG,MAAM,CAACyP,YAAY,gBAAgBgG,YAAY,CAAC,aAAa,MAAM,CAACzV,EAAG,OAAO,CAACo8E,EAAIn9E,GAAGm9E,EAAI39E,GAAG29E,EAAI57I,KAAKo9M,uCAAuCxhE,EAAIn9E,GAAG,KAAOm9E,EAAI8+D,YAAmW9+D,EAAIl9E,KAA1Vc,EAAG,YAAY,CAACrlE,MAAM,CAAC,YAAcyhJ,EAAI57I,KAAKyxM,kBAAkB5tI,MAAM,CAACp7E,MAAOmzJ,EAAI88D,UAAoB,WAAE7nN,SAAS,SAAUu9L,GAAMxyC,EAAIlwE,KAAKkwE,EAAI88D,UAAW,aAActqB,IAAM/mH,WAAW,yBAAyBu0E,EAAI19E,GAAI09E,EAAiB,eAAE,SAASltJ,GAAM,OAAO8wE,EAAG,YAAY,CAACz2E,IAAI2F,EAAKjG,MAAM0R,MAAM,CAAC,MAAQzL,EAAK4zM,MAAM,MAAQ5zM,EAAKjG,YAAW,GAAYmzJ,EAAIn9E,GAAG,KAAMm9E,EAAe,YAAEp8E,EAAG,YAAY,CAACrlE,MAAM,CAAC,YAAcyhJ,EAAI57I,KAAKyxM,kBAAkB5tI,MAAM,CAACp7E,MAAOmzJ,EAAI88D,UAA4B,mBAAE7nN,SAAS,SAAUu9L,GAAMxyC,EAAIlwE,KAAKkwE,EAAI88D,UAAW,qBAAsBtqB,IAAM/mH,WAAW,iCAAiCu0E,EAAI19E,GAAI09E,EAAiB,eAAE,SAASltJ,GAAM,OAAO8wE,EAAG,YAAY,CAACz2E,IAAI2F,EAAKjG,MAAM0R,MAAM,CAAC,MAAQzL,EAAK4zM,MAAM,MAAQ5zM,EAAKjG,YAAW,GAAGmzJ,EAAIl9E,MAAM,GAAGk9E,EAAIl9E,MAAM,GAAGk9E,EAAIl9E,KAAKk9E,EAAIn9E,GAAG,KAAKe,EAAG,MAAM,CAACyP,YAAY,cAAc,CAACzP,EAAG,MAAM,CAACyP,YAAY,iBAAiB,CAACzP,EAAG,OAAO,CAACo8E,EAAIn9E,GAAGm9E,EAAI39E,GAAG29E,EAAI57I,KAAKq9M,wCAAwCzhE,EAAIn9E,GAAG,KAAKe,EAAG,aAAa,CAACrlE,MAAM,CAAC,eAAe,sBAAsB,OAAS,OAAO,UAAY,QAAQ,QAAUyhJ,EAAI57I,KAAKs9M,oCAAoC,CAAC99I,EAAG,MAAM,CAACrlE,MAAM,CAAC,IAAM,0CAA0C,GAAGyhJ,EAAIn9E,GAAG,KAAOm9E,EAAI8+D,YAAoT9+D,EAAIl9E,KAA3Sc,EAAG,WAAW,CAACrlE,MAAM,CAAC,KAAO,SAAS,YAAcyhJ,EAAI57I,KAAK44M,SAASjmM,GAAG,CAAC,KAAOipI,EAAIygE,gBAAgBx4I,MAAM,CAACp7E,MAAOmzJ,EAAI88D,UAAmB,UAAE7nN,SAAS,SAAUu9L,GAAMxyC,EAAIlwE,KAAKkwE,EAAI88D,UAAW,YAAatqB,IAAM/mH,WAAW,wBAAwB,CAAC7H,EAAG,WAAW,CAAClF,KAAK,UAAU,CAACshF,EAAIn9E,GAAG,UAAU,GAAYm9E,EAAIn9E,GAAG,KAAMm9E,EAAe,YAAEp8E,EAAG,WAAW,CAACrlE,MAAM,CAAC,KAAO,SAAS,YAAcyhJ,EAAI57I,KAAK44M,SAASjmM,GAAG,CAAC,KAAOipI,EAAIygE,gBAAgBx4I,MAAM,CAACp7E,MAAOmzJ,EAAI88D,UAA2B,kBAAE7nN,SAAS,SAAUu9L,GAAMxyC,EAAIlwE,KAAKkwE,EAAI88D,UAAW,oBAAqBtqB,IAAM/mH,WAAW,gCAAgC,CAAC7H,EAAG,WAAW,CAAClF,KAAK,UAAU,CAACshF,EAAIn9E,GAAG,UAAU,GAAGm9E,EAAIl9E,KAAKk9E,EAAIn9E,GAAG,KAAKe,EAAG,MAAM,CAACyP,YAAY,oBAAoB,CAACzP,EAAG,MAAM,CAACrlE,MAAM,CAAC,IAAM,qCAAqCyhJ,EAAIn9E,GAAG,gBAAgBm9E,EAAI39E,GAAG29E,EAAI57I,KAAKi9M,wCAAwC,eAAerhE,EAAI39E,GAAG29E,EAAIkgE,kBAAmBlgE,EAAI8+D,YAAwC9+D,EAAI88D,UAAU6E,kBAAxC3hE,EAAI88D,UAAU8E,YAA8C,iBAAiB,OAAO5hE,EAAIl9E,SAC9+E,IDUpB,EACA,KACA,WACA,M,SEf8N,GCehO,CACE32E,KAAM,eACNmuB,MAAO,CACLmkM,YAAa,CAAEvuN,KAAMuL,OAAQ++L,UAAU,GACvCkkB,OAAQ,CAAExuN,KAAM5D,OAAQkuM,UAAU,IAEpC1sH,WAAY,CAAE+zI,aAAhB,IACEruJ,MAAO,CACLkrJ,OADJ,SACA,GAEM,OADA/vN,KAAKmuN,UAAYnxM,EAAEkqC,UAAUriD,GACtBA,IAGX0d,KAbF,WAcI,MAAO,CACL9M,KAAN,0BACM26M,QAASpwN,KAAK8vN,YACd3B,UAAWnuN,KAAK+vN,SAGpBtkL,QAAS,CACP0nL,iBADJ,SACA,GACMnzN,KAAKowN,QAAUhyN,GAGjBg1N,aALJ,WAMM,IAAN,8CACM,GAAN,EAAM,CACA,IAAN,GACQxtB,GAAIytB,EAAUztB,GACdxnM,KAAMi1N,EAAUC,WAChBC,iBAAkBF,EAAUG,iBAC5B9mB,IAAK2mB,EAAU3mB,IACfumB,UAAWI,EAAUJ,UACrBL,UAAWS,EAAUT,UACrBa,WAAYJ,EAAUI,YAExBzzN,KAAKq7E,MAAM,kBAAmB,CAC5Bq4I,WAAW,EACXC,OAAQ,6BACRp0L,MAAO0I,OAIb66C,QA5CF,WA6CI9iF,KAAKmuN,UAAYnxM,EAAEkqC,UAAUlnD,KAAK+vN,UCzCvB,I,OAXC,YACd,ICTW,WAAa,IAAiBt9G,EAATzyG,KAAgBqxE,eAAmB4D,EAAnCj1E,KAA0CugF,MAAMtL,IAAIw9B,EAAG,OAAOx9B,EAAG,MAAM,CAACyP,YAAY,wBAAwB,CAACzP,EAAG,eAAe,CAACphB,IAAI,kBAAkBjkD,MAAM,CAAC,UAAY,IAAI,eAAe,GAAG,wBAAwB,GAAG,YAA1N5P,KAA4O8vN,YAAY,OAAxP9vN,KAAqQmuN,UAAU,UAAY,gBAAgB/lM,GAAG,CAAC,WAA/SpoB,KAAgUmzN,qBAAqB,KACjW,IDWpB,EACA,KACA,WACA,M,SEfmO,GC2CrO,CACE31N,KAAM,oBACNmuB,MAAO,CACLmkM,YAAa,CAAEvuN,KAAMuL,OAAzB,aACIijN,OAAQ,CAAExuN,KAAM5D,OAApB,cAEEwhF,WAAY,CAAE+zI,aAAhB,IACEruJ,MAAO,CACLkrJ,OADJ,SACA,GAGM,OAFA/vN,KAAK4zN,WAAa52M,EAAEkqC,UAAUriD,GAC9B7E,KAAK49E,WACE/4E,IAGX0d,KAdF,WAeI,MAAO,CACL9M,KAAMyyL,OAAOC,IAAIC,SAASC,MAC1BwrB,QAAS,GACTC,iBAAiB,EACjBC,WAAY,CAClB,kDACA,qDAEMH,WAAY,KAGhBnoL,QAAS,CAEPuoL,gBAFJ,SAEA,GACM,IAAN,kBACA,oBAEA,UADA,yBACA,KACA,mBACA,OAGM,MAAO,CAAC,IAFd,yDAEA,IADA,2DAIIZ,aAdJ,WAeM,GAAN,4BACQpzN,KAAK6mN,SAAS3+M,MAAMuN,KAAKw+M,4BAD3B,CAIA,IAAN,yBACA,yBACA,eACQ,EAAR,gBAEM,IAAN,WACA,aACA,qBACM,GAAN,MAAM,CAIA,IAAN,8CACM,GAAN,EAAM,CACA,IAAN,GACQruB,GAAIytB,EAAUztB,GACdsuB,KAAMC,EACNC,OAAQC,EACRC,cAAeC,EACf5nK,OAAQ3sD,KAAK4zN,WAAyB,aAEtCY,iBAAkB,EAClBp2N,KAAMi1N,EAAUoB,qBAChBC,iBAAiB,EACjBnB,iBAAkBF,EAAUsB,6BAC5BjoB,IAAK2mB,EAAUuB,YACf3B,UAAWI,EAAUL,kBACrBJ,UAAWS,EAAUV,kBACrBc,WAAYJ,EAAUwB,oBAExB70N,KAAKq7E,MAAM,kBAAmB,CAC5Bq4I,WAAW,EACXC,OAAQ,kCACRp0L,MAAO0I,UAxBPjoC,KAAK6mN,SAAS3+M,MAAMuN,KAAKw+M,0BA4B7Br2I,SAxDJ,WA0DM,GADA59E,KAAK4zN,WAAa52M,EAAEkqC,UAAUlnD,KAAK+vN,QACzC,8BACQ,IAAR,wCACA,uCACQ/vN,KAAK6zN,QAAU,CAAC,IAAIvpN,KAAK,EAAjC,UACA,sBACQtK,KAAK8vN,YAAc9vN,KAAK4zN,WAAiC,0BAEzD5zN,KAAK8vN,Y9BrImB,E8BsIxB9vN,KAAK4zN,WAAyB,aAAI,IAIxC5wI,QAhGF,WAiGIhjF,KAAK49E,aCzHM,I,OAXC,YACd,ICTW,WAAa,IAAIyzE,EAAIrxJ,KAASyyG,EAAG4+C,EAAIhgF,eAAmB4D,EAAGo8E,EAAI9wE,MAAMtL,IAAIw9B,EAAG,OAAOx9B,EAAG,MAAM,CAACyP,YAAY,6BAA6B,CAACzP,EAAG,eAAe,CAACyV,YAAY,CAAC,OAAS,oBAAoB,MAAQ,QAAQ96E,MAAM,CAAC,aAAa,iBAAiB,CAACqlE,EAAG,MAAM,CAACyP,YAAY,gBAAgBgG,YAAY,CAAC,aAAa,MAAM,CAAC2mE,EAAIn9E,GAAGm9E,EAAI39E,GAAG29E,EAAI57I,KAAKq/M,eAAezjE,EAAIn9E,GAAG,KAAKe,EAAG,iBAAiB,CAACrlE,MAAM,CAAC,OAAS,QAAQ,YAAcyhJ,EAAI57I,KAAKs/M,gCAAgC3sM,GAAG,CAAC,OAASipI,EAAI2jE,iBAAiB17I,MAAM,CAACp7E,MAAOmzJ,EAAIwiE,QAAQ,GAAIvtN,SAAS,SAAUu9L,GAAMxyC,EAAIlwE,KAAKkwE,EAAIwiE,QAAS,EAAGhwB,IAAM/mH,WAAW,gBAAgBu0E,EAAIn9E,GAAG,KAAKe,EAAG,OAAO,CAACyV,YAAY,CAAC,OAAS,UAAU,CAAC2mE,EAAIn9E,GAAG,SAASm9E,EAAIn9E,GAAG,KAAKe,EAAG,iBAAiB,CAACrlE,MAAM,CAAC,OAAS,QAAQ,YAAcyhJ,EAAI57I,KAAKw/M,8BAA8B7sM,GAAG,CAAC,OAASipI,EAAI6jE,eAAe57I,MAAM,CAACp7E,MAAOmzJ,EAAIwiE,QAAQ,GAAIvtN,SAAS,SAAUu9L,GAAMxyC,EAAIlwE,KAAKkwE,EAAIwiE,QAAS,EAAGhwB,IAAM/mH,WAAW,gBAAgBu0E,EAAIn9E,GAAG,KAAKe,EAAG,MAAM,CAACyP,YAAY,iBAAiB2sE,EAAIn9E,GAAG,KAAKe,EAAG,MAAM,CAACyP,YAAY,iBAAiB,CAAC2sE,EAAIn9E,GAAGm9E,EAAI39E,GAAG29E,EAAI57I,KAAKk3C,WAAW0kG,EAAIn9E,GAAG,KAAKe,EAAG,MAAM,CAACyP,YAAY,eAAe2sE,EAAI19E,GAAI09E,EAAc,YAAE,SAASltJ,GAAM,OAAO8wE,EAAG,MAAM,CAACz2E,IAAI2F,EAAKjG,MAAMwmF,YAAY,cAAcjK,MAAM,CAAE,qBAAsB42E,EAAIuiE,WAAWuB,eAAiBhxN,EAAKjG,OAAQkqB,GAAG,CAAC,MAAQ,SAASkqD,GAAQ++E,EAAIuiE,WAAWuB,aAAehxN,EAAKjG,SAAS,CAACmzJ,EAAIn9E,GAAG,aAAam9E,EAAI39E,GAAGvvE,EAAK4zM,OAAO,iBAAgB,GAAG1mD,EAAIn9E,GAAG,KAAKe,EAAG,MAAM,CAACyP,YAAY,iBAAiB2sE,EAAIn9E,GAAG,KAAKe,EAAG,eAAe,CAACphB,IAAI,kBAAkBjkD,MAAM,CAAC,UAAY,IAAI,OAASyhJ,EAAIuiE,WAAW,eAAe,GAAG,YAAcviE,EAAIy+D,YAAY,UAAY,kBAAkBz+D,EAAIn9E,GAAG,KAAKe,EAAG,MAAM,CAACyP,YAAY,kBAAkB,IAAI,KAC/qD,IDWpB,EACA,KACA,WACA,M,8KEf6I,GCahI,CACblnF,KAAM,mBACNmuB,MAAO,CACL0nM,UAAW,CAAE9xN,KAAMuL,OAAQ++L,UAAU,GACrC6gB,UAAW,CAAEnrN,KAAMoqE,QAASkgI,UAAU,GACtC0S,UAAW,CAAEh9M,KAAMuL,OAAQ++L,UAAU,IAEvC1sH,WAAY,CACVi2I,mBAAiBC,iBAAehJ,iBAAe6G,gBAC/CoC,gBAAcC,gBAAcC,sBAE9B3wJ,MAAM,CACJwuJ,UADI,SACM/mJ,GAGR,OAFAtsE,KAAKy1N,qBAAqBnpJ,EAAKs5H,IAC/B5lM,KAAK01N,sBACEppJ,IAGX/pD,KAlBa,WAmBX,MAAO,CACL9M,KAAKyyL,OAAOC,IAAIC,SAASC,MACzBstB,cAAe31N,KAAKqzN,UACpBhD,iBlClC0B,EkCkCRC,elCjCM,EkCiCUC,mBlChCN,EkCiC5BlG,2BAAyBJ,qBACzBO,qBAAmBC,qBAAmBC,0BACtCkL,YAAa,CACZ,CAACp4N,KAAMiY,KAAKogN,4BAA6BhxN,IAAK,KAAMogB,KAAM,KACzDyrM,OAAQ,0CACT,CAAClzN,KAAMiY,KAAKqgN,6BAA8BjxN,IAAK,KAAMogB,KAAM,IAC1DyrM,OAAQ,4CACT,CAAClzN,KAAMiY,KAAKo0M,uBAAwBhlN,IAAK,KAAMogB,KAAM,MACpDyrM,OAAQ,2CACT,CAAClzN,KAASiY,KAAK2kM,QAAd,IAAyB3kM,KAAKomB,KAAQh3B,IAAK,KAAMogB,KAAM,MACvDyrM,OAAQ,yCACT,CAAClzN,KAAMiY,KAAKsgN,sBAAuBlxN,IAAK,KAAMogB,KAAM,KACnDyrM,OAAQ,2CAEVZ,YlCjD0B,EkCkD1BkG,QAAQ,EACRC,YAAa,GACbC,iBAAiB,EACjBC,WAAY,OAGhB/kM,SAAU,CAETglM,WAFS,WAGR,MAAO,CAAC,EAAE,EAAE,IAAIl4K,SAASl+C,KAAK21N,cAAL,YAG1BU,gBANS,WAOR,QAAIr2N,KAAKo2N,aAAcp2N,KAAK21N,cAAL,clCvCS,gCkC0C7B31N,KAAK21N,cAAL,QACO,CAAC,EAAG,IAAIz3K,SAASl+C,KAAK21N,cAAL,WlC/CU,kCkCiDlC31N,KAAK21N,cAAL,QACO,CAAC,GAAGz3K,SAASl+C,KAAK21N,cAAL,WAKhBtL,GAAwBrqN,KAAK21N,cAAcjyL,QAA3C,mBAGT/qB,QAAS,CACP2vL,WADO,SACIlsL,GACT,OAAKA,GAAU,KAALA,EAGD29L,MAAM39L,GAAG49L,OAAUE,eAAnB,aAFA,MAKXoc,cARO,SAQOt3N,GACZ,IAAIA,EAAK,MAAO,KAChB,IAAMmvC,EAAMnvC,EAAEmK,MAAM,IACpB,OAAIglC,EAAIxsC,QAAU,EACT,IAAM3C,GAEbmvC,EAAI9mC,OAAO,EAAG,EAAG,KACjB8mC,EAAI9mC,OAAO,EAAG,EAAG,KACV,IAAM8mC,EAAIn/B,KAAK,MAG1BunN,aAnBO,SAmBMn6M,GACX,OAAOA,EAAI3G,KAAK+gN,2BAA6B/gN,KAAKghN,gCAGtDhrL,QAAS,CAEPirL,cAFO,SAEOluM,GACC,gBAAVA,GACAxoB,KAAK22N,SAAS,SAInBA,SARO,SAQEp1N,GAGP,OAFAvB,KAAKg2N,QAAS,EACdh2N,KAAK42N,mBACGr1N,GACN,IAAK,OACHvB,KAAKi2N,YAAczL,GACnB,MAEF,IAAK,OACHxqN,KAAKi2N,YAAcxL,GACnB,MAEF,IAAK,YACHzqN,KAAKi2N,YAAcvL,KAQzByI,iBA7BO,SA6BU/0N,GACf4B,KAAK8vN,YAAc1xN,GAGrBy4N,YAjCO,WAkCL72N,KAAKwgF,MAAMs2I,SAASD,eAGtBE,cArCO,WAsCL,OAAO/2N,KAAKi2N,aACV,KAAKxL,GACHzqN,KAAKwgF,MAAMw2I,WAAW5D,eACtB,MAEF,KAAK1I,GACH1qN,KAAKwgF,MAAMy2I,gBAAgB7D,iBAMjC8D,YAlDO,WAmDLl3N,KAAKm3N,eAAe,CAClBzD,WAAW,EACXC,OAAQ3zN,KAAKo2N,WAAa,4BAA4B,6BACtD72L,MAAO,CAACqmK,GAAI5lM,KAAK21N,cAAL,GAA0Bv3N,KAAM4B,KAAK8vN,gBAIrDsH,gBA1DO,SA0DSvyN,GACd7E,KAAKq3N,iBAAiB,CAACC,WAAYzyN,EAAM,EAAI,KAG/CwyN,iBA9DO,SA8DU93L,GACZv/B,KAAKg2N,SAAQh2N,KAAKk2N,iBAAkB,GACnCl2N,KAAKg2N,QAAQx9I,QAAQkuI,cACzBzmB,OAAOwC,KAAK,gCAAZ,IACEmD,GAAI5lM,KAAK21N,cAAL,IAA6Bp2L,IAAQ6E,QAAQ,SAASy9B,GACvDA,EAAIt/C,MACLviB,KAAK6mN,SAAS,CAAEpmM,QAAShL,KAAK8hN,eAAgBh2N,KAAM,aAErD9C,KAAKuB,OAAO6c,KAAK,SAASA,GAC1B7c,KAAK6mN,SAAS3+M,MAAMuN,KAAKoH,EAAK1U,OAC9B1J,KAAKuB,OAAOkyL,IAAI,WAChB15G,QAAQsuI,aACR9mN,KAAKk2N,iBAAkB,EACvBl2N,KAAKq7E,MAAM,kBAAmB,CAC7Bp+D,MAAM,EACNu6M,MAAOx3N,KAAK21N,cAAL,GACP8B,SAAUz3N,KAAKg2N,UAEhBv3N,KAAKuB,QAOVm3N,eAvFO,SAuFQtyN,GACTA,EAAI6uN,YAAW1zN,KAAKk2N,iBAAkB,GACvCrxN,EAAI6uN,WAAWl7I,QAAQkuI,cACvB7hN,EAAI6uN,WAAa1zN,KAAKg2N,QAAQh2N,KAAK62N,cACtC52B,OAAOwC,KAAK59L,EAAI8uN,OAAQ9uN,EAAI06B,OAAO6E,QAAQ,SAASy9B,GAC/CA,EAAIt/C,MACLviB,KAAK6mN,SAAS,CAAEpmM,QAAShL,KAAK8hN,eAAgBh2N,KAAM,aAErD9C,KAAKuB,OAAO6c,KAAK,SAASA,GAC1B7c,KAAK6mN,SAAS3+M,MAAMuN,KAAKoH,EAAK1U,OAC9B1J,KAAKuB,OAAOkyL,IAAI,WAChB15G,QAAQsuI,aACR9mN,KAAKk2N,iBAAkB,EACvBl2N,KAAKq7E,MAAM,kBAAmB,CAC7Bp+D,MAAM,EACNu6M,MAAOx3N,KAAK21N,cAAL,GACP8B,SAAUz3N,KAAKg2N,UAEhBv3N,KAAKuB,QAGV03N,cA5GO,WA4GS,WACd13N,KAAK23N,SAASliN,KAAKmiN,0BAA2BniN,KAAKoiN,mBAAoB,CACrEC,kBAAmBriN,KAAKsiN,YACxBC,iBAAkBviN,KAAKwiN,WACvB12N,KAAM,YACLub,MAAK,WACN,EAAKq6M,eAAe,CAClBzD,WAAW,EACXC,OAAQ,qCACRp0L,MAAO,CAACqmK,GAAI,EAAK+vB,cAAL,SAEb70M,OAAM,gBAIX20M,qBA3HO,SA2HcyC,EAAMj7M,GACzBA,GAAQu7D,QAAQkuI,cAChBzmB,OAAOwC,KAAK,0CACZ,CAAEmD,GAAIsyB,IAAQ9zL,QAAQ,SAASy9B,GAC1BA,EAAIt/C,OACLhC,QAAQi2I,IAAI30F,EAAIt/C,MAChBviB,KAAK21N,cAAgB34M,EAAEkqC,UAAU2a,EAAIt/C,MACrCviB,KAAK41N,YAAY,GAAjB,IAA6B/zJ,EAAIt/C,KAAJ,OAAqB,IAClDviB,KAAK41N,YAAY,GAAjB,IAA6B/zJ,EAAIt/C,KAAJ,SAAuB,IACpDviB,KAAK41N,YAAY,GAAjB,IAA6B/zJ,EAAIt/C,KAAJ,cAA4B,IACzDviB,KAAK41N,YAAY,GAAjB,IAAmD,MAArB/zJ,EAAIt/C,KAAJ,MAA4Bs/C,EAAIt/C,KAAJ,MACrDza,KAAK8qB,MAAMivC,EAAIt/C,KAAJ,KAAmB,GAAK,KAAO,KAAK2+F,QAAQ,GAAI,IAChElhH,KAAK41N,YAAY,GAAjB,IAA6B/zJ,EAAIt/C,KAAJ,kBAAgC,IAC7DviB,KAAK8vN,YAAcjuJ,EAAIt/C,KAAJ,WACnBviB,KAAKu+M,UAAY18I,EAAIt/C,KAAJ,WACjBviB,KAAK21N,cAAL,WAAmChqJ,QAAQ3rE,KAAK21N,cAAL,YAC3C31N,KAAK21N,cAAL,iBAAyChqJ,QAAQ3rE,KAAK21N,cAAL,oBAEnDl3N,KAAKuB,OAAO6c,KAAK,SAASA,GAC1B7c,KAAK6mN,SAAS3+M,MAAM2U,EAAK1U,MACzB1J,KAAKuB,OAAOkyL,IAAI,WAChB15G,QAAQsuI,cACRroN,KAAKuB,QAGTg0N,gBApJO,SAoJSmE,EAAWC,EAAa//L,GAEtC,IAAIggM,GAA+B,GAAZF,EAAiBC,EAAc//L,GAAY,KAC9DigM,EAAUxwN,KAAKq4C,MAAMk4K,EAAkB,IACvCE,EAAYF,EAAkB,GAKlC,OAH8BvrN,OAAOqrN,GAAWzrK,SAAS,EAAG,KAAtD,IAA8D5/C,OAAOsrN,GAAa1rK,SAAS,EAAG,KAGpG,OAF4B5/C,OAAOwrN,GAAS5rK,SAAS,EAAG,KAAlD,IAA0D5/C,OAAOyrN,GAAW7rK,SAAS,EAAG,OAKhGgpK,oBAhKO,WAgKe,WACpB11N,KAAK42N,mBACL,IAAMj3N,EAAU,CACd2mC,SAAU,SACV9vB,SAAU,YACVirB,SAAU+2L,QAAQt6K,SAAS,OAAS,MAAM,KAC1Cu6K,gBAAiB,MAGnBz4N,KAAKm2N,WAAauC,KAAKC,QAAQH,QAAS74N,GAExCK,KAAKm2N,WAAW/tM,GAAG,WAAW,WAC5B7H,QAAQi2I,IAAI,uBAAyB,EAAK68D,UAAL,IAErC,EAAK8C,WAAWyC,UAAhB,4BAAsD,EAAKvF,UAAL,OAGxDrzN,KAAKm2N,WAAW/tM,GAAG,WAAW,SAACywM,EAAOp4M,GACpCF,QAAQi2I,IAAI,iBAAmB,EAAK68D,UAAL,GAAuB,QACtD,EAAKoC,qBAAqB,EAAKpC,UAAL,QAI9BuD,iBAvLO,WAwLF52N,KAAKm2N,aACNn2N,KAAKm2N,WAAWhvN,MAChBnH,KAAKm2N,WAAa,KAClB51M,QAAQi2I,IAAI,gBAIhBsiE,aA/LO,WAgML94N,KAAK01N,wBAGT1yI,QA5Ra,WA6RXhjF,KAAKy1N,qBAAqBz1N,KAAKqzN,UAAL,IAAqB,IAEjDvwI,QA/Ra,WAgSX9iF,KAAK01N,uBAEPj2B,cAlSa,WAmSXz/L,KAAK42N,qBC7RM,I,OAXC,YACd,ICTW,WAAa,IAAIvlE,EAAIrxJ,KAASyyG,EAAG4+C,EAAIhgF,eAAmB4D,EAAGo8E,EAAI9wE,MAAMtL,IAAIw9B,EAAG,OAAOx9B,EAAG,MAAM,CAACyP,YAAY,cAAc,CAACzP,EAAG,MAAM,CAACyP,YAAY,uBAAuB,CAACzP,EAAG,MAAM,CAACyP,YAAY,iBAAiB,CAACzP,EAAG,MAAM,CAACrlE,MAAM,CAAC,IAAM,0CAA0CyhJ,EAAIn9E,GAAG,WAAWm9E,EAAI39E,GAAG29E,EAAIskE,cAAcn4N,MAAM,YAAY6zJ,EAAIn9E,GAAG,KAAKe,EAAG,MAAM,CAACyP,YAAY,mBAAmB,CAACzP,EAAG,MAAM,CAACyP,YAAY,cAAcgG,YAAY,CAAC,MAAQ,QAAQ,CAACzV,EAAG,OAAO,CAACo8E,EAAIn9E,GAAGm9E,EAAI39E,GAAG29E,EAAI57I,KAAKsjN,+BAA+B1nE,EAAIn9E,GAAG,KAAKe,EAAG,OAAO,CAAC3wD,MAAM,CAAEuyF,MAAOw6C,EAAIg5D,wBAAwBh5D,EAAIskE,cAAcjyL,QAAiB,UAAK,CAAC2tH,EAAIn9E,GAAG,mBAAmBm9E,EAAI39E,GAAI,GAAM29E,EAAI57I,KAAK47I,EAAIskE,cAAcjyL,SAAW,mBAAmB2tH,EAAI39E,GAAG29E,EAAIskE,cAAczJ,WAAc,IAAO76D,EAAI57I,KAAK47I,EAAIskE,cAAczJ,YAAe,IAAK,IAAI,kBAAkB76D,EAAIn9E,GAAG,KAAKe,EAAG,MAAM,CAACyP,YAAY,cAAcgG,YAAY,CAAC,MAAQ,QAAQ,CAACzV,EAAG,OAAO,CAACo8E,EAAIn9E,GAAGm9E,EAAI39E,GAAG29E,EAAI57I,KAAKujN,wBAAwB,QAAQ3nE,EAAIn9E,GAAGm9E,EAAI39E,GAAG29E,EAAIskE,cAAc/vB,IAAI,eAAev0C,EAAIn9E,GAAG,KAAKe,EAAG,MAAM,CAACyP,YAAY,cAAcgG,YAAY,CAAC,MAAQ,MAAM,aAAa,WAAW,CAACzV,EAAG,OAAO,CAACo8E,EAAIn9E,GAAGm9E,EAAI39E,GAAG29E,EAAI57I,KAAKwjN,2BAA2B,QAAQ5nE,EAAIn9E,GAAGm9E,EAAI39E,GAAG29E,EAAIskE,cAAcr8I,OAAS,MAAM,eAAe+3E,EAAIn9E,GAAG,KAAKe,EAAG,MAAM,CAACyP,YAAY,cAAcgG,YAAY,CAAC,MAAQ,MAAM,aAAa,WAAW,CAACzV,EAAG,OAAO,CAACo8E,EAAIn9E,GAAGm9E,EAAI39E,GAAG29E,EAAI57I,KAAKyjN,8BAA8B,QAAQ7nE,EAAIn9E,GAAGm9E,EAAI39E,GAAG29E,EAAIt9E,GAAG,gBAAPs9E,CAAwBA,EAAIskE,cAAcwD,WAAW,eAAe9nE,EAAIn9E,GAAG,KAAKe,EAAG,MAAM,CAACyP,YAAY,cAAcgG,YAAY,CAAC,MAAQ,MAAM,aAAa,WAAW,CAACzV,EAAG,OAAO,CAACo8E,EAAIn9E,GAAGm9E,EAAI39E,GAAG29E,EAAI57I,KAAK2jN,gCAAgC,QAAQ/nE,EAAIn9E,GAAGm9E,EAAI39E,GAAG29E,EAAIt9E,GAAG,aAAPs9E,CAAqBA,EAAIskE,cAAcxJ,aAAa,eAAe96D,EAAIn9E,GAAG,KAAKe,EAAG,MAAM,CAACyP,YAAY,cAAcgG,YAAY,CAAC,MAAQ,MAAM,aAAa,QAAQ,CAACzV,EAAG,OAAO,CAACo8E,EAAIn9E,GAAGm9E,EAAI39E,GAAG29E,EAAI57I,KAAK4jN,oBAAoB,QAAQhoE,EAAIn9E,GAAG,KAAKe,EAAG,OAAO,CAAC3wD,MAAM,CAAEuyF,MAAOw6C,EAAIskE,cAAc2D,yBAA2B,UAAU,YAAa,CAACjoE,EAAIn9E,GAAG,eAAem9E,EAAI39E,GAAG29E,EAAIt9E,GAAG,eAAPs9E,CAAuBA,EAAIskE,cAAc2D,2BAA2B,kBAAkBjoE,EAAIn9E,GAAG,KAAKe,EAAG,MAAM,CAACyP,YAAY,cAAcgG,YAAY,CAAC,MAAQ,MAAM,aAAa,QAAQ,CAACzV,EAAG,OAAO,CAACo8E,EAAIn9E,GAAGm9E,EAAI39E,GAAG29E,EAAI57I,KAAK8jN,eAAe,QAAQloE,EAAIn9E,GAAG,KAAKe,EAAG,OAAO,CAAC3wD,MAAM,CAAEuyF,MAAOw6C,EAAIskE,cAAc6D,oBAAsB,UAAU,YAAa,CAACnoE,EAAIn9E,GAAG,eAAem9E,EAAI39E,GAAG29E,EAAIt9E,GAAG,eAAPs9E,CAAuBA,EAAIskE,cAAc6D,sBAAsB,sBAAsBnoE,EAAIn9E,GAAG,KAAKe,EAAG,MAAM,CAACyP,YAAY,eAAe2sE,EAAIn9E,GAAG,KAAKe,EAAG,MAAM,CAACyP,YAAY,eAAe,CAACzP,EAAG,MAAM,CAACyP,YAAY,gBAAgBpgE,MAAM,CAAG+M,MAAOggI,EAAIq7D,UAAY,QAAU,UAAY,CAACz3I,EAAG,MAAM,CAACyP,YAAY,mBAAmB,CAACzP,EAAG,MAAM,CAACyP,YAAY,kBAAkB,CAACzP,EAAG,MAAM,CAACyP,YAAY,YAAY2sE,EAAI19E,GAAI09E,EAAe,aAAE,SAASltJ,GAAM,OAAO8wE,EAAG,MAAM,CAACz2E,IAAI2F,EAAK3G,KAAKknF,YAAY,YAAY,CAACzP,EAAG,MAAM,CAACyP,YAAY,gBAAgB,CAAC2sE,EAAIn9E,GAAG,uBAAuBm9E,EAAI39E,GAAGvvE,EAAKU,KAAK,yBAAyBowE,EAAG,OAAO,CAACo8E,EAAIn9E,GAAGm9E,EAAI39E,GAAGvvE,EAAK8gB,WAAWosI,EAAIn9E,GAAG,KAAKe,EAAG,MAAM,CAACyP,YAAY,eAAe,CAAC2sE,EAAIn9E,GAAGm9E,EAAI39E,GAAGvvE,EAAK3G,SAAS6zJ,EAAIn9E,GAAG,KAAKe,EAAG,MAAM,CAACrlE,MAAM,CAAC,IAAMzL,EAAKusN,OAAO,IAAM,WAAU,GAAGr/D,EAAIn9E,GAAG,KAAKe,EAAG,MAAM,CAACyP,YAAY,eAAet8D,GAAG,CAAC,MAAQ,SAASkqD,GAAQ,OAAO++E,EAAIslE,SAAS,WAAW,CAAC1hJ,EAAG,MAAM,CAACrlE,MAAM,CAAC,IAAM,uCAAuC,IAAM,MAAMyhJ,EAAIn9E,GAAG,mBAAmBm9E,EAAI39E,GAAG29E,EAAI57I,KAAKgkN,uBAAuB,oBAAoBpoE,EAAIn9E,GAAG,KAAKe,EAAG,MAAM,CAACyP,YAAY,eAAe,CAACzP,EAAG,MAAM,CAACyP,YAAY,qBAAqB,CAAC2sE,EAAIn9E,GAAGm9E,EAAI39E,GAAG29E,EAAI57I,KAAKikN,kCAAkCroE,EAAIn9E,GAAG,KAAKe,EAAG,MAAM,CAACyP,YAAY,sBAAsB,CAACzP,EAAG,MAAM,CAACyP,YAAY,cAAc,CAAC2sE,EAAIn9E,GAAG,yBAAyBm9E,EAAI39E,GAAG29E,EAAI57I,KAAKkkN,2BAA2B,0BAA0B1kJ,EAAG,aAAa,CAACrlE,MAAM,CAAC,eAAe,sBAAsB,OAAS,OAAO,UAAY,QAAQ,QAAUyhJ,EAAI57I,KAAKmkN,yBAAyB,CAAC3kJ,EAAG,MAAM,CAACrlE,MAAM,CAAC,IAAM,0CAA0C,GAAGyhJ,EAAIn9E,GAAG,KAAKe,EAAG,YAAY,CAACrlE,MAAM,CAAC,eAAe,UAAU,iBAAiB,WAAWwY,GAAG,CAAC,OAASipI,EAAI+lE,iBAAiB99I,MAAM,CAACp7E,MAAOmzJ,EAAIskE,cAAwB,WAAErvN,SAAS,SAAUu9L,GAAMxyC,EAAIlwE,KAAKkwE,EAAIskE,cAAe,aAAc9xB,IAAM/mH,WAAW,+BAA+B,OAAOu0E,EAAIn9E,GAAG,KAAKe,EAAG,MAAM,CAACyP,YAAY,iBAAiBpgE,MAAM,CAAE8N,WAAYi/H,EAAIq7D,UAAY,OAAO,SAAU,CAACz3I,EAAG,MAAM,CAACyP,YAAY,cAAc,CAACzP,EAAG,gBAAgB,CAACrlE,MAAM,CAAC,MAAQyhJ,EAAIskE,kBAAkB,GAAGtkE,EAAIn9E,GAAG,KAAKe,EAAG,YAAY,CAACyP,YAAY,aAAajK,MAAM,CACl/I,aAAc42E,EAAI+kE,WAClB,WAAY/kE,EAAI+kE,WAChB,eAAgB/kE,EAAIglE,iBACpBzmN,MAAM,CAAC,KAAO,SAAS,SAAWyhJ,EAAIglE,iBAAiBjuM,GAAG,CAAC,MAAQipI,EAAI6lE,cAAc,CAACjiJ,EAAG,OAAO,CAACo8E,EAAIn9E,GAAGm9E,EAAI39E,GAAI29E,EAAI+kE,WAA2C/kE,EAAI57I,KAAKokN,kBAAvCxoE,EAAI57I,KAAKqkN,0BAAuD,KAAKzoE,EAAIn9E,GAAG,KAAKe,EAAG,eAAe,CAACrlE,MAAM,CAAC,YAAcyhJ,EAAIy+D,YAAY,UAAY,cAAc,UAAYz+D,EAAIq7D,UAAY,IAAM,KAAKtkM,GAAG,CAAC,WAAaipI,EAAIqlE,cAAc,WAAarlE,EAAI8hE,oBAAoB9hE,EAAIn9E,GAAG,KAAKe,EAAG,MAAM,CAACyP,YAAY,oBAAoB,CAACzP,EAAG,MAAM,CAACyP,YAAY,kBAAkBt8D,GAAG,CAAC,MAAQ,SAASkqD,GAAQ,OAAO++E,EAAIslE,SAAS,gBAAgB,CAACtlE,EAAIn9E,GAAG,eAAem9E,EAAI39E,GAAG29E,EAAI57I,KAAKskN,yBAAyB,gBAAgB9kJ,EAAG,MAAM,CAACyP,YAAY,aAAa90E,MAAM,CAAC,IAAM,yCAAyCyhJ,EAAIn9E,GAAG,KAAMm9E,EAAIskE,cAA0B,aAAE1gJ,EAAG,MAAM,CAACyP,YAAY,iBAAiB90E,MAAM,CAAC,IAAM,qCAAqCwY,GAAG,CAAC,MAAQipI,EAAIqmE,iBAAiBrmE,EAAIl9E,KAAKk9E,EAAIn9E,GAAG,KAAMm9E,EAAIskE,cAA0B,aAAE1gJ,EAAG,MAAM,CAACA,EAAG,MAAM,CAACyP,YAAY,kBAAkB,CAAC2sE,EAAIn9E,GAAG,iBAAiBm9E,EAAI39E,GAAG29E,EAAI2iE,gBACjhC3iE,EAAIskE,cAAcxB,cAClB9iE,EAAIskE,cAActB,gBAClBhjE,EAAIskE,cAAcqE,wBAAwB,mBAAmB/kJ,EAAG,OAAO,CAACo8E,EAAIn9E,GAAGm9E,EAAI39E,GAAG29E,EAAI57I,KAAK47I,EAAI44D,kBAAkB54D,EAAIskE,cAAcR,qBAAqB9jE,EAAIn9E,GAAG,KAAKe,EAAG,MAAM,CAACyP,YAAY,iBAAiB,CAACzP,EAAG,MAAM,CAACyP,YAAY,YAAY,CAAC2sE,EAAIn9E,GAAGm9E,EAAI39E,GAAG29E,EAAI57I,KAAKu8M,2BAA2B,sBAAsB/8I,EAAG,OAAO,CAACo8E,EAAIn9E,GAAGm9E,EAAI39E,GAAG29E,EAAI57I,KAAM,2BAA8B47I,EAAIskE,cAAkC,gCAActkE,EAAIl9E,KAAKk9E,EAAIn9E,GAAG,KAAOm9E,EAAIskE,cAAcR,aAAuK9jE,EAAIl9E,KAA7Jc,EAAG,MAAM,CAACyP,YAAY,oBAAoB,CAAC2sE,EAAIn9E,GAAG,eAAem9E,EAAI39E,GAAG29E,EAAI57I,KAAK47I,EAAI44D,kBAAkB54D,EAAIskE,cAAcR,gBAAgB,kBAA2B9jE,EAAIn9E,GAAG,KAAKe,EAAG,YAAY,CAACphB,IAAI,WAAWjkD,MAAM,CAAC,QAAUyhJ,EAAI2kE,OAAO,mBAAmB,GAAG,MAAQ3kE,EAAI4kE,YAAY,UAAY,OAAO7tM,GAAG,CAAC,iBAAiB,SAASkqD,GAAQ++E,EAAI2kE,OAAO1jJ,GAAQ,OAAS++E,EAAIynE,eAAe,CAAC7jJ,EAAG,MAAM,CAACzK,WAAW,CAAC,CAAChtE,KAAK,UAAUoqF,QAAQ,YAAY1pF,MAAOmzJ,EAAmB,gBAAEv0E,WAAW,oBAAoB4H,YAAY,gBAAgB,CAAE2sE,EAAI2kE,QAAU3kE,EAAI4kE,cAAgB5kE,EAAIm5D,kBAAmBv1I,EAAG,eAAe,CAACrlE,MAAM,CAAC,OAASyhJ,EAAIskE,eAAevtM,GAAG,CAAC,aAAeipI,EAAIgmE,iBAAiB,gBAAkBhmE,EAAI8lE,kBAAkB9lE,EAAIl9E,KAAKk9E,EAAIn9E,GAAG,KAAMm9E,EAAI2kE,QAAU3kE,EAAI4kE,cAAgB5kE,EAAIo5D,kBAAmBx1I,EAAG,eAAe,CAACphB,IAAI,aAAajkD,MAAM,CAAC,OAASyhJ,EAAIskE,cAAc,YAActkE,EAAIy+D,aAAa1nM,GAAG,CAAC,gBAAkBipI,EAAI8lE,kBAAkB9lE,EAAIl9E,KAAKk9E,EAAIn9E,GAAG,KAAMm9E,EAAI2kE,QAAU3kE,EAAI4kE,cAAgB5kE,EAAIq5D,uBAAwBz1I,EAAG,oBAAoB,CAACphB,IAAI,kBAAkBjkD,MAAM,CAAC,OAASyhJ,EAAIskE,cAAc,YAActkE,EAAIskE,cAAclB,sBAAsBrsM,GAAG,CAAC,gBAAkBipI,EAAI8lE,kBAAkB9lE,EAAIl9E,KAAKk9E,EAAIn9E,GAAG,KAAMm9E,EAAI4kE,cAAgB5kE,EAAIm5D,kBAAmBv1I,EAAG,MAAM,CAACyP,YAAY,mBAAmB,CAACzP,EAAG,YAAY,CAAC7sD,GAAG,CAAC,MAAQipI,EAAIwlE,cAAc,CAACxlE,EAAIn9E,GAAGm9E,EAAI39E,GAAG29E,EAAI57I,KAAKwiN,eAAe5mE,EAAIn9E,GAAG,KAAKe,EAAG,YAAY,CAACrlE,MAAM,CAAC,KAAO,WAAWwY,GAAG,CAAC,MAAQipI,EAAI0lE,gBAAgB,CAAC1lE,EAAIn9E,GAAGm9E,EAAI39E,GAAG29E,EAAI57I,KAAKwkN,gBAAgB,GAAG5oE,EAAIl9E,MAAM,MAAM,GAAGk9E,EAAIn9E,GAAG,KAAKe,EAAG,MAAM,CAACyP,YAAY,kBAAkB,CAACzP,EAAG,MAAM,CAACyP,YAAY,aAAa,CAACzP,EAAG,kBAAkB,CAACrlE,MAAM,CAAC,cAAcyhJ,EAAIq7D,UAAU,UAAYr7D,EAAIktD,UAAU,KAAOltD,EAAIskE,kBAAkB,GAAGtkE,EAAIn9E,GAAG,KAAKe,EAAG,MAAM,CAACyP,YAAY,aAAa,CAACzP,EAAG,gBAAgB,CAACrlE,MAAM,CAAC,cAAcyhJ,EAAIq7D,UAAU,UAAYr7D,EAAIktD,UAAU,KAAOltD,EAAIskE,kBAAkB,WACt1E,IDIpB,EACA,KACA,WACA,M,SEf0I,GCE7H,CACbn4N,KAAM,mBACNmuB,MAAO,CACL4yL,UAAW,CAAEh9M,KAAMuL,OAAQ++L,UAAU,IAEvC1sH,WAAY,CAAE+6I,qBAAmBC,qBACjC53M,KANa,WAOX,MAAO,CACL9M,KAAMyyL,OAAOC,IAAIC,SAASC,MAC1BsX,MAAOiH,aAAap4M,GACpB49M,OAAQ,GACRgO,iBAAkB,KAClBC,YAAa,WACbC,gBAAiB,OAGrB3hN,QAAS,CACP2vL,WADO,SACIlsL,GACT,OAAKA,GAAU,KAALA,EAGD29L,MAAM39L,GAAG49L,OAAUE,eAAnB,aAFA,OAMbzuK,QAAS,CAEPkgL,aAFO,SAEMnuN,EAAKomB,GAChB,OAAGpmB,EAAKmE,QAAUiiB,EAAgBpmB,EAC/BA,EAAKmE,OAASiiB,EACRpmB,EAAKgiH,UAAU,EAAE,GAAK,MAAQhiH,EAAKgiH,UAAUhiH,EAAKmE,QAAUiiB,EAAM,UAD3E,GAKF22M,gBATO,SASS9N,GACdzsN,KAAKo6N,iBAAmB3N,EACxBzsN,KAAKq6N,YAAc5N,EAAG7mB,IAGxB40B,aAdO,WAeLx6N,KAAKo6N,iBAAmB,KACxBp6N,KAAKq6N,YAAc,WACnBr6N,KAAKy6N,uBAGPA,oBApBO,WAqBLjiJ,QAAQkuI,cACRzmB,OAAOwC,KAAK,qCACV,CAAEkkB,eAAgB3mN,KAAK2/M,QAAQv7K,QAAQ,SAASy9B,GAC3CA,EAAIt/C,MAAQs/C,EAAIt/C,KAAK5gB,OAAS,IAC/B3B,KAAKosN,OAASvqJ,EAAIt/C,MAAQ,GACA,IAAvBviB,KAAKosN,OAAOzqN,QACb3B,KAAKo6N,iBAAmBp6N,KAAKosN,OAAO,GACpCpsN,KAAKq6N,YAAcr6N,KAAKosN,OAAO,GAAZ,GACnBpsN,KAAKs6N,gBAAkBt6N,KAAKosN,OAAO,GAAZ,YAAgC,MAEvDpsN,KAAK06N,sBAGVj8N,KAAKuB,OAAO6c,KAAK,SAASA,GAC1B7c,KAAK6mN,SAAS3+M,MAAM2U,EAAK1U,MACzB1J,KAAKuB,OAAOkyL,IAAI,WACjB15G,QAAQsuI,cACProN,KAAKuB,QAGV26N,gBAzCO,SAyCS94J,GAAK,WAChBA,EAAI5kD,OACLjd,KAAKq6N,YAAcx4J,EAAI21J,MACvBx3N,KAAKo6N,iBAAmBp6N,KAAKosN,OAAO16M,MAAK,SAAAhC,GAAM,OAAOA,EAAGk2L,KAAO/jI,EAAI21J,SACpE53M,YAAW,WACT,EAAK4gE,MAAMo6I,gBAAgBnF,qBAAqB5zJ,EAAI21J,SACnD,MAIPkD,kBAnDO,WAoDL,IAAIG,EAAiB,GACjBC,EAAU,KACd96N,KAAKosN,OAAOjhL,SAAQ,SAAAqsF,GAClBA,EAAQ20F,YAAc0O,EAAer4N,KAAKg1H,EAAQ20F,eAEpD0O,EAAe1vL,SAAQ,SAAAo9J,GACrB,IAAM2f,EAAcnO,MAAMxR,GACrBuyB,IAAW5S,EAAY6S,QAAQD,KAClCA,EAAU5S,MAGdloN,KAAKs6N,gBAAkBQ,IAG3B93I,QA3Fa,WA4FXhjF,KAAKy6N,wBC3EM,I,OAXC,YACd,ICTW,WAAa,IAAIppE,EAAIrxJ,KAASyyG,EAAG4+C,EAAIhgF,eAAmB4D,EAAGo8E,EAAI9wE,MAAMtL,IAAIw9B,EAAG,OAAOx9B,EAAG,MAAM,CAACyP,YAAY,gBAAgB,CAACzP,EAAG,MAAM,CAACzK,WAAW,CAAC,CAAChtE,KAAK,OAAOoqF,QAAQ,SAAS1pF,MAAOmzJ,EAAI+6D,OAAOzqN,OAAS,EAAGm7E,WAAW,sBAAsB4H,YAAY,aAAa,CAACzP,EAAG,MAAM,CAACyP,YAAY,cAAcjK,MAAM,CAAC,eAAoC,aAApB42E,EAAIgpE,aAA6BjyM,GAAG,CAAC,MAAQipI,EAAImpE,eAAe,CAAsB,aAApBnpE,EAAIgpE,YAA4BplJ,EAAG,MAAM,CAACyP,YAAY,mBAAmB2sE,EAAIl9E,KAAKk9E,EAAIn9E,GAAG,KAAKe,EAAG,MAAM,CAACrlE,MAAM,CAAC,IAAM,yCAAyCyhJ,EAAIn9E,GAAG,aAAam9E,EAAI39E,GAAG29E,EAAI57I,KAAKulN,wBAAwB,YAAY3pE,EAAIn9E,GAAG,KAAKe,EAAG,MAAM,CAACyP,YAAY,WAAW,CAACzP,EAAG,eAAe,CAACyV,YAAY,CAAC,OAAS,QAAQ,MAAQ,QAAQ96E,MAAM,CAAC,aAAa,iBAAiByhJ,EAAI19E,GAAI09E,EAAU,QAAE,SAASltJ,GAAM,OAAO8wE,EAAG,MAAM,CAACz2E,IAAI2F,EAAK3G,KAAKknF,YAAY,UAAUjK,MAAM,CAAC,eAAgB42E,EAAIgpE,cAAgBl2N,EAAKyhM,IAAKx9K,GAAG,CAAC,MAAQ,SAASkqD,GAAQ,OAAO++E,EAAIkpE,gBAAgBp2N,MAAS,CAAEktJ,EAAIgpE,cAAgBl2N,EAAKyhM,GAAI3wH,EAAG,MAAM,CAACyP,YAAY,mBAAmB2sE,EAAIl9E,KAAKk9E,EAAIn9E,GAAG,KAAKe,EAAG,MAAM,CAACrlE,MAAM,CAAC,IAAM,uCAAuC,IAAM,MAAMyhJ,EAAIn9E,GAAG,KAAM/vE,EAAK3G,KAAKmE,OAAS,GAAIszE,EAAG,aAAa,CAACrlE,MAAM,CAAC,eAAe,iBAAiB,OAAS,QAAQ,UAAY,QAAQ,QAAUzL,EAAK3G,OAAO,CAACy3E,EAAG,MAAM,CAACo8E,EAAIn9E,GAAGm9E,EAAI39E,GAAG29E,EAAIs6D,aAAaxnN,EAAK3G,KAAM,UAAU6zJ,EAAIl9E,KAAKk9E,EAAIn9E,GAAG,KAAM/vE,EAAK3G,KAAKmE,QAAU,GAAIszE,EAAG,MAAM,CAACo8E,EAAIn9E,GAAGm9E,EAAI39E,GAAGvvE,EAAK3G,SAAS6zJ,EAAIl9E,MAAM,MAAK,IAAI,KAAKk9E,EAAIn9E,GAAG,KAAKe,EAAG,MAAM,CAACyP,YAAY,aAAapgE,MAAM,CAAE8N,WAAYi/H,EAAI+6D,OAAOzqN,OAAS,EAAI,IAAM,SAAU,CAAsB,aAApB0vJ,EAAIgpE,YAA4BplJ,EAAG,oBAAoB,CAACrlE,MAAM,CAAC,OAASyhJ,EAAI+6D,QAAQhkM,GAAG,CAAC,mBAAqBipI,EAAIkpE,mBAAmBlpE,EAAIl9E,KAAKk9E,EAAIn9E,GAAG,KAA0B,aAApBm9E,EAAIgpE,YAA4BplJ,EAAG,mBAAmB,CAACphB,IAAI,kBAAkBjkD,MAAM,CAAC,UAAYyhJ,EAAI+oE,iBAAiB,cAAoC,IAAtB/oE,EAAI+6D,OAAOzqN,OAAa,UAAY0vJ,EAAIktD,WAAWn2L,GAAG,CAAC,gBAAkBipI,EAAIspE,mBAAmBtpE,EAAIl9E,KAAKk9E,EAAIn9E,GAAG,KAA0B,aAApBm9E,EAAIgpE,YAA4BplJ,EAAG,MAAM,CAACyP,YAAY,gBAAgB,CAAC2sE,EAAIn9E,GAAG,YAAYm9E,EAAI39E,GAAG29E,EAAI57I,KAAKg2L,oBAAoB,KAAKp6C,EAAI39E,GAAG29E,EAAIt9E,GAAG,aAAPs9E,CAAqBA,EAAIipE,kBAAkB,YAAYjpE,EAAIl9E,KAAKk9E,EAAIn9E,GAAG,KAA0B,aAApBm9E,EAAIgpE,YAA4BplJ,EAAG,MAAM,CAACyP,YAAY,eAAe,CAACzP,EAAG,MAAM,CAACrlE,MAAM,CAAC,IAAM,uCAAuCwY,GAAG,CAAC,MAAQipI,EAAImpE,kBAAkBnpE,EAAIl9E,MAAM,OACnzE,IDWpB,EACA,KACA,WACA,M,SEf+M,GCyBjN,CACE32E,KAAM,wBACNmuB,MAAO,CACLsvM,WAAY,CAAE15N,KAAMuL,OAAQ++L,UAAU,GACtCqvB,WAAY,CAAE35N,KAAMuL,OAAQ++L,UAAU,IAExC1sH,WAAY,CAAEg8I,iBAAhB,yCACE54M,KAPF,WAQI,MAAO,CACL9M,KAAMyyL,OAAOC,IAAIC,SAASC,MAC1B+yB,UAAW,YAGf3vL,QAAS,CAEP4vL,eAFJ,SAEA,GACMr7N,KAAKo7N,UAAY/nB,EAAI71M,QCtBZ,I,OAXC,YACd,ICTW,WAAa,IAAI6zJ,EAAIrxJ,KAASyyG,EAAG4+C,EAAIhgF,eAAmB4D,EAAGo8E,EAAI9wE,MAAMtL,IAAIw9B,EAAG,OAAOx9B,EAAG,MAAM,CAACyP,YAAY,kBAAkB,CAACzP,EAAG,UAAU,CAACrlE,MAAM,CAAC,KAAO,eAAewY,GAAG,CAAC,YAAYipI,EAAIgqE,gBAAgB/hJ,MAAM,CAACp7E,MAAOmzJ,EAAa,UAAE/qJ,SAAS,SAAUu9L,GAAMxyC,EAAI+pE,UAAUv3B,GAAK/mH,WAAW,cAAc,CAAC7H,EAAG,cAAc,CAACrlE,MAAM,CAAC,MAAQyhJ,EAAI57I,KAAK6lN,6BAA6B,KAAO,YAAY,CAACrmJ,EAAG,MAAM,CAACyP,YAAY,gBAAgB,CAAoB,YAAlB2sE,EAAI+pE,UAAyBnmJ,EAAG,mBAAmB,CAACphB,IAAI,mBAAmBjkD,MAAM,CAAC,UAAYyhJ,EAAI6pE,cAAc7pE,EAAIl9E,MAAM,KAAKk9E,EAAIn9E,GAAG,KAAKe,EAAG,cAAc,CAACrlE,MAAM,CAAC,MAAQyhJ,EAAI57I,KAAK8lN,sBAAsB,KAAO,UAAU,CAACtmJ,EAAG,MAAM,CAACyP,YAAY,gBAAgB,CAAoB,UAAlB2sE,EAAI+pE,UAAuBnmJ,EAAG,iBAAiB,CAACphB,IAAI,mBAAmBw9F,EAAIl9E,MAAM,KAAKk9E,EAAIn9E,GAAG,KAAKe,EAAG,cAAc,CAACrlE,MAAM,CAAC,MAAQyhJ,EAAI57I,KAAK+lN,sBAAsB,KAAO,WAAW,CAACvmJ,EAAG,MAAM,CAACyP,YAAY,gBAAgB,CAAoB,WAAlB2sE,EAAI+pE,UAAwBnmJ,EAAG,kBAAkB,CAACphB,IAAI,kBAAkBjkD,MAAM,CAAC,UAAYyhJ,EAAI6pE,cAAc7pE,EAAIl9E,MAAM,MAAM,IAAI,KAC3gC,IDWpB,EACA,KACA,WACA,M,SEbFsnJ,GAAsBh4I,QAAU,SAASrE,GACrCA,EAAIlG,UAAUuiJ,GAAsBj+N,KAAMi+N,KAG/BA,UCNsL,GCoBrM,CACA,iBACA,OACA,SACA,WACA,aAGA,KARA,WASA,OACA,+BACA,0LACA,gIACA,yGCde,I,OAXC,YACd,ICTW,WAAa,IAAIpqE,EAAIrxJ,KAASyyG,EAAG4+C,EAAIhgF,eAAmB4D,EAAGo8E,EAAI9wE,MAAMtL,IAAIw9B,EAAG,OAAOx9B,EAAG,MAAM,CAACyP,YAAY,eAAejK,MAAM,CAAC,aAAc42E,EAAIkhD,QAAQ5wM,QAAU,IAAI,CAACszE,EAAG,cAAc,CAACrlE,MAAM,CAAC,OAAS,QAAQ,UAAW,EAAM,QAAU,UAAUyhJ,EAAI19E,GAAI09E,EAAW,SAAE,SAASltJ,EAAKzC,GAAO,OAAOuzE,EAAG,mBAAmB,CAACz2E,IAAIkD,GAAO,CAACuzE,EAAG,MAAM,CAACyP,YAAY,uBAAuB,CAAC2sE,EAAIn9E,GAAGm9E,EAAI39E,GAAGvvE,EAAK3G,SAAS6zJ,EAAIn9E,GAAG,KAAKe,EAAG,KAAK,CAACyP,YAAY,oCAAoC2sE,EAAI19E,GAAI09E,EAAkB,gBAAE,SAASyrD,EAAM4e,GAAQ,OAAOzmJ,EAAG,KAAK,CAACz2E,IAAIs+M,GAAO,CAAC7nI,EAAG,MAAM,CAACyP,YAAY,gCAAgCpgE,MAAM,CAAE0qI,WAAa,OAAUqC,EAAIsqE,eAAeD,GAAW,iBAAmBrqE,EAAIn9E,GAAG,KAAKe,EAAG,MAAM,CAACyP,YAAY,kCAAkC,CAAC2sE,EAAIn9E,GAAGm9E,EAAI39E,GAAGopI,MAAUzrD,EAAIn9E,GAAG,KAAKe,EAAG,MAAM,CAACyP,YAAY,kCAAkC,CAAC2sE,EAAIn9E,GAAGm9E,EAAI39E,GAAGvvE,EAAKktJ,EAAIuqE,aAAaF,aAAiB,GAAGrqE,EAAIn9E,GAAG,KAAKe,EAAG,MAAM,CAACyP,YAAY,uBAAuBjK,MAAM,CAACohJ,QAAwB,GAAf13N,EAAKu/B,SAAc,CAAC2tH,EAAIn9E,GAAGm9E,EAAI39E,GAAkB,GAAfvvE,EAAKu/B,OAAc2tH,EAAI57I,KAAKqmN,OAAOzqE,EAAI57I,KAAKozL,YAAYx3C,EAAIn9E,GAAG,KAAqB,GAAf/vE,EAAKu/B,OAAauxC,EAAG,MAAM,CAACyP,YAAY,6BAA6B,CAAC2sE,EAAIn9E,GAAGm9E,EAAI39E,GAAG29E,EAAI57I,KAAKg2L,oBAAoB,KAAKp6C,EAAI39E,GAAGvvE,EAAKm2N,oBAAoBjpE,EAAIl9E,UAAS,IAAI,KACvtC,IDWpB,EACA,KACA,KACA,M,SEbF4nJ,GAAUt4I,QAAU,SAAArE,GAChBA,EAAIlG,UAAU6iJ,GAAUv+N,KAAMu+N,KAGnBA,UCNgM,GCU/M,CACIv+N,KAAM,sBACNmuB,MAAO,CACH2tD,MAAO,CACH/3E,KAAM5D,OACNkuM,UAAU,IAGlB5hI,OAAQ,CAAC,mBACTx+B,QAAS,CACL6kK,UADR,WAEgBtwM,KAAKg8N,gBAAgB99N,QAAU8B,KAAKs5E,MAAM+hI,eAC9Cr7M,KAAKg8N,gBAAgB3gJ,MAAM,QAASr7E,KAAKs5E,MAAM+hI,cAC/Cr7M,KAAKg8N,gBAAgB3gJ,MAAM,SAAU,CACjCn9E,MAAO8B,KAAKs5E,MAAM+hI,aAClB9S,KAAMvoM,KAAKs5E,MAAM0uI,UAAUzhN,KAAI,SAA/C,UACA,YACA,OACA,8CACA,kDACA,iDACA,uBACA,gBACA,WACA,cACA,aACA,iCCjBe,I,OAXC,YACd,ICTW,WAAa,IAAiBksG,EAATzyG,KAAgBqxE,eAAuC,OAAvDrxE,KAA0CugF,MAAMtL,IAAIw9B,GAAa,MAAM,CAAC/tB,YAAY,iDAAiDjK,MAAM,CAAEqpH,IAAK5nI,OAAlJl8D,KAA6Jg8N,gBAAgB99N,SAAUg+D,OAAvLl8D,KAAkMs5E,MAAM+hI,eAAgBjzL,GAAG,CAAC,MAA5NpoB,KAAwOswM,YAAY,CAApPtwM,KAAyPk0E,GAAG,SAA5Pl0E,KAAyQ0zE,GAAzQ1zE,KAAgRs5E,MAAMumI,YAAY,UAC9S,IDWpB,EACA,KACA,KACA,M,SEfkN,GCgCpN,CACIriN,KAAM,2BACNmuB,MAAO,CACH2tD,MAAO,CACH/3E,KAAML,MACN2qM,UAAU,IAGlBtpL,KARJ,WASQ,MAAO,CACH8tL,MAAOrwM,KAAKs5E,MAAM,GAClB2iJ,cAAc,IAGtBj5I,QAdJ,WAcA,WACQhjF,KAAK6hF,IAAInzE,uBAAuB,kDAAkD,GAAGwC,iBAAiB,YAAY,WAC9G,EAAZ,oBAGI+4D,OAAQ,CAAC,mBACTx+B,QAAS,CACLywL,WADR,WAEgBl8N,KAAKg8N,gBAAgB99N,QAAU8B,KAAKqwM,MAAMgL,eAC9Cr7M,KAAKg8N,gBAAgB3gJ,MAAM,QAASr7E,KAAKqwM,MAAMgL,cAC/Cr7M,KAAKg8N,gBAAgB3gJ,MAAM,SAAU,CACjCn9E,MAAO8B,KAAKqwM,MAAMgL,aAClB9S,KAAMvoM,KAAKqwM,MAAM2X,UAAUzhN,KAAI,SAA/C,UACA,YACA,OACA,8CACA,kDACA,iDACA,uBACA,gBACA,WACA,cACA,aACA,+BAIQiqM,WArBR,SAqBA,GAEYxwM,KAAKg8N,gBAAgBlkJ,UACjC,oBAAgB,MAAhB,gDACA,qBACgB,EAAhB,mBAEY93E,KAAKi8N,cAAgBj8N,KAAKi8N,cAE9B1rB,YA9BR,SA8BA,GACYvwM,KAAKi8N,cAAe,EACpBj8N,KAAKqwM,MAAQlsM,EACbnE,KAAKg8N,gBAAgB3gJ,MAAM,QAASl3E,EAAKk3M,cACrCr7M,KAAKg8N,gBAAgB99N,QAAUiG,EAAKk3M,cACpCr7M,KAAKg8N,gBAAgB3gJ,MAAM,SAAU,CACjCn9E,MAAOiG,EAAKk3M,aACZ9S,KAAMpkM,EAAK6jN,UAAUzhN,KAAI,SAA7C,UACA,YACA,OACA,8CACA,kDACA,iDACA,uBACA,gBACA,WACA,cACA,aACA,gCCjFe,I,OAXC,YACd,ICTW,WAAa,IAAI8qJ,EAAIrxJ,KAASyyG,EAAG4+C,EAAIhgF,eAAmB4D,EAAGo8E,EAAI9wE,MAAMtL,IAAIw9B,EAAG,OAAOx9B,EAAG,MAAM,CAACyP,YAAY,iEAAiE,CAACzP,EAAG,MAAM,CAACyP,YAAY,yCAAyCjK,MAAM,CAAEqpH,IAAKzyC,EAAI/3E,MAAMhzB,MAAK,SAAUniD,GAAQ,OAAOA,EAAKk3M,eAAiBhqD,EAAI2qE,gBAAgB99N,UAAYkqB,GAAG,CAAC,MAAQipI,EAAI6qE,aAAa,CAAC7qE,EAAIn9E,GAAG,aAAam9E,EAAI39E,GAAG29E,EAAIg/C,MAAMwP,YAAY,cAAc5qI,EAAG,MAAM,CAACyP,YAAY,iDAAiDt8D,GAAG,CAAC,MAAQ,SAASkqD,GAAiC,OAAzBA,EAAOvpD,kBAAyBsoI,EAAIm/C,WAAWhtM,MAAM,KAAMiD,cAAc,CAAC4qJ,EAAIv9E,GAAG,OAAOu9E,EAAIn9E,GAAG,KAAKe,EAAG,KAAK,CAACyP,YAAY,yCAAyCjK,MAAM,CAACj1D,KAAM6rI,EAAI4qE,eAAe5qE,EAAI19E,GAAI09E,EAAS,OAAE,SAASltJ,GAAM,OAAO8wE,EAAG,KAAK,CAACz2E,IAAI2F,EAAKk3M,aAAa5gI,MAAM,CAAEqpH,IAAK3/L,EAAKk3M,eAAiBhqD,EAAI2qE,gBAAgB99N,OAAQkqB,GAAG,CAAC,MAAQ,SAASkqD,GAAQ,OAAO++E,EAAIk/C,YAAYpsM,MAAS,CAACktJ,EAAIn9E,GAAG,iBAAiBm9E,EAAI39E,GAAGvvE,EAAK07M,YAAY,mBAAkB,OACt9B,CAAC,WAAa,IAAiBptG,EAATzyG,KAAgBqxE,eAAmB4D,EAAnCj1E,KAA0CugF,MAAMtL,IAAIw9B,EAAG,OAAOx9B,EAAG,MAAM,CAACyP,YAAY,8CAA8C,CAACzP,EAAG,IAAI,CAACyP,YAAY,4BDWjM,EACA,KACA,KACA,M,SEfyM,GCG3M,CACIlnF,KAAM,kBACNmuB,MAAO,CACH2tD,MAAO,CACH/3E,KAAML,MACN2qE,QAAS,IAEb3tE,MAAO,CACHqD,KAAMuL,OACN++D,QAAS,KAGjB3B,QAZJ,WAaQ,MAAO,CACH8xJ,gBAAiBh8N,OAGzBm/E,WAAY,CACRg9I,oBAAR,GACQC,yBAAR,IAEIj9N,OArBJ,WAqBA,mBACA,8BACY,OAAiC,IAA7BgF,EAAKk6M,aAAa18M,OAElC,4BAAoB,MAApB,4BAEA,wBAEA,kCAAoB,MAApB,uBAAoB,IAApB,kCAFA,KAMQ,OACR,EAAY,OAAZ,oCAAY,CAAZ,MClBe,I,OAXC,YACd,QATE,OAAQ,GAYV,EACA,KACA,KACA,M,SCbF06N,GAAgB54I,QAAU,SAAArE,GACtBA,EAAIlG,UAAUmjJ,GAAgB7+N,KAAM6+N,KAGzBA,UCkTf,IACEC,WAAY,CACVvkB,MAAO,QACP/8J,IAAK,EACLjmB,IAAK,GACLxzB,KAAM,QACNg7N,MAAO,GAETC,WAAY,CACVzkB,MAAO,QACP/8J,IAAK,GACLjmB,IAAK,GACLxzB,KAAM,QACNg7N,MAAO,GAETE,oBAAqB,CACnB1kB,MAAO,OACP/8J,IAAK,EACLjmB,IAAK,GACLxzB,KAAM,QACNg7N,MAAO,GAETG,mBAAoB,CAClB3kB,MAAO,OACP/8J,IAAK,GACLjmB,IAAK,GACLxzB,KAAM,QACNg7N,MAAO,GAGTI,eAAgB,CACd5kB,MAAO,WACP/8J,IAAK,EACLjmB,IAAK,EACLxzB,KAAM,QACNg7N,MAAO,GAETK,UAAW,CACT7kB,MAAO,WACP/8J,IAAK,EACLjmB,IAAK,EACLxzB,KAAM,QACNg7N,MAAO,GAETM,kBAAmB,CACjB9kB,MAAO,QACP/8J,IAAK,GACLjmB,IAAK,IACLxzB,KAAM,OAERu7N,eAAgB,CACd/kB,MAAO,SACP/8J,IAAK,GACLjmB,IAAK,GACLxzB,KAAM,OAERw7N,cAAe,CACbhlB,MAAO,UACP/8J,IAAK,IACLjmB,IAAK,KACLxzB,KAAM,OAERy7N,qBAAsB,CACpBjlB,MAAO,UACP/8J,IAAK,EACLjmB,IAAK,EACLxzB,KAAM,OAER07N,mBAAoB,CAClBllB,MAAO,OACP/8J,IAAK,EACLjmB,IAAK,GACLxzB,KAAM,QChYkM,ODmY5M,CACE/D,KAAM,mBACNmuB,MAAO,CACL2tD,MAAO,CACL/3E,KAAM5D,OACNkuM,UAAU,GAEZqxB,WAAY,CACV37N,KAAML,MACN2qE,QAAS,IAEXr+D,SAAU,CACRjM,KAAMoqE,QACNE,SAAS,IAGbtpD,KAhBF,WAiBI,MAAO,CACLvlB,OAAQ,GACRirC,OAAQ,CAENvE,OAAQ1jC,KAAKs5E,MAAM51C,OAEnB44L,WAAYt8N,KAAKs5E,MAAMgjJ,WAEvBE,WAAYx8N,KAAKs5E,MAAMkjJ,WAEvBW,aAAcn9N,KAAKs5E,MAAM6jJ,aAEzBC,eAAgBp9N,KAAKs5E,MAAM8jJ,eAE3BX,oBAAqBz8N,KAAKs5E,MAAMmjJ,oBAEhCC,mBAAoB18N,KAAKs5E,MAAMojJ,mBAE/B5/N,SAAUkD,KAAKs5E,MAAMx8E,SAErBugO,WAAYr9N,KAAKs5E,MAAM+jJ,WAEvBV,eAAgB38N,KAAKs5E,MAAMqjJ,eAE3BC,UAAW58N,KAAKs5E,MAAMsjJ,UAEtBC,kBAAmB78N,KAAKs5E,MAAMujJ,kBAE9BC,eAAgB98N,KAAKs5E,MAAMwjJ,eAE3BC,cAAe/8N,KAAKs5E,MAAMyjJ,cAE1BC,qBAAsBh9N,KAAKs5E,MAAM0jJ,qBAEjCC,mBAAoBj9N,KAAKs5E,MAAM2jJ,mBAE/BK,gBAAiBt9N,KAAKs5E,MAAMgkJ,iBAE9BC,aAAc,CACZJ,aAAcn9N,KAAKs5E,MAAM6jJ,aACzBC,eAAgBp9N,KAAKs5E,MAAM8jJ,eAC3BtgO,SAAUkD,KAAKs5E,MAAMx8E,SACrBugO,WAAYr9N,KAAKs5E,MAAM+jJ,cAI7Br6I,QA/DF,WAgEQhjF,KAAKs5E,MAAM6jJ,cACbn9N,KAAKw9N,wBAAwBx9N,KAAKs5E,MAAM6jJ,eAG5C/rM,SAAU,CACRqsM,kBADJ,WAEM,IAAIxyN,GAAKjL,KAAKQ,MAAMk9N,mBAAmB19N,KAAKioC,QAE5C,OADAjoC,KAAKs5E,MAAM9rE,SAAWvC,EACfA,IAGXwgC,QAAS,CAEPkyL,iBAFJ,SAEA,GAEM,GADA39N,KAAKioC,OAAOq1L,iBAAkB,EACjB,SAATn5N,EAMF,OALAnE,KAAKioC,OAAOm1L,eAAiB,OAC7Bp9N,KAAKioC,OAAOnrC,SAAW,GACvBkD,KAAKioC,OAAOo1L,WAAa,GACzBr9N,KAAKhD,OAAS,QACdgD,KAAKQ,MAAMo9N,cAAc59N,MAG3BA,KAAKioC,OAAOm1L,eAAiBp9N,KAAKk9N,WAAWxrN,MACnD,YAAQ,OAAR,sBACA,eACM1R,KAAKioC,OAAOnrC,SAAW,GACvBkD,KAAKioC,OAAOo1L,WAAa,GACzBr9N,KAAKw9N,wBAAwBr5N,IAG/B05N,iBApBJ,SAoBA,GACM79N,KAAKQ,MAAMq9N,iBAAiB15N,IAG9B25N,eAxBJ,SAwBA,GACM99N,KAAKQ,MAAMs9N,eAAe35N,EAAMnE,OAGlCw9N,wBA5BJ,SA4BA,gBACMv9B,OACN,+DACA,qBACQ,EAAR,kBACQ,GAAR,cAII89B,aArCJ,SAqCA,GACM,GAAa,SAAT55N,EAGF,OAFAnE,KAAKioC,OAAOo1L,WAAa,YACzBr9N,KAAKQ,MAAMw9N,UAAUh+N,MAGvBA,KAAKioC,OAAOo1L,WAAar9N,KAAKhD,OAAO0U,MAC3C,YAAQ,OAAR,kBACA,YAGIusN,aAhDJ,SAgDA,cACMtnB,OAAOunB,SAAS,CACdnxK,SACR,8JACQ//B,QAAS,CAAC,IAAK,KACf8/E,OAAQ,WACNmzF,OACV,mCACY,aAAZ,sBACY,SAAZ,aAEA,qBACY,GAAZ,aACY,EAAZ,wBACA,uBACA,YACc,EAAd,kDACA,gCACkB,EAAlB,mBACkB,EAAlB,qBACkB,EAAlB,yBACkB,EAAlB,4BAKA,yCAEkB,EAAlB,mBAMA,kBACY,GAAZ,cAMIk+B,WAzFJ,SAyFA,GACMn+N,KAAKQ,MAAM29N,WAAWh6N,EAAMnE,OAG9Bo+N,QA7FJ,SA6FA,GACU7zL,EAAE18B,EAAEnG,QAAQk2B,SAAS,aACzB59B,KAAKQ,MAAM49N,QAAQp+N,KAAMA,KAAKioC,OAAQjoC,KAAKhD,SAG7CqhO,OAlGJ,SAkGA,KACUC,SACFA,QAAQrhD,QAEV,IAAI7gK,EAAIvO,EAAEnG,OAAOxJ,MACbR,EAAI6gO,GAAaC,GACrB,GAAS,MAALpiN,GAAkB,IAALA,EAGf,OAFAkiN,QAAU3nB,OAAOC,MAAM,MAA/B,SACQrsK,EAAE18B,EAAEnG,QAAQw1B,SAAS,QACd,EAET,GAAIiN,MAAM/tB,GAGR,OAFAkiN,QAAU3nB,OAAOC,MAAM,EAA/B,iBACQrsK,EAAE18B,EAAEnG,QAAQw1B,SAAS,QACd,EAET,GAAc,OAAVx/B,EAAE6D,MACA6a,GAAKsX,SAAStX,GAGhB,OAFAkiN,QAAU3nB,OAAOC,MAAM,EAAjC,iBACUrsK,EAAE18B,EAAEnG,QAAQw1B,SAAS,QACd,EAGX,GAAc,SAAVx/B,EAAE6D,KAAiB,CACrB,IAAIhE,EAAIs1B,WAAWzW,GAC3B,WACA,cACQ,GAAI7e,GAAKA,EAAEoE,OAASjE,EAAE6+N,MAGpB,OAFA+B,QAAU3nB,OAAOC,MAAM,EAAjC,2BACUrsK,EAAE18B,EAAEnG,QAAQw1B,SAAS,QACd,EAGX,OAAK9gB,EAAI1e,EAAEq3B,MAAQ3Y,EAAI1e,EAAEs9C,KAErBsjL,QADW,kBAATE,EACQ7nB,OAAOC,MAoC3B,SAAsBzoK,GACpB,GAAF,kBACI,OAAJ,sBAEE,OAAF,EAvCA,oDAEA,eACoBwoK,OAAOC,MAC3B,QADA,SACA,MADA,OACA,MADA,YAIoBD,OAAOC,MAC3B,QADA,SACA,MADA,MACA,MADA,WAIQrsK,EAAE18B,EAAEnG,QAAQw1B,SAAS,QACd,IAETqN,EAAE18B,EAAEnG,QAAQ61B,YAAY,QACjB,IAGTkhM,UAxJJ,WAwJA,2BACA,0FAEA,IACA,YACA,4DACA,GAGA,UATA,6EAYM,OAAO,KE/lBE,I,OAXC,YACd,ICTW,WAAa,IAAIptE,EAAIrxJ,KAASyyG,EAAG4+C,EAAIhgF,eAAmB4D,EAAGo8E,EAAI9wE,MAAMtL,IAAIw9B,EAAG,OAAOx9B,EAAG,MAAM,CAACyP,YAAY,+BAA+B,CAACzP,EAAG,MAAM,CAACyP,YAAY,2BAA2B,CAACzP,EAAG,MAAM,CAACyP,YAAY,YAAY,CAACzP,EAAG,MAAM,CAACyP,YAAY,qCAAqC,CAAC2sE,EAAIn9E,GAAG,IAAIm9E,EAAI39E,GAAG29E,EAAI/3E,MAAMolJ,OAAO,KAAKrtE,EAAI39E,GAAG29E,EAAI/3E,MAAMqlJ,QAAQ,OAAOttE,EAAIn9E,GAAG,KAAKe,EAAG,MAAM,CAACyP,YAAY,qCAAqC2sE,EAAIn9E,GAAG,KAAKe,EAAG,MAAM,CAACyP,YAAY,kCAAkC,CAACzP,EAAG,YAAY,CAACrlE,MAAM,CAAC,SAAWyhJ,EAAI7jJ,SAAS,KAAO,QAAQ,YAAc,OAAO8rE,MAAM,CAACp7E,MAAOmzJ,EAAIppH,OAAa,OAAE3hC,SAAS,SAAUu9L,GAAMxyC,EAAIlwE,KAAKkwE,EAAIppH,OAAQ,SAAU47J,IAAM/mH,WAAW,kBAAkB,CAAC7H,EAAG,YAAY,CAACrlE,MAAM,CAAC,MAAQ,MAAM,MAAQ,KAAKyhJ,EAAIn9E,GAAG,KAAKe,EAAG,YAAY,CAACrlE,MAAM,CAAC,MAAQ,MAAM,MAAQ,MAAM,IAAI,KAAKyhJ,EAAIn9E,GAAG,KAAKe,EAAG,MAAM,CAACyP,YAAY,YAAY,CAACzP,EAAG,MAAM,CAACyP,YAAY,qCAAqC,CAAC2sE,EAAIn9E,GAAG,WAAWm9E,EAAIn9E,GAAG,KAAKe,EAAG,MAAM,CAACyP,YAAY,oCAAoC,CAAC2sE,EAAIn9E,GAAG,OAAOm9E,EAAIn9E,GAAG,KAAKe,EAAG,MAAM,CAACyP,YAAY,kCAAkC,CAACzP,EAAG,WAAW,CAACphB,IAAI,aAAajkD,MAAM,CAAC,SAAWyhJ,EAAI7jJ,SAAS,KAAO,SAAS4a,GAAG,CAAC,KAAO,SAASkqD,GAAQ,OAAO++E,EAAIgtE,OAAO/rJ,EAAQ,gBAAgBgH,MAAM,CAACp7E,MAAOmzJ,EAAIppH,OAAiB,WAAE3hC,SAAS,SAAUu9L,GAAMxyC,EAAIlwE,KAAKkwE,EAAIppH,OAAQ,aAAcopH,EAAI59E,GAAGowH,KAAO/mH,WAAW,wBAAwB,KAAKu0E,EAAIn9E,GAAG,KAAKe,EAAG,MAAM,CAACyP,YAAY,YAAY,CAACzP,EAAG,MAAM,CAACyP,YAAY,qCAAqC,CAAC2sE,EAAIn9E,GAAG,WAAWm9E,EAAIn9E,GAAG,KAAKe,EAAG,MAAM,CAACyP,YAAY,oCAAoC,CAAC2sE,EAAIn9E,GAAG,OAAOm9E,EAAIn9E,GAAG,KAAKe,EAAG,MAAM,CAACyP,YAAY,kCAAkC,CAACzP,EAAG,WAAW,CAACphB,IAAI,aAAajkD,MAAM,CAAC,SAAWyhJ,EAAI7jJ,SAAS,KAAO,SAAS4a,GAAG,CAAC,KAAO,SAASkqD,GAAQ,OAAO++E,EAAIgtE,OAAO/rJ,EAAQ,gBAAgBgH,MAAM,CAACp7E,MAAOmzJ,EAAIppH,OAAiB,WAAE3hC,SAAS,SAAUu9L,GAAMxyC,EAAIlwE,KAAKkwE,EAAIppH,OAAQ,aAAc47J,IAAM/mH,WAAW,wBAAwB,OAAOu0E,EAAIn9E,GAAG,KAAKe,EAAG,MAAM,CAACyP,YAAY,2BAA2B,CAACzP,EAAG,MAAM,CAACyP,YAAY,YAAY,CAACzP,EAAG,MAAM,CAACyP,YAAY,qCAAqC,CAAC2sE,EAAIn9E,GAAG,QAAQm9E,EAAIn9E,GAAG,KAAKe,EAAG,MAAM,CAACyP,YAAY,qCAAqC2sE,EAAIn9E,GAAG,KAAKe,EAAG,MAAM,CAACyP,YAAY,kCAAkC,CAACzP,EAAG,YAAY,CAACrlE,MAAM,CAAC,SAAWyhJ,EAAI7jJ,SAAS,KAAO,QAAQ,YAAc,SAAS4a,GAAG,CAAC,OAASipI,EAAIssE,kBAAkBrkJ,MAAM,CAACp7E,MAAOmzJ,EAAIppH,OAAmB,aAAE3hC,SAAS,SAAUu9L,GAAMxyC,EAAIlwE,KAAKkwE,EAAIppH,OAAQ,eAAgB47J,IAAM/mH,WAAW,wBAAwB,CAAC7H,EAAG,YAAY,CAACyP,YAAY,oCAAoC90E,MAAM,CAAC,MAAQ,SAAS,CAACqlE,EAAG,IAAI,CAACyP,YAAY,gCAAgC2sE,EAAIn9E,GAAG,oCAAoCm9E,EAAIn9E,GAAG,KAAKm9E,EAAI19E,GAAI09E,EAAc,YAAE,SAASltJ,GAAM,OAAO8wE,EAAG,YAAY,CAACz2E,IAAI2F,EAAKg5N,aAAavtN,MAAM,CAAC,MAAQzL,EAAKi5N,eAAe,MAAQj5N,EAAKg5N,eAAe,CAACloJ,EAAG,MAAM,CAACyP,YAAY,yCAAyC90E,MAAM,CAAC,MAAQzL,EAAKi5N,iBAAiB,CAAC/rE,EAAIn9E,GAAG,mBAAmBm9E,EAAI39E,GAAGvvE,EAAKi5N,gBAAgB,oBAAoB/rE,EAAIn9E,GAAG,KAAO/vE,EAAKy6N,SAA2IvtE,EAAIl9E,KAArIc,EAAG,IAAI,CAACyP,YAAY,iBAAiBt8D,GAAG,CAAC,MAAQ,SAASkqD,GAAiC,OAAzBA,EAAOvpD,kBAAyBsoI,EAAIwsE,iBAAiB15N,OAAmBktJ,EAAIn9E,GAAG,KAAO/vE,EAAKy6N,SAA0KvtE,EAAIl9E,KAApKc,EAAG,IAAI,CAACyP,YAAY,eAAegG,YAAY,CAAC,cAAc,QAAQtiE,GAAG,CAAC,MAAQ,SAASkqD,GAAiC,OAAzBA,EAAOvpD,kBAAyBsoI,EAAIysE,eAAe35N,YAAuBktJ,EAAIn9E,GAAG,KAAKe,EAAG,YAAY,CAACzK,WAAW,CAAC,CAAChtE,KAAK,OAAOoqF,QAAQ,SAAS1pF,OAAM,EAAQ4+E,WAAW,UAAU4H,YAAY,oCAAoC90E,MAAM,CAAC,MAAQyhJ,EAAIksE,aAAaJ,aAAa,MAAQ9rE,EAAIksE,aAAaH,mBAAmB,IAAI,KAAK/rE,EAAIn9E,GAAG,KAAKe,EAAG,MAAM,CAACyP,YAAY,YAAY,CAACzP,EAAG,MAAM,CAACyP,YAAY,qCAAqC,CAAC2sE,EAAIn9E,GAAG,UAAUm9E,EAAIn9E,GAAG,KAAKe,EAAG,MAAM,CAACyP,YAAY,oCAAoC,CAAC2sE,EAAIn9E,GAAG,OAAOm9E,EAAIn9E,GAAG,KAAKe,EAAG,MAAM,CAACyP,YAAY,kCAAkC,CAACzP,EAAG,WAAW,CAACphB,IAAI,sBAAsBjkD,MAAM,CAAC,SAAWyhJ,EAAI7jJ,SAAS,KAAO,SAAS4a,GAAG,CAAC,KAAO,SAASkqD,GAAQ,OAAO++E,EAAIgtE,OAAO/rJ,EAAQ,yBAAyBgH,MAAM,CAACp7E,MAAOmzJ,EAAIppH,OAA0B,oBAAE3hC,SAAS,SAAUu9L,GAAMxyC,EAAIlwE,KAAKkwE,EAAIppH,OAAQ,sBAAuB47J,IAAM/mH,WAAW,iCAAiC,KAAKu0E,EAAIn9E,GAAG,KAAKe,EAAG,MAAM,CAACyP,YAAY,YAAY,CAACzP,EAAG,MAAM,CAACyP,YAAY,qCAAqC,CAAC2sE,EAAIn9E,GAAG,UAAUm9E,EAAIn9E,GAAG,KAAKe,EAAG,MAAM,CAACyP,YAAY,oCAAoC,CAAC2sE,EAAIn9E,GAAG,OAAOm9E,EAAIn9E,GAAG,KAAKe,EAAG,MAAM,CAACyP,YAAY,kCAAkC,CAACzP,EAAG,WAAW,CAACphB,IAAI,qBAAqBjkD,MAAM,CAAC,SAAWyhJ,EAAI7jJ,SAAS,KAAO,SAAS4a,GAAG,CAAC,KAAO,SAASkqD,GAAQ,OAAO++E,EAAIgtE,OAAO/rJ,EAAQ,wBAAwBgH,MAAM,CAACp7E,MAAOmzJ,EAAIppH,OAAyB,mBAAE3hC,SAAS,SAAUu9L,GAAMxyC,EAAIlwE,KAAKkwE,EAAIppH,OAAQ,qBAAsB47J,IAAM/mH,WAAW,gCAAgC,OAAOu0E,EAAIn9E,GAAG,KAAKe,EAAG,MAAM,CAACyP,YAAY,2BAA2B,CAACzP,EAAG,MAAM,CAACyP,YAAY,YAAY,CAACzP,EAAG,MAAM,CAACyP,YAAY,qCAAqC,CAAC2sE,EAAIn9E,GAAG,QAAQm9E,EAAIn9E,GAAG,KAAKe,EAAG,MAAM,CAACyP,YAAY,qCAAqC2sE,EAAIn9E,GAAG,KAAKe,EAAG,MAAM,CAACyP,YAAY,kCAAkC,CAACzP,EAAG,YAAY,CAACrlE,MAAM,CAAC,KAAO,QAAQ,YAAc,QAAQ,SAAWyhJ,EAAI7jJ,WAAa6jJ,EAAIppH,OAAOk1L,eAAiB9rE,EAAIppH,OAAOq1L,iBAAiBl1M,GAAG,CAAC,OAASipI,EAAI0sE,cAAczkJ,MAAM,CAACp7E,MAAOmzJ,EAAIppH,OAAe,SAAE3hC,SAAS,SAAUu9L,GAAMxyC,EAAIlwE,KAAKkwE,EAAIppH,OAAQ,WAAY47J,IAAM/mH,WAAW,oBAAoB,CAAC7H,EAAG,YAAY,CAACyP,YAAY,oCAAoC90E,MAAM,CAAC,MAAQ,SAAS,CAACqlE,EAAG,IAAI,CAACyP,YAAY,gCAAgC2sE,EAAIn9E,GAAG,oCAAoCm9E,EAAIn9E,GAAG,KAAKm9E,EAAI19E,GAAI09E,EAAU,QAAE,SAASltJ,GAAM,OAAO8wE,EAAG,YAAY,CAACz2E,IAAI2F,EAAKrH,SAAS8S,MAAM,CAAC,MAAQzL,EAAKk5N,WAAW,MAAQl5N,EAAKrH,WAAW,CAACm4E,EAAG,MAAM,CAACyP,YAAY,yCAAyC90E,MAAM,CAAC,MAAQzL,EAAKk5N,aAAa,CAAChsE,EAAIn9E,GAAG,mBAAmBm9E,EAAI39E,GAAGvvE,EAAKk5N,YAAY,oBAAoBhsE,EAAIn9E,GAAG,KAAO/vE,EAAKy6N,SAAuIvtE,EAAIl9E,KAAjIc,EAAG,IAAI,CAACyP,YAAY,iBAAiBt8D,GAAG,CAAC,MAAQ,SAASkqD,GAAiC,OAAzBA,EAAOvpD,kBAAyBsoI,EAAI4sE,aAAa95N,OAAmBktJ,EAAIn9E,GAAG,KAAO/vE,EAAKy6N,SAAsKvtE,EAAIl9E,KAAhKc,EAAG,IAAI,CAACyP,YAAY,eAAegG,YAAY,CAAC,cAAc,QAAQtiE,GAAG,CAAC,MAAQ,SAASkqD,GAAiC,OAAzBA,EAAOvpD,kBAAyBsoI,EAAI8sE,WAAWh6N,YAAuBktJ,EAAIn9E,GAAG,KAAKe,EAAG,YAAY,CAACzK,WAAW,CAAC,CAAChtE,KAAK,OAAOoqF,QAAQ,SAAS1pF,OAAM,EAAQ4+E,WAAW,UAAU4H,YAAY,oCAAoC90E,MAAM,CAAC,MAAQyhJ,EAAIksE,aAAazgO,SAAS,MAAQu0J,EAAIksE,aAAaF,eAAe,IAAI,KAAKhsE,EAAIn9E,GAAG,KAAKe,EAAG,MAAM,CAACyP,YAAY,YAAY,CAACzP,EAAG,MAAM,CAACyP,YAAY,qCAAqC,CAAC2sE,EAAIn9E,GAAG,cAAcm9E,EAAIn9E,GAAG,KAAKe,EAAG,MAAM,CAACyP,YAAY,oCAAoC,CAAC2sE,EAAIn9E,GAAG,SAASm9E,EAAIn9E,GAAG,KAAKe,EAAG,MAAM,CAACyP,YAAY,kCAAkC,CAACzP,EAAG,WAAW,CAACphB,IAAI,iBAAiBjkD,MAAM,CAAC,SAAWyhJ,EAAI7jJ,SAAS,KAAO,SAAS4a,GAAG,CAAC,KAAO,SAASkqD,GAAQ,OAAO++E,EAAIgtE,OAAO/rJ,EAAQ,oBAAoBgH,MAAM,CAACp7E,MAAOmzJ,EAAIppH,OAAqB,eAAE3hC,SAAS,SAAUu9L,GAAMxyC,EAAIlwE,KAAKkwE,EAAIppH,OAAQ,iBAAkB47J,IAAM/mH,WAAW,0BAA0B,CAAC7H,EAAG,OAAO,CAACyV,YAAY,CAAC,cAAc,OAAO,MAAQ,WAAW96E,MAAM,CAAC,KAAO,UAAUmgE,KAAK,UAAU,CAACshF,EAAIn9E,GAAG,UAAU,KAAKm9E,EAAIn9E,GAAG,KAAKe,EAAG,MAAM,CAACyP,YAAY,YAAY,CAACzP,EAAG,MAAM,CAACyP,YAAY,qCAAqC,CAAC2sE,EAAIn9E,GAAG,cAAcm9E,EAAIn9E,GAAG,KAAKe,EAAG,MAAM,CAACyP,YAAY,oCAAoC,CAAC2sE,EAAIn9E,GAAG,SAASm9E,EAAIn9E,GAAG,KAAKe,EAAG,MAAM,CAACyP,YAAY,kCAAkC,CAACzP,EAAG,WAAW,CAACphB,IAAI,YAAYjkD,MAAM,CAAC,SAAWyhJ,EAAI7jJ,SAAS,KAAO,SAAS4a,GAAG,CAAC,KAAO,SAASkqD,GAAQ,OAAO++E,EAAIgtE,OAAO/rJ,EAAQ,eAAegH,MAAM,CAACp7E,MAAOmzJ,EAAIppH,OAAgB,UAAE3hC,SAAS,SAAUu9L,GAAMxyC,EAAIlwE,KAAKkwE,EAAIppH,OAAQ,YAAa47J,IAAM/mH,WAAW,qBAAqB,CAAC7H,EAAG,OAAO,CAACyV,YAAY,CAAC,cAAc,OAAO,MAAQ,WAAW96E,MAAM,CAAC,KAAO,UAAUmgE,KAAK,UAAU,CAACshF,EAAIn9E,GAAG,UAAU,OAAOm9E,EAAIn9E,GAAG,KAAKe,EAAG,MAAM,CAACyP,YAAY,2BAA2B,CAACzP,EAAG,MAAM,CAACyP,YAAY,YAAY,CAACzP,EAAG,MAAM,CAACyP,YAAY,qCAAqC,CAAC2sE,EAAIn9E,GAAG,WAAWm9E,EAAIn9E,GAAG,KAAKe,EAAG,MAAM,CAACyP,YAAY,qCAAqC2sE,EAAIn9E,GAAG,KAAKe,EAAG,MAAM,CAACyP,YAAY,kCAAkC,CAACzP,EAAG,WAAW,CAACphB,IAAI,oBAAoBjkD,MAAM,CAAC,SAAWyhJ,EAAI7jJ,SAAS,KAAO,SAAS4a,GAAG,CAAC,KAAO,SAASkqD,GAAQ,OAAO++E,EAAIgtE,OAAO/rJ,EAAQ,uBAAuBgH,MAAM,CAACp7E,MAAOmzJ,EAAIppH,OAAwB,kBAAE3hC,SAAS,SAAUu9L,GAAMxyC,EAAIlwE,KAAKkwE,EAAIppH,OAAQ,oBAAqB47J,IAAM/mH,WAAW,+BAA+B,KAAKu0E,EAAIn9E,GAAG,KAAKe,EAAG,MAAM,CAACyP,YAAY,YAAY,CAACzP,EAAG,MAAM,CAACyP,YAAY,qCAAqC,CAAC2sE,EAAIn9E,GAAG,YAAYm9E,EAAIn9E,GAAG,KAAKe,EAAG,MAAM,CAACyP,YAAY,oCAAoC,CAAC2sE,EAAIn9E,GAAG,OAAOm9E,EAAIn9E,GAAG,KAAKe,EAAG,MAAM,CAACyP,YAAY,kCAAkC,CAACzP,EAAG,WAAW,CAACphB,IAAI,iBAAiBjkD,MAAM,CAAC,SAAWyhJ,EAAI7jJ,SAAS,KAAO,SAAS4a,GAAG,CAAC,KAAO,SAASkqD,GAAQ,OAAO++E,EAAIgtE,OAAO/rJ,EAAQ,oBAAoBgH,MAAM,CAACp7E,MAAOmzJ,EAAIppH,OAAqB,eAAE3hC,SAAS,SAAUu9L,GAAMxyC,EAAIlwE,KAAKkwE,EAAIppH,OAAQ,iBAAkB47J,IAAM/mH,WAAW,4BAA4B,KAAKu0E,EAAIn9E,GAAG,KAAKe,EAAG,MAAM,CAACyP,YAAY,YAAY,CAACzP,EAAG,MAAM,CAACyP,YAAY,qCAAqC,CAAC2sE,EAAIn9E,GAAG,aAAam9E,EAAIn9E,GAAG,KAAKe,EAAG,MAAM,CAACyP,YAAY,oCAAoC,CAAC2sE,EAAIn9E,GAAG,UAAUm9E,EAAIn9E,GAAG,KAAKe,EAAG,MAAM,CAACyP,YAAY,kCAAkC,CAACzP,EAAG,WAAW,CAACphB,IAAI,gBAAgBjkD,MAAM,CAAC,SAAWyhJ,EAAI7jJ,SAAS,KAAO,SAAS4a,GAAG,CAAC,KAAO,SAASkqD,GAAQ,OAAO++E,EAAIgtE,OAAO/rJ,EAAQ,mBAAmBgH,MAAM,CAACp7E,MAAOmzJ,EAAIppH,OAAoB,cAAE3hC,SAAS,SAAUu9L,GAAMxyC,EAAIlwE,KAAKkwE,EAAIppH,OAAQ,gBAAiB47J,IAAM/mH,WAAW,2BAA2B,OAAOu0E,EAAIn9E,GAAG,KAAKe,EAAG,MAAM,CAACyP,YAAY,2BAA2B,CAACzP,EAAG,MAAM,CAACyP,YAAY,YAAY,CAACzP,EAAG,MAAM,CAACyP,YAAY,qCAAqC,CAAC2sE,EAAIn9E,GAAG,aAAam9E,EAAIn9E,GAAG,KAAKe,EAAG,MAAM,CAACyP,YAAY,kCAAkC,CAACzP,EAAG,WAAW,CAACphB,IAAI,uBAAuBjkD,MAAM,CAAC,SAAWyhJ,EAAI7jJ,SAAS,KAAO,SAAS4a,GAAG,CAAC,KAAO,SAASkqD,GAAQ,OAAO++E,EAAIgtE,OAAO/rJ,EAAQ,0BAA0BgH,MAAM,CAACp7E,MAAOmzJ,EAAIppH,OAA2B,qBAAE3hC,SAAS,SAAUu9L,GAAMxyC,EAAIlwE,KAAKkwE,EAAIppH,OAAQ,uBAAwB47J,IAAM/mH,WAAW,kCAAkC,KAAKu0E,EAAIn9E,GAAG,KAAKe,EAAG,MAAM,CAACyP,YAAY,YAAY,CAACzP,EAAG,MAAM,CAACyP,YAAY,qCAAqC,CAAC2sE,EAAIn9E,GAAG,UAAUm9E,EAAIn9E,GAAG,KAAKe,EAAG,MAAM,CAACyP,YAAY,kCAAkC,CAACzP,EAAG,WAAW,CAACphB,IAAI,qBAAqBjkD,MAAM,CAAC,SAAWyhJ,EAAI7jJ,SAAS,KAAO,SAAS4a,GAAG,CAAC,KAAO,SAASkqD,GAAQ,OAAO++E,EAAIgtE,OAAO/rJ,EAAQ,wBAAwBgH,MAAM,CAACp7E,MAAOmzJ,EAAIppH,OAAyB,mBAAE3hC,SAAS,SAAUu9L,GAAMxyC,EAAIlwE,KAAKkwE,EAAIppH,OAAQ,qBAAsB47J,IAAM/mH,WAAW,gCAAgC,KAAKu0E,EAAIn9E,GAAG,KAAOm9E,EAAI7jJ,SAAkW6jJ,EAAIl9E,KAA5Vc,EAAG,MAAM,CAACyP,YAAY,YAAY,CAACzP,EAAG,MAAM,CAACyP,YAAY,sCAAsC2sE,EAAIn9E,GAAG,KAAKe,EAAG,MAAM,CAACyP,YAAY,kCAAkC,CAACzP,EAAG,MAAM,CAACyP,YAAY,kCAAkCjK,MAAM,CAACjtE,SAAU6jJ,EAAIosE,mBAAmBr1M,GAAG,CAAC,MAAQ,SAASkqD,GAAQ,OAAO++E,EAAI+sE,QAAQ9rJ,MAAW,CAAC++E,EAAIn9E,GAAG,uBACjkW,IDWpB,EACA,KACA,KACA,M,SEbF2qJ,GAAiBp7I,QAAU,SAAArE,GACvBA,EAAIlG,UAAU2lJ,GAAiBrhO,KAAMqhO,KAG1BA,UCN+L,GCwB9M,CACIrhO,KAAM,qBACNysE,OAAJ,gBACI1nD,KAHJ,WAIQ,MAAO,CACH80L,UAAZ,EACYD,YAAZ,gDACY0nB,QAAZ,GACYC,SAAZ,EACYC,aAAZ,EACYC,YAAZ,EACYC,UAAZ,CACgB3/L,MAAhB,GACgB+9K,IAAhB,MAII3xL,MAAJ,CACQi6K,GAAI,CACArkM,KAAMuL,OACN++L,UAAU,IAGlBpgK,QAAJ,CACQ0zL,kBAAR,WACYn/N,KAAKo/N,YAAYC,eAA7B,8BAEQC,gBAAR,YACA,IACgBt/N,KAAKg/N,aAArB,EACgBh/N,KAAKu/N,YAAYv/N,KAAKw/N,eAI9BC,eAAR,WACA,2EAEgBx/B,OAAOwC,KAAK,0CAA5B,kCACoBziM,KAAK0/N,wBACzB,mCAMQC,gBAAR,WACA,yBACgB3/N,KAAK++N,SAArB,4BACgB/+N,KAAK0/N,yBAIbA,qBAAR,WACY1/N,KAAKk/N,UAAU3/L,MAA3B,aACYv/B,KAAKk/N,UAAU5hB,IAA3B,qDACYt9M,KAAKg/N,aAAjB,GAEQO,YAAR,YACYt/B,OAAOwC,KAAK,4CAAxB,kCAEgBziM,KAAK8+N,QAArB,OACgBnxN,GAAQA,KACxB,mCAKQ6xN,YAAR,WACYx/N,KAAKi/N,YAAjB,EACYj/N,KAAKmiF,WAAU,WACXniF,KAAKi/N,YAAa,OAI9Bn8I,QAAJ,WACQ9iF,KAAKu/N,gBChFE,I,OAXC,YACd,ICTW,WAAa,IAAIluE,EAAIrxJ,KAASyyG,EAAG4+C,EAAIhgF,eAAmB4D,EAAGo8E,EAAI9wE,MAAMtL,IAAIw9B,EAAG,OAAOx9B,EAAG,MAAM,CAACyP,YAAY,wBAAwB,CAACzP,EAAG,MAAM,CAACyP,YAAY,kCAAkCt8D,GAAG,CAAC,MAAQipI,EAAI8tE,oBAAoB,CAAC9tE,EAAIn9E,GAAG,QAAQm9E,EAAIn9E,GAAG,KAAKe,EAAG,MAAM,CAACyP,YAAY,6BAA6B,CAACzP,EAAG,MAAM,CAACyP,YAAY,iCAAiC,CAAC2sE,EAAIn9E,GAAGm9E,EAAI39E,GAAG29E,EAAIu0C,OAAOv0C,EAAIn9E,GAAG,KAAKe,EAAG,aAAa,CAACyP,YAAY,iCAAiCgG,YAAY,CAAC,OAAS,QAAQ96E,MAAM,CAAC,QAAUyhJ,EAAI+lD,aAAa99H,MAAM,CAACp7E,MAAOmzJ,EAAa,UAAE/qJ,SAAS,SAAUu9L,GAAMxyC,EAAIgmD,UAAUxT,GAAK/mH,WAAW,eAAeu0E,EAAIn9E,GAAG,KAAKe,EAAG,MAAM,CAACzK,WAAW,CAAC,CAAChtE,KAAK,OAAOoqF,QAAQ,SAAS1pF,MAAsB,GAAfmzJ,EAAIgmD,UAAcv6H,WAAW,iBAAiB4H,YAAY,mCAAmC,CAAC2sE,EAAIn9E,GAAG,UAAUm9E,EAAI39E,GAAG29E,EAAIytE,QAAQc,gBAAgBvuE,EAAIn9E,GAAG,KAAOm9E,EAAI2tE,YAA8G3tE,EAAIl9E,KAArGc,EAAG,gBAAgB,CAACyP,YAAY,gBAAgBt8D,GAAG,CAAC,MAAQipI,EAAIouE,iBAAiB,CAACpuE,EAAIn9E,GAAG,QAAiBm9E,EAAIn9E,GAAG,KAAMm9E,EAAe,YAAEp8E,EAAG,gBAAgB,CAACyP,YAAY,gBAAgB90E,MAAM,CAAC,UAAW,IAAO,CAACyhJ,EAAIn9E,GAAG,SAASm9E,EAAIl9E,MAAM,GAAGk9E,EAAIn9E,GAAG,KAAKe,EAAG,MAAM,CAACyP,YAAY,2BAA2B,CAAkC,MAAhC3hE,KAAKs3C,UAAUr6D,KAAK8+N,UAAiC,GAAfztE,EAAIgmD,WAAchmD,EAAI4tE,WAAYhqJ,EAAG,6BAA6B,CAACphB,IAAI,0BAA0BjkD,MAAM,CAAC,GAAKyhJ,EAAIu0C,GAAG,UAAYv0C,EAAIytE,QAAQe,UAAUxuE,EAAIl9E,KAAKk9E,EAAIn9E,GAAG,KAAqB,GAAfm9E,EAAIgmD,UAAcpiI,EAAG,gCAAgCo8E,EAAIl9E,MAAM,GAAGk9E,EAAIn9E,GAAG,KAAMm9E,EAAe,YAAEp8E,EAAG,MAAM,CAACyP,YAAY,qBAAqB,CAACzP,EAAG,qBAAqB,CAACrlE,MAAM,CAAC,MAAQ,QAAQ,SAAWyhJ,EAAI0tE,SAAS,UAAY1tE,EAAI6tE,WAAW92M,GAAG,CAAC,mBAAqBipI,EAAIiuE,oBAAoB,GAAGjuE,EAAIl9E,SACloD,IDWpB,EACA,KACA,KACA,M,SEfiN,GCUnN,CACI32E,KAAM,0BACN+kB,KAAJ,WACQ,MAAO,CACHu9M,WAAZ,EACYC,UAAZ,KAGIp0M,MAAJ,CACQi6K,GAAI,CACArkM,KAAMuL,OACN++L,UAAU,GAEdm0B,UAAW,CACPz+N,KAAML,MACN2qM,UAAU,IAGlBpgK,QAAJ,CAEQ9lC,KAAR,WACY3F,KAAK+/N,UAAjB,GACY//N,KAAKggO,UAAU70L,QAAQ,SAAnC,GACgBnrC,KAAK+/N,UAAUv9N,KAAK2B,EAAKm3M,UAAUvD,QACnD,YACY/3M,KAAKigO,UAAUjgO,KAAKggO,UAAUhgO,KAAK8/N,cAGvCI,aAAR,YACYlgO,KAAK8/N,WAAjB,EACY9/N,KAAKigO,UAAUjgO,KAAKggO,UAAUhgO,KAAK8/N,cAGvCG,UAAR,YACY,IAEIE,EAAhB,EAFgBhpB,EAAUW,QAAQnyM,KAAK7C,SAASyL,eAAe,SAC/CyxN,EAAYz9M,EAEhBy9M,EAAUtxF,KAAKvjG,SAAQ,SAAUhnC,GAEV,GAAfA,EAAKk4M,SACLl4M,EAAK3G,KAAO2G,EAAK8gB,KACjB9gB,EAAK4wB,IAAMjtB,KAAK0tB,KAAKrxB,EAAK4wB,KAC1B5wB,EAAKi8N,YAAzB,GACoBj8N,EAAK62C,IAAzB,EACoB72C,EAAKs4M,SAAzB,CACwB/B,UAAxB,CAC4B7jG,MAA5B,SAGoBwpH,EAAQl8N,GAGO,GAAfA,EAAKk4M,SACLl4M,EAAK3G,KAAO2G,EAAK8gB,KACjB9gB,EAAK62C,IAAzB,EACoB72C,EAAK4wB,IAAzB,yBACoB5wB,EAAKs4M,SAAzB,CACwB/B,UAAxB,CAC4B7jG,MAA5B,SAGoBspH,EAAQh8N,MAIhB,IAEwB5C,EAFpB++N,EAAY,GAOhB,IAAK,IAAIrjO,EAAI,EAAGA,EAAI+iO,EAAU3jH,MAAM16G,OAAQ1E,IACxCqjO,EAAU99N,KAAK,CACX+f,KAAMy9M,EAAU3jH,MAAMp/G,GAAGoqL,GAAG9gL,KAAI,SAAUpC,GAA9D,yCACoB5C,MARgBA,EAQKy+N,EAAU3jH,MAAMp/G,GAAGsE,KAPhC,KAARA,EAApB,MACA,QAOoBm5M,UAAW,CACPn5M,KAAxB,MAA8By+N,EAAU3jH,MAAMp/G,GAAGsE,KAAjD,kBAEoB27M,UAAW,CACPC,OAAQ,CACJtmG,MAAOmpH,EAAU3jH,MAAMp/G,GAAGmgN,aAGlC7mK,OAAQ,OACR+1F,QAApB,EACoB9uI,KAAMwiO,EAAU3jH,MAAMp/G,GAAG86M,QAIjC,IAAI3xL,EAAS,CACTwrL,KAAM,CACF7iF,gBAAiB,QAErB8sF,OAAQ,CACJt5L,KAAMy9M,EAAU3jH,MAAM91G,KAAI,SAAUpC,GAAxD,kBACoB+R,SAAU,GACVqgB,KAAM,IACNilC,OAAQ,GACRo0F,UAApB,CACwB/4C,MAAxB,SAIgB2lG,MAAO6jB,EACP1jB,MAAOwjB,EACPxmB,QAAS,CACLzwL,QAAS,OACT2wL,UAAW,SAA/B,GAEwB,IAAIF,EAA5B,GAMwB,OAJAp6K,EAAM4L,SAAQ,SAAU/uB,EAAGnf,GACvB08M,GAC5B,wTAE+BA,IAGfgC,OAAQ2kB,GAGZN,EAAU3jH,MAAMlxE,SAAQ,SAAUhnC,GAC9BiiB,EAAOy1L,OAAO3lM,SAAS/R,EAAK4zM,OAAS5zM,EAAK+iJ,YAE9CiwD,EAAQ2E,UAAU11L,KAG1B48D,QAAJ,WACQhjF,KAAK2F,SCxHE,I,OAXC,YACd,ICTW,WAAa,IAAI0rJ,EAAIrxJ,KAASyyG,EAAG4+C,EAAIhgF,eAAmB4D,EAAGo8E,EAAI9wE,MAAMtL,IAAIw9B,EAAG,OAAOx9B,EAAG,MAAM,CAACyP,YAAY,8BAA8B,CAACzP,EAAG,KAAK,CAACyP,YAAY,cAAc2sE,EAAI19E,GAAI09E,EAAa,WAAE,SAASltJ,EAAKzC,GAAO,OAAOuzE,EAAG,KAAK,CAACwF,MAAM,CAAC,cAAc/4E,GAAO2vJ,EAAIyuE,YAAY13M,GAAG,CAAC,MAAQ,SAASkqD,GAAQ,OAAO++E,EAAI6uE,aAAax+N,MAAU,CAAC2vJ,EAAIn9E,GAAGm9E,EAAI39E,GAAGvvE,SAAW,GAAGktJ,EAAIn9E,GAAG,KAAMm9E,EAAI2uE,UAAUr+N,OAAO,EAAGszE,EAAG,MAAM,CAACyP,YAAY,oCAAoC90E,MAAM,CAAC,GAAK,UAAUyhJ,EAAIl9E,KAAKk9E,EAAIn9E,GAAG,KAA4B,GAAtBm9E,EAAI2uE,UAAUr+N,OAAWszE,EAAG,MAAM,CAACyP,YAAY,kBAAkB2sE,EAAIl9E,SACtjB,IDWpB,EACA,KACA,KACA,M,SEfmN,GCuErN,CACI,KAAJ,4BACI,KAAJ,WACQ,MAAR,CACY,MAAZ,CACgB,WAAhB,EACgB,UAAhB,EACgB,OAAhB,GAEY,WAAZ,EACY,eAAZ,GACY,YAAZ,GACY,gBAAZ,IAGI,OAAJ,gBACI,QAAJ,CAEQ,YAAR,0DACY,GAAZ,kCACgB,IAAhB,4DAEA,uDAMY,OAHZ,QACgB7vD,EAAMmS,QAAtB,cAEA,GAEQ,UAAR,0DACY,GAAZ,kCACgB,IAAInS,EAApB,qBAEA,kBAKY,OAHZ,QACgBA,EAAMmS,QAAtB,cAEmBnS,GAEX,oBAAR,WACY,KAAZ,kBACY,IAAZ,GACgB,KAAQ,EACR,IAAOtkB,KAAKo/N,YAAYmB,sBAAsB36B,GAC9C,OAAU,GACV,WAAc5lM,KAAKwgO,MAAM5tB,WACzB,UAAa5yM,KAAKwgO,MAAM3tB,WAE5B,OAAZ,2EACgB,KAAhB,2BACgB,KAAhB,gCACA,2BACgB,KAAhB,mBACA,aAEQ,iBAAR,YACY7yM,KAAKwgO,MAAM5tB,WAAvB,EACY5yM,KAAKygO,uBAET,aAAR,YACY,IAAZ,GACgB,MAAhB,UACgB,OAAhB,YACgB,GAAhB,MAEY,OAAZ,2DACgB,KAAhB,mCACgB,KAAhB,cACA,cAGI,QAAJ,WACQ,KAAR,wBC9He,I,OAXC,YACd,ICTW,WAAa,IAAIpvE,EAAIrxJ,KAASyyG,EAAG4+C,EAAIhgF,eAAmB4D,EAAGo8E,EAAI9wE,MAAMtL,IAAIw9B,EAAG,OAAOx9B,EAAG,MAAM,CAACA,EAAG,MAAM,CAACyP,YAAY,gCAAgC,CAACzP,EAAG,WAAW,CAACzK,WAAW,CAAC,CAAChtE,KAAK,UAAUoqF,QAAQ,YAAY1pF,MAAOmzJ,EAAkB,eAAEv0E,WAAW,mBAAmB4N,YAAY,CAAC,aAAa,0CAA0C96E,MAAM,CAAC,KAAOyhJ,EAAIqvE,YAAY,oBAAoBrvE,EAAIsvE,YAAY,aAAatvE,EAAIuvE,UAAU,KAAO,QAAQ,OAAS,KAAK,CAAC3rJ,EAAG,kBAAkB,CAACrlE,MAAM,CAAC,MAAQ,GAAG,MAAQ,OAAO,MAAQ,MAAM,KAAO,YAAYyhJ,EAAIn9E,GAAG,KAAKe,EAAG,kBAAkB,CAACrlE,MAAM,CAAC,MAAQ,GAAG,MAAQ,OAAO,KAAO,cAAcyhJ,EAAIn9E,GAAG,KAAKe,EAAG,kBAAkB,CAACrlE,MAAM,CAAC,MAAQ,GAAG,KAAO,YAAY,MAAQ,OAAO,MAAQ,SAASyhJ,EAAIn9E,GAAG,KAAKe,EAAG,kBAAkB,CAACrlE,MAAM,CAAC,KAAO,KAAK,MAAQ,KAAK,MAAQ,OAAOolE,YAAYq8E,EAAIj9E,GAAG,CAAC,CAAC51E,IAAI,UAAUkH,GAAG,SAASoJ,GAAO,MAAO,CAAgB,IAAdA,EAAMilM,IAAIvlM,GAAQymE,EAAG,MAAM,CAACA,EAAG,YAAY,CAACyV,YAAY,CAAC,MAAQ,UAAU,kBAAkB,aAAa96E,MAAM,CAAC,KAAO,OAAO,KAAO,QAAQwY,GAAG,CAAC,MAAQ,SAASkqD,GAAQ,OAAO++E,EAAIwvE,aAAa/xN,EAAMilM,QAAQ,CAAC1iD,EAAIn9E,GAAG,WAAW,GAAGm9E,EAAIl9E,aAAa,GAAGk9E,EAAIn9E,GAAG,KAAKe,EAAG,MAAM,CAACyP,YAAY,uCAAuC,CAACzP,EAAG,YAAY,CAACrlE,MAAM,CAAC,eAAeyhJ,EAAImvE,MAAM5tB,WAAW,aAAa,CAACvhD,EAAImvE,MAAM3tB,WAAW,OAAS,0CAA0C,MAAQxhD,EAAImvE,MAAMhmG,QAAQpyG,GAAG,CAAC,iBAAiBipI,EAAI4+C,qBAAqB,IAAI,GAAG5+C,EAAIn9E,GAAG,KAAMm9E,EAAIyvE,WAAWzvE,EAAI0vE,eAAep/N,OAAO,EAAGszE,EAAG,MAAM,CAACyP,YAAY,8BAA8B,CAACzP,EAAG,MAAM,CAACyP,YAAY,mCAAmC,CAACzP,EAAG,MAAM,CAACyP,YAAY,cAAcgG,YAAY,CAAC,QAAU,WAAW,CAAC2mE,EAAIn9E,GAAG,0BAA0Be,EAAG,MAAM,CAACrlE,MAAM,CAAC,IAAM,EAAQ,MAAgDwY,GAAG,CAAC,MAAQ,SAASkqD,GAAQ++E,EAAIyvE,WAAU,QAAYzvE,EAAIn9E,GAAG,KAAKm9E,EAAI19E,GAAI09E,EAAkB,gBAAE,SAAS2vE,GAAY,OAAO/rJ,EAAG,KAAK,CAACyP,YAAY,YAAY,CAACzP,EAAG,KAAK,CAACo8E,EAAIn9E,GAAG,IAAIm9E,EAAI39E,GAAGstJ,EAAWtC,OAAO,KAAKrtE,EAAI39E,GAAGstJ,EAAWrC,QAAQ,OAAOttE,EAAI39E,GAAuB,IAApBstJ,EAAWt9L,OAAW,MAAM,UAAU2tH,EAAIn9E,GAAG,KAAKe,EAAG,KAAK,CAACo8E,EAAIn9E,GAAG,QAAQm9E,EAAI39E,GAAGstJ,EAAW5D,mBAAmB/rE,EAAIn9E,GAAG,KAAKe,EAAG,KAAK,CAACo8E,EAAIn9E,GAAG,QAAQm9E,EAAI39E,GAAGstJ,EAAW3D,eAAehsE,EAAIn9E,GAAG,KAAKe,EAAG,KAAK,CAACo8E,EAAIn9E,GAAG,WAAWm9E,EAAI39E,GAAGstJ,EAAWnE,sBAAsBxrE,EAAIn9E,GAAG,KAAKe,EAAG,KAAK,CAACo8E,EAAIn9E,GAAG,aAAam9E,EAAI39E,GAAGstJ,EAAWhE,yBAAyB3rE,EAAIn9E,GAAG,KAAKe,EAAG,KAAK,CAACo8E,EAAIn9E,GAAG,UAAUm9E,EAAI39E,GAAGstJ,EAAW1E,YAAY,OAAOjrE,EAAIn9E,GAAG,KAAKe,EAAG,KAAK,CAACo8E,EAAIn9E,GAAG,UAAUm9E,EAAI39E,GAAGstJ,EAAWvE,qBAAqB,OAAOprE,EAAIn9E,GAAG,KAAKe,EAAG,KAAK,CAACo8E,EAAIn9E,GAAG,cAAcm9E,EAAI39E,GAAGstJ,EAAWrE,gBAAgB,SAAStrE,EAAIn9E,GAAG,KAAKe,EAAG,KAAK,CAACo8E,EAAIn9E,GAAG,YAAYm9E,EAAI39E,GAAGstJ,EAAWlE,gBAAgB,OAAOzrE,EAAIn9E,GAAG,KAAKe,EAAG,KAAK,CAACo8E,EAAIn9E,GAAG,UAAUm9E,EAAI39E,GAAGstJ,EAAW/D,uBAAuB5rE,EAAIn9E,GAAG,KAAKe,EAAG,KAAK,CAACo8E,EAAIn9E,GAAG,UAAUm9E,EAAI39E,GAAGstJ,EAAWxE,YAAY,OAAOnrE,EAAIn9E,GAAG,KAAKe,EAAG,KAAK,CAACo8E,EAAIn9E,GAAG,UAAUm9E,EAAI39E,GAAGstJ,EAAWtE,oBAAoB,OAAOrrE,EAAIn9E,GAAG,KAAKe,EAAG,KAAK,CAACo8E,EAAIn9E,GAAG,gBAAgBm9E,EAAI39E,GAAGstJ,EAAWtE,oBAAoB,SAASrrE,EAAIn9E,GAAG,KAAKe,EAAG,KAAK,CAACo8E,EAAIn9E,GAAG,aAAam9E,EAAI39E,GAAGstJ,EAAWjE,eAAe,gBAAe,KAAK1rE,EAAIl9E,SAC1iG,IDWpB,EACA,KACA,WACA,M,SEXF,CAAC8sJ,GAAoBC,GAAwBC,IAA2Bh2L,SAAQ,SAAAhnC,GAC5EA,EAAKs/E,QAAU,SAAArE,GACXA,EAAIlG,UAAU/0E,EAAK3G,KAAM2G,OAIlB,QACX88N,sBACAC,2BACAC,8BCbwM,GCO5M,CACI3jO,KAAJ,mBACImuB,MAAJ,CACQ0F,MAAR,CACY9vB,KAAZ,gBACYsqM,UAAZ,GAEQp4K,OAAR,CACYlyB,KAAZ,OACYsqE,QAAZ,QAEQu1J,YAAR,CACY7/N,KAAZ,OACYsqE,QAAZ,WAEQqzJ,UAAR,CACY39N,KAAZ,OACYsqM,UAAZ,GAEQw1B,UAAR,CACY9/N,KAAZ,OACYsqE,QAAZ,QAEQkzJ,SAAR,CACYx9N,KAAZ,gBACYsqE,QAAZ,GAEQy1J,QAAR,CACY//N,KAAZ,OACYsqE,QAAZ,YAGItpD,KAAJ,WACQ,MAAO,CACHg/M,YAAZ,kBACYC,kBAAZ,cACYC,OAAZ,EACYC,eAAZ,CACgBjuM,OAAhB,YACgBpC,MAAhB,WACgB,mBAAhB,oBAIIoa,QAAJ,CACQk2L,UAAR,WACY,IAAIlwB,EACJxR,OAAOwC,KAAKziM,KAAKk/N,UAAU5hB,IAAvC,0CACgB7L,EAAhB,OACgBzxM,KAAKwhO,kBAArB,EACgB5hN,YAAW,WACP2qB,EAAE,6BAA6B/lB,IAAI,aAAvD,qBAEA,8BACgBjE,QAAQi2I,IAAI35I,EAAK1U,QACjC,eACgB,IAAI+W,EAApB,KACgBU,YAAW,WACP,GAApB,OAGwB,OAFAV,EAAKuiN,OAA7B,OACwBviN,EAAK0iN,kBAGL1iN,EAAKyiN,cAE7B,MACA,aAEQC,gBAAR,WACY5hO,KAAKq7E,MAAM,qBAAvB,cAGI2H,QAAJ,WAEQhjF,KAAK2hO,YACLp3L,EAAE,6BAA6BklF,OAAO,WAClCzvH,KAAKuhO,aAAjB,6FACA,cCjEe,I,OAXC,YACd,ICTW,WAAa,IAAIlwE,EAAIrxJ,KAASyyG,EAAG4+C,EAAIhgF,eAAmB4D,EAAGo8E,EAAI9wE,MAAMtL,IAAIw9B,EAAG,OAAOx9B,EAAG,MAAM,CAACyP,YAAY,qBAAqBpgE,MAAO+sI,EAAkB,gBAAG,CAACp8E,EAAG,MAAM,CAACyP,YAAY,2BAA2BpgE,MAAO,oBAAoB+sI,EAAIiwE,QAAQ,UAAUjwE,EAAImwE,kBAAkB,MAAOnwE,EAAIn9E,GAAG,KAAKe,EAAG,MAAM,CAACyP,YAAY,eAAepgE,MAAO,SAAS+sI,EAAIgwE,WAAY,CAAChwE,EAAIn9E,GAAGm9E,EAAI39E,GAAG29E,EAAIkwE,oBACrX,IDWpB,EACA,KACA,WACA,M,SEbFM,GAAiBp+I,QAAU,SAAArE,GACvBA,EAAIlG,UAAU2oJ,GAAiBrkO,KAAMqkO,KAG1BA,UCN2L,GC2B1M,CACErkO,KAAM,iBACNmuB,MAAO,CACL0F,MAAO,CACL9vB,KAAM,CAAC26D,OAAQpvD,QACf++D,QAAS,KAEXp4C,OAAQ,CACNlyB,KAAM,CAAC26D,OAAQpvD,QACf++D,QAAS,IAEXkjD,gBAAiB,CACfxtH,KAAMuL,OACN++D,QAAS,WAEXuxI,WAAY,CACV77M,KAAMuL,OACN++D,QAAS,WAEXgrC,MAAO,CACLt1G,KAAMuL,OACN++D,QAAS,QAEX30C,QAAS,CACP31B,KAAM,CAAC26D,OAAQpvD,QACf++D,QAAS,GAEXi2J,MAAO,CACLvgO,KAAM,CAAC26D,OAAQpvD,QACf++D,QAAS,IAGbmX,QAhCF,WAgCA,WACIhjF,KAAK25B,MAAQojJ,aAAY,WACvB,IAAIh6K,EAAIwnC,EAAE,2BAA2BlZ,QACrC,EAAN,2CACA,MAEE9O,KAtCF,WAuCI,MAAO,CACLoX,MAAO,KACPooM,eAAgB/hO,KAAKk3B,UAGzBuU,QAAS,CAEP90B,MAFJ,WAEA,WACM4zB,EAAE,2BAA2B/lB,IAAI,CAC/BiqE,WAAY,SAEd7uE,YAAW,WACT2qB,EAAE,2BAA2B/lB,IAAI,CAC/BiqE,WAAY,SAAW,EAAjC,qBAEA,MC9De,I,OAXC,YACd,ICTW,WAAa,IAAiBgkB,EAATzyG,KAAgBqxE,eAAmB4D,EAAnCj1E,KAA0CugF,MAAMtL,IAAIw9B,EAAG,OAAOx9B,EAAG,MAAM,CAACyP,YAAY,kBAAkBpgE,MAAM,CACxI+M,MAAOrxB,KAAKqxB,MAAQ,KACpBoC,OAAQzzB,KAAKyzB,OAAS,KACtBs7F,gBAAiB/uH,KAAK+uH,kBACtB,CAAC95C,EAAG,MAAM,CAACyP,YAAY,yBAAyBpgE,MAAM,CAClD+M,MAAOrxB,KAAKk3B,QAAU,IACtB63F,gBAAiB/uH,KAAKo9M,WACtB3uH,WAAY,SAAWzuF,KAAK8hO,MAAQ,cAPZ9hO,KAQnBk0E,GAAG,KAAKe,EAAG,MAAM,CAACyP,YAAY,uBAAuBpgE,MAAM,CAAG+0F,WAAYr5G,KAAKyzB,OAAS,KAAMojF,MAAO72G,KAAK62G,QAAU,CARjG72G,KAQsGk0E,GAAG,SARzGl0E,KAQsH0zE,GAAG1zE,KAAK+hO,eAAiB,KAAK,cAChK,IDGpB,EACA,KACA,KACA,M,SEbFC,GAAev+I,QAAU,SAASrE,GAC9BA,EAAIlG,UAAU8oJ,GAAexkO,KAAMwkO,KAGxBA,UCyGFpjN,GAAS,SAACzW,EAAKS,EAAQrH,GAClCgpC,EAAEwsK,cACFxsK,EAAEusK,aAAa3uM,EAAc,YAAT5G,EAAqB,UAAY,IACrDqe,YAAW,WACT2qB,EAAEwsK,gBACQ,IAATnuM,IAIQq5N,GAAwB,SAACC,EAAMhkO,EAAOoI,GACjD,OAAI6jC,MAAMjsC,GACDoI,EAAS,IAAItD,MAAMm/N,GAAWC,eAElClmK,OAAOpU,UAAUoU,OAAOh+D,IAGzBg+D,OAAOh+D,GAAS,GAAKg+D,OAAOh+D,GAAS,GAChCoI,EAAS,IAAItD,MAAMyS,KAAK4sN,mBAEjC/7N,IALSA,EAAS,IAAItD,MAAMm/N,GAAWG,cAS5BC,GAAwB,SAACL,EAAMhkO,EAAOoI,GACjD,IAAI,iBAAiBsI,KAAK1Q,KAAW,iBAAiB0Q,KAAK1Q,GACxD,OAAOoI,EAAS,IAAItD,MAAMyS,KAAK+sN,+BAKvBC,GAAuB,SAACP,EAAMhkO,EAAOoI,GAChD,IAAI,iBAAiBsI,KAAK1Q,GACxB,OAAOoI,EAAS,IAAItD,MAAMyS,KAAK+sN,+BAKtBE,GAAuB,SAACR,EAAMhkO,EAAOoI,GAChD,OAAIpI,EAAMyD,QAAU,EAAU2E,EAAS,IAAItD,MAAMm/N,GAAWQ,yBACxDx4L,MAAMjsC,GAAeoI,EAAS,IAAItD,MAAMm/N,GAAWC,gBAClDlkO,EAAQ,IAAMA,EAAQ,KAAoBoI,EAAS,IAAItD,MAAMm/N,GAAWS,yBACzE,UAAUh0N,KAAK1Q,GAAeoI,EAAS,IAAItD,MAAMm/N,GAAWU,sCAAhE,GAIWC,GAAiB,SAACZ,EAAMhkO,EAAOoI,GAC1C,GAAoB,IAAjBpI,EAAMyD,OAAc,OAAO2E,EAAS,IAAItD,MAAMm/N,GAAWY,6BAGjDC,GAAc,SAACd,EAAMhkO,EAAOoI,GACvC,MAAI,iBAAiBsI,KAAK1Q,GAGvBA,EAAM4uD,WAAW,MACXxmD,EAAS,IAAItD,MAAMm/N,GAAWc,+BADvC,EAFS38N,EAAS,IAAItD,MAAMm/N,GAAWe,4BAuB5Bf,GAAaj6B,OAAOC,IAAIC,SAASC,MAGjC86B,GAAmB,CAC9B,CACEprB,MAAOtiM,KAAK2tN,gCACZ5lO,KAAMiY,KAAK2tN,gCACXllO,MAAOuX,KAAK2tN,iCAEd,CACErrB,MAAOtiM,KAAK4tN,qCACZ7lO,KAAMiY,KAAK4tN,qCACXnlO,MAAOuX,KAAK4tN,sCAEd,CACEtrB,MAAOtiM,KAAK6tN,WACZ9lO,KAAMiY,KAAK6tN,WACXplO,MAAOuX,KAAK6tN,YAEd,CACEvrB,MAAOtiM,KAAKwxM,oBACZzpN,KAAMiY,KAAKwxM,oBACX/oN,MAAOuX,KAAKwxM,sBAKHsc,GAAmB,CAC9B,CAACxrB,MAAOoqB,GAAWiB,gCAAiCv+N,IAvClB,IAwC/B6rN,OAAQ,0CAA2C8S,UAAW,+CACjE,CAACzrB,MAAOoqB,GAAWkB,qCAAsCx+N,IAvClB,IAwCpC6rN,OAAQ,+CAAgD8S,UAAW,oDACtE,CAACzrB,MAAOoqB,GAAWsB,iCAAkC5+N,IA/CjB,IAgDjC6rN,OAAQ,4CAA6C8S,UAAW,iDACnE,CAACzrB,MAAOoqB,GAAWlb,oBAAqBpiN,IArCL,IAsChC6rN,OAAQ,wCAAyC8S,UAAW,8CAIpDE,GAAiB,SAAC7mN,GAC7B,GAAGA,GAAQA,EAAKnY,KACd,OAAOw3D,OAAOr/C,EAAKnY,OACjB,KAAK,OACJiyM,OAAOgtB,OAAO,CACXhkD,MAAOwiD,GAAWyB,gBAClB72K,SAAS,4BAA6Bo1K,GAAW0B,YAAY,OAC7D72M,QAAQ,CAAC,MACT80L,GAAG,WACC9hN,KAAKi9K,WAGZ,MAED,KAAK,OACH05B,OAAOgtB,OAAO,CACVhkD,MAAOwiD,GAAWyB,gBAClB72K,SAAS,4BAA6Bo1K,GAAW2B,YAAY,OAC7D92M,QAAQ,CAAC,MACT80L,GAAG,WACC9hN,KAAKi9K,WAGb,MAEF,KAAK,OACH05B,OAAOgtB,OAAO,CACVhkD,MAAOwiD,GAAWyB,gBAClB72K,SAAS,4BAA6Bo1K,GAAW4B,YAAY,OAC7D/2M,QAAQ,CAAC,MACT80L,GAAG,WACC9hN,KAAKi9K,WAGb,MAEF,KAAK,OACH05B,OAAOgtB,OAAO,CACVhkD,MAAOwiD,GAAWyB,gBAClB72K,SAAS,gDAAgDlwC,EAAK1U,IAAI,OAClE6kB,QAAQ,CAAC,MACT80L,GAAG,WACC9hN,KAAKi9K,WAGb,MAEF,KAAK,OACH05B,OAAOgtB,OAAO,CACZhkD,MAAOwiD,GAAWyB,gBAClB72K,SAAS,gDAAkDo1K,GAAW6B,yBAA2B,OACjGh3M,QAAQ,CAAC,MACT80L,GAAG,WACD9hN,KAAKi9K,WAGT,MAEF,KAAK,IAIL,KAAK,OACHr+J,GAAOujN,GAAWyB,gBAAiB,GACnC,MAEF,KAAK,OACHhlN,GAAOujN,GAAW8B,YAAa,GAC/B,MAEF,KAAK,OACHrlN,GAAOujN,GAAW+B,YAAa,GAC/B,MAEF,KAAK,OACHtlN,GAAOujN,GAAWgC,YAAa,GAC/B,MAEF,KAAK,OACHvlN,GAAOujN,GAAWiC,YAAa,GAC/B,MAEF,QACExlN,GAAOujN,GAAWtlN,EAAK1U,KAAM,QAKjCyW,GAAOujN,GAAWyB,gBAAiB,I,yHC9RvC,IC1ByN,GD0BzN,CACEpmO,KAAM,oBACNmuB,MAAO,CACL04M,mBAAoB,CAAE9iO,KAAMuL,OAAQ++L,UAAxC,GACIy4B,mBAAoB,CAAE/iO,KAAM5D,OAAQkuM,UAAU,GAC9CgP,UAAJ,0BACI0pB,UAAW,CAAf,0BACIC,YAAa,CAAjB,0BAEE3/J,MAAO,CACLy/J,mBADJ,SACA,GAEM,OADAtkO,KAAKykO,WAAaznN,EAAEkqC,UAAUriD,GACvBA,IAGX0d,KAAF,iBACI,MAAO,CACL,KAAN,0BACM,WAAN,wBACM,MAAN,eACM,UAAN,eACM,YAAN,iBACM,YAAN,CACQ/kB,KAAM,CAAC,CAAEquM,UAAU,EAAOprL,QAAShL,KAAKivN,mBAAoBx7M,QAAS,SACrE08K,GAAI,CAAC,CAAEiG,UAAU,EAAMprL,QAAShL,KAAKkvN,WAAYz7M,QAAS,UAE5D,WAAN,GACM,eAAN,UDqHsC,ICpHtC,0BADA,KDuHgC,ICrHhC,oBAFA,KDyHoC,ICtHpC,wBAHA,KD2HyC,ICvHzC,0BAJA,KDiIqC,IC5HrC,kBALA,KASEuiB,QAAS,CAEPm5L,0BAA2B,WACzB5kO,KAAKukO,WAAY,GAGnBM,mBAAoB,WAClB7kO,KAAKwgF,MAAMskJ,mBAAmB74B,SAAS,SAAUgf,GAC/C,GAAIA,EAAO,CACTzyI,QAAQkuI,YAAY,cACpB,IAAV,EDwGyC,MCxGzC,uBDsGoC,ICtGpC,uBACA,GACY,GAAZ,mBACY,MAAZ,WACY,QAAZ,4BACY,MAAZ,0BACY,eAAZ,EACY,QAAZ,QAEUzmB,OAAOwC,KAAK,8CAA+CljK,GAAO6E,QAAQ,SAAUy9B,GAClF,GAAZ,iCACY,KAAZ,aACY,KAAZ,4BACA,8BACY,GAAZ,MACA,gBACY,QAAZ,kBAGA,eExEe,I,OAXC,YACd,ICTW,WAAa,IAAIwvF,EAAIrxJ,KAASyyG,EAAG4+C,EAAIhgF,eAAmB4D,EAAGo8E,EAAI9wE,MAAMtL,IAAIw9B,EAAG,OAAOx9B,EAAG,aAAa,CAACrlE,MAAM,CAAC,KAAOyhJ,EAAIkzE,UAAU,MAAQ,IAAI,MAAQ,KAAK,CAACtvJ,EAAG,KAAK,CAACrlE,MAAM,CAAC,KAAO,UAAUmgE,KAAK,UAAU,CAACshF,EAAIn9E,GAAGm9E,EAAI39E,GAAG29E,EAAI0zE,cAAc1zE,EAAIgzE,wBAAwBhzE,EAAIn9E,GAAG,KAAKe,EAAG,MAAM,CAACyP,YAAY,uBAAuBgG,YAAY,CAAC,QAAU,YAAY,gBAAgB,oBAAoB,aAAa,mBAAmB,CAACzV,EAAG,UAAU,CAACphB,IAAI,qBAAqB6wB,YAAY,qBAAqB90E,MAAM,CAAC,MAAQyhJ,EAAIozE,WAAW,MAAQpzE,EAAI2zE,YAAY,cAAc,UAAU,CAAC/vJ,EAAG,eAAe,CAACrlE,MAAM,CAAC,MAAQyhJ,EAAI57I,KAAKwvN,cAAc,KAAO,SAAS,CAAChwJ,EAAG,WAAW,CAACyV,YAAY,CAAC,MAAQ,SAAS96E,MAAM,CAAC,UAAY,GAAG,YAAcyhJ,EAAI57I,KAAKivN,oBAAoBprJ,MAAM,CAACp7E,MAAOmzJ,EAAIozE,WAAe,KAAEn+N,SAAS,SAAUu9L,GAAMxyC,EAAIlwE,KAAKkwE,EAAIozE,WAAY,OAAQ5gC,IAAM/mH,WAAW,sBAAsB,GAAGu0E,EAAIn9E,GAAG,KAAKe,EAAG,eAAe,CAACrlE,MAAM,CAAC,MAAQ,KAAK,KAAO,OAAO,CAACqlE,EAAG,WAAW,CAACyV,YAAY,CAAC,MAAQ,SAAS96E,MAAM,CAAC,UAAY,GAAG,SAAW,GAAG,YAAcyhJ,EAAI57I,KAAKkvN,YAAYrrJ,MAAM,CAACp7E,MAAOmzJ,EAAIozE,WAAa,GAAEn+N,SAAS,SAAUu9L,GAAMxyC,EAAIlwE,KAAKkwE,EAAIozE,WAAY,KAAM5gC,IAAM/mH,WAAW,oBAAoB,IAAI,IAAI,GAAGu0E,EAAIn9E,GAAG,KAAKe,EAAG,0BAA0B,CAACrlE,MAAM,CAAC,KAAO,UAAUmgE,KAAK,UAAU,CAACkF,EAAG,gBAAgB,CAAC7sD,GAAG,CAAC,MAAQipI,EAAIuzE,4BAA4B,CAACvzE,EAAIn9E,GAAGm9E,EAAI39E,GAAG29E,EAAI57I,KAAKq3F,WAAWukD,EAAIn9E,GAAG,KAAKe,EAAG,gBAAgB,CAAC7sD,GAAG,CAAC,MAAQipI,EAAIwzE,qBAAqB,CAACxzE,EAAIn9E,GAAGm9E,EAAI39E,GAAG29E,EAAI57I,KAAKyvN,cAAc,IAAI,KACx9C,IDWpB,EACA,KACA,WACA,M,SEfuN,GCqEzN,CACE1nO,KAAM,oBACNmuB,MAAO,CACL04M,mBAAoB,CAAE9iO,KAAMuL,OAAQ++L,UAAU,GAC9Cy4B,mBAAoB,CAAE/iO,KAAM5D,OAAQkuM,UAAU,GAC9CgP,UAAJ,0BACInG,UAAJ,2BACI6vB,UAAW,CAAf,0BACIC,YAAa,CAAjB,0BAEE3/J,MAAO,CACLy/J,mBAAoB,SAAxB,GACM,OAAOz/N,GAET0/N,UAAW,SAAf,GACMvkO,KAAKmlO,uBAAyBtgO,EACpC,IACQ7E,KAAKolO,uBAAwB,EAC7BplO,KAAKwgF,MAAM6kJ,mBAAmBC,cAC9BtlO,KAAKulO,mBAIXhjN,KAAM,WACR,OACM9M,KAAN,0BACMkqM,MAAO3/M,KAAK66M,UACZnG,UAAW10M,KAAK00M,UAChB8wB,WAAYxlO,KAAKqkO,mBACjBoB,uBNwEgC,IMxEtC,iBN0EgC,IMzE1BC,qBN2E8B,IM3EpC,0BN6EyC,IM5EnCC,sBNkF+B,IMjF/BR,uBAAwBnlO,KAAKukO,UAC7Ba,uBAAuB,EACvBQ,UAAW,CACTp3N,GAAI,GACJhR,KAAM,GACNooM,GAAI,GACJigC,UAAW,GACXC,iBAAkB,GAClBx4L,KAAM,IAER03L,YAAa,CACXxnO,KAAM,CACd,mFAEQooM,GAAI,CACZ,2EAEQigC,UAAW,CACnB,6EAEQC,iBAAkB,CAC1B,sFACA,+BAEQx4L,KAAM,CACd,+EAGMy4L,uBAAuB,IAG3Bt6L,QAAS,CAEPu6L,iBAFJ,WAGMhmO,KAAKmlO,wBAAyB,EAC9B,IAAN,OACMxuB,OAAO8L,QAAQva,OAAOC,IAAIC,SAASC,MAAM49B,cAC/C,oFACQ,KAAR,QACQ,EAAR,uCACQ,EAAR,0BACQ,EAAR,yBACQ,EAAR,6CAIIC,0BAfJ,WAgBM,KAAN,gBACM,KAAN,4BAGIC,mBAAoB,WACxB,mDACA,MACU3tJ,QAAQkuI,YAAY,cACpB,IAAV,ENoByC,MMpBzC,uBNkBoC,IMlBpC,uBACA,GACY,GAAZ,kBACY,MAAZ,WACY,aAAZ,gCACY,YAAZ,2BACY,UAAZ,yBACY,UAAZ,kCACY,eAAZ,EACY,iBAAZ,uCACY,KAAZ,4BAEUzmB,OAAOwC,KAAK,8CAA+CljK,GAAO6E,QAAQ,SAAUy9B,GAClF,GAAZ,iCACY,KAAZ,2BACY,KAAZ,iBACA,8BACY,GAAZ,MACA,gBACY,QAAZ,kBAGA,aAGI0jK,cAjDJ,WAkDMvlO,KAAK4lO,UAAY,CACf,GAAR,8BACQ,iBAAR,YAEM5lO,KAAK+lO,uBAAwB,EAC7B/lO,KAAKolO,uBAAwB,EAC7BplO,KAAKmlO,wBAAyB,EAC9BnlO,KAAKukO,WAAY,EACjBvkO,KAAKwgF,MAAM6kJ,mBAAmBC,eAIhCc,UAAW,SAAf,GACUhqN,EAAIA,EAAE0F,cAAV,IACIukN,EAAaC,mBAEjB,GAAN,YAEQ,GAHR,4CAGA,QAEU,YADA,KAAV,0BAG8B,GAAlBtmO,KAAK00M,WAAsB2xB,EAAWz3N,KAAKwN,GAC7C,KAAV,yBAEU,KAAV,6BC5Le,I,OAXC,YACd,ICTW,WAAa,IAAIi1I,EAAIrxJ,KAASyyG,EAAG4+C,EAAIhgF,eAAmB4D,EAAGo8E,EAAI9wE,MAAMtL,IAAIw9B,EAAG,OAAOx9B,EAAG,MAAM,CAACA,EAAG,aAAa,CAACrlE,MAAM,CAAC,KAAOyhJ,EAAI8zE,uBAAuB,MAAQ,KAAK,CAAClwJ,EAAG,KAAK,CAACrlE,MAAM,CAAC,KAAO,UAAUmgE,KAAK,UAAU,CAACshF,EAAIn9E,GAAGm9E,EAAI39E,GAAG29E,EAAI57I,KAAK8wN,UAAUl1E,EAAIn9E,GAAG,KAAM,CAACm9E,EAAIq0E,qBAAqBr0E,EAAIm1E,2BAA2BtoL,SAASmzG,EAAIgzE,oBAAqBpvJ,EAAG,MAAM,CAACyP,YAAY,uBAAuBgG,YAAY,CAAC,QAAU,YAAY,gBAAgB,oBAAoB,aAAa,mBAAmB,CAACzV,EAAG,IAAI,CAACyV,YAAY,CAAC,cAAc,aAAa,CAAC2mE,EAAIn9E,GAAGm9E,EAAI39E,GAAG29E,EAAI57I,KAAKgxN,mCAAmCp1E,EAAIl9E,KAAKk9E,EAAIn9E,GAAG,KAAM,CAACm9E,EAAIo0E,uBAAuBp0E,EAAIq1E,iBAAiBr1E,EAAIs0E,uBAAuBznL,SAASmzG,EAAIgzE,oBAAqBpvJ,EAAG,MAAM,CAACyP,YAAY,uBAAuBgG,YAAY,CAAC,QAAU,YAAY,gBAAgB,oBAAoB,aAAa,mBAAmB,CAACzV,EAAG,IAAI,CAACyV,YAAY,CAAC,cAAc,aAAa,CAAC2mE,EAAIn9E,GAAGm9E,EAAI39E,GAAG29E,EAAI57I,KAAKkxN,yBAAyBt1E,EAAIl9E,KAAKk9E,EAAIn9E,GAAG,KAAKe,EAAG,0BAA0B,CAACrlE,MAAM,CAAC,KAAO,UAAUmgE,KAAK,UAAU,CAACkF,EAAG,gBAAgB,CAAC7sD,GAAG,CAAC,MAAQ,SAASkqD,GAAQ++E,EAAI8zE,wBAAuB,KAAS,CAAC9zE,EAAIn9E,GAAGm9E,EAAI39E,GAAG29E,EAAI57I,KAAKq3F,WAAWukD,EAAIn9E,GAAG,KAAKe,EAAG,gBAAgB,CAAC7sD,GAAG,CAAC,MAAQipI,EAAI20E,mBAAmB,CAAC30E,EAAIn9E,GAAGm9E,EAAI39E,GAAG29E,EAAI57I,KAAKyvN,cAAc,IAAI,GAAG7zE,EAAIn9E,GAAG,KAAKe,EAAG,aAAa,CAACrlE,MAAM,CAAC,KAAOyhJ,EAAI+zE,sBAAsB,MAAQ,IAAI,MAAQ,KAAK,CAACnwJ,EAAG,KAAK,CAACrlE,MAAM,CAAC,KAAO,UAAUmgE,KAAK,UAAU,CAACshF,EAAIn9E,GAAGm9E,EAAI39E,GAAG29E,EAAI57I,KAAKmxN,kBAAkBv1E,EAAIn9E,GAAG,KAAKe,EAAG,MAAM,CAACyP,YAAY,uBAAuBgG,YAAY,CAAC,QAAU,YAAY,gBAAgB,oBAAoB,aAAa,mBAAmB,CAACzV,EAAG,MAAM,CAACyP,YAAY,oBAAoB,CAACzP,EAAG,MAAM,CAACyP,YAAY,gBAAgB,CAAC2sE,EAAIn9E,GAAGm9E,EAAI39E,GAAG29E,EAAI57I,KAAKoxN,cAAcx1E,EAAIn9E,GAAG,KAAKe,EAAG,MAAM,CAACyP,YAAY,qBAAqB,CAACzP,EAAG,OAAO,CAACo8E,EAAIn9E,GAAGm9E,EAAI39E,GAAG29E,EAAI57I,KAAKwvN,eAAe,OAAO5zE,EAAIn9E,GAAG,KAAKe,EAAG,OAAO,CAACrlE,MAAM,CAAC,MAAQyhJ,EAAIizE,mBAAmB9mO,MAAM6zJ,EAAIizE,mBAAmB1+B,KAAK,CAACv0C,EAAIn9E,GAAG,uBAAuBm9E,EAAI39E,GAAG29E,EAAIizE,mBAAmB9mO,MAAM6zJ,EAAIizE,mBAAmB1+B,IAAI,0BAA0Bv0C,EAAIn9E,GAAG,KAAKe,EAAG,MAAM,CAACyP,YAAY,oBAAoBgG,YAAY,CAAC,gBAAgB,SAAS,CAACzV,EAAG,OAAO,CAACo8E,EAAIn9E,GAAG,SAASm9E,EAAIn9E,GAAG,KAAKe,EAAG,OAAO,CAACo8E,EAAIn9E,GAAGm9E,EAAI39E,GAAG29E,EAAIizE,mBAAmB1+B,WAAWv0C,EAAIn9E,GAAG,KAAKe,EAAG,MAAM,CAACyP,YAAY,eAAegG,YAAY,CAAC,OAAS,OAAO,cAAc,OAAO,MAAQ,SAAS,CAAC2mE,EAAIn9E,GAAGm9E,EAAI39E,GAAG29E,EAAI57I,KAAKmwN,cAAcv0E,EAAIn9E,GAAG,KAAKe,EAAG,UAAU,CAACphB,IAAI,qBAAqB6wB,YAAY,qBAAqB90E,MAAM,CAAC,MAAQyhJ,EAAIu0E,UAAU,MAAQv0E,EAAI2zE,YAAY,cAAc3zE,EAAImzE,cAAc,CAACvvJ,EAAG,eAAe,CAACrlE,MAAM,CAAC,MAAQyhJ,EAAI57I,KAAKwvN,cAAc,KAAO,SAAS,CAAChwJ,EAAG,WAAW,CAACyV,YAAY,CAAC,MAAQ,oBAAoB96E,MAAM,CAAC,UAAY,GAAG,YAAcyhJ,EAAI57I,KAAKivN,oBAAoBprJ,MAAM,CAACp7E,MAAOmzJ,EAAIu0E,UAAc,KAAEt/N,SAAS,SAAUu9L,GAAMxyC,EAAIlwE,KAAKkwE,EAAIu0E,UAAW,OAAQ/hC,IAAM/mH,WAAW,qBAAqB,GAAGu0E,EAAIn9E,GAAG,KAAKe,EAAG,eAAe,CAACrlE,MAAM,CAAC,MAAQ,KAAK,KAAO,OAAO,CAACqlE,EAAG,WAAW,CAACyV,YAAY,CAAC,MAAQ,oBAAoB96E,MAAM,CAAC,UAAY,GAAG,YAAcyhJ,EAAI57I,KAAKkvN,YAAYv8M,GAAG,CAAC,MAAQ,SAASkqD,GAAQ,OAAO++E,EAAI+0E,UAAU/0E,EAAIu0E,UAAUhgC,MAAMtsH,MAAM,CAACp7E,MAAOmzJ,EAAIu0E,UAAY,GAAEt/N,SAAS,SAAUu9L,GAAMxyC,EAAIlwE,KAAKkwE,EAAIu0E,UAAW,KAAM/hC,IAAM/mH,WAAW,mBAAmB,GAAGu0E,EAAIn9E,GAAG,KAAKe,EAAG,eAAe,CAACrlE,MAAM,CAAC,MAAQ,YAAY,KAAO,cAAc,CAACqlE,EAAG,WAAW,CAACyV,YAAY,CAAC,MAAQ,oBAAoB96E,MAAM,CAAC,UAAY,GAAG,YAAcyhJ,EAAI57I,KAAKqxN,cAAcxtJ,MAAM,CAACp7E,MAAOmzJ,EAAIu0E,UAAmB,UAAEt/N,SAAS,SAAUu9L,GAAMxyC,EAAIlwE,KAAKkwE,EAAIu0E,UAAW,YAAa/hC,IAAM/mH,WAAW,0BAA0B,GAAGu0E,EAAIn9E,GAAG,KAAMm9E,EAAyB,sBAAEp8E,EAAG,eAAe,CAACrlE,MAAM,CAAC,MAAQyhJ,EAAI57I,KAAKsxN,uBAAuB,KAAO,qBAAqB,CAAC9xJ,EAAG,WAAW,CAACyV,YAAY,CAAC,MAAQ,oBAAoB96E,MAAM,CAAC,YAAcyhJ,EAAI57I,KAAKsxN,wBAAwBztJ,MAAM,CAACp7E,MAAOmzJ,EAAIu0E,UAA0B,iBAAEt/N,SAAS,SAAUu9L,GAAMxyC,EAAIlwE,KAAKkwE,EAAIu0E,UAAW,mBAAoB/hC,IAAM/mH,WAAW,+BAA+B,CAAC7H,EAAG,IAAI,CAACrlE,MAAM,CAAC,KAAO,UAAUmgE,KAAK,UAAU,CAACshF,EAAIn9E,GAAG,YAAY,GAAGm9E,EAAIl9E,KAAKk9E,EAAIn9E,GAAG,KAAKe,EAAG,eAAe,CAACrlE,MAAM,CAAC,MAAQyhJ,EAAI57I,KAAKuxN,aAAa,KAAO,SAAS,CAAC/xJ,EAAG,WAAW,CAACyV,YAAY,CAAC,MAAQ,oBAAoB96E,MAAM,CAAC,UAAY,GAAG,YAAcyhJ,EAAI57I,KAAKwxN,eAAe3tJ,MAAM,CAACp7E,MAAOmzJ,EAAIu0E,UAAc,KAAEt/N,SAAS,SAAUu9L,GAAMxyC,EAAIlwE,KAAKkwE,EAAIu0E,UAAW,OAAQ/hC,IAAM/mH,WAAW,qBAAqB,IAAI,IAAI,GAAGu0E,EAAIn9E,GAAG,KAAKe,EAAG,0BAA0B,CAACrlE,MAAM,CAAC,KAAO,UAAUmgE,KAAK,UAAU,CAACkF,EAAG,gBAAgB,CAAC7sD,GAAG,CAAC,MAAQipI,EAAI60E,4BAA4B,CAAC70E,EAAIn9E,GAAGm9E,EAAI39E,GAAG29E,EAAI57I,KAAKq3F,WAAWukD,EAAIn9E,GAAG,KAAKe,EAAG,gBAAgB,CAAC7sD,GAAG,CAAC,MAAQipI,EAAI80E,qBAAqB,CAAC90E,EAAIn9E,GAAGm9E,EAAI39E,GAAG29E,EAAI57I,KAAKyvN,cAAc,IAAI,IAAI,KACvqJ,IDWpB,EACA,KACA,WACA,M,kIE0BF,ICzCyN,GDyCzN,CACE,KAAF,oBACE,MAAF,CACIgC,gBAAiB,CAArB,yBACI7C,mBAAoB,CAAE9iO,KAAMuL,OAAQ++L,UAAU,GAC9Cy4B,mBAAoB,CAAE/iO,KAAM5D,OAAQkuM,UAAU,GAC9C04B,UAAW,CAAf,2BAEE,QAAF,CACI4C,iBAAkB,SAAtB,GAGQ,IAAR,EAFM,OAAN,GAGA,UToHsC,ISnHtC,iBADA,KTsHgC,ISpHhC,WAFA,KTwHoC,ISrHpC,sCAHA,KT0HyC,IStHzC,2CAJA,KTgIqC,IS3HrC,0BALA,GAMA,cARA,MAYE,MAAF,CACI,mBAAJ,YACM,OAAN,GAEI,UAAJ,YACM,KAAN,2BAGE,KAAF,WACI,MAAJ,CACM1xN,KAAMyyL,OAAOC,IAAIC,SAASC,MAC1B++B,uBAAwBpnO,KAAKukO,YAGjC,QAAF,CAEI8C,mBAFJ,WAGMrnO,KAAKonO,wBAAyB,EAC9BpnO,KAAKq7E,MAAM,kBAAkB,IAI/BisJ,mBARJ,WAWM,GAFA9uJ,QAAQkuI,cTyF2B,MSvFzC,yBACQ,IAAR,OACA,4BACUzmB,OAAOwC,KAAK,8BAA+B,CACzC,WAAZ,4DACA,oBACA,QACA,qBACA,eACA,gFAEA,kDAFA,eAKA,uBACA,WACA,aACA,sBACA,0BAEA,WACA,aACA,2BAGcziM,KAAKunO,sBAEnB,6BACY,QAAZ,aACY,GAAZ,UACA,6BACA,iBAGQvnO,KAAKunO,sBAKTA,mBAlDJ,WAmDM,IAAN,kHACA,ET8CyC,MS9CzC,wBT4CoC,IS5CpC,wBACMtnC,OAAOwC,KAAK+kC,EAAW,CACrBh5N,GAAIxO,KAAKskO,mBAAmB91N,GAC5Bi5N,eAAgBjC,IACxB,oBACQ,GAAR,iCACQ,KAAR,0BACQ,KAAR,mBACQ,KAAR,4BACA,6BAEQ,GAAR,iBACQ,QAAR,aACQ,KAAR,qBACQ,KAAR,oBACA,uCE9He,I,OAXC,YACd,ICTW,WAAa,IAAIn0E,EAAIrxJ,KAASyyG,EAAG4+C,EAAIhgF,eAAmB4D,EAAGo8E,EAAI9wE,MAAMtL,IAAIw9B,EAAG,OAAOx9B,EAAG,aAAa,CAACrlE,MAAM,CAAC,KAAOyhJ,EAAI+1E,uBAAuB,MAAQ,KAAK,CAACnyJ,EAAG,KAAK,CAACrlE,MAAM,CAAC,KAAO,UAAUmgE,KAAK,UAAU,CAACshF,EAAIn9E,GAAGm9E,EAAI39E,GAAG29E,EAAI57I,KAAKqxH,SAASuqB,EAAIn9E,GAAG,KAAKe,EAAG,MAAM,CAACA,EAAG,KAAK,CAACyP,YAAY,uBAAuB,CAAC2sE,EAAIn9E,GAAGm9E,EAAI39E,GAAG29E,EAAI57I,KAAKiyN,0BAA0Br2E,EAAIn9E,GAAG,KAAKe,EAAG,IAAI,CAACyP,YAAY,yBAAyB,CAAC2sE,EAAIn9E,GAAGm9E,EAAI39E,GAAG29E,EAAI57I,KAAKkyN,4BAA4Bt2E,EAAIn9E,GAAG,KAAKe,EAAG,MAAM,CAACyP,YAAY,uBAAuBgG,YAAY,CAAC,QAAU,YAAY,gBAAgB,oBAAoB,aAAa,mBAAmB,CAACzV,EAAG,MAAM,CAACyP,YAAY,oBAAoB,CAACzP,EAAG,MAAM,CAACyP,YAAY,4BAA4B,CAACzP,EAAG,QAAQ,CAACyV,YAAY,CAAC,MAAQ,QAAQ,QAAU,eAAe,aAAa,UAAU,CAAC2mE,EAAIn9E,GAAGm9E,EAAI39E,GAAG29E,EAAI57I,KAAKmyN,YAAY,OAAOv2E,EAAIn9E,GAAG,KAAKe,EAAG,OAAO,CAACo8E,EAAIn9E,GAAGm9E,EAAI39E,GAAG29E,EAAIt9E,GAAG,mBAAPs9E,CAA2BA,EAAIgzE,0BAA0BhzE,EAAIn9E,GAAG,KAAMm9E,EAAmB,gBAAEp8E,EAAG,MAAM,CAACA,EAAG,MAAM,CAACyP,YAAY,2BAA2B90E,MAAM,CAAC,MAAQyhJ,EAAIizE,mBAAmBuD,SAASx2E,EAAIizE,mBAAmBwD,QAAQ,CAAC7yJ,EAAG,QAAQ,CAACyV,YAAY,CAAC,MAAQ,QAAQ,QAAU,eAAe,aAAa,UAAU,CAAC2mE,EAAIn9E,GAAGm9E,EAAI39E,GAAG29E,EAAI57I,KAAKwvN,eAAe,OAAO5zE,EAAIn9E,GAAG,KAAKe,EAAG,OAAO,CAACo8E,EAAIn9E,GAAGm9E,EAAI39E,GAAG29E,EAAIizE,mBAAmBuD,SAAWx2E,EAAIizE,mBAAmBwD,cAAcz2E,EAAIl9E,KAAKk9E,EAAIn9E,GAAG,KAAOm9E,EAAI61E,gBAAkY71E,EAAIl9E,KAArXc,EAAG,MAAM,CAACA,EAAG,MAAM,CAACyP,YAAY,2BAA2B90E,MAAM,CAAC,MAAQyhJ,EAAIizE,mBAAmB9mO,MAAM6zJ,EAAIizE,mBAAmB1+B,KAAK,CAAC3wH,EAAG,QAAQ,CAACyV,YAAY,CAAC,MAAQ,QAAQ,QAAU,eAAe,aAAa,UAAU,CAAC2mE,EAAIn9E,GAAGm9E,EAAI39E,GAAG29E,EAAI57I,KAAKwvN,eAAe,OAAO5zE,EAAIn9E,GAAG,KAAKe,EAAG,OAAO,CAACo8E,EAAIn9E,GAAGm9E,EAAI39E,GAAG29E,EAAIizE,mBAAmB9mO,MAAQ6zJ,EAAIizE,mBAAmB1+B,WAAoBv0C,EAAIn9E,GAAG,KAAKe,EAAG,MAAM,CAACyP,YAAY,4BAA4B,CAACzP,EAAG,QAAQ,CAACyV,YAAY,CAAC,MAAQ,QAAQ,QAAU,eAAe,aAAa,UAAU,CAAC2mE,EAAIn9E,GAAGm9E,EAAI39E,GAAG29E,EAAI57I,KAAKs2M,YAAY,OAAO16D,EAAIn9E,GAAG,KAAKe,EAAG,OAAO,CAACo8E,EAAIn9E,GAAGm9E,EAAI39E,GAAG29E,EAAI61E,gBAAkB71E,EAAIizE,mBAAmBwD,MAAQz2E,EAAIizE,mBAAmB1+B,aAAav0C,EAAIn9E,GAAG,KAAKe,EAAG,0BAA0B,CAACrlE,MAAM,CAAC,KAAO,UAAUmgE,KAAK,UAAU,CAACkF,EAAG,gBAAgB,CAAC7sD,GAAG,CAAC,MAAQipI,EAAIg2E,qBAAqB,CAACh2E,EAAIn9E,GAAGm9E,EAAI39E,GAAG29E,EAAI57I,KAAKq3F,WAAWukD,EAAIn9E,GAAG,KAAKe,EAAG,gBAAgB,CAAC7sD,GAAG,CAAC,MAAQipI,EAAIi2E,qBAAqB,CAACj2E,EAAIn9E,GAAGm9E,EAAI39E,GAAG29E,EAAI57I,KAAKyvN,cAAc,IAAI,KACx0E,IDWpB,EACA,KACA,WACA,M,SEfsI,GCKzH,CACb1nO,KAAM,eACNmuB,MAAO,CACLkvL,UAAU,CAAEt5M,KAAMuL,OAAQ++L,UAAU,GACpC6I,UAAU,CAAEnzM,KAAMoqE,QAASkgI,UAAU,GACrCk8B,eAAgB,CAAExmO,KAAM5D,OAAQkuM,UAAU,GAC1Cm8B,WAAY,CAAEzmO,KAAMuL,OAAQ++L,UAAU,IAExC1sH,WAAY,CAAE8oJ,qBAAmBC,qBAAmBC,qBAAmB5xB,yBACvEh0L,KAAM,WACJ,MAAO,CACL9M,KAAMyyL,OAAOC,IAAIC,SAASC,MAC1B+/B,UAAWA,UACXC,UAAWA,UACX1oB,MAAO3/M,KAAK66M,UACZnG,UAAW10M,KAAK00M,UAChBszB,WAAYhoO,KAAKgoO,WACjBM,aAAc,GACdC,gBAAiB,GACjBC,aAAc,CAAE51B,WAAY,EAAGC,UAAW,EAAGr4E,OAAQ,GACrDiuG,kBAAkB,EAClBC,iBAAiB,EACjBC,iBAAiB,EACjBC,iBAAiB,EACjBvE,mBdiJ8B,IchJ9BwE,eAAe,GACf3B,iBAAiB,EACjB4B,oBAAoB,EACpBC,iBAAiB,EACjBC,cAAe,KAGnBnkK,MAAO,CACLg2I,UAAU,WACR76M,KAAK2/M,MAAQ3/M,KAAK66M,UAClB76M,KAAKipO,oBAGTtwN,QAAS,CACPuwN,WAAY,SAAU9sN,GAClB,OAAKA,GAAU,KAALA,EAGCA,EAFA,KAKfksL,WAAW,SAASlsL,GAChB,OAAKA,GAAU,KAALA,EAGC29L,MAAM39L,GAAG49L,OAAOC,kBAAkB,QAFlC,MAMjB7oL,SAAU,CAER+3M,qBAAsB,WACpB,IAAI5rO,EAAIyf,EAAEkqC,UAAUlnD,KAAKsoO,cACpB/qO,IAAGA,EAAI,IACZ,IAAIglB,EAAO,GAeX,OAdAhlB,EAAE4tC,SAAQ,SAAUhnC,GAChBoe,EAAK/f,KAAK,CACNkhC,OAAQv/B,EAAKu/B,OACblmC,KAAM2G,EAAKilO,QACXxjC,GAAIzhM,EAAKklO,MACT9nO,KAAM4C,EAAKmlO,QACXC,OAAQplO,EAAKolO,OACbl/B,SAAUlmM,EAAKqlO,YACfC,WAAYtlO,EAAKulO,UACjBC,YAAaxlO,EAAKylO,mBAClBC,UAAW1lO,EAAK2lO,iBAChBt7N,GAAIrK,EAAKqK,QAGV+T,GAGTwnN,wBAAyB,WACvB,IAAIxsO,EAAIyf,EAAEkqC,UAAUlnD,KAAKuoO,iBACpBhrO,IAAGA,EAAI,IACZ,IAAIglB,EAAO,GAaX,OAZAhlB,EAAE4tC,SAAQ,SAAUhnC,GAChBoe,EAAK/f,KAAK,CACNgM,GAAGrK,EAAKqK,GACRzI,IAAK5B,EAAK6lO,MACVnC,QAAS1jO,EAAK8lO,YACdnC,MAAO3jO,EAAK+lO,UACZC,QAAShmO,EAAKimO,YACdC,MAAOlmO,EAAKmmO,UACZC,WAAYpmO,EAAKqmO,YACjBl9L,KAAMnpC,EAAKmpC,UAGZ/qB,IAGXkpB,QAAS,CAEPg/L,gBAFO,WAGLzqO,KAAK0qO,uBACA1qO,KAAKyoO,mBACRzoO,KAAK2qO,oBACL3qO,KAAKipO,kBACLjpO,KAAKyoO,kBAAmB,IAI5BmC,mBAXO,WAYL5qO,KAAK0qO,uBACD1qO,KAAKyoO,mBACPzoO,KAAK2qO,oBACL3qO,KAAK6qO,qBACL7qO,KAAKyoO,kBAAmB,IAI5BqC,yBApBO,SAoBkBpqC,GACvB1gM,KAAK0qO,uBACL1qO,KAAKwoO,aAAa51B,WAAalS,EAC3B1gM,KAAKyoO,iBACLzoO,KAAKipO,kBAELjpO,KAAK6qO,sBAIXF,kBA9BO,WA+BL3qO,KAAKwoO,aAAa31B,UAAY,EAC9B7yM,KAAKwoO,aAAa51B,WAAa,GAGjCm4B,oBAnCO,SAmCanlC,GACjB5lM,KAAKgpO,cAAgBpjC,EACrB5lM,KAAK8oO,oBAAqB,EAC1B9oO,KAAK+oO,iBAAkB,GAG1BiC,WAzCO,WAyCM,WACXhrO,KAAK8oO,oBAAqB,EAC1B9oO,KAAKirO,iBACLrrN,YAAW,WACT,EAAKmpN,iBAAkB,IACtB,MAGLE,gBAjDO,WAkDLzwJ,QAAQkuI,cACRzmB,OAAOwC,KAAK,8BACZ,CAAEkd,MAAO3/M,KAAK2/M,MACZ/M,WAAY5yM,KAAKwoO,aAAa51B,WAC9BC,UAAW7yM,KAAKwoO,aAAa31B,UAC7BtxM,KAAM,IACL6iC,QAAQ,SAAUy9B,GACjB7hE,KAAKsoO,aAAezmK,EAAIt/C,KAAKnX,KAC7BpL,KAAKwoO,aAAahuG,OAAS34D,EAAIt/C,KAAKi4G,QACtC/7H,KAAKuB,OAAOkyL,IAAI,WACd15G,QAAQsuI,cACVroN,KAAKuB,QAGT6qO,mBAhEO,WAiELryJ,QAAQkuI,cACRzmB,OAAOwC,KAAK,2CACV,CAAEkd,MAAO3/M,KAAK2/M,MACZ/M,WAAY5yM,KAAKwoO,aAAa51B,WAC9BC,UAAW7yM,KAAKwoO,aAAa31B,UAC7B40B,edG0B,IcF1BlmO,KAAM,IACL6iC,QAAQ,SAAUy9B,GACjB7hE,KAAKuoO,gBAAkB1mK,EAAIt/C,KAAKnX,KAChCpL,KAAKwoO,aAAahuG,OAAS34D,EAAIt/C,KAAKi4G,QACtC/7H,KAAKuB,OAAOkyL,IAAI,WAChB15G,QAAQsuI,cACRroN,KAAKuB,QAGXkrO,aAhFO,SAgFMn3B,EAAKxyM,GAAM,WACtBvB,KAAKirO,iBACLrrN,YAAW,WAGT,OAFA,EAAKykN,mBdVuB,IcW5B,EAAKwE,eAAiB90B,EACdxyM,GACN,IAAK,SACH,EAAKmnO,iBAAkB,EACvB,MAEF,IAAK,SACH,EAAKC,iBAAkB,EACvB,MAEF,IAAK,aACH,EAAKzB,iBAAkB,EACvB,EAAK0B,iBAAkB,EACvB,MAEF,IAAK,gBACH,EAAK1B,iBAAkB,EACvB,EAAK0B,iBAAkB,KAM1B,KAGLuC,aA9GO,SA8GMluN,GACXjd,KAAKirO,iBACFhuN,IACDjd,KAAKipO,kBACLjpO,KAAKq7E,MAAM,qBAAqB,KAIpC+vJ,eAtHO,SAsHQnuN,GACbjd,KAAKirO,iBACFhuN,IACEjd,KAAKyoO,iBACNzoO,KAAKipO,kBAELjpO,KAAK6qO,uBAKXI,eAjIO,WAkILjrO,KAAK0oO,iBAAkB,EACvB1oO,KAAK2oO,iBAAkB,EACvB3oO,KAAK4oO,iBAAkB,EACvB5oO,KAAKknO,iBAAkB,EACvBlnO,KAAK8oO,oBAAqB,GAG5B4B,qBAzIO,WA0IL1qO,KAAK0oO,iBAAkB,EACvB1oO,KAAK2oO,iBAAkB,EACvB3oO,KAAK4oO,iBAAkB,EACvB5oO,KAAK8oO,oBAAqB,EAC1B9oO,KAAK+oO,iBAAkB,IAG3BjmJ,QAAS,WACP9iF,KAAKipO,mBAEPjmJ,QAAS,cCtOI,I,OAXC,YACd,ICTW,WAAa,IAAIquE,EAAIrxJ,KAASyyG,EAAG4+C,EAAIhgF,eAAmB4D,EAAGo8E,EAAI9wE,MAAMtL,IAAIw9B,EAAG,OAAOx9B,EAAG,MAAM,CAACA,EAAG,MAAM,CAACyP,YAAY,6BAA6B,CAACzP,EAAG,SAAS,CAACyP,YAAY,gBAAgBjK,MAAM,CAAC,gBAAgB42E,EAAIo3E,kBAAkBrgN,GAAG,CAAC,MAAQipI,EAAIo5E,kBAAkB,CAACp5E,EAAIn9E,GAAG,WAAWm9E,EAAI39E,GAAG29E,EAAI57I,KAAK2tN,oCAAoC/xE,EAAIn9E,GAAG,KAAKe,EAAG,SAAS,CAACyP,YAAY,gBAAgBjK,MAAM,CAAC,eAAe42E,EAAIo3E,kBAAkBrgN,GAAG,CAAC,MAAQipI,EAAIu5E,qBAAqB,CAACv5E,EAAIn9E,GAAG,WAAWm9E,EAAI39E,GAAG29E,EAAI57I,KAAK41N,oBAAoBh6E,EAAIn9E,GAAG,KAAKe,EAAG,MAAM,CAACyP,YAAY,gCAAgC,CAACzP,EAAG,WAAW,CAACzK,WAAW,CAAC,CAAChtE,KAAK,OAAOoqF,QAAQ,SAAS1pF,MAAOmzJ,EAAoB,iBAAEv0E,WAAW,qBAAqB4N,YAAY,CAAC,MAAQ,QAAQ96E,MAAM,CAAC,oBAAoB,CAAC6jB,OAAO,OAAOu7H,WAAW,UAAUn4C,MAAM,QAAQ,OAAS,GAAG,KAAOw6C,EAAI83E,uBAAuB,CAACl0J,EAAG,kBAAkB,CAACyP,YAAY,OAAO90E,MAAM,CAAC,KAAO,SAAS,MAAQyhJ,EAAI57I,KAAK0xM,QAAQ,MAAQ91D,EAAI02E,eAAeuD,cAAc,IAAIt2J,YAAYq8E,EAAIj9E,GAAG,CAAC,CAAC51E,IAAI,UAAUkH,GAAG,SAASoJ,GAAO,MAAO,CAACmmE,EAAG,MAAM,CAAC3wD,MAAM,CAAEuyF,MAA0B,MAAnB/nG,EAAMilM,IAAIrwK,OAAgB,UAAW,YAAa,CAAC2tH,EAAIn9E,GAAG,qBAAqBm9E,EAAI39E,GAAqB,MAAlB5kE,EAAMilM,IAAIrwK,OAAa2tH,EAAI57I,KAAKozL,QAAQx3C,EAAI57I,KAAKqmN,QAAQ,6BAA6BzqE,EAAIn9E,GAAG,KAAKe,EAAG,kBAAkB,CAACrlE,MAAM,CAAC,KAAO,OAAO,MAAQyhJ,EAAI57I,KAAKwvN,cAAc,MAAQ5zE,EAAI02E,eAAeuD,cAAc,GAAG,wBAAwB,IAAIt2J,YAAYq8E,EAAIj9E,GAAG,CAAC,CAAC51E,IAAI,UAAUkH,GAAG,SAASoJ,GAAO,MAAO,CAACuiJ,EAAIn9E,GAAG,qBAAqBm9E,EAAI39E,GAAG5kE,EAAMilM,IAAIv2M,MAAQsR,EAAMilM,IAAInO,IAAM,KAAK,yBAAyBv0C,EAAIn9E,GAAG,KAAKe,EAAG,kBAAkB,CAACrlE,MAAM,CAAC,KAAO,KAAK,MAAQ,KAAK,wBAAwB,GAAG,MAAQyhJ,EAAI02E,eAAeuD,cAAc,IAAIt2J,YAAYq8E,EAAIj9E,GAAG,CAAC,CAAC51E,IAAI,UAAUkH,GAAG,SAASoJ,GAAO,MAAO,CAACuiJ,EAAIn9E,GAAG,qBAAqBm9E,EAAI39E,GAAG29E,EAAIt9E,GAAG,aAAPs9E,CAAqBviJ,EAAMilM,IAAInO,KAAK,sBAA+C,IAAxB92L,EAAMilM,IAAY,OAAS9+H,EAAG,MAAM,CAACyV,YAAY,CAAC,OAAS,UAAU,OAAS,eAAe96E,MAAM,CAAC,IAAM,oCAAoC,MAAQyhJ,EAAI57I,KAAK81N,6BAA6BnjN,GAAG,CAAC,MAAQ,SAASkqD,GAAQ,OAAO++E,EAAI05E,oBAAoBj8N,EAAMilM,IAAQ,QAAO1iD,EAAIl9E,YAAYk9E,EAAIn9E,GAAG,KAAKe,EAAG,kBAAkB,CAACrlE,MAAM,CAAC,KAAO,OAAO,MAAQyhJ,EAAI57I,KAAKw0L,iBAAiB,MAAQ54C,EAAI02E,eAAeuD,cAAc,GAAG,wBAAwB,IAAIt2J,YAAYq8E,EAAIj9E,GAAG,CAAC,CAAC51E,IAAI,UAAUkH,GAAG,SAASoJ,GAAO,MAAO,CAACuiJ,EAAIn9E,GAAG,qBAAqBm9E,EAAI39E,GAAG29E,EAAIt9E,GAAG,aAAPs9E,CAAqBviJ,EAAMilM,IAAIxyM,OAAO,yBAAyB8vJ,EAAIn9E,GAAG,KAAKe,EAAG,kBAAkB,CAACrlE,MAAM,CAAC,KAAO,WAAW,MAAQyhJ,EAAI57I,KAAK+1N,iBAAiB,MAAQn6E,EAAI02E,eAAeuD,cAAc,GAAG,wBAAwB,IAAIt2J,YAAYq8E,EAAIj9E,GAAG,CAAC,CAAC51E,IAAI,UAAUkH,GAAG,SAASoJ,GAAO,MAAO,CAACuiJ,EAAIn9E,GAAG,qBAAqBm9E,EAAI39E,GAAG29E,EAAIt9E,GAAG,aAAPs9E,CAAqBviJ,EAAMilM,IAAI1J,WAAW,yBAAyBh5C,EAAIn9E,GAAG,KAAKe,EAAG,kBAAkB,CAACrlE,MAAM,CAAC,KAAO,aAAa,MAAQyhJ,EAAI57I,KAAKg2N,eAAe,MAAQp6E,EAAI02E,eAAeuD,cAAc,GAAG,wBAAwB,IAAIt2J,YAAYq8E,EAAIj9E,GAAG,CAAC,CAAC51E,IAAI,UAAUkH,GAAG,SAASoJ,GAAO,MAAO,CAACuiJ,EAAIn9E,GAAG,qBAAqBm9E,EAAI39E,GAAG29E,EAAIt9E,GAAG,aAAPs9E,CAAqBviJ,EAAMilM,IAAI01B,aAAa,yBAAyBp4E,EAAIn9E,GAAG,KAAKe,EAAG,kBAAkB,CAACrlE,MAAM,CAAC,KAAO,YAAY,MAAQyhJ,EAAI57I,KAAK6tN,WAAW,MAAQjyE,EAAI02E,eAAeuD,cAAc,GAAG,wBAAwB,IAAIt2J,YAAYq8E,EAAIj9E,GAAG,CAAC,CAAC51E,IAAI,UAAUkH,GAAG,SAASoJ,GAAO,MAAO,CAACuiJ,EAAIn9E,GAAG,qBAAqBm9E,EAAI39E,GAAG5kE,EAAMilM,IAAI81B,WAAa,KAAK,yBAAyBx4E,EAAIn9E,GAAG,KAAKe,EAAG,kBAAkB,CAACrlE,MAAM,CAAC,KAAO,KAAK,MAAQyhJ,EAAI57I,KAAKi2N,WAAW,MAAQr6E,EAAI02E,eAAeuD,cAAc,IAAIt2J,YAAYq8E,EAAIj9E,GAAG,CAAC,CAAC51E,IAAI,UAAUkH,GAAG,SAASoJ,GAAO,MAAO,CAAgB,IAAdA,EAAMilM,IAAIvlM,GAAQymE,EAAG,MAAM,CAAEo8E,EAAa,UAAEp8E,EAAG,YAAY,CAACyP,YAAY,aAAa90E,MAAM,CAAC,KAAO,OAAO,KAAO,SAASwY,GAAG,CAAC,MAAQ,SAASkqD,GAAQ,OAAO++E,EAAI65E,aAAap8N,EAAMilM,IAAK,aAAa,CAAC1iD,EAAIn9E,GAAG,2BAA2Bm9E,EAAI39E,GAAG29E,EAAI57I,KAAKk2N,QAAQ,4BAA4Bt6E,EAAIl9E,KAAKk9E,EAAIn9E,GAAG,KAAMm9E,EAAa,UAAEp8E,EAAG,YAAY,CAACyP,YAAY,aAAa90E,MAAM,CAAC,KAAO,OAAO,KAAO,QAAQwY,GAAG,CAAC,MAAQ,SAASkqD,GAAQ,OAAO++E,EAAI65E,aAAap8N,EAAMilM,IAAK,aAAa,CAAC1iD,EAAIn9E,GAAG,2BAA2Bm9E,EAAI39E,GAAG29E,EAAI57I,KAAKm2N,SAAS,4BAA4Bv6E,EAAIl9E,KAAKk9E,EAAIn9E,GAAG,KAAMm9E,EAAa,UAAEp8E,EAAG,YAAY,CAACyP,YAAY,aAAa90E,MAAM,CAAC,KAAO,OAAO,KAAO,QAAQwY,GAAG,CAAC,MAAQ,SAASkqD,GAAQ,OAAO++E,EAAI65E,aAAap8N,EAAMilM,IAAK,iBAAiB,CAAC1iD,EAAIn9E,GAAG,2BAA2Bm9E,EAAI39E,GAAG29E,EAAI57I,KAAKo2N,QAAQ,4BAA4Bx6E,EAAIl9E,MAAM,GAAGk9E,EAAIl9E,KAAKk9E,EAAIn9E,GAAG,KAAoB,IAAdplE,EAAMilM,IAAIvlM,KAAY6iJ,EAAI+2E,YAAc/2E,EAAIg3E,UAAYpzJ,EAAG,MAAM,CAACo8E,EAAIn9E,GAAG,UAAUm9E,EAAIl9E,aAAa,GAAGk9E,EAAIn9E,GAAG,KAAKe,EAAG,WAAW,CAACzK,WAAW,CAAC,CAAChtE,KAAK,OAAOoqF,QAAQ,SAAS1pF,OAAQmzJ,EAAIo3E,iBAAkB3rJ,WAAW,sBAAsBltE,MAAM,CAAC,oBAAoB,CAAC6jB,OAAO,OAAOu7H,WAAW,UAAUn4C,MAAM,QAAQ,OAAS,GAAG,KAAOw6C,EAAI04E,0BAA0B,CAAC90J,EAAG,kBAAkB,CAACrlE,MAAM,CAAC,KAAO,MAAM,MAAQyhJ,EAAI57I,KAAKq2N,uBAAuB,wBAAwB,GAAG,MAAQ,QAAQ92J,YAAYq8E,EAAIj9E,GAAG,CAAC,CAAC51E,IAAI,UAAUkH,GAAG,SAASoJ,GAAO,MAAO,CAACuiJ,EAAIn9E,GAAG,qBAAqBm9E,EAAI39E,GAAG5kE,EAAMilM,IAAIhuM,KAAK,yBAAyBsrJ,EAAIn9E,GAAG,KAAKe,EAAG,kBAAkB,CAACrlE,MAAM,CAAC,KAAO,UAAU,MAAQyhJ,EAAI57I,KAAKs2N,eAAe,wBAAwB,IAAI/2J,YAAYq8E,EAAIj9E,GAAG,CAAC,CAAC51E,IAAI,UAAUkH,GAAG,SAASoJ,GAAO,MAAO,CAACuiJ,EAAIn9E,GAAG,qBAAqBm9E,EAAI39E,GAAG5kE,EAAMilM,IAAI8zB,SAAW/4N,EAAMilM,IAAI+zB,OAAS,KAAK,yBAAyBz2E,EAAIn9E,GAAG,KAAKe,EAAG,kBAAkB,CAACrlE,MAAM,CAAC,KAAO,QAAQ,MAAQyhJ,EAAI57I,KAAKu2N,eAAe,OAAO,wBAAwB,IAAIh3J,YAAYq8E,EAAIj9E,GAAG,CAAC,CAAC51E,IAAI,UAAUkH,GAAG,SAASoJ,GAAO,MAAO,CAACuiJ,EAAIn9E,GAAG,qBAAqBm9E,EAAI39E,GAAG5kE,EAAMilM,IAAI+zB,OAAO,yBAAyBz2E,EAAIn9E,GAAG,KAAKe,EAAG,kBAAkB,CAACrlE,MAAM,CAAC,KAAO,UAAU,MAAQyhJ,EAAI57I,KAAKw2N,WAAW,wBAAwB,IAAIj3J,YAAYq8E,EAAIj9E,GAAG,CAAC,CAAC51E,IAAI,UAAUkH,GAAG,SAASoJ,GAAO,MAAO,CAACuiJ,EAAIn9E,GAAG,qBAAqBm9E,EAAI39E,GAAG5kE,EAAMilM,IAAIo2B,SAAWr7N,EAAMilM,IAAIs2B,OAAS,KAAK,yBAAyBh5E,EAAIn9E,GAAG,KAAKe,EAAG,kBAAkB,CAACrlE,MAAM,CAAC,KAAO,QAAQ,MAAQyhJ,EAAI57I,KAAKy2N,aAAa,wBAAwB,IAAIl3J,YAAYq8E,EAAIj9E,GAAG,CAAC,CAAC51E,IAAI,UAAUkH,GAAG,SAASoJ,GAAO,MAAO,CAACuiJ,EAAIn9E,GAAG,qBAAqBm9E,EAAI39E,GAAG5kE,EAAMilM,IAAIs2B,OAAO,yBAAyBh5E,EAAIn9E,GAAG,KAAKe,EAAG,kBAAkB,CAACrlE,MAAM,CAAC,KAAO,aAAa,MAAQyhJ,EAAI57I,KAAK02N,aAAa,wBAAwB,IAAIn3J,YAAYq8E,EAAIj9E,GAAG,CAAC,CAAC51E,IAAI,UAAUkH,GAAG,SAASoJ,GAAO,MAAO,CAACuiJ,EAAIn9E,GAAG,qBAAqBm9E,EAAI39E,GAAG29E,EAAIt9E,GAAG,aAAPs9E,CAAqBviJ,EAAMilM,IAAIw2B,WAAW5mO,WAAWwF,MAAM,KAAK,KAAK,yBAAyBkoJ,EAAIn9E,GAAG,KAAKe,EAAG,kBAAkB,CAACrlE,MAAM,CAAC,KAAO,KAAK,MAAQyhJ,EAAI57I,KAAKi2N,WAAW,MAAQ,SAAS12J,YAAYq8E,EAAIj9E,GAAG,CAAC,CAAC51E,IAAI,UAAUkH,GAAG,SAASoJ,GAAO,MAAO,CAAgB,IAAdA,EAAMilM,IAAIvlM,GAAQymE,EAAG,MAAM,CAAEo8E,EAAa,UAAEp8E,EAAG,YAAY,CAACyP,YAAY,aAAagG,YAAY,CAAC,MAAQ,OAAO96E,MAAM,CAAC,KAAO,OAAO,KAAO,QAAQwY,GAAG,CAAC,MAAQ,SAASkqD,GAAQ,OAAO++E,EAAI65E,aAAap8N,EAAMilM,IAAK,oBAAoB,CAAC1iD,EAAIn9E,GAAG,8BAA8Bm9E,EAAI39E,GAAG29E,EAAI57I,KAAKo2N,QAAQ,4BAA4Bx6E,EAAIl9E,MAAM,GAAGk9E,EAAIl9E,KAAKk9E,EAAIn9E,GAAG,KAAoB,IAAdplE,EAAMilM,IAAIvlM,IAAW6iJ,EAAIg3E,UAAsCh3E,EAAIl9E,KAA/Bc,EAAG,MAAM,CAACo8E,EAAIn9E,GAAG,kBAA2B,GAAGm9E,EAAIn9E,GAAG,KAAKe,EAAG,MAAM,CAACyP,YAAY,UAAU,CAACzP,EAAG,YAAY,CAACrlE,MAAM,CAAC,eAAeyhJ,EAAIm3E,aAAa51B,WAAW,aAAa,CAACvhD,EAAIm3E,aAAa31B,WAAW,OAAS,0CAA0C,MAAQxhD,EAAIm3E,aAAahuG,QAAQpyG,GAAG,CAAC,iBAAiBipI,EAAIy5E,6BAA6B,IAAI,GAAGz5E,EAAIn9E,GAAG,KAAKe,EAAG,oBAAoB,CAACrlE,MAAM,CAAC,UAAYyhJ,EAAIq3E,gBAAgB,mBAAqBr3E,EAAIgzE,mBAAmB,mBAAqBhzE,EAAIw3E,eAAe,UAAYx3E,EAAIsuD,MAAM,YAActuD,EAAI22E,YAAY5/M,GAAG,CAAC,eAAiBipI,EAAI85E,gBAAgB95E,EAAIn9E,GAAG,KAAKe,EAAG,oBAAoB,CAACrlE,MAAM,CAAC,UAAYyhJ,EAAIs3E,gBAAgB,mBAAqBt3E,EAAIgzE,mBAAmB,mBAAqBhzE,EAAIw3E,eAAe,UAAYx3E,EAAIsuD,MAAM,UAAYtuD,EAAIqjD,UAAU,YAAcrjD,EAAI22E,YAAY5/M,GAAG,CAAC,eAAiBipI,EAAI85E,gBAAgB95E,EAAIn9E,GAAG,KAAKe,EAAG,oBAAoB,CAACrlE,MAAM,CAAC,UAAYyhJ,EAAIu3E,gBAAgB,gBAAkBv3E,EAAI61E,gBAAgB,mBAAqB71E,EAAIgzE,mBAAmB,mBAAqBhzE,EAAIw3E,gBAAgBzgN,GAAG,CAAC,eAAiBipI,EAAI+5E,kBAAkB/5E,EAAIn9E,GAAG,KAAKe,EAAG,aAAa,CAACrlE,MAAM,CAAC,KAAOyhJ,EAAIy3E,mBAAmB,MAAQ,IAAI,MAAQ,KAAK,CAAC7zJ,EAAG,KAAK,CAACrlE,MAAM,CAAC,KAAO,UAAUmgE,KAAK,UAAU,CAACshF,EAAIn9E,GAAGm9E,EAAI39E,GAAG29E,EAAI57I,KAAKmgM,4BAA4BvkD,EAAIn9E,GAAG,KAAKe,EAAG,MAAM,CAACyP,YAAY,uBAAuBgG,YAAY,CAAC,aAAa,mBAAmB,CAAE2mE,EAAmB,gBAAEp8E,EAAG,uBAAuB,CAACrlE,MAAM,CAAC,GAAKyhJ,EAAI23E,cAAc,KAAO33E,EAAIsuD,MAAM,SAAU,KAAQtuD,EAAIl9E,MAAM,GAAGk9E,EAAIn9E,GAAG,KAAKe,EAAG,MAAM,CAACyP,YAAY,YAAY90E,MAAM,CAAC,IAAM,uCAAuCwY,GAAG,CAAC,MAAQipI,EAAI25E,cAAc35E,EAAIn9E,GAAG,KAAKe,EAAG,0BAA0B,CAACyV,YAAY,CAAC,QAAU,QAAQ96E,MAAM,CAAC,KAAO,UAAUmgE,KAAK,UAAU,CAACkF,EAAG,gBAAgB,CAACo8E,EAAIn9E,GAAGm9E,EAAI39E,GAAG29E,EAAI57I,KAAKq3F,YAAY,IAAI,IAAI,KACvtR,IDWpB,EACA,KACA,WACA,M,SEf8N,GC+ChO,CACEtvG,KAAM,qBACNmuB,MAAO,CACL44M,UAAW,CAAf,0BACI6H,WAAY,CAAE7qO,KAAM5D,OAAQkuM,UAAU,IAExCtpL,KANF,WAOI,MAAO,CACL9M,KAAMyyL,OAAOC,IAAIC,SAASC,MAC1BgkC,eAAgB,GAChBC,eAAgB,CACd9xG,OAAQ,EACR+xG,UAAW,EACXC,SAAU,KAIhB3nK,MAAO,CACL0/J,UADJ,SACA,GACM,GAAN,GACQ,IAAR,oDACU,OAAV,mCAEQ,KAAR,qBACQ,KAAR,+BACQ,KAAR,oCACU,MAAV,CACY,WAAZ,aACY,MAAZ,cACY,KAAZ,wBACY,GAAZ,aAIA,kBAEM,OAAO1/N,IAGXusB,SAAU,CACZ,uBADA,WAGM,OADWpU,EAAEvV,MAAMzH,KAAKqsO,gBACZ/oO,OAClB,8DACA,8DAIEmoC,QAAS,CAEPwkK,iBAFJ,SAEA,GACMz3H,QAAQkuI,cACR1mN,KAAKssO,eAAeC,UAAYnwN,EAChCwD,YAAW,WACT44D,QAAQsuI,eAChB,MAGI2lB,WAVJ,WAUA,WACMzsO,KAAKukO,WAAY,EACjB3kN,YAAW,WACT,EAAR,6BACA,QC1Fe,I,OAXC,YACd,ICTW,WAAa,IAAIyxI,EAAIrxJ,KAASyyG,EAAG4+C,EAAIhgF,eAAmB4D,EAAGo8E,EAAI9wE,MAAMtL,IAAIw9B,EAAG,OAAOx9B,EAAG,aAAa,CAACyP,YAAY,iBAAiB90E,MAAM,CAAC,MAAQ,IAAI,MAAQyhJ,EAAI57I,KAAKi3N,0BAA0B,KAAOr7E,EAAIkzE,YAAY,CAACtvJ,EAAG,MAAM,CAACyP,YAAY,YAAY90E,MAAM,CAAC,IAAM,uCAAuCwY,GAAG,CAAC,MAAQ,SAASkqD,GAAQ++E,EAAIkzE,WAAY,MAAUlzE,EAAIn9E,GAAG,KAAKe,EAAG,MAAM,CAACyP,YAAY,aAAa,CAACzP,EAAG,WAAW,CAACyV,YAAY,CAAC,MAAQ,QAAQ96E,MAAM,CAAC,OAAS,GAAG,OAAS,MAAM,KAAOyhJ,EAAIs7E,uBAAuB,oBAAoB,CAAEl5M,OAAQ,OAAQu7H,WAAY,UAAWn4C,MAAO,UAAU,CAAC5hC,EAAG,kBAAkB,CAACrlE,MAAM,CAAC,MAAQyhJ,EAAI57I,KAAKm3N,uBAAuB,MAAQ,OAAO53J,YAAYq8E,EAAIj9E,GAAG,CAAC,CAAC51E,IAAI,UAAUkH,GAAG,SAASoJ,GAAO,MAAO,CAACmmE,EAAG,OAAO,CAACo8E,EAAIn9E,GAAGm9E,EAAI39E,GAAG5kE,EAAMilM,IAAIjyI,cAAcuvF,EAAIn9E,GAAG,KAAKe,EAAG,kBAAkB,CAACrlE,MAAM,CAAC,MAAQyhJ,EAAI57I,KAAKo3N,6BAA6B,MAAQ,OAAO73J,YAAYq8E,EAAIj9E,GAAG,CAAC,CAAC51E,IAAI,UAAUkH,GAAG,SAASoJ,GAAO,MAAO,CAACmmE,EAAG,OAAO,CAACo8E,EAAIn9E,GAAGm9E,EAAI39E,GAAG5kE,EAAMilM,IAAI+4B,sBAAsBz7E,EAAIn9E,GAAG,KAAKe,EAAG,kBAAkB,CAACrlE,MAAM,CAAC,MAAQyhJ,EAAI57I,KAAKs3N,2BAA2B/3J,YAAYq8E,EAAIj9E,GAAG,CAAC,CAAC51E,IAAI,UAAUkH,GAAG,SAASoJ,GAAO,MAAO,CAACmmE,EAAG,OAAO,CAACo8E,EAAIn9E,GAAGm9E,EAAI39E,GAAG5kE,EAAMilM,IAAIz6H,iBAAiB+3E,EAAIn9E,GAAG,KAAKe,EAAG,kBAAkB,CAACrlE,MAAM,CAAC,MAAQyhJ,EAAI57I,KAAKu3N,+BAA+Bh4J,YAAYq8E,EAAIj9E,GAAG,CAAC,CAAC51E,IAAI,UAAUkH,GAAG,SAASoJ,GAAO,MAAO,CAACmmE,EAAG,OAAO,CAACo8E,EAAIn9E,GAAGm9E,EAAI39E,GAAG5kE,EAAMilM,IAAIv2M,iBAAiB,GAAG6zJ,EAAIn9E,GAAG,KAAKe,EAAG,YAAY,CAACyV,YAAY,CAAC,OAAS,SAAS,aAAa,SAAS96E,MAAM,CAAC,eAAeyhJ,EAAIi7E,eAAeC,UAAU,aAAa,CAACl7E,EAAIi7E,eAAeE,UAAU,OAAS,yCAAyC,MAAQn7E,EAAIi7E,eAAe9xG,QAAQpyG,GAAG,CAAC,iBAAiBipI,EAAI4+C,qBAAqB,GAAG5+C,EAAIn9E,GAAG,KAAKe,EAAG,0BAA0B,CAACyV,YAAY,CAAC,QAAU,QAAQ96E,MAAM,CAAC,KAAO,SAAS,KAAO,QAAQmgE,KAAK,UAAU,CAACkF,EAAG,SAAS,CAACo8E,EAAIn9E,GAAGm9E,EAAI39E,GAAG29E,EAAI57I,KAAKw3N,eAAe,KACt2D,IDWpB,EACA,KACA,WACA,M,oCEfF,MAAMxzK,GAAKD,UAAUU,UACd,IAAI0sD,GCEX,GDDA,SAAWA,GACPA,EAASC,OAASrtD,UAAUstD,WAAWrjH,QAAQ,OAAS,EACxDmjH,EAASG,SAAWttD,GAAGxrD,MAAM,uBAC7B24G,EAASI,WAAaxtD,UAAUstD,WAAWrjH,QAAQ,OAAS,EAC5DmjH,EAASK,MAAQxtD,GAAGh2D,QAAQ,SAAW,EACvCmjH,EAASM,UAAYztD,GAAGxrD,MAAM,gBAC9B24G,EAASO,UAAY1tD,GAAGxrD,MAAM,UAI9B24G,EAASQ,YAAc3tD,GAAGh2D,QAAQ,aAAe,GAC7Cg2D,GAAGh2D,QAAQ,QAAU,GACrBg2D,GAAGh2D,QAAQ,SAAW,EAI1BmjH,EAASS,cAAiC,MAAjBpkH,OAAOqkH,QACP,MAArBrkH,OAAOqkH,OAAOC,KACe,MAA7BtkH,OAAOqkH,OAAOC,IAAIC,QACtBZ,EAASa,UAAYhuD,GAAGh2D,QAAQ,YAAc,GAAKg2D,GAAGh2D,QAAQ,SAAW,EACzEmjH,EAASc,SAAWjuD,GAAGh2D,QAAQ,WAAa,GAAKg2D,GAAGh2D,QAAQ,SAAW,EACvEmjH,EAASe,WAAaluD,GAAGh2D,QAAQ,aAAe,EAChDmjH,EAASgB,UAAYnuD,GAAGh2D,QAAQ,iBAAmB,GAC/Cg2D,GAAGh2D,QAAQ,WAAa,GACxBg2D,GAAGh2D,QAAQ,SAAW,EAM1BmjH,EAASiB,cAAgB,iBAAkB/kH,SAAS+N,gBAIpD+1G,EAASkB,gBAAyC,MAAvB7kH,OAAO8kH,eAAyBnB,EAASC,OACpED,EAASoB,iBAAkB,EAC3B,IACI,MAAMroH,EAAUhC,OAAOC,eAAe,GAAI,UAAW,CACjD,MACIgpH,EAASoB,iBAAkB,KAG7BpiG,EAAM9iB,SAASiC,cAAc,OAC/B6gB,EAAI1U,kBACJ0U,EAAI1U,iBAAiB,QAAS,OAAWvR,GAGjD,MAAOuoB,IAOP0+F,EAASqB,kBAAoBnlH,SAAS6iF,iBAClC,GAAG7iF,SAAS6iF,gBAAgB,6BAA8B,kBAAuB,oCACjFlsB,GAAGh2D,QAAQ,WAAa,EAC5BmjH,EAASsB,uBAAyBtB,EAASqB,iBAzD/C,CA0DGrB,KAAaA,GAAW,KAC3B,SAAWA,GACP,SAASuB,IACL,MAAMr1D,EAAM7vD,OAAOjG,OACnB,OAAW,MAAP81D,GAA0B,MAAXA,EAAIs1D,KAAiC,MAAlBt1D,EAAIs1D,IAAI1kF,OACnCovB,EAAIs1D,IAAI1kF,SAEZ,UAEXkjF,EAASuB,aAAeA,EAIxBvB,EAASyB,cAHT,WACI,MAA0B,UAAnBF,KAKX,MAAMG,EAAW,CACb1+G,OAAQ,QACR4/E,OAAQ,QACR9yE,OAAQ,OACRC,MAAO,OACPzO,MAAO,MACPojB,KAAM,MACNqY,MAAO,OAYXijF,EAAS2B,iBAVT,SAA0B//F,GACtB,MAAMhiB,EAAO1D,SAASiC,cAAcujH,EAAS9/F,IAAU,OACjDggG,EAAY,KAAKhgG,EACvB,IAAIigG,EAAcD,KAAahiH,EAK/B,OAJKiiH,IACDjiH,EAAKtB,aAAasjH,EAAW,WAC7BC,EAAyC,mBAApBjiH,EAAKgiH,IAEvBC,GAhCf,CAmCG7B,KAAaA,GAAW,KC7FvBA,GAASoB,gBAAiB,CAC1B,KAAOx/F,MAAMvJ,QAAQwxI,WAAa,CAC9B,MAAMluI,EAAMjkB,EAAIsrB,GACZ,IAAK5pB,KAAKkR,iBACN,OAAO,EAEXlR,KAAKkR,iBAAiB,aAAc0Y,EAAQ,CACxCukD,SAAS,MAIrB,MAAMzuE,EAAO,KAAO8oB,MAAMvJ,QAAQ6uH,WAClC,GAAIpuI,EAAM,CACN,MAAMuqB,EAAQvqB,EAAKuqB,MACnBvqB,EAAKuqB,MAAQ,WACT,MAAM/Y,EAAmBlR,KAAKkR,iBAC9B,IAAKA,EACD,OAAO,EAEXlR,KAAKkR,iBAAmB,CAAC1T,EAAMqS,KAC3BqB,EAAiB9T,KAAK4C,KAAMxC,EAAMqS,EAAS,CAAEs+D,SAAS,KAE1DlkD,EAAM7sB,KAAK4C,MACXA,KAAKkR,iBAAmBA,IAMhCjO,OAAOwpL,WAAaA,SAAS5tL,UAAUssC,UACvCshJ,SAAS5tL,UAAUssC,QAAUjqC,MAAMrC,UAAUssC,SAwB9C,CAAC8kE,QAAQpxG,UAAW6tL,SAAS7tL,UAAW8tL,iBAAiB9tL,WAlBpDssC,QAAShnC,IACLxG,OAAOkB,UAAUC,eAAe1B,KAAK+G,EAAM,WAG/CxG,OAAOC,eAAeuG,EAAM,SAAU,CAClCke,cAAc,EACdxkB,YAAY,EACZwtB,UAAU,EACV,SAASlW,GACL,MAAMy3K,EAAU9pL,SAASkjB,yBACzB7Q,EAAKg2B,QAASniC,IACV,MAAM6jL,EAAS7jL,aAAe6uI,KAC9B+0C,EAAQxnL,YAAYynL,EAAS7jL,EAAMlG,SAAS+kB,eAAe/a,OAAO9D,OAEtEhJ,KAAKoF,YAAYwnL,QCpD1B,MACM1iJ,GAAahsC,IAAWgD,MAAMD,QAAQ/C,IAAUA,EAAQ20B,WAAW30B,GAAS,GAAK,E,2FCFvF,SAAS,GAAKkvL,EAASr6E,EAASv0G,GACnC,MAAM6uL,EAASL,GAAoBI,EAAS5uL,GACtC8uL,EAASN,GAAoBj6E,EAASv0G,GACtC+uL,EAAUD,EAAOJ,KACjBM,EAAcH,EAAOJ,SACrBQ,EAAcH,EAAOL,SACrBS,EAAQ,GACRzyK,EAAW,GACjB,IACI9W,EACAgpL,EAFAlwL,EAAI,EAGJ0wL,EAAY,EAChB,KAAO1wL,EAAImwL,EAAQzrL,QAAQ,CAGvB,GAFAwC,EAAOipL,EAAQnwL,GACfkwL,EAAUhpL,EAAK3F,GACX2uL,EAEA,GAAKM,EAAY3uL,eAAequL,GAG3B,CACD,MAAMS,EAAeH,EAAYN,GACjClyK,EAASzY,KAAKuwG,EAAQ66E,SAJtB3yK,EAASzY,KAAK,UAOjB,CACDmrL,GAAa,EACb,MAAME,EAAWN,EAAQI,GACzB1yK,EAASzY,KAAKqrL,GAAY,MAE9B5wL,GAAK,EAET,MAAM6wL,EAAe7yK,EAAS3X,MAAM,GAEpC,IADArG,EAAI,EACGA,EAAI6wL,EAAansL,QACI,OAApBmsL,EAAa7wL,IACb2gB,EAAO3gB,GACP8wL,EAAe9wL,IAGfA,GAAK,EAGb,IAAIiK,EAAKjK,EAAI,EACb,KAAOA,EAAI81G,EAAQpxG,QAAQ,CACvBwC,EAAO4uG,EAAQ91G,GACfkwL,EAAUhpL,EAAK3F,GACf,MAAMwvL,EAAeF,EAAa5mL,GAClC,GAAI8mL,EAAc,CAEd,GAAIb,IADoBa,EAAaxvL,GAEjC0I,GAAK,OAIL,GAAKsmL,EAAY1uL,eAAequL,GAG3B,CACD,MAAMc,EAAmBH,EAAa5mL,EAAI,GAC1C,GAAI+mL,EAAkB,CACEA,EAAiBzvL,KACjB2uL,GAChBvvK,EAAO3gB,GACP8wL,EAAe7mL,GACfA,GAAK,GAGLypB,EAAO1zB,EAAGkH,SAZlBwsB,EAAO1zB,EAAGkH,QAmBlBwsB,EAAO1zB,EAAGkH,GAEdlH,GAAK,EAET,IAAIy1D,EAAIo7H,EAAansL,OAASuF,EAC9B,MAAQA,GAAK,GAAK4mL,EAAansL,QAC3B+wD,GAAK,EACL90C,EAAO80C,EAAIz1D,GAEf,SAAS2gB,EAAOlc,GACZ,MAAMi0D,EAAO,CAAEj0D,QAAOH,KAAM,EAAG4C,KAAM,MACrCupL,EAAMlrL,KAAKmzD,GAEf,SAAShlC,EAAOjvB,EAAOyC,GACnB,MAAMwxD,EAAO,CAAEj0D,QAAOyC,OAAM5C,KAAM,GAClCmsL,EAAMlrL,KAAKmzD,GAEf,SAASo4H,EAAersL,GACpBosL,EAAazmL,OAAO3F,EAAO,GAE/B,MAAO,CACHgsL,SAGR,SAASV,GAAoB5hL,EAAM5M,GAC/B,MAAMyuL,EAAW,GACXC,EAAO,GACb,IAAK,IAAIjwL,EAAI,EAAGgK,EAAMmE,EAAKzJ,OAAQ1E,EAAIgK,EAAKhK,GAAK,EAAG,CAChD,MAAMkH,EAAOiH,EAAKnO,GACZkwL,EAAUhpL,EAAK3F,GACjB2uL,EACAF,EAASE,GAAWlwL,EAGpBiwL,EAAK1qL,KAAK2B,GAGlB,MAAO,CACH8oL,WACAC,Q,mIC/GD,SAAS+B,GAAYC,KAAgBC,GACxCA,EAAUhkJ,QAAS+sC,IACfv6E,OAAOmqE,oBAAoBoQ,EAASr5E,WAAWssC,QAAS3tC,IACvC,gBAATA,GACAG,OAAOC,eAAesxL,EAAYrwL,UAAWrB,EAAMG,OAAOkrE,yBAAyBqP,EAASr5E,UAAWrB,QCPvH,MAAM40D,GAAgBz0D,OAAO20D,gBACxB,CAAEC,UAAW,cAAgBrxD,OAC1B,SAAU3D,EAAG0N,GACT1N,EAAEg1D,UAAYtnD,IAEtB,SAAU1N,EAAG0N,GAET,IAAK,MAAMlM,KAAKkM,EACRtN,OAAOkB,UAAUC,eAAe1B,KAAK6N,EAAGlM,KACxCxB,EAAEwB,GAAKkM,EAAElM,KAQlB,SAAS,GAAQ4pF,EAAK7xE,GAEzB,SAASjF,IACL7R,KAAK6F,YAAc8iF,EAFvBv2B,GAAcu2B,EAAK7xE,GAInB6xE,EAAI9pF,UACS,OAATiY,EACMnZ,OAAOY,OAAOuY,IACZjF,EAAIhT,UAAYiY,EAAKjY,UAAY,IAAIgT,GAIrD,MAAMw9K,GAAgB,eAAezgL,KAAK,GAF1C,UAEqD,iBAAiBA,KAAK,GAAG,SAKvE,SAASqqI,GAAY7nI,EAAW0F,GACnC,IAAI6xE,EAYJ,OAXI0mG,GACA1mG,EAAM,cAAc7xE,KAIpB6xE,EAAM,WACF,OAAO7xE,EAAKtT,MAAMxD,KAAMyG,YAE5B,GAAQkiF,EAAK7xE,IAEjBnZ,OAAOC,eAAe+qF,EAAK,OAAQ,CAAEzqF,MAAOkT,IACrCu3E,EC5CJ,SAAS,GAAOzqF,EAAO4b,GAC1B,OAAgB,MAAT5b,EAAgBA,EAAQ4b,EAE5B,SAASi7E,GAAS9wF,EAAKzF,EAAKsb,GAC/B,MAAM5b,EAAe,MAAP+F,EAAcA,EAAIzF,GAAO,KACvC,YAAwB0D,IAAjB4X,EAA6B,GAAO5b,EAAO4b,GAAgB5b,EAE/D,SAASqwL,GAAUtqL,EAAKzF,EAAKsb,GAChC,IAAI5b,EAAe,MAAP+F,EAAcA,EAAIzF,GAAO,KACrC,OAAa,MAATN,EACO4b,GAEX5b,GAASA,EACLg+D,OAAO/xB,MAAMjsC,KAAWg+D,OAAO9lC,SAASl4B,GACjC4b,EAEJ5b,GAEJ,SAASowL,GAAWrqL,EAAKzF,EAAKsb,GACjC,MAAM5b,EAAe,MAAP+F,EAAcA,EAAIzF,GAAO,KACvC,OAAa,MAATN,EACO4b,IAEF5b,EAEN,SAASmwL,GAAgB7rK,GAC5B,MAAgB,cAATA,EAEJ,SAAS4rK,GAAUnqL,EAAKirC,EAAMu/I,EAAY,KAC7C,IAAIvoL,EACJ,MAAMkJ,EAAOlO,MAAMD,QAAQiuC,GAAQA,EAAOA,EAAK/lC,MAAMslL,GACrD,GAAIr/K,EAAKzN,OAEL,IADAuE,EAAMjC,EACCmL,EAAKzN,QAAQ,CAChB,MAAMnD,EAAM4Q,EAAKG,QACjB,GAAI5R,OAAOuI,KAASA,IAAO1H,KAAOA,KAAO0H,GAIrC,OAHAA,EAAMA,EAAI1H,GAOtB,OAAO0H,EAEJ,SAASioL,GAAUlqL,EAAKirC,EAAMhxC,EAAOuwL,EAAY,KACpD,MAAMr/K,EAAOlO,MAAMD,QAAQiuC,GAAQA,EAAOA,EAAK/lC,MAAMslL,GAC/CC,EAAUt/K,EAAKlE,MACrB,GAAIwjL,IAAYL,GAAgBK,GAAU,CACtC,IAAIw+C,EAAQjpO,EACZmL,EAAK+7B,QAAS3sC,IACL6vL,GAAgB7vL,KACC,MAAd0uO,EAAM1uO,KACN0uO,EAAM1uO,GAAO,IAEjB0uO,EAAQA,EAAM1uO,MAGtB0uO,EAAMx+C,GAAWxwL,EAErB,OAAO+F,EAEJ,SAASiqL,GAAYjqL,EAAKirC,EAAMu/I,EAAY,KAC/C,MAAMr/K,EAAOlO,MAAMD,QAAQiuC,GAAQA,EAAK5rC,QAAU4rC,EAAK/lC,MAAMslL,GACvDG,EAAmBx/K,EAAKlE,MAC9B,GAAI0jL,EACA,GAAIx/K,EAAKzN,OAAS,EAAG,CACjB,MAAMxB,EAASiuL,GAAUnqL,EAAKmL,GAC1BjP,UACOA,EAAOyuL,eAIX3qL,EAAI2qL,GAGnB,OAAO3qL,EAEJ,SAASy+C,GAAQz+C,EAAK6qL,EAAQ,IAAKrrK,GACtC,MAAMvd,EAAM,GACZvI,OAAOyR,KAAKnL,GAAKknC,QAAS3sC,IACtB,MAAMqG,EAAMZ,EAAIzF,GAChB,IAAImJ,EAAsB,iBAAR9C,GAAoB3D,MAAMD,QAAQ4D,GAIpD,GAHI8C,GAAQ8b,GAAQA,EAAK5e,KACrB8C,GAAO,GAEPA,EAAM,CACN,MAAMwlO,EAAazqL,GAAQ79C,EAAKiqL,EAAOrrK,GACvC9lB,OAAOyR,KAAK+9N,GAAYhiM,QAAS6jJ,IAC7B9oL,EAAI1H,EAAMswL,EAAQE,GAAWm+C,EAAWn+C,UAI5C9oL,EAAI1H,GAAOqG,IAInB,IAAK,MAAMrG,KAAOyF,EACTtG,OAAOkB,UAAUC,eAAe1B,KAAK6G,EAAKzF,GAInD,OAAO0H,E,6ICzGJ,SAASoI,GAAKmhL,GACjB,IAAItuL,EAAS,KACb,IACIA,EAAS8B,OAAOssL,KAAKE,GAEzB,MAAO5hL,IAGP,OAAO1M,E,+DCEX,MAAMyuI,GAAuBlqI,IACzB,MAAM2J,EAAQ1R,OAAOY,OAAO,MAC5B,OAAS4vC,GACO9+B,EAAM8+B,KACH9+B,EAAM8+B,GAAOzoC,EAAGyoC,KAG1Bke,GAAYujF,GAAqB5wI,GAAMA,EAAEgJ,QAAQ,aAAc,OAAOqB,eACtEqmI,GAAaE,GAAqB5wI,GAAM,OAAA6tD,GAAA,GAAU,OAAA9qC,GAAA,GAAU/iB,IAAIgJ,QAAQ,KAAM,KAC9EynI,GAAeG,GAAqB5wI,GAAM,OAAAsuD,GAAA,GAAUtuD,GAAGgJ,QAAQ,KAAM,MACrEwnI,GAAUI,GAAqB5wI,GAAM,OAAAstD,GAAA,GAAUttD,GAAGgJ,QAAQ,KAAM,MAChEunI,GAAWK,GAAqB5wI,GAAM,OAAAstD,GAAA,GAAUttD,GAAGgJ,QAAQ,KAAM,MACjEsnI,GAAeM,GAAqB5wI,GAAM,OAAAuuD,GAAA,GAAW,OAAAjB,GAAA,GAAUttD,KAC/DqwI,GAAYO,GAAqB5wI,GAAM,OAAA6tD,GAAA,GAAU,OAAA9qC,GAAA,GAAU/iB,KClBjE,SAAS0wL,GAASvhJ,GACrB,IAAIx4B,EAAO,WACPg6K,GAAa,EACb3tK,EAASmsB,EACb,IAAK,IAAIlxC,EAAI,EAAG25D,EAAK50C,EAAOrgB,OAAQ1E,EAAI25D,EAAI35D,GAAK,EAAG,CAChD,IAAI2yL,EAAgB5tK,EAAO5U,WAAWnQ,GAElC2yL,EAAgB,MAASD,IACzB3tK,EAASqrC,SAAS5tB,mBAAmBzd,IACrC4tK,EAAgB5tK,EAAO5U,WAAWnQ,GAClC0yL,GAAa,GAEjBh6K,GAAQi6K,EACRj6K,IAASA,GAAQ,IAAMA,GAAQ,IAAMA,GAAQ,IAAMA,GAAQ,IAAMA,GAAQ,IAE7E,OAAOA,IAAS,ECnBb,SAASs2G,KAOZ,IAAIpqD,EAAM,GACV,MAAM9U,EAAW,uCACjB,IAAK,IAAI9vD,EAAI,EAAGgK,EAAM8lD,EAASprD,OAAQ1E,EAAIgK,EAAKhK,GAAK,EAAG,CACpD,MAAM+B,EAAI+tD,EAAS9vD,GACbc,EAAqB,GAAhB+J,KAAKC,SAAiB,EAEjC85D,IADgB,MAAN7iE,EAAYjB,EAAU,MAANiB,EAAiB,EAAJjB,EAAW,EAAMiB,GAC/C2E,SAAS,IAEtB,OAAOk+D,ECfJ,SAASguH,GAAaxgK,EAAM1vB,EAAU,IAMzC,MAAMgoB,EAAQ,KAAO9M,UAAUwU,EAAM,MAAM,GA2B3C,OA1BA1H,EAAMwjB,QAASxmC,IACX,MAAM6B,EAAO7B,EACb,GAAI6B,EAAM,CACN,MAAMoJ,EAAQpJ,EAAKgF,WACnB,GAAIoE,EACA,IAAK,IAAI3S,EAAI,EAAG25D,EAAKhnD,EAAMjO,OAAQ1E,EAAI25D,EAAI35D,GAAK,EAAG,CAC/C,MAAMgW,EAAOrD,EAAMzL,KAAKlH,GACxB,GAAIgW,EAAM,CACN,MAAMpO,EAAMoO,EAAK/U,MAAMmL,cACjB7L,EAAOyV,EAAKzV,KAAK6L,eAKnB7L,EAAKsvD,WAAW,OAChBjoD,EAAIioD,WAAW,gBAEfjoD,EAAIioD,WAAW,UACfjoD,EAAIioD,WAAW,eACftmD,EAAK2I,gBAAgB3R,QAOzCmC,EAAQ2hB,IACDqG,EAEJ,KAAO,UAAUoI,OAAOpI,GAAO0H,OCpBnC,SAAS+gK,GAAsB5yL,EAAM6yL,EAAYC,GACpD,MAAME,EAA0B1oL,KAAKkzC,IAAI,EAAGlzC,KAAKq4C,MAAoB,IAAd3iD,EAAKmE,SAE5D,IACI4uL,EADAE,EAAe3oL,KAAKq4C,MAAoB,GAAd3iD,EAAKmE,QAAgB,EAE/C+uL,GAAwB,EAC5B,MAAMC,EAAgBnzL,EAAK6L,cAE3B,IAAK,MAAMwnL,KAAaR,EAAY,CAChC,MAAMS,EAAgBR,EAAQO,GAC9B,QAAsB3uL,IAAlB4uL,GACAhpL,KAAKinC,IAAI+hJ,EAAcnvL,OAASgvL,EAAchvL,SAC1C6uL,EAAyB,CAC7B,MAAMO,EAAyBD,EAAcznL,cAC7C,GAAI0nL,IAA2BJ,EAAe,CAC1C,GAAIG,IAAkBtzL,EAClB,SAEJ,OAAOqzL,EAEX,GAAIH,EACA,SAEJ,GAAII,EAAcnvL,OAAS,EAGvB,SAGJ,MAAMkvD,EAAWk/H,GAAmBY,EAAeI,EAAwBN,EAAe,GAC1F,QAAiBvuL,IAAb2uD,EACA,SAEAA,EAAW,GACX6/H,GAAwB,EACxBH,EAAgBM,IAIhBJ,EAAe5/H,EACf0/H,EAAgBM,IAI5B,OAAON,EAEX,SAASR,GAAmB38C,EAAIw0C,EAAI7yJ,GAChC,IAAIkrB,EAAW,IAAI/+C,MAAM0mL,EAAGjmL,OAAS,GACjCqjC,EAAU,IAAI9jC,MAAM0mL,EAAGjmL,OAAS,GAEpC,MAAMquL,EAAMj7J,EAAM,EAClB,IAAK,IAAI93B,EAAI,EAAGA,GAAK2qL,EAAGjmL,OAAQ1E,GAAK,EACjCgjD,EAAShjD,GAAKA,EAElB,IAAK,IAAIA,EAAI,EAAGA,GAAKm2I,EAAGzxI,OAAQ1E,GAAK,EAAG,CACpC,MAAMk2I,EAAKC,EAAGhmI,WAAWnQ,EAAI,GACvBgzL,EAAOhzL,EAAI83B,EAAM93B,EAAI83B,EAAM,EAC3Bm7J,EAAOtI,EAAGjmL,OAASozB,EAAM93B,EAAI83B,EAAM93B,EAAI2qL,EAAGjmL,OAChDqjC,EAAQ,GAAK/nC,EAEb,IAAIkzL,EAASlzL,EACb,IAAK,IAAIiK,EAAI,EAAGA,EAAI+oL,EAAM/oL,GAAK,EAC3B89B,EAAQ99B,GAAK8oL,EAEjB,IAAK,IAAI9oL,EAAI+oL,EAAM/oL,GAAKgpL,EAAMhpL,GAAK,EAAG,CAClC,MAAM8pD,EAAOmiF,IAAOy0C,EAAGx6K,WAAWlG,EAAI,GAChC+4C,EAAS/4C,EAAI,GACbY,KAAKkzC,IACMiF,EAAS/4C,GAAK,EACd89B,EAAQ99B,EAAI,GAAK,EACb+4C,EAAS/4C,EAAI,GAAK,GACvC89B,EAAQ99B,GAAK8pD,EACbm/H,EAASroL,KAAKkzC,IAAIm1I,EAAQn/H,GAE9B,IAAK,IAAI9pD,EAAIgpL,EAAO,EAAGhpL,GAAK0gL,EAAGjmL,OAAQuF,GAAK,EACxC89B,EAAQ99B,GAAK8oL,EAEjB,GAAIG,EAASp7J,EAGT,OAEJ,MAAMld,EAAOooC,EACbA,EAAWjb,EACXA,EAAUntB,EAEd,MAAMgqD,EAAM5hB,EAAS2nI,EAAGjmL,QACxB,OAAOkgE,EAAM9sC,OAAM7yB,EAAY2/D,E,wHCjG5B,SAAS/O,GAAIp0D,EAAGrB,GACnB,OAASqB,EAAIrB,EAAKA,GAAKA,EAEpB,SAAS,GAAOgjD,EAAOC,GAC1B,GAAa,MAATA,EACAA,EAAiB,MAATD,EAAgB,EAAIA,EAC5BA,EAAQ,OAEP,GAAIC,EAAQD,EAAO,CACpB,MAAMxuC,EAAMwuC,EACZA,EAAQC,EACRA,EAAQzuC,EAEZ,OAAO/J,KAAKq4C,MAAMr4C,KAAKC,UAAYu4C,EAAQD,EAAQ,GAAKA,GAErD,SAAS,GAAax7C,GACzB,MAAsB,iBAARA,GAAsC,MAAlBA,EAAIvB,OAAO,GAE1C,SAAS6oL,GAAoBpmL,EAAK8tD,GACrC,GAAW,MAAP9tD,EACA,OAAO,EAEX,IAAIub,EACJ,GAAmB,iBAARvb,GAEP,GADAub,EAAMuR,WAAW9sB,GACb,GAAaA,KACbub,GAAO,IACH46C,OAAO9lC,SAAS9U,IAChB,OAAOA,EAAMuyC,OAKrBvyC,EAAMvb,EAEV,OAAKm2D,OAAO9lC,SAAS9U,GAGjBA,EAAM,GAAKA,EAAM,EACVA,EAAMuyC,EAEVvyC,EALI,EAOR,SAAS2vK,GAAgBpsL,EAAKusL,GAQjC,MAAM50I,EAAS3pB,WAAWhuB,GAC1B,GAAIq3D,OAAO/xB,MAAMqS,GACb,OAAO,KAGX,IAAIpG,EACJ,GAAa,MAATg7I,EAEAh7I,EAAS,iBAER,GAAIl1C,MAAMD,QAAQmwL,GAAQ,CAC3B,GAAqB,IAAjBA,EAAMzvL,OACN,OAAO,KAEXy0C,EAASg7I,EAAMpiL,KAAK,SAEE,iBAAVoiL,IACZh7I,EAASg7I,GAEb,MAAMnsK,EA1BN,SAAiBmxB,GACb,MAAMttC,EAAU,IAAI6C,OAAO,wBAAwByqC,OAAY9nC,KAAKzJ,GACpE,OAAKiE,EAGEA,EAAQ,GAFJ,KAuBFuoL,CAAQj7I,GACrB,OAAa,OAATnxB,EACO,KAEJ,CACHA,OACA/mB,MAAOs+C,GAGR,SAASw0I,GAAe97J,GAC3B,GAAmB,iBAARA,EAAkB,CACzB,IAAIqB,EAAO,EACPtlB,EAAM,EACNohB,EAAQ,EACRmpC,EAAS,EAeb,OAdoB,MAAhBtmC,EAAIo8J,UAAoBp1H,OAAO9lC,SAASlB,EAAIo8J,YAC5CrgL,EAAMuqD,EAAStmC,EAAIo8J,UAED,MAAlBp8J,EAAIomC,YAAsBY,OAAO9lC,SAASlB,EAAIomC,cAC9CjpC,EAAQkE,EAAOrB,EAAIomC,YAEP,MAAZpmC,EAAIqB,MAAgB2lC,OAAO9lC,SAASlB,EAAIqB,QACxCA,EAAOrB,EAAIqB,MACA,MAAXrB,EAAIjkB,KAAeirD,OAAO9lC,SAASlB,EAAIjkB,OACvCA,EAAMikB,EAAIjkB,KACG,MAAbikB,EAAI7C,OAAiB6pC,OAAO9lC,SAASlB,EAAI7C,SACzCA,EAAQ6C,EAAI7C,OACE,MAAd6C,EAAIsmC,QAAkBU,OAAO9lC,SAASlB,EAAIsmC,UAC1CA,EAAStmC,EAAIsmC,QACV,CAAEvqD,MAAKohB,QAAOmpC,SAAQjlC,QAEjC,IAAI1xB,EAAM,EAIV,OAHW,MAAPqwB,GAAegnC,OAAO9lC,SAASlB,KAC/BrwB,EAAMqwB,GAEH,CAAEjkB,IAAKpM,EAAKwtB,MAAOxtB,EAAK22D,OAAQ32D,EAAK0xB,KAAM1xB,G,oDC/G/C,SAASrB,GAAMkC,EAAI8pC,EAAKr6B,GAC3B,GAAIA,EACA,OAAQA,EAAKxT,QACT,KAAK,EACD,OAAO+D,EAAGtI,KAAKoyC,GACnB,KAAK,EACD,OAAO9pC,EAAGtI,KAAKoyC,EAAKr6B,EAAK,IAC7B,KAAK,EACD,OAAOzP,EAAGtI,KAAKoyC,EAAKr6B,EAAK,GAAIA,EAAK,IACtC,KAAK,EACD,OAAOzP,EAAGtI,KAAKoyC,EAAKr6B,EAAK,GAAIA,EAAK,GAAIA,EAAK,IAC/C,KAAK,EACD,OAAOzP,EAAGtI,KAAKoyC,EAAKr6B,EAAK,GAAIA,EAAK,GAAIA,EAAK,GAAIA,EAAK,IACxD,KAAK,EACD,OAAOzP,EAAGtI,KAAKoyC,EAAKr6B,EAAK,GAAIA,EAAK,GAAIA,EAAK,GAAIA,EAAK,GAAIA,EAAK,IACjE,KAAK,EACD,OAAOzP,EAAGtI,KAAKoyC,EAAKr6B,EAAK,GAAIA,EAAK,GAAIA,EAAK,GAAIA,EAAK,GAAIA,EAAK,GAAIA,EAAK,IAC1E,QACI,OAAOzP,EAAGlC,MAAMgsC,EAAKr6B,GAGjC,OAAOzP,EAAGtI,KAAKoyC,GAEZ,SAAS,GAAK9pC,EAAI8pC,KAAQr6B,GAC7B,OAAO3R,GAAMkC,EAAI8pC,EAAKr6B,GASnB,SAASq8K,GAAO9rL,EAAI8pC,EAAKkiJ,GAC5B,MAAMtiL,EAAO,GACPC,EAAQ,GAiBd,MAhBU,IAAI8F,KACV,IAAIw8K,GAAW,EACf,MAAMnzL,EAAM2W,EAAKnG,KAAK,KAYtB,OAXIxQ,KAAO6Q,GACPsiL,GAAW,EAdvB,SAAgBnwL,EAAO2C,GACnB,IAAK,IAAIlH,EAAI,EAAG25D,EAAKp1D,EAAMG,OAAQ1E,EAAI25D,EAAI35D,GAAK,EAC5C,GAAIuE,EAAMvE,KAAOkH,EACb,OAAO3C,EAAMgB,KAAKhB,EAAM6F,OAAOpK,EAAG,GAAG,IAYrCw0L,CAAOriL,EAAM5Q,KAGT4Q,EAAKzN,QAAU,YACR0N,EAAMD,EAAKG,SAEtBH,EAAK5M,KAAKhE,GACV6Q,EAAM7Q,GAAOgF,GAAMkC,EAAI8pC,GAAO,KAAMr6B,IAEjCu8K,EAAgBA,EAAcriL,EAAM7Q,GAAMmzL,GAAYtiL,EAAM7Q,ICnDpE,SAASozL,GAAY3tL,GACxB,MAAsB,iBAARA,GAAoBA,EAAI6Y,MAA4B,mBAAb7Y,EAAI6Y,KAEtD,SAAS+0K,GAAQ5tL,GACpB,OAAc,MAAPA,IAAgBA,aAAekpE,SAAWykH,GAAY3tL,IAE1D,SAAS6tL,MAAkBC,GAC9B,MAAMrpL,EAAU,GAChBqpL,EAAO5mJ,QAASniC,IACR9H,MAAMD,QAAQ+H,GACdN,EAAQlG,QAAQwG,GAGhBN,EAAQlG,KAAKwG,KAIrB,GADiBN,EAAQ49C,KAAMub,GAAQgwH,GAAQhwH,IACjC,CACV,MAAMowH,EAAWvpL,EAAQnC,IAAKs7D,GAAQgwH,GAAQhwH,GAAOA,EAAMsL,QAAQ3wD,SAAgB,IAARqlD,IAC3E,OAAOsL,QAAQ+kH,IAAID,GAAUn1K,KAAM3Z,GAAQA,EAAIqoC,OAAO,CAAC8B,EAAMnpC,KAAkB,IAATA,GAAkBmpC,GAAM,IAElG,OAAO5kC,EAAQ68C,MAAOsc,IAAgB,IAARA,GAE3B,SAASswH,MAAqBJ,GACjC,MAAM7rL,EAAM4rL,GAAeC,GAC3B,MAAsB,kBAAR7rL,EAAoBinE,QAAQ3wD,QAAQtW,GAAOA,ECzB7D,MAAM4pI,GAAS,cACTC,GAAY,OACZC,GAAc7hG,GAAQ,IAAIA,KACzB,SAAStR,GAASr2B,GACrB,OAAQA,GAAQA,EAAKvB,cAAgBuB,EAAKvB,aAAa,UAAa,GAEjE,SAAS24B,GAASp3B,EAAMf,GAC3B,GAAY,MAARe,GAA4B,MAAZf,EAChB,OAAO,EAEX,MAAMk4B,EAAaqyG,GAAWnzG,GAASr2B,IACjC4K,EAAY4+H,GAAWvqI,GAC7B,OAAyB,IAAlBe,EAAKtC,UACNy5B,EAAW31B,QAAQ8nI,GAAQ,KAAK5xF,SAAS9sC,GAG5C,SAAS8rB,GAAS12B,EAAMf,GAC3B,GAAY,MAARe,GAA4B,MAAZf,EAApB,CAGA,GAAwB,mBAAbA,EACP,OAAOy3B,GAAS12B,EAAMf,EAASo3B,GAASr2B,KAE5C,GAAwB,iBAAbf,GAA2C,IAAlBe,EAAKtC,SAAgB,CACrD,MAAMi5B,EAAU13B,EAASwI,MAAM8hI,KAAc,GACvC5yD,EAAW6yD,GAAWnzG,GAASr2B,IAAOwB,QAAQ8nI,GAAQ,KAC5D,IAAIr7F,EAAWtX,EAAQqO,OAAO,CAAC8B,EAAMq7C,IAC7Br7C,EAAK7pC,QAAQusI,GAAWrnD,IAAQ,EACzB,GAAGr7C,IAAOq7C,KAEdr7C,EACR6vC,GACH1oC,EAAWA,EAASrK,OAChB+yC,IAAa1oC,GACbjuC,EAAKtB,aAAa,QAASuvC,KAIhC,SAASlX,GAAY/2B,EAAMf,GAC9B,GAAY,MAARe,EAAJ,CAGA,GAAwB,mBAAbf,EACP,OAAO83B,GAAY/2B,EAAMf,EAASo3B,GAASr2B,KAE/C,KAAMf,GAAgC,iBAAbA,IAA4C,IAAlBe,EAAKtC,SAAgB,CACpE,MAAMi5B,GAAW13B,GAAY,IAAIwI,MAAM8hI,KAAc,GAC/C5yD,EAAW6yD,GAAWnzG,GAASr2B,IAAOwB,QAAQ8nI,GAAQ,KAC5D,IAAIr7F,EAAWtX,EAAQqO,OAAO,CAAC8B,EAAMq7C,KACjC,MAAMv3E,EAAY4+H,GAAWrnD,GAC7B,OAAIr7C,EAAK7pC,QAAQ2N,IAAc,EACpBk8B,EAAKtlC,QAAQoJ,EAAW,KAE5Bk8B,GACR6vC,GACH1oC,EAAWhvC,EAAWgvC,EAASrK,OAAS,GACpC+yC,IAAa1oC,GACbjuC,EAAKtB,aAAa,QAASuvC,KAIhC,SAASjX,GAAYh3B,EAAMf,EAAUg4B,GACxC,GAAY,MAARj3B,GAA4B,MAAZf,EAGpB,GAAgB,MAAZg4B,GAAwC,iBAAbh4B,EAA/B,CAIA,GAAwB,mBAAbA,EACP,OAAO+3B,GAAYh3B,EAAMf,EAASo3B,GAASr2B,GAAOi3B,GAAWA,GAEjE,GAAwB,iBAAbh4B,EAAuB,EACdA,EAASwI,MAAM8hI,KAAc,IACrC5kG,QAASw9C,IACb/qD,GAASp3B,EAAMmiF,GAAOprD,GAAY/2B,EAAMmiF,GAAOzrD,GAAS12B,EAAMmiF,WATlElrD,EAAWP,GAAS12B,EAAMf,GAAY83B,GAAY/2B,EAAMf,GCjEhE,IAAIslG,GAAY,EACT,SAAS,KAEZ,OADAA,IAAa,EACN,IAAIA,GAER,SAASF,GAASrkG,GAIrB,OAHe,MAAXA,EAAKgI,IAA0B,KAAZhI,EAAKgI,KACxBhI,EAAKgI,GAAK,MAEPhI,EAAKgI,GAMT,SAASo8F,GAAqBpkG,GACjC,OAAY,MAARA,IAGgC,mBAAtBA,EAAK0kG,cAA+B1kG,aAAgB2kG,YAE/D,MAAM,GAAK,CACdjmB,IAAK,6BACLkmB,MAAO,gCACPz2F,IAAK,uCACL02F,MAAO,+BACPL,MAAO,gCAEEL,GAAa,MACnB,SAAS,GAAcllB,EAAS7gF,EAAM9B,UACzC,OAAO8B,EAAIG,cAAc0gF,GAEtB,SAASE,GAAgBF,EAAS70E,EAAe,GAAGo6F,MAAOpmG,EAAM9B,UACpE,OAAO8B,EAAI+gF,gBAAgB/0E,EAAc60E,GAEtC,SAASilB,GAAiBjlB,EAAS7gF,EAAM9B,UAC5C,OAAO6iF,GAAgBF,EAAS,GAAGP,IAAKtgF,GAErC,SAAS6lG,GAAkBzuF,GAC9B,GAAIA,EAAS,CACT,MAAMrH,EAAM,eAAe,GAAGuwE,qBAAqB,GAAGmmB,mBAAmBV,OAAe3uF,WAClF,gBAAEnL,GAAoBguB,GAASlqB,EAAK,CAAEgtB,OAAO,IACnD,OAAO9wB,EAEX,MAAMq0E,EAAMpiF,SAAS6iF,gBAAgB,GAAGT,IAAK,OAG7C,OAFAA,EAAIoD,eAAe,GAAG8iB,MAAO,cAAe,GAAGC,OAC/CnmB,EAAIhgF,aAAa,UAAWylG,IACrBzlB,EAEJ,SAASrmD,GAAStc,EAAM5iB,EAAU,IACrC,IAAIgV,EACJ,IACI,MAAMs2F,EAAS,IAAIlsE,UACnB,GAAqB,MAAjBp/B,EAAQgiC,MAAe,CACNspE,EACRtpE,MAAQhiC,EAAQgiC,MAE7BhtB,EAAMs2F,EAAOjsE,gBAAgBzc,EAAM5iB,EAAQ8jC,UAAY,YAE3D,MAAOv7B,GACHyM,OAAMzS,EAEV,IAAKyS,GAAOA,EAAIlG,qBAAqB,eAAe9M,OAChD,MAAM,IAAIqB,MAAM,gBAAgBuf,GAEpC,OAAO5N,EAEJ,SAAS,GAAQhQ,EAAM2mG,GAAY,GACtC,MAAM79F,EAAW9I,EAAK8I,SACtB,OAAO69F,EAAY79F,EAASpE,cAAgBoE,EAASqU,cAElD,SAAS,GAAMtb,GAClB,IAAI9E,EAAQ,EACRiD,EAAO6B,EAAK+kG,gBAChB,KAAO5mG,GACmB,IAAlBA,EAAKT,WACLxC,GAAS,GAEbiD,EAAOA,EAAK4mG,gBAEhB,OAAO7pG,EAEJ,SAAS,GAAK8E,EAAMf,GACvB,OAAOe,EAAKyI,iBAAiBxJ,GAE1B,SAAS+kG,GAAQhkG,EAAMf,GAC1B,OAAOe,EAAK+xF,cAAc9yF,GAEvB,SAAS8kG,GAAkB/jG,EAAM4K,EAAWo6F,GAC/C,MAAMC,EAAkBjlG,EAAKilG,gBAC7B,IAAI9mG,EAAO6B,EAAKnB,WAChB,KAAOV,GAAQA,IAAS6mG,GAAc7mG,IAAS8mG,GAAiB,CAC5D,GAAI7tE,GAASj5B,EAAMyM,GACf,OAAOzM,EAEXA,EAAOA,EAAKU,WAEhB,OAAO,KAEJ,SAASgF,GAASlK,EAAQ6mE,GAC7B,MAAMx0D,EAAMw0D,GAASA,EAAM3hE,WAC3B,OAAQlF,IAAWqS,MACZA,GAAwB,IAAjBA,EAAItO,UAAwD,GAAtC/D,EAAOmS,wBAAwBE,IAGhE,SAAS,GAAOhM,GACfA,EAAKnB,YACLmB,EAAKnB,WAAWC,YAAYkB,GAG7B,SAAS,GAAMA,GAClB,KAAOA,EAAKiN,YACRjN,EAAKlB,YAAYkB,EAAKiN,YAGvB,SAASsc,GAAOvpB,EAAMP,IACb/E,MAAMD,QAAQgF,GAASA,EAAQ,CAACA,IACxCklC,QAAS67B,IACI,MAATA,GACAxgE,EAAKpB,YAAY4hE,KAItB,SAASh3C,GAAQxpB,EAAMP,GAC1B,MAAM+gE,EAAQxgE,EAAKiN,WACnB,OAAOuzD,EAAQ,GAAOA,EAAO/gE,GAAS8pB,GAAOvpB,EAAMP,GAEhD,SAAS,GAAOO,EAAMP,GACzB,MAAM9F,EAASqG,EAAKnB,WACpB,GAAIlF,EAAQ,EACIe,MAAMD,QAAQgF,GAASA,EAAQ,CAACA,IACxCklC,QAAS67B,IACI,MAATA,GACA7mE,EAAO8vB,aAAa+2C,EAAOxgE,MAKpC,SAAS8pB,GAAS9pB,EAAMkB,GACb,MAAVA,GACAA,EAAOtC,YAAYoB,GAIpB,SAAS8jG,GAAc9jG,GAC1B,IAEI,OAAOA,aAAgB4xF,YAE3B,MAAOvqF,GAIH,MAAwB,iBAATrH,GACO,IAAlBA,EAAKtC,UACiB,iBAAfsC,EAAK8d,OACkB,iBAAvB9d,EAAK6H,eC3JxB,MAAMu7F,GAAsB,CAAC,WACtB,SAAS3kG,GAAauB,EAAMhJ,GAC/B,OAAOgJ,EAAKvB,aAAazH,GAEtB,SAAS2R,GAAgB3I,EAAMhJ,GAClC,MAAMqsG,EAAYL,GAAYhsG,GAC1BqsG,EAAUvrG,GACNkI,EAAKsjG,eAAeD,EAAUvrG,GAAIurG,EAAUE,QAC5CvjG,EAAK0hF,kBAAkB2hB,EAAUvrG,GAAIurG,EAAUE,OAG9CvjG,EAAK8tF,aAAa92F,IACvBgJ,EAAK2I,gBAAgB3R,GAGtB,SAAS0H,GAAasB,EAAMhJ,EAAMU,GACrC,GAAa,MAATA,EACA,OAAOiR,GAAgB3I,EAAMhJ,GAEjC,MAAMqsG,EAAYL,GAAYhsG,GAC1BqsG,EAAUvrG,IAAuB,iBAAVJ,EACvBsI,EAAK8hF,eAAeuhB,EAAUvrG,GAAId,EAAMU,GAE1B,OAATV,EACLgJ,EAAKgI,GAAK,GAAGtQ,EAGbsI,EAAKtB,aAAa1H,EAAM,GAAGU,GAG5B,SAASurG,GAAcjjG,EAAMoJ,GAChCjS,OAAOyR,KAAKQ,GAAOu7B,QAAS3tC,IACxB0H,GAAasB,EAAMhJ,EAAMoS,EAAMpS,MAGhC,SAAS,GAAKgJ,EAAMhJ,EAAMU,GAC7B,GAAY,MAARV,EAAc,CACd,MAAMoS,EAAQpJ,EAAKgF,WACbtF,EAAM,GACZ,IAAK,IAAIjJ,EAAI,EAAGA,EAAI2S,EAAMjO,OAAQ1E,GAAK,EACnCiJ,EAAI0J,EAAM3S,GAAGO,MAAQoS,EAAM3S,GAAGiB,MAElC,OAAOgI,EAEX,GAAoB,iBAAT1I,QAA+B0E,IAAVhE,EAC5B,OAAOsI,EAAKvB,aAAazH,GAET,iBAATA,EACPisG,GAAcjjG,EAAMhJ,GAGpB0H,GAAasB,EAAMhJ,EAAMU,GAG1B,SAASsrG,GAAYhsG,GACxB,IAA2B,IAAvBA,EAAKiG,QAAQ,KAAa,CAC1B,MAAMumG,EAAcxsG,EAAK2L,MAAM,KAC/B,MAAO,CACH7K,GAAI,GAAG0rG,EAAY,IACnBD,MAAOC,EAAY,IAG3B,MAAO,CACH1rG,GAAI,KACJyrG,MAAOvsG,GAGR,SAAS+rG,GAAe35F,GAC3B,MAAMzO,EAAS,GAKf,OAJAxD,OAAOyR,KAAKQ,GAAOu7B,QAAS3sC,IACxB,MAAMhB,EAAOosG,GAAoB1rD,SAAS1/C,GAAOA,EAAM6tD,GAAU7tD,GACjE2C,EAAO3D,GAAQoS,EAAMpR,KAElB2C,EAEJ,SAASmoG,GAAcW,GAC1B,MAAM/jG,EAAM,GAWZ,OAVe+jG,EAAY9gG,MAAM,KAC1BgiC,QAAShnC,IACZ,MAAM+lG,EAAU/lG,EAAKimC,OACrB,GAAI8/D,EAAS,CACT,MAAM3vD,EAAO2vD,EAAQ/gG,MAAM,KACvBoxC,EAAK54C,SACLuE,EAAIq0C,EAAK,GAAGnQ,QAAUmQ,EAAK,GAAKA,EAAK,GAAGnQ,OAAS,OAItDlkC,EAEJ,SAASmjG,GAAW3hG,EAAQqc,GAkC/B,OAjCApmB,OAAOyR,KAAK2U,GAAQonB,QAASl4B,IACzB,GAAa,UAATA,EACAvL,EAAOuL,GAAQvL,EAAOuL,GAChB,GAAGvL,EAAOuL,MAAS8Q,EAAO9Q,KAC1B8Q,EAAO9Q,QAEZ,GAAa,UAATA,EAAkB,CACvB,MAAM2nB,EAA6B,iBAAjBlzB,EAAOuL,GACnBk3F,EAA6B,iBAAjBpmF,EAAO9Q,GACzB,IAAIm3F,EACAC,EACAzvE,GAAMuvE,GACNC,EAAK1iG,EAAOuL,GACZo3F,EAAKtmF,EAAO9Q,IAEP2nB,GACLwvE,EAAK1iG,EAAOuL,GACZo3F,EAAKf,GAAcvlF,EAAO9Q,KAErBk3F,GACLC,EAAKd,GAAc5hG,EAAOuL,IAC1Bo3F,EAAKtmF,EAAO9Q,KAGZm3F,EAAKd,GAAc5hG,EAAOuL,IAC1Bo3F,EAAKf,GAAcvlF,EAAO9Q,KAE9BvL,EAAOuL,GAAQo2F,GAAWe,EAAIC,QAG9B3iG,EAAOuL,GAAQ8Q,EAAO9Q,KAGvBvL,EC3HJ,SAAS6qL,GAASp0L,EAAGs0L,EAAah4J,EAAM,IAC3C,MAAM0N,EAAS1N,EAAI0N,QAAU,EACvBwqJ,EAAY,GACZzsL,EAAM,GACZ,IAAIwsL,EACAv3K,EACAy3K,EAAQ,KACZ,IAAK,IAAI31L,EAAI,EAAGA,EAAIkB,EAAEwD,OAAQ1E,GAAK,EAAG,CAClCy1L,EAAOxsL,EAAIjJ,GAAKkB,EAAElB,GAClB,IAAK,IAAIiK,EAAI,EAAG4hL,EAAK2J,EAAY9wL,OAAQuF,EAAI4hL,EAAI5hL,GAAK,EAAG,CACrD,MAAM2rL,EAAaJ,EAAYvrL,GACzB5F,EAAQuxL,EAAWvxL,MAAQ6mC,EAC3BhhC,EAAM0rL,EAAW1rL,IAAMghC,EACzBlrC,GAAKqE,GAASrE,EAAIkK,IACE,iBAATurL,EACPA,EAAOxsL,EAAIjJ,GAAK,CACZkB,EAAGA,EAAElB,GACL2S,MAAOijL,EAAWjjL,OAItB8iL,EAAK9iL,MAAQy5F,GAAWA,GAAW,GAAIqpF,EAAK9iL,OAAQijL,EAAWjjL,OAE/D6qB,EAAIq4J,2BACoB,MAApBJ,EAAKD,cACLC,EAAKD,YAAc,IAEvBC,EAAKD,YAAYjwL,KAAK0E,KAIlCiU,EAAOjV,EAAIjJ,EAAI,GACVke,EAGI,EAAU1Y,SAASiwL,IAAS,EAAUjwL,SAAS0Y,IACpDy3K,EAAQA,EAGJ7vK,KAAKs3C,UAAUq4H,EAAK9iL,SAAWmT,KAAKs3C,UAAUl/C,EAAKvL,OACnDgjL,EAAMz0L,GAAKu0L,EAAKv0L,GAGhBw0L,EAAUnwL,KAAKowL,GACfA,EAAQF,IAGP,EAAUjwL,SAASiwL,IAMnB,EAAUjwL,SAAS0Y,IAJxBy3K,EAAQA,EACRD,EAAUnwL,KAAKowL,GACfA,EAAQF,GAURE,GAASA,GAAS,IAAMF,EA5BxBE,EAAQF,EAkChB,OAHa,MAATE,GACAD,EAAUnwL,KAAKowL,GAEZD,EAEJ,SAASL,GAAuBG,EAAa/wL,GAChD,OAAO+wL,EACDA,EAAYjhL,OAAQxG,GAAMA,EAAE1J,MAAQI,GAASA,GAASsJ,EAAE7D,KACxD,GAEH,SAASkrL,GAA8BI,EAAanxL,EAAO6F,GAC9D,OAAOsrL,EACDA,EAAYjhL,OAAQxG,GAAO1J,GAAS0J,EAAE1J,OAASA,EAAQ0J,EAAE7D,KACtDA,EAAM6D,EAAE1J,OAAS6F,GAAO6D,EAAE7D,KAC1B6D,EAAE1J,OAASA,GAAS0J,EAAE7D,IAAMA,GAC/B,GAEH,SAASirL,GAAiBK,EAAa/wL,EAAOymC,GAYjD,OAXIsqJ,GACAA,EAAYtnJ,QAASngC,IACbA,EAAE1J,MAAQI,GAASsJ,EAAE7D,KAAOzF,EAC5BsJ,EAAE7D,KAAOghC,EAEJn9B,EAAE1J,OAASI,IAChBsJ,EAAE1J,OAAS6mC,EACXn9B,EAAE7D,KAAOghC,KAIdsqJ,ECvFJ,SAAS,GAASztL,GACrB,OAAOA,EAAKgD,QAAQ,KAAM,KCNvB,IAAIgrL,GCHAQ,GCCX,IAAIuC,IFGJ,SAAW/C,GAgBP,SAASrnJ,EAAYztC,GACjB,OAAQA,SAEa,kBAAVA,GACU,iBAAVA,GACU,iBAAVA,EAGf,SAAS+C,EAAQ/C,GACb,OAAOgD,MAAMD,QAAQ/C,GAgBzB,SAAS+0L,EAAUvsL,EAAOkC,GAEtB,GAAIlC,IAAUkC,EACV,OAAO,EAGX,GAAI+iC,EAAYjlC,IAAUilC,EAAY/iC,GAClC,OAAO,EAGX,MAAMkqI,EAAK7xI,EAAQyF,GACbq6K,EAAK9/K,EAAQ2H,GAEnB,OAAIkqI,IAAOiuC,IAIPjuC,GAAMiuC,EA8Bd,SAAwBr6K,EAAOkC,GAE3B,GAAIlC,IAAUkC,EACV,OAAO,EAGX,GAAIlC,EAAM/E,SAAWiH,EAAOjH,OACxB,OAAO,EAGX,IAAK,IAAI1E,EAAI,EAAGyB,EAAIgI,EAAM/E,OAAQ1E,EAAIyB,EAAGzB,GAAK,EAC1C,IAAKg2L,EAAUvsL,EAAMzJ,GAAI2L,EAAO3L,IAC5B,OAAO,EAIf,OAAO,EA7CIi2L,CAAexsL,EAAOkC,GAkDrC,SAAyBlC,EAAOkC,GAE5B,GAAIlC,IAAUkC,EACV,OAAO,EAIX,IAAK,MAAMpK,KAAOkI,EACd,KAAMlI,KAAOoK,GACT,OAAO,EAKf,IAAK,MAAMpK,KAAOoK,EACd,KAAMpK,KAAOkI,GACT,OAAO,EAKf,IAAK,MAAMlI,KAAOkI,EACd,IAAKusL,EAAUvsL,EAAMlI,GAAMoK,EAAOpK,IAC9B,OAAO,EAIf,OAAO,EA1EA20L,CAAgBzsL,EAAOkC,IAUlC,SAASwqL,EAASl1L,GAEd,OAAIytC,EAAYztC,GACLA,EAGP+C,EAAQ/C,GA+DhB,SAAuBA,GACnB,MAAMiD,EAAS,IAAID,MAAMhD,EAAMyD,QAC/B,IAAK,IAAI1E,EAAI,EAAGyB,EAAIR,EAAMyD,OAAQ1E,EAAIyB,EAAGzB,GAAK,EAC1CkE,EAAOlE,GAAKm2L,EAASl1L,EAAMjB,IAE/B,OAAOkE,EAnEIkyL,CAAcn1L,GAwE7B,SAAwBA,GACpB,MAAMiD,EAAS,GAIf,OAHAxD,OAAOyR,KAAKlR,GAAOitC,QAAS3sC,IACxB2C,EAAO3C,GAAO40L,EAASl1L,EAAMM,MAE1B2C,EA1EAmyL,CAAep1L,GA9E1B80L,EAAQvyH,YAAc9iE,OAAO+iE,OAAO,IAIpCsyH,EAAQO,WAAa51L,OAAO+iE,OAAO,IAenCsyH,EAAQrnJ,YAAcA,EAItBqnJ,EAAQ/xL,QAAUA,EAIlB+xL,EAAQvwL,SAHR,SAAkBvE,GACd,OAAQytC,EAAYztC,KAAW+C,EAAQ/C,IAmC3C80L,EAAQC,UAAYA,EAoBpBD,EAAQI,SAAWA,EApFvB,CA8JGJ,KAAYA,GAAU,KCjKzB,SAAWQ,GACP,SAASC,EAAUlyJ,GAEf,MADe,UACRA,EAAIu0E,OAAO,EADH,QACan0G,QAgEhC,SAAS+xL,EAAcC,GACnB,IAAIE,EAAMF,EAAQ3rL,QAAQ,MAAO,IACjC6rL,EAAMC,mBAAmBD,GACzB,MAAMnyL,EAAQmyL,EAAIpwL,QAAQ,KACpB+8B,EAAWqzJ,EAAIvwL,MAAM,EAAG5B,GACxBqyL,EAAOvzJ,EAASr3B,MAAM,KAAK,GAAGA,MAAM,KAAK,GACzCoZ,EAAOsxK,EAAIvwL,MAAM5B,EAAQ,GAC/B,IAAIkyL,EAGAA,EAFApzJ,EAAS/8B,QAAQ,WAAa,EAEduwL,KAAKzxK,GAIL8qC,SAAS5tB,mBAAmBld,IAGhD,MAAM0xK,EAAK,IAAInkF,WAAW8jF,EAAcjyL,QACxC,IAAK,IAAI1E,EAAI,EAAGA,EAAI22L,EAAcjyL,OAAQ1E,GAAK,EAC3Cg3L,EAAGh3L,GAAK22L,EAAcxmL,WAAWnQ,GAErC,OAAO,IAAIi3L,KAAK,CAACD,GAAK,CAAE1yL,KAAMwyL,IAGlC,SAASI,EAAaC,EAAMC,GACxB,MAAMC,EAAarxL,OAAOu2D,UAAU86H,WACpC,GAAIA,EAGAA,EAAWF,EAAMC,OAEhB,CAMD,MAAM9yJ,EAAMt+B,OAAOsxL,IAAIC,gBAAgBJ,GACjCK,EAAO3xL,SAASiC,cAAc,KACpC0vL,EAAK1+K,KAAOwrB,EACZkzJ,EAAKC,SAAWL,EAChBvxL,SAASwiB,KAAKlgB,YAAYqvL,GAC1BA,EAAKjpK,QACL1oB,SAASwiB,KAAKhgB,YAAYmvL,GAE1BxxL,OAAOsxL,IAAII,gBAAgBpzJ,IAgBnC,SAASgtJ,EAAUpgJ,GACf,MAAMjoC,EAAM2sB,WAAWsb,GACvB,OAAO+tB,OAAO/xB,MAAMjkC,GAAO,KAAOA,EA7HtCstL,EAAQC,UAAYA,EA6DpBD,EAAQoB,eAxDR,SAAwBrzJ,EAAKj7B,GAEzB,IAAKi7B,GAAOkyJ,EAAUlyJ,GAGlB,YADA3hB,WAAW,IAAMtZ,EAAS,KAAMi7B,IAGpC,MAAMszJ,EAAU,KACZvuL,EAAS,IAAItD,MAAM,yBAAyBu+B,KAE1CkiH,EAASxgJ,OAAO6xL,WAEbjvJ,IACG,GAAmB,MAAfA,EAAInC,OAAgB,CACpB,MAAMqxJ,EAAS,IAAID,WACnBC,EAAOvuJ,OAAUW,IACb,MAAM6tJ,EAAU7tJ,EAAIz/B,OAAOvG,OAC3BmF,EAAS,KAAM0uL,IAEnBD,EAAOtuJ,QAAUouJ,EACjBE,EAAOE,cAAcpvJ,EAAIpB,eAGzBowJ,KAGThvJ,IASC,GAAmB,MAAfA,EAAInC,OAAgB,CACpB,IAAI9M,EAAS2K,EAAIp4B,MAAM,KAAK+B,OAAS,MACtB,QAAX0rB,IACAA,EAAS,WAEb,MAAMs+J,EAAO,cAAct+J,YACrBu+J,EAAQ,IAAIrlF,WAAWjqE,EAAIpB,UAC3B2wJ,EAASF,EAAOtmC,KAfT,CAACymC,IACd,MACM/3L,EAAI,GACV,IAAK,IAAIL,EAAI,EAAGA,EAAIo4L,EAAI1zL,OAAQ1E,GAFf,MAGbK,EAAEkF,KAAKsK,OAAOC,aAAavJ,MAAM,KAAM6xL,EAAIC,SAASr4L,EAAGA,EAH1C,SAKjB,OAAOK,EAAE0R,KAAK,KASarL,CAASwxL,IACpC7uL,EAAS,KAAM8uL,QAGfP,KAGNhvJ,EAAM,IAAIC,eAChBD,EAAIgB,aAAe5jC,OAAO6xL,WAAa,OAAS,cAChDjvJ,EAAIQ,KAAK,MAAO9E,GAAK,GACrBsE,EAAI30B,iBAAiB,QAAS2jL,GAC9BhvJ,EAAI30B,iBAAiB,OAAQ,IAAMuyI,EAAO59G,IAC1CA,EAAIxB,QA0BRmvJ,EAAQE,cAAgBA,EAyBxBF,EAAQW,aAAeA,EAKvBX,EAAQ+B,gBAJR,SAAyB5B,EAASU,GAE9BF,EADaT,EAAcC,GACRU,IA2DvBb,EAAQgC,aA7CR,SAAsBtwG,EAAKvlF,EAAU,IACjC,IAAImtK,EAAU,KACd,MAAM2oB,EAAwB/zL,IACX,MAAXorK,IACAA,EAfZ,SAAsB5nF,GAClB,MAAMp8E,EAAUo8E,EAAIj3E,MAAM,gDAC1B,OAAInF,GAAWA,EAAQ,GACZA,EAAQ,GAAGd,QAAQ,MAAO,KAAKmB,MAAM,KAEzC,KAUWusL,CAAaxwG,IAEZ,MAAX4nF,EACOyhB,EAAUzhB,EAAQprK,IAEtB,MAELi0L,EAAwBC,IAC1B,MAAM9sL,EAAUo8E,EAAIj3E,MAAM2nL,GAC1B,OAAI9sL,GAAWA,EAAQ,GACZylL,EAAUzlL,EAAQ,IAEtB,MAEX,IAAI/F,EAAIpD,EAAQ0xB,MAOhB,GANS,MAALtuB,IACAA,EAAI4yL,EAAqB,+CAEpB,MAAL5yL,IACAA,EAAI0yL,EAAqB,IAEpB,MAAL1yL,EACA,MAAM,IAAIC,MAAM,uCAEpB,IAAInC,EAAIlB,EAAQ8zB,OAOhB,GANS,MAAL5yB,IACAA,EAAI80L,EAAqB,gDAEpB,MAAL90L,IACAA,EAAI40L,EAAqB,IAEpB,MAAL50L,EACA,MAAM,IAAImC,MAAM,wCAOpB,MADgB,sBAJAy8B,mBAAmBylD,GAC9Bl9E,QAAQ,KAAM,OACdA,QAAQ,KAAM,QA5K3B,CAkLGwrL,KAAYA,GAAU,KCjLzB,MAAMwC,GAAiB,CACnB/2D,GAAGp6H,GACQA,EAEXoxL,GAAGpxL,GACQkxL,GAAiBlxL,EAE5BqxL,GAAGrxL,GACQkxL,GAAiBlxL,EAAM,GAElCsxL,GAAGtxL,GACQkxL,GAAiBlxL,EAAM,KAElC4mL,GAAG5mL,GACQkxL,IAAmB,KAAOlxL,EAAO,IAE5CuxL,GAAGvxL,GACQkxL,IAAmB,KAAOlxL,EAAO,IAIzC,IAAI,IACX,SAAWixL,GACP,SAASnjK,EAAQ0jK,EAAUC,EAAWrxK,GAClC,MAAMW,EAAM,KAAO,UACdpB,IAAI,CACLD,QAAS,eACTiO,SAAU,WACV+D,MAAO,KACPtlB,KAAM,KACNogB,MAAOglK,GAAYpxK,GAAQ,IAC3BwO,OAAQ6iK,GAAarxK,GAAQ,MAE5BqL,SAASxtB,SAASwiB,MACjBs3B,EAAO,CACTvrB,MAAOzL,EAAIyL,SAAW,EACtBoC,OAAQ7N,EAAI6N,UAAY,GAG5B,OADA7N,EAAIhI,SACGg/B,EAEXk5I,EAAKnjK,QAAUA,EAWfmjK,EAAKS,KAVL,SAAc1xL,EAAKogB,GACO,MAAlB8wK,KACAA,GAAiBpjK,EAAQ,IAAK,IAAK,MAAMtB,OAE7C,MAAMwtC,EAAU55C,EAAO+wK,GAAe/wK,GAAQ,KAC9C,OAAI45C,EACOA,EAAQh6D,GAEZA,GA5Bf,CA+BG,KAAS,GAAO,KCvDZ,MAAM,GAAwB,WACjC,IAAIioF,EACJ,MAAMhkD,EAAM7lC,OAYZ,GAXW,MAAP6lC,IACAgkD,EACIhkD,EAAI1Q,uBACA0Q,EAAImgG,6BACJngG,EAAIkgG,0BACJlgG,EAAI2tJ,wBACJ3tJ,EAAIigG,wBACD,MAAPj8C,IACAA,EAAMA,EAAIruF,KAAKqqC,KAGZ,MAAPgkD,EAAa,CACb,IAAIsgJ,EAAW,EACftgJ,EAAOxmF,IACH,MAAMqwL,GAAW,IAAIrsL,MAAO83D,UACtBw0H,EAAa9uL,KAAKitB,IAAI,EAAG,IAAM4hK,EAAWy2C,IAC1C5+N,EAAKoR,WAAW,KAClBtZ,EAASqwL,EAAWC,IACrBA,GAEH,OADAw2C,EAAWz2C,EAAWC,EACfpoL,GAGf,OAAOs+E,EA1B0B,GA4BxB,GAAuB,WAChC,IAAI0pG,EACJ,MAAM1tJ,EAAM7lC,OAmBZ,OAlBW,MAAP6lC,IACA0tJ,EACI1tJ,EAAI21G,sBACA31G,EAAI+tJ,4BACJ/tJ,EAAIguJ,mCACJhuJ,EAAIiuJ,wBACJjuJ,EAAIkuJ,+BACJluJ,EAAImuJ,uBACJnuJ,EAAIouJ,8BACJpuJ,EAAIquJ,yBACJruJ,EAAIsuJ,+BACRZ,IACAA,EAAMA,EAAI/3L,KAAKqqC,KAGZ,MAAP0tJ,IACAA,EAAMz6J,cAEHy6J,EArByB,GC5B9BlmD,GAAgB,QAItB,MAAM3kC,GAAW,GACX4kC,GAAW,CAAC,SAAU,KAAM,MAAO,KACnCC,GAAY1tI,SAAWA,SAASiC,cAAc,OAAOuf,MAAQ,GAU5D,SAAS+rH,GAAsBzxI,GAClC,MAAMpB,EAAgBoB,EAfXoJ,QAAQsoI,GAAe,CAACtzH,EAAGyzH,IAASA,EAAK3uH,eAgBpD,GAAsB,MAAlB6pF,GAASnuG,GAAe,CACxB,MAAMkzI,EAAkBlzI,EAAK8jE,OAAO,GAAGx/C,cAAgBtkB,EAAK8F,MAAM,GAClEqoG,GAASnuG,GAAQA,KAAQgzI,GAAYhzI,EAb7C,SAAuBA,GACnB,IAAK,IAAIP,EAAI,EAAGA,EAAIszI,GAAS5uI,OAAQ1E,GAAK,EAAG,CACzC,MAAM0zI,EAAeJ,GAAStzI,GAAKO,EACnC,GAAImzI,KAAgBH,GAChB,OAAOG,EAGf,OAAO,KAMyCC,CAAcF,GAE9D,OAAO/kC,GAASnuG,GCrBb,SAAS0yI,GAAiB5rH,EAAO9mB,EAAMU,GAC1C,MAAMkyI,EAASC,GAAsB7yI,GACvB,MAAV4yI,IACA9rH,EAAM8rH,GAAUlyI,GAEpBomB,EAAM9mB,GAAQU,EAEX,SAAS,GAAiBsI,EAAMhJ,GAEnC,MAAM4zB,EAAW5qB,EAAK6H,eAClB7H,EAAK6H,cAAc2C,aACnBxK,EAAK6H,cAAc2C,YAAY8f,OAC7BtqB,EAAK6H,cAAc2C,YAAY+f,iBAAiBvqB,EAAM,MACtDvD,OAAO8tB,iBAAiBvqB,EAAM,MACpC,OAAI4qB,GAAY5zB,EACL4zB,EAASI,iBAAiBh0B,IAAS4zB,EAAS5zB,GAEhD4zB,EAEJ,SAAS6+G,GAAcn+G,GAC1B,MAAMxN,EAAQ,GAAiBwN,GAC/B,OAAiB,MAATxN,IAAqC,WAAnBA,EAAM8V,UAA4C,SAAnB9V,EAAM8V,UCtB5D,MAAMi9J,GAAiB,WAC1B,MAAMzyL,EAAM9B,SACZ,OAAI8B,EAAI0iB,UACG,WACH1iB,EAAI0iB,UAAUzJ,SAGlB5a,OAAOq0L,aACA,WACH,MAAMhwK,EAAYrkB,OAAOq0L,eACrBhwK,IACIA,EAAUzJ,MACVyJ,EAAUzJ,QAELyJ,EAAUiwK,iBACfjwK,EAAUiwK,oBAKnB,aApBmB,GCAvB,IAAIriI,GC+SAnC,GCgNA0I,GCjIAnB,GCnLA66E,GCuTAlvB,GC2FA3E,GCtfAqa,GCHAwnD,GCWAV,GC0BAE,GCzIJ,SAAS,GAAM58K,EAAK02C,EAAY,GACnC,OAAOyf,OAAOpU,UAAU/hD,GAAOA,GAAOA,EAAIm7G,QAAQzkE,GAE/C,SAAS,GAAOzB,EAAKjmB,GACxB,IAAIosF,EACAC,EASJ,GARW,MAAPrsF,GACAqsF,EAAc,MAAPpmE,EAAc,EAAIA,EACzBmmE,EAAO,IAGPC,EAAOrsF,EACPosF,EAAc,MAAPnmE,EAAc,EAAIA,GAEzBomE,EAAOD,EAAM,CACb,MAAMtpG,EAAOspG,EACbA,EAAOC,EACPA,EAAOvpG,EAEX,OAAO/P,KAAKq4C,MAAMr4C,KAAKC,UAAYq5G,EAAOD,EAAO,GAAKA,GAEnD,SAAS,GAAMjjH,EAAO88C,EAAKjmB,GAC9B,OAAImnC,OAAO/xB,MAAMjsC,GACNu2D,IAEPyH,OAAO/xB,MAAM6Q,IAAQkhB,OAAO/xB,MAAMpV,GAC3B,EAEJimB,EAAMjmB,EACP72B,EAAQ88C,EACJA,EACA98C,EAAQ62B,EACJA,EACA72B,EACRA,EAAQ62B,EACJA,EACA72B,EAAQ88C,EACJA,EACA98C,EAEX,SAAS23D,GAAW33D,EAAOmjH,GAC9B,OAAOA,EAAWv5G,KAAK8qB,MAAM10B,EAAQmjH,GAElC,SAAStsD,GAAclsB,EAAMstB,GAChC,OAAiB,MAATA,GACI,MAARttB,GACAstB,EAAM5jB,GAAK1J,EAAK0J,GAChB4jB,EAAM5jB,GAAK1J,EAAK0J,EAAI1J,EAAKxX,OACzB8kC,EAAM3jB,GAAK3J,EAAK2J,GAChB2jB,EAAM3jB,GAAK3J,EAAK2J,EAAI3J,EAAKpV,OAE1B,SAASonC,GAAcvG,EAAIC,GAC9B,MAAMlB,EAAKiB,EAAG/hB,EAAIgiB,EAAGhiB,EACf+gB,EAAKgB,EAAG9hB,EAAI+hB,EAAG/hB,EACrB,OAAO6gB,EAAKA,EAAKC,EAAKA,GXrD1B,SAAW4B,GAQPA,EAAMO,MAHN,SAAetB,GACX,OAAS,IAAMA,EAAOrsD,KAAK+vB,GAAM,KAQrCq9B,EAAMC,MAAQ,SAAUuB,EAAK8hE,GAAU,GAEnC,OADUA,EAAU9hE,EAAMA,EAAM,KACpB5uD,KAAK+vB,GAAM,KAQ3Bq9B,EAAM1D,UAHN,SAAmBkD,GACf,OAAQA,EAAQ,KAAQA,EAAQ,EAAI,IAAM,IAtBlD,CAyBGQ,KAAUA,GAAQ,KY1Bd,MAAMc,GACT,UACI,OAAOh2D,KAAK+rD,SAEhB,WACI,OAAOhpC,KAAKs3C,UAAUr6D,KAAK+rD,WXF5B,MAAM,WAAciK,GACvB,YAAYzjB,EAAGC,GACXmsC,QACA3+E,KAAKuyC,EAAS,MAALA,EAAY,EAAIA,EACzBvyC,KAAKwyC,EAAS,MAALA,EAAY,EAAIA,EAE7B10C,IAAKE,OAAOC,eACR,OAAO,GAAMA,YAKjB,MAAMw+C,EAAY,GAGd,OAFAz8C,KAAKuyC,EAAI,GAAWvyC,KAAKuyC,EAAGkK,GAC5Bz8C,KAAKwyC,EAAI,GAAWxyC,KAAKwyC,EAAGiK,GACrBz8C,KAEX,IAAIuyC,EAAGC,GACH,MAAMzzC,EAAI,GAAMR,OAAOg0C,EAAGC,GAG1B,OAFAxyC,KAAKuyC,GAAKxzC,EAAEwzC,EACZvyC,KAAKwyC,GAAKzzC,EAAEyzC,EACLxyC,KAEX,OAAOuyC,EAAGC,GACN,MAAMzzC,EAAI,GAAMR,OAAOg0C,EAAGC,GAG1B,OAFAxyC,KAAKuyC,EAAIxzC,EAAEwzC,EACXvyC,KAAKwyC,EAAIzzC,EAAEyzC,EACJxyC,KAEX,UAAUqzD,EAAIC,GACV,MAAMn1D,EAAI,GAAMI,OAAO80D,EAAIC,GAG3B,OAFAtzD,KAAKuyC,GAAKp0C,EAAEo0C,EACZvyC,KAAKwyC,GAAKr0C,EAAEq0C,EACLxyC,KAKX,OAAOwzD,EAAQC,GACX,MAAM10D,EAAI,GAAMw0D,OAAOvzD,KAAMwzD,EAAQC,GAGrC,OAFAzzD,KAAKuyC,EAAIxzC,EAAEwzC,EACXvyC,KAAKwyC,EAAIzzC,EAAEyzC,EACJxyC,KAMX,MAAM0zD,EAAIC,EAAIC,EAAS,IAAI,IACvB,MAAMC,EAAM,GAAMt1D,OAAOq1D,GAGzB,OAFA5zD,KAAKuyC,EAAIshB,EAAIthB,EAAImhB,GAAM1zD,KAAKuyC,EAAIshB,EAAIthB,GACpCvyC,KAAKwyC,EAAIqhB,EAAIrhB,EAAImhB,GAAM3zD,KAAKwyC,EAAIqhB,EAAIrhB,GAC7BxyC,KAMX,QAAQ8zD,GACJ,GAAsB,IAAlBA,EAAOnyD,OACP,OAAO,GAAMpD,OAAOu1D,EAAO,IAE/B,IAAI5tD,EAAM,KACN80C,EAAMuD,IAQV,OAPAuV,EAAO3oB,QAASpsC,IACZ,MAAMiyD,EAAOhxD,KAAK+zD,gBAAgBh1D,GAC9BiyD,EAAOhW,IACP90C,EAAMnH,EACNi8C,EAAMgW,KAGP9qD,EAAM,GAAM3H,OAAO2H,GAAO,KAKrC,SAASnH,GACL,OAAO+I,KAAK2rC,KAAKzzC,KAAK+zD,gBAAgBh1D,IAQ1C,gBAAgBA,GACZ,MAAM80D,EAAM,GAAMt1D,OAAOQ,GACnBs0D,EAAKrzD,KAAKuyC,EAAIshB,EAAIthB,EAClB+gB,EAAKtzD,KAAKwyC,EAAIqhB,EAAIrhB,EACxB,OAAO6gB,EAAKA,EAAKC,EAAKA,EAE1B,kBAAkBv0D,GACd,MAAM80D,EAAM,GAAMt1D,OAAOQ,GACzB,OAAO+I,KAAKinC,IAAI8kB,EAAIthB,EAAIvyC,KAAKuyC,GAAKzqC,KAAKinC,IAAI8kB,EAAIrhB,EAAIxyC,KAAKwyC,GAO5D,YACI,OAAO1qC,KAAK2rC,KAAKzzC,KAAKuyC,EAAIvyC,KAAKuyC,EAAIvyC,KAAKwyC,EAAIxyC,KAAKwyC,IAAM,IAM3D,MAAMzzC,EAAI,IAAI,IACV,MAAM80D,EAAM,GAAMt1D,OAAOQ,GACnByzC,IAAMqhB,EAAIrhB,EAAIxyC,KAAKwyC,GACnBD,EAAIshB,EAAIthB,EAAIvyC,KAAKuyC,EACvB,IAAI4hB,EAAMrsD,KAAKssD,MAAM5hB,EAAGD,GAKxB,OAHI4hB,EAAM,IACNA,EAAM,EAAIrsD,KAAK+vB,GAAKs8B,GAEhB,IAAMA,EAAOrsD,KAAK+vB,GAc9B,aAAay8B,EAAIC,GACb,GAAIv0D,KAAKw0D,OAAOF,IAAOt0D,KAAKw0D,OAAOD,GAC/B,OAAOE,IAEX,IAAIC,EAAQ10D,KAAKk0D,MAAMK,GAAMv0D,KAAKk0D,MAAMI,GAIxC,OAHII,EAAQ,IACRA,GAAS,KAENA,EAWX,YAAY31D,GAER,OADa,IAAI,GAAM,EAAG,GACds1D,aAAar0D,KAAMjB,GAKnC,QAAQ60D,GAEJ,OADA5zD,KAAKyrD,OAAO,GAAMmJ,QAAQ50D,KAAM4zD,IACzB5zD,KAmBX,cAAcqzD,EAAIC,EAAIO,EAAM,IAAI,IAE5B,OAAO7zD,KAAKyH,QAAQ2rD,WAAWC,GAAKC,GAAIY,MAAML,GAAO7zD,KAAKk0D,MAAML,GAMpE,aAAahrB,GAKT,OAJK,GAAmBA,EAAM7oC,QAC1BA,KAAKuyC,EAAIzqC,KAAKkzC,IAAIlzC,KAAKitB,IAAI/0B,KAAKuyC,EAAG1J,EAAK0J,GAAI1J,EAAK0J,EAAI1J,EAAKxX,OAC1DrxB,KAAKwyC,EAAI1qC,KAAKkzC,IAAIlzC,KAAKitB,IAAI/0B,KAAKwyC,EAAG3J,EAAK2J,GAAI3J,EAAK2J,EAAI3J,EAAKpV,SAEvDzzB,KAOX,QAAQjB,GACJ,MAAM80D,EAAM,GAAMt1D,OAAOQ,GACnBk2D,EAAOC,GAAMC,MAAMn1D,KAAKwyC,GACxB4iB,EAAOF,GAAMC,MAAMtB,EAAIrhB,GACvB6iB,EAAOr1D,KAAKuyC,EACZ+iB,EAAOzB,EAAIthB,EACXgjB,EAAOL,GAAMC,MAAMG,EAAOD,GAC1B7iB,EAAI1qC,KAAK0tD,IAAID,GAAQztD,KAAK8vB,IAAIw9B,GAC9B7iB,EAAIzqC,KAAK8vB,IAAIq9B,GAAQntD,KAAK0tD,IAAIJ,GAChCttD,KAAK0tD,IAAIP,GAAQntD,KAAK8vB,IAAIw9B,GAAQttD,KAAK8vB,IAAI29B,GAG/C,IAAI7zD,EAFSwzD,GAAMO,MAAM3tD,KAAKssD,MAAM5hB,EAAGD,IAEpB,KAKnB,OAJI7wC,EAAQ,IACRA,GAAS,KAEbA,EAAQgyB,SAAUhyB,EAAQ,GAAK,IALd,CAAC,KAAM,IAAK,KAAM,IAAK,KAAM,IAAK,KAAM,KAMzCA,GAQpB,MAAM4yD,EAAIC,GACN,GAAU,MAAND,GAAoB,MAANC,EAAY,CAC1B,MAAMvpD,EAAI,GAAMzM,OAAO+1D,GACjBrpD,EAAI,GAAM1M,OAAOg2D,GACvB,OAAQtpD,EAAEsnC,EAAIvyC,KAAKuyC,IAAMvnC,EAAEwnC,EAAIxyC,KAAKwyC,IAAMvnC,EAAEunC,EAAIxyC,KAAKwyC,IAAMxnC,EAAEunC,EAAIvyC,KAAKuyC,GAE1E,OAAOkiB,IAKX,IAAI11D,GACA,MAAM80D,EAAM,GAAMt1D,OAAOQ,GACzB,OAAOiB,KAAKuyC,EAAIshB,EAAIthB,EAAIvyC,KAAKwyC,EAAIqhB,EAAIrhB,EAEzC,KAAK6gB,EAAIC,GACL,GAAkB,iBAAPD,EACP,OAAO,IAAI,GAAMrzD,KAAKuyC,EAAI8gB,EAAIrzD,KAAKwyC,EAAI8gB,GAE3C,MAAMv0D,EAAI,GAAMR,OAAO80D,GACvB,OAAO,IAAI,GAAMrzD,KAAKuyC,EAAIxzC,EAAEwzC,EAAGvyC,KAAKwyC,EAAIzzC,EAAEyzC,GAM9C,KAAKzzC,EAAGZ,GACJ,MAAM01D,EAAM,GAAMt1D,OAAOQ,GACzB,OAAO,IAAI,IAAO,EAAIZ,GAAK6B,KAAKuyC,EAAIp0C,EAAI01D,EAAIthB,GAAI,EAAIp0C,GAAK6B,KAAKwyC,EAAIr0C,EAAI01D,EAAIrhB,GAQ9E,UAAU7wC,EAAS,GACf,MAAMkjB,EAAQljB,EAAS3B,KAAKi0D,YAC5B,OAAOj0D,KAAK6kB,MAAMA,EAAOA,GAM7B,KAAKgvC,EAAKhD,GACN,MAAM9xD,EAAI,GAAMR,OAAOs1D,GACjBM,EAAMe,GAAMC,MAAMp2D,EAAEm1D,MAAMl0D,OAChC,OAAOA,KAAKozD,UAAUtrD,KAAK8vB,IAAIu8B,GAAOtD,GAAW/oD,KAAK0tD,IAAIrB,GAAOtD,GAMrE,WAAWgD,GACP,OAAO,GAAMt1D,OAAOs1D,GAAK8B,KAAK31D,KAAMA,KAAK6wD,SAASgD,IAEtD,WAAWiC,EAAIC,GAGX,OAFA/1D,KAAKuyC,EAAI,GAAgBvyC,KAAKuyC,EAAGujB,GACjC91D,KAAKwyC,EAAI,GAAgBxyC,KAAKwyC,EAAS,MAANujB,EAAaD,EAAKC,GAC5C/1D,KAEX,OAAOjB,GACH,MAAM80D,EAAM,GAAMt1D,OAAOQ,GACzB,OAAc,MAAP80D,GAAeA,EAAIthB,IAAMvyC,KAAKuyC,GAAKshB,EAAIrhB,IAAMxyC,KAAKwyC,EAE7D,QACI,OAAO,GAAM/qC,MAAMzH,MAKvB,SACI,OAAO,GAAM+rD,OAAO/rD,MAExB,YACI,MAAO,GAAGA,KAAKuyC,KAAKvyC,KAAKwyC,MAGtBugB,GAoBR,KAAU,GAAQ,KAnBX90D,YAAc,eAAe80D,GAAMv1D,KAkBzCu1D,GAAMkD,QAjBN,SAAiBC,GACb,GAAgB,MAAZA,EACA,OAAO,EAEX,GAAIA,aAAoBnD,GACpB,OAAO,EAEX,MAAMnhD,EAAMskD,EAASl4D,OAAOC,aACtBk4D,EAAQD,EACd,OAAY,MAAPtkD,GAAeA,IAAQmhD,GAAM90D,cACX,iBAAZk4D,EAAM5jB,GACM,iBAAZ4jB,EAAM3jB,GACY,mBAAlB2jB,EAAMvB,SAOzB,SAAW7B,GAOPA,EAAMqD,YANN,SAAqBr3D,GACjB,OAAa,MAALA,GACS,iBAANA,GACQ,iBAARA,EAAEwzC,GACM,iBAARxzC,EAAEyzC,GAUjBugB,EAAMsD,YAPN,SAAqBt3D,GACjB,OAAa,MAALA,GACJmC,MAAMD,QAAQlC,IACD,IAAbA,EAAE4C,QACc,iBAAT5C,EAAE,IACO,iBAATA,EAAE,IAbrB,CAgBG,KAAU,GAAQ,KACrB,SAAWg0D,GAQP,SAAStrD,EAAM1I,GACX,OAAIg0D,EAAMkD,QAAQl3D,GACP,IAAIg0D,EAAMh0D,EAAEwzC,EAAGxzC,EAAEyzC,GAExBtxC,MAAMD,QAAQlC,GACP,IAAIg0D,EAAMh0D,EAAE,GAAIA,EAAE,IAEtB,IAAIg0D,EAAMh0D,EAAEwzC,EAAGxzC,EAAEyzC,GA+C5B,SAASgiB,EAAOF,EAAIC,GAChB,OAAID,IAAOC,GAGD,MAAND,GAAoB,MAANC,IACPD,EAAG/hB,IAAMgiB,EAAGhiB,GAAK+hB,EAAG9hB,IAAM+hB,EAAG/hB,GAoC5C,SAAS8jB,EAASH,EAAOv+B,EAAK49B,EAAK/B,EAAS,IAAIV,GAC5C,MAAMhvC,EAAStc,EAAM0uD,GACfvC,EAASnsD,EAAMgsD,GACfJ,EAAKtvC,EAAOwuB,EAAIqhB,EAAOrhB,EACvB+gB,EAAKvvC,EAAOyuB,EAAIohB,EAAOphB,EAEvB+jB,EAAKjD,EAAK17B,EAAMy7B,EAAKmC,EAC3B,OAAO,IAAIzC,EAFAM,EAAKz7B,EAAM07B,EAAKkC,EAEL5B,EAAOrhB,EAAGgkB,EAAK3C,EAAOphB,GAvGhDugB,EAAMx0D,OANN,SAAgBg0C,EAAGC,GACf,OAAS,MAALD,GAA0B,iBAANA,EACb,IAAIwgB,EAAMxgB,EAAGC,GAEjB/qC,EAAM8qC,IAYjBwgB,EAAMtrD,MAAQA,EAUdsrD,EAAMhH,OATN,SAAgBhtD,GACZ,OAAIg0D,EAAMkD,QAAQl3D,GACP,CAAEwzC,EAAGxzC,EAAEwzC,EAAGC,EAAGzzC,EAAEyzC,GAEtBtxC,MAAMD,QAAQlC,GACP,CAAEwzC,EAAGxzC,EAAE,GAAIyzC,EAAGzzC,EAAE,IAEpB,CAAEwzC,EAAGxzC,EAAEwzC,EAAGC,EAAGzzC,EAAEyzC,IAwB1BugB,EAAMyD,UAjBN,SAAmBz4D,EAAGo2D,EAAKP,EAAS,IAAIb,GACpC,IAAIxgB,EAAIzqC,KAAKinC,IAAIhxC,EAAI+J,KAAK8vB,IAAIu8B,IAC1B3hB,EAAI1qC,KAAKinC,IAAIhxC,EAAI+J,KAAK0tD,IAAIrB,IAC9B,MAAMsC,EAAMhvD,EAAMmsD,GACZ8C,EAAMxB,GAAM1D,UAAU0D,GAAMO,MAAMtB,IAWxC,OAVIuC,EAAM,GACNlkB,GAAKA,EAEAkkB,EAAM,KACXnkB,GAAKA,EACLC,GAAKA,GAEAkkB,EAAM,MACXnkB,GAAKA,GAEF,IAAIwgB,EAAM0D,EAAIlkB,EAAIA,EAAGkkB,EAAIjkB,EAAIA,IAcxCugB,EAAM6B,QARN,SAAiBuB,EAAOvC,EAAS,IAAIb,GACjC,MAAMh0D,EAAI0I,EAAM0uD,GACVz4D,EAAI+J,EAAMmsD,GACVP,EAAKt0D,EAAEwzC,EAAI70C,EAAE60C,EACb+gB,EAAKv0D,EAAEyzC,EAAI90C,EAAE80C,EACnB,OAAO,IAAIugB,EAAMjrD,KAAK2rC,KAAK4f,EAAKA,EAAKC,EAAKA,GAC1C4B,GAAMC,MAAMz3D,EAAEw2D,MAAMn1D,MAYxBg0D,EAAMyB,OAASA,EAgBfzB,EAAM4D,YAfN,SAAqBrC,EAAIC,GACrB,GAAW,MAAND,GAAoB,MAANC,GACR,MAAND,GAAoB,MAANC,GACR,MAAND,GAAoB,MAANC,GAAcD,EAAG3yD,SAAW4yD,EAAG5yD,OAC9C,OAAO,EAEX,GAAU,MAAN2yD,GAAoB,MAANC,EACd,IAAK,IAAIt3D,EAAI,EAAG25D,EAAKtC,EAAG3yD,OAAQ1E,EAAI25D,EAAI35D,GAAK,EACzC,IAAKu3D,EAAOF,EAAGr3D,GAAIs3D,EAAGt3D,IAClB,OAAO,EAInB,OAAO,GAUX81D,EAAMhrD,OAHN,SAAgB8uD,EAAIC,EAAIP,EAAIQ,GACxB,OAAO,IAAIhE,EAAM,GAAY8D,EAAIC,GAAK,GAAYP,EAAIQ,KAS1DhE,EAAMQ,OANN,SAAgB4C,EAAOzB,EAAOjB,GAC1B,MAAMU,EAAMe,GAAMC,MAAMD,GAAM1D,WAAWkD,IACnCc,EAAM1tD,KAAK0tD,IAAIrB,GAErB,OAAOmC,EAASH,EADJruD,KAAK8vB,IAAIu8B,GACOqB,EAAK/B,IAYrCV,EAAMuD,SAAWA,EAhHrB,CAiHG,KAAU,GAAQ,KCjcd,MAAM,WAAkBN,GAC3B,YAAYzjB,EAAGC,EAAGnhB,EAAOoC,GACrBkrD,QACA3+E,KAAKuyC,EAAS,MAALA,EAAY,EAAIA,EACzBvyC,KAAKwyC,EAAS,MAALA,EAAY,EAAIA,EACzBxyC,KAAKqxB,MAAiB,MAATA,EAAgB,EAAIA,EACjCrxB,KAAKyzB,OAAmB,MAAVA,EAAiB,EAAIA,EAEvC31B,IAAKE,OAAOC,eACR,OAAO,GAAUA,YAErB,WACI,OAAO+B,KAAKuyC,EAEhB,UACI,OAAOvyC,KAAKwyC,EAEhB,YACI,OAAOxyC,KAAKuyC,EAAIvyC,KAAKqxB,MAEzB,aACI,OAAOrxB,KAAKwyC,EAAIxyC,KAAKyzB,OAEzB,aACI,OAAO,IAAI,GAAMzzB,KAAKuyC,EAAGvyC,KAAKwyC,GAElC,cACI,OAAO,IAAI,GAAMxyC,KAAKuyC,EAAGvyC,KAAKwyC,GAElC,gBACI,OAAO,IAAI,GAAMxyC,KAAKuyC,EAAIvyC,KAAKqxB,MAAQ,EAAGrxB,KAAKwyC,GAEnD,eACI,OAAO,IAAI,GAAMxyC,KAAKuyC,EAAIvyC,KAAKqxB,MAAOrxB,KAAKwyC,GAE/C,aACI,OAAO,IAAI,GAAMxyC,KAAKuyC,EAAIvyC,KAAKqxB,MAAQ,EAAGrxB,KAAKwyC,EAAIxyC,KAAKyzB,OAAS,GAErE,iBACI,OAAO,IAAI,GAAMzzB,KAAKuyC,EAAGvyC,KAAKwyC,EAAIxyC,KAAKyzB,QAE3C,mBACI,OAAO,IAAI,GAAMzzB,KAAKuyC,EAAIvyC,KAAKqxB,MAAQ,EAAGrxB,KAAKwyC,EAAIxyC,KAAKyzB,QAE5D,kBACI,OAAO,IAAI,GAAMzzB,KAAKuyC,EAAIvyC,KAAKqxB,MAAOrxB,KAAKwyC,EAAIxyC,KAAKyzB,QAExD,aACI,OAAO,IAAI,GAAMzzB,KAAKuyC,EAAIvyC,KAAKqxB,MAAOrxB,KAAKwyC,EAAIxyC,KAAKyzB,QAExD,kBACI,OAAO,IAAI,GAAMzzB,KAAKuyC,EAAIvyC,KAAKqxB,MAAOrxB,KAAKwyC,EAAIxyC,KAAKyzB,OAAS,GAEjE,iBACI,OAAO,IAAI,GAAMzzB,KAAKuyC,EAAGvyC,KAAKwyC,EAAIxyC,KAAKyzB,OAAS,GAEpD,cACI,OAAO,IAAI,GAAKzzB,KAAKikG,QAASjkG,KAAKkkG,UAEvC,gBACI,OAAO,IAAI,GAAKlkG,KAAKkkG,SAAUlkG,KAAKmkG,aAExC,iBACI,OAAO,IAAI,GAAKnkG,KAAKokG,WAAYpkG,KAAKmkG,aAE1C,eACI,OAAO,IAAI,GAAKnkG,KAAKikG,QAASjkG,KAAKokG,YAEvC,YACI,OAAOpkG,KAAK4zD,OAEhB,aACI,OAAO5zD,KAAKikG,QAEhB,eACI,OAAOjkG,KAAKwkG,UAEhB,cACI,OAAOxkG,KAAKkkG,SAEhB,YACI,OAAOlkG,KAAKyzD,OAEhB,aACI,OAAOzzD,KAAKuyC,EAAIvyC,KAAKqxB,MAAQ,EAEjC,aACI,OAAOrxB,KAAKwyC,EAAIxyC,KAAKyzB,OAAS,EAElC,gBACI,OAAOzzB,KAAKokG,WAEhB,kBACI,OAAOpkG,KAAK8kG,aAEhB,iBACI,OAAO9kG,KAAKmkG,YAEhB,YACI,OAAOnkG,KAAKilG,OAEhB,iBACI,OAAOjlG,KAAKmlG,YAEhB,gBACI,OAAOnlG,KAAKqlG,WAEhB,aACI,OAAOrlG,KAAKulG,QAEhB,eACI,OAAOvlG,KAAKylG,UAEhB,gBACI,OAAOzlG,KAAK2lG,WAEhB,cACI,OAAO3lG,KAAK6lG,SAQhB,KAAKnxC,GACD,IAAKA,EACD,OAAO10D,KAAKyH,QAEhB,MAAM0sD,EAAMe,GAAMC,MAAMT,GAClB8kC,EAAK1xF,KAAKinC,IAAIjnC,KAAK0tD,IAAIrB,IACvBxvB,EAAK78B,KAAKinC,IAAIjnC,KAAK8vB,IAAIu8B,IACvBpxD,EAAI/C,KAAKqxB,MAAQsT,EAAK3kC,KAAKyzB,OAAS+lE,EACpC34F,EAAIb,KAAKqxB,MAAQmoE,EAAKx5F,KAAKyzB,OAASkR,EAC1C,OAAO,IAAI,GAAU3kC,KAAKuyC,GAAKvyC,KAAKqxB,MAAQtuB,GAAK,EAAG/C,KAAKwyC,GAAKxyC,KAAKyzB,OAAS5yB,GAAK,EAAGkC,EAAGlC,GAE3F,MAAM47C,EAAY,GAKd,OAJAz8C,KAAKuyC,EAAI,GAAWvyC,KAAKuyC,EAAGkK,GAC5Bz8C,KAAKwyC,EAAI,GAAWxyC,KAAKwyC,EAAGiK,GAC5Bz8C,KAAKqxB,MAAQ,GAAWrxB,KAAKqxB,MAAOorB,GACpCz8C,KAAKyzB,OAAS,GAAWzzB,KAAKyzB,OAAQgpB,GAC/Bz8C,KAEX,IAAIuyC,EAAGC,EAAGnhB,EAAOoC,GACb,MAAMoV,EAAO,GAAUtqC,OAAOg0C,EAAGC,EAAGnhB,EAAOoC,GACrCqyE,EAAOh+F,KAAKkzC,IAAIh7C,KAAKuyC,EAAG1J,EAAK0J,GAC7BwzD,EAAOj+F,KAAKkzC,IAAIh7C,KAAKwyC,EAAG3J,EAAK2J,GAC7BilB,EAAO3vD,KAAKitB,IAAI/0B,KAAKuyC,EAAIvyC,KAAKqxB,MAAOwX,EAAK0J,EAAI1J,EAAKxX,OACnDqmC,EAAO5vD,KAAKitB,IAAI/0B,KAAKwyC,EAAIxyC,KAAKyzB,OAAQoV,EAAK2J,EAAI3J,EAAKpV,QAK1D,OAJAzzB,KAAKuyC,EAAIuzD,EACT9lG,KAAKwyC,EAAIuzD,EACT/lG,KAAKqxB,MAAQomC,EAAOquC,EACpB9lG,KAAKyzB,OAASikC,EAAOquC,EACd/lG,KAEX,OAAOuyC,EAAGC,EAAGnhB,EAAOoC,GAChB,MAAMoV,EAAO,GAAUtqC,OAAOg0C,EAAGC,EAAGnhB,EAAOoC,GAK3C,OAJAzzB,KAAKuyC,EAAI1J,EAAK0J,EACdvyC,KAAKwyC,EAAI3J,EAAK2J,EACdxyC,KAAKqxB,MAAQwX,EAAKxX,MAClBrxB,KAAKyzB,OAASoV,EAAKpV,OACZzzB,KAEX,QAAQqzD,EAAIC,GACR,MAAMvwD,EAAIswD,EACJxyD,EAAU,MAANyyD,EAAaA,EAAKD,EAK5B,OAJArzD,KAAKuyC,GAAKxvC,EACV/C,KAAKwyC,GAAK3xC,EACVb,KAAKqxB,OAAS,EAAItuB,EAClB/C,KAAKyzB,QAAU,EAAI5yB,EACZb,KAEX,WAAW81D,EAAIC,GACX,MAAMnC,EAAS5zD,KAAK4zD,OAAOiC,WAAWC,EAAIC,GACpCkvC,EAASjlG,KAAKilG,OAAOpvC,WAAWC,EAAIC,GAK1C,OAJA/1D,KAAKuyC,EAAIqhB,EAAOrhB,EAChBvyC,KAAKwyC,EAAIohB,EAAOphB,EAChBxyC,KAAKqxB,MAAQ4zE,EAAO1yD,EAAIqhB,EAAOrhB,EAC/BvyC,KAAKyzB,OAASwxE,EAAOzyD,EAAIohB,EAAOphB,EACzBxyC,KAEX,UAAU26D,EAAIC,GACV,MAAM77D,EAAI,GAAMR,OAAOo8D,EAAIC,GAG3B,OAFA56D,KAAKuyC,GAAKxzC,EAAEwzC,EACZvyC,KAAKwyC,GAAKzzC,EAAEyzC,EACLxyC,KAEX,MAAM0zD,EAAIC,EAAIC,EAAS,IAAI,IACvB,MAAMv8B,EAAMr3B,KAAK4zD,OAAO/uC,MAAM6uC,EAAIC,EAAIC,GAKtC,OAJA5zD,KAAKuyC,EAAIlb,EAAIkb,EACbvyC,KAAKwyC,EAAInb,EAAImb,EACbxyC,KAAKqxB,OAASqiC,EACd1zD,KAAKyzB,QAAUkgC,EACR3zD,KAEX,OAAOwzD,EAAQC,EAASzzD,KAAK06D,aACzB,GAAe,IAAXlH,EAAc,CACd,MAAMW,EAAMe,GAAMC,MAAM3B,GAClB57B,EAAM9vB,KAAK8vB,IAAIu8B,GACfqB,EAAM1tD,KAAK0tD,IAAIrB,GACrB,IAAIG,EAAKt0D,KAAKqkG,YACV9vC,EAAKv0D,KAAKykG,cACVpE,EAAKrgG,KAAK+kG,iBACVkB,EAAKjmG,KAAK4kG,gBACdtwC,EAAK,GAAMgC,SAAShC,EAAI18B,EAAK49B,EAAK/B,GAClCc,EAAK,GAAM+B,SAAS/B,EAAI38B,EAAK49B,EAAK/B,GAClC4sC,EAAK,GAAM/pC,SAAS+pC,EAAIzoE,EAAK49B,EAAK/B,GAClCwyC,EAAK,GAAM3vC,SAAS2vC,EAAIruE,EAAK49B,EAAK/B,GAClC,MAAM5qB,EAAO,IAAI,GAAUyrB,EAAG/hB,EAAG+hB,EAAG9hB,EAAG,EAAG,GAC1C3J,EAAKvoC,IAAIi0D,EAAGhiB,EAAGgiB,EAAG/hB,EAAG,EAAG,GACxB3J,EAAKvoC,IAAI+/F,EAAG9tD,EAAG8tD,EAAG7tD,EAAG,EAAG,GACxB3J,EAAKvoC,IAAI2lG,EAAG1zD,EAAG0zD,EAAGzzD,EAAG,EAAG,GACxBxyC,KAAKyrD,OAAO5iB,GAEhB,OAAO7oC,KAEX,WACI,MAAM7B,GAAK6B,KAAKqxB,MAAQrxB,KAAKyzB,QAAU,EACvCzzB,KAAKuyC,GAAKp0C,EACV6B,KAAKwyC,GAAKr0C,EACV,MAAM0T,EAAM7R,KAAKqxB,MAGjB,OAFArxB,KAAKqxB,MAAQrxB,KAAKyzB,OAClBzzB,KAAKyzB,OAAS5hB,EACP7R,KAMX,cAAc6oC,GACV,MAAMgrB,EAAM,GAAUpsD,MAAMohC,GAK5B,OAJA7oC,KAAKuyC,GAAKshB,EAAIthB,GAAK,EACnBvyC,KAAKwyC,GAAKqhB,EAAIrhB,GAAK,EACnBxyC,KAAKqxB,OAASwiC,EAAIxiC,OAAS,EAC3BrxB,KAAKyzB,QAAUogC,EAAIpgC,QAAU,EACtBzzB,KAQX,iBAAiBqmG,EAAOzyC,EAAS5zD,KAAKyzD,QAClC,MAAM5qB,EAAO,GAAUphC,MAAM4+F,GACvBC,EAAK1yC,EAAOrhB,EACZg0D,EAAK3yC,EAAOphB,EAGlB,IAAIg0D,EAAMjoD,IACNkoD,EAAMloD,IACNmoD,EAAMnoD,IACNooD,EAAMpoD,IACNqoD,EAAMroD,IACNsoD,EAAMtoD,IACNuoD,EAAMvoD,IACNwoD,EAAMxoD,IAEV,MAAM+V,EAAKzrB,EAAKo7D,QACZ3vC,EAAG/hB,EAAI+zD,IACPE,GAAOxmG,KAAKuyC,EAAI+zD,IAAOhyC,EAAG/hB,EAAI+zD,IAE9BhyC,EAAG9hB,EAAI+zD,IACPK,GAAO5mG,KAAKwyC,EAAI+zD,IAAOjyC,EAAG9hB,EAAI+zD,IAGlC,MAAMhyC,EAAK1rB,EAAKs7D,YACZ5vC,EAAGhiB,EAAI+zD,IACPG,GAAOzmG,KAAKuyC,EAAIvyC,KAAKqxB,MAAQi1E,IAAO/xC,EAAGhiB,EAAI+zD,IAE3C/xC,EAAG/hB,EAAI+zD,IACPM,GAAO7mG,KAAKwyC,EAAIxyC,KAAKyzB,OAAS8yE,IAAOhyC,EAAG/hB,EAAI+zD,IAGhD,MAAMlG,EAAKx3D,EAAKq7D,SACZ7D,EAAG9tD,EAAI+zD,IACPI,GAAO1mG,KAAKuyC,EAAIvyC,KAAKqxB,MAAQi1E,IAAOjG,EAAG9tD,EAAI+zD,IAE3CjG,EAAG7tD,EAAI+zD,IACPO,GAAO9mG,KAAKwyC,EAAI+zD,IAAOlG,EAAG7tD,EAAI+zD,IAGlC,MAAMN,EAAKp9D,EAAKu7D,WAOhB,OANI6B,EAAG1zD,EAAI+zD,IACPK,GAAO3mG,KAAKuyC,EAAI+zD,IAAOL,EAAG1zD,EAAI+zD,IAE9BL,EAAGzzD,EAAI+zD,IACPQ,GAAO/mG,KAAKwyC,EAAIxyC,KAAKyzB,OAAS8yE,IAAON,EAAGzzD,EAAI+zD,IAEzC,CACH7yC,GAAI5rD,KAAKkzC,IAAIwrD,EAAKC,EAAKC,EAAKC,GAC5BhzC,GAAI7rD,KAAKkzC,IAAI4rD,EAAKC,EAAKC,EAAKC,IASpC,wBAAwBV,EAAOzyC,EAAS5zD,KAAKyzD,QACzC,MAAM5uC,EAAQ7kB,KAAKomG,iBAAiBC,EAAOzyC,GAC3C,OAAO9rD,KAAKkzC,IAAIn2B,EAAM6uC,GAAI7uC,EAAM8uC,IAEpC,cAAcphB,EAAGC,GACb,OAAO,GAAmBxyC,KAAM,GAAMzB,OAAOg0C,EAAGC,IAEpD,aAAaD,EAAGC,EAAGnhB,EAAOoC,GACtB,MAAMxoB,EAAI,GAAU1M,OAAOg0C,EAAGC,EAAGnhB,EAAOoC,GAClCojC,EAAK72D,KAAKuyC,EACVgkB,EAAKv2D,KAAKwyC,EACV00D,EAAKlnG,KAAKqxB,MACV81E,EAAKnnG,KAAKyzB,OACVqjC,EAAK7rD,EAAEsnC,EACPwkB,EAAK9rD,EAAEunC,EACP40D,EAAKn8F,EAAEomB,MACPg2E,EAAKp8F,EAAEwoB,OAEb,OAAW,IAAPyzE,GAAmB,IAAPC,GAAmB,IAAPC,GAAmB,IAAPC,IAGjCvwC,GAAMD,GAAME,GAAMR,GAAMO,EAAKswC,GAAMvwC,EAAKqwC,GAAMnwC,EAAKswC,GAAM9wC,EAAK4wC,GAMzE,mBAAmBlsC,GACf,MAAMqsC,EAAY,CACdtnG,KAAKulG,QACLvlG,KAAKylG,UACLzlG,KAAK2lG,WACL3lG,KAAK6lG,UAEH/xC,EAAS,GACTyzC,EAAY,GAQlB,OAPAD,EAAUn8D,QAASjuC,IACf,MAAM6B,EAAIk8D,EAAKyB,mBAAmBx/D,GACxB,OAAN6B,GAAcwoG,EAAU9jG,QAAQ1E,EAAE4E,YAAc,IAChDmwD,EAAOtxD,KAAKzD,GACZwoG,EAAU/kG,KAAKzD,EAAE4E,eAGlBmwD,EAAOnyD,OAAS,EAAImyD,EAAS,KAUxC,oCAAoC/0D,EAAG21D,GACnC,MAAMb,EAAM,GAAMpsD,MAAM1I,GAClB00D,EAASzzD,KAAKyzD,OACpB,IAAItyD,EAAS,KACA,MAATuzD,GAA2B,IAAVA,GACjBb,EAAIN,OAAOmB,EAAOjB,GAEtB,MAAMg0C,EAAQ,CAACznG,KAAKulG,QAASvlG,KAAKylG,UAAWzlG,KAAK2lG,WAAY3lG,KAAK6lG,UAC7D6B,EAAY,IAAI,GAAKj0C,EAAQI,GACnC,IAAK,IAAI52D,EAAIwqG,EAAM9lG,OAAS,EAAG1E,GAAK,EAAGA,GAAK,EAAG,CAC3C,MAAM6lD,EAAe2kD,EAAMxqG,GAAGy/D,mBAAmBgrC,GACjD,GAAqB,OAAjB5kD,EAAuB,CACvB3hD,EAAS2hD,EACT,OAMR,OAHI3hD,GAAmB,MAATuzD,GAA2B,IAAVA,GAC3BvzD,EAAOoyD,QAAQmB,EAAOjB,GAEnBtyD,EAEX,mBAAmBoxC,EAAGC,EAAGnhB,EAAOoC,GAC5B,MAAMogC,EAAM,GAAUt1D,OAAOg0C,EAAGC,EAAGnhB,EAAOoC,GAE1C,IAAKzzB,KAAK4nG,oBAAoB/zC,GAC1B,OAAO,KAEX,MAAMg0C,EAAW7nG,KAAK4zD,OAChBk0C,EAAW9nG,KAAKilG,OAChB8C,EAAUl0C,EAAID,OACdo0C,EAAUn0C,EAAIoxC,OACdgD,EAAKngG,KAAKitB,IAAI8yE,EAASt1D,EAAGw1D,EAAQx1D,GAClC21D,EAAKpgG,KAAKitB,IAAI8yE,EAASr1D,EAAGu1D,EAAQv1D,GACxC,OAAO,IAAI,GAAUy1D,EAAIC,EAAIpgG,KAAKkzC,IAAI8sD,EAASv1D,EAAGy1D,EAAQz1D,GAAK01D,EAAIngG,KAAKkzC,IAAI8sD,EAASt1D,EAAGw1D,EAAQx1D,GAAK01D,GAEzG,oBAAoB31D,EAAGC,EAAGnhB,EAAOoC,GAC7B,MAAMogC,EAAM,GAAUt1D,OAAOg0C,EAAGC,EAAGnhB,EAAOoC,GACpCo0E,EAAW7nG,KAAK4zD,OAChBk0C,EAAW9nG,KAAKilG,OAChB8C,EAAUl0C,EAAID,OACdo0C,EAAUn0C,EAAIoxC,OACpB,QAAI+C,EAAQz1D,GAAKs1D,EAASt1D,GACtBy1D,EAAQx1D,GAAKq1D,EAASr1D,GACtBu1D,EAAQx1D,GAAKu1D,EAASv1D,GACtBw1D,EAAQv1D,GAAKs1D,EAASt1D,GAW9B,YACI,IAAI21D,EAAOnoG,KAAKuyC,EACZ61D,EAAOpoG,KAAKwyC,EACZ61D,EAAWroG,KAAKqxB,MAChBi3E,EAAYtoG,KAAKyzB,OAarB,OAZIzzB,KAAKqxB,MAAQ,IACb82E,EAAOnoG,KAAKuyC,EAAIvyC,KAAKqxB,MACrBg3E,GAAYroG,KAAKqxB,OAEjBrxB,KAAKyzB,OAAS,IACd20E,EAAOpoG,KAAKwyC,EAAIxyC,KAAKyzB,OACrB60E,GAAatoG,KAAKyzB,QAEtBzzB,KAAKuyC,EAAI41D,EACTnoG,KAAKwyC,EAAI41D,EACTpoG,KAAKqxB,MAAQg3E,EACbroG,KAAKyzB,OAAS60E,EACPtoG,KAKX,MAAM6oC,GACF,MAAMgrB,EAAM,GAAUpsD,MAAMohC,GACtBg/D,EAAW7nG,KAAK4zD,OAChBk0C,EAAW9nG,KAAKilG,OAChB8C,EAAUl0C,EAAID,OACdo0C,EAAUn0C,EAAIoxC,OACdsD,EAAUzgG,KAAKkzC,IAAI6sD,EAASt1D,EAAGw1D,EAAQx1D,GACvCi2D,EAAU1gG,KAAKkzC,IAAI6sD,EAASr1D,EAAGu1D,EAAQv1D,GACvC66L,EAAUvlO,KAAKitB,IAAI+yE,EAASv1D,EAAGy1D,EAAQz1D,GACvC+6L,EAAUxlO,KAAKitB,IAAI+yE,EAASt1D,EAAGw1D,EAAQx1D,GAC7C,OAAO,IAAI,GAAU+1D,EAASC,EAAS6kI,EAAU9kI,EAAS+kI,EAAU9kI,GAMxE,sBAAsBzpG,GAClB,MAAM80D,EAAM,GAAMpsD,MAAM1I,GAClB2pG,EAAW70C,EAAIthB,EAAIvyC,KAAKuyC,EACxBo2D,EAAY3oG,KAAKuyC,EAAIvyC,KAAKqxB,MAAQwiC,EAAIthB,EACtCq2D,EAAU/0C,EAAIrhB,EAAIxyC,KAAKwyC,EAE7B,IAAIj3B,EAAUmtF,EACVG,EAAO,OAYX,OAXIF,EAAYptF,IACZA,EAAUotF,EACVE,EAAO,SAEPD,EAAUrtF,IACVA,EAAUqtF,EACVC,EAAO,OATQ7oG,KAAKwyC,EAAIxyC,KAAKyzB,OAASogC,EAAIrhB,EAW7Bj3B,IACbstF,EAAO,UAEJA,EAKX,uBAAuB9pG,GACnB,MAAM80D,EAAM,GAAMpsD,MAAM1I,GACxB,GAAIiB,KAAK+0D,cAAclB,GAAM,CAEzB,OADa7zD,KAAKyoG,sBAAsB50C,IAEpC,IAAK,QACD,OAAO,IAAI,GAAM7zD,KAAKuyC,EAAIvyC,KAAKqxB,MAAOwiC,EAAIrhB,GAC9C,IAAK,OACD,OAAO,IAAI,GAAMxyC,KAAKuyC,EAAGshB,EAAIrhB,GACjC,IAAK,SACD,OAAO,IAAI,GAAMqhB,EAAIthB,EAAGvyC,KAAKwyC,EAAIxyC,KAAKyzB,QAC1C,IAAK,MACD,OAAO,IAAI,GAAMogC,EAAIthB,EAAGvyC,KAAKwyC,IAKzC,OAAOqhB,EAAIiB,aAAa90D,MAE5B,OAAO6oC,GACH,OAAgB,MAARA,GACJA,EAAK0J,IAAMvyC,KAAKuyC,GAChB1J,EAAK2J,IAAMxyC,KAAKwyC,GAChB3J,EAAKxX,QAAUrxB,KAAKqxB,OACpBwX,EAAKpV,SAAWzzB,KAAKyzB,OAE7B,QACI,OAAO,IAAI,GAAUzzB,KAAKuyC,EAAGvyC,KAAKwyC,EAAGxyC,KAAKqxB,MAAOrxB,KAAKyzB,QAE1D,SACI,MAAO,CAAE8e,EAAGvyC,KAAKuyC,EAAGC,EAAGxyC,KAAKwyC,EAAGnhB,MAAOrxB,KAAKqxB,MAAOoC,OAAQzzB,KAAKyzB,QAEnE,YACI,MAAO,GAAGzzB,KAAKuyC,KAAKvyC,KAAKwyC,KAAKxyC,KAAKqxB,SAASrxB,KAAKyzB,WAG9CgoC,GAuBR,KAAc,GAAY,KAtBfx9D,YAAc,eAAew9D,GAAUj+D,KAqBjDi+D,GAAUstC,YApBV,SAAqB7yC,GACjB,GAAgB,MAAZA,EACA,OAAO,EAEX,GAAIA,aAAoBuF,GACpB,OAAO,EAEX,MAAM7pD,EAAMskD,EAASl4D,OAAOC,aACtB4qC,EAAOqtB,EACb,OAAY,MAAPtkD,GAAeA,IAAQ6pD,GAAUx9D,cAChB,iBAAX4qC,EAAK0J,GACM,iBAAX1J,EAAK2J,GACU,iBAAf3J,EAAKxX,OACW,iBAAhBwX,EAAKpV,QACY,mBAAjBoV,EAAKm9D,SACkB,mBAAvBn9D,EAAKs9D,eAOxB,SAAW1qC,GASPA,EAAUutC,gBARV,SAAyBtrG,GACrB,OAAa,MAALA,GACS,iBAANA,GACQ,iBAARA,EAAE60C,GACM,iBAAR70C,EAAE80C,GACU,iBAAZ90C,EAAE2zB,OACW,iBAAb3zB,EAAE+1B,QAPrB,CAUG,KAAc,GAAY,KAC7B,SAAWgoC,GAQP,SAASh0D,EAAMohC,GACX,OAAI4yB,EAAUstC,YAAYlgE,GACfA,EAAKphC,QAEZvG,MAAMD,QAAQ4nC,GACP,IAAI4yB,EAAU5yB,EAAK,GAAIA,EAAK,GAAIA,EAAK,GAAIA,EAAK,IAElD,IAAI4yB,EAAU5yB,EAAK0J,EAAG1J,EAAK2J,EAAG3J,EAAKxX,MAAOwX,EAAKpV,QAR1DgoC,EAAUl9D,OANV,SAAgBg0C,EAAGC,EAAGnhB,EAAOoC,GACzB,OAAS,MAAL8e,GAA0B,iBAANA,EACb,IAAIkpB,EAAUlpB,EAAGC,EAAGnhB,EAAOoC,GAE/BhsB,EAAM8qC,IAYjBkpB,EAAUh0D,MAAQA,EAIlBg0D,EAAUwtC,SAHV,SAAkBrsD,GACd,OAAO,IAAI6e,EAAU,EAAG,EAAG7e,EAAKvrB,MAAOurB,EAAKnpB,SAMhDgoC,EAAUytC,oBAHV,SAA6B7xE,EAAKulB,GAC9B,OAAO,IAAI6e,EAAUpkC,EAAIkb,EAAGlb,EAAImb,EAAGoK,EAAKvrB,MAAOurB,EAAKnpB,SASxDgoC,EAAU0tC,YAHV,SAAqBC,GACjB,OAAO,IAAI3tC,EAAU2tC,EAAQ72D,EAAI62D,EAAQp+F,EAAGo+F,EAAQ52D,EAAI42D,EAAQn+F,EAAG,EAAIm+F,EAAQp+F,EAAG,EAAIo+F,EAAQn+F,IA9BtG,CAiCG,KAAc,GAAY,KChkBtB,MAAM,WAAa+qD,GACtB,YAAYa,EAAIN,EAAIO,EAAIC,GACpB4nB,QACkB,iBAAP9nB,GAAiC,iBAAPN,GACjCv2D,KAAKsB,MAAQ,IAAI,GAAMu1D,EAAIN,GAC3Bv2D,KAAKmH,IAAM,IAAI,GAAM2vD,EAAIC,KAGzB/2D,KAAKsB,MAAQ,GAAM/C,OAAOs4D,GAC1B72D,KAAKmH,IAAM,GAAM5I,OAAOg4D,IAGhCz4D,IAAKE,OAAOC,eACR,OAAO,GAAKA,YAEhB,aACI,OAAO,IAAI,IAAO+B,KAAKsB,MAAMixC,EAAIvyC,KAAKmH,IAAIorC,GAAK,GAAIvyC,KAAKsB,MAAMkxC,EAAIxyC,KAAKmH,IAAIqrC,GAAK,GAEpF,YACI,OAAOxyC,KAAKyzD,OAKhB,MAAMhX,EAAY,GAGd,OAFAz8C,KAAKsB,MAAMsxB,MAAM6pB,GACjBz8C,KAAKmH,IAAIyrB,MAAM6pB,GACRz8C,KAEX,UAAU26D,EAAIC,GASV,MARkB,iBAAPD,GACP36D,KAAKsB,MAAM8xD,UAAUuH,EAAIC,GACzB56D,KAAKmH,IAAIisD,UAAUuH,EAAIC,KAGvB56D,KAAKsB,MAAM8xD,UAAUuH,GACrB36D,KAAKmH,IAAIisD,UAAUuH,IAEhB36D,KAKX,OAAO00D,EAAOd,GAGV,OAFA5zD,KAAKsB,MAAMiyD,OAAOmB,EAAOd,GACzB5zD,KAAKmH,IAAIosD,OAAOmB,EAAOd,GAChB5zD,KAMX,MAAM0zD,EAAIC,EAAIC,GAGV,OAFA5zD,KAAKsB,MAAMujB,MAAM6uC,EAAIC,EAAIC,GACzB5zD,KAAKmH,IAAI0d,MAAM6uC,EAAIC,EAAIC,GAChB5zD,KAKX,SACI,OAAO8H,KAAK2rC,KAAKzzC,KAAK66D,iBAM1B,gBACI,MAAMxH,EAAKrzD,KAAKsB,MAAMixC,EAAIvyC,KAAKmH,IAAIorC,EAC7B+gB,EAAKtzD,KAAKsB,MAAMkxC,EAAIxyC,KAAKmH,IAAIqrC,EACnC,OAAO6gB,EAAKA,EAAKC,EAAKA,EAM1B,UAAU3xD,GACN,MAAMo5D,EAAQ/6D,KAAK2B,SACnB,IAAKo5D,EACD,OAAO/6D,KAEX,MAAM6kB,EAAQljB,EAASo5D,EACvB,OAAO/6D,KAAK6kB,MAAMA,EAAOA,EAAO7kB,KAAKsB,OAEzC,SAASuvD,GACL,MAAMoK,EAAOj7D,KAAKyH,QAClB,IAAKwzD,EAAKC,mBACN,OAAOD,EAEX,MAAM,MAAE35D,EAAK,IAAE6F,GAAQ8zD,EACjBE,EAAO75D,EAAMmG,QAAQ8rD,OAAO,IAAKpsD,GACjCi0D,EAAOj0D,EAAIM,QAAQ8rD,OAAO,GAAIjyD,GAGpC,OAFAA,EAAMq0D,KAAKyF,EAAMvK,GACjB1pD,EAAIwuD,KAAKwF,EAAMtK,GACRoK,EAKX,SACI,OAAO,IAAI,GAAMj7D,KAAKmH,IAAIorC,EAAIvyC,KAAKsB,MAAMixC,EAAGvyC,KAAKmH,IAAIqrC,EAAIxyC,KAAKsB,MAAMkxC,GAWxE,QACI,MAAM8oB,EAAa,IAAI,GAAMt7D,KAAKsB,MAAMixC,EAAI,EAAGvyC,KAAKsB,MAAMkxC,GAC1D,OAAOxyC,KAAKsB,MAAM+yD,aAAar0D,KAAKmH,IAAKm0D,GAK7C,OACI,MAAM/kC,EAAOzuB,KAAKkzC,IAAIh7C,KAAKsB,MAAMixC,EAAGvyC,KAAKmH,IAAIorC,GACvCthC,EAAMnJ,KAAKkzC,IAAIh7C,KAAKsB,MAAMkxC,EAAGxyC,KAAKmH,IAAIqrC,GACtCngB,EAAQvqB,KAAKitB,IAAI/0B,KAAKsB,MAAMixC,EAAGvyC,KAAKmH,IAAIorC,GACxCipB,EAAS1zD,KAAKitB,IAAI/0B,KAAKsB,MAAMkxC,EAAGxyC,KAAKmH,IAAIqrC,GAC/C,OAAO,IAAI,GAAUjc,EAAMtlB,EAAKohB,EAAQkE,EAAMilC,EAASvqD,GAU3D,UACI,OAAOjR,KAAKsB,MAAM0zD,QAAQh1D,KAAKmH,KAKnC,aAAapI,GACT,OAAOiB,KAAK27D,QAAQ37D,KAAK47D,6BAA6B78D,IAK1D,mBAAmBA,GACf,OAAOiB,KAAK47D,6BAA6B78D,GAAKiB,KAAK2B,SAMvD,oBAAoB5C,GAChB,OAAOiB,KAAK+7D,UAAU/7D,KAAK47D,6BAA6B78D,IAM5D,6BAA6BA,GACzB,MAAMi9D,EAAUh8D,KAAKq7D,SAAS9J,IAAI,IAAI,GAAKvxD,KAAKsB,MAAOvC,GAAGs8D,UACpDY,EAAan0D,KAAKkzC,IAAI,EAAGlzC,KAAKitB,IAAI,EAAGinC,EAAUh8D,KAAK66D,kBAE1D,OAAIqB,OAAO/xB,MAAM8xB,GACN,EAEJA,EAMX,QAAQE,GACJ,MAAM76D,EAAQtB,KAAKsB,MACb6F,EAAMnH,KAAKmH,IACjB,OAAIg1D,GAAS,EACF76D,EAAMmG,QAEb00D,GAAS,EACFh1D,EAAIM,QAERnG,EAAMmwD,KAAKtqD,EAAKg1D,GAM3B,cAAcx6D,GACV,MAAML,EAAQtB,KAAKsB,MACb6F,EAAMnH,KAAKmH,IACjB,IAAIk1D,GAAY,EACZ16D,EAAS,IACT06D,GAAY,EACZ16D,GAAUA,GAEd,MAAMo5D,EAAQ/6D,KAAK2B,SACnB,GAAIA,GAAUo5D,EACV,OAAOsB,EAAYl1D,EAAIM,QAAUnG,EAAMmG,QAE3C,MAAM60D,GAAQD,EAAY16D,EAASo5D,EAAQp5D,GAAUo5D,EACrD,OAAO/6D,KAAK27D,QAAQW,GAMxB,SAASH,GACL,MAAMK,EAAex8D,KAAK27D,QAAQQ,GAClC,MAAO,CACH,IAAI,GAAKn8D,KAAKsB,MAAOk7D,GACrB,IAAI,GAAKA,EAAcx8D,KAAKmH,MAOpC,eAAexF,GACX,MAAM66D,EAAex8D,KAAKo8D,cAAcz6D,GACxC,MAAO,CACH,IAAI,GAAK3B,KAAKsB,MAAOk7D,GACrB,IAAI,GAAKA,EAAcx8D,KAAKmH,MAMpC,cAAcpI,GACV,MAAMuC,EAAQtB,KAAKsB,MACb6F,EAAMnH,KAAKmH,IAGjB,GAA4B,IAAxB7F,EAAMo0D,MAAM32D,EAAGoI,GACf,OAAO,EAEX,MAAMxF,EAAS3B,KAAK2B,SACpB,QAAI,IAAI,GAAKL,EAAOvC,GAAG4C,SAAWA,MAG9B,IAAI,GAAK5C,EAAGoI,GAAKxF,SAAWA,GAKpC,UAAUyvC,EAAOzxC,GACb,MAAMuG,EAAMkrC,EAAMsrB,mBAAmB18D,KAAML,GAC3C,OAAIuG,EACOhF,MAAMD,QAAQiF,GAAOA,EAAM,CAACA,GAEhC,KAMX,mBAAmB+0D,GACf,MAAM0B,EAAS,IAAI,GAAM38D,KAAKmH,IAAIorC,EAAIvyC,KAAKsB,MAAMixC,EAAGvyC,KAAKmH,IAAIqrC,EAAIxyC,KAAKsB,MAAMkxC,GACtEoqB,EAAS,IAAI,GAAM3B,EAAK9zD,IAAIorC,EAAI0oB,EAAK35D,MAAMixC,EAAG0oB,EAAK9zD,IAAIqrC,EAAIyoB,EAAK35D,MAAMkxC,GACtEqqB,EAAMF,EAAOpqB,EAAIqqB,EAAOpqB,EAAImqB,EAAOnqB,EAAIoqB,EAAOrqB,EAC9CuqB,EAAU,IAAI,GAAM7B,EAAK35D,MAAMixC,EAAIvyC,KAAKsB,MAAMixC,EAAG0oB,EAAK35D,MAAMkxC,EAAIxyC,KAAKsB,MAAMkxC,GAC3EuqB,EAAQD,EAAQvqB,EAAIqqB,EAAOpqB,EAAIsqB,EAAQtqB,EAAIoqB,EAAOrqB,EAClDyqB,EAAOF,EAAQvqB,EAAIoqB,EAAOnqB,EAAIsqB,EAAQtqB,EAAImqB,EAAOpqB,EACvD,GAAY,IAARsqB,GAAaE,EAAQF,EAAM,GAAKG,EAAOH,EAAM,EAC7C,OAAO,KAEX,GAAIA,EAAM,GACN,GAAIE,EAAQF,GAAOG,EAAOH,EACtB,OAAO,UAGV,GAAIE,EAAQF,GAAOG,EAAOH,EAC3B,OAAO,KAEX,OAAO,IAAI,GAAM78D,KAAKsB,MAAMixC,EAAKwqB,EAAQJ,EAAOpqB,EAAKsqB,EAAK78D,KAAKsB,MAAMkxC,EAAKuqB,EAAQJ,EAAOnqB,EAAKqqB,GAQlG,mBACI,OAAQ78D,KAAKsB,MAAMkzD,OAAOx0D,KAAKmH,KAQnC,YAAYpI,GACR,MAAM80D,EAAM,GAAMpsD,MAAM1I,GAClBuC,EAAQtB,KAAKsB,MACb6F,EAAMnH,KAAKmH,IAGjB,QAFqBA,EAAIorC,EAAIjxC,EAAMixC,IAAMshB,EAAIrhB,EAAIlxC,EAAMkxC,IAClDrrC,EAAIqrC,EAAIlxC,EAAMkxC,IAAMqhB,EAAIthB,EAAIjxC,EAAMixC,IAClBvyC,KAAK2B,SAE9B,qBAAqB4wC,EAAGC,GACpB,MAAMzzC,EAAI,GAAMR,OAAOg0C,EAAGC,GAC1B,OAAOxyC,KAAK07D,aAAa38D,GAAGg1D,gBAAgBh1D,GAEhD,cAAcwzC,EAAGC,GACb,MAAMzzC,EAAI,GAAMR,OAAOg0C,EAAGC,GAC1B,OAAOxyC,KAAK07D,aAAa38D,GAAG8xD,SAAS9xD,GAMzC,UAAUo9D,GACN,IAAKn8D,KAAKk7D,mBACN,OAAO,KAEX,MAAM55D,EAAQtB,KAAKsB,MACb6F,EAAMnH,KAAKmH,IACXi2D,EAAep9D,KAAK27D,QAAQQ,GAC5BkB,EAAc,IAAI,GAAK/7D,EAAO6F,GAEpC,OADAk2D,EAAYjK,UAAUgK,EAAa7qB,EAAIjxC,EAAMixC,EAAG6qB,EAAa5qB,EAAIlxC,EAAMkxC,GAChE6qB,EAMX,gBAAgB17D,GACZ,IAAK3B,KAAKk7D,mBACN,OAAO,KAEX,MAAM55D,EAAQtB,KAAKsB,MACb6F,EAAMnH,KAAKmH,IACXi2D,EAAep9D,KAAKo8D,cAAcz6D,GAClC07D,EAAc,IAAI,GAAK/7D,EAAO6F,GAEpC,OADAk2D,EAAYjK,UAAUgK,EAAa7qB,EAAIjxC,EAAMixC,EAAG6qB,EAAa5qB,EAAIlxC,EAAMkxC,GAChE6qB,EAEX,YAAY9qB,EAAGC,GACX,MAAMqhB,EAAM,GAAMt1D,OAAOg0C,EAAGC,GAC5B,IAAIgrB,EAAM3J,EAAIthB,EAAIvyC,KAAKsB,MAAMixC,EACzBkrB,EAAM5J,EAAIrhB,EAAIxyC,KAAKsB,MAAMkxC,EAC7B,MAAMkrB,EAAM19D,KAAKmH,IAAIorC,EAAIvyC,KAAKsB,MAAMixC,EAC9BorB,EAAM39D,KAAKmH,IAAIqrC,EAAIxyC,KAAKsB,MAAMkxC,EACpC,IAAIorB,EAAMJ,EAAMG,EAAMF,EAAMC,EAY5B,OAXY,IAARE,IACAA,EAAMJ,EAAME,EAAMD,EAAME,EACpBC,EAAM,IACNJ,GAAOE,EACPD,GAAOE,EACPC,EAAMJ,EAAME,EAAMD,EAAME,EACpBC,EAAM,IACNA,EAAM,KAIXA,EAAM,GAAO,EAAIA,EAAM,EAAM,EAAI,EAK5C,OAAO1gE,GACH,OAAa,MAALA,GACJ8C,KAAKsB,MAAMixC,IAAMr1C,EAAEoE,MAAMixC,GACzBvyC,KAAKsB,MAAMkxC,IAAMt1C,EAAEoE,MAAMkxC,GACzBxyC,KAAKmH,IAAIorC,IAAMr1C,EAAEiK,IAAIorC,GACrBvyC,KAAKmH,IAAIqrC,IAAMt1C,EAAEiK,IAAIqrC,EAK7B,QACI,OAAO,IAAI,GAAKxyC,KAAKsB,MAAOtB,KAAKmH,KAErC,SACI,MAAO,CAAE7F,MAAOtB,KAAKsB,MAAMyqD,SAAU5kD,IAAKnH,KAAKmH,IAAI4kD,UAEvD,YACI,MAAO,CAAC/rD,KAAKsB,MAAMo+B,YAAa1/B,KAAKmH,IAAIu4B,aAAa1wB,KAAK,OAGxDsrD,GA4BR,KAAS,GAAO,KA3BVr8D,YAAc,eAAeq8D,GAAK98D,KA0BvC88D,GAAKuD,OAzBL,SAAgB3H,GACZ,GAAgB,MAAZA,EACA,OAAO,EAEX,GAAIA,aAAoBoE,GACpB,OAAO,EAEX,MAAM1oD,EAAMskD,EAASl4D,OAAOC,aACtBg9D,EAAO/E,EACb,IACI,IAAY,MAAPtkD,GAAeA,IAAQ0oD,GAAKr8D,cAC7B,GAAMg4D,QAAQgF,EAAK35D,QACnB,GAAM20D,QAAQgF,EAAK9zD,MACI,mBAAhB8zD,EAAKI,QACY,mBAAjBJ,EAAKjG,SACa,mBAAlBiG,EAAKD,UACc,mBAAnBC,EAAKrD,UACZ,OAAO,EAGf,MAAO/pD,GACH,OAAO,EAEX,OAAO,GCpZR,MAAM,WAAgBmoD,GACzB,YAAYzjB,EAAGC,EAAGxnC,EAAGC,GACjB0zE,QACA3+E,KAAKuyC,EAAS,MAALA,EAAY,EAAIA,EACzBvyC,KAAKwyC,EAAS,MAALA,EAAY,EAAIA,EACzBxyC,KAAKgL,EAAS,MAALA,EAAY,EAAIA,EACzBhL,KAAKiL,EAAS,MAALA,EAAY,EAAIA,EAE7BnN,IAAKE,OAAOC,eACR,OAAO,GAAQA,YAEnB,aACI,OAAO,IAAI,GAAM+B,KAAKuyC,EAAGvyC,KAAKwyC,GAKlC,OACI,OAAO,GAAU22D,YAAYnpG,MAKjC,YACI,OAAOA,KAAKyzD,OAEhB,QAAQJ,EAAIC,GACR,MAAMvwD,EAAIswD,EACJxyD,EAAU,MAANyyD,EAAaA,EAAKD,EAG5B,OAFArzD,KAAKgL,GAAK,EAAIjI,EACd/C,KAAKiL,GAAK,EAAIpK,EACPb,KAEX,mBAAmBuyC,EAAGC,GAClB,MAAMqhB,EAAM,GAAMt1D,OAAOg0C,EAAGC,GACtB6gB,EAAKQ,EAAIthB,EAAIvyC,KAAKuyC,EAClB+gB,EAAKO,EAAIrhB,EAAIxyC,KAAKwyC,EAClBxnC,EAAIhL,KAAKgL,EACTC,EAAIjL,KAAKiL,EACf,OAAQooD,EAAKA,GAAOroD,EAAIA,GAAMsoD,EAAKA,GAAOroD,EAAIA,GAElD,cAAcsnC,EAAGC,GACb,OAAOxyC,KAAK8gL,mBAAmBvuI,EAAGC,IAAM,EAM5C,mBAAmByoB,GACf,MAAMm+D,EAAgB,GAChBr6B,EAAK/+F,KAAKgL,EACVg0F,EAAKh/F,KAAKiL,EACV6nI,EAAK73E,EAAK35D,MACVy/K,EAAK9lH,EAAK9zD,IACVuG,EAAMutD,EAAKI,SACXprD,EAAO6iI,EAAG7iI,KAAK,IAAI,GAAMjQ,KAAKuyC,EAAGvyC,KAAKwyC,IACtCwuI,EAAO,IAAI,GAAMtzK,EAAI6kC,GAAKwsD,EAAKA,GAAKrxF,EAAI8kC,GAAKwsD,EAAKA,IAClDiiF,EAAQ,IAAI,GAAMhxK,EAAKsiC,GAAKwsD,EAAKA,GAAK9uF,EAAKuiC,GAAKwsD,EAAKA,IACrDh0F,EAAI0C,EAAI6jD,IAAIyvH,GACZ/1K,EAAIyC,EAAI6jD,IAAI0vH,GAEZ1jL,EAAI0N,EAAIA,EAAID,GADRiF,EAAKshD,IAAI0vH,GAAS,GAE5B,GAAI1jL,EAAI,EACJ,OAAO,KAEX,GAAIA,EAAI,EAAG,CACP,MAAMuE,EAAOgG,KAAK2rC,KAAKl2C,GACjB2jL,IAAOj2K,EAAInJ,GAAQkJ,EACnBm2K,IAAOl2K,EAAInJ,GAAQkJ,EACzB,IAAKk2K,EAAK,GAAKA,EAAK,KAAOC,EAAK,GAAKA,EAAK,GAEtC,OAAO,KAEPD,GAAM,GAAKA,GAAM,GACjB9nD,EAAc52H,KAAKswI,EAAGrhF,KAAKsvH,EAAIG,IAE/BC,GAAM,GAAKA,GAAM,GACjB/nD,EAAc52H,KAAKswI,EAAGrhF,KAAKsvH,EAAII,QAGlC,CACD,MAAMhjL,GAAK8M,EAAID,EACf,KAAI7M,GAAK,GAAKA,GAAK,GAKf,OAAO,KAJPi7H,EAAc52H,KAAKswI,EAAGrhF,KAAKsvH,EAAI5iL,IAOvC,OAAOi7H,EAUX,oCAAoCr6H,EAAG21D,EAAQ,GAC3C,MAAMb,EAAM,GAAMpsD,MAAM1I,GACpB21D,GACAb,EAAIN,OAAOmB,EAAO10D,KAAK06D,aAE3B,MAAMrH,EAAKQ,EAAIthB,EAAIvyC,KAAKuyC,EAClB+gB,EAAKO,EAAIrhB,EAAIxyC,KAAKwyC,EACxB,IAAIrxC,EACJ,GAAW,IAAPkyD,EAEA,OADAlyD,EAASnB,KAAKu7D,OAAOutC,uBAAuBj1C,GACxCa,EACOvzD,EAAOoyD,QAAQmB,EAAO10D,KAAK06D,aAE/Bv5D,EAEX,MAAM9D,EAAIi2D,EAAKD,EACT+tH,EAAW/jL,EAAIA,EACfgkL,EAAWrhL,KAAKgL,EAAIhL,KAAKgL,EACzBs2K,EAAWthL,KAAKiL,EAAIjL,KAAKiL,EAC/B,IAAIsnC,EAAIzqC,KAAK2rC,KAAK,GAAK,EAAI4tI,EAAWD,EAAWE,IACjD/uI,EAAI8gB,EAAK,GAAK9gB,EAAIA,EAClB,MAAMC,EAAIn1C,EAAIk1C,EAEd,OADApxC,EAAS,IAAI,GAAMnB,KAAKuyC,EAAIA,EAAGvyC,KAAKwyC,EAAIA,GACpCkiB,EACOvzD,EAAOoyD,QAAQmB,EAAO10D,KAAK06D,aAE/Bv5D,EAMX,aAAapC,GACT,MAAM80D,EAAM,GAAMpsD,MAAM1I,GAClBy+F,EAAK3pC,EAAIthB,EACTkrD,EAAK5pC,EAAIrhB,EACTxnC,EAAIhL,KAAKgL,EACTC,EAAIjL,KAAKiL,EACTwoD,EAASzzD,KAAKu7D,OAAO9H,OACrBupC,EAAKvpC,EAAOlhB,EACZ0qD,EAAKxpC,EAAOjhB,EAEZgvI,EAAKhkF,EAAK/pC,EAAOlhB,EAAIvnC,EAAI,EACzBy2K,EAAKjkF,EAAK/pC,EAAOlhB,EAAIvnC,EAAI,EAC/B,IAAIunC,EACAC,EAeJ,OAdIgvI,GAAMC,GACNjvI,EAAIgrD,EAAK/pC,EAAOlhB,EAAIkrD,EANF,GAMuBA,EANvB,GAOlBlrD,EACKvnC,EAAIA,GAAMwyF,EAAKR,GACXhyF,EAAIA,GAAKyyF,EAAKR,IAAOzqD,EAAIyqD,IAAQhyF,EAAIA,GAAKuyF,EAAKR,IAChDA,IAGRzqD,EAAIkrD,EAAKhqC,EAAOjhB,EAAIgrD,EAbF,GAauBA,EAbvB,GAclBhrD,EACKvnC,EAAIA,GAAMwyF,EAAKR,GACXhyF,EAAIA,GAAKuyF,EAAKR,IAAOzqD,EAAIyqD,IAAQhyF,EAAIA,GAAKyyF,EAAKR,IAChDA,GAEL,IAAI,GAAM1qD,EAAGC,GAAG0hB,MAAML,GAEjC,MAAMH,EAAIC,GAGN,OAFA3zD,KAAKgL,GAAK0oD,EACV1zD,KAAKiL,GAAK0oD,EACH3zD,KAEX,OAAO00D,EAAOd,GACV,MAAM/qB,EAAO,GAAUsgE,YAAYnpG,MACnC6oC,EAAK0qB,OAAOmB,EAAOd,GACnB,MAAMw1C,EAAU,GAAQs4E,SAAS74I,GAKjC,OAJA7oC,KAAKgL,EAAIo+F,EAAQp+F,EACjBhL,KAAKiL,EAAIm+F,EAAQn+F,EACjBjL,KAAKuyC,EAAI62D,EAAQ72D,EACjBvyC,KAAKwyC,EAAI42D,EAAQ52D,EACVxyC,KAEX,UAAUqzD,EAAIC,GACV,MAAMv0D,EAAI,GAAMR,OAAO80D,EAAIC,GAG3B,OAFAtzD,KAAKuyC,GAAKxzC,EAAEwzC,EACZvyC,KAAKwyC,GAAKzzC,EAAEyzC,EACLxyC,KAEX,OAAOopG,GACH,OAAmB,MAAXA,GACJA,EAAQ72D,IAAMvyC,KAAKuyC,GACnB62D,EAAQ52D,IAAMxyC,KAAKwyC,GACnB42D,EAAQp+F,IAAMhL,KAAKgL,GACnBo+F,EAAQn+F,IAAMjL,KAAKiL,EAE3B,QACI,OAAO,IAAI,GAAQjL,KAAKuyC,EAAGvyC,KAAKwyC,EAAGxyC,KAAKgL,EAAGhL,KAAKiL,GAEpD,SACI,MAAO,CAAEsnC,EAAGvyC,KAAKuyC,EAAGC,EAAGxyC,KAAKwyC,EAAGxnC,EAAGhL,KAAKgL,EAAGC,EAAGjL,KAAKiL,GAEtD,YACI,MAAO,GAAGjL,KAAKuyC,KAAKvyC,KAAKwyC,KAAKxyC,KAAKgL,KAAKhL,KAAKiL,MAG1CkqI,GAuBR,KAAY,GAAU,KAtBbl3I,YAAc,eAAek3I,GAAQ33I,KAqB7C23I,GAAQwsC,UApBR,SAAmBzrH,GACf,GAAgB,MAAZA,EACA,OAAO,EAEX,GAAIA,aAAoBi/E,GACpB,OAAO,EAEX,MAAMvjI,EAAMskD,EAASl4D,OAAOC,aACtBmrG,EAAUlzC,EAChB,OAAY,MAAPtkD,GAAeA,IAAQujI,GAAQl3I,cACX,iBAAdmrG,EAAQ72D,GACM,iBAAd62D,EAAQ52D,GACM,iBAAd42D,EAAQp+F,GACM,iBAAdo+F,EAAQn+F,GACY,mBAApBm+F,EAAQpD,SACuB,mBAA/BoD,EAAQ03E,oBAO3B,SAAW3rC,GAQP,SAASnyH,EAAMnV,GACX,OAAIsnI,EAAQwsC,UAAU9zK,GACXA,EAAEpG,QAETvG,MAAMD,QAAQ4M,GACP,IAAIsnI,EAAQtnI,EAAE,GAAIA,EAAE,GAAIA,EAAE,GAAIA,EAAE,IAEpC,IAAIsnI,EAAQtnI,EAAE0kC,EAAG1kC,EAAE2kC,EAAG3kC,EAAE7C,EAAG6C,EAAE5C,GARxCkqI,EAAQ52I,OANR,SAAgBg0C,EAAGC,EAAGxnC,EAAGC,GACrB,OAAS,MAALsnC,GAA0B,iBAANA,EACb,IAAI4iG,EAAQ5iG,EAAGC,EAAGxnC,EAAGC,GAEzB+X,EAAMuvB,IAYjB4iG,EAAQnyH,MAAQA,EAKhBmyH,EAAQusC,SAJR,SAAkB74I,GACd,MAAM4qB,EAAS5qB,EAAK4qB,OACpB,OAAO,IAAI0hF,EAAQ1hF,EAAOlhB,EAAGkhB,EAAOjhB,EAAG3J,EAAKxX,MAAQ,EAAGwX,EAAKpV,OAAS,IApB7E,CAuBG,KAAY,GAAU,KCtPlB,MAAM,WAAiBuiC,GAC1B,YAAYlC,GAER,GADA6qB,QACc,MAAV7qB,EAAgB,CAChB,GAAsB,iBAAXA,EACP,OAAO,GAAS9wC,MAAM8wC,GAE1B9zD,KAAK8zD,OAASA,EAAOvtD,IAAKxH,GAAM,GAAMR,OAAOQ,SAG7CiB,KAAK8zD,OAAS,GAGtBh2D,IAAKE,OAAOC,eACR,OAAO,GAASA,YAEpB,YACI,OAA2B,IAAvB+B,KAAK8zD,OAAOnyD,OACL,KAEJ3B,KAAK8zD,OAAO,GAEvB,UACI,OAA2B,IAAvB9zD,KAAK8zD,OAAOnyD,OACL,KAEJ3B,KAAK8zD,OAAO9zD,KAAK8zD,OAAOnyD,OAAS,GAE5C,MAAM+xD,EAAIC,EAAIC,EAAS,IAAI,IAEvB,OADA5zD,KAAK8zD,OAAO3oB,QAASpsC,GAAMA,EAAE8lB,MAAM6uC,EAAIC,EAAIC,IACpC5zD,KAEX,OAAO00D,EAAOd,GAEV,OADA5zD,KAAK8zD,OAAO3oB,QAASpsC,GAAMA,EAAEw0D,OAAOmB,EAAOd,IACpC5zD,KAEX,UAAUqzD,EAAIC,GACV,MAAMn1D,EAAI,GAAMI,OAAO80D,EAAIC,GAE3B,OADAtzD,KAAK8zD,OAAO3oB,QAASpsC,GAAMA,EAAEq0D,UAAUj1D,EAAEo0C,EAAGp0C,EAAEq0C,IACvCxyC,KAEX,OACI,GAA2B,IAAvBA,KAAK8zD,OAAOnyD,OACZ,OAAO,IAAI,GAEf,IAAIk1D,EAAKtY,IACLuY,GAAMvY,IACNgY,EAAKhY,IACLwY,GAAMxY,IACV,MAAMuV,EAAS9zD,KAAK8zD,OACpB,IAAK,IAAI72D,EAAI,EAAG25D,EAAK9C,EAAOnyD,OAAQ1E,EAAI25D,EAAI35D,GAAK,EAAG,CAChD,MAAMk5D,EAAQrC,EAAO72D,GACfs1C,EAAI4jB,EAAM5jB,EACVC,EAAI2jB,EAAM3jB,EACZD,EAAIskB,IACJA,EAAKtkB,GACLA,EAAIukB,IACJA,EAAKvkB,GACLC,EAAI+jB,IACJA,EAAK/jB,GACLA,EAAIukB,IACJA,EAAKvkB,GAEb,OAAO,IAAI,GAAUqkB,EAAIN,EAAIO,EAAKD,EAAIE,EAAKR,GAE/C,aAAax3D,GACT,MAAMqjH,EAAWpiH,KAAK67D,mBAAmB98D,GACzC,OAAOiB,KAAKo8D,cAAcgmD,GAE9B,mBAAmBrjH,GACf,MAAM+0D,EAAS9zD,KAAK8zD,OACdlwC,EAAQkwC,EAAOnyD,OACrB,GAAc,IAAViiB,GAAyB,IAAVA,EACf,OAAO,EAEX,IAAIjiB,EAAS,EACTygH,EAAW,EACXqW,EAAiBl6E,IACrB,IAAK,IAAIthD,EAAI,EAAG25D,EAAKhzC,EAAQ,EAAG3mB,EAAI25D,EAAI35D,GAAK,EAAG,CAC5C,MAAMg+D,EAAO,IAAI,GAAKnH,EAAO72D,GAAI62D,EAAO72D,EAAI,IACtCy7H,EAAaz9D,EAAKt5D,SAClBg3H,EAAqB19D,EAAKW,6BAA6B78D,GAEvD65H,EADK39D,EAAKU,QAAQg9D,GACD5kE,gBAAgBh1D,GACnC65H,EAAcH,IACdA,EAAiBG,EACjBxW,EAAWzgH,EAASg3H,EAAqBD,GAE7C/2H,GAAU+2H,EAEd,OAAOtW,EAEX,6BAA6BrjH,GACzB,MAAMqjH,EAAWpiH,KAAK67D,mBAAmB98D,GACzC,GAAiB,IAAbqjH,EACA,OAAO,EAEX,MAAMzgH,EAAS3B,KAAK2B,SACpB,OAAe,IAAXA,EACO,EAEJygH,EAAWzgH,EAEtB,oBAAoB5C,GAChB,MAAMqjH,EAAWpiH,KAAK67D,mBAAmB98D,GACzC,OAAOiB,KAAKs9D,gBAAgB8kD,GAEhC,cAAcrjH,GACV,GAA2B,IAAvBiB,KAAK8zD,OAAOnyD,OACZ,OAAO,EAEX,MAAMkyD,EAAM,GAAMpsD,MAAM1I,GAClBwzC,EAAIshB,EAAIthB,EACRC,EAAIqhB,EAAIrhB,EACRshB,EAAS9zD,KAAK8zD,OACdlwC,EAAQkwC,EAAOnyD,OACrB,IAAIk3H,EAAaj1G,EAAQ,EACrBk1G,EAAoB,EACxB,IAAK,IAAIC,EAAW,EAAGA,EAAWn1G,EAAOm1G,GAAY,EAAG,CACpD,MAAMz3H,EAAQwyD,EAAO+kE,GACf1xH,EAAM2sD,EAAOilE,GACnB,GAAIllE,EAAIW,OAAOlzD,GACX,OAAO,EAEX,MAAM03H,EAAU,IAAI,GAAK13H,EAAO6F,GAChC,GAAI6xH,EAAQjkE,cAAch2D,GACtB,OAAO,EAGX,GAAKyzC,GAAKlxC,EAAMkxC,GAAKA,EAAIrrC,EAAIqrC,GAAOA,EAAIlxC,EAAMkxC,GAAKA,GAAKrrC,EAAIqrC,EAAI,CAM5D,MAAMymF,EAAc33H,EAAMixC,EAAIA,EAAIprC,EAAIorC,EAAIA,EAAIjxC,EAAMixC,EAAIA,EAAIprC,EAAIorC,EAAIA,EACpE,GAAI0mF,GAAe,EAAG,CAElB,MAAMC,EAAS,IAAI,GAAM3mF,EAAI0mF,EAAazmF,GACpC2mF,EAAM,IAAI,GAAKp6H,EAAGm6H,GACpBF,EAAQt8D,mBAAmBy8D,KAE3BL,GAAqB,IAKjCD,EAAaE,EAGjB,OAAOD,EAAoB,GAAM,EAErC,mBAAmB79D,GACf,MAAMm+D,EAAgB,GACtB,IAAK,IAAIn8H,EAAI,EAAGyB,EAAIsB,KAAK8zD,OAAOnyD,OAAS,EAAG1E,EAAIyB,EAAGzB,GAAK,EAAG,CACvD,MAAM+N,EAAIhL,KAAK8zD,OAAO72D,GAChBgO,EAAIjL,KAAK8zD,OAAO72D,EAAI,GACpBo8H,EAAMp+D,EAAKyB,mBAAmB,IAAI,GAAK1xD,EAAGC,IAC5CouH,GACAD,EAAc52H,KAAK62H,GAG3B,OAAOD,EAAcz3H,OAAS,EAAIy3H,EAAgB,KAEtD,mBACI,IAAK,IAAIn8H,EAAI,EAAG25D,EAAK52D,KAAK8zD,OAAOnyD,OAAS,EAAG1E,EAAI25D,EAAI35D,GAAK,EAAG,CACzD,MAAM+N,EAAIhL,KAAK8zD,OAAO72D,GAChBgO,EAAIjL,KAAK8zD,OAAO72D,EAAI,GAE1B,GADa,IAAI,GAAK+N,EAAGC,GAChBiwD,mBACL,OAAO,EAGf,OAAO,EAEX,SACI,IAAIj0D,EAAM,EACV,IAAK,IAAIhK,EAAI,EAAG25D,EAAK52D,KAAK8zD,OAAOnyD,OAAS,EAAG1E,EAAI25D,EAAI35D,GAAK,EAAG,CACzD,MAAM+N,EAAIhL,KAAK8zD,OAAO72D,GAChBgO,EAAIjL,KAAK8zD,OAAO72D,EAAI,GAC1BgK,GAAO+D,EAAE6lD,SAAS5lD,GAEtB,OAAOhE,EAEX,QAAQk1D,GACJ,MAAMrI,EAAS9zD,KAAK8zD,OACdlwC,EAAQkwC,EAAOnyD,OACrB,GAAc,IAAViiB,EACA,OAAO,KAEX,GAAc,IAAVA,EACA,OAAOkwC,EAAO,GAAGrsD,QAErB,GAAI00D,GAAS,EACT,OAAOrI,EAAO,GAAGrsD,QAErB,GAAI00D,GAAS,EACT,OAAOrI,EAAOlwC,EAAQ,GAAGnc,QAE7B,MACM9F,EADQ3B,KAAK2B,SACIw6D,EACvB,OAAOn8D,KAAKo8D,cAAcz6D,GAE9B,cAAcA,GACV,MAAMmyD,EAAS9zD,KAAK8zD,OACdlwC,EAAQkwC,EAAOnyD,OACrB,GAAc,IAAViiB,EACA,OAAO,KAEX,GAAc,IAAVA,EACA,OAAOkwC,EAAO,GAAGrsD,QAErB,IAAI40D,GAAY,EACZ16D,EAAS,IACT06D,GAAY,EACZ16D,GAAUA,GAEd,IAAIkQ,EAAM,EACV,IAAK,IAAI5U,EAAI,EAAG25D,EAAKhzC,EAAQ,EAAG3mB,EAAI25D,EAAI35D,GAAK,EAAG,CAC5C,MAAMyE,EAAQ26D,EAAYp/D,EAAI25D,EAAK,EAAI35D,EACjC+N,EAAI8oD,EAAOpyD,GACXuJ,EAAI6oD,EAAOpyD,EAAQ,GACnBxE,EAAI,IAAI,GAAK8N,EAAGC,GAChB1N,EAAIyN,EAAE6lD,SAAS5lD,GACrB,GAAItJ,GAAUkQ,EAAMtU,EAChB,OAAOL,EAAEk/D,eAAeC,EAAY,GAAK,IAAM16D,EAASkQ,IAE5DA,GAAOtU,EAGX,OADkB8+D,EAAYvI,EAAOlwC,EAAQ,GAAKkwC,EAAO,IACxCrsD,QAErB,UAAU00D,GACN,MACMv4C,EADS5jB,KAAK8zD,OACCnyD,OACrB,GAAc,IAAViiB,GAAyB,IAAVA,EACf,OAAO,KAEPu4C,EAAQ,IACRA,EAAQ,GAERA,EAAQ,IACRA,EAAQ,GAEZ,MACMx6D,EADQ3B,KAAK2B,SACIw6D,EACvB,OAAOn8D,KAAKs9D,gBAAgB37D,GAEhC,gBAAgBA,GACZ,MAAMmyD,EAAS9zD,KAAK8zD,OACdlwC,EAAQkwC,EAAOnyD,OACrB,GAAc,IAAViiB,GAAyB,IAAVA,EACf,OAAO,KAEX,IAKI01G,EALAj9D,GAAY,EACZ16D,EAAS,IACT06D,GAAY,EACZ16D,GAAUA,GAGd,IAAIkQ,EAAM,EACV,IAAK,IAAI5U,EAAI,EAAG25D,EAAKhzC,EAAQ,EAAG3mB,EAAI25D,EAAI35D,GAAK,EAAG,CAC5C,MAAMyE,EAAQ26D,EAAYp/D,EAAI25D,EAAK,EAAI35D,EACjC+N,EAAI8oD,EAAOpyD,GACXuJ,EAAI6oD,EAAOpyD,EAAQ,GACnBxE,EAAI,IAAI,GAAK8N,EAAGC,GAChB1N,EAAIyN,EAAE6lD,SAAS5lD,GACrB,GAAI/N,EAAEg+D,mBAAoB,CAEtB,GAAIv5D,GAAUkQ,EAAMtU,EAChB,OAAOL,EAAEogE,iBAAiBjB,EAAY,GAAK,IAAM16D,EAASkQ,IAE9DynH,EAAgBp8H,EAEpB2U,GAAOtU,EAEX,GAAI+7H,EAAe,CACf,MAAMn9D,EAAQE,EAAY,EAAI,EAC9B,OAAOi9D,EAAcv9D,UAAUI,GAEnC,OAAO,KAEX,SAEAx8D,EAAU,IACN,MAAMm0D,EAAS9zD,KAAK8zD,OAEpB,GAAIA,EAAOnyD,OAAS,EAChB,OAAO3B,KAEX,MAAMw5H,EAAY75H,EAAQ65H,WAAa,EAEvC,IAAIC,EAAe,EAGnB,KAAO3lE,EAAO2lE,EAAe,IAAI,CAC7B,MACMC,EAAcD,EAAe,EAC7BpjF,EAAYojF,EAAe,EAC3BE,EAAa7lE,EAHA2lE,GAIbG,EAAc9lE,EAAO4lE,GACrBG,EAAY/lE,EAAOzd,GACX,IAAI,GAAKsjF,EAAYE,GACRn+D,aAAak+D,GACE/oE,SAAS+oE,IACvBJ,EAGxB1lE,EAAOzsD,OAAOqyH,EAAa,GAS3BD,GAAgB,EAKxB,OAAOz5H,KAEX,SACI,MAAM8zD,EAAS9zD,KAAK8zD,OACdlwC,EAAQkwC,EAAOnyD,OACrB,GAAc,IAAViiB,EACA,OAAO,IAAI,GAIf,IAAIm2G,EAAajmE,EAAO,GACxB,IAAK,IAAI72D,EAAI,EAAGA,EAAI2mB,EAAO3mB,GAAK,GACxB62D,EAAO72D,GAAGu1C,EAAIunF,EAAWvnF,GAGpBshB,EAAO72D,GAAGu1C,IAAMunF,EAAWvnF,GAAKshB,EAAO72D,GAAGs1C,EAAIwnF,EAAWxnF,KAF9DwnF,EAAajmE,EAAO72D,IAS5B,MAAM+8H,EAAgB,GACtB,IAAK,IAAI/8H,EAAI,EAAGA,EAAI2mB,EAAO3mB,GAAK,EAAG,CAC/B,IAAIy3D,EAAQqlE,EAAW7lE,MAAMJ,EAAO72D,IACtB,IAAVy3D,IAIAA,EAAQ,KAEZslE,EAAcx3H,KAAK,CAACsxD,EAAO72D,GAAIA,EAAGy3D,IAYtC,GATAslE,EAAc5yH,KAAK,CAAC6yH,EAASC,KACzB,IAAIh0H,EAAM+zH,EAAQ,GAAKC,EAAQ,GAI/B,OAHY,IAARh0H,IACAA,EAAMg0H,EAAQ,GAAKD,EAAQ,IAExB/zH,IAIP8zH,EAAcr4H,OAAS,EAAG,CAC1B,MAAMo4H,EAAaC,EAAcA,EAAcr4H,OAAS,GACxDq4H,EAAclnH,QAAQinH,GAO1B,MAAMM,EAAe,GAEfC,EAAc,GACdC,EAAUC,GAAW,GAAGA,EAAO,GAAG72H,cAAc62H,EAAO,KAC7D,KAAgC,IAAzBR,EAAcr4H,QAAc,CAC/B,MAAM84H,EAAgBT,EAAc9uH,MAC9BwvH,EAAeD,EAAc,GAEnC,GAAIJ,EAAaE,EAAOE,IACpB,SAEJ,IAAIE,GAAmB,EACvB,MAAQA,GACJ,GAAIL,EAAY34H,OAAS,EAErB24H,EAAY93H,KAAKi4H,GACjBE,GAAmB,MAElB,CACD,MAAMC,EAAiBN,EAAYpvH,MAC7B2vH,EAAgBD,EAAe,GAC/BE,EAAuBR,EAAYpvH,MACnC6vH,EAAsBD,EAAqB,GAC3CE,EAAeD,EAAoBrlE,MAAMmlE,EAAeH,GAC9D,GAAIM,EAAe,EAEfV,EAAY93H,KAAKs4H,GACjBR,EAAY93H,KAAKo4H,GACjBN,EAAY93H,KAAKi4H,GACjBE,GAAmB,OAElB,GAAqB,IAAjBK,EAAoB,CAMzB,MAAMuyG,EAAY,MACZl5K,EAAewmE,EAAcxmE,aAAa0mE,EAAqBL,GACjE5yH,KAAKinC,IAAIslB,EAAe,KAAOk5K,GAW1B1yG,EAAcrmE,OAAOkmE,IAC1BK,EAAoBvmE,OAAOqmE,IAP3BR,EAAaE,EAAOK,IAAmBC,EAEvCP,EAAY93H,KAAKs4H,IAeZhzH,KAAKinC,KAAMslB,EAAe,GAAK,IAAO,GAAKk5K,IAKhDjzG,EAAY93H,KAAKs4H,GAEjBd,EAAcx3H,KAAKo4H,SASvBP,EAAaE,EAAOK,IAAmBC,EAEvCP,EAAY93H,KAAKs4H,IAcjC,IAAIV,EAJAE,EAAY34H,OAAS,GACrB24H,EAAYpvH,MAIhB,IAAI+vH,GAAgC,EACpC,IAAK,IAAIh+H,EAAI,EAAGyB,EAAI47H,EAAY34H,OAAQ1E,EAAIyB,EAAGzB,GAAK,EAAG,CACnD,MAAMi+H,EAAmBZ,EAAYr9H,GAAG,SAChBiF,IAApBk4H,GAAiCc,EAAmBd,KACpDA,EAAkBc,EAClBD,EAA+Bh+H,GAGvC,IAAIk+H,EAA4B,GAChC,GAAIF,EAA+B,EAAG,CAClC,MAAMG,EAAgBd,EAAYh3H,MAAM23H,GAClCI,EAAiBf,EAAYh3H,MAAM,EAAG23H,GAC5CE,EAA4BC,EAAcp6H,OAAOq6H,QAGjDF,EAA4Bb,EAEhC,MAAMgB,EAAa,GACnB,IAAK,IAAIr+H,EAAI,EAAGyB,EAAIy8H,EAA0Bx5H,OAAQ1E,EAAIyB,EAAGzB,GAAK,EAC9Dq+H,EAAW94H,KAAK24H,EAA0Bl+H,GAAG,IAEjD,OAAO,IAAI,GAASq+H,GAExB,OAAOv8H,GACH,OAAS,MAALA,IAGAA,EAAE+0D,OAAOnyD,SAAW3B,KAAK8zD,OAAOnyD,QAG7B5C,EAAE+0D,OAAOvO,MAAM,CAACv6C,EAAG/N,IAAM+N,EAAEwpD,OAAOx0D,KAAK8zD,OAAO72D,MAEzD,QACI,OAAO,IAAI,GAAS+C,KAAK8zD,OAAOvtD,IAAKxH,GAAMA,EAAE0I,UAEjD,SACI,OAAOzH,KAAK8zD,OAAOvtD,IAAKxH,GAAMA,EAAEgtD,UAEpC,YACI,OAAO/rD,KAAK8zD,OAAOvtD,IAAKxH,GAAM,GAAGA,EAAEwzC,MAAMxzC,EAAEyzC,KAAKxjC,KAAK,OAGlDi3G,GAmBR,KAAa,GAAW,KAlBdhoH,YAAc,eAAegoH,GAASzoH,KAiB/CyoH,GAASsV,WAhBT,SAAoBrlE,GAChB,GAAgB,MAAZA,EACA,OAAO,EAEX,GAAIA,aAAoB+vD,GACpB,OAAO,EAEX,MAAMr0G,EAAMskD,EAASl4D,OAAOC,aACtBu9H,EAAWtlE,EACjB,OAAY,MAAPtkD,GAAeA,IAAQq0G,GAAShoH,cACN,mBAApBu9H,EAAS1B,QACa,mBAAtB0B,EAASjC,UAO5B,SAAWtT,GAaPA,EAASjjG,MAZT,SAAey4G,GACX,MAAMttF,EAAMstF,EAAUrxF,OACtB,GAAY,KAAR+D,EACA,OAAO,IAAI83E,EAEf,MAAMnyD,EAAS,GACT4nE,EAASvtF,EAAIhlC,MAAM,eACzB,IAAK,IAAIlM,EAAI,EAAG25D,EAAK8kE,EAAO/5H,OAAQ1E,EAAI25D,EAAI35D,GAAK,EAC7C62D,EAAOtxD,KAAK,CAAE+vC,GAAImpF,EAAOz+H,GAAIu1C,GAAIkpF,EAAOz+H,EAAI,KAEhD,OAAO,IAAIgpH,EAASnyD,IAX5B,CAcG,KAAa,GAAW,KC/hBpB,MAAM,WAAckC,GACvB,YAAY10D,EAAOkgH,EAAeC,EAAet6G,GAC7Cw3E,QACA3+E,KAAK0hH,UAAY,EACjB1hH,KAAKsB,MAAQ,GAAM/C,OAAO+C,GAC1BtB,KAAKwhH,cAAgB,GAAMjjH,OAAOijH,GAClCxhH,KAAKyhH,cAAgB,GAAMljH,OAAOkjH,GAClCzhH,KAAKmH,IAAM,GAAM5I,OAAO4I,GAE5BrJ,IAAKE,OAAOC,eACR,OAAO,GAAMA,YAEjB,OACI,MAAMqD,EAAQtB,KAAKsB,MACbkgH,EAAgBxhH,KAAKwhH,cACrBC,EAAgBzhH,KAAKyhH,cACrBt6G,EAAMnH,KAAKmH,IACXq2F,EAAKl8F,EAAMixC,EACXkrD,EAAKn8F,EAAMkxC,EACXqkB,EAAK2qD,EAAcjvE,EACnBgkB,EAAKirD,EAAchvE,EACnBskB,EAAK2qD,EAAclvE,EACnBwkB,EAAK0qD,EAAcjvE,EACnBkqD,EAAKv1F,EAAIorC,EACToqD,EAAKx1F,EAAIqrC,EACTshB,EAAS,GACTguD,EAAU,GACVC,EAAS,CAAC,GAAI,IACpB,IAAI/2G,EACAC,EACA3N,EACAa,EACAyiG,EACAG,EACA4gB,EACAC,EAgCArvE,EACAC,EACAqvE,EAjCJ,IAAK,IAAI5kH,EAAI,EAAGA,EAAI,EAAGA,GAAK,EAWxB,GAVU,IAANA,GACAgO,EAAI,EAAIuyF,EAAK,GAAK3mC,EAAK,EAAIC,EAC3B9rD,GAAK,EAAIwyF,EAAK,EAAI3mC,EAAK,EAAIC,EAAK,EAAI4lC,EACpCp/F,EAAI,EAAIu5D,EAAK,EAAI2mC,IAGjBvyF,EAAI,EAAIwyF,EAAK,GAAKlnC,EAAK,EAAIQ,EAC3B/rD,GAAK,EAAIyyF,EAAK,EAAIlnC,EAAK,EAAIQ,EAAK,EAAI4lC,EACpCr/F,EAAI,EAAIi5D,EAAK,EAAIknC,GAEjB31F,KAAKinC,IAAI/jC,GAAK,MAAlB,CACI,GAAIlD,KAAKinC,IAAI9jC,GAAK,MACd,SAEJ9M,GAAKb,EAAI2N,EACL9M,EAAI,GAAKA,EAAI,GACb2jH,EAAQt/G,KAAKrE,QAGrBwjH,EAAO12G,EAAIA,EAAI,EAAI3N,EAAI0N,EACvB42G,EAAW95G,KAAK2rC,KAAKkuE,GACjBA,EAAO,IAEX/gB,IAAO31F,EAAI22G,IAAa,EAAI52G,GACxB41F,EAAK,GAAKA,EAAK,GACfkhB,EAAQt/G,KAAKo+F,GACjBG,IAAO91F,EAAI22G,IAAa,EAAI52G,GACxB+1F,EAAK,GAAKA,EAAK,GACf+gB,EAAQt/G,KAAKu+F,IAKrB,IAAI75F,EAAI46G,EAAQngH,OAChB,MAAMqgH,EAAO96G,EACb,KAAOA,GACHA,GAAK,EACL/I,EAAI2jH,EAAQ56G,GACZ26G,EAAK,EAAI1jH,EACTo0C,EACIsvE,EAAKA,EAAKA,EAAKrkB,EACX,EAAIqkB,EAAKA,EAAK1jH,EAAI04D,EAClB,EAAIgrD,EAAK1jH,EAAIA,EAAI24D,EACjB34D,EAAIA,EAAIA,EAAIu+F,EACpBqlB,EAAO,GAAG76G,GAAKqrC,EACfC,EACIqvE,EAAKA,EAAKA,EAAKpkB,EACX,EAAIokB,EAAKA,EAAK1jH,EAAIo4D,EAClB,EAAIsrD,EAAK1jH,EAAIA,EAAI44D,EACjB54D,EAAIA,EAAIA,EAAIw+F,EACpBolB,EAAO,GAAG76G,GAAKsrC,EACfshB,EAAO5sD,GAAK,CAAE+6G,EAAG1vE,EAAG2vE,EAAG1vE,GAE3BsvE,EAAQE,GAAQ,EAChBF,EAAQE,EAAO,GAAK,EACpBluD,EAAOkuD,GAAQ,CAAEC,EAAGzkB,EAAI0kB,EAAGzkB,GAC3B3pC,EAAOkuD,EAAO,GAAK,CAAEC,EAAGvlB,EAAIwlB,EAAGvlB,GAC/BolB,EAAO,GAAGC,GAAQxkB,EAClBukB,EAAO,GAAGC,GAAQvkB,EAClBskB,EAAO,GAAGC,EAAO,GAAKtlB,EACtBqlB,EAAO,GAAGC,EAAO,GAAKrlB,EACtBmlB,EAAQngH,OAASqgH,EAAO,EACxBD,EAAO,GAAGpgH,OAASqgH,EAAO,EAC1BD,EAAO,GAAGpgH,OAASqgH,EAAO,EAC1BluD,EAAOnyD,OAASqgH,EAAO,EACvB,MAAMzrF,EAAOzuB,KAAKkzC,IAAIx3C,MAAM,KAAMu+G,EAAO,IACnC9wG,EAAMnJ,KAAKkzC,IAAIx3C,MAAM,KAAMu+G,EAAO,IAClC1vF,EAAQvqB,KAAKitB,IAAIvxB,MAAM,KAAMu+G,EAAO,IACpCvmD,EAAS1zD,KAAKitB,IAAIvxB,MAAM,KAAMu+G,EAAO,IAC3C,OAAO,IAAI,GAAUxrF,EAAMtlB,EAAKohB,EAAQkE,EAAMilC,EAASvqD,GAE3D,aAAalS,EAAGY,EAAU,IACtB,OAAOK,KAAKiyG,SAASjyG,KAAK8xG,cAAc/yG,EAAGY,IAE/C,mBAAmBZ,EAAGY,EAAU,IAC5B,MAAMy5B,EAAOp5B,KAAKmiH,WAAWxiH,GAC7B,OAAOK,KAAK+xG,UAAU/xG,KAAK8xG,cAAc/yG,EAAGq6B,GAAOA,GAEvD,6BAA6Br6B,EAAGY,EAAU,IACtC,MAAMy5B,EAAOp5B,KAAKmiH,WAAWxiH,GACvByiH,EAAWpiH,KAAK67D,mBAAmB98D,EAAGq6B,GAC5C,IAAKgpF,EACD,OAAO,EAEX,MAAMzgH,EAAS3B,KAAK2B,OAAOy3B,GAC3B,OAAe,IAAXz3B,EACO,EAEJygH,EAAWzgH,EAEtB,cAAc5C,EAAGY,EAAU,IACvB,MAAM88C,EAAYz8C,KAAKqiH,aAAa1iH,GAC9B2iH,EAAetiH,KAAKuiH,aAAa5iH,GACjC6iH,EAAiB16G,KAAK+3F,IAAI,IAAKpjD,GACrC,IAAIgmE,EAA0B,KAC1BC,EAAgC,EAChCC,EAA8B,EAC9BC,EAAgB,EAChBC,EAAc,EACdC,EAAc,EACdC,EAAa,KACjB,MAAMn/F,EAAQ0+F,EAAa3gH,OAC3B,IAAIqhH,EAAQp/F,EAAQ,EAAI,EAAIA,EAAQ,EAmBpC,IAlBA0+F,EAAan3E,QAAQ,CAAC83E,EAAUhmH,KAC5B,MAAMimH,EAAYD,EAAS3hH,MAAMuvD,SAAS9xD,GACpCokH,EAAUF,EAAS97G,IAAI0pD,SAAS9xD,GAChCqkH,EAAUF,EAAYC,GACV,MAAdJ,GAAsBK,EAAUL,KAChCN,EAA0BQ,EAC1BP,EAAgCzlH,EAAI+lH,EACpCL,GAA+B1lH,EAAI,GAAK+lH,EACxCJ,EAAgBM,EAChBL,EAAcM,EACdJ,EAAaK,EACbN,EAAcG,EAASI,wBAOlB,CAMT,MAAMC,EAAsBV,EACtB96G,KAAKinC,IAAI6zE,EAAgBC,GAAeD,EACxC,EACAW,EAAmC,MAAfV,EACpB/6G,KAAKinC,IAAI6zE,EAAgBC,GAAeA,EACxC,EAUA2qH,GAAqB3qH,GACrBA,EAAcC,EAAcN,EAE5BirH,GANuB7qH,GACvBA,EAAgBE,EAAcN,GAKYgrH,EAChD,GAb6BlqH,EAAsBd,GAC/Ce,EAAoBf,GAYIirH,EACxB,OAAO7qH,GAAiBC,EAClBH,EACAC,EAGV,MAAMa,EAAUf,EAAwBz5D,OAAO,IAC/Cg6D,GAAS,EACT,MAAMS,EAAaD,EAAQ,GAAGliH,MAAMuvD,SAAS9xD,GACvC2kH,EAAWF,EAAQ,GAAGr8G,IAAI0pD,SAAS9xD,GACnC4kH,EAAWF,EAAaC,EACxBE,EAAaJ,EAAQ,GAAGliH,MAAMuvD,SAAS9xD,GACvC8kH,EAAWL,EAAQ,GAAGr8G,IAAI0pD,SAAS9xD,GAErC4kH,GADaC,EAAaC,GAE1BpB,EAA0Be,EAAQ,GAClCb,GAA+BK,EAC/BJ,EAAgBa,EAChBZ,EAAca,IAGdjB,EAA0Be,EAAQ,GAClCd,GAAiCM,EACjCJ,EAAgBgB,EAChBf,EAAcgB,IAI1B,oBAAoB9kH,EAAGY,EAAU,IAC7B,OAAOK,KAAKkyG,WAAWlyG,KAAK8xG,cAAc/yG,EAAGY,IAEjD,cAAcZ,EAAGY,EAAU,IAEvB,OADiBK,KAAK8jH,WAAWnkH,GACjBo1D,cAAch2D,GAElC,SAASo9D,EAAOx8D,EAAU,IACtB,GAAIw8D,GAAS,EACT,OAAOn8D,KAAKgyG,UAAU,GAE1B,GAAI71C,GAAS,EACT,OAAOn8D,KAAKgyG,UAAU,GAE1B,MAAM7zG,EAAI6B,KAAK+jH,IAAI5nD,EAAOx8D,GAC1B,OAAOK,KAAKgyG,UAAU7zG,GAE1B,eAAewD,EAAQhC,EAAU,IAC7B,MAAMxB,EAAI6B,KAAKgkH,UAAUriH,EAAQhC,GACjC,OAAOK,KAAKgyG,UAAU7zG,GAE1B,OAAOA,GACH,OAAO6B,KAAKgyG,UAAU7zG,GAE1B,UAAUA,GACN,MAAMmD,EAAQtB,KAAKsB,MACbkgH,EAAgBxhH,KAAKwhH,cACrBC,EAAgBzhH,KAAKyhH,cACrBt6G,EAAMnH,KAAKmH,IACjB,GAAIhJ,GAAK,EACL,MAAO,CACH,IAAI,GAAMmD,EAAOA,EAAOA,EAAOA,GAC/B,IAAI,GAAMA,EAAOkgH,EAAeC,EAAet6G,IAGvD,GAAIhJ,GAAK,EACL,MAAO,CACH,IAAI,GAAMmD,EAAOkgH,EAAeC,EAAet6G,GAC/C,IAAI,GAAMA,EAAKA,EAAKA,EAAKA,IAGjC,MAAM88G,EAAgBjkH,KAAKkkH,kBAAkB/lH,GACvCgmH,EAAgBF,EAAcG,mBAC9BC,EAAgBJ,EAAcK,mBAC9BhiB,EAAU2hB,EAAc3hB,QACxBiiB,EAAkBN,EAAcO,qBAChCC,EAAkBR,EAAcS,qBACtC,MAAO,CACH,IAAI,GAAMpjH,EAAO6iH,EAAeE,EAAe/hB,GAC/C,IAAI,GAAMA,EAASiiB,EAAiBE,EAAiBt9G,IAG7D,mBACI,OAAOnH,KAAKsB,MAAMuvD,SAAS7wD,KAAKmH,KAEpC,kBAAkBhJ,GACd,MAAMmD,EAAQtB,KAAKsB,MACbqjH,EAAW3kH,KAAKwhH,cAChBoD,EAAW5kH,KAAKyhH,cAChBt6G,EAAMnH,KAAKmH,IAEjB,GAAIhJ,GAAK,EACL,MAAO,CACHimH,mBAAoB9iH,EAAMmG,QAC1B68G,mBAAoBhjH,EAAMmG,QAC1B66F,QAAShhG,EAAMmG,QACf+8G,qBAAsBG,EAASl9G,QAC/Bi9G,qBAAsBE,EAASn9G,SAGvC,GAAItJ,GAAK,EACL,MAAO,CACHimH,mBAAoBO,EAASl9G,QAC7B68G,mBAAoBM,EAASn9G,QAC7B66F,QAASn7F,EAAIM,QACb+8G,qBAAsBr9G,EAAIM,QAC1Bi9G,qBAAsBv9G,EAAIM,SAGlC,MAAMo9G,EAAY,IAAI,GAAKvjH,EAAOqjH,GAAUhpD,QAAQx9D,GAC9C2mH,EAAY,IAAI,GAAKH,EAAUC,GAAUjpD,QAAQx9D,GACjD4mH,EAAY,IAAI,GAAKH,EAAUz9G,GAAKw0D,QAAQx9D,GAC5C6mH,EAAc,IAAI,GAAKH,EAAWC,GAAWnpD,QAAQx9D,GACrD8mH,EAAc,IAAI,GAAKH,EAAWC,GAAWppD,QAAQx9D,GAE3D,MAAO,CACHimH,mBAAoBS,EACpBP,mBAAoBU,EACpB1iB,QAJe,IAAI,GAAK0iB,EAAaC,GAAatpD,QAAQx9D,GAK1DqmH,qBAAsBS,EACtBP,qBAAsBK,GAG9B,gBAAgBplH,EAAU,IACtB,MAAM88C,EAAYz8C,KAAKqiH,aAAa1iH,GACpC,IAAI2iH,EAAe,CACf,IAAI,GAAMtiH,KAAKsB,MAAOtB,KAAKwhH,cAAexhH,KAAKyhH,cAAezhH,KAAKmH,MAEvE,GAAkB,IAAds1C,EACA,OAAO6lE,EAEX,IAAI6C,EAAiBnlH,KAAKqjH,mBAC1B,MAAMb,EAAiB16G,KAAK+3F,IAAI,IAAKpjD,GAGrC,IAAI2oE,EAAY,EAEhB,OAAa,CACTA,GAAa,EACb,MAAME,EAAY,GAClBhD,EAAan3E,QAAS7tC,IAElB,MAAMkmH,EAAUlmH,EAAE0rD,OAAO,IACzBs8D,EAAU9iH,KAAKghH,EAAQ,GAAIA,EAAQ,MAGvC,MAAM7hH,EAAS2jH,EAAU95E,OAAO,CAAC8B,EAAMhwC,IAAMgwC,EAAOhwC,EAAE+lH,mBAAoB,GAMpElnD,EAAmB,IAAXx6D,GAAgBA,EAASwjH,GAAkBxjH,EAAS,EAClE,GAAIyjH,EAAY,GAAKjpD,EAAQqmD,EACzB,OAAO8C,EAEXhD,EAAegD,EACfH,EAAiBxjH,GAGzB,OAAOhC,EAAU,IAEb,OADkBK,KAAKuiH,aAAa5iH,GACnB6rC,OAAO,CAAC8B,EAAMhwC,IACpBgwC,EAAOhwC,EAAE+lH,mBACjB,GAEP,UAAUllH,EAAGwB,EAAU,IACnB,GAAIxB,GAAK,EACL,OAAO,EAEX,MAAMs+C,OAAkCv6C,IAAtBvC,EAAQ88C,UAA0Bz8C,KAAK0hH,UAAY/hH,EAAQ88C,UAE7E,OADiBz8C,KAAKgpD,OAAO7qD,GAAG,GAChBwD,OAAO,CAAE86C,cAE7B,QAAQ0f,EAAOx8D,EAAU,IACrB,GAAIw8D,GAAS,EACT,OAAOn8D,KAAKsB,MAAMmG,QAEtB,GAAI00D,GAAS,EACT,OAAOn8D,KAAKmH,IAAIM,QAEpB,MAAMtJ,EAAI6B,KAAK+jH,IAAI5nD,EAAOx8D,GAC1B,OAAOK,KAAKiyG,SAAS9zG,GAEzB,cAAcwD,EAAQhC,EAAU,IAC5B,MAAMxB,EAAI6B,KAAKgkH,UAAUriH,EAAQhC,GACjC,OAAOK,KAAKiyG,SAAS9zG,GAEzB,SAASA,GACL,OAAIA,GAAK,EACE6B,KAAKsB,MAAMmG,QAElBtJ,GAAK,EACE6B,KAAKmH,IAAIM,QAEbzH,KAAKkkH,kBAAkB/lH,GAAGmkG,QAErC,mBACI,MAAMhhG,EAAQtB,KAAKsB,MACbqjH,EAAW3kH,KAAKwhH,cAChBoD,EAAW5kH,KAAKyhH,cAChBt6G,EAAMnH,KAAKmH,IACjB,QAAS7F,EAAMkzD,OAAOmwD,IAClBA,EAASnwD,OAAOowD,IAChBA,EAASpwD,OAAOrtD,IAExB,UAAUg1D,EAAOx8D,EAAU,IACvB,IAAKK,KAAKk7D,mBACN,OAAO,KACPiB,EAAQ,EACRA,EAAQ,EAEHA,EAAQ,IACbA,EAAQ,GAEZ,MAAMh+D,EAAI6B,KAAK+jH,IAAI5nD,EAAOx8D,GAC1B,OAAOK,KAAKkyG,WAAW/zG,GAE3B,gBAAgBwD,EAAQhC,EAAU,IAC9B,IAAKK,KAAKk7D,mBACN,OAAO,KAEX,MAAM/8D,EAAI6B,KAAKgkH,UAAUriH,EAAQhC,GACjC,OAAOK,KAAKkyG,WAAW/zG,GAE3B,WAAWA,GACP,IAAK6B,KAAKk7D,mBACN,OAAO,KAEP/8D,EAAI,IACJA,EAAI,GAEJA,EAAI,IACJA,EAAI,GAER,MAAMsnH,EAAiBzlH,KAAKkkH,kBAAkB/lH,GACxCm2D,EAAKmxD,EAAenB,mBACpB/vD,EAAKkxD,EAAejB,qBACpBpnD,EAAeqoD,EAAenjB,QAC9BjlC,EAAc,IAAI,GAAK/I,EAAIC,GAGjC,OADA8I,EAAYjK,UAAUgK,EAAa7qB,EAAI+hB,EAAG/hB,EAAG6qB,EAAa5qB,EAAI8hB,EAAG9hB,GAC1D6qB,EAEX,aAAa19D,EAAU,IACnB,OAA4B,MAArBA,EAAQ88C,UAAoBz8C,KAAK0hH,UAAY/hH,EAAQ88C,UAEhE,aAAa98C,EAAU,IACnB,GAA4B,MAAxBA,EAAQ2iH,aACR,OAAO3iH,EAAQ2iH,aAEnB,MAAM7lE,EAAYz8C,KAAKqiH,aAAa1iH,GACpC,OAAOK,KAAKklH,gBAAgB,CAAEzoE,cAElC,WAAW98C,EAAU,IAGjB,MAAO,CAAE88C,UAFSz8C,KAAKqiH,aAAa1iH,GAEhB2iH,aADCtiH,KAAKuiH,aAAa5iH,IAG3C,IAAIw8D,EAAOx8D,EAAU,IACjB,GAAIw8D,GAAS,EACT,OAAO,EAEX,GAAIA,GAAS,EACT,OAAO,EAEX,MAAM/iC,EAAOp5B,KAAKmiH,WAAWxiH,GAEvBgC,EADQ3B,KAAK2B,OAAOy3B,GACH+iC,EACvB,OAAOn8D,KAAKgkH,UAAUriH,EAAQy3B,GAElC,UAAUz3B,EAAQhC,EAAU,IACxB,IAAI08D,GAAY,EACZ16D,EAAS,IACT06D,GAAY,EACZ16D,GAAUA,GAEd,MAAM86C,EAAYz8C,KAAKqiH,aAAa1iH,GAC9B2iH,EAAetiH,KAAKuiH,aAAa5iH,GACjCy5B,EAAO,CAAEqjB,YAAW6lE,gBAC1B,IACII,EACAC,EAFAF,EAA0B,KAG1BiD,EAA6B,EAC7BC,EAA2B,EAC3Br4E,EAAO,EACX,MAAM1pB,EAAQ0+F,EAAa3gH,OAC3B,IAAIqhH,EAAQp/F,EAAQ,EAAI,EAAIA,EAAQ,EACpC,IAAK,IAAI3mB,EAAI,EAAGA,EAAI2mB,EAAO3mB,GAAK,EAAG,CAC/B,MAAMyE,EAAQ26D,EAAYp/D,EAAI2mB,EAAQ,EAAI3mB,EACpCgmH,EAAWX,EAAarlH,GACxB+zD,EAAOiyD,EAASI,mBACtB,GAAI1hH,GAAU2rC,EAAO0jB,EAAM,CACvByxD,EAA0BQ,EAC1BP,EAAgChhH,EAAQshH,EACxCL,GAA+BjhH,EAAQ,GAAKshH,EAC5C0C,EAA6BrpD,EACvB16D,EAAS2rC,EACT0jB,EAAO1jB,EAAO3rC,EACpBgkH,EAA2BtpD,EACrBrL,EAAO1jB,EAAO3rC,EACdA,EAAS2rC,EACf,MAEJA,GAAQ0jB,EAEZ,GAA+B,MAA3ByxD,EACA,OAAOpmD,EAAY,EAAI,EAK3B,MAAMtB,EAAQ/6D,KAAK2B,OAAOy3B,GACpBopF,EAAiB16G,KAAK+3F,IAAI,IAAKpjD,GAKrC,OAAa,CACT,IAAI0f,EAUAypD,EACAC,EATJ,GADA1pD,EAAkB,IAAVpB,EAAc2qD,EAA6B3qD,EAAQ,EACvDoB,EAAQqmD,EACR,OAAOE,EAGX,GADAvmD,EAAkB,IAAVpB,EAAc4qD,EAA2B5qD,EAAQ,EACrDoB,EAAQqmD,EACR,OAAOG,EAKX,MAAMa,EAAUf,EAAwBz5D,OAAO,IAC/Cg6D,GAAS,EACT,MAAM8C,EAAkBtC,EAAQ,GAAGH,mBAC7B0C,EAAkBvC,EAAQ,GAAGH,mBAC/BqC,GAA8BI,GAC9BrD,EAA0Be,EAAQ,GAClCb,GAA+BK,EAC/B4C,EAAgCF,EAChCG,EACIC,EAAkBF,IAGtBnD,EAA0Be,EAAQ,GAClCd,GAAiCM,EACjC4C,EACIF,EAA6BI,EACjCD,EACIE,EAAkBH,GAE1BF,EAA6BE,EAC7BD,EAA2BE,GAGnC,SAASlmH,EAAU,IACf,MAAM2iH,EAAetiH,KAAKuiH,aAAa5iH,GACjCm0D,EAAS,CAACwuD,EAAa,GAAGhhH,MAAMmG,SAEtC,OADA66G,EAAan3E,QAAS7tC,GAAMw2D,EAAOtxD,KAAKlF,EAAE6J,IAAIM,UACvCqsD,EAEX,WAAWn0D,EAAU,IACjB,OAAO,IAAI,GAASK,KAAKgmH,SAASrmH,IAEtC,MAAM+zD,EAAIC,EAAIC,GAKV,OAJA5zD,KAAKsB,MAAMujB,MAAM6uC,EAAIC,EAAIC,GACzB5zD,KAAKwhH,cAAc38F,MAAM6uC,EAAIC,EAAIC,GACjC5zD,KAAKyhH,cAAc58F,MAAM6uC,EAAIC,EAAIC,GACjC5zD,KAAKmH,IAAI0d,MAAM6uC,EAAIC,EAAIC,GAChB5zD,KAEX,OAAO00D,EAAOd,GAKV,OAJA5zD,KAAKsB,MAAMiyD,OAAOmB,EAAOd,GACzB5zD,KAAKwhH,cAAcjuD,OAAOmB,EAAOd,GACjC5zD,KAAKyhH,cAAcluD,OAAOmB,EAAOd,GACjC5zD,KAAKmH,IAAIosD,OAAOmB,EAAOd,GAChB5zD,KAEX,UAAU26D,EAAIC,GAaV,MAZkB,iBAAPD,GACP36D,KAAKsB,MAAM8xD,UAAUuH,EAAIC,GACzB56D,KAAKwhH,cAAcpuD,UAAUuH,EAAIC,GACjC56D,KAAKyhH,cAAcruD,UAAUuH,EAAIC,GACjC56D,KAAKmH,IAAIisD,UAAUuH,EAAIC,KAGvB56D,KAAKsB,MAAM8xD,UAAUuH,GACrB36D,KAAKwhH,cAAcpuD,UAAUuH,GAC7B36D,KAAKyhH,cAAcruD,UAAUuH,GAC7B36D,KAAKmH,IAAIisD,UAAUuH,IAEhB36D,KAEX,OAAO1C,GACH,OAAa,MAALA,GACJ0C,KAAKsB,MAAMkzD,OAAOl3D,EAAEgE,QACpBtB,KAAKwhH,cAAchtD,OAAOl3D,EAAEkkH,gBAC5BxhH,KAAKyhH,cAAcjtD,OAAOl3D,EAAEmkH,gBAC5BzhH,KAAKmH,IAAIqtD,OAAOl3D,EAAE6J,KAE1B,QACI,OAAO,IAAI,GAAMnH,KAAKsB,MAAOtB,KAAKwhH,cAAexhH,KAAKyhH,cAAezhH,KAAKmH,KAE9E,SACI,MAAO,CACH7F,MAAOtB,KAAKsB,MAAMyqD,SAClBy1D,cAAexhH,KAAKwhH,cAAcz1D,SAClC01D,cAAezhH,KAAKyhH,cAAc11D,SAClC5kD,IAAKnH,KAAKmH,IAAI4kD,UAGtB,YACI,MAAO,CACH/rD,KAAKsB,MAAMo+B,YACX1/B,KAAKwhH,cAAc9hF,YACnB1/B,KAAKyhH,cAAc/hF,YACnB1/B,KAAKmH,IAAIu4B,aACX1wB,KAAK,OAGJsyG,GA4BR,KAAU,GAAQ,KA3BXrjH,YAAc,eAAeqjH,GAAM9jH,KA0BzC8jH,GAAM4E,QAzBN,SAAiBhwD,GACb,GAAgB,MAAZA,EACA,OAAO,EAEX,GAAIA,aAAoBorD,GACpB,OAAO,EAEX,MAAM1vG,EAAMskD,EAASl4D,OAAOC,aACtBm8F,EAAQlkC,EACd,IACI,IAAY,MAAPtkD,GAAeA,IAAQ0vG,GAAMrjH,cAC9B,GAAMg4D,QAAQmkC,EAAM94F,QACpB,GAAM20D,QAAQmkC,EAAMonB,gBACpB,GAAMvrD,QAAQmkC,EAAMqnB,gBACpB,GAAMxrD,QAAQmkC,EAAMjzF,MACM,mBAAnBizF,EAAM4rB,UACe,mBAArB5rB,EAAM0pB,WACb,OAAO,EAGf,MAAOj2G,GACH,OAAO,EAEX,OAAO,GAIf,SAAWyzG,GACP,SAAS6E,EAAsBC,GAC3B,MAAM1nH,EAAI0nH,EAAIzkH,OACR4wC,EAAI,GACJ1gC,EAAM,GACZ,IAAI5G,EAAI,EACRsnC,EAAE,GAAK6zE,EAAI,GAAKn7G,EAEhB,IAAK,IAAIhO,EAAI,EAAGA,EAAIyB,EAAGzB,GAAK,EACxB4U,EAAI5U,GAAK,EAAIgO,EACbA,GAAKhO,EAAIyB,EAAI,EAAI,EAAM,KAAOmT,EAAI5U,GAClCs1C,EAAEt1C,IAAMmpH,EAAInpH,GAAKs1C,EAAEt1C,EAAI,IAAMgO,EAEjC,IAAK,IAAIhO,EAAI,EAAGA,EAAIyB,EAAGzB,GAAK,EAExBs1C,EAAE7zC,EAAIzB,EAAI,IAAM4U,EAAInT,EAAIzB,GAAKs1C,EAAE7zC,EAAIzB,GAEvC,OAAOs1C,EA6DX+uE,EAAM+E,cAbN,SAAuBvyD,GACnB,GAAc,MAAVA,GAAmB5yD,MAAMD,QAAQ6yD,IAAWA,EAAOnyD,OAAS,EAC5D,MAAM,IAAIqB,MAAM,kCAEpB,MAAMsjH,EAlDV,SAA+BxyD,GAC3B,MAAMyyD,EAAQzyD,EAAOvtD,IAAKxH,GAAM,GAAM0I,MAAM1I,IACtCynH,EAAqB,GACrBC,EAAsB,GACtB/nH,EAAI6nH,EAAM5kH,OAAS,EAEzB,GAAU,IAANjD,EAKA,OAHA8nH,EAAmB,GAAK,IAAI,IAAO,EAAID,EAAM,GAAGh0E,EAAIg0E,EAAM,GAAGh0E,GAAK,GAAI,EAAIg0E,EAAM,GAAG/zE,EAAI+zE,EAAM,GAAG/zE,GAAK,GAErGi0E,EAAoB,GAAK,IAAI,GAAM,EAAID,EAAmB,GAAGj0E,EAAIg0E,EAAM,GAAGh0E,EAAG,EAAIi0E,EAAmB,GAAGh0E,EAAI+zE,EAAM,GAAG/zE,GAC7G,CAACg0E,EAAoBC,GAIhC,MAAML,EAAM,GAEZ,IAAK,IAAInpH,EAAI,EAAGA,EAAIyB,EAAI,EAAGzB,GAAK,EAC5BmpH,EAAInpH,GAAK,EAAIspH,EAAMtpH,GAAGs1C,EAAI,EAAIg0E,EAAMtpH,EAAI,GAAGs1C,EAE/C6zE,EAAI,GAAKG,EAAM,GAAGh0E,EAAI,EAAIg0E,EAAM,GAAGh0E,EACnC6zE,EAAI1nH,EAAI,IAAM,EAAI6nH,EAAM7nH,EAAI,GAAG6zC,EAAIg0E,EAAM7nH,GAAG6zC,GAAK,EAEjD,MAAMA,EAAI4zE,EAAsBC,GAEhC,IAAK,IAAInpH,EAAI,EAAGA,EAAIyB,EAAI,EAAGzB,GAAK,EAC5BmpH,EAAInpH,GAAK,EAAIspH,EAAMtpH,GAAGu1C,EAAI,EAAI+zE,EAAMtpH,EAAI,GAAGu1C,EAE/C4zE,EAAI,GAAKG,EAAM,GAAG/zE,EAAI,EAAI+zE,EAAM,GAAG/zE,EACnC4zE,EAAI1nH,EAAI,IAAM,EAAI6nH,EAAM7nH,EAAI,GAAG8zC,EAAI+zE,EAAM7nH,GAAG8zC,GAAK,EAEjD,MAAMA,EAAI2zE,EAAsBC,GAEhC,IAAK,IAAInpH,EAAI,EAAGA,EAAIyB,EAAGzB,GAAK,EAExBupH,EAAmBhkH,KAAK,IAAI,GAAM+vC,EAAEt1C,GAAIu1C,EAAEv1C,KAEtCA,EAAIyB,EAAI,EACR+nH,EAAoBjkH,KAAK,IAAI,GAAM,EAAI+jH,EAAMtpH,EAAI,GAAGs1C,EAAIA,EAAEt1C,EAAI,GAAI,EAAIspH,EAAMtpH,EAAI,GAAGu1C,EAAIA,EAAEv1C,EAAI,KAG7FwpH,EAAoBjkH,KAAK,IAAI,IAAO+jH,EAAM7nH,GAAG6zC,EAAIA,EAAE7zC,EAAI,IAAM,GAAI6nH,EAAM7nH,GAAG8zC,EAAIA,EAAE9zC,EAAI,IAAM,IAGlG,MAAO,CAAC8nH,EAAoBC,GAMNC,CAAsB5yD,GACtC6yD,EAAS,GACf,IAAK,IAAI1pH,EAAI,EAAG25D,EAAK0vD,EAAc,GAAG3kH,OAAQ1E,EAAI25D,EAAI35D,GAAK,EAAG,CAC1D,MAAMukH,EAAgB,IAAI,GAAM8E,EAAc,GAAGrpH,GAAGs1C,EAAG+zE,EAAc,GAAGrpH,GAAGu1C,GACrEivE,EAAgB,IAAI,GAAM6E,EAAc,GAAGrpH,GAAGs1C,EAAG+zE,EAAc,GAAGrpH,GAAGu1C,GAC3Em0E,EAAOnkH,KAAK,IAAI8+G,EAAMxtD,EAAO72D,GAAIukH,EAAeC,EAAe3tD,EAAO72D,EAAI,KAE9E,OAAO0pH,GA5Ef,CA+EG,KAAU,GAAQ,KOxsBd,MAAM,WAAgB3wD,GACzB,cACI2oB,SAASl4E,WACTzG,KAAKyxG,WAAY,EACjBzxG,KAAK0xG,WAAY,EACjB1xG,KAAK2xG,gBAAiB,EAE1B,UACI,OAAO3xG,KAAK4xG,SAEhB,YACI,GAA4B,MAAxB5xG,KAAK6xG,gBACL,MAAM,IAAI7uG,MAAM,gIAIpB,OAAOhD,KAAK6xG,gBAAgB1qG,IAEhC,cAAcpI,EAAGY,GACb,GAAIK,KAAK47D,6BACL,OAAO57D,KAAK47D,6BAA6B78D,GAE7C,MAAM,IAAIiE,MAAM,qFAGpB,UAAU7E,EAAGwB,GACT,GAAIxB,GAAK,EACL,OAAO,EAEX,MAAMwD,EAAS3B,KAAK2B,SACpB,OAAIxD,GAAK,EACEwD,EAEJA,EAASxD,EAEpB,UAAUA,GACN,GAAI6B,KAAKu8D,SACL,OAAOv8D,KAAKu8D,SAASp+D,GAEzB,MAAM,IAAI6E,MAAM,6DAEpB,SAAS7E,GACL,GAAI6B,KAAK27D,QACL,OAAO37D,KAAK27D,QAAQx9D,GAExB,MAAM,IAAI6E,MAAM,2DAEpB,WAAW7E,GACP,GAAI6B,KAAK+7D,UACL,OAAO/7D,KAAK+7D,UAAU59D,GAE1B,MAAM,IAAI6E,MAAM,gENjDjB,MAAM,WAAe,GACxB,YAAYuvC,EAAGC,GACXmsC,QACI,GAAK9gB,OAAOtrB,GACZvyC,KAAK4xG,SAAWr/D,EAAEprC,IAAIM,QAAQmrB,MAAM,GAGpC5yB,KAAK4xG,SAAW,GAAMrzG,OAAOg0C,EAAGC,GAAG5f,MAAM,GAGjD,WACI,MAAO,IAEX,WACI,OAAO,IAAI,GAAK5yB,KAAKsB,MAAOtB,KAAKmH,KAErC,OACI,OAAOnH,KAAKi7D,KAAKM,OAErB,aAAax8D,GACT,OAAOiB,KAAKi7D,KAAKS,aAAa38D,GAElC,mBAAmBA,GACf,OAAOiB,KAAKi7D,KAAKY,mBAAmB98D,GAExC,6BAA6BA,GACzB,OAAOiB,KAAKi7D,KAAKW,6BAA6B78D,GAElD,oBAAoBA,GAChB,OAAOiB,KAAKi7D,KAAKa,oBAAoB/8D,GAEzC,SACI,OAAOiB,KAAKi7D,KAAKt5D,SAErB,SAASw6D,GACL,MAAMqnD,EAAUxjH,KAAKi7D,KAAKsB,SAASJ,GACnC,MAAO,CAAC,IAAI,GAAOqnD,EAAQ,IAAK,IAAI,GAAOA,EAAQ,KAEvD,eAAe7hH,GACX,MAAM6hH,EAAUxjH,KAAKi7D,KAAKwB,eAAe96D,GACzC,MAAO,CAAC,IAAI,GAAO6hH,EAAQ,IAAK,IAAI,GAAOA,EAAQ,KAEvD,kBACI,MAAO,GAEX,QAAQrnD,GACJ,OAAOn8D,KAAKi7D,KAAKU,QAAQQ,GAE7B,cAAcx6D,GACV,OAAO3B,KAAKi7D,KAAKmB,cAAcz6D,GAEnC,UAAUw6D,GACN,OAAOn8D,KAAKi7D,KAAKc,UAAUI,GAE/B,gBAAgBx6D,GACZ,OAAO3B,KAAKi7D,KAAKqC,gBAAgB37D,GAErC,mBACI,OAA4B,MAAxB3B,KAAK6xG,kBAGD7xG,KAAKsB,MAAMkzD,OAAOx0D,KAAKmH,KAEnC,QACI,OAAO,IAAI,GAAOnH,KAAKmH,KAE3B,MAAMusD,EAAIC,EAAIC,GAEV,OADA5zD,KAAKmH,IAAI0d,MAAM6uC,EAAIC,EAAIC,GAChB5zD,KAEX,OAAO00D,EAAOd,GAEV,OADA5zD,KAAKmH,IAAIosD,OAAOmB,EAAOd,GAChB5zD,KAEX,UAAU26D,EAAIC,GAOV,MANkB,iBAAPD,EACP36D,KAAKmH,IAAIisD,UAAUuH,EAAIC,GAGvB56D,KAAKmH,IAAIisD,UAAUuH,GAEhB36D,KAEX,OAAOhB,GACH,OAAQgB,KAAKuB,OAASvC,EAAEuC,MACpBvB,KAAKsB,MAAMkzD,OAAOx1D,EAAEsC,QACpBtB,KAAKmH,IAAIqtD,OAAOx1D,EAAEmI,KAE1B,SACI,MAAO,CACH5F,KAAMvB,KAAKuB,KACXD,MAAOtB,KAAKsB,MAAMyqD,SAClB5kD,IAAKnH,KAAKmH,IAAI4kD,UAGtB,YACI,MAAM5kD,EAAMnH,KAAKmH,IACjB,MAAO,GAAGnH,KAAKuB,QAAQ4F,EAAIorC,KAAKprC,EAAIqrC,MAGjCmpF,GA8BR,KAAW,GAAS,KADZp9H,OA5BP,YAAmB4W,GACf,MAAMlO,EAAMkO,EAAKxT,OACXi6H,EAAOzmH,EAAK,GAElB,GAAI,GAAK0oD,OAAO+9D,GACZ,OAAO,IAAID,GAAOC,GAGtB,GAAI,GAAMxlE,YAAYwlE,GAClB,OAAY,IAAR30H,EACO,IAAI00H,GAAOC,GAGfzmH,EAAK5O,IAAKyC,GAAQ,IAAI2yH,GAAO3yH,IAGxC,GAAY,IAAR/B,EACA,OAAO,IAAI00H,IAAQxmH,EAAK,IAAKA,EAAK,IAGtC,MAAM4nE,EAAW,GACjB,IAAK,IAAI9/E,EAAI,EAAGA,EAAIgK,EAAKhK,GAAK,EAAG,CAC7B,MAAMs1C,GAAKp9B,EAAKlY,GACVu1C,GAAKr9B,EAAKlY,EAAI,GACpB8/E,EAASv6E,KAAK,IAAIm5H,GAAOppF,EAAGC,IAEhC,OAAOuqC,GC/HR,MAAM,WAAc,GACvB,UACI,IAAK/8E,KAAK2kL,oBACN,MAAM,IAAI3hL,MAAM,2IAIpB,OAAOhD,KAAK2kL,oBAAoBx9K,IAEpC,WACI,MAAO,IAEX,WACI,OAAO,IAAI,GAAKnH,KAAKsB,MAAOtB,KAAKmH,KAErC,OACI,OAAOnH,KAAKi7D,KAAKM,OAErB,aAAax8D,GACT,OAAOiB,KAAKi7D,KAAKS,aAAa38D,GAElC,mBAAmBA,GACf,OAAOiB,KAAKi7D,KAAKY,mBAAmB98D,GAExC,6BAA6BA,GACzB,OAAOiB,KAAKi7D,KAAKW,6BAA6B78D,GAElD,oBAAoBA,GAChB,OAAOiB,KAAKi7D,KAAKa,oBAAoB/8D,GAEzC,SACI,OAAOiB,KAAKi7D,KAAKt5D,SAErB,SAASw6D,GACL,MAAMqnD,EAAUxjH,KAAKi7D,KAAKsB,SAASJ,GACnC,MAAO,CAEHqnD,EAAQ,GAAGtoD,mBAAqB,IAAI,GAAOsoD,EAAQ,IAAMxjH,KAAKyH,QAC9D,IAAI,GAAO+7G,EAAQ,KAG3B,eAAe7hH,GACX,MAAM6hH,EAAUxjH,KAAKi7D,KAAKwB,eAAe96D,GACzC,MAAO,CACH6hH,EAAQ,GAAGtoD,mBAAqB,IAAI,GAAOsoD,EAAQ,IAAMxjH,KAAKyH,QAC9D,IAAI,GAAO+7G,EAAQ,KAG3B,kBACI,MAAO,GAEX,QAAQrnD,GACJ,OAAOn8D,KAAKi7D,KAAKU,QAAQQ,GAE7B,cAAcx6D,GACV,OAAO3B,KAAKi7D,KAAKmB,cAAcz6D,GAEnC,UAAUw6D,GACN,OAAOn8D,KAAKi7D,KAAKc,UAAUI,GAE/B,gBAAgBx6D,GACZ,OAAO3B,KAAKi7D,KAAKqC,gBAAgB37D,GAErC,mBACI,SAAK3B,KAAK6xG,kBAAoB7xG,KAAK2kL,uBAG3B3kL,KAAKsB,MAAMkzD,OAAOx0D,KAAKmH,KAEnC,QACI,OAAOnH,KAEX,SACI,OAAOA,KAEX,YACI,OAAOA,KAEX,OAAOhB,GACH,OAAQgB,KAAKuB,OAASvC,EAAEuC,MACpBvB,KAAKsB,MAAMkzD,OAAOx1D,EAAEsC,QACpBtB,KAAKmH,IAAIqtD,OAAOx1D,EAAEmI,KAE1B,QACI,OAAO,IAAI,GAEf,SACI,MAAO,CACH5F,KAAMvB,KAAKuB,KACXD,MAAOtB,KAAKsB,MAAMyqD,SAClB5kD,IAAKnH,KAAKmH,IAAI4kD,UAGtB,YACI,OAAO/rD,KAAKuB,OAGT4hL,GAKR,KAAU,GAAQ,KADX5kL,OAHN,WACI,OAAO,IAAI4kL,ICjGZ,MAAM,WAAe,GACxB,YAAY5wI,EAAGC,GACXmsC,QACA3+E,KAAKyxG,WAAY,EACjBzxG,KAAK2xG,gBAAiB,EAClB,GAAK9zC,OAAOtrB,IAAM,GAAM2zE,QAAQ3zE,GAChCvyC,KAAK4xG,SAAWr/D,EAAEprC,IAAIM,QAAQmrB,MAAM,GAGpC5yB,KAAK4xG,SAAW,GAAMrzG,OAAOg0C,EAAGC,GAAG5f,MAAM,GAGjD,YACI,MAAM,IAAI5vB,MAAM,qEAEpB,WACI,MAAO,IAEX,OACI,OAAO,KAEX,eACI,OAAOhD,KAAKmH,IAAIM,QAEpB,qBACI,OAAO,EAEX,+BACI,OAAO,EAEX,gBACI,OAAO,EAEX,sBACI,OAAO,KAEX,SACI,OAAO,EAEX,YACI,OAAO,EAEX,WACI,MAAO,CAACzH,KAAKyH,QAASzH,KAAKyH,SAE/B,iBACI,MAAO,CAACzH,KAAKyH,QAASzH,KAAKyH,SAE/B,kBACI,MAAO,GAEX,UACI,OAAOzH,KAAKmH,IAAIM,QAEpB,gBACI,OAAOzH,KAAKmH,IAAIM,QAEpB,WACI,OAAOzH,KAAKmH,IAAIM,QAEpB,YACI,OAAO,KAEX,kBACI,OAAO,KAEX,aACI,OAAO,KAEX,mBACI,OAAO,EAEX,MAAMisD,EAAIC,EAAIC,GAEV,OADA5zD,KAAKmH,IAAI0d,MAAM6uC,EAAIC,EAAIC,GAChB5zD,KAEX,OAAO00D,EAAOd,GAEV,OADA5zD,KAAKmH,IAAIosD,OAAOmB,EAAOd,GAChB5zD,KAEX,UAAU26D,EAAIC,GAOV,MANkB,iBAAPD,EACP36D,KAAKmH,IAAIisD,UAAUuH,EAAIC,GAGvB56D,KAAKmH,IAAIisD,UAAUuH,GAEhB36D,KAEX,QACI,OAAO,IAAI,GAAOA,KAAKmH,KAE3B,OAAOnI,GACH,OAAOgB,KAAKuB,OAASvC,EAAEuC,MAAQvB,KAAKmH,IAAIqtD,OAAOx1D,EAAEmI,KAErD,SACI,MAAO,CACH5F,KAAMvB,KAAKuB,KACX4F,IAAKnH,KAAKmH,IAAI4kD,UAGtB,YACI,MAAM5kD,EAAMnH,KAAKmH,IACjB,MAAO,GAAGnH,KAAKuB,QAAQ4F,EAAIorC,KAAKprC,EAAIqrC,MAGjCiwI,GAiDR,KAAW,GAAS,KADZlkL,OA/CP,YAAmB4W,GACf,MAAMlO,EAAMkO,EAAKxT,OACXi6H,EAAOzmH,EAAK,GAElB,GAAI,GAAK0oD,OAAO+9D,GACZ,OAAO,IAAI6mD,GAAO7mD,GAGtB,GAAI,GAAM1V,QAAQ0V,GACd,OAAO,IAAI6mD,GAAO7mD,GAGtB,GAAI,GAAMxlE,YAAYwlE,GAAO,CACzB,GAAY,IAAR30H,EACA,OAAO,IAAIw7K,GAAO7mD,GAGtB,MAAM7+C,EAAW,GAEjB,IAAK,IAAI9/E,EAAI,EAAGA,EAAIgK,EAAKhK,GAAK,EAChB,IAANA,EACA8/E,EAASv6E,KAAK,IAAIigL,GAAOttK,EAAKlY,KAG9B8/E,EAASv6E,KAAK,IAAI,GAAO2S,EAAKlY,KAGtC,OAAO8/E,EAGX,GAAY,IAAR91E,EACA,OAAO,IAAIw7K,IAAQttK,EAAK,IAAKA,EAAK,IAGtC,MAAM4nE,EAAW,GACjB,IAAK,IAAI9/E,EAAI,EAAGA,EAAIgK,EAAKhK,GAAK,EAAG,CAC7B,MAAMs1C,GAAKp9B,EAAKlY,GACVu1C,GAAKr9B,EAAKlY,EAAI,GACV,IAANA,EACA8/E,EAASv6E,KAAK,IAAIigL,GAAOlwI,EAAGC,IAG5BuqC,EAASv6E,KAAK,IAAI,GAAO+vC,EAAGC,IAGpC,OAAOuqC,GC1JR,MAAM,WAAgB,GACzB,YAAY6+C,EAAM+qD,EAAMC,EAAMC,EAAMC,EAAMC,GACtCpoG,QACI,GAAMunC,QAAQ0V,IACd57H,KAAKwhH,cAAgBoa,EAAKpa,cAAc/5G,QAAQmrB,MAAM,GACtD5yB,KAAKyhH,cAAgBma,EAAKna,cAAch6G,QAAQmrB,MAAM,GACtD5yB,KAAK4xG,SAAWgqB,EAAKz0H,IAAIM,QAAQmrB,MAAM,IAElB,iBAATgpG,GACZ57H,KAAKwhH,cAAgB,IAAI,GAAMoa,EAAM+qD,GAAM/zJ,MAAM,GACjD5yB,KAAKyhH,cAAgB,IAAI,GAAMmlE,EAAMC,GAAMj0J,MAAM,GACjD5yB,KAAK4xG,SAAW,IAAI,GAAMk1E,EAAMC,GAAMn0J,MAAM,KAG5C5yB,KAAKwhH,cAAgB,GAAMjjH,OAAOq9H,GAAMhpG,MAAM,GAC9C5yB,KAAKyhH,cAAgB,GAAMljH,OAAOooL,GAAM/zJ,MAAM,GAC9C5yB,KAAK4xG,SAAW,GAAMrzG,OAAOqoL,GAAMh0J,MAAM,IAGjD,WACI,MAAO,IAEX,YACI,OAAO,IAAI,GAAM5yB,KAAKsB,MAAOtB,KAAKwhH,cAAexhH,KAAKyhH,cAAezhH,KAAKmH,KAE9E,OACI,OAAOnH,KAAKo6F,MAAM7+B,OAEtB,aAAax8D,GACT,OAAOiB,KAAKo6F,MAAM1+B,aAAa38D,GAEnC,mBAAmBA,GACf,OAAOiB,KAAKo6F,MAAMv+B,mBAAmB98D,GAEzC,6BAA6BA,GACzB,OAAOiB,KAAKo6F,MAAMx+B,6BAA6B78D,GAEnD,oBAAoBA,GAChB,OAAOiB,KAAKo6F,MAAMt+B,oBAAoB/8D,GAE1C,SACI,OAAOiB,KAAKo6F,MAAMz4F,SAEtB,SAASw6D,EAAOx8D,EAAU,IAEtB,MAAM6jH,EAAUxjH,KAAKo6F,MAAM79B,SAASJ,EAAOx8D,GAC3C,MAAO,CAAC,IAAI,GAAQ6jH,EAAQ,IAAK,IAAI,GAAQA,EAAQ,KAEzD,eAAe7hH,EAAQhC,EAAU,IAE7B,MAAM6jH,EAAUxjH,KAAKo6F,MAAM39B,eAAe96D,EAAQhC,GAClD,MAAO,CAAC,IAAI,GAAQ6jH,EAAQ,IAAK,IAAI,GAAQA,EAAQ,KAEzD,UAAUrlH,GACN,MAAMqlH,EAAUxjH,KAAKo6F,MAAM4X,UAAU7zG,GACrC,MAAO,CAAC,IAAI,GAAQqlH,EAAQ,IAAK,IAAI,GAAQA,EAAQ,KAEzD,kBACI,MAAO,GAEX,QAAQrnD,GACJ,OAAOn8D,KAAKo6F,MAAMz+B,QAAQQ,GAE9B,cAAcx6D,GACV,OAAO3B,KAAKo6F,MAAMh+B,cAAcz6D,GAEpC,UAAUw6D,GACN,OAAOn8D,KAAKo6F,MAAMr+B,UAAUI,GAEhC,gBAAgBx6D,GACZ,OAAO3B,KAAKo6F,MAAM98B,gBAAgB37D,GAEtC,mBACI,IAAK3B,KAAK6xG,gBACN,OAAO,EAEX,MAAMvwG,EAAQtB,KAAKsB,MACbqjH,EAAW3kH,KAAKwhH,cAChBoD,EAAW5kH,KAAKyhH,cAChBt6G,EAAMnH,KAAKmH,IACjB,QAAS7F,EAAMkzD,OAAOmwD,IAClBA,EAASnwD,OAAOowD,IAChBA,EAASpwD,OAAOrtD,IAExB,MAAMusD,EAAIC,EAAIC,GAIV,OAHA5zD,KAAKwhH,cAAc38F,MAAM6uC,EAAIC,EAAIC,GACjC5zD,KAAKyhH,cAAc58F,MAAM6uC,EAAIC,EAAIC,GACjC5zD,KAAKmH,IAAI0d,MAAM6uC,EAAIC,EAAIC,GAChB5zD,KAEX,OAAO00D,EAAOd,GAIV,OAHA5zD,KAAKwhH,cAAcjuD,OAAOmB,EAAOd,GACjC5zD,KAAKyhH,cAAcluD,OAAOmB,EAAOd,GACjC5zD,KAAKmH,IAAIosD,OAAOmB,EAAOd,GAChB5zD,KAEX,UAAU26D,EAAIC,GAWV,MAVkB,iBAAPD,GACP36D,KAAKwhH,cAAcpuD,UAAUuH,EAAIC,GACjC56D,KAAKyhH,cAAcruD,UAAUuH,EAAIC,GACjC56D,KAAKmH,IAAIisD,UAAUuH,EAAIC,KAGvB56D,KAAKwhH,cAAcpuD,UAAUuH,GAC7B36D,KAAKyhH,cAAcruD,UAAUuH,GAC7B36D,KAAKmH,IAAIisD,UAAUuH,IAEhB36D,KAEX,OAAOhB,GACH,OAAQgB,KAAKsB,MAAMkzD,OAAOx1D,EAAEsC,QACxBtB,KAAKmH,IAAIqtD,OAAOx1D,EAAEmI,MAClBnH,KAAKwhH,cAAchtD,OAAOx1D,EAAEwiH,gBAC5BxhH,KAAKyhH,cAAcjtD,OAAOx1D,EAAEyiH,eAEpC,QACI,OAAO,IAAI,GAAQzhH,KAAKwhH,cAAexhH,KAAKyhH,cAAezhH,KAAKmH,KAEpE,SACI,MAAO,CACH5F,KAAMvB,KAAKuB,KACXD,MAAOtB,KAAKsB,MAAMyqD,SAClBy1D,cAAexhH,KAAKwhH,cAAcz1D,SAClC01D,cAAezhH,KAAKyhH,cAAc11D,SAClC5kD,IAAKnH,KAAKmH,IAAI4kD,UAGtB,YACI,MAAMonF,EAAKnzI,KAAKwhH,cACVwlE,EAAKhnL,KAAKyhH,cACVt6G,EAAMnH,KAAKmH,IACjB,MAAO,CAACnH,KAAKuB,KAAM4xI,EAAG5gG,EAAG4gG,EAAG3gG,EAAGw0I,EAAGz0I,EAAGy0I,EAAGx0I,EAAGrrC,EAAIorC,EAAGprC,EAAIqrC,GAAGxjC,KAAK,MIrItE,SAAS,GAAOujC,EAAGC,EAAG2hB,GAClB,MAAO,CACH5hB,EAAGA,EAAIzqC,KAAK8vB,IAAIu8B,GAAO3hB,EAAI1qC,KAAK0tD,IAAIrB,GACpC3hB,EAAGD,EAAIzqC,KAAK0tD,IAAIrB,GAAO3hB,EAAI1qC,KAAK8vB,IAAIu8B,IAG5C,SAAS8yH,GAAIpwH,EAAIN,EAAI2wH,EAAIC,EAAIrwH,EAAIC,GAG7B,MAAO,CAFK,EAAI,EAGNF,EAFE,EAAI,EAEKqwH,EAHT,EAAI,EAIN3wH,EAHE,EAAI,EAGK4wH,EAJT,EAAI,EAKNrwH,EAJE,EAAI,EAIKowH,EALT,EAAI,EAMNnwH,EALE,EAAI,EAKKowH,EACjBrwH,EACAC,GAGR,SAASqwH,GAAIvwH,EAAIN,EAAIwoC,EAAIC,EAAItqC,EAAOmuH,EAAcC,EAAWhsH,EAAIC,EAAImmE,GAGjE,MAAMoqD,EAAkB,IAAVx/K,KAAK+vB,GAAY,IACzBs8B,EAAOrsD,KAAK+vB,GAAK,MAAS68B,GAAS,GACzC,IACI2yH,EACAptG,EACAC,EACA8iB,EACAC,EALAp7B,EAAM,GAMV,GAAKq7D,EAuCDjjD,EAAKijD,EAAU,GACfhjD,EAAKgjD,EAAU,GACflgC,EAAKkgC,EAAU,GACfjgC,EAAKigC,EAAU,OA1CH,CACZmqD,EAAK,GAAOxwH,EAAIN,GAAKpC,GACrB0C,EAAKwwH,EAAG90I,EACRgkB,EAAK8wH,EAAG70I,EACR60I,EAAK,GAAOvwH,EAAIC,GAAK5C,GAGrB,MAAM5hB,GAAKskB,GAFXC,EAAKuwH,EAAG90I,IAEc,EAChBC,GAAK+jB,GAFXQ,EAAKswH,EAAG70I,IAEc,EACtB,IAAI3xC,EAAK0xC,EAAIA,GAAMwsD,EAAKA,GAAOvsD,EAAIA,GAAMwsD,EAAKA,GAC1Cn+F,EAAI,IACJA,EAAIiH,KAAK2rC,KAAK5yC,GACdk+F,GAAKl+F,EACLm+F,GAAKn+F,GAET,MAAM0mL,EAAMxoF,EAAKA,EACXyoF,EAAMxoF,EAAKA,EACXtsC,GAAKmwH,IAAiBC,GAAa,EAAI,GACzCh7K,KAAK2rC,KAAK3rC,KAAKinC,KAAKw4I,EAAMC,EAAMD,EAAM/0I,EAAIA,EAAIg1I,EAAMj1I,EAAIA,IAAMg1I,EAAM/0I,EAAIA,EAAIg1I,EAAMj1I,EAAIA,KAC1FyqD,EAAMtqC,EAAIqsC,EAAKvsD,EAAKwsD,GAAMnoC,EAAKC,GAAM,EACrCmmC,EAAMvqC,GAAKssC,EAAKzsD,EAAKwsD,GAAMxoC,EAAKQ,GAAM,EACtCkjB,EAAKnyE,KAAKi1J,MAAMxmG,EAAK0mC,GAAM+B,GAC3B9kB,EAAKpyE,KAAKi1J,MAAMhmG,EAAKkmC,GAAM+B,GAC3B/kB,EAAKpjB,EAAKmmC,EAAKl1F,KAAK+vB,GAAKoiD,EAAKA,EAC9BC,EAAKpjB,EAAKkmC,EAAKl1F,KAAK+vB,GAAKqiD,EAAKA,EAC1BD,EAAK,IACLA,EAAe,EAAVnyE,KAAK+vB,GAASoiD,GAEnBC,EAAK,IACLA,EAAe,EAAVpyE,KAAK+vB,GAASqiD,GAEnB4oG,GAAa7oG,EAAKC,IAClBD,GAAgB,EAAVnyE,KAAK+vB,KAEVirJ,GAAa5oG,EAAKD,IACnBC,GAAgB,EAAVpyE,KAAK+vB,IASnB,IAAIm7G,EAAK94D,EAAKD,EACd,GAAInyE,KAAKinC,IAAIikG,GAAMs0C,EAAM,CACrB,MAAMG,EAAQvtG,EACRwtG,EAAQ5wH,EACR6wH,EAAQ5wH,EACdmjB,EAAKD,EAAKqtG,GAAQxE,GAAa5oG,EAAKD,EAAK,GAAK,GAG9CpY,EAAMulH,GAFNtwH,EAAKkmC,EAAK+B,EAAKj3F,KAAK8vB,IAAIsiD,GACxBnjB,EAAKkmC,EAAK+B,EAAKl3F,KAAK0tD,IAAI0kB,GACN6kB,EAAIC,EAAItqC,EAAO,EAAGouH,EAAW4E,EAAOC,EAAO,CACzDztG,EACAutG,EACAzqF,EACAC,IAGR+1C,EAAK94D,EAAKD,EACV,MAAMk5D,EAAKrrI,KAAK8vB,IAAIqiD,GACdm5D,EAAKtrI,KAAK0tD,IAAIykB,GACd+sG,EAAKl/K,KAAK8vB,IAAIsiD,GACd0tG,EAAK9/K,KAAK0tD,IAAI0kB,GACd/7E,EAAI2J,KAAK+/K,IAAI70C,EAAK,GAClB80C,EAAM,EAAI,GAAM/oF,EAAK5gG,GACrB4pL,EAAM,EAAI,GAAM/oF,EAAK7gG,GACrBu6F,EAAK,CAAC7hC,EAAIN,GACVoiC,EAAK,CAAC9hC,EAAKixH,EAAK10C,EAAI78E,EAAKwxH,EAAK50C,GAC9B60C,EAAK,CAAClxH,EAAKgxH,EAAKF,EAAI7wH,EAAKgxH,EAAKf,GAC9BiB,EAAK,CAACnxH,EAAIC,GAGhB,GAFA4hC,EAAG,GAAK,EAAID,EAAG,GAAKC,EAAG,GACvBA,EAAG,GAAK,EAAID,EAAG,GAAKC,EAAG,GACnBukC,EACA,MAAO,CAACvkC,EAAIqvF,EAAIC,GAAIjnL,OAAO6gE,GAE/B,CACIA,EAAM,CAAC82B,EAAIqvF,EAAIC,GAAIjnL,OAAO6gE,GAAK7yD,OAAO7F,MAAM,KAC5C,MAAM++K,EAAS,GACTtxH,EAAKiL,EAAIlgE,OACf,IAAK,IAAI1E,EAAI,EAAGA,EAAI25D,EAAI35D,GAAK,EACzBirL,EAAOjrL,GACHA,EAAI,EACE,IAAQ4kE,EAAI5kE,EAAI,IAAK4kE,EAAI5kE,GAAIk3D,GAAK3hB,EAClC,IAAQqvB,EAAI5kE,IAAK4kE,EAAI5kE,EAAI,GAAIk3D,GAAK5hB,EAEhD,OAAO21I,GAqDf,SAASn5I,GAAIo5I,GACT,MAAMC,EAnDV,SAAex1I,GACX,IAAKA,EACD,OAAO,KAEX,MAAMy1I,EAAS,2CAETC,EAAa,IAAI38K,OAAO,WAAW08K,yCAA8CA,SAAcA,SACrG,MAEME,EAAkB,IAAI58K,OAE5B,qCAAqC08K,SAAcA,MAAY,MACzDG,EAAc,CAChBx9K,EAAG,EACH1N,EAAG,EACHuD,EAAG,EACH3D,EAAG,EACHG,EAAG,EACHorL,EAAG,EACHzpL,EAAG,EACHb,EAAG,EACHie,EAAG,EACHi0F,EAAG,GAEDq4E,EAAW,GAwBjB,OAvBA91I,EAAS5qC,QAAQsgL,EAAY,CAACx2K,EAAOksF,EAAK7oF,KACtC,MAAM8yB,EAAS,GACf,IAAI0gJ,EAAU3qF,EAAI30F,cAClB8L,EAAKnN,QAAQugL,EAAiB,CAACv9K,EAAGC,KAC1BA,GACAg9B,EAAOzlC,MAAMyI,GAEVD,IAEK,MAAZ29K,GAAmB1gJ,EAAOtmC,OAAS,IACnC+mL,EAASlmL,KAAK,CAACw7F,KAAQ/1D,EAAO5gC,OAAO,EAAG,KACxCshL,EAAU,IACV3qF,EAAc,MAARA,EAAc,IAAM,KAE9B,MAAMp6E,EAAQ4kK,EAAYG,GAC1B,KAAO1gJ,EAAOtmC,QAAUiiB,IACpB8kK,EAASlmL,KAAK,CAACw7F,KAAQ/1D,EAAO5gC,OAAO,EAAGuc,KACnCA,KAIT,OAAO9R,IAEJ42K,EAGW,CAAMP,GAExB,IAAKC,IAAcA,EAAUzmL,OACzB,MAAO,CAAC,CAAC,IAAK,EAAG,IAErB,IAAI4wC,EAAI,EACJC,EAAI,EACJo2I,EAAK,EACLC,EAAK,EACT,MAAM9rG,EAAW,GACjB,IAAK,IAAI9/E,EAAI,EAAG25D,EAAKwxH,EAAUzmL,OAAQ1E,EAAI25D,EAAI35D,GAAK,EAAG,CACnD,MAAMc,EAAI,GACVg/E,EAASv6E,KAAKzE,GACd,MAAMi7H,EAAUovD,EAAUnrL,GACpB0rL,EAAU3vD,EAAQ,GACxB,GAAI2vD,IAAYA,EAAQ7mK,cAEpB,OADA/jB,EAAE,GAAK4qL,EAAQ7mK,cACP/jB,EAAE,IACN,IAAK,IACDA,EAAE,GAAKi7H,EAAQ,GACfj7H,EAAE,GAAKi7H,EAAQ,GACfj7H,EAAE,GAAKi7H,EAAQ,GACfj7H,EAAE,GAAKi7H,EAAQ,GACfj7H,EAAE,GAAKi7H,EAAQ,GACfj7H,EAAE,IAAMi7H,EAAQ,GAAKzmF,EACrBx0C,EAAE,IAAMi7H,EAAQ,GAAKxmF,EACrB,MACJ,IAAK,IACDz0C,EAAE,IAAMi7H,EAAQ,GAAKxmF,EACrB,MACJ,IAAK,IACDz0C,EAAE,IAAMi7H,EAAQ,GAAKzmF,EACrB,MACJ,IAAK,IACDq2I,GAAM5vD,EAAQ,GAAKzmF,EACnBs2I,GAAM7vD,EAAQ,GAAKxmF,EACnB,IAAK,IAAItrC,EAAI,EAAG4hL,EAAK9vD,EAAQr3H,OAAQuF,EAAI4hL,EAAI5hL,GAAK,EAC9CnJ,EAAEmJ,IAAM8xH,EAAQ9xH,IAAMA,EAAI,EAAIqrC,EAAIC,GAEtC,MACJ,QACI,IAAK,IAAItrC,EAAI,EAAG4hL,EAAK9vD,EAAQr3H,OAAQuF,EAAI4hL,EAAI5hL,GAAK,EAC9CnJ,EAAEmJ,IAAM8xH,EAAQ9xH,IAAMA,EAAI,EAAIqrC,EAAIC,QAM9C,IAAK,IAAItrC,EAAI,EAAG4hL,EAAK9vD,EAAQr3H,OAAQuF,EAAI4hL,EAAI5hL,GAAK,EAC9CnJ,EAAEmJ,GAAK8xH,EAAQ9xH,GAGvB,OAAQnJ,EAAE,IACN,IAAK,IACDw0C,GAAKq2I,EACLp2I,GAAKq2I,EACL,MACJ,IAAK,IACDt2I,EAAIx0C,EAAE,GACN,MACJ,IAAK,IACDy0C,EAAIz0C,EAAE,GACN,MACJ,IAAK,IACD6qL,EAAK7qL,EAAEA,EAAE4D,OAAS,GAClBknL,EAAK9qL,EAAEA,EAAE4D,OAAS,GAClB4wC,EAAIx0C,EAAEA,EAAE4D,OAAS,GACjB6wC,EAAIz0C,EAAEA,EAAE4D,OAAS,GACjB,MACJ,QACI4wC,EAAIx0C,EAAEA,EAAE4D,OAAS,GACjB6wC,EAAIz0C,EAAEA,EAAE4D,OAAS,IAI7B,OAAOo7E,EAEX,SAASvrB,GAAUtiB,GACf,MAAMk5I,EAAYr5I,GAAIG,GAChBt/B,EAAQ,CAAE2iC,EAAG,EAAGC,EAAG,EAAGu2I,GAAI,EAAGC,GAAI,EAAG/mE,EAAG,EAAGC,EAAG,EAAG+mE,GAAI,KAAMC,GAAI,MACpE,SAASC,EAAYj6I,EAAM3xC,EAAG6rL,GAC1B,IAAIC,EACAC,EACJ,IAAKp6I,EACD,MAAO,CAAC,IAAK3xC,EAAEg1C,EAAGh1C,EAAEi1C,EAAGj1C,EAAEg1C,EAAGh1C,EAAEi1C,EAAGj1C,EAAEg1C,EAAGh1C,EAAEi1C,GAM5C,OAJMtD,EAAK,IAAM,CAAEiyD,EAAG,EAAGxG,EAAG,KACxBp9F,EAAE0rL,GAAK,KACP1rL,EAAE2rL,GAAK,MAEHh6I,EAAK,IACT,IAAK,IACD3xC,EAAE0kH,EAAI/yE,EAAK,GACX3xC,EAAE2kH,EAAIhzE,EAAK,GACX,MACJ,IAAK,IACD,OAA4B,IAAxBrc,WAAWqc,EAAK,KAAqC,IAAxBrc,WAAWqc,EAAK,IAItC,CAAC,IAAKA,EAAK,GAAIA,EAAK,IAExB,CAAC,KAAKluC,OAAOomL,GAAI5jL,MAAM,EAAG,CAACjG,EAAEg1C,EAAGh1C,EAAEi1C,GAAGxxC,OAAOkuC,EAAK5rC,MAAM,MAClE,IAAK,IAWD,MAVa,MAAT8lL,GAAyB,MAATA,GAEhBC,EAAW,EAAN9rL,EAAEg1C,EAAQh1C,EAAEwrL,GACjBO,EAAW,EAAN/rL,EAAEi1C,EAAQj1C,EAAEyrL,KAIjBK,EAAK9rL,EAAEg1C,EACP+2I,EAAK/rL,EAAEi1C,GAEJ,CAAC,IAAK62I,EAAIC,GAAItoL,OAAOkuC,EAAK5rC,MAAM,IAC3C,IAAK,IAWD,MAVa,MAAT8lL,GAAyB,MAATA,GAEhB7rL,EAAE0rL,GAAW,EAAN1rL,EAAEg1C,EAAQh1C,EAAE0rL,GACnB1rL,EAAE2rL,GAAW,EAAN3rL,EAAEi1C,EAAQj1C,EAAE2rL,KAInB3rL,EAAE0rL,GAAK1rL,EAAEg1C,EACTh1C,EAAE2rL,GAAK3rL,EAAEi1C,GAEN,CAAC,KAAKxxC,OAAOimL,GAAI1pL,EAAEg1C,EAAGh1C,EAAEi1C,EAAGj1C,EAAE0rL,GAAI1rL,EAAE2rL,GAAIh6I,EAAK,GAAIA,EAAK,KAChE,IAAK,IAGD,OAFA3xC,EAAE0rL,GAAK/5I,EAAK,GACZ3xC,EAAE2rL,GAAKh6I,EAAK,GACL,CAAC,KAAKluC,OAAOimL,GAAI1pL,EAAEg1C,EAAGh1C,EAAEi1C,EAAGtD,EAAK,GAAIA,EAAK,GAAIA,EAAK,GAAIA,EAAK,KACtE,IAAK,IACD,MAAO,CAAC,KAAKluC,OAAOkuC,EAAK,GAAI3xC,EAAEi1C,GACnC,IAAK,IACD,MAAO,CAAC,KAAKxxC,OAAOzD,EAAEg1C,EAAGrD,EAAK,IAQtC,OAAOA,EAEX,SAASq6I,EAAOC,EAAIvsL,GAChB,GAAIusL,EAAGvsL,GAAG0E,OAAS,EAAG,CAClB6nL,EAAGvsL,GAAGsS,QACN,MAAMk6K,EAAKD,EAAGvsL,GACd,KAAOwsL,EAAG9nL,QAEN4kL,EAAStpL,GAAK,IACdA,GAAK,EACLusL,EAAGniL,OAAOpK,EAAG,EAAG,CAAC,KAAK+D,OAAOyoL,EAAGpiL,OAAO,EAAG,KAE9CmiL,EAAGniL,OAAOpK,EAAG,GACb25D,EAAKwxH,EAAUzmL,QAGvB,MAAM4kL,EAAW,GACjB,IAAImD,EAAc,GACd9yH,EAAKwxH,EAAUzmL,OACnB,IAAK,IAAI1E,EAAI,EAAGA,EAAI25D,EAAI35D,GAAK,EAAG,CAC5B,IAAI0rL,EAAU,GACVP,EAAUnrL,KACV0rL,EAAUP,EAAUnrL,GAAG,IAEX,MAAZ0rL,IAEApC,EAAStpL,GAAK0rL,EACV1rL,EAAI,IACJysL,EAAcnD,EAAStpL,EAAI,KAInCmrL,EAAUnrL,GAAKksL,EAAYf,EAAUnrL,GAAI2S,EAAO85K,GAC5B,MAAhBnD,EAAStpL,IAA0B,MAAZ0rL,IACvBpC,EAAStpL,GAAK,KAIlBssL,EAAOnB,EAAWnrL,GAClB,MAAMsmL,EAAM6E,EAAUnrL,GAChB0sL,EAASpG,EAAI5hL,OACnBiO,EAAM2iC,EAAIgxI,EAAIoG,EAAS,GACvB/5K,EAAM4iC,EAAI+wI,EAAIoG,EAAS,GACvB/5K,EAAMm5K,GAAKl2J,WAAW0wJ,EAAIoG,EAAS,KAAO/5K,EAAM2iC,EAChD3iC,EAAMo5K,GAAKn2J,WAAW0wJ,EAAIoG,EAAS,KAAO/5K,EAAM4iC,EAMpD,OAHK41I,EAAU,GAAG,IAA0B,MAApBA,EAAU,GAAG,IACjCA,EAAUt1K,QAAQ,CAAC,IAAK,EAAG,IAExBs1K,EAcJ,SAAS5B,GAAkB5zI,GAC9B,OAAO4e,GAAU5e,GACZrsC,IAAKyyH,GAAYA,EAAQzyH,IAAKpC,GAA0B,iBAATA,EAAoBA,EAAO,GAAMA,EAAM,KACtF6K,KAAK,KACL7F,MAAM,KACN6F,KAAK,MJpPH2zK,GAgCR,KAAY,GAAU,KADbpkL,OA9BR,YAAmB4W,GACf,MAAMlO,EAAMkO,EAAKxT,OACXi6H,EAAOzmH,EAAK,GAElB,GAAI,GAAM+wG,QAAQ0V,GACd,OAAO,IAAI+mD,GAAQ/mD,GAGvB,GAAI,GAAMxlE,YAAYwlE,GAAO,CACzB,GAAY,IAAR30H,EACA,OAAO,IAAI07K,GAAQxtK,EAAK,GAAIA,EAAK,GAAIA,EAAK,IAG9C,MAAM4nE,EAAW,GACjB,IAAK,IAAI9/E,EAAI,EAAGA,EAAIgK,EAAKhK,GAAK,EAC1B8/E,EAASv6E,KAAK,IAAImgL,GAAQxtK,EAAKlY,GAAIkY,EAAKlY,EAAI,GAAIkY,EAAKlY,EAAI,KAE7D,OAAO8/E,EAGX,GAAY,IAAR91E,EACA,OAAO,IAAI07K,GAAQxtK,EAAK,GAAIA,EAAK,GAAIA,EAAK,GAAIA,EAAK,GAAIA,EAAK,GAAIA,EAAK,IAGzE,MAAM4nE,EAAW,GACjB,IAAK,IAAI9/E,EAAI,EAAGA,EAAIgK,EAAKhK,GAAK,EAC1B8/E,EAASv6E,KAAK,IAAImgL,GAAQxtK,EAAKlY,GAAIkY,EAAKlY,EAAI,GAAIkY,EAAKlY,EAAI,GAAIkY,EAAKlY,EAAI,GAAIkY,EAAKlY,EAAI,GAAIkY,EAAKlY,EAAI,KAEpG,OAAO8/E,GKrKf,MAAM6sG,GAAqB,IAAIj+K,OAAO,sBAC/B,SAAS,GAAQ4W,GACpB,MAAoB,iBAATA,GAGJqnK,GAAmBh7K,KAAK2T,GAOnC,SAAS,GAAI7jB,EAAGrB,GACZ,OAASqB,EAAIrB,EAAKA,GAAKA,EA0EpB,SAAS+lL,GAAWtvH,EAAQn0D,EAAU,IACzC,MAAMyrL,EAAM,GAWZ,OAVIt3H,GAAUA,EAAOnyD,QACjBmyD,EAAO3oB,QAASpsC,IACRmC,MAAMD,QAAQlC,GACdqsL,EAAI5oL,KAAK,CAAE+vC,EAAGxzC,EAAE,GAAIyzC,EAAGzzC,EAAE,KAGzBqsL,EAAI5oL,KAAK,CAAE+vC,EAAGxzC,EAAEwzC,EAAGC,EAAGzzC,EAAEyzC,MAhFxC,SAAcshB,EAAQlhC,EAAOy4J,EAAapO,EAAOv6F,GAC7C,MAAMngE,EAAO,GACPpb,EAAM2sD,EAAOA,EAAOnyD,OAAS,GAC7B2pL,EAAmB,MAAT14J,GAAiBA,EAAQ,EACnC24J,EAAU34J,GAAS,EAEzB,GAAIqqJ,GAASqO,EAAS,CAElB,MAAMlrF,GADNtsC,EAASA,EAAOxwD,SACE,GACZkoL,EAAK,IAAI,GAAMrkL,EAAIorC,GAAK6tD,EAAG7tD,EAAIprC,EAAIorC,GAAK,EAAGprC,EAAIqrC,GAAK4tD,EAAG5tD,EAAIrrC,EAAIqrC,GAAK,GAC1EshB,EAAOzsD,OAAO,EAAG,EAAGmkL,GAExB,IAAIC,EAAK33H,EAAO,GACZ72D,EAAI,EAQR,IANIouL,EACA9oK,EAAK/f,KAAK,IAAKipL,EAAGl5I,EAAGk5I,EAAGj5I,GAGxBjwB,EAAK/f,KAAK,IAAKipL,EAAGl5I,EAAGk5I,EAAGj5I,GAErBv1C,GAAKggL,EAAQnpH,EAAOnyD,OAASmyD,EAAOnyD,OAAS,IAAI,CACpD,IAAIkQ,EAAMiiD,EAAO,GAAI72D,EAAG62D,EAAOnyD,SAC3B0xD,EAAKo4H,EAAGl5I,EAAI1gC,EAAI0gC,EAChB+gB,EAAKm4H,EAAGj5I,EAAI3gC,EAAI2gC,EACpB,GAAI84I,IACQ,IAAPj4H,GAAmB,IAAPC,KACD,MAAXovB,GAAmBA,EAAQj/E,QAAQxG,EAAI,GAAK,GAAI,CAIjD,IAAI+zD,EAAOlpD,KAAK2rC,KAAK4f,EAAKA,EAAKC,EAAKA,GACpC,MAAMo4H,EAAOr4H,EAAKvrD,KAAKkzC,IAAIuwI,EAASv6H,EAAO,GAAMA,EAC3C26H,EAAOr4H,EAAKxrD,KAAKkzC,IAAIuwI,EAASv6H,EAAO,GAAMA,EAC3C6F,EAAKhlD,EAAI0gC,EAAIm5I,EACbn1H,EAAK1kD,EAAI2gC,EAAIm5I,EACnBppK,EAAK/f,KAAK,IAAKq0D,EAAIN,GAInB,IAAI5oD,EAAOmmD,EAAO,GAAI72D,EAAI,EAAG62D,EAAOnyD,SAEpC,KAAO1E,EAAI62D,EAAOnyD,OAAS,GACQ,IAA/BmG,KAAK8qB,MAAMjlB,EAAK4kC,EAAI1gC,EAAI0gC,IACO,IAA/BzqC,KAAK8qB,MAAMjlB,EAAK6kC,EAAI3gC,EAAI2gC,IACxB7kC,EAAOmmD,EAAO,GAAI72D,EAAI,EAAG62D,EAAOnyD,SAChC1E,GAAK,EAETo2D,EAAK1lD,EAAK4kC,EAAI1gC,EAAI0gC,EAClB+gB,EAAK3lD,EAAK6kC,EAAI3gC,EAAI2gC,EAClBwe,EAAOlpD,KAAKitB,IAAI,EAAGjtB,KAAK2rC,KAAK4f,EAAKA,EAAKC,EAAKA,IAC5C,MAAMs4H,EAAOv4H,EAAKvrD,KAAKkzC,IAAIuwI,EAASv6H,EAAO,GAAMA,EAC3C66H,EAAOv4H,EAAKxrD,KAAKkzC,IAAIuwI,EAASv6H,EAAO,GAAMA,EAC3C8F,EAAKjlD,EAAI0gC,EAAIq5I,EACb70H,EAAKllD,EAAI2gC,EAAIq5I,EACnBtpK,EAAK/f,KAAK,IAAKqP,EAAI0gC,EAAG1gC,EAAI2gC,EAAGskB,EAAIC,GACjCllD,EAAM,IAAI,GAAMilD,EAAIC,QAGpBx0C,EAAK/f,KAAK,IAAKqP,EAAI0gC,EAAG1gC,EAAI2gC,GAE9Bi5I,EAAK55K,EACL5U,GAAK,EAQT,OANIggL,EACA16J,EAAK/f,KAAK,KAGV+f,EAAK/f,KAAK,IAAK2E,EAAIorC,EAAGprC,EAAIqrC,GAEvBjwB,EAAKhc,IAAK6V,GAAoB,iBAANA,EAAiBA,GAAKA,EAAE8kG,QAAQ,IAAKlyG,KAAK,KAclEkyJ,CAAKkqB,EAAKzrL,EAAQizB,MAA8B,MAAvBjzB,EAAQ0rL,aAAuB1rL,EAAQ0rL,YAAa1rL,EAAQs9K,MAAOt9K,EAAQ+iF,SAKxG,SAASugG,GAAYzlF,EAAIC,EAAI2rC,EAAIC,EAAI30E,EAAQ,EAAGmuH,EAAe,EAAGC,EAAY,EAAGvwI,EAAGC,GACvF,GAAW,IAAP42F,GAAmB,IAAPC,EACZ,MAAO,GAEX92F,GAAKirD,EACLhrD,GAAKirD,EACL2rC,EAAKthI,KAAKinC,IAAIq6F,GACdC,EAAKvhI,KAAKinC,IAAIs6F,GACd,MAAM75F,GAAO+C,EAAI,EACXu3I,GAAOt3I,EAAI,EACXu3I,EAAOjiL,KAAK8vB,IAAK88B,EAAQ5sD,KAAK+vB,GAAM,KACpCmyJ,EAAOliL,KAAK0tD,IAAKd,EAAQ5sD,KAAK+vB,GAAM,KACpCoyJ,EAAMF,EAAOv6I,EAAMw6I,EAAOF,EAC1BI,GAAO,EAAIF,EAAOx6I,EAAMu6I,EAAOD,EAC/BK,EAAOF,EAAMA,EACbG,EAAOF,EAAMA,EACbG,EAAMjhD,EAAKA,EACXkhD,EAAMjhD,EAAKA,EACXkhD,EAAQJ,EAAOE,EAAMD,EAAOE,EAClC,IAAIT,EACJ,GAAIU,EAAQ,EACRnhD,EAAKthI,KAAK2rC,KAAK82I,GAASnhD,EACxBC,EAAKvhI,KAAK2rC,KAAK82I,GAASlhD,EACxBwgD,EAAM,MAEL,CACD,IAAIW,EAAO,EACP3H,IAAiBC,IACjB0H,GAAQ,GAEZX,EACIW,EACI1iL,KAAK2rC,MAAM42I,EAAMC,EAAMD,EAAMD,EAAOE,EAAMH,IAASE,EAAMD,EAAOE,EAAMH,IAElF,MAAMM,EAAOZ,EAAMzgD,EAAK8gD,EAAO7gD,EACzBqhD,GAAQ,EAAIb,EAAMxgD,EAAK4gD,EAAO7gD,EAC9BzuE,EAAKovH,EAAOU,EAAMT,EAAOU,EAAMn4I,EAAI,EACnCqoB,EAAKovH,EAAOS,EAAMV,EAAOW,EAAMl4I,EAAI,EACzC,IAAI2hB,EAAMrsD,KAAKssD,OAAO81H,EAAMQ,GAAOrhD,GAAK4gD,EAAMQ,GAAOrhD,GAAMthI,KAAKssD,MAAM,EAAG,GACrEg/E,EAAKj/E,GAAO,EAAIA,EAAM,EAAIrsD,KAAK+vB,GAAKs8B,EACxCA,EACIrsD,KAAKssD,QAAQ81H,EAAMQ,GAAOrhD,IAAM4gD,EAAMQ,GAAOrhD,GACzCthI,KAAKssD,OAAO81H,EAAMQ,GAAOrhD,GAAK4gD,EAAMQ,GAAOrhD,GACnD,IAAIuhD,EAAKx2H,GAAO,EAAIA,EAAM,EAAIrsD,KAAK+vB,GAAKs8B,EACtB,IAAd2uH,GAAmB6H,EAAK,EACxBA,GAAM,EAAI7iL,KAAK+vB,GAEI,IAAdirJ,GAAmB6H,EAAK,IAC7BA,GAAM,EAAI7iL,KAAK+vB,IAEnB,MAAM+yJ,EAAY,EAALD,EAAU7iL,KAAK+vB,GACtB0rJ,EAAMz7K,KAAK0tB,KAAKo1J,EAAM,GAAK,EAAIA,EAAMA,GACrCC,EAAOF,EAAKpH,EACZplL,EAAM,EAAI,EAAK2J,KAAK0tD,IAAIq1H,EAAO,GAAK/iL,KAAK0tD,IAAIq1H,EAAO,GAAM/iL,KAAK0tD,IAAIq1H,EAAO,GAC1EC,EAASf,EAAO3gD,EAChB2hD,EAAShB,EAAO1gD,EAChB2hD,EAAShB,EAAO5gD,EAChB6hD,EAASjB,EAAO3gD,EACtB,IAAI6hD,EAAKpjL,KAAK8vB,IAAIw7G,GACd+3C,EAAKrjL,KAAK0tD,IAAI49E,GACdt8E,GAAM34D,GAAK2sL,EAASK,EAAKF,EAASC,GAClCn0H,GAAM54D,GAAK6sL,EAASG,EAAKJ,EAASG,GAClCxuF,EAAK,EACLC,EAAK,EACT,MAAMx7F,EAAS,GACf,IAAK,IAAIzC,EAAI,EAAGA,EAAI6kL,EAAK7kL,GAAK,EAAG,CAC7B00I,GAAMy3C,EACNK,EAAKpjL,KAAK8vB,IAAIw7G,GACd+3C,EAAKrjL,KAAK0tD,IAAI49E,GACd12C,EAAKouF,EAASI,EAAKD,EAASE,EAAKxwH,EACjCgiC,EAAKquF,EAASE,EAAKH,EAASI,EAAKvwH,EACjC,MAAMvH,GAAMl1D,GAAK2sL,EAASK,EAAKF,EAASC,GAClC53H,GAAMn1D,GAAK6sL,EAASG,EAAKJ,EAASG,GAElCxpL,EAAY,EAAJhD,EACdyC,EAAOO,GAASw6D,OAAOpF,EAAK0mC,GAC5Br8F,EAAOO,EAAQ,GAAKw6D,OAAOnF,EAAK0mC,GAChCt8F,EAAOO,EAAQ,GAAKw6D,OAAOwgC,EAAKrpC,EAAKmqC,GACrCr8F,EAAOO,EAAQ,GAAKw6D,OAAOygC,EAAKrpC,EAAKmqC,GACrCt8F,EAAOO,EAAQ,GAAKw6D,OAAOwgC,EAAKc,GAChCr8F,EAAOO,EAAQ,GAAKw6D,OAAOygC,EAAKc,GAChC3mC,EAAK4lC,EAAKrpC,EACV0D,EAAK4lC,EAAKrpC,EAEd,OAAOnyD,EAAOoF,IAAKR,IAASA,EAAIm7G,QAAQ,IAErC,SAASulE,GAAQqF,EAAQC,EAAQhtF,EAAIC,EAAI4jF,EAAgB,EAAGC,EAAe,EAAGC,EAAY,EAAGkJ,EAAOC,GACvG,MAAM1pK,EAAO,GACPuxC,EAASmvH,GAAY6I,EAAQC,EAAQhtF,EAAIC,EAAI4jF,EAAeC,EAAcC,EAAWkJ,EAAOC,GAClG,GAAc,MAAVn4H,EACA,IAAK,IAAI72D,EAAI,EAAG25D,EAAK9C,EAAOnyD,OAAQ1E,EAAI25D,EAAI35D,GAAK,EAC7CslB,EAAK/f,KAAK,IAAKsxD,EAAO72D,GAAI62D,EAAO72D,EAAI,GAAI62D,EAAO72D,EAAI,GAAI62D,EAAO72D,EAAI,GAAI62D,EAAO72D,EAAI,GAAI62D,EAAO72D,EAAI,IAGzG,OAAOslB,EAAKvT,KAAK,KC1Ld,MAAM,WAAagnD,GACtB,YAAY7gD,GAIR,GAHAwpE,QACA3+E,KAAK0hH,UAAY,EACjB1hH,KAAK+8E,SAAW,GACZ77E,MAAMD,QAAQkU,GACd,GAAI,GAAK0oD,OAAO1oD,EAAK,KAAO,GAAM+wG,QAAQ/wG,EAAK,IAAK,CAChD,IAAIu4N,EAAc,KACNv4N,EACRg2B,QAAQ,CAACztC,EAAGT,KACF,IAANA,GACA+C,KAAKuiL,cAAc,GAAKC,cAAc,IAAK9kL,EAAE4D,QAE9B,MAAfosO,GAAwBA,EAAYvmO,IAAIqtD,OAAO92D,EAAE4D,QACjDtB,KAAKuiL,cAAc,GAAKC,cAAc,IAAK9kL,EAAE4D,QAE7C,GAAKu8D,OAAOngE,GACZsC,KAAKuiL,cAAc,GAAKC,cAAc,IAAK9kL,EAAEyJ,MAExC,GAAM++G,QAAQxoH,IACnBsC,KAAKuiL,cAAc,GAAKC,cAAc,IAAK9kL,EAAE8jH,cAAe9jH,EAAE+jH,cAAe/jH,EAAEyJ,MAEnFumO,EAAchwO,QAGjB,CACWyX,EACRg2B,QAASnsC,IACLA,EAAE0yG,WACF1xG,KAAKuiL,cAAcvjL,UAKlB,MAARmW,IACD,GAAK0oD,OAAO1oD,IACZnV,KAAKuiL,cAAc,GAAKC,cAAc,IAAKrtK,EAAK7T,QAChDtB,KAAKuiL,cAAc,GAAKC,cAAc,IAAKrtK,EAAKhO,OAE3C,GAAM++G,QAAQ/wG,IACnBnV,KAAKuiL,cAAc,GAAKC,cAAc,IAAKrtK,EAAK7T,QAChDtB,KAAKuiL,cAAc,GAAKC,cAAc,IAAKrtK,EAAKqsG,cAAersG,EAAKssG,cAAetsG,EAAKhO,OAEnF,GAASo0H,WAAWpmH,GACrBA,EAAK2+C,QAAU3+C,EAAK2+C,OAAOnyD,QAC3BwT,EAAK2+C,OAAO3oB,QAAQ,CAACgrB,EAAOz0D,KACxB,MAAMs3H,EAAoB,IAAVt3H,EACV,GAAK8gL,cAAc,IAAKrsH,GACxB,GAAKqsH,cAAc,IAAKrsH,GAC9Bn2D,KAAKuiL,cAAcvpD,KAItB7jH,EAAKu8F,WACV1xG,KAAKuiL,cAAcptK,IAI/BrX,IAAKE,OAAOC,eACR,OAAO,GAAKA,YAEhB,YACI,MAAM8+E,EAAW/8E,KAAK+8E,SAChBn5D,EAAQm5D,EAASp7E,OACvB,GAAc,IAAViiB,EACA,OAAO,KAEX,IAAK,IAAI3mB,EAAI,EAAGA,EAAI2mB,EAAO3mB,GAAK,EAAG,CAC/B,MAAM+7H,EAAUj8C,EAAS9/E,GACzB,GAAI+7H,EAAQvnB,UACR,OAAOunB,EAAQ13H,MAIvB,OAAOy7E,EAASn5D,EAAQ,GAAGzc,IAE/B,UACI,MAAM41E,EAAW/8E,KAAK+8E,SAChBn5D,EAAQm5D,EAASp7E,OACvB,GAAc,IAAViiB,EACA,OAAO,KAEX,IAAK,IAAI3mB,EAAI2mB,EAAQ,EAAG3mB,GAAK,EAAGA,GAAK,EAAG,CACpC,MAAM+7H,EAAUj8C,EAAS9/E,GACzB,GAAI+7H,EAAQvnB,UACR,OAAOunB,EAAQ7xH,IAIvB,OAAO41E,EAASn5D,EAAQ,GAAGzc,IAE/B,UAAUgO,GACN,OAAOnV,KAAKuiL,cAAc,GAAOhkL,OAAOnB,KAAK,QAAS+X,IAE1D,UAAUA,GACN,OAAOnV,KAAKuiL,cAAc,GAAOhkL,OAAOnB,KAAK,QAAS+X,IAE1D,WAAWA,GACP,OAAOnV,KAAKuiL,cAAc,GAAQhkL,OAAOnB,KAAK,QAAS+X,IAE3D,MAAM4pF,EAAIC,EAAI4jF,EAAeC,EAAcC,EAAWC,EAAMC,GACxD,MAAM1hL,EAAQtB,KAAKmH,KAAO,IAAI,GACxB2sD,EAAyB,iBAATivH,EAChB,GAAiBzhL,EAAMixC,EAAGjxC,EAAMkxC,EAAGusD,EAAIC,EAAI4jF,EAAeC,EAAcC,EAAWC,EAAMC,GACzF,GAAiB1hL,EAAMixC,EAAGjxC,EAAMkxC,EAAGusD,EAAIC,EAAI4jF,EAAeC,EAAcC,EAAWC,EAAKxwI,EAAGwwI,EAAKvwI,GACtG,GAAc,MAAVshB,EACA,IAAK,IAAI72D,EAAI,EAAG25D,EAAK9C,EAAOnyD,OAAQ1E,EAAI25D,EAAI35D,GAAK,EAC7C+C,KAAK0iL,QAAQ5uH,EAAO72D,GAAI62D,EAAO72D,EAAI,GAAI62D,EAAO72D,EAAI,GAAI62D,EAAO72D,EAAI,GAAI62D,EAAO72D,EAAI,GAAI62D,EAAO72D,EAAI,IAGvG,OAAO+C,KAEX,OAAO62D,EAAIN,EAAIhkB,EAAGC,GACd,MAAMlxC,EAAQtB,KAAKmH,KAAO,IAAI,GACxBob,EAAO,CAAC,IAAKjhB,EAAMixC,EAAGjxC,EAAMkxC,GAClC,GAAkB,iBAAPqkB,EACPt0C,EAAK/f,KAAK,IAAKq0D,EAAIN,EAAIhkB,EAAGC,OAEzB,CACD,MAAMzzC,EAAIw3D,EACVh0C,EAAK/f,KAAK,IAAKq0D,EAAGtkB,EAAGskB,EAAGrkB,EAAGzzC,EAAEwzC,EAAGxzC,EAAEyzC,GAEtC,MAAMtD,EAAO,GAAKlsB,MAAMT,EAAKvT,KAAK,MAElC,OADAhP,KAAKuiL,cAAcrzI,EAAK6tC,SAASz5E,MAAM,IAChCtD,KAEX,QACI,OAAOA,KAAKuiL,cAAc,GAAMhkL,UAEpC,WAAWu1D,EAAQn0D,EAAU,IACzB,MAAM2hB,EAAM,GAAgBwyC,EAAQn0D,GAC9B0xD,EAAM,GAAKruC,MAAM1B,GACnB+vC,GAAOA,EAAI0rB,UACX/8E,KAAKuiL,cAAclxH,EAAI0rB,UAG/B,OACI,MAAMA,EAAW/8E,KAAK+8E,SAChBn5D,EAAQm5D,EAASp7E,OACvB,GAAc,IAAViiB,EACA,OAAO,KAEX,IAAI23C,EACJ,IAAK,IAAIt+D,EAAI,EAAGA,EAAI2mB,EAAO3mB,GAAK,EAAG,CAC/B,MAAM+7H,EAAUj8C,EAAS9/E,GACzB,GAAI+7H,EAAQvnB,UAAW,CACnB,MAAM4xE,EAAcrqD,EAAQz9D,OACT,MAAf8nH,IACA9nH,EAAOA,EAAOA,EAAKlX,MAAMg/H,GAAeA,IAIpD,GAAY,MAAR9nH,EACA,OAAOA,EAGX,MAAM+nH,EAAcvmG,EAASn5D,EAAQ,GACrC,OAAO,IAAI,GAAU0/J,EAAYn8K,IAAIorC,EAAG+wI,EAAYn8K,IAAIqrC,EAAG,EAAG,GAElE,cAAc+wI,GACV,MAAM3/J,EAAQ5jB,KAAK+8E,SAASp7E,OAC5B,IACI6hL,EADA3xE,EAA4B,IAAVjuF,EAAc5jB,KAAK+8E,SAASn5D,EAAQ,GAAK,KAG/D,GAAI1iB,MAAMD,QAAQsiL,GACd,IAAK,IAAItmL,EAAI,EAAG25D,EAAK2sH,EAAI5hL,OAAQ1E,EAAI25D,EAAI35D,GAAK,EAAG,CAC7C,MAAM+7H,EAAUuqD,EAAItmL,GACpBumL,EAAiBxjL,KAAKyjL,eAAezqD,EAASnnB,EAJlC,MAKZ7xG,KAAK+8E,SAASv6E,KAAKghL,GACnB3xE,EAAkB2xE,OAGV,MAAPD,GAAeA,EAAI7xE,YACxB8xE,EAAiBxjL,KAAKyjL,eAAeF,EAAK1xE,EAV1B,MAWhB7xG,KAAK+8E,SAASv6E,KAAKghL,IAEvB,OAAOxjL,KAEX,cAAc0B,EAAO6hL,GACjB,MAAM3/J,EAAQ5jB,KAAK+8E,SAASp7E,OAI5B,GAHID,EAAQ,IACRA,EAAQkiB,EAAQliB,EAAQ,GAExBA,EAAQkiB,GAASliB,EAAQ,EACzB,MAAM,IAAIsB,MAAM,uBAEpB,IAAIwgL,EACA3xE,EAAkB,KAClB8xE,EAAc,KAWlB,GAVc,IAAV//J,IACIliB,GAAS,GACTmwG,EAAkB7xG,KAAK+8E,SAASr7E,EAAQ,GACxCiiL,EAAc9xE,EAAgB8xE,cAG9B9xE,EAAkB,KAClB8xE,EAAc3jL,KAAK+8E,SAAS,KAG/B77E,MAAMD,QAAQsiL,GAKf,IAAK,IAAItmL,EAAI,EAAG25D,EAAK2sH,EAAI5hL,OAAQ1E,EAAI25D,EAAI35D,GAAK,EAAG,CAC7C,MAAM+7H,EAAUuqD,EAAItmL,GACpBumL,EAAiBxjL,KAAKyjL,eAAezqD,EAASnnB,EAAiB8xE,GAC/D3jL,KAAK+8E,SAAS11E,OAAO3F,EAAQzE,EAAG,EAAGumL,GACnC3xE,EAAkB2xE,OARtBA,EAAiBxjL,KAAKyjL,eAAeF,EAAK1xE,EAAiB8xE,GAC3D3jL,KAAK+8E,SAAS11E,OAAO3F,EAAO,EAAG8hL,GAUnC,OAAOxjL,KAEX,cAAc0B,GACV,MAAM2T,EAAMrV,KAAK6jL,SAASniL,GACpBoiL,EAAiB9jL,KAAK+8E,SAAS11E,OAAOgO,EAAK,GAAG,GAC9Cw8F,EAAkBiyE,EAAejyE,gBACjC8xE,EAAcG,EAAeH,YAWnC,OATI9xE,IACAA,EAAgB8xE,YAAcA,GAE9BA,IACAA,EAAY9xE,gBAAkBA,GAE9BiyE,EAAenyE,gBAAkBgyE,GACjC3jL,KAAK+jL,0BAA0BJ,GAE5BG,EAEX,eAAepiL,EAAO6hL,GAClB,MAAMluK,EAAMrV,KAAK6jL,SAASniL,GAC1B,IAAI8hL,EACJ,MAAMS,EAAkBjkL,KAAK+8E,SAAS1nE,GACtC,IAAIw8F,EAAkBoyE,EAAgBpyE,gBACtC,MAAM8xE,EAAcM,EAAgBN,YACpC,IAAIO,EAAqBD,EAAgBtyE,eACzC,GAAKzwG,MAAMD,QAAQsiL,GAQd,CACDvjL,KAAK+8E,SAAS11E,OAAO3F,EAAO,GAC5B,IAAK,IAAIzE,EAAI,EAAG25D,EAAK2sH,EAAI5hL,OAAQ1E,EAAI25D,EAAI35D,GAAK,EAAG,CAC7C,MAAM+7H,EAAUuqD,EAAItmL,GACpBumL,EAAiBxjL,KAAKyjL,eAAezqD,EAASnnB,EAAiB8xE,GAC/D3jL,KAAK+8E,SAAS11E,OAAO3F,EAAQzE,EAAG,EAAGumL,GACnC3xE,EAAkB2xE,EACdU,GAAsBV,EAAe7xE,iBACrCuyE,GAAqB,SAf7BV,EAAiBxjL,KAAKyjL,eAAeF,EAAK1xE,EAAiB8xE,GAC3D3jL,KAAK+8E,SAAS11E,OAAOgO,EAAK,EAAGmuK,GACzBU,GAAsBV,EAAe7xE,iBAErCuyE,GAAqB,GAezBA,GAAsBP,GACtB3jL,KAAK+jL,0BAA0BJ,GAGvC,WAAWjiL,GACP,MAAM2T,EAAMrV,KAAK6jL,SAASniL,GAC1B,OAAO1B,KAAK+8E,SAAS1nE,GAEzB,SAAS3T,GACL,MAAMC,EAAS3B,KAAK+8E,SAASp7E,OAC7B,GAAe,IAAXA,EACA,MAAM,IAAIqB,MAAM,yBAEpB,IAAI/F,EAAIyE,EACR,KAAOzE,EAAI,GACPA,EAAI0E,EAAS1E,EAEjB,GAAIA,GAAK0E,GAAU1E,EAAI,EACnB,MAAM,IAAI+F,MAAM,uBAEpB,OAAO/F,EAEX,UAAUk/D,EAAOx8D,EAAU,IACvB,MAAM+B,EAAQ1B,KAAKqkL,eAAeloH,EAAOx8D,GACzC,OAAK+B,EAGE1B,KAAKmkL,WAAWziL,GAFZ,KAIf,gBAAgBC,EAAQhC,EAAU,IAC9B,MAAM+B,EAAQ1B,KAAKukL,qBAAqB5iL,EAAQhC,GAChD,OAAK+B,EAEE1B,KAAKmkL,WAAWziL,GADZ,KAGf,eAAey6D,EAAOx8D,EAAU,IAC5B,GAA6B,IAAzBK,KAAK+8E,SAASp7E,OACd,OAAO,KAEX,MAAM26D,EAAO,GAAMH,EAAO,EAAG,GACvB1hC,EAAMz6B,KAAKmiH,WAAWxiH,GAEtBgC,EADM3B,KAAK2B,OAAO84B,GACH6hC,EACrB,OAAOt8D,KAAKukL,qBAAqB5iL,EAAQ84B,GAE7C,qBAAqB94B,EAAQhC,EAAU,IACnC,MAAMikB,EAAQ5jB,KAAK+8E,SAASp7E,OAC5B,GAAc,IAAViiB,EACA,OAAO,KAEX,IAAIy4C,GAAY,EACZ16D,EAAS,IACT06D,GAAY,EACZ16D,GAAUA,GAEd,MAAM86C,EAAYz8C,KAAKqiH,aAAa1iH,GAC9B6kL,EAAsBxkL,KAAKklH,gBAAgBvlH,GACjD,IAAI2tC,EAAO,EACPm3I,EAAmB,KACvB,IAAK,IAAIxnL,EAAI,EAAGA,EAAI2mB,EAAO3mB,GAAK,EAAG,CAC/B,MAAMyE,EAAQ26D,EAAYp/D,EAAI2mB,EAAQ,EAAI3mB,EACpC+7H,EAAUh5H,KAAK+8E,SAASr7E,GACxB4gH,EAAekiE,EAAoB9iL,GACnCuF,EAAM+xH,EAAQr3H,OAAO,CAAE86C,YAAW6lE,iBACxC,GAAI0W,EAAQvnB,UAAW,CACnB,GAAI9vG,GAAU2rC,EAAOrmC,EACjB,OAAOvF,EAEX+iL,EAAmB/iL,EAEvB4rC,GAAQrmC,EAIZ,OAAOw9K,EAEX,uBAAuB9kL,EAAU,IAC7B,MAAM88C,EAAYz8C,KAAKqiH,aAAa1iH,GAC9B6kL,EAAsB,GAC5B,IAAK,IAAIvnL,EAAI,EAAG25D,EAAK52D,KAAK+8E,SAASp7E,OAAQ1E,EAAI25D,EAAI35D,GAAK,EAAG,CACvD,MACMqlH,EADUtiH,KAAK+8E,SAAS9/E,GACDioH,gBAAgB,CAAEzoE,cAC/C+nI,EAAoBhiL,KAAK8/G,GAE7B,OAAOkiE,EAEX,0BAA0BxrD,GACtB,IAAI/4E,EAAW+4E,EAAQnnB,gBACnB7sE,EAAUg0F,EACd,KAAOh0F,IAAYA,EAAQ2sE,gBAGnB3sE,EAAQ2/I,oBADI,MAAZ1kI,EAC8BA,EAAS0kI,oBAGT,KAElC1kI,EAAWjb,EACXA,EAAUA,EAAQ2+I,YAG1B,eAAe3qD,EAASnnB,EAAiB8xE,GACrC3qD,EAAQnnB,gBAAkBA,EAC1BmnB,EAAQ2qD,YAAcA,EACC,MAAnB9xE,IACAA,EAAgB8xE,YAAc3qD,GAEf,MAAf2qD,IACAA,EAAY9xE,gBAAkBmnB,GAElC,IAAIkrD,EAAqBlrD,EAUzB,OATIA,EAAQrnB,iBAERqnB,EAAQ2rD,oBAAsB3rD,EAC9BkrD,EAAqBP,GAGC,MAAtBO,GACAlkL,KAAK+jL,0BAA0BG,GAE5BlrD,EAEX,aAAaj6H,EAAGY,EAAU,IACtB,MAAMxB,EAAI6B,KAAK8xG,cAAc/yG,EAAGY,GAChC,OAAKxB,EAGE6B,KAAKiyG,SAAS9zG,GAFV,KAIf,mBAAmBY,EAAGY,EAAU,IAC5B,MAAMy5B,EAAOp5B,KAAKmiH,WAAWxiH,GACvBxB,EAAI6B,KAAK8xG,cAAc/yG,EAAGq6B,GAChC,OAAKj7B,EAGE6B,KAAK+xG,UAAU5zG,EAAGi7B,GAFd,EAIf,6BAA6Br6B,EAAGY,EAAU,IACtC,MAAMy5B,EAAOp5B,KAAKmiH,WAAWxiH,GACvByiH,EAAWpiH,KAAK67D,mBAAmB98D,EAAGq6B,GAC5C,GAAiB,IAAbgpF,EACA,OAAO,EAEX,MAAMzgH,EAAS3B,KAAK2B,OAAOy3B,GAC3B,OAAe,IAAXz3B,EACO,EAEJygH,EAAWzgH,EAEtB,cAAc5C,EAAGY,EAAU,IACvB,GAA6B,IAAzBK,KAAK+8E,SAASp7E,OACd,OAAO,KAEX,MAAM86C,EAAYz8C,KAAKqiH,aAAa1iH,GAC9B6kL,EAAsBxkL,KAAKklH,gBAAgBvlH,GACjD,IAAImyG,EACA8yE,EAAqBrmI,IACzB,IAAK,IAAIthD,EAAI,EAAG25D,EAAK52D,KAAK+8E,SAASp7E,OAAQ1E,EAAI25D,EAAI35D,GAAK,EAAG,CACvD,MAAM+7H,EAAUh5H,KAAK+8E,SAAS9/E,GACxBqlH,EAAekiE,EAAoBvnL,GACzC,GAAI+7H,EAAQvnB,UAAW,CACnB,MAAMozE,EAAuB7rD,EAAQlnB,cAAc/yG,EAAG,CAClD09C,YACA6lE,iBAGEvuD,EAAkB8G,GADIm+D,EAAQ/mB,SAAS4yE,GACc9lL,GACvDg1D,EAAkB6wH,IAClB9yE,EAAgB,CAAEizE,aAAc9nL,EAAGiB,MAAO2mL,GAC1CD,EAAqB7wH,IAIjC,OAAI+9C,GAGG,CAAEizE,aAAc/kL,KAAK+8E,SAASp7E,OAAS,EAAGzD,MAAO,GAE5D,oBAAoBa,EAAGY,EAAU,IAC7B,GAA6B,IAAzBK,KAAK+8E,SAASp7E,OACd,OAAO,KAEX,MAAM86C,EAAYz8C,KAAKqiH,aAAa1iH,GAC9B6kL,EAAsBxkL,KAAKklH,gBAAgBvlH,GACjD,IAAIm8D,EACA8oH,EAAqBrmI,IACzB,IAAK,IAAIthD,EAAI,EAAG25D,EAAK52D,KAAK+8E,SAASp7E,OAAQ1E,EAAI25D,EAAI35D,GAAK,EAAG,CACvD,MAAM+7H,EAAUh5H,KAAK+8E,SAAS9/E,GACxBqlH,EAAekiE,EAAoBvnL,GACzC,GAAI+7H,EAAQ99D,mBAAoB,CAC5B,MAAM2pH,EAAuB7rD,EAAQlnB,cAAc/yG,EAAG,CAClD09C,YACA6lE,iBAGEvuD,EAAkB8G,GADIm+D,EAAQ/mB,SAAS4yE,GACc9lL,GACvDg1D,EAAkB6wH,IAClB9oH,EAAsBk9D,EAAQ9mB,WAAW2yE,GACzCD,EAAqB7wH,IAIjC,OAAI+H,GAGG,KAEX,cAAc/8D,EAAGY,EAAU,IACvB,MAAMqlL,EAAYhlL,KAAKilL,YAAYtlL,GACnC,IAAKqlL,EACD,OAAO,EAEX,IAAIE,EAAmB,EACvB,IAAK,IAAIjoL,EAAI,EAAG25D,EAAKouH,EAAUrjL,OAAQ1E,EAAI25D,EAAI35D,GAAK,EAAG,CAClC+nL,EAAU/nL,GACd83D,cAAch2D,KACvBmmL,GAAoB,GAI5B,OAAOA,EAAmB,GAAM,EAEpC,QAAQ/oH,EAAOx8D,EAAU,IACrB,GAA6B,IAAzBK,KAAK+8E,SAASp7E,OACd,OAAO,KAEX,GAAIw6D,GAAS,EACT,OAAOn8D,KAAKsB,MAAMmG,QAEtB,GAAI00D,GAAS,EACT,OAAOn8D,KAAKmH,IAAIM,QAEpB,MAAM2xB,EAAOp5B,KAAKmiH,WAAWxiH,GAEvBgC,EADa3B,KAAK2B,OAAOy3B,GACH+iC,EAC5B,OAAOn8D,KAAKo8D,cAAcz6D,EAAQy3B,GAEtC,cAAcz3B,EAAQhC,EAAU,IAC5B,GAA6B,IAAzBK,KAAK+8E,SAASp7E,OACd,OAAO,KAEX,GAAe,IAAXA,EACA,OAAO3B,KAAKsB,MAAMmG,QAEtB,IAAI40D,GAAY,EACZ16D,EAAS,IACT06D,GAAY,EACZ16D,GAAUA,GAEd,MAAM86C,EAAYz8C,KAAKqiH,aAAa1iH,GAC9B6kL,EAAsBxkL,KAAKklH,gBAAgBvlH,GACjD,IAAIwlL,EACA73I,EAAO,EACX,IAAK,IAAIrwC,EAAI,EAAG25D,EAAK52D,KAAK+8E,SAASp7E,OAAQ1E,EAAI25D,EAAI35D,GAAK,EAAG,CACvD,MAAMyE,EAAQ26D,EAAYp/D,EAAI25D,EAAK,EAAI35D,EACjC+7H,EAAUh5H,KAAK+8E,SAASr7E,GACxB4gH,EAAekiE,EAAoB9iL,GACnCnE,EAAIy7H,EAAQr3H,OAAO,CACrB86C,YACA6lE,iBAEJ,GAAI0W,EAAQvnB,UAAW,CACnB,GAAI9vG,GAAU2rC,EAAO/vC,EACjB,OAAOy7H,EAAQ58D,eAAeC,EAAY,GAAK,IAAM16D,EAAS2rC,GAAO,CACjEmP,YACA6lE,iBAGR6iE,EAAqBnsD,EAEzB1rF,GAAQ/vC,EAIZ,GAAI4nL,EACA,OAAO9oH,EAAY8oH,EAAmBh+K,IAAMg+K,EAAmB7jL,MAInE,OADoBtB,KAAK+8E,SAAS/8E,KAAK+8E,SAASp7E,OAAS,GACtCwF,IAAIM,QAE3B,SAAStJ,GACL,MAAM4+E,EAAW/8E,KAAK+8E,SAChBqoG,EAAcroG,EAASp7E,OAC7B,GAAoB,IAAhByjL,EACA,OAAO,KACX,MAAML,EAAe5mL,EAAE4mL,aACvB,GAAIA,EAAe,EACf,OAAOhoG,EAAS,GAAGk1B,SAAS,GAChC,GAAI8yE,GAAgBK,EAChB,OAAOroG,EAASqoG,EAAc,GAAGnzE,SAAS,GAE9C,MAAMozE,EAAS,GAAMlnL,EAAED,MAAO,EAAG,GACjC,OAAO6+E,EAASgoG,GAAc9yE,SAASozE,GAE3C,SAASlpH,EAAOx8D,EAAU,IACtB,GAA6B,IAAzBK,KAAK+8E,SAASp7E,OACd,OAAO,KAEX,MAAM26D,EAAO,GAAMH,EAAO,EAAG,GACvB/iC,EAAOp5B,KAAKmiH,WAAWxiH,GAEvBgC,EADM3B,KAAK2B,OAAOy3B,GACHkjC,EACrB,OAAOt8D,KAAKy8D,eAAe96D,EAAQy3B,GAEvC,eAAez3B,EAAQhC,EAAU,IAC7B,GAA6B,IAAzBK,KAAK+8E,SAASp7E,OACd,OAAO,KAEX,IAAI06D,GAAY,EACZ16D,EAAS,IACT06D,GAAY,EACZ16D,GAAUA,GAEd,MAAM86C,EAAYz8C,KAAKqiH,aAAa1iH,GAC9B6kL,EAAsBxkL,KAAKklH,gBAAgBvlH,GACjD,IACI6jH,EACA8hE,EACAC,EACAC,EACArnL,EALAmvC,EAAO,EAMX,IAAK,IAAIrwC,EAAI,EAAG25D,EAAK52D,KAAK+8E,SAASp7E,OAAQ1E,EAAI25D,EAAI35D,GAAK,EAAG,CACvD,MAAMyE,EAAQ26D,EAAYp/D,EAAI25D,EAAK,EAAI35D,EACjC+7H,EAAUh5H,KAAKmkL,WAAWziL,GAE1B03B,EAAO,CAAEqjB,YAAW6lE,aADLkiE,EAAoB9iL,IAEnCuF,EAAM+xH,EAAQr3H,OAAOy3B,GAC3B,GAAI4/F,EAAQ99D,qBACRqqH,EAAmBvsD,EACnBwsD,EAAwB9jL,EACpBC,GAAU2rC,EAAOrmC,GAAK,CACtBq+K,EAAsB5jL,EACtB8hH,EAAUwV,EAAQv8D,gBAAgBJ,EAAY,GAAK,IAAM16D,EAAS2rC,GAAOlU,GACzE,MAGRkU,GAAQrmC,EAEZ,IAAKs+K,EACD,OAAO,KAEN/hE,IACD8hE,EAAsBE,EACtBrnL,EAAIk+D,EAAY,EAAI,EACpBmnD,EAAU+hE,EAAiBvzE,UAAU7zG,IAGzC,MAAMunL,EAAW1lL,KAAKyH,QAChB/F,EAAQ4jL,EACdI,EAAS1B,eAAetiL,EAAO8hH,GAC/B,MAAMmiE,EAAqBjkL,EAC3B,IAAIkkL,EAAmBlkL,EAAQ,EAC3BmkL,EAAmBnkL,EAAQ,EAE1B8hH,EAAQ,GAAGtoD,qBACZwqH,EAAS9B,cAAc+B,GACvBC,GAAoB,EACpBC,GAAoB,GAGxB,MAAMC,EAAYJ,EAASvB,WAAWyB,GAAkBtkL,MACxDokL,EAAShC,cAAckC,EAAkB,GAAKpD,cAAc,IAAKsD,IACjED,GAAoB,EAEfriE,EAAQ,GAAGtoD,qBACZwqH,EAAS9B,cAAciC,EAAmB,GAC1CA,GAAoB,GAGxB,MAAME,EAAmCF,EAAmBF,EAAqB,EACjF,IAAK,IAAI1oL,EAAI4oL,EAAkBjvH,EAAK8uH,EAAS3oG,SAASp7E,OAAQ1E,EAAI25D,EAAI35D,GAAK,EAAG,CAC1E,MAAM+oL,EAAkBhmL,KAAKmkL,WAAWlnL,EAAI8oL,GACtC/sD,EAAU0sD,EAASvB,WAAWlnL,GACpC,GAAqB,MAAjB+7H,EAAQz3H,OACPykL,EAAgBrB,oBAAoBx9K,IAAIqtD,OAAOwkE,EAAQ2rD,oBAAoBx9K,KAAM,CAGlF,MAAM8+K,EAAmB,GAAKzD,cAAc,IAAKwD,EAAgB7+K,KACjEu+K,EAAS1B,eAAe/mL,EAAGgpL,IAMnC,MAAO,CAFW,IAAI,GAAKP,EAAS3oG,SAASz5E,MAAM,EAAGsiL,IACnC,IAAI,GAAKF,EAAS3oG,SAASz5E,MAAMsiL,KAGxD,mBAAmB3qH,EAAMt7D,EAAU,IAC/B,MAAMqlL,EAAYhlL,KAAKilL,YAAYtlL,GACnC,GAAiB,MAAbqlL,EACA,OAAO,KAEX,IAAI5rD,EAAgB,KACpB,IAAK,IAAIn8H,EAAI,EAAG25D,EAAKouH,EAAUrjL,OAAQ1E,EAAI25D,EAAI35D,GAAK,EAAG,CACnD,MAAMu+H,EAAWwpD,EAAU/nL,GACrB6lD,EAAemY,EAAKrD,UAAU4jE,GAChC14E,IACqB,MAAjBs2E,IACAA,EAAgB,IAEhBl4H,MAAMD,QAAQ6hD,GACds2E,EAAc52H,QAAQsgD,GAGtBs2E,EAAc52H,KAAKsgD,IAI/B,OAAOs2E,EAEX,mBACI,IAAK,IAAIn8H,EAAI,EAAG25D,EAAK52D,KAAK+8E,SAASp7E,OAAQ1E,EAAI25D,EAAI35D,GAAK,EAAG,CAEvD,GADgB+C,KAAK+8E,SAAS9/E,GAClBi+D,mBACR,OAAO,EAGf,OAAO,EAEX,UACI,MAAM6hB,EAAW/8E,KAAK+8E,SAEtB,OADoC,IAApBA,EAASp7E,QAAqC,MAArBo7E,EAAS,GAAGx7E,KAGzD,OAAO5B,EAAU,IACb,GAA6B,IAAzBK,KAAK+8E,SAASp7E,OACd,OAAO,EAEX,MAAM6iL,EAAsBxkL,KAAKklH,gBAAgBvlH,GACjD,IAAIgC,EAAS,EACb,IAAK,IAAI1E,EAAI,EAAG25D,EAAK52D,KAAK+8E,SAASp7E,OAAQ1E,EAAI25D,EAAI35D,GAAK,EAAG,CACvD,MAAM+7H,EAAUh5H,KAAK+8E,SAAS9/E,GACxBqlH,EAAekiE,EAAoBvnL,GACzC0E,GAAUq3H,EAAQr3H,OAAO,CAAE2gH,iBAE/B,OAAO3gH,EAEX,UAAUxD,EAAGwB,EAAU,IACnB,MAAMikB,EAAQ5jB,KAAK+8E,SAASp7E,OAC5B,GAAc,IAAViiB,EACA,OAAO,EAEX,IAAImhK,EAAe5mL,EAAE4mL,aACrB,GAAIA,EAAe,EACf,OAAO,EAEX,IAAIM,EAAS,GAAMlnL,EAAED,MAAO,EAAG,GAC3B6mL,GAAgBnhK,IAChBmhK,EAAenhK,EAAQ,EACvByhK,EAAS,GAEb,MAAM5oI,EAAYz8C,KAAKqiH,aAAa1iH,GAC9B6kL,EAAsBxkL,KAAKklH,gBAAgBvlH,GACjD,IAAIgC,EAAS,EACb,IAAK,IAAI1E,EAAI,EAAGA,EAAI8nL,EAAc9nL,GAAK,EAAG,CACtC,MAAM+7H,EAAUh5H,KAAK+8E,SAAS9/E,GACxBqlH,EAAekiE,EAAoBvnL,GACzC0E,GAAUq3H,EAAQr3H,OAAO,CAAE86C,YAAW6lE,iBAE1C,MAAM0W,EAAUh5H,KAAK+8E,SAASgoG,GACxBziE,EAAekiE,EAAoBO,GAEzC,OADApjL,GAAUq3H,EAAQjnB,UAAUszE,EAAQ,CAAE5oI,YAAW6lE,iBAC1C3gH,EAEX,UAAUw6D,EAAOx8D,EAAU,IACvB,GAA6B,IAAzBK,KAAK+8E,SAASp7E,OACd,OAAO,KAEX,MAAM26D,EAAO,GAAMH,EAAO,EAAG,GACvB/iC,EAAOp5B,KAAKmiH,WAAWxiH,GAEvBgC,EADM3B,KAAK2B,OAAOy3B,GACHkjC,EACrB,OAAOt8D,KAAKs9D,gBAAgB37D,EAAQy3B,GAExC,gBAAgBz3B,EAAQhC,EAAU,IAC9B,GAA6B,IAAzBK,KAAK+8E,SAASp7E,OACd,OAAO,KAEX,IAAI06D,GAAY,EACZ16D,EAAS,IACT06D,GAAY,EACZ16D,GAAUA,GAEd,MAAM86C,EAAYz8C,KAAKqiH,aAAa1iH,GAC9B6kL,EAAsBxkL,KAAKklH,gBAAgBvlH,GACjD,IAAI4lL,EACAj4I,EAAO,EACX,IAAK,IAAIrwC,EAAI,EAAG25D,EAAK52D,KAAK+8E,SAASp7E,OAAQ1E,EAAI25D,EAAI35D,GAAK,EAAG,CACvD,MAAMyE,EAAQ26D,EAAYp/D,EAAI25D,EAAK,EAAI35D,EACjC+7H,EAAUh5H,KAAK+8E,SAASr7E,GACxB4gH,EAAekiE,EAAoB9iL,GACnCuF,EAAM+xH,EAAQr3H,OAAO,CAAE86C,YAAW6lE,iBACxC,GAAI0W,EAAQ99D,mBAAoB,CAC5B,GAAIv5D,GAAU2rC,EAAOrmC,EACjB,OAAO+xH,EAAQ17D,iBAAiBjB,EAAY,GAAK,IAAM16D,EAAS2rC,GAAO,CACnEmP,YACA6lE,iBAGRijE,EAAmBvsD,EAEvB1rF,GAAQrmC,EAGZ,GAAIs+K,EAAkB,CAClB,MAAMpnL,EAAIk+D,EAAY,EAAI,EAC1B,OAAOkpH,EAAiBrzE,WAAW/zG,GAGvC,OAAO,KAEX,WAAWA,GACP,MAAMylB,EAAQ5jB,KAAK+8E,SAASp7E,OAC5B,GAAc,IAAViiB,EACA,OAAO,KAEX,MAAMmhK,EAAe5mL,EAAE4mL,aACvB,GAAIA,EAAe,EACf,OAAO/kL,KAAK+8E,SAAS,GAAGm1B,WAAW,GAEvC,GAAI6yE,GAAgBnhK,EAChB,OAAO5jB,KAAK+8E,SAASn5D,EAAQ,GAAGsuF,WAAW,GAE/C,MAAMmzE,EAAS,GAAMlnL,EAAED,MAAO,EAAG,GACjC,OAAO8B,KAAK+8E,SAASgoG,GAAc7yE,WAAWmzE,GAElD,aAAa1lL,EAAU,IACnB,OAA4B,MAArBA,EAAQ88C,UAAoBz8C,KAAK0hH,UAAY/hH,EAAQ88C,UAEhE,gBAAgB98C,EAAU,IACtB,GAAmC,MAA/BA,EAAQ6kL,oBAA6B,CACrC,MAAM/nI,EAAYz8C,KAAKqiH,aAAa1iH,GACpC,OAAOK,KAAK0kL,uBAAuB,CAAEjoI,cAEzC,OAAO98C,EAAQ6kL,oBAEnB,WAAW7kL,EAAU,IAGjB,MAAO,CAAE88C,UAFSz8C,KAAKqiH,aAAa1iH,GAEhB6kL,oBADQxkL,KAAKklH,gBAAgBvlH,IAGrD,SAASA,EAAU,IACf,MAAMo9E,EAAW/8E,KAAK+8E,SAChBn5D,EAAQm5D,EAASp7E,OACvB,GAAc,IAAViiB,EACA,OAAO,KAEX,MAAM4gK,EAAsBxkL,KAAKklH,gBAAgBvlH,GAC3Cm0D,EAAS,GACf,IAAIsyH,EAAgB,GACpB,IAAK,IAAInpL,EAAI,EAAGA,EAAI2mB,EAAO3mB,GAAK,EAAG,CAC/B,MAAM+7H,EAAUj8C,EAAS9/E,GACzB,GAAI+7H,EAAQvnB,UAAW,CACnB,MAAM6T,EAAYk/D,EAAoBvnL,GAClCqoH,EAAU3jH,OAAS,EAEnB2jH,EAAUn6E,QAAS7tC,GAAM8oL,EAAc5jL,KAAKlF,EAAEgE,QAG9C8kL,EAAc5jL,KAAKw2H,EAAQ13H,YAG1B8kL,EAAczkL,OAAS,IAC5BykL,EAAc5jL,KAAKu6E,EAAS9/E,EAAI,GAAGkK,KACnC2sD,EAAOtxD,KAAK4jL,GACZA,EAAgB,IAOxB,OAJIA,EAAczkL,OAAS,IACvBykL,EAAc5jL,KAAKxC,KAAKmH,KACxB2sD,EAAOtxD,KAAK4jL,IAETtyH,EAEX,YAAYn0D,EAAU,IAClB,MAAMm0D,EAAS9zD,KAAKgmH,SAASrmH,GAC7B,OAAKm0D,EAGEA,EAAOvtD,IAAKpD,GAAQ,IAAI,GAASA,IAF7B,KAIf,MAAMuwD,EAAIC,EAAIC,GAEV,OADA5zD,KAAK+8E,SAAS5xC,QAASnsC,GAAMA,EAAE6lB,MAAM6uC,EAAIC,EAAIC,IACtC5zD,KAEX,OAAO00D,EAAOd,GAEV,OADA5zD,KAAK+8E,SAAS5xC,QAAS6tF,GAAYA,EAAQzlE,OAAOmB,EAAOd,IAClD5zD,KAEX,UAAU26D,EAAIC,GAOV,MANkB,iBAAPD,EACP36D,KAAK+8E,SAAS5xC,QAASnsC,GAAMA,EAAEo0D,UAAUuH,EAAIC,IAG7C56D,KAAK+8E,SAAS5xC,QAASnsC,GAAMA,EAAEo0D,UAAUuH,IAEtC36D,KAEX,QACI,MAAMkvC,EAAO,IAAI,GAEjB,OADAlvC,KAAK+8E,SAAS5xC,QAASnsC,GAAMkwC,EAAKqzI,cAAcvjL,EAAEyI,UAC3CynC,EAEX,OAAOnwC,GACH,GAAS,MAALA,EACA,OAAO,EAEX,MAAMg+E,EAAW/8E,KAAK+8E,SAChBspG,EAAgBtnL,EAAEg+E,SAClBn5D,EAAQm5D,EAASp7E,OACvB,GAAI0kL,EAAc1kL,SAAWiiB,EACzB,OAAO,EAEX,IAAK,IAAI3mB,EAAI,EAAGA,EAAI2mB,EAAO3mB,GAAK,EAAG,CAC/B,MAAM+N,EAAI+xE,EAAS9/E,GACbgO,EAAIo7K,EAAcppL,GACxB,GAAI+N,EAAEzJ,OAAS0J,EAAE1J,OAASyJ,EAAEwpD,OAAOvpD,GAC/B,OAAO,EAGf,OAAO,EAEX,SACI,OAAOjL,KAAK+8E,SAASx2E,IAAKvH,GAAMA,EAAE+sD,UAEtC,YACI,IAAK/rD,KAAKo1I,UACN,MAAM,IAAIpyI,MAAM,0BAEpB,OAAOhD,KAAK+8E,SAASx2E,IAAKvH,GAAMA,EAAE0gC,aAAa1wB,KAAK,KAExD,WACI,OAAOhP,KAAK0/B,aAGpB,IAAWuP,OAqBR,KAAS,GAAO,KApBVhxC,YAAc,eAAegxC,GAAKzxC,KAmBvCyxC,GAAKq3I,OAlBL,SAAgBpwH,GACZ,GAAgB,MAAZA,EACA,OAAO,EAEX,GAAIA,aAAoBjnB,GACpB,OAAO,EAEX,MAAMr9B,EAAMskD,EAASl4D,OAAOC,aACtBixC,EAAOgnB,EACb,QAAY,MAAPtkD,GAAeA,IAAQq9B,GAAKhxC,cAC7BiD,MAAMD,QAAQiuC,EAAK6tC,WACI,mBAAhB7tC,EAAKitD,QACW,mBAAhBjtD,EAAKmtD,QACY,mBAAjBntD,EAAKwzI,UAOxB,SAAWzzI,GAyBP,SAASuzI,EAAcjhL,KAAS4T,GAC5B,GAAa,MAAT5T,EACA,OAAO,GAAOhD,OAAOnB,KAAK,QAAS+X,GAEvC,GAAa,MAAT5T,EACA,OAAO,GAAOhD,OAAOnB,KAAK,QAAS+X,GAEvC,GAAa,MAAT5T,EACA,OAAO,GAAQhD,OAAOnB,KAAK,QAAS+X,GAExC,GAAa,MAAT5T,GAAyB,MAATA,EAChB,OAAO,GAAMhD,SAEjB,MAAM,IAAIyE,MAAM,8BAA8BzB,MAdlD0tC,EAAKjsB,MAvBL,SAAe4vB,GACX,IAAKA,EACD,OAAO,IAAI3D,EAEf,MAAMC,EAAO,IAAID,EAEXs3I,EAAWt3I,EAAKuiB,UAAU5e,GAAU3kC,MADxB,6GAElB,GAAgB,MAAZs4K,EACA,IAAK,IAAItpL,EAAI,EAAG25D,EAAK2vH,EAAS5kL,OAAQ1E,EAAI25D,EAAI35D,GAAK,EAAG,CAClD,MACM0wO,EAAQ,sEAERx4N,EAHUoxK,EAAStpL,GAGJgR,MAAM0/N,GAC3B,GAAY,MAARx4N,EAAc,CACd,MAAM5T,EAAO4T,EAAK,GACZumH,EAASvmH,EAAK7R,MAAM,GAAGiD,IAAKyE,IAAOA,GACnCguH,EAAUwpD,EAAcplL,KAAK,KAAMmE,KAASm6H,GAClDxsF,EAAKqzI,cAAcvpD,IAI/B,OAAO9pF,GAkBXD,EAAKuzI,cAAgBA,EAxCzB,CAyCG,KAAS,GAAO,KACnB,SAAWvzI,GACPA,EAAKuiB,UAAYg1H,GACjBv3I,EAAKmmG,QAAU,GACfnmG,EAAKw3I,QAAU,GACfx3I,EAAKm0I,WAAa,GAClBn0I,EAAKg0I,YAAc,GALvB,CAMG,KAAS,GAAO,KC78BZ,MAAM,GACT,YAAYz8K,EAAMoJ,EAAOqL,GACrB,IAAKzU,EACD,MAAM,IAAI4Y,UAAU,oCAExB,IAAIza,EACJ,GAAI,GAAOo3H,SAASv1H,GAChB7B,EAAO6B,EAAK7B,UAEX,GAAoB,iBAAT6B,EACZ,GAA2B,QAAvBA,EAAK6C,cACL1E,EAAO,UAEN,GAAgB,MAAZ6B,EAAK,GAAY,CACtB,MAAM5B,EAAM,GAAsB4B,GAElC7B,EAAO7B,SAASk5H,WAAWp3H,EAAI6O,YAAY,QAG3C9O,EAAO7B,SAAS6iF,gBAAgB,GAAOT,IAAK1+E,QAIhD7B,EAAO6B,EAEXxG,KAAK2E,KAAOA,EACRiL,GACA5P,KAAKypG,cAAc75F,GAEnBqL,GACAjb,KAAK+vB,OAAO9U,GAGpBnd,IAAKE,OAAOC,eACR,OAAO,GAAOA,YAElB,WACI,OAAO+B,KAAK2E,KAAK8I,SAErB,SACI,OAAOzN,KAAK2E,KAAK6J,GAErB,OAAOA,GACHxO,KAAK2E,KAAK6J,GAAKA,EAEnB,UAAU4oD,EAAQz3D,GACd,OAAc,MAAVy3D,EACO,GAAcp3D,KAAK2E,OAE9B,GAAc3E,KAAK2E,KAAMyyD,EAAQz3D,GAC1BK,MAEX,UAAU26D,EAAIC,EAAK,EAAGj7D,EAAU,IAC5B,OAAU,MAANg7D,EACO,GAAc36D,KAAK2E,OAE9B,GAAc3E,KAAK2E,KAAMg2D,EAAIC,EAAIj7D,GAC1BK,MAEX,OAAO00D,EAAOsoC,EAAIC,EAAIt9F,EAAU,IAC5B,OAAa,MAAT+0D,EACO,GAAW10D,KAAK2E,OAE3B,GAAW3E,KAAK2E,KAAM+vD,EAAOsoC,EAAIC,EAAIt9F,GAC9BK,MAEX,MAAM0zD,EAAIC,GACN,OAAU,MAAND,EACO,GAAU1zD,KAAK2E,OAE1B,GAAU3E,KAAK2E,KAAM+uD,EAAIC,GAClB3zD,MAMX,sBAAsB0H,GAClB,MAAMmsD,EAAM,GAAOqoE,OAAOx0H,GAC1B,OAAO,GAA0B1H,KAAK2E,KAAMkvD,GAEhD,gBAAgBr2D,GAEZ,OADA,GAAoBwC,KAAK2E,KAAMnH,GACxBwC,KAEX,aAAaxC,GACT,OAAO,GAAiBwC,KAAK2E,KAAMnH,GAEvC,aAAaA,EAAMU,GAEf,OADA,GAAiB8B,KAAK2E,KAAMnH,EAAMU,GAC3B8B,KAEX,cAAc4P,GAEV,OADA,GAAkB5P,KAAK2E,KAAMiL,GACtB5P,KAEX,KAAKxC,EAAMU,GACP,OAAY,MAARV,EACO,GAASwC,KAAK2E,MAEL,iBAATnH,QAA+B0E,IAAVhE,EACrB,GAAS8B,KAAK2E,KAAMnH,IAEX,iBAATA,EACP,GAASwC,KAAK2E,KAAMnH,GAGpB,GAASwC,KAAK2E,KAAMnH,EAAMU,GAEvB8B,MAEX,MACI,OAAOA,KAAK2E,gBAAgBw3H,cACtBn8H,KACA,GAAOzB,OAAOyB,KAAK2E,KAAK8mG,iBAElC,OACI,MAAM1rG,EAAUC,KAAKklF,OAASllF,KACxBo8H,EAAWr8H,EAAQ4E,KAAK8J,qBAAqB,QAAQ,GAC3D,OAAI2tH,EACO,GAAO79H,OAAO69H,GAElB,GAAO79H,OAAO,QAAQ+xB,SAASvwB,GAE1C,KAAKic,EAASrc,EAAU,IAEpB,OADA,GAASK,KAAK2E,KAAMqX,EAASrc,GACtBK,KAEX,UACI,OAAO,GAAYA,KAAK2E,MAE5B,QACI,OAAO,GAAOpG,OAAOyB,KAAK2E,KAAKuhB,WAAU,IAE7C,SAEI,OADA,GAAWlmB,KAAK2E,MACT3E,KAEX,QAEI,OADA,GAAUA,KAAK2E,MACR3E,KAEX,OAAOiG,GAEH,OADA,GAAWjG,KAAK2E,KAAM,GAAO03H,QAAQp2H,IAC9BjG,KAEX,SAAS0H,GAEL,OADA,GAAa1H,KAAK2E,KAAM,GAAOo3H,SAASr0H,GAAUA,EAAO/C,KAAO+C,GACzD1H,KAEX,QAAQiG,GAEJ,OADA,GAAYjG,KAAK2E,KAAM,GAAO03H,QAAQp2H,IAC/BjG,KAEX,OAAOiG,GAEH,OADA,GAAWjG,KAAK2E,KAAM,GAAO03H,QAAQp2H,IAC9BjG,KAEX,QAAQwG,GAIJ,OAHIxG,KAAK2E,KAAKU,YACVrF,KAAK2E,KAAKU,WAAWgrB,aAAa,GAAO6rG,OAAO11H,GAAOxG,KAAK2E,MAEzD,GAAOpG,OAAOiI,GAEzB,QACI,OAAOxG,KAAK2E,KAAK8O,WACX,GAAOlV,OAAOyB,KAAK2E,KAAK8O,YACxB,KAEV,OACI,OAAOzT,KAAK2E,KAAKqQ,UACX,GAAOzW,OAAOyB,KAAK2E,KAAKqQ,WACxB,KAEV,IAAItT,GACA,MAAMslE,EAAQhnE,KAAK2E,KAAKiJ,WAAWlM,GACnC,OAAOslE,EAAQ,GAAOzoE,OAAOyoE,GAAS,KAE1C,QAAQxgE,GAEJ,OADiBtF,MAAMrC,UAAUyE,MAAMlG,KAAK4C,KAAK2E,KAAKiJ,YACtCnK,QAAQ,GAAOy4H,OAAO11H,IAE1C,KAAKf,GACD,MAAM62H,EAAO,GACP30G,EAAQ,GAAS3nB,KAAK2E,KAAMc,GAClC,GAAIkiB,EACA,IAAK,IAAI1qB,EAAI,EAAG25D,EAAKjvC,EAAMhmB,OAAQ1E,EAAI25D,EAAI35D,GAAK,EAC5Cq/H,EAAK95H,KAAK,GAAOjE,OAAOopB,EAAM1qB,KAGtC,OAAOq/H,EAEX,QAAQ72H,GACJ,MAAM82H,EAAQ,GAAYv8H,KAAK2E,KAAMc,GACrC,OAAO82H,EAAQ,GAAOh+H,OAAOg+H,GAAS,KAE1C,kBAAkBnrH,EAAWo6F,GACzB,MAAM7mG,EAAO,GAAsB3E,KAAK2E,KAAMyM,EAAWo6F,GACzD,OAAO7mG,EAAO,GAAOpG,OAAOoG,GAAQ,KAExC,QAAQc,GACJ,MAAMd,EAAO3E,KAAK2E,KAEZ4Q,GADUvV,KAAK2E,KAAKmE,QACVnE,EAAKmE,SACjBnE,EAAKqN,iBACLrN,EAAKyN,mBACLzN,EAAKuN,oBACLvN,EAAKsN,uBACLtN,EAAKwN,kBACL,MACJ,OAAOoD,GAAWA,EAAQnY,KAAKuH,EAAMc,GAEzC,SAASuhE,GACL,OAAO,GAAahnE,KAAK2E,KAAM,GAAOo3H,SAAS/0D,GAASA,EAAMriE,KAAOqiE,GAEzE,KAAKriE,GACD,MAAM63H,EAAM,GAAOj+H,OAAOoG,GACpBU,EAAarF,KAAK2E,KAAKU,WAI7B,OAHkB,MAAdA,GACAA,EAAW4qB,aAAausG,EAAI73H,KAAM3E,KAAK2E,MAEpC63H,EAAIzsG,OAAO/vB,MAEtB,OAAOuB,GACH,IAAIpB,EAASH,KAEb,GAA8B,MAA1BG,EAAOwE,KAAKU,WACZ,OAAO,KAIX,GADAlF,EAAS,GAAO5B,OAAO4B,EAAOwE,KAAKU,YACvB,MAAR9D,EACA,OAAOpB,EAGX,GACI,GAAoB,iBAAToB,EAAoBpB,EAAO2I,QAAQvH,GAAQpB,aAAkBoB,EACpE,OAAOpB,QAELA,EAAS,GAAO5B,OAAO4B,EAAOwE,KAAKU,aAC7C,OAAOlF,EAEX,WACI,MAAM8a,EAAWjb,KAAK2E,KAAKiJ,WACrB0uH,EAAO,GACb,IAAK,IAAIr/H,EAAI,EAAGA,EAAIge,EAAStZ,OAAQ1E,GAAK,EAAG,CAEX,IADTge,EAAShe,GACbiH,UACbo4H,EAAK95H,KAAK,GAAOjE,OAAO0c,EAAShe,KAGzC,OAAOq/H,EAEX,UAAU52H,EAAIiC,GACV,MAAMsT,EAAWjb,KAAKib,WACtB,IAAK,IAAIhe,EAAI,EAAGC,EAAI+d,EAAStZ,OAAQ1E,EAAIC,EAAGD,GAAK,EAC7CyI,EAAGtI,KAAK6d,EAAShe,GAAIge,EAAShe,GAAIA,EAAGge,GACjCtT,GACAsT,EAAShe,GAAGg0H,UAAUvrH,EAAIiC,GAGlC,OAAO3H,KAEX,QACI,OAAO,GAAUA,KAAK2E,MAE1B,SAASyM,GACL,OAAO,GAAapR,KAAK2E,KAAMyM,GAEnC,SAASA,GAEL,OADA,GAAapR,KAAK2E,KAAMyM,GACjBpR,KAEX,YAAYoR,GAER,OADA,GAAgBpR,KAAK2E,KAAMyM,GACpBpR,KAEX,YAAYoR,EAAWqsB,GAEnB,OADA,GAAgBz9B,KAAK2E,KAAMyM,EAAWqsB,GAC/Bz9B,KAEX,aAAauyC,EAAGC,GACZ,OAAO,GAAiBxyC,KAAK2E,KAAM4tC,EAAGC,GAE1C,kBACI,OAAO,GAAoBxyC,KAAK2E,MAEpC,uBAAuB5F,GACnB,MACM00D,EADOzzD,KAAK48H,QAAQ,CAAEl1H,OAAQ1H,KAAKklF,QACrBxqB,YAEpB,OADA16D,KAAKozD,UAAUr0D,EAAEwzC,EAAIkhB,EAAOlhB,EAAGxzC,EAAEyzC,EAAIihB,EAAOjhB,GACrCxyC,KAEX,uBAAuBwyB,EAAUgoB,EAAW9yC,GAExC,OADA,GAA2B1H,KAAK2E,KAAM6tB,EAAUgoB,EAAW9yC,GACpD1H,KAEX,QAAQL,GACJ,OAAO,GAAYK,KAAK2E,KAAMhF,GAElC,iBAAiBA,GACb,OAAO,GAAqBK,KAAK2E,KAAMhF,GAE3C,iBAAiBA,EAASuvC,GACtB,OAAO,GAAqBlvC,KAAK2E,KAAMhF,EAASuvC,GAMpD,gBAKI,MAHgB,SADAlvC,KAAKylF,WAEjBzlF,KAAKiT,KAAK,IAAK,GAAKu+C,UAAUxxD,KAAKiT,KAAK,OAErCjT,KAQX,KAAKi9H,EAAwBv1H,GACzB,OAAO,GAAS1H,KAAK2E,KAAMs4H,EAAwBv1H,GAEvD,QAAQ/H,EAAU,IACd,OAAO,GAAYK,KAAK2E,KAAM,CAC1Bu4H,UAAWv9H,EAAQu9H,UACnBx1H,OAAQ/H,EAAQ+H,OAAS,GAAOw0H,OAAOv8H,EAAQ+H,QAAU,OAiBjE,OAAO2wB,EAAW,GACd,OAAIr4B,KAAK2E,gBAAgBw4H,eACd,GAAWn9H,KAAK2E,KAAM0zB,GAE1B,GAEX,SACI,OAAO,GAAO95B,OAAO,GAAWyB,KAAK2E,OAEzC,aACI,OAAO,GAAe3E,KAAK2E,OClVnC,SAASkzL,GAAiBC,EAAUC,EAAiBp4L,GACjD,MAAMs4L,EAAMt4L,EAAQs4L,IACdC,EAAWv4L,EAAQu4L,SACnB7+E,EAAa15G,EAAQ05G,WAC3B,IACI2+E,EADAG,EAAc,EAElB,MAAMC,EAAc,GACdC,EAAQN,EAAgBp2L,OAAS,EACvC,IAAK,IAAIuF,EAAI,EAAGA,GAAKmxL,EAAOnxL,GAAK,EAAG,CAChC,IAAI2rL,EAAakF,EAAgB7wL,GAC7B45G,EAAW,KACf,GAA0B,iBAAf+xE,EAAyB,CAChC,MAAMyF,EAAkBzF,EAAWjjL,MAC7B2oL,EAAS,GAAOh6L,OAAO,QAAS+5L,GACtCN,EAAYO,EAAO5zL,KACnB,IAAIxG,EAAI00L,EAAW10L,EACf85L,GAAO/wL,IAAMmxL,IACbl6L,GAAK85L,GAETD,EAAUxkL,YAAcrV,EAExB,MAAMq6L,EAAkBF,EAAgB79G,MACpC+9G,GACAD,EAAOr7J,SAASs7J,GAKhB74L,EAAQmzL,0BACRyF,EAAOtlL,KAAK,cAAe4/K,EAAWJ,YAAYzjL,KAAK,MAG3D8xG,EAAWjuF,WAAWylK,EAAgB,mBACrBp2L,IAAb4+G,IACAA,EAAWo3E,GACXp3E,GAAYA,EAAWq3E,IACvBA,EAAcr3E,QAGdm3E,GAAO/wL,IAAMmxL,IACbxF,GAAcoF,GAElBD,EAAYl1L,SAAS+kB,eAAegrK,GAAc,KAC9CqF,GAAYA,EAAWC,IACvBA,EAAcD,GAGtBJ,EAAS1yL,YAAY4yL,GAWzB,OATIG,IACAC,EAAYD,YAAcA,GAE1B9+E,EACA++E,EAAY/+E,WAAaA,EAEpB8+E,IACLC,EAAY/+E,WAA2B,IAAd8+E,GAEtBC,GD2RX,SAAWv8D,GAEP,SAASE,EAAS7lE,GACd,GAAgB,MAAZA,EACA,OAAO,EAEX,GAAIA,aAAoB2lE,EACpB,OAAO,EAEX,MAAMjqH,EAAMskD,EAASl4D,OAAOC,aACtBo9D,EAASnF,EACf,OAAY,MAAPtkD,GAAeA,IAAQiqH,EAAO59H,cAC/Bo9D,EAAO12D,gBAAgBwmG,YACG,mBAAnB9vC,EAAOxgC,SACW,mBAAlBwgC,EAAOlV,QACkB,mBAAzBkV,EAAO2hE,eACW,mBAAlB3hE,EAAOvM,OAMtB,SAASvwD,EAAOiI,EAAMoJ,EAAOqL,GACzB,OAAO,IAAI4gH,EAAOr1H,EAAMoJ,EAAOqL,GAgBnC,SAASihH,EAAO11H,GACZ,OAAIu1H,EAASv1H,GACFA,EAAK7B,KAET6B,EA1CXq1H,EAAO59H,YAAc,MAAM49H,EAAOr+H,KAoBlCq+H,EAAOE,SAAWA,EAIlBF,EAAOt9H,OAASA,EAahBs9H,EAAOwB,cAZP,SAAuBC,GACnB,GAAkB,MAAdA,EAAO,GAAY,CACnB,MAAMC,EAAS,GAAsBD,GAC/BhB,EAAO,GACb,IAAK,IAAIr/H,EAAI,EAAG25D,EAAK2mE,EAAO3vH,WAAWjM,OAAQ1E,EAAI25D,EAAI35D,GAAK,EAAG,CAC3D,MAAMunF,EAAY+4C,EAAO3vH,WAAW3Q,GACpCq/H,EAAK95H,KAAKjE,EAAOuE,SAASk5H,WAAWx3C,GAAW,KAEpD,OAAO83C,EAEX,MAAO,CAAC/9H,EAAO++H,KASnBzB,EAAOK,OAASA,EAOhBL,EAAOQ,QANP,SAAiBp2H,GACb,OAAI/E,MAAMD,QAAQgF,GACPA,EAAMM,IAAKC,GAAS01H,EAAO11H,IAE/B,CAAC01H,EAAOj2H,KAlDvB,CAqDG,KAAW,GAAS,KC9UvB,MAAMwyL,GAAU,MAChB,SAASC,GAAOC,EAAI73E,GAChB,MAAM83E,EAAY/lK,WAAW8lK,GAC7B,OAAIF,GAAQ7pL,KAAK+pL,GACNC,EAAY93E,EAEhB83E,EAkCJ,SAAS,GAAKpyL,EAAMwV,EAASrc,EAAU,IAC1Cqc,EAAU,EAAK+2K,SAAS/2K,GACxB,MAAMi8K,EAAMt4L,EAAQs4L,IACpB,IAAIY,EAAWl5L,EAAQk5L,SACvB,MAAMC,EAAiBn5L,EAAQo5L,mBACzBC,EAAyC,WAAnBF,GACL,WAAnBA,GACmB,QAAnBA,EAEJ,IAAIvmJ,EAAI5yC,EAAQ4yC,OACNrwC,IAANqwC,IACAA,EAAI/rC,EAAKvB,aAAa,MAAQ,GAGlC,MAAMg0L,EAAMt5L,EAAQmzL,yBACpB,IAAIL,EAAc9yL,EAAQ8yL,YACtBA,IAAgBvxL,MAAMD,QAAQwxL,KAC9BA,EAAc,CAACA,IAGnB,MAAMyG,EAAoBv5L,EAAQ05G,WAC5B8/E,EAAuC,SAAtBD,EACjB7/E,EAAa8/E,EAAiB,QAAUD,GAAqB,MACnE,GAAM1yL,GACN,GAAKA,EAAM,CAEP,YAAa,WAIb+d,QAASvI,GAAWrc,EAAQy5L,aAAe,KAAO,SAGtD,MAAME,EAAc,GAAK9yL,EAAM,aAC/B,IAOI6yL,EAWA/lI,EAlBAwtD,EAAWjuF,WAAWymK,GACrBx4E,IACDA,EAAW,IACNk4E,IAAuBvG,GAAiB6G,GACzC,GAAK9yL,EAAM,YAAa,GAAGs6G,IAI/B+3E,GAEwB,iBAAbA,IACPA,EAAW,CAAEt7L,EAAGs7L,IAEpBQ,EAhKR,SAA4BzpL,EAAOpJ,GAC/B,MAAMg2H,EAAM,GAAOj+H,OAAOiI,GACpBqyL,EAAW,GAAOt6L,OAAO,YACzBhB,EAAIqS,EAAMrS,EAChB,GAAIA,QAA6B2E,IAAxB0N,EAAM,cAA6B,CACxC,MAAMs/B,EAAO,GAAO3wC,OAAO,QAAQ0U,KAAK,IAAK1V,GAAG+yB,SAASksG,EAAIjF,QAC7DshE,EAAS5lL,KAAK,aAAc,IAAIi8B,EAAK1gC,IAKzC,MAHqB,iBAAVoB,GACPipL,EAAS5lL,KAAKrD,GAEXipL,EAASl0L,KAqJI40L,CAAmBV,EAAUryL,IAG7C6yL,EAAgBv2L,SAASkjB,yBAG7B,IACIwzK,EADArxJ,EAAS,EAEb,MAAMk0E,EAAQrgG,EAAQ7S,MAAM,MACtBswL,EAAe,GACfC,EAAQr9E,EAAM16G,OAAS,EAC7B,IAAK,IAAI1E,EAAI,EAAGA,GAAKy8L,EAAOz8L,GAAK,EAAG,CAChCq2D,EAAK+lD,EACL,IAAIsgF,EAAgB,SACpB,MAAM7B,EAAWptF,GAAiB,SAClC,IAAIkvF,EACA3+H,EAAOohD,EAAMp/G,GACjB,GAAIg+D,EACA,GAAIw3H,EAAa,CAMbmH,EAAc/B,GAAiBC,EAJP,EAAKvF,SAASt3H,EAAMw3H,EAAa,CACrDtqJ,QAASA,EACT2qJ,yBAA0BmG,IAE4B,CACtDhB,IAAKh7L,IAAMy8L,GAASzB,EACpBC,SAAUp3E,EACVzH,WAAY8/E,EAAiB,KAAO9/E,EACpCy5E,yBAA0BmG,IAI9B,MAAMY,EAAcD,EAAYvgF,WAC5BwgF,GAAeV,GAAwB,IAANl8L,IACjCq2D,EAAKumI,GAEC,IAAN58L,IACAu8L,EAAuC,GAA1BI,EAAYzB,kBAIzBF,GAAOh7L,IAAMy8L,IACbz+H,GAAQg9H,GAEZH,EAAStkL,YAAcynD,MAG1B,CAID68H,EAAStkL,YAAc,IACvBmmL,GAAiB,gBACjB,MAAMG,EAAgBhC,EAASxzK,MAC/Bw1K,EAAcxoJ,YAAc,EAC5BwoJ,EAAcroJ,cAAgB,EAC1BghJ,IACAmH,EAAc,IAGlBA,GACAH,EAAaj3L,KAAKo3L,GAElB38L,EAAI,GACJ66L,EAAS5yL,aAAa,KAAMouD,IAG5Br2D,EAAI,GAAK47L,IACTf,EAAS5yL,aAAa,IAAKqtC,GAE/BulJ,EAAS1mL,UAAU2oL,QAAUJ,EAC7BN,EAAcj0L,YAAY0yL,GAC1B3vJ,GAAU8yB,EAAKt5D,OAAS,EAG5B,GAAIq3L,EACA,GAAIvG,EACAn/H,EA5JZ,SAAqB0mI,EAAWP,EAAcQ,EAAY5gF,GACtD,IAAKn4G,MAAMD,QAAQw4L,GACf,OAAO,EAEX,MAAM/6L,EAAI+6L,EAAa93L,OACvB,IAAKjD,EACD,OAAO,EACX,IAAIk7L,EAAcH,EAAa,GAC/B,MAAMS,EAAYxB,GAAOkB,EAAYzB,YAAa8B,IAAeA,EACjE,IAAIE,EAAe,EACnB,MAAMC,EAAe1B,GAAOr/E,EAAY4gF,GACxC,IAAK,IAAIh9L,EAAI,EAAGA,EAAIyB,EAAGzB,GAAK,EAAG,CAC3B28L,EAAcH,EAAax8L,GAE3Bk9L,GADoBzB,GAAOkB,EAAYvgF,WAAY4gF,IAAeG,EAGtE,MAAMC,EAAY3B,GAAOkB,EAAYzB,YAAa8B,IAAeA,EACjE,IAAI3mI,EACJ,OAAQ0mI,GACJ,IAAK,SACD1mI,EAAK4mI,EAAY,EAAI,IAAOG,EAAYF,EAAe,EACvD,MACJ,IAAK,SACD7mI,GAAO,IAAO+mI,EAAaF,EAC3B,MACJ,QACA,IAAK,MACD7mI,EAAK,GAAM4mI,EAGnB,OAAO5mI,EA8HMgnI,CAAYxB,EAAgBW,EAAc34E,EAAUzH,QAExD,GAAuB,QAAnBy/E,EAELxlI,EAAK,YAEJ,CACD,IAAIinI,EAWJ,OAVIb,EAAQ,GACRa,EAAK1nK,WAAWwmF,IAAe,EAC/BkhF,GAAMb,EACDjB,GAAQ7pL,KAAKyqG,KACdkhF,GAAMz5E,IAIVy5E,EAAK,EAEDzB,GACJ,IAAK,SACDxlI,EAAQ,GAAMinI,EAAK,EAAd,KACL,MACJ,IAAK,SACDjnI,GAASinI,EAAK,GAAT,WAOO,IAAnBzB,EACLxlI,EAAK,MAEAwlI,EACLxlI,EAAKwlI,GAILxlI,EAAK,EAEyB,MAA1B9sD,EAAKvB,aAAa,MAClBuB,EAAKtB,aAAa,IAAK,IAAGs0L,GAAc,WAG9BH,EAAc5lL,WACtBvO,aAAa,KAAMouD,GAC7B9sD,EAAKpB,YAAYi0L,GAyEd,SAAS7B,GAAUxyL,EAAM43C,EAAMxnB,EAAS,GAAIz1B,EAAU,IACzD,MAAM0xB,EAAQurB,EAAKvrB,MACboC,EAASmpB,EAAKnpB,OACd6qG,EAAc3+H,EAAQ2+H,aAAe5zB,GAAiB,OACtD8vF,EAAQ9vF,GAAiB,QACzB0rB,EAAQ1rB,GAAiB,SACzB+vF,EAAQ33L,SAAS+kB,eAAe,IACtC,GAAK2yK,EAAOplK,GACZolK,EAAMp1L,YAAYgxH,GAElBokE,EAAMl2K,MAAM0R,QAAU,IAOtBwkK,EAAMl2K,MAAMC,QAAU,QACtB6xG,EAAM9xG,MAAMC,QAAU,QACtB6xG,EAAMhxH,YAAYq1L,GAClBn8D,EAAYl5H,YAAYo1L,GACxB,MAAME,EAAyC,MAA1Bp8D,EAAYj5H,WAC7Bq1L,GACA53L,SAASwiB,KAAKlgB,YAAYk5H,GAE9B,MAAM25D,EAAMt4L,EAAQs4L,KAAO,KACrB/4I,EAAYv/C,EAAQu/C,WAAa,IACjC27I,EAASl7L,EAAQk7L,OAAS,IAAIlvL,OAAOhM,EAAQk7L,QAAU,UACvDC,GAAkC,IAAtBn7L,EAAQm7L,UACpBC,EAAO,GACPC,EAAgB,GACtB,IACIL,EAEAthF,EACAuhF,EAJAv+E,EAAQ,GAKZ,MAAM,MAAE7uD,EAAK,WAAEytI,GA3GnB,SAAmBj2L,EAAMk6C,EAAW+4I,EAAK4C,GACrC,MAAMrtI,EAAQ,GACRytI,EAAa,GACnB,GAAiB,MAAb/7I,EAAmB,CACnB,MAAMnoB,EAAQ/xB,EAAKmE,MAAM+1C,GAEzB,GADAsO,EAAMhrD,QAAQu0B,GACW,iBAAdmoB,EACP,IAAK,IAAIjiD,EAAI,EAAGC,EAAI65B,EAAMp1B,OAAS,EAAG1E,EAAIC,EAAGD,GAAK,EAC9Cg+L,EAAWz4L,KAAK08C,OAGnB,CACD,MAAMg8I,EAAOl2L,EAAKiJ,MAAM,IAAItC,OAAOuzC,EAAW,MAC9C,IAAK,IAAIjiD,EAAI,EAAGC,EAAI65B,EAAMp1B,OAAS,EAAG1E,EAAIC,EAAGD,GAAK,EAC9Cg+L,EAAWz4L,KAAK04L,EAAOA,EAAKj+L,GAAK,SAIxC,CACD,IAAIkiD,EAAO,GACX,IAAK,IAAIliD,EAAI,EAAGC,EAAI8H,EAAKrD,OAAQ1E,EAAIC,EAAGD,GAAK,EAAG,CAC5C,MAAMwzI,EAAOzrI,EAAK/H,GACL,MAATwzI,GACAjjF,EAAMhrD,KAAK28C,GACX87I,EAAWz4L,KAAK,KAChB28C,EAAO,IAEFsxF,EAAKxiI,MAAM,iBAEZkxC,EAAKx9C,SACL6rD,EAAMhrD,KAAK28C,GACX87I,EAAWz4L,KAAK,KAEpBgrD,EAAMhrD,KAAKiuI,GACXwqD,EAAWz4L,KAAK,IAChB28C,EAAO,IAGPA,GAAQsxF,EAGZtxF,EAAKx9C,QACL6rD,EAAMhrD,KAAK28C,GAInB,IAAK,IAAIliD,EAAI,EAAGA,EAAIuwD,EAAM7rD,OAAQ1E,GAAK,EAAG,CACtC,MAAMkiD,EAAOqO,EAAMvwD,GACnB,GAAIkiD,EAAK17C,QAAQw0L,IAAQ,GAAK94I,EAAKx9C,OAAS,EAAG,CAC3C,MAAMo1B,EAAQooB,EAAKh2C,MAAM8uL,GACzB,IAAK,IAAI/wL,EAAI,EAAGwrD,EAAI37B,EAAMp1B,OAAS,EAAGuF,EAAIwrD,EAAGxrD,GAAK,EAC9C6vB,EAAM1vB,OAAO,EAAIH,EAAI,EAAG,EAAG+wL,GAE/B,MAAMkD,EAASpkK,EAAMvlB,OAAQ4pL,GAAkB,KAATA,GACtC5tI,EAAMnmD,OAAOpK,EAAG,KAAMk+L,GACtB,MAAMD,EAAOC,EAAO50L,IAAI,IAAM,IAC9B20L,EAAKhwL,MACL+vL,EAAW5zL,OAAOpK,EAAG,KAAMi+L,IAInC,IAAK,IAAIj+L,EAAI,EAAGA,EAAIuwD,EAAM7rD,OAAQ1E,GAAK,EAAG,CACtC,MAAMkiD,EAAOqO,EAAMvwD,GACbyE,EAAQy9C,EAAK2pE,OAAO+xE,GACtBn5L,EAAQ,GAAKA,EAAQy9C,EAAKx9C,OAAS,IACnC6rD,EAAMnmD,OAAOpK,EAAG,EAAGkiD,EAAKqgE,UAAU,EAAG99G,EAAQ,GAAIy9C,EAAKqgE,UAAU99G,EAAQ,IACxEu5L,EAAW5zL,OAAOpK,EAAG,EAAG,KAGhC,MAAO,CAAEuwD,QAAOytI,cAsCcI,CAAUr2L,EAAMrF,EAAQu/C,UAAW+4I,EAAK4C,GACtE,IAAK,IAAIS,EAAY,EAAGC,EAAY,EAAGC,EAAYhuI,EAAM7rD,OAAQ25L,EAAYE,EAAWF,GAAa,EAAG,CACpG,MAAMn8I,EAAOqO,EAAM8tI,GAEnB,GAAKn8I,EAIL,GAAIA,IAAS84I,EAAb,CAcA,GAPwB,MAApB57E,EAAMk/E,IACNX,EAAmBK,EAAWK,EAAY,IAAM,GAChDb,EAAMl4K,KAAO,GAAG85F,EAAMk/E,KAAaX,IAAmBz7I,KAGtDs7I,EAAMl4K,KAAO48B,EAEbi3E,EAAMqlE,yBAA2BpqK,EAEjCgrF,EAAMk/E,GAAad,EAAMl4K,KACzBy4K,EAAcO,GAAaN,EAAWK,GAElCX,IACAI,EAAKQ,IAAa,EAClBA,GAAa,EACbZ,EAAY,OAGf,CACD,GAAIG,GAEA,IAAKz+E,EAAMk/E,IAAcZ,EAAW,CAChC,MAAMe,IAAgBf,EAChBgB,EAA8B,IAAhBx8I,EAAKx9C,OAEzB,GADAg5L,EAAYx7I,EAAKx9C,OAAS,EACtB+5L,GAAeC,EAAa,CAE5B,GAAIA,EAAa,CACb,IAAKt/E,EAAMk/E,GAAY,CAEnBl/E,EAAQ,GACR,MAKJ7uD,EAAMnmD,OAAOi0L,EAAW,EAAGn8I,EAAOqO,EAAM8tI,EAAY,IACpDL,EAAW5zL,OAAOi0L,EAAY,EAAG,GACjCP,EAAKQ,IAAa,EAClBA,GAAa,EACbC,GAAa,EACbF,GAAa,EACb,SAGJ9tI,EAAM8tI,GAAan8I,EAAKqgE,UAAU,EAAGm7E,GACrCntI,EAAM8tI,EAAY,GACdn8I,EAAKqgE,UAAUm7E,GAAantI,EAAM8tI,EAAY,QAIlD9tI,EAAMnmD,OAAOi0L,EAAW,EAAGn8I,EAAKqgE,UAAU,EAAGm7E,GAAYx7I,EAAKqgE,UAAUm7E,IACxEM,EAAW5zL,OAAOi0L,EAAW,EAAG,IAChCE,GAAa,EAETD,IAAcR,EAAKQ,EAAY,KAC/BA,GAAa,GAGrBD,GAAa,EACb,eAGH,IAAKj/E,EAAMk/E,GAAY,CACxBl/E,EAAMk/E,GAAap8I,EACnB47I,EAAKQ,IAAa,EAClBA,GAAa,EACb,SAEJA,GAAa,EACbD,GAAa,EAGjB,GAAc,MAAV7nK,EAAgB,CAEhB,GAAkB,MAAd4lF,EAAoB,CACpB,IAAIuiF,EAGAA,EADsB,SAAtBxmK,EAAOikF,WACO,CAAEn7G,MAAO,IAAK+mB,KAAM,MAGpB,EAAUgsK,gBAAgB77J,EAAOikF,WAAY,CACvD,QACE,CACFn7G,MAAO,EACP+mB,KAAM,MAGdo0F,EAAauiF,EAAY19L,MACA,OAArB09L,EAAY32K,OACR2hG,GAASe,WACTtO,GAAc+c,EAAMwG,UAAUnpG,OAG9B4lF,GAAcmhF,EAAM59D,UAAUnpG,QAI1C,GAAI4lF,EAAagD,EAAM16G,OAAS8xB,EAAQ,CAEpC,MAAMooK,EAAgB/zL,KAAKq4C,MAAM1sB,EAAS4lF,GAAc,EAClDyiF,EAAWz/E,EAAMw/E,GACjBE,EAAe1/E,EAAMw/E,EAAgB,GAE3C,GADAx/E,EAAMh1G,OAAOw0L,EAAgB,GACb,MAAZC,EACA,MAGJ,IAAIt9E,EAAW7+G,EAAQ6+G,SACvB,IAAKA,EACD,MAEoB,iBAAbA,IACPA,EAAW,KAEf,IAAIw9E,EAAeF,EACfC,GAAgBjB,IAChBkB,GAAgBpB,EAAmBmB,GAEvC,IACIG,EACAC,EAFAF,EAAgBD,EAAar6L,OAGjC,EAAG,CAWC,GAVAw6L,EAAWH,EAAaC,GACxBC,EAAgBF,EAAax8E,UAAU,EAAGy8E,GACrCE,EAGIA,EAASluL,MAAMixC,KACpBg9I,GAAiBC,GAHjBD,GAAiBlB,EAAca,GAKnCK,GAAiB19E,EACjBi8E,EAAMl4K,KAAO25K,EACT9lE,EAAMqlE,yBAA2BpqK,EAAO,CACxCgrF,EAAMw/E,GAAiBK,EACvB,MAEJD,GAAiB,QACZA,GAAiB,GAC1B,aAlJJlB,EAAKQ,IAAa,EAElBA,GAAa,EACbl/E,EAAMk/E,GAAa,GAyJ3B,OALI,GADAb,EACOp8D,EAGAk8D,GAEJn+E,EAAMrtG,KAAKipL,GCljBf,MAAM3mD,GAAQ,QACrB,SAASE,GAAqBhrI,EAAMyM,EAAM6G,EAAe26C,KACrD,MAAMr4C,EAAI5V,EAAKvB,aAAagO,GAC5B,GAAS,MAALmJ,EACA,OAAOtC,EAEX,MAAMpb,EAAIm0B,WAAWzW,GACrB,OAAO8/C,OAAO/xB,MAAMzrC,GAAKob,EAAepb,EAErC,SAAS,GAAO8H,EAAM6xB,EAAW,GACpC,MAAM12B,EAAS6E,EAAK8rI,iBACdC,EAAU,GAChB,IACIpsF,EADA0K,EAAW,EAEf,KAAOA,EAAWlvD,GACdwkD,EAAS3/C,EAAKgsI,iBAAiB3hF,GAC/B0hF,EAAQ/vI,KAAK,CAAEquD,WAAUte,EAAG4T,EAAO5T,EAAGC,EAAG2T,EAAO3T,IAChDqe,GAAYx4B,EAEhB,OAAOk6G,EAEJ,SAASlB,GAAep2E,GAC3B,MAAO,CACH,IACAu2E,GAAqBv2E,EAAM,MAC3Bu2E,GAAqBv2E,EAAM,MAC3B,IACAu2E,GAAqBv2E,EAAM,MAC3Bu2E,GAAqBv2E,EAAM,OAC7BjsD,KAAK,KAEJ,SAASoiI,GAAkBK,GAC9B,MAAM39E,EAASo9E,GAAwBO,GACvC,OAAsB,IAAlB39E,EAAOnyD,OACA,KAED+vI,GAAgB59E,GAAnB,KAEJ,SAASq9E,GAAmB3V,GAC/B,MAAM1nE,EAASo9E,GAAwB1V,GACvC,OAAsB,IAAlB1nE,EAAOnyD,OACA,KAEJ+vI,GAAgB59E,GAE3B,SAAS49E,GAAgB59E,GAErB,MAAO,KADKA,EAAOvtD,IAAKxH,GAAM,GAAGA,EAAEwzC,KAAKxzC,EAAEyzC,KAC1BxjC,KAAK,MAElB,SAASkiI,GAAwB1qI,GACpC,MAAMstD,EAAS,GACT69E,EAAanrI,EAAKstD,OACxB,GAAI69E,EACA,IAAK,IAAI10I,EAAI,EAAG25D,EAAK+6E,EAAWC,cAAe30I,EAAI25D,EAAI35D,GAAK,EACxD62D,EAAOtxD,KAAKmvI,EAAWE,QAAQ50I,IAGvC,OAAO62D,EAEJ,SAASm9E,GAAiBa,GAC7B,MAAM90C,EAAKw0C,GAAqBM,EAAQ,KAAM,GACxC70C,EAAKu0C,GAAqBM,EAAQ,KAAM,GACxC/zI,EAAIyzI,GAAqBM,EAAQ,KACjCC,EAAKh0I,EAAIuzI,GACf,MAAO,CACH,IACAt0C,EACAC,EAAKl/F,EACL,IACAi/F,EAAK+0C,EACL90C,EAAKl/F,EACLi/F,EAAKj/F,EACLk/F,EAAK80C,EACL/0C,EAAKj/F,EACLk/F,EACA,IACAD,EAAKj/F,EACLk/F,EAAK80C,EACL/0C,EAAK+0C,EACL90C,EAAKl/F,EACLi/F,EACAC,EAAKl/F,EACL,IACAi/F,EAAK+0C,EACL90C,EAAKl/F,EACLi/F,EAAKj/F,EACLk/F,EAAK80C,EACL/0C,EAAKj/F,EACLk/F,EACA,IACAD,EAAKj/F,EACLk/F,EAAK80C,EACL/0C,EAAK+0C,EACL90C,EAAKl/F,EACLi/F,EACAC,EAAKl/F,EACL,KACFiR,KAAK,KAEJ,SAASgiI,GAAkB5nC,GAC9B,MAAMpM,EAAKw0C,GAAqBpoC,EAAS,KAAM,GACzCnM,EAAKu0C,GAAqBpoC,EAAS,KAAM,GACzCrK,EAAKyyC,GAAqBpoC,EAAS,MACnCpK,EAAKwyC,GAAqBpoC,EAAS,OAASrK,EAC5CizC,EAAMjzC,EAAKuyC,GACXW,EAAMjzC,EAAKsyC,GAmCjB,MAlCU,CACN,IACAt0C,EACAC,EAAK+B,EACL,IACAhC,EAAKg1C,EACL/0C,EAAK+B,EACLhC,EAAK+B,EACL9B,EAAKg1C,EACLj1C,EAAK+B,EACL9B,EACA,IACAD,EAAK+B,EACL9B,EAAKg1C,EACLj1C,EAAKg1C,EACL/0C,EAAK+B,EACLhC,EACAC,EAAK+B,EACL,IACAhC,EAAKg1C,EACL/0C,EAAK+B,EACLhC,EAAK+B,EACL9B,EAAKg1C,EACLj1C,EAAK+B,EACL9B,EACA,IACAD,EAAK+B,EACL9B,EAAKg1C,EACLj1C,EAAKg1C,EACL/0C,EAAK+B,EACLhC,EACAC,EAAK+B,EACL,KACFhwF,KAAK,KAGJ,SAAS+hI,GAAoBloG,GAChC,OAAOioG,GAAe,CAClBv+F,EAAGi/F,GAAqB3oG,EAAM,IAAK,GACnC2J,EAAGg/F,GAAqB3oG,EAAM,IAAK,GACnCxX,MAAOmgH,GAAqB3oG,EAAM,QAAS,GAC3CpV,OAAQ+9G,GAAqB3oG,EAAM,SAAU,GAC7Ck2D,GAAIyyC,GAAqB3oG,EAAM,KAAM,GACrCm2D,GAAIwyC,GAAqB3oG,EAAM,KAAM,KAGtC,SAASioG,GAAe/yI,GAC3B,IAAIR,EACJ,MAAMg1C,EAAIx0C,EAAEw0C,EACNC,EAAIz0C,EAAEy0C,EACNnhB,EAAQtzB,EAAEszB,MACVoC,EAAS11B,EAAE01B,OACXy+G,EAAQpqI,KAAKkzC,IAAIj9C,EAAEghG,IAAMhhG,EAAE,WAAa,EAAGszB,EAAQ,GACnD8gH,EAAWrqI,KAAKkzC,IAAIj9C,EAAEghG,IAAMhhG,EAAE,cAAgB,EAAGszB,EAAQ,GACzD+gH,EAAQtqI,KAAKkzC,IAAIj9C,EAAEihG,IAAMjhG,EAAE,WAAa,EAAG01B,EAAS,GACpD4+G,EAAWvqI,KAAKkzC,IAAIj9C,EAAEihG,IAAMjhG,EAAE,cAAgB,EAAG01B,EAAS,GAoDhE,OAlDIl2B,EADA20I,GAASC,GAAYC,GAASC,EAC1B,CACA,IACA9/F,EACAC,EAAI4/F,EACJ,IACA3+G,EAAS2+G,EAAQC,EACjB,IACAF,EACAE,EACA,EACA,EACA,EACAF,EACAE,EACA,IACAhhH,EAAQ,EAAI8gH,EACZ,IACAA,EACAE,EACA,EACA,EACA,EACAF,GACCE,EACD,MACE5+G,EAAS4+G,EAAWD,GACtB,IACAF,EACAE,EACA,EACA,EACA,GACCF,GACAE,EACD,MACE/gH,EAAQ,EAAI6gH,GACd,IACAA,EACAE,EACA,EACA,EACA,GACCF,EACDE,EACA,KAIA,CAAC,IAAK7/F,EAAGC,EAAG,IAAKD,EAAIlhB,EAAO,IAAKmhB,EAAI/e,EAAQ,IAAK8e,EAAG,IAAKC,EAAG,KAE9Dj1C,EAAEyR,KAAK,KAEX,SAAS8/C,GAAOtoD,GACnB,MAAM0oC,EAAOw7D,GAAiB,QAC9B,GAAKx7D,EAAM,GAAK1oC,IAChB,MAAMjJ,EAAI6/H,GAAW52H,GAIrB,OAHIjJ,GACA2xC,EAAKhqC,aAAa,IAAK3H,GAEpB2xC,EAEJ,SAASkuF,GAAW52H,GACvB,MAAMi/E,EAAUj/E,EAAKi/E,QAAQp8E,cAC7B,OAAQo8E,GACJ,IAAK,OACD,OAAOj/E,EAAKvB,aAAa,KAC7B,IAAK,OACD,OAAOosI,GAAe7qI,GAC1B,IAAK,UACD,OAAO4qI,GAAkB5qI,GAC7B,IAAK,WACD,OAAO2qI,GAAmB3qI,GAC9B,IAAK,UACD,OAAOwqI,GAAkBxqI,GAC7B,IAAK,SACD,OAAOyqI,GAAiBzqI,GAC5B,IAAK,OACD,OAAOuqI,GAAoBvqI,GAInC,MAAM,IAAIxD,MAAM,IAAIyiF,+CAGjB,SAASorD,GAAoB4B,EAAaC,EAAax1C,EAAYC,GACtE,MAAMw1C,EAAY,EAAI7qI,KAAK+vB,GAAK,KAC1B+6G,EAAKH,EACLrJ,EAAKsJ,EACX,IAAIG,EAAK31C,EACL41C,EAAK31C,EACT,GAAI21C,EAAKD,EAAI,CACT,MAAMhhI,EAAMghI,EACZA,EAAKC,EACLA,EAAKjhI,EAET,MAAMkhI,EAAKD,EAAKD,EACVG,EAAKD,EAAKjrI,KAAK+vB,GAAK,IAAM,IAC1Bo7G,EAAKnrI,KAAK8vB,IAAIi7G,GACdK,EAAKprI,KAAK0tD,IAAIq9E,GACdM,EAAKrrI,KAAK8vB,IAAIk7G,GACdM,EAAKtrI,KAAK0tD,IAAIs9E,GACpB,OAAOC,GAAMJ,EACPC,EAEM,MAAMxJ,KAAMA,KAAMA,cAAeA,KAAMA,KAAMA,aAAcA,OAAQwJ,KAAMA,KAAMA,cAAeA,KAAMA,KAAMA,aAAcA,KAExH,MAAMxJ,KAAMA,KAAMA,cAAeA,KAAMA,KAAMA,aAAcA,KACjEwJ,EAEM,IAAIxJ,EAAK6J,KAAM7J,EAAK8J,KAAM9J,KAAMA,OAAQ4J,OAAQ5J,EAAK+J,KAAM/J,EAAKgK,KAAMR,EAAKO,KAAMP,EAAKQ,KAAMR,KAAMA,OAAQI,OAAQJ,EAAKK,KAAML,EAAKM,KAElI,IAAI9J,EAAK6J,KAAM7J,EAAK8J,KAAM9J,KAAMA,OAAQ4J,OAAQ5J,EAAK+J,KAAM/J,EAAKgK,SClRhF,MAAM,GAAc1oC,GAAiB,OAC/B6zB,GAAiB,gCACjBC,GAA0B,QAC1BC,GAA0B,iBAKzB,SAASJ,GAAe9rF,EAAGC,GAC9B,MAAMzzC,EAAI,GAAYs/H,iBAGtB,OAFAt/H,EAAEwzC,EAAIA,EACNxzC,EAAEyzC,EAAIA,EACCzzC,EAiBJ,SAASq/H,GAAgBhnE,GAC5B,MAAMsnE,EAAM,GAAYN,kBACxB,GAAc,MAAVhnE,EAAgB,CAChB,MAAMrzC,EAASqzC,EACT1vD,EAASg3H,EAEf,IAAK,MAAMlgI,KAAOulB,EACdrc,EAAOlJ,GAAOulB,EAAOvlB,GAG7B,OAAOkgI,EAMJ,SAASP,GAAmB/mE,GAC/B,OAAc,MAAVA,GACMA,aAAkBmoE,YACpBnoE,EAASgnE,GAAgBhnE,IAEtB,GAAYooE,6BAA6BpoE,IAE7C,GAAY+mE,qBAQhB,SAASD,GAAwB1qF,GACpC,IAAIkrF,EAAMN,KACV,MAAMt1H,EAAuB,MAAb0qC,GAAqBA,EAAUvlC,MAAMswH,IACrD,IAAKz1H,EACD,OAAO41H,EAEX,IAAK,IAAIzhI,EAAI,EAAGyB,EAAIoK,EAAQnH,OAAQ1E,EAAIyB,EAAGzB,GAAK,EAAG,CAC/C,MACM0hI,EADuB71H,EAAQ7L,GACYgR,MAAMwwH,IACvD,GAAIE,EAAqB,CACrB,IAAIjrE,EACAC,EACAgH,EACAC,EACAlG,EACAkqE,EAAMR,KACV,MAAMjpH,EAAOwpH,EAAoB,GAAGx1H,MAAMq1H,IAC1C,OAAQG,EAAoB,GAAGt1H,eAC3B,IAAK,QACDqqD,EAAK7gC,WAAW1d,EAAK,IACrBw+C,OAAiBzxD,IAAZiT,EAAK,GAAmBu+C,EAAK7gC,WAAW1d,EAAK,IAClDypH,EAAMA,EAAIC,gBAAgBnrE,EAAIC,GAC9B,MACJ,IAAK,YACDgH,EAAK9nC,WAAW1d,EAAK,IACrBylD,EAAK/nC,WAAW1d,EAAK,IACrBypH,EAAMA,EAAIxrE,UAAUuH,EAAIC,GACxB,MACJ,IAAK,SACDlG,EAAQ7hC,WAAW1d,EAAK,IACxBwlD,EAAK9nC,WAAW1d,EAAK,KAAO,EAC5BylD,EAAK/nC,WAAW1d,EAAK,KAAO,EAExBypH,EADO,IAAPjkE,GAAmB,IAAPC,EACNgkE,EAAIxrE,UAAUuH,EAAIC,GAAIrH,OAAOmB,GAAOtB,WAAWuH,GAAKC,GAGpDgkE,EAAIrrE,OAAOmB,GAErB,MACJ,IAAK,QACDA,EAAQ7hC,WAAW1d,EAAK,IACxBypH,EAAMA,EAAIE,MAAMpqE,GAChB,MACJ,IAAK,QACDA,EAAQ7hC,WAAW1d,EAAK,IACxBypH,EAAMA,EAAIG,MAAMrqE,GAChB,MACJ,IAAK,SACDkqE,EAAI5zH,EAAI6nB,WAAW1d,EAAK,IACxBypH,EAAI3zH,EAAI4nB,WAAW1d,EAAK,IACxBypH,EAAIthI,EAAIu1B,WAAW1d,EAAK,IACxBypH,EAAIrhI,EAAIs1B,WAAW1d,EAAK,IACxBypH,EAAI/wH,EAAIglB,WAAW1d,EAAK,IACxBypH,EAAI5pB,EAAIniF,WAAW1d,EAAK,IACxB,MACJ,QACI,SAERupH,EAAMA,EAAIr1E,SAASu1E,IAG3B,OAAOF,EAEJ,SAAST,GAAwB7mE,GACpC,MAAM/5D,EAAI+5D,GAAU,GAOpB,MAAO,UANU,MAAP/5D,EAAE2N,EAAY3N,EAAE2N,EAAI,KACb,MAAP3N,EAAE4N,EAAY5N,EAAE4N,EAAI,KACb,MAAP5N,EAAEC,EAAYD,EAAEC,EAAI,KACb,MAAPD,EAAEE,EAAYF,EAAEE,EAAI,KACb,MAAPF,EAAEwQ,EAAYxQ,EAAEwQ,EAAI,KACb,MAAPxQ,EAAE23G,EAAY33G,EAAE23G,EAAI,KAG3B,SAASgpB,GAAqBxqF,GACjC,IAAIisF,EACAJ,EACAx6G,EACJ,GAAI2uB,EAAW,CACX,MAAM0L,EAAYs/E,GAElB,GAAIhrF,EAAUpJ,OAAO3mC,QAAQ,WAAa,EAAG,CACzC,MACMi8H,EAAmB3B,GADVG,GAAwB1qF,IAEvCisF,EAAc,CAACC,EAAiBP,WAAYO,EAAiBN,YAC7DC,EAAW,CAACK,EAAiBL,UAC7Bx6G,EAAQ,CAAC66G,EAAiBngC,OAAQmgC,EAAiBlgC,QACnD,MAAMmgC,EAAkB,GACD,IAAnBF,EAAY,IAA+B,IAAnBA,EAAY,IACpCE,EAAgBn9H,KAAK,aAAai9H,EAAYzwH,KAAK,SAEtC,IAAb6V,EAAM,IAAyB,IAAbA,EAAM,IACxB86G,EAAgBn9H,KAAK,SAASqiB,EAAM7V,KAAK,SAEzB,IAAhBqwH,EAAS,IACTM,EAAgBn9H,KAAK,UAAU68H,EAAS,OAE5C7rF,EAAYmsF,EAAgB3wH,KAAK,SAEhC,CACD,MAAM4wH,EAAiBpsF,EAAUvlC,MAAM,sBACnC2xH,IACAH,EAAcG,EAAe,GAAGz2H,MAAM+1C,IAE1C,MAAM2gF,EAAcrsF,EAAUvlC,MAAM,mBAChC4xH,IACAR,EAAWQ,EAAY,GAAG12H,MAAM+1C,IAEpC,MAAM4gF,EAAatsF,EAAUvlC,MAAM,kBAC/B6xH,IACAj7G,EAAQi7G,EAAW,GAAG32H,MAAM+1C,KAIxC,MAAMwU,EAAK7uC,GAASA,EAAM,GAAKgO,WAAWhO,EAAM,IAAM,EACtD,MAAO,CACHvD,IAAKkyB,GAAa,GAClBisF,YAAa,CACT9kE,GAAI8kE,GAAeA,EAAY,GACzB/rG,SAAS+rG,EAAY,GAAI,IACzB,EACN7kE,GAAI6kE,GAAeA,EAAY,GACzB/rG,SAAS+rG,EAAY,GAAI,IACzB,GAEVJ,SAAU,CACN3qE,MAAO2qE,GAAYA,EAAS,GAAK3rG,SAAS2rG,EAAS,GAAI,IAAM,EAC7DriC,GAAIqiC,GAAYA,EAAS,GACnB3rG,SAAS2rG,EAAS,GAAI,SACtBn9H,EACN+6F,GAAIoiC,GAAYA,EAAS,GACnB3rG,SAAS2rG,EAAS,GAAI,SACtBn9H,GAEV2iB,MAAO,CACH6uC,KACAC,GAAI9uC,GAASA,EAAM,GAAKgO,WAAWhO,EAAM,IAAM6uC,IAI3D,SAASsrE,GAAoB5nE,EAAQjB,GAGjC,MAAO,CAAE5jB,EAFE4jB,EAAM5jB,EAAI6kB,EAAOpsD,EAAImrD,EAAM3jB,EAAI4kB,EAAO95D,EAAI,EAErCk1C,EADL2jB,EAAM5jB,EAAI6kB,EAAOnsD,EAAIkrD,EAAM3jB,EAAI4kB,EAAO75D,EAAI,GAmBlD,SAASwgI,GAAgB3mE,GAE5B,MAAM6nE,EAAKD,GAAoB5nE,EAAQ,CAAE7kB,EAAG,EAAGC,EAAG,IAC5C0sF,EAAKF,GAAoB5nE,EAAQ,CAAE7kB,EAAG,EAAGC,EAAG,IAC5CssF,EAAS,IAAMh3H,KAAK+vB,GAAM/vB,KAAKssD,MAAM6qE,EAAGzsF,EAAGysF,EAAG1sF,GAAK,GAEzD,MAAO,CACHusF,QACAC,MAHW,IAAMj3H,KAAK+vB,GAAM/vB,KAAKssD,MAAM8qE,EAAG1sF,EAAG0sF,EAAG3sF,GAIhD4sF,WAAY/nE,EAAOvpD,EACnBuxH,WAAYhoE,EAAO49C,EACnBzV,OAAQz3F,KAAK2rC,KAAK2jB,EAAOpsD,EAAIosD,EAAOpsD,EAAIosD,EAAOnsD,EAAImsD,EAAOnsD,GAC1Du0F,OAAQ13F,KAAK2rC,KAAK2jB,EAAO95D,EAAI85D,EAAO95D,EAAI85D,EAAO75D,EAAI65D,EAAO75D,GAC1D8hI,SAAUP,GAGX,SAAShB,GAAc1mE,GAC1B,IAAIpsD,EACAC,EACA3N,EACAC,EAUJ,OATI65D,GACApsD,EAAgB,MAAZosD,EAAOpsD,EAAY,EAAIosD,EAAOpsD,EAClCzN,EAAgB,MAAZ65D,EAAO75D,EAAY,EAAI65D,EAAO75D,EAClC0N,EAAImsD,EAAOnsD,EACX3N,EAAI85D,EAAO95D,GAGX0N,EAAIzN,EAAI,EAEL,CACHm2D,GAAIzoD,EAAInD,KAAK2rC,KAAKzoC,EAAIA,EAAIC,EAAIA,GAAKD,EACnC2oD,GAAIr2D,EAAIwK,KAAK2rC,KAAKn2C,EAAIA,EAAIC,EAAIA,GAAKA,GAGpC,SAASsgI,GAAiBzmE,GAC7B,IAAIr4D,EAAI,CAAEwzC,EAAG,EAAGC,EAAG,GAInB,OAHI4kB,IACAr4D,EAAIigI,GAAoB5nE,EAAQr4D,IAE7B,CACH21D,MAAOQ,GAAM1D,UAAU0D,GAAMO,MAAM3tD,KAAKssD,MAAMr1D,EAAEyzC,EAAGzzC,EAAEwzC,IAAM,KAG5D,SAASqrF,GAAoBxmE,GAChC,MAAO,CACHuD,GAAKvD,GAAUA,EAAOvpD,GAAM,EAC5B+sD,GAAKxD,GAAUA,EAAO49C,GAAM,GAM7B,SAAS2oB,GAAexnE,EAAOiB,GAClC,MAAMlxD,EAAMm4H,GAAeloE,EAAM5jB,EAAG4jB,EAAM3jB,GAAG8sF,gBAAgBloE,GAC7D,OAAO,IAAI,GAAMlxD,EAAIqsC,EAAGrsC,EAAIssC,GAKzB,SAASkrF,GAAcziE,EAAM7D,GAChC,OAAO,IAAI,GAAKumE,GAAe1iE,EAAK35D,MAAO81D,GAASumE,GAAe1iE,EAAK9zD,IAAKiwD,IAK1E,SAASqmE,GAAkBjC,EAAUpkE,GACxC,IAAItD,EAAS0nE,aAAoB,GAAWA,EAAS1nE,OAAS0nE,EAI9D,OAHKt6H,MAAMD,QAAQ6yD,KACfA,EAAS,IAEN,IAAI,GAASA,EAAOvtD,IAAKxH,GAAM4+H,GAAe5+H,EAAGq4D,KAErD,SAASomE,GAAmB30F,EAAMuuB,GACrC,MAAMr4D,EAAI,GAAYs/H,iBACtBt/H,EAAEwzC,EAAI1J,EAAK0J,EACXxzC,EAAEyzC,EAAI3J,EAAK2J,EACX,MAAMutF,EAAUhhI,EAAEugI,gBAAgBloE,GAClCr4D,EAAEwzC,EAAI1J,EAAK0J,EAAI1J,EAAKxX,MACpBtyB,EAAEyzC,EAAI3J,EAAK2J,EACX,MAAMwtF,EAAUjhI,EAAEugI,gBAAgBloE,GAClCr4D,EAAEwzC,EAAI1J,EAAK0J,EAAI1J,EAAKxX,MACpBtyB,EAAEyzC,EAAI3J,EAAK2J,EAAI3J,EAAKpV,OACpB,MAAMwsG,EAAUlhI,EAAEugI,gBAAgBloE,GAClCr4D,EAAEwzC,EAAI1J,EAAK0J,EACXxzC,EAAEyzC,EAAI3J,EAAK2J,EAAI3J,EAAKpV,OACpB,MAAMysG,EAAUnhI,EAAEugI,gBAAgBloE,GAC5B0uC,EAAOh+F,KAAKkzC,IAAI+kF,EAAQxtF,EAAGytF,EAAQztF,EAAG0tF,EAAQ1tF,EAAG2tF,EAAQ3tF,GACzDklB,EAAO3vD,KAAKitB,IAAIgrG,EAAQxtF,EAAGytF,EAAQztF,EAAG0tF,EAAQ1tF,EAAG2tF,EAAQ3tF,GACzDwzD,EAAOj+F,KAAKkzC,IAAI+kF,EAAQvtF,EAAGwtF,EAAQxtF,EAAGytF,EAAQztF,EAAG0tF,EAAQ1tF,GACzDklB,EAAO5vD,KAAKitB,IAAIgrG,EAAQvtF,EAAGwtF,EAAQxtF,EAAGytF,EAAQztF,EAAG0tF,EAAQ1tF,GAC/D,OAAO,IAAI,GAAUszD,EAAMC,EAAMtuC,EAAOquC,EAAMpuC,EAAOquC,GCzTzD,IAAIstC,GAAkC,SAAUr0I,EAAG6O,GAC/C,IAAI1P,EAAI,GACR,IAAK,IAAIY,KAAKC,EAAOrB,OAAOkB,UAAUC,eAAe1B,KAAK4B,EAAGD,IAAM8O,EAAEpK,QAAQ1E,GAAK,IAC9EZ,EAAEY,GAAKC,EAAED,IACb,GAAS,MAALC,GAAqD,mBAAjCrB,OAAOsxG,sBACtB,KAAIhyG,EAAI,EAAb,IAAgB8B,EAAIpB,OAAOsxG,sBAAsBjwG,GAAI/B,EAAI8B,EAAE4C,OAAQ1E,IAC3D4Q,EAAEpK,QAAQ1E,EAAE9B,IAAM,GAAKU,OAAOkB,UAAUwxD,qBAAqBjzD,KAAK4B,EAAGD,EAAE9B,MACvEkB,EAAEY,EAAE9B,IAAM+B,EAAED,EAAE9B,KAE1B,OAAOkB,GAeJ,SAAS,GAAKqI,EAAMy2H,EAAwBv1H,GAC/C,IAAIwtB,EACJ,MAAMu2E,EAAkBjlG,EAAKilG,gBAG7B,IAAKA,EACD,OAAO,IAAI,GAAU,EAAG,EAAG,EAAG,GAElC,IACIv2E,EAAM1uB,EAAKo2H,UAEf,MAAO/uH,GAEHqnB,EAAM,CACFqd,EAAG/rC,EAAKwtI,WACRxhG,EAAGhsC,EAAKytI,UACR5iH,MAAO7qB,EAAK0tI,YACZzgH,OAAQjtB,EAAK2tI,cAGrB,GAAIlX,EACA,OAAO,GAAU1+H,OAAO22B,GAG5B,OAAOsoG,GAAmBtoG,EADX+mG,GAAsBz1H,EAAMkB,GAAU+jG,IASlD,SAASmxB,GAAQp2H,EAAM7G,EAAU,IACpC,IAAIk0I,EAMJ,IALwBrtI,EAAKilG,kBAKJb,GAAqBpkG,GAAO,CACjD,GAAI8jG,GAAc9jG,GAAO,CAErB,MAAM,KAAE+vB,EAAI,IAAEtlB,EAAG,MAAEogB,EAAK,OAAEoC,GAAW6/G,GAAsB9sI,GAC3D,OAAO,IAAI,GAAU+vB,EAAMtlB,EAAKogB,EAAOoC,GAE3C,OAAO,IAAI,GAAU,EAAG,EAAG,EAAG,GAElC,IAAI/rB,EAAS/H,EAAQ+H,OAErB,IADkB/H,EAAQu9H,UACV,CACZ,IACI2W,EAAartI,EAAKo2H,UAEtB,MAAO/uH,GACHgmI,EAAa,CACTthG,EAAG/rC,EAAKwtI,WACRxhG,EAAGhsC,EAAKytI,UACR5iH,MAAO7qB,EAAK0tI,YACZzgH,OAAQjtB,EAAK2tI,cAGrB,IAAKzsI,EACD,OAAO,GAAUnJ,OAAOs1I,GAI5B,OAAOrW,GAAmBqW,EADX5X,GAAsBz1H,EAAMkB,IAI/C,CACI,MAAMuT,EAAWzU,EAAKoH,WAChBlP,EAAIuc,EAAStZ,OACnB,GAAU,IAANjD,EACA,OAAOk+H,GAAQp2H,EAAM,CAAEkB,WAEtBA,IACDA,EAASlB,GAEb,IAAK,IAAIvJ,EAAI,EAAGA,EAAIyB,EAAGzB,GAAK,EAAG,CAC3B,MAAM+pE,EAAQ/rD,EAAShe,GACvB,IAAIm3I,EAEAA,EAD4B,IAA5BptE,EAAMp5D,WAAWjM,OACLi7H,GAAQ51D,EAAO,CAAEt/D,WAIjBk1H,GAAQ51D,EAAO,CAAEt/D,SAAQw1H,WAAW,IAMhD2W,EAJCA,EAIYA,EAAWxvF,MAAM+vF,GAHjBA,EAMrB,OAAOP,GAIR,SAASJ,GAAqBjtI,GACjC,IAAI7B,EAAO6B,EACPi/E,EAAU9gF,EAAOA,EAAK8gF,QAAQp8E,cAAgB,GAElD,KAAmB,MAAZo8E,GACH9gF,EAAOA,EAAK6gC,kBACZigD,EAAU9gF,EAAOA,EAAK8gF,QAAQp8E,cAAgB,GAElD,MAAM4J,EAAQzV,IACV,MAAMwB,EAAI2F,EAAKM,aAAazH,GACtB4e,EAAIpd,EAAI6zB,WAAW7zB,GAAK,EAC9B,OAAOk9D,OAAO/xB,MAAM/tB,GAAK,EAAIA,GAEjC,IAAIre,EACAw9D,EACJ,OAAQkqB,GACJ,IAAK,OACDlqB,EAAO,IAAI,GAAUtoD,EAAK,KAAMA,EAAK,KAAMA,EAAK,SAAUA,EAAK,WAC/D,MACJ,IAAK,SACDlV,EAAIkV,EAAK,KACTsoD,EAAO,IAAI,GAAUtoD,EAAK,MAAQlV,EAAGkV,EAAK,MAAQlV,EAAG,EAAIA,EAAG,EAAIA,GAKxE,OAAOw9D,EAGJ,SAASi4E,GAAuBhtI,EAAMkB,GACzC,IAAI0vD,EAASgnE,KACb,GAAIxzB,GAAqBljG,IAAWkjG,GAAqBpkG,GAAO,CAC5D,IAAI7B,EAAO6B,EACX,MAAMuuI,EAAa,GACnB,KAAOpwI,GAAQA,IAAS+C,GAAQ,CAC5B,MACMstI,EAAa9W,GADDv5H,EAAKM,aAAa,cAAgB,MAEpD8vI,EAAWvyI,KAAKwyI,GAChBrwI,EAAOA,EAAKU,WAEhB0vI,EAAW94H,UAAUkvB,QAAS9tC,IAC1B+5D,EAASA,EAAO/N,SAAShsD,KAGjC,OAAO+5D,EAMJ,SAAS6kE,GAAsBz1H,EAAMkB,GACxC,GAAIkjG,GAAqBljG,IAAWkjG,GAAqBpkG,GAAO,CAC5D,MAAM6tI,EAAY3sI,EAAOwjG,eACnBopC,EAAU9tI,EAAK0kG,eACrB,GAAImpC,GAAaC,EACb,OAAOD,EAAUE,UAAUlrF,SAASirF,GAI5C,OAAOlW,KAMJ,SAAS3B,GAAaj2H,EAAM+rC,EAAGC,GAClC,MAAM0yC,EAAM1+E,aAAgB21H,cACtB31H,EACAA,EAAKilG,gBACL1sG,EAAImmF,EAAIm5C,iBACdt/H,EAAEwzC,EAAIA,EACNxzC,EAAEyzC,EAAIA,EACN,IACI,MAAMosF,EAAM15C,EAAIgmB,eACV+pC,EAAcl2I,EAAEugI,gBAAgBV,EAAI2V,WACpCW,EAAsBjZ,GAAsBz1H,EAAM0+E,GAAKqvD,UAC7D,OAAOU,EAAY3V,gBAAgB4V,GAEvC,MAAOrnI,GACH,OAAO9O,GAuBR,SAAS29H,GAAgBl2H,GAC5B,MAAMyM,EAAQzV,IACV,MAAMwB,EAAIwH,EAAKvB,aAAazH,GACtB4e,EAAIpd,EAAI6zB,WAAW7zB,GAAK,EAC9B,OAAOk9D,OAAO/xB,MAAM/tB,GAAK,EAAIA,GAEjC,OAAQ5V,aAAgB2kG,YAAc3kG,EAAKiH,SAASpE,eAChD,IAAK,OACD,OAAO,IAAI,GAAU4J,EAAK,KAAMA,EAAK,KAAMA,EAAK,SAAUA,EAAK,WACnE,IAAK,SACD,OAAO,IAAI,GAAQA,EAAK,MAAOA,EAAK,MAAOA,EAAK,KAAMA,EAAK,MAC/D,IAAK,UACD,OAAO,IAAI,GAAQA,EAAK,MAAOA,EAAK,MAAOA,EAAK,MAAOA,EAAK,OAChE,IAAK,WAAY,CACb,MAAM6gD,EAASo9E,GAAwB1qI,GACvC,OAAO,IAAI,GAASstD,GAExB,IAAK,UAAW,CACZ,MAAMA,EAASo9E,GAAwB1qI,GAIvC,OAHIstD,EAAOnyD,OAAS,GAChBmyD,EAAOtxD,KAAKsxD,EAAO,IAEhB,IAAI,GAASA,GAExB,IAAK,OAAQ,CACT,IAAIv2D,EAAIiJ,EAAKvB,aAAa,KAI1B,OAHK,GAAKmwI,QAAQ73I,KACdA,EAAI,GAAKi0D,UAAUj0D,IAEhB,GAAKylB,MAAMzlB,GAEtB,IAAK,OACD,OAAO,IAAI,GAAK0V,EAAK,MAAOA,EAAK,MAAOA,EAAK,MAAOA,EAAK,OAMjE,OAAO2pH,GAAQp2H,GAEZ,SAAS+sI,GAAgB/sI,EAAMqtD,EAAKnsD,GACvC,MAAMw9E,EAAM1+E,aAAgB21H,cAAgB31H,EAAOA,EAAKilG,gBAElDlwC,EAAOqhE,GADbl1H,EAASA,GAAUw9E,GAEbzxB,EAAS8H,EAAKb,YACpB,IAAKa,EAAKisC,oCAAoC3zC,GAC1C,OAAO,KAEX,IAAIwhF,EAAO,KACX,MAAM5vD,EAAUj/E,EAAKi/E,QAAQp8E,cAI7B,GAAgB,SAAZo8E,EAAoB,CACpB,MAAM6vD,EAAQ,IAAI,GAAUziH,WAAWrsB,EAAKvB,aAAa,MAAQ,KAAM4tB,WAAWrsB,EAAKvB,aAAa,MAAQ,KAAM4tB,WAAWrsB,EAAKvB,aAAa,UAAY,KAAM4tB,WAAWrsB,EAAKvB,aAAa,WAAa,MAErMswI,EAAatZ,GAAsBz1H,EAAMkB,GACzC8tI,EAAuBzX,GAAgBwX,GAGvCE,EAAUvwD,EAAIi5C,qBACpBsX,EAAQC,WAAWF,EAAqBnW,SAAU5rE,EAAOlhB,EAAGkhB,EAAOjhB,GACnE,MAAM3J,EAAO20F,GAAmB8X,EAAOG,EAAQr+E,OAAO/N,SAASksF,IAC/DF,EAAO,GAAU92I,OAAOsqC,GAAM2+D,oCAAoC3zC,EAAK2hF,EAAqBnW,eAE3F,GAAgB,SAAZ55C,GACO,YAAZA,GACY,aAAZA,GACY,WAAZA,GACY,YAAZA,EAAuB,CACvB,MACM8sD,EAAU,GADa,SAAZ9sD,EAAqBj/E,EAAOsoD,GAAOtoD,IAEpD,IAAIovI,EAAcr3F,IACds3F,EAAiB,GACrB,IAAK,IAAI54I,EAAI,EAAG25D,EAAK27E,EAAQ5wI,OAAQ1E,EAAI25D,EAAI35D,GAAK,EAAG,CACjD,MAAMkpD,EAASosF,EAAQt1I,GAGvB,IAAI84I,EAAK1X,GAAel4E,EAAO5T,EAAG4T,EAAO3T,GACzCujG,EAAKA,EAAGzW,gBAAgBrD,GAAsBz1H,EAAMkB,IACpD,MAAMsuI,EAAM,GAAMz3I,OAAOw3I,GACnBE,EAAiBD,EAAInlF,SAAS4C,GAI9ByiF,EAAkC,IAApBF,EAAInlF,SAASgD,GAC3BhD,EAAWolF,EAAiBC,EAC9BrlF,EAAW+kF,GACXA,EAAc/kF,EACdglF,EAAiB,CAAC,CAAE1vF,SAAQ+vF,iBAEvBrlF,EAAW+kF,EAAc,GAC9BC,EAAerzI,KAAK,CAAE2jD,SAAQ+vF,gBAGtCL,EAAezuI,KAAK,CAAC4D,EAAGC,IAAMD,EAAEkrI,YAAcjrI,EAAEirI,aAC5CL,EAAe,KACfR,EAAO,GAAM92I,OAAOs3I,EAAe,GAAG1vF,SAG9C,OAAOkvF,EAEJ,SAAS,GAAQ7uI,EAAM7G,GAC1B,OAAO60I,GAAgBhuI,EAAM7G,EAAS,WAEnC,SAASm9H,GAAiBt2H,EAAM7G,GACnC,OAAO60I,GAAgBhuI,EAAM7G,EAAS,oBAE1C,SAAS60I,GAAgBhuI,EAAM7G,EAAS4B,GAKpC,MAAMs5B,EAAU6vE,GAAiBnpG,GACjCiF,EAAKpB,YAAYy1B,GACjB,IACI,OAAO45G,GAAe55G,EAASl7B,GAEnC,MAAOuI,IAGP,MAAO,OAEX,SAASusI,GAAe55G,EAASl7B,GAC7B,MAAM,MAAE2B,EAAK,SAAEo4B,EAAQ,OAAEizB,GAAWhtD,EACpC,GAAKk7B,EADgDw4G,GAAO1zI,EAAS,CAAC,QAAS,WAAY,YAE3F2B,GAASu5B,EAAQ3pB,iBAAiB,aAAc5P,GAChDo4B,GAAYmB,EAAQ3pB,iBAAiB,WAAYwoB,GACjDizB,GAAU9xB,EAAQ3pB,iBAAiB,cAAey7C,GAClD,MAAM+nF,EAAM75G,EAEZ,OADA65G,EAAIC,eACG,IAAMD,EAAIE,aAMd,SAAS7X,GAAiBv2H,EAAM7G,EAASuvC,GAC5C,MAAM1gC,EAAKq8F,GAAS37D,GAEdrU,EAAU6vE,GAAiB,iBAC3ByrC,EAAQzrC,GAAiB,SAC/B,GAAKyrC,EAAO,CAAE,aAAc,IAAI3nI,IAChCqsB,EAAQz1B,YAAY+wI,GACpB3vI,EAAKpB,YAAYy1B,GACjB,IACI,OAAO45G,GAAe55G,EAASl7B,GAEnC,MAAOkO,GAEH,GAAyD,SAArD/K,SAAS+N,gBAAgB5L,aAAa,WAAuB,CAE7D,MAAMyvI,EAAM75G,EACZ65G,EAAI3T,UAAY,GAChB,MAAMj4F,EAAM7lC,OACNmzI,EAAc1B,EAAIzvI,aAAa,MACjCmxI,IACAttG,EAAIutG,QAAQD,GAAe1B,GAE/B,MAAMp5H,EAAUwtB,EAAIwtG,WAAW5B,GAC/B,IAAK,IAAIz3I,EAAI,EAAG25D,EAAKt7C,EAAQ3Z,OAAQ1E,EAAI25D,EAAI35D,GAAK,EAAG,CACjD,MAAMyK,EAAS4T,EAAQre,GACjBslI,EAAW,IAAIz5F,EAAIu7F,SAASqQ,EAAKhtI,EAAQzK,GAC/C6rC,EAAIi4F,UAAUv+H,KAAK+/H,GACnBmS,EAAI3T,UAAU9jI,GAAKslI,EACnBA,EAASgU,aAIrB,MAAO,OAEJ,SAASjD,GAAsB9sI,GAClC,IAAI+vB,EAAO,EACPtlB,EAAM,EACNogB,EAAQ,EACRoC,EAAS,EACb,GAAIjtB,EAAM,CACN,IAAIw+B,EAAUx+B,EACd,KAAOw+B,GACHzO,GAAQyO,EAAQ6vG,WAChB5jI,GAAO+zB,EAAQ8vG,UACf9vG,EAAUA,EAAQiE,aACdjE,IACAzO,GAAQ7C,SAAS,GAAiBsR,EAAS,cAAe,IAC1D/zB,GAAOyiB,SAAS,GAAiBsR,EAAS,aAAc,KAGhE3T,EAAQ7qB,EAAKksB,YACbe,EAASjtB,EAAKqtB,aAElB,MAAO,CAAE0C,OAAMtlB,MAAKogB,QAAOoC,UC3ZxB,SAAS,GAAUjtB,EAAM4wD,EAAQz3D,EAAU,IAC9C,GAAc,MAAVy3D,EACA,OAAO8mE,GAAwB,GAAK13H,EAAM,cAE9C,GAAI7G,EAAQ48L,SAER,YADA/1L,EAAKtB,aAAa,YAAa+4H,GAAwB7mE,IAG3D,MAAMolI,EAAgBh2L,EAAKgtC,UACrBipJ,EAAet+D,GAAmB/mE,GACxColI,EAAczC,QAAQ2C,WAAWD,GAE9B,SAAS,GAAUj2L,EAAMm0D,EAAIC,EAAK,EAAGj7D,EAAU,IAClD,IAAI08L,EAAgB,GAAK71L,EAAM,aAC/B,MAAMgtC,EAAYwqF,GAAqBq+D,GACvC,GAAU,MAAN1hI,EACA,OAAOnnB,EAAUisF,YAErB48D,EAAgB7oJ,EAAUlyB,IAC1B+6K,EAAgBA,EAAcr0L,QAAQ,sBAAuB,IAAIoiC,OACjE,MAEMuyJ,EAAe,aAFPh9L,EAAQ48L,SAAW5hI,EAAKnnB,EAAUisF,YAAY9kE,GAAKA,KACnDh7D,EAAQ48L,SAAW3hI,EAAKpnB,EAAUisF,YAAY7kE,GAAKA,KAIjEp0D,EAAKtB,aAAa,YAAa,GAAGy3L,KAAgBN,IAAgBjyJ,QAE/D,SAAS,GAAO5jC,EAAMkuD,EAAOsoC,EAAIC,EAAIt9F,EAAU,IAClD,IAAI08L,EAAgB,GAAK71L,EAAM,aAC/B,MAAMgtC,EAAYwqF,GAAqBq+D,GACvC,GAAa,MAAT3nI,EACA,OAAOlhB,EAAU6rF,SAErBg9D,EAAgB7oJ,EAAUlyB,IAC1B+6K,EAAgBA,EAAcr0L,QAAQ,mBAAoB,IAAIoiC,OAC9DsqB,GAAS,IACT,MAEMkoI,EAAY,UAFDj9L,EAAQ48L,SAAW7nI,EAAQlhB,EAAU6rF,SAAS3qE,MAAQA,IAC/C,MAANsoC,GAAoB,MAANC,EAAa,IAAID,KAAMC,IAAO,MAE9Dz2F,EAAKtB,aAAa,YAAa,GAAGm3L,KAAiBO,IAAYxyJ,QAE5D,SAAS,GAAM5jC,EAAMktD,EAAIC,GAC5B,IAAI0oI,EAAgB,GAAK71L,EAAM,aAC/B,MAAMgtC,EAAYwqF,GAAqBq+D,GACvC,GAAU,MAAN3oI,EACA,OAAOlgB,EAAU3uB,MAErB8uC,EAAW,MAANA,EAAaD,EAAKC,EACvB0oI,EAAgB7oJ,EAAUlyB,IAC1B+6K,EAAgBA,EAAcr0L,QAAQ,kBAAmB,IAAIoiC,OAC7D,MAAMkyJ,EAAW,SAAS5oI,KAAMC,KAChCntD,EAAKtB,aAAa,YAAa,GAAGm3L,KAAiBC,IAAWlyJ,QAE3D,SAASyyF,GAAuBr2H,EAAMgsB,EAAUgoB,EAAW9yC,GAC9D,MAAM2vB,EAAM,GAAM94B,OAAOi0B,GACnBqhC,EAAM,GAAMt1D,OAAOi8C,GACzB,IAAK9yC,EAAQ,CAETA,EADYlB,aAAgB21H,cAAgB31H,EAAOA,EAAKilG,gBAQ5D,MAAMzsG,EAAI,GAAMwH,GAChBA,EAAKtB,aAAa,YAAa,IAC/B,MAAMq2D,EAAOqhE,GAAQp2H,EAAM,CAAEkB,WAAUmd,MAAM7lB,EAAE00D,GAAI10D,EAAE20D,IAE/CkpI,EAAoB1+D,KAC1B0+D,EAAkBC,cAAcvhI,EAAKhpB,EAAIgpB,EAAKlqC,MAAQ,GAAIkqC,EAAK/oB,EAAI+oB,EAAK9nC,OAAS,GAEjF,MAAMspK,EAAqB5+D,KACrBzpE,EAAQr9B,EAAIg9B,aAAaR,EAAKx8B,EAAI5vB,QAAQ2rD,UAAU,EAAG,IACzDsB,GACAqoI,EAAmBrnD,UAAUhhF,EAAO,EAAG,GAG3C,MAAMsoI,EAAsB7+D,KACtB8+D,EAAgB5lK,EAAI5vB,QAAQkuD,KAAK9B,EAAK0H,EAAKlqC,MAAQ,GACzD2rK,EAAoBF,aAAa,EAAIzlK,EAAIkb,EAAI0qJ,EAAc1qJ,EAAG,EAAIlb,EAAImb,EAAIyqJ,EAAczqJ,GAExF,MAAMosF,EAAM3C,GAAsBz1H,EAAMkB,GAElC8rC,EAAY2qF,KAClB3qF,EAAU0pJ,UAAUF,EAAoB5lI,OAAO/N,SAAS0zI,EAAmB3lI,OAAO/N,SAASwzI,EAAkBzlI,OAAO/N,SAASu1E,EAAI/5G,MAAM7lB,EAAE00D,GAAI10D,EAAE20D,QAC/IntD,EAAKtB,aAAa,YAAa+4H,GAAwBzqF,EAAU4jB,SCxF9D,MAAM,GACT,YAAY1vD,EAAQ01L,EAAiBC,GACjCr9L,KAAKs9L,iBAAmB,EACxBt9L,KAAKquI,OAAS,EACdruI,KAAKsuI,OAAS,EACdtuI,KAAKwoH,UAAY5B,GAAS2B,iBAAiB,SACrC,QACA,aACNvoH,KAAK0H,OAASA,EACd1H,KAAKo9L,gBAAkBA,EACvBp9L,KAAKq9L,aAAeA,EACpBr9L,KAAKu9L,QAAUv9L,KAAKu9L,QAAQ9+L,KAAKuB,MACjCA,KAAKw9L,SAAWx9L,KAAKw9L,SAAS/+L,KAAKuB,MAEvC,SACQ4mH,GAASoB,gBACThoH,KAAK0H,OAAOwJ,iBAAiBlR,KAAKwoH,UAAWxoH,KAAKu9L,QAAS,CACvDpvH,SAAS,IAIb,KAAOnuE,KAAK0H,QAAQ0gB,GAAG,aAAcpoB,KAAKu9L,SAGlD,UACQ32E,GAASoB,gBACThoH,KAAK0H,OAAOmZ,oBAAoB7gB,KAAKwoH,UAAWxoH,KAAKu9L,SAGrD,KAAOv9L,KAAK0H,QAAQ+gB,IAAI,cAGhC,QAAQ5a,GACJ,GAAyB,MAArB7N,KAAKq9L,eAAyBr9L,KAAKq9L,aAAaxvL,GAChD,OAKJ,IAAI6vL,EAHJ19L,KAAKquI,QAAUxgI,EAAEwgI,OACjBruI,KAAKsuI,QAAUzgI,EAAEygI,OACjBzgI,EAAEob,iBAEkB,IAAhBjpB,KAAKquI,QAAgC,IAAhBruI,KAAKsuI,SAC1BzgI,EAAEkb,kBACF20K,GAAU,IAEE,IAAZA,GAA8C,IAA1B19L,KAAKs9L,mBACzBt9L,KAAKs9L,iBAAmBllK,sBAAsB,KAC1Cp4B,KAAKw9L,SAAS3vL,MAI1B,SAASA,GACL7N,KAAKs9L,iBAAmB,EACxBt9L,KAAKo9L,gBAAgBvvL,EAAG7N,KAAKquI,OAAQruI,KAAKsuI,QAC1CtuI,KAAKquI,OAAS,EACdruI,KAAKsuI,OAAS,GCjDf,MAAM,GAAW,GAAOvS,SAOlB4hE,GAAe,GAAOp/L,OAOtB,GAAgB,GAAO8+H,cCrB7B,SAAS,GAAS33H,EAAIk2B,EAAQ,IACjC,IAAIjC,EAAQ,KACZ,MAAO,IAAIxkB,KACHwkB,GACAoC,aAAapC,GAEjBA,EAAQ12B,OAAO2c,WAAW,KACtBla,EAAGlC,MAAMxD,KAAMmV,IAChBymB,ICNJ,MAAM,GAAyC,oBAAnBysH,eCD5B,SAAsB7wB,GACzB,IAAIsmE,EAAS,KACThpH,EAAY,GAChB,MAAM5rD,EAAU,GAAS,KACrB4rD,EAAU3pC,QAASs8H,IACfA,EAASjwC,OAiBX//C,EAAU,KACRqmH,IACAA,EAAOn4C,aACP7wE,EAAY,GACZgpH,EAAS,OAajB,MAAO,CACHtmE,UACA/4H,KA3BUgpK,IACLq2B,IACDA,EARO,MACX,MAAM9+L,EAAI,IAAIqpJ,eAAen/H,GAG7B,OAFAlqB,EAAEspE,QAAQkvD,GACVtuG,IACOlqB,GAIMT,KAEwB,IAAjCu2E,EAAUrxE,QAAQgkK,IAClB3yF,EAAUtyE,KAAKilK,IAuBnBhwF,UACAjuC,OAdYi+H,IACZ,MAAMpyJ,EAAMy/D,EAAUrxE,QAAQgkK,IACjB,IAATpyJ,GACAy/D,EAAUztE,OAAOgO,EAAK,GAGD,IAArBy/D,EAAUnzE,QAAgBm8L,GAC1BrmH,OCpCL,SAAsB+/C,GACzB,IAAIsmE,EAAS,KACThpH,EAAY,GAChB,MA2BM5rD,EAAU,GAAS,KACrB4rD,EAAU3pC,QAASs8H,GAAaA,EAASjwC,MAUvC//C,EAAU,KACRqmH,GAAUA,EAAOz4L,aACby4L,EAAO/hL,iBACP+hL,EAAO/hL,gBAAgB/K,YAAY6P,oBAAoB,SAAUqI,GAErE40K,EAAOz4L,WAAWC,YAAYw4L,GAC9BA,EAAS,KACThpH,EAAY,KAapB,MAAO,CACH0iD,UACA/4H,KA9BUgpK,IACLq2B,IACDA,EAhCO,MACX,GAA2C,WAAvC/sK,iBAAiBymG,GAAShlG,SAAuB,CACnCglG,EAAQlzG,MAChBkO,SAAW,WAErB,MAAMvuB,EAAMnB,SAASiC,cAAc,UAoBnC,OAnBAd,EAAIuiC,OAAS,KACTviC,EAAI8X,gBAAgB/K,YAAYE,iBAAiB,SAAUgY,GAC3DA,KAEJjlB,EAAIqgB,MAAMC,QAAU,QACpBtgB,EAAIqgB,MAAMkO,SAAW,WACrBvuB,EAAIqgB,MAAMrT,IAAM,IAChBhN,EAAIqgB,MAAMiS,KAAO,IACjBtyB,EAAIqgB,MAAMmP,OAAS,OACnBxvB,EAAIqgB,MAAM+M,MAAQ,OAClBptB,EAAIqgB,MAAM8V,SAAW,SACrBn2B,EAAIqgB,MAAM25K,cAAgB,OAC1Bh6L,EAAIqgB,MAAMw0J,OAAS,KACnB70K,EAAIqgB,MAAM0R,QAAU,IACpB/xB,EAAIiB,aAAa,WAAY,MAC7BjB,EAAI1C,KAAO,YACXi2H,EAAQpyH,YAAYnB,GAEpBA,EAAIse,KAAO,cACJte,GAOM1F,KAEwB,IAAjCu2E,EAAUrxE,QAAQgkK,IAClB3yF,EAAUtyE,KAAKilK,IA0BnBhwF,UACAjuC,OAdYi+H,IACZ,MAAMpyJ,EAAMy/D,EAAUrxE,QAAQgkK,IACjB,IAATpyJ,GACAy/D,EAAUztE,OAAOgO,EAAK,GAGD,IAArBy/D,EAAUnzE,QAAgBm8L,GAC1BrmH,OC1DL,IAAI,GCDAymH,GCoEA0vC,IFlEX,SAAWhwC,GACP,MAAMvuL,EAAQ,IAAImxD,QAClB,SAAS1iE,EAAI05H,GACT,IAAIsmE,EAASzuL,EAAMvR,IAAI05H,GACvB,OAAIsmE,IAGJA,EAAS,GAAatmE,GACtBnoH,EAAMiT,IAAIk1G,EAASsmE,GACZA,GAMXF,EAAWn/L,KAAO,CAAC+4H,EAASlrF,KACxB,MAAMwxJ,EAAShgM,EAAI05H,GAEnB,OADAsmE,EAAOr/L,KAAK6tC,GACL,IAAMwxJ,EAAOt0J,OAAO8C,IAE/BsxJ,EAAW/kI,MAAS2+D,KATpB,SAAgBsmE,GACZA,EAAOrmH,UACPpoE,EAAM+zE,OAAO06G,EAAOtmE,SASpB55G,CADe9f,EAAI05H,KArB3B,CAwBG,KAAe,GAAa,KCzB/B,SAAW0mE,GACP,MAAM3gL,EAAQ,GAER0H,EAAO,GACb,IAAIk5K,EAAW,EACf,MAAM/7H,EAAU,IAAMY,YAAYh3C,MAC5BoyK,EAAQ7gL,GAAUA,EAAM,GACxB2a,EAAYoU,GAAyB,IAAlBrnB,EAAKziB,KAAK8pC,IAAa8xI,IAC1CA,EAAc,MAChB,MAAM9xI,EAAK,IAAMrnB,EAAK5d,OAAO,EAAG4d,EAAKtjB,QAAQwpC,QAAS7tC,GAAMA,KAC5D,GAA8B,oBAAnBohL,eAAgC,CACvC,MAAM,MAAEC,EAAK,MAAEC,GAAU,IAAIF,eAE7B,OADAC,EAAMH,UAAYlyI,EACX,IAAMsyI,EAAMR,YAAY,MAEnC,MAAO,IAAMx+J,WAAW0sB,IAPR,GASdgyJ,EAAY,KACdH,EAAW/7H,IAhBG,IAAO,GAiBrB,IAAIm8H,EAAMH,EAAK7gL,GACf,KAAOghL,IAAQL,EAAUM,eAAe,CACpC,MAAM,SAAEl4L,EAAQ,KAAEic,GAASg8K,EAC3BA,EAAIj4L,SAAW,KACf,MAAMqH,EAAOrH,GAAYA,EAASic,GAC9B5U,EACA4wL,EAAIj4L,SAAWqH,EAGf4P,EAAMhO,QAEVgvL,EAAMH,EAAK7gL,GAEfghL,GAAOrmK,EAASomK,IAEpBJ,EAAUO,aAAe,CAACn4L,EAAUic,KAChC,MAAMs8J,EAAO,CACTv4K,WACAic,QAEJhF,EAAM/a,KAAKq8K,GACX3mJ,EAASomK,IAEbJ,EAAUM,YAAc,KACpB,IAAI1qD,EAAI7/D,EACR,OAAwF,QAA9EA,EAA0B,QAApB6/D,EAAKt6E,iBAA8B,IAAPs6E,OAAgB,EAASA,EAAG4qD,kBAA+B,IAAPzqH,OAAgB,EAASA,EAAG0qH,mBAAqBv8H,KAAa+7H,GA5CtK,CA8CGD,KAAcA,GAAY,KC9CtB,MAAM,GACT,YAAYv+L,GACRK,KAAKL,QAAUhC,OAAO+rD,OAAO,GAAI/pD,GACjCK,KAAKuiB,KAAOviB,KAAKL,QAAQ4iB,MAAQ,GACjCviB,KAAKu2I,SAAWv2I,KAAKu2I,SAAS93I,KAAKuB,MACnCA,KAAK6tO,WAAa7tO,KAAK6tO,WAAWpvO,KAAKuB,MAE3C,YACI,OAAOrC,OAAOyR,KAAKpP,KAAKuiB,MAE5B,SAAS/kB,EAAMmC,EAAS66E,GAAQ,GAC5B,GAAoB,iBAATh9E,EAIP,YAHAG,OAAOyR,KAAK5R,GAAM2tC,QAAS3sC,IACvBwB,KAAKu2I,SAAS/3I,EAAKhB,EAAKgB,GAAMmB,MAIlCK,KAAK8tO,MAAMtwO,IAAUg9E,GAAUosC,GAASyB,iBACxCroH,KAAK+tO,aAAavwO,GAEtB,MAAM+hB,EAAUvf,KAAKL,QAAQ4f,QACvByuN,EAASzuN,EACT,EAAYniB,KAAKmiB,EAASvf,KAAMxC,EAAMmC,GACtCA,EAEN,OADAK,KAAKuiB,KAAK/kB,GAAQwwO,EACXA,EAEX,WAAWxwO,GACP,MAAMwwO,EAASxwO,EAAOwC,KAAKuiB,KAAK/kB,GAAQ,KAExC,cADOwC,KAAKuiB,KAAK/kB,GACVwwO,EAEX,IAAIxwO,GACA,OAAOA,EAAOwC,KAAKuiB,KAAK/kB,GAAQ,KAEpC,MAAMA,GACF,QAAOA,GAA0B,MAAnBwC,KAAKuiB,KAAK/kB,GAE5B,aAAaA,GAET,IAKI,MAHIwC,KAAKL,QAAQsuO,YACb,EAAY7wO,KAAK4C,KAAKL,QAAQsuO,WAAYjuO,KAAMxC,GAE9C,IAAIwF,MAAM,GAAG,EAAUuqD,WAAWvtD,KAAKL,QAAQ4B,oBAAoB/D,0BAE7E,MAAO0qB,GACH,MAAMA,GAGd,WAAW1qB,EAAMm5B,GACb,MAAM,IAAI3zB,MAAMhD,KAAKowL,sBAAsB5yL,EAAMm5B,IAErD,sBAAsBn5B,EAAMm5B,GACxB,MAAM0vL,EAAarmN,KAAKkuO,6BAA6B1wO,GAC/C2wO,EAAWx3M,EACX,GAAGA,KAAU,EAAU41B,WAAWvsD,KAAKL,QAAQ4B,QAC/CvB,KAAKL,QAAQ4B,KACnB,MAAO,GAEJ,EAAUgsD,WAAW4gL,iBAAwB3wO,qBAAwB6oN,EAAa,kBAAkBA,MAAiB,KAE5H,6BAA6B7oN,GACzB,OAAO,EAAU4yL,sBAAsB5yL,EAAMG,OAAOyR,KAAKpP,KAAKuiB,MAAQsuK,GAAcA,KAGjF+8C,GAKR,KAAa,GAAW,KADdrvO,OAHT,SAAgBoB,GACZ,OAAO,IAAIiuO,GAASjuO,ICtErB,MAAM,GAAM,CACfyuO,UAAW,aACXC,UAAW,aACXC,UAAW,aACXC,UAAW,aACXC,aAAc,gBACdC,WAAY,cACZC,aAAc,gBACdC,SAAU,YACVC,QAAS,WACTC,QAAS,WACTC,oBAAqB,sBACrBC,kBAAmB,oBACnBC,iBAAkB,mBAClBC,eAAgB,iBAChBC,0BAA2B,4BCblB,GAAM,GAON,GAAO,CAChB18M,SAAU28M,GAAgB,IAAK,QAAS,WAE/B,GAAO,CAChB38M,SAAU28M,GAAgB,IAAK,SAAU,WAIhCC,GAAQ,CACjB58M,SAAU28M,GAAgB,IAAK,QAAS,WAE/BE,GAAQ,CACjB78M,SAAU28M,GAAgB,IAAK,SAAU,WAMhCG,GAAW,CACpBhtN,IAAKitN,GAAW,QAAS,UAEhBC,GAAY,CACrBltN,IAAKitN,GAAW,SAAU,WAEjBE,GAAQ,CACjBntN,IAAKitN,GAAW,KAAM,UAEbG,GAAQ,CACjBptN,IAAKitN,GAAW,KAAM,WAEbI,GAAgB,CACzBrtN,IAAK,CAAEstN,IACH,MAAMC,EAAUN,GAOjB,IAPsC,SAC/BO,EAAWP,GAMlB,IANuC,UACtC,OAAO,SAAUrxO,EAAOyB,GACpB,MAAMowO,EAAUpwO,EAAQowO,QAClBrqO,EAAKqqO,EAAQt8M,OAASs8M,EAAQ1+M,MAAQw+M,EAAUC,EACtD,OAAO,EAAY1yO,KAAKsI,EAAI1F,KAAM9B,EAAOyB,KAN5C,IAUIqwO,GAAoB,CAC7B,IAAInrO,GAAK,QAAEkrO,IACP,IAAI7xO,EAAQ20B,WAAWhuB,GACvB,MAAMorO,EAAa,EAAU/+C,aAAarsL,GACtCorO,IACA/xO,GAAS,KAEb,MAAMgyO,EAAiBpoO,KAAK2rC,KAAKs8L,EAAQt8M,OAASs8M,EAAQt8M,OAASs8M,EAAQ1+M,MAAQ0+M,EAAQ1+M,OAC3F,IAAI8+M,EASJ,OARIj0K,OAAO9lC,SAASl4B,KAEZiyO,EADAF,GAAe/xO,GAAS,GAAKA,GAAS,EAC7BA,EAAQgyO,EAGRpoO,KAAKitB,IAAI72B,EAAQgyO,EAAgB,IAG3C,CAAEnyO,EAAGoyO,KAGPC,GAAQ,CACjB9tN,IAAKitN,GAAW,KAAM,UAEbc,GAAQ,CACjB/tN,IAAKitN,GAAW,KAAM,WAEbe,GAAkB,CAC3BhuN,IAAKiuN,GAAS,CAAEC,aAAa,KAEpBC,GAAiB,CAC1BnuN,IAAKiuN,GAAS,CAAEC,aAAa,KAEpBE,GAAuB,CAChCpuN,IAAKquN,GAAc,CAAEH,aAAa,KAEzBI,GAAsB,CAC/BtuN,IAAKquN,GAAc,CAAEH,aAAa,KAIzBK,GAAOlB,GACPmB,GAAOR,GACPS,GAAYL,GAGZM,GAAQ,GACRC,GAAQ,GACRC,GAAY5B,GACZ6B,GAAa3B,GAG1B,SAASL,GAAgBzgG,EAAMz5G,EAAW2+B,GACtC,MAAO,CAAC/uD,GAAOkrO,cACX,GAAW,MAAPlrO,EACA,OAAO,KAEX,IAAI3G,EAAQ20B,WAAWhuB,GACvB,MAAMorO,EAAa,EAAU/+C,aAAarsL,GAI1C,IAAI0wB,EACJ,GAJI06M,IACA/xO,GAAS,KAGTg+D,OAAO9lC,SAASl4B,GAAQ,CACxB,MAAMkzO,EAAYrB,EAAQn8K,GAEtBr+B,EADA06M,GAAe/xO,EAAQ,GAAKA,EAAQ,EAC5BkzO,EAAU1iG,GAAQqhG,EAAQ96M,GAAa/2B,EAGvCkzO,EAAU1iG,GAAQxwI,EAGlC,MAAMi4D,EAAQ,IAAI,GAElB,OADAA,EAAMu4E,GAAQn5G,GAAS,EAChB4gC,GAGf,SAASo5K,GAAWK,EAAU36M,GAC1B,OAAO,SAAUpwB,GAAK,QAAEkrO,IACpB,IAAI7xO,EAAQ20B,WAAWhuB,GACvB,MAAMorO,EAAa,EAAU/+C,aAAarsL,GACtCorO,IACA/xO,GAAS,KAEb,MAAM0R,EAAQ,GACd,GAAIssD,OAAO9lC,SAASl4B,GAAQ,CACxB,MAAMgxK,EAAY+gE,GAAe/xO,GAAS,GAAKA,GAAS,EAClDA,EAAQ6xO,EAAQ96M,GAChBntB,KAAKitB,IAAI72B,EAAQ6xO,EAAQ96M,GAAY,GAC3CrlB,EAAMggO,GAAY1gE,EAEtB,OAAOt/J,GAGf,SAASyhO,GAAaC,EAAkB3xO,GACpC,MACM6wO,EAAc7wO,GAAWA,EAAQ6wO,YACvC,OAAO,SAAUtyO,GAAO,KAAE2uB,EAAI,KAAErmB,EAAI,QAAEupO,IAClC,MAAM9hG,EAAQphH,EAAK0d,EAAE/jC,GACrB,IAAI6I,EAAQ4+H,EAAM1rH,KAJJ,YAKd,IAAKlT,GAASA,EAAMnR,QAAUA,EAAO,CAEjC,MAAMqzO,EAAcD,EAAiBpzO,GACrCmR,EAAQ,CACJnR,QACAkzC,MAAOmgM,EACPC,UAAWD,EAAYh2K,QAE3B0yE,EAAM1rH,KAbI,WAaYlT,GAE1B,MAAM+hC,EAAQ/hC,EAAM+hC,MAAM3pC,QACpB+pO,EAAYniO,EAAMmiO,UAAU/pO,QAC5BgqO,EAAcD,EAAUntI,YACxB+sI,EAAYrB,EAAQ1rI,YAC1BmtI,EAAUj/L,EAAI6+L,EAAU7+L,EACxBi/L,EAAUh/L,EAAI4+L,EAAU5+L,EACxB,MAAMk/L,EAAW3B,EAAQ3pI,iBAAiBorI,EAAWJ,GAE/C19K,EAAyB,IAApB89K,EAAUngN,OAAiC,IAAlB0+M,EAAQ1+M,MAAc,EAAIqgN,EAASh+K,GACjEC,EAA0B,IAArB69K,EAAU/9M,QAAmC,IAAnBs8M,EAAQt8M,OAAe,EAAIi+M,EAAS/9K,GAKzE,OAJAviB,EAAMvsB,MAAM6uC,EAAIC,EAAI89K,GAChBjB,GACAp/L,EAAMgiB,WAAWq+K,EAAYl/L,GAAIk/L,EAAYj/L,GAE1CpB,GAIf,SAASm/L,GAAS5wO,GAId,MAAMyxC,EAAQigM,IAHd,SAAyBnzO,GACrB,OAAO,GAAK8kB,MAAM9kB,KAEsByB,GAC5C,MAAO,CAACzB,EAAOiX,KAEJ,CACH5X,EAFS6zC,EAAMlzC,EAAOiX,GAEduqB,cAKpB,SAASixM,GAAchxO,GACnB,MAAMyxC,EAAQigM,GAAcv9K,GAAW,IAAI,GAASA,GAASn0D,GAC7D,MAAO,CAACzB,EAAOiX,KAEJ,CACH2+C,OAFa1iB,EAAMlzC,EAAOiX,GAETuqB,cClMtB,MAAMkQ,GAAO,CAChB+hM,QAAS,EAAU/pO,cACnB0a,IAAG,CAACstB,GAAM,KAAE/iB,KACD,QAAQA,EAAK0+L,MAAMqmB,eAAehiM,OCHpCC,GAAS,CAClB8hM,QAAS,EAAU/pO,cACnB,IAAIioC,GAAQ,KAAEhjB,IACV,MAAMglN,EAAOhlN,EAAKglN,KACZlyO,EAAUhC,OAAO+rD,OAAO,GAAI7Z,GAClC,GAAIgiM,EAAKptK,UAA6B,mBAAjB9kE,EAAQ4B,KAA2B,CACpD,MAAMuwO,EAAWjlN,EACX9I,EAAS+tN,EAASC,YAClBrqO,EAASoqO,EAASE,YACxBryO,EAAQ6O,GAAK,YAAY7O,EAAQ4B,QAAQswO,EAAKrjO,KAC9C7O,EAAQiQ,MAAQjS,OAAO+rD,OAAO/rD,OAAO+rD,OAAO,GAAI/pD,EAAQiQ,OAAQ,CAAEinD,GAAI9yC,EAAOwuB,EAAGgkB,GAAIxyC,EAAOyuB,EAAGskB,GAAIpvD,EAAO6qC,EAAGwkB,GAAIrvD,EAAO8qC,EAAGy/L,cAAe,mBACzIplN,EAAK0+L,MAAMh0F,KAAK35G,OAAOje,EAAQ6O,IAEnC,MAAO,QAAQqe,EAAK0+L,MAAMqmB,eAAejyO,QCbpC,GAAO,CAChBgyO,QAAO,CAAC3sO,GAAM,MAAE4K,KACa,MAAlBA,EAAMsiO,WAAqB,EAAUtqO,cAAcgI,EAAMsiO,UAEpE,IAAIltO,GAAM,KAAE6nB,EAAI,KAAErmB,EAAI,MAAEoJ,IACpB,MACMq+H,EAAQphH,EAAK0d,EAAE/jC,GACf6I,EAAQ4+H,EAAM1rH,KAFF,WAGZuf,EAAQqM,IACV,IACI,OAAOprB,KAAKC,MAAMmrB,GAEtB,MAAOjmC,GACH,OAAOimC,IAGTxuC,EAAU,CACZ4yC,EAAG3iC,EAAM2iC,EACT0lJ,IAAKroL,EAAMqoL,IACXxF,YAAa3wJ,EAAKlyB,EAAM6iL,aACxBoG,SAAU/2J,EAAKlyB,EAAM,cAAgBA,EAAMipL,UAC3CE,mBAAqBnpL,EAAM,yBACvBA,EAAMmpL,mBACVK,aAAiE,UAAlDxpL,EAAM,kBAAoBA,EAAMwpL,cAC/C//E,WAAazpG,EAAM,gBAAkBA,EAAMypG,YAEzCyH,EAAYlxG,EAAM,cAAgBA,EAAMkxG,SACxCqxH,EAAWpvN,KAAKs3C,UAAU,CAACr1D,EAAMrF,IAMvC,GALImhH,GACAt6G,EAAKtB,aAAa,YAAa47G,GAItB,MAATzxG,GAAiBA,IAAU8iO,EAAU,CAErC,MAAMt5C,EAAWl5L,EAAQk5L,SACzB,GAAgB,MAAZA,GAAwC,iBAAbA,EAAuB,CAClD,MAAMpzL,EAAWozL,EAASpzL,SAC1B,GAAwB,iBAAbA,EAAuB,CAC9B,MAAMkwI,EAAW9oH,EAAKnb,KAAKjM,GAAU,GACjCkwI,aAAoBxY,iBACpB,EAAItyB,SAAS8qC,GACbh2I,EAAQk5L,SAAWl7L,OAAO+rD,OAAO,CAAE,aAAc,IAAIisF,EAASnnI,IAAQqqL,KAIlF,EAAI7zL,KAAKwB,EAAM,GAAGxB,EAAQrF,GAC1BsuI,EAAM1rH,KA1CQ,UA0CQ4vN,MAIrB,GAAW,CACpBR,QAAS,EAAU/pO,cACnB,IAAI/C,GAAK,KAAEgoB,EAAI,KAAErmB,EAAI,MAAEoJ,EAAK,QAAEmgO,IAC1B,MAAMzjK,EAAOznE,EAEPwsB,EAAQi7C,EAAKj7C,OAAS,EACxB,EAAU6/J,aAAa7/J,GACvB0+M,EAAQ1+M,OAASwB,WAAWxB,GAAS,IAEhCA,GAAS,EACd0+M,EAAQ1+M,OAASA,EAGjB0+M,EAAQ1+M,MAAQA,EAGpB,MAAMoC,EAAS64C,EAAK74C,QAAU,EAW9B,IAAI2+M,EAVA,EAAUlhD,aAAaz9J,GACvBs8M,EAAQt8M,QAAUZ,WAAWY,GAAU,IAElCA,GAAU,EACfs8M,EAAQt8M,QAAUA,EAGlBs8M,EAAQt8M,OAASA,EAIrB,IAAI4+M,EAAM/lK,EAAKtnE,KACJ,MAAPqtO,IACAA,EAAMziO,EAAM5K,MAGZotO,EADO,MAAPC,EACc,EAAI76C,UAAU,GAAG66C,EAAOtC,EAAS,CAC3C,cAAengO,EAAM,gBAAkBA,EAAMglB,WAC7C,YAAahlB,EAAM,cAAgBA,EAAMkxG,SACzC,cAAelxG,EAAM,gBAAkBA,EAAMmxG,WAC7C1H,WAAYzpG,EAAMypG,YACnB,CACCilB,YAAazxG,EAAK0+L,MAAM1+L,KAAKq4D,IAC7Bs5B,SAAUlyC,EAAKkyC,SACfq8E,OAAQvuH,EAAKuuH,OACbC,UAAWxuH,EAAKwuH,YAIN,GAElB,EAAY19L,KAAK,GAAKklB,IAAKtiB,KAAMoyO,EAAa,CAC1CvlN,OACArmB,OACAoJ,QACAmgO,UACA8B,KAAMhlN,EAAKglN,SAIjBS,GAAc,CAACztO,GAAO+K,gBACF1N,IAAf0N,EAAM5K,KAEJ,GAAa,CACtB2sO,QAASW,IAEAv5C,GAAqB,CAC9B44C,QAASW,IAEA,GAAW,CACpBX,QAASW,IAEA,GAAc,CACvBX,QAASW,IAEA,GAAM,CACfX,QAASW,IAEAl5C,GAAe,CACxBu4C,QAASW,IChIA3yD,GAAQ,CACjBgyD,QAAO,CAAChyD,GAAO,KAAEn5K,KAENA,aAAgB2kG,WAE3B,IAAItmG,GAAK,KAAEgoB,EAAI,KAAErmB,IACb,MACMm5K,EAAQ,GAAG96K,EACXopI,EAAQphH,EAAK0d,EAAE/jC,GACf6I,EAAQ4+H,EAAM1rH,KAHF,YAIlB,GAAa,MAATlT,GAAiBA,IAAUswK,EAAO,CAClC1xC,EAAM1rH,KALQ,WAKQo9J,GAGtB,MAAMlsK,EAAajN,EAAKiN,WACxB,GAAIA,GAAmD,UAArCA,EAAWgyE,QAAQ3jE,cAA2B,CAE1CrO,EACRD,YAAcmsK,MAEvB,CAED,MAAM4yD,EAAYzvO,SAAS6iF,gBAAgBn/E,EAAKoK,aAAc,SAC9D2hO,EAAU/+N,YAAcmsK,EACxBn5K,EAAKypB,aAAasiN,EAAW9+N,OCpBhC++N,GAAS,CAClBrqM,OAAQsqM,GAAc,IAAK,QAAS,UAI3BC,GAAS,CAClBvqM,OAAQsqM,GAAc,IAAK,SAAU,WAE5BjC,GAAc,CACvBroM,OAAM,CAACtjC,GAAK,QAAEkrO,KACHlrO,EAAM,CAAE0tC,GAAIw9L,EAAQx9L,EAAGC,GAAIu9L,EAAQv9L,GAAM,CAAED,EAAG,EAAGC,EAAG,IAGnE,SAASigM,GAAc/jG,EAAMz5G,EAAWgwE,GACpC,MAAO,CAAC/mG,GAAS6xO,cACb,MAAM55K,EAAQ,IAAI,GAClB,IAAI5gC,EAiBJ,OAfIA,EADU,WAAVr3B,EACQ6xO,EAAQ96M,GAAa,EAExB/2B,IAAU+mG,EACP8qI,EAAQ96M,GAEM,iBAAV/2B,GAAsBg+D,OAAO9lC,SAASl4B,GAC1CA,GAAS,GAAKA,EAAQ,GAAK6xO,EAAQ96M,GAAa/2B,GAASA,EAE5D,EAAUgzL,aAAahzL,GACnB6xO,EAAQ96M,GAAapC,WAAW30B,GAAU,IAG3C,EAEZi4D,EAAMu4E,KAAUqhG,EAAQrhG,GAAQn5G,GACzB4gC,GCpCR,MAAM,GAAQ,CACjBw7K,QAAS,EAAU/pO,cACnB,IAAIwtB,GAAQ,KAAEvI,EAAI,KAAErmB,IAChBqmB,EAAK0d,EAAE/jC,GAAMge,IAAI4Q,KCJZ,GAAO,CAChB,IAAI/F,GAAM,KAAExC,EAAI,KAAErmB,IACdqmB,EAAK0d,EAAE/jC,GAAM6oB,KAAK,GAAGA,KCDhB,GAAS,CAClBsiN,QAAS,EAAU/pO,cACnB0a,IAAG,CAAC9Q,GAAQ,KAAEqb,KACH,QAAQA,EAAK0+L,MAAMonB,aAAanhO,OCJlC,GAAO,CAChB8Q,IAAIswN,GACY,MAARA,GAAgC,iBAATA,GAAqBA,EAAKpkO,GAC1CokO,EAAKpkO,GAETokO,GCJR,SAAS,GAAUr1O,EAAGs1O,EAASC,GAClC,IAAI3lN,EACAC,EACmB,iBAAZylN,GACP1lN,EAAU0lN,EAAQtgM,EAClBnlB,EAAUylN,EAAQrgM,IAGlBrlB,EAAU0lN,EACVzlN,EAAU0lN,GAEd,MAAM5jM,EAAO,GAAKlsB,MAAMzlB,GAClBg+D,EAAOrsB,EAAKqsB,OAClB,GAAIA,EAAM,CACN,IAAIX,GAAMW,EAAK9nC,OAAS,EAAI8nC,EAAK/oB,EAC7BmoB,GAAMY,EAAKlqC,MAAQ,EAAIkqC,EAAKhpB,EACT,iBAAZplB,IACPwtC,GAAMxtC,GAEa,iBAAZC,IACPwtC,GAAMxtC,GAEV8hB,EAAKkkB,UAAUuH,EAAIC,GAEvB,OAAO1rB,EAAKxP,YCzBhB,IAAI,GAAkC,SAAU1gC,EAAG6O,GAC/C,IAAI1P,EAAI,GACR,IAAK,IAAIY,KAAKC,EAAOrB,OAAOkB,UAAUC,eAAe1B,KAAK4B,EAAGD,IAAM8O,EAAEpK,QAAQ1E,GAAK,IAC9EZ,EAAEY,GAAKC,EAAED,IACb,GAAS,MAALC,GAAqD,mBAAjCrB,OAAOsxG,sBACtB,KAAIhyG,EAAI,EAAb,IAAgB8B,EAAIpB,OAAOsxG,sBAAsBjwG,GAAI/B,EAAI8B,EAAE4C,OAAQ1E,IAC3D4Q,EAAEpK,QAAQ1E,EAAE9B,IAAM,GAAKU,OAAOkB,UAAUwxD,qBAAqBjzD,KAAK4B,EAAGD,EAAE9B,MACvEkB,EAAEY,EAAE9B,IAAM+B,EAAED,EAAE9B,KAE1B,OAAOkB,GAKJ,MAAMoiH,GAASuzB,IAClB,IAAI,KAAEl3F,EAAI,MAAEvrB,EAAK,OAAEoC,EAAM,OAAE0U,EAAM,KAAE9B,GAASytG,EAC5C,OAAOi/F,GAAoB,CAAEn2L,OAAMvrB,QAAOoC,SAAQ0U,WAAmB,IAAT9B,GAAe,OAAMnkC,EADzB,GAAO4xI,EAAI,CAAC,OAAQ,QAAS,SAAU,SAAU,WAGhGk/F,GAAWl/F,IACpB,IAAI,KAAEl3F,EAAI,MAAEvrB,EAAK,OAAEoC,EAAM,OAAE0U,EAAM,OAAEqpL,GAAW19E,EAC9C,OAAOi/F,GAAoB,CAAEn2L,OAAMvrB,QAAOoC,SAAQ0U,WAAU,GAAO,EAAOqpL,EADhB,GAAO19E,EAAI,CAAC,OAAQ,QAAS,SAAU,SAAU,aAG/G,SAASi/F,GAAoBpzO,EAAS0mC,EAAM00J,EAAMy2B,EAAS,EAAI,EAAG5hN,EAAQ,IACtE,MAAMgtC,EAAOj9C,EAAQi9C,MAAQ,GACvBvrB,EAAQ1xB,EAAQ0xB,OAASurB,EACzBnpB,EAAS9zB,EAAQ8zB,QAAUmpB,EAC3B1N,EAAO,IAAI,GACX+jM,EAAa,GACnB,GAAI5sM,EACA6I,EACKitD,OAAO9qE,EAAO,GACdgrE,OAAO,EAAG5oE,EAAS,GACnB4oE,OAAOhrE,EAAOoC,GACnBw/M,EAAWrjM,KAAO,WAEjB,CAGD,GAFAV,EAAKitD,OAAO,EAAG1oE,EAAS,GACxByb,EAAKmtD,OAAOhrE,EAAO,IACd0pK,EAAM,CACP,MAAM/lF,EAAI,EAAUxrD,MAAMgoK,EAAQ,EAAG,GACrCtiL,EAAKmtD,OAAOhrE,EAAQ2jF,EAAGvhF,EAAS,GAEpCyb,EAAKmtD,OAAOhrE,EAAOoC,GACnByb,EAAK+tI,QAET,OAAOt/K,OAAO+rD,OAAO/rD,OAAO+rD,OAAO/rD,OAAO+rD,OAAO,GAAIupL,GAAarjO,GAAQ,CAAE61E,QAAS,OAAQloF,EAAG,GAAU2xC,EAAKxP,YAAa,CACpH6S,EAAqB,MAAlB5yC,EAAQwoC,OAAiBxoC,EAAQwoC,QAAU9W,EAAQ,MC9ClE,IAAI,GAAkC,SAAUryB,EAAG6O,GAC/C,IAAI1P,EAAI,GACR,IAAK,IAAIY,KAAKC,EAAOrB,OAAOkB,UAAUC,eAAe1B,KAAK4B,EAAGD,IAAM8O,EAAEpK,QAAQ1E,GAAK,IAC9EZ,EAAEY,GAAKC,EAAED,IACb,GAAS,MAALC,GAAqD,mBAAjCrB,OAAOsxG,sBACtB,KAAIhyG,EAAI,EAAb,IAAgB8B,EAAIpB,OAAOsxG,sBAAsBjwG,GAAI/B,EAAI8B,EAAE4C,OAAQ1E,IAC3D4Q,EAAEpK,QAAQ1E,EAAE9B,IAAM,GAAKU,OAAOkB,UAAUwxD,qBAAqBjzD,KAAK4B,EAAGD,EAAE9B,MACvEkB,EAAEY,EAAE9B,IAAM+B,EAAED,EAAE9B,KAE1B,OAAOkB,GAIJ,MAAM+0O,GAAWp/F,IACpB,IAAI,KAAEl3F,EAAI,MAAEvrB,EAAK,OAAEoC,EAAM,OAAE0U,GAAW2rG,EAAIlkI,EAAQ,GAAOkkI,EAAI,CAAC,OAAQ,QAAS,SAAU,WACzF,MAAM90I,EAAI49C,GAAQ,GACZ75C,EAAIsuB,GAASryB,EACb6B,EAAI4yB,GAAUz0B,EACdkwC,EAAO,IAAI,GAOjB,OANAA,EACKitD,OAAO,EAAGt7F,EAAI,GACdw7F,OAAOt5F,EAAI,EAAG,GACds5F,OAAOt5F,EAAGlC,EAAI,GACdw7F,OAAOt5F,EAAI,EAAGlC,GACdo8K,QACEt/K,OAAO+rD,OAAO/rD,OAAO+rD,OAAO,GAAI95C,GAAQ,CAAE61E,QAAS,OAAQloF,EAAG,GAAU2xC,EAAKxP,YAAuB,MAAVyI,GAAkBplC,EAAI,EAAIolC,MCzB/H,IAAI,GAAkC,SAAUnpC,EAAG6O,GAC/C,IAAI1P,EAAI,GACR,IAAK,IAAIY,KAAKC,EAAOrB,OAAOkB,UAAUC,eAAe1B,KAAK4B,EAAGD,IAAM8O,EAAEpK,QAAQ1E,GAAK,IAC9EZ,EAAEY,GAAKC,EAAED,IACb,GAAS,MAALC,GAAqD,mBAAjCrB,OAAOsxG,sBACtB,KAAIhyG,EAAI,EAAb,IAAgB8B,EAAIpB,OAAOsxG,sBAAsBjwG,GAAI/B,EAAI8B,EAAE4C,OAAQ1E,IAC3D4Q,EAAEpK,QAAQ1E,EAAE9B,IAAM,GAAKU,OAAOkB,UAAUwxD,qBAAqBjzD,KAAK4B,EAAGD,EAAE9B,MACvEkB,EAAEY,EAAE9B,IAAM+B,EAAED,EAAE9B,KAE1B,OAAOkB,GAGJ,MAAM,GAAQ21I,IACjB,IAAI,EAAEv2I,EAAC,QAAE4vB,EAAO,QAAEC,GAAY0mH,EAAIlkI,EAAQ,GAAOkkI,EAAI,CAAC,IAAK,UAAW,YACtE,OAAOn2I,OAAO+rD,OAAO/rD,OAAO+rD,OAAO,GAAI95C,GAAQ,CAAE61E,QAAS,OAAQloF,EAAG,GAAUA,EAAG4vB,EAASC,MCd/F,IAAI,GAAkC,SAAUpuB,EAAG6O,GAC/C,IAAI1P,EAAI,GACR,IAAK,IAAIY,KAAKC,EAAOrB,OAAOkB,UAAUC,eAAe1B,KAAK4B,EAAGD,IAAM8O,EAAEpK,QAAQ1E,GAAK,IAC9EZ,EAAEY,GAAKC,EAAED,IACb,GAAS,MAALC,GAAqD,mBAAjCrB,OAAOsxG,sBACtB,KAAIhyG,EAAI,EAAb,IAAgB8B,EAAIpB,OAAOsxG,sBAAsBjwG,GAAI/B,EAAI8B,EAAE4C,OAAQ1E,IAC3D4Q,EAAEpK,QAAQ1E,EAAE9B,IAAM,GAAKU,OAAOkB,UAAUwxD,qBAAqBjzD,KAAK4B,EAAGD,EAAE9B,MACvEkB,EAAEY,EAAE9B,IAAM+B,EAAED,EAAE9B,KAE1B,OAAOkB,GAIJ,MAAMu3D,GAASo+E,IAClB,IAAI,KAAEl3F,EAAI,MAAEvrB,EAAK,OAAEoC,EAAM,OAAE0U,GAAW2rG,EAAIlkI,EAAQ,GAAOkkI,EAAI,CAAC,OAAQ,QAAS,SAAU,WACzF,MAAM90I,EAAI49C,GAAQ,GACZ75C,EAAIsuB,GAASryB,EACb6B,EAAI4yB,GAAUz0B,EACdkwC,EAAO,IAAI,GAEjB,OADAA,EAAKitD,OAAO,EAAG,GAAGE,OAAOt5F,EAAGlC,GAAGs7F,OAAO,EAAGt7F,GAAGw7F,OAAOt5F,EAAG,GAC/CpF,OAAO+rD,OAAO/rD,OAAO+rD,OAAO,GAAI95C,GAAQ,CAAE61E,QAAS,OAAQ71C,KAAM,OAAQryC,EAAG,GAAU2xC,EAAKxP,YAAayI,IAAWplC,EAAI,MCpBlI,IAAI,GAAkC,SAAU/D,EAAG6O,GAC/C,IAAI1P,EAAI,GACR,IAAK,IAAIY,KAAKC,EAAOrB,OAAOkB,UAAUC,eAAe1B,KAAK4B,EAAGD,IAAM8O,EAAEpK,QAAQ1E,GAAK,IAC9EZ,EAAEY,GAAKC,EAAED,IACb,GAAS,MAALC,GAAqD,mBAAjCrB,OAAOsxG,sBACtB,KAAIhyG,EAAI,EAAb,IAAgB8B,EAAIpB,OAAOsxG,sBAAsBjwG,GAAI/B,EAAI8B,EAAE4C,OAAQ1E,IAC3D4Q,EAAEpK,QAAQ1E,EAAE9B,IAAM,GAAKU,OAAOkB,UAAUwxD,qBAAqBjzD,KAAK4B,EAAGD,EAAE9B,MACvEkB,EAAEY,EAAE9B,IAAM+B,EAAED,EAAE9B,KAE1B,OAAOkB,GAIJ,MAAM,GAAS21I,IAClB,IAAI,MAAEziH,EAAK,OAAEoC,EAAM,OAAE0U,EAAM,KAAE9B,EAAI,KAAEmgB,GAASstF,EAAIlkI,EAAQ,GAAOkkI,EAAI,CAAC,QAAS,SAAU,SAAU,OAAQ,SACzG,IAAIjzI,EAAI4yB,GAAU,EAClB,MAAM1wB,EAAIsuB,GAAS,GACb8hN,GAAkB,IAAT9sM,EACT+sM,GAAkB,IAAT5sL,EACTrlD,EAASxD,OAAO+rD,OAAO/rD,OAAO+rD,OAAO,GAAI95C,GAAQ,CAAE61E,QAAS,SAC9D2tJ,IACAvyO,GAAKA,GAET,MAAMquC,EAAO,IAAI,GAajB,OAZAA,EAAKitD,OAAO,EAAGt7F,GAAGw7F,OAAOt5F,EAAG,GACvBowO,EAKDhyO,EAAOyuC,KAAO,QAJdV,EAAKmtD,OAAOt5F,EAAGlC,GACfquC,EAAK+tI,SAKT97K,EAAO5D,EAAI,GAAU2xC,EAAKxP,YAAa,CACnC6S,EAAGpK,IAAWplC,EAAI,EAClByvC,EAAG3xC,EAAI,IAEJM,GCpCX,IAAI,GAAkC,SAAUnC,EAAG6O,GAC/C,IAAI1P,EAAI,GACR,IAAK,IAAIY,KAAKC,EAAOrB,OAAOkB,UAAUC,eAAe1B,KAAK4B,EAAGD,IAAM8O,EAAEpK,QAAQ1E,GAAK,IAC9EZ,EAAEY,GAAKC,EAAED,IACb,GAAS,MAALC,GAAqD,mBAAjCrB,OAAOsxG,sBACtB,KAAIhyG,EAAI,EAAb,IAAgB8B,EAAIpB,OAAOsxG,sBAAsBjwG,GAAI/B,EAAI8B,EAAE4C,OAAQ1E,IAC3D4Q,EAAEpK,QAAQ1E,EAAE9B,IAAM,GAAKU,OAAOkB,UAAUwxD,qBAAqBjzD,KAAK4B,EAAGD,EAAE9B,MACvEkB,EAAEY,EAAE9B,IAAM+B,EAAED,EAAE9B,KAE1B,OAAOkB,GAIJ,MAAM2zI,GAAUgC,IACnB,IAAI,EAAE/1I,GAAM+1I,EAAIlkI,EAAQ,GAAOkkI,EAAI,CAAC,MACpC,MAAMx2C,EAASv/F,GAAK,EACpB,OAAOJ,OAAO+rD,OAAO/rD,OAAO+rD,OAAO,CAAEszC,GAAIM,GAAU1tF,GAAQ,CAAE61E,QAAS,SAAU1nF,EAAGu/F,KAE1E+1I,GAAcv/F,IACvB,IAAI,EAAE/1I,GAAM+1I,EAAIlkI,EAAQ,GAAOkkI,EAAI,CAAC,MACpC,MAAMx2C,EAASv/F,GAAK,EACdmxC,EAAO,IAAI,GAGjB,OAFAA,EAAKitD,OAAOmB,EAAQ,GAAGjB,OAAOiB,EAAiB,EAATA,GACtCpuD,EAAKitD,OAAO,EAAGmB,GAAQjB,OAAgB,EAATiB,EAAYA,GACnC,CACHriF,SAAU,CACNtd,OAAO+rD,OAAO/rD,OAAO+rD,OAAO,GAAIooF,GAAO,CAAE/zI,EAAGu/F,KAAY,CAAE1tD,KAAM,SAChEjyC,OAAO+rD,OAAO/rD,OAAO+rD,OAAO,GAAI95C,GAAQ,CAAE61E,QAAS,OAAQloF,EAAG,GAAU2xC,EAAKxP,aAAc49D,QC3BvG,IAAI,GAAkC,SAAUt+F,EAAG6O,GAC/C,IAAI1P,EAAI,GACR,IAAK,IAAIY,KAAKC,EAAOrB,OAAOkB,UAAUC,eAAe1B,KAAK4B,EAAGD,IAAM8O,EAAEpK,QAAQ1E,GAAK,IAC9EZ,EAAEY,GAAKC,EAAED,IACb,GAAS,MAALC,GAAqD,mBAAjCrB,OAAOsxG,sBACtB,KAAIhyG,EAAI,EAAb,IAAgB8B,EAAIpB,OAAOsxG,sBAAsBjwG,GAAI/B,EAAI8B,EAAE4C,OAAQ1E,IAC3D4Q,EAAEpK,QAAQ1E,EAAE9B,IAAM,GAAKU,OAAOkB,UAAUwxD,qBAAqBjzD,KAAK4B,EAAGD,EAAE9B,MACvEkB,EAAEY,EAAE9B,IAAM+B,EAAED,EAAE9B,KAE1B,OAAOkB,GAEJ,MAAM,GAAW21I,IACpB,IAAI,GAAE/0C,EAAE,GAAEC,GAAO80C,EAAIlkI,EAAQ,GAAOkkI,EAAI,CAAC,KAAM,OAC/C,MAAMw/F,EAAUv0I,GAAM,EAChBw0I,EAAUv0I,GAAM,EACtB,OAAOrhG,OAAO+rD,OAAO/rD,OAAO+rD,OAAO,CAAEszC,GAAIs2I,GAAW1jO,GAAQ,CAAE61E,QAAS,UAAWsZ,GAAIu0I,EAASt0I,GAAIu0I,KCZhG,IAAI,GACAC,OAMR,KAAW,GAAS,KALZC,QAAU,EACjBD,GAAOE,SAAW,GAASn1O,OAAO,CAC9BgD,KAAM,WAEViyO,GAAOE,SAASn9F,SAASi9F,GAAOC,SAAS,GAE7C,SAAWD,GACPA,EAAOhiL,UAAY,GADvB,CAEG,KAAW,GAAS,KCbvB,IAAI,GAAkC,SAAUxyD,EAAG6O,GAC/C,IAAI1P,EAAI,GACR,IAAK,IAAIY,KAAKC,EAAOrB,OAAOkB,UAAUC,eAAe1B,KAAK4B,EAAGD,IAAM8O,EAAEpK,QAAQ1E,GAAK,IAC9EZ,EAAEY,GAAKC,EAAED,IACb,GAAS,MAALC,GAAqD,mBAAjCrB,OAAOsxG,sBACtB,KAAIhyG,EAAI,EAAb,IAAgB8B,EAAIpB,OAAOsxG,sBAAsBjwG,GAAI/B,EAAI8B,EAAE4C,OAAQ1E,IAC3D4Q,EAAEpK,QAAQ1E,EAAE9B,IAAM,GAAKU,OAAOkB,UAAUwxD,qBAAqBjzD,KAAK4B,EAAGD,EAAE9B,MACvEkB,EAAEY,EAAE9B,IAAM+B,EAAED,EAAE9B,KAE1B,OAAOkB,GAIX,SAASwzO,GAAQzzO,GACb,MAAwB,iBAAVA,GAAsB,EAAU0J,cAAc1J,GAEzD,MAAMy1O,GAAe,CACxBhC,WACArvN,IAAG,CAACyzI,GAAQ,KAAElpI,EAAI,MAAEjd,KACTgkO,GAAa,eAAgB79E,EAAQlpI,EAAMjd,IAG7CikO,GAAe,CACxBlC,WACArvN,IAAG,CAACyzI,GAAQ,KAAElpI,EAAI,MAAEjd,KACTgkO,GAAa,aAAc79E,EAAQlpI,EAAMjd,EAAO,CACnD4jC,UAAW,iBAIVsgM,GAAe,CACxBnC,WACArvN,IAAG,CAACyzI,GAAQ,KAAElpI,EAAI,MAAEjd,KACTgkO,GAAa,aAAc79E,EAAQlpI,EAAMjd,IAGxD,SAASgkO,GAAaryO,EAAMw0J,EAAQlpI,EAAMjd,EAAOmkO,EAAS,IACtD,MAAMlwK,EAAwB,iBAAXkyF,EAAsB,CAAEv4J,KAAMu4J,GAAWA,GACtD,KAAEv4J,EAAI,KAAE2X,GAAS0uD,EAAKmwK,EAAS,GAAOnwK,EAAK,CAAC,OAAQ,SAC1D,IAAIowK,EAASD,EACb,GAAIx2O,GAAwB,iBAATA,EAAmB,CAClC,MAAMkI,EAAK,GAAOguO,SAAS51O,IAAIN,GAC/B,IAAIkI,EAIA,OAAO,GAAOguO,SAASQ,WAAW12O,GAHlCy2O,EAASvuO,EAAG/H,OAAO+rD,OAAO/rD,OAAO+rD,OAAO,GAAIsqL,GAAS7+N,IAM7D,MAAMxV,EAAUhC,OAAO+rD,OAAO/rD,OAAO+rD,OAAO/rD,OAAO+rD,OAAO,GAK9D,SAAuBz2C,EAAM1R,GACzB,MAAMJ,EAAS,GAGT0uC,EAAS58B,EAAK48B,OACE,iBAAXA,IACP1uC,EAAO0uC,OAASA,EAChB1uC,EAAOyuC,KAAOC,GAGlB,IAAI4B,EAAgBx+B,EAAKw+B,cACJ,MAAjBA,IACAA,EAAgBx+B,EAAK,mBAEJ,MAAjBw+B,IACAA,EAAgBx+B,EAAK+iB,SAEJ,MAAjByb,IACAtwC,EAAO,kBAAoBswC,EAC3BtwC,EAAO,gBAAkBswC,GAE7B,GAAa,eAATlwC,EAAuB,CACvB,MAAM4yO,EAActhN,WAAY5f,EAAKkhO,aAAelhO,EAAK,iBACzD,GAAIipD,OAAO9lC,SAAS+9M,IAAgBA,EAAc,EAAG,CACjD,MAAMhsM,EAASrgC,KAAK0tB,KAAK2+M,EAAc,GACvChzO,EAAOizO,KAAgB,iBAAT7yO,EAA0B4mC,GAAUA,GAG1D,OAAOhnC,EAjCuDkzO,CAAczkO,EAAOrO,IAAQwyO,GAASE,GACpG,MAAO,CACH,CAAC1yO,GAAO,QAAQsrB,EAAK0+L,MAAM+oB,aAAa30O,OCnDhD,MAAM40O,GAAa,CAAC1vO,GAAOgoB,UAChBA,EAAKglN,KAAKptK,SAER+vK,GAAa,CACtB7C,QAAS4C,GACT,IAAI1vO,EAAKsQ,GACL,MAAM0X,EAAO1X,EAAK0X,KACZ4nN,EAAS5vO,EAAI4vO,OAAS,EAC5B,IAAIl3O,EACJ,GAAI2+D,OAAO9lC,SAASq+M,IAAoB,IAAVA,EAAa,CACvC,IAAItsM,EACJ,GAAIssM,EAAQ,EAAG,CAEXtsM,IADYtb,EAAK6nN,uBAAyB,GAC1BD,GAAS,OAGzBtsM,EAASssM,EAEb,MAAMvlM,EAAOriB,EAAK8nN,gBAClB,GAAIzlM,EAAM,CACN,MAAM0lM,EAAc1lM,EAAKutB,eAAet0B,GAClC0sM,EAAc3lM,EAAKutB,gBAAgBt0B,GACrCysM,GAAeC,IACft3O,EAAI,GAAGq3O,EAAY,GAAGl1M,eAAem1M,EAAY,GAAGn1M,gBAIhE,MAAO,CAAEniC,EAAGA,GAAKsvB,EAAKioN,2BAGjBC,GAAiC,CAC1CpD,QAAS4C,GACTjyN,IAAK0yN,GAAoB,qBAAsB,CAAEzhL,QAAQ,KAEhD0hL,GAAmC,CAC5CtD,QAAS4C,GACTjyN,IAAK0yN,GAAoB,qBAAsB,CAAEzhL,QAAQ,KAEhD2hL,GAAgC,CACzCvD,QAAS4C,GACTjyN,IAAK0yN,GAAoB,oBAAqB,CAAEzhL,QAAQ,KAE/C4hL,GAAkC,CAC3CxD,QAAS4C,GACTjyN,IAAK0yN,GAAoB,oBAAqB,CAAEzhL,QAAQ,KAI/C6hL,GAAqBL,GACrBM,GAAoBH,GAGjC,SAASF,GAAoBr4N,EAAQhd,GACjC,MAAM21O,EAAa,CAAE/iM,EAAG,EAAGC,EAAG,GAC9B,MAAO,CAACt0C,EAAOiX,KACX,IAAIpW,EACA21D,EACJ,MAAM7nC,EAAO1X,EAAK0X,KACZ0oN,EAAU1oN,EAAKlQ,GAAQu/C,OAAOh+D,IASpC,OARIq3O,GACA7gL,EAAQ/0D,EAAQ4zD,OAASgiL,EAAQl6K,SAAS1G,YAAY2gL,GAAc,EACpEv2O,EAAIw2O,EAAQj0O,QAGZvC,EAAI8tB,EAAKqiB,KAAK5tC,MACdozD,EAAQ,GAEE,IAAVA,EACO,CAAElhB,UAAW,aAAaz0C,EAAEwzC,KAAKxzC,EAAEyzC,OAEvC,CACHgB,UAAW,aAAaz0C,EAAEwzC,KAAKxzC,EAAEyzC,cAAckiB,OCnEpD,IAAI,IAeR,KAAS,GAAO,KADV8gL,kBAZL,SAA2B3xK,EAAKh/D,EAAKlF,GACjC,GAAW,MAAPkkE,EAAa,CACb,GAAmB,iBAARA,EACP,OAAO,EAEX,GAA2B,mBAAhBA,EAAI8tK,SACX,EAAYv0O,KAAKymE,EAAI8tK,QAAS3xO,KAAM6E,EAAKlF,GACzC,OAAO,EAGf,OAAO,GAIf,SAAW81O,GACPA,EAAKhC,QAAU91O,OAAO+rD,OAAO/rD,OAAO+rD,OAAO,GAAI,IAAM,GACrD+rL,EAAK/B,SAAW,GAASn1O,OAAO,CAC5BgD,KAAM,yBAEVk0O,EAAK/B,SAASn9F,SAASk/F,EAAKhC,SAAS,GALzC,CAMG,KAAS,GAAO,KCzBZ,MAAMliL,GAAM,CACfslD,MAAO,UACP6+H,UAAW,EACXp4G,OAAQ,OACR,OAAO92H,EAAM7G,GACT,MAAM0xB,EAAQ1xB,EAAQ+1O,UAAY/1O,EAAQ+zD,GACpCjgC,EAAS9zB,EAAQ+1O,UAAY/1O,EAAQg0D,GAC3C,EAAI1gD,KAAKzM,EAAM,CACX6qB,QACAoC,SACAsrE,GAAI1tE,EACJ2tE,GAAIvrE,EACJmc,KAAMjwC,EAAQk3G,UCZb8+H,GAAW,CACpB9+H,MAAO,UACP6+H,UAAW,EACXp4G,OAAQ,OACR,OAAO92H,EAAM7G,GACT,MAAMi9C,EAAOj9C,EAAQ+zD,IAAM,EAAI/zD,EAAQ+1O,UAAY/1O,EAAQ+zD,GAAK/zD,EAAQ+1O,UACxE,EAAIziO,KAAKzM,EAAM,CACX6qB,MAAOurB,EACPnpB,OAAQmpB,EACRmiD,GAAIniD,EACJoiD,GAAIpiD,EACJhN,KAAMjwC,EAAQk3G,UCXb++H,GAAO,CAChB/+H,MAAO,sBACP6+H,UAAW,EACXp4G,OAAQ,OACR,OAAO92H,EAAM7G,GACT,IAAIpC,EACJ,MAAM8zB,EAAQ1xB,EAAQ0xB,MAChBoC,EAAS9zB,EAAQ8zB,OACjBiiN,EAAY/1O,EAAQ+1O,UAEtBn4O,EADA8zB,EAAQqkN,GAAa,GAAKjiN,EAASiiN,GAAa,EAC5C,CAAC,IAAKrkN,EAAO,EAAG,aAAcoC,GAAQzkB,KAAK,KAG3C,YAER,EAAIiE,KAAKzM,EAAM,CACXjJ,IACAsyC,OAAQlwC,EAAQk3G,MAChB,eAAgBl3G,EAAQ+1O,cClBvBG,GAAa,CACtB,CACIh/H,MAAO,sBACP6+H,UAAW,EACXp4G,OAAQ,OACR,OAAO92H,EAAM7G,GACT,IAAIpC,EACJ,MAAM8zB,EAAQ1xB,EAAQ0xB,MAChBoC,EAAS9zB,EAAQ8zB,OACjBiiN,EAAY/1O,EAAQ+1O,UAEtBn4O,EADA8zB,EAAQqkN,GAAa,GAAKjiN,EAASiiN,GAAa,EAC5C,CAAC,IAAKrkN,EAAO,EAAG,aAAcoC,GAAQzkB,KAAK,KAG3C,YAER,EAAIiE,KAAKzM,EAAM,CACXjJ,IACAsyC,OAAQlwC,EAAQk3G,MAChB,eAAgBl3G,EAAQ+1O,cAIpC,CACI7+H,MAAO,wBACP6+H,UAAW,EACXlkB,OAAQ,EACRl0F,OAAQ,OACR,OAAO92H,EAAM7G,GACT,IAAIpC,EACJ,MAAMi0N,EAAS7xN,EAAQ6xN,QAAU,EAC3BngM,EAAQ1xB,EAAQ0xB,MAAQmgM,EACxB/9L,EAAS9zB,EAAQ8zB,OAAS+9L,EAC1BkkB,EAAY/1O,EAAQ+1O,UAEtBn4O,EADA8zB,EAAQqkN,GAAa,GAAKjiN,EAASiiN,GAAa,EAC5C,CAAC,IAAKrkN,EAAO,EAAG,aAAcoC,GAAQzkB,KAAK,KAG3C,YAGRrP,EAAQ0xB,MAAQA,EAChB1xB,EAAQ8zB,OAASA,EACjB,EAAIxgB,KAAKzM,EAAM,CACXjJ,IACAsyC,OAAQlwC,EAAQk3G,MAChB,eAAgBl3G,EAAQ+1O,eC5CjC,MAAM,GACT,cACI11O,KAAK81O,SAAW,GAChB91O,KAAK8B,KAAO,GAAOvD,OAAO,EAAIksG,oBAAqB,CAC/Cp5E,MAAO,OACPoC,OAAQ,QACT,CAAC,EAAIi3E,iBAAiB,UAAU/lG,KAEvC,IAAI6J,EAAIhI,GACJ,MAAMiN,EAAazT,KAAK8B,KAAK8L,WAAW,GACpC6F,GACAA,EAAWrO,YAAYoB,GAE3BxG,KAAK81O,SAAStnO,GAAMhI,EACpB,GAAOjI,OAAO,OAAQ,CAClB8yB,MAAO,OACPoC,OAAQ,OACRmc,KAAM,QAAQphC,OACf8hB,SAAStwB,KAAK8B,MAErB,IAAI0M,GACA,OAAOxO,KAAK81O,SAAStnO,GAEzB,IAAIA,GACA,OAA4B,MAArBxO,KAAK81O,SAAStnO,IAG7B,IAAWunO,GC5BA,GACAC,GCHJ,SAASC,GAAU/3O,EAAO4b,GAC7B,OAAgB,MAAT5b,EAAgBA,EAAQ4b,EAE5B,SAAS,GAAU/T,EAAK+T,GAC3B,OAAc,MAAP/T,GAAem2D,OAAO9lC,SAASrwB,GAAOA,EAAM+T,ECHhD,SAASo8N,GAAQ/gO,EAAO,IAC3B,MAAM0hG,EAAQo/H,GAAU9gO,EAAK0hG,MAAO,QAC9BxlF,EAAQ,GAAUlc,EAAKkc,MAAO,GAC9BmF,EAAS,GAAUrhB,EAAKqhB,OAAQ,GAItC,MAAO,+CAEmBqgF,qBALV,GAAU1hG,EAAK6gB,QAAS,gHAEpBQ,EAASnF,+FADTmF,iVAcpB4T,OCnBG,SAAS+rM,GAAUhhO,EAAO,IAC7B,MAAM0hG,EAAQo/H,GAAU9gO,EAAK0hG,MAAO,OAC9B/oF,EAAO,GAAU3Y,EAAK2Y,KAAM,GAC5BuD,EAAQ,GAAUlc,EAAKkc,MAAO,GAEpC,MAAO,mDAEqBwlF,qBAHZ,GAAU1hG,EAAK6gB,QAAS,+GAI0C3E,gKAEhBvD,gGAGhEsc,OCbC,SAAS,GAAKj1B,EAAO,IACxB,MAAMo9B,EAAI,GAAUp9B,EAAKo9B,EAAG,GAE5B,MAAO,uDADwB,MAAVp9B,EAAKq9B,GAAa0pB,OAAO9lC,SAASjhB,EAAKq9B,GAAK,CAACD,EAAGp9B,EAAKq9B,GAAKD,0BAK/EnI,OCPG,SAASgsM,GAAWjhO,EAAO,IAC9B,MAAMk+C,EAAK,GAAUl+C,EAAKk+C,GAAI,GACxBC,EAAK,GAAUn+C,EAAKm+C,GAAI,GACxBujD,EAAQo/H,GAAU9gO,EAAK0hG,MAAO,SAC9B/oF,EAAO,GAAU3Y,EAAK2Y,KAAM,GAC5BkI,EAAU,GAAU7gB,EAAK6gB,QAAS,GACxC,MAAO,2BAA4B/yB,OAC7B,kDAC6B6qB,UAAaulC,UAAWC,mBAAoBujD,qBAAyB7gF,0BAC1FoU,OACR,qEACgDtc,iCACjCulC,UAAWC,6DACHujD,4IAGU7gF,6KAMzBoU,OCtBX,SAASisM,GAAUlhO,EAAO,IAC7B,MAAMy3L,EAAS,GAAUz3L,EAAKy3L,OAAQ,GAEhC3hM,EAAI,MAAS,OAAU,EAAI2hM,GAOjC,MAAO,8DARG,MAAS,OAAU,EAAIA,MAUa3hM,KARpC,MAAS,OAAU,EAAI2hM,UACvB,MAAS,OAAU,EAAIA,MACvB,MAAS,OAAU,EAAIA,MACvB,MAAS,OAAU,EAAIA,UACvB,MAAS,OAAU,EAAIA,MAImD3hM,KAH1E,MAAS,OAAU,EAAI2hM,yCAKjCxiK,OCdG,SAASksM,GAAMnhO,EAAO,IACzB,MAAMy3L,EAAS,GAAUz3L,EAAKy3L,OAAQ,GAUtC,MAAO,kEATG,KAAQ,MAAS,EAAIA,MACrB,KAAQ,MAAS,EAAIA,MACrB,KAAQ,MAAS,EAAIA,UACrB,KAAQ,MAAS,EAAIA,MACrB,KAAQ,MAAS,EAAIA,MACrB,KAAQ,MAAS,EAAIA,UACrB,KAAQ,MAAS,EAAIA,MACrB,KAAQ,MAAS,EAAIA,MACrB,KAAQ,MAAS,EAAIA,6CAK7BxiK,OCfC,SAASmsM,GAASphO,EAAO,IAE5B,MAAO,oEAEsC,EAH9B,GAAUA,EAAKy3L,OAAQ,+BAKpCxiK,OCNC,SAASosM,GAAUrhO,EAAO,IAE7B,MAAO,qEADO,GAAUA,EAAKu/C,MAAO,+BAKlCtqB,OCNC,SAAS,GAAOj1B,EAAO,IAC1B,MAAMy3L,EAAS,GAAUz3L,EAAKy3L,OAAQ,GAChC6pC,EAAU,EAAI7pC,EACpB,MAAO,iGAGoCA,KAAU6pC,sDACV7pC,KAAU6pC,sDACV7pC,KAAU6pC,8DAGnDrsM,OCXC,SAASssM,GAAWvhO,EAAO,IAC9B,MAAMy3L,EAAS,GAAUz3L,EAAKy3L,OAAQ,GACtC,MAAO,sFAG6BA,+CACAA,+CACAA,wDAGpCxiK,OCVG,SAASusM,GAASxhO,EAAO,IAC5B,MAAMy3L,EAAS,GAAUz3L,EAAKy3L,OAAQ,GAChC6pC,EAAU,GAAM7pC,EAAS,EAC/B,MAAO,qFAG6BA,iBAAsB6pC,+CACtB7pC,iBAAsB6pC,+CACtB7pC,iBAAsB6pC,wDAG1DrsM,QbkBO2rM,GAMR,KAAS,GAAO,KALVtC,QAAU,EACfsC,GAAKrC,SAAW,GAASn1O,OAAO,CAC5BgD,KAAM,SAEVw0O,GAAKrC,SAASn9F,SAASw/F,GAAKtC,SAAS,IChC9BuC,GAMR,KAAW,GAAS,KALZvC,QAAU,EACjBuC,GAAOtC,SAAW,GAASn1O,OAAO,CAC9BgD,KAAM,WAEVy0O,GAAOtC,SAASn9F,SAASy/F,GAAOvC,SAAS,GaRtC,MAAMmD,GAAQ,SAAU3oE,GAG3B,MAAM3gD,EAASxqH,SAASiC,cAAc,UAChCssB,EAAQ48I,EAAI58I,MACZoC,EAASw6I,EAAIx6I,OACnB65F,EAAOj8F,MAAgB,EAARA,EACfi8F,EAAO75F,OAASA,EAChB,MAAM+b,EAAM89E,EAAOvgF,WAAW,MAO9B,OALAyC,EAAI2qD,UAAU8zE,EAAK,EAAG,EAAG58I,EAAOoC,GAEhC+b,EAAI4jB,UAAU,EAAI/hC,EAAO,GACzBme,EAAI3qB,OAAO,EAAG,GACd2qB,EAAI2qD,UAAU8zE,EAAK,EAAG,EAAG58I,EAAOoC,GACzB65F,GCfEupH,GAAQ,SAAU5oE,GAG3B,MAAM3gD,EAASxqH,SAASiC,cAAc,UAChCssB,EAAQ48I,EAAI58I,MACZoC,EAASw6I,EAAIx6I,OACnB65F,EAAOj8F,MAAQA,EACfi8F,EAAO75F,OAAkB,EAATA,EAChB,MAAM+b,EAAM89E,EAAOvgF,WAAW,MAO9B,OALAyC,EAAI2qD,UAAU8zE,EAAK,EAAG,EAAG58I,EAAOoC,GAEhC+b,EAAI4jB,UAAU,EAAG,EAAI3/B,GACrB+b,EAAI3qB,MAAM,GAAI,GACd2qB,EAAI2qD,UAAU8zE,EAAK,EAAG,EAAG58I,EAAOoC,GACzB65F,GCfEwpH,GAAS,SAAU7oE,GAG5B,MAAM3gD,EAASxqH,SAASiC,cAAc,UAChCssB,EAAQ48I,EAAI58I,MACZoC,EAASw6I,EAAIx6I,OACnB65F,EAAOj8F,MAAQ,EAAIA,EACnBi8F,EAAO75F,OAAS,EAAIA,EACpB,MAAM+b,EAAM89E,EAAOvgF,WAAW,MAY9B,OAVAyC,EAAI2qD,UAAU8zE,EAAK,EAAG,EAAG58I,EAAOoC,GAEhC+b,EAAIW,cAAc,EAAG,EAAG,GAAI,EAAGm9E,EAAOj8F,MAAOi8F,EAAO75F,QACpD+b,EAAI2qD,UAAU8zE,EAAK,EAAG,EAAG58I,EAAOoC,GAEhC+b,EAAIW,cAAc,EAAG,EAAG,EAAG,EAAGm9E,EAAOj8F,MAAO,GAC5Cme,EAAI2qD,UAAU8zE,EAAK,EAAG,EAAG58I,EAAOoC,GAEhC+b,EAAIW,aAAa,EAAG,EAAG,GAAI,EAAG,EAAGm9E,EAAO75F,QACxC+b,EAAI2qD,UAAU8zE,EAAK,EAAG,EAAG58I,EAAOoC,GACzB65F,GCnBEypH,GAAY,SAAU9oE,EAAKtuK,GACpC,MAAM0xB,EAAQ48I,EAAI58I,MACZoC,EAASw6I,EAAIx6I,OACb65F,EAASxqH,SAASiC,cAAc,UACtCuoH,EAAOj8F,MAAgB,EAARA,EACfi8F,EAAO75F,OAAkB,EAATA,EAChB,MAAM+b,EAAM89E,EAAOvgF,WAAW,MACxB2nB,EAAyB,MAAjB/0D,EAAQ+0D,OAAiB/0D,EAAQ+0D,OAAS,GAClDsiL,EAAU9hL,GAAMC,MAAMT,GACtBuiL,EAAQ3pH,EAAOj8F,MAAQ,EACvB6lN,EAAQ5pH,EAAO75F,OAAS,EAC9B,IAAK,IAAIx2B,EAAI,EAAGA,EAAI,EAAGA,GAAK,EACxB,IAAK,IAAIiK,EAAI,EAAGA,EAAI,EAAGA,GAAK,GACnBjK,EAAIiK,GAAK,EAAI,IACdsoC,EAAIW,aAAa,EAAG,EAAG,EAAG,GAAI,EAAIlzC,EAAI,GAAKg6O,GAAQ,EAAI/vO,EAAI,GAAKgwO,GAChE1nM,EAAI+jB,OAAOyjL,GACXxnM,EAAI2qD,UAAU8zE,GAAM58I,EAAQ,GAAIoC,EAAS,EAAGpC,EAAOoC,IAI/D,OAAO65F,GCnBJ,IAAI,GACA6pH,OASR,KAAe,GAAa,KARhB1D,QAAU91O,OAAO+rD,OAAO,GAAI,GACvCytL,GAAW1D,QAAQ,UAAY,GAC/B0D,GAAW1D,QAAQ,UAAY,GAC/B0D,GAAW1D,QAAQ,WAAa,GAChC0D,GAAWzD,SAAW,GAASn1O,OAAO,CAClCgD,KAAM,uBAEV41O,GAAWzD,SAASn9F,SAAS4gG,GAAW1D,SAAS,GCX9C,MAAM2D,GAAS,CAClBC,UAAW,KACXC,eAAe,EACfC,gBAAgB,EAChBC,WAAW,EACXC,UAAW,GAYX,MAAM16F,GACFq6F,GAAOI,UAAYz6F,ICfpB,IAAI,GACAslC,OAOR,KAAS,GAAO,KANVxsH,WAAa,GAClBwsH,GAAKq1D,gBAAkB,GAIvBr1D,GAAK1rJ,OAHL,SAAgBC,GACZ,MAAO,GAAGwgN,GAAOC,aAAazgN,KAItC,SAAWyrJ,GAmBPA,EAAKs1D,SAlBL,SAAkBx3O,EAAQR,EAAS0F,EAAYuyO,EAAY,IACvD,MAAM38N,EAAuC,mBAArBtb,EAAQsb,SAC1Btb,EAAQsb,SAAS9a,GACjBA,EAAOR,EAAQsb,UAAY,YAajC,OAZK5V,IACDA,EAAa1F,EAAQutI,WAAW/sI,GAChCy3O,EAAUp1O,KAAK6C,IAEfnE,MAAMD,QAAQga,IACdA,EAASkwB,QAAS67B,IACd,MAAMriE,EAAOhF,EAAQutI,WAAWlmE,GAC1BpN,EAAOj6D,EAAQk4O,WAAWxyO,EAAYV,GAC5CizO,EAAUp1O,KAAKmC,EAAMi1D,GACrB55D,KAAK23O,SAAS3wK,EAAOrnE,EAASgF,EAAMizO,KAGrCA,GAjBf,CAoBG,KAAS,GAAO,KC5BnB,MCFME,GAAmB,GAAKnhN,OAAO,eACxB,GAAY,CACrB,UAAUohN,EAAUC,EAAQr4O,GACxB,MAAMgpF,EAAOhpF,GAAWA,EAAQyR,WAAc0mO,GAC9C,EAAI56M,SAAS86M,EAAQrvJ,IAEzB,YAAYovJ,EAAUC,EAAQr4O,GAC1B,MAAMgpF,EAAOhpF,GAAWA,EAAQyR,WAAc0mO,GAC9C,EAAIv6M,YAAYy6M,EAAQrvJ,KCR1B,GAAY,GAAKhyD,OAAO,qBACjB,GAAU,CACnB,UAAUohN,EAAUC,GAChB,EAAI96M,SAAS86M,EAAQ,KAEzB,YAAYD,EAAUE,GAClB,EAAI16M,YAAY06M,EAAU,MCN5BC,GAAiB,CACnBzhN,QAAS,EACTsoE,GAAI,EACJC,GAAI,EACJpvF,MAAO,CACH,eAAgB,EAChBigC,OAAQ,YAGH,GAAS,CAClB,UAAUkoM,EAAUC,EAAQr4O,GACxB,MAAM6O,EAAK,GAAQ2pO,iBAAiBH,EAAQr4O,GAC5C,GAAI,GAAQgyL,SAASnjL,GACjB,OAGJ7O,EAAU,EAAUoqD,aAAa,GAAIpqD,EAASu4O,IAC9C,MAAME,EAAY,GAAO75O,OAAOy5O,GAChC,IAAIplM,EACAylM,EACJ,IACIzlM,EAAWwlM,EAAUh7G,aAEzB,MAAOl1H,GAGHmwO,EAAaD,EAAU78K,MAAK,GAC5B3oB,EAAW,EAAIk+F,eAAenzI,OAAO+rD,OAAO/rD,OAAO+rD,OAAO,GAAI/pD,GAAU04O,IAE5E,MAAMnpM,EAAO,EAAIw7D,iBAAiB,QAGlC,GAFA,EAAIz3F,KAAKi8B,EAAMvxC,OAAO+rD,OAAO,CAAEnsD,EAAGq1C,EAAU,iBAAkB,OAAQ,gBAAiB,qBAAsBhD,KAAM,QAAWjwC,EAAQiQ,MAAQ,EAAI25F,eAAe5pG,EAAQiQ,OAAS,OAE9KmoO,EAASO,cAAcN,GACvB,EAAI/kO,KAAKi8B,EAAM,IAAK6oM,EAASjD,6BAE5B,CACD,IAAIyD,EAAkBH,EAAUn8G,sBAAsB87G,EAASjmN,WAE/D,MAAM2E,EAAU92B,EAAQ82B,QACxB,GAAIA,EAAS,CACS,MAAd4hN,IACAA,EAAaD,EAAU78K,MAAK,IAEhC,MAAMyhC,EAAKq7I,EAAW9lM,EAAI8lM,EAAWhnN,MAAQ,EACvC4rE,EAAKo7I,EAAW7lM,EAAI6lM,EAAW5kN,OAAS,EAC9C4kN,EAAa,EAAI76G,mBAAmB66G,EAAYE,GAChD,MAAMlnN,EAAQvpB,KAAKitB,IAAIsjN,EAAWhnN,MAAO,GACnCoC,EAAS3rB,KAAKitB,IAAIsjN,EAAW5kN,OAAQ,GACrCigC,GAAMriC,EAAQoF,GAAWpF,EACzBsiC,GAAMlgC,EAASgD,GAAWhD,EAC1B+kN,EAAgB,EAAIp6G,gBAAgB,CACtCpzH,EAAG0oD,EACHzoD,EAAG,EACH3N,EAAG,EACHC,EAAGo2D,EACH9lD,EAAGmvF,EAAKtpC,EAAKspC,EACbgY,EAAG/X,EAAKtpC,EAAKspC,IAEjBs7I,EAAkBA,EAAgBlvL,SAASmvL,GAE/C,EAAIhlM,UAAUtE,EAAMqpM,GAExB,EAAIr7M,SAASgS,EAAM,GAAKvY,OAAO,qBAC/B,MAAMk7M,EAAOkG,EAASlG,KAChB4G,EAAgB,IAAM,GAAQC,kBAAkBlqO,GACtDqjO,EAAKzpN,GAAG,UAAWqwN,GACf5G,EAAKv4J,OACLu4J,EAAKv4J,MAAMlxD,GAAG,UAAWqwN,GAE7BV,EAASjmN,UAAU1sB,YAAY8pC,GAC/B,GAAQypM,SAASnqO,EAAI0gC,IAEzB,YAAY6oM,EAAUC,EAAQv9M,GAC1B,GAAQi+M,kBAAkB,GAAQP,iBAAiBH,EAAQv9M,MAGnE,IAAI,GC5EO,GCAJ,SAASkmJ,GAAeplH,EAAMpmD,EAAO,IACxC,OAAO,IAAI,GAAM,EAAUg3K,oBAAoBh3K,EAAKo9B,EAAGgpB,EAAKlqC,OAAQ,EAAU86J,oBAAoBh3K,EAAKq9B,EAAG+oB,EAAK9nC,SAE5G,SAASotJ,GAAS1qH,EAAOzB,EAAO03H,GACnC,OAAOzuL,OAAO+rD,OAAO,CAAEgL,QAAOliC,SAAU2jC,EAAMpK,UAAYqgI,IFyE9D,SAAWwsD,GAKPA,EAAQT,iBAJR,SAA0BH,EAAQr4O,GAE9B,OADA,EAAIkrG,SAASmtI,GACNA,EAAOxpO,GAAKuU,KAAKs3C,UAAU16D,IAGtC,MAAM0P,EAAQ,GAIdupO,EAAQD,SAHR,SAAkBnqO,EAAIhI,GAClB6I,EAAMb,GAAMhI,GAMhBoyO,EAAQjnD,SAHR,SAAkBnjL,GACd,OAAoB,MAAba,EAAMb,IAUjBoqO,EAAQF,kBAPR,SAA2BlqO,GACvB,MAAMhI,EAAO6I,EAAMb,GACfhI,IACA,EAAIoX,OAAOpX,UACJ6I,EAAMb,KAnBzB,CAuBG,KAAY,GAAU,MCzFtB,KAAgB,GAAc,KADjB4F,MARZ,SAAe5W,EAAMq7O,GACjB,GAAqC,mBAA1BA,EAAY1C,UACnB,MAAM,IAAInzO,MAAM,gBAAgBxF,iDAEpC,GAAuC,mBAA5Bq7O,EAAYC,YACnB,MAAM,IAAI91O,MAAM,gBAAgBxF,oDAK5C,SAAWu7O,GACPA,EAAYtF,QAAU,EACtBsF,EAAYrF,SAAW,GAASn1O,OAAO,CACnCgD,KAAM,gBAEVw3O,EAAYrF,SAASn9F,SAASwiG,EAAYtF,SAAS,GALvD,CAMG,KAAgB,GAAc,KEnB1B,MAAMl3C,GAAW,CAAChc,EAAmBC,IACjCD,EAAkBh6K,IAAI,EAAGgsC,IAAGC,IAAGkiB,WAAYmsH,GAASF,GAAeH,EAAU,CAAEjuI,IAAGC,MAAMkiB,GAAS,ICA/F,GAAU,CAAC6rH,EAAmBC,EAAUC,KACjD,MAAMvjF,EAAaujF,EAAkBn/K,OAAS,EACxC03O,EAAYv4D,EAAkBnpJ,MAAQ,GAC5C,OAAO2hN,GAAc14D,EAAmBC,EAAUtjF,EAAY,CAACx7F,EAAOkiB,KAAWliB,EAAQ,GAAMkiB,EAAQ,GAAKo1N,IAEnGE,GAAgB,CAAC34D,EAAmBC,EAAUC,KACvD,MAAMvjF,EAAaujF,EAAkBn/K,OAAS,EACxC03O,EAAYv4D,EAAkBnpJ,MAAQ,IAAMipJ,EAAkB5+K,OACpE,OAAOs3O,GAAc14D,EAAmBC,EAAUtjF,EAAax7F,GACpDA,EAAQs3O,IAGvB,SAASC,GAAc14D,EAAmBC,EAAUtjF,EAAYi8I,GAC5D,MAAM1lL,EAAS+sH,EAAS9lH,YAClBp5D,EAAQk/K,EAASj8E,eACjBpoC,EAAQqkH,EAASnvJ,MAAQmvJ,EAAS/sJ,OAClC21E,EAAU,GAAQs4E,SAASlB,GAC3B58J,EAAQ28J,EAAkB5+K,OAChC,OAAO4+K,EAAkBh6K,IAAI,CAACpC,EAAMzC,KAChC,MAAMgzD,EAAQwoC,EAAai8I,EAAOz3O,EAAOkiB,GACnC7kB,EAAIuC,EAAMmG,QAAQ8rD,QAAQmB,EAAOjB,GAAQ5uC,MAAMs3C,EAAO,EAAG1I,GACzDS,EAAQ/vD,EAAKi1O,kBAAoBhwI,EAAQm4E,aAAaxiL,GAAK,EAOjE,OANIoF,EAAKkvD,IAAMlvD,EAAKmvD,KAChBv0D,EAAEq0D,UAAUjvD,EAAKkvD,IAAM,EAAGlvD,EAAKmvD,IAAM,GAErCnvD,EAAKwmL,IACL5rL,EAAE42D,KAAKlC,EAAQtvD,EAAKwmL,IAEjB9J,GAAS9hL,EAAE6zB,QAASshC,EAAO/vD,KC9B1C,IAAI,GAAkC,SAAUnF,EAAG6O,GAC/C,IAAI1P,EAAI,GACR,IAAK,IAAIY,KAAKC,EAAOrB,OAAOkB,UAAUC,eAAe1B,KAAK4B,EAAGD,IAAM8O,EAAEpK,QAAQ1E,GAAK,IAC9EZ,EAAEY,GAAKC,EAAED,IACb,GAAS,MAALC,GAAqD,mBAAjCrB,OAAOsxG,sBACtB,KAAIhyG,EAAI,EAAb,IAAgB8B,EAAIpB,OAAOsxG,sBAAsBjwG,GAAI/B,EAAI8B,EAAE4C,OAAQ1E,IAC3D4Q,EAAEpK,QAAQ1E,EAAE9B,IAAM,GAAKU,OAAOkB,UAAUwxD,qBAAqBjzD,KAAK4B,EAAGD,EAAE9B,MACvEkB,EAAEY,EAAE9B,IAAM+B,EAAED,EAAE9B,KAE1B,OAAOkB,GAIJ,MAAM,GAAO,CAACoiL,EAAmBC,EAAUC,IAGvCC,GAAWH,EAFJI,GAAeH,EAAUC,EAAkBn/K,OAASk/K,EAASn8E,aAC/Ds8E,GAAeH,EAAUC,EAAkBt5K,KAAOq5K,EAASx7E,aACtBy7E,GAExC,GAAO,CAACF,EAAmBC,EAAUC,IACvCC,GAAWH,EAAmBC,EAASl8E,aAAck8E,EAAS57E,gBAAiB67E,GAE7E,GAAQ,CAACF,EAAmBC,EAAUC,IACxCC,GAAWH,EAAmBC,EAAS/7E,cAAe+7E,EAASz7E,iBAAkB07E,GAE/E,GAAM,CAACF,EAAmBC,EAAUC,IACtCC,GAAWH,EAAmBC,EAASl8E,aAAck8E,EAAS/7E,cAAeg8E,GAE3E,GAAS,CAACF,EAAmBC,EAAUC,IACzCC,GAAWH,EAAmBC,EAAS57E,gBAAiB47E,EAASz7E,iBAAkB07E,GAE9F,SAASC,GAAWH,EAAmBjsH,EAAIC,EAAIksH,GAC3C,MAAMxlH,EAAO,IAAI,GAAK3G,EAAIC,GACpB5yD,EAAS4+K,EAAkB5+K,OACjC,OAAO4+K,EAAkBh6K,IAAI,CAACutI,EAAIpyI,KAC9B,IAAI,OAAEk/K,GAAW9sC,EAAI3rG,EAAS,GAAO2rG,EAAI,CAAC,WAC1C,MAAM33E,EAAQykH,GAAUH,EAAkBG,QACnCl/K,EAAQ,IAAMC,EAAS,IACvBD,EAAQ,IAAOC,EAChB5C,EAAIk8D,EAAKU,QAAQQ,GAIvB,OAHIh0B,EAAOkrB,IAAMlrB,EAAOmrB,KACpBv0D,EAAEq0D,UAAUjrB,EAAOkrB,IAAM,EAAGlrB,EAAOmrB,IAAM,GAEtCutH,GAAS9hL,EAAE6zB,QAAS,EAAGuV,KCxC/B,IAAI,GACAkxM,OAMR,KAAe,GAAa,KALhB5F,QAAU,EACrB4F,GAAW3F,SAAW,GAASn1O,OAAO,CAClCgD,KAAM,gBAEV83O,GAAW3F,SAASn9F,SAAS8iG,GAAW5F,SAAS,GCPrD,MAAM,GAAW,CACbjhN,SAAU,CAAE+f,EAAG,EAAGC,EAAG,GACrBkiB,MAAO,EACP9kD,MAAO,CACH,IAAK,CACD4iC,EAAG,IACH,cAAe,WAIpB,SAAS,GAASyhM,EAAQ9+N,GAC7B,MAAM,EAAEo9B,EAAC,EAAEC,EAAC,MAAEkiB,EAAK,MAAE9kD,GAAUuF,GAAQ,GACvC,OAAO,EAAU40C,aAAa,GAAI,CAAE2K,QAAO9kD,QAAO4iB,SAAU,CAAE+f,IAAGC,MAAOyhM,EAAQ,ICZ7E,MAAM,GAAS,CAACqF,EAAc94D,EAAUrrK,IAAS,GAAS,CAAEqd,SAAUguJ,EAASl8E,cAAgBnvF,GACzF,GAAO,CAACmkO,EAAc94D,EAAUrrK,IAAS,GAAS,CAC3Dqd,SAAU,CAAE+f,GAAI,GAAIC,EAAG,GACvB5iC,MAAO,CAAE,IAAK,CAAE4iC,EAAG,OAAQ,cAAe,SAC3Cr9B,GACU,GAAQ,CAACmkO,EAAc94D,EAAUrrK,IAAS,GAAS,CAC5Dqd,SAAU,CAAE+f,EAAG,GAAIC,EAAG,GACtB5iC,MAAO,CAAE,IAAK,CAAE4iC,EAAG,OAAQ,cAAe,WAC3Cr9B,GACU,GAAM,CAACmkO,EAAc94D,EAAUrrK,IAAS,GAAS,CAC1Dqd,SAAU,CAAE+f,EAAG,EAAGC,GAAI,IACtB5iC,MAAO,CAAE,IAAK,CAAE,cAAe,YAChCuF,GACU,GAAS,CAACmkO,EAAc94D,EAAUrrK,IAAS,GAAS,CAC7Dqd,SAAU,CAAE+f,EAAG,EAAGC,EAAG,IACrB5iC,MAAO,CAAE,IAAK,CAAE4iC,EAAG,OAAQ,cAAe,YAC3Cr9B,GChBUokO,GAAU,CAACD,EAAc94D,EAAUrrK,IAASqkO,GAAcF,EAAc94D,GAAU,EAAOrrK,GACzFskO,GAAkB,CAACH,EAAc94D,EAAUrrK,IAASqkO,GAAcF,EAAc94D,GAAU,EAAMrrK,GAChGukO,GAAS,CAACJ,EAAc94D,EAAUrrK,IAASwkO,GAAaL,EAAc94D,GAAU,EAAOrrK,GACvFykO,GAAiB,CAACN,EAAc94D,EAAUrrK,IAASwkO,GAAaL,EAAc94D,GAAU,EAAMrrK,GAC3G,SAASqkO,GAAcF,EAAc94D,EAAUq5D,EAAY1kO,GACvD,MAAMgzB,EAAwB,MAAfhzB,EAAKgzB,OAAiBhzB,EAAKgzB,OAAS,GAC7CusB,EAAQ8rH,EAAS9lH,YAAYxG,MAAMolL,GACnCQ,EAAaC,GAAcv5D,GACjC,IAAIhuI,EACAmoB,EACAC,EACAo/K,EACAC,EAAc,EAqClB,OApCIvlL,EAAQolL,EAAW,IAAMplL,EAAQolL,EAAW,IAC5CtnM,EAAI,OACJmoB,EAAKxyB,EACLyyB,EAAK,EACLo/K,EAAa,SAERtlL,EAAQolL,EAAW,IACxBtnM,EAAI,IACJmoB,EAAK,EACLC,GAAMzyB,EACF0xM,GACAI,GAAe,GACfD,EAAa,SAGbA,EAAa,UAGZtlL,EAAQolL,EAAW,IACxBtnM,EAAI,OACJmoB,GAAMxyB,EACNyyB,EAAK,EACLo/K,EAAa,QAGbxnM,EAAI,OACJmoB,EAAK,EACLC,EAAKzyB,EACD0xM,GACAI,EAAc,GACdD,EAAa,SAGbA,EAAa,UAGd,GAAS,CACZxnN,SAAU,CACN+f,EAAGzqC,KAAK8qB,MAAM+nC,GACdnoB,EAAG1qC,KAAK8qB,MAAMgoC,IAElBlG,MAAOulL,EACPrqO,MAAO,CACH,IAAK,CACD4iC,IACA,cAAewnM,KAGxB7kO,GAEP,SAASwkO,GAAaL,EAAc94D,EAAUq5D,EAAY1kO,GACtD,MAAMgzB,EAAwB,MAAfhzB,EAAKgzB,OAAiBhzB,EAAKgzB,OAAS,GAC7CusB,EAAQ8rH,EAAS9lH,YAAYxG,MAAMolL,GACnCQ,EAAaC,GAAcv5D,GACjC,IAAIhuI,EACAmoB,EACAC,EACAo/K,EACAC,EAAc,EAqClB,OApCIvlL,EAAQolL,EAAW,IAAMplL,EAAQolL,EAAW,IAC5CtnM,EAAI,OACJmoB,GAAMxyB,EACNyyB,EAAK,EACLo/K,EAAa,OAERtlL,EAAQolL,EAAW,IACxBtnM,EAAI,OACJmoB,EAAK,EACLC,EAAKzyB,EACD0xM,GACAI,EAAc,GACdD,EAAa,SAGbA,EAAa,UAGZtlL,EAAQolL,EAAW,IACxBtnM,EAAI,OACJmoB,EAAKxyB,EACLyyB,EAAK,EACLo/K,EAAa,UAGbxnM,EAAI,MACJmoB,EAAK,EACLC,GAAMzyB,EACF0xM,GACAI,GAAe,GACfD,EAAa,SAGbA,EAAa,UAGd,GAAS,CACZxnN,SAAU,CACN+f,EAAGzqC,KAAK8qB,MAAM+nC,GACdnoB,EAAG1qC,KAAK8qB,MAAMgoC,IAElBlG,MAAOulL,EACPrqO,MAAO,CACH,IAAK,CACD4iC,IACA,cAAewnM,KAGxB7kO,GAEP,SAAS4kO,GAAcv5D,GACnB,MAAM/sH,EAAS+sH,EAAS9lH,YAClBw/K,EAAKzmL,EAAOS,MAAMssH,EAASl8E,cAC3B61I,EAAK1mL,EAAOS,MAAMssH,EAAS57E,iBAC3Bw1I,EAAK3mL,EAAOS,MAAMssH,EAASz7E,kBAEjC,MAAO,CAACm1I,EADGzmL,EAAOS,MAAMssH,EAAS/7E,eACjB21I,EAAID,GC/HjB,MAAME,GAAS,CAACf,EAAc94D,EAAUrrK,IAASmlO,GAAahB,EAAarpO,KAAKuwK,EAAS9lH,cAAc,EAAOvlD,GACxGolO,GAAiB,CAACjB,EAAc94D,EAAUrrK,IAASmlO,GAAahB,EAAarpO,KAAKuwK,EAAS9lH,cAAc,EAAMvlD,GAC5H,SAASmlO,GAAaE,EAAkBX,EAAY1kO,GAChD,MAAMgzB,EAAwB,MAAfhzB,EAAKgzB,OAAiBhzB,EAAKgzB,OAAS,GAC7CyrB,EAAS,IAAI,GAAM,EAAG,GACtBc,GAAS8lL,EAAiBtmL,MAAMN,GAMtC,IACIomL,EADAxnM,EAAI,OAEJynM,EAAcvlL,EAclB,OAbKA,EAAQ,IAAM,KAAQ,GACvBslL,EAAaH,EAAa,MAAQ,SAC7BA,IAAyB,MAAXnlL,IACfliB,EAAI,QAGHkiB,GAAS,KAAOA,GAAS,IAC9BslL,EAAa,QACbC,EAAcvlL,EAAQ,KAGtBslL,EAAa,MAEV,GAAS,CACZxnN,SAtBQgoN,EACP/yO,QACAkuD,KAAK/B,EAAQzrB,GACbl4B,KAAKuqO,GACL5nN,QAkBaA,QAAQm5B,SACtB2I,MAAOmlL,EAAaI,EAAc,EAClCrqO,MAAO,CACH,IAAK,CACD4iC,IACA,cAAewnM,KAGxB7kO,GCpCA,IAAI,GACAslO,GCoEP,IDpEOA,GAMR,KAAoB,GAAkB,KALrBhH,QAAU,EAC1BgH,GAAgB/G,SAAW,GAASn1O,OAAO,CACvCgD,KAAM,sBAEVk5O,GAAgB/G,SAASn9F,SAASkkG,GAAgBhH,SAAS,GEPxD,MAAM,GACT,YAAY58H,EAAOpe,EAAGxtF,EAAGD,GACrB,OAAa,MAAT6rG,EACO72G,KAAKsiB,IAAI,IAAK,IAAK,IAAK,GAEd,iBAAVu0F,EACA72G,KAAKsiB,IAAIu0F,EAAOpe,EAAGxtF,EAAGD,GAEZ,iBAAV6rG,EACA,GAAM6jI,WAAW7jI,IAAU72G,KAElCkB,MAAMD,QAAQ41G,GACP72G,KAAKsiB,IAAIu0F,QAEpB72G,KAAKsiB,IAAIu0F,EAAM94G,EAAG84G,EAAMpe,EAAGoe,EAAM5rG,EAAc,MAAX4rG,EAAM7rG,EAAY,EAAI6rG,EAAM7rG,GAEpE,MAAM1J,EAAO6F,EAAK0xK,GACd74K,KAAKsiB,IAAIhhB,EAAMvD,GAAKoJ,EAAIpJ,EAAIuD,EAAMvD,GAAK86K,EAAQv3K,EAAMm3F,GAAKtxF,EAAIsxF,EAAIn3F,EAAMm3F,GAAKogF,EAAQv3K,EAAM2J,GAAK9D,EAAI8D,EAAI3J,EAAM2J,GAAK4tK,EAAQv3K,EAAM0J,GAAK7D,EAAI6D,EAAI1J,EAAM0J,GAAK6tK,GAE7J,QAAQ+zB,GACJ,MAAMx2F,EAAO,GAAMukI,QAAQ36O,KAAK8F,UAAW8mM,GAC3C5sM,KAAKjC,EAAIq4G,EAAK,GACdp2G,KAAKy4F,EAAI2d,EAAK,GACdp2G,KAAKiL,EAAImrG,EAAK,GACdp2G,KAAKgL,EAAIorG,EAAK,GAElB,OAAOw2F,GACH5sM,KAAK26O,SAAS/tC,GAElB,IAAIhxE,EAAM+qD,EAAMC,EAAMC,GAClB,MAAM9oL,EAAImD,MAAMD,QAAQ26H,GAAQA,EAAK,GAAKA,EACpCnjC,EAAIv3F,MAAMD,QAAQ26H,GAAQA,EAAK,GAAK+qD,EACpC17K,EAAI/J,MAAMD,QAAQ26H,GAAQA,EAAK,GAAKgrD,EACpC57K,EAAI9J,MAAMD,QAAQ26H,GAAQA,EAAK,GAAKirD,EAK1C,OAJA7mL,KAAKjC,EAAI+J,KAAK8qB,MAAM,EAAU42B,MAAMzrD,EAAG,EAAG,MAC1CiC,KAAKy4F,EAAI3wF,KAAK8qB,MAAM,EAAU42B,MAAMivC,EAAG,EAAG,MAC1Cz4F,KAAKiL,EAAInD,KAAK8qB,MAAM,EAAU42B,MAAMv+C,EAAG,EAAG,MAC1CjL,KAAKgL,EAAS,MAALA,EAAY,EAAI,EAAUw+C,MAAMx+C,EAAG,EAAG,GACxChL,KAEX,QAKI,MAAO,IAJK,CAAC,IAAK,IAAK,KAAKuG,IAAK/H,IAC7B,MAAM2vC,EAAMnuC,KAAKxB,GAAKmF,SAAS,IAC/B,OAAOwqC,EAAIxsC,OAAS,EAAI,IAAIwsC,EAAQA,IAEzBn/B,KAAK,IAExB,SACI,OAAOhP,KAAK8F,UAEhB,SACI,OAAO,GAAM+xG,UAAU73G,KAAKjC,EAAGiC,KAAKy4F,EAAGz4F,KAAKiL,EAAGjL,KAAKgL,GAExD,MAAM4vO,GACF,MAAMC,EAAM,GAAG76O,KAAKjC,KAAKiC,KAAKy4F,KAAKz4F,KAAKiL,KACxC,OAAO2vO,EAAc,OAAOC,KAAS,QAAQA,KAAO76O,KAAKgL,KAE7D,SACI,OAAO,GAAM8vO,SAAShzO,KAAK8qB,OAAO5yB,KAAKjC,EAAIiC,KAAKy4F,EAAIz4F,KAAKiL,GAAK,GAAIjL,KAAKgL,GAE3E,UACI,MAAO,CAAChL,KAAKjC,EAAGiC,KAAKy4F,EAAGz4F,KAAKiL,EAAGjL,KAAKgL,GAEzC,WACI,OAAOhL,KAAK+6O,UAGpB,SAAWC,GAKP,SAASC,EAAQpkI,GACb,OAAO,IAAImkI,EAAM,IAAIE,EAAQrkI,GAAQ,IAGzC,SAASskI,EAAStkI,GACd,MAAM/tG,EAAU+tG,EAAMxtG,cAAc4E,MAAM,0BAC1C,GAAInF,EAAS,CACT,MAAM3F,EAAM2F,EAAQ,GAAGK,MAAM,WAAW5C,IAAK6V,GAAMsX,SAAStX,EAAG,KAC/D,OAAO,IAAI4+N,EAAM73O,GAErB,OAAO,KAGX,SAASi4O,EAAQ1iJ,EAAIC,EAAI93F,GACjBA,EAAI,KACFA,EAEFA,EAAI,KACFA,EAEN,MAAMw6O,EAAK,EAAIx6O,EACf,OAAIw6O,EAAK,EACE3iJ,GAAMC,EAAKD,GAAM2iJ,EAExB,EAAIx6O,EAAI,EACD83F,EAEP,EAAI93F,EAAI,EACD63F,GAAMC,EAAKD,IAAO,EAAI,EAAI73F,GAAK,EAEnC63F,EAEX,SAAS4iJ,EAASzkI,GACd,MAAM/tG,EAAU+tG,EAAMxtG,cAAc4E,MAAM,0BAC1C,GAAInF,EAAS,CACT,MAAM3F,EAAM2F,EAAQ,GAAGK,MAAM,WACvBtI,GAAOgyB,WAAW1vB,EAAI,IAAM,IAAO,KAAO,IAAO,IACjDnE,EAAI6zB,WAAW1vB,EAAI,IAAM,IACzBjG,EAAI21B,WAAW1vB,EAAI,IAAM,IACzB6H,EAAc,MAAV7H,EAAI,GAAa,EAAIuwB,SAASvwB,EAAI,GAAI,IAChD,OAAO,IAAI63O,EAAM9kI,EAAUr1G,EAAG7B,EAAG9B,EAAG8N,IAExC,OAAO,KAoDX,SAASkrG,EAAU0lB,EAAM+qD,EAAMC,EAAMC,GACjC,MAAMhmL,EAAIK,MAAMD,QAAQ26H,GAAQA,EAAK,GAAKA,EACpC58H,EAAIkC,MAAMD,QAAQ26H,GAAQA,EAAK,GAAK+qD,EACpCzpL,EAAIgE,MAAMD,QAAQ26H,GAAQA,EAAK,GAAKgrD,EACpC57K,EAAI9J,MAAMD,QAAQ26H,GAAQA,EAAK,GAAKirD,EACpCluF,EAAKz7F,GAAK,GAAMA,GAAK8B,EAAI,GAAK9B,EAAI8B,EAAI9B,EAAI8B,EAC1C05F,EAAK,EAAIx7F,EAAIy7F,EACnB,MAAO,CAC0B,IAA7ByiJ,EAAQ1iJ,EAAIC,EAAI93F,EAAI,EAAI,GACH,IAArBu6O,EAAQ1iJ,EAAIC,EAAI93F,GACa,IAA7Bu6O,EAAQ1iJ,EAAIC,EAAI93F,EAAI,EAAI,GACnB,MAALmK,EAAY,EAAIA,GAIxB,SAASjD,EAAO6yO,GACZ,OAAO,IAAII,EAAMlzO,KAAK8qB,MAAsB,IAAhB9qB,KAAKC,UAAiBD,KAAK8qB,MAAsB,IAAhB9qB,KAAKC,UAAiBD,KAAK8qB,MAAsB,IAAhB9qB,KAAKC,UAAiB6yO,OAAc14O,EAAY2wB,WAAW/qB,KAAKC,SAASm5G,QAAQ,KAsCnL,SAASg6H,EAAQjlE,GACb,MAAMp/D,EAA6B,IAArBo/D,EAAIxyK,QAAQ,KAAawyK,EAAM,IAAIA,EACjD,IAAIpxK,EAAMq3D,OAAO,KAAK26C,EAAMf,OAAO,IACnC,GAAuB,IAAjBe,EAAMl1G,QAAiC,IAAjBk1G,EAAMl1G,QAAiBu6D,OAAO/xB,MAAMtlC,GAC5D,MAAM,IAAI7B,MAAM,sBAEpB,MAAMu4O,EAAwB,IAAjB1kI,EAAMl1G,OAAe,EAAI,EAChC65O,GAAQ,GAAKD,GAAQ,EACrBE,EAAM,CAAC,IAAK,IAAK,KAAKl1O,IAAI,KAC5B,MAAMjJ,EAAIuH,EAAM22O,EAEhB,OADA32O,IAAQ02O,EACQ,IAATA,EAAa,GAAKj+O,EAAIA,IAEjC,MAAO,CAACm+O,EAAI,GAAIA,EAAI,GAAIA,EAAI,IAEhC,SAASC,EAAQ39O,EAAG06F,EAAGxtF,GACnB,MAAMuhD,EAAOypH,GAASA,EAAIt0K,OAAS,EAAI,IAAIs0K,EAAQA,EACnD,MAAO,GAAGzpH,EAAIzuD,EAAE4F,SAAS,OAAO6oD,EAAIisC,EAAE90F,SAAS,OAAO6oD,EAAIvhD,EAAEtH,SAAS,OAUzE,SAASg4O,EAAI9kI,EAAO+kI,GAChB,GAAqB,iBAAV/kI,EAAoB,CAC3B,MAAMglI,EAAqB,MAAbhlI,EAAM,GACd9wG,EAAM2tB,SAASmoN,EAAQhlI,EAAMf,OAAO,GAAKe,EAAO,IAChD94G,EAAI,EAAUyrD,OAAOzjD,GAAO,IAAM61O,EAAK,EAAG,KAC1CnjJ,EAAI,EAAUjvC,OAAQzjD,GAAO,EAAK,KAAU61O,EAAK,EAAG,KAE1D,MAAO,GAAGC,EAAQ,IAAM,MADd,EAAUryL,OAAa,IAANzjD,GAAkB61O,EAAK,EAAG,KAClBnjJ,GAAK,EAAM16F,GAAK,IAAK4F,SAAS,MAErE,MACMR,EAAM+3O,EAAQS,EADRD,EAAQ7kI,EAAM,GAAIA,EAAM,GAAIA,EAAM,IACjB+kI,IAC7B,MAAO,CAACz4O,EAAI,GAAIA,EAAI,GAAIA,EAAI,GAAI0zG,EAAM,IA3L1CmkI,EAAMc,UAHN,SAAmB34O,GACf,OAAO,IAAI63O,EAAM73O,IAMrB63O,EAAMC,QAAUA,EAShBD,EAAMG,SAAWA,EAgCjBH,EAAMM,SAAWA,EAcjBN,EAAMN,WAbN,SAAoB7jI,GAChB,GAAIA,EAAM/pD,WAAW,KACjB,OAAOmuL,EAAQpkI,GAEnB,GAAIA,EAAM/pD,WAAW,OACjB,OAAOquL,EAAStkI,GAEpB,MAAMo9H,EAAS+G,EAAMe,MAAMllI,GAC3B,OAAIo9H,EACOgH,EAAQhH,GAEZqH,EAASzkI,IAMpBmkI,EAAMF,SAHN,SAAkBriJ,EAAGztF,GACjB,OAAOgwO,EAAMc,UAAU,CAACrjJ,EAAGA,EAAGA,EAAGztF,KAiCrCgwO,EAAMnjI,UA9BN,SAAmB+jB,EAAM+qD,EAAMC,EAAMC,GACjC,MAAM9oL,EAAImD,MAAMD,QAAQ26H,GAAQA,EAAK,GAAKA,EACpCnjC,EAAIv3F,MAAMD,QAAQ26H,GAAQA,EAAK,GAAK+qD,EACpC17K,EAAI/J,MAAMD,QAAQ26H,GAAQA,EAAK,GAAKgrD,EACpC57K,EAAI9J,MAAMD,QAAQ26H,GAAQA,EAAK,GAAKirD,EACpC9xJ,EAAMjtB,KAAKitB,IAAIh3B,EAAG06F,EAAGxtF,GACrB+vC,EAAMlzC,KAAKkzC,IAAIj9C,EAAG06F,EAAGxtF,GACrB/N,GAAK63B,EAAMimB,GAAO,EACxB,IAAIn6C,EAAI,EACJ7B,EAAI,EACR,GAAIg8C,IAAQjmB,EAAK,CACb,MAAMx3B,EAAIw3B,EAAMimB,EAEhB,OADAh8C,EAAI9B,EAAI,GAAMK,GAAK,EAAIw3B,EAAMimB,GAAOz9C,GAAKw3B,EAAMimB,GACvCjmB,GACJ,KAAKh3B,EACD8C,GAAK43F,EAAIxtF,GAAK1N,GAAKk7F,EAAIxtF,EAAI,EAAI,GAC/B,MACJ,KAAKwtF,EACD53F,GAAKoK,EAAIlN,GAAKR,EAAI,EAClB,MACJ,KAAK0N,EACDpK,GAAK9C,EAAI06F,GAAKl7F,EAAI,EAK1BsD,GAAK,EAET,MAAO,CAACA,EAAG7B,EAAG9B,EAAQ,MAAL8N,EAAY,EAAIA,IAiBrCgwO,EAAM9kI,UAAYA,EAIlB8kI,EAAMjzO,OAASA,EASfizO,EAAMgB,UARN,WAEI,IAAInlI,EAAQ,IACZ,IAAK,IAAI55G,EAAI,EAAGA,EAAI,EAAGA,GAAK,EACxB45G,GAHY,mBAGK/uG,KAAKq4C,MAAsB,GAAhBr4C,KAAKC,WAErC,OAAO8uG,GAMXmkI,EAAMiB,WAHN,SAAoBrB,GAChB,OAAO7yO,EAAO6yO,GAAaj3O,YAwB/Bq3O,EAAMnyO,OArBN,SAAgBguG,EAAOqlI,GACnB,GAAqB,iBAAVrlI,EAAoB,CAC3B,MAAMglI,EAAqB,MAAbhlI,EAAM,IACb94G,EAAG06F,EAAGxtF,GAAKiwO,EAAQrkI,GAC1B,OAAIqlI,EAEW,KAAJn+O,EAAgB,KAAJ06F,EAAgB,KAAJxtF,EAAY,IAAM,UAAY,UAE1D,GAAG4wO,EAAQ,IAAM,KAAKH,EAAQ,IAAM39O,EAAG,IAAM06F,EAAG,IAAMxtF,KAEjE,MAAMlN,EAAI84G,EAAM,GACVpe,EAAIoe,EAAM,GACV5rG,EAAI4rG,EAAM,GACV7rG,EAAI6rG,EAAM,GAChB,OAAIqlI,EACW,KAAJn+O,EAAgB,KAAJ06F,EAAgB,KAAJxtF,EAAY,IACrC,CAAC,EAAG,EAAG,EAAGD,GACV,CAAC,IAAK,IAAK,IAAKA,GAEnB,CAAC,IAAMjN,EAAG,IAAM06F,EAAG,IAAMxtF,EAAGD,IAyBvCgwO,EAAML,QAHN,SAAiB9jI,EAAO+kI,GACpB,OAAOD,EAAI9kI,EAAO+kI,IAMtBZ,EAAMmB,OAHN,SAAgBtlI,EAAO+kI,GACnB,OAAOD,EAAI9kI,GAAQ+kI,IAjL3B,CAiMG,KAAU,GAAQ,MAyJlB,KAAU,GAAQ,KAvJXG,MAAQ,CACVK,UAAW,UACXC,aAAc,UACdC,KAAM,UACNC,WAAY,UACZC,MAAO,UACPC,MAAO,UACPC,OAAQ,UACRC,MAAO,UACPC,eAAgB,UAChBC,KAAM,UACNC,WAAY,UACZC,MAAO,UACPC,UAAW,UACXC,YAAa,UACbC,UAAW,UACXC,WAAY,UACZC,UAAW,UACXC,MAAO,UACPC,eAAgB,UAChBC,SAAU,UACVC,QAAS,UACTC,KAAM,UACNC,SAAU,UACVC,SAAU,UACVC,cAAe,UACfC,SAAU,UACVC,UAAW,UACXC,SAAU,UACVC,UAAW,UACXC,YAAa,UACbC,eAAgB,UAChBC,WAAY,UACZC,WAAY,UACZC,QAAS,UACTC,WAAY,UACZC,aAAc,UACdC,cAAe,UACfC,cAAe,UACfC,cAAe,UACfC,cAAe,UACfC,WAAY,UACZC,SAAU,UACVC,YAAa,UACbC,QAAS,UACTC,QAAS,UACTC,WAAY,UACZC,UAAW,UACXC,YAAa,UACbC,YAAa,UACbC,QAAS,UACTC,UAAW,UACXC,WAAY,UACZC,KAAM,UACNC,UAAW,UACXC,KAAM,UACNC,MAAO,UACPC,YAAa,UACbC,KAAM,UACNC,SAAU,UACVC,QAAS,UACTC,UAAW,UACXC,OAAQ,UACRC,MAAO,UACPC,MAAO,UACPC,SAAU,UACVC,cAAe,UACfC,UAAW,UACXC,aAAc,UACdC,UAAW,UACXC,WAAY,UACZC,UAAW,UACXC,qBAAsB,UACtBC,UAAW,UACXC,WAAY,UACZC,UAAW,UACXC,UAAW,UACXC,YAAa,UACbC,cAAe,UACfC,aAAc,UACdC,eAAgB,UAChBC,eAAgB,UAChBC,eAAgB,UAChBC,YAAa,UACbC,KAAM,UACNC,UAAW,UACXC,MAAO,UACPC,QAAS,UACTC,OAAQ,UACRC,iBAAkB,UAClBC,WAAY,UACZC,aAAc,UACdC,aAAc,UACdC,eAAgB,UAChBC,gBAAiB,UACjBC,kBAAmB,UACnBC,gBAAiB,UACjBC,gBAAiB,UACjBC,aAAc,UACdC,UAAW,UACXC,UAAW,UACXC,SAAU,UACVC,YAAa,UACbC,KAAM,UACNC,QAAS,UACTC,MAAO,UACPC,UAAW,UACXC,OAAQ,UACRC,UAAW,UACXC,OAAQ,UACRC,cAAe,UACfC,UAAW,UACXC,cAAe,UACfC,cAAe,UACfC,WAAY,UACZC,UAAW,UACXC,KAAM,UACNC,KAAM,UACNC,KAAM,UACNC,WAAY,UACZC,OAAQ,UACRC,cAAe,UACfC,IAAK,UACLC,UAAW,UACXC,UAAW,UACXC,YAAa,UACbC,OAAQ,UACRC,WAAY,UACZC,SAAU,UACVC,SAAU,UACVC,OAAQ,UACRC,OAAQ,UACRC,QAAS,UACTC,UAAW,UACXC,UAAW,UACXC,UAAW,UACXC,KAAM,UACNC,YAAa,UACbC,UAAW,UACXh9D,IAAK,UACLi9D,KAAM,UACNC,QAAS,UACTC,OAAQ,UACRC,UAAW,UACXC,OAAQ,UACRC,MAAO,UACPC,MAAO,UACPC,WAAY,UACZC,OAAQ,UACRC,YAAa,YDvUlB,KAAY,GAAU,KADbnoP,KAXR,SAAcgO,EAAM+J,GAChB,MAAMzM,EAAU,GAChB,IAAK,IAAIzL,EAAI,EAAGA,EAAImO,EAAKzJ,OAAQ1E,GAAK,EAAG,CACrC,MAAM4S,EAAUzE,EAAKnO,GACf8C,EAAUqL,EAAKnO,EAAI,GACnBgrC,EAAS/mC,MAAMD,QAAQkU,GAAQA,EAAO,CAACA,GACvCjP,EAAM,EAAY1C,MAAMqM,EAAS9P,EAASkoC,GAChDv/B,EAAQlG,KAAK0D,GAEjB,OAAO,EAAY4rL,eAAeppL,IEjFnC,MAAM88O,GACT,eACI,OAA0B,IAAnBxlP,KAAKylP,UAEhB,UACIzlP,KAAKylP,WAAY,IAGzB,SAAWD,GAcPA,EAAWv1H,QAbX,WACI,MAAO,CAACvoH,EAAQ60C,EAAY28F,KACxB,MAAM53H,EAAM43H,EAAWh7I,MACjBmK,EAAQX,EAAO6qD,UACrB2mF,EAAWh7I,MAAQ,WACX8B,KAAK0lP,WAGTpkO,EAAIlkB,KAAK4C,MACTqI,EAAM4nH,QAAQ7yH,KAAK4C,UAVnC,CAeGwlP,KAAeA,GAAa,KAkCxB,MAAMG,GACT,cACI3lP,KAAK4lP,YAAa,EAClB5lP,KAAKkpE,MAAQ,IAAI9I,IAKrB,eACI,OAAOpgE,KAAK4lP,WAQhB,UACQ5lP,KAAK4lP,aAGT5lP,KAAK4lP,YAAa,EAClB5lP,KAAKkpE,MAAM/9B,QAAShnC,IAChBA,EAAK8rH,YAETjwH,KAAKkpE,MAAMrQ,SASf,SAAS10D,GACL,OAAOnE,KAAKkpE,MAAM7tD,IAAIlX,GAU1B,IAAIA,GACAnE,KAAKkpE,MAAM5oE,IAAI6D,GAUnB,OAAOA,GACHnE,KAAKkpE,MAAMka,OAAOj/E,GAKtB,QACInE,KAAKkpE,MAAMrQ,UAGnB,SAAW8sL,GAePA,EAAc/5M,KAPd,SAAcs9B,GACV,MAAM5mD,EAAM,IAAIqjO,EAIhB,OAHAz8K,EAAM/9B,QAAShnC,IACXme,EAAIhiB,IAAI6D,KAELme,GAbf,CAgBGqjO,KAAkBA,GAAgB,KCzI9B,MAAM,WHFN,MACH,cACI3lP,KAAK80E,UAAY,GAErB,GAAGt3E,EAAMqS,EAAS9P,GACd,GAAe,MAAX8P,EACA,OAAO7P,KAENA,KAAK80E,UAAUt3E,KAChBwC,KAAK80E,UAAUt3E,GAAQ,IAI3B,OAFcwC,KAAK80E,UAAUt3E,GACvBgF,KAAKqN,EAAS9P,GACbC,KAEX,KAAKxC,EAAMqS,EAAS9P,GAChB,MAAMusC,EAAK,IAAIn3B,KACXnV,KAAKyoB,IAAIjrB,EAAM8uC,GACR,GAAQlvC,KAAK,CAACyS,EAAS9P,GAAUoV,IAE5C,OAAOnV,KAAKooB,GAAG5qB,EAAM8uC,EAAItsC,MAE7B,IAAIxC,EAAMqS,EAAS9P,GAEf,KAAMvC,GAAQqS,GAAW9P,GAErB,OADAC,KAAK80E,UAAY,GACV90E,KAEX,MAAM80E,EAAY90E,KAAK80E,UAmBvB,OAlBct3E,EAAO,CAACA,GAAQG,OAAOyR,KAAK0lE,IACpC3pC,QAASzsC,IACX,MAAM2Q,EAAQylE,EAAUp2E,GACxB,GAAK2Q,EAIL,GAAMQ,GAAW9P,EAIjB,IAAK,IAAI9C,EAAIoS,EAAM1N,OAAS,EAAG1E,GAAK,EAAGA,GAAK,EACjC4S,GAAWR,EAAMpS,KAAO4S,GAC1B9P,GAAWsP,EAAMpS,EAAI,KAAO8C,GAC7BsP,EAAMhI,OAAOpK,EAAG,eANb63E,EAAUp2E,KAUlBsB,KAEX,QAAQxC,KAAS2X,GACb,IAAIuJ,GAAW,EACf,GAAa,MAATlhB,EAAc,CACd,MAAM4N,EAAOpL,KAAK80E,UAAUt3E,GAChB,MAAR4N,IACAsT,EAAW,GAAQthB,KAAK,IAAIgO,GAAO+J,IAG3C,MAAM/J,EAAOpL,KAAK80E,UAAU,KAC5B,OAAY,MAAR1pE,EACO,EAAY0mL,eAAe,CAC9BpzK,EACA,GAAQthB,KAAK,IAAIgO,GAAO,CAAC5N,KAAS2X,MAGnCuJ,EAEX,KAAKlhB,KAAS2X,GACV,OAAOnV,KAAKkpB,QAAQ1rB,KAAS2X,OG7DlC,KAAa,GAAW,KADd86G,QAAUu1H,GAAWv1H,QAElC,EAAUg/D,YAAY,GAAUu2D,ICNzB,MAAM,WAAmB,GAC5B,eACI,OAA0B,IAAnBxlP,KAAK6lP,UAEhB,gBACW7lP,KAAK6lP,UAEhB,UACI7lP,KAAK6lP,WAAY,GCVzB,ICCW,GCDAC,GCAAC,GCEA,GCyUAC,GAOP,GLlVAC,GAA0C,SAAUC,EAAYx+O,EAAQlJ,EAAK2nP,GAC7E,IAA2H5oP,EAAvHD,EAAImJ,UAAU9E,OAAQ5D,EAAIT,EAAI,EAAIoK,EAAkB,OAATy+O,EAAgBA,EAAOxoP,OAAOkrE,yBAAyBnhE,EAAQlJ,GAAO2nP,EACrH,GAAuB,iBAAZ9gL,SAAoD,mBAArBA,QAAQ+gL,SAAyBroP,EAAIsnE,QAAQ+gL,SAASF,EAAYx+O,EAAQlJ,EAAK2nP,QACpH,IAAK,IAAIlpP,EAAIipP,EAAWvkP,OAAS,EAAG1E,GAAK,EAAGA,KAASM,EAAI2oP,EAAWjpP,MAAIc,GAAKT,EAAI,EAAIC,EAAEQ,GAAKT,EAAI,EAAIC,EAAEmK,EAAQlJ,EAAKT,GAAKR,EAAEmK,EAAQlJ,KAAST,GAChJ,OAAOT,EAAI,GAAKS,GAAKJ,OAAOC,eAAe8J,EAAQlJ,EAAKT,GAAIA,GAGzD,MAAM,WAAmBynP,GAC5B,cACI7mK,QACA3+E,KAAK64D,QAET,QACI74D,KAAKuG,IAAM,IAAIi6D,QACfxgE,KAAKmD,IAAM,GAEf,IAAI3E,GACA,OAAOwB,KAAKuG,IAAI8U,IAAI7c,GAExB,IAAIA,GACA,OAAOwB,KAAKuG,IAAIzI,IAAIU,GAExB,IAAIA,EAAKN,GACL8B,KAAKuG,IAAI+b,IAAI9jB,EAAKN,GAClB8B,KAAKmD,IAAIX,KAAKhE,GAElB,OAAOA,GACH,MAAMkD,EAAQ1B,KAAKmD,IAAIM,QAAQjF,GAC3BkD,GAAS,GACT1B,KAAKmD,IAAIkE,OAAO3F,EAAO,GAE3B,MAAMwE,EAAMlG,KAAKuG,IAAIzI,IAAIU,GAEzB,OADAwB,KAAKuG,IAAI68E,OAAO5kF,GACT0H,EAEX,KAAKgD,GACDlJ,KAAKmD,IAAIgoC,QAAS3sC,IACd,MAAMN,EAAQ8B,KAAKuG,IAAIzI,IAAIU,GAC3B0K,EAAShL,EAAOM,KAGxB,UACIwB,KAAK64D,SAGbotL,GAAW,CACPT,GAAWv1H,WACZ,GAAWpxH,UAAW,UAAW,MM7B7B,MAAMwnP,GACT,YAAY1mP,EAAU,IAClBK,KAAKk9C,WAAav9C,EAAQu9C,YAAcmpM,GAAcC,kBACtDtmP,KAAK0B,MAAQ,GACb1B,KAAKuiB,KAAO5iB,EAAQ4iB,MAAQ,GAC5BviB,KAAKumP,UAKT,UACI,OAA4B,IAArBvmP,KAAKuiB,KAAK5gB,OAUrB,OAAO6+I,EAAUtiJ,EAAOsQ,GACpB,MAAMrK,EAAO,CAAEq8I,WAAUtiJ,SACnBwD,EAAQ1B,KAAKuiB,KAAK5gB,OAAS,EAOjC,OANI6M,IACArK,EAAKqK,GAAKA,EACVxO,KAAK0B,MAAM8M,GAAM9M,GAErB1B,KAAKuiB,KAAK/f,KAAK2B,GACfnE,KAAKwmP,SAAS9kP,GACP1B,KAKX,OACI,OAAOA,KAAKuiB,KAAK,GAAKviB,KAAKuiB,KAAK,GAAGrkB,MAAQ,KAK/C,eACI,OAAO8B,KAAKuiB,KAAK,GAAKviB,KAAKuiB,KAAK,GAAGi+H,SAAW,KAElD,eAAehyI,EAAIgyI,GACf,MAAM9+I,EAAQ1B,KAAK0B,MAAM8M,GACzB,QAAqB,IAAV9M,EACP,MAAM,IAAIsB,MAAM,iBAAiBwL,iCAErC,MAAM+T,EAAOviB,KAAKuiB,KACZkkO,EAAclkO,EAAK7gB,GAAO8+I,SAC1B5lE,EAAO56E,KAAKk9C,WAAWsjG,EAAUimG,GACnC7rK,EAAO,GACPr4D,EAAK7gB,GAAO8+I,SAAWA,EACvBxgJ,KAAKwmP,SAAS9kP,IAETk5E,EAAO,IACZr4D,EAAK7gB,GAAO8+I,SAAWA,EACvBxgJ,KAAK0mP,WAAWhlP,IAQxB,SACI,MAAM6gB,EAAOviB,KAAKuiB,KACZ67K,EAAO77K,EAAK,GACZ3b,EAAO2b,EAAKrX,MASlB,cAROlL,KAAK0B,MAAM6gB,EAAK5gB,QACnB4gB,EAAK5gB,OAAS,IACd4gB,EAAK,GAAK3b,EACNA,EAAK4H,KACLxO,KAAK0B,MAAMkF,EAAK4H,IAAM,GAE1BxO,KAAK0mP,WAAW,IAEbtoD,EAAOA,EAAKlgM,MAAQ,KAE/B,UACI,IAAK,IAAIjB,EAAI,EAAGA,EAAI+C,KAAKuiB,KAAK5gB,OAAQ1E,GAAK,EACvC+C,KAAKwmP,SAASvpP,GAGtB,SAASyE,GACL,MAAM6gB,EAAOviB,KAAKuiB,KAClB,IAAI1Q,EACA1R,EACA6kC,EAAUtjC,EACd,KAAOsjC,EAAU,IACb7kC,EAAU6kC,EAAU,IAAO,EACvBhlC,KAAKk9C,WAAW36B,EAAKyiB,GAASw7G,SAAUj+H,EAAKpiB,GAAQqgJ,UAAY,IAAG,CACpE3uI,EAAM0Q,EAAKpiB,GACXoiB,EAAKpiB,GAAUoiB,EAAKyiB,GACpB,IAAIx2B,EAAK+T,EAAKyiB,GAASx2B,GACb,MAANA,IACAxO,KAAK0B,MAAM8M,GAAMrO,GAErBoiB,EAAKyiB,GAAWnzB,EAChBrD,EAAK+T,EAAKyiB,GAASx2B,GACT,MAANA,IACAxO,KAAK0B,MAAM8M,GAAMw2B,GAErBA,EAAU7kC,GAOtB,WAAWuB,GACP,MAAM6gB,EAAOviB,KAAKuiB,KACZ3b,EAAO2b,EAAK5gB,OAAS,EAC3B,IAAIqjC,EAAUtjC,EAEd,OAAa,CACT,MAAM60B,EAAwB,GAAhByO,GAAW,GACnB3S,EAAQkE,EAAO,EACrB,IAAIowN,EAAW3hN,EASf,GARIzO,GAAQ3vB,GACR5G,KAAKk9C,WAAW36B,EAAKgU,GAAMiqH,SAAUj+H,EAAKokO,GAAUnmG,UAAY,IAChEmmG,EAAWpwN,GAEXlE,GAASzrB,GACT5G,KAAKk9C,WAAW36B,EAAK8P,GAAOmuH,SAAUj+H,EAAKokO,GAAUnmG,UAAY,IACjEmmG,EAAWt0N,GAEXs0N,IAAa3hN,EAeb,MAfsB,CACtB,MAAMnzB,EAAM0Q,EAAKokO,GACjBpkO,EAAKokO,GAAYpkO,EAAKyiB,GACtB,IAAIx2B,EAAK+T,EAAKyiB,GAASx2B,GACb,MAANA,IACAxO,KAAK0B,MAAM8M,GAAMm4O,GAErBpkO,EAAKyiB,GAAWnzB,EAChBrD,EAAK+T,EAAKyiB,GAASx2B,GACT,MAANA,IACAxO,KAAK0B,MAAM8M,GAAMw2B,GAErBA,EAAU2hN,MAQ1B,SAAWN,GACPA,EAAcC,kBAAoB,CAACt7O,EAAGC,IAAMD,EAAIC,EADpD,CAEGo7O,KAAkBA,GAAgB,MLtIlC,KAAa,GAAW,KADdpvN,IA9BT,SAAa2vN,EAAe7iO,EAAQ80J,EAAS,EAAClvC,EAAGvtH,IAAM,IACnD,MAAM40C,EAAO,GACP/Q,EAAW,GACX4mM,EAAU,GACVtpO,EAAQ,IAAI8oO,GAQlB,IAPAr1L,EAAKjtC,GAAU,EACfpmB,OAAOyR,KAAKw3O,GAAez7M,QAAS/uB,IAC5BA,IAAM2H,IACNitC,EAAK50C,GAAKmiC,KAEdhhC,EAAMoT,OAAOqgC,EAAK50C,GAAIA,EAAGA,MAErBmB,EAAMmqC,WAAW,CACrB,MAAMiiF,EAAIpsH,EAAMK,SAChBipO,EAAQl9G,IAAK,EACb,MAAMm9G,EAAaF,EAAcj9G,IAAM,GACvC,IAAK,IAAI1sI,EAAI,EAAGA,EAAI6pP,EAAWnlP,OAAQ1E,GAAK,EAAG,CAC3C,MAAMmf,EAAI0qO,EAAW7pP,GACrB,IAAK4pP,EAAQzqO,GAAI,CACb,MAAM2qO,EAAM/1L,EAAK24E,GAAKkvC,EAAOlvC,EAAGvtH,GAC5B2qO,EAAM/1L,EAAK50C,KACX40C,EAAK50C,GAAK2qO,EACV9mM,EAAS7jC,GAAKutH,EACdpsH,EAAMypO,eAAe5qO,EAAG2qO,MAKxC,OAAO9mM,GC9Bf,SAAW6lM,GACPA,EAAOpuN,OAAUv5B,GAAMA,EACvB2nP,EAAOmB,KAAQ9oP,GAAMA,EAAIA,EACzB2nP,EAAOt6E,MAASrtK,GAAMA,EAAIA,EAAIA,EAC9B2nP,EAAOoB,MAAS/oP,IACZ,GAAIA,GAAK,EACL,OAAO,EAEX,GAAIA,GAAK,EACL,OAAO,EAEX,MAAM4iG,EAAK5iG,EAAIA,EACTmjG,EAAKP,EAAK5iG,EAChB,OAAO,GAAKA,EAAI,GAAMmjG,EAAK,GAAKnjG,EAAI4iG,GAAMO,EAAK,MAEnDwkJ,EAAOqB,YAAehpP,GACX2J,KAAK+3F,IAAI,EAAG,IAAM1hG,EAAI,IAEjC2nP,EAAOsB,OAAWjpP,IAEd,IAAK,IAAI6M,EAAI,EAAGC,EAAI,GAAMD,GAAKC,EAAGA,GAAK,EACnC,GAAI9M,IAAM,EAAI,EAAI6M,GAAK,GAAI,CACvB,MAAMy9K,GAAK,GAAK,EAAIz9K,EAAI,GAAK7M,GAAK,EAClC,OAAQsqL,EAAIA,EAAIx9K,EAAIA,IAvBpC,CA2BG66O,KAAWA,GAAS,KACvB,SAAWA,GACPA,EAAOI,WAAa,CAChBjqO,QAAQ+4F,GACI72G,GAAM,EAAI62G,EAAE,EAAI72G,GAE5BkpP,QAAQryI,GACI72G,GAAM,IAAOA,EAAI,GAAM62G,EAAE,EAAI72G,GAAK,EAAI62G,EAAE,EAAI,EAAI72G,IAE5DqrD,MAAK,CAACwrD,EAAGt2G,EAAI,EAAG6zC,EAAI,IACRp0C,IACJ,MAAMJ,EAAIi3G,EAAE72G,GACZ,OAAOJ,EAAIW,EAAIA,EAAIX,EAAIw0C,EAAIA,EAAIx0C,GAGvCupP,KAAI,CAACtoP,EAAI,UACGb,GAAMA,EAAIA,IAAMa,EAAI,GAAKb,EAAIa,GAEzCuoP,QAAO,CAACh1M,EAAI,MACAp0C,GAAM2J,KAAK+3F,IAAI,EAAG,IAAM1hG,EAAI,IAAM2J,KAAK8vB,IAAM,GAAK9vB,KAAK+vB,GAAK0a,EAAK,EAAKp0C,IAlB1F,CAqBG2nP,KAAWA,GAAS,KACvB,SAAWA,GAyMP,SAAS0B,EAAcrpP,GACnB,MAAMspP,EAAatpP,EAAI,EACvB,GAAIspP,EAAa,EAAI,KACjB,OAAO,OAASA,EAAaA,EAEjC,GAAIA,EAAa,EAAI,KAAM,CACvB,MAAMC,EAAcD,EAAa,IAAM,KACvC,OAAO,OAASC,EAAcA,EAAc,IAEhD,GAAID,EAAa,IAAM,KAAM,CACzB,MAAMC,EAAcD,EAAa,KAAO,KACxC,OAAO,OAASC,EAAcA,EAAc,MAEhD,CACI,MAAMA,EAAcD,EAAa,MAAQ,KACzC,OAAO,OAASC,EAAcA,EAAc,SAKpD,SAASC,EAAaxpP,GAClB,OAAO,EAAIqpP,EAAc,EAAIrpP,GAzNjC2nP,EAAO8B,WAHP,SAAoBzpP,GAChB,OAAQ,EAAI2J,KAAK8vB,IAAIz5B,GAAK2J,KAAK+vB,GAAK,IAAM,GAO9CiuN,EAAO+B,YAHP,SAAqB1pP,GACjB,OAAO2J,KAAK0tD,IAAIr3D,GAAK2J,KAAK+vB,GAAK,KAOnCiuN,EAAOgC,cAHP,SAAuB3pP,GACnB,OAAQ,IAAO2J,KAAK8vB,IAAI9vB,KAAK+vB,GAAK15B,GAAK,IAO3C2nP,EAAOiC,WAHP,SAAoB5pP,GAChB,OAAOA,EAAIA,GAOf2nP,EAAOkC,YAHP,SAAqB7pP,GACjB,OAAOA,GAAK,EAAIA,IAOpB2nP,EAAOmC,cAHP,SAAuB9pP,GACnB,OAAOA,EAAI,GAAM,EAAIA,EAAIA,GAAU,EAAI,EAAIA,GAAKA,EAAlB,GAOlC2nP,EAAOoC,YAHP,SAAqB/pP,GACjB,OAAOA,EAAIA,EAAIA,GAQnB2nP,EAAOqC,aAJP,SAAsBhqP,GAClB,MAAMyiG,EAAKziG,EAAI,EACf,OAAOyiG,EAAKA,EAAKA,EAAK,GAO1BklJ,EAAOsC,eAHP,SAAwBjqP,GACpB,OAAOA,EAAI,GAAM,EAAIA,EAAIA,EAAIA,GAAKA,EAAI,IAAM,EAAIA,EAAI,IAAM,EAAIA,EAAI,GAAK,GAO3E2nP,EAAOuC,YAHP,SAAqBlqP,GACjB,OAAOA,EAAIA,EAAIA,EAAIA,GAQvB2nP,EAAOwC,aAJP,SAAsBnqP,GAClB,MAAMyiG,EAAKziG,EAAI,EACf,OAAO,EAAIyiG,EAAKA,EAAKA,EAAKA,GAQ9BklJ,EAAOyC,eAJP,SAAwBpqP,GACpB,MAAMyiG,EAAKziG,EAAI,EACf,OAAOA,EAAI,GAAM,EAAIA,EAAIA,EAAIA,EAAIA,EAAI,EAAI,EAAIyiG,EAAKA,EAAKA,EAAKA,GAOhEklJ,EAAO0C,YAHP,SAAqBrqP,GACjB,OAAOA,EAAIA,EAAIA,EAAIA,EAAIA,GAQ3B2nP,EAAO2C,aAJP,SAAsBtqP,GAClB,MAAMyiG,EAAKziG,EAAI,EACf,OAAO,EAAIyiG,EAAKA,EAAKA,EAAKA,EAAKA,GAQnCklJ,EAAO4C,eAJP,SAAwBvqP,GACpB,MAAMyiG,EAAKziG,EAAI,EACf,OAAOA,EAAI,GAAM,GAAKA,EAAIA,EAAIA,EAAIA,EAAIA,EAAI,EAAI,GAAKyiG,EAAKA,EAAKA,EAAKA,EAAKA,GAU3EklJ,EAAO6C,WANP,SAAoBxqP,GAChB,OAAU,IAANA,EACO,EAEJ2J,KAAK+3F,IAAI,EAAG,IAAM1hG,EAAI,KAUjC2nP,EAAO8C,YANP,SAAqBzqP,GACjB,OAAU,IAANA,EACO,EAEoB,EAAvB2J,KAAK+3F,IAAI,GAAI,GAAK1hG,IAe9B2nP,EAAO+C,cAXP,SAAuB1qP,GACnB,GAAU,IAANA,GAAiB,IAANA,EACX,OAAOA,EAEX,MAAMspP,EAAiB,EAAJtpP,EACb2qP,EAAcrB,EAAa,EACjC,OAAIA,EAAa,EACN,GAAM3/O,KAAK+3F,IAAI,EAAG,GAAKipJ,GAE3B,IAAyC,EAAjChhP,KAAK+3F,IAAI,GAAI,GAAKipJ,KAQrChD,EAAOiD,WAJP,SAAoB5qP,GAChB,MAAMspP,EAAatpP,EAAI,EACvB,OAAQ,GAAK2J,KAAK2rC,KAAK,EAAIg0M,EAAatpP,GAAK,IAQjD2nP,EAAOkD,YAJP,SAAqB7qP,GACjB,MAAMyiG,EAAKziG,EAAI,EACf,OAAO2J,KAAK2rC,KAAK,EAAImtD,EAAKA,IAY9BklJ,EAAOmD,cARP,SAAuB9qP,GACnB,MAAMspP,EAAiB,EAAJtpP,EACb2qP,EAAcrB,EAAa,EACjC,OAAIA,EAAa,GACL,IAAO3/O,KAAK2rC,KAAK,EAAIg0M,EAAaA,GAAc,GAErD,IAAO3/O,KAAK2rC,KAAK,EAAIq1M,EAAcA,GAAe,IAO7DhD,EAAOoD,WAHP,SAAoB/qP,EAAG81D,EAAY,SAC/B,OAAO91D,EAAIA,IAAM81D,EAAY,GAAK91D,EAAI81D,IAQ1C6xL,EAAOqD,YAJP,SAAqBhrP,EAAG81D,EAAY,SAChC,MAAMwzL,EAAatpP,EAAI,EAAI,EAC3B,OAAQspP,EAAaA,IAAexzL,EAAY,GAAKwzL,EAAaxzL,GAAa,GAanF6xL,EAAOsD,cATP,SAAuBjrP,EAAG81D,EAAY,SAClC,MAAMwzL,EAAiB,EAAJtpP,EACbupP,EAAcD,EAAa,EAC3BzoP,EAAgB,MAAZi1D,EACV,OAAIwzL,EAAa,EACN,GAAMA,EAAaA,IAAezoP,EAAI,GAAKyoP,EAAazoP,GAE5D,IAAO0oP,EAAcA,IAAgB1oP,EAAI,GAAK0oP,EAAc1oP,GAAK,IAe5E8mP,EAAOuD,cAXP,SAAuBlrP,EAAG81D,EAAY,IAClC,GAAU,IAAN91D,GAAiB,IAANA,EACX,OAAOA,EAEX,MACM2qP,EADa3qP,EAAI,EACU,EAC3BY,EAAI,EAAIk1D,EACRj1D,EAAKD,GAAK,EAAI+I,KAAK+vB,IAAO/vB,KAAKi1J,KAAK,GAC1C,OAASj1J,KAAK+3F,IAAI,EAAG,GAAKipJ,GACtBhhP,KAAK0tD,KAAMszL,EAAc9pP,IAAM,EAAI8I,KAAK+vB,IAAO94B,IAevD+mP,EAAOwD,eAXP,SAAwBnrP,EAAG81D,EAAY,IACnC,MAAMl1D,EAAI,EAAIk1D,EACRwzL,EAAiB,EAAJtpP,EACnB,GAAU,IAANA,GAAiB,IAANA,EACX,OAAOA,EAEX,MAAMa,EAAKD,GAAK,EAAI+I,KAAK+vB,IAAO/vB,KAAKi1J,KAAK,GAC1C,OAAQj1J,KAAK+3F,IAAI,GAAI,GAAK4nJ,GACtB3/O,KAAK0tD,KAAMiyL,EAAazoP,IAAM,EAAI8I,KAAK+vB,IAAO94B,GAC9C,GAsBR+mP,EAAOyD,iBAlBP,SAA0BprP,EAAG81D,EAAY,KACrC,MAAMl1D,EAAI,EAAIk1D,EACd,GAAU,IAAN91D,GAAiB,IAANA,EACX,OAAOA,EAEX,MAAMspP,EAAiB,EAAJtpP,EACb2qP,EAAcrB,EAAa,EAC3BzoP,EAAKD,GAAK,EAAI+I,KAAK+vB,IAAO/vB,KAAKi1J,KAAK,GAC1C,OAAI0qF,EAAa,EAER3/O,KAAK+3F,IAAI,EAAG,GAAKipJ,GACdhhP,KAAK0tD,KAAMszL,EAAc9pP,IAAM,EAAI8I,KAAK+vB,IAAO94B,IAF9C,GAIL+I,KAAK+3F,IAAI,GAAI,GAAKipJ,GACtBhhP,KAAK0tD,KAAMszL,EAAc9pP,IAAM,EAAI8I,KAAK+vB,IAAO94B,GAC/C,GACA,GAsBR+mP,EAAO0B,cAAgBA,EAKvB1B,EAAO6B,aAAeA,EAQtB7B,EAAO0D,gBANP,SAAyBrrP,GACrB,OAAIA,EAAI,GACyB,GAAtBwpP,EAAiB,EAAJxpP,GAEU,GAA3BqpP,EAAkB,EAAJrpP,EAAQ,GAAW,IAtOhD,CAyOG2nP,KAAWA,GAAS,KC3RvB,SAAWC,GACPA,EAAOvpM,OAAS,CAACxxC,EAAGC,KAChB,MAAM1N,EAAI0N,EAAID,EACd,OAAQ7M,GACG6M,EAAIzN,EAAIY,GAGvB4nP,EAAOpnP,OAAS,CAACqM,EAAGC,KAChB,MAAMmE,EAAOzR,OAAOyR,KAAKpE,GACzB,OAAQ7M,IACJ,MAAM+H,EAAM,GACZ,IAAK,IAAIjJ,EAAImS,EAAKzN,OAAS,GAAU,IAAP1E,EAAUA,GAAK,EAAG,CAC5C,MAAMuB,EAAM4Q,EAAKnS,GACjBiJ,EAAI1H,GAAOwM,EAAExM,IAAQyM,EAAEzM,GAAOwM,EAAExM,IAAQL,EAE5C,OAAO+H,IAGf6/O,EAAO9gO,KAAO,CAACja,EAAGC,KACd,MAAM2qL,EAAM,4CACN6zD,EAAK7zD,EAAItnL,KAAKtD,GACd0+O,EAAK9zD,EAAItnL,KAAKrD,GACd0+O,EAAKD,EAAKA,EAAG,GAAK,GAClBxwJ,EAAKuwJ,GAAMA,EAAG,GAAK,EACnBG,EAAKF,GAAMA,EAAG,GAAK,EACnBhoP,EAAQioP,EAAGlmP,QAAQ,KACnBg5C,EAAY/6C,EAAQ,EAAIioP,EAAG,GAAGhoP,OAASD,EAAQ,EAAI,EACnDnE,EAAIqsP,EAAK1wJ,EACTywC,EAAI8/G,EAAKA,EAAG,GAAK,GACvB,OAAQtrP,IACI+6F,EAAK37F,EAAIY,GAAG+iH,QAAQzkE,GAAaktF,GAGjDo8G,EAAOlvI,MAAQ,CAAC7rG,EAAGC,KACf,MAAM4+O,EAAKn2N,SAAS1oB,EAAE1H,MAAM,GAAI,IAC1BgpC,EAAK5Y,SAASzoB,EAAE3H,MAAM,GAAI,IAC1BwmP,EAAU,IAALD,EACLE,GAAW,IAALz9M,GAAiBw9M,EACvBE,EAAU,MAALH,EACLI,GAAW,MAAL39M,GAAiB09M,EACvBE,EAAU,SAALL,EACLM,GAAW,SAAL79M,GAAiB49M,EAC7B,OAAQ/rP,GAIG,KAAM,GAAK,GAHP2rP,EAAKC,EAAK5rP,EAAK,IACf6rP,EAAKC,EAAK9rP,EAAK,MACf+rP,EAAKC,EAAKhsP,EAAK,UACSwF,SAAS,IAAIL,MAAM,IA9ClE,CAiDGyiP,KAAWA,GAAS,KC/CvB,SAAWqE,GACP,MAAMzzN,EAAYygN,GAAOC,UAAV,WAwDf,SAAS/wO,EAASgmC,EAAIpkB,EAAKhiB,GACnBomC,GACA,EAAYzoB,MAAM,KACdyoB,EAAGpkB,EAAKhiB,KAIpB,SAASyyM,EAAQn6M,EAAK2F,GAClBu0M,aAAaC,QAAQn6M,EAAKukB,KAAKs3C,UAAUl2D,IAE7C,SAAS0tI,EAAQrzI,GACb,MAAM2F,EAAOu0M,aAAa7mE,QAAQrzI,GAClC,OAAO2F,EAAO4e,KAAKC,MAAM7e,GAAQ,KAErC,SAASkmP,EAAUp7N,GACf,MAAMvtB,EAAQmwI,EAAQy4G,EAASr7N,IAC/B,OAAIvtB,GACkB,MAAdA,EAAM0N,OACN1N,EAAM0N,KAAO,IAEV1N,GAEJ,CAAE0N,KAAM,IAEnB,SAASm7O,EAAOt7N,EAAYzgB,GACxB,MAAO,GAAGmoB,KAAU1H,UAAmBzgB,IAE3C,SAAS87O,EAASr7N,GACd,MAAO,GAAG0H,KAAU1H,UA3ExBm7N,EAAaz5N,OARb,SAAgB1B,EAAYrqB,EAAK0nC,GAC7B,MAAM99B,EAAK5J,EAAI4J,IAAM,EAAUugD,SAAS,QAClCrtD,EAAQ2oP,EAAUp7N,GACxBvtB,EAAM0N,KAAK5M,KAAKgM,GAChBmqM,EAAQ4xC,EAAOt7N,EAAYzgB,GAAK5J,GAChC+zM,EAAQ2xC,EAASr7N,GAAavtB,GAC9B4E,EAASgmC,EAAI,KAAM3uC,OAAO+rD,OAAO/rD,OAAO+rD,OAAO,GAAI9kD,GAAM,CAAE4J,SA0B/D47O,EAAa14O,KAvBb,SAAcud,EAAYupE,EAAOlsD,GAC7B,MAAM5qC,EAAQ2oP,EAAUp7N,GAClBu7N,EAAO,GACb,GAAa,MAAThyJ,EACA92F,EAAM0N,KAAK+7B,QAAS38B,IAChB,MAAM5J,EAAMitI,EAAQ04G,EAAOt7N,EAAYzgB,IAClC5J,EAID4lP,EAAKhoP,KAAKoC,GAHV0B,EAASgmC,EAAI,IAAItpC,MAAM,gCAAgCwL,qBAM/DlI,EAASgmC,EAAI,KAAMk+M,QAElB,GAAIhyJ,EAAMhqF,GAAI,CACf,MAAM5J,EAAMitI,EAAQ04G,EAAOt7N,EAAYupE,EAAMhqF,KAC7ClI,EAASgmC,EAAI,KAAM1nC,EAAM,CAACA,GAAO,SAGjC0B,EAASgmC,EAAI,KAAM,KAuB3B89M,EAAaxsO,OAnBb,SAAgBqR,EAAYupE,EAAOlsD,GAC/B,MAAM5qC,EAAQ2oP,EAAUp7N,GACxB,GAAa,MAATupE,EACA92F,EAAM0N,KAAK+7B,QAAS38B,IAChBkqM,aAAa+xC,WAAWF,EAAOt7N,EAAYzgB,MAE/CkqM,aAAa+xC,WAAWH,EAASr7N,IACjC3oB,EAASgmC,EAAI,WAEZ,GAAIksD,EAAMhqF,GAAI,CACf,MAAM6G,EAAM3T,EAAM0N,KAAK3L,QAAQ+0F,EAAMhqF,IACjC6G,GAAO,GACP3T,EAAM0N,KAAK/H,OAAOgO,EAAK,GAE3BqjM,aAAa+xC,WAAWF,EAAOt7N,EAAYupE,EAAMhqF,KACjDmqM,EAAQ2xC,EAASr7N,GAAavtB,GAC9B4E,EAASgmC,EAAI,QAnDzB,CAuFG,KAAiB,GAAe,KCtF5B,MAAM,WAAa,GACtB,cACIqyC,QACA3+E,KAAKm4E,IAAM,GAAQppB,WACnB,GAAK27L,MAAM1qP,KAAKm4E,KAAOn4E,KAE3B,eACI,OAAO,EAGX,cAAcid,EAAMtd,GAChB,OAAO,EAEX,EAAE6G,GACE,OAAO,GAAK+jC,EAAE/jC,GAElB,MAAMA,EAAOxG,KAAK8xB,WAEd,OADA9xB,KAAKuqC,EAAE/jC,GAAMqX,QACN7d,KAEX,QAAQwG,EAAOxG,KAAK8xB,WAEhB,OADA9xB,KAAKuqC,EAAE/jC,GAAMoX,SACN5d,KAEX,OAAOwG,EAAOxG,KAAK8xB,WAOf,OANItrB,IAASxG,KAAK8xB,YACd9xB,KAAK2qP,qBAAqB7nP,UAC1B9C,KAAKg5K,kBACE,GAAK0xE,MAAM1qP,KAAKm4E,MAE3Bn4E,KAAK4qP,QAAQpkP,GACNxG,KAEX,YACA,SAASoR,EAAW5K,EAAOxG,KAAK8xB,WAC5BtrB,EAAKmlF,UAAUztF,MAAQgD,MAAMD,QAAQmQ,GAC/BA,EAAUpC,KAAK,KACfoC,EAEV,SAASA,EAAW5K,EAAOxG,KAAK8xB,WAE5B,OADA9xB,KAAKuqC,EAAE/jC,GAAM02B,SAASh8B,MAAMD,QAAQmQ,GAAaA,EAAUpC,KAAK,KAAOoC,GAChEpR,KAEX,YAAYoR,EAAW5K,EAAOxG,KAAK8xB,WAE/B,OADA9xB,KAAKuqC,EAAE/jC,GAAM+2B,YAAYr8B,MAAMD,QAAQmQ,GAAaA,EAAUpC,KAAK,KAAOoC,GACnEpR,KAEX,SAASskB,EAAO9d,EAAOxG,KAAK8xB,WAExB,OADA9xB,KAAKuqC,EAAE/jC,GAAMge,IAAIF,GACVtkB,KAEX,SAAS4P,EAAOpJ,EAAOxG,KAAK8xB,WASxB,OARa,MAATliB,GAAyB,MAARpJ,IACbA,aAAgB2kG,WAChB,EAAIl4F,KAAKzM,EAAMoJ,GAGf5P,KAAKuqC,EAAE/jC,GAAMyM,KAAKrD,IAGnB5P,KAUX,SAAS4vO,EAAUppO,EAAOxG,KAAK8xB,WAC3B,IAAIkT,EAAUx+B,EACd,KAAOw+B,GAAgC,IAArBA,EAAQ9gC,UAAgB,CACtC,MAAMhG,EAAQ8mC,EAAQ//B,aAAa2qO,GACnC,GAAa,MAAT1xO,EACA,OAAOA,EAEX,GAAI8mC,IAAYhlC,KAAK8xB,UACjB,OAAO,KAEXkT,EAAUA,EAAQ3/B,WAEtB,OAAO,KAEX,KAAKI,EAAUolP,EAAW7qP,KAAK8xB,UAAWne,EAAY3T,KAAK2T,WACvD,OAAO,GAAKjC,KAAKjM,EAAUolP,EAAUl3O,GAAW1N,MAEpD,QAAQR,EAAUolP,EAAW7qP,KAAK8xB,UAAWne,EAAY3T,KAAK2T,WAC1D,MAAMgU,EAAQ3nB,KAAK0R,KAAKjM,EAAUolP,EAAUl3O,GAC5C,OAAOgU,EAAMhmB,OAAS,EAAIgmB,EAAM,GAAK,KAEzC,WAAWioN,EAAUppO,EAAOxG,KAAK8xB,WAC7B,IAAIntB,EAAO6B,EACX,KAAO7B,GAAQA,EAAKM,cAAc,CAC9B,MAAMJ,EAAMF,EAAKM,aAAa2qO,GAC9B,IAAY,MAAP/qO,GAAeF,IAAS3E,KAAK8xB,YAAsB,UAARjtB,EAC5C,OAAOF,EAEXA,EAAOA,EAAKU,WAOhB,OAAO,KAEX,YAAYmB,EAAMskP,GACd,IAAIrlP,EACJ,GAAIe,IAASxG,KAAK8xB,UAId,MAH4B,iBAAjBg5N,IACPrlP,EAAW,KAAKqlP,GAEbrlP,EAEX,GAAIe,EAAM,CACN,MAAM08C,EAAM,EAAIxhD,MAAM8E,GAAQ,EAC9Bf,EAAW,GAAGe,EAAKi/E,QAAQp8E,2BAA2B65C,KAClD4nM,IACArlP,GAAY,MAAMqlP,GAEtBrlP,EAAWzF,KAAK+qP,YAAYvkP,EAAKnB,WAAYI,GAEjD,OAAOA,EAEX,gBAAgB2L,GACZ,OAAO,GAAKulB,OAAOvlB,GAEvB,eAAekY,EAAQyG,GACnB,GAAc,MAAVzG,EACA,OAAOtpB,KAEN+vB,GACD/vB,KAAKgrP,mBAET,MAAMC,EAAW,iBAWjB,OAVAttP,OAAOyR,KAAKka,GAAQ6hB,QAAS3sC,IACzB,MAAMyP,EAAQzP,EAAIyP,MAAMg9O,GACxB,GAAa,MAATh9O,EACA,OAEJ,MAAM0O,EAAS3c,KAAKkrP,gBAAgB5hO,EAAO9qB,IACrB,mBAAXme,GACP3c,KAAKmrP,cAAcl9O,EAAM,GAAIA,EAAM,GAAI0O,KAGxC3c,KAEX,mBAEI,OADAA,KAAKuqC,EAAEvqC,KAAK8xB,WAAWrJ,IAAIzoB,KAAKorP,qBACzBprP,KAEX,uBAAuBspB,EAAQ/G,GAE3B,OADAviB,KAAKqrP,kBAAkBvoP,SAAUwmB,EAAQ/G,GAClCviB,KAEX,2BAEI,OADAA,KAAK2qP,qBAAqB7nP,UACnB9C,KAEX,cAAcwoH,EAAW/iH,EAAUgiK,GAE/B,OADAznK,KAAKuqC,EAAEvqC,KAAK8xB,WAAW1J,GAAGogG,EAAYxoH,KAAKorP,oBAAqB3lP,EAAUgiK,GACnEznK,KAEX,gBAAgBwoH,EAAW/iH,EAAUgiK,GACjC,MAAMjqK,EAAOgrH,EAAYxoH,KAAKorP,oBAU9B,OATgB,MAAZ3lP,EACAzF,KAAKuqC,EAAEvqC,KAAK8xB,WAAWrJ,IAAIjrB,GAEF,iBAAbiI,EACZzF,KAAKuqC,EAAEvqC,KAAK8xB,WAAWrJ,IAAIjrB,EAAMiI,EAAUgiK,GAG3CznK,KAAKuqC,EAAEvqC,KAAK8xB,WAAWrJ,IAAIjrB,EAAMiI,GAE9BzF,KAEX,kBAAkBwG,EAAM8iB,EAAQ/G,GAC5B,GAAc,MAAV+G,EACA,OAAOtpB,KAEX,MAAM1B,EAAK0B,KAAKorP,oBACVn9G,EAAQjuI,KAAKuqC,EAAE/jC,GAOrB,OANA7I,OAAOyR,KAAKka,GAAQ6hB,QAASq9E,IACzB,MAAM7rG,EAAS3c,KAAKkrP,gBAAgB5hO,EAAOk/F,IACrB,mBAAX7rG,GACPsxH,EAAM7lH,GAAGogG,EAAYlqH,EAAIikB,EAAM5F,KAGhC3c,KAEX,qBAAqBwG,GAIjB,OAHY,MAARA,GACAxG,KAAKuqC,EAAE/jC,GAAMiiB,IAAIzoB,KAAKorP,qBAEnBprP,KAEX,oBACI,MAAO,IAAIo3O,GAAOC,mBAAmBr3O,KAAKm4E,MAG9C,gBAAgBtoE,GAEZ,IAAI8M,EACJ,GAAuB,iBAAZ9M,EAAsB,CAC7B,MAAMnK,EAAK1F,KAAK6P,GACE,mBAAPnK,IACPiX,EAAS,IAAIxH,IAASzP,EAAGtI,KAAK4C,QAASmV,SAI3CwH,EAAS,IAAIxH,IAAStF,EAAQzS,KAAK4C,QAASmV,GAEhD,OAAOwH,EAEX,eAAe9O,EAAGlO,EAAU,IAIxB,MAAM,OAAE+H,EAAM,KAAEnG,EAAI,QAAE0rB,EAAU,EAAC,QAAEC,EAAU,GAAMrf,EACnD,OAAIlO,EAAQ2rP,WAAsB,cAAT/pP,GAAiC,aAATA,EACtCuB,SAASyoP,iBAAiBt+N,EAASC,GAEvCxlB,EAEX,gBAAgBmG,GAEZ,OADA7N,KAAKwrP,aAAa39O,EAAG,CAAE49O,oBAAoB,IACpCzrP,KAEX,qBAAqB6N,GACjB,OAAmD,IAA5C7N,KAAK0rP,aAAa79O,GAAG49O,mBAEhC,aAAa59O,GACT,OAAO7N,KAAK2rP,UAAU99O,GAE1B,aAAaA,EAAG0U,GACZ,OAAOviB,KAAK2rP,UAAU99O,EAAG0U,GAE7B,UAAU1U,EAAG0U,GACT,GAAS,MAAL1U,EACA,MAAM,IAAIuR,UAAU,yBAExB,IAAIwsO,EAAc/9O,EAAE0U,KACpB,MAAM/jB,EAAM,KAAKwB,KAAKm4E,QAEtB,OAAY,MAAR51D,EACmB,MAAfqpO,EACO,GAEJA,EAAYptP,IAAQ,IAGZ,MAAfotP,IACAA,EAAc/9O,EAAE0U,KAAO,IAEH,MAApBqpO,EAAYptP,GACZotP,EAAYptP,GAAOb,OAAO+rD,OAAO,GAAInnC,GAGrCqpO,EAAYptP,GAAOb,OAAO+rD,OAAO/rD,OAAO+rD,OAAO,GAAIkiM,EAAYptP,IAAO+jB,GAEnEqpO,EAAYptP,IAEvB,eAAe2oC,GACX,OAAO,GAAK+mC,eAAe/mC,KAGnC,SAAW6+M,GACP,SAASz7M,EAAE/jC,GACP,OAAO,KAAOA,GAElBw/O,EAAKz7M,EAAIA,EAMTy7M,EAAKjhP,cALL,SAAuB0gF,EAASomK,GAC5B,OAAOA,EACD,EAAInhJ,iBAAiBjlB,GAAW,KAChC,EAAIE,gBAAgBF,GAAW,QAsBzCugK,EAAKt0O,KAnBL,SAAcjM,EAAUolP,EAAUl3O,GAC9B,IAAKlO,GAAyB,MAAbA,EACb,MAAO,CAAEQ,MAAO,CAAC4kP,IAErB,GAAIl3O,EAAW,CACX,MAAMgU,EAAQhU,EAAUlO,GACxB,GAAIkiB,EACA,MAAO,CAAE1hB,MAAO/E,MAAMD,QAAQ0mB,GAASA,EAAQ,CAACA,IAGxD,OAAIyvN,GAAOG,eACA,CACHuU,eAAe,EAEf7lP,MAAOskC,EAAEsgN,GAAUn5O,KAAKjM,GAAUK,WAGnC,CAAEG,MAAO,KA8BpB+/O,EAAK93K,eA3BL,SAAwB/mC,GACpB,IAAI4kN,EAAkB5kN,EACtB,MAAM/b,EAAgB+b,EAAI/b,cACpB4gO,EAAW5gO,GACbA,EAAciB,gBACdjB,EAAciB,eAAe,GACjC,GAAI2/N,EAAU,CAEV,IAAK,MAAMxtP,KAAO2oC,OAGQjlC,IAAlB8pP,EAASxtP,KACTwtP,EAASxtP,GAAO2oC,EAAI3oC,IAG5ButP,EAAkBC,EAGtB,MAAMtkP,EAASqkP,EAAgBrkP,OAC/B,GAAIA,EAAQ,CACR,MAAMukP,EAAavkP,EAAOwkP,wBACtBD,IACAF,EAAgBrkP,OAASukP,GAGjC,OAAOF,GAxDf,CA2DG,KAAS,GAAO,MACR/F,GAMR,KAAS,GAAO,KALV0E,MAAQ,GAIb1E,GAAKmG,QAHL,SAAiBh0K,GACb,OAAO6tK,GAAK0E,MAAMvyK,IAAQ,MAKlC,SAAWygK,GACP,IAAItrK,EAAU,EAMdsrK,EAAQ7pL,SALR,WACI,MAAMvgD,EAAK,IAAI8+D,EAEf,OADAA,GAAW,EACJ9+D,GALf,CAQG,KAAY,GAAU,KE3VlB,MAAM,GAAQ49O,GAAaA,ECClC,SAASC,GAAanuP,EAAO62B,GACzB,OAAY,IAARA,EACO,KAEDjtB,KAAK8qB,MAAO10B,EAAQ62B,EAAO,KAA9B,IAEX,SAASu3N,GAAIz4O,GAMT,MALiB,CAACu4O,EAAUv/N,EAAMmrN,EAAQt8G,IAC/B7uG,EAAKyrN,cAAcN,GA4BlC,SAAyBnkO,EAAU1M,EAAK0lB,EAAMmrN,EAAQt8G,GAClD,MAAM84G,EAAa3nN,EAAK8nN,gBACxB,IAAKH,EACD,OAAOrtO,EAEX,MAAMxF,EAAS6yO,EAAW34K,mBAAmB6/D,GAC7C,GAAI7nH,EAAU,CACV,MAAM04O,EAAc/X,EAAW7yO,SAC/BwF,EAAIqlP,OAAS,CACThvP,KAAM,QACN2X,KAAM,CACFgnD,MAAOx6D,EAAS4qP,SAKxBplP,EAAIqlP,OAAS,CACThvP,KAAM,SACN2X,KAAM,CACFxT,WAIZ,OAAOwF,EAlDGslP,CAAgB54O,EAAUu4O,EAAUv/N,EAAMmrN,EAAQt8G,GAKhE,SAAyB7nH,EAAU0O,EAAMsK,EAAMmrN,EAAQt8G,GACnD,MAAM/2H,EAAOkoB,EAAKglN,KACZn9K,EAAQ/vD,EAAK+nP,WACbnxL,EAAO1uC,EAAK8/N,0BAA0B3U,GACtCvkL,EAAS9uD,EAAKi4H,UAAUliE,YACxBrjC,EAAM,GAAM94B,OAAOm9H,GAAQnoE,OAAOmB,EAAOjB,GAC/C,IAAIJ,EAAKh8B,EAAIkb,EAAIgpB,EAAKhpB,EAClB+gB,EAAKj8B,EAAImb,EAAI+oB,EAAK/oB,EAClB3+B,IACAw/C,EAAKg5L,GAAah5L,EAAIkI,EAAKlqC,OAC3BiiC,EAAK+4L,GAAa/4L,EAAIiI,EAAK9nC,SAU/B,OARAlR,EAAKiqO,OAAS,CACVhvP,KAAM,UACN2X,KAAM,CACFk+C,KACAC,KACAC,QAAQ,IAGThxC,EAxBGqqO,CAAgB/4O,EAAUu4O,EAAUv/N,EAAMmrN,EAAQt8G,GAmDzD,MAAMmxH,GAAcP,IAAI,GAClBQ,GAAcR,IAAI,GC7DxB,IAAI,GACAS,GCAA,GA2VAC,GC6CAC,IFxYAF,GAMR,KAAuB,GAAqB,KALxBtZ,QAAU,EAC7BsZ,GAAmBrZ,SAAW,GAASn1O,OAAO,CAC1CgD,KAAM,wBAEVwrP,GAAmBrZ,SAASn9F,SAASw2G,GAAmBtZ,SAAS,GGN9D,MAAM,GACT,YAAY5mN,GACR7sB,KAAK6sB,KAAOA,EACZ7sB,KAAKktP,QAET,QACQltP,KAAKmtP,WACLntP,KAAKmtP,UAAUl9H,UAEnBjwH,KAAKmtP,UAAY,IAAI,GACrBntP,KAAKotP,UAAY,GAErB,IAAI5mP,GAKA,OAJcxG,KAAKmtP,UACR9xO,IAAI7U,IACXxG,KAAKmtP,UAAU7qO,IAAI9b,EAAM,IAEtBxG,KAAKmtP,UAAUrvP,IAAI0I,GAE9B,QAAQA,GACJ,MAAM0uL,EAAOl1L,KAAKlC,IAAI0I,GAItB,OAHK0uL,EAAK3yK,OACN2yK,EAAK3yK,KAAO,IAET2yK,EAAK3yK,KAEhB,UAAU/b,GACN,MAAM0uL,EAAOl1L,KAAKlC,IAAI0I,GACtB,GAAmB,MAAf0uL,EAAK99H,OAAgB,CACrB,MAAM1vD,EAAS1H,KAAK6sB,KAAKwgO,eAAiBrtP,KAAK6sB,KAAKiF,UACpDojK,EAAK99H,OAAS,EAAI6kE,sBAAsBz1H,EAAMkB,GAElD,OAAO,EAAI02H,gBAAgB82D,EAAK99H,QAEpC,SAAS5wD,GACL,MAAM0uL,EAAOl1L,KAAKlC,IAAI0I,GAItB,OAHkB,MAAd0uL,EAAK9jJ,QACL8jJ,EAAK9jJ,MAAQ,EAAIsrF,gBAAgBl2H,IAE9B0uL,EAAK9jJ,MAAM3pC,QAEtB,gBAAgBjB,GACZ,MAAM0uL,EAAOl1L,KAAKlC,IAAI0I,GAItB,OAHyB,MAArB0uL,EAAKnmD,eACLmmD,EAAKnmD,aAAe,EAAInS,QAAQp2H,IAE7B0uL,EAAKnmD,aAAatnI,UF5CjC,SAAWulP,GAKP,SAASM,EAAehwH,GACpB,OAAiB,MAAVA,GAAoC,iBAAXA,EAYpC,SAASy1D,EAASz1D,GACd,OAAO,GAAGA,GACLlzF,OACApiC,QAAQ,WAAY,KACpBA,QAAQ,SAAU,MAe3B,SAASulP,EAAgBjwH,EAAQ39H,EAAU,CAAErB,GAAI,EAAIA,GAAG4mF,MACpD,MAAMx9D,EAAW5kB,SAASkjB,yBACpB9X,EAAS,GACTyF,EAAY,GACZ4J,EAAQ,CACV,CACI+/G,OAAQp8H,MAAMD,QAAQq8H,GAAUA,EAAS,CAACA,GAC1Cn9H,OAAQunB,EACRppB,GAAIqB,EAAQrB,KAGpB,KAAOif,EAAM5b,OAAS,GAAG,CACrB,MAAMwC,EAAOoZ,EAAMrS,MACnB,IAAI5M,EAAK6F,EAAK7F,IAAM,EAAIA,GAAG4mF,IAC3B,MAAMsoK,EAAUrpP,EAAKm5H,OACfj4H,EAAalB,EAAKhE,OACxBqtP,EAAQriN,QAASsiN,IAEb,MAAMhoK,EAAUgoK,EAAOhoK,QACvB,IAAKA,EACD,MAAM,IAAIrmE,UAAU,mBAGpBquO,EAAOnvP,KACPA,EAAKmvP,EAAOnvP,IAEhB,MAAM4mF,EAAM5mF,IAAO,EAAIA,GAAG4mF,IACpBvgF,EAAOrG,EACP,EAAIqnF,gBAAgBF,EAASnnF,GAC7B,EAAIyG,cAAc0gF,GAElB71E,EAAQ69O,EAAO79O,MACjBA,IACIs1E,EACA,EAAIjyE,KAAKtO,EAAM,EAAI4kG,eAAe35F,IAGlC,KAAOjL,GAAMsO,KAAKrD,IAI1B,MAAM0U,EAAQmpO,EAAOnpO,MACjBA,GACA,KAAO3f,GAAM6f,IAAIF,GAGrB,MAAMlT,EAAYq8O,EAAOr8O,UACR,MAAbA,GACAzM,EAAKO,aAAa,QAAShE,MAAMD,QAAQmQ,GAAaA,EAAUpC,KAAK,KAAOoC,GAG5Eq8O,EAAOj6O,cACP7O,EAAK6O,YAAci6O,EAAOj6O,aAG9B,MAAM/N,EAAWgoP,EAAOhoP,SACxB,GAAgB,MAAZA,EAAkB,CAClB,GAAIkO,EAAUlO,GACV,MAAM,IAAI2Z,UAAU,2BAExBzL,EAAUlO,GAAYd,EAG1B,GAAI8oP,EAAOC,cAAe,CACtB,IAAIC,EAAaF,EAAOC,cACnBxsP,MAAMD,QAAQ0sP,KACfA,EAAa,CAACA,IAElBA,EAAWxiN,QAAS3tC,IACX0Q,EAAO1Q,KACR0Q,EAAO1Q,GAAQ,IAEnB0Q,EAAO1Q,GAAMgF,KAAKmC,KAG1BU,EAAWD,YAAYT,GAEvB,MAAMsW,EAAWwyO,EAAOxyO,SACpB/Z,MAAMD,QAAQga,IACdsC,EAAM/a,KAAK,CAAElE,KAAIg/H,OAAQriH,EAAU9a,OAAQwE,MAUvD,OANAhH,OAAOyR,KAAKlB,GAAQi9B,QAASyiN,IACzB,GAAIj6O,EAAUi6O,GACV,MAAM,IAAI5qP,MAAM,4BAEpB2Q,EAAUi6O,GAAa1/O,EAAO0/O,KAE3B,CAAElmO,WAAU/T,YAAWzF,UAGlC,SAAS2/O,EAAgBp6O,GACrB,OAAOA,aAAsB03F,WACvB,EAAIT,iBAAiB,KACrB,EAAI3lG,cAAc,OAhI5BioP,EAAOc,aAHP,SAAsBxwH,GAClB,OAAiB,MAAVA,IAAmBgwH,EAAehwH,IAM7C0vH,EAAOM,eAAiBA,EAMxBN,EAAOvlP,MALP,SAAe61H,GACX,OAAiB,MAAVA,GAAkBgwH,EAAehwH,GAClCA,EACA,EAAUp2E,UAAUo2E,IAY9B0vH,EAAOj6D,SAAWA,EAYlBi6D,EAAOe,kBAXP,SAA2BzwH,GACvB,MAAM51G,EAAW5kB,SAASkjB,yBAGpBgoO,EAAYj7D,EAASz1D,GAK3B,OAJc,EAAUuyD,aAAam+D,EAAW,CAAE1sO,KAAK,IACjD6pB,QAASxmC,IACX+iB,EAAStiB,YAAYT,KAElB,CAAE+iB,WAAU/T,UAND,GAMYzF,OAPf,KAqGnB8+O,EAAOO,gBAAkBA,EAoCzBP,EAAOiB,aA9BP,SAAsB3wH,GAClB,GAAIgwH,EAAehwH,GAAS,CACxB,MAAM31G,EAAQ,GAAO01G,cAAcC,GAC7B15G,EAAQ+D,EAAMhmB,OACpB,GAAc,IAAViiB,EACA,MAAO,CACHpd,KAAMmhB,EAAM,GAAGhjB,MAGvB,GAAIif,EAAQ,EAAG,CACX,MAAMpd,EAAOqnP,EAAgBlmO,EAAM,GAAGhjB,MAItC,OAHAgjB,EAAMwjB,QAASxmC,IACX6B,EAAKpB,YAAYT,EAAKA,QAEnB,CAAE6B,QAEb,MAAO,GAEX,MAAMrF,EAASosP,EAAgBjwH,GACzB51G,EAAWvmB,EAAOumB,SACxB,IAAIlhB,EAAO,KAQX,OAPIkhB,EAAS9Z,WAAWjM,OAAS,GAC7B6E,EAAOqnP,EAAgBnmO,EAASjU,YAChCjN,EAAKpB,YAAYsiB,IAGjBlhB,EAAOkhB,EAASjU,WAEb,CAAEjN,OAAMmN,UAAWxS,EAAOwS,YAYrCq5O,EAAOkB,uBATP,SAAgC5wH,GAC5B,MAAMriH,EAAW,GAAOoiH,cAAcC,GAChC51G,EAAW5kB,SAASkjB,yBAC1B,IAAK,IAAI/oB,EAAI,EAAGyB,EAAIuc,EAAStZ,OAAQ1E,EAAIyB,EAAGzB,GAAK,EAAG,CAChD,MAAMkxP,EAAelzO,EAAShe,GAAG0H,KACjC+iB,EAAStiB,YAAY+oP,GAEzB,MAAO,CAAEzmO,WAAU/T,UAAW,KA5KtC,CA+KG,KAAW,GAAS,KAEvB,SAAWq5O,GACP,SAASjC,EAAYvkP,EAAMid,EAAMtI,GAC7B,GAAY,MAAR3U,EAAc,CACd,IAAIf,EACJ,MAAMggF,EAAUj/E,EAAKi/E,QAAQp8E,cAC7B,GAAI7C,IAASid,EAOT,OALIhe,EADgB,iBAAT0V,EACI,KAAKsqE,OAAatqE,IAGlB,KAAKsqE,EAEbhgF,EAEX,MAAMtF,EAASqG,EAAKnB,WACpB,GAAIlF,GAAUA,EAAOyN,WAAWjM,OAAS,EAAG,CAExC8D,EAAW,GAAGggF,eADF,EAAI/jF,MAAM8E,GAAQ,UAI9Bf,EAAWggF,EAKf,OAHItqE,IACA1V,GAAY,MAAM0V,GAEf4vO,EAAYvkP,EAAKnB,WAAYoe,EAAMhe,GAE9C,OAAO0V,EAEX6xO,EAAOjC,YAAcA,EAyIrBiC,EAAOoB,SAhDP,SAAkBz5O,GACd,MAAMq5O,EAAYhB,EAAOj6D,SAASp+K,GAC5B/P,EAAM,EAAIi6B,SAASmvN,EAAW,CAAEvqN,SAAU,kBAC1C9b,EAAQzmB,MAAMrC,UAAUyE,MAAMlG,KAAKwH,EAAIgJ,YACvCygP,EAAU,GACVC,EAAY,IAAI9tL,QAChBx9C,EAAQ,CAACre,EAAM7C,EAAMxD,KACvB,MAAMikB,EA/Fd,SAAmB5d,EAAM7C,EAAMxD,GAC3B,GAAsB,UAAlBqG,EAAK8I,SACL,OAAO,KAEX,IAAIhI,EAAW,KACXioP,EAAgB,KAEhB99O,EAAQ,KACRk8O,GAAgB,EACpB,MAAMxuH,EAAS,CACX73C,QAAS9gF,EAAK8gF,SAElB,GAAI9gF,EAAK6G,WAAY,CACjBoE,EAAQ,GACR,IAAK,IAAI3S,EAAI,EAAGC,EAAIyH,EAAK6G,WAAW7J,OAAQ1E,EAAIC,EAAGD,GAAK,EAAG,CACvD,MAAMgW,EAAOtO,EAAK6G,WAAWvO,GACvBO,EAAOyV,EAAKxF,SACZvP,EAAQ+U,EAAKS,UACN,aAATlW,EACAiI,EAAWvH,EAEG,kBAATV,EACLkwP,EAAgBxvP,EAEF,UAATV,EACL8/H,EAAO1tH,MAAQ,CAAE6qE,MAAOv8E,GAGxB0R,EAAMpS,GAAQU,GAsD1B,OAlDgB,MAAZuH,IACAqmP,GAAgB,EAChBrmP,EAAWslP,EAAYpmP,EAAM7C,IAE7B6C,EAAKiM,eACL0sH,EAAOh/H,GAAKqG,EAAKiM,cAEJ,MAAb0sH,EAAOh/H,KACH,CACA,OACA,MACA,UACA,OACA,MACA,SACA,OACA,IACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,SACA,SACA,MACA,OACA,SACA,WACA,WACA,UACA,UACA,SACA,YACF4/C,SAASv5C,EAAK8gF,SACZ63C,EAAOh/H,GAAK,EAAIA,GAAG0sG,MAEd1sG,IACLg/H,EAAOh/H,GAAKA,IAGhBmH,IACA63H,EAAO73H,SAAWA,GAED,MAAjBioP,IACApwH,EAAOowH,cAAgBA,GAEpB,CACHpwH,SACA1tH,QACAk8O,iBAUayC,CAAU5pP,EAAM7C,EAAMxD,GACnC,GAAY,MAARikB,EAMC,CACD,MAAM,OAAE+6G,EAAM,MAAE1tH,EAAK,cAAEk8O,GAAkBvpO,EAUzC,GATA+rO,EAAUhsO,IAAI3d,EAAM24H,GAChBA,EAAO73H,UAAqB,MAATmK,IACfjS,OAAOyR,KAAKQ,GAAOjO,SACnB0sP,EAAQ/wH,EAAO73H,UAAYmK,GAE3Bk8O,UACOxuH,EAAO73H,UAGlBd,EAAKiJ,YAAcjJ,EAAKiJ,WAAWjM,OAAS,EAC5C,IAAK,IAAI1E,EAAI,EAAGC,EAAIyH,EAAKiJ,WAAWjM,OAAQ1E,EAAIC,EAAGD,GAAK,EAAG,CACvD,MAAM+pE,EAAQriE,EAAKiJ,WAAW3Q,GACxBuxP,EAAcxrO,EAAMgkD,EAAOllE,EAAMw7H,EAAOh/H,IAC1CkwP,IACuB,MAAnBlxH,EAAOriH,WACPqiH,EAAOriH,SAAW,IAEtBqiH,EAAOriH,SAASzY,KAAKgsP,IAIjC,OAAOlxH,EA7BO,CACd,MAAMn9H,EAASmuP,EAAUxwP,IAAI6G,EAAKU,YAC9BlF,GAAUwE,EAAK6O,cACfrT,EAAOqT,YAAc7O,EAAK6O,eAgCtC,MAAO,CACH8pH,OAJW31G,EACVphB,IAAK5B,GAASqe,EAAMre,EAAMA,IAC1B6M,OAAQi9O,GAAa,MAANA,GAGhB7+O,MAAOy+O,IAnKnB,CAuKG,KAAW,GAAS,MAEZrB,GA2BR,KAAW,GAAS,KAvBZ0B,uBAHP,WACI,MAAO,KAcX1B,GAAO2B,cAXP,WACI,MAAO,CACHlpK,QAAS,SACThgF,SAAU,SACVmK,MAAO,CACH7R,EAAG,GACH6xC,KAAM,UACNC,OAAQ,aAcpBm9M,GAAO4B,mBATP,WACI,MAAO,CACHnpK,QAAS,OACThgF,SAAU,OACVmK,MAAO,CACHggC,KAAM,aAOtB,SAAWo9M,GAaPA,EAAO6B,cAZP,WACI,OAAO7B,EAAOj6D,SAAS,4XA4B3Bi6D,EAAO8B,kBAhBP,WACI,OAAO9B,EAAOj6D,SAAS,soDA2B3Bi6D,EAAO+B,oBAXP,WACI,OAAO/B,EAAOj6D,SAAS,gwBAkB3Bi6D,EAAOgC,uBAPP,WACI,OAAOhC,EAAOj6D,SAAS,wKA5C/B,CAmDG,KAAW,GAAS,KAEvB,SAAWi6D,GAkCPA,EAAOiC,uBAjCP,SAAgCC,GAAO,GACnC,MAAO,CACHzpK,QAAS,gBACThgF,SAAU,KACVwV,SAAU,CACN,CACI3c,GAAI,EAAIA,GAAG0sG,MACXvlB,QAAS,OACThgF,SAAU,SACVmK,MAAO,CACHw7F,MAAO,EAAI9sG,GAAG0sG,OAElB1mF,MAAO,CACH+M,MAAO,OACPoC,OAAQ,OACRu7H,WAAY,eAEhB/zI,SAAUi0O,EACJ,GACA,CACE,CACIzpK,QAAS,MACThgF,SAAU,YACV6e,MAAO,CACH+M,MAAO,OACPoC,OAAQ,cA1B5C,CAmCG,KAAW,GAAS,KC9chB,MAAM,GACT,YAAY5G,GACR7sB,KAAK6sB,KAAOA,EAEhB,WACI,OAAO7sB,KAAK6sB,KAAKglN,KAErB,cAAcjC,GACV,OAAO5vO,KAAK6xO,KAAKsd,kBAAkBvf,GAEvC,aAAappO,EAAM8a,GACf,IAAI67L,EACA76L,EACA6lB,EACA3V,EACAoJ,EACJ,MAAMwzN,EAAW,GAiEjB,OA/DAzxP,OAAOyR,KAAKkS,GAAK6pB,QAAS3tC,IACtB,MAAMqH,EAAMyc,EAAI9jB,GACVomF,EAAa5jF,KAAKqvP,cAAc7xP,GAChC43I,EAAU,EAAYh4I,KAAK,GAAKo4O,kBAAmBx1O,KAAK6sB,KAAM+2D,EAAY/+E,EAAK,CACjF2B,OACAoJ,MAAO0R,EACPuwN,KAAM7xO,KAAK6xO,KACXhlN,KAAM7sB,KAAK6sB,OAEf,GAAI+2D,GAAcwxD,EACY,iBAAfxxD,GACO,MAAVu5H,IACAA,EAAS,IAEbA,EAAOv5H,GAAc/+E,GAER,OAARA,GACLuqP,EAAS5sP,KAAK,CAAEhF,OAAMomF,mBAGzB,CACa,MAAVu5H,IACAA,EAAS,IAEb,MAAMmyC,EAAa,GAAY1lJ,oBAAoB1rD,SAAS1gD,GACtDA,EACA,EAAU6uD,UAAU7uD,GAC1B2/M,EAAOmyC,GAAczqP,KAG7BuqP,EAASjkN,QAAQ,EAAG3tC,OAAMomF,iBACtB,MAAM/+E,EAAMyc,EAAI9jB,GAEa,mBADXomF,EACGthE,OACZ,EAAIgoF,cAAc9jG,IACnB,GAAY+oP,YAAYrxM,SAAS1gD,IACpB,MAATo+B,IACAA,EAAQ,IAEZA,EAAMp+B,GAAQqH,IAGH,MAAPyd,IACAA,EAAM,IAEVA,EAAI9kB,GAAQqH,IAIe,mBADd++E,EACGz7C,SACN,MAAVA,IACAA,EAAS,IAEbA,EAAO3qC,GAAQqH,GAGoB,mBADhB++E,EACGpxD,WACN,MAAZA,IACAA,EAAW,IAEfA,EAASh1B,GAAQqH,KAGlB,CACHyc,MACA67L,SACA76L,MACA6lB,SACA3V,WACAoJ,SAGR,oBAAoB4zN,EAAmBC,GACnCD,EAAkBltO,IAAM3kB,OAAO+rD,OAAO/rD,OAAO+rD,OAAO,GAAI8lM,EAAkBltO,KAAMmtO,EAAiBntO,KACjGktO,EAAkBh9N,SAAW70B,OAAO+rD,OAAO/rD,OAAO+rD,OAAO,GAAI8lM,EAAkBh9N,UAAWi9N,EAAiBj9N,UAC3Gg9N,EAAkBrnN,OAASxqC,OAAO+rD,OAAO/rD,OAAO+rD,OAAO,GAAI8lM,EAAkBrnN,QAASsnN,EAAiBtnN,QAEvG,MAAMqL,EAAYg8M,EAAkBryC,QAAUqyC,EAAkBryC,OAAO3pK,UACtD,MAAbA,GAAqBi8M,EAAiBtyC,SACtCsyC,EAAiBtyC,OAAO3pK,UAAYA,GAExCg8M,EAAkBryC,OAASsyC,EAAiBtyC,OAEhD,UAAUuyC,EAAWtvD,EAAUuvD,EAAeh8O,GAC1C,MAAMxN,EAAQ,GACRhF,EAAS,IAAI,GAgDnB,OA/CAxD,OAAOyR,KAAKsgP,GAAWvkN,QAAS1lC,IAC5B,MAAMmK,EAAQ8/O,EAAUjqP,GACxB,IAAK,EAAUmC,cAAcgI,GACzB,OAEJ,MAAM,cAAEk8O,EAAa,MAAE7lP,GAAU,GAAKyL,KAAKjM,EAAU26L,EAAUzsL,GAC/Dg8O,EAAclqP,GAAYQ,EAC1B,IAAK,IAAIhJ,EAAI,EAAGC,EAAI+I,EAAMtE,OAAQ1E,EAAIC,EAAGD,GAAK,EAAG,CAC7C,MAAMuJ,EAAOP,EAAMhJ,GACb8c,EAASpG,GAAaA,EAAUlO,KAAce,EAC9C2U,EAAOha,EAAOrD,IAAI0I,GACxB,GAAI2U,EAAM,CACDA,EAAK3Z,QACN2E,EAAM3D,KAAKgE,GACX2U,EAAK3Z,OAAQ,EACb2Z,EAAKvL,MAAQ,CAACuL,EAAKvL,OACnBuL,EAAKqlI,SAAW,CAACrlI,EAAKqlI,WAE1B,MAAMh1I,EAAa2P,EAAKvL,MAClBggP,EAAiBz0O,EAAKqlI,SAC5B,GAAIzmI,EAEAvO,EAAWsH,QAAQlD,GACnBggP,EAAe98O,SAAS,OAEvB,CAED,MAAM+8O,EAAY,EAASrsM,YAAYosM,EAAgB9D,GAAiB,EAAI5uP,GAC5EsO,EAAWnE,OAAOwoP,EAAW,EAAGjgP,GAChCggP,EAAevoP,OAAOwoP,EAAW,EAAG3yP,SAIxCiE,EAAOmhB,IAAI9b,EAAM,CACbA,OACAoJ,QACA4wI,SAAUzmI,GAAU,EAAI7c,EACxBsE,OAAO,OAKvB2E,EAAMglC,QAASxmC,IACX,MAAMR,EAAOhD,EAAOrD,IAAI6G,GAClBxB,EAAMgB,EAAKyL,MACjBzL,EAAKyL,MAAQzM,EAAI+iD,YAAY,CAAC5Y,EAAM19B,IAAU,EAAUzJ,MAAMmnC,EAAM19B,GAAQ,MAEzEzO,EAEX,oBAAoBqF,EAAMspP,EAAgB/f,EAASpwO,GAC/C,MAAMowP,EAAWD,EAAexuO,KAAO,GACvC,IAAI0uO,EAAYF,EAAe3yC,QAAU,GACzC,MAAM8yC,EAAWH,EAAextO,IAC1B4tO,EAAgBJ,EAAet9N,SAC/B29N,EAAcL,EAAe3nN,OAC7BioN,EAAaN,EAAel0N,MAC5BumF,EAAa,KAAM,CACrB37G,OACAqrO,KAAM7xO,KAAK6xO,KACXhlN,KAAM7sB,KAAK6sB,KACXjd,MAAOmgP,EACPhgB,QAASA,EAAQtoO,UAiBrB,GAfgB,MAAZwoP,GACAtyP,OAAOyR,KAAK6gP,GAAU9kN,QAAS3tC,IAC3B,MAAMqH,EAAMorP,EAASzyP,GACfqmE,EAAM7jE,KAAKqvP,cAAc7xP,GAC/B,GAAW,MAAPqmE,EAAa,CACb,MAAM39D,EAAM,EAAY9I,KAAKymE,EAAIvhD,IAAKtiB,KAAK6sB,KAAMhoB,EAAKs9G,KACnC,iBAARj8G,EACP8pP,EAAYryP,OAAO+rD,OAAO/rD,OAAO+rD,OAAO,GAAIsmM,GAAY9pP,GAE5C,MAAPA,IACL8pP,EAAUxyP,GAAQ0I,MAK9B,EAAIokG,cAAc9jG,GAKlB,YADAxG,KAAK6sB,KAAKojO,SAASD,EAAWxpP,GAIlC,MAAM6pP,EAAgBL,EAAUx8M,UAC1BA,EAAY68M,EAAgB,GAAGA,EAAkB,KACjDr7G,EAAa,EAAI9W,wBAAwB1qF,GACzC88M,EAAe,IAAI,GAAMt7G,EAAWnnI,EAAGmnI,EAAWhgC,GACpDq7I,WACOL,EAAUx8M,UACjBwhG,EAAWnnI,EAAI,EACfmnI,EAAWhgC,EAAI,GAGnB,IAAIthD,EAAK,EACLC,EAAK,EACT,GAAIu8L,GAAiBC,EAAa,CAC9B,MAAMtrO,EAAQ7kB,KAAK6sB,KAAK0jO,kBAAkB/pP,EAAM7G,EAAQ6wP,cACxD98L,EAAK7uC,EAAM6uC,GACXC,EAAK9uC,EAAM8uC,GAEf,IAAI88L,GAAa,EACI,MAAjBP,GACAvyP,OAAOyR,KAAK8gP,GAAe/kN,QAAS3tC,IAChC,MAAMqH,EAAMqrP,EAAc1yP,GACpBqmE,EAAM7jE,KAAKqvP,cAAc7xP,GAC/B,GAAW,MAAPqmE,EAAa,CACb,MAAM8kE,EAAK,EAAYvrI,KAAKymE,EAAIrxC,SAAUxyB,KAAK6sB,KAAMhoB,EAAKs9G,KAChD,MAANwmB,IACA8nH,GAAa,EACbH,EAAal9L,UAAU,GAAM70D,OAAOoqI,GAAI9jH,MAAM6uC,EAAIC,QAOlE3zD,KAAK6sB,KAAKojO,SAASD,EAAWxpP,GAC9B,IAAIkqP,GAAW,EACf,GAAmB,MAAfP,EAAqB,CAErB,MAAMQ,EAAmB3wP,KAAK6sB,KAAK+jO,yBAAyBpqP,GAC5D,GAAImqP,EAAiBt/N,MAAQ,GAAKs/N,EAAiBl9N,OAAS,EAAG,CAC3D,MAAMo9N,EAAW,EAAIrzH,mBAAmBmzH,EAAkB37G,GAAYnwH,MAAM,EAAI6uC,EAAI,EAAIC,GACxFh2D,OAAOyR,KAAK+gP,GAAahlN,QAAS3tC,IAC9B,MAAMqH,EAAMsrP,EAAY3yP,GAClBqmE,EAAM7jE,KAAKqvP,cAAc7xP,GAC/B,GAAW,MAAPqmE,EAAa,CACb,MAAM8kE,EAAK,EAAYvrI,KAAKymE,EAAI17B,OAAQnoC,KAAK6sB,KAAMhoB,EAAK,CACpD2B,OACAqrO,KAAM7xO,KAAK6xO,KACXhlN,KAAM7sB,KAAK6sB,KACXjd,MAAOmgP,EACPhgB,QAAS8gB,IAEH,MAANloH,IACA+nH,GAAW,EACXJ,EAAal9L,UAAU,GAAM70D,OAAOoqI,GAAI9jH,MAAM6uC,EAAIC,UAMjD,MAAjB08L,GAAyBI,GAAcC,KACvCJ,EAAa19N,MAAM,GACnBoiH,EAAWnnI,EAAIyiP,EAAa/9M,EAC5ByiG,EAAWhgC,EAAIs7I,EAAa99M,EAC5BhsC,EAAKtB,aAAa,YAAa,EAAI+4H,wBAAwB+W,KAG/D,MAAM87G,EAAmB,KACH,MAAdV,GACAzyP,OAAOyR,KAAKghP,GAAYjlN,QAAS3tC,IAC7B,MAAMqH,EAAMurP,EAAW5yP,GACjBqmE,EAAM7jE,KAAKqvP,cAAc7xP,GAC/B,GAAW,MAAPqmE,EAAa,CACb,MAAM39D,EAAM,EAAY9I,KAAKymE,EAAIvhD,IAAKtiB,KAAK6sB,KAAMhoB,EAAKs9G,KACnC,iBAARj8G,EACPlG,KAAK6sB,KAAKojO,SAAS/pP,EAAKM,GAEZ,MAAPN,GACLlG,KAAK6sB,KAAKojO,SAAS,CACf,CAACzyP,GAAO0I,GACTM,OAMnB7G,EAAQoxP,UACRD,IAGA5yD,GAAUO,aAAaqyD,GAG/B,OAAO1wD,EAAUxwL,EAAOjQ,GACpB,MAAMgwP,EAAgB,GAChBqB,EAAahxP,KAAKixP,UAAUtxP,EAAQiQ,OAASA,EAAOwwL,EAAUuvD,EAAehwP,EAAQgU,WAGrFu9O,EAAgBvxP,EAAQiQ,MACxB5P,KAAKixP,UAAUrhP,EAAOwwL,EAAUuvD,EAAehwP,EAAQgU,WACvDq9O,EACAG,EAAe,GACrBH,EAAW3qP,KAAMkc,IACb,MAAM5d,EAAO4d,EAAK/b,KACZwpP,EAAYztO,EAAK3S,MACjBwhP,EAAYpxP,KAAKqxP,aAAa1sP,EAAMqrP,GAC1C,GAAqB,MAAjBoB,EAAU9uO,KACY,MAAtB8uO,EAAU5+N,UACU,MAApB4+N,EAAUjpN,QACS,MAAnBipN,EAAUx1N,MACV57B,KAAK6sB,KAAKojO,SAASmB,EAAUj0C,OAAQx4M,OAEpC,CACD,MAAM4d,EAAO2uO,EAAcpzP,IAAI6G,GACzB2sP,EAAe/uO,EAAOA,EAAK3S,MAAQ,KACnC2hP,EAAcD,GAAiC,MAAjBtB,EAAUn8L,IACxCy9L,EAAaz9L,IACbm8L,EAAUn8L,IAChB,IAAI29L,EACJ,GAAID,GAGA,GAFAC,GAAW7B,EAAc4B,IACrBvxP,KAAK6sB,KAAKnb,KAAK6/O,EAAanxD,EAAUzgM,EAAQgU,YAAY,IACzD69O,EACD,MAAM,IAAIxuP,MAAM,IAAIuuP,qCAIxBC,EAAU,KAEd,MAAMrtP,EAAO,CACTQ,OACA6sP,UACAhmP,WAAY8lP,EACZG,oBAAqBL,GAInB1vP,EAAQyvP,EAAa3uM,UAAWr+C,GAASA,EAAKqtP,UAAY7sP,GAC5DjD,GAAS,EACTyvP,EAAa9pP,OAAO3F,EAAO,EAAGyC,GAG9BgtP,EAAa3uP,KAAK2B,MAI9B,MAAMutP,EAAY,IAAI,GACtB,IAAIC,EACJR,EAAahmN,QAAShnC,IAClB,MAAMQ,EAAOR,EAAKQ,KACZ6sP,EAAUrtP,EAAKqtP,QACrB,IAAII,EACJ,MAAMC,EAAgC,MAAXL,GACE,MAAzB7xP,EAAQ0tP,eACR,EAAIhjP,SAAS1K,EAAQ0tP,cAAemE,GAMxC,GAHIA,IACAI,EAAmBF,EAAU5zP,IAAI0zP,KAEhCI,EAAkB,CACnB,MAAMlqP,EAAUmqP,EAAqBlyP,EAAQ0tP,cAAgBjtD,EAC7DwxD,EAAmBJ,EACb,EAAI50H,QAAQ40H,EAAS,CAAE9pP,WACvB/H,EAAQmyP,SACVN,GACAE,EAAUpvO,IAAIkvO,EAASI,GAG/B,IAAI9B,EACAnwP,EAAQiQ,OAASzL,EAAKqH,YAKtBskP,EAAiB9vP,KAAKqxP,aAAa1sP,EAAMR,EAAKqH,YAC9CxL,KAAK+xP,oBAAoBjC,EAAgB3rP,EAAKstP,sBAG9C3B,EAAiB3rP,EAAKstP,oBAE1B,IAAI1hB,EAAU6hB,EACVC,GACyB,MAAzBlyP,EAAQ0tP,gBACP1tP,EAAQ0tP,cAAchjP,SAAS1F,KAI3BgtP,IACDA,EAAkB,EAAIzzH,wBAAwB,EAAIjrH,KAAKtT,EAAQ0tP,cAAe,eAElFtd,EAAU,EAAIvyG,mBAAmBo0H,EAAkBD,IAExCR,EAAaz/O,KAAMvN,GAASA,EAAKqtP,UAAY7sP,KAExDhF,EAAQoxP,WAAY,GAExB/wP,KAAKgyP,oBAAoBrtP,EAAMmrP,EAAgB/f,EAASpwO,OAIzDstP,GAQR,KAAgB,GAAc,KAPjBrjJ,oBAAsB,CAAC,WACnCqjJ,GAAYsC,YAAc,CACtB,OACA,WACA,eACA,gBEhZD,MAAM0C,GACT,YAAYplO,EAAMyyB,EAAS4yM,EAAY,IACnClyP,KAAK6sB,KAAOA,EACZ,MAAMslO,EAAQ,GACRviP,EAAQ,GACd,IAAIL,EAAQ,EACZ5R,OAAOyR,KAAKkwC,GAASnU,QAASl4B,IAC1B,IAAIm/O,EAAS9yM,EAAQrsC,GAChB/R,MAAMD,QAAQmxP,KACfA,EAAS,CAACA,IAEdA,EAAOjnN,QAAS4sK,IACZ,IAAI96L,EAAOk1O,EAAMp6C,GACZ96L,IACD1N,GAAS,EACT0N,EAAOk1O,EAAMp6C,GAAS,GAAKxoM,GAE/BK,EAAMqD,IAASgK,MAGvB,IAAIm1O,EAASF,EAYb,GAXKhxP,MAAMD,QAAQmxP,KACfA,EAAS,CAACA,IAEdA,EAAOjnN,QAAS4sK,IACPo6C,EAAMp6C,KACPxoM,GAAS,EACT4iP,EAAMp6C,GAAS,GAAKxoM,KAKxBA,EAAQ,GACR,MAAM,IAAIvM,MAAM,qCAEpBhD,KAAKmyP,MAAQA,EACbnyP,KAAK4P,MAAQA,EACb5P,KAAKkyP,UAAYA,EAErB,WACI,OAAOlyP,KAAK6sB,KAAKglN,KAErB,QAAQ95B,GACJ,MAAMo6C,EAAQnyP,KAAKmyP,MACnB,OAAa,MAATA,EACO,EAEPjxP,MAAMD,QAAQ82M,GACPA,EAAMvsK,OAAO,CAAC8B,EAAM9uC,IAAQ8uC,EAAO6kN,EAAM3zP,GAAM,GAEpC,EAAf2zP,EAAMp6C,GAEjB,UAAU96L,EAAM86L,GACZ,OAAO96L,EAAOjd,KAAKqyP,QAAQt6C,GAE/B,aAAa96L,EAAM86L,GACf,OAAO96L,EAAQA,EAAOjd,KAAKqyP,QAAQt6C,GAEvC,mBACI,OAAO/3M,KAAKqyP,QAAQryP,KAAKkyP,WAE7B,iBACI,IAAIj1O,EAAO,EACX,OAAKjd,KAAK4P,OAGVjS,OAAOyR,KAAKpP,KAAK4P,OAAOu7B,QAASl4B,IACzBjT,KAAK6xO,KAAKygB,WAAWr/O,KACrBgK,GAAQjd,KAAK4P,MAAMqD,MAGpBgK,GAPIA,GChEnB,IAkoBWs1O,GClcAC,GDhMP,GAAkC,SAAUxzP,EAAG6O,GAC/C,IAAI1P,EAAI,GACR,IAAK,IAAIY,KAAKC,EAAOrB,OAAOkB,UAAUC,eAAe1B,KAAK4B,EAAGD,IAAM8O,EAAEpK,QAAQ1E,GAAK,IAC9EZ,EAAEY,GAAKC,EAAED,IACb,GAAS,MAALC,GAAqD,mBAAjCrB,OAAOsxG,sBACtB,KAAIhyG,EAAI,EAAb,IAAgB8B,EAAIpB,OAAOsxG,sBAAsBjwG,GAAI/B,EAAI8B,EAAE4C,OAAQ1E,IAC3D4Q,EAAEpK,QAAQ1E,EAAE9B,IAAM,GAAKU,OAAOkB,UAAUwxD,qBAAqBjzD,KAAK4B,EAAGD,EAAE9B,MACvEkB,EAAEY,EAAE9B,IAAM+B,EAAED,EAAE9B,KAE1B,OAAOkB,GAYJ,MAAM,WAAiB,GAC1B,YAAY0zO,EAAMlyO,EAAU,IACxBg/E,QACA3+E,KAAK6xO,KAAOA,EACZ7xO,KAAKL,QAAUK,KAAKyyP,cAAc9yP,GAClCK,KAAKurN,MAAQvrN,KAAKL,QAAQ4rN,MAC1BvrN,KAAKiT,KAAO,IAAI,GAAYjT,MAC5BA,KAAKid,KAAO,IAAIg1O,GAAYjyP,KAAMA,KAAKL,QAAQ2/C,QAASt/C,KAAKL,QAAQuyP,WACrElyP,KAAKqP,MAAQ,IAAI,GAAMrP,MACvBA,KAAK0yP,aAAa1yP,KAAK2yP,mBACvB3yP,KAAKiqB,QACLjqB,KAAKuqC,EAAEvqC,KAAK8xB,WAAWvP,KAAK,OAAQviB,MACpCA,KAAK2F,OAET,qBACI,OAAO3F,KAAKksC,SAEhB,cAAcvsC,GACVK,KAAKksC,SAAWlsC,KAAKmiH,WAAWxiH,GAEpC,kBAAkBA,GACd,MAAMizP,EAAe,CAAC/wH,EAAMgxH,IACZ,MAARA,EACO,EAASruM,KAAK,IACbtjD,MAAMD,QAAQ4gI,GAAQA,EAAO,CAACA,MAC9B3gI,MAAMD,QAAQ4xP,GAAQA,EAAO,CAACA,KAGnC3xP,MAAMD,QAAQ4gI,GAAQ,IAAIA,GAAQ,CAACA,GAExC37H,EAAM,EAAUghD,UAAUlnD,KAAK8yP,gBAC/B,UAAEZ,EAAS,QAAE5yM,EAAO,OAAEh2B,EAAM,eAAEypO,GAAmBpzP,EAASq0O,EAAS,GAAOr0O,EAAS,CAAC,YAAa,UAAW,SAAU,mBAsB5H,OArBIuyP,IACAhsP,EAAIgsP,UAAYU,EAAa1sP,EAAIgsP,UAAWA,IAE5C5yM,GACA3hD,OAAOyR,KAAKkwC,GAASnU,QAAS3sC,IAC1B,MAAMqG,EAAMy6C,EAAQ9gD,GACd8iB,EAAMpb,EAAIo5C,QAAQ9gD,GACpBqG,GAAOyc,EACPpb,EAAIo5C,QAAQ9gD,GAAOo0P,EAAatxO,EAAKzc,GAEhCA,IACLqB,EAAIo5C,QAAQ9gD,GAAOo0P,EAAa/tP,MAIxCykB,IACApjB,EAAIojB,OAAS3rB,OAAO+rD,OAAO/rD,OAAO+rD,OAAO,GAAIxjD,EAAIojB,QAASA,IAE1D3pB,EAAQozP,iBACR7sP,EAAI6sP,eAAiBp1P,OAAO+rD,OAAO/rD,OAAO+rD,OAAO,GAAIxjD,EAAI6sP,gBAAiBA,IAEvE,EAAU5sP,MAAMD,EAAK8tO,GAEhCl2O,IAAKE,OAAOC,eACR,OAAO,GAASA,YAEpB,QACA,WACI+B,KAAKgzP,cAET,eACI,OAAOhzP,KAAKL,QAAQ6gJ,SAExB,mBACI,OAAOxgJ,KAAKL,QAAQszP,aAExB,iBACI,OAAOjzP,KAAK6F,YAEhB,cAAclG,GACV,OAAOK,KAAKkzP,iBAAiB/wI,WAAWxiH,GAE5C,sBACI,OAAOK,KAAKL,QAAQksP,aAAe,IAAM,MAE7C,qBACA,oBACI,MAAO,CACH,eAAgB7rP,KAAK6xO,KAAKrjO,GAC1B,aAAcxO,KAAK6xO,KAAKzgM,OAGhC,wBACI,OAAOpxC,KAAKmzP,gBAAgB,QAEhC,kBACI,OAAO,GAAKpuP,cAAc/E,KAAKozP,sBAAuBpzP,KAAKL,QAAQksP,cAEvE,aAAa/5N,GACT,GAAI9xB,KAAK8xB,YAAcA,EAAW,CAC9B9xB,KAAKgrP,mBACLhrP,KAAK8xB,UAAYA,EACU,MAAvB9xB,KAAKL,QAAQ2pB,QACbtpB,KAAKqzP,eAAerzP,KAAKL,QAAQ2pB,QAErC,MAAM1Z,EAAQ5P,KAAKszP,oBACN,MAAT1jP,GACA5P,KAAKiwP,SAASrgP,EAAOkiB,GAEzB,MAAMxN,EAAQtkB,KAAKuzP,oBACN,MAATjvO,GACAtkB,KAAKqxG,SAAS/sF,EAAOwN,GAEzB,MAAM1gB,EAAYpR,KAAKwzP,wBACN,MAAbpiP,GACApR,KAAKk9B,SAAS9rB,EAAW0gB,GAGjC,OAAO9xB,KAEX,aACI,OAAO,EAEX,aACI,OAAO,EAEX,SACI,OAAOA,KAGX,cAAcid,EAAMtd,EAAU,IAC1B,OAAO,EAEX,mBACI,OAAOK,KAAKid,KAAKw2O,mBAErB,QAAQn0M,GACJ,OAAOt/C,KAAKid,KAAKo1O,QAAQ/yM,GAE7B,UAAUriC,EAAMqiC,GACZ,OAAOt/C,KAAKid,KAAKy2O,UAAUz2O,EAAMqiC,GAErC,aAAariC,EAAMqiC,GACf,OAAOt/C,KAAKid,KAAK02O,aAAa12O,EAAMqiC,GAExC,aAAariC,EAAMmkC,EAAQx3B,EAAQgqO,GAC/B,GAAI5zP,KAAK0zP,UAAUz2O,EAAMmkC,GAAS,CAC9Bx3B,IACA,MAAMiqO,EAAe,CAACzyM,GAStB,OARIwyM,IACwC,iBAA7BA,EACPC,EAAarxP,KAAKoxP,GAGlBC,EAAarxP,QAAQoxP,IAGtB5zP,KAAK2zP,aAAa12O,EAAM42O,GAEnC,OAAO52O,EAEX,QACIjd,KAAK6xO,KAAKzpN,GAAG,UAAW,EAAGzoB,aAAcK,KAAK8zP,cAAcn0P,IAEhE,cAAcA,GACV,IAAIsd,EAAOjd,KAAKid,KAAK82O,kBACjBp0P,EAAQsjF,SAAYhmE,IAGpBtd,EAAQmzC,OAAS9yC,KAAK0zP,UAAUz2O,EAAM,YACtCA,GAAQjd,KAAKqyP,QAAQ,WAGrB1yP,EAAQq0P,SACRr0P,EAAQgiC,OAAQ,GAEF,MAAd3hC,KAAKurN,OACLvrN,KAAKurN,MAAM39F,SAASqmI,kBAAkBj0P,KAAMid,EAAMjd,KAAKwgJ,SAAU7gJ,IAGzE,gBAAgB29H,EAAQutH,GACpB,MAAM1pP,EAAS,GAAOosP,gBAAgBjwH,GAChC3pH,EAAYxS,EAAOwS,UACnBs/O,EAAejzP,KAAKizP,aAC1B,GAAIpI,GAAYoI,EAAc,CAC1B,GAAIt/O,EAAUs/O,GACV,MAAM,IAAIjwP,MAAM,yBAEpB2Q,EAAUs/O,GAAgBpI,EAE9B,OAAO1pP,EAEX,IAAI+yP,GACA,IAAIC,EAAcn0P,KAAKurN,MAAM5rN,QAAQw0P,YAIrC,GAH2B,mBAAhBA,IACPA,EAAc,EAAY/2P,KAAK+2P,EAAan0P,KAAKurN,MAAOvrN,OAEjC,iBAAhBm0P,EAA0B,CACjC,IAAItvP,EAAMsvP,EAAYD,GAItB,MAHmB,mBAARrvP,IACPA,EAAM,EAAYzH,KAAKyH,EAAK7E,KAAKurN,MAAOvrN,QAE7B,IAAR6E,EAEX,MAA2B,kBAAhBsvP,GACAA,EAIf,aAEI,OADAn0P,KAAKqP,MAAM69O,QACJltP,KAEX,SAASwG,GACL,OAAOxG,KAAKqP,MAAMvR,IAAI0I,GAE1B,iBAAiBA,GACb,OAAOxG,KAAKqP,MAAM4T,QAAQzc,GAE9B,mBAAmBA,GACf,OAAOxG,KAAKqP,MAAM+kP,UAAU5tP,GAEhC,kBAAkBA,GACd,OAAOxG,KAAKqP,MAAMglP,SAAS7tP,GAE/B,kBAAkB7B,EAAM6rP,GACpB,IAAI98L,EACAC,EACJ,GAAI68L,GAAgBA,EAAanmP,SAAS1F,GAAO,CAC7C,MAAMkgB,EAAQ,EAAIA,MAAM2rO,GACxB98L,EAAK,EAAI7uC,EAAM6uC,GACfC,EAAK,EAAI9uC,EAAM8uC,QAGfD,EAAK,EACLC,EAAK,EAET,MAAO,CAAED,KAAIC,MAEjB,yBAAyBntD,GACrB,OAAOxG,KAAKqP,MAAMghC,gBAAgB7pC,GAEtC,iBAAiBA,GACb,MAAMqiC,EAAO7oC,KAAK4wP,yBAAyBpqP,GACrC4wD,EAASp3D,KAAKs0P,mBAAmB9tP,GACjC8pF,EAAKtwF,KAAKu0P,uBACVC,EAAKx0P,KAAKy0P,0BAChB,OAAO,EAAIj3H,mBAAmB30F,EAAM2rN,EAAGnrM,SAASinC,GAAIjnC,SAAS+N,IAEjE,0BAA0B5wD,GACtB,MAAMqiC,EAAO7oC,KAAK4wP,yBAAyBpqP,GACrC4wD,EAASp3D,KAAKs0P,mBAAmB9tP,GACjCguP,EAAKx0P,KAAKy0P,0BAChB,OAAO,EAAIj3H,mBAAmB30F,EAAM2rN,EAAGnrM,SAAS+N,IAEpD,QAAQz3D,EAAU,IACd,IAAI47D,EACJ,GAAI57D,EAAQ+0P,gBAAiB,CACzB,MAAM7iB,EAAO7xO,KAAK6xO,KACZn9K,EAAQm9K,EAAKhlD,SAAWglD,EAAK6a,WAAa,EAChDnxL,EAAOs2K,EAAKj1G,UAAUrhE,KAAK7G,QAG3B6G,EAAOv7D,KAAK20P,iBAAiB30P,KAAK8xB,WAEtC,OAAO9xB,KAAKurN,MAAMqpC,aAAar5L,GAEnC,0BACI,MAAMs2K,EAAO7xO,KAAK6xO,KACZx6M,EAAMw6M,EAAKhlD,SAAWglD,EAAKgjB,cAAgB,CAAEtiN,EAAG,EAAGC,EAAG,GAC5D,OAAO,EAAI4rF,kBAAkBhrE,UAAU/7B,EAAIkb,EAAGlb,EAAImb,GAEtD,uBACI,IAAI4kB,EAAS,EAAIgnE,kBACjB,MAAMyzG,EAAO7xO,KAAK6xO,KACZn9K,EAAQm9K,EAAKhlD,SAAWglD,EAAK6a,WAAa,EAChD,GAAIh4L,EAAO,CACP,MAAM6G,EAAOs2K,EAAKj1G,UACZ5/B,EAAKzhC,EAAKlqC,MAAQ,EAClB4rE,EAAK1hC,EAAK9nC,OAAS,EACzB2jC,EAASA,EAAOhE,UAAU4pC,EAAIC,GAAI1pC,OAAOmB,GAAOtB,WAAW4pC,GAAKC,GAEpE,OAAO7lC,EAEX,WAAW5wD,EAAOxG,KAAK8xB,WAMnB,OAAO9xB,KAAK80P,WAAW,SAAUtuP,GAErC,YAAY45L,EAAUxwL,EAAOjQ,EAAU,IACX,MAApBA,EAAQmyP,WACRnyP,EAAQmyP,SAAW,IAAI,IAEF,MAArBnyP,EAAQgU,YACRhU,EAAQgU,UAAY3T,KAAK2T,WAE7B3T,KAAKiT,KAAKw4C,OAAO20I,EAAUxwL,EAAOjQ,GAEtC,cAAcq4O,GACV,OAAOh4O,KAAK6xO,KAAKptK,WAAuB,MAAVuzK,GAAkBA,IAAWh4O,KAAK8xB,WAGpE,iBAAiBtrB,EAAM7G,EAAU,IAC7B,MAAMq4O,EAAUxxO,GAAQxG,KAAKuqC,EAAE/jC,GAAM,IAAOxG,KAAK8xB,UAEjD,OADAnyB,EAAQogD,QAAUi4L,IAAWh4O,KAAK8xB,UAC3BkmN,EAEX,UAAUxxO,EAAM7G,EAAU,IACtB,MAAMq4O,EAASh4O,KAAK+0P,iBAAiBvuP,EAAM7G,GAyB3C,OAxBAK,KAAK4e,OAAO,iBAAkB,CAC1Bo5N,SACAr4O,UACAktB,KAAM7sB,KACN6xO,KAAM7xO,KAAK6xO,OAEX7xO,KAAKu0O,aACLv0O,KAAK4e,OAAO,iBAAkB,CAC1Bo5N,SACAr4O,UACAktB,KAAM7sB,KACN45D,KAAM55D,KAAK6xO,KACXA,KAAM7xO,KAAK6xO,OAGV7xO,KAAKg1P,cACVh1P,KAAK4e,OAAO,iBAAkB,CAC1Bo5N,SACAr4O,UACAktB,KAAM7sB,KACN2E,KAAM3E,KAAK6xO,KACXA,KAAM7xO,KAAK6xO,OAGZ7xO,KAEX,YAAYwG,EAAM7G,EAAU,IACxB,MAAMq4O,EAASh4O,KAAK+0P,iBAAiBvuP,EAAM7G,GAyB3C,OAxBAK,KAAK4e,OAAO,mBAAoB,CAC5Bo5N,SACAr4O,UACAktB,KAAM7sB,KACN6xO,KAAM7xO,KAAK6xO,OAEX7xO,KAAKg1P,aACLh1P,KAAK4e,OAAO,mBAAoB,CAC5Bo5N,SACAr4O,UACAktB,KAAM7sB,KACN2E,KAAM3E,KAAK6xO,KACXA,KAAM7xO,KAAK6xO,OAGV7xO,KAAKu0O,cACVv0O,KAAK4e,OAAO,mBAAoB,CAC5Bo5N,SACAr4O,UACAktB,KAAM7sB,KACN45D,KAAM55D,KAAK6xO,KACXA,KAAM7xO,KAAK6xO,OAGZ7xO,KAGX,kBAAkBg4O,EAAQr4O,IAE1B,gBAAgBq4O,EAAQzlM,EAAGC,EAAGonB,EAAMr4D,GAChC,MAAMswO,EAAO7xO,KAAK6xO,KACZojB,EAASj1P,KAAKk1P,SAAS,OAAQld,GAC/BvyO,EAAWuyO,EAAO/yO,aAAa,iBAC/BmnP,EAAW,CAAEva,KAAMA,EAAKrjO,IAgB9B,OAfgB,MAAZ/I,IACA2mP,EAASpU,OAASvyO,GAER,MAAVwvP,GACA7I,EAASxZ,KAAOqiB,EACZpjB,EAAKhlD,WACAglD,EAAKsjB,QAAQF,IAAuB,MAAZxvP,IAEzB2mP,EAAS3mP,SAAWzF,KAAK+qP,YAAY/S,MAI5B,MAAZvyO,GAAoBzF,KAAK8xB,YAAckmN,IAC5CoU,EAAS3mP,SAAWzF,KAAK+qP,YAAY/S,IAElCh4O,KAAKo1P,sBAAsBhJ,EAAUpU,EAAQzlM,EAAGC,EAAGonB,EAAMr4D,GAEpE,sBAAsB6qP,EAAUpU,EAAQzlM,EAAGC,EAAGonB,EAAMr4D,GAChD,MAAM+f,EAAMs4C,EAAKy7L,eAAiBr1P,KAAKurN,MAAM5rN,QAAQ21P,WAAWC,SAChE,GAAIj0O,EAAK,CACL,MAAM9jB,EAAsB,iBAAR8jB,EAAmBA,EAAMA,EAAI9jB,KAC3C2X,EAAsB,iBAARmM,EAAmB,GAAKA,EAAInM,MAAQ,GAClDu+N,EAAW,GAAmBA,SACpC,GAAIl2O,EAAM,CACN,MAAMkI,EAAKguO,EAAS51O,IAAIN,GACxB,GAAU,MAANkI,EACA,OAAOguO,EAASQ,WAAW12O,GAE/B,MAAM2D,EAAS,EAAY/D,KAAKsI,EAAI1F,KAAKurN,MAAO6gC,EAAUpsP,KAAMg4O,EAAQ,IAAI,GAAMzlM,EAAGC,GAAIonB,EAAMr4D,EAAM4T,GACrG,GAAIhU,EACA,OAAOA,GAInB,OAAOirP,EAEX,0BAA0BA,GACtB,MAAMva,EAAO7xO,KAAK6xO,KACZ/vO,EAAO9B,KAAK8xB,UACZmjO,EAAS7I,EAASxZ,KACxB,IACIoF,EADAvyO,EAAW2mP,EAASpU,OAcxB,OAZc,MAAVid,GAAkBpjB,EAAKhlD,UAAYglD,EAAKsjB,QAAQF,GAChDjd,EAASh4O,KAAKw1P,aAAaP,EAAQxvP,IAAa3D,GAG3C2D,IACDA,EAAW2mP,EAAS3mP,UAEnBA,GAAsB,MAAVwvP,IACbxvP,EAAW,UAAUwvP,OAEzBjd,EAASh4O,KAAKwqG,QAAQ/kG,EAAU3D,EAAM9B,KAAK2T,YAExCqkO,EAGX,QAAQxxO,EAAM7G,GACV,MAAM+H,EAAyB,iBAATlB,EAAoBxG,KAAKwqG,QAAQhkG,GAAQA,EAC/D,GAAc,MAAVkB,EACA,MAAM,IAAI1E,MAAM,8BAEpB,MAAM7C,EAASuH,EAAOrC,WAMhBowP,EAAU,GAAOl3P,OAAOmJ,GACzBvH,GACDs1P,EAAQnlO,SAAStwB,KAAKurN,MAAM1+L,KAAKohG,OAErC,MAAMynI,EAAa/1P,EAAQ+5B,SAO3B,OANA/5B,EAAQ+5B,SAAY7rB,IATX1N,GACD,EAAIyd,OAAOlW,GAUXguP,GACAA,EAAW7nP,IAGZ4nP,EAAQ56N,QAAQl7B,GAE3B,iBAAiB6G,EAAM7G,GACnB,MAAM+H,EAAyB,iBAATlB,EAAoBxG,KAAKwqG,QAAQhkG,GAAQA,EAC/D,GAAc,MAAVkB,EACA,MAAM,IAAI1E,MAAM,8BAEpB,MAAM7C,EAASuH,EAAOrC,WAMhBowP,EAAU,GAAOl3P,OAAOmJ,GACzBvH,GACDs1P,EAAQnlO,SAAStwB,KAAKurN,MAAM1+L,KAAKohG,OAErC,MAAMynI,EAAa/1P,EAAQ+5B,SAO3B,OANA/5B,EAAQ+5B,SAAY7rB,IATX1N,GACD,EAAIyd,OAAOlW,GAUXguP,GACAA,EAAW7nP,IAGZ4nP,EAAQ34H,iBAAiBn9H,GAEpC,SAASnC,GACL,MAAMm4P,EAAQ31P,KAAK21P,MACnB,OAAa,MAATA,IAGQ,MAARn4P,GAGGm4P,EAAMn4P,OAASA,GAE1B,SAASmlE,GACL,IAAK3iE,KAAK41P,IAAI,gBACV,OAAO51P,KAGX,GADAA,KAAKgzP,cACDrwL,EAAQ,CACR,MAAMgzL,EAAQ,GAAUE,YAAYlzL,GAC9BA,EACA,IAAI,GAAUA,GACpB3iE,KAAK21P,MAAQA,EACb31P,KAAKurN,MAAMnjM,GAAG,aAAcpoB,KAAK81P,UAAW91P,MAC5CA,KAAKurN,MAAMnjM,GAAG,aAAcpoB,KAAK+1P,UAAW/1P,MAC5CA,KAAKurN,MAAMnjM,GAAG,eAAgBpoB,KAAKgzP,YAAahzP,MAChD21P,EAAMhzL,OAAO,CAAE91C,KAAM7sB,OACrB21P,EAAMpuF,QAEV,OAAOvnK,KAEX,YAAYL,EAAU,IAIlB,OAHIK,KAAK21P,OACL31P,KAAK21P,MAAMlqM,OAAO9rD,GAEfK,KAEX,cAQI,OAPIA,KAAK21P,QACL31P,KAAK21P,MAAM/3O,SACX5d,KAAKurN,MAAM9iM,IAAI,aAAczoB,KAAK81P,UAAW91P,MAC7CA,KAAKurN,MAAM9iM,IAAI,aAAczoB,KAAK+1P,UAAW/1P,MAC7CA,KAAKurN,MAAM9iM,IAAI,eAAgBzoB,KAAKgzP,YAAahzP,MACjDA,KAAK21P,MAAQ,MAEV31P,KAEX,YAII,OAHIA,KAAK21P,OACL31P,KAAK21P,MAAMjwO,OAER1lB,KAEX,YAII,OAHIA,KAAK21P,OACL31P,KAAK21P,MAAMnwO,OAERxlB,KAEX,cACI,MAAM21P,EAAQ31P,KAAK6xO,KAAKmkB,WAExB,OADAh2P,KAAKi2P,SAASN,GACP31P,KAEX,OAAOxC,EAAM2X,GAGT,OAFAnV,KAAKkpB,QAAQ1rB,EAAM2X,GACnBnV,KAAKurN,MAAMriM,QAAQ1rB,EAAM2X,GAClBnV,KAEX,aAAa6N,EAAG0kC,EAAGC,GACf,MAAM3lB,EAAO7sB,KACP6xO,EAAOhlN,EAAKglN,KAClB,OAAS,MAALt/L,GAAkB,MAALC,EACN,CAAE3kC,IAAGgf,OAAMglN,QAEf,CAAEhkO,IAAG0kC,IAAGC,IAAG3lB,OAAMglN,QAE5B,QAAQhkO,EAAG0kC,EAAGC,GACVxyC,KAAK4e,OAAO,aAAc5e,KAAKk2P,aAAaroP,EAAG0kC,EAAGC,IAEtD,WAAW3kC,EAAG0kC,EAAGC,GACbxyC,KAAK4e,OAAO,gBAAiB5e,KAAKk2P,aAAaroP,EAAG0kC,EAAGC,IAEzD,cAAc3kC,EAAG0kC,EAAGC,GAChBxyC,KAAK4e,OAAO,mBAAoB5e,KAAKk2P,aAAaroP,EAAG0kC,EAAGC,IAE5D,YAAY3kC,EAAG0kC,EAAGC,GACVxyC,KAAK6xO,KAAKv4J,QACVt5E,KAAKm2P,yBAA2Bn2P,KAAK6xO,KAAKv4J,MAC1Ct5E,KAAKm2P,yBAAyBC,WAAW,UAE7Cp2P,KAAK4e,OAAO,iBAAkB5e,KAAKk2P,aAAaroP,EAAG0kC,EAAGC,IAE1D,UAAU3kC,EAAG0kC,EAAGC,GACZxyC,KAAK4e,OAAO,eAAgB5e,KAAKk2P,aAAaroP,EAAG0kC,EAAGC,IAChDxyC,KAAKm2P,2BACLn2P,KAAKm2P,yBAAyBE,UAAU,QAAS,CAAExkB,KAAM7xO,KAAK6xO,OAC9D7xO,KAAKm2P,yBAA2B,MAGxC,YAAYtoP,EAAG0kC,EAAGC,GACdxyC,KAAK4e,OAAO,iBAAkB5e,KAAKk2P,aAAaroP,EAAG0kC,EAAGC,IAE1D,YAAY3kC,GACR7N,KAAK4e,OAAO,iBAAkB5e,KAAKk2P,aAAaroP,IAEpD,WAAWA,GACP7N,KAAK4e,OAAO,gBAAiB5e,KAAKk2P,aAAaroP,IAEnD,aAAaA,GACT7N,KAAK4e,OAAO,kBAAmB5e,KAAKk2P,aAAaroP,IAErD,aAAaA,GACT7N,KAAK4e,OAAO,kBAAmB5e,KAAKk2P,aAAaroP,IAErD,aAAaA,EAAG0kC,EAAGC,EAAGjd,GAClBv1B,KAAK4e,OAAO,kBAAmBjhB,OAAO+rD,OAAO,CAAEn0B,SAASv1B,KAAKk2P,aAAaroP,EAAG0kC,EAAGC,KAEpF,cAAc3kC,EAAGrQ,EAAM+0C,EAAGC,GACtBxyC,KAAK4e,OAAO,mBAAoBjhB,OAAO+rD,OAAO,CAAElsD,QAAQwC,KAAKk2P,aAAaroP,EAAG0kC,EAAGC,KAChFxyC,KAAK4e,OAAOphB,EAAMG,OAAO+rD,OAAO,GAAI1pD,KAAKk2P,aAAaroP,EAAG0kC,EAAGC,KAEhE,kBAAkB3kC,EAAGmqO,EAAQzlM,EAAGC,IAChC,iBAAiB3kC,EAAGmqO,EAAQzlM,EAAGC,IAC/B,oBAAoB3kC,EAAGmqO,EAAQzlM,EAAGC,IAClC,iBAAiB3kC,EAAG0kC,EAAGC,IACvB,gBAAgB3kC,GACZ,MAAM09M,EAAQvrN,KAAKurN,MACfA,EAAM39F,SAASikE,WAEf05B,EAAM39F,SAAS0oI,SAASt2P,MAE5B,MAAM0H,EAAS1H,KAAKu2P,eAAe1oP,EAAG,CAAEy9O,WAAW,IAC7Cz+N,EAAO0+L,EAAM39F,SAAS4oI,eAAe9uP,GACvCmlB,IAAS7sB,OAIbA,KAAKy2P,aAAa5oP,GACbgf,GAILA,EAAK6pO,aAAa7oP,KAG1B,GAASq+B,SAAW,CAChB2/M,cAAc,EACdoH,aAAc,OACdzyG,SAAU,EACV0xG,UAAW,GACX5yM,QAAS,KAEFizM,GAGR,KAAa,GAAW,KAFdoE,KAAO1E,GAChBM,GAAS9c,KAAO,GAEpB,SAAW8c,GACPA,EAASt0P,YAAc,MAAMs0P,EAAS/0P,KAkBtC+0P,EAASqE,WAjBT,SAAoB1gM,GAChB,GAAgB,MAAZA,EACA,OAAO,EAEX,GAAIA,aAAoBq8L,EACpB,OAAO,EAEX,MAAM3gP,EAAMskD,EAASl4D,OAAOC,aACtB4uB,EAAOqpC,EACb,OAAY,MAAPtkD,GAAeA,IAAQ2gP,EAASt0P,cACN,mBAApB4uB,EAAKmoO,YACe,mBAApBnoO,EAAK0nN,YACkB,mBAAvB1nN,EAAKgqO,eAdxB,CAoBG,KAAa,GAAW,KAG3B,SAAWtE,GAMPA,EAAS/xG,SALT,SAAkBtiJ,GACd,OAAO,SAAU44P,GACbA,EAAKn0L,OAAO,CAAE69E,SAAUtiJ,MAShCq0P,EAASL,UALT,SAAmB5yM,GACf,OAAO,SAAUw3M,GACbA,EAAKn0L,OAAO,CAAEuvL,UAAW5yM,MATrC,CAaG,KAAa,GAAW,KAC3B,SAAWizM,GACPA,EAAS7e,SAAW,GAASn1O,OAAO,CAChCgD,KAAM,SAFd,CAIG,KAAa,GAAW,KC3qBpB,MAAM,WAAkB,GAC3B,YAAY5B,EAAU,IAClBg/E,QACA3+E,KAAK0pF,aAAe1pF,KAAK6tP,iBAAgB,EAAMluP,GAC/CK,KAAK+2P,cAAgB/2P,KAAK6tP,iBAAgB,EAAOluP,GACjDK,KAAK2iE,OAAOhjE,GAEhB,WACI,OAAOK,KAAKL,QAAQnC,KAExB,YACI,OAAOwC,KAAK+3O,SAASxsB,MAEzB,WACI,OAAOvrN,KAAK+3O,SAASlG,KAEzB/zO,IAAKE,OAAOC,eACR,OAAO,GAAUA,YAErB,gBAAgBinF,EAAKvlF,GACjB,MAAMmyB,EAAYozD,EACZ,GAAKngF,cAAc,KAAK,GACxB,GAAKA,cAAc,OAAO,GAKhC,OAJA,EAAIm4B,SAASpL,EAAW9xB,KAAKmzP,gBAAgB,eACzCxzP,EAAQyR,WACR,EAAI8rB,SAASpL,EAAWnyB,EAAQyR,WAE7B0gB,EAEX,OAAOnyB,GAEH,GADAK,KAAKL,QAAUhC,OAAO+rD,OAAO/rD,OAAO+rD,OAAO,GAAI1pD,KAAKL,SAAUA,IACzD,GAASi3P,WAAWj3P,EAAQktB,OAASltB,EAAQktB,OAAS7sB,KAAK+3O,SAC5D,OAAO/3O,KAEXA,KAAK+3O,SAAWp4O,EAAQktB,KACpB7sB,KAAK6xO,KAAKptK,UACV,EAAIvnC,SAASl9B,KAAK0pF,aAAc1pF,KAAKmzP,gBAAgB,eACrD,EAAIj2N,SAASl9B,KAAK+2P,cAAe/2P,KAAKmzP,gBAAgB,gBAEjDnzP,KAAK6xO,KAAKhlD,WACf,EAAI3vJ,SAASl9B,KAAK0pF,aAAc1pF,KAAKmzP,gBAAgB,eACrD,EAAIj2N,SAASl9B,KAAK+2P,cAAe/2P,KAAKmzP,gBAAgB,gBAE1DnzP,KAAK0pF,aAAaxkF,aAAa,eAAgBlF,KAAK6xO,KAAKrjO,IACzDxO,KAAK+2P,cAAc7xP,aAAa,eAAgBlF,KAAK6xO,KAAKrjO,IACtDxO,KAAKxC,OACLwC,KAAK0pF,aAAaxkF,aAAa,kBAAmBlF,KAAKxC,MACvDwC,KAAK+2P,cAAc7xP,aAAa,kBAAmBlF,KAAKxC,OAE5D,MAAMm4P,EAAQ31P,KAAKL,QAAQupE,MAC3B,IAAKhoE,MAAMD,QAAQ00P,GACf,OAAO31P,KAEXA,KAAK21P,MAAQ,GACb,MAAMqB,EAAkB,GACxBrB,EAAMxqN,QAAS+pJ,IACX,GAAI,GAAU+hE,SAASC,WAAWhiE,GACZ,aAAdA,EAAK13L,KACLw5P,EAAgBlkP,QAAQoiL,GAGxB8hE,EAAgBx0P,KAAK0yL,OAGxB,CAEY,cADgB,iBAATA,EAAoBA,EAAK13L,KAAO03L,GAEhD8hE,EAAgBlkP,QAAQoiL,GAGxB8hE,EAAgBx0P,KAAK0yL,MAIjC,IAAK,IAAIj4L,EAAI,EAAGA,EAAI+5P,EAAgBr1P,OAAQ1E,GAAK,EAAG,CAChD,MAAMi4L,EAAO8hE,EAAgB/5P,GAC7B,IAAIk6P,EACJ,GAAI,GAAUF,SAASC,WAAWhiE,GAC9BiiE,EAAOjiE,MAEN,CACD,MAAM13L,EAAuB,iBAAT03L,EAAoBA,EAAK13L,KAAO03L,EAC9C//K,EAAuB,iBAAT+/K,GAAoBA,EAAK//K,MAAa,GAC1D,GAAI3X,EACA,GAAIwC,KAAK6xO,KAAKhlD,SAAU,CACpB,MAAMiqE,EAAO,GAASpjB,SAAS51O,IAAIN,GACnC,IAAIs5P,EAIA,OAAO,GAASpjB,SAASQ,WAAW12O,GAHpC25P,EAAO,IAAIL,EAAK3hP,QAMnB,GAAInV,KAAK6xO,KAAKptK,SAAU,CACzB,MAAMqyL,EAAO,GAASpjB,SAAS51O,IAAIN,GACnC,IAAIs5P,EAIA,OAAO,GAASpjB,SAASQ,WAAW12O,GAHpC25P,EAAO,IAAIL,EAAK3hP,IAQhC,GAAIgiP,EAAM,CACNA,EAAKx0L,OAAO3iE,KAAK+3O,SAAU/3O,MAC3Bm3P,EAAKh4P,WAC2C,IAA9Bg4P,EAAKx3P,QAAQy3P,aACzBp3P,KAAK0pF,aACL1pF,KAAK+2P,eACD3xP,YAAY+xP,EAAKrlO,WAC3B9xB,KAAK21P,MAAMnzP,KAAK20P,IAGxB,OAAOn3P,KAEX,OAAOL,EAAU,IACb,MAAMg2P,EAAQ31P,KAAK21P,MAQnB,OAPIA,GACAA,EAAMxqN,QAASgsN,IACPx3P,EAAQq0P,SAAWmD,EAAKh/K,KAAOg/K,EAAK1lJ,aACpC0lJ,EAAK1rM,WAIVzrD,KAEX,MAAMq3P,GACF,MAAM1B,EAAQ31P,KAAK21P,MAWnB,OAVIA,GACAA,EAAMxqN,QAASgsN,IACPE,IAAgBF,EAChBA,EAAK3xO,OAGL2xO,EAAKzxO,SAIV1lB,KAEX,KAAKs3P,GACD,MAAM3B,EAAQ31P,KAAK21P,MASnB,OARIA,GACAA,EAAMxqN,QAASgsN,IACPA,IAASG,GAAgBH,EAAK1lJ,cAC9B0lJ,EAAK3xO,OACL2xO,EAAK1rM,YAIVzrD,KAEX,OACI,OAAOA,KAAK6tB,MAAM,MAEtB,OACI,OAAO7tB,KAAK8tB,KAAK,MAErB,SACI,MAAM6nO,EAAQ31P,KAAK21P,MAOnB,OANIA,IACAA,EAAMxqN,QAASgsN,GAASA,EAAKv5O,UAC7B5d,KAAK21P,MAAQ,MAEjB,EAAI/3O,OAAO5d,KAAK0pF,cAChB,EAAI9rE,OAAO5d,KAAK+2P,eACTp4K,MAAM/gE,SAEjB,QACI,MAAM+3O,EAAQ31P,KAAK21P,MACb5d,EAAW/3O,KAAK+3O,SACtB,GAAIA,GAAY4d,EAAO,CACnB,MAAM4B,EAAS5B,EAAMrvM,KAAM6wM,IAAuC,IAA9BA,EAAKx3P,QAAQy3P,cAC3CI,EAAU7B,EAAMrvM,KAAM6wM,IAAuC,IAA9BA,EAAKx3P,QAAQy3P,cAClD,GAAIG,EAAQ,EACOv3P,KAAKL,QAAQoqG,MACtBguI,EAASjmN,UACTimN,EAASxsB,MAAM1+L,KAAK4qO,WACnBryP,YAAYpF,KAAK0pF,cAExB8tK,GACAx3P,KAAKurN,MAAMz5L,UAAU1sB,YAAYpF,KAAK+2P,eAG9C,OAAO/2P,MC5LR,SAAS03P,GAAUrgO,EAAKsgO,EAAcC,EAAgBr2P,GAEzD,OADY,EAAYnE,KAAK,GAAmBq2O,QAAQoZ,YAAa7sP,KAAKurN,MAAO,GAAIosC,EAAcC,EAAgBvgO,EAAKr3B,KAAK6xO,KAAMtwO,EAAM,IAC9HirP,OAER,SAASqL,GAAYhrO,EAAMirO,GAC9B,OAAIA,EACOjrO,EAAKglN,KAAKj1G,UAEd/vG,EAAKglN,KAAKptK,SACX53C,EAAK8nN,gBAAgBp5K,OACrB1uC,EAAK8/N,0BAA0B9/N,EAAKiF,YDqLnC0gO,GAyBR,KAAc,GAAY,KAxBfv0P,YAAc,MAAMu0P,GAAUh1P,KAuBxCg1P,GAAUqD,YAtBV,SAAqB3/L,GACjB,GAAgB,MAAZA,EACA,OAAO,EAEX,GAAIA,aAAoBs8L,GACpB,OAAO,EAEX,MAAM5gP,EAAMskD,EAASl4D,OAAOC,aACtB4uB,EAAOqpC,EACb,OAAY,MAAPtkD,GAAeA,IAAQ4gP,GAAUv0P,cACpB,MAAd4uB,EAAK0+L,OACQ,MAAb1+L,EAAKglN,MACkB,mBAAhBhlN,EAAK81C,QACW,mBAAhB91C,EAAK4+B,QACU,mBAAf5+B,EAAKgB,OACS,mBAAdhB,EAAKiB,MACS,mBAAdjB,EAAKrH,MACS,mBAAdqH,EAAKnH,MAOxB,SAAW8sO,GACP,MAAMyE,UAAiB,GACnB,YAAYt3P,EAAU,IAClBg/E,QACA3+E,KAAK4lC,SAAU,EACf5lC,KAAKL,QAAUK,KAAKmiH,WAAWxiH,GAC/BK,KAAK8xB,UAAY,GAAK/sB,cAAc/E,KAAKL,QAAQ8lF,SAAW,KAAmC,IAA9BzlF,KAAKL,QAAQy3P,cAC9E,EAAIl6N,SAASl9B,KAAK8xB,UAAW9xB,KAAKmzP,gBAAgB,cACZ,iBAA3BnzP,KAAKL,QAAQyR,WACpB,EAAI8rB,SAASl9B,KAAK8xB,UAAW9xB,KAAKL,QAAQyR,WAE9CpR,KAAK2F,OAET,qBACI,OAAO3F,KAAKksC,SAEhB,cAAcvsC,GACVK,KAAKksC,SAAWlsC,KAAKmiH,WAAWxiH,GAEpC,kBAAkBA,GACd,OAAO,EAAUwG,MAAM,EAAU+gD,UAAUlnD,KAAK8yP,eAAgBnzP,GAEpE,YACI,OAAOK,KAAK+3O,SAASxsB,MAEzB,WACI,OAAOvrN,KAAK+3O,SAASlG,KAEzB,WACI,OAAO7xO,KAAKL,QAAQnC,KAExBM,IAAKE,OAAOC,eACR,OAAOg5P,EAASh5P,YAEpB,QACA,WAAW0B,GAEP,OADaK,KAAK6F,YACNs8G,WAAWxiH,GAE3B,iBAII,OAHIK,KAAKL,QAAQ2pB,QACbq1D,MAAM00K,eAAerzP,KAAKL,QAAQ2pB,QAE/BtpB,KAEX,OAAO6sB,EAAMkrO,GAcT,OAbA/3P,KAAK+3O,SAAWlrN,EAChB7sB,KAAKG,OAAS43P,EACd/3P,KAAKorH,MAAMprH,KAAK8xB,WACZ9xB,KAAK6xO,KAAKptK,SACV,EAAIvnC,SAASl9B,KAAK8xB,UAAW9xB,KAAKmzP,gBAAgB,cAE7CnzP,KAAK6xO,KAAKhlD,UACf,EAAI3vJ,SAASl9B,KAAK8xB,UAAW9xB,KAAKmzP,gBAAgB,cAElDnzP,KAAKxC,MACLwC,KAAK8xB,UAAU5sB,aAAa,iBAAkBlF,KAAKxC,MAEvDwC,KAAKqzP,iBACErzP,KAEX,SACIA,KAAK6d,QACL,MAAMy/G,EAASt9H,KAAKL,QAAQ29H,OAC5B,GAAIA,EAAQ,CACR,MAAM43D,EAAO,GAAOo4D,eAAehwH,GAC7B,GAAOywH,kBAAkBzwH,GACzB,GAAOiwH,gBAAgBjwH,GAC7Bt9H,KAAK8xB,UAAU1sB,YAAY8vL,EAAKxtK,UAChC1nB,KAAK4N,WAAasnL,EAAKvhL,UAG3B,OADA3T,KAAKg4P,WACEh4P,KAEX,YACA,SACI,OAAOA,KAEX,MAAMwG,EAAOxG,KAAK8xB,WACVtrB,GACAA,EAAKtB,aAAa,eAAgBlF,KAAK+3O,SAASlG,KAAKrjO,IAG7D,OAGI,OAFAxO,KAAK8xB,UAAUxN,MAAMC,QAAU,GAC/BvkB,KAAK4lC,SAAU,EACR5lC,KAEX,OAGI,OAFAA,KAAK8xB,UAAUxN,MAAMC,QAAU,OAC/BvkB,KAAK4lC,SAAU,EACR5lC,KAEX,YACI,QAASA,KAAK4lC,QAElB,QACI,MAAM5P,EAAUh2B,KAAKL,QAAQs4P,aAK7B,OAJe,MAAXjiO,GAAmBkmC,OAAO9lC,SAASJ,KACnCh2B,KAAK8xB,UAAUxN,MAAM0R,QAAU,GAAGA,GAEtCh2B,KAAKG,OAAO0tB,MAAM7tB,MACXA,KAEX,OAGI,OAFAA,KAAK8xB,UAAUxN,MAAM0R,QAAU,GAC/Bh2B,KAAKG,OAAO2tB,KAAK9tB,MACVA,KAEX,MAAMmnC,GACF,OAAkB,MAAdnnC,KAAKurN,OAAkC,MAAjBvrN,KAAK+3O,UAGxB/3O,KAAKurN,MAAM1+L,KAAKovB,MAAM9U,EAAKnnC,KAAK+3O,WAI/Ckf,EAAS/qN,SAAW,CAChBkrN,cAAc,EACd3xK,QAAS,KAEb+sK,EAAUyE,SAAWA,EACrB,SAAWA,GACP,IAAI3pL,EAAU,EAad2pL,EAASxJ,OALT,SAAgB9tP,GACZ,MAAMw3P,EAAO,EAAUl+G,aARLz7I,EAQ8BmC,EAAQnC,MAN7C,EAAUkyI,WAAWlyI,IAEhC8vE,GAAW,EACJ,aAAaA,GAG2CttE,MARnE,IAAsBxC,EAUlB,OADA25P,EAAKx0L,OAAOhjE,GACLw3P,GAZf,CAeGF,EAAWzE,EAAUyE,WAAazE,EAAUyE,SAAW,KAC1D,SAAWA,GACPA,EAASh5P,YAAc,MAAMg5P,EAASz5P,KAwBtCy5P,EAASC,WAvBT,SAAoBhhM,GAChB,GAAgB,MAAZA,EACA,OAAO,EAEX,GAAIA,aAAoB+gM,EACpB,OAAO,EAEX,MAAMrlP,EAAMskD,EAASl4D,OAAOC,aACtB4uB,EAAOqpC,EACb,OAAY,MAAPtkD,GAAeA,IAAQqlP,EAASh5P,cACnB,MAAd4uB,EAAK0+L,OACQ,MAAb1+L,EAAKglN,MACkB,mBAAhBhlN,EAAK81C,QACW,mBAAhB91C,EAAK4+B,QACU,mBAAf5+B,EAAKgB,OACS,mBAAdhB,EAAKiB,MACS,mBAAdjB,EAAKrH,MACS,mBAAdqH,EAAKnH,MACc,mBAAnBmH,EAAK4kF,WApBxB,CA0BGwlJ,EAAWzE,EAAUyE,WAAazE,EAAUyE,SAAW,KApK9D,CAqKG,KAAc,GAAY,KE5XtB,MAAM,WAAe,GAAUA,SAClC,WACI,EAAI/5N,SAASl9B,KAAK8xB,UAAW9xB,KAAKmzP,gBAAgB,qBAClDnzP,KAAKyrD,SAET,SAEI,OADAzrD,KAAKk4P,iBACEl4P,KAEX,iBACI,MACMo3D,EADOp3D,KAAK+3O,SACElG,KAAKptK,SACnBzkE,KAAKm4P,gBACLn4P,KAAKo4P,gBACX,EAAI5kN,UAAUxzC,KAAK8xB,UAAWslC,EAAQ,CAAEmlI,UAAU,IAEtD,gBACI,MAAM1vK,EAAO7sB,KAAK+3O,SACZp4O,EAAUK,KAAKL,QACrB,IAAI,EAAE4yC,EAAI,EAAC,EAAEC,EAAI,GAAM7yC,EACvB,MAAM,OAAEwoC,EAAM,gBAAEusN,EAAe,OAAEnhM,GAAW5zD,EAC5C,IAAI47D,EAAO,GAAiB1uC,EAAM6nO,GAClC,MAAMhgM,EAAQ7nC,EAAKglN,KAAK6a,WACnBn5L,IACDgI,EAAOA,EAAKA,KAAK7G,IAErB,IAAIvnC,EAAU,EACVC,EAAU,EACQ,iBAAX+a,GACPhb,EAAUgb,EACV/a,EAAU+a,GAEa,iBAAXA,IACZhb,EAAUgb,EAAOoK,EACjBnlB,EAAU+a,EAAOqK,GAErBD,EAAI,EAAU45I,oBAAoB55I,EAAGgpB,EAAKlqC,OAC1CmhB,EAAI,EAAU25I,oBAAoB35I,EAAG+oB,EAAK9nC,QAC1C,IAAI2jC,EAAS,EAAIgnE,kBAAkBhrE,UAAUmI,EAAKhpB,EAAIgpB,EAAKlqC,MAAQ,EAAGkqC,EAAK/oB,EAAI+oB,EAAK9nC,OAAS,GAK7F,OAJI8/B,IACA6D,EAASA,EAAO7D,OAAOmB,IAE3B0C,EAASA,EAAOhE,UAAU7gB,EAAIplB,EAAUouC,EAAKlqC,MAAQ,EAAGmhB,EAAIplB,EAAUmuC,EAAK9nC,OAAS,GAC7E2jC,EAEX,gBACI,MAAMvqC,EAAO7sB,KAAK+3O,SACZp4O,EAAUK,KAAKL,SACf,OAAEwoC,EAAS,EAAC,SAAE0oB,EAAW,EAAC,OAAE0C,GAAW5zD,EAC7C,IAAI41O,EACA/iN,EACAkiC,EAEA6gL,EADA,EAAUrkD,aAAargI,GACbhkC,EAAKwrO,kBAAkBxlO,WAAWg+B,GAAY,KAG9ChkC,EAAKyrO,mBAAmBznM,GAElC0kL,GACA/iN,EAAW+iN,EAAQj0O,MACnBozD,EAAQ6gL,EAAQl6K,SAAS1G,YAAY,IAAI,GAAM,EAAG,KAAO,IAGzDniC,EAAW3F,EAAK8nN,gBAAgBrzO,MAChCozD,EAAQ,GAEZ,IAAI0C,EAAS,EAAIgnE,kBACZhrE,UAAU5gC,EAAS+f,EAAG/f,EAASggB,GAC/B+gB,OAAOmB,GAUZ,OARI0C,EADkB,iBAAXjvB,EACEivB,EAAOhE,UAAUjrB,EAAOoK,GAAK,EAAGpK,EAAOqK,GAAK,GAG5C4kB,EAAOhE,UAAU,EAAGjrB,GAE5BorB,IACD6D,EAASA,EAAO7D,QAAQmB,IAErB0C,EAEX,YAAYvpD,GACR,GAAI7N,KAAKi8C,MAAMpuC,GACX,OAEJA,EAAEkb,kBACFlb,EAAEob,iBACF,MAAMsvO,EAAUv4P,KAAKL,QAAQ44P,QACN,mBAAZA,GACP,EAAYn7P,KAAKm7P,EAASv4P,KAAK+3O,SAAU,CACrClqO,IACAgf,KAAM7sB,KAAK+3O,SACXlG,KAAM7xO,KAAK+3O,SAASlG,KACpB2mB,IAAKx4P,SAalB,KAAW,GAAS,KAPZ2iE,OAAO,CACVnlE,KAAM,SACN8rB,OAAQ,CACJknI,UAAW,cACXC,WAAY,iBAIxB,SAAWgoG,GACPA,EAAOC,OAASD,EAAOhL,OAAO,CAC1BjwP,KAAM,gBACN8/H,OAAQ,CACJ,CACI73C,QAAS,SACThgF,SAAU,SACVmK,MAAO,CACH7R,EAAG,EACH6xC,KAAM,UACN+gE,OAAQ,YAGhB,CACIlrB,QAAS,OACThgF,SAAU,OACVmK,MAAO,CACHrS,EAAG,0BACHqyC,KAAM,OACNC,OAAQ,UACR,eAAgB,EAChB,iBAAkB,UAI9BghB,SAAU,GACV1oB,OAAQ,EACR,SAAQ,KAAEtb,EAAI,IAAE2rO,IACZA,EAAIr4P,OAAOyd,SACXiP,EAAKglN,KAAKj0N,OAAO,CAAE+6O,IAAI,EAAM3E,OAAQwE,EAAIrgL,SA7BrD,CAgCG,KAAW,GAAS,KC9IvB,ICyOWygL,GCqDAC,GF9RP,GAAkC,SAAU75P,EAAG6O,GAC/C,IAAI1P,EAAI,GACR,IAAK,IAAIY,KAAKC,EAAOrB,OAAOkB,UAAUC,eAAe1B,KAAK4B,EAAGD,IAAM8O,EAAEpK,QAAQ1E,GAAK,IAC9EZ,EAAEY,GAAKC,EAAED,IACb,GAAS,MAALC,GAAqD,mBAAjCrB,OAAOsxG,sBACtB,KAAIhyG,EAAI,EAAb,IAAgB8B,EAAIpB,OAAOsxG,sBAAsBjwG,GAAI/B,EAAI8B,EAAE4C,OAAQ1E,IAC3D4Q,EAAEpK,QAAQ1E,EAAE9B,IAAM,GAAKU,OAAOkB,UAAUwxD,qBAAqBjzD,KAAK4B,EAAGD,EAAE9B,MACvEkB,EAAEY,EAAE9B,IAAM+B,EAAED,EAAE9B,KAE1B,OAAOkB,GAKJ,MAAM,WAAiB,GAAU84P,SACpC,WAEI,GADA,EAAI/5N,SAASl9B,KAAK8xB,UAAW9xB,KAAKmzP,gBAAgB,uBAC9CnzP,KAAKL,QAAQiQ,MAAO,CACpB,MAAMkkI,EAAK9zI,KAAKL,QAAQiQ,OAAS6qE,MAAOrpE,GAAc0iI,EAAIlkI,EAAQ,GAAOkkI,EAAI,CAAC,UAC9E,EAAI7gI,KAAKjT,KAAK8xB,UAAW,EAAIy3E,eAAe35F,IACxCwB,GACA,EAAI8rB,SAASl9B,KAAK8xB,UAAW1gB,GAGrCpR,KAAKyrD,SAET,SACI,MAAM5+B,EAAO7sB,KAAK+3O,SACZp4O,EAAUK,KAAKL,SACf,gBAAE+0P,EAAe,OAAEnhM,GAAW5zD,EAC9B82B,EAAU,EAAUu6J,eAAerxL,EAAQ82B,SACjD,IAAI8kC,EAAO,GAAiB1uC,EAAM6nO,GAAiBvuJ,cAAc,CAC7D5zD,GAAI9b,EAAQF,KACZic,GAAI/b,EAAQxlB,IACZogB,MAAOoF,EAAQF,KAAOE,EAAQpE,MAC9BoB,OAAQgD,EAAQxlB,IAAMwlB,EAAQ+kC,SAElC,MAAMq2K,EAAOhlN,EAAKglN,KAClB,GAAIA,EAAKhlD,SAAU,CACf,MAAMn4H,EAAQm9K,EAAK6a,WACnB,GAAIh4L,EACA,GAAInB,EAAQ,CACR,MAAMK,EAASi+K,EAAKj1G,UAAUliE,YAC9B,EAAInH,OAAOvzD,KAAK8xB,UAAW4iC,EAAOd,EAAOrhB,EAAGqhB,EAAOphB,EAAG,CAClD+pJ,UAAU,SAIdhhI,EAAOA,EAAKA,KAAK7G,GAK7B,OADA,EAAIzhD,KAAKjT,KAAK8xB,UAAWypC,EAAKxP,UACvB/rD,OAgBZ,KAAa,GAAW,KAZd2iE,OAAO,CACZnlE,KAAM,WACNioF,QAAS,OACThvD,QAAS,GACT7mB,MAAO,CACHggC,KAAM,OACNC,OAAQ,OACR,eAAgB,GAChB,mBAAoB,OACpB,iBAAkB,UC9DvB,MAAM,WAAiB,GAAUonN,SACpC,cACIt4K,SAASl4E,WACTzG,KAAK84P,QAAU,GAEnB,eACI,OAAO94P,KAAK+3O,SAASlG,KAAKknB,cAE9B,WAOI,OANA/4P,KAAKk9B,SAASl9B,KAAKmzP,gBAAgB,uBAC/BnzP,KAAKL,QAAQq5P,SACbh5P,KAAKi5P,aAETj5P,KAAKk5P,eACLl5P,KAAKm5P,gBACEn5P,KAEX,SAYI,OAXiBA,KAAKo5P,SACTz3P,SAAW3B,KAAK84P,QAAQn3P,OACjC3B,KAAKq5P,iBAGLr5P,KAAKk5P,eACLl5P,KAAKm5P,iBAELn5P,KAAKL,QAAQq5P,SACbh5P,KAAKi5P,aAEFj5P,KAEX,eACI,MAAM84P,EAAU94P,KAAK84P,QACrB94P,KAAK84P,QAAU,GACXA,GACAA,EAAQ3tN,QAASvhB,IACb5pB,KAAKs5P,oBAAoB1vO,GACzBA,EAAOhM,WAInB,gBACI,MAAMw7O,EAAWp5P,KAAKo5P,SACtB,IAAK,IAAIn8P,EAAI,EAAGC,EAAIk8P,EAASz3P,OAAQ1E,EAAIC,EAAGD,GAAK,EAAG,CAChD,MAAMs8P,EAASH,EAASn8P,GAClB4iM,EAAe7/L,KAAKL,QAAQkgM,aAC5B25D,EAAgBx5P,KAAKL,QAAQ65P,cAC7B5vO,EAASi2K,EAAa,CACxBn+L,MAAOzE,EACPsuN,MAAOvrN,KAAKurN,MACZtvK,MAAQ9U,GAAQnnC,KAAKi8C,MAAM9U,GAC3Bv3B,MAAO5P,KAAKL,QAAQiQ,OAAS,KAE7B4pP,GACAA,EAAc5vO,GAElB5pB,KAAKurN,MAAM7rN,KAAK+5P,kBAAkB,CAC9Bj8P,KAAM,WACNq0O,KAAM7xO,KAAK6xO,KACXhlN,KAAM7sB,KAAK+3O,SACXof,KAAMvtO,IAEVA,EAAOsuO,eAAeqB,EAAOhnN,EAAGgnN,EAAO/mN,GACvCxyC,KAAKorH,MAAMxhG,EAAOkI,WAClB9xB,KAAK8xB,UAAU1sB,YAAYwkB,EAAOkI,WAClC9xB,KAAK84P,QAAQt2P,KAAKonB,GAClB5pB,KAAK05P,qBAAqB9vO,IAGlC,gBACI,MAAMwvO,EAAWp5P,KAAKo5P,SACtB,IAAK,IAAIn8P,EAAI,EAAGC,EAAIk8P,EAASz3P,OAAQ1E,EAAIC,EAAGD,GAAK,EAAG,CAChD,MAAMs8P,EAASH,EAASn8P,GAClB2sB,EAAS5pB,KAAK84P,QAAQ77P,GACxB2sB,GACAA,EAAOsuO,eAAeqB,EAAOhnN,EAAGgnN,EAAO/mN,IAInD,aACI,MAAMgiM,EAAax0O,KAAK4N,WAAW4mO,WAC/BA,GACAA,EAAWtvO,aAAa,IAAKlF,KAAK+3O,SAASjD,yBAGnD,qBAAqBlrN,GACjB,MAAMkoN,EAAW9xO,KAAK+3O,SAClBjG,EAAS8jB,IAAI,mBACbhsO,EAAOxB,GAAG,SAAUpoB,KAAK25P,eAAgB35P,MACzC4pB,EAAOxB,GAAG,WAAYpoB,KAAK45P,iBAAkB55P,MAC7C4pB,EAAOxB,GAAG,UAAWpoB,KAAK65P,gBAAiB75P,OAE3C8xO,EAAS8jB,IAAI,oBACbhsO,EAAOxB,GAAG,SAAUpoB,KAAK85P,eAAgB95P,MAGjD,oBAAoB4pB,GAChB,MAAMkoN,EAAW9xO,KAAK+3O,SAClBjG,EAAS8jB,IAAI,mBACbhsO,EAAOnB,IAAI,SAAUzoB,KAAK25P,eAAgB35P,MAC1C4pB,EAAOnB,IAAI,WAAYzoB,KAAK45P,iBAAkB55P,MAC9C4pB,EAAOnB,IAAI,UAAWzoB,KAAK65P,gBAAiB75P,OAE5C8xO,EAAS8jB,IAAI,oBACbhsO,EAAOnB,IAAI,SAAUzoB,KAAK85P,eAAgB95P,MAGlD,kBAAkB0B,GACd,MAAMowO,EAAW9xO,KAAK+3O,SAChBqhB,EAAWp5P,KAAKo5P,SAChBj+O,EAAOzZ,EAAQ,EAAI03P,EAAS13P,EAAQ,GAAKowO,EAASioB,aAClDpsP,EAAOjM,EAAQ03P,EAASz3P,OAAS,EAAIy3P,EAAS13P,EAAQ,GAAKowO,EAASkoB,aAC1E,MAAO,CACH7+O,KAAM,GAAM5c,OAAO4c,GACnBxN,KAAM,GAAMpP,OAAOoP,IAG3B,kBAAkBw5B,GACd,MAAMt5B,EAAI7N,KAAKkuE,eAAe/mC,IACxB,EAAEoL,EAAC,EAAEC,GAAMxyC,KAAKurN,MAAM11J,WAAWhoD,EAAEof,QAASpf,EAAEqf,SACpD,MAAO,CAAErf,IAAG0kC,IAAGC,KAEnB,gBAAe,EAAE3kC,IACb7N,KAAK6tB,QACL,MAAMikN,EAAW9xO,KAAK+3O,SAEtB,GADAjG,EAASD,KAAKukB,WAAW,cAAe,CAAEuC,IAAI,EAAM3E,OAAQh0P,KAAKm4E,OAC5Dn4E,KAAKL,QAAQopB,gBAAiB,CAC/B,MAAQlb,EAAGs5B,EAAG,EAAEoL,EAAC,EAAEC,GAAMxyC,KAAKi6P,kBAAkBpsP,GAChDikO,EAASooB,gBAAgB/yN,EAAKoL,EAAGC,IAGzC,kBAAiB,OAAE5oB,EAAM,EAAE/b,IACvB,MAAMikO,EAAW9xO,KAAK+3O,SAChBr2O,EAAQkoB,EAAOjqB,QAAQ+B,OACrBmM,EAAGs5B,EAAG,EAAEoL,EAAC,EAAEC,GAAMxyC,KAAKi6P,kBAAkBpsP,GAC1C0rP,EAAS,CAAEhnN,IAAGC,KACpBxyC,KAAKm6P,WAAWZ,EAAQ73P,GACxBowO,EAASD,KAAKuoB,YAAY14P,EAAO63P,EAAQ,CAAEZ,IAAI,EAAM3E,OAAQh0P,KAAKm4E,MAClEvuD,EAAOsuO,eAAeqB,EAAOhnN,EAAGgnN,EAAO/mN,GAClCxyC,KAAKL,QAAQopB,iBACd+oN,EAASuoB,gBAAgBlzN,EAAKoL,EAAGC,GAGzC,iBAAgB,EAAE3kC,IACd,MAAMlO,EAAUK,KAAKL,QACfmyO,EAAW9xO,KAAK+3O,SAItB,GAHIp4O,EAAQq5P,SACRh5P,KAAKi5P,cAEJt5P,EAAQ26P,mBACT,OAEoBxoB,EAASyoB,8BAA8B,CAC3D5B,IAAI,EACJ3E,OAAQh0P,KAAKm4E,OAGbn4E,KAAKb,SAETa,KAAK8tB,OACLgkN,EAASD,KAAKwkB,UAAU,cAAe,CAAEsC,IAAI,EAAM3E,OAAQh0P,KAAKm4E,MAC5Dn4E,KAAK2rP,UAAU99O,GAAG2sP,aAClB1oB,EAASD,KAAKwkB,UAAU,aAAc,CAAEsC,IAAI,EAAM3E,OAAQh0P,KAAKm4E,MAEnE,MAAQtqE,EAAGs5B,EAAG,EAAEoL,EAAC,EAAEC,GAAMxyC,KAAKi6P,kBAAkBpsP,GAC3C7N,KAAKL,QAAQopB,iBACd+oN,EAAS2oB,cAActzN,EAAKoL,EAAGC,GAEnCs/L,EAAS4oB,gBAAgBvzN,GACzBxnC,EAAQg7P,WAAah7P,EAAQg7P,UAAU,CAAE/gM,KAAMk4K,EAASD,KAAMC,aAElE,WAAWynB,EAAQ73P,GACf,MAAMk5P,EAAa56P,KAAKL,QAAQi7P,YAAc,EAC9C,GAAIA,EAAa,EAAG,CAChB,MAAMC,EAAY76P,KAAK86P,kBAAkBp5P,GACnCyZ,EAAO0/O,EAAU1/O,KACjBxN,EAAOktP,EAAUltP,KACnB7F,KAAKinC,IAAIwqN,EAAOhnN,EAAIp3B,EAAKo3B,GAAKqoN,EAC9BrB,EAAOhnN,EAAIp3B,EAAKo3B,EAEXzqC,KAAKinC,IAAIwqN,EAAOhnN,EAAI5kC,EAAK4kC,GAAKqoN,IACnCrB,EAAOhnN,EAAI5kC,EAAK4kC,GAEhBzqC,KAAKinC,IAAIwqN,EAAO/mN,EAAIr3B,EAAKq3B,GAAKooN,EAC9BrB,EAAO/mN,EAAIqoN,EAAU1/O,KAAKq3B,EAErB1qC,KAAKinC,IAAIwqN,EAAO/mN,EAAI7kC,EAAK6kC,GAAKooN,IACnCrB,EAAO/mN,EAAI7kC,EAAK6kC,IAI5B,gBAAe,OAAE5oB,EAAM,EAAE/b,IACrB,GAAI7N,KAAKL,QAAQo7P,UAAW,CACxB,MAAMr5P,EAAQkoB,EAAOjqB,QAAQ+B,MACvBowO,EAAW9xO,KAAK+3O,SACtBjG,EAASD,KAAKmpB,eAAet5P,EAAO,CAAEi3P,IAAI,IACtC34P,KAAKL,QAAQq5P,SACbh5P,KAAKi5P,aAETnnB,EAAS4oB,gBAAgB16P,KAAKkuE,eAAergE,KAGrD,gBAAgBs5B,GACZ,MAAM2qM,EAAW9xO,KAAK+3O,SACtB,GAAI/3O,KAAKi8C,MAAM9U,KACVnnC,KAAKL,QAAQq5P,UACblnB,EAAS8jB,IAAI,iBACd,OAEJzuN,EAAIpe,kBACJoe,EAAIle,iBACJ,MAAMpb,EAAI7N,KAAKkuE,eAAe/mC,GACxBoyN,EAASv5P,KAAKurN,MAAM11J,WAAWhoD,EAAEof,QAASpf,EAAEqf,SAAS6+B,SAC3D+lL,EAASD,KAAKukB,WAAW,aAAc,CAAEuC,IAAI,EAAM3E,OAAQh0P,KAAKm4E,MAChE,MAAMz2E,EAAQowO,EAASmpB,eAAe1B,EAAOhnN,EAAGgnN,EAAO/mN,GACvDxyC,KAAKm6P,WAAWZ,EAAQ73P,GACxBowO,EAASD,KAAKqpB,aAAa3B,EAAQ73P,EAAO,CACtCi3P,IAAI,EACJ3E,OAAQh0P,KAAKm4E,MAEjBn4E,KAAKb,SACL,MAAMyqB,EAAS5pB,KAAK84P,QAAQp3P,GAC5B1B,KAAK2rP,UAAU99O,EAAG,CAAE2sP,aAAa,IACjC5wO,EAAOuxO,YAAYttP,GAEvB,WACI7N,KAAKk5P,iBAGFN,GA2DR,KAAa,GAAW,KADdwC,OAzDT,cAAqB,GACjB,YAAYz7P,GACRg/E,QACA3+E,KAAKL,QAAUA,EACfK,KAAKb,SACLa,KAAKqzP,eAAe,CAChB7iG,UAAW,cACXC,WAAY,cACZ4qG,SAAU,kBAGlB,YACI,OAAOr7P,KAAKL,QAAQ4rN,MAExB,SACIvrN,KAAK8xB,UAAY,GAAK/sB,cAAc,UAAU,GAC9C,MAAM6K,EAAQ5P,KAAKL,QAAQiQ,MAC3B,GAAqB,mBAAVA,EAAsB,CAC7B,MAAMs8B,EAAW0sN,GAAS9F,cAC1B9yP,KAAKiwP,SAAStyP,OAAO+rD,OAAO/rD,OAAO+rD,OAAO,GAAIxd,EAASt8B,OAAQA,EAAM5P,aAGrEA,KAAKiwP,SAASrgP,GAElB5P,KAAKk9B,SAASl9B,KAAKmzP,gBAAgB,qBAEvC,eAAe5gN,EAAGC,GACdxyC,KAAKiwP,SAAS,CAAEjzJ,GAAIzqD,EAAG0qD,GAAIzqD,IAE/B,YAAYrL,GACJnnC,KAAKL,QAAQs8C,MAAM9U,KAGvBA,EAAIpe,kBACJoe,EAAIle,iBACJjpB,KAAKurN,MAAM1+L,KAAKm+N,mBAChBhrP,KAAKs7P,uBAAuB,CACxBlrG,UAAW,cACXE,UAAW,cACXD,QAAS,YACTE,SAAU,YACVgrG,YAAa,aACdp0N,EAAI5kB,MACPviB,KAAKk8E,KAAK,SAAU,CAAEruE,EAAGs5B,EAAKvd,OAAQ5pB,QAE1C,YAAYmnC,GACRnnC,KAAKk8E,KAAK,WAAY,CAAEruE,EAAGs5B,EAAKvd,OAAQ5pB,OAE5C,UAAUmnC,GACNnnC,KAAKk8E,KAAK,UAAW,CAAEruE,EAAGs5B,EAAKvd,OAAQ5pB,OACvCA,KAAKw7P,2BACLx7P,KAAKurN,MAAM1+L,KAAKwmO,iBAEpB,cAAclsN,GACVnnC,KAAKk8E,KAAK,SAAU,CAAEruE,EAAGs5B,EAAKvd,OAAQ5pB,SAKlD,SAAW44P,GACP,MAAM6C,EAAgB,GAAK9kO,OAAO,yBAClCiiO,EAASj2L,OAAO,CACZnlE,KAAM,WACNo9P,WAAY,GACZ5B,SAAS,EACT+B,WAAW,EACXT,oBAAoB,EACpBvxO,iBAAiB,EACjBnZ,MAAO,CACH7R,EAAG,EACH6xC,KAAM,OACNC,OAAQ,OACR8gE,OAAQ,OACR,eAAgB,GAEpBkvF,aAAelgM,GAAY,IAAIi5P,EAASwC,OAAOz7P,GAC/C29H,OAAQ,CACJ,CACI73C,QAAS,OACThgF,SAAU,aACV2L,UAAWqqP,EACX7rP,MAAO,CACHggC,KAAM,OACNC,OAAQ,cACR,eAAgB,GAChB8gE,OAAQ,aAIpBrnF,OAAQ,CACJ,CAAC,cAAcmyO,GAAkB,kBACjC,CAAC,eAAeA,GAAkB,qBAhC9C,CAmCG,KAAa,GAAW,KCnUpB,MAAM,WAAiB,GAAUxE,SACpC,cACIt4K,SAASl4E,WACTzG,KAAK84P,QAAU,GAEnB,eACI,OAAO94P,KAAK+3O,SAASlG,KAAKknB,cAE9B,SAEI,OADA/4P,KAAKb,SACEa,KAEX,WACI,EAAIk9B,SAASl9B,KAAK8xB,UAAW9xB,KAAKmzP,gBAAgB,uBAClDnzP,KAAKk5P,eACL,MAAMpnB,EAAW9xO,KAAK+3O,SAChBqhB,EAAW,IAAIp5P,KAAKo5P,UAC1BA,EAAStmP,QAAQg/N,EAASC,aAC1BqnB,EAAS52P,KAAKsvO,EAASE,aACvB,IAAK,IAAI/0O,EAAI,EAAGC,EAAIk8P,EAASz3P,OAAQ1E,EAAIC,EAAI,EAAGD,GAAK,EAAG,CACpD,MAAMs8P,EAASH,EAASn8P,GAClBy+P,EAAatC,EAASn8P,EAAI,GAC1B2sB,EAAS5pB,KAAK27P,aAAapC,EAAQmC,EAAYz+P,GACrD+C,KAAKorH,MAAMxhG,EAAOkI,WAClB9xB,KAAK84P,QAAQt2P,KAAKonB,GAEtB,OAAO5pB,KAEX,aAAau5P,EAAQmC,EAAYh6P,GAC7B,MAAMkoB,EAAS5pB,KAAKL,QAAQkgM,aAAa,CACrCn+L,QACA6pN,MAAOvrN,KAAKurN,MACZtvK,MAAQ9U,GAAQnnC,KAAKi8C,MAAM9U,GAC3Bv3B,MAAO5P,KAAKL,QAAQiQ,OAAS,KAcjC,OAZI5P,KAAKL,QAAQ65P,eACbx5P,KAAKL,QAAQ65P,cAAc5vO,GAE/B5pB,KAAKurN,MAAM7rN,KAAK+5P,kBAAkB,CAC9Bj8P,KAAM,WACNq0O,KAAM7xO,KAAK6xO,KACXhlN,KAAM7sB,KAAK+3O,SACXof,KAAMvtO,IAEV5pB,KAAK47P,aAAahyO,EAAQ2vO,EAAQmC,GAClC17P,KAAK8xB,UAAU1sB,YAAYwkB,EAAOkI,WAClC9xB,KAAK05P,qBAAqB9vO,GACnBA,EAEX,qBAAqBA,GACjBA,EAAOxB,GAAG,SAAUpoB,KAAK25P,eAAgB35P,MACzC4pB,EAAOxB,GAAG,WAAYpoB,KAAK45P,iBAAkB55P,MAC7C4pB,EAAOxB,GAAG,UAAWpoB,KAAK65P,gBAAiB75P,MAE/C,oBAAoB4pB,GAChBA,EAAOnB,IAAI,SAAUzoB,KAAK25P,eAAgB35P,MAC1C4pB,EAAOnB,IAAI,WAAYzoB,KAAK45P,iBAAkB55P,MAC9C4pB,EAAOnB,IAAI,UAAWzoB,KAAK65P,gBAAiB75P,MAEhD,eACI,MAAM84P,EAAU94P,KAAK84P,QACrB94P,KAAK84P,QAAU,GACXA,GACAA,EAAQ3tN,QAASvhB,IACb5pB,KAAKs5P,oBAAoB1vO,GACzBA,EAAOhM,WAInB,mBAAmB2X,GACf,MAAMujO,EAAU94P,KAAK84P,QACrB,IAAK,IAAI77P,EAAI,EAAGyB,EAAIo6P,EAAQn3P,OAAQ1E,EAAIyB,EAAGzB,GAAK,EAC5C67P,EAAQ77P,GAAG0C,QAAQ+B,OAAS6zB,EAGpC,YAAYh0B,EAAMirP,GACd,MAAM5yL,EAAO55D,KAAK+3O,SAASlG,KACrBlyO,EAAU,CACZg5P,IAAI,EACJ3E,OAAQh0P,KAAKm4E,KAEbq0K,EACA5yL,EAAKp3C,KAAK,CAACjhB,EAAM,UAAWirP,EAAQ7sP,GAGpCi6D,EAAK78B,WAAW,CAACx7B,EAAM,UAAW5B,GAG1C,WAAWiqB,EAAQ4I,EAAUjQ,GACzB,MAAMmsH,EAAO9kH,EAAOjqB,QAAQ+uI,KACtBhtI,EAAQkoB,EAAOjqB,QAAQ+B,MAGvB03P,EAFWp5P,KAAK+3O,SACAlG,KACAknB,cAChB59O,EAAOi+O,EAAS13P,EAAQ,IAAM6gB,EAAKw3O,aACnCpsP,EAAOyrP,EAAS13P,EAAQ,IAAM6gB,EAAKy3O,aACnCY,EAAa56P,KAAKL,QAAQi7P,WAOhC,OANI9yP,KAAKinC,IAAIvc,EAASk8G,GAAQvzH,EAAKuzH,IAASksH,EACxCpoO,EAASk8G,GAAQvzH,EAAKuzH,GAEjB5mI,KAAKinC,IAAIvc,EAASk8G,GAAQ/gI,EAAK+gI,IAASksH,IAC7CpoO,EAASk8G,GAAQ/gI,EAAK+gI,IAEnBl8G,EAEX,kBAAiB,OAAE5I,EAAM,EAAE/b,IACvB,MAAM09M,EAAQvrN,KAAKurN,MACb5rN,EAAUK,KAAKL,QACfmyO,EAAW9xO,KAAK+3O,SAChB8jB,EAAWl8P,EAAQ6sP,OACnB99G,EAAO9kH,EAAOjqB,QAAQ+uI,KACtBhtI,EAAQkoB,EAAOjqB,QAAQ+B,MAAQ,EAC/B6gB,EAAOviB,KAAK0rP,aAAa79O,GACzBs5B,EAAMnnC,KAAKkuE,eAAergE,GAC1B6tH,EAAS6vF,EAAM11J,WAAW1uB,EAAIla,QAASka,EAAIja,SAC3CsF,EAAWxyB,KAAK87P,WAAWlyO,EAAQ8xG,EAAOj0H,QAAS8a,GACnD62O,EAAW,EAAUlyM,UAAUlnD,KAAKo5P,UAC1C,IAAIG,EAASH,EAAS13P,GAClBg6P,EAAatC,EAAS13P,EAAQ,GAElC,MAAMq6P,EAAajqB,EAASiqB,WACtBC,EAAalqB,EAASkqB,WAC5B,IAAIC,GAAqB,EACrBC,GAAqB,EA2BzB,GA1BK3C,EAYc,IAAV73P,EACDs6P,EAAWjnM,cAAcwkM,IACzBH,EAAS7pP,QACTvP,KAAKm8P,oBAAoB,GACzBF,GAAqB,IAGrB1C,EAAO7qH,GAAQl8G,EAASk8G,GACxBwtH,GAAqB,GAIzB3C,EAAO7qH,GAAQl8G,EAASk8G,IAvBxB6qH,EAASznB,EAASioB,aAAahuM,SAC/BwtM,EAAO7qH,GAAQl8G,EAASk8G,GACpBstH,EAAWjnM,cAAcwkM,GACzB0C,GAAqB,GAGrB7C,EAAStmP,QAAQymP,GACjBv5P,KAAKm8P,mBAAmB,GACxBD,GAAqB,IAiBL,mBAAbL,GAA2BE,EAAY,CAC9C,GAAIE,EAAoB,CACpB,MAAMG,EAAuB75O,EAAKw3O,aAAatyP,QAC/C20P,EAAqB1tH,GAAQl8G,EAASk8G,GACtC,MAAMqrH,EAAe,EAAY38P,KAAKy+P,EAAU/pB,EAAUsqB,EAAsBL,EAAYjqB,EAASuqB,cAAgBN,EAAWjqO,UAAW,SAAUggN,EAAU9xO,MAC/JA,KAAKs8P,YAAY,SAAUvC,GAE3BmC,GACAl8P,KAAKs8P,YAAY,SAAU/5O,EAAKg6O,iBAIxC,MAAMC,EAAa1qB,EAAS0qB,WACtBC,EAAa3qB,EAAS2qB,WAC5B,IAAIC,GAAqB,EACrBC,GAAqB,EAyBzB,GAxBKjB,EAWIh6P,IAAU03P,EAASz3P,OAAS,EAC7B86P,EAAW1nM,cAAc2mM,IACzBtC,EAASluP,MACTwxP,GAAqB,IAGrBhB,EAAWhtH,GAAQl8G,EAASk8G,GAC5BiuH,GAAqB,GAIzBjB,EAAWhtH,GAAQl8G,EAASk8G,IArB5BgtH,EAAa5pB,EAASkoB,aAAajuM,SACnC2vM,EAAWhtH,GAAQl8G,EAASk8G,GACxB+tH,EAAW1nM,cAAc2mM,GACzBgB,GAAqB,GAGrBtD,EAAS52P,KAAKk5P,GACdiB,GAAqB,IAgBL,mBAAbd,GAA2BW,EAAY,CAC9C,GAAIE,EAAoB,CACpB,MAAME,EAAuBr6O,EAAKy3O,aAAavyP,QAC/Cm1P,EAAqBluH,GAAQl8G,EAASk8G,GACtC,MAAMsrH,EAAe,EAAY58P,KAAKy+P,EAAU/pB,EAAU8qB,EAAsBJ,EAAY1qB,EAAS+qB,cAAgBL,EAAW1qO,UAAW,SAAUggN,EAAU9xO,MAC/JA,KAAKs8P,YAAY,SAAUtC,GAE3B2C,GACA38P,KAAKs8P,YAAY,SAAU/5O,EAAKu6O,iBAGnC,GAAMnmM,YAAYyiM,EAAUp5P,KAAKo5P,WAClCp5P,KAAK+3O,SAASlG,KAAKkrB,YAAY3D,EAAU,CAAET,IAAI,EAAM3E,OAAQh0P,KAAKm4E,MAEtEn4E,KAAK47P,aAAahyO,EAAQ2vO,EAAQmC,EAAY,GACzC/7P,EAAQopB,iBACT+oN,EAASuoB,gBAAgBlzN,EAAKu0F,EAAOnpF,EAAGmpF,EAAOlpF,GAGvD,gBAAe,OAAE5oB,EAAM,EAAE/b,IACrB,MAAMlO,EAAUK,KAAKL,QACfm5P,EAAU94P,KAAK84P,QACfhnB,EAAW9xO,KAAK+3O,SAChBr2O,EAAQkoB,EAAOjqB,QAAQ+B,MAC7B,GAAKR,MAAMD,QAAQ63P,GAAnB,CAGA,IAAK,IAAI77P,EAAI,EAAGyB,EAAIo6P,EAAQn3P,OAAQ1E,EAAIyB,EAAGzB,GAAK,EACxCA,IAAMyE,GACNo3P,EAAQ77P,GAAGyoB,OAWnB,GARA1lB,KAAK6tB,QACL7tB,KAAKwrP,aAAa39O,EAAG,CACjBksP,aAAcjoB,EAASioB,aAAatyP,QACpCuyP,aAAcloB,EAASkoB,aAAavyP,QACpC80P,gBAAiB,EAAUr1M,UAAUlnD,KAAK6xO,KAAKrvN,KAAK,CAAC,SAAU,YAC/Ds6O,gBAAiB,EAAU51M,UAAUlnD,KAAK6xO,KAAKrvN,KAAK,CAAC,SAAU,cAEnExiB,KAAK6xO,KAAKukB,WAAW,eAAgB,CAAEuC,IAAI,EAAM3E,OAAQh0P,KAAKm4E,OACzDx4E,EAAQopB,gBAAiB,CAC1B,MAAMgjO,EAAkB/rP,KAAKkuE,eAAergE,GACtC6tH,EAAS17H,KAAKurN,MAAM11J,WAAWk2L,EAAgB9+N,QAAS8+N,EAAgB7+N,SAC9E4kN,EAASooB,gBAAgBnO,EAAiBrwH,EAAOnpF,EAAGmpF,EAAOlpF,KAGnE,iBAAgB,EAAE3kC,IACd,MAAMlO,EAAUK,KAAKL,QACfmyO,EAAW9xO,KAAK+3O,SAClBp4O,EAAQ26P,oBACRxoB,EAASyoB,8BAA8B,CAAE5B,IAAI,EAAM3E,OAAQh0P,KAAKm4E,MAEpE,MAAM4zK,EAAkB/rP,KAAKkuE,eAAergE,GACtC6tH,EAAS17H,KAAKurN,MAAM11J,WAAWk2L,EAAgB9+N,QAAS8+N,EAAgB7+N,SAC9EltB,KAAKb,SACLa,KAAK8tB,OACL9tB,KAAK6xO,KAAKwkB,UAAU,eAAgB,CAAEsC,IAAI,EAAM3E,OAAQh0P,KAAKm4E,MACxDx4E,EAAQopB,iBACT+oN,EAAS2oB,cAAc1O,EAAiBrwH,EAAOnpF,EAAGmpF,EAAOlpF,GAE7Ds/L,EAAS4oB,gBAAgB3O,GACzBpsP,EAAQg7P,WAAah7P,EAAQg7P,UAAU,CAAE/gM,KAAMk4K,EAASD,KAAMC,aAElE,aAAaloN,EAAQ2vO,EAAQmC,EAAYvzN,EAAS,GAC9C,MAAMsU,EAAYz8C,KAAKL,QAAQ88C,WAAa,EACtC60I,EAAWxpL,KAAKinC,IAAIwqN,EAAOhnN,EAAImpN,EAAWnpN,GAAKkK,EAC/C6e,EAAaxzD,KAAKinC,IAAIwqN,EAAO/mN,EAAIkpN,EAAWlpN,GAAKiK,EACvD,GAAI60I,GAAYh2H,EAAY,CACxB,MAAM0hM,EAAc,IAAI,GAAKzD,EAAQmC,GAErC,GADesB,EAAYr7P,SACd3B,KAAKL,QAAQ65H,UACtB5vG,EAAOlE,WAEN,CACD,MAAM8M,EAAWwqO,EAAYtiM,YACvBg0E,EAAO4iD,EAAW,IAAM,IAC9B9+J,EAASk8G,IAASvmG,GAAU,EAC5B,MAAMusB,EAAQsoM,EAAY3hM,SAAS1G,YAAY,IAAI,GAAM,EAAG,IAC5D/qC,EAAOsuO,eAAe1lO,EAAS+f,EAAG/f,EAASggB,EAAGkiB,EAAO10D,KAAK+3O,UAC1DnuN,EAAOpE,OACPoE,EAAOjqB,QAAQ+uI,KAAOA,QAI1B9kH,EAAOlE,OAGf,WACI1lB,KAAKk5P,iBAGFL,GA0ER,KAAa,GAAW,KADduC,OAxET,cAAqB,GACjB,YAAYz7P,GACRg/E,QACA3+E,KAAKL,QAAUA,EACfK,KAAKb,SACLa,KAAKqzP,eAAe,CAChB7iG,UAAW,cACXC,WAAY,gBAGpB,SACIzwJ,KAAK8xB,UAAY,GAAK/sB,cAAc,QAAQ,GAC5C,MAAM6K,EAAQ5P,KAAKL,QAAQiQ,MAC3B,GAAqB,mBAAVA,EAAsB,CAC7B,MAAMs8B,EAAW2sN,GAAS/F,cAC1B9yP,KAAKiwP,SAAStyP,OAAO+rD,OAAO/rD,OAAO+rD,OAAO,GAAIxd,EAASt8B,OAAQA,EAAM5P,aAGrEA,KAAKiwP,SAASrgP,GAElB5P,KAAKk9B,SAASl9B,KAAKmzP,gBAAgB,sBAEvC,eAAe5gN,EAAGC,EAAGkiB,EAAO7nC,GACxB,MAAM9tB,EAAI8tB,EAAKowO,gBAAgB,IAAI,GAAM1qN,EAAGC,KAAO,IAAI,GAAMD,EAAGC,GAChE,IAAI4kB,EAAS,EAAIgnE,kBAAkBhrE,UAAUr0D,EAAEwzC,EAAGxzC,EAAEyzC,GACpD,GAAKzzC,EAAEy1D,OAAO,CAAEjiB,IAAGC,MASf4kB,EAASA,EAAO7D,OAAOmB,OATF,CAErB,IAAIgC,EADS,IAAI,GAAKnkB,EAAGC,EAAGzzC,EAAEwzC,EAAGxzC,EAAEyzC,GACpB6oB,SAAS1G,YAAY,IAAI,GAAM,EAAG,IACrC,IAAR+B,IACAA,GAAO,IAEXU,EAASA,EAAO7D,OAAOmD,GAK3B12D,KAAKiwP,SAAS,CACVz8M,UAAW,EAAIyqF,wBAAwB7mE,GACvCu5C,OAAQj8C,EAAQ,KAAQ,EAAI,aAAe,eAGnD,YAAYvtB,GACJnnC,KAAKL,QAAQs8C,MAAM9U,KAGvBnnC,KAAKkpB,QAAQ,SAAU,CAAErb,EAAGs5B,EAAKvd,OAAQ5pB,OACzCmnC,EAAIpe,kBACJoe,EAAIle,iBACJjpB,KAAKL,QAAQ4rN,MAAM1+L,KAAKm+N,mBACxBhrP,KAAKs7P,uBAAuB,CACxBlrG,UAAW,cACXE,UAAW,cACXD,QAAS,YACTE,SAAU,YACVgrG,YAAa,aACdp0N,EAAI5kB,OAEX,YAAY4kB,GACRnnC,KAAKk8E,KAAK,WAAY,CAAEruE,EAAGs5B,EAAKvd,OAAQ5pB,OAE5C,UAAUmnC,GACNnnC,KAAKk8E,KAAK,UAAW,CAAEruE,EAAGs5B,EAAKvd,OAAQ5pB,OACvCA,KAAKw7P,2BACLx7P,KAAKL,QAAQ4rN,MAAM1+L,KAAKwmO,iBAE5B,OACIrzP,KAAK8xB,UAAUxN,MAAMC,QAAU,GAEnC,OACIvkB,KAAK8xB,UAAUxN,MAAMC,QAAU,SAK3C,SAAWs0O,GACPA,EAASl2L,OAAO,CACZnlE,KAAM,WACNi/C,UAAW,GACX+8E,UAAW,GACXohI,WAAY,GACZ7xO,iBAAiB,EACjBuxO,oBAAoB,EACpB1qP,MAAO,CACHyhB,MAAO,GACPoC,OAAQ,EACR8e,GAAI,GACJC,GAAI,EACJusD,GAAI,EACJC,GAAI,EACJpvD,KAAM,OACNC,OAAQ,OACR,eAAgB,GAEpBgwJ,aAAelgM,GAAY,IAAIk5P,EAASuC,OAAOz7P,GAC/C6sP,OAAQ,KApBhB,CAsBG,KAAa,GAAW,KC3X3B,MAAM,WAAe,GAAUyK,SAC3B,WACI,OAAOj3P,KAAKL,QAAQ4B,KAExB,WACI,EAAI27B,SAASl9B,KAAK8xB,UAAW9xB,KAAKmzP,gBAAgB,aAAanzP,KAAKuB,gBACpEvB,KAAKk9P,YAAW,GAChBl9P,KAAKyrD,SAET,SACI,MAAMlqD,EAAOvB,KAAKuB,KAWlB,OAViBvB,KAAK+3O,SACQolB,gBAAgB57P,IAE1CvB,KAAKo9P,eACLp9P,KAAKq9P,aACLr9P,KAAK8xB,UAAUxN,MAAMC,QAAU,IAG/BvkB,KAAK8xB,UAAUxN,MAAMC,QAAU,OAE5BvkB,KAEX,eACI,MAAM4N,EAAa5N,KAAK4N,WACxB,IAAKA,EACD,OAEJ,MAAM0vP,EAAa1vP,EAAW4+O,OAC9B,IAAK8Q,EACD,OAEJ,MAAM/7P,EAAOvB,KAAKuB,KACZuwO,EAAW9xO,KAAK+3O,SAChBp4O,EAAUK,KAAKL,QACf6yB,EAAWs/M,EAASyrB,kBAAkBh8P,GACtCi8P,EAAe1rB,EAASD,KAAKrvN,KAAK,CAACjhB,EAAM,WAC/C+7P,EAAWp4P,aAAa,YAAa,aAAastB,EAAS+f,MAAM/f,EAASggB,MAC1E,MAAMirN,EAAcD,EACd79P,EAAQ+9P,kBACR/9P,EAAQg+P,mBACVF,GACA9/P,OAAOyR,KAAKquP,GAAatyN,QAASykM,IAC9B0tB,EAAWp4P,aAAa0qO,EAAU6tB,EAAY7tB,MAI1D,aACI,MAAMhiO,EAAa5N,KAAK4N,WACxB,IAAKA,EACD,OAEJ,MAAMgwP,EAAWhwP,EAAW6tI,KAC5B,IAAKmiH,EACD,OAEJ,MAAMr8P,EAAOvB,KAAKuB,KACZuwO,EAAW9xO,KAAK+3O,SAChB4f,EAAe7lB,EAASqrB,gBAAgB57P,GAC9C,GAAIo2P,EAAc,CACd,MAAMkG,EAAelG,EAAa9lB,KAC5BmG,EAASlG,EAASgsB,kBAAkBv8P,GAC1C,IAIIg6D,EACA7G,EACAjB,EANAh9B,EAAUz2B,KAAKL,QAAQo+P,aAAe,EACrC7hM,OAAO9lC,SAASK,KACjBA,EAAU,GAKVkhO,EAAarf,cAAcN,IAC3Bz8K,EAAOo8L,EAAa/6H,UACpBloE,EAAQ,EACRjB,EAAS8H,EAAKb,cAGda,EAAOo8L,EAAahL,0BAA0B3U,GAC9CtjL,EAAQmpM,EAAanR,WACrBj5L,EAAS8H,EAAKb,YACVhG,GACAjB,EAAOF,QAAQmB,EAAOmpM,EAAajhI,UAAUliE,cAGrDa,EAAKyqC,QAAQvvE,GACb,EAAIxjB,KAAK2qP,EAAU,CACfrrN,GAAIgpB,EAAKlqC,MAAQ,EACjBmhB,GAAI+oB,EAAK9nC,OAAS,EAClBpC,MAAOkqC,EAAKlqC,MACZoC,OAAQ8nC,EAAK9nC,OACb+f,UAAW,aAAaigB,EAAOlhB,MAAMkhB,EAAOjhB,aAAakiB,QAIrE,WAAW9uB,GACP,GAAI5lC,KAAK4N,WAAY,CACjB,MAAMpH,EAAOxG,KAAK4N,WAAW6tI,KACzBj1I,IACAA,EAAK8d,MAAMC,QAAUqhB,EAAU,GAAK,SAIhD,YAAYuB,GACJnnC,KAAKi8C,MAAM9U,KAGfA,EAAIpe,kBACJoe,EAAIle,iBACJjpB,KAAKurN,MAAM1+L,KAAKm+N,mBACZhrP,KAAKL,QAAQozP,gBACb/yP,KAAKs7P,uBAAuBt7P,KAAKL,QAAQozP,gBAE7C/yP,KAAK6tB,QACL7tB,KAAKk9P,WAAWl9P,KAAKL,QAAQq+P,cAC7Bh+P,KAAK6xO,KAAKukB,WAAW,cAAe,CAChCuC,IAAI,EACJ3E,OAAQh0P,KAAKm4E,OAGrB,YAAYq0K,GACR,MAAMjrP,EAAOvB,KAAKuB,KACZswO,EAAO7xO,KAAK6xO,KACd2a,EACA3a,EAAKrvN,KAAK,CAACjhB,EAAM,UAAWirP,EAAQ,CAChCyR,SAAS,EACTtF,IAAI,EACJ3E,OAAQh0P,KAAKm4E,MAIjB05J,EAAK90M,WAAW,CAACx7B,EAAM,UAAW,CAC9Bo3P,IAAI,EACJ3E,OAAQh0P,KAAKm4E,MAIzB,YAAYhxC,GACR,MAAM+2N,EAAel+P,KAAKuB,KACpBuwO,EAAW9xO,KAAK+3O,SAChB4f,EAAe7lB,EAASqrB,gBAAgBe,GAC9C,GAAoB,MAAhBvG,EACA,OAEJ,MAAM9pP,EAAI7N,KAAKkuE,eAAe/mC,GACxB02N,EAAelG,EAAa9lB,KAC5B+lB,EAAiB9lB,EAASgsB,kBAAkBI,GAClD,IAAIxiI,EAAS17H,KAAKurN,MAAM53G,cAAc9lG,EAAEof,QAASpf,EAAEqf,SACnD,MAAMixO,EAASn+P,KAAKL,QAAQy+P,KAC5B,GAAsB,mBAAXD,EAAuB,CAC9B,MAAMtsP,EAAM,EAAYzU,KAAK+gQ,EAAQrsB,EAAUp2G,EAAQi8H,EAAcC,EAAgBsG,EAAcpsB,EAAU9xO,MAC7G07H,EAAS,GAAMn9H,OAAOsT,GAE1B,GAAI7R,KAAKL,QAAQq+P,aACb,GAAIrG,EAAarf,cAAcsf,GAAiB,CAC5C,MAAMyG,EAAoB1G,EAAasF,gBAAgBvhI,GACnD2iI,IACA3iI,EAAS2iI,OAGZ,CACD,MAAM9iM,EAAOo8L,EAAahL,0BAA0BiL,GAC9CljM,EAAQmpM,EAAanR,WACrB94L,EAASiqM,EAAajhI,UAAUliE,YAChC4jM,EAAgB5iI,EAAOj0H,QAAQ8rD,OAAOmB,EAAOd,GAC9C2H,EAAKxG,cAAcupM,KACpB5iI,EAASngE,EACJutC,uBAAuBw1J,GACvB/qM,QAAQmB,EAAOd,IAIhC,IAAI44L,EACJ,MAAMqP,EAAW77P,KAAKL,QAAQ6sP,OACN,mBAAbqP,IACPrP,EAAS,EAAYpvP,KAAKy+P,EAAU/pB,EAAUp2G,EAAQi8H,EAAcC,EAAgBsG,EAAcpsB,EAAU9xO,OAEhHA,KAAKs8P,YAAY9P,GACjBxsP,KAAKyrD,SAGT,UAAUtkB,GACNnnC,KAAKurN,MAAM1+L,KAAKwmO,iBAChBrzP,KAAKw7P,2BACLx7P,KAAK8tB,OACL9tB,KAAKk9P,YAAW,GAChB,MAAMprB,EAAW9xO,KAAK+3O,SAClB/3O,KAAKL,QAAQ26P,oBACbxoB,EAASyoB,8BAA8B,CAAE5B,IAAI,EAAM3E,OAAQh0P,KAAKm4E,MAEpEn4E,KAAK6xO,KAAKwkB,UAAU,cAAe,CAAEsC,IAAI,EAAM3E,OAAQh0P,KAAKm4E,MAEhE,aACI,MAAMq0K,EAASxsP,KAAKL,QAAQ28P,YACxB9P,GACAxsP,KAAKs8P,aAAuB,IAAX9P,OAAkBtqP,EAAYsqP,GAEnDxsP,KAAKyrD,WAwEV,KAAW,GAAS,KApEZkX,OAAO,CACV8iB,QAAS,IACT63C,OAAQ,CACJ,CACI73C,QAAS,SACThgF,SAAU,SACVmK,MAAO,CACH+gG,OAAQ,YAGhB,CACIlrB,QAAS,OACThgF,SAAU,OACVmK,MAAO,CACH,iBAAkB,OAClBggC,KAAM,OACNC,OAAQ,UACR,mBAAoB,MACpBkvD,GAAI,EACJC,GAAI,KAIhB11E,OAAQ,CACJknI,UAAW,cACXC,WAAY,cACZ4qG,SAAU,cAEdtI,eAAgB,CACZ3iG,UAAW,cACXE,UAAW,cACXD,QAAS,YACTE,SAAU,YACVgrG,YAAa,aAEjBmC,kBAAmB,CACf,eAAgB,EAChB7tN,OAAQ,UACRD,KAAM,UACN7xC,EAAG,GAEP4/P,mBAAoB,CAChB,eAAgB,EAChB9tN,OAAQ,UACRD,KAAM,UACN7xC,EAAG,GAEPggQ,YAAa,EACbnD,WAAY,GACZ0B,aAAa,EACb0B,cAAc,EACd1D,oBAAoB,EACpB9N,OAAQ,GACR,KAAKn1N,EAAKsgO,EAAcC,EAAgBsG,EAAcpsB,EAAUysB,GAC5D,MAAM3D,EAAa2D,EAAS5+P,QAAQi7P,YAAc,EAC5C4D,EAA4B,WAAjBN,EACXO,EAAWD,EAAW,GAAK,EAC3B3qM,EAAM7zD,KAAK6xO,KAAK6sB,YAAYD,IAC9Bz+P,KAAKu9P,kBAAkBiB,EAAW,SAAW,UAOjD,OANI3qM,IACI/rD,KAAKinC,IAAI8kB,EAAIthB,EAAIlb,EAAIkb,GAAKqoN,IAC1BvjO,EAAIkb,EAAIshB,EAAIthB,GACZzqC,KAAKinC,IAAI8kB,EAAIrhB,EAAInb,EAAImb,GAAKooN,IAC1BvjO,EAAImb,EAAIqhB,EAAIrhB,IAEbnb,KAIZ,MAAMsnO,GAAe,GAAOlR,OAAO,CACtCjwP,KAAM,gBACN+D,KAAM,WAEGq9P,GAAe,GAAOnR,OAAO,CACtCjwP,KAAM,gBACN+D,KAAM,WCrRV,IAAI,GAAkC,SAAUvC,EAAG6O,GAC/C,IAAI1P,EAAI,GACR,IAAK,IAAIY,KAAKC,EAAOrB,OAAOkB,UAAUC,eAAe1B,KAAK4B,EAAGD,IAAM8O,EAAEpK,QAAQ1E,GAAK,IAC9EZ,EAAEY,GAAKC,EAAED,IACb,GAAS,MAALC,GAAqD,mBAAjCrB,OAAOsxG,sBACtB,KAAIhyG,EAAI,EAAb,IAAgB8B,EAAIpB,OAAOsxG,sBAAsBjwG,GAAI/B,EAAI8B,EAAE4C,OAAQ1E,IAC3D4Q,EAAEpK,QAAQ1E,EAAE9B,IAAM,GAAKU,OAAOkB,UAAUwxD,qBAAqBjzD,KAAK4B,EAAGD,EAAE9B,MACvEkB,EAAEY,EAAE9B,IAAM+B,EAAED,EAAE9B,KAE1B,OAAOkB,GAKX,MAAM,WAAkB,GAAU84P,SAC9B,WACI,OAAOj3P,KAAKL,QAAQ4B,KAExB,YACI,OAAOvB,KAAKL,QAAQw8D,MAExB,OACI,GAAIn8D,KAAKL,QAAQiQ,MAAO,CACpB,MAAMkkI,EAAK9zI,KAAKL,QAAQiQ,OAAS6qE,MAAOrpE,GAAc0iI,EAAIlkI,EAAQ,GAAOkkI,EAAI,CAAC,UAC9E9zI,KAAKiwP,SAASrgP,EAAO5P,KAAK8xB,WACtB1gB,GACA,EAAI8rB,SAASl9B,KAAK8xB,UAAW1gB,IAIzC,WACI,EAAI8rB,SAASl9B,KAAK8xB,UAAW9xB,KAAKmzP,gBAAgB,aAAanzP,KAAKuB,mBACpEvB,KAAKyrD,SAET,SACI,MAAM0Q,EAAQn8D,KAAKm8D,MACb21K,EAAW9xO,KAAK+3O,SAChBxC,EAAUzD,EAASumB,kBAAkBl8L,GACrC3pC,EAAW+iN,EAAUA,EAAQj0O,MAAQwwO,EAAS+sB,gBAAgB1iM,GAC9DzH,EAAS6gL,GAAWA,EAAQl6K,SAAS1G,YAAY,IAAI,GAAM,EAAG,KAAQ,EAC5E,IAAKniC,EACD,OAAOxyB,KAEX,MAAMo3D,EAAS,EAAIgnE,kBACdhrE,UAAU5gC,EAAS+f,EAAG/f,EAASggB,GAC/B+gB,OAAOmB,GAEZ,OADA,EAAIlhB,UAAUxzC,KAAK8xB,UAAWslC,EAAQ,CAAEmlI,UAAU,IAC3Cv8L,KAEX,YAAYmnC,GACR,GAAInnC,KAAKi8C,MAAM9U,GACX,OAEJA,EAAIpe,kBACJoe,EAAIle,iBACJ,MAAM6oN,EAAW9xO,KAAK+3O,SACtB,GAAIjG,EAAS8jB,IAAI,oBAAqB,CAClC9jB,EAASD,KAAKukB,WAAW,iBAAkB,CACvCuC,IAAI,EACJ3E,OAAQh0P,KAAKm4E,MAEjB,MAAMujD,EAAS17H,KAAKurN,MAAM11J,WAAW1uB,EAAIla,QAASka,EAAIja,SAChD3K,EAAOuvN,EAASgtB,yBAAyB9+P,KAAKuB,KAAM,CACtDgxC,EAAGmpF,EAAOnpF,EACVC,EAAGkpF,EAAOlpF,EACV7yC,QAAS,CACLq0P,OAAQh0P,KAAKm4E,OAGrBn4E,KAAK+3O,SAASyT,aAAarkN,EAAK5kB,GAChCviB,KAAKs7P,uBAAuBt7P,KAAKL,QAAQozP,eAAgB5rN,EAAI5kB,MAC7DuvN,EAASvmB,MAAM1+L,KAAKm+N,mBACpBhrP,KAAK8xB,UAAUxN,MAAM25K,cAAgB,OAEzCj+L,KAAK6tB,QAET,YAAYsZ,GACR,MAAMt5B,EAAI7N,KAAKkuE,eAAe/mC,GACxBu0F,EAAS17H,KAAKurN,MAAM11J,WAAWhoD,EAAEof,QAASpf,EAAEqf,SAClDltB,KAAK+3O,SAASgnB,YAAYlxP,EAAG6tH,EAAOnpF,EAAGmpF,EAAOlpF,GAC9CxyC,KAAKyrD,SAET,UAAUtkB,GACNnnC,KAAKw7P,2BACL,MAAM3tP,EAAI7N,KAAKkuE,eAAe/mC,GACxB2qM,EAAW9xO,KAAK+3O,SAChBr8G,EAAS17H,KAAKurN,MAAM11J,WAAWhoD,EAAEof,QAASpf,EAAEqf,SAClD4kN,EAASktB,UAAUnxP,EAAG6tH,EAAOnpF,EAAGmpF,EAAOlpF,GACvCxyC,KAAKurN,MAAM1+L,KAAKwmO,iBAChBrzP,KAAK8tB,OACL9tB,KAAK8xB,UAAUxN,MAAM25K,cAAgB,GACrC6zC,EAASD,KAAKwkB,UAAU,iBAAkB,CACtCsC,IAAI,EACJ3E,OAAQh0P,KAAKm4E,QAoBtB,KAAc,GAAY,KAffxV,OAAO,CACb8iB,QAAS,OACT2xK,cAAc,EACd9tO,OAAQ,CACJknI,UAAW,cACXC,WAAY,eAEhBsiG,eAAgB,CACZ3iG,UAAW,cACXE,UAAW,cACXD,QAAS,YACTE,SAAU,YACVgrG,YAAa,eAIlB,MAAM0D,GAAkB,GAAUxR,OAAO,CAC5CjwP,KAAM,mBACN+D,KAAM,SACN46D,MAAO,EACPvsD,MAAO,CACHrS,EAAG,uBACHqyC,KAAM,OACNC,OAAQ,OACR,eAAgB,EAChB8gE,OAAQ,UAGHuuJ,GAAkB,GAAUzR,OAAO,CAC5CjwP,KAAM,mBACN+D,KAAM,SACN46D,MAAO,EACPvsD,MAAO,CACHrS,EAAG,wBACHqyC,KAAM,OACNC,OAAQ,OACR,eAAgB,EAChB8gE,OAAQ,UCpIT,MAAM,WAAmB,GAAUsmJ,SACtC,cACIt4K,SAASl4E,WACTzG,KAAKm/P,YAAc,EACnBn/P,KAAK6wD,SAAW,GAEpB,SAKI,OAJA7wD,KAAK+E,gBACL/E,KAAKyrD,SACLzrD,KAAKo/P,YACLp/P,KAAKs7P,uBAAuBt7P,KAAKL,QAAQozP,gBAClC/yP,KAEX,gBACI,MAAM,KAAE6xO,GAAS7xO,KACX29B,EAAa,CACf39B,KAAKmzP,iBAAmBthB,EAAKptK,SAAW,OAAS,QAA5B,gBACrBzkE,KAAKmzP,gBAAgB,qBAEzBnzP,KAAKq/P,OAAS,GAAUt6P,cAAc,OAAO,GAC7C/E,KAAKk9B,SAASS,EAAY39B,KAAKq/P,QAC/Br/P,KAAKq/P,OAAOC,gBAAkB,OAC9Bt/P,KAAK8xB,UAAU1sB,YAAYpF,KAAKq/P,QAEpC,SACI,MAAM,MAAE9zC,EAAK,KAAEsmB,EAAI,OAAEwtB,GAAWr/P,KAC1BskB,EAAQ+6O,EAAO/6O,MAErB,IAAI+S,EAAM,IAAI,GACV/F,EAAW,GACf,GAAIugN,EAAKhlD,SACLx1J,EAAMw6M,EAAKj1G,UAAUnpE,OACrBniC,EAAWugN,EAAKj1L,OAAOvrB,MAAQ,OAE9B,GAAIwgN,EAAKptK,SAAU,CACpB,MAAM52D,EAAI7N,KAAKL,QAAQ6oB,MACjB9gB,EAASmG,EAAEnG,OACXvH,EAASuH,EAAOgzI,cAEtB,GADoBv6I,GAAU,EAAIy9B,SAASz9B,EAAQH,KAAKmzP,gBAAgB,eACvD,CACb,MAAMzxP,EAAQvB,EAAO8E,aAAa,eAAiB,IACnDjF,KAAKm/P,WAAazrO,SAAShyB,EAAO,IAClC,MAAM01D,EAASj3D,EAAO8E,aAAa,cAC7B,YAAEw6H,GAAgB,EAAIzB,qBAAqB5mE,GACjD//B,EAAM,IAAI,GAAMooG,EAAY9kE,GAAI8kE,EAAY7kE,IAC5CtpC,EAAW,EAAIsrG,QAAQl1H,GAAQ2pB,UAE9B,CACD,IAAKrxB,KAAKL,QAAQ4/P,aACd,OAAOv/P,KAEXq3B,EAAMk0L,EAAM53G,cAAc,GAAMp1G,OAAOsP,EAAEof,QAASpf,EAAEqf,UACpD,MACM3vB,EADOyC,KAAK+3O,SACH7oM,KAAK2sB,mBAAmBxkC,GACvCr3B,KAAK6wD,SAAWtzD,GAGxB85B,EAAMk0L,EAAMqpC,aAAav9N,GACzB/S,EAAMiS,KAAUc,EAAIkb,EAAP,KACbjuB,EAAMrT,IAASomB,EAAImb,EAAP,KACZluB,EAAMgN,SAAcA,EAAH,KAEjB,MAAMzM,EAAQ0mM,EAAM1mM,QACpBP,EAAMkvB,UAAY,SAAS3uB,EAAM6uC,OAAO7uC,EAAM8uC,4BAE9C,MAAM/jD,EAAQ5P,KAAKL,QAAQiQ,MAC3B0U,EAAMw8F,SAAclxG,EAAMkxG,SAAT,KACjBx8F,EAAMy8F,WAAanxG,EAAMmxG,WACzBz8F,EAAMuyF,MAAQjnG,EAAMinG,MACpBvyF,EAAMyqG,gBAAkBn/G,EAAMm/G,gBAE9B,MAAMvlH,EAAUxJ,KAAKL,QAAQ6J,QAC7B,IAAIxE,EAQJ,MAPuB,mBAAZwE,IACPxE,EAAO,EAAY5H,KAAKoM,EAASxJ,KAAK+3O,SAAU,CAC5ClG,KAAM7xO,KAAK6xO,KACXnwO,MAAO1B,KAAKm/P,cAGpBE,EAAOG,UAAYx6P,GAAQ,GACpBhF,KAEX,oBAAoB6N,GAChB,GAAIA,EAAEnG,SAAW1H,KAAKq/P,OAAQ,CAC1B,MAAMxtB,EAAO7xO,KAAK6xO,KACZ3zO,EAAQ8B,KAAKq/P,OAAOG,UAAUx3P,QAAQ,MAAO,KAAO,GAEpDy3P,EAAUz/P,KAAKL,QAAQ8/P,QACN,mBAAZA,GACP,EAAYriQ,KAAKqiQ,EAASz/P,KAAK+3O,SAAU,CACrClG,KAAM7xO,KAAK6xO,KACX3zO,QACAwD,MAAO1B,KAAKm/P,WACZtuM,SAAU7wD,KAAK6wD,WAIvBghL,EAAK6tB,WAAW7tB,EAAKptK,SAAW,cAAgB,eAChDzkE,KAAKw7P,4BAGb,WAAW3tP,GACPA,EAAEkb,kBAEN,YAAYlb,GACRA,EAAEkb,kBAEN,YACInJ,WAAW,KACP5f,KAAKq/P,OAAOxxO,QACZ7tB,KAAK2/P,eAGb,aACI,GAAI18P,OAAOq0L,aAAc,CACrB,MAAM/oI,EAAQzrD,SAASi1I,cACjBzwH,EAAYrkB,OAAOq0L,eACzB/oI,EAAMqxM,mBAAmB5/P,KAAKq/P,QAC9B/3O,EAAUiwK,kBACVjwK,EAAUu4O,SAAStxM,MAgB5B,KAAe,GAAa,KAXhBoU,OAAO,CACd8iB,QAAS,MACT2xK,cAAc,EACd9tO,OAAQ,CACJ+xO,SAAU,aACV7qG,UAAW,eAEfuiG,eAAgB,CACZviG,UAAW,yBAIvB,SAAWsvG,GACPA,EAAWC,WAAaD,EAAWrS,OAAO,CACtC79O,MAAO,CACHkxG,SAAU,GACVC,WAAY,+BACZlK,MAAO,OACPkY,gBAAiB,QAErBvlH,QAAO,EAAC,KAAEqoO,KACCA,EAAK5+N,KAAK,aAErB,SAAQ,KAAE4+N,EAAI,MAAE3zO,IACZ2zO,EAAK5+N,KAAK,YAAa/U,MAG/B4hQ,EAAWE,WAAaF,EAAWrS,OAAO,CACtC79O,MAAO,CACHkxG,SAAU,GACVC,WAAY,+BACZlK,MAAO,OACPkY,gBAAiB,QAErBwwI,cAAc,EACd/1P,QAAO,EAAC,KAAEqoO,EAAI,MAAEnwO,MACG,IAAXA,EACO,GAEJmwO,EAAKrvN,KAAK,UAAU9gB,sBAE/B,SAAQ,KAAEmwO,EAAI,MAAE3zO,EAAK,MAAEwD,EAAK,SAAEmvD,IAC1B,MAAM+I,EAAOi4K,GACE,IAAXnwO,EACAk4D,EAAKqmM,YAAY,CACbztO,SAAU,CACNq+B,SAAUA,GAEdjhD,MAAO,CACHmoM,MAAO,CACH/yM,KAAM9G,MAMdA,EACA07D,EAAKp3C,KAAK,UAAU9gB,qBAA0BxD,GAExB,iBAAVwD,GACZk4D,EAAKsmM,cAAcx+P,MAhDvC,CAqDG,KAAe,GAAa,KChM/B,IAoBW,GACAy+P,GAgCA,GACAC,GAtDP,GAAkC,SAAUphQ,EAAG6O,GAC/C,IAAI1P,EAAI,GACR,IAAK,IAAIY,KAAKC,EAAOrB,OAAOkB,UAAUC,eAAe1B,KAAK4B,EAAGD,IAAM8O,EAAEpK,QAAQ1E,GAAK,IAC9EZ,EAAEY,GAAKC,EAAED,IACb,GAAS,MAALC,GAAqD,mBAAjCrB,OAAOsxG,sBACtB,KAAIhyG,EAAI,EAAb,IAAgB8B,EAAIpB,OAAOsxG,sBAAsBjwG,GAAI/B,EAAI8B,EAAE4C,OAAQ1E,IAC3D4Q,EAAEpK,QAAQ1E,EAAE9B,IAAM,GAAKU,OAAOkB,UAAUwxD,qBAAqBjzD,KAAK4B,EAAGD,EAAE9B,MACvEkB,EAAEY,EAAE9B,IAAM+B,EAAED,EAAE9B,KAE1B,OAAOkB,IAYAgiQ,GA+BR,KAAa,GAAW,KA9Bd1sB,QAAU,CACf4sB,SAAU,GACVn1O,OAAQ,GACR,gBAAiB,GAAOwtO,OACxB,cAAe,GAAWqH,YAE9BI,GAASzsB,SAAW,GAASn1O,OAAO,CAChCgD,KAAM,YACN,QAAQ/D,EAAMmC,GACV,GAAuB,mBAAZA,EACP,OAAOA,EAEX,IAAIQ,EAAS,GAAU82P,SACvB,MAAM,QAAE7nE,GAAYzvL,EAASq0O,EAAS,GAAOr0O,EAAS,CAAC,YACvD,GAAIyvL,EAAS,CACT,MAAMt4K,EAAO9W,KAAKlC,IAAIsxL,GACV,MAARt4K,EACA9W,KAAKk0O,WAAW9kD,EAAS,aAGzBjvL,EAAS2W,EAMjB,OAHmB,MAAfk9N,EAAOx2O,OACPw2O,EAAOx2O,KAAOA,GAEX2C,EAAOstP,OAAOrwP,KAAK+C,EAAQ6zO,MAG1CmsB,GAASzsB,SAASn9F,SAAS4pH,GAAS1sB,SAAS,IAGtC2sB,GAqCR,KAAa,GAAW,KApCd3sB,QAAU,CACf4sB,SAAU,GACVjH,SAAU,GACVr8K,SAAU,GACV7xD,OAAQ,GACR,gBAAiB,GAAOwtO,OACxB,gBAAiBiG,GACjB,gBAAiBC,GACjB,mBAAoBK,GACpB,mBAAoBC,GACpB,cAAe,GAAWc,YAE9BI,GAAS1sB,SAAW,GAASn1O,OAAO,CAChCgD,KAAM,YACN,QAAQ/D,EAAMmC,GACV,GAAuB,mBAAZA,EACP,OAAOA,EAEX,IAAIQ,EAAS,GAAU82P,SACvB,MAAM,QAAE7nE,GAAYzvL,EAASq0O,EAAS,GAAOr0O,EAAS,CAAC,YACvD,GAAIyvL,EAAS,CACT,MAAMt4K,EAAO9W,KAAKlC,IAAIsxL,GACV,MAARt4K,EACA9W,KAAKk0O,WAAW9kD,EAAS,aAGzBjvL,EAAS2W,EAMjB,OAHmB,MAAfk9N,EAAOx2O,OACPw2O,EAAOx2O,KAAOA,GAEX2C,EAAOstP,OAAOrwP,KAAK+C,EAAQ6zO,MAG1CosB,GAAS1sB,SAASn9F,SAAS6pH,GAAS3sB,SAAS,GCzF1C,MAAM,GAAS6sB,GAAiB,UAC1B,GAAMA,GAAiB,aACvB,GAASA,GAAiB,gBAC1B,GAAOA,GAAiB,cACxB,GAAQA,GAAiB,eACzB,GAAUA,GAAiB,WAC3Bp8J,GAAWo8J,GAAiB,YAC5Bl8J,GAAak8J,GAAiB,cAC9B,GAAcA,GAAiB,eAC5C,SAASA,GAAiB3jP,GACtB,OAAO,SAAUkQ,EAAMmrN,EAAQnkL,EAAKl0D,EAAU,IAC1C,MAAM47D,EAAO57D,EAAQ4zD,OACf1mC,EAAK8/N,0BAA0B3U,GAC/BnrN,EAAK8nO,iBAAiB3c,GACtB72O,EAASo6D,EAAK5+C,GACpBxb,EAAOoxC,GAAK,EAAU45I,oBAAoBxsL,EAAQ0zD,GAAIkI,EAAKlqC,OAC3DlwB,EAAOqxC,GAAK,EAAU25I,oBAAoBxsL,EAAQ2zD,GAAIiI,EAAK9nC,QAC3D,MAAMo+M,EAAOhlN,EAAKglN,KAClB,OAAOlyO,EAAQ4zD,OACTpyD,EAAOoyD,QAAQs+K,EAAK6a,WAAY7a,EAAKj1G,UAAUliE,aAC/Cv5D,GClBP,SAAS,GAAQuE,GACpB,OAAO,SAAUmnB,EAAMmrN,EAAQnkL,EAAKl0D,GAChC,GAAIk0D,aAAeo8C,QAAS,CACxB,MAAMswJ,EAAUvgQ,KAAKurN,MAAM39F,SAAS4oI,eAAe3iM,GACnD,IAAI2sM,EACJ,GAAID,EACA,GAAIA,EAAQjoB,cAAczkL,GAAM,CAE5B2sM,EAAWC,GAAeF,EADU,MAAnB5gQ,EAAQ+gQ,QAAkB/gQ,EAAQ+gQ,QAAU,YAI7DF,EAAWD,EAAQ5L,iBAAiB9gM,GAAK6G,iBAI7C8lM,EAAW,IAAI,GAEnB,OAAO96P,EAAGtI,KAAK4C,KAAM6sB,EAAMmrN,EAAQwoB,EAAU7gQ,GAEjD,OAAO+F,EAAGlC,MAAMxD,KAAMyG,YAGvB,SAASg6P,GAAe3uB,EAAU5zO,GACrC,MAAMgzL,EAAe,EAAUA,aAAahzL,GACtC6H,EAAuB,iBAAV7H,EAAqB20B,WAAW30B,GAASA,EAC5D,OAAIgzL,EACO4gD,EAAS+sB,gBAAgB94P,EAAM,KAEnC+rO,EAASt/F,iBAAiBzsI,GC7BrC,MAoCa46P,GAAO,IApCD,SAAU9zO,EAAMmrN,EAAQwoB,EAAU7gQ,GACjD,MAAM+0D,EAAQ7nC,EAAKglN,KAAK6a,WAClBnxL,EAAO1uC,EAAK8nO,iBAAiB3c,GAC7B72O,EAASo6D,EAAKb,YACdupC,EAAU1oC,EAAK+oC,aACfH,EAAc5oC,EAAKwpC,iBACzB,IAAItuE,EAAU92B,EAAQ82B,QAItB,GAHKylC,OAAO9lC,SAASK,KACjBA,EAAU,GAEVwtE,EAAQzxD,EAAI/b,GAAW+pO,EAAShuN,GAChCguN,EAAShuN,GAAK2xD,EAAY3xD,EAAI/b,EAAS,CACvC,MAAM68B,EAAKktM,EAAShuN,EAAIrxC,EAAOqxC,EAC/BrxC,EAAOoxC,GACO,IAAVmiB,GAAyB,MAAVA,EACT,EACM,EAALpB,EAAUxrD,KAAK+/K,IAAI3yH,GAAMC,MAAMT,IAC1CvzD,EAAOqxC,GAAK8gB,OAEX,GAAI2wC,EAAQ1xD,EAAI9b,GAAW+pO,EAASjuN,GACrCiuN,EAASjuN,GAAK4xD,EAAY5xD,EAAI9b,EAAS,CACvC,MAAM48B,EAAKmtM,EAASjuN,EAAIpxC,EAAOoxC,EAC/BpxC,EAAOqxC,GACO,KAAVkiB,GAA0B,MAAVA,EAAgB,EAAIrB,EAAKvrD,KAAK+/K,IAAI3yH,GAAMC,MAAMT,IAClEvzD,EAAOoxC,GAAK8gB,EAEhB,OAAOlyD,KCzBE,GAAa,SAAU0rB,EAAMmrN,EAAQnkL,EAAKl0D,EAASihQ,GAC5D,MAAMz/P,EAAS0rB,EAAKglN,KAAKgvB,mBAAmB7gQ,KAAK6xO,KAAM+uB,GAIvD,OAHIjhQ,EAAQ0zD,IAAM1zD,EAAQ2zD,KACtBnyD,EAAOiyD,UAAUzzD,EAAQ0zD,IAAM,EAAG1zD,EAAQ2zD,IAAM,GAE7CnyD,GCwDE2/P,GAAU,IA/DJ,SAAUj0O,EAAMmrN,EAAQwoB,EAAU7gQ,GACjD,IAAI47D,EAEA9H,EADAiB,EAAQ,EAEZ,MAAM/vD,EAAOkoB,EAAKglN,KACdlyO,EAAQ4zD,QACRgI,EAAO1uC,EAAK8/N,0BAA0B3U,GACtCvkL,EAAS9uD,EAAKi4H,UAAUliE,YACxBhG,EAAQ/vD,EAAK+nP,YAGbnxL,EAAO1uC,EAAK8nO,iBAAiB3c,GAEjC,MAAMvhN,EAAU92B,EAAQ82B,QACT,MAAXA,GAAmBylC,OAAO9lC,SAASK,IACnC8kC,EAAKyqC,QAAQvvE,GAEb92B,EAAQ4zD,QACRitM,EAASjtM,OAAOmB,EAAOjB,GAE3B,MAAMo1C,EAAOttC,EAAKktC,sBAAsB+3J,GACxC,IAAIr/P,EACJ,OAAQ0nG,GACJ,IAAK,OACD1nG,EAASo6D,EAAK6pC,gBACd,MACJ,IAAK,QACDjkG,EAASo6D,EAAK2pC,iBACd,MACJ,IAAK,MACD/jG,EAASo6D,EAAKgpC,eACd,MACJ,IAAK,SACDpjG,EAASo6D,EAAKspC,kBAKtB,MAAMk8J,EAAYphQ,EAAQohQ,UAmB1B,MAlBkB,MAAdA,EACa,QAATl4J,GAA2B,WAATA,IAEd1nG,EADAq/P,EAASjuN,GAAKgpB,EAAKhpB,EAAIgpB,EAAKlqC,MACnBkqC,EAAK6pC,gBAGL7pC,EAAK2pC,kBAIH,MAAd67J,IAED5/P,EADAq/P,EAAShuN,GAAK+oB,EAAK/oB,EAAI+oB,EAAK9nC,OACnB8nC,EAAKgpC,eAGLhpC,EAAKspC,mBAGfllG,EAAQ4zD,OAASpyD,EAAOoyD,QAAQmB,EAAOjB,GAAUtyD,KCxDrD,IAAI,GACA6/P,OAMR,KAAe,GAAa,KALhBvtB,QAAU,EACrButB,GAAWttB,SAAW,GAASn1O,OAAO,CAClCgD,KAAM,kBAEVy/P,GAAWttB,SAASn9F,SAASyqH,GAAWvtB,SAAS,GCR9C,MAAM,GAAQ,SAAU5mN,EAAMmrN,EAAQnkL,EAAKl0D,GAC9C,IAAIw8D,EAAyB,MAAjBx8D,EAAQw8D,MAAgBx8D,EAAQw8D,MAAQ,GAIpD,OAHIA,EAAQ,IACRA,GAAS,KAENtvC,EAAKgyO,gBAAgB1iM,ICLnB,GAAS,SAAUtvC,EAAMmrN,EAAQnkL,EAAKl0D,GAC/C,MAAMgC,EAA2B,MAAlBhC,EAAQgC,OAAiBhC,EAAQgC,OAAS,GACzD,OAAOkrB,EAAK2lH,iBAAiB7wI,ICApBs7P,GAAkB,SAAUpwO,EAAMmrN,EAAQwoB,EAAU7gQ,GAC7D,MAAM+7D,EAAe7uC,EAAKowO,gBAAgBuD,GAC1C,OAAuB,MAAhB9kM,EAAuBA,EAAe,IAAI,IAExC,GAAU,GAAQuhM,ICyBlB,GAAO,IA3BD,SAAUpwO,EAAMmrN,EAAQwoB,EAAU7gQ,GACjD,MACMuvC,EAAOriB,EAAK8nN,gBACZnwD,EAAsB33J,EAAKo0O,4BAC3BC,EAAQ,IAAI,GAAKV,EAAS/4P,QAAQ2rD,UAAU,EAHnC,KAG+CotM,EAAS/4P,QAAQ2rD,UAAU,GAH1E,MAIT+tM,EAAQ,IAAI,GAAKX,EAAS/4P,QAAQ2rD,UAJzB,IAI2C,GAAIotM,EAAS/4P,QAAQ2rD,WAJhE,IAImF,IAC5FguM,EAAiBF,EAAMtpM,UAAU1oB,EAAM,CACzCs1I,wBAEE68E,EAAiBF,EAAMvpM,UAAU1oB,EAAM,CACzCs1I,wBAEEprD,EAAgB,GAOtB,OANIgoI,GACAhoI,EAAc52H,QAAQ4+P,GAEtBC,GACAjoI,EAAc52H,QAAQ6+P,GAEtBjoI,EAAcz3H,OAAS,EAChB6+P,EAASjlP,QAAQ69G,GAEF,MAAtBz5H,EAAQ2hQ,WACDb,GAAe5zO,EAAMltB,EAAQ2hQ,YAEjC,EAAYlkQ,KAAK6/P,GAAiBj9P,KAAM6sB,EAAMmrN,EAAQwoB,EAAU7gQ,MC3BpE,IAAI,GACA4hQ,GCFJ,SAAS,GAAOjtM,EAAIC,EAAIpsB,GAC3B,IAAIwyB,EACJ,GAAsB,iBAAXxyB,EAAqB,CAC5B,GAAI+zB,OAAO9lC,SAAS+R,EAAOqK,GAAI,CAC3B,MAAMyoB,EAAO,IAAI,GAAK1G,EAAID,IACpB,MAAEhzD,EAAK,IAAE6F,GAAQ8zD,EAAKD,SAAS7yB,EAAOqK,GAC5C+hB,EAAKjzD,EACLgzD,EAAKntD,EAETwzD,EAAKxyB,EAAOoK,OAGZooB,EAAKxyB,EAET,GAAU,MAANwyB,IAAeuB,OAAO9lC,SAASukC,GAC/B,OAAOrG,EAEX,MAAM3yD,EAAS2yD,EAAGzD,SAAS0D,GAC3B,OAAW,IAAPoG,GAAYh5D,EAAS,EACd2yD,EAEJA,EAAGqB,KAAKpB,GAAKzsD,KAAKkzC,IAAI2f,EAAIh5D,EAAS,IAEvC,SAAS6/P,GAAexpB,GAC3B,MAAMnoM,EAASmoM,EAAO/yO,aAAa,gBACnC,OAAe,OAAX4qC,EACO,EAEJhd,WAAWgd,IAAW,GD1BtB0xN,GAMR,KAAe,GAAa,KALhB9tB,QAAU,EACrB8tB,GAAW7tB,SAAW,GAASn1O,OAAO,CAClCgD,KAAM,kBAEVggQ,GAAW7tB,SAASn9F,SAASgrH,GAAW9tB,SAAS,GEH9C,MAAM,GAAO,SAAUx4K,EAAMpuC,EAAMmrN,EAAQr4O,GAC9C,MAAM47D,EAAO1uC,EAAK8nO,iBAAiB3c,GAC/Br4O,EAAQ8hQ,SACRlmM,EAAKyqC,QAAQw7J,GAAexpB,GAAU,GAE1C,MAAM5+G,EAAgBn+D,EAAKrD,UAAU2D,GAIrC,OAAO,GAHG69D,GAAiBA,EAAcz3H,OACnCs5D,EAAK35D,MAAMia,QAAQ69G,GACnBn+D,EAAK9zD,IACM8zD,EAAK35D,MAAO3B,EAAQwoC,SCP5B,GAAO,SAAU8yB,EAAMpuC,EAAMmrN,EAAQr4O,EAAS4B,GACvD,MAAMswO,EAAOhlN,EAAKglN,KACZn9K,EAAQm9K,EAAKhlD,SAAWglD,EAAK6a,WAAa,EAChD,GAAc,IAAVh4L,EACA,OAAO,EAAYt3D,KAAK,GAAM4C,KAAMi7D,EAAMpuC,EAAMmrN,EAAQr4O,EAAS4B,GAErE,MAAMmgQ,EAAU70O,EAAK8/N,0BAA0B3U,GAC3Cr4O,EAAQ8hQ,SACRC,EAAQ17J,QAAQw7J,GAAexpB,GAAU,GAE7C,MAAMvkL,EAASiuM,EAAQhnM,YACjBinM,EAAU1mM,EAAKxzD,QAAQ8rD,OAAOmB,EAAOjB,GACrC2lE,EAAgBuoI,EAAQ7mM,UAAU,KAAKlD,UAAU8pM,GAIvD,OAAO,GAHGtoI,GAAiBA,EAAcz3H,OACnCggQ,EAAQrgQ,MAAMia,QAAQ69G,GAAe7lE,QAAQmB,EAAOjB,GACpDwH,EAAK9zD,IACM8zD,EAAK35D,MAAO3B,EAAQwoC,SChB5B,GAAW,SAAU8yB,EAAMpuC,EAAMmrN,EAAQr4O,GAClD,IAAIgF,EACAm+C,EACJ,MAAM0pM,EAASvxL,EAAK9zD,IACd1B,EAAW9F,EAAQ8F,SAUzB,GARId,EADoB,iBAAbc,EACAonB,EAAK29E,QAAQ/kG,GAEfvE,MAAMD,QAAQwE,GACZ,EAAU2oL,UAAU4pD,EAAQvyO,GHepC,SAAuBuyO,GAC1B,GAAc,MAAVA,EACA,OAAO,KAEX,IAAIrzO,EAAOqzO,EACX,EAAG,CACC,IAAIvyJ,EAAU9gF,EAAK8gF,QACnB,GAAuB,iBAAZA,EACP,OAAO,KAEX,GADAA,EAAUA,EAAQ3jE,cACF,MAAZ2jE,EACA9gF,EAAOA,EAAK6gC,sBAEX,IAAgB,UAAZigD,EAIL,MAHA9gF,EAAOA,EAAK4yI,0BAIX5yI,GACT,OAAOA,EG/BIi9P,CAAc5pB,IAEpB,EAAIptI,qBAAqBjmG,GAAO,CACjC,GAAIA,IAASqzO,IAAW,EAAIptI,qBAAqBotI,GAC7C,OAAOwU,EAEX7nP,EAAOqzO,EAEX,MAAM6pB,EAAah1O,EAAKi1O,kBAAkBn9P,GACpCo9P,EAAel1O,EAAKynO,mBAAmB3vP,GACvCq9P,EAAkBn1O,EAAK4nO,0BACvBwN,EAAep1O,EAAK0nO,uBACpB2N,EAAeF,EAChB34M,SAAS44M,GACT54M,SAAS04M,GACRI,EAAcD,EAAa3tH,UAC3B6tH,EAAY,EAAI1kI,cAAcziE,EAAMknM,GACpCE,EAAWD,EAAU9gQ,MAAMmG,QAC3B8a,EAAOsK,EAAKy1O,iBAAiB39P,GACnC,IAA0B,IAAtBhF,EAAQ4iQ,UAAqB,CACP,MAAlBhgP,EAAKivN,YACLjvN,EAAKivN,UAAYqwB,EAAWtmM,QAEhC,MAAMinM,EAAYjgP,EAAKivN,UACvB,GAAiB,MAAbgxB,GAAqBA,EAAUztM,cAAcstM,GAC7C,OAAO7V,EAOf,IAAIiW,EACJ,IAL4B,IAAxB9iQ,EAAQ+iQ,aACRN,EAAUtnM,UAAU,KAIpB,GAAKwrH,OAAOu7E,GAAa,CACzB,MAAMplN,EAAY98C,EAAQ88C,WAAa,EACP,MAA5Bl6B,EAAKiiK,sBACLjiK,EAAKiiK,oBAAsBq9E,EAAWn9E,uBAAuB,CACzDjoI,eAGRgmN,EAAc,CACVhmN,YACA+nI,oBAAqBjiK,EAAKiiK,qBAE9B1hI,EAAes/M,EAAUxqM,UAAUiqM,EAAYY,QAG/C3/M,EAAes/M,EAAUxqM,UAAUiqM,GAEnC/+M,EACI5hD,MAAMD,QAAQ6hD,KACdA,EAAeu/M,EAAS9mP,QAAQunC,KAGZ,IAAnBnjD,EAAQgjQ,SAGT7/M,EADA,GAAUimD,YAAY84J,GACPA,EAAW/4J,uBAAuBu5J,GAE5C,GAAQ1gF,UAAUkgF,GACRA,EAAWr6J,oCAAoC66J,GAG/CR,EAAWnmM,aAAa2mM,EAAUI,IAGzD,MAAMG,EAAK9/M,EACL,EAAI66E,eAAe76E,EAAco/M,GACjC1V,EACN,IAAIqW,EAAWljQ,EAAQwoC,QAAU,EAajC,OAZwB,IAApBxoC,EAAQ8hQ,UACgB,iBAAboB,GACPA,EAAWllQ,OAAO+rD,OAAO,GAAIm5M,GACX,MAAdA,EAAStwN,IACTswN,EAAStwN,EAAI,GAEjBswN,EAAStwN,GAAKivN,GAAe78P,GAAQ,GAGrCk+P,GAAYrB,GAAe78P,GAAQ,GAGpC,GAAOi+P,EAAI3nM,EAAK35D,MAAOuhQ,ICpD3B,MAAM,GAAS,SAAU5nM,EAAMpuC,EAAMmrN,EAAQr4O,GAChD,MAAM,YAAEmjQ,EAAW,MAAE9nF,GAAUr7K,EAI/B,OAHIq7K,GAlDR,SAAmB//G,EAAM15D,EAAM4mC,EAAS,GACpC,MAAM,MAAE7mC,EAAK,IAAE6F,GAAQ8zD,EACvB,IAAIjwD,EACAC,EACA81P,EACAgC,EACJ,OAAQxhQ,GACJ,IAAK,OACDwhQ,EAAa,IACb/3P,EAAI7D,EACJ8D,EAAI3J,EACJy/P,GAAa,EACb,MACJ,IAAK,QACDgC,EAAa,IACb/3P,EAAI1J,EACJ2J,EAAI9D,EACJ45P,EAAY,EACZ,MACJ,IAAK,MACDgC,EAAa,IACb/3P,EAAI7D,EACJ8D,EAAI3J,EACJy/P,GAAa,EACb,MACJ,IAAK,SACDgC,EAAa,IACb/3P,EAAI1J,EACJ2J,EAAI9D,EACJ45P,EAAY,EACZ,MACJ,QACI,OAEJz/P,EAAMyhQ,GAAc57P,EAAI47P,GACxB/3P,EAAE+3P,GAAc93P,EAAE83P,GAGlB93P,EAAE83P,GAAc/3P,EAAE+3P,GAElB7mM,OAAO9lC,SAAS+R,KAChBn9B,EAAE+3P,IAAehC,EAAY54N,EAC7Bl9B,EAAE83P,IAAehC,EAAY54N,GAS7B66N,CAAU/nM,EAAM+/G,EAAO8nF,GAEpB,GAAO7nM,EAAK9zD,IAAK8zD,EAAK35D,MAAO3B,EAAQwoC,SCpDzC,IAAI,GACA86N,OAMR,KAAoB,GAAkB,KALrBxvB,QAAU,EAC1BwvB,GAAgBvvB,SAAW,GAASn1O,OAAO,CACvCgD,KAAM,qBAEV0hQ,GAAgBvvB,SAASn9F,SAAS0sH,GAAgBxvB,SAAS,GCRxD,MAAM,GAAS,SAAU2lB,GAC5B,MAAO,IAAIA,ICGF8J,GAAU,SAAU9J,EAAUz5P,EAASmyO,GAChD,MAAMjpI,EAAOlpG,EAAQkpG,MAAQ,SACvBpyE,EAAU,EAAUu6J,eAAerxL,EAAQ82B,SAAW,IACtDulO,EAAalqB,EAASkqB,WACtBS,EAAa3qB,EAAS2qB,WACtB1qB,EAAciqB,EAAWthM,YACzBs3K,EAAcyqB,EAAW/hM,YAC/B,IAAIy2C,EACAgyJ,EACA3xC,EACJ,OAAQ3oH,GACJ,IAAK,MACD2oH,GAAU,EACVrgH,EAAQ,IACRgyJ,EAAM,SACN,MACJ,IAAK,OACD3xC,GAAU,EACVrgH,EAAQ,IACRgyJ,EAAM,QACN,MACJ,IAAK,QACD3xC,EAAS,EACTrgH,EAAQ,IACRgyJ,EAAM,QACN,MACJ,IAAK,SACL,QACI3xC,EAAS,EACTrgH,EAAQ,IACRgyJ,EAAM,SAad,OATApxB,EAAY5gI,IAAUqgH,GAAUwqC,EAAWmH,GAAO,EAAI1sO,EAAQoyE,IAC9DmpI,EAAY7gI,IAAUqgH,GAAUirC,EAAW0G,GAAO,EAAI1sO,EAAQoyE,IAE1D2oH,GAAUugB,EAAY5gI,GAAS6gI,EAAY7gI,IAAU,EACrD6gI,EAAY7gI,GAAS4gI,EAAY5gI,GAGjC4gI,EAAY5gI,GAAS6gI,EAAY7gI,GAE9B,CAAC4gI,EAAYhmL,YAAaqtM,EAAUpnB,EAAYjmL,WC7CpD,SAASq3M,GAAarkQ,GACzB,OAAO,IAAI,GAAUA,EAAEwzC,EAAGxzC,EAAEyzC,EAAG,EAAG,GAE/B,SAAS6wN,GAAc1jQ,EAAU,IACpC,MAAM8nG,EAAQ,EAAUupF,eAAerxL,EAAQ82B,SAAW,IAC1D,MAAO,CACH8b,GAAIk1D,EAAMlxE,KACVic,GAAIi1D,EAAMx2F,IACVogB,MAAOo2E,EAAMlxE,KAAOkxE,EAAMp1E,MAC1BoB,OAAQg0E,EAAMx2F,IAAMw2F,EAAMjsC,QAG3B,SAAS8nM,GAAcz2O,EAAMltB,EAAU,IAC1C,OAAOktB,EAAKmvO,WAAWv0P,QAAQ0+F,cAAck9J,GAAc1jQ,IAExD,SAAS4jQ,GAAc12O,EAAMltB,EAAU,IAC1C,OAAOktB,EAAK4vO,WAAWh1P,QAAQ0+F,cAAck9J,GAAc1jQ,ICZxD,MAAM,GAAO,SAAUy5P,EAAUz5P,EAASmyO,GAC7C,IAAIkqB,EAAa,GAAmBlqB,EAAUnyO,GAC1C88P,EAAa,GAAmB3qB,EAAUnyO,GAC9C,MAAMo6P,EDWH,SAAyBltO,EAAMltB,EAAU,IAC5C,OAAIktB,EAAKktO,aACEltO,EAAKktO,aAEHuJ,GAAcz2O,EAAMltB,GACrB+6D,YChBS,CAAqBo3K,EAAUnyO,GAC9Cq6P,EDiBH,SAAyBntO,EAAMltB,EAAU,IAC5C,OAAIktB,EAAKmtO,aACEntO,EAAKmtO,aAEHuJ,GAAc12O,EAAMltB,GACrB+6D,YCtBS,CAAqBo3K,EAAUnyO,GAEpDq8P,EAAaA,EAAW33M,MAAM,GAAkB01M,IAChD0C,EAAaA,EAAWp4M,MAAM,GAAkB21M,IAChD,MAAMlmM,EAASslM,EAAS7yP,IAAKxH,GAAM,GAAMR,OAAOQ,IAChD+0D,EAAOhhD,QAAQinP,GACfjmM,EAAOtxD,KAAKw3P,GAEZ,IAAIhlM,EAAU,KACd,MAAM7zD,EAAS,GACf,IAAK,IAAIlE,EAAI,EAAGgK,EAAM6sD,EAAOnyD,OAAS,EAAG1E,EAAIgK,EAAKhK,GAAK,EAAG,CACtD,IAAIyhO,EAAQ,KACZ,MAAM9yL,EAAOkoB,EAAO72D,GACd29B,EAAKk5B,EAAO72D,EAAI,GAChBumQ,EAA+C,MAAhC,GAAQC,WAAW73N,EAAMhR,GAC9C,GAAU,IAAN39B,EAEIA,EAAI,IAAMgK,EAIN+0P,EAAWr0J,mBAAmB80J,EAAWh1P,QAAQu+F,QAAQ,IACzD04H,EAAQ,GAAQglC,WAAW93N,EAAMhR,EAAIohO,EAAYS,GAE3C+G,IACN9kC,EAAQ,GAAQilC,WAAW/3N,EAAMhR,EAAIohO,EAAYS,IAKjDT,EAAWjnM,cAAcn6B,GACzB8jM,EAAQ,GAAQglC,WAAW93N,EAAMhR,EAAIohO,EAAY,GAAkBphO,GAAIurE,cAAc,GAAmBxmG,KAElG6jQ,IACN9kC,EAAQ,GAAQklC,aAAah4N,EAAMhR,EAAIohO,SAI9C,GAAI/+P,EAAI,IAAMgK,EAAK,CAGpB,MAAM48P,EAAmBL,GAAgB,GAAQC,WAAW7oO,EAAIgR,KAAUopB,EACtEynM,EAAW1nM,cAAcnpB,IAASi4N,EAClCnlC,EAAQ,GAAQglC,WAAW93N,EAAMhR,EAAI,GAAkBgR,GAAMu6D,cAAc,GAAmBxmG,IAAW88P,EAAYznM,GAE/GwuM,IACN9kC,EAAQ,GAAQolC,aAAal4N,EAAMhR,EAAI6hO,EAAYznM,SAGjDwuM,IAEN9kC,EAAQ,GAAQqlC,eAAen4N,EAAMhR,EAAIo6B,IAGzC0pK,GACAv9N,EAAOqB,QAAQk8N,EAAM5qK,QACrBkB,EAAU0pK,EAAMqiC,WAIhB/rM,EAAU,GAAQyuM,WAAW73N,EAAMhR,GAGnC39B,EAAI,EAAIgK,GACR9F,EAAOqB,KAAKo4B,GAGpB,OAAOz5B,GAEX,IAAI,IACJ,SAAWy3O,GAIP,MAAMorB,EAAY,CACdC,EAAG,IACH3sJ,EAAG,IACH4sJ,EAAG,IACHC,EAAG,KAKDntB,EAAU,CACZitB,GAAKn8P,KAAK+vB,GAAK,EAAK,EACpBy/E,GAAIxvG,KAAK+vB,GAAK,EACdqsO,EAAG,EACHC,EAAGr8P,KAAK+vB,IAMZ,SAASusO,EAAS9vM,EAAIC,EAAIgH,GACtB,IAAIx8D,EAAI,IAAI,GAAMu1D,EAAG/hB,EAAGgiB,EAAG/hB,GAQ3B,OAPI+oB,EAAKxG,cAAch2D,KACnBA,EAAI,IAAI,GAAMw1D,EAAGhiB,EAAG+hB,EAAG9hB,IAMpBzzC,EAKX,SAASslQ,EAAY9oM,EAAMvG,GACvB,OAAOuG,EAAiB,MAAZvG,GAA+B,MAAZA,EAAkB,QAAU,UAG/D,SAASyuM,EAAW73N,EAAMhR,GACtB,OAAIgR,EAAK2G,IAAM3X,EAAG2X,EACP3G,EAAK4G,EAAI5X,EAAG4X,EAAI,IAAM,IAE7B5G,EAAK4G,IAAM5X,EAAG4X,EACP5G,EAAK2G,EAAI3X,EAAG2X,EAAI,IAAM,IAE1B,KAGX,SAASwxN,EAAen4N,EAAMhR,EAAIo6B,GAC9B,MAAMV,EAAK,IAAI,GAAM1oB,EAAK2G,EAAG3X,EAAG4X,GAC1B+hB,EAAK,IAAI,GAAM35B,EAAG2X,EAAG3G,EAAK4G,GAC1ByvD,EAAKwhK,EAAW73N,EAAM0oB,GACtB4tC,EAAKuhK,EAAW73N,EAAM2oB,GACtB+vM,EAAWtvM,EAAUgvM,EAAUhvM,GAAW,KAC1Cj2D,EAAIkjG,IAAOjtC,GAAYitC,IAAOqiK,IAAapiK,IAAOoiK,GAAYpiK,IAAOltC,GACrEV,EACAC,EACN,MAAO,CAAET,OAAQ,CAAC/0D,GAAIgiQ,UAAW0C,EAAW1kQ,EAAG67B,IAGnD,SAASgpO,EAAah4N,EAAMhR,EAAI2pO,GAC5B,MAAMxlQ,EAAIqlQ,EAASx4N,EAAMhR,EAAI2pO,GAC7B,MAAO,CAAEzwM,OAAQ,CAAC/0D,GAAIgiQ,UAAW0C,EAAW1kQ,EAAG67B,IAzBnDg+M,EAAQyrB,YAAcA,EAUtBzrB,EAAQ6qB,WAAaA,EAYrB7qB,EAAQmrB,eAAiBA,EAKzBnrB,EAAQgrB,aAAeA,EA6BvBhrB,EAAQkrB,aA5BR,SAAsBl4N,EAAMhR,EAAI4pO,EAAQxvM,GACpC,MAAMlB,EAAS,CAAC,IAAI,GAAMloB,EAAK2G,EAAG3X,EAAG4X,GAAI,IAAI,GAAM5X,EAAG2X,EAAG3G,EAAK4G,IACxDiyN,EAAa3wM,EAAOtiD,OAAQzS,IAAOylQ,EAAOzvM,cAAch2D,IACxD2lQ,EAAoBD,EAAWjzP,OAAQzS,GAAM0kQ,EAAW1kQ,EAAG6sC,KAAUopB,GAC3E,IAAIj2D,EACJ,GAAI2lQ,EAAkB/iQ,OAAS,EAI3B,OAFA5C,EAAI2lQ,EAAkBlzP,OAAQzS,GAAM0kQ,EAAW73N,EAAM7sC,KAAOi2D,GAAS9pD,MACrEnM,EAAIA,GAAK2lQ,EAAkB,GACpB,CACH5wM,OAAQ,CAAC/0D,GACTgiQ,UAAW0C,EAAW1kQ,EAAG67B,IAGjC,CAKI77B,EAAI,EAASkjD,WAAW6R,EAAQ2wM,GAAY,GAC5C,MAAMlwM,EAAK,GAAMh2D,OAAOq8B,GAAI+6B,KAAK52D,GAAIslQ,EAAYG,EAAQxvM,GAAW,GAEpE,MAAO,CACHlB,OAAQ,CAFDswM,EAAS7vM,EAAI3oB,EAAM44N,GAEbjwM,GACbwsM,UAAW0C,EAAWlvM,EAAI35B,MAuBtCg+M,EAAQ+qB,WAlBR,SAAoB/3N,EAAMhR,EAAI2pO,EAAUC,GACpC,IAAI9lC,EAAQklC,EAAahpO,EAAIgR,EAAM44N,GACnC,MAAMlwM,EAAKoqK,EAAM5qK,OAAO,GACxB,GAAIywM,EAASxvM,cAAcT,GAAK,CAC5BoqK,EAAQklC,EAAah4N,EAAMhR,EAAI2pO,GAC/B,MAAMhwM,EAAKmqK,EAAM5qK,OAAO,GACxB,GAAI0wM,EAAOzvM,cAAcR,GAAK,CAC1B,MAAMowM,EAAa,GAAMpmQ,OAAOqtC,GAAM+pB,KAAKpB,GAAK8vM,EAAYE,EAAUd,EAAW73N,EAAM2oB,IAAO,GACxFqwM,EAAW,GAAMrmQ,OAAOq8B,GAAI+6B,KAAKrB,GAAK+vM,EAAYG,EAAQf,EAAW7oO,EAAI05B,IAAO,GAChF4J,EAAM,IAAI,GAAKymM,EAAYC,GAAUlqM,YACrCmqM,EAAajB,EAAah4N,EAAMsyB,EAAKqmM,GACrCO,EAAWf,EAAe7lM,EAAKtjC,EAAIiqO,EAAW9D,WACpDriC,EAAM5qK,OAAS,CAAC+wM,EAAW/wM,OAAO,GAAIgxM,EAAShxM,OAAO,IACtD4qK,EAAMqiC,UAAY+D,EAAS/D,WAGnC,OAAOriC,GA0CXka,EAAQ8qB,WApCR,SAAoB93N,EAAMhR,EAAI2pO,EAAUC,EAAQxvM,GAC5C,MAAMqrM,EAAWkE,EAASlgN,MAAMmgN,GAAQx+J,QAAQ,GAE1CvyC,EAAS4sM,EAAS3lM,YAClBqqM,EAAWtxM,EAAO5C,SAASj2B,GAAM64B,EAAO5C,SAASjlB,GACjDtqC,EAAQyjQ,EAAWnqO,EAAKgR,EACxBzkC,EAAM49P,EAAWn5N,EAAOhR,EAC9B,IAAI05B,EACAC,EACA8rC,EAWAvsC,EAWJ,OArBIkB,GAGAV,EAAK,GAAMkC,UAAU6pM,EAAShvO,MAAQgvO,EAAS5sO,OAAQujN,EAAQhiL,GAAU1zD,GACzEgzD,EAAK+rM,EAASv3J,uBAAuBx0C,GAAIqB,KAAKrB,GAAK,IAGnDA,EAAK+rM,EAASv3J,uBAAuBxnG,GAAOq0D,KAAKr0D,EAAO,GAE5DizD,EAAK6vM,EAAS9vM,EAAIntD,EAAKk5P,GAEnB/rM,EAAG1hC,QAAQ4hC,OAAOD,EAAG3hC,UACrB2hC,EAAK,GAAMiC,UAAU6pM,EAAShvO,MAAQgvO,EAAS5sO,OAAQyhC,GAAMC,MAAMb,EAAGJ,MAAM5yD,IAAUwG,KAAK+vB,GAAK,EAAG1wB,GACnGotD,EAAK8rM,EAASv3J,uBAAuBv0C,GAAIoB,KAAKxuD,EAAK,GAAGyrB,QACtDytE,EAAK+jK,EAAS9vM,EAAIC,EAAI8rM,GACtBvsM,EAASixM,EAAW,CAACxwM,EAAI8rC,EAAI/rC,GAAM,CAACA,EAAI+rC,EAAI9rC,IAG5CT,EAASixM,EAAW,CAACxwM,EAAID,GAAM,CAACA,EAAIC,GAGjC,CACHT,SACAitM,UAHyB0C,EAAXsB,EAAsBzwM,EAAqBC,EAAjB35B,KArJpD,CA4JG,KAAY,GAAU,KCzOlB,MAAM,GAAW,CACpBtD,KAAM,GACN0tO,aAAc,IACdvoN,UAAW,EACXwoN,mBAAoB,GACpBC,eAAe,EACfC,iBAAkB,GAClBC,cAAe,GACfC,oBAAoB,EACpBC,gBAAiB,CAAC,MAAO,QAAS,SAAU,QAC5CC,cAAe,CAAC,MAAO,QAAS,SAAU,QAC1CC,aAAc,CACVv0P,IAAK,CAAEshC,EAAG,EAAGC,GAAI,GACjBngB,MAAO,CAAEkgB,EAAG,EAAGC,EAAG,GAClBgpB,OAAQ,CAAEjpB,EAAG,EAAGC,EAAG,GACnBjc,KAAM,CAAEgc,GAAI,EAAGC,EAAG,IAEtB,OAEI,OADa,GAAQxyC,KAAKs3B,KAAMt3B,OAGpC,aACI,MAAMs3B,EAAO,GAAQt3B,KAAKs3B,KAAMt3B,MAC1BylQ,EAAO,GAAQzlQ,KAAKylQ,KAAMzlQ,MAChC,MAAO,CACH,CAAEylQ,OAAMt4O,QAASmK,EAAMlK,QAAS,GAChC,CAAEq4O,OAAMt4O,SAAUmK,EAAMlK,QAAS,GACjC,CAAEq4O,OAAMt4O,QAAS,EAAGC,QAASkK,GAC7B,CAAEmuO,OAAMt4O,QAAS,EAAGC,SAAUkK,KAGtC,YACI,MAAMA,EAAO,GAAQt3B,KAAKs3B,KAAMt3B,MAChC,MAAO,CACHgmC,EAAG,EACHyjH,GAAInyH,EAAO,EACXouO,GAAIpuO,EAAO,IAGnB,aACI,MAAMA,EAAO,GAAQt3B,KAAKs3B,KAAMt3B,MAChC,MAAO,CACHuyC,GAAIjb,EACJkb,GAAIlb,EACJjG,MAAO,EAAIiG,EACX7D,OAAQ,EAAI6D,IAGpBquO,eAAgB,GAChBC,eAAgB,MAEb,SAAS,GAAQ9zP,EAAOnS,GAC3B,MAAqB,mBAAVmS,EACAA,EAAM1U,KAAKuC,GAEfmS,ECvDJ,MAAM,GACT,cACI9R,KAAKkpE,MAAQ,GACblpE,KAAK2V,KAAO,GACZ3V,KAAKylB,OAAS,GAElB,IAAIthB,EAAMjG,GACF8B,KAAK2V,KAAKxR,GAEVnE,KAAKkpE,MAAM7hE,OAAOrH,KAAKkpE,MAAMzlE,QAAQU,GAAO,GAG5CnE,KAAK2V,KAAKxR,GAdT,EAgBLnE,KAAKylB,OAAOthB,GAAQjG,EACpB,MAAMwD,EAAQ,EAAS+hD,cAAczjD,KAAKkpE,MAAO/kE,EAAO3F,GAAQwB,KAAKylB,OAAOjnB,IAC5EwB,KAAKkpE,MAAM7hE,OAAO3F,EAAO,EAAGyC,GAEhC,MACI,MAAMA,EAAOnE,KAAKkpE,MAAM35D,QAIxB,OAHIpL,IACAnE,KAAK2V,KAAKxR,GAtBR,GAwBCA,EAEX,OAAOA,GACH,OA5BK,IA4BEnE,KAAK2V,KAAKxR,GAErB,QAAQA,GACJ,OA9BM,IA8BCnE,KAAK2V,KAAKxR,GAErB,UACI,OAA6B,IAAtBnE,KAAKkpE,MAAMvnE,QC9BnB,MAAM,GACT,YAAYhC,GACRK,KAAKL,QAAUA,EACfK,KAAK6lQ,YAAc,IACnB7lQ,KAAKuG,IAAM,GAQf,MAAM+yE,EAAO1f,GACT,MAAMj6D,EAAUK,KAAKL,QAEfmmQ,EAAoBnmQ,EAAQwlQ,iBAAiB35N,OAAO,CAAC8B,EAAM/rC,KAC7D,MAAM6qP,EAAWxyL,EAAKr4D,GACtB,GAAI6qP,EAAU,CACV,MAAMva,EAAOv4J,EAAMysL,QAAQ3Z,EAASva,MAChCA,GACAvkM,EAAK9qC,KAAKqvO,GAGlB,OAAOvkM,GACR,IACH,IAAI04N,EAAoB,GACxB,MAAMjiP,EAASu1D,EAAMysL,QAAQnsM,EAAKqsM,mBAC9BliP,IACAiiP,EAAoB,EAAS3hN,MAAM2hN,EAAmBjiP,EAAOmiP,eAAe3/P,IAAKsrO,GAASA,EAAKrjO,MAEnG,MAAM9G,EAAS4xE,EAAMysL,QAAQnsM,EAAKusM,mBAC9Bz+P,IACAs+P,EAAoB,EAAS3hN,MAAM2hN,EAAmBt+P,EAAOw+P,eAAe3/P,IAAKsrO,GAASA,EAAKrjO,MAMnG,MAAMq3P,EAAc7lQ,KAAK6lQ,YAyBzB,OAxBAvsL,EAAM8sL,WAAW56N,OAAO,CAACjlC,EAAK5B,KAC1B,MAAMysC,EAAQzsC,EAAKysC,MACbg0N,EAAgBzlQ,EAAQylQ,cACxBiB,IAAUj1N,GAAQg0N,EAAclnN,SAAS9M,GACzCk1N,EAAcR,EAAkBx/M,KAAMurL,GAASA,EAAKrjO,KAAO7J,EAAK6J,IAChE+3P,EAAcP,EAAkB9nN,SAASv5C,EAAK6J,IAC9Cg4P,EAAY7mQ,EAAQ0lQ,qBAAuB1gQ,EAAK8sG,YAEtD,KADiB40J,GAAWC,GAAeC,GAAeC,GAC3C,CACX,MAAMjrM,EAAO52D,EAAKi4H,UAAUz2B,cAAcxmG,EAAQ8mQ,YAC5C7yM,EAAS2H,EAAK8oC,YAAYxuC,WAAWgwM,GACrC5gK,EAAS1pC,EAAKypC,YAAYnvC,WAAWgwM,GAC3C,IAAK,IAAItzN,EAAIqhB,EAAOrhB,EAAGA,GAAK0yD,EAAO1yD,EAAGA,GAAKszN,EACvC,IAAK,IAAIrzN,EAAIohB,EAAOphB,EAAGA,GAAKyyD,EAAOzyD,EAAGA,GAAKqzN,EAAa,CACpD,MAAMrnQ,EAAM,IAAI,GAAM+zC,EAAGC,GAAG7uC,WACZ,MAAZ4C,EAAI/H,KACJ+H,EAAI/H,GAAO,IAEf+H,EAAI/H,GAAKgE,KAAK+4D,IAI1B,OAAOh1D,GACRvG,KAAKuG,KACDvG,KAEX,aAAam2D,GACT,MAAM33D,EAAM23D,EAAM1uD,QAAQouD,WAAW71D,KAAK6lQ,aAAaliQ,WACjD43I,EAAQv7I,KAAKuG,IAAI/H,GACvB,OAAO+8I,GAAQA,EAAMh2F,MAAO1c,IAAUA,EAAKksB,cAAcoB,KCvE1D,SAAS,GAActpC,EAAMltB,GAChC,MAAM47D,EAAO1uC,EAAKmvO,WAAWv0P,QAC7B,OAAI9H,GAAWA,EAAQ8mQ,WACZlrM,EAAK4qC,cAAcxmG,EAAQ8mQ,YAE/BlrM,EAEJ,SAAS,GAAc1uC,EAAMltB,GAChC,MAAM47D,EAAO1uC,EAAK4vO,WAAWh1P,QAC7B,OAAI9H,GAAWA,EAAQ8mQ,WACZlrM,EAAK4qC,cAAcxmG,EAAQ8mQ,YAE/BlrM,EAEJ,SAASmrM,GAAkB75O,EAAMltB,GACpC,GAAIktB,EAAKktO,aACL,OAAOltO,EAAKktO,aAGhB,OADmB,GAAcltO,EAAMltB,GACrB+6D,YAWf,SAASisM,GAAkBrlQ,EAAO6F,EAAKy/P,EAAgBh1D,EAAMjyM,GAChE,MAAMknQ,EAAW,IAAMD,EACjBE,EAAaxlQ,EAAM4yD,MAI7B,SAAqB5yD,EAAO6F,EAAKyqM,EAAMjyM,GACnC,MAAM23B,EAAO33B,EAAQ23B,KACfyvO,EAAQ5/P,EAAIorC,EAAIjxC,EAAMixC,EACtBy0N,EAAQ7/P,EAAIqrC,EAAIlxC,EAAMkxC,EACtBy0N,EAAaF,EAAQn1D,EAAKr/J,EAC1B20N,EAAaF,EAAQp1D,EAAKp/J,EAC1B20N,EAAYF,EAAa3vO,EACzB8vO,EAAYF,EAAa5vO,EAC/B,OAAO,IAAI,GAAMh2B,EAAMixC,EAAI40N,EAAW7lQ,EAAMkxC,EAAI40N,GAZjBC,CAAY/lQ,EAAO6F,EAAKyqM,EAAMjyM,IACvD2nQ,EAAkBpyM,GAAM1D,UAAUs1M,EAAaD,EAAW,GAChE,OAAOA,EAAW/+P,KAAKq4C,MAAMmnN,EAAkBT,GAe5C,SAASU,GAAmBC,EAAQC,GACvC,MAAMj+K,EAAS1hF,KAAKinC,IAAIy4N,EAASC,GACjC,OAAOj+K,EAAS,IAAM,IAAMA,EAASA,EAmBzC,SAASk+K,GAAiBz3P,EAAMqnB,GAE5B,IAAKrnB,EACD,OAAOqnB,EAEX,MAAMyX,EAAMjnC,KAAKinC,IAAI9+B,GACf2T,EAAQ9b,KAAK8qB,MAAMmc,EAAMzX,GAE/B,IAAK1T,EACD,OAAOmrB,EAMX,OAAOzX,GAFWyX,EADEnrB,EAAQ0T,GAEG1T,EAS5B,SAAS,GAAMuyC,EAAO1Z,GACzB,OAAO0Z,EAAMvjC,MAAM6pB,GAEhB,SAAS,GAAM0Z,EAAOy7I,EAAMn1J,GAC/B,OAAO,GAVX,SAAkB0Z,EAAOy7I,GACrB,MAAM7tL,EAAS6tL,EAAK7tL,OACdwuB,EAAI,GAAKsjB,WAAWM,EAAM5jB,EAAIxuB,EAAOwuB,EAAGq/J,EAAKr/J,GAAKxuB,EAAOwuB,EACzDC,EAAI,GAAKqjB,WAAWM,EAAM3jB,EAAIzuB,EAAOyuB,EAAGo/J,EAAKp/J,GAAKzuB,EAAOyuB,EAC/D,OAAO,IAAI,GAAMD,EAAGC,GAMPm1N,CAASxxM,EAAM1uD,QAASmqM,GAAOn1J,GAEzC,SAAS89E,GAAOpkE,GACnB,OAAOA,EAAMxyD,WAEV,SAAS,GAAewyD,GAC3B,OAAO,IAAI,GAAkB,IAAZA,EAAM5jB,EAAU,EAAIzqC,KAAKinC,IAAIonB,EAAM5jB,GAAK4jB,EAAM5jB,EAAe,IAAZ4jB,EAAM3jB,EAAU,EAAI1qC,KAAKinC,IAAIonB,EAAM3jB,GAAK2jB,EAAM3jB,GAE7G,SAASo1N,GAAQh8N,EAAMi8N,GAC1B,IAAI7sN,EAAMuD,IACV,IAAK,IAAIthD,EAAI,EAAGgK,EAAM4gQ,EAAQlmQ,OAAQ1E,EAAIgK,EAAKhK,GAAK,EAAG,CACnD,MAAM+zD,EAAOplB,EAAKooB,kBAAkB6zM,EAAQ5qQ,IACxC+zD,EAAOhW,IACPA,EAAMgW,GAGd,OAAOhW,EAOJ,SAAS8sN,GAActb,EAAQjxL,EAAMwsM,EAAen2D,EAAMjyM,GAC7D,MAAM88C,EAAY98C,EAAQ88C,UACpB+oN,EAAe7lQ,EAAQ6lQ,aACvBwC,EAAexb,EAAOv8O,KAAKsrD,EAAKb,aAChCutM,EAAatqQ,OAAOyR,KAAKo2P,GAAch6N,OAAO,CAACq2B,EAAKrjE,KACtD,GAAIupQ,EAAc7pN,SAAS1/C,GAAM,CAC7B,MAAMuiQ,EAAYyE,EAAahnQ,GAGzB0pQ,EAAS,IAAI,GAAM1b,EAAOj6M,EAAIwuN,EAAUxuN,GAAKzqC,KAAKinC,IAAIi5N,EAAaz1N,GAAKgpB,EAAKlqC,OAAQm7N,EAAOh6M,EAAIuuN,EAAUvuN,GAAK1qC,KAAKinC,IAAIi5N,EAAax1N,GAAK+oB,EAAK9nC,SAI/I2lG,EAHmB,IAAI,GAAKozH,EAAQ0b,GAGHtwM,UAAU2D,IAAS,GAC1D,IAAI4sM,EACAC,EAAuB,KAC3B,IAAK,IAAInrQ,EAAI,EAAGA,EAAIm8H,EAAcz3H,OAAQ1E,GAAK,EAAG,CAC9C,MAAM6lD,EAAes2E,EAAcn8H,GAC7B4zD,EAAW27L,EAAOz4L,gBAAgBjR,IACJ,MAAhCqlN,GACAt3M,EAAWs3M,KACXA,EAA+Bt3M,EAC/Bu3M,EAAuBtlN,GAI/B,GAAIslN,EAAsB,CACtB,IAAI1gQ,EAAS,GAAM0gQ,EAAsBx2D,EAAMn1J,GAE3C8e,EAAKxG,cAAcrtD,KACnBA,EAAS,GAAMA,EAAO0rD,UAAU2tM,EAAUxuN,EAAIq/J,EAAKr/J,EAAGwuN,EAAUvuN,EAAIo/J,EAAKp/J,GAAIo/J,EAAMn1J,IAEvFolB,EAAIr/D,KAAKkF,IAGjB,OAAOm6D,GACR,IAKH,OAHKtG,EAAKxG,cAAcy3L,IACpByb,EAAWzlQ,KAAK,GAAMgqP,EAAQ56C,EAAMn1J,IAEjCwrN,EAGJ,SAASI,GAAiB3sP,EAASo4C,EAAQw0M,EAAW18N,EAAMhR,GAC/D,MAAM8jM,EAAQ,GACd,IAIIvoK,EAJAoyM,EAAW,GAAe3tO,EAAG3qB,KAAKq4P,IAElCE,EAAajuI,GAAO+tI,GACpBnoQ,EAASub,EAAQ8sP,GAErB,KAAOroQ,GAAQ,CAEXg2D,EAAQrC,EAAO00M,GACf,MAAMv4P,EAAO,GAAekmD,EAAMlmD,KAAK9P,IAClC8P,EAAKukD,OAAO+zM,KACb7pC,EAAM5rN,QAAQqjD,GACdoyM,EAAWt4P,GAGfu4P,EAAajuI,GAAOp6H,GACpBA,EAASub,EAAQ8sP,GAGrB,MAAMC,EAAY30M,EAAO00M,GAKzB,OAJiB,GAAeC,EAAUx4P,KAAK27B,IACjC4oB,OAAO+zM,IACjB7pC,EAAM5rN,QAAQ21P,GAEX/pC,ECtLX,SAASgqC,GAAU52B,EAAUlmM,EAAMhR,EAAIr0B,EAAK5G,GACxC,MAAM88C,EAAY98C,EAAQ88C,UAC1B,IAAIksN,EACAC,EAEAD,EADA,GAAU5/J,YAAYn9D,GACL,GAAW,GAAuBkmM,EAAUnyO,GAAS8H,QAASg1C,GAG9D,GAAW7Q,EAAKnkC,QAASg1C,GAG1CmsN,EADA,GAAU7/J,YAAYnuE,GACL,GDGlB,SAA2B/N,EAAMltB,GACpC,OAAIktB,EAAKmtO,aACEntO,EAAKmtO,aAEG,GAAcntO,EAAMltB,GACrB+6D,YCRc,CAAuBo3K,EAAUnyO,GAAS8H,QAASg1C,GAG9D,GAAW7hB,EAAGnzB,QAASg1C,GAG5C,MAAMm1J,GDuCct6K,ECvCM33B,EAAQ23B,KDuCA5vB,ECvCsBkhQ,EDwCjD,CACH7kP,QAFsBA,ECvCc4kP,GDyCrBlhQ,QACf8qC,EAAGm1N,GAAiBhgQ,EAAO6qC,EAAIxuB,EAAOwuB,EAAGjb,GACzCkb,EAAGk1N,GAAiBhgQ,EAAO8qC,EAAIzuB,EAAOyuB,EAAGlb,KAJ1C,IAAiBA,EAAMvT,EAAQrc,ECpClC,MAAMqyH,EAAa4uI,EACb/2J,EAAWg3J,EACjB,IAAIC,EACAC,EAiBJ,GAfID,EADA,GAAU9/J,YAAYn9D,GACR,GAAmBmuF,EAAYnuF,EAAMjsC,EAAQ2lQ,gBAAiB1zD,EAAMjyM,GAGpE,CAACo6H,GAGf+uI,EADA,GAAU//J,YAAYnuE,GACV,GAAmBguO,EAAgBhuO,EAAIj7B,EAAQ4lQ,cAAe3zD,EAAMjyM,GAGpE,CAACiyG,GAGjBi3J,EAAcA,EAAYr3P,OAAQzS,GAAMwH,EAAIwiQ,aAAahqQ,IACzD+pQ,EAAYA,EAAUt3P,OAAQzS,GAAMwH,EAAIwiQ,aAAahqQ,IAEjD8pQ,EAAYlnQ,OAAS,GAAKmnQ,EAAUnnQ,OAAS,EAAG,CAChD,MAAMqnQ,EAAU,IAAI,GAEdl1M,EAAS,GAETp4C,EAAU,GAEVutP,EAAQ,GACd,IAAK,IAAIhsQ,EAAI,EAAGyB,EAAImqQ,EAAYlnQ,OAAQ1E,EAAIyB,EAAGzB,GAAK,EAAG,CAEnD,MAAM88H,EAAa8uI,EAAY5rQ,GACzBuB,EAAM,GAAYu7H,GACxBivI,EAAQ1oQ,IAAI9B,EAAK,GAAau7H,EAAY+uI,IAC1Ch1M,EAAOt1D,GAAOu7H,EACdkvI,EAAMzqQ,GAAO,EAEjB,MAAM0qQ,EAA8BvpQ,EAAQwpQ,uBAEtCC,OAAkDlnQ,IAAhCgnQ,EAExB,IAAInI,EACAsI,EACJ,MAAMC,EDfP,SAAwB13D,EAAMjyM,GACjC,MAAM23B,EAAO33B,EAAQ23B,KAKrB,OAJA33B,EAAQ2pQ,WAAWn+N,QAAS41N,IACxBA,EAAUwI,YAAexI,EAAU5zO,QAAUmK,EAAQs6K,EAAKr/J,EAC1DwuN,EAAUyI,YAAezI,EAAU3zO,QAAUkK,EAAQs6K,EAAKp/J,IAEvD7yC,EAAQ2pQ,WCSQ,CAAoB13D,EAAMjyM,GACvC8pQ,EAAgBH,EAAW3nQ,OAC3B+nQ,EAAgBZ,EAAUt9N,OAAO,CAACq2B,EAAK+vC,KACzC,MAAMpzG,EAAM,GAAYozG,GAExB,OADA/vC,EAAIr/D,KAAKhE,GACFqjE,GACR,IAEG8nM,EAAqB,GAAMhzM,YAAYkyM,EAAaC,GAC1D,IAAIc,EAAiBjqQ,EAAQqlQ,aAC7B,MAAQgE,EAAQthN,WAAakiN,EAAiB,GAAG,CAE7C,MAAMpB,EAAaQ,EAAQ99P,MACrBwvH,EAAe5mE,EAAO00M,GACtBqB,EAAgBnuP,EAAQ8sP,GACxBsB,EAAcb,EAAMT,GACpBuB,EAAervI,EAAalmE,OAAOulE,GACnCiwI,EAAoC,MAAjBH,EACzB,IAAIV,EAaAA,EAZCa,EAGKZ,EAIAW,EAKmB,KAHA,GAAuBhwI,EAAYW,EAAc+uI,EAAe73D,EAAMjyM,GAJtEupQ,EAJA,GAAuBW,EAAenvI,EAAc+uI,EAAe73D,EAAMjyM,GAetG,KADqBqqQ,GAAoBL,IACpBD,EAAcjmQ,QAAQ+kQ,IAAe,EAEtD,OADA7oQ,EAAQwpQ,uBAAyBA,EAC1B,GAAsBztP,EAASo4C,EAAQ4mE,EAAcX,EAAYnoB,GAG5E,IAAK,IAAI30G,EAAI,EAAGA,EAAIwsQ,EAAexsQ,GAAK,EAAG,CACvC8jQ,EAAYuI,EAAWrsQ,GACvB,MAAMgtQ,EAAiBlJ,EAAUrsM,MAGjC,GAFA20M,EAAkB,GAAwBF,EAAwBc,KAE5Db,IAAmBW,IACrBV,EAAkB1pQ,EAAQslQ,mBAC1B,SAEJ,MAAMiF,EAAgB,GAAWxvI,EAC5BjzH,QACA2rD,UAAU2tM,EAAUwI,aAAe,EAAGxI,EAAUyI,aAAe,GAAI53D,EAAMn1J,GACxE0tN,EAAc,GAAYD,GAEhC,GAAIlB,EAAQoB,QAAQD,KAAiB5jQ,EAAIwiQ,aAAamB,GAClD,SAGJ,GAAIR,EAAcjmQ,QAAQ0mQ,IAAgB,EAAG,CAEzC,IADmBD,EAAc11M,OAAOo9C,GACvB,CAGb,GAD2B,GAAwBq4J,EADzB,GAAuBC,EAAet4J,EAAU63J,EAAe73D,EAAMjyM,IAEtEA,EAAQslQ,mBAC7B,UAMZ,MAIMoF,EAAgBP,EAJD/I,EAAU0E,MACPsE,EAClB,EACApqQ,EAAQ2qQ,UAAUjB,MAInBL,EAAQuB,OAAOJ,IAChBE,EAAgBpB,EAAMkB,MACtBr2M,EAAOq2M,GAAeD,EACtBxuP,EAAQyuP,GAAezvI,EACvBuuI,EAAMkB,GAAeE,EACrBrB,EAAQ1oQ,IAAI6pQ,EAAaE,EAAgB,GAAaH,EAAepB,KAG7Ec,GAAkB,GAG1B,OAAIjqQ,EAAQ6qQ,cACD,EAAYptQ,KAAKuC,EAAQ6qQ,cAAexqQ,KAAM+5H,EAAYnoB,EAAUjyG,GAExE,KAEJ,MAAM,GAAS,SAAUy5P,EAAUqR,EAAY34B,GAClD,MAAMnyO,EJzGH,SAAwBA,GAC3B,MAAMwB,EAASxD,OAAOyR,KAAKzP,GAAS6rC,OAAO,CAAC8B,EAAM9uC,KAC9C,MAAM0H,EAAMonC,EASZ,OALIpnC,EAAI1H,GAHI,mBAARA,GACQ,mBAARA,GACQ,kBAARA,EACWmB,EAAQnB,GAGR,GAAQmB,EAAQnB,GAAMmB,GAE9B2tC,GACR,IACH,GAAInsC,EAAOs1B,QAAS,CAChB,MAAMgxE,EAAQ,EAAUupF,eAAe7vL,EAAOs1B,SAC9C92B,EAAQ8mQ,WAAa,CACjBl0N,GAAIk1D,EAAMlxE,KACVic,GAAIi1D,EAAMx2F,IACVogB,MAAOo2E,EAAMlxE,KAAOkxE,EAAMp1E,MAC1BoB,OAAQg0E,EAAMx2F,IAAMw2F,EAAMjsC,QAQlC,OALAr6D,EAAOmoQ,WAAWn+N,QAAS41N,IACvB,MAAM2J,EAAS,IAAI,GAAM,EAAG,GACtBC,EAAS,IAAI,GAAM5J,EAAU5zO,QAAS4zO,EAAU3zO,SACtD2zO,EAAUrsM,MAAQQ,GAAM1D,UAAUk5M,EAAOx2M,MAAMy2M,MAE5CxpQ,EI8ESypQ,CAAeH,GACzBzO,EAAa,GAAmBlqB,EAAUnyO,GAC1C88P,EAAa,GAAmB3qB,EAAUnyO,GAC1CgpQ,EAAiB,GAAuB72B,EAAUnyO,GAElD4G,EAAM,IAAI,GAAY5G,GAASkrQ,MAAM/4B,EAASvmB,MAAMjyI,MAAOw4J,EAASD,MACpEi5B,EAAc1R,EAAS7yP,IAAKxH,GAAM,GAAMR,OAAOQ,IAC/CgsQ,EAAc,GAEpB,IACIn/N,EACAhR,EAFA0tO,EAAYK,EAGhB,IAAK,IAAI1rQ,EAAI,EAAGgK,EAAM6jQ,EAAYnpQ,OAAQ1E,GAAKgK,EAAKhK,GAAK,EAAG,CACxD,IAAI+tQ,EAAe,KAInB,GAHAp/N,EAAOhR,GAAMohO,EACbphO,EAAKkwO,EAAY7tQ,GAEP,MAAN29B,EAAY,CACZA,EAAK6hO,EAGL,MAAM7iM,EAAOk4K,EAASD,KAEtB,IADkD,MAA1Bj4K,EAAKqsM,mBAAuD,MAA1BrsM,EAAKusM,oBACN,mBAA3BxmQ,EAAQimQ,eAA+B,CACjE,MAAMqF,EAAWr/N,IAASowN,EAAa2M,EAAiB/8N,EAClDs/N,EAAStwO,EAAGypE,YAClB2mK,EAAe,EAAY5tQ,KAAKuC,EAAQimQ,eAAgB9zB,EAAUm5B,EAAUC,EAAQvrQ,IAQ5F,GAJoB,MAAhBqrQ,IACAA,EAAetC,GAAU52B,EAAUlmM,EAAMhR,EAAIr0B,EAAK5G,IAGjC,OAAjBqrQ,EACA,OAAO,EAAY5tQ,KAAKuC,EAAQgmQ,eAAgB3lQ,KAAMo5P,EAAUz5P,EAASmyO,GAI7E,MAAM22B,EAAYuC,EAAa,GAC3BvC,GAAaA,EAAUj0M,OAAO8zM,IAC9B0C,EAAaz7P,QAGjB+4P,EAAY0C,EAAaA,EAAarpQ,OAAS,IAAM2mQ,EACrDyC,EAAYvoQ,QAAQwoQ,GAExB,OAAOD,GCjNEI,GAAY,SAAU/R,EAAUz5P,EAASmyO,GAClD,OAAO,EAAY10O,KAAK,GAAQ4C,KAAMo5P,EAAUz7P,OAAO+rD,OAAO/rD,OAAO+rD,OAAO,GAAI,IAAW/pD,GAAUmyO,ICAnG,GAAW,CACbmzB,mBAAoB,GAGpB,aACI,MAAM3tO,EAAO,GAAQt3B,KAAKs3B,KAAMt3B,MAC1BylQ,EAAO,GAAQzlQ,KAAKylQ,KAAMzlQ,MAC1BorQ,EAAetjQ,KAAK0tB,KAAK1tB,KAAK2rC,KAAMnc,EAAOA,GAAS,IAC1D,MAAO,CACH,CAAEmuO,OAAMt4O,QAASmK,EAAMlK,QAAS,GAChC,CAAEq4O,KAAM2F,EAAcj+O,QAASmK,EAAMlK,QAASkK,GAC9C,CAAEmuO,OAAMt4O,QAAS,EAAGC,QAASkK,GAC7B,CAAEmuO,KAAM2F,EAAcj+O,SAAUmK,EAAMlK,QAASkK,GAC/C,CAAEmuO,OAAMt4O,SAAUmK,EAAMlK,QAAS,GACjC,CAAEq4O,KAAM2F,EAAcj+O,SAAUmK,EAAMlK,SAAUkK,GAChD,CAAEmuO,OAAMt4O,QAAS,EAAGC,SAAUkK,GAC9B,CAAEmuO,KAAM2F,EAAcj+O,QAASmK,EAAMlK,SAAUkK,KAKvD,cAAcsU,EAAMhR,EAAIj7B,GAEpB,MAAMu0D,EAAQtoB,EAAKsoB,MAAMt5B,GACnB8jM,EAAQ,GACd,IAAI1zN,EAAI,CAAEunC,EAAG3X,EAAG2X,EAAGC,EAAG5G,EAAK4G,GACvBvnC,EAAI,CAAEsnC,EAAG3G,EAAK2G,EAAGC,EAAG5X,EAAG4X,GAC3B,GAAI0hB,EAAQ,IAAM,GAAI,CAClB,MAAM/1D,EAAI6M,EACVA,EAAIC,EACJA,EAAI9M,EAER,MAAMm2D,EAAKJ,EAAQ,GAAK,GAAKlpD,EAAIC,EAC3BogQ,EAAK,IAAI,GAAKz/N,EAAM0oB,GACpByI,EAAQ,GAAKj1D,KAAK0tB,KAAK0+B,EAAQ,IAC/BK,EAAK,GAAMiC,UAAU60M,EAAGxwM,gBAAiB3F,GAAMC,MAAM4H,EAAQ,KAAMzI,GACnEg3M,EAAK,IAAI,GAAK1wO,EAAI25B,GAClBg3M,EAAoBF,EAAG3uM,mBAAmB4uM,GAC1Cn1M,EAAQo1M,GAAqB3wO,EAC7B4wO,EAAgBD,EAAoBp1M,EAAQvqB,EAC5Ci7N,EAAW,IAAMlnQ,EAAQ2pQ,WAAW3nQ,OACpCmlQ,EAAa0E,EAAct3M,MAAMt5B,GACjC0sO,EAAkBpyM,GAAM1D,UAAUs1M,EAAaD,EAAW,GAC1DoD,EAAiBpD,EAAW/+P,KAAKq4C,MAAMmnN,EAAkBT,GAK/D,OAJAlnQ,EAAQwpQ,uBAAyBc,EAC7B9zM,GACAuoK,EAAMl8N,KAAK2zD,EAAMvjC,SACrB8rM,EAAMl8N,KAAKo4B,GACJ8jM,IAGF+sC,GAAQ,SAAUrS,EAAUz5P,EAAS+rQ,GAC9C,OAAO,EAAYtuQ,KAAK+tQ,GAAWnrQ,KAAMo5P,EAAUz7P,OAAO+rD,OAAO/rD,OAAO+rD,OAAO,GAAI,IAAW/pD,GAAU+rQ,ICxD/FC,GAAK,SAAUvS,EAAUz5P,EAASmyO,GAC3C,MAAM85B,EAAYjsQ,EAAQwoC,QAAU,GAC9B6S,EAAqB,MAAfr7C,EAAQq7C,IAAc,GAAKr7C,EAAQq7C,IAC/C,IAAI7S,EAAS,EACT44N,EAAYphQ,EAAQohQ,UACxB,MAAM/E,EAAalqB,EAASkqB,WACtBS,EAAa3qB,EAAS2qB,WACtB1qB,EAAciqB,EAAWthM,YACzBs3K,EAAcyqB,EAAW/hM,YAI/B,GAHyB,iBAAdkxM,IACPzjO,EAASyjO,GAEI,MAAb7K,EAAmB,CACnB,IAAI1tM,EAAKopM,EAAWlmO,KAAOylO,EAAW3pO,MAClCihC,EAAKmpM,EAAWxrP,IAAM+qP,EAAWxgM,OACjCnI,GAAM,GAAKC,GAAM,EACjBytM,EAAY1tM,GAAMC,EAAK,IAAM,IAExBD,GAAM,GAAKC,GAAM,GACtBD,EAAK2oM,EAAWzlO,KAAOkmO,EAAWpqO,MAE9B0uO,EADA1tM,GAAM,GACMA,GAAMC,EAAK,IAGX,KAGXD,GAAM,GAAKC,GAAM,GACtBA,EAAK0oM,EAAW/qP,IAAMwrP,EAAWjhM,OAE7BulM,EADAztM,GAAM,EACMD,GAAMC,EAAK,IAAM,IAGjB,MAIhBD,EAAK2oM,EAAWzlO,KAAOkmO,EAAWpqO,MAClCihC,EAAK0oM,EAAW/qP,IAAMwrP,EAAWjhM,OAE7BulM,EADA1tM,GAAM,GAAKC,GAAM,EACLD,GAAMC,EAAK,IAAM,IAExBD,GAAM,GAAKC,GAAM,EACV,IAEPD,GAAM,GAAKC,GAAM,GAIVxrD,KAAKinC,IAAIskB,GAAMvrD,KAAKinC,IAAIukB,GAHxB,IAGoC,KAwB5D,IAAI69C,EACAgyJ,EACA3xC,EAtBc,MAAduvC,EACAA,EAAY/uB,EAAYz/L,EAAIw/L,EAAYx/L,GAAK,EAAI,IAAM,IAEpC,MAAdwuN,IACLA,EAAY/uB,EAAYx/L,EAAIu/L,EAAYv/L,GAAK,EAAI,IAAM,KAEzC,WAAdo5N,IACkB,MAAd7K,EACA54N,GAAUs0N,EAAWlmO,KAAOylO,EAAW3pO,OAAS,EAE7B,MAAd0uO,EACL54N,GAAU6zN,EAAWzlO,KAAOkmO,EAAWpqO,OAAS,EAE7B,MAAd0uO,EACL54N,GAAUs0N,EAAWxrP,IAAM+qP,EAAWxgM,QAAU,EAE7B,MAAdulM,IACL54N,GAAU6zN,EAAW/qP,IAAMwrP,EAAWjhM,QAAU,IAMxD,MAAMF,EAA2B,MAAdylM,GAAmC,MAAdA,EACxC,GAAIzlM,EAAY,CACZ,GAAI02K,EAAYx/L,IAAMu/L,EAAYv/L,EAC9B,MAAO,IAAI4mN,GAEf5nC,EAAuB,MAAduvC,EAAoB,GAAK,EAClC5vJ,EAAQ,IACRgyJ,EAAM,YAEL,CACD,GAAInxB,EAAYz/L,IAAMw/L,EAAYx/L,EAC9B,MAAO,IAAI6mN,GAEf5nC,EAAuB,MAAduvC,EAAoB,GAAK,EAClC5vJ,EAAQ,IACRgyJ,EAAM,SAEV,MAAMp/O,EAASguN,EAAYtqO,QACrBC,EAASsqO,EAAYvqO,QAG3B,GAFAsc,EAAOotF,IAAUqgH,GAAUwqC,EAAWmH,GAAO,EAAIh7N,GACjDzgC,EAAOypG,IAAUqgH,GAAUirC,EAAW0G,GAAO,EAAIh7N,GAC7CmzB,EAAY,CACZ,MAAMuwM,EAAU9nP,EAAOwuB,EACjBu5N,EAAUpkQ,EAAO6qC,EACjBw5N,EAAc/P,EAAW3qO,MAAQ,EAAI2pB,EACrCgxN,EAAcvP,EAAWprO,MAAQ,EAAI2pB,EACvCg3L,EAAYz/L,EAAIw/L,EAAYx/L,EACxBu5N,GAAWD,IACX9nP,EAAOwuB,EAAIzqC,KAAKitB,IAAI+2O,EAAS/5B,EAAYx/L,EAAIw5N,GAC7CrkQ,EAAO6qC,EAAIzqC,KAAKkzC,IAAI6wN,EAAS75B,EAAYz/L,EAAIy5N,IAG5CF,GAAWD,IAChB9nP,EAAOwuB,EAAIzqC,KAAKkzC,IAAI8wN,EAAS/5B,EAAYx/L,EAAIw5N,GAC7CrkQ,EAAO6qC,EAAIzqC,KAAKitB,IAAI82O,EAAS75B,EAAYz/L,EAAIy5N,QAGhD,CACD,MAAMC,EAAUloP,EAAOyuB,EACjB05N,EAAUxkQ,EAAO8qC,EACjBu5N,EAAc/P,EAAWvoO,OAAS,EAAIunB,EACtCgxN,EAAcvP,EAAWhpO,OAAS,EAAIunB,EACxCg3L,EAAYx/L,EAAIu/L,EAAYv/L,EACxB05N,GAAWD,IACXloP,EAAOyuB,EAAI1qC,KAAKitB,IAAIm3O,EAASn6B,EAAYv/L,EAAIu5N,GAC7CrkQ,EAAO8qC,EAAI1qC,KAAKkzC,IAAIixN,EAASj6B,EAAYx/L,EAAIw5N,IAG5CE,GAAWD,IAChBloP,EAAOyuB,EAAI1qC,KAAKkzC,IAAIkxN,EAASn6B,EAAYv/L,EAAIu5N,GAC7CrkQ,EAAO8qC,EAAI1qC,KAAKitB,IAAIk3O,EAASj6B,EAAYx/L,EAAIw5N,IAGrD,MAAO,CAACjoP,EAAOgoC,YAAaqtM,EAAU1xP,EAAOqkD,WChIjD,SAAS0nJ,GAAO3/I,EAAQ3tD,GACpB,GAAa,MAATA,IAA2B,IAAVA,EAAiB,CAClC,MAAMymM,EAA0B,kBAAVzmM,EAAsB,EAAIA,EAChD,GAAIymM,EAAS,EAAG,CACZ,MAAMu/D,EAAU,GAAM5tQ,OAAOu1D,EAAO,IAAI6B,KAAK7B,EAAO,GAAI84I,GAClDw/D,EAAU,GAAM7tQ,OAAOu1D,EAAO,IAAI6B,KAAK7B,EAAO,GAAI84I,GACxD,MAAO,CAACu/D,EAAQpgN,YAAa+H,EAAQs4M,EAAQrgN,UAEjD,CACI,MAAM0H,EAASK,EAAO,GACtB,MAAO,CAACn2D,OAAO+rD,OAAO,GAAI+J,MAAYK,EAAQn2D,OAAO+rD,OAAO,GAAI+J,KAGxE,OAAOK,EAEJ,MAAMzgB,GAAO,SAAU+lN,EAAUz5P,EAASmyO,GAC7C,MAAMzgN,EAAQ1xB,EAAQ0xB,OAAS,GAEzBgtF,GADS1+G,EAAQ8zB,QAAU,IACL,EACtBihC,EAAQ/0D,EAAQ+0D,OAAS,OACzBqlM,EAAejoB,EAASioB,aACxBC,EAAeloB,EAASkoB,aACxBgC,EAAalqB,EAASkqB,WACtBS,EAAa3qB,EAAS2qB,WAC5B,GAAI1C,EAAavlM,OAAOwlM,GAAe,CACnC,MAAMjB,EAAerkM,IACjB,MAAMP,EAAMe,GAAMC,MAAMT,GAClBc,EAAM1tD,KAAK0tD,IAAIrB,GACfv8B,EAAM9vB,KAAK8vB,IAAIu8B,GACfV,EAAS,IAAI,GAAMsmM,EAAaxnN,EAAI3a,EAAMvG,EAAO0oO,EAAavnN,EAAIgjB,EAAMnkC,GACxEwiC,EAAM,IAAI,GAAMJ,EAAOlhB,EAAI3a,EAAMymF,EAAY5qD,EAAOjhB,EAAIgjB,EAAM6oD,GAC9D/pD,EAAKT,EAAIpsD,QAAQ8rD,QAAQ,GAAIE,GAC7Bc,EAAKV,EAAIpsD,QAAQ8rD,OAAO,GAAIE,GAClC,MAAO,CAACa,EAAGvI,SAAU0H,EAAO1H,SAAUwI,EAAGxI,WAEvCkgJ,EAAY9kM,IACd,MAAM7F,EAAQy4P,EAAatyP,QAAQkuD,KAAKxuD,GAAM,GACxC8zD,EAAO,IAAI,GAAK35D,EAAO6F,GAC7B,OAAS60P,EAAWjnM,cAAc5tD,KAAS60P,EAAWt/L,mBAAmBzB,IAEvEoxM,EAAS,CAAC,EAAG,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,KAC/C,GAAqB,iBAAV33M,EACP,OAAO++I,GAAOslD,EAAYrkM,GAAQ/0D,EAAQwG,OAE9C,MAAMstD,EAASuoM,EAAWthM,YAC1B,GAAIjH,EAAOe,OAAOulM,GACd,OAAOtmD,GAAOslD,EAAY,GAAIp5P,EAAQwG,OAE1C,MAAMuwD,EAAMjD,EAAOY,aAAa0lM,EAActmM,EAAOhsD,QAAQ2rD,UAAU,EAAG,IAC1E,IAAIltD,EAAM6yP,EAAYriM,GACtB,GAAIu1I,EAAS/lM,EAAI,IACb,OAAOutM,GAAOvtM,EAAKvG,EAAQwG,OAG/B,IAAK,IAAIlJ,EAAI,EAAGC,EAAImvQ,EAAO1qQ,OAAQ1E,EAAIC,EAAGD,GAAK,EAE3C,GADAiJ,EAAM6yP,EAAYriM,EAAM21M,EAAOpvQ,IAC3BgvM,EAAS/lM,EAAI,IACb,OAAOutM,GAAOvtM,EAAKvG,EAAQwG,OAGnC,OAAOstM,GAAOvtM,EAAKvG,EAAQwG,OAE/B,CACI,MAAM80D,EAAO,IAAI,GAAK8+L,EAAcC,GACpC,IAAIh/L,EAAWC,EAAKD,UAAU3pC,GAC1BoiC,EAASuH,EAASN,YAClBpG,EAAK0G,EAAS15D,MAAMmG,QAAQkuD,KAAKqF,EAAS7zD,IAAKk3G,GAC/C9pD,EAAKyG,EAAS7zD,IAAIM,QAAQkuD,KAAKqF,EAAS15D,MAAO+8G,GACnD,MAAMxqD,EAAMoH,EAAKD,UAAU,GACrBsxM,EAAQ,IAAI,GAAKz4M,EAAIvyD,MAAOmyD,GAC5B84M,EAAQ,IAAI,GAAK14M,EAAI1sD,IAAKssD,GAYhC,IAXIuoM,EAAWjnM,cAActB,IACzBgpM,EAAW1nM,cAActB,IACzBuoM,EAAWt/L,mBAAmB4vM,IAC9BtQ,EAAWt/L,mBAAmB6vM,IAC9B9P,EAAW//L,mBAAmB4vM,IAC9B7P,EAAW//L,mBAAmB6vM,MAC9BvxM,EAAWC,EAAKD,SAAS3pC,GACzBoiC,EAASuH,EAASN,YAClBpG,EAAK0G,EAAS15D,MAAMmG,QAAQkuD,KAAKqF,EAAS7zD,IAAKk3G,GAC/C9pD,EAAKyG,EAAS7zD,IAAIM,QAAQkuD,KAAKqF,EAAS15D,MAAO+8G,IAE/C1+G,EAAQwG,MAAO,CACf,MAAM80D,EAAO,IAAI,GAAK8+L,EAAcC,GAC9B78C,EAAS,IAAI,GAAK1pJ,EAAQwH,EAAKxH,QAAQqH,UAAUoB,OAAOswM,kBACxDC,EAAczQ,EAAWt/L,mBAAmBygJ,GAC5CuvD,EAAcjQ,EAAW//L,mBAAmBygJ,GAC5CwvD,EAAaF,EACbvrQ,MAAMD,QAAQwrQ,GACVA,EACA,CAACA,GACL,GACFC,IACIxrQ,MAAMD,QAAQyrQ,GACdC,EAAWnqQ,QAAQkqQ,GAGnBC,EAAWnqQ,KAAKkqQ,IAGxB,MAAMlgB,EAASvxL,EAAKxH,OAAOl4C,QAAQoxP,GAC/BngB,GACA1a,EAASioB,aAAevN,EAAO/kP,QAC/BqqO,EAASkoB,aAAexN,EAAO/kP,UAG/BqqO,EAASioB,aAAe9+L,EAAKxH,OAAOhsD,QACpCqqO,EAASkoB,aAAe/+L,EAAKxH,OAAOhsD,SAG5C,OAAOgsM,GAAO,CAACn/I,EAAGvI,SAAU0H,EAAO1H,SAAUwI,EAAGxI,UAAWpsD,EAAQwG,SC7GpE,IAAI,GACAymQ,OAMR,KAAW,GAAS,KALZn5B,QAAU,EACjBm5B,GAAOl5B,SAAW,GAASn1O,OAAO,CAC9BgD,KAAM,WAEVqrQ,GAAOl5B,SAASn9F,SAASq2H,GAAOn5B,SAAS,GCPtC,MAAM,GAAS,SAAU1B,EAAaC,EAAa66B,EAAaltQ,EAAU,IAC7E,MAAMm0D,EAAS,CAACi+K,KAAgB86B,EAAa76B,GACvCx2G,EAAW,IAAI,GAAS1nE,GACxB5kB,EAAO,IAAI,GAAKssF,GACtB,OAAO77H,EAAQ2hB,IAAM4tB,EAAOA,EAAKxP,aCJxB,GAAO,SAAUqyM,EAAaC,EAAa66B,EAAaltQ,EAAU,IAC3E,MAAM6qB,EAA6B,IAAvBqiP,EAAYlrQ,OAAe,EAAI,EACrC2yD,EAAK,GAAM/1D,OAAOsuQ,EAAY,EAAIriP,IAClC+pC,EAAK,GAAMh2D,OAAOsuQ,EAAY,EAAIriP,IAClCipC,EAAS,GAAMl1D,OAAOsuQ,EAAY,EAAIriP,IAC5C,IAAK,GAAMgqC,OAAOu9K,EAAaC,GAAc,CACzC,MAAMv5H,EAAS,IAAI,IAAOs5H,EAAYx/L,EAAIy/L,EAAYz/L,GAAK,GAAIw/L,EAAYv/L,EAAIw/L,EAAYx/L,GAAK,GAC1FkiB,EAAQ+jD,EAAOpkD,aAAa,GAAM91D,OAAOwzO,GAAax+K,OAAO,GAAIklD,GAAShlD,GAC5EiB,EAAQ,IACRJ,EAAGf,OAAO,IAAMmB,EAAO+jD,GACvBlkD,EAAGhB,OAAO,IAAMmB,EAAO+jD,GACvBhlD,EAAOF,OAAO,IAAMmB,EAAO+jD,IAGnC,MAAM7lE,EAAW,YACZm/L,EAAYx/L,KAAKw/L,EAAYv/L,aAC7B8hB,EAAG/hB,KAAK+hB,EAAG9hB,KAAKihB,EAAOlhB,KAAKkhB,EAAOjhB,aACnC+hB,EAAGhiB,KAAKgiB,EAAG/hB,KAAKw/L,EAAYz/L,KAAKy/L,EAAYx/L,QAElD,OAAO7yC,EAAQ2hB,IAAM,GAAK0B,MAAM4vB,GAAYA,GCnBnC,GAAU,SAAUm/L,EAAaC,EAAa66B,EAAaltQ,EAAU,IAC9E,MAAMuvC,EAAO,IAAI,GACjBA,EAAKqzI,cAAc,GAAKC,cAAc,IAAKuvD,IAC3C,MAEMz0I,EAAS39F,EAAQ29F,QAAU,GACjC,IAAIwvK,EACAC,EACJ,IAAK,IAAI9vQ,EAAI,EAAG25D,EAAKi2M,EAAYlrQ,OAAQ1E,EAAI25D,EAAI35D,GAAK,EAAG,CACrD,MAAMy1L,EAAO,GAAMn0L,OAAOsuQ,EAAY5vQ,IAChCke,EAAO0xP,EAAY5vQ,EAAI,IAAM80O,EAC7BpkO,EAAOk/P,EAAY5vQ,EAAI,IAAM+0O,EACnC86B,EAAeC,GAAgBr6E,EAAK7hI,SAAS11C,GAAQ,EACrD4xP,EAAer6E,EAAK7hI,SAASljD,GAAQ,EACrC,MAAMg0N,GAAa75N,KAAKkzC,IAAIsiD,EAAQwvK,GAC9BE,GAAWllQ,KAAKkzC,IAAIsiD,EAAQyvK,GAC5BE,EAAev6E,EAAKjrL,QAAQkuD,KAAKx6C,EAAMwmN,GAAW/uM,QAClDs6O,EAAax6E,EAAKjrL,QAAQkuD,KAAKhoD,EAAMq/P,GAASp6O,QAC9C+xF,EAAW,IAAI,GAfb,EAAI,EAeqBsoJ,EAAa16N,EAdtC,EAAI,EAc4CmgJ,EAAKngJ,EAdrD,EAAI,EAc0DmgJ,EAAKlgJ,EAfnE,EAAI,EAeyEy6N,EAAaz6N,GAC5FoyE,EAAW,IAAI,GAhBb,EAAI,EAgBqBsoJ,EAAW36N,EAfpC,EAAI,EAe0CmgJ,EAAKngJ,EAfnD,EAAI,EAewDmgJ,EAAKlgJ,EAhBjE,EAAI,EAgBuE06N,EAAW16N,GAC9FtD,EAAKqzI,cAAc,GAAKC,cAAc,IAAKyqF,IAC3C/9N,EAAKqzI,cAAc,GAAKC,cAAc,IAAK79D,EAAUC,EAAUsoJ,IAGnE,OADAh+N,EAAKqzI,cAAc,GAAKC,cAAc,IAAKwvD,IACpCryO,EAAQ2hB,IAAM4tB,EAAOA,EAAKxP,aCxBxB4sG,GAAS,SAAUylG,EAAaC,EAAa66B,EAAaltQ,EAAU,IAC7E,IAAIuvC,EACA6xN,EAAYphQ,EAAQohQ,UACxB,GAAI8L,GAAsC,IAAvBA,EAAYlrQ,OAAc,CACzC,MAAMmyD,EAAS,CAACi+K,KAAgB86B,EAAa76B,GACvCrrH,EAAS,GAAMN,cAAcvyD,GACnC5kB,EAAO,IAAI,GAAKy3E,QAehB,GATAz3E,EAAO,IAAI,GACXA,EAAKqzI,cAAc,GAAKC,cAAc,IAAKuvD,IACtCgvB,IACDA,EACIj5P,KAAKinC,IAAIgjM,EAAYx/L,EAAIy/L,EAAYz/L,IACjCzqC,KAAKinC,IAAIgjM,EAAYv/L,EAAIw/L,EAAYx/L,GACnC,IACA,KAEI,MAAduuN,EAAmB,CACnB,MAAMoM,GAAiBp7B,EAAYx/L,EAAIy/L,EAAYz/L,GAAK,EACxDrD,EAAKqzI,cAAc,GAAKC,cAAc,IAAK2qF,EAAep7B,EAAYv/L,EAAG26N,EAAen7B,EAAYx/L,EAAGw/L,EAAYz/L,EAAGy/L,EAAYx/L,QAEjI,CACD,MAAM46N,GAAiBr7B,EAAYv/L,EAAIw/L,EAAYx/L,GAAK,EACxDtD,EAAKqzI,cAAc,GAAKC,cAAc,IAAKuvD,EAAYx/L,EAAG66N,EAAep7B,EAAYz/L,EAAG66N,EAAep7B,EAAYz/L,EAAGy/L,EAAYx/L,IAG1I,OAAO7yC,EAAQ2hB,IAAM4tB,EAAOA,EAAKxP,aCIrC,SAAS2tO,GAAYt7B,EAAaC,EAAatT,EAAQ,IACnD,MAAM5qK,EAAS,CAACi+K,KAAgBrT,EAAOsT,GACjC31H,EAAQ,GAOd,OANAvoD,EAAO3oB,QAAQ,CAACgrB,EAAO9gD,KACnB,MAAM1H,EAAOmmD,EAAOz+C,EAAM,GACd,MAAR1H,GACA0uG,EAAM75G,KAAK,IAAI,GAAK2zD,EAAOxoD,MAG5B0uG,EAYX,SAASixJ,GAAYh5M,EAAIC,GACrB,OAAO,IAAI,GAAKD,EAAIC,GAAIsG,gBAoD5B,SAAS1pB,GAAUkrE,EAAOkxJ,EAAUC,EAAUlwK,GAC1C,MAAMpuD,EAAO,IAAI,GACjB,IAAI8pF,EAqEJ,OAnEAA,EAAU,GAAKwpD,cAAc,IAAKnmE,EAAM,GAAG/6G,OAC3C4tC,EAAKqzI,cAAcvpD,GACnB3c,EAAMlxE,QAAQ,CAAC8vB,EAAMv5D,KACjB,GAAI+rQ,GAAavvN,SAAS+c,GAAO,CAC7B,IAAIvG,EACAzkD,EACA00G,EACAC,EACJ,GAAiB,QAAb4oJ,EAAoB,CAEpB94M,GAAS,GAETzkD,EAAOgrD,EAAK35D,MAAM2O,KAAKgrD,EAAK9zD,MAER8I,EAAKsiC,EAAI,GAAiB,IAAXtiC,EAAKsiC,GAAWtiC,EAAKuiC,EAAI,KAExDkiB,GAAS,KAEb,MAAMjB,EAASwH,EAAKP,YACdgzM,EAAa,IAAI,GAAKj6M,EAAQwH,EAAK9zD,KAAKosD,OAAOmB,EAAOjB,GAC5D,IAAIk6M,EAEJA,EAAW,IAAI,GAAK1yM,EAAK35D,MAAOmyD,GAChCkxD,EAAWgpJ,EAAShyM,QAAQ,EAAI,GAAGpI,OAAOmB,EAAOuG,EAAK35D,OACtDsjH,EAAW8oJ,EAAW/xM,QAAQ,EAAI,GAAGpI,QAAQmB,EAAOg5M,EAAWvmQ,KAC/D6xH,EAAU,GAAKwpD,cAAc,IAAK79D,EAAUC,EAAU8oJ,EAAWvmQ,KACjE+nC,EAAKqzI,cAAcvpD,GAEnB20I,EAAW,IAAI,GAAKl6M,EAAQwH,EAAK9zD,KACjCw9G,EAAW+oJ,EAAW/xM,QAAQ,EAAI,GAAGpI,OAAOmB,EAAOg5M,EAAWvmQ,KAC9Dy9G,EAAW+oJ,EAAShyM,QAAQ,EAAI,GAAGpI,QAAQmB,EAAOuG,EAAK9zD,KACvD6xH,EAAU,GAAKwpD,cAAc,IAAK79D,EAAUC,EAAU3pD,EAAK9zD,KAC3D+nC,EAAKqzI,cAAcvpD,QAElB,GAAiB,QAAbw0I,EACLx0I,EAAU,GAAKwpD,cAAc,IAAKvnH,EAAK9zD,KACvC+nC,EAAKqzI,cAAcvpD,QAElB,GAAiB,UAAbw0I,EAAsB,CAE3B94M,EAAQuG,EAAK35D,MAAM4yD,MAAM+G,EAAK9zD,KAC9B,MAAMymQ,EAAqB,GAAXL,EAChB,IAAIM,EAAqB,KAAXN,EAEdt9P,EAAOgrD,EAAK35D,MAAM2O,KAAKgrD,EAAK9zD,MAER8I,EAAKsiC,EAAI,GAAiB,IAAXtiC,EAAKsiC,GAAWtiC,EAAKuiC,EAAI,KAExDq7N,IAAY,GAEhBlpJ,EAAW,IAAI,GAAM1pD,EAAK35D,MAAMixC,EAAIq7N,EAAS3yM,EAAK35D,MAAMkxC,EAAIq7N,GAASt6M,OAAOmB,EAAOuG,EAAK35D,OACxFsjH,EAAW,IAAI,GAAM3pD,EAAK9zD,IAAIorC,EAAIq7N,EAAS3yM,EAAK9zD,IAAIqrC,EAAIq7N,GAASt6M,OAAOmB,EAAOuG,EAAK9zD,KACpF6xH,EAAU,GAAKwpD,cAAc,IAAK79D,EAAUC,EAAU3pD,EAAK9zD,KAC3D+nC,EAAKqzI,cAAcvpD,QAGtB,CACD,MAAM80I,EAAWzxJ,EAAM36G,EAAQ,GAChB,IAAX47F,IAAiBwwK,GAAYL,GAAavvN,SAAS4vN,IACnD90I,EAAU,GAAKwpD,cAAc,IAAKvnH,EAAK9zD,KACvC+nC,EAAKqzI,cAAcvpD,IASnC,SAA6B7wF,EAAQ+G,EAAMwjJ,EAAMv3K,EAAMxN,GACnD,MAAMm/P,EAAep6E,EAAK7hI,SAAS11C,GAAQ,EACrC4xP,EAAer6E,EAAK7hI,SAASljD,GAAQ,EACrCg0N,GAAa75N,KAAKkzC,IAAI7S,EAAQ2kO,GAC9BE,GAAWllQ,KAAKkzC,IAAI7S,EAAQ4kO,GAC5BE,EAAev6E,EAAKjrL,QAAQkuD,KAAKx6C,EAAMwmN,GAAW/uM,QAClDs6O,EAAax6E,EAAKjrL,QAAQkuD,KAAKhoD,EAAMq/P,GAASp6O,QAC9C+xF,EAAW,IAAI,GAzLb,EAAI,EAyLqBsoJ,EAAa16N,EAxLtC,EAAI,EAwL4CmgJ,EAAKngJ,EAxLrD,EAAI,EAwL0DmgJ,EAAKlgJ,EAzLnE,EAAI,EAyLyEy6N,EAAaz6N,GAC5FoyE,EAAW,IAAI,GA1Lb,EAAI,EA0LqBsoJ,EAAW36N,EAzLpC,EAAI,EAyL0CmgJ,EAAKngJ,EAzLnD,EAAI,EAyLwDmgJ,EAAKlgJ,EA1LjE,EAAI,EA0LuE06N,EAAW16N,GAC9F,IAAIwmF,EACJA,EAAU,GAAKwpD,cAAc,IAAKyqF,GAClC/9N,EAAKqzI,cAAcvpD,GACnBA,EAAU,GAAKwpD,cAAc,IAAK79D,EAAUC,EAAUsoJ,GACtDh+N,EAAKqzI,cAAcvpD,GAnBP+0I,CAAoBzwK,EAAQpuD,EAAM+rB,EAAK9zD,IAAK8zD,EAAK35D,MAAOwsQ,EAAS3mQ,QAItE+nC,EAiBX,IAAIu+N,GACAO,GACG,MAAMC,GAAW,SAAUl8B,EAAaC,EAAa66B,EAAaltQ,EAAU,IAC/E8tQ,GAAe,GACfO,GAAgB,GAnMpB,SAAuBnhP,GACnB,IAAIqhP,EAAarhP,EAAK0+L,MAAM4iD,oBAmB5B,GAjBkB,MAAdD,IACAA,EAAarhP,EAAK0+L,MAAM4iD,oBAAsB,GAK9CthP,EAAK0+L,MAAMnjM,GAAG,eAAgB,KAC1B,MAAMhd,EAAOyhB,EAAK0+L,MAAM4iD,oBACxB,IAAK,IAAIlxQ,EAAI,EAAGA,EAAImO,EAAKzJ,OAAQ1E,GAAK,EAClCmO,EAAKnO,GAAGwuD,WAGhB5+B,EAAK0+L,MAAMnjM,GAAG,gBAAiB,KAC3B8lP,EAAarhP,EAAK0+L,MAAM4iD,oBAAsB,MAIlDD,EAAWzqQ,QAAQopB,GAAQ,EAAG,CAC9BqhP,EAAW1rQ,KAAKqqB,GAGhB,MAAMqgO,EAAQ,IAAMghB,EAAW7mQ,OAAO6mQ,EAAWzqQ,QAAQopB,GAAO,GAChEA,EAAKglN,KAAKn0N,KAAK,mBAAoBwvO,GACnCrgO,EAAKglN,KAAKn0N,KAAK,UAAWwvO,IA0K9BkhB,CAAcpuQ,MACd,MAAMutQ,EAAW5tQ,EAAQi9C,MAAQ,EAC3B4wN,EAAW7tQ,EAAQ4B,MAAQ,MAC3B+7F,EAAS39F,EAAQ29F,QAAU,EAE3B+wK,EAAmB1uQ,EAAQ0uQ,kBAAoB,CAAC,UAChD9iD,EAAQvrN,KAAKurN,MAEb+iD,EADQ/iD,EAAMjyI,MACGi1L,WAEvB,GAAwB,IAApBD,EAAS3sQ,OACT,OAAOwvC,GAAUk8N,GAAYt7B,EAAaC,EAAa66B,GAAcU,EAAUC,EAAUlwK,GAE7F,MAAM1jC,EAAO55D,KAAK6xO,KACZ28B,EAAYF,EAAS7qQ,QAAQm2D,GAC7B60M,EAAmBljD,EAAM5rN,QAAQ21P,WAAW5tJ,WAAa,GAEzDgnK,EAAQJ,EAAS98P,OAAO,CAACijL,EAAMp/K,KACjC,MAAMqyF,EAAY+sF,EAAKk6E,gBAAkBF,EAEzC,OAAIJ,EAAiBnwN,SAASwpD,EAAUlqG,UAKpC6X,EAAMm5P,IACoB,aAAnB9mK,EAAUlqG,QAKnBoxQ,EAAYF,EAAMnoQ,IAAKqzD,GAClB2xJ,EAAM39F,SAASihJ,eAAej1M,IAGnCk1M,EAAYzB,GAAYt7B,EAAaC,EAAa66B,GAElDkC,EAAYH,EAAUroQ,IAAKmlQ,GACb,MAAZA,EACO,GAEPA,IAAa1rQ,KACN8uQ,EAEJzB,GAAY3B,EAAS35B,YAAa25B,EAAS15B,YAAa05B,EAASmB,cAItEmC,EAAe,GACrBF,EAAU3jO,QAAS8vB,IAGf,MAAMm+D,EAAgBs1I,EACjBljO,OAAO,CAAC8B,EAAMmnJ,EAAMx3L,KAErB,GAAIw3L,IAAS76H,EAAM,CACf,MAAMq1M,EApNtB,SAA+Bh0M,EAAMi0M,GACjC,MAAM91I,EAAgB,GAOtB,OANA81I,EAAgB/jO,QAASgkO,IACrB,MAAMrsN,EAAemY,EAAKyB,mBAAmByyM,GACzCrsN,GACAs2E,EAAc52H,KAAKsgD,KAGpBs2E,EA4M+Bg2I,CAAsBn0M,EAAM8zM,EAAU9xQ,IAChEqwC,EAAK9qC,QAAQysQ,GAEjB,OAAO3hO,GACR,IACElmC,KAAK,CAAC4D,EAAGC,IAAMqiQ,GAAYryM,EAAK35D,MAAO0J,GAAKsiQ,GAAYryM,EAAK35D,MAAO2J,IACrEmuH,EAAcz3H,OAAS,EAEvBqtQ,EAAaxsQ,QA5MzB,SAAqBy4D,EAAMm+D,EAAem0I,GACtC,OAAOn0I,EAAc5tF,OAAO,CAAC8B,EAAM6oB,EAAO9gD,KAGtC,GAAI24P,GAAc9vN,SAASiY,GACvB,OAAO7oB,EAGX,MAAMwuJ,EAAWxuJ,EAAKpiC,OAAS+vD,EAEzBo0M,EAAY,GAAM9wQ,OAAO43D,GAAOR,KAAKmmI,EAASx6L,OAAQisQ,GAC5D,IAAI+B,EAAU,GAAM/wQ,OAAO43D,GAAOR,KAAKmmI,EAASx6L,OAAQisQ,GAExD,MAAMj9F,EAAYl3C,EAAc/jH,EAAM,GACtC,GAAiB,MAAbi7J,EAAmB,CACnB,MAAMz/G,EAAWy+M,EAAQz+M,SAASy/G,GAC9Bz/G,GAAY08M,IAGZ+B,EAAUh/F,EAAU36G,KAAKmmI,EAASx6L,MAAOuvD,GACzCm9M,GAAcxrQ,KAAK8tK,QAGtB,CAKD,GAFoB++F,EAAUx+M,SAASirI,EAAS30L,KAEnB,EAAXomQ,EAvFE,EAyFhB,OADAjgO,EAAK9qC,KAAKs5L,GACHxuJ,EAIf,GADsBgiO,EAAQz+M,SAASirI,EAASx6L,OACjB,EAAXisQ,EA7FI,EAgGpB,OADAjgO,EAAK9qC,KAAKs5L,GACHxuJ,EAGX,MAAMiiO,EAAW,IAAI,GAAKF,EAAWC,GAIrC,OAFA7B,GAAajrQ,KAAK+sQ,GAClBjiO,EAAK9qC,KAAK,IAAI,GAAKs5L,EAASx6L,MAAO+tQ,GAAYE,EAAU,IAAI,GAAKD,EAASxzE,EAAS30L,MAC7EmmC,GACR,IA+J0BkiO,CAAYv0M,EAAMm+D,EAAem0I,IAItDyB,EAAaxsQ,KAAKy4D,KAG1B,MAAM/rB,EAAOiC,GAAU69N,EAAczB,EAAUC,EAAUlwK,GAGzD,OAFAmwK,GAAe,GACfO,GAAgB,GACTruQ,EAAQ2hB,IAAM4tB,EAAOA,EAAKxP,aClR9B,IAAI,GACA+vO,OAMR,KAAc,GAAY,KALfh8B,QAAU,EACpBg8B,GAAU/7B,SAAW,GAASn1O,OAAO,CACjCgD,KAAM,cAEVkuQ,GAAU/7B,SAASn9F,SAASk5H,GAAUh8B,SAAS,GCW5C,MAAM,GAAS,GAASl1O,OCjBxB,MAAM,GACT,YAAYszO,GACR7xO,KAAK6xO,KAAOA,EACZ7xO,KAAK0vQ,IAAM,GACX1vQ,KAAKqP,MAAQ,GAEjB,MACI,OAAO1R,OAAOyR,KAAKpP,KAAK0vQ,KAE5B,MAAMxgO,EAAMygO,EAAahwQ,EAAU,GAAImvL,EAAQ,KAC3C,MAAM8gF,EAAa5vQ,KAAK6xO,KAAKg+B,cAAc3gO,GACrC4gO,EAAe,EAAU5jO,SAASvsC,EAAS,GAAUu4O,gBACrD63B,EAAS/vQ,KAAKgwQ,UAAUF,EAAaC,QACrCzlJ,EAActqH,KAAKiwQ,UAAUH,EAAaI,OAAQN,EAAYD,GACpE,IAAIz2O,EAAY,EAChB,MAAM16B,EAAM0C,MAAMD,QAAQiuC,GAAQA,EAAKlgC,KAAK8/K,GAAS5/I,EAC/CiN,EAAQj7C,MAAMD,QAAQiuC,GAAQA,EAAOA,EAAK/lC,MAAM2lL,GAChDqhF,EAAU,KACZ,MAAMnkP,GAAM,IAAI1hB,MAAO83D,UACL,IAAdlpC,IACAA,EAAYlN,GAGhB,IAAIrN,GADWqN,EAAMkN,GACG42O,EAAa14O,SACjCzY,EAAW,EACX3e,KAAK0vQ,IAAIlxQ,GAAO,EAAI45B,sBAAsB+3O,GAG1CxxP,EAAW,EAEf,MAAMoG,EAAeulG,EAAYylJ,EAAOpxP,IACxC3e,KAAK6xO,KAAKu+B,cAAcj0N,EAAOp3B,GAC3BplB,EAAQgf,UACRhf,EAAQgf,SAAShhB,OAAO+rD,OAAO,CAAE/qC,WAAUoG,gBAAgB/kB,KAAKqwQ,QAAQ7xQ,KAE3D,IAAbmgB,IAEA3e,KAAK6xO,KAAKjzN,OAAO,iBAAkB5e,KAAKqwQ,QAAQ7xQ,IAChDwB,KAAK6xO,KAAKjzN,OAAO,sBAAuB5e,KAAKqwQ,QAAQ7xQ,IACrDmB,EAAQ+5B,UAAY/5B,EAAQ+5B,SAAS15B,KAAKqwQ,QAAQ7xQ,IAClDwB,KAAK6xO,KAAKjzN,OAAO,oBAAqB5e,KAAKqwQ,QAAQ7xQ,IACnDmB,EAAQq7B,QAAUr7B,EAAQq7B,OAAOh7B,KAAKqwQ,QAAQ7xQ,IAC9CwB,KAAKktP,MAAM1uP,KAYnB,OATAohB,WAAW,KACP5f,KAAKyjB,KAAKyrB,OAAMhtC,EAAW4sL,GAC3B9uL,KAAKqP,MAAM7Q,GAAO,CAAEoxQ,aAAYD,cAAahwQ,QAASmwQ,GACtD9vQ,KAAK0vQ,IAAIlxQ,GAAO,EAAI45B,sBAAsB+3O,GAE1CnwQ,KAAK6xO,KAAKjzN,OAAO,mBAAoB5e,KAAKqwQ,QAAQ7xQ,IAClDwB,KAAK6xO,KAAKjzN,OAAO,mBAAoB5e,KAAKqwQ,QAAQ7xQ,IAClDmB,EAAQ2B,OAAS3B,EAAQ2B,MAAMtB,KAAKqwQ,QAAQ7xQ,KAC7CmB,EAAQi8B,OACJ57B,KAAKyjB,KAAKhlB,KAAKuB,KAAMkvC,EAAM4/I,EAAOnvL,GAE7C,KAAKuvC,EAAMvvC,EAAU,GAAImvL,EAAQ,KAC7B,MAAM3yI,EAAQj7C,MAAMD,QAAQiuC,GAAQA,EAAOA,EAAK/lC,MAAM2lL,GAsBtD,OArBAnxL,OAAOyR,KAAKpP,KAAK0vQ,KACZl+P,OAAQhT,GAAQ,EAAUmpD,QAAQxL,EAAO39C,EAAI2K,MAAM2lL,GAAOxrL,MAAM,EAAG64C,EAAMx6C,UACzEwpC,QAAS3sC,IACV,EAAIigJ,qBAAqBz+I,KAAK0vQ,IAAIlxQ,IAClC,MAAM+jB,EAAOviB,KAAKqP,MAAM7Q,GAClB8xQ,EAAatwQ,KAAKqwQ,QAAQ7xQ,GAC1BsxQ,EAAenyQ,OAAO+rD,OAAO/rD,OAAO+rD,OAAO,GAAInnC,EAAK5iB,SAAUA,GAC9D4wQ,EAAcT,EAAaS,YAC7BA,GAAmC,MAApBhuP,EAAKotP,cACpB3vQ,KAAK6xO,KAAKu+B,cAAc5xQ,EAAK+jB,EAAKotP,aAClC3vQ,KAAK6xO,KAAKjzN,OAAO,iBAAkBjhB,OAAO+rD,OAAO,GAAI4mN,IACrDtwQ,KAAK6xO,KAAKjzN,OAAO,sBAAuBjhB,OAAO+rD,OAAO,GAAI4mN,IAC1DR,EAAap2O,UAAYo2O,EAAap2O,SAAS/7B,OAAO+rD,OAAO,GAAI4mN,KAErE,MAAME,EAAW7yQ,OAAO+rD,OAAO,CAAE6mN,eAAeD,GAChDtwQ,KAAK6xO,KAAKjzN,OAAO,kBAAmBjhB,OAAO+rD,OAAO,GAAI8mN,IACtDV,EAAarsP,MAAQqsP,EAAarsP,KAAK9lB,OAAO+rD,OAAO,GAAI8mN,IACzDxwQ,KAAK6xO,KAAKjzN,OAAO,oBAAqBjhB,OAAO+rD,OAAO,GAAI4mN,IACxDR,EAAa90O,QAAU80O,EAAa90O,OAAOr9B,OAAO+rD,OAAO,GAAI4mN,IAC7DtwQ,KAAKktP,MAAM1uP,KAERwB,KAEX,MAAMxB,UACKwB,KAAK0vQ,IAAIlxQ,UACTwB,KAAKqP,MAAM7Q,GAEtB,UAAUuxQ,GACN,MAAyB,iBAAXA,EAAsBjqB,GAAOiqB,GAAUA,EAEzD,UAAUG,EAAQN,EAAYD,GAC1B,OAAIO,EACOA,EAAON,EAAYD,GAEH,iBAAhBA,EACA5pB,GAAOvpM,OAAOozN,EAAYD,GAEV,iBAAhBA,EACgB,MAAnBA,EAAY,GACL5pB,GAAOlvI,MAAM+4J,EAAYD,GAE7B5pB,GAAO9gO,KAAK2qP,EAAYD,GAE5B5pB,GAAOpnP,OAAOixQ,EAAYD,GAErC,QAAQnxQ,GACJ,MAAM+jB,EAAOviB,KAAKqP,MAAM7Q,GACxB,MAAO,CACH0wC,KAAM1wC,EACNoxQ,WAAYrtP,EAAKqtP,WACjBD,YAAaptP,EAAKotP,YAClB99B,KAAM7xO,KAAK6xO,QAUpB,KAAc,GAAY,KALfqG,eAAiB,CACvBt8M,MAAO,GACPxE,SAAU,IACV24O,OAAQ,UCvHhB,IAAI,GAA0C,SAAU7pB,EAAYx+O,EAAQlJ,EAAK2nP,GAC7E,IAA2H5oP,EAAvHD,EAAImJ,UAAU9E,OAAQ5D,EAAIT,EAAI,EAAIoK,EAAkB,OAATy+O,EAAgBA,EAAOxoP,OAAOkrE,yBAAyBnhE,EAAQlJ,GAAO2nP,EACrH,GAAuB,iBAAZ9gL,SAAoD,mBAArBA,QAAQ+gL,SAAyBroP,EAAIsnE,QAAQ+gL,SAASF,EAAYx+O,EAAQlJ,EAAK2nP,QACpH,IAAK,IAAIlpP,EAAIipP,EAAWvkP,OAAS,EAAG1E,GAAK,EAAGA,KAASM,EAAI2oP,EAAWjpP,MAAIc,GAAKT,EAAI,EAAIC,EAAEQ,GAAKT,EAAI,EAAIC,EAAEmK,EAAQlJ,EAAKT,GAAKR,EAAEmK,EAAQlJ,KAAST,GAChJ,OAAOT,EAAI,GAAKS,GAAKJ,OAAOC,eAAe8J,EAAQlJ,EAAKT,GAAIA,GAIzD,MAAM,WAAc,GACvB,YAAYwkB,EAAO,IACfo8D,QACA3+E,KAAKgtE,SAAU,EACfhtE,KAAKywQ,UAAW,EAChBzwQ,KAAKuiB,KAAO,GACZviB,KAAK0wQ,OAAO,EAAUxpN,UAAU3kC,IAChCviB,KAAK09L,QAAU,GAEnB,OAAOn7K,EAAM5iB,EAAU,IACnB,MAAM6rD,GAA0B,IAAlB7rD,EAAQ6rD,MAChBqX,GAA4B,IAAnBljE,EAAQkjE,OACjB8tM,EAAU,GACVF,EAAWzwQ,KAAKywQ,SACtBzwQ,KAAKywQ,UAAW,EACXA,IACDzwQ,KAAKigD,SAAW,EAAUiH,UAAUlnD,KAAKuiB,MACzCviB,KAAK09L,QAAU,IAEnB,MAAM14J,EAAUhlC,KAAKuiB,KACf09B,EAAWjgD,KAAKigD,SAChBy9I,EAAU19L,KAAK09L,QAiCrB,GAhCA//L,OAAOyR,KAAKmT,GAAM4oB,QAASunB,IACvB,MAAMl0D,EAAMk0D,EACNje,EAAWlyB,EAAK/jB,GACjB,EAAUmpD,QAAQ3iB,EAAQxmC,GAAMi2C,IACjCk8N,EAAQnuQ,KAAKhE,GAEZ,EAAUmpD,QAAQ1H,EAASzhD,GAAMi2C,UAI3BipJ,EAAQl/L,GAHfk/L,EAAQl/L,GAAOi2C,EAKf+W,SACOxmB,EAAQxmC,GAGfwmC,EAAQxmC,GAAOi2C,KAGlBouB,GAAU8tM,EAAQhvQ,OAAS,IAC5B3B,KAAKgtE,SAAU,EACfhtE,KAAK4wQ,eAAiBjxQ,EACtBgxQ,EAAQxlO,QAAS3sC,IACbwB,KAAKk8E,KAAK,WAAY,CAClB19E,MACAmB,UACAkxQ,MAAO7wQ,KACPglC,QAASA,EAAQxmC,GACjByhD,SAAUA,EAASzhD,QAI3BiyQ,EACA,OAAOzwQ,KAEX,IAAK6iE,EAED,KAAO7iE,KAAKgtE,SACRhtE,KAAKgtE,SAAU,EACfhtE,KAAKk8E,KAAK,UAAW,CACjBl3C,UACAib,WACA4wN,MAAO7wQ,KACPL,QAASK,KAAK4wQ,iBAO1B,OAHA5wQ,KAAKgtE,SAAU,EACfhtE,KAAKywQ,UAAW,EAChBzwQ,KAAK4wQ,eAAiB,KACf5wQ,KAEX,IAAIxB,EAAKsb,GACL,GAAW,MAAPtb,EACA,OAAOwB,KAAKuiB,KAEhB,MAAMrc,EAAMlG,KAAKuiB,KAAK/jB,GACtB,OAAc,MAAP0H,EAAc4T,EAAe5T,EAExC,YAAY1H,GACR,GAAIwB,KAAKigD,SAAU,CACf,MAAM/5C,EAAMlG,KAAKigD,SAASzhD,GAC1B,OAAc,MAAP0H,OAAchE,EAAYgE,GAIzC,IAAI1H,EAAKN,EAAOyB,GASZ,OARW,MAAPnB,IACmB,iBAARA,EACPwB,KAAK0wQ,OAAOlyQ,EAAKN,GAGjB8B,KAAK0wQ,OAAO,CAAE,CAAClyQ,GAAMN,GAASyB,IAG/BK,KAEX,OAAOxB,EAAKmB,GACR,MACMmxQ,EAAS,GACf,IAAI13O,EACJ,GAAmB,iBAAR56B,EACPsyQ,EAAOtyQ,QAJG0D,EAKVk3B,EAAOz5B,OAEN,GAAIuB,MAAMD,QAAQzC,GACnBA,EAAI2sC,QAASunB,GAAOo+M,EAAOp+M,QARjBxwD,GASVk3B,EAAOz5B,MAEN,CAED,IAAK,MAAMnB,KAAOwB,KAAKuiB,KACnBuuP,EAAOtyQ,QAdD0D,EAgBVk3B,EAAO56B,EAGX,OADAwB,KAAK0wQ,OAAOI,EAAQnzQ,OAAO+rD,OAAO/rD,OAAO+rD,OAAO,GAAItwB,GAAO,CAAEoyB,OAAO,KAC7DxrD,KAEX,UAAUkvC,GACN,OAAO,EAAUk/I,UAAUpuL,KAAKuiB,KAAM2sB,EAAM,KAEhD,UAAUA,EAAMhxC,EAAOyB,EAAU,IAC7B,MACMyoL,EAAYlnL,MAAMD,QAAQiuC,GAAQ,IAAIA,GAAQA,EAAK/lC,MAD3C,KAERg/K,EAAajnL,MAAMD,QAAQiuC,GAAQA,EAAKlgC,KAFhC,KAE8CkgC,EACtDtwC,EAAWwpL,EAAU,GACrB2oF,EAAkB3oF,EAAUzmL,OAIlC,GAHAhC,EAAQqxQ,aAAe7oF,EACvBxoL,EAAQsxQ,cAAgB/yQ,EACxByB,EAAQuxQ,kBAAoB9oF,EACJ,IAApB2oF,EACA/wQ,KAAKsiB,IAAI1jB,EAAUV,EAAOyB,OAEzB,CACD,MAAM8rD,EAAS,GACf,IAAIyhL,EAAQzhL,EACR0lN,EAAUvyQ,EAId,IAAK,IAAI3B,EAAI,EAAGA,EAAI8zQ,EAAiB9zQ,GAAK,EAAG,CACzC,MAAMuB,EAAM4pL,EAAUnrL,GAChBm0Q,EAAel1M,OAAO9lC,SAAS8lC,OAAO19D,IAC5C0uO,EAAQA,EAAMikC,GAAWC,EAAe,GAAK,GAC7CD,EAAU3yQ,EAGd,EAAU2vL,UAAU1iI,EAAQ28H,EAAWlqL,EAzB7B,KA0BV,MAAMqkB,EAAO,EAAU2kC,UAAUlnD,KAAKuiB,MAGlC5iB,EAAQs+P,SACR,EAAU/vE,YAAY3rK,EAAM2sB,EA9BtB,KAgCV,MAAM+/B,EAAS,EAAU9oE,MAAMoc,EAAMkpC,GACrCzrD,KAAKsiB,IAAI1jB,EAAUqwE,EAAOrwE,GAAWe,GAEzC,OAAOK,KAEX,aAAakvC,EAAMvvC,GACf,MAAMyP,EAAOlO,MAAMD,QAAQiuC,GAAQA,EAAOA,EAAK/lC,MAAM,KAC/C3K,EAAM4Q,EAAK,GACjB,GAAoB,IAAhBA,EAAKzN,OACL3B,KAAK4d,OAAOpf,EAAKmB,OAEhB,CACD,MAAMw8C,EAAQ/sC,EAAK9L,MAAM,GACnBkf,EAAO,EAAU0kC,UAAUlnD,KAAKlC,IAAIU,IACtCgkB,GACA,EAAU0rK,YAAY1rK,EAAM25B,GAEhCn8C,KAAKsiB,IAAI9jB,EAAKgkB,EAAM7iB,GAExB,OAAOK,KAEX,WAAWxB,GACP,OAAW,MAAPA,EACOb,OAAOyR,KAAKpP,KAAK09L,SAAS/7L,OAAS,EAEvCnD,KAAOwB,KAAK09L,QAOvB,WAAWztL,GACP,GAAY,MAARA,EACA,OAAOjQ,KAAKsyP,aAAe,EAAUprM,UAAUlnD,KAAK09L,SAAW,KAEnE,MAAMzsK,EAAMjxB,KAAKywQ,SAAWzwQ,KAAKigD,SAAWjgD,KAAKuiB,KAC3Cm7K,EAAU,GAChB,IAAI40D,EAEJ,IAAK,MAAM9zP,KAAOyR,EAAM,CACpB,MAAMpL,EAAMoL,EAAKzR,GACZ,EAAUmpD,QAAQ12B,EAAIzyB,GAAMqG,KAC7B64L,EAAQl/L,GAAOqG,EACfytP,GAAa,GAGrB,OAAOA,EAAa,EAAUprM,UAAUw2I,GAAW,KAKvD,SACI,OAAO,EAAUx2I,UAAUlnD,KAAKuiB,MAEpC,QAEI,OAAO,IAAI1c,EADS7F,KAAK6F,aACF7F,KAAKuiB,MAEhC,UACIviB,KAAKyoB,MACLzoB,KAAKuiB,KAAO,GACZviB,KAAKigD,SAAW,GAChBjgD,KAAK09L,QAAU,GACf19L,KAAKgtE,SAAU,EACfhtE,KAAKywQ,UAAW,EAChBzwQ,KAAK4wQ,eAAiB,KACtB5wQ,KAAKkpB,QAAQ,WAAY,CAAE2nP,MAAO7wQ,QAG1C,GAAW,CACP,GAASiwH,WACV,GAAMpxH,UAAW,UAAW,MC5O/B,ICDWwyQ,GDCP,GAA0C,SAAUnrB,EAAYx+O,EAAQlJ,EAAK2nP,GAC7E,IAA2H5oP,EAAvHD,EAAImJ,UAAU9E,OAAQ5D,EAAIT,EAAI,EAAIoK,EAAkB,OAATy+O,EAAgBA,EAAOxoP,OAAOkrE,yBAAyBnhE,EAAQlJ,GAAO2nP,EACrH,GAAuB,iBAAZ9gL,SAAoD,mBAArBA,QAAQ+gL,SAAyBroP,EAAIsnE,QAAQ+gL,SAASF,EAAYx+O,EAAQlJ,EAAK2nP,QACpH,IAAK,IAAIlpP,EAAIipP,EAAWvkP,OAAS,EAAG1E,GAAK,EAAGA,KAASM,EAAI2oP,EAAWjpP,MAAIc,GAAKT,EAAI,EAAIC,EAAEQ,GAAKT,EAAI,EAAIC,EAAEmK,EAAQlJ,EAAKT,GAAKR,EAAEmK,EAAQlJ,KAAST,GAChJ,OAAOT,EAAI,GAAKS,GAAKJ,OAAOC,eAAe8J,EAAQlJ,EAAKT,GAAIA,GAE5D,GAAkC,SAAUiB,EAAG6O,GAC/C,IAAI1P,EAAI,GACR,IAAK,IAAIY,KAAKC,EAAOrB,OAAOkB,UAAUC,eAAe1B,KAAK4B,EAAGD,IAAM8O,EAAEpK,QAAQ1E,GAAK,IAC9EZ,EAAEY,GAAKC,EAAED,IACb,GAAS,MAALC,GAAqD,mBAAjCrB,OAAOsxG,sBACtB,KAAIhyG,EAAI,EAAb,IAAgB8B,EAAIpB,OAAOsxG,sBAAsBjwG,GAAI/B,EAAI8B,EAAE4C,OAAQ1E,IAC3D4Q,EAAEpK,QAAQ1E,EAAE9B,IAAM,GAAKU,OAAOkB,UAAUwxD,qBAAqBjzD,KAAK4B,EAAGD,EAAE9B,MACvEkB,EAAEY,EAAE9B,IAAM+B,EAAED,EAAE9B,KAE1B,OAAOkB,GAQJ,MAAM,WAAa,GACtB,YAAYmzQ,EAAW,IACnB3yL,QACA,MACMzyC,EADOlsC,KAAK6F,YACIitP,aAAY,GAC5BnnO,EAAQ,EAAUxlB,MAAM,GAAInG,KAAKuxQ,WAAWrlO,GAAWlsC,KAAKuxQ,WAAWD,IAC7EtxQ,KAAKwO,GAAKmd,EAAMnd,IAAM,EAAUy9G,OAChCjsH,KAAK6wQ,MAAQ,IAAI,GAAMllP,GACvB3rB,KAAK24B,UAAY,IAAI,GAAU34B,MAC/BA,KAAKiqB,QACLjqB,KAAK2F,OACL3F,KAAKwxQ,YAAYF,GAErB,cAAc79B,GACV,MAAM,OAAEn2G,EAAM,UAAEtmG,EAAS,UAAEsF,GAAcm3M,EAASO,EAAS,GAAOP,EAAS,CAAC,SAAU,YAAa,cACrF,MAAVn2G,IACAt9H,KAAKs9H,OAASA,GAEdtmG,IACAh3B,KAAKg3B,UAAYh3B,KAAKg3B,UAAU1zB,QAC5BpC,MAAMD,QAAQ+1B,GACdh3B,KAAKg3B,UAAUx0B,QAAQw0B,GAEG,mBAAdA,EACZh3B,KAAKg3B,UAAUx0B,KAAKw0B,GAGpBr5B,OAAOyR,KAAK4nB,GAAWmU,QAAS3tC,IAC5B,MAAMkC,EAAOs3B,EAAUx5B,GACH,mBAATkC,GACPM,KAAKg3B,UAAUx0B,KAAK9C,MAKhC48B,IACAt8B,KAAKs8B,UAAY3+B,OAAO+rD,OAAO/rD,OAAO+rD,OAAO,GAAI1pD,KAAKs8B,WAAYA,IAEtEt8B,KAAKksC,SAAW,EAAU/lC,MAAM,GAAInG,KAAKksC,SAAU8nM,GAEvD,mBACI,OAAOh0O,KAAKs9H,OAEhB,mBAAmBh8G,GACf,OAAQA,EAAMthB,KAAKksC,SAAW,EAAUgb,UAAUlnD,KAAKksC,UAE3D,sBACI,OAAOlsC,KAAKs8B,UAEhB,sBAAsBu1M,EAAMy/B,GACxB,OAAOtxQ,KAAKg3B,UAAUwU,OAAO,CAAC8B,EAAM5tC,IACzBA,EAAO,EAAYtC,KAAKsC,EAAMmyO,EAAMvkM,GAAQA,EACpDgkO,GAGPxzQ,IAAKE,OAAOC,eACR,OAAO,GAAKA,YAEhB,QAEA,YACI,OAAO+B,KAAKyxQ,OAEhB,UAAUn4L,GACFt5E,KAAKyxQ,SAAWn4L,IAChBt5E,KAAKyxQ,OAASn4L,GAItB,WAAWg4L,EAAUI,GACjB,MAAMljQ,EAAK8iQ,EAAS9iQ,GAEdmd,EADO3rB,KAAK6F,YACC8rQ,eAAe3xQ,KAAMsxQ,GAIxC,OAHU,MAAN9iQ,IAAgC,IAAlBkjQ,IACd/lP,EAAMnd,GAAK,EAAUy9G,QAElBtgG,EAEX,YAAY2lP,IACZ,QACItxQ,KAAK6wQ,MAAMzoP,GAAG,WAAakpP,IACvB,MAAM,IAAE9yQ,EAAG,QAAEwmC,EAAO,SAAEib,EAAQ,QAAEtgD,GAAY2xQ,EAC5CtxQ,KAAK4e,OAAO,WAAY,CACpBpgB,MACAmB,UACAqlC,UACAib,WACA4xL,KAAM7xO,OAEVA,KAAK4e,OAAO,UAAUpgB,EAAO,CACzBmB,UACAqlC,UACAib,WACA4xL,KAAM7xO,OAEV,MAAMuB,EAAO/C,EACA,WAAT+C,GAA8B,WAATA,GACrBvB,KAAK4e,OAAO,kBAAmB,CAC3Brd,OACAyjC,UACAib,WACAtgD,UACAkyO,KAAM7xO,SAIlBA,KAAK6wQ,MAAMzoP,GAAG,UAAW,EAAGzoB,aAAcK,KAAK4e,OAAO,UAAW,CAAEjf,UAASkyO,KAAM7xO,QAEtF,OAAOxC,EAAM2X,GACTnV,KAAKkpB,QAAQ1rB,EAAM2X,GACnB,MAAMmkE,EAAQt5E,KAAKs5E,MAUnB,OATIA,IACAA,EAAM16D,OAAO,QAAQphB,EAAQ2X,GACzBnV,KAAK6sL,SACLvzG,EAAM16D,OAAO,QAAQphB,EAAQG,OAAO+rD,OAAO/rD,OAAO+rD,OAAO,GAAIv0C,GAAO,CAAExQ,KAAM3E,QAEvEA,KAAKykE,UACV6U,EAAM16D,OAAO,QAAQphB,EAAQG,OAAO+rD,OAAO/rD,OAAO+rD,OAAO,GAAIv0C,GAAO,CAAEykD,KAAM55D,SAG7EA,KAEX,SACI,OAAO,EAEX,SACI,OAAO,EAEX,YAAY6xO,GACR,OAAO7xO,KAAK6wQ,QAAUh/B,EAAKg/B,MAE/B,WACI,OAAO7wQ,KAAK6wQ,MAAM/yQ,IAAI,QAE1B,YACI,OAAOkC,KAAK6wQ,MAAM/yQ,IAAI,QAAS,IAEnC,QAAQU,EAAKsb,GACT,OAAW,MAAPtb,EACOwB,KAAK6wQ,MAAM/yQ,MAEfkC,KAAK6wQ,MAAM/yQ,IAAIU,EAAKsb,GAE/B,QAAQtb,EAAKN,EAAOyB,GAChB,GAAmB,iBAARnB,EACPwB,KAAK6wQ,MAAMvuP,IAAI9jB,EAAKN,EAAOyB,OAE1B,CACD,MAAMgsB,EAAQ3rB,KAAKuxQ,WAAW/yQ,GAAK,GACnCwB,KAAK6wQ,MAAMvuP,IAAI,EAAUnc,MAAM,GAAInG,KAAK4xQ,UAAWjmP,GAAQztB,GAC3D8B,KAAKwxQ,YAAYhzQ,GAErB,OAAOwB,KAEX,WAAWxB,EAAKmB,GAOZ,MANmB,iBAARnB,GAAoB0C,MAAMD,QAAQzC,GACzCwB,KAAK6wQ,MAAMgB,aAAarzQ,EAAKmB,GAG7BK,KAAK6wQ,MAAMjzP,OAAOje,GAEfK,KAEX,WAAWxB,GACP,OAAc,MAAPA,EAAcwB,KAAK6wQ,MAAMve,aAAetyP,KAAK6wQ,MAAMve,WAAW9zP,GAEzE,cAAc0wC,GACV,OAAOlvC,KAAK6wQ,MAAMziF,UAAUl/I,GAEhC,cAAcA,EAAMhxC,EAAOyB,EAAU,IAejC,OAdIK,KAAKs5E,QAEQ,aAATpqC,EACAlvC,KAAKswH,UAAYpyH,EACXA,EACGqI,IAAKiI,GAAOxO,KAAKs5E,MAAMysL,QAAQv3P,IAC/BgD,OAAQw1D,GAAmB,MAATA,GACrB,KAEQ,WAAT93B,IACLlvC,KAAK8xQ,QAAU5zQ,EAAQ8B,KAAKs5E,MAAMysL,QAAQ7nQ,GAAS,OAG3D8B,KAAK6wQ,MAAM1iF,UAAUj/I,EAAMhxC,EAAOyB,GAC3BK,KAEX,iBAAiBkvC,EAAMvvC,EAAU,IAC7B,MAAMw8C,EAAQj7C,MAAMD,QAAQiuC,GAAQA,EAAOA,EAAK/lC,MAAM,KAQtD,MAJiB,UAAbgzC,EAAM,KACNx8C,EAAQmzC,OAAQ,GAEpB9yC,KAAK6wQ,MAAMgB,aAAa11N,EAAOx8C,GACxBK,KAEX,KAAKxB,EAAKN,EAAOyB,GACb,OAAW,MAAPnB,EACOwB,KAAK4xQ,UAEG,iBAARpzQ,GAAoB0C,MAAMD,QAAQzC,GAChB,IAArBiI,UAAU9E,OACH3B,KAAK6vQ,cAAcrxQ,GAEjB,MAATN,EACO8B,KAAK+xQ,iBAAiBvzQ,EAAKmB,GAAW,IAE1CK,KAAKowQ,cAAc5xQ,EAAKN,EAAOyB,GAAW,IAE9CK,KAAK8qF,QAAQtsF,EAAKN,GAAS,IAEtC,SAASV,GACL,OAAOwC,KAAK6wQ,MAAMmB,YAAYx0Q,GAIlC,aACI,OAAOwC,KAAKi3K,YAEhB,WAAW5mE,GACE,MAALA,EACArwG,KAAKiyQ,eAGLjyQ,KAAKkyQ,UAAU7hK,GAGvB,YACI,OAAOrwG,KAAK6wQ,MAAM/yQ,IAAI,UAE1B,UAAUuyG,EAAG1wG,EAAU,IAEnB,OADAK,KAAK6wQ,MAAMvuP,IAAI,SAAU+tF,EAAG1wG,GACrBK,KAEX,aAAaL,EAAU,IAEnB,OADAK,KAAK6wQ,MAAMjzP,OAAO,SAAUje,GACrBK,KAEX,QAAQL,EAAU,IACd,MAAM25E,EAAQt5E,KAAKs5E,MACnB,GAAIA,EAAO,CACP,IACI64L,EADA9hK,EAAI/2B,EAAM84L,eAEVzyQ,EAAQgI,MACRwqQ,EAAQnyQ,KAAKqyQ,eAAe,CAAE1qQ,MAAM,EAAM2qQ,cAAc,IACxDH,EAAMr/P,QAAQ9S,OAGdmyQ,EAAQ,CAACnyQ,MAEbqwG,EAAIA,EAAI8hK,EAAMxwQ,OAAS,EACvB,MAAMiiB,EAAQ01D,EAAMve,QACpB,IAAI2iI,EAAUpkH,EAAM71E,QAAQzD,QAAU4jB,EAAQuuP,EAAMxwQ,OAC/C+7L,IACDA,EAAUy0E,EAAM7rN,KAAK,CAACurL,EAAMnwO,IAAUmwO,EAAK56D,cAAgB5mE,EAAI3uG,IAE/Dg8L,GACA19L,KAAKuyQ,YAAY,WAAY,KACzBliK,GAAK8hK,EAAMxwQ,OACXwwQ,EAAMhnO,QAAQ,CAAC0mM,EAAMnwO,KACjBmwO,EAAKqgC,UAAU7hK,EAAI3uG,EAAO/B,OAK1C,OAAOK,KAEX,OAAOL,EAAU,IACb,MAAM25E,EAAQt5E,KAAKs5E,MACnB,GAAIA,EAAO,CACP,IACI64L,EADA9hK,EAAI/2B,EAAMk5L,eAEV7yQ,EAAQgI,MACRwqQ,EAAQnyQ,KAAKqyQ,eAAe,CAAE1qQ,MAAM,EAAM2qQ,cAAc,IACxDH,EAAMr/P,QAAQ9S,OAGdmyQ,EAAQ,CAACnyQ,MAEb,IAAI09L,EAAkC,IAAxBpkH,EAAM71E,QAAQzD,MACvB09L,IACDA,EAAUy0E,EAAM7rN,KAAK,CAACurL,EAAMnwO,IAAUmwO,EAAK56D,cAAgB5mE,EAAI3uG,IAE/Dg8L,GACA19L,KAAKuyQ,YAAY,UAAW,KACxBliK,GAAK8hK,EAAMxwQ,OACXwwQ,EAAMhnO,QAAQ,CAAC0mM,EAAMnwO,KACjBmwO,EAAKqgC,UAAU7hK,EAAI3uG,EAAO/B,OAK1C,OAAOK,KAIX,aACI,OAAOA,KAAKyyQ,YAEhB,WAAWv0Q,GACM,MAATA,EACA8B,KAAK0yQ,eAGL1yQ,KAAK2yQ,UAAUz0Q,GAGvB,YACI,IAAIo/H,EAASt9H,KAAK6wQ,MAAM/yQ,IAAI,UAC5B,GAAc,MAAVw/H,EAAgB,CAEhBA,EADat9H,KAAK6F,YACJ4sQ,YAElB,OAAOn1I,EAEX,UAAUA,EAAQ39H,EAAU,IAExB,OADAK,KAAK6wQ,MAAMvuP,IAAI,SAAUg7G,EAAQ39H,GAC1BK,KAEX,aAAaL,EAAU,IAEnB,OADAK,KAAK6wQ,MAAMjzP,OAAO,SAAUje,GACrBK,KAIX,YACI,OAAOA,KAAK4yQ,WAEhB,UAAU10Q,GACO,MAATA,EACA8B,KAAK6yQ,cAGL7yQ,KAAKiwP,SAAS/xP,GAGtB,WACI,MAAMiD,EAASnB,KAAK6wQ,MAAM/yQ,IAAI,SAC9B,OAAOqD,EAASxD,OAAO+rD,OAAO,GAAIvoD,GAAU,GAEhD,SAASyO,EAAOjQ,EAAU,IACtB,GAAa,MAATiQ,EACA5P,KAAK6yQ,YAAYlzQ,OAEhB,CACD,MAAM2iB,EAAO1S,GAAU5P,KAAK6wQ,MAAMvuP,IAAI,QAAS1S,EAAOjQ,GACtD,IAA0B,IAAtBA,EAAQmsC,UACRxpB,EAAI1S,OAEH,CACD,MAAMuL,EAAOnb,KAAK4yQ,YACG,IAAjBjzQ,EAAQgI,KACR2a,EAAI3kB,OAAO+rD,OAAO/rD,OAAO+rD,OAAO,GAAIvuC,GAAOvL,IAG3C0S,EAAI,EAAUnc,MAAM,GAAIgV,EAAMvL,KAI1C,OAAO5P,KAEX,aAAa4P,EAAOjQ,EAAU,IAC1B,OAAOK,KAAKiwP,SAASrgP,EAAOjS,OAAO+rD,OAAO/rD,OAAO+rD,OAAO,GAAI/pD,GAAU,CAAEmsC,WAAW,KAEvF,YAAYl8B,EAAOjQ,EAAU,IACzB,OAAOK,KAAKiwP,SAASrgP,EAAOjS,OAAO+rD,OAAO/rD,OAAO+rD,OAAO,GAAI/pD,GAAU,CAAEgI,MAAM,KAElF,YAAYhI,EAAU,IAElB,OADAK,KAAK6wQ,MAAMjzP,OAAO,QAASje,GACpBK,KAEX,kBAAkB4vO,GACd,IAAKA,EACD,OAAO,KAEX,MACMrsN,EADOvjB,KAAK6F,YACCitQ,gBAAkB,GACrC,IAAIlvL,EAAargE,EAAMqsN,IAAa,GAAK8D,SAAS51O,IAAI8xO,GACtD,IAAKhsJ,EAAY,CACb,MAAMpmF,EAAO,EAAUukB,UAAU6tN,GACjChsJ,EAAargE,EAAM/lB,IAAS,GAAKk2O,SAAS51O,IAAIN,GAElD,OAAOomF,GAAc,KAEzB,cAAc10C,GACV,OAAY,MAARA,GAAyB,KAATA,EACTlvC,KAAK4yQ,WAET5yQ,KAAK6vQ,cAAc7vQ,KAAK+yQ,eAAe7jO,IAElD,cAAcA,EAAMhxC,EAAOyB,EAAU,IAEjC,OADAK,KAAKowQ,cAAcpwQ,KAAK+yQ,eAAe7jO,GAAOhxC,EAAOyB,GAC9CK,KAEX,iBAAiBkvC,EAAMvvC,EAAU,IAE7B,OADAK,KAAK+xQ,iBAAiB/xQ,KAAK+yQ,eAAe7jO,GAAOvvC,GAC1CK,KAEX,eAAekvC,GACX,OAAOhuC,MAAMD,QAAQiuC,GAAQ,CAAC,SAASluC,OAAOkuC,GAAQ,SAASA,EAEnE,KAAKA,EAAMhxC,EAAOyB,GACd,OAAY,MAARuvC,EACOlvC,KAAKgzQ,gBAEI,iBAAT9jO,GAAqBhuC,MAAMD,QAAQiuC,GACjB,IAArBzoC,UAAU9E,OACH3B,KAAKgzQ,cAAc9jO,GAEjB,MAAThxC,EACO8B,KAAKizQ,iBAAiB/jO,EAAMvvC,GAAW,IAE3CK,KAAKy6J,cAAcvrH,EAAMhxC,EAAOyB,GAAW,IAE/CK,KAAKiwP,SAAS/gN,EAAOhxC,GAAS,IAIzC,cACI,OAAO8B,KAAKyxG,YAEhB,YAAYvzG,GACR8B,KAAKkzQ,WAAWh1Q,GAEpB,WAAW0nC,EAASjmC,EAAU,IAE1B,OADAK,KAAK6wQ,MAAMvuP,IAAI,UAAWsjB,EAASjmC,GAC5BK,KAEX,YACI,OAAqC,IAA9BA,KAAK6wQ,MAAM/yQ,IAAI,WAE1B,KAAK6B,EAAU,IAIX,OAHKK,KAAKyxG,aACNzxG,KAAKkzQ,YAAW,EAAMvzQ,GAEnBK,KAEX,KAAKL,EAAU,IAIX,OAHIK,KAAKyxG,aACLzxG,KAAKkzQ,YAAW,EAAOvzQ,GAEpBK,KAEX,cAAcyxG,EAAW9xG,EAAU,IAC/B,MACMmwQ,EAAoC,kBAAdr+J,EAA0B9xG,EAAU8xG,EAOhE,OARqC,kBAAdA,EAA0BA,GAAazxG,KAAKyxG,aAG/DzxG,KAAKwlB,KAAKsqP,GAGV9vQ,KAAK0lB,KAAKoqP,GAEP9vQ,KAIX,WACI,OAAOA,KAAKijB,UAEhB,SAASpe,GACL7E,KAAK49F,QAAQ/4F,GAEjB,UACI,OAAO7E,KAAK6wQ,MAAM/yQ,IAAI,QAE1B,QAAQykB,EAAM5iB,EAAU,IACpB,GAAY,MAAR4iB,EACAviB,KAAKkjB,WAAWvjB,OAEf,CACD,MAAM2iB,EAAOC,GAASviB,KAAK6wQ,MAAMvuP,IAAI,OAAQC,EAAM5iB,GACnD,IAA0B,IAAtBA,EAAQmsC,UACRxpB,EAAIC,OAEH,CACD,MAAMpH,EAAOnb,KAAKijB,WACG,IAAjBtjB,EAAQgI,KACR2a,EAAoB,iBAATC,EAAoB5kB,OAAO+rD,OAAO/rD,OAAO+rD,OAAO,GAAIvuC,GAAOoH,GAAQA,GAG9ED,EAAI,EAAUnc,MAAM,GAAIgV,EAAMoH,KAI1C,OAAOviB,KAEX,YAAYuiB,EAAM5iB,EAAU,IACxB,OAAOK,KAAK49F,QAAQr7E,EAAM5kB,OAAO+rD,OAAO/rD,OAAO+rD,OAAO,GAAI/pD,GAAU,CAAEmsC,WAAW,KAErF,WAAWvpB,EAAM5iB,EAAU,IACvB,OAAOK,KAAK49F,QAAQr7E,EAAM5kB,OAAO+rD,OAAO/rD,OAAO+rD,OAAO,GAAI/pD,GAAU,CAAEgI,MAAM,KAEhF,WAAWhI,EAAU,IAEjB,OADAK,KAAK6wQ,MAAMjzP,OAAO,OAAQje,GACnBK,KAIX,aACI,OAAOA,KAAKmzQ,YAEhB,eACI,OAAOnzQ,KAAKozQ,cAEhB,cACI,OAAOpzQ,KAAK6wQ,MAAM/yQ,IAAI,UAE1B,YACI,MAAMu1Q,EAAWrzQ,KAAKszQ,cACtB,GAAID,GAAYrzQ,KAAKs5E,MAAO,CACxB,MAAMn5E,EAASH,KAAKs5E,MAAMysL,QAAQsN,GAElC,OADArzQ,KAAK8xQ,QAAU3xQ,EACRA,EAEX,OAAO,KAEX,cACI,MAAMozQ,EAAcvzQ,KAAK6wQ,MAAM/yQ,IAAI,YACnC,GAAIy1Q,GAAeA,EAAY5xQ,QAAU3B,KAAKs5E,MAAO,CACjD,MAAMr+D,EAAWs4P,EACZhtQ,IAAKiI,IAAS,IAAIslI,EAAI,OAA6B,QAArBA,EAAK9zI,KAAKs5E,aAA0B,IAAPw6D,OAAgB,EAASA,EAAGiyH,QAAQv3P,KAC/FgD,OAAQqgO,GAAiB,MAARA,GAEtB,OADA7xO,KAAKswH,UAAYr1G,EACV,IAAIA,GAEf,OAAO,KAEX,YACI,OAAsB,MAAfjb,KAAKG,OAEhB,WAAW6mE,GACP,OAAgB,MAATA,GAAiBA,EAAMmsM,cAAgBnzQ,KAElD,UAAUG,GACN,OAAiB,MAAVA,GAAkBH,KAAKmzQ,cAAgBhzQ,EAElD,UAAU+I,EAAUnJ,GAIhB,OAHIC,KAAKib,UACLjb,KAAKib,SAASkwB,QAAQjiC,EAAUnJ,GAE7BC,KAEX,YAAYwR,EAAQzR,GAChB,OAAOC,KAAKib,SAAWjb,KAAKib,SAASzJ,OAAOA,EAAQzR,GAAW,GAEnE,gBACI,OAAwB,MAAjBC,KAAKib,SAAmB,EAAIjb,KAAKib,SAAStZ,OAErD,cAAcqlE,GACV,OAAwB,MAAjBhnE,KAAKib,UAAoB,EAAIjb,KAAKib,SAASxX,QAAQujE,GAE9D,WAAWtlE,GACP,OAAwB,MAAjB1B,KAAKib,UAAoBvZ,GAAS,EAAI1B,KAAKib,SAASvZ,GAAS,KAExE,aAAa/B,EAAU,IACnB,MAAM6zQ,EAAY,GAClB,IAAIrzQ,EAASH,KAAKmzQ,YAClB,KAAOhzQ,GACHqzQ,EAAUhxQ,KAAKrC,GACfA,GAA0B,IAAjBR,EAAQgI,KAAiBxH,EAAOgzQ,YAAc,KAE3D,OAAOK,EAEX,eAAe7zQ,EAAU,IACrB,IAAqB,IAAjBA,EAAQgI,KAAgB,CAExB,GAAIhI,EAAQ2yQ,aAAc,CACtB,MAAMH,EAAQ,GACR50P,EAAQvd,KAAKozQ,eAAiB,GACpC,KAAO71P,EAAM5b,OAAS,GAAG,CACrB,MAAMxB,EAASod,EAAMhO,QACf0L,EAAW9a,EAAOizQ,cACxBjB,EAAM3vQ,KAAKrC,GACP8a,GACAsC,EAAM/a,QAAQyY,GAGtB,OAAOk3P,EAGX,CACI,MAAMA,EAAQnyQ,KAAKozQ,eAAiB,GAIpC,OAHAjB,EAAMhnO,QAAS0mM,IACXsgC,EAAM3vQ,QAAQqvO,EAAKwgC,eAAe1yQ,MAE/BwyQ,GAGf,OAAOnyQ,KAAKozQ,eAAiB,GAEjC,eAAelhL,EAAUvyF,EAAU,IAC/B,GAAgB,MAAZuyF,EACA,OAAO,EAEX,IAAqB,IAAjBvyF,EAAQgI,KAAgB,CACxB,IAAIq9B,EAAUhlC,KAAKmzQ,YACnB,KAAOnuO,GAAS,CACZ,GAAIA,IAAYktD,EACZ,OAAO,EAEXltD,EAAUA,EAAQmuO,YAEtB,OAAO,EAEX,OAAOnzQ,KAAKyzQ,UAAUvhL,GAE1B,aAAawhL,EAAY/zQ,EAAU,IAC/B,OAAkB,MAAd+zQ,GAGGA,EAAWC,eAAe3zQ,KAAML,GAE3C,SAASkyO,GACL,OAAO7xO,KAAK4zQ,aAAa/hC,GAE7B,qBAAqBsgC,GACjB,OAAO,GAAK0B,kBAAkB7zQ,QAASmyQ,GAE3C,UAAUhyQ,EAAQR,EAAU,IAQxB,OAPAK,KAAK8xQ,QAAU3xQ,EACXA,EACAH,KAAK6wQ,MAAMvuP,IAAI,SAAUniB,EAAOqO,GAAI7O,GAGpCK,KAAK6wQ,MAAMjzP,OAAO,SAAUje,GAEzBK,KAEX,YAAYib,EAAUtb,EAAU,IAQ5B,OAPAK,KAAKswH,UAAYr1G,EACD,MAAZA,EACAjb,KAAK6wQ,MAAMvuP,IAAI,WAAYrH,EAAS1U,IAAKygE,GAAUA,EAAMx4D,IAAK7O,GAG9DK,KAAK6wQ,MAAMjzP,OAAO,WAAYje,GAE3BK,KAEX,QAAQgnE,EAAOrnE,EAAU,IACrB,MAAMsb,EAAWjb,KAAKib,SACtB,GAAgB,MAAZA,GAA6B,MAAT+rD,EAAe,CACnC,MAAMtlE,EAAQ1B,KAAK8zQ,cAAc9sM,IAClB,IAAXtlE,IACAuZ,EAAS5T,OAAO3F,EAAO,GACvBslE,EAAM+sM,UAAU,KAAMp0Q,GACtBK,KAAKg0Q,YAAY/4P,EAAUtb,IAGnC,OAAOK,KAEX,MAAMgnE,EAAOrnE,EAAU,IAEnB,OADAqnE,EAAMitM,MAAMj0Q,KAAML,GACXK,KAEX,MAAM0H,EAAQ/H,EAAU,IAOpB,OANI,GAAKu0Q,OAAOxsQ,GACZA,EAAOysQ,SAASn0Q,KAAML,GAGtB+H,EAAO0sQ,QAAQp0Q,KAAML,GAElBK,KAEX,SAASG,EAAQuB,EAAO/B,EAAU,IAE9B,OADAQ,EAAOk0Q,YAAYr0Q,KAAM0B,EAAO/B,GACzBK,KAEX,SAASgnE,EAAOrnE,EAAU,IACtB,OAAOK,KAAKq0Q,YAAYrtM,OAAO9kE,EAAWvC,GAE9C,YAAYqnE,EAAOtlE,EAAO/B,EAAU,IAChC,GAAa,MAATqnE,GAAiBA,IAAUhnE,KAAM,CACjC,MAAMs0Q,EAAYttM,EAAMmsM,YAClBz1E,EAAU19L,OAASs0Q,EACzB,IAAIj9O,EAAM31B,EAQV,GAPW,MAAP21B,IACAA,EAAMr3B,KAAKu0Q,gBACN72E,IACDrmK,GAAO,IAIXi9O,EAAW,CACX,MAAMr5P,EAAWq5P,EAAUlB,cAC3B,GAAIn4P,EAAU,CACV,MAAMvZ,EAAQuZ,EAASxX,QAAQujE,GAC3BtlE,GAAS,IACTslE,EAAM+sM,UAAU,KAAMp0Q,GACtBsb,EAAS5T,OAAO3F,EAAO,GACvB4yQ,EAAUN,YAAY/4P,EAAUtb,KAI5C,IAAIsb,EAAWjb,KAAKib,SAUpB,GATgB,MAAZA,GACAA,EAAW,GACXA,EAASzY,KAAKwkE,IAGd/rD,EAAS5T,OAAOgwB,EAAK,EAAG2vC,GAE5BA,EAAM+sM,UAAU/zQ,KAAML,GACtBK,KAAKg0Q,YAAY/4P,EAAUtb,GACvB+9L,GAAW19L,KAAKs5E,MAAO,CACvB,MAAMk7L,EAAYx0Q,KAAKs5E,MAAMm7L,iBAAiBz0Q,MACxC00Q,EAAY10Q,KAAKs5E,MAAMq7L,iBAAiB30Q,MAC1Cw0Q,GACAA,EAAUrpO,QAASyuB,GAASA,EAAKg7M,aAAaj1Q,IAE9C+0Q,GACAA,EAAUvpO,QAASyuB,GAASA,EAAKg7M,aAAaj1Q,IAGlDK,KAAKs5E,OACLt5E,KAAKs5E,MAAM86L,QAAQptM,EAAOrnE,GAGlC,OAAOK,KAEX,iBAAiBL,EAAU,IACvB,MAAMQ,EAASH,KAAKmzQ,YACpB,GAAc,MAAVhzQ,EAAgB,CAChB,MAAMuB,EAAQvB,EAAO2zQ,cAAc9zQ,MACnCG,EAAO00Q,cAAcnzQ,EAAO/B,GAEhC,OAAOK,KAEX,YAAYgnE,EAAOrnE,EAAU,IACzB,MAAM+B,EAAQ1B,KAAK8zQ,cAAc9sM,GACjC,OAAOhnE,KAAK60Q,cAAcnzQ,EAAO/B,GAErC,cAAc+B,EAAO/B,EAAU,IAC3B,MAAMqnE,EAAQhnE,KAAK80Q,WAAWpzQ,GAM9B,OAJgB,MADC1B,KAAKib,UACW,MAAT+rD,IACpBhnE,KAAK+0Q,QAAQ/tM,EAAOrnE,GACpBqnE,EAAMppD,OAAOje,IAEVqnE,EAEX,OAAOrnE,EAAU,IAab,OAZAK,KAAKuyQ,YAAY,SAAU,KACvB,MAAMpyQ,EAASH,KAAKmzQ,YAChBhzQ,GACAA,EAAOmF,YAAYtF,KAAML,IAER,IAAjBA,EAAQgI,MACR3H,KAAKixH,UAAWjqD,GAAUA,EAAMppD,OAAOje,IAEvCK,KAAKs5E,OACLt5E,KAAKs5E,MAAM07L,WAAWh1Q,KAAML,KAG7BK,KAEX,WAAWkvC,EAAMxnC,EAAQ/H,EAAU,GAAImvL,EAAQ,KAC3C,OAAO9uL,KAAK24B,UAAUr3B,MAAM4tC,EAAMxnC,EAAQ/H,EAASmvL,GAEvD,eAAe5/I,EAAMvvC,EAASmvL,EAAQ,KAElC,OADA9uL,KAAK24B,UAAUlV,KAAKyrB,EAAMvvC,EAASmvL,GAC5B9uL,KAEX,iBACI,OAAOA,KAAK24B,UAAU76B,MAK1B,UAAU68D,EAAIC,EAAIj7D,GACd,OAAOK,KAEX,MAAM0zD,EACNC,EACAC,EACAj0D,GACI,OAAOK,KAEX,SAASkpE,EAAOjlE,EAAKtE,GACjB,MAAMs1Q,EAAY/zQ,MAAMD,QAAQioE,GAASA,EAAQ,CAACA,GAC5C1rE,EAAsB,iBAARyG,EAAmBA,EAAM,KACvC0+D,EAAwB,iBAAR1+D,EAAmBA,EAAyB,iBAAZtE,EAAuBA,EAAU,GACvF,GAAIgjE,EAAOhsD,MACP,OAAO3W,KAAKk1Q,SAAS,CAAE13Q,OAAM0rE,MAAO+rM,EAAWlrK,MAAOpnC,EAAOonC,OAASpnC,GAE1E,IAAIgzL,EAAQ,EAAUzuM,UAAUlnD,KAAKg2P,YACrC,OAAa,MAATL,GAAyB,MAARn4P,GAAgBm4P,EAAMn4P,OAASA,GACnC,MAATm4P,IACAA,EAAQ,IAEPA,EAAMzsL,QACPysL,EAAMzsL,MAAQ,IAElBysL,EAAMn4P,KAAOA,EACbm4P,EAAMzsL,MAAQ,IAAIysL,EAAMzsL,SAAU+rM,GAC3Bj1Q,KAAKk1Q,SAASv3Q,OAAO+rD,OAAO,GAAIisM,GAAQhzL,SATnD,EAYJ,SAASgzL,EAAOh2P,EAAU,IAOtB,OANa,MAATg2P,EACA31P,KAAKgzP,cAGLhzP,KAAK6wQ,MAAMvuP,IAAI,QAAS,GAAK6yP,eAAexf,GAAQh2P,GAEjDK,KAEX,WACI,OAAOA,KAAK6wQ,MAAM/yQ,IAAI,SAE1B,YAAY6B,EAAU,IAElB,OADAK,KAAK6wQ,MAAMjzP,OAAO,QAASje,GACpBK,KAEX,SAASxC,GACL,MAAMm4P,EAAQ31P,KAAKg2P,WACnB,OAAa,MAATL,IAGQ,MAARn4P,GAGGm4P,EAAMn4P,OAASA,GAE1B,QAAQA,GACJ,MAAMm4P,EAAQ31P,KAAKg2P,WACnB,OAAa,MAATL,GAGGA,EAAMzsL,MAAM5iB,KAAMniD,GAAyB,iBAATA,EAAoBA,IAAS3G,EAAO2G,EAAK3G,OAASA,GAE/F,WAAW43Q,EAAaz1Q,EAAU,IAC9B,MAAMg2P,EAAQ,EAAUzuM,UAAUlnD,KAAKg2P,YACvC,GAAIL,EAAO,CACP,IAAI1yK,GAAU,EACd,MAAM/Z,EAAQysL,EAAMzsL,MAAM5lE,QACpBsa,EAAUlc,IACZwnE,EAAM7hE,OAAO3F,EAAO,GACpBuhF,GAAU,GAEd,GAA2B,iBAAhBmyL,EACPx3P,EAAOw3P,QAGP,IAAK,IAAIn4Q,EAAIisE,EAAMvnE,OAAS,EAAG1E,GAAK,EAAGA,GAAK,EAAG,CAC3C,MAAMkH,EAAO+kE,EAAMjsE,IACW,iBAATkH,EACfA,IAASixQ,EACTjxQ,EAAK3G,OAAS43Q,IAEhBx3P,EAAO3gB,GAIfgmF,IACA0yK,EAAMzsL,MAAQA,EACdlpE,KAAKk1Q,SAASvf,EAAOh2P,IAG7B,OAAOK,KAKX,QAAQL,GACJ,OAAO,IAAI,GAGf,mBAAmBi6D,EAAMr4D,GACrB,OAAO,IAAI,GAEf,OAAO5B,EAAU,IACb,MAAMgsB,EAAQhuB,OAAO+rD,OAAO,GAAI1pD,KAAK6wQ,MAAM/yQ,OACrC6F,EAAWhG,OAAOkB,UAAU8E,SAC5B0xQ,EAAWr1Q,KAAK6sL,SAAW,OAAS7sL,KAAKykE,SAAW,OAAS,OACnE,IAAK94C,EAAMylB,MAAO,CACd,MAAM0lN,EAAO92P,KAAK6F,YAClB,MAAM,IAAI7C,MAAM,uBAAuBqyQ,qCAA4CA,MAAave,EAAKt5P,MAAQmG,EAASvG,KAAK05P,OAE/H,MAAMA,EAAO92P,KAAK6F,YACZoK,GAAwB,IAAjBtQ,EAAQsQ,KACfL,EAAQ+b,EAAM/b,OAAS,GACvB6jO,EAAUqjB,EAAKhE,aAAY,GAG3B5mN,EAAWj8B,EAAOjQ,KAAKuxQ,WAAW99B,GAAS,GAAQA,EACnD6hC,EAAeppO,EAASt8B,OAAS,GACjC2lQ,EAAa,GACnB53Q,OAAOyR,KAAKuc,GAAOwf,QAAS3sC,IACxB,MAAMqG,EAAM8mB,EAAMntB,GAClB,GAAW,MAAPqG,IACC3D,MAAMD,QAAQ4D,IACA,iBAARA,IACN,EAAU+C,cAAc/C,GACzB,MAAM,IAAI7B,MAAM,sBAAsBqyQ,yCAAgD1xQ,EAASvG,KAAKyH,oBAAsBrG,SAAW62Q,MAAar1Q,KAAKwO,OAE3J,GAAY,UAARhQ,GAA2B,UAARA,GAAmByR,EAAM,CAC5C,MAAMgkO,EAAS/nM,EAAS1tC,GACpB,EAAUmpD,QAAQ9iD,EAAKovO,WAChBtoN,EAAMntB,MAIzBb,OAAOyR,KAAKQ,GAAOu7B,QAAS3sC,IACxB,MAAMyU,EAAOrD,EAAMpR,GACbg3Q,EAAcF,EAAa92Q,GACjCb,OAAOyR,KAAK6D,GAAMk4B,QAAS3tC,IACvB,MAAMU,EAAQ+U,EAAKzV,GACbsc,EAAe07P,EAAcA,EAAYh4Q,GAAQ,KAC1C,MAATU,GACiB,iBAAVA,GACNgD,MAAMD,QAAQ/C,GAkBK,MAAfs3Q,GACJ,EAAU7tN,QAAQ7tC,EAAc5b,KAGV,MAAnBq3Q,EAAW/2Q,KACX+2Q,EAAW/2Q,GAAO,IAEtB+2Q,EAAW/2Q,GAAKhB,GAAQU,GAxBxBP,OAAOyR,KAAKlR,GAAOitC,QAASsqO,IACxB,MAAMx+N,EAAW/4C,EAAMu3Q,GACvB,GAAmB,MAAfD,GACgB,MAAhB17P,IACC,EAAUrX,SAASqX,KACnB,EAAU6tC,QAAQ7tC,EAAa27P,GAAUx+N,GAAW,CAC9B,MAAnBs+N,EAAW/2Q,KACX+2Q,EAAW/2Q,GAAO,IAEO,MAAzB+2Q,EAAW/2Q,GAAKhB,KAChB+3Q,EAAW/2Q,GAAKhB,GAAQ,IAEhB+3Q,EAAW/2Q,GAAKhB,GACxBi4Q,GAAWx+N,SAenC,MAAMy+N,EAAa/3Q,OAAO+rD,OAAO/rD,OAAO+rD,OAAO,GAAI/9B,GAAQ,CAAE/b,MAAO,EAAU83C,QAAQ6tN,QAAcrzQ,EAAYqzQ,IACxF,MAApBG,EAAW9lQ,cACJ8lQ,EAAW9lQ,MAEtB,MAAM1J,EAAMwvQ,EAIZ,OAHkB,IAAdxvQ,EAAIwuD,cACGxuD,EAAIwuD,MAER,EAAUxN,UAAUhhD,GAE/B,MAAMvG,EAAU,IACZ,IAAKA,EAAQgI,KAAM,CACf,MAAM4a,EAAO5kB,OAAO+rD,OAAO,GAAI1pD,KAAK6wQ,MAAM/yQ,OACrC6B,EAAQg2Q,eACFpzP,EAAK/T,UAET+T,EAAKpiB,cACLoiB,EAAKtH,SAEZ,OAAO,IAAI67O,EADE92P,KAAK6F,aACF0c,GAIpB,OADY,GAAKqzP,UAAU51Q,MAChBA,KAAKwO,IAEpB,SAAS+8M,GACL,OAAOA,EAAM39F,SAASihJ,eAAe7uQ,MAIzC,WAAWxC,EAAM+kB,EAAO,GAAI+2D,EAAQt5E,KAAKs5E,OAKrC,OAJAt5E,KAAK4e,OAAO,cAAe,CAAEphB,OAAM+kB,OAAMsvN,KAAM7xO,OAC3Cs5E,GACAA,EAAM88K,WAAW54P,EAAMG,OAAO+rD,OAAO/rD,OAAO+rD,OAAO,GAAInnC,GAAO,CAAEsvN,KAAM7xO,QAEnEA,KAEX,UAAUxC,EAAM+kB,EAAO,GAAI+2D,EAAQt5E,KAAKs5E,OAKpC,OAJIA,GACAA,EAAM+8K,UAAU74P,EAAMG,OAAO+rD,OAAO/rD,OAAO+rD,OAAO,GAAInnC,GAAO,CAAEsvN,KAAM7xO,QAEzEA,KAAK4e,OAAO,aAAc,CAAEphB,OAAM+kB,OAAMsvN,KAAM7xO,OACvCA,KAEX,YAAYxC,EAAMq4Q,EAAStzP,GAGvB,MAAM+2D,EAAQt5E,KAAKs5E,MACnBt5E,KAAKo2P,WAAW54P,EAAM+kB,EAAM+2D,GAC5B,MAAMn4E,EAAS00Q,IAEf,OADA71Q,KAAKq2P,UAAU74P,EAAM+kB,EAAM+2D,GACpBn4E,EAIX,UACInB,KAAK81Q,mBACL91Q,KAAK6wQ,MAAM5gJ,WAGnB,GAAK/jF,SAAW,GAChB,GAAK5P,UAAY,GACjB,GAAKtF,UAAY,GACjB,GAAW,CACP,GAASi5F,WACV,GAAKpxH,UAAW,UAAW,OAiB3B,KAAS,GAAO,KADVs2Q,eAdL,SAAwB7zP,GACpB,MAAmB,iBAARA,EACA,CAAE4nD,MAAO,CAAC5nD,IAEjBpgB,MAAMD,QAAQqgB,GACP,CAAE4nD,MAAO5nD,GAEhBA,EAAI4nD,MACG5nD,EAEJ,CACH4nD,MAAO,CAAC5nD,KAKpB,SAAWy0P,GACPA,EAAK93Q,YAAc,MAAM83Q,EAAKv4Q,KAmB9Bu4Q,EAAK7B,OAlBL,SAAgBh+M,GACZ,GAAgB,MAAZA,EACA,OAAO,EAEX,GAAIA,aAAoB6/M,EACpB,OAAO,EAEX,MAAMnkQ,EAAMskD,EAASl4D,OAAOC,aACtB4zO,EAAO37K,EACb,OAAY,MAAPtkD,GAAeA,IAAQmkQ,EAAK93Q,cACN,mBAAhB4zO,EAAKhlD,QACW,mBAAhBglD,EAAKptK,QACS,mBAAdotK,EAAKrvN,MACS,mBAAdqvN,EAAK5+N,MAfxB,CAqBG,KAAS,GAAO,KACnB,SAAW8iQ,GAYPA,EAAKlC,kBAXL,YAA8B1B,GAC1B,MAAMqB,EAAYrB,EACb3gQ,OAAQqgO,GAAiB,MAARA,GACjBtrO,IAAKsrO,GAASA,EAAKq0B,gBACnB9+P,KAAK,CAAC4D,EAAGC,IACHD,EAAErJ,OAASsJ,EAAEtJ,QAGxB,OADc6xQ,EAAUjkQ,QACVmC,KAAMmgO,GAAS2hC,EAAUjuN,MAAOphD,GAASA,EAAK+5C,SAAS2zL,MACjE,MAoBRkkC,EAAKC,aAjBL,SAAsB7D,EAAOxyQ,EAAU,IACnC,IAAI47D,EAAO,KACX,IAAK,IAAIt+D,EAAI,EAAG25D,EAAKu7M,EAAMxwQ,OAAQ1E,EAAI25D,EAAI35D,GAAK,EAAG,CAC/C,MAAM40O,EAAOsgC,EAAMl1Q,GACnB,IAAI4rC,EAAOgpM,EAAKj1G,QAAQj9H,GACxB,GAAIkpC,EAAM,CACN,GAAIgpM,EAAKhlD,SAAU,CACf,MAAMn4H,EAAQm9K,EAAK6a,WACN,MAATh4L,GAA2B,IAAVA,IACjB7rB,EAAOA,EAAK0yB,KAAK7G,IAGzB6G,EAAe,MAARA,EAAe1yB,EAAO0yB,EAAKlX,MAAMxb,IAGhD,OAAO0yB,GAOXw6M,EAAKH,UAJL,SAAmB/jC,GACf,MAAMsgC,EAAQ,CAACtgC,KAASA,EAAKwgC,eAAe,CAAE1qQ,MAAM,KACpD,OAAOouQ,EAAKE,WAAW9D,IAgD3B4D,EAAKE,WA7CL,SAAoB9D,GAChB,MAAMpgF,EAAS,EAASvtI,KAAK2tN,GACvB+D,EAAWnkF,EAAOvmJ,OAAO,CAACjlC,EAAKsrO,KACjCtrO,EAAIsrO,EAAKrjO,IAAMqjO,EAAKpqO,QACblB,GACR,IAsCH,OArCAwrL,EAAO5mJ,QAAS0mM,IACZ,MAAMpqO,EAAQyuQ,EAASrkC,EAAKrjO,IAC5B,GAAI/G,EAAMg9D,SAAU,CAChB,MAAM0xM,EAAW1uQ,EAAMw+P,kBACjBmQ,EAAW3uQ,EAAM0+P,kBACnBgQ,GAAYD,EAASC,IAGrB1uQ,EAAM4uQ,UAAU14Q,OAAO+rD,OAAO/rD,OAAO+rD,OAAO,GAAIjiD,EAAM6uQ,aAAc,CAAEzkC,KAAMqkC,EAASC,GAAU3nQ,MAE/F4nQ,GAAYF,EAASE,IAGrB3uQ,EAAM8uQ,UAAU54Q,OAAO+rD,OAAO/rD,OAAO+rD,OAAO,GAAIjiD,EAAM+uQ,aAAc,CAAE3kC,KAAMqkC,EAASE,GAAU5nQ,MAIvG,MAAMrO,EAAS0xO,EAAKshC,YAChBhzQ,GAAU+1Q,EAAS/1Q,EAAOqO,KAC1B/G,EAAMssQ,UAAUmC,EAAS/1Q,EAAOqO,KAGpC,MAAMyM,EAAW42N,EAAKuhC,cACtB,GAAIn4P,GAAYA,EAAStZ,OAAQ,CAC7B,MAAM80Q,EAASx7P,EAASuwB,OAAO,CAAC8B,EAAM05B,KAG9BkvM,EAASlvM,EAAMx4D,KACf8+B,EAAK9qC,KAAK0zQ,EAASlvM,EAAMx4D,KAEtB8+B,GACR,IACCmpO,EAAO90Q,OAAS,GAChB8F,EAAMusQ,YAAYyC,MAIvBP,GA/Ef,CAkFG,KAAS,GAAO,KACnB,SAAWH,GACPA,EAAKpzM,OAAO,CACR,UAAUmxE,GACN,IAAI,MAAE6hH,GAAU7hH,EAAIw9H,EAAW,GAAOx9H,EAAI,CAAC,UAI3C,OAHI6hH,IACA2b,EAAS3b,MAAQogB,EAAKZ,eAAexf,IAElC2b,KAPnB,CAUG,KAAS,GAAO,KCzoCnB,SAAWD,GACP,IAAIqF,EACAC,EAMJtF,EAAcvjC,MALd,SAAetwO,EAAMqvL,GACjB,OAAOA,EACe,MAAhB6pF,GAAwBA,EAAa5oC,MAAMtwO,GAC3B,MAAhBm5Q,GAAwBA,EAAa7oC,MAAMtwO,IAMrD6zQ,EAAcuF,gBAHd,SAAyBljC,GACrBgjC,EAAehjC,GAMnB29B,EAAcwF,gBAHd,SAAyBnjC,GACrBijC,EAAejjC,GAdvB,CAiBG29B,KAAkBA,GAAgB,KCf9B,MAAM,GACT,YAAY9uP,GACRviB,KAAK82Q,MAAQ,GACb92Q,KAAKkO,OAAS,GACdlO,KAAK2F,KAAK,EAAUuhD,UAAU3kC,IAElC,WACI,OAAOviB,KAAK82Q,MAEhB,SAASlpB,GACL,OAAoB,MAAbA,EAAoB5tP,KAAKkO,OAAO0/O,GAAa,KAExD,gBAAgBA,GACZ,OAAO5tP,KAAK82Q,MAAMtlQ,OAAQzS,GAAMA,EAAE2iD,QAAUksM,GAAyB,MAAX7uP,EAAE2iD,OAA8B,MAAbksM,GAEjF,sBAAsBA,EAAWptE,GAC7B,MAAMs2F,EAAQ92Q,KAAK+2Q,gBAAgBnpB,GAC7BlsM,EAAQksM,EAAY5tP,KAAKg3Q,SAASppB,GAAa,KAC/CqpB,EAAgBv1N,EAAQA,EAAMlvB,SAAW,KACzC0kP,EAAoBD,EAAgBA,EAAcz5Q,KAAO,KAC/D,IAAI25Q,EACJ,GAAyB,MAArBD,EAA2B,CAC3B,MAAMxxQ,EAAK,GAAWguO,SAAS51O,IAAIo5Q,GACnC,GAAU,MAANxxQ,EACA,OAAO,GAAWguO,SAASQ,WAAWgjC,GAE1CC,EAAWzxQ,OAGXyxQ,EAAW,GAAW1jC,QAAQl9M,KAElC,MAAM6gP,EAAYN,EAAMvwQ,IAAKqsO,GAAUA,GAAQA,EAAKpgN,UAAYogN,EAAKpgN,SAASrd,MAAS,IACjFkiQ,EAAaJ,GAAiBA,EAAc9hQ,MAAS,GAE3D,OADgBgiQ,EAASC,EAAW52F,EAAU62F,GAC/B9wQ,IAAI,CAAC+wQ,EAAY51Q,KAC5B,MAAMkxO,EAAOkkC,EAAMp1Q,GACnB,MAAO,CACH41Q,aACAriB,OAAQriB,EAAKpkO,GACb+oQ,SAAU3kC,EAAKh2L,KACf46N,UAAW5kC,EAAKhjO,MAChB6nQ,UAAW7kC,EAAK76B,MAAMn7J,KACtB86N,YAAa13Q,KAAK23Q,mBAAmB/kC,EAAM,GAAMr0O,OAAO+4Q,EAAW9kP,UAAWguJ,MAI1F,KAAKj+J,GACD,MAAM,OAAErU,EAAM,MAAEg7D,GAAU3mD,EACZ,MAAVrU,GACAvQ,OAAOyR,KAAKlB,GAAQi9B,QAAS3sC,IACzBwB,KAAKkO,OAAO1P,GAAOwB,KAAK43Q,WAAW1pQ,EAAO1P,MAG9C0C,MAAMD,QAAQioE,IACdA,EAAM/9B,QAAShnC,IACXnE,KAAK82Q,MAAMt0Q,KAAKxC,KAAK63Q,UAAU1zQ,MAI3C,WAAWu9C,GACP,OAAO/jD,OAAO+rD,OAAO/rD,OAAO+rD,OAAO,GAAIhI,GAAQ,CAAEq2J,MAAO/3M,KAAK83Q,SAASp2N,GAAO,GAAOlvB,SAAUxyB,KAAK+3Q,gBAAgBr2N,EAAMlvB,UAAU,KAEvI,UAAUogN,GACN,MAAMzxO,EAASxD,OAAO+rD,OAAO,GAAIkpL,GAC3BlxL,EAAQ1hD,KAAKg3Q,SAASpkC,EAAKlxL,QAAU,GAO3C,OANAvgD,EAAOm8H,OAASn8H,EAAOm8H,QAAU57E,EAAM47E,OACvCn8H,EAAOyO,MAAQ,EAAUzJ,MAAM,GAAIu7C,EAAM9xC,MAAOzO,EAAOyO,OACvDzO,EAAOqxB,SAAWxyB,KAAKg4Q,eAAet2N,EAAOvgD,GAC7CA,EAAO42M,MAAQ,EAAU5xM,MAAM,GAAIu7C,EAAMq2J,MAAO/3M,KAAK83Q,SAAS32Q,IAC9DA,EAAO23K,OAAS94K,KAAKi3K,UAAUv1H,EAAOvgD,GACtCA,EAAOy7C,KAAOj/C,OAAO+rD,OAAO/rD,OAAO+rD,OAAO,GAAIhI,EAAM9E,MAAOz7C,EAAOy7C,MAC3Dz7C,EAEX,UAAUugD,EAAOkxL,GACb,MAA2B,iBAAhBA,EAAK95D,OACL85D,EAAK95D,OAEY,iBAAjBp3H,EAAMo3H,QAAwC,SAAjBp3H,EAAMo3H,OACnCp3H,EAAMo3H,OAEV,OAEX,eAAep3H,EAAOkxL,GAClB,OAAO,EAAUzsO,MAAM,CACnB3I,KAAM,OACN2X,KAAM,IACPusC,EAAMlvB,SAAU,CAAErd,KAAMy9N,EAAKz9N,OAEpC,gBAAgBqd,EAAUylP,GAAa,GACnC,GAAgB,MAAZzlP,GACA,GAAIylP,EACA,MAAO,CAAEz6Q,KAAM,OAAQ2X,KAAM,QAGhC,CACD,GAAwB,iBAAbqd,EACP,MAAO,CACHh1B,KAAMg1B,EACNrd,KAAM,IAGd,GAAIjU,MAAMD,QAAQuxB,GACd,MAAO,CACHh1B,KAAM,WACN2X,KAAM,CAAEo9B,EAAG/f,EAAS,GAAIggB,EAAGhgB,EAAS,KAG5C,GAAwB,iBAAbA,EACP,OAAOA,EAGf,MAAO,CAAErd,KAAM,IAEnB,qBAAqBqd,EAAUylP,GAAa,GACxC,GAAgB,MAAZzlP,GACA,GAAIylP,EACA,MAAO,CAAEz6Q,KAAM,OAAQ2X,KAAM,QAGhC,CACD,GAAwB,iBAAbqd,EACP,MAAO,CACHh1B,KAAMg1B,EACNrd,KAAM,IAGd,GAAwB,iBAAbqd,EACP,OAAOA,EAGf,MAAO,CAAErd,KAAM,IAEnB,SAAShR,EAAM+zQ,GAAc,GACzB,MAAMngE,EAAQ5zM,EAAK4zM,OAAS,GAE5B,OADAA,EAAMvlL,SAAWxyB,KAAKm4Q,qBAAqBpgE,EAAMvlL,SAAU0lP,GACpDngE,EAEX,mBAAmB66B,EAAM0G,EAAc94D,GACnC,MAAMhjL,EAAOo1O,EAAK76B,MAAMvlL,SAASh1B,MAAQ,OACnC2X,EAAOy9N,EAAK76B,MAAMvlL,SAASrd,MAAQ,GACnCgiQ,EAAW,GAAgBzjC,SAAS51O,IAAIN,IAAS,GAAgBi2O,QAAQl9M,KAC/E,OAAI4gP,EACOA,EAAS79B,EAAc94D,EAAUrrK,GAErC,MCnJf,IAAI,GAAkC,SAAUnW,EAAG6O,GAC/C,IAAI1P,EAAI,GACR,IAAK,IAAIY,KAAKC,EAAOrB,OAAOkB,UAAUC,eAAe1B,KAAK4B,EAAGD,IAAM8O,EAAEpK,QAAQ1E,GAAK,IAC9EZ,EAAEY,GAAKC,EAAED,IACb,GAAS,MAALC,GAAqD,mBAAjCrB,OAAOsxG,sBACtB,KAAIhyG,EAAI,EAAb,IAAgB8B,EAAIpB,OAAOsxG,sBAAsBjwG,GAAI/B,EAAI8B,EAAE4C,OAAQ1E,IAC3D4Q,EAAEpK,QAAQ1E,EAAE9B,IAAM,GAAKU,OAAOkB,UAAUwxD,qBAAqBjzD,KAAK4B,EAAGD,EAAE9B,MACvEkB,EAAEY,EAAE9B,IAAM+B,EAAED,EAAE9B,KAE1B,OAAOkB,GAUJ,MAAM,WAAa,GACtB,YAAYmzQ,EAAW,IACnB3yL,MAAM2yL,GACNtxQ,KAAKo4Q,YAETt6Q,IAAKE,OAAOC,eACR,OAAO,GAAKA,YAEhB,WAAWqzQ,EAAUI,GACjB,MAAM,EAAEn/N,EAAC,EAAEC,EAAC,MAAEnhB,EAAK,OAAEoC,GAAW69O,EAAUt9B,EAAS,GAAOs9B,EAAU,CAAC,IAAK,IAAK,QAAS,WACxF,GAAS,MAAL/+N,GAAkB,MAALC,EAAW,CACxB,MAAMhgB,EAAWwhN,EAAOxhN,SACxBwhN,EAAOxhN,SAAW70B,OAAO+rD,OAAO/rD,OAAO+rD,OAAO,GAAIl3B,GAAW,CAAE+f,EAAQ,MAALA,EAAYA,EAAI/f,EAAWA,EAAS+f,EAAI,EAAGC,EAAQ,MAALA,EAAYA,EAAIhgB,EAAWA,EAASggB,EAAI,IAE5J,GAAa,MAATnhB,GAA2B,MAAVoC,EAAgB,CACjC,MAAMmpB,EAAOo3L,EAAOp3L,KACpBo3L,EAAOp3L,KAAOj/C,OAAO+rD,OAAO/rD,OAAO+rD,OAAO,GAAI9M,GAAO,CAAEvrB,MAAgB,MAATA,EAAgBA,EAAQurB,EAAOA,EAAKvrB,MAAQ,EAAGoC,OAAkB,MAAVA,EAAiBA,EAASmpB,EAAOA,EAAKnpB,OAAS,IAExK,OAAOkrD,MAAM4yL,WAAWv9B,EAAQ09B,GAEpC,SACI,OAAO,EAEX,KAAKrgP,EAAOoC,EAAQ9zB,GAChB,YAAcuC,IAAVmvB,EACOrxB,KAAK44I,UAEK,iBAAVvnH,EACArxB,KAAKq4Q,QAAQhnP,EAAOoC,EAAQ9zB,GAEhCK,KAAKq4Q,QAAQhnP,EAAOoC,GAE/B,UACI,MAAMmpB,EAAO58C,KAAK6wQ,MAAM/yQ,IAAI,QAC5B,OAAO8+C,EAAOj/C,OAAO+rD,OAAO,GAAI9M,GAAQ,CAAEvrB,MAAO,EAAGoC,OAAQ,GAEhE,QAAQpC,EAAOoC,EAAQ9zB,GAOnB,MANqB,iBAAV0xB,EACPrxB,KAAKyvH,OAAOp+F,EAAMA,MAAOA,EAAMoC,OAAQA,GAGvCzzB,KAAKyvH,OAAOp+F,EAAOoC,EAAQ9zB,GAExBK,KAEX,OAAOqxB,EAAOoC,EAAQ9zB,EAAU,IAC5BK,KAAKo2P,WAAW,SAAUz2P,GAC1B,MAAMohQ,EAAYphQ,EAAQohQ,UAC1B,GAAIA,EAAW,CACX,MAAMuX,EAAct4Q,KAAK44I,UACzB,OAAQmoH,GACJ,IAAK,OACL,IAAK,QAEDttO,EAAS6kP,EAAY7kP,OACrB,MACJ,IAAK,MACL,IAAK,SAEDpC,EAAQinP,EAAYjnP,MAe5B,IAAIw1O,EAVQ,CACRx0O,MAAO,EACP,YAAa,EACbphB,IAAK,EACL,WAAY,EACZslB,KAAM,EACN,cAAe,EACfilC,OAAQ,EACR,eAAgB,GAEDulM,GACnB,MAAMrsM,EAAQQ,GAAM1D,UAAUxxD,KAAK0sP,YAAc,GAC7C/sP,EAAQ48L,WAERsqE,GAAY/+P,KAAKq4C,OAAOuU,EAAQ,IAAM,IACtCmyM,GAAY,GAGhB,MAAMtrM,EAAOv7D,KAAK48H,UAGlB,IAAI27I,EAEAA,EADa,IAAb1R,EACatrM,EAAKqpC,gBAEA,IAAbiiK,EACQtrM,EAAKypC,YAEA,IAAb6hK,EACQtrM,EAAKkpC,cAGLlpC,EAAK8oC,YAItB,MAAMm0K,EAAkBD,EACnB9wQ,QACA8rD,QAAQmB,EAAO6G,EAAKb,aAQnB4iC,EAASx1F,KAAK2rC,KAAKpiB,EAAQA,EAAQoC,EAASA,GAAU,EAY5D,IAAIspC,EAAS8pM,EAAW/+P,KAAK+vB,GAAM,EAMnCklC,GAASj1D,KAAK2wQ,KAAK5R,EAAW,GAAM,EAAIpzO,EAASpC,EAAQA,EAAQoC,GAGjEspC,GAAS7H,GAAMC,MAAMT,GAIrB,MAIMd,EAJS,GAAM4C,UAAU8mC,EAAQvgC,EAAOy7M,GAIxB/wQ,QAAQ2rD,UAAU/hC,GAAS,EAAGoC,GAAU,GAC9DzzB,KAAK6wQ,MAAMvuP,IAAI,OAAQ,CAAE+O,QAAOoC,UAAU9zB,GAC1CK,KAAK04Q,YAAY9kN,EAAOrhB,EAAGqhB,EAAOphB,EAAG7yC,QAGrCK,KAAK6wQ,MAAMvuP,IAAI,OAAQ,CAAE+O,QAAOoC,UAAU9zB,GAG9C,OADAK,KAAKq2P,UAAU,SAAU12P,GAClBK,KAEX,MAAM0zD,EAAIC,EAAIC,EAAQj0D,EAAU,IAC5B,MAAMg5Q,EAAa34Q,KAAK48H,UAAU/3G,MAAM6uC,EAAIC,EAAc,MAAVC,OAAiB1xD,EAAY0xD,GAK7E,OAJA5zD,KAAKo2P,WAAW,QAASz2P,GACzBK,KAAK04Q,YAAYC,EAAWpmO,EAAGomO,EAAWnmO,EAAG7yC,GAC7CK,KAAKyvH,OAAOkpJ,EAAWtnP,MAAOsnP,EAAWllP,OAAQ9zB,GACjDK,KAAKq2P,UAAU,SACRr2P,KAEX,SAAS47H,EAAM+qD,EAAMC,GACjB,MAAoB,iBAAThrD,EACA57H,KAAK04Q,YAAY98I,EAAM+qD,EAAMC,GAEjC5mL,KAAK60P,YAAYj5H,GAE5B,YAAYj8H,EAAU,IAClB,GAAIA,EAAQkU,SAAU,CAClB,MAAM1T,EAASH,KAAKmzQ,YACpB,GAAc,MAAVhzQ,GAAkBA,EAAO0sL,SAAU,CACnC,MAAM+rF,EAAkB54Q,KAAK60P,cACvBgkB,EAAiB14Q,EAAO00P,cAC9B,MAAO,CACHtiN,EAAGqmO,EAAgBrmO,EAAIsmO,EAAetmO,EACtCC,EAAGomO,EAAgBpmO,EAAIqmO,EAAermO,IAIlD,MAAMnb,EAAMr3B,KAAK6wQ,MAAM/yQ,IAAI,YAC3B,OAAOu5B,EAAM15B,OAAO+rD,OAAO,GAAIryB,GAAO,CAAEkb,EAAG,EAAGC,EAAG,GAErD,YAAYopF,EAAM+qD,EAAMC,EAAO,IAC3B,IAAIr0I,EACAC,EACA7yC,EAWJ,GAVoB,iBAATi8H,GACPrpF,EAAIqpF,EAAKrpF,EACTC,EAAIopF,EAAKppF,EACT7yC,EAAUgnL,GAAQ,KAGlBp0I,EAAIqpF,EACJppF,EAAIm0I,EACJhnL,EAAUinL,GAAQ,IAElBjnL,EAAQkU,SAAU,CAClB,MAAM1T,EAASH,KAAKmzQ,YACpB,GAAc,MAAVhzQ,GAAkBA,EAAO0sL,SAAU,CACnC,MAAMgsF,EAAiB14Q,EAAO00P,cAC9BtiN,GAAKsmO,EAAetmO,EACpBC,GAAKqmO,EAAermO,GAG5B,GAAI7yC,EAAQgI,KAAM,CACd,MAAMixQ,EAAkB54Q,KAAK60P,cAC7B70P,KAAKozD,UAAU7gB,EAAIqmO,EAAgBrmO,EAAGC,EAAIomO,EAAgBpmO,EAAG7yC,QAG7DK,KAAK6wQ,MAAMvuP,IAAI,WAAY,CAAEiwB,IAAGC,KAAK7yC,GAEzC,OAAOK,KAEX,UAAU26D,EAAK,EAAGC,EAAK,EAAGj7D,EAAU,IAChC,GAAW,IAAPg7D,GAAmB,IAAPC,EACZ,OAAO56D,KAGXL,EAAQm5Q,YAAcn5Q,EAAQm5Q,aAAe94Q,KAAKwO,GAClD,MAAMgkB,EAAWxyB,KAAK60P,cACtB,GAAwB,MAApBl1P,EAAQo5Q,UAAoBp5Q,EAAQm5Q,cAAgB94Q,KAAKwO,GAAI,CAI7D,MAAM+sD,EAAOv7D,KAAK48H,QAAQ,CAAEj1H,MAAM,IAC5BmiP,EAAKnqP,EAAQo5Q,SAYb1lN,EAAK7gC,EAAS+f,EAAIgpB,EAAKhpB,EACvB+gB,EAAK9gC,EAASggB,EAAI+oB,EAAK/oB,EAGvBD,EAAIzqC,KAAKitB,IAAI+0N,EAAGv3M,EAAI8gB,EAAIvrD,KAAKkzC,IAAI8uM,EAAGv3M,EAAIu3M,EAAGz4N,MAAQgiC,EAAKkI,EAAKlqC,MAAOmB,EAAS+f,EAAIooB,IACjFnoB,EAAI1qC,KAAKitB,IAAI+0N,EAAGt3M,EAAI8gB,EAAIxrD,KAAKkzC,IAAI8uM,EAAGt3M,EAAIs3M,EAAGr2N,OAAS6/B,EAAKiI,EAAK9nC,OAAQjB,EAASggB,EAAIooB,IAEzFD,EAAKpoB,EAAI/f,EAAS+f,EAClBqoB,EAAKpoB,EAAIhgB,EAASggB,EAEtB,MAAMwmO,EAAqB,CACvBzmO,EAAG/f,EAAS+f,EAAIooB,EAChBnoB,EAAGhgB,EAASggB,EAAIooB,GA+BpB,OA3BAj7D,EAAQg7D,GAAKA,EACbh7D,EAAQi7D,GAAKA,EACTj7D,EAAQ8uF,YAC0B,iBAAvB9uF,EAAQ8uF,aACf9uF,EAAQ8uF,WAAa,IAEzBzuF,KAAKyuF,WAAW,WAAYuqL,EAAoBr7Q,OAAO+rD,OAAO/rD,OAAO+rD,OAAO,GAAI/pD,EAAQ8uF,YAAa,CAAEyhL,OAAQnqB,GAAOpnP,UACtHqB,KAAKixH,UAAWjqD,IACZ,IAAI8sE,GACwC,QAA1BA,EAAKn0I,EAAQ+iF,eAA4B,IAAPoxD,OAAgB,EAASA,EAAG51F,SAAS8oB,KAErFA,EAAM5T,UAAUuH,EAAIC,EAAIj7D,OAKhCK,KAAKo2P,WAAW,YAAaz2P,GAC7BK,KAAK6wQ,MAAMvuP,IAAI,WAAY02P,EAAoBr5Q,GAC/CK,KAAKixH,UAAWjqD,IACZ,IAAI8sE,GACwC,QAA1BA,EAAKn0I,EAAQ+iF,eAA4B,IAAPoxD,OAAgB,EAASA,EAAG51F,SAAS8oB,KAErFA,EAAM5T,UAAUuH,EAAIC,EAAIj7D,KAGhCK,KAAKq2P,UAAU,YAAa12P,IAEzBK,KAEX,MAAM6E,EAAKlF,GACP,OAAW,MAAPkF,EACO7E,KAAK0sP,WAET1sP,KAAKuzD,OAAO1uD,EAAKlF,GAE5B,WACI,OAAOK,KAAK6wQ,MAAM/yQ,IAAI,QAAS,GAEnC,OAAO42D,EAAO/0D,EAAU,IACpB,MAAMs5Q,EAAej5Q,KAAK0sP,WAC1B,GAAI/sP,EAAQ8zD,OAAQ,CAChB,MAAM7W,EAAO58C,KAAK44I,UACZpmH,EAAWxyB,KAAK60P,cAChBphM,EAASzzD,KAAK48H,UAAUliE,YAC9BjH,EAAOF,OAAO0lN,EAAevkN,EAAO/0D,EAAQ8zD,QAC5C,MAAMJ,EAAKI,EAAOlhB,EAAIqK,EAAKvrB,MAAQ,EAAImB,EAAS+f,EAC1C+gB,EAAKG,EAAOjhB,EAAIoK,EAAKnpB,OAAS,EAAIjB,EAASggB,EACjDxyC,KAAKo2P,WAAW,SAAU,CAAE1hM,QAAO/0D,YACnCK,KAAK04Q,YAAYlmP,EAAS+f,EAAI8gB,EAAI7gC,EAASggB,EAAI8gB,EAAI3zD,GACnDK,KAAKuzD,OAAOmB,EAAO/2D,OAAO+rD,OAAO/rD,OAAO+rD,OAAO,GAAI/pD,GAAU,CAAE8zD,OAAQ,QACvEzzD,KAAKq2P,UAAU,eAGfr2P,KAAK6wQ,MAAMvuP,IAAI,QAAS3iB,EAAQ48L,SAAW7nI,GAASukN,EAAevkN,GAAS,IAAK/0D,GAErF,OAAOK,KAIX,QAAQL,EAAU,IACd,GAAIA,EAAQgI,KAAM,CACd,MAAMwqQ,EAAQnyQ,KAAKqyQ,eAAe,CAAE1qQ,MAAM,EAAM2qQ,cAAc,IAE9D,OADAH,EAAM3vQ,KAAKxC,MACJ,GAAKg2Q,aAAa7D,GAE7B,OAAO,GAAUjpK,oBAAoBlpG,KAAK60P,cAAe70P,KAAK44I,WAElE,mBAAmBh/E,EAAMr4D,GACrB,MAAMg6D,EAAOv7D,KAAK48H,UACZnpE,EAAS8H,EAAKb,YACd0xL,EAAWxyL,EAAKs/M,YAAY33Q,GAClC,GAAgB,MAAZ6qP,EACA,OAAO34L,EAEX,MAAMwhM,EAAS7I,EAASxZ,KACxB,IAAKqiB,IAAWj1P,KAAKm1P,QAAQF,GACzB,OAAOxhM,EAEX,MAAMm/K,EAAO5yO,KAAKm5Q,QAAQlkB,GAC1B,IAAKriB,IAASA,EAAKlxL,MACf,OAAO+R,EAEX,MACMjhC,EADUxyB,KAAKo5Q,iBAAiBxmC,EAAKlxL,OAClBuzM,GAAQziO,SAC3B6mP,EAAa,GAAM96Q,OAAOi0B,GAAU4gC,UAAUmI,EAAK8oC,aACnD3vC,EAAQ10D,KAAK0sP,WAInB,OAHIh4L,GACA2kN,EAAW9lN,QAAQmB,EAAOjB,GAEvB4lN,EAKX,IAAI15Q,EAAU,IACV,MACM82Q,GADWz2Q,KAAKozQ,eAAiB,IACf5hQ,OAAQqgO,GAASA,EAAKhlD,UAC9C,GAAsB,IAAlB4pF,EAAO90Q,OACP,OAAO3B,KAEXA,KAAKo2P,WAAW,aAAcz2P,GAC1BA,EAAQgI,MACR8uQ,EAAOtrO,QAAS0mM,GAASA,EAAKynC,IAAI35Q,IAEtC,IAAI,EAAE4yC,EAAC,EAAEC,EAAC,MAAEnhB,EAAK,OAAEoC,GAAW,GAAKuiP,aAAaS,GAChD,MAAMhgP,EAAU,EAAUu6J,eAAerxL,EAAQ82B,SAUjD,OATA8b,GAAK9b,EAAQF,KACbic,GAAK/b,EAAQxlB,IACbogB,GAASoF,EAAQF,KAAOE,EAAQpE,MAChCoB,GAAUgD,EAAQ+kC,OAAS/kC,EAAQxlB,IACnCjR,KAAK6wQ,MAAMvuP,IAAI,CACXkQ,SAAU,CAAE+f,IAAGC,KACfoK,KAAM,CAAEvrB,QAAOoC,WAChB9zB,GACHK,KAAKq2P,UAAU,cACRr2P,KAIX,0BACI,OAAOA,KAAK0uP,yBAEhB,wBAAwBpxH,GACpBt9H,KAAKu5Q,uBAAuBj8I,GAEhC,gCACI,OAAQt9H,KAAK6wQ,MAAM/yQ,IAAI,+BACnB,GAAO4wP,yBAEf,yBACI,OAAQ1uP,KAAK6wQ,MAAM/yQ,IAAI,wBACnBkC,KAAKw5Q,gCAEb,uBAAuBl8I,EAAQ39H,EAAU,IAErC,OADAK,KAAK6wQ,MAAMvuP,IAAI,sBAAuB,GAAO7a,MAAM61H,GAAS39H,GACrDK,KAEX,iBACI,OAAOA,KAAK2uP,gBAEhB,eAAerxH,GACXt9H,KAAKy5Q,cAAcn8I,GAEvB,uBACI,OAAOt9H,KAAK6wQ,MAAM/yQ,IAAI,sBAAwB,GAAO6wP,gBAEzD,gBACI,OAAO3uP,KAAK6wQ,MAAM/yQ,IAAI,eAAiBkC,KAAK05Q,uBAEhD,cAAcp8I,EAAQ39H,EAAU,IAE5B,OADAK,KAAK6wQ,MAAMvuP,IAAI,aAAc,GAAO7a,MAAM61H,GAAS39H,GAC5CK,KAEX,sBACI,OAAOA,KAAK4uP,qBAEhB,oBAAoBtxH,GAChBt9H,KAAK25Q,mBAAmBr8I,GAE5B,4BACI,OAAQt9H,KAAK6wQ,MAAM/yQ,IAAI,2BAA6B,GAAO8wP,qBAE/D,qBACI,OAAO5uP,KAAK6wQ,MAAM/yQ,IAAI,oBAAsBkC,KAAK45Q,4BAErD,mBAAmBt8I,EAAQ39H,EAAU,IAEjC,OADAK,KAAK6wQ,MAAMvuP,IAAI,kBAAmB,GAAO7a,MAAM61H,GAAS39H,GACjDK,KAEX,YACI,MAAM6hE,EAAM7hE,KAAK6wQ,MAAM/yQ,IAAI,QAAS,CAAEorE,MAAO,KAI7C,OAHiB,MAAbrH,EAAIqH,QACJrH,EAAIqH,MAAQ,IAETrH,EAEX,WACI,OAAO,EAAU3a,UAAUlnD,KAAK82Q,MAAM5tM,OAE1C,gBAAgB0kL,GACZ,OAAO5tP,KAAK65Q,WAAWroQ,OAAQohO,GAASA,EAAKlxL,QAAUksM,GAE3D,QAAQqH,GACJ,OAAO,EAAU/tM,UAAUlnD,KAAK82Q,MAAM5tM,MAAMx3D,KAAMkhO,GAASA,EAAKpkO,IAAMokO,EAAKpkO,KAAOymP,IAEtF,UAAUvzP,GACN,OAAO1B,KAAK82Q,MAAM5tM,MAAMxnE,IAAU,KAEtC,WACI,OAAO1B,KAAK82Q,MAAM5tM,MAAMvnE,OAAS,EAErC,QAAQszP,GACJ,OAAsC,IAA/Bj1P,KAAK85Q,aAAa7kB,GAE7B,aAAariB,GACT,MAAMqiB,EAAyB,iBAATriB,EAAoBA,EAAOA,EAAKpkO,GACtD,OAAiB,MAAVymP,EACDj1P,KAAK82Q,MAAM5tM,MAAM1mB,UAAWr+C,GAASA,EAAKqK,KAAOymP,IAChD,EAEX,iBAAiBrH,GACb,MAAMhxM,EAAO58C,KAAK44I,UAElB,OADgB54I,KAAK4yO,KAAKmnC,sBAAsBnsB,EAAW,IAAI,GAAU,EAAG,EAAGhxM,EAAKvrB,MAAOurB,EAAKnpB,SACjF+X,OAAO,CAAC8B,EAAMnpC,KACzB,MAAM61Q,EAAS71Q,EAAKmzQ,WAKpB,OAJAhqO,EAAKnpC,EAAK8wP,QAAU,CAChBziO,SAAU70B,OAAO+rD,OAAO,GAAIswN,EAAOxnP,UACnCkiC,MAAOslN,EAAOtlN,OAAS,GAEpBpnB,GACR,IAEP,YAAY2nN,EAAQ/lN,GAChB,OAAOlvC,KAAK6vQ,cAAc7vQ,KAAKi6Q,eAAehlB,EAAQ/lN,IAE1D,YAAY+lN,EAAQtuE,EAAMC,EAAMC,GAC5B,GAAoB,iBAATF,GAAqBzlL,MAAMD,QAAQ0lL,GAAO,CACjD,MAAMz3I,EAAOlvC,KAAKi6Q,eAAehlB,EAAQtuE,GACnCzoL,EAAQ0oL,EACd,OAAO5mL,KAAKowQ,cAAclhO,EAAMhxC,EAAO2oL,GAE3C,MAAM33I,EAAOlvC,KAAKi6Q,eAAehlB,GAC3B/2P,EAAQyoL,EACd,OAAO3mL,KAAKowQ,cAAclhO,EAAMhxC,EAAO0oL,GAE3C,eAAequE,EAAQ/lN,EAAMvvC,GACzB,MAAoB,iBAATuvC,GAAqBhuC,MAAMD,QAAQiuC,GACnClvC,KAAK+xQ,iBAAiB/xQ,KAAKi6Q,eAAehlB,EAAQ/lN,GAAOvvC,GAE7DK,KAAK+xQ,iBAAiB/xQ,KAAKi6Q,eAAehlB,GAAS/lN,GAE9D,SAAS+lN,EAAQ/lN,EAAMhxC,EAAOyB,GAC1B,OAAY,MAARuvC,EACOlvC,KAAKk6Q,YAAYjlB,GAER,iBAAT/lN,GAAqBhuC,MAAMD,QAAQiuC,GACjB,IAArBzoC,UAAU9E,OACH3B,KAAKk6Q,YAAYjlB,EAAQ/lN,GAEvB,MAAThxC,EACO8B,KAAKm6Q,eAAellB,EAAQ/lN,EAAMvvC,GAEtCK,KAAKo6Q,YAAYnlB,EAAQ/lN,EAAMhxC,EAAOyB,GAE1CK,KAAKo6Q,YAAYnlB,EAAQ/lN,EAAMhxC,GAE1C,eAAe+2P,EAAQ/lN,GACnB,MAAMxtC,EAAQ1B,KAAK85Q,aAAa7kB,GAChC,IAAe,IAAXvzP,EACA,MAAM,IAAIsB,MAAM,iCAAiCiyP,MAErD,OAAY,MAAR/lN,GAAyB,KAATA,EACT,CAAC,QAAS,QAAS,GAAGxtC,GAE7BR,MAAMD,QAAQiuC,GACP,CAAC,QAAS,QAAS,GAAGxtC,KAAYwtC,GAEtC,eAAextC,KAASwtC,IAEnC,QAAQ0jM,EAAMjzO,GACV,MAAMm3Q,EAAQ,IAAI92Q,KAAK82Q,MAAM5tM,OAG7B,OAFA4tM,EAAMt0Q,KAAKowO,GACX5yO,KAAKowQ,cAAc,cAAe0G,EAAOn3Q,GAClCK,KAEX,SAAS82Q,EAAOn3Q,GAEZ,OADAK,KAAKowQ,cAAc,cAAe,IAAIpwQ,KAAK82Q,MAAM5tM,SAAU4tM,GAAQn3Q,GAC5DK,KAEX,WAAW0B,EAAOkxO,EAAMjzO,GACpB,MAAMm3Q,EAAQ,IAAI92Q,KAAK82Q,MAAM5tM,OAG7B,OAFA4tM,EAAMzvQ,OAAO3F,EAAO,EAAGkxO,GACvB5yO,KAAKowQ,cAAc,cAAe0G,EAAOn3Q,GAClCK,KAEX,WAAW4yO,EAAMjzO,EAAU,IACvB,OAAOK,KAAKq6Q,aAAar6Q,KAAK85Q,aAAalnC,GAAOjzO,GAEtD,aAAa+B,EAAO/B,EAAU,IAC1B,GAAI+B,GAAS,EAAG,CACZ,MAAMo1Q,EAAQ,IAAI92Q,KAAK82Q,MAAM5tM,OAC7B4tM,EAAMzvQ,OAAO3F,EAAO,GACpB/B,EAAQs+P,SAAU,EAClBj+P,KAAKowQ,cAAc,cAAe0G,EAAOn3Q,GAE7C,OAAOK,KAEX,YAAYs6Q,EAAiB7/O,GACzB,IAAI96B,EACJ,GAAIuB,MAAMD,QAAQq5Q,IAEd,GADA36Q,EAAU86B,GAAO,GACb6/O,EAAgB34Q,OAAQ,CACxBhC,EAAQs+P,SAAU,EAClB,MACMsc,EADe,IAAIv6Q,KAAK82Q,MAAM5tM,OACA13D,OAAQoxP,IAAQ0X,EAAgBh0N,KAAMvnD,IACtE,MAAMyP,EAAkB,iBAANzP,EAAiBA,EAAIA,EAAEyP,GACzC,OAAOo0P,EAAGp0P,KAAOA,KAErBxO,KAAKowQ,cAAc,cAAemK,EAAgB56Q,SAItDA,EAAU26Q,GAAmB,GAC7B36Q,EAAQs+P,SAAU,EAClBj+P,KAAKowQ,cAAc,cAAe,GAAIzwQ,GAE1C,OAAOK,KAEX,iBACI,OAAOA,KAAK4yO,KAAKinC,WAErB,kBACI,OAAO75Q,KAAK4yO,KAAK1kO,OAErB,sBAAsB0/O,EAAWryL,GAC7B,OAAOv7D,KAAK4yO,KAAKmnC,sBAAsBnsB,EAAWryL,GAEtD,YACIv7D,KAAKw6Q,iBACLx6Q,KAAKooB,GAAG,eAAgB,KACpBpoB,KAAKy6Q,qBACLz6Q,KAAKw6Q,mBAGb,qBACI,MAAMx1O,EAAUhlC,KAAK82Q,MACf4D,EAAkB,GACxB11O,EAAQkkC,MAAM/9B,QAAShnC,IACfA,EAAKqK,KACLksQ,EAAgBv2Q,EAAKqK,KAAM,KAGnC,MAAMqpF,EAAU,IACC73F,KAAK6wQ,MAAMmB,YAAY,UAAY,CAChD9oM,MAAO,KAEFA,MAAM/9B,QAAShnC,IAChBA,EAAKqK,KAAOksQ,EAAgBv2Q,EAAKqK,MACjCqpF,EAAQ1zF,EAAKqK,KAAM,KAG3B,MAAM8qE,EAAQt5E,KAAKs5E,MACnB,GAAIA,IAAU,EAAU5xB,QAAQmwC,GAAU,CACpBve,EAAMqhM,kBAAkB36Q,KAAM,CAAE46Q,UAAU,IAClDzvO,QAASyuB,IACf,MAAMq7L,EAASr7L,EAAKihN,kBAChB5lB,GAAUp9J,EAAQo9J,IAClBr7L,EAAKh8C,WAGK07D,EAAMqhM,kBAAkB36Q,KAAM,CAAE86Q,UAAU,IAClD3vO,QAASyuB,IACf,MAAMq7L,EAASr7L,EAAKmhN,kBAChB9lB,GAAUp9J,EAAQo9J,IAClBr7L,EAAKh8C,YAKrB,gBACI,MAAM8xP,EAAM,GACNsL,EAAS,GAaf,OAZAh7Q,KAAK82Q,MAAM5tM,MAAM/9B,QAASpsC,IACL,iBAANA,GACPi8Q,EAAOx4Q,KAAK,gBAAgBzD,MAEpB,MAARA,EAAEyP,KACFzP,EAAEyP,GAAKxO,KAAKi7Q,kBAEZvL,EAAI3wQ,EAAEyP,KACNwsQ,EAAOx4Q,KAAK,wBAEhBktQ,EAAI3wQ,EAAEyP,KAAM,IAETwsQ,EAEX,iBACI,OAAO,EAAU/uJ,OAErB,iBACI,MAAM/jG,EAAMloB,KAAKk7Q,gBACjB,GAAIhzP,EAAIvmB,OAAS,EAEb,MADA3B,KAAK6wQ,MAAMvuP,IAAI,QAAStiB,KAAK6wQ,MAAMmB,YAAY,UACzC,IAAIhvQ,MAAMklB,EAAIlZ,KAAK,MAE7B,MAAMmM,EAAOnb,KAAK4yO,KAAO5yO,KAAK4yO,KAAKinC,WAAa,KAChD75Q,KAAK4yO,KAAO,IAAI,GAAY5yO,KAAK82Q,OACjC,MAAMpkF,EAAO1yL,KAAK4yO,KAAKinC,WACjBzlG,EAAQj5J,EACRu3K,EAAKlhL,OAAQrN,GACNgX,EAAKzJ,KAAMypQ,GAAaA,EAAS3sQ,KAAOrK,EAAKqK,IAG3C,KAFIrK,GAIb,IAAIuuL,GACJ76F,EAAU18E,EACVA,EAAK3J,OAAQrN,GACNuuL,EAAKhhL,KAAM0pQ,GAAYA,EAAQ5sQ,KAAOrK,EAAKqK,IAGzC,KAFIrK,GAIb,GACFiwK,EAAMzyK,OAAS,GACf3B,KAAK4e,OAAO,cAAe,CAAEw1J,QAAOy9D,KAAM7xO,KAAM2E,KAAM3E,OAEtD63F,EAAQl2F,OAAS,GACjB3B,KAAK4e,OAAO,gBAAiB,CAAEi5E,UAASg6I,KAAM7xO,KAAM2E,KAAM3E,QAItE,GAAKksC,SAAW,CACZwoB,MAAO,EACPliC,SAAU,CAAE+f,EAAG,EAAGC,EAAG,GACrBoK,KAAM,CAAEvrB,MAAO,EAAGoC,OAAQ,IAE9B,SAAWokH,GACPA,EAAK55I,YAAc,MAAM45I,EAAKr6I,KAqB9Bq6I,EAAKg1C,OApBL,SAAgB32H,GACZ,GAAgB,MAAZA,EACA,OAAO,EAEX,GAAIA,aAAoB2hF,EACpB,OAAO,EAEX,MAAMjmI,EAAMskD,EAASl4D,OAAOC,aACtB0G,EAAOuxD,EACb,OAAY,MAAPtkD,GAAeA,IAAQimI,EAAK55I,cACN,mBAAhB0G,EAAKkoL,QACW,mBAAhBloL,EAAK8/D,QACS,mBAAd9/D,EAAK6d,MACS,mBAAd7d,EAAKsO,MACS,mBAAdtO,EAAKi4C,MACa,mBAAlBj4C,EAAK6tB,UAjBxB,CAuBG,KAAS,GAAO,KACnB,SAAWqlH,GACPA,EAAKl1E,OAAO,CACR,UAAUmxE,GACN,IAAI,MAAEgjI,GAAUhjI,EAAIw9H,EAAW,GAAOx9H,EAAI,CAAC,UAI3C,OAHIgjI,IACAxF,EAASwF,MAAQ51Q,MAAMD,QAAQ61Q,GAAS,CAAE5tM,MAAO4tM,GAAUA,GAExDxF,KAPnB,CAUG,KAAS,GAAO,KACnB,SAAWz5H,GACPA,EAAK67F,SAAW,GAASn1O,OAAO,CAC5BgD,KAAM,OACN,QAAQ6vC,EAAOzxC,GACX,GAAI0xQ,GAAcvjC,MAAM18L,GAAO,GAC3B,MAAM,IAAIpuC,MAAM,mBAAmBouC,oCAEvC,GAAuB,mBAAZzxC,EAEP,OADAA,EAAQgjE,OAAO,CAAEvxB,UACVzxC,EAEX,IAAIQ,EAAS03I,EACb,MAAM,QAAEu3C,GAAYzvL,EAASgjE,EAAS,GAAOhjE,EAAS,CAAC,YACvD,GAAIyvL,EACA,GAAuB,iBAAZA,EAAsB,CAC7B,MAAMt4K,EAAO9W,KAAKlC,IAAIsxL,GACV,MAARt4K,EACA9W,KAAKk0O,WAAW9kD,EAAS,aAGzBjvL,EAAS2W,OAIb3W,EAASivL,EAGa,MAA1BzsH,EAAO04M,kBACP14M,EAAO04M,gBAAkBjqO,GAE7B,MAAM0lN,EAAO32P,EAAOstP,OAAOrwP,KAAK+C,EAAQwiE,GAExC,OADAm0L,EAAKn0L,OAAO,CAAEvxB,UACP0lN,KAGfua,GAAcwF,gBAAgBh/H,EAAK67F,UAnCvC,CAoCG,KAAS,GAAO,KACnB,SAAW77F,GACP,IAAIvqE,EAAU,EAiBduqE,EAAK41G,OATL,SAAgB9qL,GACZ,MAAM,gBAAE04M,EAAe,UAAEvvO,GAAc62B,EAAQqxK,EAAS,GAAOrxK,EAAQ,CAAC,kBAAmB,cACrFm0L,EAAO,EAAU79G,aATLz7I,EAS8B69Q,GAAmBrnC,EAAO5iM,OAP/D,EAAUs+F,WAAWlyI,IAEhC8vE,GAAW,EACJ,aAAaA,GAI8DttE,MATtF,IAAsBxC,EAclB,OAJAs5P,EAAKn0L,OAAOqxK,GACRA,EAAO5iM,OACPymG,EAAK67F,SAASn9F,SAASy9F,EAAO5iM,MAAO0lN,EAAMhrN,GAExCgrN,GAWXj/G,EAAKt5I,OARL,SAAgBoB,GACZ,MAAMyxC,EAAQzxC,EAAQyxC,OAAS,OACzB9oC,EAAOuvI,EAAK67F,SAAS51O,IAAIszC,GAC/B,OAAI9oC,EACO,IAAIA,EAAK3I,GAEbk4I,EAAK67F,SAASQ,WAAW9iM,IAzBxC,CA4BG,KAAS,GAAO,KCjxBnB,IAqCWkqO,GArCP,GAAkC,SAAUt8Q,EAAG6O,GAC/C,IAAI1P,EAAI,GACR,IAAK,IAAIY,KAAKC,EAAOrB,OAAOkB,UAAUC,eAAe1B,KAAK4B,EAAGD,IAAM8O,EAAEpK,QAAQ1E,GAAK,IAC9EZ,EAAEY,GAAKC,EAAED,IACb,GAAS,MAALC,GAAqD,mBAAjCrB,OAAOsxG,sBACtB,KAAIhyG,EAAI,EAAb,IAAgB8B,EAAIpB,OAAOsxG,sBAAsBjwG,GAAI/B,EAAI8B,EAAE4C,OAAQ1E,IAC3D4Q,EAAEpK,QAAQ1E,EAAE9B,IAAM,GAAKU,OAAOkB,UAAUwxD,qBAAqBjzD,KAAK4B,EAAGD,EAAE9B,MACvEkB,EAAEY,EAAE9B,IAAM+B,EAAED,EAAE9B,KAE1B,OAAOkB,GAIJ,MAAM,WAAa,GACtB,YACI,OAAO6B,KAAK83Q,WAEhB,UAAUjzQ,GACN7E,KAAKu7Q,SAAS12Q,GAElB,WACI,OAAO7E,KAAKgzQ,cAAc,aAE9B,SAASj7D,EAAOp4M,GAOZ,OANa,MAATo4M,EACA/3M,KAAKw7Q,cAGLx7Q,KAAKy6J,cAAc,YAAas9C,EAAOp4M,GAEpCK,KAEX,cAEI,OADAA,KAAKizQ,iBAAiB,aACfjzQ,OAGJs7Q,GAyBR,KAAS,GAAO,KAxBVG,SAAW,CACZ7rO,KAAM,UACNC,OAAQ,UACRskM,YAAa,GAEjBmnC,GAAKI,UAAY,CACb56J,SAAU,GACVlxE,KAAM,UACNwkM,KAAM,GACNunC,KAAM,GACN3hC,WAAY,SACZjhD,mBAAoB,SACpBh4E,WAAY,gCAEhBu6J,GAAK34M,OAAO,CACR/yD,MAAO,CAAE5K,KAAMrH,OAAO+rD,OAAO,GAAI4xN,GAAKI,YACtC,UAAUpK,GACN,MAAM,MAAEv5D,GAAUu5D,EAAUt9B,EAAS,GAAOs9B,EAAU,CAAC,UAIvD,OAHIv5D,GACA,EAAU5pB,UAAU6lD,EAAQ,kBAAmBj8B,GAE5Ci8B,KC3DnB,IAAI,GAAkC,SAAUh1O,EAAG6O,GAC/C,IAAI1P,EAAI,GACR,IAAK,IAAIY,KAAKC,EAAOrB,OAAOkB,UAAUC,eAAe1B,KAAK4B,EAAGD,IAAM8O,EAAEpK,QAAQ1E,GAAK,IAC9EZ,EAAEY,GAAKC,EAAED,IACb,GAAS,MAALC,GAAqD,mBAAjCrB,OAAOsxG,sBACtB,KAAIhyG,EAAI,EAAb,IAAgB8B,EAAIpB,OAAOsxG,sBAAsBjwG,GAAI/B,EAAI8B,EAAE4C,OAAQ1E,IAC3D4Q,EAAEpK,QAAQ1E,EAAE9B,IAAM,GAAKU,OAAOkB,UAAUwxD,qBAAqBjzD,KAAK4B,EAAGD,EAAE9B,MACvEkB,EAAEY,EAAE9B,IAAM+B,EAAED,EAAE9B,KAE1B,OAAOkB,GAOJ,SAASmyL,GAAQ9yL,GACpB,MAAO,SAASA,EAEb,SAASo+Q,GAAgBhsC,EAAW,cAkCvC,OAjCc0hC,IACV,MAAM,SAAEuK,EAAQ,WAAEC,EAAU,YAAEC,GAAgBzK,EAAUt9B,EAAS,GAAOs9B,EAAU,CAAC,WAAY,aAAc,gBAC7G,GAAgB,MAAZuK,GAAkC,MAAdC,GAAqC,MAAfC,EAAqB,CAC/D,MAAMv4Q,EAAQ,KACV,GAAIwwO,EAAOpkO,MAAO,CACd,MAAM6G,EAAQu9N,EAAOpkO,MAAM6G,MACX,MAAZolQ,IACAplQ,EAAMm5N,GAAYisC,GAEJ,MAAdC,IACArlQ,EAAM4a,MAAQyqP,GAEC,MAAfC,IACAtlQ,EAAMgd,OAASsoP,GAEnB/nC,EAAOpkO,MAAM6G,MAAQA,IAGzBu9N,EAAOpkO,OACmB,MAAtBokO,EAAOpkO,MAAM6G,QACbu9N,EAAOpkO,MAAM6G,MAAQ,IAEzBjT,MAGAwwO,EAAOpkO,MAAQ,CACX6G,MAAO,IAEXjT,KAGR,OAAOwwO,GAIR,SAASgoC,GAAY5qO,EAAOuxB,EAAQhjE,EAAU,IACjD,MAAMnC,EAAO8yL,GAAQl/I,GACflF,EAAW,CACbmvO,gBAAiB79Q,EACjBoS,MAAO,CACH,IAAK,CACDggC,KAAM,UACNC,OAAQ,QAEZ,CAACuB,GAAQ,CACLxB,KAAM,UACNC,OAAQ,aAIflwC,EAAQs8Q,eACT/vO,EAASoxF,OA1DV,SAAmB73C,EAASy2L,GAAS,GACxC,MAAO,6CAA6Cz2L,UAAgBy2L,EAAS,GAAK,gBAyD5D,CAAU9qO,GAA0B,IAAnBzxC,EAAQu8Q,SAG/C,OADav8Q,EAAQQ,QAAU,IACnBstP,OAAO,EAAUtnP,MAAM+lC,EAAUy2B,EAAQ,CAAEvxB,MAAO5zC,KCzE9Cw+Q,GAAY,OAAQ,CACpCpsQ,MAAO,CACHi5B,KAAM,CACFxX,MAAO,IACPoC,OAAQ,OCJEuoP,GAAY,SAAU,CACxC3qP,MAAO,GACPoC,OAAQ,GACR7jB,MAAO,CACHkiI,OAAQ,CACJ/zI,EAAG,GACHi/F,GAAI,GACJC,GAAI,OCPO++K,GAAY,UAAW,CAC1C3qP,MAAO,GACPoC,OAAQ,GACR7jB,MAAO,CACHw5F,QAAS,CACLrK,GAAI,GACJC,GAAI,GACJhC,GAAI,GACJC,GAAI,OCRO++K,GAAY,UAAW,CAC1C3qP,MAAO,GACPoC,OAAQ,GACR7jB,MAAO,CACH5K,KAAM,CACF22Q,KAAM,KACNtsC,MAAO,OCNK2sC,GAAY,WAAY,CAC5C3qP,MAAO,GACPoC,OAAQ,GACR7jB,MAAO,CACH5K,KAAM,CACF22Q,KAAM,KACNtsC,MAAO,OCNE2sC,GAAY,QAAS,CACtCpsQ,MAAO,CACH5K,KAAM,CACF22Q,KAAM,KACNtsC,MAAO,KAGfr4M,UAAW4kP,OCRf,IAAI,GAAkC,SAAU58Q,EAAG6O,GAC/C,IAAI1P,EAAI,GACR,IAAK,IAAIY,KAAKC,EAAOrB,OAAOkB,UAAUC,eAAe1B,KAAK4B,EAAGD,IAAM8O,EAAEpK,QAAQ1E,GAAK,IAC9EZ,EAAEY,GAAKC,EAAED,IACb,GAAS,MAALC,GAAqD,mBAAjCrB,OAAOsxG,sBACtB,KAAIhyG,EAAI,EAAb,IAAgB8B,EAAIpB,OAAOsxG,sBAAsBjwG,GAAI/B,EAAI8B,EAAE4C,OAAQ1E,IAC3D4Q,EAAEpK,QAAQ1E,EAAE9B,IAAM,GAAKU,OAAOkB,UAAUwxD,qBAAqBjzD,KAAK4B,EAAGD,EAAE9B,MACvEkB,EAAEY,EAAE9B,IAAM+B,EAAED,EAAE9B,KAE1B,OAAOkB,GAIJ,MAAM,GAAO69Q,GAAY,OAAQ,CACpC3qP,MAAO,GACPoC,OAAQ,GACR7jB,MAAO,CACH5K,KAAM,CACF6uD,IAAK,OACL8nN,KAAM,KACNtsC,MAAO,KAGf,UAAUiiC,GACN,MAAM,EAAE/zQ,GAAM+zQ,EAAUt9B,EAAS,GAAOs9B,EAAU,CAAC,MAInD,OAHS,MAAL/zQ,GACA,EAAU4wL,UAAU6lD,EAAQ,eAAgBz2O,GAEzCy2O,KC1BQgoC,GAAY,UAAW,CAC1Cz+Q,EAAG,8BACHqS,MAAO,CACH5K,KAAM,CACF22Q,KAAM,GACNtsC,MAAO,QAGhB,CACClvO,OAAQ,GACR87Q,cAAc,ICVMD,GAAY,WAAY,CAC5C3qP,MAAO,GACPoC,OAAQ,GACR7jB,MAAO,CACHs/B,KAAM,CACFU,KAAM,UACNC,OAAQ,UACRskM,YAAa,EACb52O,EAAG,CACC,kDACA,SACA,wBACA,WACFyR,KAAK,MAEXhK,KAAM,CACF22Q,KAAM,GACNtsC,MAAO,KACPz/L,KAAM,aAGf,CACCzvC,OAAQ,GACR87Q,cAAc,ICzBlB,IAAI,GAAkC,SAAUj9Q,EAAG6O,GAC/C,IAAI1P,EAAI,GACR,IAAK,IAAIY,KAAKC,EAAOrB,OAAOkB,UAAUC,eAAe1B,KAAK4B,EAAGD,IAAM8O,EAAEpK,QAAQ1E,GAAK,IAC9EZ,EAAEY,GAAKC,EAAED,IACb,GAAS,MAALC,GAAqD,mBAAjCrB,OAAOsxG,sBACtB,KAAIhyG,EAAI,EAAb,IAAgB8B,EAAIpB,OAAOsxG,sBAAsBjwG,GAAI/B,EAAI8B,EAAE4C,OAAQ1E,IAC3D4Q,EAAEpK,QAAQ1E,EAAE9B,IAAM,GAAKU,OAAOkB,UAAUwxD,qBAAqBjzD,KAAK4B,EAAGD,EAAE9B,MACvEkB,EAAEY,EAAE9B,IAAM+B,EAAED,EAAE9B,KAE1B,OAAOkB,GAQJ,MAAM,WAAa,GACtB,YAAYmzQ,EAAW,IACnB3yL,MAAM2yL,GAEVxzQ,IAAKE,OAAOC,eACR,OAAO,GAAKA,YAEhB,WAAWqzQ,EAAUI,GACjB,MAAM,OAAE3tP,EAAM,WAAEo4P,EAAU,WAAEC,EAAU,YAAErqC,EAAW,OAAErqO,EAAM,WAAE20Q,EAAU,WAAEC,EAAU,YAAEtqC,GAAgBs/B,EAC/F/uP,EADkH,GAAO+uP,EAAU,CAAC,SAAU,aAAc,aAAc,cAAe,SAAU,aAAc,aAAc,gBAE/NiL,EAAa13Q,GAAuB,iBAARA,GAAmC,iBAARA,EAC7D,GAAc,MAAVkf,EACA,GAAI,GAAKmwP,OAAOnwP,GACZxB,EAAKwB,OAAS,CAAE8tN,KAAM9tN,EAAOvV,SAE5B,GAAI+tQ,EAAUx4P,GACfxB,EAAKwB,OAAS,CAAE8tN,KAAM9tN,QAErB,GAAI,GAAMkyC,QAAQlyC,GACnBxB,EAAKwB,OAASA,EAAOgoC,cAEpB,GAAI7qD,MAAMD,QAAQ8iB,GACnBxB,EAAKwB,OAAS,CAAEwuB,EAAGxuB,EAAO,GAAIyuB,EAAGzuB,EAAO,QAEvC,CACD,MAAM8tN,EAAO9tN,EAAO8tN,KAChB,GAAKqiC,OAAOriC,GACZtvN,EAAKwB,OAASpmB,OAAO+rD,OAAO/rD,OAAO+rD,OAAO,GAAI3lC,GAAS,CAAE8tN,KAAMA,EAAKrjO,KAGpE+T,EAAKwB,OAASA,EAI1B,GAAkB,MAAdo4P,GAAoC,MAAdC,EAAoB,CAC1C,IAAIhwB,EAAW7pO,EAAKwB,OACpB,GAAkB,MAAdo4P,EAAoB,CACpB,MAAM3tQ,EAAK+tQ,EAAUJ,GAAcA,EAAaA,EAAW3tQ,GACvD49O,EACAA,EAASva,KAAOrjO,EAGhB49O,EAAW7pO,EAAKwB,OAAS,CAAE8tN,KAAMrjO,GAGvB,MAAd4tQ,GAAsBhwB,IACtBA,EAASxZ,KAAOwpC,QAGA,MAAfrqC,IACLxvN,EAAKwB,OAAS,GAAMxlB,OAAOwzO,GAAahmL,UAE5C,GAAc,MAAVrkD,EACA,GAAI,GAAKwsQ,OAAOxsQ,GACZ6a,EAAK7a,OAAS,CAAEmqO,KAAMnqO,EAAO8G,SAE5B,GAAI+tQ,EAAU70Q,GACf6a,EAAK7a,OAAS,CAAEmqO,KAAMnqO,QAErB,GAAI,GAAMuuD,QAAQvuD,GACnB6a,EAAK7a,OAASA,EAAOqkD,cAEpB,GAAI7qD,MAAMD,QAAQyG,GACnB6a,EAAK7a,OAAS,CAAE6qC,EAAG7qC,EAAO,GAAI8qC,EAAG9qC,EAAO,QAEvC,CACD,MAAMmqO,EAAOnqO,EAAOmqO,KAChB,GAAKqiC,OAAOriC,GACZtvN,EAAK7a,OAAS/J,OAAO+rD,OAAO/rD,OAAO+rD,OAAO,GAAIhiD,GAAS,CAAEmqO,KAAMA,EAAKrjO,KAGpE+T,EAAK7a,OAASA,EAI1B,GAAkB,MAAd20Q,GAAoC,MAAdC,EAAoB,CAC1C,IAAIlwB,EAAW7pO,EAAK7a,OACpB,GAAkB,MAAd20Q,EAAoB,CACpB,MAAM7tQ,EAAK+tQ,EAAUF,GAAcA,EAAaA,EAAW7tQ,GACvD49O,EACAA,EAASva,KAAOrjO,EAGhB49O,EAAW7pO,EAAK7a,OAAS,CAAEmqO,KAAMrjO,GAGvB,MAAd8tQ,GAAsBlwB,IACtBA,EAASxZ,KAAO0pC,QAGA,MAAftqC,IACLzvN,EAAK7a,OAAS,GAAMnJ,OAAOyzO,GAAajmL,UAE5C,OAAO4yB,MAAM4yL,WAAWhvP,EAAMmvP,GAElC,QACI/yL,MAAM10D,QACNjqB,KAAKooB,GAAG,gBAAkBjT,GAASnV,KAAKw8Q,gBAAgBrnQ,IACxDnV,KAAKooB,GAAG,kBAAoBjT,GAASnV,KAAKy8Q,iBAAiBtnQ,IAE/D,SACI,OAAO,EAGX,WAAWxV,EAAU,IAKjB,OAJAK,KAAK6wQ,MAAMvuP,IAAI,CACXyB,OAAQ,CAAEwuB,EAAG,EAAGC,EAAG,GACnB9qC,OAAQ,CAAE6qC,EAAG,EAAGC,EAAG,IACpB7yC,GACIK,KAEX,aACI,OAAOA,KAAKs2Q,YAEhB,WAAW/zP,GACPviB,KAAKq2Q,UAAU9zP,GAEnB,YACI,OAAOviB,KAAKk5Q,YAAY,UAE5B,kBACI,OAAOl5Q,KAAK+jB,OAAO8tN,KAEvB,kBACI,OAAO7xO,KAAK+jB,OAAO6uN,KAEvB,UAAU7uN,EAAQ5O,EAAMxV,EAAU,IAC9B,OAAOK,KAAK08Q,YAAY,SAAU34P,EAAQ5O,EAAMxV,GAEpD,aACI,OAAOK,KAAKw2Q,YAEhB,WAAWj0P,GACPviB,KAAKu2Q,UAAUh0P,GAEnB,YACI,OAAOviB,KAAKk5Q,YAAY,UAE5B,kBACI,OAAOl5Q,KAAK0H,OAAOmqO,KAEvB,kBACI,OAAO7xO,KAAK0H,OAAOkrO,KAEvB,UAAUlrO,EAAQyN,EAAMxV,EAAU,IAC9B,OAAOK,KAAK08Q,YAAY,SAAUh1Q,EAAQyN,EAAMxV,GAEpD,YAAY4B,GACR,OAAO5D,OAAO+rD,OAAO,GAAI1pD,KAAK6wQ,MAAM/yQ,IAAIyD,IAE5C,YAAYA,EAAM6qP,EAAUj3O,EAAMxV,EAAU,IAExC,GAAI,GAAKu0Q,OAAO9nB,GAEZ,OADApsP,KAAK6wQ,MAAMvuP,IAAI/gB,EAAM,EAAU4E,MAAM,GAAIgP,EAAM,CAAE08N,KAAMua,EAAS59O,KAAO7O,GAChEK,KAGX,MAAMjB,EAAIqtP,EACV,OAAI,GAAMn2L,QAAQm2L,IAAqB,MAAPrtP,EAAEwzC,GAAoB,MAAPxzC,EAAEyzC,GAC7CxyC,KAAK6wQ,MAAMvuP,IAAI/gB,EAAM,EAAU4E,MAAM,GAAIgP,EAAM,CAAEo9B,EAAGxzC,EAAEwzC,EAAGC,EAAGzzC,EAAEyzC,IAAM7yC,GAC7DK,OAGXA,KAAK6wQ,MAAMvuP,IAAI/gB,EAAM,EAAU2lD,UAAUklM,GAAWzsP,GAC7CK,MAEX,iBACI,OAAOA,KAAK28Q,iBAAiB,UAEjC,iBACI,OAAO38Q,KAAK28Q,iBAAiB,UAEjC,iBAAiBp7Q,GACb,MAAM6qP,EAAWpsP,KAAKuB,GACtB,GAAI,GAAM60D,YAAYg2L,GAClB,OAAO,GAAM7tP,OAAO6tP,GAExB,MAAMva,EAAO7xO,KAAK48Q,gBAAgBr7Q,GAClC,OAAIswO,EACOA,EAAKgvB,mBAAmB7gQ,KAAMuB,GAElC,IAAI,GAEf,gBACI,OAAOvB,KAAK48Q,gBAAgB,UAEhC,gBACI,OAAO58Q,KAAK48Q,gBAAgB,UAEhC,gBAAgBr7Q,GACZ,GAAIvB,KAAKs5E,MAAO,CACZ,MAAMujM,EAAkB,WAATt7Q,EAAoBvB,KAAKimQ,kBAAoBjmQ,KAAKmmQ,kBACjE,GAAI0W,EACA,OAAO78Q,KAAKs5E,MAAMysL,QAAQ8W,GAGlC,OAAO,KAEX,gBACI,OAAO78Q,KAAK88Q,gBAAgB,UAEhC,gBACI,OAAO98Q,KAAK88Q,gBAAgB,UAEhC,gBAAgBv7Q,GACZ,IAAIswO,EAAO7xO,KACX,MAAM+8Q,EAAU,GAChB,KAAOlrC,GAAQA,EAAKptK,UAAU,CAC1B,GAAIs4M,EAAQlrC,EAAKrjO,IACb,OAAO,KAEXuuQ,EAAQlrC,EAAKrjO,KAAM,EACnBqjO,EAAOA,EAAK+qC,gBAAgBr7Q,GAEhC,OAAOswO,GAAQA,EAAKhlD,SAAWglD,EAAO,KAI1C,aACI,OAAO7xO,KAAKg9Q,YAEhB,WAAWz6P,GACK,MAARA,EACAviB,KAAKi9Q,eAGLj9Q,KAAKk9Q,UAAU36P,GAGvB,YACI,OAAOviB,KAAK6wQ,MAAM/yQ,IAAI,UAE1B,UAAUN,EAAM2X,EAAMxV,GAOlB,MANoB,iBAATnC,EACPwC,KAAK6wQ,MAAMvuP,IAAI,SAAU9kB,EAAM2X,GAG/BnV,KAAK6wQ,MAAMvuP,IAAI,SAAU,CAAE9kB,OAAM2X,QAAQxV,GAEtCK,KAEX,aAAaL,EAAU,IAEnB,OADAK,KAAK6wQ,MAAMjzP,OAAO,SAAUje,GACrBK,KAIX,gBACI,OAAOA,KAAK2uQ,eAEhB,cAAcpsP,GACE,MAARA,EACAviB,KAAKm9Q,kBAGLn9Q,KAAKo9Q,aAAa76P,GAG1B,eACI,OAAOviB,KAAK6wQ,MAAM/yQ,IAAI,aAE1B,aAAaN,EAAM2X,EAAMxV,GAOrB,MANoB,iBAATnC,EACPwC,KAAK6wQ,MAAMvuP,IAAI,YAAa9kB,EAAM2X,GAGlCnV,KAAK6wQ,MAAMvuP,IAAI,YAAa,CAAE9kB,OAAM2X,QAAQxV,GAEzCK,KAEX,gBAAgBL,EAAU,IACtB,OAAOK,KAAK6wQ,MAAMjzP,OAAO,YAAaje,GAI1C,eACI,OAAOK,KAAKq1P,cAEhB,aAAa9yO,GACG,MAARA,EACAviB,KAAKq9Q,iBAGLr9Q,KAAKs9Q,YAAY/6P,GAGzB,cACI,OAAOviB,KAAK6wQ,MAAM/yQ,IAAI,YAE1B,YAAYN,EAAM2X,EAAMxV,GAOpB,MANoB,iBAATnC,EACPwC,KAAK6wQ,MAAMvuP,IAAI,WAAY9kB,EAAM2X,GAGjCnV,KAAK6wQ,MAAMvuP,IAAI,WAAY,CAAE9kB,OAAM2X,QAAQxV,GAExCK,KAEX,eAAeL,EAAU,IACrB,OAAOK,KAAK6wQ,MAAMjzP,OAAO,WAAYje,GAIzC,kBACI,MAAMm3P,EAAO92P,KAAK6F,YACZqmC,EAAWlsC,KAAK6wQ,MAAM/yQ,IAAI,iBAAmBg5P,EAAKymB,cAAgB,GACxE,OAAO,EAAUr2N,UAAUhb,GAE/B,aACI,OAAOlsC,KAAKw9Q,YAEhB,WAAWprB,GACPpyP,KAAKy9Q,UAAUrrB,GAEnB,YACI,MAAO,IAAIpyP,KAAK6wQ,MAAM/yQ,IAAI,SAAU,KAAKyI,IAAKpC,GAASnE,KAAK09Q,WAAWv5Q,IAE3E,UAAUiuP,EAAQzyP,EAAU,IAExB,OADAK,KAAK6wQ,MAAMvuP,IAAI,SAAUphB,MAAMD,QAAQmxP,GAAUA,EAAS,CAACA,GAASzyP,GAC7DK,KAEX,YAAY+3M,EAAOr2M,EAAO/B,EAAU,IAChC,MAAMyyP,EAASpyP,KAAKw9Q,YACdv2Q,EAAMmrP,EAAOzwP,OACnB,IAAI0T,EAAe,MAAT3T,GAAiBw6D,OAAO9lC,SAAS10B,GAASA,EAAQuF,EAK5D,OAJIoO,EAAM,IACNA,EAAMpO,EAAMoO,EAAM,GAEtB+8O,EAAO/qP,OAAOgO,EAAK,EAAGrV,KAAK09Q,WAAW3lE,IAC/B/3M,KAAKy9Q,UAAUrrB,EAAQzyP,GAElC,YAAYo4M,EAAOp4M,EAAU,IACzB,OAAOK,KAAK29Q,YAAY5lE,GAAQ,EAAGp4M,GAEvC,WAAW+B,GACP,MAAM0wP,EAASpyP,KAAKw9Q,YACpB,OAAa,MAAT97Q,GAAiBw6D,OAAO9lC,SAAS10B,GAC1B1B,KAAK09Q,WAAWtrB,EAAO1wP,IAE3B,KAEX,WAAWA,EAAOq2M,EAAOp4M,EAAU,IAC/B,GAAa,MAAT+B,GAAiBw6D,OAAO9lC,SAAS10B,GAAQ,CACzC,MAAM0wP,EAASpyP,KAAKw9Q,YACpBprB,EAAO1wP,GAAS1B,KAAK09Q,WAAW3lE,GAChC/3M,KAAKy9Q,UAAUrrB,EAAQzyP,GAE3B,OAAOK,KAEX,cAAc0B,EAAO/B,EAAU,IAC3B,MAAMyyP,EAASpyP,KAAKw9Q,YACdnoQ,EAAe,MAAT3T,GAAiBw6D,OAAO9lC,SAAS10B,GAASA,GAAS,EACzDm2F,EAAUu6J,EAAO/qP,OAAOgO,EAAK,GAEnC,OADArV,KAAKy9Q,UAAUrrB,EAAQzyP,GAChBk4F,EAAQl2F,OAASk2F,EAAQ,GAAK,KAEzC,WAAWkgH,GACP,GAAqB,iBAAVA,EAAoB,CAE3B,OADa/3M,KAAK6F,YACN+3Q,iBAAiB7lE,GAEjC,OAAOA,EAEX,iBAAgB,SAAE93J,EAAQ,QAAEjb,IACxB,MAAMovI,EAAQn0H,GAAYjb,EACpBA,EAAQxzB,OAAQqsQ,GACT59N,EAASvuC,KAAMosQ,GAAWD,IAAWC,GAAU,EAAUn2N,QAAQk2N,EAAQC,IAGvE,KAFID,GAIb74O,EACI,IAAIA,GACJ,GACJ6yD,EAAU53C,GAAYjb,EACtBib,EAASzuC,OAAQqsQ,GACV74O,EAAQtzB,KAAMosQ,GAAWD,IAAWC,GAAU,EAAUn2N,QAAQk2N,EAAQC,IAGtE,KAFID,GAIb59N,EACI,IAAIA,GACJ,GACNm0H,EAAMzyK,OAAS,GACf3B,KAAK4e,OAAO,eAAgB,CAAEw1J,QAAOy9D,KAAM7xO,KAAM45D,KAAM55D,OAEvD63F,EAAQl2F,OAAS,GACjB3B,KAAK4e,OAAO,iBAAkB,CAAEi5E,UAASg6I,KAAM7xO,KAAM45D,KAAM55D,OAKnE,mBACI,OAAOA,KAAK+9Q,kBAEhB,iBAAiBzgJ,GACbt9H,KAAKg+Q,gBAAgB1gJ,GAEzB,yBACI,OAAOt9H,KAAK6wQ,MAAM/yQ,IAAI,wBAA0B,GAAOixP,sBAE3D,kBACI,OAAO/uP,KAAK6wQ,MAAM/yQ,IAAI,iBAAmBkC,KAAKi+Q,yBAElD,gBAAgB3gJ,EAAQ39H,EAAU,IAE9B,OADAK,KAAK6wQ,MAAMvuP,IAAI,eAAgB,GAAO7a,MAAM61H,GAAS39H,GAC9CK,KAEX,eACI,OAAOA,KAAK+4P,cAEhB,aAAaK,GACTp5P,KAAK+8P,YAAY3D,GAErB,cACI,MAAO,IAAIp5P,KAAK6wQ,MAAM/yQ,IAAI,WAAY,KAE1C,YAAYs7P,EAAUz5P,EAAU,IAC5B,MAAMm0D,EAAS5yD,MAAMD,QAAQm4P,GAAYA,EAAW,CAACA,GAErD,OADAp5P,KAAK6wQ,MAAMvuP,IAAI,WAAYwxC,EAAOvtD,IAAKxH,GAAM,GAAMgtD,OAAOhtD,IAAKY,GACxDK,KAEX,aAAak+Q,EAASx8Q,EAAO/B,EAAU,IACnC,MAAMy5P,EAAWp5P,KAAK+4P,cAChB9xP,EAAMmyP,EAASz3P,OACrB,IAAI0T,EAAe,MAAT3T,GAAiBw6D,OAAO9lC,SAAS10B,GAASA,EAAQuF,EAK5D,OAJIoO,EAAM,IACNA,EAAMpO,EAAMoO,EAAM,GAEtB+jP,EAAS/xP,OAAOgO,EAAK,EAAG,GAAM02C,OAAOmyN,IAC9Bl+Q,KAAK+8P,YAAY3D,EAAUz5P,GAEtC,aAAa45P,EAAQ55P,EAAU,IAC3B,OAAOK,KAAKk7P,aAAa3B,GAAS,EAAG55P,GAEzC,YAAY+B,GACR,GAAa,MAATA,GAAiBw6D,OAAO9lC,SAAS10B,GAAQ,CAEzC,OADiB1B,KAAK+4P,cACNr3P,GAEpB,OAAO,KAEX,YAAYA,EAAOw8Q,EAASv+Q,EAAU,IAClC,GAAa,MAAT+B,GAAiBw6D,OAAO9lC,SAAS10B,GAAQ,CACzC,MAAM03P,EAAWp5P,KAAK+4P,cACtBK,EAAS13P,GAASw8Q,EAClBl+Q,KAAK+8P,YAAY3D,EAAUz5P,GAE/B,OAAOK,KAEX,eAAe0B,EAAO/B,EAAU,IAC5B,MAAMy5P,EAAWp5P,KAAK+4P,cAChB1jP,EAAe,MAAT3T,GAAiBw6D,OAAO9lC,SAAS10B,GAASA,GAAS,EAE/D,OADA03P,EAAS/xP,OAAOgO,EAAK,GACdrV,KAAK+8P,YAAY3D,EAAUz5P,GAEtC,kBAAiB,SAAEsgD,EAAQ,QAAEjb,IACzB,MAAMovI,EAAQn0H,GAAYjb,EACpBA,EAAQxzB,OAAQ8iD,GACTrU,EAASvuC,KAAM6iD,GAAO,GAAMC,OAAOF,EAAIC,IAGrC,KAFID,GAIbtvB,EACI,IAAIA,GACJ,GACJ6yD,EAAU53C,GAAYjb,EACtBib,EAASzuC,OAAQ8iD,GACVtvB,EAAQtzB,KAAM6iD,GAAO,GAAMC,OAAOF,EAAIC,IAGpC,KAFID,GAIbrU,EACI,IAAIA,GACJ,GACNm0H,EAAMzyK,OAAS,GACf3B,KAAK4e,OAAO,gBAAiB,CAAEw1J,QAAOy9D,KAAM7xO,KAAM45D,KAAM55D,OAExD63F,EAAQl2F,OAAS,GACjB3B,KAAK4e,OAAO,kBAAmB,CAAEi5E,UAASg6I,KAAM7xO,KAAM45D,KAAM55D,OAKpE,mBACI,OAAOA,KAAK6wQ,MAAM/yQ,IAAI,kBAAoB,GAAO+wP,gBAErD,YACI,OAAOlwK,MAAM8zL,aAAezyQ,KAAKm+Q,mBAIrC,iBACI,OAAOn+Q,KAAKo+Q,gBAEhB,eAAe9gJ,GACXt9H,KAAKq+Q,cAAc/gJ,GAEvB,uBACI,OAAOt9H,KAAK6wQ,MAAM/yQ,IAAI,sBAAwB,GAAOgxP,oBAEzD,gBACI,OAAO9uP,KAAK6wQ,MAAM/yQ,IAAI,eAAiBkC,KAAKs+Q,uBAEhD,cAAchhJ,EAAQ39H,EAAU,IAE5B,OADAK,KAAK6wQ,MAAMvuP,IAAI,aAAcg7G,EAAQ39H,GAC9BK,KAEX,uBACI,OAAOA,KAAKu+Q,sBAEhB,qBAAqBjhJ,GACjBt9H,KAAKw+Q,oBAAoBlhJ,GAE7B,6BACI,OAAOt9H,KAAK6wQ,MAAM/yQ,IAAI,2BAE1B,sBACI,OAAQkC,KAAK6wQ,MAAM/yQ,IAAI,qBAAuBkC,KAAKy+Q,6BAEvD,oBAAoBnhJ,EAAQ39H,EAAU,IAElC,OADAK,KAAK6wQ,MAAMvuP,IAAI,mBAAoBg7G,EAAQ39H,GACpCK,KAIX,sBACI,OAAOA,KAAK0+Q,qBAEhB,oBAAoBphJ,GAChBt9H,KAAK2+Q,mBAAmBrhJ,GAE5B,4BACI,OAAQt9H,KAAK6wQ,MAAM/yQ,IAAI,2BACnB,GAAOkxP,yBAEf,qBACI,OAAOhvP,KAAK6wQ,MAAM/yQ,IAAI,oBAAsBkC,KAAK4+Q,4BAErD,mBAAmBthJ,EAAQ39H,EAAU,IAEjC,OADAK,KAAK6wQ,MAAMvuP,IAAI,kBAAmBg7G,EAAQ39H,GACnCK,KAQX,UAAU26D,EAAIC,EAAIj7D,EAAU,IAIxB,OAHAA,EAAQm5Q,YAAcn5Q,EAAQm5Q,aAAe94Q,KAAKwO,GAClD7O,EAAQg7D,GAAKA,EACbh7D,EAAQi7D,GAAKA,EACN56D,KAAK6+Q,cAAe9/Q,IAAM,CAC7BwzC,GAAIxzC,EAAEwzC,GAAK,GAAKooB,EAChBnoB,GAAIzzC,EAAEyzC,GAAK,GAAKooB,IAChBj7D,GAKR,MAAM+zD,EAAIC,EAAIC,EAAQj0D,EAAU,IAC5B,OAAOK,KAAK6+Q,cAAe9/Q,GAChB,GAAMR,OAAOQ,GAAG8lB,MAAM6uC,EAAIC,EAAIC,GAAQ7H,SAC9CpsD,GAEP,cAAc45D,EAAQ55D,EAAU,IAC5B,MAAMiQ,EAAQ,GACRmU,EAAS/jB,KAAKs2Q,YACd5uQ,EAAS1H,KAAKw2Q,YAChB,GAAMpgN,YAAYryC,KAClBnU,EAAMmU,OAASw1C,EAAOx1C,IAEtB,GAAMqyC,YAAY1uD,KAClBkI,EAAMlI,OAAS6xD,EAAO7xD,IAE1B,MAAM0xP,EAAWp5P,KAAK+4P,cAKtB,OAJIK,EAASz3P,OAAS,IAClBiO,EAAMwpP,SAAWA,EAAS7yP,IAAIgzD,IAElCv5D,KAAK6wQ,MAAMvuP,IAAI1S,EAAOjQ,GACfK,KAIX,UACI,OAAOA,KAAK8+Q,cAAcvjN,OAE9B,qBACI,OAAOv7D,KAAK8+Q,cAAcnjN,QAAQ,IAEtC,cACI,MAAM7H,EAAS,CACX9zD,KAAK++Q,oBACF/+Q,KAAK+4P,cAAcxyP,IAAK23Q,GAAY,GAAM3/Q,OAAO2/Q,IACpDl+Q,KAAKg/Q,kBAET,OAAO,IAAI,GAASlrN,GAExB,aAAan0D,GACT,IAAIs/Q,EAAY,KAChB,MAAMl7P,EAAS/jB,KAAKk/Q,gBACdx3Q,EAAS1H,KAAKm/Q,gBACdC,EAAap/Q,KAAKmzQ,YAoBxB,OAnBIpvP,GAAUrc,IAENu3Q,EADAl7P,IAAWrc,GAAUqc,EAAO4vP,eAAejsQ,GAC/BA,EAEPA,EAAOisQ,eAAe5vP,GACfA,EAGA,GAAK8vP,kBAAkB9vP,EAAQrc,KAK/C03Q,GAAgBH,GAAaA,EAAUzwQ,KAAO4wQ,EAAW5wQ,IACzD4wQ,EAAWrK,QAAQ/0Q,KAAML,GAEzBs/Q,GACAA,EAAUI,MAAMr/Q,KAAML,GAEnBs/Q,EAEX,QAAQt/Q,EAAU,IACd,MAAMokB,EAAS/jB,KAAKs2Q,YACd5uQ,EAAS1H,KAAKw2Q,YACdL,EAAWpyP,EAAO8tN,KAClBukC,EAAW1uQ,EAAOmqO,KACxB,IAAKskC,IAAaC,EACd,OAAO,EAEX,IAAI/iO,EAAO8iO,IAAaC,EAKxB,IAAK/iO,GAAQ1zC,EAAQgI,MAAQ3H,KAAKyxQ,OAAQ,CACtC,MAAM0K,EAAan8Q,KAAKk/Q,gBAClB7C,EAAar8Q,KAAKm/Q,gBACpBhD,GAAcE,IACdhpO,EACI8oO,EAAWvI,aAAayI,EAAY18Q,IAChC08Q,EAAWzI,aAAauI,EAAYx8Q,IAGpD,OAAO0zC,EAEX,sBACI,MAAM8+N,EAAQ,CAACnyQ,KAAMA,KAAKs/Q,gBAAiBt/Q,KAAKu/Q,iBAAiB/tQ,OAAQrN,GAAiB,MAARA,GAClF,OAAOnE,KAAK6zQ,qBAAqB1B,GAErC,uBAAuBtgC,GACnB,MAAM3/I,EAAWlyF,KAAKw/Q,sBACtB,QAAUttL,IAAaA,EAAS1jF,KAAOqjO,EAAKrjO,IAAM0jF,EAASyhL,eAAe9hC,KAGlF,GAAK3lM,SAAW,IAWb,KAAS,GAAO,KADVuzO,eARL,SAAwBz0Q,EAAGC,GACvB,MAAM6nI,EAAK9nI,EACL00Q,EAAKz0Q,EACX,OAAI6nI,EAAG++F,OAAS6tC,EAAG7tC,OACR/+F,EAAG8/F,OAAS8sC,EAAG9sC,MAAoB,MAAX9/F,EAAG8/F,MAA2B,MAAX8sC,EAAG9sC,OAMjE,SAAW+sC,GACPA,EAAKpC,aAAe,CAChBjgJ,OAAQ,CACJ,CACI73C,QAAS,OACThgF,SAAU,QAEd,CACIggF,QAAS,OACThgF,SAAU,UAGlBmK,MAAO,CACH5K,KAAM,CACF4qC,KAAM,OACNkxE,SAAU,GACVk5H,WAAY,SACZjhD,mBAAoB,SACpBkF,cAAe,QAEnBp1J,KAAM,CACFgrB,IAAK,QACLjkB,KAAM,OACNmvD,GAAI,EACJC,GAAI,EACJswI,SAAU,EACVE,UAAW,EACX4E,KAAM,EACNunC,KAAM,IAGdnpP,SAAU,CACNq+B,SAAU,KAQlB8uN,EAAK/B,iBALL,SAA0B54Q,GACtB,MAAO,CACH4K,MAAO,CAAEmoM,MAAO,CAAE/yM,WArC9B,CAyCG,KAAS,GAAO,KACnB,SAAW26Q,GACPA,EAAK1hR,YAAc,MAAM0hR,EAAKniR,KAsB9BmiR,EAAKl7M,OArBL,SAAgBvO,GACZ,GAAgB,MAAZA,EACA,OAAO,EAEX,GAAIA,aAAoBypN,EACpB,OAAO,EAEX,MAAM/tQ,EAAMskD,EAASl4D,OAAOC,aACtB27D,EAAO1D,EACb,OAAY,MAAPtkD,GAAeA,IAAQ+tQ,EAAK1hR,cACN,mBAAhB27D,EAAKizH,QACW,mBAAhBjzH,EAAK6K,QACS,mBAAd7K,EAAKp3C,MACS,mBAAdo3C,EAAK3mD,MACe,mBAApB2mD,EAAK+rF,YACc,mBAAnB/rF,EAAK08M,WACc,mBAAnB18M,EAAK48M,WAlBxB,CAwBG,KAAS,GAAO,KACnB,SAAWmJ,GACPA,EAAKjsC,SAAW,GAASn1O,OAAO,CAC5BgD,KAAM,OACN,QAAQ6vC,EAAOzxC,GACX,GAAI0xQ,GAAcvjC,MAAM18L,GAAO,GAC3B,MAAM,IAAIpuC,MAAM,mBAAmBouC,oCAEvC,GAAuB,mBAAZzxC,EAEP,OADAA,EAAQgjE,OAAO,CAAEvxB,UACVzxC,EAEX,IAAIQ,EAASw/Q,EAEb,MAAM,QAAEvwF,EAAU,QAAWzvL,EAASq0O,EAAS,GAAOr0O,EAAS,CAAC,YAChE,GAAuB,iBAAZyvL,EAAsB,CAC7B,MAAMt4K,EAAO9W,KAAKlC,IAAIsxL,GAAW,QACrB,MAARt4K,GAAgBs4K,EAChBpvL,KAAKk0O,WAAW9kD,EAAS,aAGzBjvL,EAAS2W,OAIb3W,EAASivL,EAEiB,MAA1B4kD,EAAOqnC,kBACPrnC,EAAOqnC,gBAAkBjqO,GAE7B,MAAM0lN,EAAO32P,EAAOstP,OAAOrwP,KAAK+C,EAAQ6zO,GAExC,OADA8iB,EAAKn0L,OAAO,CAAEvxB,UACP0lN,KAGfua,GAAcuF,gBAAgB+I,EAAKjsC,UAlCvC,CAmCG,KAAS,GAAO,KACnB,SAAWisC,GACP,IAAIryM,EAAU,EAiBdqyM,EAAKlyB,OATL,SAAgB9qL,GACZ,MAAM,gBAAE04M,EAAe,UAAEvvO,GAAc62B,EAAQqxK,EAAS,GAAOrxK,EAAQ,CAAC,kBAAmB,cACrFm0L,EAAO,EAAU79G,aATLz7I,EAS8B69Q,GAAmBrnC,EAAO5iM,OAP/D,EAAUs+F,WAAWlyI,IAEhC8vE,GAAW,EACJ,aAAaA,GAI8DttE,MATtF,IAAsBxC,EAclB,OAJAs5P,EAAKn0L,OAAOqxK,GACRA,EAAO5iM,OACPuuO,EAAKjsC,SAASn9F,SAASy9F,EAAO5iM,MAAO0lN,EAAMhrN,GAExCgrN,GAWX6oB,EAAKphR,OARL,SAAgBoB,GACZ,MAAMyxC,EAAQzxC,EAAQyxC,OAAS,OACzB9oC,EAAOq3Q,EAAKjsC,SAAS51O,IAAIszC,GAC/B,OAAI9oC,EACO,IAAIA,EAAK3I,GAEbggR,EAAKjsC,SAASQ,WAAW9iM,IAzBxC,CA4BG,KAAS,GAAO,KACnB,SAAWuuO,GAEPA,EAAKh9M,OAAO,CACRvxB,MAFU,aAGV,UAAUkgO,GACN,MAAM,MAAEv5D,EAAK,SAAEqhD,GAAakY,EAAUt9B,EAAS,GAAOs9B,EAAU,CAAC,QAAS,aAC1E,GAAIv5D,EAAO,CACc,MAAjBi8B,EAAOoe,SACPpe,EAAOoe,OAAS,IAEpB,MAAMwtB,EAA4B,iBAAV7nE,EAAqB4nE,EAAK/B,iBAAiB7lE,GAASA,EAC5Ei8B,EAAOoe,OAAO5vP,KAAKo9Q,GAOvB,OALIxmB,GACIl4P,MAAMD,QAAQm4P,KACdplB,EAAOolB,SAAWA,EAAS7yP,IAAKpC,GAAS,GAAM5F,OAAO4F,GAAM4nD,WAG7DioL,KAGf2rC,EAAKjsC,SAASn9F,SApBA,aAoBgBopI,GArBlC,CAsBG,KAAS,GAAO,KC50BnB,IAw+DWE,GCzlCAC,GD/4BP,GAAkC,SAAU9gR,EAAG6O,GAC/C,IAAI1P,EAAI,GACR,IAAK,IAAIY,KAAKC,EAAOrB,OAAOkB,UAAUC,eAAe1B,KAAK4B,EAAGD,IAAM8O,EAAEpK,QAAQ1E,GAAK,IAC9EZ,EAAEY,GAAKC,EAAED,IACb,GAAS,MAALC,GAAqD,mBAAjCrB,OAAOsxG,sBACtB,KAAIhyG,EAAI,EAAb,IAAgB8B,EAAIpB,OAAOsxG,sBAAsBjwG,GAAI/B,EAAI8B,EAAE4C,OAAQ1E,IAC3D4Q,EAAEpK,QAAQ1E,EAAE9B,IAAM,GAAKU,OAAOkB,UAAUwxD,qBAAqBjzD,KAAK4B,EAAGD,EAAE9B,MACvEkB,EAAEY,EAAE9B,IAAM+B,EAAED,EAAE9B,KAE1B,OAAOkB,GAQJ,MAAM,WAAiB,GAC1B,cACIwgF,SAASl4E,WACTzG,KAAK+/Q,eAAiB,EACtB//Q,KAAKggR,YAAc,GAIvBliR,IAAKE,OAAOC,eACR,OAAO,GAASA,YAEpB,wBACI,MAAO,CAAC0gF,MAAM60K,wBAAyBxzP,KAAKmzP,gBAAgB,SAASnkP,KAAK,KAE9E,iBACI,MAAM+sP,EAAa/7P,KAAK+7P,WACxB,IAAKA,EAAY,CACb,MAAMkkB,EAAYjgR,KAAK6xO,KAAKykC,YAC5B,OAAO,IAAI,GAAU2J,EAAU1tO,EAAG0tO,EAAUztO,GAEhD,MAAM6pN,EAAer8P,KAAKq8P,aAC1B,OAAIN,EAAWzjB,cAAc+jB,GAClB,IAAI,GAAUr8P,KAAK+5P,aAAaxnN,EAAGvyC,KAAK+5P,aAAavnN,GAEzDupN,EAAWpH,iBAAiB0H,GAAgBN,EAAWjqO,WAElE,iBACI,MAAM0qO,EAAax8P,KAAKw8P,WACxB,IAAKA,EAAY,CACb,MAAM0jB,EAAYlgR,KAAK6xO,KAAK2kC,YAC5B,OAAO,IAAI,GAAU0J,EAAU3tO,EAAG2tO,EAAU1tO,GAEhD,MAAMqqN,EAAe78P,KAAK68P,aAC1B,OAAIL,EAAWlkB,cAAcukB,GAClB,IAAI,GAAU78P,KAAKg6P,aAAaznN,EAAGvyC,KAAKg6P,aAAaxnN,GAEzDgqN,EAAW7H,iBAAiBkI,GAAgBL,EAAW1qO,WAElE,aACI,OAAO,EAEX,cAAc7U,EAAMtd,EAAU,IAC1B,IAAIk0D,EAAM52C,EACV,GAAIjd,KAAK0zP,UAAU7/L,EAAK,UAAW,CAC/B,IAAK7zD,KAAKmgR,yBAAyB,UAC/B,OAAOtsN,EAEXA,EAAM7zD,KAAK2zP,aAAa9/L,EAAK,UAEjC,GAAI7zD,KAAK0zP,UAAU7/L,EAAK,UAAW,CAC/B,IAAK7zD,KAAKmgR,yBAAyB,UAC/B,OAAOtsN,EAEXA,EAAM7zD,KAAK2zP,aAAa9/L,EAAK,UAEjC,MAAM03J,EAAQvrN,KAAKurN,MACbwwC,EAAa/7P,KAAK+7P,WAClBS,EAAax8P,KAAKw8P,WACxB,OAAIjxC,IACEwwC,IAAexwC,EAAM39F,SAASwyJ,cAAcrkB,IACzCS,IAAejxC,EAAM39F,SAASwyJ,cAAc5jB,IAE1C3oM,EAEP7zD,KAAK0zP,UAAU7/L,EAAK,WACpB7zD,KAAKb,SACL00D,EAAM7zD,KAAK2zP,aAAa9/L,EAAK,CACzB,SACA,SACA,WACA,SACA,QACA,WAEGA,IAEXA,EAAM7zD,KAAKqgR,aAAaxsN,EAAK,WAAY,IAAM7zD,KAAKsgR,uBACpDzsN,EAAM7zD,KAAKqgR,aAAaxsN,EAAK,SAAU,IAAM7zD,KAAKyrD,OAAO,KAAM9rD,IAC/Dk0D,EAAM7zD,KAAKqgR,aAAaxsN,EAAK,SAAU,IAAM7zD,KAAKugR,eAAe5gR,IACjEk0D,EAAM7zD,KAAKqgR,aAAaxsN,EAAK,QAAS,KAClC7zD,KAAKwgR,cACLxgR,KAAKygR,wBAET5sN,EAAM7zD,KAAKqgR,aAAaxsN,EAAK,SAAU,IAAM7zD,KAAK0gR,uBAC3C7sN,GAEX,eAAel0D,EAAU,IAEjBK,KAAK2gR,qBAAqBhhR,GAC1BK,KAAK4gR,eAGL5gR,KAAK6gR,eAET7gR,KAAK8gR,uBAET,qBAAqBnhR,EAAU,IAC3B,MAAMohR,EAAiB/gR,KAAK6xO,KAAK5xL,SAAS,UAC1C,GAAsB,MAAlB8gO,EACA,OAAO,EAIX,GAAI,sBAAuBphR,GAAW,kBAAmBA,EAAS,CAE9D,MAAMyoL,EAAYzoL,EAAQuxQ,mBAAqB,GACzC8P,EAAa54F,EAAUzmL,OAC7B,GAAIq/Q,EAAa,EAAG,CAGhB,GAAID,EADU34F,EAAU,IACG,CACvB,GAAmB,IAAf44F,EAGA,MAAyC,iBAA1BrhR,EAAQsxQ,eACnB,EAAU51P,IAAI1b,EAAQsxQ,cAAe,UAG7C,GAAqB,WAAjB7oF,EAAU,GACV,OAAO,IAKvB,OAAO,EAEX,SAOI,OANApoL,KAAK6d,QACL7d,KAAKkpH,WAAa,GAClBlpH,KAAKiuP,eACLjuP,KAAK4gR,eACL5gR,KAAKyrD,SACLzrD,KAAK0gR,sBACE1gR,KAEX,eACI,MAAMs9H,EAASt9H,KAAK6xO,KAAKv0G,OACzB,GAAIA,EACA,MAAsB,iBAAXA,EACAt9H,KAAKihR,mBAAmB3jJ,GAE5Bt9H,KAAKkhR,iBAAiB5jJ,GAEjC,MAAM,IAAIl+G,UAAU,wBAExB,iBAAiBk+G,GACb,MAAMp3H,EAAMlG,KAAKutP,gBAAgBjwH,EAAQt9H,KAAK8xB,WAC9C9xB,KAAK2T,UAAYzN,EAAIyN,UACrB3T,KAAK8xB,UAAU/B,OAAO7pB,EAAIwhB,UAE9B,mBAAmB41G,GACf,MAAMjuH,EAAQrP,KAAKkpH,WACbjuG,EAAW,GAAOoiH,cAAcC,GAEtCriH,EAASkwB,QAAS67B,IACd,MAAM51D,EAAY41D,EAAM/zD,KAAK,SACzB7B,IACA/B,EAAM,EAAU0S,UAAU3Q,IACtB41D,EAAMriE,QAGlB3E,KAAKwgR,cACLxgR,KAAKsgR,sBACLtgR,KAAKmhR,yBACL,EAAIpxP,OAAO/vB,KAAK8xB,UAAW7W,EAAS1U,IAAKygE,GAAUA,EAAMriE,OAE7D,eACI,MAAMi1D,EAAO55D,KAAK6xO,KACZugB,EAASx4L,EAAK4jN,YACd55P,EAAQwuO,EAAOzwP,OACrB,IAAImwB,EAAY9xB,KAAKkpH,WAAWkpI,OAGhC,GAFApyP,KAAKohR,WAAa,GAClBphR,KAAKqhR,eAAiB,GAClBz9P,GAAS,EAIT,OAHIkO,GAAaA,EAAUzsB,YACvBysB,EAAUzsB,WAAWC,YAAYwsB,GAE9B9xB,KAEP8xB,EACA9xB,KAAK6d,MAAMiU,IAGXA,EAAY,EAAI44E,iBAAiB,KACjC1qG,KAAKk9B,SAASl9B,KAAKmzP,gBAAgB,eAAgBrhO,GACnD9xB,KAAKkpH,WAAWkpI,OAAStgO,GAE7B,IAAK,IAAI70B,EAAI,EAAG25D,EAAKw7L,EAAOzwP,OAAQ1E,EAAI25D,EAAI35D,GAAK,EAAG,CAChD,MAAM86M,EAAQq6C,EAAOn1P,GACfg/D,EAAaj8D,KAAKshR,qBAAqBthR,KAAKuhR,iBAAiBxpE,EAAMz6E,SACzE,IAAIkkJ,EACA7tQ,EACJ,GAAIsoD,EACAulN,EAAYvlN,EAAWt3D,KACvBgP,EAAYsoD,EAAWtoD,cAEtB,CACD,MAAM4pQ,EAAe3jN,EAAK6nN,kBACpBxlN,EAAaj8D,KAAKshR,qBAAqBthR,KAAKuhR,iBAAiBhE,EAAajgJ,SAChFkkJ,EAAYvlN,EAAWt3D,KACvBgP,EAAYsoD,EAAWtoD,UAE3B6tQ,EAAUt8Q,aAAa,aAAc,GAAGjI,GACxC60B,EAAU1sB,YAAYo8Q,GACtB,MAAMvuB,EAAejzP,KAAKizP,aAC1B,GAAIt/O,EAAUs/O,GACV,MAAM,IAAIjwP,MAAM,kCAEpB2Q,EAAUs/O,GAAgBuuB,EAC1BxhR,KAAKohR,WAAWnkR,GAAKukR,EACrBxhR,KAAKqhR,eAAepkR,GAAK0W,EAO7B,OAL4B,MAAxBme,EAAUzsB,YACVrF,KAAK8xB,UAAU1sB,YAAY0sB,GAE/B9xB,KAAK6gR,eACL7gR,KAAK0hR,kBACE1hR,KAEX,iBAAiBs9H,GACb,OAAIA,EACsB,iBAAXA,EACAt9H,KAAKkuP,uBAAuB5wH,GAEhCt9H,KAAKutP,gBAAgBjwH,GAEzB,KAEX,uBAAuBqkJ,GACnB,MAAM1mQ,EAAW,GAAOoiH,cAAcskJ,GAChCj6P,EAAW5kB,SAASkjB,yBAC1B,IAAK,IAAI/oB,EAAI,EAAGyB,EAAIuc,EAAStZ,OAAQ1E,EAAIyB,EAAGzB,GAAK,EAAG,CAChD,MAAMkxP,EAAelzO,EAAShe,GAAG0H,KACjC+iB,EAAStiB,YAAY+oP,GAEzB,MAAO,CAAEzmO,WAAU/T,UAAW,IAElC,qBAAqB2pH,GACjB,GAAc,MAAVA,EACA,OAEJ,MAAM51G,EAAW41G,EAAO51G,SACxB,KAAMA,aAAoBilK,kBAAsBjlK,EAASusE,iBACrD,MAAM,IAAIjxF,MAAM,yBAEpB,IAAIw5H,EACJ,MAAM5uH,EAAa8Z,EAAS9Z,WAU5B,OANI4uH,EAHA5uH,EAAWjM,OAAS,GAA8C,MAAzCiM,EAAW,GAAGH,SAASqU,cAG1C,GAAOvjB,OAAO,KAAKwxB,OAAOrI,GAG1B,GAAOnpB,OAAOqP,EAAW,IAEnC4uH,EAAIt/F,SAASl9B,KAAKmzP,gBAAgB,eAC3B,CACHxuP,KAAM63H,EAAI73H,KACVgP,UAAW2pH,EAAO3pH,WAG1B,eACI,GAAI3T,KAAKkpH,WAAWkpI,OAAQ,CACxB,MAAMx4L,EAAO55D,KAAK6xO,KACZugB,EAASx4L,EAAKw4L,OACdwvB,EAAe5hR,KAAK41P,IAAI,oBACxB2nB,EAAe3jN,EAAK6nN,kBAC1B,IAAK,IAAIxkR,EAAI,EAAGyB,EAAI0zP,EAAOzwP,OAAQ1E,EAAIyB,EAAGzB,GAAK,EAAG,CAC9C,MAAMuJ,EAAOxG,KAAKohR,WAAWnkR,GACvB0W,EAAY3T,KAAKqhR,eAAepkR,GACtCuJ,EAAKtB,aAAa,SAAU08Q,EAAe,OAAS,WACpD,MAAM7pE,EAAQq6C,EAAOn1P,GACf2S,EAAQ,EAAUzJ,MAAM,GAAIo3Q,EAAa3tQ,MAAOmoM,EAAMnoM,OAC5D5P,KAAK8nF,YAAYthF,EAAMoJ,EAAO,CAC1B+D,YACAm+O,SAAU/5C,EAAMn7J,KAAO,GAAUqsD,SAAS8uG,EAAMn7J,WAAQ16C,MAKxE,gBAAgB2/Q,EAAiBC,EAAYC,GACzC,GAAmB,OAAfD,EACA,OAAO,KAEX,QAAmB5/Q,IAAf4/Q,EAA0B,CAC1B,GAA0B,OAAtBC,EACA,OAAO,KAEX,QAA0B7/Q,IAAtB6/Q,EACA,OAEJ,OAAIF,EACOE,EAEJ,EAAU57Q,MAAM,GAAI47Q,GAE/B,OAAIF,EACO,EAAU17Q,MAAM,GAAI47Q,EAAmBD,QADlD,EAIJ,kBACI,GAAI9hR,KAAKkpH,WAAWkpI,OAAQ,CACxB,MAAMx4L,EAAO55D,KAAK6xO,KACZugB,EAASx4L,EAAKw4L,OACpB,IAAK,IAAIn1P,EAAI,EAAGyB,EAAI0zP,EAAOzwP,OAAQ1E,EAAIyB,EAAGzB,GAAK,EAAG,CAC9C,MAAM86M,EAAQq6C,EAAOn1P,GACf60B,EAAY9xB,KAAKohR,WAAWnkR,GAC5B0W,EAAY3T,KAAKqhR,eAAepkR,GACtC+C,KAAKurN,MAAM7rN,KAAKsiR,oBAAoB,CAChCpoN,OACAm+I,QACAjmL,YACAne,gBAKhB,cACI,MAAMme,EAAY9xB,KAAKkpH,WAAWysI,MAClC,GAAiB,MAAb7jO,EACA,OAAO9xB,KAEX,MAAMs9H,EAASt9H,KAAK6xO,KAAKowC,WACnBC,EAAaliR,KAAKuqC,EAAEzY,GAAWjU,QACrC,GAAI,GAAOyvO,eAAehwH,GAAS,CAC/B,IAAIvwE,EAAW,EAAUA,SAASuwE,GAClC,MAAM65H,EAAO,GAAO54P,OAAOwuD,KAM3B,GALAm1N,EAAWnyP,OAAOonO,EAAKxyP,MACvB3E,KAAKmiR,UAAYhrB,EAAKxyP,KAIlB3E,KAAKL,QAAQyiR,YAAa,CAC1B,IAAIC,EACJ,MAAMC,EAAmBtiR,KAAK6xO,KAAKywC,iBAC/B,GAAOh1B,eAAeg1B,IACtBv1N,EAAW,EAAUA,SAASu1N,GAC9BD,EAAQ,GAAO9jR,OAAOwuD,MAGtBs1N,EAAQlrB,EAAK1vP,QAEjBy6Q,EAAWnyP,OAAOsyP,EAAM19Q,MACxB3E,KAAKuiR,WAAaF,EAAM19Q,MAGhC,OAAO3E,KAEX,sBACI,MAAM21P,EAAQ31P,KAAK6xO,KAAKmkB,WAExB,OADAh2P,KAAKi2P,SAASN,GACP31P,KAEX,sBACI,MAAM8xB,EAAY9xB,KAAKkpH,WAAWkwI,SAClC,GAAiB,MAAbtnO,EACA,OAAO9xB,KAEX,MAAMs9H,EAASt9H,KAAK6xO,KAAK2wC,aACnBN,EAAaliR,KAAKuqC,EAAEzY,GAAWjU,QACrC,GAAI,GAAOyvO,eAAehwH,GAAS,CAC/B,MAAMvwE,EAAW,EAAUA,SAASuwE,GACpCt9H,KAAK6xO,KAAKknB,cAAc5tN,QAAQ,CAACouN,EAAQ73P,KACrCwgR,EAAWnyP,OAAO,GAAOxxB,OAAOwuD,EAASpvD,OAAO+rD,OAAO,CAAEhoD,SAAS63P,KAAU50P,QAGpF,OAAO3E,KAEX,yBACI,MAAM8xB,EAAY9xB,KAAKkpH,WAAWu5J,WAClC,GAAiB,MAAb3wP,EACA,OAAO9xB,KAEX,MAAMs9H,EAASt9H,KAAK6xO,KAAK6wC,gBACnBR,EAAaliR,KAAKuqC,EAAEzY,GAAWjU,QACrC,GAAI,GAAOyvO,eAAehwH,GAAS,CAC/B,MAAMvwE,EAAW,EAAUA,SAASuwE,GAC9BqlJ,EAAkB,GAAOpkR,OAAOwuD,EAAS,CAAE5lD,IAAK,YAAaxC,KAC7Di+Q,EAAkB,GAAOrkR,OAAOwuD,EAAS,CAAE5lD,IAAK,YAAaxC,KACnE3E,KAAKkpH,WAAWy5J,gBAAkBA,EAClC3iR,KAAKkpH,WAAW05J,gBAAkBA,EAClCV,EAAWnyP,OAAO4yP,EAAiBC,GAEvC,OAAO5iR,KAIX,OAAO6iR,EAAcljR,EAAU,IAC3BK,KAAK8iR,aACL9iR,KAAK+iR,iBAAiBpjR,GACtB,MAAMiQ,EAAQ5P,KAAK6xO,KAAK+gC,WAYxB,OAXa,MAAThjQ,GACA5P,KAAK8nF,YAAY9nF,KAAK8xB,UAAWliB,EAAO,CACpCA,MAAOizQ,IAAiBjzQ,EAAQ,KAAOizQ,EACvClvQ,UAAW3T,KAAK2T,YAGxB3T,KAAKgjR,uBACLhjR,KAAK8gR,uBACL9gR,KAAKygR,sBACLzgR,KAAKijR,yBACLjjR,KAAKkjR,YAAYvjR,GACVK,KAEX,8BAA8BL,EAAU,IACpC,MAAMi6D,EAAO55D,KAAK6xO,KACZunB,EAAWx/L,EAAKm/L,cAChB8T,EAAc,CAAC7sQ,KAAK+5P,gBAAiBX,EAAUp5P,KAAKg6P,cACpDmpB,EAAWtW,EAAYlrQ,OAEvB65H,EAAW,IAAI,GAASqxI,GAC9BrxI,EAASjC,SAAS,CAAEC,UAAW,MAC/B,MAAM4pJ,EAAmB5nJ,EAAS1nE,OAAOvtD,IAAK4vD,GAAUA,EAAMpK,UACxDs3N,EAAkBD,EAAiBzhR,OAEzC,OAAIwhR,IAAaE,EACN,GAIXzpN,EAAKmjM,YAAYqmB,EAAiB9/Q,MAAM,EAAG+/Q,EAAkB,GAAI1jR,GAC1DwjR,EAAWE,GAEtB,uBACI,MAAMn6J,EAAalpH,KAAKkpH,WACxB,GAAIA,EAAWsrH,WAAY,CACvB,MAAM5hM,EAAW5yC,KAAK80O,wBACtB5rH,EAAWsrH,WAAWtvO,aAAa,IAAK0tC,GAE5C,GAAIs2E,EAAWo6J,eAAgB,CAC3B,MAAM1wO,EAAW5yC,KAAK80O,wBACtB5rH,EAAWo6J,eAAep+Q,aAAa,IAAK0tC,GAE5Cs2E,EAAWyqH,cAAgBzqH,EAAW2qH,cACtC7zO,KAAKujR,6BAA6Br6J,EAAWyqH,aAAczqH,EAAW2qH,cAG9E,gBAAgBtyO,GACZ,OAAQA,GACJ,IAAK,SACD,OAAOvB,KAAK+7P,YAAc,KAC9B,IAAK,SACD,OAAO/7P,KAAKw8P,YAAc,KAC9B,QACI,MAAM,IAAIx5P,MAAM,0BAA0BzB,OAGtD,kBAAkBA,GACd,OAAQA,GACJ,IAAK,SACD,OAAO,GAAMhD,OAAOyB,KAAK+5P,cAC7B,IAAK,SACD,OAAO,GAAMx7P,OAAOyB,KAAKg6P,cAC7B,QACI,MAAM,IAAIh3P,MAAM,0BAA0BzB,OAGtD,2BAA2BA,GACvB,OAAQA,GACJ,IAAK,SACD,OAAO,GAAMhD,OAAOyB,KAAK+xO,aAC7B,IAAK,SACD,OAAO,GAAMxzO,OAAOyB,KAAKgyO,aAC7B,QACI,MAAM,IAAIhvO,MAAM,0BAA0BzB,OAGtD,kBAAkBA,EAAM5B,EAAU,IAC9B,OAAQ4B,GACJ,IAAK,SAAU,CACX,GAAI5B,EAAQ2hB,IACR,OAAOthB,KAAKq8P,aAEhB,MAAMN,EAAa/7P,KAAK+7P,WACxB,OAAKA,EAGE/7P,KAAKq8P,cAAgBN,EAAWjqO,UAF5B,KAIf,IAAK,SAAU,CACX,GAAInyB,EAAQ2hB,IACR,OAAOthB,KAAK68P,aAEhB,MAAML,EAAax8P,KAAKw8P,WACxB,OAAKA,EAGEx8P,KAAK68P,cAAgBL,EAAW1qO,UAF5B,KAIf,QACI,MAAM,IAAI9uB,MAAM,0BAA0BzB,OAItD,iBAAiB5B,EAAU,IACvB,MAAMi6D,EAAO55D,KAAK6xO,KAGlB,GAAIlyO,EAAQm5Q,aACRl/M,EAAK4pN,uBAAuB7jR,EAAQm5Q,aAAc,CAClD,MAAMn+M,EAAKh7D,EAAQg7D,IAAM,EACnBC,EAAKj7D,EAAQi7D,IAAM,EACzB56D,KAAK6sQ,YAAc,IAAI,GAAS7sQ,KAAK6sQ,aAAaz5M,UAAUuH,EAAIC,GAAI9G,OACpE9zD,KAAKyjR,0BAA0B9oN,EAAIC,GACnC56D,KAAKkvC,KAAKkkB,UAAUuH,EAAIC,OAEvB,CACD,MAAMw+L,EAAWx/L,EAAKm/L,cAEhB8O,EAAU7nQ,KAAK0jR,YAAYtqB,GACjCp5P,KAAK+5P,aAAe8N,EAAQ9jP,OAC5B/jB,KAAKg6P,aAAe6N,EAAQngQ,OAE5B1H,KAAK6sQ,YAAc7sQ,KAAK2jR,gBAAgBvqB,GAExC,MAAMwqB,EAAmB5jR,KAAK6jR,qBAAqB7jR,KAAK6sQ,YAAa7sQ,KAAK+5P,aAAc/5P,KAAKg6P,cAC7Fh6P,KAAK+xO,YAAc6xC,EAAiB7/P,OACpC/jB,KAAKgyO,YAAc4xC,EAAiBl8Q,OAEpC,MAAMo8Q,EAAe9jR,KAAK+jR,iBAAiB/jR,KAAK6sQ,YAAa7sQ,KAAK+xO,YAAa/xO,KAAKgyO,aAEpFhyO,KAAKkvC,KAAOlvC,KAAKgkR,SAAShkR,KAAK6sQ,YAAaiX,EAAa//P,QAAU/jB,KAAK+xO,YAAa+xC,EAAap8Q,QAAU1H,KAAKgyO,aAErHhyO,KAAK8iR,aAET,YAAY1pB,GACR,MAAMx/L,EAAO55D,KAAK6xO,KACZ9tN,EAAS61C,EAAK71C,OACdrc,EAASkyD,EAAKlyD,OACdu8Q,EAAc7qB,EAAS,GACvB8qB,EAAa9qB,EAASA,EAASz3P,OAAS,GAC9C,OAAI+F,EAAO84I,WAAaz8H,EAAOy8H,SAEpBxgJ,KAAKmkR,mBAAmB,SAAUD,EAAY,SAAUD,GAG5DjkR,KAAKmkR,mBAAmB,SAAUF,EAAa,SAAUC,GAEpE,mBAAmBE,EAAWzqJ,EAAY0qJ,EAAYC,GAClD,IAAIC,EACAC,EACJ,MAAM5qN,EAAO55D,KAAK6xO,KACZ4yC,EAAgB7qN,EAAKwqN,GACrBM,EAAiB9qN,EAAKyqN,GACtBM,EAAY3kR,KAAKm9P,gBAAgBinB,GACjCQ,EAAa5kR,KAAKm9P,gBAAgBknB,GAClCQ,EAAc7kR,KAAK89P,kBAAkBsmB,GACrCU,EAAe9kR,KAAK89P,kBAAkBumB,GAC5C,GAAIM,EAAW,CACX,IAAII,EAEAA,EADAprJ,EACW,GAAMp7H,OAAOo7H,GAEnBirJ,EACME,EAGA,GAAMvmR,OAAOmmR,GAE5BH,EAAcvkR,KAAK03P,UAAU+sB,EAAcj4B,OAAQm4B,EAAWE,EAAaE,EAAUX,QAGrFG,EAAc,GAAMhmR,OAAOkmR,GAE/B,GAAIG,EAAY,CACZ,MAAMI,EAAY,GAAMzmR,OAAO+lR,GAAeC,GAC9CC,EAAexkR,KAAK03P,UAAUgtB,EAAel4B,OAAQo4B,EAAYE,EAAcE,EAAWX,QAG1FG,EAAe,GAAMpuN,YAAYsuN,GAC3B,GAAMnmR,OAAOmmR,GACb,IAAI,GAEd,MAAO,CACH,CAACN,GAAYG,EACb,CAACF,GAAaG,GAGtB,UAAU3gN,EAAKk0K,EAAUC,EAAQnkL,EAAKqqM,GAClC,MAAMz5L,EAASszK,EAASO,cAAcN,GAChCsd,EAAat1P,KAAKurN,MAAM5rN,QAAQ21P,WACtC,IAcI9I,EAdA7pL,EAAwB,iBAARkB,EAAmB,CAAErmE,KAAMqmE,GAAQA,EACvD,IAAKlB,EAAQ,CACT,MAAMz2B,EAAWu4B,GACO,WAAjBy5L,EACG5I,EAAW2vB,iBACX3vB,EAAW4vB,mBAAqB5vB,EAAW6vB,YAC7B,WAAjBjnB,EACG5I,EAAWyE,aACXzE,EAAW0E,eAAiB1E,EAAW9I,OACjD7pL,EAA6B,iBAAbz2B,EAAwB,CAAE1uC,KAAM0uC,GAAaA,EAEjE,IAAKy2B,EACD,MAAM,IAAI3/D,MAAM,+BAGpB,MAAMxF,EAAOmlE,EAAOnlE,KACpB,GAAIinE,EAAQ,CACR,MAAM/+D,EAAK,GAAWguO,SAAS51O,IAAIN,GACnC,GAAkB,mBAAPkI,EACP,OAAO,GAAWguO,SAASQ,WAAW12O,GAE1CgvP,EAAS,EAAYpvP,KAAKsI,EAAI1F,KAAM+3O,EAAUC,EAAQnkL,EAAK8O,EAAOxtD,MAAQ,GAAI+oP,OAE7E,CACD,MAAMx4P,EAAK,GAAWguO,SAAS51O,IAAIN,GACnC,GAAkB,mBAAPkI,EACP,OAAO,GAAWguO,SAASQ,WAAW12O,GAE1CgvP,EAAS,EAAYpvP,KAAKsI,EAAI1F,KAAM+3O,EAAUC,EAAQnkL,EAAK8O,EAAOxtD,MAAQ,GAAI+oP,GAElF,OAAO1R,EAASA,EAAO55N,MAAM5yB,KAAK+/Q,gBAAkB,IAAI,GAE5D,gBAAgB3mB,EAAW,IACvB,MAAMgsB,EAAgBplR,KAAKurN,MAAM5rN,QAAQ21P,WAAW+vB,QAAU,GAAO5xC,QAAQt2B,OACvEkoE,EAASrlR,KAAK6xO,KAAKmrC,aAAeoI,EACxC,IAAIvY,EACJ,GAAsB,mBAAXwY,EACPxY,EAAc,EAAYzvQ,KAAKioR,EAAQrlR,KAAMo5P,EAAU,GAAIp5P,UAE1D,CACD,MAAMxC,EAAyB,iBAAX6nR,EAAsBA,EAASA,EAAO7nR,KACpD2X,EAAyB,iBAAXkwQ,EAAsB,GAAKA,EAAOlwQ,MAAQ,GACxDzP,EAAKlI,EAAO,GAAOk2O,SAAS51O,IAAIN,GAAQ,GAAOi2O,QAAQt2B,OAC7D,GAAkB,mBAAPz3M,EACP,OAAO,GAAOguO,SAASQ,WAAW12O,GAEtCqvQ,EAAc,EAAYzvQ,KAAKsI,EAAI1F,KAAMo5P,EAAUjkP,EAAMnV,MAE7D,OAAsB,MAAf6sQ,EACDzT,EAAS7yP,IAAKxH,GAAM,GAAMR,OAAOQ,IACjC8tQ,EAAYtmQ,IAAKxH,GAAM,GAAMR,OAAOQ,IAE9C,qBAAqB8tQ,EAAa9S,EAAcC,GAC5C,MAAMpgM,EAAO55D,KAAK6xO,KACZyjB,EAAat1P,KAAKurN,MAAM5rN,QAAQ21P,WAChCgwB,EAAiB1rN,EAAK08M,YACtBiP,EAAiB3rN,EAAK48M,YACtBza,EAAa/7P,KAAK+7P,WAClBS,EAAax8P,KAAKw8P,WAClBgpB,EAAkB3Y,EAAY,GAC9B4Y,EAAiB5Y,EAAYA,EAAYlrQ,OAAS,GAExD,IAAIowO,EAcAC,EAbJ,GAAI+pB,IAAeA,EAAWzjB,cAAct4O,KAAKq8P,cAAe,CAC5D,MAAMA,EAAer8P,KAAKq8P,cAAgBN,EAAWjqO,UAE/C4zP,EAAa,IAAI,GADAF,GAAmBxrB,EACED,GACtC4rB,EAAqBL,EAAeM,iBACtCtwB,EAAWuwB,uBACXvwB,EAAWswB,gBACf7zC,EAAc/xO,KAAK6gQ,mBAAmB8kB,EAAoB5pB,EAAYM,EAAcqpB,EAAY,eAGhG3zC,EAAcgoB,EAIlB,GAAIyC,IAAeA,EAAWlkB,cAAct4O,KAAK68P,cAAe,CAC5D,MAAMA,EAAe78P,KAAK68P,cAAgBL,EAAW1qO,UAC/Cg0P,EAA2BP,EAAeK,iBAC5CtwB,EAAWywB,uBACXzwB,EAAWswB,gBAETI,EAAa,IAAI,GADAP,GAAkB1rB,EACGC,GAC5ChoB,EAAchyO,KAAK6gQ,mBAAmBilB,EAA0BtpB,EAAYK,EAAcmpB,EAAY,eAGtGh0C,EAAcgoB,EAElB,MAAO,CACHj2O,OAAQguN,EACRrqO,OAAQsqO,GAGhB,mBAAmBnuK,EAAKh3C,EAAMmrN,EAAQ/8K,EAAM2lM,GACxC,MAAMpU,EAASvxL,EAAK9zD,IACpB,GAAW,MAAP08D,EACA,OAAO2oL,EAEX,MAAMhvP,EAAsB,iBAARqmE,EAAmBA,EAAMA,EAAIrmE,KAC3C2X,EAAsB,iBAAR0uD,EAAmB,GAAKA,EAAI1uD,KAC1CzP,EAAK,GAAgBguO,SAAS51O,IAAIN,GACxC,GAAkB,mBAAPkI,EACP,OAAO,GAAgBguO,SAASQ,WAAW12O,GAE/C,MAAMooR,EAAkB,EAAYxoR,KAAKsI,EAAI1F,KAAMi7D,EAAMpuC,EAAMmrN,EAAQ7iO,GAAQ,GAAIyrP,GACnF,OAAOglB,EAAkBA,EAAgBhzP,MAAM5yB,KAAK+/Q,gBAAkBvzB,EAE1E,iBAAiBjrP,GACb,MAAMqO,EAAQ5P,KAAK6xO,KAAK+gC,WAClBp0Q,EAAM,IAAI+C,WACVw+C,EAAUnwC,GAASA,EAAMpR,GAC3BuhD,GACA//C,KAAK8nF,YAAY9nF,KAAK8xB,UAAW,GAAI,CACjCliB,MAAO,CAAE,CAACpR,GAAMuhD,GAChBpsC,UAAW3T,KAAK2T,YAI5B,iBAAiBk5P,EAAa96B,EAAaC,GACvC,MAAMi0C,EAAgB1kR,IAClB,MAAMqO,EAAQ5P,KAAK6xO,KAAK+gC,WAClBxjQ,EAAOzR,OAAOyR,KAAKQ,GACzB,IAAK,IAAI3S,EAAI,EAAGC,EAAIkS,EAAKzN,OAAQ1E,EAAIC,EAAGD,GAAK,EAAG,CAC5C,MAAMgW,EAAOrD,EAAMR,EAAKnS,IACxB,GAAIgW,EAAQ1R,EAAH,WAAoB0R,EAAQ1R,EAAH,WAAmB,CACjD,MAAM4yO,EAAclhO,EAAKkhO,aAAelhO,EAAK,gBAC7C,GAAIkhO,EACA,OAAOthN,WAAWshN,GAEtB,OAGR,OAAO,MAELqxC,EAAkB3Y,EAAY,GAC9B4Y,EAAiB5Y,EAAYA,EAAYlrQ,OAAS,GAClDukR,EAAmBlmR,KAAKkpH,WAAWyqH,aACnCwyC,EAAmBnmR,KAAKkpH,WAAW2qH,aACnCxkO,EAAQrP,KAAKggR,YACnB,IAAIoG,EACAC,EAMJ,GAAIH,GAIA,GAHAlmR,KAAKsmR,iBAAiB,UAEtBj3Q,EAAM2sP,WAAa3sP,EAAM2sP,YAAc,EAAIp/H,QAAQspJ,GAC/C72Q,EAAM2sP,WAAW3qO,MAAQ,EAAG,CAC5B,MAAMxM,EAAQ,EAAIA,MAAMqhQ,GACxBE,EAAoBr0C,EACftqO,QACAkuD,KAAK6vN,GAAmBxzC,EAAa3iO,EAAM2sP,WAAW3qO,MAAQxM,EAAM6uC,IAAM,QAGlF,CACD,MAAMygL,EAAc8xC,EAAa,UAC7B9xC,IACAiyC,EAAoBr0C,EACftqO,QACAkuD,KAAK6vN,GAAmBxzC,GAAcmC,IAGnD,GAAIgyC,GAGA,GAFAnmR,KAAKsmR,iBAAiB,UACtBj3Q,EAAMotP,WAAaptP,EAAMotP,YAAc,EAAI7/H,QAAQupJ,GAC/C92Q,EAAMotP,WAAWprO,MAAQ,EAAG,CAC5B,MAAMxM,EAAQ,EAAIA,MAAMshQ,GACxBE,EAAoBr0C,EACfvqO,QACAkuD,KAAK8vN,GAAkB1zC,EAAa1iO,EAAMotP,WAAWprO,MAAQxM,EAAM6uC,IAAM,QAGjF,CACD,MAAMygL,EAAc8xC,EAAa,UAC7B9xC,IACAkyC,EAAoBr0C,EACfvqO,QACAkuD,KAAK8vN,GAAkB1zC,GAAcoC,IAMlD,OAFA9kO,EAAM0iO,YAAcq0C,GAAqBr0C,EAAYtqO,QACrD4H,EAAM2iO,YAAcq0C,GAAqBr0C,EAAYvqO,QAC9C,CACHsc,OAAQqiQ,EACR1+Q,OAAQ2+Q,GAGhB,SAASxZ,EAAa96B,EAAaC,GAC/B,MAAMnuK,EAAM7jE,KAAK6xO,KAAK88B,gBAAkB3uQ,KAAKurN,MAAM5rN,QAAQ21P,WAAW5tJ,UACtE,IAAIlqG,EACA2X,EACAzP,EAQJ,GAPmB,iBAARm+D,EACPrmE,EAAOqmE,GAGPrmE,EAAOqmE,EAAIrmE,KACX2X,EAAO0uD,EAAI1uD,MAEX3X,EAAM,CACN,MAAMmf,EAAS,GAAU+2N,SAAS51O,IAAIN,GACtC,GAAsB,mBAAXmf,EACP,OAAO,GAAU+2N,SAASQ,WAAW12O,GAEzCkI,EAAKiX,OAGLjX,EAAK,GAAU+tO,QAAQt2B,OAE3B,MAAMjuK,EAAO,EAAY9xC,KAAKsI,EAAI1F,KAAM+xO,EAAaC,EAAa66B,EAAalvQ,OAAO+rD,OAAO/rD,OAAO+rD,OAAO,GAAIv0C,GAAO,CAAEmM,KAAK,IAASthB,MACtI,MAAuB,iBAATkvC,EAAoB,GAAKlsB,MAAMksB,GAAQA,EAEzD,0BAA0ByrB,EAAIC,GAC1B,MAAMvrD,EAAQrP,KAAKggR,YACf3wQ,EAAM0iO,aACN1iO,EAAM0iO,YAAY3+K,UAAUuH,EAAIC,GAEhCvrD,EAAM2iO,aACN3iO,EAAM2iO,YAAY5+K,UAAUuH,EAAIC,GAEpC56D,KAAK+xO,YAAY3+K,UAAUuH,EAAIC,GAC/B56D,KAAKgyO,YAAY5+K,UAAUuH,EAAIC,GAC/B56D,KAAK+5P,aAAa3mM,UAAUuH,EAAIC,GAChC56D,KAAKg6P,aAAa5mM,UAAUuH,EAAIC,GAEpC,uBACI,GAA8B,MAA1B56D,KAAKkpH,WAAWkpI,OAChB,OAAOpyP,KAGX,IADaA,KAAKkvC,KAEd,OAAOlvC,KAEX,MAAM45D,EAAO55D,KAAK6xO,KACZugB,EAASx4L,EAAK4jN,YACpB,GAAsB,IAAlBprB,EAAOzwP,OACP,OAAO3B,KAEX,MAAMu9Q,EAAe3jN,EAAK6nN,kBACpB8E,EAAkBvmR,KAAKwmR,uBAAuBjJ,EAAa/qP,UACjE,IAAK,IAAIv1B,EAAI,EAAG25D,EAAKw7L,EAAOzwP,OAAQ1E,EAAI25D,EAAI35D,GAAK,EAAG,CAChD,MAAM86M,EAAQq6C,EAAOn1P,GACfwpR,EAAgBzmR,KAAKwmR,uBAAuBzuE,EAAMvlL,UAClD6E,EAAM,EAAUlxB,MAAM,GAAIogR,EAAiBE,GAC3CrvN,EAASp3D,KAAK0mR,6BAA6BrvP,GACjDr3B,KAAKohR,WAAWnkR,GAAGiI,aAAa,YAAa,EAAI+4H,wBAAwB7mE,IAE7E,OAAOp3D,KAEX,sBACI,GAA6B,MAAzBA,KAAKkpH,WAAWysI,MAChB,OAAO31P,KAOX,IAAI6kB,EAAQ,GACRsjB,EAASnoC,KAAKL,QAAQgnR,YAC1B,MAAMC,EAAmB5mR,KAAK00O,sBAG9B,GAAwB,MAApBkyC,EAA0B,CAGtBA,EAAmB5mR,KAAKL,QAAQknR,cAChChiQ,EAAQ,YACRsjB,GAAU,GAEd,IAAI9Q,EAAMr3B,KAAKwyI,iBAAiBrqG,GAIhC,GAHW,MAAP9Q,GACA,EAAIpkB,KAAKjT,KAAKmiR,UAAW,YAAa,aAAa9qP,EAAIkb,KAAKlb,EAAImb,MAAM3tB,KAEtE7kB,KAAKL,QAAQyiR,aACbwE,GAAoB5mR,KAAKL,QAAQmnR,WAAY,CAC7C,MAAMC,EAAoB/mR,KAAKL,QAAQonR,mBAAqB5+O,EAC5D9Q,EAAMr3B,KAAKwyI,iBAAiBo0I,EAAmBG,GACpC,MAAP1vP,GACA,EAAIpkB,KAAKjT,KAAKuiR,WAAY,YAAa,aAAalrP,EAAIkb,KAAKlb,EAAImb,MAAM3tB,KAE3E,EAAI5R,KAAKjT,KAAKuiR,WAAY,aAAc,gBAEnCviR,KAAKL,QAAQyiR,aAClB,EAAInvQ,KAAKjT,KAAKuiR,WAAY,aAAc,UAGhD,OAAOviR,KAEX,yBACI,MAAM8xB,EAAY9xB,KAAKkpH,WAAWu5J,WAClC,GAAiB,MAAb3wP,EACA,OAAO9xB,KAEX,GAAgC,SAA5B8xB,EAAUxN,MAAMC,QAChB,OAAOvkB,KAEX,MAAM2iR,EAAkB3iR,KAAKkpH,WAAWy5J,gBAClCC,EAAkB5iR,KAAKkpH,WAAW05J,gBACxC,GAAID,GAAmBC,EAAiB,CACpC,MACMlvN,GADM1zD,KAAK00O,uBAAyB,GACzB10O,KAAKL,QAAQknR,YAAc,GAAM,EAClD,EAAIhiQ,MAAM89P,EAAiBjvN,GAC3B,EAAI7uC,MAAM+9P,EAAiBlvN,GAC3B1zD,KAAKujR,6BAA6BZ,EAAiBC,GAEvD,OAAO5iR,KAEX,yBAAyBuB,GACrB,MAAMq4D,EAAO55D,KAAK6xO,KACZtmB,EAAQvrN,KAAKurN,MACb6gC,EAAWxyL,EAAKr4D,GAChBylR,EAAS56B,GAAYA,EAASva,KAC9Bo1C,EAAa1lR,EAAH,OAEhB,IAAKylR,EAGD,OAFAhnR,KAAKinR,GAAW,KAChBjnR,KAAKknR,qBAAqB3lR,IACnB,EAEX,MAAMs8P,EAAetyC,EAAM47D,YAAYH,GACvC,IAAKnpB,EACD,MAAM,IAAI76P,MAAM,UAAUzB,mBAAsBylR,iBAEpD,MAAMI,EAAUvpB,EAAawpB,SAAS97D,GACtC,QAAK67D,IAGLpnR,KAAKinR,GAAWG,EAChBpnR,KAAKknR,qBAAqB3lR,IACnB,GAEX,qBAAqBA,GACjB,MAAMmhI,EAAcnhI,EAAH,SACXo2P,EAAe33P,KAAKm9P,gBAAgB57P,GAC1C,GAAIo2P,EAAc,CACd,IAAI3f,EAAS2f,EAAa2vB,0BAA0BtnR,KAAK6xO,KAAKtwO,IAC1Dy2O,IAAW2f,EAAa7lO,YACxBkmN,EAAS,MAEbh4O,KAAK0iI,GAAYs1G,OAGjBh4O,KAAK0iI,GAAY,KAGzB,6BAA6B6kJ,EAAaC,GACtC,MAAM9oD,EAAQ1+N,KAAK6sQ,YACf0a,GACA,EAAI1qJ,uBAAuB0qJ,EAAavnR,KAAK+xO,YAAarT,EAAM,IAAM1+N,KAAKgyO,YAAahyO,KAAKurN,MAAM1+L,KAAKohG,OAExGu5J,GACA,EAAI3qJ,uBAAuB2qJ,EAAaxnR,KAAKgyO,YAAatT,EAAMA,EAAM/8N,OAAS,IAAM3B,KAAK+xO,YAAa/xO,KAAKurN,MAAM1+L,KAAKohG,OAG/H,sBAAsB54G,GAClB,MAAM0iM,EAAQ/3M,KAAK6xO,KAAK41C,WAAWpyQ,GACnC,OAAI0iM,GAASA,EAAMvlL,UAAsC,iBAAnBulL,EAAMvlL,UACjCulL,EAAMvlL,SAASkiC,OAEnB,EAEX,qBAAqBr/C,GACjB,MAAM0iM,EAAQ/3M,KAAK6xO,KAAK41C,WAAWpyQ,GACnC,GAAI0iM,GAASA,EAAMvlL,UAAsC,iBAAnBulL,EAAMvlL,SACxC,OAAOulL,EAAMvlL,SAAS7yB,QAG9B,8BACI,MAAM49Q,EAAev9Q,KAAK6xO,KAAK4vC,kBAC/B,GAAIlE,GACAA,EAAa/qP,UACoB,iBAA1B+qP,EAAa/qP,SACpB,OAAO+qP,EAAa/qP,SAAS7yB,QAKrC,uBAAuB+nR,EAAmBC,GACtC,OAA0B,OAAtBD,EACO,UAEexlR,IAAtBwlR,EACiC,OAA7BC,EACO,KAEJA,EAEJ,EAAUxhR,MAAM,GAAIwhR,EAA0BD,GAEzD,SAASpzN,EAAIC,EAAI8rC,EAAI1gG,GACjB,IAAIioR,EACAC,EAEA/X,EADAgY,EAAa,EAEC,iBAAPxzN,GACPszN,EAAStzN,EAAG/hB,EACZs1O,EAASvzN,EAAG9hB,EACM,iBAAP+hB,GACPuzN,EAAavzN,EACbu7M,EAAezvK,GAGfyvK,EAAev7M,IAInBqzN,EAAStzN,EACTuzN,EAAStzN,EACS,iBAAP8rC,GACPynL,EAAaznL,EACbyvK,EAAenwQ,GAGfmwQ,EAAezvK,GAIvB,MAAMsnL,EAA2B3nR,KAAK+nR,8BAChCL,EAAoB5X,EACpBkY,EAAehoR,KAAKioR,uBAAuBP,EAAmBC,GAE9D5vE,EAAQ,CACVvlL,SAAUxyB,KAAKkoR,iBAAiBN,EAAQC,EAAQC,EAAYE,IAIhE,OADAhoR,KAAK6xO,KAAK8rC,YAAY5lE,GADR,EACsB+3D,IADtB,EAIlB,UAAUv9N,EAAGC,EAAG7yC,GACZ,MAAMs2D,EAAuB,iBAAN1jB,EACjBq1O,EAAS3xN,EAAU1jB,EAAEA,EAAIA,EACzBs1O,EAAS5xN,EAAU1jB,EAAEC,EAAIA,EACzBs9N,EAAe75M,EAAUzjB,EAAI7yC,EAC7B45P,EAAS,CAAEhnN,EAAGq1O,EAAQp1O,EAAGq1O,GACzBnmR,EAAQ1B,KAAKi7P,eAAe2sB,EAAQC,GAE1C,OADA7nR,KAAK6xO,KAAKqpB,aAAa3B,EAAQ73P,EAAOouQ,GAC/BpuQ,EAEX,UAAUiY,EAAOha,EAAS2G,GACtB,IAAI8wB,EACA2tO,EACAt/P,EACA0iR,EACApY,EAAS,SACU,iBAAZpwQ,GACPy3B,EAAWz3B,EAAQy3B,SACnB2tO,GAAgC,IAArBplQ,EAAQolQ,SACnBt/P,EAAW9F,EAAQ8F,UACI,IAAnB9F,EAAQ4zD,OACR40N,EAAS,IAEe,IAAnBxoR,EAAQ4zD,OACb40N,EAAS,OAEc,MAAlBxoR,EAAQ4zD,SACb40N,EAAS,GAAGxoR,EAAQ4zD,QAEpB5zD,EAAQowQ,SACRA,EAASpwQ,EAAQowQ,UAIrB34O,EAAWz3B,EACXolQ,GAAW,EACXt/P,EAAW,MAEf2xB,EAAWA,GAAY,IACvB,MAAMxnB,EAAQ,CACVw4Q,IAAQhxP,EAAH,KACLixP,YAAa,IACbC,SAAUvY,EACVngO,KAAM,UASV,GAPIu4O,IACAv4Q,EAAM2jD,OAAS40N,GAEfpjB,IACAn1P,EAAM24Q,UAAY,MAClB34Q,EAAM44Q,SAAW,OAEE,iBAAZ7oR,EAAsB,CAC7B,MAAM,SAAEy3B,EAAQ,SAAE2tO,EAAQ,SAAEt/P,EAAQ,OAAE8tD,EAAM,OAAEw8M,GAAWpwQ,EAASq0O,EAAS,GAAOr0O,EAAS,CAAC,WAAY,WAAY,WAAY,SAAU,WAC1IhC,OAAOyR,KAAK4kO,GAAQ7oM,QAAS3sC,IACzBoR,EAAMpR,GAAOw1O,EAAOx1O,KAG5B,IAAI0wC,EAUJ,GARIA,EADoB,iBAAbzpC,EACAzF,KAAKwqG,QAAQ/kG,EAAUzF,KAAK8xB,UAAW9xB,KAAK2T,WAI5C3T,KAAKkpH,WAAWsrH,WACjBx0O,KAAKkpH,WAAWsrH,WAChBx0O,KAAK8xB,UAAUymE,cAAc,UAEjCrpD,aAAgBiuF,gBAClB,MAAM,IAAIn6H,MAAM,qDAEpB,MAAM0E,EAA0B,iBAAViS,EAAqB3Z,KAAKwqG,QAAQ7wF,GAASA,EACjE,GAAc,MAAVjS,EACA,MAAM,IAAI1E,MAAM,mDAEpB,MAAM7C,EAASuH,EAAOrC,WAChBojR,EAAS,KACNtoR,GACD,EAAIyd,OAAOlW,IAGbghR,EAAS,GAAOnqR,OAAOmJ,GACxBvH,GACDuoR,EAAOp4P,SAAStwB,KAAKurN,MAAM1+L,KAAKohG,OAEpC,MAAMynI,EAAa9lP,EAAM8pB,SACzB9pB,EAAM8pB,SAAY7rB,IACd46Q,IACIniR,GACAA,IAEAovP,GACAA,EAAW7nP,IAGnB,MAAM4V,EAAOilQ,EAAO3rJ,iBAAiBntH,EAAOs/B,GAC5C,MAAO,KACHu5O,IACAhlQ,KAIR,gBACI,OAAoB,MAAbzjB,KAAKkvC,KAAelvC,KAAKkvC,KAAKznC,QAAU,KAEnD,wBACI,GAAiB,MAAbzH,KAAKkvC,KACL,MAAO,GAEX,MAAM7/B,EAAQrP,KAAKqP,MAAM+9O,UAIzB,OAHK,EAAU/xO,IAAIhM,EAAO,UACtBA,EAAMkT,KAAOviB,KAAKkvC,KAAKxP,aAEpBrwB,EAAMkT,MAAQ,GAEzB,4BACI,GAAiB,MAAbviB,KAAKkvC,KACL,OAAO,KAEX,MAAM7/B,EAAQrP,KAAKqP,MAAM+9O,UAIzB,OAHK,EAAU/xO,IAAIhM,EAAO,yBACtBA,EAAMm1K,oBAAsBxkL,KAAKkvC,KAAKw1I,0BAEnCr1K,EAAMm1K,oBAEjB,sBACI,GAAiB,MAAbxkL,KAAKkvC,KACL,OAAO,EAEX,MAAM7/B,EAAQrP,KAAKqP,MAAM+9O,UAMzB,OALK,EAAU/xO,IAAIhM,EAAO,YACtBA,EAAM1N,OAAS3B,KAAKkvC,KAAKvtC,OAAO,CAC5B6iL,oBAAqBxkL,KAAKihQ,+BAG3B5xP,EAAM1N,OAEjB,iBAAiBA,GACb,OAAiB,MAAb3B,KAAKkvC,KACE,KAEJlvC,KAAKkvC,KAAKktB,cAAcz6D,EAAQ,CACnC6iL,oBAAqBxkL,KAAKihQ,8BAGlC,gBAAgB9kM,GACZ,OAAiB,MAAbn8D,KAAKkvC,KACE,MAEP,EAAUgiJ,aAAa/0H,KAEvBA,EAAQtpC,WAAWspC,GAAS,KAEzBn8D,KAAKkvC,KAAKysB,QAAQQ,EAAO,CAC5BqoH,oBAAqBxkL,KAAKihQ,+BAGlC,mBAAmBt/P,GACf,OAAiB,MAAb3B,KAAKkvC,KACE,KAEJlvC,KAAKkvC,KAAKouB,gBAAgB37D,EAAQ,CACrC6iL,oBAAqBxkL,KAAKihQ,8BAGlC,kBAAkB9kM,GACd,OAAiB,MAAbn8D,KAAKkvC,KACE,KAEJlvC,KAAKkvC,KAAK6sB,UAAUI,EAAO,CAC9BqoH,oBAAqBxkL,KAAKihQ,8BAGlC,gBAAgB9qM,GACZ,OAAiB,MAAbn2D,KAAKkvC,KACE,KAEJlvC,KAAKkvC,KAAKwsB,aAAavF,EAAO,CACjCquH,oBAAqBxkL,KAAKihQ,8BAGlC,sBAAsB9qM,GAClB,OAAiB,MAAbn2D,KAAKkvC,KACE,KAEJlvC,KAAKkvC,KAAK2sB,mBAAmB1F,EAAO,CACvCquH,oBAAqBxkL,KAAKihQ,8BAGlC,qBAAqB9qM,GACjB,OAAiB,MAAbn2D,KAAKkvC,KACE,KAEJlvC,KAAKkvC,KAAK0sB,6BAA6BzF,EAAO,CACjDquH,oBAAqBxkL,KAAKihQ,8BAGlC,iBAAiB1uN,EAAGC,EAAG6tD,EAAI4F,GACvB,MAAM5uE,EAAM,CAAEw5B,SAAU,GAExB,IACIlxD,EADA+0D,EAAQ,EAEM,iBAAP2rC,GACP3rC,EAAQ2rC,EACR1gG,EAAUsmG,GAGVtmG,EAAU0gG,EAEC,MAAX1gG,IACA03B,EAAI13B,QAAUA,GAGlB,MAAMgpR,EAAmBhpR,GAAWA,EAAQipR,eACtCC,IAAuBlpR,GAAWA,EAAQmpR,kBAC1CC,EAA4BppR,GAAWA,EAAQmpR,kBAAoBnpR,EAAQqpR,gBAE3E95O,EAAOlvC,KAAKkvC,KACZuzN,EAAc,CAChBj+E,oBAAqBxkL,KAAKihQ,6BAExBgoB,EAAa,IAAI,GAAM12O,EAAGC,GAC1Br0C,EAAI+wC,EAAK4iE,cAAcm3K,EAAYxmB,GAEnClW,EAAcvsP,KAAK00O,uBAAyB,EAClD,IAaIa,EAGA2zC,EAhBAC,EAAgBj6O,EAAK6iE,UAAU5zG,EAAGskQ,GAiBtC,GAhBIomB,IACAM,EAAgB58B,EAAc,EAAI48B,EAAgB58B,EAAc,GAEhEw8B,IAEAI,GAAiB,GAAK58B,EAAc48B,IAAkB,GAE1D9xP,EAAIw5B,SAAWs4N,EAMVR,IACDpzC,EAAUrmM,EAAKgjE,WAAW/zG,IAE1Bo3O,EACA2zC,EAAc3zC,EAAQt4K,YAAYgsN,OAEjC,CACD,MAAMvtN,EAAexsB,EAAK+iE,SAAS9zG,GAC7BirR,EAAkBH,EAAWh5Q,KAAKyrD,GACxCwtN,EAAc,CAAE32O,EAAG62O,EAAgB72O,EAAGC,EAAG42O,EAAgB52O,GAI7D,OAFAnb,EAAI8Q,OAAS+gP,EACb7xP,EAAIq9B,MAAQA,EACLr9B,EAEX,uBAAuBA,GACnB,MAAmB,iBAARA,EACA,CAAEw5B,SAAUx5B,GAEhBA,EAEX,6BAA6BovP,GACzB,MAAMpvP,EAAMr3B,KAAKwmR,uBAAuBC,GAClC9mR,EAAU03B,EAAI13B,SAAW,GACzB0pR,EAAahyP,EAAIq9B,OAAS,EAC1By0N,EAAgB9xP,EAAIw5B,SACpBg4N,EAAqBM,EAAgB,GAAKA,GAAiB,EACjE,IAAID,EAAc,EAClB,MAAMI,EAAc,CAAE/2O,EAAG,EAAGC,EAAG,GACzBrK,EAAS9Q,EAAI8Q,OACfA,IACsB,iBAAXA,EACP+gP,EAAc/gP,GAGE,MAAZA,EAAOoK,IACP+2O,EAAY/2O,EAAIpK,EAAOoK,GAEX,MAAZpK,EAAOqK,IACP82O,EAAY92O,EAAIrK,EAAOqK,KAInC,MAAMm2O,EAAqC,IAAlBW,EAAY/2O,GAA6B,IAAlB+2O,EAAY92O,GAA2B,IAAhB02O,EACjEK,EAAiB5pR,EAAQ6pR,aACzBC,EAAqB9pR,EAAQ+pR,iBAC7Bx6O,EAAOlvC,KAAKkvC,KACZy6O,EAAU,CAAEnlG,oBAAqBxkL,KAAKihQ,6BACtCpwM,EAAWg4N,EACXM,EAAgBnpR,KAAK00O,sBACrBy0C,EACA5zC,EAAUrmM,EAAKouB,gBAAgBzM,EAAU84N,GAC/C,IAAIlqJ,EACA/qE,EAAQ20N,EACZ,GAAI9zC,EAAS,CACT,GAAIozC,EACAlpJ,EAAc81G,EAAQj0O,MACtBm+H,EAAYrsE,UAAUk2N,OAErB,CACD,MAAMnsE,EAASo4B,EAAQ9tO,QACvB01M,EAAO5pJ,QAAQ,GAAIgiL,EAAQj0O,OAC3B67M,EAAOriJ,UAAUouN,GACjBzpJ,EAAc09E,EAAOh2M,IAErBoiR,IACA70N,EAAQ6gL,EAAQ7gL,QAAU20N,EACtBI,IACA/0N,EAAQQ,GAAM1D,WAAYkD,EAAQ,IAAM,IAAO,WAMvD+qE,EAAcvwF,EAAK5tC,MACfqnR,GACAlpJ,EAAYrsE,UAAUk2N,GAG9B,OAAO,EAAIlrJ,kBACNhrE,UAAUqsE,EAAYltF,EAAGktF,EAAYjtF,GACrC+gB,OAAOmB,GAEhB,oBAAoBr9B,GAChB,MAAM+/B,EAASp3D,KAAK0mR,6BAA6BrvP,GACjD,OAAO,IAAI,GAAM+/B,EAAOvpD,EAAGupD,EAAO49C,GAEtC,eAAeziE,EAAGC,GACd,MACM4mN,EADOp5P,KAAK6xO,KACIknB,cAChB6wB,EAAe5pR,KAAK6pR,sBAAsB,IAAI,GAAMt3O,EAAGC,IAC7D,IAAI9wC,EAAQ,EACZ,GAAoB,MAAhBkoR,EACA,IAAK,MAAMhzN,EAAKwiM,EAASz3P,OAAQD,EAAQk1D,EAAIl1D,GAAS,EAAG,CACrD,MAAMooR,EAAgB1wB,EAAS13P,GACzBqoR,EAAgB/pR,KAAK6pR,sBAAsBC,GACjD,GAAqB,MAAjBC,GAAyBH,EAAeG,EACxC,MAIZ,OAAOroR,EAEX,aAAamM,EAAG0kC,EAAGC,GACf,MAAM3lB,EAAO7sB,KACP45D,EAAO/sC,EAAKglN,KAElB,OAAS,MAALt/L,GAAkB,MAALC,EACN,CAAE3kC,IAAGgf,OAAM+sC,OAAMi4K,KAFfj4K,GAIN,CAAE/rD,IAAG0kC,IAAGC,IAAG3lB,OAAM+sC,OAAMi4K,KAJjBj4K,GAMjB,yBAAyB/rD,EAAG0kC,EAAGC,GAC3BxyC,KAAK4e,OAAO,2BAA4B,CACpC/Q,IACA0kC,IACAC,IACA3lB,KAAM7sB,KACN6xO,KAAM7xO,KAAK6xO,KACXj4K,KAAM55D,KAAK6xO,OAGnB,gBAAgBhkO,EAAG0kC,EAAGC,GAClBmsC,MAAMw8K,YAAYttP,EAAG0kC,EAAGC,GACxBxyC,KAAK4e,OAAO,iBAAkB5e,KAAKk2P,aAAaroP,EAAG0kC,EAAGC,IAE1D,gBAAgB3kC,EAAG0kC,EAAGC,GAClBmsC,MAAMogL,YAAYlxP,EAAG0kC,EAAGC,GACxBxyC,KAAK4e,OAAO,iBAAkB5e,KAAKk2P,aAAaroP,EAAG0kC,EAAGC,IAE1D,cAAc3kC,EAAG0kC,EAAGC,GAChBmsC,MAAMqgL,UAAUnxP,EAAG0kC,EAAGC,GACtBxyC,KAAK4e,OAAO,eAAgB5e,KAAKk2P,aAAaroP,EAAG0kC,EAAGC,IAExD,QAAQ3kC,EAAG0kC,EAAGC,GACVmsC,MAAM45K,QAAQ1qP,EAAG0kC,EAAGC,GACpBxyC,KAAK4e,OAAO,aAAc5e,KAAKk2P,aAAaroP,EAAG0kC,EAAGC,IAEtD,WAAW3kC,EAAG0kC,EAAGC,GACbmsC,MAAMqrM,WAAWn8Q,EAAG0kC,EAAGC,GACvBxyC,KAAK4e,OAAO,gBAAiB5e,KAAKk2P,aAAaroP,EAAG0kC,EAAGC,IAEzD,cAAc3kC,EAAG0kC,EAAGC,GAChBmsC,MAAMsrM,cAAcp8Q,EAAG0kC,EAAGC,GAC1BxyC,KAAK4e,OAAO,mBAAoB5e,KAAKk2P,aAAaroP,EAAG0kC,EAAGC,IAE5D,YAAY3kC,EAAG0kC,EAAGC,GACdxyC,KAAKk6P,gBAAgBrsP,EAAG0kC,EAAGC,GAE3B,OADkB3kC,EAAEnG,OAAOzC,aAAa,UAEpC,IAAK,SAED,YADAjF,KAAKkqR,oBAAoBr8Q,EAAG0kC,EAAGC,GAGnC,IAAK,gBACL,IAAK,qBAED,YADAxyC,KAAKmqR,qBAAqBt8Q,EAAG0kC,EAAGC,GAGpC,IAAK,aACL,IAAK,kBAED,YADAxyC,KAAKoqR,mBAAmBv8Q,EAAG0kC,EAAGC,GAGlC,IAAK,YAED,YADAxyC,KAAKqqR,uBAAuBx8Q,EAAG0kC,EAAGC,GAGtC,IAAK,gBACL,IAAK,gBAED,YADAxyC,KAAKsqR,yBAAyBz8Q,EAAG0kC,EAAGC,GAM5CxyC,KAAKuqR,kBAAkB18Q,EAAG0kC,EAAGC,GAEjC,YAAY3kC,EAAG0kC,EAAGC,GACd,MAAMjwB,EAAOviB,KAAK0rP,aAAa79O,GAC/B,OAAQ0U,EAAK6+B,QACT,IAAK,cACDphD,KAAKwqR,WAAW38Q,EAAG0kC,EAAGC,GACtB,MAEJ,IAAK,aACDxyC,KAAKyqR,UAAU58Q,EAAG0kC,EAAGC,GACrB,MAEJ,IAAK,iBACDxyC,KAAK0qR,cAAc78Q,EAAG0kC,EAAGC,GACzB,MAEJ,IAAK,YACDxyC,KAAK2qR,SAAS98Q,EAAG0kC,EAAGC,GAO5B,OADAxyC,KAAKq6P,gBAAgBxsP,EAAG0kC,EAAGC,GACpBjwB,EAEX,UAAU1U,EAAG0kC,EAAGC,GACZ,MAAMjwB,EAAOviB,KAAK0rP,aAAa79O,GAC/B,OAAQ0U,EAAK6+B,QACT,IAAK,cACDphD,KAAK4qR,mBAAmB/8Q,EAAG0kC,EAAGC,GAC9B,MAEJ,IAAK,aACDxyC,KAAK6qR,kBAAkBh9Q,EAAG0kC,EAAGC,GAC7B,MAEJ,IAAK,iBACDxyC,KAAK8qR,sBAAsBj9Q,EAAG0kC,EAAGC,GACjC,MAEJ,IAAK,YACDxyC,KAAK+qR,iBAAiBl9Q,EAAG0kC,EAAGC,GAQpC,OAFAxyC,KAAKy6P,cAAc5sP,EAAG0kC,EAAGC,GACzBxyC,KAAK06P,gBAAgB7sP,GACd0U,EAEX,YAAY1U,GACR8wE,MAAMqsM,YAAYn9Q,GAClB7N,KAAK4e,OAAO,iBAAkB5e,KAAKk2P,aAAaroP,IAEpD,WAAWA,GACP8wE,MAAMssM,WAAWp9Q,GACjB7N,KAAK4e,OAAO,gBAAiB5e,KAAKk2P,aAAaroP,IAEnD,aAAaA,GACT8wE,MAAM+3K,aAAa7oP,GACnB7N,KAAK4e,OAAO,kBAAmB5e,KAAKk2P,aAAaroP,IAErD,aAAaA,GACT8wE,MAAM83K,aAAa5oP,GACnB7N,KAAK4e,OAAO,kBAAmB5e,KAAKk2P,aAAaroP,IAErD,aAAaA,EAAG0kC,EAAGC,EAAGjd,GAClBopD,MAAMusM,aAAar9Q,EAAG0kC,EAAGC,EAAGjd,GAC5Bv1B,KAAK4e,OAAO,kBAAmBjhB,OAAO+rD,OAAO,CAAEn0B,SAASv1B,KAAKk2P,aAAaroP,EAAG0kC,EAAGC,KAEpF,cAAc3kC,EAAGrQ,EAAM+0C,EAAGC,GAGtB,GADa,EAAI+3D,kBAAkB18F,EAAEnG,OAAQ,YAAa1H,KAAK8xB,WACrD,CAEN,GADAjkB,EAAEkb,kBACE/oB,KAAK41P,IAAI,gBAAiB,CAC1B,GAAa,gBAATp4P,EAEA,YADAwC,KAAK6xO,KAAKj0N,OAAO,CAAE+6O,IAAI,IAG3B34P,KAAK4e,OAAO,mBAAoBjhB,OAAO+rD,OAAO,CAAElsD,QAAQwC,KAAKk2P,aAAaroP,EAAG0kC,EAAGC,KAEpFxyC,KAAKk6P,gBAAgBrsP,EAAG0kC,EAAGC,QAG3BxyC,KAAK4e,OAAO,mBAAoBjhB,OAAO+rD,OAAO,CAAElsD,QAAQwC,KAAKk2P,aAAaroP,EAAG0kC,EAAGC,KAChFmsC,MAAMwsM,cAAct9Q,EAAGrQ,EAAM+0C,EAAGC,GAGxC,iBAAiB3kC,EAAG0kC,EAAGC,GACnBxyC,KAAKk6P,gBAAgBrsP,EAAG0kC,EAAGC,GAC3BxyC,KAAKorR,mBAAmBv9Q,EAAG0kC,EAAGC,GACNxyC,KAAK0rP,aAAa79O,GAAGkb,iBAEzClb,EAAEkb,kBAIV,kBAAkBlb,EAAG0kC,EAAGC,GACfxyC,KAAK41P,IAAI,eAId51P,KAAKwrP,aAAa39O,EAAG,CACjB0kC,IACAC,IACA64O,QAAQ,EACRjqO,OAAQ,cAPRphD,KAAKsqR,yBAAyBz8Q,EAAG0kC,EAAGC,GAU5C,SAAS3kC,EAAG0kC,EAAGC,GACX,MAAMjwB,EAAOviB,KAAK0rP,aAAa79O,GAC1B0U,EAAK8oQ,SACN9oQ,EAAK8oQ,QAAS,EACdrrR,KAAKk9B,SAAS,eACdl9B,KAAK4e,OAAO,YAAa,CACrB/Q,IACA0kC,IACAC,IACA3lB,KAAM7sB,KACN6xO,KAAM7xO,KAAK6xO,KACXj4K,KAAM55D,KAAK6xO,QAGnB7xO,KAAK6xO,KAAKz+K,UAAU7gB,EAAIhwB,EAAKgwB,EAAGC,EAAIjwB,EAAKiwB,EAAG,CAAEmmN,IAAI,IAClD34P,KAAKwrP,aAAa39O,EAAG,CAAE0kC,IAAGC,MAC1BxyC,KAAK4e,OAAO,cAAe,CACvB/Q,IACA0kC,IACAC,IACA3lB,KAAM7sB,KACN6xO,KAAM7xO,KAAK6xO,KACXj4K,KAAM55D,KAAK6xO,OAGnB,iBAAiBhkO,EAAG0kC,EAAGC,GACnB,MAAMjwB,EAAOviB,KAAK0rP,aAAa79O,GAC3B0U,EAAK8oQ,SACLrrR,KAAKu9B,YAAY,eACjBv9B,KAAK4e,OAAO,aAAc,CACtB/Q,IACA0kC,IACAC,IACA3lB,KAAM7sB,KACN6xO,KAAM7xO,KAAK6xO,KACXj4K,KAAM55D,KAAK6xO,QAGnBtvN,EAAK8oQ,QAAS,EAIlB,yBAAyB9pR,EAAM5B,GAC3B,MAAMq4O,EAASh4O,KAAK89P,kBAAkBv8P,GAChCghB,EAAO,CACT6+B,OAAQ,iBACR7O,EAAG5yC,EAAQ4yC,EACXC,EAAG7yC,EAAQ6yC,EACX84O,WAAiC,IAAtB3rR,EAAQ2rR,UACnBptB,aAAc38P,EACdgqR,cAAevzC,EACfwzC,gBAAiB,EAAU/jR,MAAMzH,KAAK6xO,KAAKtwO,IAC3CkqR,eAAgB9rR,EAAQ8rR,gBAAkB,SAC1CC,0BAA2B1rR,KAAK2rR,6BAA6BpqR,GAC7D5B,QAASA,EAAQA,SAGrB,OADAK,KAAK4rR,wBAAwBrpQ,GACtBA,EAEX,6BAA6BhhB,GACzB,MAAM4T,EAAO,GAGb,IAAImvP,EAFJnvP,EAAK,GAAK5T,EACV4T,EAAK,GAAKnV,KAEV,IAAI/C,EAAI,EACJiK,EAAI,EACK,WAAT3F,GACAtE,EAAI,EACJqnQ,EAAW,WAGXp9P,EAAI,EACJo9P,EAAW,UAEf,MAAMlY,EAAWpsP,KAAK6xO,KAAKyyB,GACrBuY,EAASzwB,EAASva,KACxB,GAAIgrC,EAAQ,CACR,IAAI7kC,EACJ,MAAMnrN,EAAQ1X,EAAKlY,GAAK+C,KAAKurN,MAAM39F,SAASihJ,eAAegO,GACvDhwP,IACAmrN,EAASnrN,EAAKy6P,0BAA0Bl7B,GACpCpU,IAAWnrN,EAAKiF,YAChBkmN,OAAS91O,IAGjBiT,EAAKlY,EAAI,GAAK+6O,EAElB,MAAO,CAACD,EAAUC,KACd7iO,EAAKjO,GAAK6wO,EACV5iO,EAAKjO,EAAI,GAAK6wO,EAASjmN,YAAckmN,OAAS91O,EAAY81O,EACnD7iO,GAGf,wBAAwBoN,GACpBA,EAAKu2J,OAAS94K,KAAK6xO,KAAK/4D,OACxB94K,KAAK6xO,KAAKg6C,UACV,MAAMvnQ,EAAQtkB,KAAK8xB,UAAUxN,MAC7B/B,EAAK07K,cAAgB35K,EAAM25K,cAC3B35K,EAAM25K,cAAgB,OAClBj+L,KAAKurN,MAAM5rN,QAAQ21P,WAAWnf,WAC9Bn2O,KAAK8rR,0BAA0BvpQ,GAGvC,uBAAuBA,GACA,MAAfA,EAAKu2J,SACL94K,KAAK6xO,KAAKqgC,UAAU3vP,EAAKu2J,OAAQ,CAAE6/E,IAAI,IACvCp2O,EAAKu2J,OAAS,MAEA94K,KAAK8xB,UACbxN,MAAM25K,cAAgB17K,EAAK07K,eAAiB,GAClDj+L,KAAKurN,MAAM5rN,QAAQ21P,WAAWnf,WAC9Bn2O,KAAK+rR,4BAA4BxpQ,GAGzC,kBAAkB7a,EAAQ6qC,EAAGC,EAAGjwB,GAC5BA,EAAKgwB,EAAIA,EACThwB,EAAKiwB,EAAIA,EAELjwB,EAAKqI,gBAAkBljB,IAEnB6a,EAAKypQ,eAAiBzpQ,EAAK0pQ,aAC3B1pQ,EAAK0pQ,YAAYnzC,YAAYv2N,EAAKypQ,cAAe,CAC7CzqR,KAAM,mBAGdghB,EAAK0pQ,YAAcjsR,KAAKurN,MAAM39F,SAAS4oI,eAAe9uP,GAClD6a,EAAK0pQ,aAGL1pQ,EAAKypQ,cAAgBzpQ,EAAK0pQ,YAAYC,WAAWxkR,GAC7C6a,EAAKypQ,eACLhsR,KAAKurN,MAAM7rN,KAAKysR,sBAAsB5pQ,EAAKmpQ,0BAA0BnpQ,EAAK0pQ,YAAa1pQ,EAAKypQ,eAAgBzpQ,EAAK0pQ,YAAYG,gBAAgB7pQ,EAAKypQ,cAAez5O,EAAGC,EAAGxyC,KAAK6xO,KAAMtvN,EAAK27O,eACvL37O,EAAK0pQ,YAAY91C,UAAU5zN,EAAKypQ,cAAe,CAC3CzqR,KAAM,mBAKVghB,EAAKypQ,cAAgB,MAKzBzpQ,EAAKypQ,cAAgB,MAG7BzpQ,EAAKqI,cAAgBljB,EACrB1H,KAAK6xO,KAAKrvN,KAAKD,EAAK27O,aAAc,CAAE3rN,IAAGC,KAAK70C,OAAO+rD,OAAO/rD,OAAO+rD,OAAO,GAAInnC,EAAK5iB,SAAU,CAAEg5P,IAAI,KAErG,iBAAiBp2O,EAAMgwB,EAAGC,GACtB,MAAM3lB,EAAOtK,EAAK0pQ,YACZj0C,EAASz1N,EAAKypQ,cACpB,IAAKh0C,IAAWnrN,EACZ,OAEJA,EAAKisN,YAAYd,EAAQ,CAAEz2O,KAAM,mBACjC,MAAMA,EAAOghB,EAAK27O,aACZ9R,EAAWv/N,EAAKu/P,gBAAgBp0C,EAAQzlM,EAAGC,EAAGxyC,KAAK6xO,KAAMtwO,GAC/DvB,KAAK6xO,KAAK6qC,YAAYn7Q,EAAM6qP,EAAU,CAAEuM,IAAI,IAEhD,cAAcpmN,EAAGC,EAAGjwB,GAChB,MAAMgpM,EAAQvrN,KAAKurN,MACb6yC,EAAO7yC,EAAM5rN,QAAQ21P,WAAW8I,KAChC9gK,EAA0B,iBAAT8gK,GAAqBA,EAAK9gK,QAAW,GACtDotJ,EAAQn/B,EAAM39F,SAASy+J,gBAAgB,CACzC95O,EAAGA,EAAI+qD,EACP9qD,EAAGA,EAAI8qD,EACPjsE,MAAO,EAAIisE,EACX7pE,OAAQ,EAAI6pE,IAEVgvL,EAAW/pQ,EAAKgqQ,aAAe,KAC/BC,EAAajqQ,EAAKkqQ,eAAiB,KAGzC,IAAI57N,EAFJtuC,EAAKgqQ,YAAc,KACnBhqQ,EAAKkqQ,cAAgB,KAErB,IAAI72I,EAAc15E,OAAOswM,iBACzB,MAAMn1O,EAAM,IAAI,GAAMkb,EAAGC,GA8BzB,IAAI45M,EA7BJ1B,EAAMv/M,QAASte,IACmC,UAA1CA,EAAKiF,UAAU7sB,aAAa,YAE5B4rD,EAAWhkC,EAAKglN,KAAKj1G,UAAUliE,YAAY7J,SAASx5B,GAEhDw5B,EAAWysC,GAAUzsC,EAAW+kF,IAC5B42I,IAAe3/P,EAAKiF,WACpBy5L,EAAM7rN,KAAKysR,sBAAsB5pQ,EAAKmpQ,0BAA0B7+P,EAAM,MAAOA,EAAKu/P,gBAAgBv/P,EAAKiF,UAAWygB,EAAGC,EAAGxyC,KAAK6xO,KAAMtvN,EAAK27O,kBACxItoH,EAAc/kF,EACdtuC,EAAKgqQ,YAAc1/P,EACnBtK,EAAKkqQ,cAAgB5/P,EAAKiF,YAItCjF,EAAKiF,UAAU7iB,iBAAiB,YAAYk8B,QAAS6sM,IACjD,GAAsC,UAAlCA,EAAO/yO,aAAa,UAAuB,CAC3C,MAAMs2D,EAAO1uC,EAAK8nO,iBAAiB3c,GACnCnnL,EAAWx5B,EAAIw5B,SAAS0K,EAAKb,aACzB7J,EAAWysC,GAAUzsC,EAAW+kF,IAC5B42I,IAAex0C,GACfzsB,EAAM7rN,KAAKysR,sBAAsB5pQ,EAAKmpQ,0BAA0B7+P,EAAMmrN,GAASnrN,EAAKu/P,gBAAgBp0C,EAAQzlM,EAAGC,EAAGxyC,KAAK6xO,KAAMtvN,EAAK27O,kBAClItoH,EAAc/kF,EACdtuC,EAAKgqQ,YAAc1/P,EACnBtK,EAAKkqQ,cAAgBz0C,QAOzC,MAAMz2O,EAAOghB,EAAK27O,aACZquB,EAAchqQ,EAAKgqQ,YACnBE,EAAgBlqQ,EAAKkqQ,cACrB/uF,EAAU8uF,IAAeC,EAM/B,GALIH,GAAY5uF,GACZ4uF,EAASxzC,YAAY0zC,EAAY,CAC7BjrR,KAAM,mBAGVgrR,EAAa,CACb,IAAK7uF,EACD,OAEJ6uF,EAAYp2C,UAAUs2C,EAAe,CACjClrR,KAAM,mBAEV6qP,EAAWmgC,EAAYH,gBAAgBK,EAAel6O,EAAGC,EAAGxyC,KAAK6xO,KAAMtwO,QAGvE6qP,EAAW,CAAE75M,IAAGC,KAEpBxyC,KAAK6xO,KAAK6qC,YAAYn7Q,EAAM6qP,EAAU,GAAIzuP,OAAO+rD,OAAO/rD,OAAO+rD,OAAO,GAAInnC,EAAK5iB,SAAU,CAAEg5P,IAAI,KAEnG,iBAAiBp2O,GAGb,MAAMgqQ,EAAchqQ,EAAKgqQ,YACnBE,EAAgBlqQ,EAAKkqQ,cACvBF,GAAeE,IACfF,EAAYzzC,YAAY2zC,EAAe,CACnClrR,KAAM,mBAEVghB,EAAKypQ,cAAgBO,EAAYL,WAAWO,IAEhDlqQ,EAAKgqQ,YAAc,KACnBhqQ,EAAKkqQ,cAAgB,KAEzB,gBAAgBlqQ,GAERviB,KAAKurN,MAAM5rN,QAAQ+sR,UAAU3vI,SAAW/8I,KAAK6xO,KAAK+iC,iBAElDryP,EAAKu2J,OAAS,MAGtB,mBAAmBv2J,GACf,OAAQA,EAAKkpQ,gBACT,IAAK,SACDzrR,KAAK6xO,KAAKj0N,OAAO,CAAE+6O,IAAI,IACvB,MACJ,IAAK,SACL,QACI34P,KAAK6xO,KAAKrvN,KAAKD,EAAK27O,aAAc37O,EAAKipQ,gBAAiB,CACpD7yB,IAAI,KAKpB,sBAAsBp2O,EAAM1U,GACxB,MAAMqwP,EAAe37O,EAAK27O,aACpBstB,EAAkBjpQ,EAAKipQ,gBACvBmB,EAAkB3sR,KAAK6xO,KAAKqsB,GAElC,GADgByuB,IAAoB,GAAKlN,eAAe+L,EAAiBmB,GAC5D,CACT,MAAMphE,EAAQvrN,KAAKurN,MACbtrK,EAAWurO,EACXoB,EAAe3sO,EAAS4xL,KACxBtmB,EAAM47D,YAAYlnO,EAAS4xL,MAC3B,KACAg7C,EAAe5sO,EAAS2yL,KACxBk6C,EAAeF,EACfrhE,EAAMsjD,eAAe+d,GACrB,KACAG,EAAgBH,GAAgBrqQ,EAAK+oQ,UACrC,KACA,GAAM/sR,OAAOitR,GAAiBz/N,SAC9B/mB,EAAU2nP,EACVK,EAAchoP,EAAQ6sM,KAAOtmB,EAAM47D,YAAYniP,EAAQ6sM,MAAQ,KAC/Do7C,EAAcjoP,EAAQ4tM,KACtBq5C,EAAce,EAAczhE,EAAMsjD,eAAeme,GAAe,KAChEtyJ,EAAesyJ,EACf,KACA,GAAMzuR,OAAOouR,GAAiB5gO,SACpC/rD,KAAK4e,OAAO,iBAAkB,CAC1B/Q,IACA++Q,eACAC,eACAC,eACAC,gBACAC,cACAf,cACAgB,cACAvyJ,eACAwyJ,eAAgB3qQ,EAAKgpQ,cACrBS,cAAezpQ,EAAKypQ,cACpBpyN,KAAM55D,KAAK6xO,KACXhlN,KAAM7sB,KACNuB,KAAM28P,EACN1pN,MAAOjyB,EAAK+oQ,aAIxB,0BAA0B/oQ,GACtB,MAAMgpM,EAAQvrN,KAAKurN,MACb4mD,EAAQ5mD,EAAMjyI,MAAM6zM,WAC1B5qQ,EAAK6qQ,OAAS,GACd,IAAK,IAAInwR,EAAI,EAAG25D,EAAKu7M,EAAMxwQ,OAAQ1E,EAAI25D,EAAI35D,GAAK,EAAG,CAC/C,MAAM4vB,EAAO0+L,EAAM39F,SAASihJ,eAAesD,EAAMl1Q,IACjD,IAAK4vB,EACD,SAEJ,MAAMwgQ,EAAUnsR,MAAMrC,UAAUyE,MAAMlG,KAAKyvB,EAAKiF,UAAU7iB,iBAAiB,aAC7B,UAA1C4d,EAAKiF,UAAU7sB,aAAa,WAC5BooR,EAAQ7qR,KAAKqqB,EAAKiF,WAEtB,MAAMw7P,EAAmBD,EAAQ77Q,OAAQwmO,GAAWzsB,EAAM7rN,KAAKysR,sBAAsB5pQ,EAAKmpQ,0BAA0B7+P,EAAMmrN,GAASnrN,EAAKu/P,gBAAgBp0C,EAAQz1N,EAAKgwB,EAAGhwB,EAAKiwB,EAAGxyC,KAAK6xO,KAAMtvN,EAAK27O,gBAChM,GAAIovB,EAAiB3rR,OAAS,EAAG,CAE7B,IAAK,IAAIuF,EAAI,EAAG4hL,EAAKwkG,EAAiB3rR,OAAQuF,EAAI4hL,EAAI5hL,GAAK,EACvD2lB,EAAKspN,UAAUm3C,EAAiBpmR,GAAI,CAAE3F,KAAM,oBAGhDsrB,EAAKspN,UAAU,KAAM,CAAE50O,KAAM,kBAC7BghB,EAAK6qQ,OAAOvgQ,EAAKglN,KAAKrjO,IAAM8+Q,IAIxC,4BAA4B/qQ,GACxB,MAAM6qQ,EAAS7qQ,EAAK6qQ,QAAU,GAC9BzvR,OAAOyR,KAAKg+Q,GAAQjiP,QAAS38B,IACzB,MAAMqe,EAAO7sB,KAAKurN,MAAM39F,SAASihJ,eAAergQ,GAChD,GAAIqe,EAAM,CACUugQ,EAAO5+Q,GACf28B,QAAS6sM,IACbnrN,EAAKisN,YAAYd,EAAQ,CAAEz2O,KAAM,sBAErCsrB,EAAKisN,YAAY,KAAM,CAAEv3O,KAAM,qBAGvCghB,EAAK6qQ,OAAS,KAElB,uBAAuBv/Q,EAAG0kC,EAAGC,GACzB,IAAKxyC,KAAK41P,IAAI,oBAEV,YADA51P,KAAKsqR,yBAAyBz8Q,EAAG0kC,EAAGC,GAGxC,MACMjxC,EADOsM,EAAEnG,OACGzC,aAAa,iBACzBsd,EAAOviB,KAAK8+P,yBAAyBv9P,EAAM,CAAEgxC,IAAGC,MACtDxyC,KAAKwrP,aAAa39O,EAAG0U,GAEzB,cAAc1U,EAAG0kC,EAAGC,GAChB,MAAMjwB,EAAOviB,KAAK0rP,aAAa79O,GAC3B7N,KAAKurN,MAAM5rN,QAAQ21P,WAAW8I,KAC9Bp+P,KAAKutR,cAAch7O,EAAGC,EAAGjwB,GAGzBviB,KAAKwtR,kBAAkBxtR,KAAKu2P,eAAe1oP,GAAI0kC,EAAGC,EAAGjwB,GAG7D,sBAAsB1U,EAAG0kC,EAAGC,GACxB,MAAM+4K,EAAQvrN,KAAKurN,MACbhpM,EAAOviB,KAAK0rP,aAAa79O,GAC3B09M,EAAM5rN,QAAQ21P,WAAW8I,KACzBp+P,KAAKytR,iBAAiBlrQ,GAGtBviB,KAAK0tR,iBAAiBnrQ,EAAMgwB,EAAGC,GAErB+4K,EAAM7rN,KAAKiuR,aAAa3tR,KAAK6xO,KAAMtvN,EAAK27O,aAAc37O,EAAKipQ,kBAErExrR,KAAK4tR,gBAAgBrrQ,GACrBviB,KAAK6tR,sBAAsBtrQ,EAAM1U,IAIjC7N,KAAK8tR,mBAAmBvrQ,GAE5BviB,KAAK+tR,uBAAuBxrQ,GAKhC,mBAAmB1U,EAAG0kC,EAAGC,GACrB,GAAIxyC,KAAK41P,IAAI,oBAAqB,CAC9B,MAAMluP,EAASmG,EAAE+c,cACXlpB,EAAQgyB,SAAShsB,EAAOzC,aAAa,cAAe,IACpD+oR,EAAgBhuR,KAAKiuR,sBAAsBvsR,GAC3CgmR,EAAoB1nR,KAAKkuR,qBAAqBxsR,GAC9CimR,EAA2B3nR,KAAK+nR,8BAChCC,EAAehoR,KAAKioR,uBAAuBP,EAAmBC,GACpE3nR,KAAKwrP,aAAa39O,EAAG,CACjBnM,QACAssR,gBACAhG,eACAj/P,iBAAiB,EACjBq4B,OAAQ,oBAKZphD,KAAKwrP,aAAa39O,EAAG,CAAEkb,iBAAiB,IAE5C/oB,KAAKurN,MAAM1+L,KAAKshQ,mBAAmBtgR,EAAG7N,MAE1C,UAAU6N,EAAG0kC,EAAGC,GACZ,MAAMjwB,EAAOviB,KAAK0rP,aAAa79O,GACzBugR,EAAcpuR,KAAK6xO,KAAK41C,WAAWllQ,EAAK7gB,OACxCq2M,EAAQ,EAAU5xM,MAAM,GAAIioR,EAAa,CAC3C57P,SAAUxyB,KAAKkoR,iBAAiB31O,EAAGC,EAAGjwB,EAAKyrQ,cAAezrQ,EAAKylQ,gBAEnEhoR,KAAK6xO,KAAKw8C,WAAW9rQ,EAAK7gB,MAAOq2M,GAGrC,kBAAkBlqM,EAAG0kC,EAAGC,IAGxB,mBAAmB3kC,EAAG0kC,EAAGC,GACrB,IAAKxyC,KAAK41P,IAAI,iBAEV,YADA51P,KAAKsqR,yBAAyBz8Q,EAAG0kC,EAAGC,GAKxC,MAAM9wC,EAAQ1B,KAAKsuR,UAAU,CAAE/7O,IAAGC,KAAK,CAAEmmN,IAAI,IAC7C34P,KAAKwrP,aAAa39O,EAAG,CACjBnM,QACA0/C,OAAQ,gBAGhB,qBAAqBvzC,EAAG0kC,EAAGC,GACvB,IAAKxyC,KAAK41P,IAAI,mBAEV,YADA51P,KAAKsqR,yBAAyBz8Q,EAAG0kC,EAAGC,GAGxC,MAAM9qC,EAASmG,EAAEnG,OACXhG,EAAQgyB,SAAShsB,EAAOzC,aAAa,OAAQ,IACnDjF,KAAK6xO,KAAKmpB,eAAet5P,GAE7B,oBAAoBmM,EAAG0kC,EAAGC,GACtB,IAAKxyC,KAAK41P,IAAI,iBAEV,YADA51P,KAAKsqR,yBAAyBz8Q,EAAG0kC,EAAGC,GAGxC,MAAM9qC,EAASmG,EAAEnG,OACXhG,EAAQgyB,SAAShsB,EAAOzC,aAAa,OAAQ,IACnDjF,KAAKwrP,aAAa39O,EAAG,CACjBnM,QACA0/C,OAAQ,gBAGhB,WAAWvzC,EAAG0kC,EAAGC,GACb,MAAMjwB,EAAOviB,KAAK0rP,aAAa79O,GAC/B7N,KAAK6xO,KAAKuoB,YAAY73O,EAAK7gB,MAAO,CAAE6wC,IAAGC,KAAK,CAAEmmN,IAAI,IAGtD,mBAAmB9qP,EAAG0kC,EAAGC,MAElBqtO,GAsBR,KAAa,GAAW,KArBd5hR,YAAc,MAAM4hR,GAASriR,KAoBtCqiR,GAAStrC,WAnBT,SAAoBr+K,GAChB,GAAgB,MAAZA,EACA,OAAO,EAEX,GAAIA,aAAoB2pN,GACpB,OAAO,EAEX,MAAMjuQ,EAAMskD,EAASl4D,OAAOC,aACtB4uB,EAAOqpC,EACb,OAAY,MAAPtkD,GAAeA,IAAQiuQ,GAAS5hR,cACN,mBAApB4uB,EAAKmoO,YACe,mBAApBnoO,EAAK0nN,YACkB,mBAAvB1nN,EAAKgqO,eACW,mBAAhBhqO,EAAK4+B,QACkB,mBAAvB5+B,EAAK8nN,eAOxB,GAAShyK,OAAO,CACZkpL,cAAc,EACdrrG,SAAU,EACV0xG,UAAW,CAAC,SAAU,SAAU,UAChC5yM,QAAS,CACLzyB,KAAM,CAAC,UACPywG,OAAQ,CAAC,UACT1tH,MAAO,CAAC,UACRmU,OAAQ,CAAC,SAAU,UACnBrc,OAAQ,CAAC,SAAU,UACnB29Q,OAAQ,CAAC,UACT39K,UAAW,CAAC,UACZ0qJ,OAAQ,CAAC,UACTmrB,aAAc,CAAC,UACfnkB,SAAU,CAAC,WAAY,UACvBopB,aAAc,CAAC,YACfP,WAAY,CAAC,SACbtsB,MAAO,CAAC,WAEZkxB,YAAa,IACbC,WAAY,IACZH,YAAa,GACbvE,aAAa,EACb2E,kBAAmB,GACnBwH,eAAgB,KAEpB,GAAS76C,SAASn9F,SAAS,OAAQ,IAAU,GCnhEtC,MAAM,WAAiB,GAC1B,cACI53D,SAASl4E,WACTzG,KAAKwwP,aAAe,KACpBxwP,KAAKqtP,cAAgB,KACrBrtP,KAAKwuR,iBAAmB,WACxBxuR,KAAKyuR,kBAAoB,YACzBzuR,KAAK0uR,kBAAoB,GAAO//B,gBAChC3uP,KAAK2uR,uBAAyB,GAAO//B,qBACrC5uP,KAAK4uR,2BAA6B,GAAOlgC,yBACzC1uP,KAAK6uR,WAAa,GAGtB/wR,IAAKE,OAAOC,eACR,OAAO,GAASA,YAEpB,wBACI,MAAM0tF,EAAY,CACdhN,MAAM60K,wBACNxzP,KAAKmzP,gBAAgB,SAKzB,OAHKnzP,KAAK41P,IAAI,gBACVjqK,EAAUnpF,KAAKxC,KAAKmzP,gBAAgB,mBAEjCxnK,EAAU38E,KAAK,KAE1B,gBAAgBnB,GACZ,MAAMnG,EAASmG,EAAEnG,OACjB,GAAIA,EAAO4sF,aAAa,UAAW,CAE/B,MAAMljF,EAAYpR,KAAKmzP,gBAAgB,sBACnCnzP,KAAK41P,IAAI,qBACT,EAAIr4N,YAAY71B,EAAQ0J,GAGxB,EAAI8rB,SAASx1B,EAAQ0J,OAGxB,CAED,MAAMA,EAAYpR,KAAKmzP,gBAAgB,kBACnCnzP,KAAK41P,IAAI,eACT51P,KAAKu9B,YAAYnsB,GAGjBpR,KAAKk9B,SAAS9rB,IAI1B,aACI,OAAO,EAEX,cAAc6L,EAAMtd,EAAU,IAC1B,IAAIuG,EAAM+W,EA2BV,OA1BIjd,KAAK0zP,UAAUxtP,EAAK,WACpBlG,KAAK8uR,cACL9uR,KAAK+uR,mBAEL/uR,KAAK0zP,UAAUxtP,EAAK,WACpBlG,KAAKb,SACL+G,EAAMlG,KAAK2zP,aAAaztP,EAAK,CACzB,SACA,SACA,SACA,YACA,SACA,QACA,YAIJA,EAAMlG,KAAKqgR,aAAan6Q,EAAK,SAAU,IAAMlG,KAAKyvH,OAAO9vH,GAAU,UACnEuG,EAAMlG,KAAKqgR,aAAan6Q,EAAK,SAAU,IAAMlG,KAAKyrD,SAElD2rL,GAAOG,eAAiB,QAAU,MAClCrxO,EAAMlG,KAAKqgR,aAAan6Q,EAAK,YAAa,IAAMlG,KAAKozD,aACrDltD,EAAMlG,KAAKqgR,aAAan6Q,EAAK,SAAU,IAAMlG,KAAKuzD,UAClDrtD,EAAMlG,KAAKqgR,aAAan6Q,EAAK,QAAS,IAAMlG,KAAKgvR,eACjD9oR,EAAMlG,KAAKqgR,aAAan6Q,EAAK,QAAS,IAAMlG,KAAKwgR,gBAE9Ct6Q,EAEX,OAAO28Q,GACH7iR,KAAK8iR,aAED1rC,GAAOG,gBACPv3O,KAAK8uR,cAET,MAAMnqR,EAAO3E,KAAK6xO,KACZj1L,EAAOj4C,EAAKi0I,UACZhpI,EAAQjL,EAAKiuQ,WACnB5yQ,KAAK8nF,YAAY9nF,KAAK8xB,UAAWliB,EAAO,CACpCA,MAAOizQ,IAAiBjzQ,EAAQ,KAAOizQ,EACvC/wB,SAAU,IAAI,GAAU,EAAG,EAAGl1M,EAAKvrB,MAAOurB,EAAKnpB,QAC/C9f,UAAW3T,KAAK2T,UAChB68O,aAAcxwP,KAAKwwP,aACnBnD,cAAertP,KAAKqtP,gBAEpBjW,GAAOG,gBACPv3O,KAAKgvR,cAGb,eACI,MAAM1xJ,EAASt9H,KAAK6xO,KAAKv0G,OACzB,GAAIA,EACA,MAAsB,iBAAXA,EACAt9H,KAAKihR,mBAAmB3jJ,GAE5Bt9H,KAAKkhR,iBAAiB5jJ,GAEjC,MAAM,IAAIl+G,UAAU,wBAExB,iBAAiBk+G,GACb,MAAMp3H,EAAMlG,KAAKutP,gBAAgBjwH,EAAQt9H,KAAK8xB,WACxCxJ,EAAOriB,GAAU/E,MAAMD,QAAQgF,GAASA,EAAM,GAAKA,EACzDjG,KAAK2T,UAAYzN,EAAIyN,UACrB3T,KAAKqtP,cAAgB/kO,EAAItoB,KAAK2T,UAAU3T,KAAKyuR,oBAC7CzuR,KAAKwwP,aAAeloO,EAAItoB,KAAK2T,UAAU3T,KAAKwuR,mBAC5CxuR,KAAK8xB,UAAU1sB,YAAYc,EAAIwhB,UAEnC,mBAAmB41G,GACf,EAAIvtG,OAAO/vB,KAAK8xB,UAAW,GAAOuqG,QAAQ,GAAOgB,cAAcC,KAC/Dt9H,KAAKqtP,cAAgB,EAAI7iJ,QAAQxqG,KAAK8xB,UAAW,IAAI9xB,KAAKyuR,mBAC1DzuR,KAAKwwP,aAAe,EAAIhmJ,QAAQxqG,KAAK8xB,UAAW,IAAI9xB,KAAKwuR,kBACzDxuR,KAAK2T,UAAY,GACb3T,KAAKizP,eACLjzP,KAAK2T,UAAU3T,KAAKizP,cAAgBjzP,KAAK8xB,WAGjD,SAoBI,OAnBA9xB,KAAK6d,QACL7d,KAAKiuP,eACDjuP,KAAKwwP,cAGLxwP,KAAKyrD,SAETzrD,KAAKyvH,SACDzvH,KAAKqtP,eACLrtP,KAAKuzD,SACLvzD,KAAKozD,aAGLpzD,KAAK4gI,kBAEJw2G,GAAOG,gBACRv3O,KAAKgvR,cAEThvR,KAAKwgR,cACExgR,KAEX,OAAOy6B,EAAM,IACT,GAAIz6B,KAAKwwP,aACL,OAAOxwP,KAAKivR,WAAWx0P,GAEvBz6B,KAAK6xO,KAAK6a,YACV1sP,KAAKuzD,SAETvzD,KAAKyrD,SAET,YACI,GAAIzrD,KAAKqtP,cACL,OAAOrtP,KAAKkvR,oBAEhBlvR,KAAK4gI,kBAET,SACI,GAAI5gI,KAAKqtP,cAKL,OAJArtP,KAAKmvR,sBAGLnvR,KAAKyrD,SAGTzrD,KAAK4gI,kBAET,uBACI,MAAMpuG,EAAWxyB,KAAK6xO,KAAKgjB,cAC3B,MAAO,aAAariO,EAAS+f,KAAK/f,EAASggB,KAE/C,oBACI,MAAMkiB,EAAQ10D,KAAK6xO,KAAK6a,WACxB,GAAIh4L,EAAO,CACP,MAAM9X,EAAO58C,KAAK6xO,KAAKj5F,UACvB,MAAO,UAAUlkF,KAAS9X,EAAKvrB,MAAQ,KAAKurB,EAAKnpB,OAAS,MAGlE,kBACI,IAAI+f,EAAYxzC,KAAKovR,uBACrB,MAAMC,EAAMrvR,KAAKsvR,oBACbD,IACA77O,GAAa,IAAI67O,GAErBrvR,KAAK8xB,UAAU5sB,aAAa,YAAasuC,GAE7C,iBACI,GAA0B,MAAtBxzC,KAAKqtP,cAAuB,CAC5B,MAAM75M,EAAYxzC,KAAKsvR,oBACN,MAAb97O,EACAxzC,KAAKqtP,cAAcnoP,aAAa,YAAasuC,GAG7CxzC,KAAKqtP,cAAcl+O,gBAAgB,cAI/C,oBACInP,KAAK8xB,UAAU5sB,aAAa,YAAalF,KAAKovR,wBAElD,WAAW30P,EAAM,IACb,MAAMo3M,EAAO7xO,KAAK6xO,KACZj1L,EAAOi1L,EAAKj5F,UACZlkF,EAAQm9K,EAAK6a,WACb8D,EAAexwP,KAAKwwP,aAM1B,IAAItzH,GAAY,EACZszH,EAAa/hP,qBAAqB,QAAQ9M,OAAS,IAInDu7H,GAAY,GAEhB,MAAMqyJ,EAAe,EAAI3yJ,QAAQ4zH,EAAc,CAAEtzH,cAG3CxpE,EAAK9W,EAAKvrB,OAASk+P,EAAal+P,OAAS,GACzCsiC,EAAK/W,EAAKnpB,QAAU87P,EAAa97P,QAAU,GACjD+8N,EAAatrP,aAAa,YAAa,SAASwuD,KAAMC,MAStD,MAAM05L,EAAgBrtP,KAAKqtP,cAC3B,GAAqB,MAAjBA,EAAuB,CACvB,MAAM75M,EAAY65M,EAAcpoP,aAAa,aAC7C,GAAIuuC,EAAW,CACX65M,EAAcnoP,aAAa,YAAa,GAAGsuC,aAAqBkhB,KAAS9X,EAAKvrB,MAAQ,KAAKurB,EAAKnpB,OAAS,MACzG,MAAM+7P,EAAgB,EAAI5yJ,QAAQ4zH,EAAc,CAC5C9oP,OAAQ1H,KAAKurN,MAAM1+L,KAAKohG,QAG5B4jH,EAAKrvN,KAAK,WAAY,CAAE+vB,EAAGi9O,EAAcj9O,EAAGC,EAAGg9O,EAAch9O,GAAK70C,OAAO+rD,OAAO,CAAEu5B,SAAS,GAAQxoD,IACnGz6B,KAAKozD,YACLpzD,KAAKuzD,UAKbvzD,KAAKyrD,SAGT,aAAawpM,EAAQxvP,GACjB,MAAM4J,EAAQ4lP,EAASj1P,KAAK6uR,WAAW55B,GAAU,KACjD,IAAK5lP,EACD,OAAO,KAEX,MAAMogR,EAAWpgR,EAAMqgR,mBACjBC,EAAgBtgR,EAAMugR,sBAAwB,GACpD,OAAO5vR,KAAKwqG,QAAQ/kG,EAAUgqR,EAAUE,GAE5C,kBACI3vR,KAAK+uR,kBAET,eACI/uR,KAAK8uR,cACL9uR,KAAK+uR,kBACL/uR,KAAKgvR,cAET,kBACIhvR,KAAK6uR,WAAa,GAEtB,cACIlxR,OAAOyR,KAAKpP,KAAK6uR,YAAY1jP,QAAS8pN,IAClC,MAAMl8O,EAAS/Y,KAAK6uR,WAAW55B,GAC/B,EAAIr3O,OAAO7E,EAAO82Q,eAG1B,cACI,MAAM/9P,EAAY9xB,KAAK8vR,oBAEjBC,EAAa,GACnBj+P,EAAUlkB,WAAWu9B,QAAS67B,IAC1B+oN,EAAWvtR,KAAKwkE,KAEpB,MAAMgpN,EAAgB,EAASnqO,QAAQ7lD,KAAK6xO,KAAKo+C,iBAAkB,UAG/DD,EAA2B,MAC3BA,EAA2B,KAAE7kP,QAASynM,IAClC,MAAMi9C,EAAc7vR,KAAKkwR,eAAet9C,GACxC9gN,EAAU/B,OAAO8/P,GACjBE,EAAWvtR,KAAKqtR,KAGxBlyR,OAAOyR,KAAK4gR,GAAe7kP,QAAS3sC,IAChC,GAVkB,SAUdA,EAAuB,CACvB,MAAMs6K,EAASplJ,SAASl1B,EAAK,IAC7BwB,KAAKmwR,YAAYH,EAAcxxR,GAAMs6K,EAAQi3G,MAGrD/vR,KAAKowR,cAET,oBACI,OAAOpwR,KAAKqtP,eAAiBrtP,KAAK8xB,UAEtC,YAAYglP,EAAOh+F,EAAQ5yF,GACvB,MAAMjgF,EAAQ6wQ,EAAMvwQ,IAAKxH,GAAMiB,KAAKkwR,eAAenxR,IAC/CmnF,EAAK4yF,IAAWA,EAAS,EACzB,EAAI5oJ,OAAOg2D,EAAKp+E,KAAKitB,IAAI+jJ,EAAQ,IAAK7yK,GAGtC,EAAI8pB,OAAO/vB,KAAK8vR,oBAAqB7pR,GAG7C,eAAe2sO,GACX,MAAM75N,EAAS/Y,KAAK6uR,WAAWj8C,EAAKpkO,IACpC,OAAIuK,EACOA,EAAO82Q,YAEX7vR,KAAKqwR,kBAAkBz9C,GAElC,kBAAkBA,GACd,IAAI09C,EAAe,GAAOriC,aAAajuP,KAAK0uP,0BAC5C,MAAMmhC,EAAcS,EAAa9pR,KACjC,GAAmB,MAAfqpR,EACA,MAAM,IAAI7sR,MAAM,kCAEpBstR,EAAe,GAAOriC,aAAajuP,KAAK2uP,cAAc/b,IACtD,MAAM88C,EAAqBY,EAAa9pR,KAClCopR,EAAuBU,EAAa38Q,UAC1C,GAA0B,MAAtB+7Q,EACA,MAAM,IAAI1sR,MAAM,wBAEpBhD,KAAKiwP,SAAS,CACVrd,KAAMA,EAAKpkO,GACX,aAAcokO,EAAKlxL,OACpBguO,GACHY,EAAe,GAAOriC,aAAajuP,KAAK4uP,mBAAmBhc,EAAK76B,QAChE,MAAMw4E,EAAmBD,EAAa9pR,KAChCgqR,EAAqBF,EAAa38Q,UACxC,GAAwB,MAApB48Q,EACA,MAAM,IAAIvtR,MAAM,8BAEpB,IAAI2sR,EACJ,GAAIC,GAAwBY,EAAoB,CAE5C,IAAK,MAAMhyR,KAAOgyR,EACd,GAAIZ,EAAqBpxR,IAAQA,IAAQwB,KAAKizP,aAC1C,MAAM,IAAIjwP,MAAM,yCAGxB2sR,EAAgBhyR,OAAO+rD,OAAO/rD,OAAO+rD,OAAO,GAAIkmO,GAAuBY,QAGvEb,EAAgBC,GAAwBY,EAyB5C,OAvBA,EAAItzP,SAAS2yP,EAAa,WAC1B,EAAI3yP,SAASwyP,EAAoB,gBACjC,EAAIxyP,SAASqzP,EAAkB,iBAC/BV,EAAYzqR,YAAYsqR,GACxBG,EAAYzqR,YAAYmrR,GACxBvwR,KAAK6uR,WAAWj8C,EAAKpkO,IAAM,CACvBqhR,cACAF,gBACAY,mBACAC,qBACAd,qBACAE,wBAEJ5vR,KAAKurN,MAAM7rN,KAAK+wR,eAAe,CAC3B79C,OACAjuO,KAAM3E,KAAK6xO,KACX//M,UAAW+9P,EACXl8Q,UAAWg8Q,EACXe,eAAgBH,EAChBlP,eAAgBmP,EAChBG,iBAAkBjB,EAClBkB,iBAAkBhB,IAEfC,EAEX,cAEI7vR,KAAK6wR,kBAEL,MAAM3iR,EAASlO,KAAK6xO,KAAKi/C,kBACzBnzR,OAAOyR,KAAKlB,GAAQi9B,QAASyiN,GAAc5tP,KAAK6wR,gBAAgBjjC,IAEpE,gBAAgBA,GACZ,MAAMryL,EAAO,GAAU0tC,SAASjpG,KAAK6xO,KAAKj5F,WACpCm4I,EAAU/wR,KAAK6xO,KAAKkoC,sBAAsBnsB,EAAWryL,GAC3D,IAAK,IAAIt+D,EAAI,EAAGyB,EAAIqyR,EAAQpvR,OAAQ1E,EAAIyB,EAAGzB,GAAK,EAAG,CAC/C,MAAM+zR,EAASD,EAAQ9zR,GACjBg4P,EAAS+7B,EAAO/7B,OAChBl8O,EAAS/Y,KAAK6uR,WAAW55B,IAAW,GACpCqiB,EAAa0Z,EAAO1Z,WAE1B,GADAt3Q,KAAKixR,mBAAmBl4Q,EAAO82Q,YAAavY,GACpB,MAApB0Z,EAAOxZ,UAAmB,CAC1B,MAAM73Q,EAAU,CACZgU,UAAWoF,EAAO42Q,eAAiB,IAEnCqB,EAAOzZ,WACP53Q,EAAQmyP,SAAW,GAAU7oJ,SAAS+nL,EAAOzZ,WAEjDv3Q,KAAK8nF,YAAY/uE,EAAO82Q,YAAamB,EAAOxZ,UAAW73Q,GAE3D,MAAM+3Q,EAAcsZ,EAAOtZ,YAC3B,GAAIA,IACA13Q,KAAKixR,mBAAmBl4Q,EAAOw3Q,iBAAkB7Y,IAAeJ,EAAW5iN,OAAS,IAChFgjN,EAAY9nQ,OAAO,CACnB,MAAMjQ,EAAU,CACZgU,UAAWoF,EAAOy3Q,oBAAsB,IAExCQ,EAAOvZ,YACP93Q,EAAQmyP,SAAW,GAAU7oJ,SAAS+nL,EAAOvZ,YAEjDz3Q,KAAK8nF,YAAY/uE,EAAOw3Q,iBAAkB7Y,EAAY9nQ,MAAOjQ,KAK7E,mBAAmB63H,EAASwiJ,EAAQkX,EAAe,GAC/C,MAAMx8N,EAAQslN,EAAOtlN,MACfliC,EAAWwnP,EAAOxnP,SAClB4kC,EAAS,EAAIgnE,kBACd7qE,OAAO29N,GACP99N,UAAU5gC,EAAS+f,GAAK,EAAG/f,EAASggB,GAAK,GACzC+gB,OAAOmB,GAAS,GACrB,EAAIlhB,UAAUgkF,EAASpgE,EAAQ,CAAEmlI,UAAU,IAE/C,yBACI,OAAOv8L,KAAK6xO,KAAK6c,0BAA4B1uP,KAAK4uR,2BAEtD,cAAch8C,GACV,OAAOA,EAAKt1G,QAAUt9H,KAAK6xO,KAAKs/C,YAAcnxR,KAAK0uR,kBAEvD,mBAAmB32E,GACf,OAAQA,EAAMz6E,QAAUt9H,KAAK6xO,KAAKu/C,iBAAmBpxR,KAAK2uR,uBAE9D,aAAa9gR,EAAG0kC,EAAGC,GACf,MAAM3lB,EAAO7sB,KACP2E,EAAOkoB,EAAKglN,KAElB,OAAS,MAALt/L,GAAkB,MAALC,EACN,CAAE3kC,IAAGgf,OAAMloB,OAAMktO,KAFfltO,GAIN,CAAEkJ,IAAG0kC,IAAGC,IAAG3lB,OAAMloB,OAAMktO,KAJjBltO,GAMjB,gBAAgBkJ,EAAG0kC,EAAGC,GAClBmsC,MAAMw8K,YAAYttP,EAAG0kC,EAAGC,GACxBxyC,KAAK4e,OAAO,iBAAkB5e,KAAKk2P,aAAaroP,EAAG0kC,EAAGC,IAE1D,gBAAgB3kC,EAAG0kC,EAAGC,GAClBmsC,MAAMogL,YAAYlxP,EAAG0kC,EAAGC,GACxBxyC,KAAK4e,OAAO,iBAAkB5e,KAAKk2P,aAAaroP,EAAG0kC,EAAGC,IAE1D,cAAc3kC,EAAG0kC,EAAGC,GAChBmsC,MAAMqgL,UAAUnxP,EAAG0kC,EAAGC,GACtBxyC,KAAK4e,OAAO,eAAgB5e,KAAKk2P,aAAaroP,EAAG0kC,EAAGC,IAExD,QAAQ3kC,EAAG0kC,EAAGC,GACVmsC,MAAM45K,QAAQ1qP,EAAG0kC,EAAGC,GACpBxyC,KAAK4e,OAAO,aAAc5e,KAAKk2P,aAAaroP,EAAG0kC,EAAGC,IAEtD,WAAW3kC,EAAG0kC,EAAGC,GACbmsC,MAAMqrM,WAAWn8Q,EAAG0kC,EAAGC,GACvBxyC,KAAK4e,OAAO,gBAAiB5e,KAAKk2P,aAAaroP,EAAG0kC,EAAGC,IAEzD,cAAc3kC,EAAG0kC,EAAGC,GAChBmsC,MAAMsrM,cAAcp8Q,EAAG0kC,EAAGC,GAC1BxyC,KAAK4e,OAAO,mBAAoB5e,KAAKk2P,aAAaroP,EAAG0kC,EAAGC,IAE5D,YAAY3kC,EAAG0kC,EAAGC,GACVxyC,KAAK2qB,qBAAqB9c,KAG9B7N,KAAKk6P,gBAAgBrsP,EAAG0kC,EAAGC,GAC3BxyC,KAAKqxR,kBAAkBxjR,EAAG0kC,EAAGC,IAEjC,YAAY3kC,EAAG0kC,EAAGC,GACd,MAAMjwB,EAAOviB,KAAK0rP,aAAa79O,GACzBuzC,EAAS7+B,EAAK6+B,OACpB,GAAe,WAAXA,EACAphD,KAAKsxR,WAAWzjR,EAAG0kC,EAAGC,OAErB,CACD,GAAe,SAAX4O,EAAmB,CACnB,MACMv0B,EADOtK,EACKi6O,YAAcx8P,KAChC6sB,EAAK0kQ,SAAS1jR,EAAG0kC,EAAGC,GACpB3lB,EAAKjO,OAAO,cAAe,CACvB/Q,IACA0kC,IACAC,IACA3lB,OACAglN,KAAMhlN,EAAKglN,KACXltO,KAAMkoB,EAAKglN,OAGnB7xO,KAAKq6P,gBAAgBxsP,EAAG0kC,EAAGC,GAE/BxyC,KAAKwrP,aAAa39O,EAAG0U,GAEzB,UAAU1U,EAAG0kC,EAAGC,GACZ,MAAMjwB,EAAOviB,KAAK0rP,aAAa79O,GACzBuzC,EAAS7+B,EAAK6+B,OACpB,GAAe,WAAXA,EACAphD,KAAKwxR,mBAAmB3jR,EAAG0kC,EAAGC,QAI9B,GADAxyC,KAAKy6P,cAAc5sP,EAAG0kC,EAAGC,GACV,SAAX4O,EAAmB,EACN7+B,EACKi6O,YAAcx8P,MAC3ByxR,iBAAiB5jR,EAAG0kC,EAAGC,GAGpC,MAAMwlM,EAASz1N,EAAKs6O,aAChB7kB,GACAh4O,KAAK0xR,cAAc7jR,EAAGmqO,EAAQzlM,EAAGC,GAErCxyC,KAAK06P,gBAAgB7sP,GAEzB,YAAYA,GACR8wE,MAAMqsM,YAAYn9Q,GAClB7N,KAAK4e,OAAO,iBAAkB5e,KAAKk2P,aAAaroP,IAEpD,WAAWA,GACP8wE,MAAMssM,WAAWp9Q,GACjB7N,KAAK4e,OAAO,gBAAiB5e,KAAKk2P,aAAaroP,IAEnD,aAAaA,GACT7N,KAAK2xR,gBAAgB9jR,GACrB8wE,MAAM+3K,aAAa7oP,GACnB7N,KAAK4e,OAAO,kBAAmB5e,KAAKk2P,aAAaroP,IAErD,aAAaA,GACT8wE,MAAM83K,aAAa5oP,GACnB7N,KAAK4e,OAAO,kBAAmB5e,KAAKk2P,aAAaroP,IAErD,aAAaA,EAAG0kC,EAAGC,EAAGjd,GAClBopD,MAAMusM,aAAar9Q,EAAG0kC,EAAGC,EAAGjd,GAC5Bv1B,KAAK4e,OAAO,kBAAmBjhB,OAAO+rD,OAAO,CAAEn0B,SAASv1B,KAAKk2P,aAAaroP,EAAG0kC,EAAGC,KAEpF,cAAc3kC,EAAGmqO,EAAQzlM,EAAGC,GACVxyC,KAAKurN,MAAM1+L,KAAK+kQ,mBAAmB/jR,GACrC7N,KAAKurN,MAAM5rN,QAAQkyR,gBAG/B7xR,KAAK4e,OAAO,oBAAqBjhB,OAAO+rD,OAAO,CAAEsuL,UAAUh4O,KAAKk2P,aAAaroP,EAAG0kC,EAAGC,KAEvF,iBAAiB3kC,EAAGmqO,EAAQzlM,EAAGC,GAC3BxyC,KAAK4e,OAAO,uBAAwBjhB,OAAO+rD,OAAO,CAAEsuL,UAAUh4O,KAAKk2P,aAAaroP,EAAG0kC,EAAGC,KAE1F,oBAAoB3kC,EAAGmqO,EAAQzlM,EAAGC,GAC9BxyC,KAAK4e,OAAO,0BAA2BjhB,OAAO+rD,OAAO,CAAEsuL,UAAUh4O,KAAKk2P,aAAaroP,EAAG0kC,EAAGC,KAE7F,kBAAkB3kC,EAAGmqO,EAAQzlM,EAAGC,GAC5BxyC,KAAK8xR,oBAAoBjkR,EAAG0kC,EAAGC,GAEnC,cAAc3kC,EAAGrQ,EAAM+0C,EAAGC,GACtBxyC,KAAK4e,OAAO,mBAAoBjhB,OAAO+rD,OAAO,CAAElsD,QAAQwC,KAAKk2P,aAAaroP,EAAG0kC,EAAGC,KAChFmsC,MAAMwsM,cAAct9Q,EAAGrQ,EAAM+0C,EAAGC,GAEpC,iBAAiB3kC,GA0Bb,MACMlJ,EADO3E,KAAK0rP,aAAa79O,GACbgkO,MAAQ7xO,KAAK6xO,KACzBhlN,EAAO7sB,KAAKurN,MAAMsjD,eAAelqQ,GACjCotR,EAAa/xR,KAAKurN,MAAM11J,WAAWhoD,EAAEof,QAASpf,EAAEqf,SACtDltB,KAAK4e,OAAO,aAAc,CACtB/Q,IACAlJ,OACAkoB,OACAglN,KAAMltO,EACN4tC,EAAGw/O,EAAWx/O,EACdC,EAAGu/O,EAAWv/O,EACdq3N,cAAellQ,EAAKwuQ,cAG5B,iBAAiBtlQ,EAAG0U,GAChB,MAAMsvN,EAAOtvN,EAAKsvN,MAAQ7xO,KAAK6xO,KACzBtmB,EAAQhpM,EAAKgpM,OAASvrN,KAAKurN,MAC3B5rN,EAAU4rN,EAAM5rN,QAAQ+sR,UACxBsF,EAAaryR,EAAQqyR,WAC3B,IAAI3hG,EAAmC,mBAAf2hG,EAClB,EAAY50R,KAAK40R,EAAYzmE,EAAO,CAClC1+L,KAAM7sB,KACN2E,KAAM3E,KAAK6xO,OACZrgO,OAAQlU,GACC,GAAK42Q,OAAO52Q,IAChB0C,KAAK6xO,KAAKrjO,KAAOlR,EAAEkR,KAClBlR,EAAEq2Q,eAAe3zQ,KAAK6xO,OAE7BtmB,EAAMjyI,MAAM24M,kBAAkBpgD,EAAM,CAClC7oD,GAAIgpG,IAGRryR,EAAQuyR,YACR7hG,EAAaA,EAAW/sL,OAAO,IAEnC,IAAI6uR,EAAmB,KACvB,MAAMC,EAAoB7vQ,EAAK8vQ,mBACzBC,EAAmB3yR,EAAQssM,SACjC,IAAK,IAAIhvM,EAAIozL,EAAW1uL,OAAS,EAAG1E,GAAK,EAAGA,GAAK,EAAG,CAChD,MAAM4zL,EAAYR,EAAWpzL,GAC7B,GAAIm1R,GAAqBA,EAAkBvgD,KAAKrjO,KAAOqiL,EAAUriL,GAAI,CAEjE2jR,EAAmBC,EACnB,MAEC,CACD,MAAMvlQ,EAAOgkK,EAAUw2F,SAAS97D,GAChC,GAAI,EAAYnuN,KAAKk1R,EAAkB/mE,EAAO,CAC1CvkJ,MAAOhnE,KAAK6xO,KACZ1xO,OAAQ0sB,EAAKglN,KACb0gD,UAAWvyR,KACXwyR,WAAY3lQ,IACZ,CAEAslQ,EAAmBtlQ,EACnB,QAIZ7sB,KAAKyyR,eAAelwQ,GAChB4vQ,GACAA,EAAiBh8C,UAAU,KAAM,CAAE50O,KAAM,cAE7CghB,EAAK8vQ,mBAAqBF,EAC1B,MAAMJ,EAAaxmE,EAAM11J,WAAWhoD,EAAEof,QAASpf,EAAEqf,SACjDltB,KAAK4e,OAAO,iBAAkB,CAC1B/Q,IACAgkO,OACAltO,KAAMktO,EACNhlN,KAAM0+L,EAAMsjD,eAAeh9B,GAC3Bt/L,EAAGw/O,EAAWx/O,EACdC,EAAGu/O,EAAWv/O,EACdq3N,cAAeh4B,EAAKshC,YACpBuf,gBAAiBP,EAAmBA,EAAiBtgD,KAAO,OAGpE,eAAetvN,GACX,MAAMowQ,EAAgBpwQ,EAAK8vQ,mBACvBM,IACAA,EAAc75C,YAAY,KAAM,CAAEv3O,KAAM,cACxCghB,EAAK8vQ,mBAAqB,MAGlC,kBAAkBxkR,EAAG0U,GACjB,MAAMsvN,EAAOtvN,EAAKsvN,MAAQ7xO,KAAK6xO,KACzBtmB,EAAQhpM,EAAKgpM,OAASvrN,KAAKurN,MAC3B1+L,EAAO0+L,EAAMsjD,eAAeh9B,GAC5B1xO,EAAS0xO,EAAKshC,YACdwf,EAAgBpwQ,EAAK8vQ,mBACvBM,GAEAA,EAAc75C,YAAY,KAAM,CAAEv3O,KAAM,cACxCghB,EAAK8vQ,mBAAqB,KACZ,MAAVlyR,GAAkBA,EAAOqO,KAAOmkR,EAAc9gD,KAAKrjO,IACnDmkR,EAAc9gD,KAAKwiC,YAAYxiC,OAAM3vO,EAAW,CAAEy2P,IAAI,KAGrDx4P,GACLA,EAAO40Q,QAAQljC,EAAM,CAAE8mB,IAAI,IAE/BptC,EAAMjyI,MAAMqhM,kBAAkB9oC,EAAM,CAAElqO,MAAM,IAAQwjC,QAASyuB,IACzDA,EAAKg7M,aAAa,CAAEjc,IAAI,MAE5B,MAAMo5B,EAAaxmE,EAAM11J,WAAWhoD,EAAEof,QAASpf,EAAEqf,SAC7CL,GACAA,EAAKjO,OAAO,gBAAiB,CACzB/Q,IACAgkO,OACAt/L,EAAGw/O,EAAWx/O,EACdC,EAAGu/O,EAAWv/O,EACd7tC,KAAMktO,EACNhlN,KAAM0+L,EAAMsjD,eAAeh9B,GAC3B+gD,eAAgBzyR,EAChB0pQ,cAAeh4B,EAAKshC,cAIhC,mBACI,IAAIthC,EAAO7xO,KAAK6xO,KACZhlN,EAAO7sB,KACX,KAAO6sB,IACCglN,EAAKptK,UADA,CAIT,IAAKotK,EAAKghD,aAAehmQ,EAAK+oO,IAAI,0BAC9B,OAAO/oO,EAEXglN,EAAOA,EAAKshC,YACZtmP,EAAO7sB,KAAKurN,MAAM39F,SAASihJ,eAAeh9B,GAE9C,OAAO,KAEX,oBAAoBhkO,EAAG0kC,EAAGC,GACtB,IAAKxyC,KAAK41P,IAAI,qBACV,OAEJ/nP,EAAEkb,kBACF,MAAMivN,EAASnqO,EAAE+c,cACX2gM,EAAQvrN,KAAKurN,MACnBvrN,KAAKwrP,aAAa39O,EAAG,CACjBgvP,aAAc7kB,IAEdzsB,EAAM7rN,KAAKozR,eAAe9yR,KAAMg4O,EAAQnqO,IACpC09M,EAAM5rN,QAAQozR,iBAAmB,GACjC/yR,KAAKgzR,iBAAiBnlR,EAAGmqO,EAAQzlM,EAAGC,GAExCxyC,KAAKwrP,aAAa39O,EAAG,CACjBuzC,OAAQ,WAEZphD,KAAK+oB,gBAAgBlb,IAGrB7N,KAAKm7P,YAAYttP,EAAG0kC,EAAGC,GAE3B+4K,EAAM1+L,KAAKshQ,mBAAmBtgR,EAAG7N,MAErC,iBAAiB6N,EAAGmqO,EAAQzlM,EAAGC,GAC3BxyC,KAAKurN,MAAMjyI,MAAM88K,WAAW,YAC5B,MAAMtkB,EAAW9xO,KAAKizR,qBAAqBj7C,EAAQzlM,EAAGC,GACtDs/L,EAASooB,gBAAgBrsP,EAAG0kC,EAAGC,GAC/Bs/L,EAAS0Z,aAAa39O,EAAGikO,EAASgtB,yBAAyB,SAAU,CACjEvsN,IACAC,IACA84O,WAAW,EACXG,eAAgB,YAEpBzrR,KAAKwrP,aAAa39O,EAAG,CAAEikO,aAE3B,qBAAqBkG,EAAQzlM,EAAGC,GAC5B,MAAM+4K,EAAQvrN,KAAKurN,MACbjyI,EAAQiyI,EAAMjyI,MACd1f,EAAO2xJ,EAAM7rN,KAAKwzR,eAAelzR,KAAMg4O,GAI7C,OAHAp+K,EAAKy8M,UAAU14Q,OAAO+rD,OAAO/rD,OAAO+rD,OAAO,GAAIkQ,EAAK08M,aAAct2Q,KAAKosR,gBAAgBp0C,EAAQzlM,EAAGC,EAAGonB,EAAM,YAC3GA,EAAK28M,UAAU54Q,OAAO+rD,OAAO/rD,OAAO+rD,OAAO,GAAIkQ,EAAK48M,aAAc,CAAEjkO,IAAGC,OACvEonB,EAAKq6M,MAAM36L,EAAO,CAAE33C,OAAO,EAAOg3N,IAAI,IAC/B/+L,EAAKytN,SAAS97D,GAEzB,WAAW19M,EAAG0kC,EAAGC,GACb,MAAMjwB,EAAOviB,KAAK0rP,aAAa79O,GACzBikO,EAAWvvN,EAAKuvN,SACtB,GAAIA,EACAA,EAASitB,YAAYlxP,EAAG0kC,EAAGC,GAC3BxyC,KAAKmzR,gBAAgBtlR,EAAEof,QAASpf,EAAEqf,aAEjC,CACD,MAAMq+L,EAAQvrN,KAAKurN,MACbwnE,EAAkBxnE,EAAM5rN,QAAQozR,gBAChCnoQ,EAAgB5qB,KAAKu2P,eAAe1oP,GACpCgvP,EAAet6O,EAAKs6O,aAE1B,GAAwB,YAApBk2B,GACA,GAAIl2B,IAAiBjyO,GACjBiyO,EAAaxyP,SAASugB,GACtB,YAMJ,GAAI2gM,EAAM1+L,KAAK+kQ,mBAAmB/jR,IAAMklR,EACpC,OAGR/yR,KAAKgzR,iBAAiBnlR,EAAGgvP,EAActqN,EAAGC,IAGlD,mBAAmB3kC,EAAG0kC,EAAGC,GACrB,MACMs/L,EADO9xO,KAAK2rP,UAAU99O,GACNikO,SAClBA,IACAA,EAASktB,UAAUnxP,EAAG0kC,EAAGC,GACzBxyC,KAAKurN,MAAMjyI,MAAM+8K,UAAU,aAGnC,yBAAyBxoP,EAAG0kC,EAAGC,GAC3BxyC,KAAK4e,OAAO,2BAA4B,CACpC/Q,IACA0kC,IACAC,IACA3lB,KAAM7sB,KACN6xO,KAAM7xO,KAAK6xO,KACXltO,KAAM3E,KAAK6xO,OAGnB,eAAer0O,EAAMqQ,EAAG0kC,EAAGC,EAAGq/L,GAC1B,IAAIsgC,EAAQ,CAACtgC,GACb,MAAMvqN,EAAYtnB,KAAKurN,MAAMjkM,UAAU8rQ,OACvC,GAAI9rQ,GAAaA,EAAU3nB,QAAQ0zR,QAAS,CACxC,MAAMC,EAAgBtzR,KAAKurN,MAAMgoE,mBAC7BD,EAAcp1O,SAAS2zL,KACvBsgC,EAAQmhB,EAAc9hR,OAAQlU,GAAMA,EAAEuvL,WAG9CslF,EAAMhnO,QAAS7tC,IACX0C,KAAK4e,OAAOphB,EAAM,CACdqQ,IACA0kC,IACAC,IACAq/L,KAAMv0O,EACNqH,KAAMrH,EACNuvB,KAAMvvB,EAAE+pR,SAASrnR,KAAKurN,WAIlC,kBAAkB19M,EAAG0kC,EAAGC,GACpB,MAAMgqN,EAAax8P,KAAKwzR,mBACxB,GAAkB,MAAdh3B,IAAuBA,EAAW5G,IAAI,eACtC,OAAO51P,KAAKsqR,yBAAyBz8Q,EAAG0kC,EAAGC,GAE/CxyC,KAAKwrP,aAAa39O,EAAG,CACjB2uP,aACAp7M,OAAQ,SAEZ,MAAM5uB,EAAW,GAAMj0B,OAAOi+P,EAAW3qB,KAAKgjB,eAC9C2H,EAAWhR,aAAa39O,EAAG,CACvBw9Q,QAAQ,EACRljP,OAAQ3V,EAASviB,KAAKsiC,EAAGC,GACzBumO,SAAU/4Q,KAAKurN,MAAM7rN,KAAK+zR,gBAAgBj3B,KAGlD,SAAS3uP,EAAG0kC,EAAGC,GACX,MAAM7tC,EAAO3E,KAAK6xO,KACZtmB,EAAQvrN,KAAKurN,MACblqG,EAAWkqG,EAAMmoE,cACjBnxQ,EAAOviB,KAAK0rP,aAAa79O,GACzBs6B,EAAS5lB,EAAK4lB,OACd4wO,EAAWx2P,EAAKw2P,SACjBx2P,EAAK8oQ,SACN9oQ,EAAK8oQ,QAAS,EACdrrR,KAAKk9B,SAAS,eACdl9B,KAAK2zR,eAAe,YAAa9lR,EAAG0kC,EAAGC,EAAGxyC,KAAK6xO,OAEnD7xO,KAAKmzR,gBAAgBtlR,EAAEof,QAASpf,EAAEqf,SAClC,MAAM0mQ,EAAO,GAAK/9N,WAAWtjB,EAAIpK,EAAOoK,EAAG8uE,GACrCwyK,EAAO,GAAKh+N,WAAWrjB,EAAIrK,EAAOqK,EAAG6uE,GAC3C18G,EAAK+zQ,YAAYkb,EAAMC,EAAM,CACzB9a,WACApxQ,MAAM,EACNgxP,IAAI,IAEJptC,EAAM5rN,QAAQ+sR,UAAU3vI,UACnBx6H,EAAKmqQ,YACN1sR,KAAK8zR,iBAAiBjmR,GACtB0U,EAAKmqQ,WAAY,GAErB1sR,KAAK+zR,iBAAiBlmR,EAAG0U,IAGjC,iBAAiB1U,EAAG0kC,EAAGC,GACnB,MAAMjwB,EAAOviB,KAAK0rP,aAAa79O,GAC3B0U,EAAKmqQ,WACL1sR,KAAKg0R,kBAAkBnmR,EAAG0U,GAE1BA,EAAK8oQ,SACLrrR,KAAKu9B,YAAY,eACjBv9B,KAAK2zR,eAAe,aAAc9lR,EAAG0kC,EAAGC,EAAGxyC,KAAK6xO,OAEpDtvN,EAAK8oQ,QAAS,EACd9oQ,EAAKmqQ,WAAY,EAErB,gBAAgBn6O,EAAGC,GACf,MAAMyhP,EAAWj0R,KAAKurN,MAAM0oE,SAASb,OACjCa,GACAA,EAASC,WAAW3hP,EAAGC,KAIxBstO,GAyBR,KAAa,GAAW,KAxBd7hR,YAAc,MAAM6hR,GAAStiR,KAuBtCsiR,GAAS9qB,WAtBT,SAAoB9+L,GAChB,GAAgB,MAAZA,EACA,OAAO,EAEX,GAAIA,aAAoB4pN,GACpB,OAAO,EAEX,MAAMluQ,EAAMskD,EAASl4D,OAAOC,aACtB4uB,EAAOqpC,EACb,OAAY,MAAPtkD,GAAeA,IAAQkuQ,GAAS7hR,cACN,mBAApB4uB,EAAKmoO,YACe,mBAApBnoO,EAAK0nN,YACkB,mBAAvB1nN,EAAKgqO,eACW,mBAAhBhqO,EAAK4+B,QACiB,mBAAtB5+B,EAAK2oO,cACW,mBAAhB3oO,EAAK4iG,QACW,mBAAhB5iG,EAAK0mC,QACc,mBAAnB1mC,EAAKumC,WAOxB,GAASuP,OAAO,CACZkpL,cAAc,EACdrrG,SAAU,EACV0xG,UAAW,CAAC,UACZ5yM,QAAS,CACLzyB,KAAM,CAAC,UACPywG,OAAQ,CAAC,UACT1tH,MAAO,CAAC,UACRgtC,KAAM,CAAC,SAAU,QAAS,SAC1B8X,MAAO,CAAC,SAAU,SAClBliC,SAAU,CAAC,YAAa,SACxBskP,MAAO,CAAC,SACRnhB,MAAO,CAAC,YAGhB,GAASjiB,SAASn9F,SAAS,OAAQ,IAAU,GCt7B7C,MAAM49I,GAAW7jG,GAAQ,QAClB,MAAM,WAAa0rF,GAAY,OAAQ,CAC1CnvP,KAAMsnQ,GACNvkR,MAAO,CACH5K,KAAM,CACF87G,SAAU,GACVlxE,KAAM,UACNC,OAAQ,KACRukM,KAAM,GACNunC,KAAM,MAGf,CAAEO,QAAQ,OAEb,SAAWt5K,GACP,MAAMojJ,UAAa,GACf,cAAc/oO,EAAMtd,EAAU,IAC1B,IAAIuG,EAAMy4E,MAAMk4K,cAAc55O,EAAMtd,GAKpC,OAJIK,KAAK0zP,UAAUxtP,EAAK,WACpBlG,KAAKyvH,SACLvpH,EAAMlG,KAAK2zP,aAAaztP,EAAK,UAE1BA,GAGf08F,EAAKojJ,KAAOA,EACZA,EAAKrjL,OAAO,CACRrjB,QAAS,CACL1vC,MAAO,CAAC,YAGhB,GAAS8jO,SAASn9F,SAAS49I,GAAUnuC,GAjBzC,CAkBG,KAAS,GAAO,KChCZ,MAAM,WAAmB,GAC5B,YAAYmsB,EAAOxyQ,EAAU,IACzBg/E,QACA3+E,KAAK2B,OAAS,EACd3B,KAAKk9C,WAAav9C,EAAQu9C,YAAc,SACxCl9C,KAAKktP,QACDilB,GACAnyQ,KAAK2W,MAAMw7P,EAAO,CAAEtvM,QAAQ,IAGpC,SACI,OAAO7iE,KAAKmyQ,MAAM5rQ,IAAKsrO,GAASA,EAAK9lL,UAEzC,IAAIomN,EAAOzwQ,EAAO/B,GACd,IAAIy0R,EACAtkB,EACiB,iBAAVpuQ,GACP0yR,EAAa1yR,EACbouQ,EAAenyQ,OAAO+rD,OAAO,CAAEvjD,OAAO,GAASxG,KAG/Cy0R,EAAap0R,KAAK2B,OAClBmuQ,EAAenyQ,OAAO+rD,OAAO,CAAEvjD,OAAO,GAASzE,IAE/C0yR,EAAap0R,KAAK2B,SAClByyR,EAAap0R,KAAK2B,QAElByyR,EAAa,IACbA,GAAcp0R,KAAK2B,OAAS,GAEhC,MAAM0yR,EAAWnzR,MAAMD,QAAQkxQ,GAASA,EAAQ,CAACA,GAC3CmiB,EAAWt0R,KAAKk9C,YACD,iBAAVx7C,IACe,IAAtBouQ,EAAa1oQ,KACXmtR,EAAWv0R,KAAKk9C,YAAc,KACpC,IAAI91C,GAAO,EACX,MAAMgtK,EAAQ,GACRnlG,EAAS,GA2Df,OA1DAolN,EAASlpP,QAAS0mM,IACd,MAAM/wO,EAAWd,KAAKlC,IAAI+zO,GACtB/wO,EACIgvQ,EAAa3pQ,QAAU0rO,EAAK2iD,YAAY1zR,KACxCA,EAASgqF,QAAQ+mJ,EAAK+/B,UAAWjyQ,GACjCsvE,EAAOzsE,KAAK1B,GACRwzR,IAAaltR,IAETA,EADY,MAAZmtR,GAAwC,mBAAbA,EACpBzzR,EAASwxP,aAES,iBAAbiiC,EACLzzR,EAASwxP,WAAWiiC,GAGpBA,EAASjuO,KAAM9nD,GAAQsC,EAASwxP,WAAW9zP,OAM9D41K,EAAM5xK,KAAKqvO,GACX7xO,KAAKw6C,UAAUq3L,MAGnBz9D,EAAMzyK,SACF2yR,IACAltR,GAAO,GAEXpH,KAAKmyQ,MAAM9qQ,OAAO+sR,EAAY,KAAMhgH,GACpCp0K,KAAK2B,OAAS3B,KAAKmyQ,MAAMxwQ,QAEzByF,GACApH,KAAKoH,KAAK,CAAEy7D,QAAQ,IAEnBitM,EAAajtM,SACduxG,EAAMjpI,QAAQ,CAAC0mM,EAAM50O,KACjB,MAAMkY,EAAO,CACT08N,OACAnwO,MAAO0yR,EAAan3R,EACpB0C,QAASmwQ,GAEb9vQ,KAAKkpB,QAAQ,QAAS/T,GACjB26P,EAAa2kB,QACd5iD,EAAKjzN,OAAO,QAASjhB,OAAO+rD,OAAO,GAAIv0C,MAG3C/N,GACApH,KAAKkpB,QAAQ,WAEbkrJ,EAAMzyK,QAAUstE,EAAOttE,SACvB3B,KAAKkpB,QAAQ,UAAW,CACpBkrJ,QACAnlG,SACA4oB,QAAS,GACTl4F,QAASmwQ,KAId9vQ,KAEX,OAAOmyQ,EAAOxyQ,EAAU,IACpB,MAAMwD,EAAMjC,MAAMD,QAAQkxQ,GAASA,EAAQ,CAACA,GACtCt6K,EAAU73F,KAAK00R,YAAYvxR,EAAKxD,GAStC,OARKA,EAAQkjE,QAAUg1B,EAAQl2F,OAAS,GACpC3B,KAAKkpB,QAAQ,UAAW,CACpBvpB,UACAk4F,UACAu8E,MAAO,GACPnlG,OAAQ,KAGT/tE,MAAMD,QAAQkxQ,GAASt6K,EAAUA,EAAQ,GAEpD,YAAYs6K,EAAOxyQ,GACf,MAAMk4F,EAAU,GAChB,IAAK,IAAI56F,EAAI,EAAGA,EAAIk1Q,EAAMxwQ,OAAQ1E,GAAK,EAAG,CACtC,MAAM40O,EAAO7xO,KAAKlC,IAAIq0Q,EAAMl1Q,IAC5B,GAAY,MAAR40O,EACA,SAEJ,MAAMnwO,EAAQ1B,KAAKmyQ,MAAM1uQ,QAAQouO,GACjC7xO,KAAKmyQ,MAAM9qQ,OAAO3F,EAAO,GACzB1B,KAAK2B,QAAU,SACR3B,KAAKuG,IAAIsrO,EAAKrjO,IACrBqpF,EAAQr1F,KAAKqvO,GACb7xO,KAAK20R,YAAY9iD,GACZlyO,EAAQ80R,QACT5iD,EAAKj0N,SAEJje,EAAQkjE,SACT7iE,KAAKkpB,QAAQ,UAAW,CAAE2oN,OAAMnwO,QAAO/B,YAClCA,EAAQ80R,QACT5iD,EAAKjzN,OAAO,UAAW,CAAEizN,OAAMnwO,QAAO/B,aAIlD,OAAOk4F,EAEX,MAAMs6K,EAAOxyQ,EAAU,IACnB,MAAMsgD,EAAWjgD,KAAKmyQ,MAAM7uQ,QAI5B,GAHA28C,EAAS9U,QAAS0mM,GAAS7xO,KAAK20R,YAAY9iD,IAC5C7xO,KAAKktP,QACLltP,KAAKM,IAAI6xQ,EAAOx0Q,OAAO+rD,OAAO,CAAEmZ,QAAQ,GAAQljE,KAC3CA,EAAQkjE,OAAQ,CACjB,MAAM79B,EAAUhlC,KAAKmyQ,MAAM7uQ,QAC3BtD,KAAKkpB,QAAQ,UAAW,CACpBvpB,UACAsgD,WACAjb,YAEJ,MAAMovI,EAAQ,GACRv8E,EAAU,GAChB7yD,EAAQmG,QAASngC,IACCi1C,EAASqG,KAAMr7C,GAAMA,EAAEuD,KAAOxD,EAAEwD,KAE1C4lK,EAAM5xK,KAAKwI,KAGnBi1C,EAAS9U,QAASngC,IACAg6B,EAAQshB,KAAMr7C,GAAMA,EAAEuD,KAAOxD,EAAEwD,KAEzCqpF,EAAQr1F,KAAKwI,KAGrBhL,KAAKkpB,QAAQ,UAAW,CAAEvpB,UAASy0K,QAAOv8E,UAAS5oB,OAAQ,KAE/D,OAAOjvE,KAEX,KAAK6xO,EAAMlyO,GACP,OAAOK,KAAKM,IAAIuxO,EAAM7xO,KAAK2B,OAAQhC,GAEvC,IAAIA,GACA,MAAMkyO,EAAO7xO,KAAK8pD,GAAG9pD,KAAK2B,OAAS,GACnC,OAAO3B,KAAK4d,OAAOi0N,EAAMlyO,GAE7B,QAAQkyO,EAAMlyO,GACV,OAAOK,KAAKM,IAAIuxO,EAAM,EAAGlyO,GAE7B,MAAMA,GACF,MAAMkyO,EAAO7xO,KAAK8pD,GAAG,GACrB,OAAO9pD,KAAK4d,OAAOi0N,EAAMlyO,GAE7B,IAAIkyO,GACA,GAAY,MAARA,EACA,OAAO,KAEX,MAAMrjO,EAAqB,iBAATqjO,GAAqC,iBAATA,EAAoBA,EAAOA,EAAKrjO,GAC9E,OAAOxO,KAAKuG,IAAIiI,IAAO,KAE3B,IAAIqjO,GACA,OAAyB,MAAlB7xO,KAAKlC,IAAI+zO,GAEpB,GAAGnwO,GAIC,OAHIA,EAAQ,IACRA,GAAS1B,KAAK2B,QAEX3B,KAAKmyQ,MAAMzwQ,IAAU,KAEhC,QACI,OAAO1B,KAAK8pD,GAAG,GAEnB,OACI,OAAO9pD,KAAK8pD,IAAI,GAEpB,QAAQ+nL,GACJ,OAAO7xO,KAAKmyQ,MAAM1uQ,QAAQouO,GAE9B,UACI,OAAO7xO,KAAKmyQ,MAAM7uQ,QAEtB,KAAK3D,EAAU,IAOX,OANuB,MAAnBK,KAAKk9C,aACLl9C,KAAKmyQ,MAAQ,EAAS5rN,OAAOvmD,KAAKmyQ,MAAOnyQ,KAAKk9C,YACzCv9C,EAAQkjE,QACT7iE,KAAKkpB,QAAQ,WAGdlpB,KAEX,QAEI,OAAO,IAAI6F,EADS7F,KAAK6F,aACF7F,KAAKmyQ,MAAM7uQ,QAAS,CACvC45C,WAAYl9C,KAAKk9C,aAGzB,UAAU20L,GACN7xO,KAAKuG,IAAIsrO,EAAKrjO,IAAMqjO,EACpBA,EAAKzpN,GAAG,IAAKpoB,KAAK40R,gBAAiB50R,MAEvC,YAAY6xO,GACRA,EAAKppN,IAAI,IAAKzoB,KAAK40R,gBAAiB50R,aAC7BA,KAAKuG,IAAIsrO,EAAKrjO,IAEzB,gBAAgBhR,EAAM2X,GAClB,MAAM08N,EAAO18N,EAAK08N,KAClB7xO,KAAKkpB,QAAQ,QAAQ1rB,EAAQ2X,GACzB08N,IACIA,EAAKhlD,SACL7sL,KAAKkpB,QAAQ,QAAQ1rB,EAAQG,OAAO+rD,OAAO/rD,OAAO+rD,OAAO,GAAIv0C,GAAO,CAAExQ,KAAMktO,KAEvEA,EAAKptK,UACVzkE,KAAKkpB,QAAQ,QAAQ1rB,EAAQG,OAAO+rD,OAAO/rD,OAAO+rD,OAAO,GAAIv0C,GAAO,CAAEykD,KAAMi4K,MAIxF,QACI7xO,KAAK2B,OAAS,EACd3B,KAAKmyQ,MAAQ,GACbnyQ,KAAKuG,IAAM,ICjPZ,MAAM,WAAc,GACvB,YAAY4rQ,EAAQ,IAChBxzL,QACA3+E,KAAK60R,QAAU,GACf70R,KAAK80R,QAAU,IAAIt0N,QACnBxgE,KAAK2nB,MAAQ,GACb3nB,KAAK0uQ,MAAQ,GACb1uQ,KAAK00Q,UAAY,GACjB10Q,KAAKw0Q,UAAY,GACjBx0Q,KAAKivB,WAAa,IAAI,GAAWkjP,GACjCnyQ,KAAKiqB,QAETnsB,IAAKE,OAAOC,eACR,OAAO,GAAMA,YAEjB,OAAOT,EAAM2X,GACTnV,KAAKkpB,QAAQ1rB,EAAM2X,GACnB,MAAMo2M,EAAQvrN,KAAKurN,MASnB,OARIA,IACa,WAAT/tN,GAA8B,YAATA,GAA+B,YAATA,EAC3C+tN,EAAMriM,QAAQ,SAAS1rB,EAAQ2X,GAG/Bo2M,EAAMriM,QAAQ1rB,EAAM2X,IAGrBnV,KAEX,QACI,MAAMivB,EAAajvB,KAAKivB,WACxBA,EAAW7G,GAAG,SAAU,IAAMpoB,KAAK4e,OAAO,SAAU,OACpDqQ,EAAW7G,GAAG,UAAYjT,GAASnV,KAAK4e,OAAO,UAAWzJ,IAC1D8Z,EAAW7G,GAAG,qBAAsB,IAAMpoB,KAAK+0R,iBAC/C9lQ,EAAW7G,GAAG,QAAS,EAAGypN,WACtB7xO,KAAKg1R,YAAYnjD,KAErB5iN,EAAW7G,GAAG,UAAYjT,IACtB,MAAM08N,EAAO18N,EAAK08N,KAClB7xO,KAAKi1R,cAAcpjD,EAAM18N,EAAKxV,SAE9BK,KAAK4e,OAAO,eAAgBzJ,GACxB08N,EAAKhlD,SACL7sL,KAAK4e,OAAO,eAAgBjhB,OAAO+rD,OAAO/rD,OAAO+rD,OAAO,GAAIv0C,GAAO,CAAExQ,KAAMktO,KAEtEA,EAAKptK,UACVzkE,KAAK4e,OAAO,eAAgBjhB,OAAO+rD,OAAO/rD,OAAO+rD,OAAO,GAAIv0C,GAAO,CAAEykD,KAAMi4K,OAGnF5iN,EAAW7G,GAAG,UAAYjT,IACtBnV,KAAKk1R,QAAQ//Q,EAAK6vB,SAClBhlC,KAAK4e,OAAO,UAAWzJ,KAE3B8Z,EAAW7G,GAAG,qBAAsB,EAAGwxC,UAAW55D,KAAKm1R,sBAAsBv7N,EAAM,WACnF3qC,EAAW7G,GAAG,qBAAsB,EAAGwxC,WACnC55D,KAAKm1R,sBAAsBv7N,EAAM,YAGzC,gBACI55D,KAAKivB,WAAW7nB,OAEpB,YAAYyqO,GACR,MAAMgrC,EAAShrC,EAAKrjO,GAChBqjO,EAAKptK,UAELotK,EAAK+iC,eACL50Q,KAAK0uQ,MAAMmO,IAAU,EACrB78Q,KAAKm1R,sBAAsBtjD,EAAM,UACjC7xO,KAAKm1R,sBAAsBtjD,EAAM,WAGjC7xO,KAAK2nB,MAAMk1P,IAAU,EAG7B,cAAchrC,EAAMlyO,GAChB,MAAMk9Q,EAAShrC,EAAKrjO,GACpB,GAAIqjO,EAAKptK,SAAU,QACRzkE,KAAK0uQ,MAAMmO,GAClB,MAAM94P,EAAS8tN,EAAKykC,YACd5uQ,EAASmqO,EAAK2kC,YACpB,GAAIzyP,GAAUA,EAAO8tN,KAAM,CACvB,MAAMxiO,EAAQrP,KAAK00Q,UAAU3wP,EAAO8tN,MAC9BnwO,EAAQ2N,EAAQA,EAAM5L,QAAQo5Q,IAAW,EAC3Cn7Q,GAAS,IACT2N,EAAMhI,OAAO3F,EAAO,GACC,IAAjB2N,EAAM1N,eACC3B,KAAK00Q,UAAU3wP,EAAO8tN,OAIzC,GAAInqO,GAAUA,EAAOmqO,KAAM,CACvB,MAAMxiO,EAAQrP,KAAKw0Q,UAAU9sQ,EAAOmqO,MAC9BnwO,EAAQ2N,EAAQA,EAAM5L,QAAQo5Q,IAAW,EAC3Cn7Q,GAAS,IACT2N,EAAMhI,OAAO3F,EAAO,GACC,IAAjB2N,EAAM1N,eACC3B,KAAKw0Q,UAAU9sQ,EAAOmqO,oBAMlC7xO,KAAK2nB,MAAMk1P,GAEjBl9Q,EAAQk5D,QACLl5D,EAAQy1R,gBACRp1R,KAAKq1R,yBAAyBxjD,EAAMlyO,GAGpCK,KAAKs1R,qBAAqBzjD,EAAMlyO,IAGpCkyO,EAAKv4J,QAAUt5E,OACf6xO,EAAKv4J,MAAQ,MAGrB,QAAQ64L,GACJnyQ,KAAK2nB,MAAQ,GACb3nB,KAAK0uQ,MAAQ,GACb1uQ,KAAK00Q,UAAY,GACjB10Q,KAAKw0Q,UAAY,GACjBrC,EAAMhnO,QAAS0mM,GAAS7xO,KAAKg1R,YAAYnjD,IAE7C,sBAAsBj4K,EAAMr4D,GACxB,MAAMsyD,EAAe,WAATtyD,EAAoBvB,KAAK00Q,UAAY10Q,KAAKw0Q,UAChDr5P,EAAOy+C,EAAK3Z,SAAS1+C,GAC3B,GAAI4Z,GAAQA,EAAK02N,KAAM,CACnB,MAAMxiO,EAAQwkD,EAAI14C,EAAK02N,MACjBnwO,EAAQ2N,EAAQA,EAAM5L,QAAQm2D,EAAKprD,KAAO,EAC5C9M,GAAS,IACT2N,EAAMhI,OAAO3F,EAAO,GACC,IAAjB2N,EAAM1N,eACCkyD,EAAI14C,EAAK02N,OAI5B,MAAMua,EAAWxyL,EAAKs/M,YAAY33Q,GAClC,GAAI6qP,GAAYA,EAASva,KAAM,CAC3B,MAAMxiO,EAAQwkD,EAAIu4L,EAASva,OAAS,IAErB,IADDxiO,EAAM5L,QAAQm2D,EAAKprD,KAE7Ba,EAAM7M,KAAKo3D,EAAKprD,IAEpBqlD,EAAIu4L,EAASva,MAAQxiO,GAG7B,YAAYwiO,EAAMlyO,GAOd,OANKkyO,EAAKv4J,OAAW35E,GAAYA,EAAQ80R,SACrC5iD,EAAKv4J,MAAQt5E,MAEE,MAAf6xO,EAAK/4D,QACL+4D,EAAKqgC,UAAUlyQ,KAAKoyQ,eAAiB,EAAG,CAAEvvM,QAAQ,IAE/CgvK,EAEX,WAAWsgC,EAAOxyQ,EAAU,IAOxB,OAJAwyQ,EAAM5rQ,IAAKsrO,GAAS7xO,KAAKu1R,YAAY1jD,EAAMl0O,OAAO+rD,OAAO/rD,OAAO+rD,OAAO,GAAI/pD,GAAU,CAAE80R,QAAQ,MAC/Fz0R,KAAKivB,WAAWtY,MAAMw7P,EAAOxyQ,GAE7BwyQ,EAAM5rQ,IAAKsrO,GAAS7xO,KAAKu1R,YAAY1jD,EAAM,CAAElyO,aACtCK,KAEX,MAAML,EAAU,IACZ,MAAM2hB,EAAMthB,KAAKmtR,WACjB,GAAmB,IAAf7rQ,EAAI3f,OACJ,OAAO3B,KAEX,MAAM8vQ,EAAenyQ,OAAO+rD,OAAO/rD,OAAO+rD,OAAO,GAAI/pD,GAAU,CAAEk5D,OAAO,IAiBxE,OAhBA74D,KAAKuyQ,YAAY,QAAS,KAEtB,MAAMJ,EAAQ7wP,EAAIla,KAAK,CAAC4D,EAAGC,KACZD,EAAEy5D,SAAW,EAAI,IACjBx5D,EAAEw5D,SAAW,EAAI,IAGhC,KAAO0tM,EAAMxwQ,OAAS,GAAG,CAGrB,MAAMkwO,EAAOsgC,EAAM5iQ,QACfsiO,GACAA,EAAKj0N,OAAOkyP,KAGrBA,GACI9vQ,KAEX,QAAQsxQ,EAAU3xQ,EAAU,IACxB,MAAMgF,EAAO,GAAKkoL,OAAOykF,GAAYA,EAAWtxQ,KAAKktI,WAAWokI,GAEhE,OADAtxQ,KAAKo0Q,QAAQzvQ,EAAMhF,GACZgF,EAEX,WAAW2sQ,GACP,OAAO,GAAK/yQ,OAAO+yQ,GAEvB,QAAQA,EAAU3xQ,EAAU,IACxB,MAAMi6D,EAAO,GAAK6K,OAAO6sM,GAAYA,EAAWtxQ,KAAK63O,WAAWy5B,GAEhE,OADAtxQ,KAAKo0Q,QAAQx6M,EAAMj6D,GACZi6D,EAEX,WAAW03M,GACP,OAAO,GAAK/yQ,OAAO+yQ,GAEvB,QAAQz/B,EAAMlyO,EAAU,IACpB,OAAIuB,MAAMD,QAAQ4wO,GACP7xO,KAAKw1R,SAAS3jD,EAAMlyO,IAE1BK,KAAKivB,WAAW5T,IAAIw2N,IAAU7xO,KAAK80R,QAAQz5Q,IAAIw2N,KAChD7xO,KAAK80R,QAAQxyQ,IAAIuvN,GAAM,GACvB7xO,KAAKivB,WAAW3uB,IAAIN,KAAKu1R,YAAY1jD,EAAMlyO,GAAUA,GACrDkyO,EAAK5gH,UAAWjqD,GAAUhnE,KAAKo0Q,QAAQptM,EAAOrnE,IAC9CK,KAAK80R,QAAQ1xM,OAAOyuJ,IAEjB7xO,MAEX,SAASmyQ,EAAOxyQ,EAAU,IACtB,MAAMikB,EAAQuuP,EAAMxwQ,OACpB,GAAc,IAAViiB,EACA,OAAO5jB,KAEX,MAAM8vQ,EAAenyQ,OAAO+rD,OAAO/rD,OAAO+rD,OAAO,GAAI/pD,GAAU,CAAE6yB,SAAU5O,EAAQ,EAAG6xQ,YAAa7xQ,EAAQ,IAO3G,OANA5jB,KAAKo2P,WAAW,MAAOz4P,OAAO+rD,OAAO/rD,OAAO+rD,OAAO,GAAIomN,GAAe,CAAEqC,WACxEA,EAAMhnO,QAAS0mM,IACX7xO,KAAKo0Q,QAAQviC,EAAMi+B,GACnBA,EAAat9O,UAAY,IAE7BxyB,KAAKq2P,UAAU,MAAO14P,OAAO+rD,OAAO/rD,OAAO+rD,OAAO,GAAIomN,GAAe,CAAEqC,WAChEnyQ,KAEX,WAAWiE,EAAKtE,EAAU,IACtB,MAAMkyO,EAAsB,iBAAR5tO,EAAmBjE,KAAK+lQ,QAAQ9hQ,GAAOA,EAC3D,OAAI4tO,GAAQ7xO,KAAKqb,IAAIw2N,GACV7xO,KAAKivB,WAAWrR,OAAOi0N,EAAMlyO,GAEjC,KAEX,aAAakyO,EAAM6jD,GACf11R,KAAKo2P,WAAW,SAAU,CAAE5nP,GAAIknR,IAChC7jD,EAAKrvN,KAAK,KAAMkzQ,GAChB,MAAMC,EAAU9jD,EAAKpqO,MAAM,CAAEkuQ,QAAQ,IACrC31Q,KAAKo0Q,QAAQuhB,GAeb,OAbc31R,KAAK26Q,kBAAkB9oC,GAC/B1mM,QAASyuB,IACX,MAAMuiN,EAAaviN,EAAKslN,gBAClB7C,EAAaziN,EAAKulN,gBACpBhD,IAAetqC,GACfj4K,EAAKy8M,UAAU14Q,OAAO+rD,OAAO/rD,OAAO+rD,OAAO,GAAIkQ,EAAK08M,aAAc,CAAEzkC,KAAM6jD,KAE1ErZ,IAAexqC,GACfj4K,EAAK28M,UAAU54Q,OAAO+rD,OAAO/rD,OAAO+rD,OAAO,GAAIkQ,EAAK48M,aAAc,CAAE3kC,KAAM6jD,OAGlF11R,KAAKg1Q,WAAWnjC,GAChB7xO,KAAKq2P,UAAU,SAAU,CAAE7nP,GAAIknR,IACxBC,EAEX,YAAYxjB,EAAOxyQ,EAAU,IACzB,OAAIwyQ,EAAMxwQ,OACC3B,KAAKuyQ,YAAY,SAAU,IACvBJ,EAAM5rQ,IAAKsrO,GAAS7xO,KAAKg1Q,WAAWnjC,EAAMlyO,KAGlD,GAEX,qBAAqBkyO,EAAMlyO,EAAU,IACjC,MAAM+uQ,EAAQ1uQ,KAAK26Q,kBAAkB9oC,GAIrC,OAHA68B,EAAMvjO,QAASyuB,IACXA,EAAKh8C,OAAOje,KAET+uQ,EAEX,yBAAyB78B,EAAMlyO,EAAU,IACrC,MAAMk9Q,EAAyB,iBAAThrC,EAAoBA,EAAOA,EAAKrjO,GACtDxO,KAAK26Q,kBAAkB9oC,GAAM1mM,QAASyuB,IAClC,MAAMuiN,EAAaviN,EAAKslN,gBAClB7C,EAAaziN,EAAKulN,gBACpBhD,GAAcA,EAAW3tQ,KAAOquQ,GAChCjjN,EAAKy8M,UAAU,CAAE9jO,EAAG,EAAGC,EAAG,GAAK7yC,GAE/B08Q,GAAcA,EAAW7tQ,KAAOquQ,GAChCjjN,EAAK28M,UAAU,CAAEhkO,EAAG,EAAGC,EAAG,GAAK7yC,KAI3C,IAAIsE,GACA,OAAOjE,KAAKivB,WAAW5T,IAAIpX,GAE/B,QACI,OAAOjE,KAAKivB,WAAWttB,OAE3B,QAAQkwO,GACJ,OAAO7xO,KAAKivB,WAAWxrB,QAAQouO,GAKnC,QAAQrjO,GACJ,OAAOxO,KAAKivB,WAAWnxB,IAAI0Q,GAK/B,WACI,OAAOxO,KAAKivB,WAAWnpB,UAM3B,eACI,OAAO9F,KAAKivB,WAAWvoB,QAM3B,cACI,OAAO1G,KAAKivB,WAAWroB,OAK3B,eACI,MAAMF,EAAQ1G,KAAKivB,WAAWvoB,QAC9B,OAAOA,GAAQA,EAAMuwK,aAAmB,EAK5C,eACI,MAAMrwK,EAAO5G,KAAKivB,WAAWroB,OAC7B,OAAOA,GAAOA,EAAKqwK,aAAmB,EAE1C,kBAAkB5nK,GACd,OAAOA,EACD1R,OAAOyR,KAAKC,GACT9I,IAAKiI,GAAOxO,KAAK+lQ,QAAQv3P,IACzBgD,OAAQqgO,GAAiB,MAARA,GACpB,GAKV,WACI,OAAO7xO,KAAK41R,kBAAkB51R,KAAK2nB,OAKvC,WACI,OAAO3nB,KAAK41R,kBAAkB51R,KAAK0uQ,OAKvC,iBAAiB78B,GACb,MAAMgrC,EAAyB,iBAAThrC,EAAoBA,EAAOA,EAAKrjO,GAChDqnR,EAAU71R,KAAK00Q,UAAUmI,GAC/B,OAAOgZ,EACDA,EACGtvR,IAAKiI,GAAOxO,KAAK+lQ,QAAQv3P,IACzBgD,OAAQqgO,GAASA,GAAQA,EAAKptK,UACjC,KAKV,iBAAiBotK,GACb,MAAMgrC,EAAyB,iBAAThrC,EAAoBA,EAAOA,EAAKrjO,GAChDqnR,EAAU71R,KAAKw0Q,UAAUqI,GAC/B,OAAOgZ,EACDA,EACGtvR,IAAKiI,GAAOxO,KAAK+lQ,QAAQv3P,IACzBgD,OAAQqgO,GAASA,GAAQA,EAAKptK,UACjC,KAKV,kBAAkBotK,EAAMlyO,EAAU,IAC9B,MAAMwB,EAAS,GACTwD,EAAuB,iBAATktO,EAAoB7xO,KAAK+lQ,QAAQl0B,GAAQA,EAC7D,GAAY,MAARltO,EACA,OAAOxD,EAEX,MAAMkO,EAAQ,GACRymR,EAAWn2R,EAAQm2R,SACzB,IAAIlb,EAAWj7Q,EAAQi7Q,SACnBE,EAAWn7Q,EAAQm7Q,SACP,MAAZF,GAAgC,MAAZE,IACpBF,EAAWE,GAAW,GAE1B,MAAMib,EAAU,CAAClkD,EAAMmkD,KACnB,MAAMtnB,EAAQsnB,EACRh2R,KAAK20Q,iBAAiB9iC,GACtB7xO,KAAKy0Q,iBAAiB5iC,GAkB5B,GAjBa,MAAT68B,GACAA,EAAMvjO,QAASyuB,IACPvqD,EAAMuqD,EAAKprD,MAGfrN,EAAOqB,KAAKo3D,GACZvqD,EAAMuqD,EAAKprD,KAAM,EACbsnR,IACIlb,GACAmb,EAAQn8N,GAAM,GAEdkhN,GACAib,EAAQn8N,GAAM,OAK1Bk8N,GAAYjkD,EAAKptK,SAAU,CAC3B,MAAM2nL,EAAW4pC,EACXnkD,EAAKstC,gBACLttC,EAAKqtC,gBACP9yB,GAAYA,EAAS3nL,WAChBp1D,EAAM+8O,EAAS59O,MAChBrN,EAAOqB,KAAK4pP,GACZ2pC,EAAQ3pC,EAAU4pC,OAWlC,GANIlb,GACAib,EAAQpxR,GAAM,GAEdi2Q,GACAmb,EAAQpxR,GAAM,GAEdhF,EAAQgI,KAAM,CACd,MAAMsuR,EAActxR,EAAK0tQ,eAAe,CAAE1qQ,MAAM,IAC1CuuR,EAAc,GACpBD,EAAY9qP,QAAS0mM,IACbA,EAAKhlD,WACLqpG,EAAYrkD,EAAKrjO,KAAM,KAG/B,MAAM2nR,EAAa,CAACtkD,EAAMmkD,KACtB,MAAMtnB,EAAQsnB,EACRh2R,KAAK20Q,iBAAiB9iC,EAAKrjO,IAC3BxO,KAAKy0Q,iBAAiB5iC,EAAKrjO,IACpB,MAATkgQ,GACAA,EAAMvjO,QAASyuB,IACX,IAAKvqD,EAAMuqD,EAAKprD,IAAK,CACjB,MAAM2tQ,EAAaviN,EAAKslN,gBAClB7C,EAAaziN,EAAKulN,gBACxB,IAAKx/Q,EAAQy2R,UACTja,GACA+Z,EAAY/Z,EAAW3tQ,KACvB6tQ,GACA6Z,EAAY7Z,EAAW7tQ,IACvB,OAEJrN,EAAOqB,KAAKo3D,GACZvqD,EAAMuqD,EAAKprD,KAAM,MAKjCynR,EAAY9qP,QAAS0mM,IACbA,EAAKptK,WAGLq2M,GACAqb,EAAWtkD,GAAM,GAEjB+oC,GACAub,EAAWtkD,GAAM,MAI7B,OAAO1wO,EAEX,WAAW0wO,EAAMwkD,GACb,MAAM1xR,EAAuB,iBAATktO,EAAoB7xO,KAAK+lQ,QAAQl0B,GAAQA,EACvD1uO,EAAMkzR,EACNr2R,KAAKy0Q,iBAAiB9vQ,GACtB3E,KAAK20Q,iBAAiBhwQ,GAC5B,OAAc,MAAPxB,GAA8B,IAAfA,EAAIxB,OAE9B,iBAAiB00R,GACb,MAAMl1R,EAAS,GASf,OARAxD,OAAOyR,KAAKpP,KAAK2nB,OAAOwjB,QAAS67O,IAC7B,GAAIhnR,KAAKs2R,WAAWtP,EAAQqP,GAAW,CACnC,MAAM1xR,EAAO3E,KAAK+lQ,QAAQihB,GACtBriR,GACAxD,EAAOqB,KAAKmC,MAIjBxD,EAKX,WACI,OAAOnB,KAAKu2R,kBAAiB,GAKjC,WACI,OAAOv2R,KAAKu2R,kBAAiB,GAMjC,OAAO1kD,GACH,OAAO7xO,KAAKs2R,WAAWzkD,GAAM,GAMjC,OAAOA,GACH,OAAO7xO,KAAKs2R,WAAWzkD,GAAM,GAMjC,aAAaA,EAAMlyO,EAAU,IACzB,IAAIi7Q,EAAWj7Q,EAAQi7Q,SACnBE,EAAWn7Q,EAAQm7Q,SACP,MAAZF,GAAgC,MAAZE,IACpBF,EAAWE,GAAW,GAE1B,MACMv0Q,EADQvG,KAAK26Q,kBAAkB9oC,EAAMlyO,GACzB6rC,OAAO,CAAC8B,EAAMssB,KAC5B,MAAM48N,EAAU58N,EAAK48N,QAAQ72R,GACvBw8Q,EAAaviN,EAAKslN,gBAClB7C,EAAaziN,EAAKulN,gBAqBxB,OApBIvE,GACAuB,GACAA,EAAWtvF,WACVv/I,EAAK6uO,EAAW3tQ,OACbgoR,IACCra,IAAetqC,GACVlyO,EAAQgI,MAASw0Q,EAAWxI,eAAe9hC,MACjDvkM,EAAK6uO,EAAW3tQ,IAAM2tQ,IAG1BrB,GACAuB,GACAA,EAAWxvF,WACVv/I,EAAK+uO,EAAW7tQ,OACbgoR,IACCna,IAAexqC,GACVlyO,EAAQgI,MAAS00Q,EAAW1I,eAAe9hC,MACjDvkM,EAAK+uO,EAAW7tQ,IAAM6tQ,IAGvB/uO,GACR,IACH,GAAIukM,EAAKptK,SAAU,CACf,GAAIm2M,EAAU,CACV,MAAMuB,EAAatqC,EAAKqtC,gBACpB/C,GAAcA,EAAWtvF,WAAatmL,EAAI41Q,EAAW3tQ,MACrDjI,EAAI41Q,EAAW3tQ,IAAM2tQ,GAG7B,GAAIrB,EAAU,CACV,MAAMuB,EAAaxqC,EAAKstC,gBACpB9C,GAAcA,EAAWxvF,WAAatmL,EAAI81Q,EAAW7tQ,MACrDjI,EAAI81Q,EAAW7tQ,IAAM6tQ,IAIjC,OAAO1+Q,OAAOyR,KAAK7I,GAAKA,IAAKiI,GAAOjI,EAAIiI,IAK5C,WAAWioR,EAAOC,EAAO/2R,EAAU,IAC/B,IAAIi7Q,EAAWj7Q,EAAQi7Q,SACnBE,EAAWn7Q,EAAQm7Q,SAIvB,OAHgB,MAAZF,GAAgC,MAAZE,IACpBF,EAAWE,GAAW,GAEnB96Q,KAAK26Q,kBAAkB8b,EAAO92R,GAAS2mD,KAAMsT,IAChD,MAAMuiN,EAAaviN,EAAKslN,gBAClB7C,EAAaziN,EAAKulN,gBACxB,SAAIvE,IAAYuB,GAAcA,EAAW3tQ,KAAOkoR,EAAMloR,QAGlDssQ,IAAYuB,GAAcA,EAAW7tQ,KAAOkoR,EAAMloR,MAM9D,cAAcqjO,EAAMlyO,EAAU,IAC1B,MAAMg3R,EAAa,GAMnB,OALA32R,KAAK8oH,OAAO+oH,EAAM,CAACn/C,EAAM7hI,KACjB6hI,IAASm/C,GAAQ7xO,KAAK42R,cAAc/lO,EAAUlxD,EAAQkxD,WACtD8lO,EAAWn0R,KAAKkwL,IAErB/0L,OAAO+rD,OAAO/rD,OAAO+rD,OAAO,GAAI/pD,GAAU,CAAEm7Q,UAAU,KAClD6b,EAKX,YAAYF,EAAOC,EAAO/2R,EAAU,IAChC,IAAIwB,GAAS,EASb,OARAnB,KAAK8oH,OAAO2tK,EAAO,CAAC/jG,EAAM7hI,KACtB,GAAI6hI,IAASgkG,GACThkG,IAAS+jG,GACTz2R,KAAK42R,cAAc/lO,EAAUlxD,EAAQkxD,UAErC,OADA1vD,GAAS,GACF,GAEZxD,OAAO+rD,OAAO/rD,OAAO+rD,OAAO,GAAI/pD,GAAU,CAAEm7Q,UAAU,KAClD35Q,EAEX,gBAAgB0wO,EAAMlyO,EAAU,IAC5B,MAAMk3R,EAAe,GAMrB,OALA72R,KAAK8oH,OAAO+oH,EAAM,CAACn/C,EAAM7hI,KACjB6hI,IAASm/C,GAAQ7xO,KAAK42R,cAAc/lO,EAAUlxD,EAAQkxD,WACtDgmO,EAAar0R,KAAKkwL,IAEvB/0L,OAAO+rD,OAAO/rD,OAAO+rD,OAAO,GAAI/pD,GAAU,CAAEi7Q,UAAU,KAClDic,EAKX,cAAcJ,EAAOC,EAAO/2R,EAAU,IAClC,IAAIwB,GAAS,EASb,OARAnB,KAAK8oH,OAAO2tK,EAAO,CAAC/jG,EAAM7hI,KACtB,GAAI6hI,IAASgkG,GACThkG,IAAS+jG,GACTz2R,KAAK42R,cAAc/lO,EAAUlxD,EAAQkxD,UAErC,OADA1vD,GAAS,GACF,GAEZxD,OAAO+rD,OAAO/rD,OAAO+rD,OAAO,GAAI/pD,GAAU,CAAEi7Q,UAAU,KAClDz5Q,EAEX,cAAc0vD,EAAUojL,GACpB,OAAc,MAAVA,IAGkB,mBAAXA,EACAA,EAAOpjL,MAEd3vD,MAAMD,QAAQgzO,KAAWA,EAAO/1L,SAAS2S,KAGtCA,IAAaojL,GAKxB,qBAAqBk+B,GACjB,MAAMhvQ,EAAM,GAWZ,OAVAgvQ,EAAMhnO,QAAShnC,IACPA,IACIjD,MAAMD,QAAQkD,GACdhB,EAAIX,QAAQ2B,GAGZhB,EAAIX,KAAK2B,MAId,GAAK0vQ,qBAAqB1wQ,GAUrC,YAAYgvQ,EAAOxyQ,EAAU,IACzB,MAAMm3R,EAAW,GACXznR,EAAQ,GACRsY,EAAQ,GACR+mP,EAAQ,GACRqnB,EAAWlkD,IACRxiO,EAAMwiO,EAAKrjO,MACZsoR,EAASt0R,KAAKqvO,GACdxiO,EAAMwiO,EAAKrjO,IAAMqjO,EACbA,EAAKptK,UACLiqM,EAAMlsQ,KAAKqvO,GAEXA,EAAKhlD,UACLllK,EAAMnlB,KAAKqvO,KA+CvB,OA3CAsgC,EAAMhnO,QAAS0mM,IAEX,GADAkkD,EAAQlkD,GACJlyO,EAAQgI,KAAM,CACMkqO,EAAKwgC,eAAe,CAAE1qQ,MAAM,IACpCwjC,QAASuoO,GAAeqiB,EAAQriB,OAGpDhF,EAAMvjO,QAASyuB,IAEX,MAAMuiN,EAAaviN,EAAKslN,gBAClB7C,EAAaziN,EAAKulN,gBACpBhD,IAAe9sQ,EAAM8sQ,EAAW3tQ,MAChCsoR,EAASt0R,KAAK25Q,GACd9sQ,EAAM8sQ,EAAW3tQ,IAAM2tQ,EACnBA,EAAWtvF,UACXllK,EAAMnlB,KAAK25Q,IAGfE,IAAehtQ,EAAMgtQ,EAAW7tQ,MAChCsoR,EAASt0R,KAAK65Q,GACdhtQ,EAAMgtQ,EAAW7tQ,IAAM6tQ,EACnBA,EAAWxvF,UACXllK,EAAMnlB,KAAK65Q,MAIvB10P,EAAMwjB,QAASxmC,IAGG3E,KAAK26Q,kBAAkBh2Q,EAAMhF,GACrCwrC,QAASyuB,IACX,MAAMuiN,EAAaviN,EAAKslN,gBAClB7C,EAAaziN,EAAKulN,iBACnB9vQ,EAAMuqD,EAAKprD,KACZ2tQ,GACA9sQ,EAAM8sQ,EAAW3tQ,KACjB6tQ,GACAhtQ,EAAMgtQ,EAAW7tQ,MACjBsoR,EAASt0R,KAAKo3D,GACdvqD,EAAMuqD,EAAKprD,IAAMorD,OAItBk9N,EASX,cAAc3kB,EAAOxyQ,EAAU,IAC3B,MAAMm3R,EAAW92R,KAAK+2R,YAAY5kB,EAAOxyQ,GACzC,OAAOK,KAAKi2Q,WAAW6gB,GAE3B,WAAW3kB,GACP,OAAO,GAAK8D,WAAW9D,GAE3B,kBAAkB5/N,EAAGC,GACjB,MAAMzzC,EAAiB,iBAANwzC,EAAiB,CAAEA,IAAGC,EAAGA,GAAK,GAAMD,EACrD,OAAOvyC,KAAKomQ,WAAW50P,OAAQ7M,GACpBA,EAAKi4H,UAAU7nE,cAAch2D,IAG5C,eAAewzC,EAAGC,EAAGzvC,EAAGlC,EAAGlB,GACvB,MAAMkpC,EAAoB,iBAAN0J,EACd,IAAI,GAAUA,EAAGC,EAAGzvC,EAAGlC,GACvB,GAAUtC,OAAOg0C,GACjBnZ,EAAoB,iBAANmZ,EAAiB5yC,EAAU6yC,EACzCouI,EAASxnJ,GAAQA,EAAKwnJ,OAC5B,OAAO5gL,KAAKomQ,WAAW50P,OAAQ7M,IAC3B,MAAM42D,EAAO52D,EAAKi4H,UAClB,OAAOgkD,EAAS/3I,EAAKo+D,aAAa1rC,GAAQ1yB,EAAK++D,oBAAoBrsC,KAG3E,eAAehpB,EAAGC,EAAGzvC,EAAGlC,EAAGlB,GACvB,MAAMkpC,EAAoB,iBAAN0J,EACd,IAAI,GAAUA,EAAGC,EAAGzvC,EAAGlC,GACvB,GAAUtC,OAAOg0C,GACjBnZ,EAAoB,iBAANmZ,EAAiB5yC,EAAU6yC,EACzCouI,EAASxnJ,GAAQA,EAAKwnJ,OAC5B,OAAO5gL,KAAKuuQ,WAAW/8P,OAAQooD,IAC3B,MAAM2B,EAAO3B,EAAKgjE,UAOlB,OANmB,IAAfrhE,EAAKlqC,MACLkqC,EAAKyqC,QAAQ,EAAG,GAEK,IAAhBzqC,EAAK9nC,QACV8nC,EAAKyqC,QAAQ,EAAG,GAEb46E,EAAS/3I,EAAKo+D,aAAa1rC,GAAQ1yB,EAAK++D,oBAAoBrsC,KAG3E,kBAAkB52D,EAAMhF,EAAU,IAC9B,MAAM47D,EAAO52D,EAAKi4H,UAIlB,OAH4B,MAAdj9H,EAAQqpL,IAA6B,SAAfrpL,EAAQqpL,GACtChpL,KAAKg3R,eAAez7N,GACpBv7D,KAAKi3R,kBAAkB17N,EAAK57D,EAAQqpL,MAC7Bx3K,OAAQkhL,GAAS/tL,EAAK6J,KAAOkkL,EAAKlkL,KAAOkkL,EAAKihF,eAAehvQ,IAK9E,kBACI,OAAO3E,KAAKg2Q,aAAah2Q,KAAKmtR,YAKlC,aAAahb,EAAOxyQ,EAAU,IAC1B,OAAO,GAAKq2Q,aAAa7D,EAAOxyQ,GAGpC,OAAOkyO,EAAM3oO,EAAUvJ,EAAU,IACzBA,EAAQ2yQ,aACRtyQ,KAAKk3R,mBAAmBrlD,EAAM3oO,EAAUvJ,GAGxCK,KAAKm3R,iBAAiBtlD,EAAM3oO,EAAUvJ,GAG9C,mBAAmBkyO,EAAM3oO,EAAUvJ,EAAU,IACzC,MAAM4d,EAAQ,GACRw/P,EAAU,GACVlsN,EAAW,GAGjB,IAFAtzC,EAAM/a,KAAKqvO,GACXhhL,EAASghL,EAAKrjO,IAAM,EACb+O,EAAM5b,OAAS,GAAG,CACrB,MAAMgM,EAAO4P,EAAMhO,QACnB,GAAY,MAAR5B,GAAgBovQ,EAAQpvQ,EAAKa,IAC7B,SAGJ,GADAuuQ,EAAQpvQ,EAAKa,KAAM,GAC+C,IAA9D,EAAYpR,KAAK8L,EAAUlJ,KAAM2N,EAAMkjD,EAASljD,EAAKa,KACrD,SAEcxO,KAAKo3R,aAAazpR,EAAMhO,GAChCwrC,QAASksP,IACfxmO,EAASwmO,EAAS7oR,IAAMqiD,EAASljD,EAAKa,IAAM,EAC5C+O,EAAM/a,KAAK60R,MAIvB,iBAAiBxlD,EAAM3oO,EAAUvJ,EAAU,IACvC,MAAM4d,EAAQ,GACRw/P,EAAU,GACVlsN,EAAW,GAGjB,IAFAtzC,EAAM/a,KAAKqvO,GACXhhL,EAASghL,EAAKrjO,IAAM,EACb+O,EAAM5b,OAAS,GAAG,CACrB,MAAMgM,EAAO4P,EAAMrS,MACnB,GAAY,MAARyC,GAAgBovQ,EAAQpvQ,EAAKa,IAC7B,SAGJ,GADAuuQ,EAAQpvQ,EAAKa,KAAM,GAC+C,IAA9D,EAAYpR,KAAK8L,EAAUlJ,KAAM2N,EAAMkjD,EAASljD,EAAKa,KACrD,SAEJ,MAAMqsP,EAAY76P,KAAKo3R,aAAazpR,EAAMhO,GACpC02C,EAAY94B,EAAM5b,OACxBk5P,EAAU1vN,QAASksP,IACfxmO,EAASwmO,EAAS7oR,IAAMqiD,EAASljD,EAAKa,IAAM,EAC5C+O,EAAMlW,OAAOgvC,EAAW,EAAGghP,MAUvC,gBAAgBtzQ,EAAQrc,EAAQ/H,EAAU,IACtC,MAAMinP,EAAgB,GACtB5mP,KAAKuuQ,WAAWpjO,QAASyuB,IACrB,MAAMu8M,EAAWv8M,EAAKqsM,kBAChBmQ,EAAWx8M,EAAKusM,kBAClBgQ,GAAYC,IACPxvB,EAAcuvB,KACfvvB,EAAcuvB,GAAY,IAEzBvvB,EAAcwvB,KACfxvB,EAAcwvB,GAAY,IAE9BxvB,EAAcuvB,GAAU3zQ,KAAK4zQ,GACxBz2Q,EAAQ23R,UACT1wC,EAAcwvB,GAAU5zQ,KAAK2zQ,MAIzC,MAAMA,EAA6B,iBAAXpyP,EAAsBA,EAASA,EAAOvV,GACxDyxC,EAAW,GAAShpB,IAAI2vN,EAAeuvB,EAAUx2Q,EAAQk5K,QACzD3pI,EAAO,GACb,IAAIknO,EAA6B,iBAAX1uQ,EAAsBA,EAASA,EAAO8G,GAI5D,IAHIyxC,EAASm2N,IACTlnO,EAAK1sC,KAAK4zQ,GAENA,EAAWn2N,EAASm2N,IACxBlnO,EAAKp8B,QAAQsjQ,GAEjB,OAAOlnO,EAOX,UAAUyrB,EAAIC,EAAIj7D,GAId,OAHAK,KAAKmtR,WACA37Q,OAAQqgO,IAAUA,EAAKghD,aACvB1nP,QAAS0mM,GAASA,EAAKz+K,UAAUuH,EAAIC,EAAIj7D,IACvCK,KAEX,OAAOqxB,EAAOoC,EAAQ9zB,GAClB,OAAOK,KAAKu3R,YAAYlmQ,EAAOoC,EAAQzzB,KAAKmtR,WAAYxtR,GAE5D,YAAY0xB,EAAOoC,EAAQ0+O,EAAOxyQ,EAAU,IACxC,MAAM47D,EAAOv7D,KAAKg2Q,aAAa7D,GAC/B,GAAI52M,EAAM,CACN,MAAM7H,EAAK5rD,KAAKitB,IAAI1D,EAAQkqC,EAAKlqC,MAAO,GAClCsiC,EAAK7rD,KAAKitB,IAAItB,EAAS8nC,EAAK9nC,OAAQ,GACpCmgC,EAAS2H,EAAK8oC,YACpB8tK,EAAMhnO,QAAS0mM,GAASA,EAAKhtN,MAAM6uC,EAAIC,EAAIC,EAAQj0D,IAEvD,OAAOK,KAIX,OAAOL,EAAU,IACb,OAAO,GAAMosD,OAAO/rD,KAAKmtR,WAAYxtR,GAEzC,UAAU4iB,GACN,OAAO,GAAMi1Q,SAASj1Q,GAE1B,SAASA,EAAM5iB,EAAU,IACrB,MAAMwyQ,EAAQnyQ,KAAKiqC,UAAU1nB,GAE7B,OADAviB,KAAKy3R,WAAWtlB,EAAOxyQ,GAChBK,KAIX,WAAWxC,EAAM+kB,EAAO,IAGpB,OAFAviB,KAAK60R,QAAQr3R,IAASwC,KAAK60R,QAAQr3R,IAAS,GAAK,EACjDwC,KAAK4e,OAAO,cAAe,CAAEphB,OAAM+kB,SAC5BviB,KAEX,UAAUxC,EAAM+kB,EAAO,IAGnB,OAFAviB,KAAK60R,QAAQr3R,IAASwC,KAAK60R,QAAQr3R,IAAS,GAAK,EACjDwC,KAAK4e,OAAO,aAAc,CAAEphB,OAAM+kB,SAC3BviB,KAEX,YAAYxC,EAAMq4Q,EAAStzP,EAAO,IAC9BviB,KAAKo2P,WAAW54P,EAAM+kB,GACtB,MAAMphB,EAAS00Q,IAEf,OADA71Q,KAAKq2P,UAAU74P,EAAM+kB,GACdphB,EAEX,eAAe3D,EAAOG,OAAOyR,KAAKpP,KAAK60R,UAEnC,OADc3zR,MAAMD,QAAQzD,GAAQA,EAAO,CAACA,IAC/B8oD,KAAMssI,GAAU5yL,KAAK60R,QAAQjiG,GAAS,IAG3D,IAAW8kG,OAoBR,KAAU,GAAQ,KAnBXz5R,YAAc,MAAMy5R,GAAMl6R,KAkBhCk6R,GAAMC,QAjBN,SAAiBzhO,GACb,GAAgB,MAAZA,EACA,OAAO,EAEX,GAAIA,aAAoBwhO,GACpB,OAAO,EAEX,MAAM9lR,EAAMskD,EAASl4D,OAAOC,aACtBq7E,EAAQpjB,EACd,OAAY,MAAPtkD,GAAeA,IAAQ8lR,GAAMz5R,cACL,mBAAlBq7E,EAAMs+M,SACY,mBAAlBt+M,EAAMu+M,SACO,MAApBv+M,EAAMrqD,YAOlB,SAAWyoQ,GAMPA,EAAM3rO,OALN,SAAgBomN,EAAOxyQ,EAAU,IAC7B,MAAO,CACHwyQ,MAAOA,EAAM5rQ,IAAKsrO,GAASA,EAAK9lL,OAAOpsD,MA2C/C+3R,EAAMF,SAvCN,SAAkBj1Q,GACd,MAAM4vP,EAAQ,GAyBd,OAxBIjxQ,MAAMD,QAAQshB,GACd4vP,EAAM3vQ,QAAQ+f,IAGVA,EAAK4vP,OACLA,EAAM3vQ,QAAQ+f,EAAK4vP,OAEnB5vP,EAAKoF,OACLpF,EAAKoF,MAAMwjB,QAASxmC,IACE,MAAdA,EAAKysC,QACLzsC,EAAKysC,MAAQ,QAEjB+gO,EAAM3vQ,KAAKmC,KAGf4d,EAAKmsP,OACLnsP,EAAKmsP,MAAMvjO,QAASyuB,IACE,MAAdA,EAAKxoB,QACLwoB,EAAKxoB,MAAQ,QAEjB+gO,EAAM3vQ,KAAKo3D,MAIhBu4M,EAAM5rQ,IAAKsrO,IACd,MAAMtwO,EAAOswO,EAAKzgM,MAClB,GAAI7vC,EAAM,CACN,GAAI,GAAKmyO,SAAS5F,MAAMvsO,GACpB,OAAO,GAAKhD,OAAOszO,GAEvB,GAAI,GAAK6B,SAAS5F,MAAMvsO,GACpB,OAAO,GAAKhD,OAAOszO,GAG3B,MAAM,IAAI7uO,MAAM,yEA3C5B,CA+CG,KAAU,GAAQ,KCtgCrB,MAAM80R,GAAkB,sBAClBC,GAAeznG,GAAQ,cACtB,MAAM,WAAkB,GAC3B,cACI,OAAOtwL,KAAKg4R,aAEhB,YAAYnzR,GACR7E,KAAKi4R,WAAWpzR,GAEpB,aACI,OAAO7E,KAAK6wQ,MAAM/yQ,IAAI,UAAW,IAErC,WAAWke,EAASrc,EAAU,IAC1BK,KAAK6wQ,MAAMvuP,IAAI,UAAWtG,EAASrc,GAEvC,QACIg/E,MAAM10D,QACNjqB,KAAK6wQ,MAAMzoP,GAAG,WAAakpP,IACvB,MAAM9yQ,EAAM8yQ,EAAS9yQ,IACT,YAARA,EACAwB,KAAKk4R,cAAcl4R,KAAKg4R,cAEX,SAARx5R,GACLwB,KAAKivR,WAAWjvR,KAAK44I,aAG7B54I,KAAKivR,WAAWjvR,KAAK44I,WACrB54I,KAAKk4R,cAAcl4R,KAAKg4R,cAE5B,WAAWp7O,GACHgqE,GAASsB,uBACTloH,KAAKiwP,SAAS,CACVkoC,cAAex6R,OAAO+rD,OAAO,GAAI9M,GACjC,CAACk7O,IAAkB,CACfxzQ,MAAO3mB,OAAO+rD,OAAO,GAAI9M,MAKzC,cAAc5gC,GACN4qG,GAASsB,sBACTloH,KAAKiwP,SAAS,CACV,CAAC6nC,IAAkB,CACfzoQ,KAAMrT,EAAU,EAAU6zK,aAAa7zK,GAAW,MAK1Dhc,KAAKiwP,SAAS,CACV,CAAC6nC,IAAkB,CACf9yR,KAAMgX,MAM1B,IAAWo8Q,OA+DR,KAAc,GAAY,KA9Dfz1N,OAAO,CACbphE,KAAMw2R,GACNlrQ,KAAMkrQ,GACNz6J,OAAQ,CACJ,wBACA,kCACA1W,GAASsB,sBACH,CACE,kBACA,8CACA,eAAe4vK,GAAgBhiL,OAAO,SACtC,UACA,oBACF9mG,KAAK,IACL,gBAAgB8oR,GAAgBhiL,OAAO,QAC7C,QACF9mG,KAAK,IACPY,MAAO,CACH,IAAK,CACDggC,KAAM,UACNC,OAAQ,QAEZhH,KAAM,CACF+G,KAAM,UACNC,OAAQ,UACRxe,MAAO,GACPoC,OAAQ,KAEZzuB,KAAM,CACF4qC,KAAM,UACNkxE,SAAU,GACVC,WAAY,gCAEhBz7F,KAAM,CACFhB,MAAO,CACH0qI,WAAY,cACZx8H,SAAU,SACVgE,OAAQ,EACRC,QAAS,IAGjB0hQ,cAAe,CACX7zQ,MAAO,CACH8V,SAAU,WAGlB,CAAC09P,IAAkB,CACf1jD,KAAM,GACNunC,KAAM,GACNjpC,OAAQ,SACRF,OAAQ,SACRluN,MAAO,CACHi/E,UAAW,SACX03E,cAAe,SACf12J,QAAS,aACTkS,QAAS,QACTD,OAAQ,OAKxB,GAAKk9M,SAASn9F,SAASwhJ,GAAcK,IAEzC,SAAWA,GAEP,MAAMpyC,UAAa,GACf,cAAc/oO,EAAMtd,EAAU,IAC1B,IAAIuG,EAAMy4E,MAAMk4K,cAAc55O,EAAMtd,GAKpC,OAJIK,KAAK0zP,UAAUxtP,EAJL,aAKVlG,KAAKk4R,gBACLhyR,EAAMlG,KAAK2zP,aAAaztP,EANd,YAQPA,EAEX,OAAO28Q,GACH,GAAIj8J,GAASsB,sBACTvpC,MAAMlzB,OAAOo3N,OAEZ,CACD,MAAMl+Q,EAAO3E,KAAK6xO,KACZjiO,EAAQjS,OAAO+rD,OAAO,GAAKm5N,GAAgBl+Q,EAAKiuQ,mBAC/ChjQ,EAAMkoR,IACbn5M,MAAMlzB,OAAO77C,GACRizQ,IAAgB,EAAUxnQ,IAAIwnQ,EAAciV,KAC7C93R,KAAKk4R,cAAcrV,IAI/B,cAAcA,GACV,GAAIj8J,GAASsB,sBACTvpC,MAAMlzB,OAAOo3N,OAEZ,CACD,MAAMl+Q,EAAO3E,KAAK6xO,KACZwmD,GAAaxV,GAAgBl+Q,EAAKiuQ,YAAYklB,IAG9C9yR,EAAO,EAAIwyL,UAAU7yL,EAAKqzR,aAAcrzR,EAAKi0I,UAAWy/I,EAAW,CACrE/5J,YAAat+H,KAAKurN,MAAM1+L,KAAKq4D,MAE3Bt1E,EAAQ,CACV,CAACkoR,IAAkB,EAAU3xR,MAAM,GAAIkyR,EAAW,CAAErzR,UAExD25E,MAAMlzB,OAAO77C,KAIzBwoR,EAAUpyC,KAAOA,EACjB,SAAWA,GACPA,EAAKrjL,OAAO,CACRuvL,UAAW,CAAC,SA9CE,WA+Cd5yM,QAASsnE,GAASsB,sBACZ,GACA,CACEtrE,KAlDM,UAmDN5gC,QAnDM,aAsDlB,GAAS03N,SAASn9F,SAASwhJ,GAAc/xC,GAV7C,CAWGA,EAAOoyC,EAAUpyC,OAASoyC,EAAUpyC,KAAO,KAxDlD,CAyDG,KAAc,GAAY,KCpLR,GAAKyH,OAAO,CAC7Br8M,MAAO,UCAJ,SAAS,GAAUq0C,EAAShgF,EAAW,QAC1C,MAAO,CACH,CACIggF,UACAhgF,YAEJ,CACIggF,QAAS,OACThgF,SAAU,UAIf,SAAS,GAAY2rC,EAAOuxB,EAAQhjE,EAAU,IACjD,MAAMusC,EAAW,CACbmvO,gBAAiBjqO,EACjBksF,OAAQ,GAAUlsF,EAAOzxC,EAAQ8F,UACjCmK,MAAO,CACH,CAACwhC,GAAQzzC,OAAO+rD,OAAO,GAAI,GAAK+xN,YAIxC,OADa97Q,EAAQQ,QAAU,IACnBstP,OAAO,EAAUtnP,MAAM+lC,EAAUy2B,EAAQ,CAAEvxB,WCtBvC,GAAY,OAAQ,CACpCxhC,MAAO,CACH0V,KAAM,CACFgqN,SAAU,OACVE,UAAW,WCHK,GAAKie,OAAO,CACpCr8M,MAAO,gBACPksF,OAAQ,CACJ,CACI73C,QAAS,OACThgF,SAAU,QAEd,CACIggF,QAAS,OACThgF,SAAU,UAEd,CACIggF,QAAS,OACThgF,SAAU,cAEd,CACIggF,QAAS,OACThgF,SAAU,aAGlBmK,MAAO,CACH0V,KAAM3nB,OAAO+rD,OAAO/rD,OAAO+rD,OAAO,GAAI,GAAK+xN,UAAW,CAAEnsC,SAAU,OAAQE,UAAW,SACrF35C,OAAQl4L,OAAO+rD,OAAO/rD,OAAO+rD,OAAO,GAAI,GAAK+xN,UAAW,CAAEnsC,SAAU,OAAQ77M,OAAQ,GAAIoc,OAAQ,YAChGyoP,WAAY36R,OAAO+rD,OAAO/rD,OAAO+rD,OAAO,GAAI,GAAKgyN,WAAY,CAAEtnC,KAAM,MAAOunC,KAAM,GAAI76J,SAAU,KAChGy3K,SAAU56R,OAAO+rD,OAAO/rD,OAAO+rD,OAAO,GAAI,GAAKgyN,WAAY,CAAEzqC,MAAO,QCzBtD,GAAY,SAAU,CACxCrhO,MAAO,CACH0V,KAAM,CACF8qN,MAAO,MACPC,MAAO,MACPQ,KAAM,UCHM,GAAK4c,OAAO,CAChCr8M,MAAO,WACPtF,WAAW,EACXwxF,OAAQ,CACJ,CACI73C,QAAS,OACThgF,SAAU,QAEd,CACIggF,QAAS,UACThgF,SAAU,OAEd,CACIggF,QAAS,OACThgF,SAAU,UAGlBmK,MAAO,CACH0V,KAAM3nB,OAAO+rD,OAAO/rD,OAAO+rD,OAAO,GAAI,GAAK+xN,UAAW,CAAE+c,QAnB1C,KAoBdvnR,IAAKtT,OAAO+rD,OAAO/rD,OAAO+rD,OAAO,GAAI,GAAK+xN,UAAW,CAAErrC,MAAO,MAAOX,MAAO,MAAOxyI,GApBrE,GAoBwF+B,GApBxF,MAsBlB1iE,UAAW,CACPk8P,QAAS,CACL,IAAIr6R,GAAG,QAAE4xO,IACL,MAAM7+C,EAAe,EAAUA,aAAa/yL,GACxC+yL,IAEA/yL,EAAI00B,WAAW10B,GAAK,KAExB,MAAMo0C,EAAIw9L,EAAQx9L,EACZC,EAAIu9L,EAAQv9L,EACZzvC,EAAIgtO,EAAQ1+M,MACZxwB,EAAIkvO,EAAQt8M,OAGZurE,EAAKkyF,EAAerwL,EAAI1C,EAAIA,EAE5B6+F,EADQ,SAFHj6F,EAAI,GAITk6F,EAFQ,QAEK+B,EAGby5L,EAAUlmP,EAAIxvC,EAAI,EAClBq5G,EAAS7pE,EAAIxvC,EACb21R,EAAWlmP,EAAIwsD,EACf25L,EAAYD,EAAW15L,EACvB45L,EAAcpmP,EAAI3xC,EAAIm+F,EACtB65L,EAAermP,EAAI3xC,EA0CzB,MAAO,CAAEtD,EAxCI,CACT,IATUg1C,EAWVmmP,EACA,IAZUnmP,EAcVqmP,EACA,IACArmP,EACAqmP,EAAc37L,EACdw7L,EAAUz7L,EACV67L,EACAJ,EACAI,EACA,IACAJ,EAAUz7L,EACV67L,EACAz8K,EACAw8K,EAAc37L,EACdmf,EACAw8K,EACA,IACAx8K,EACAs8K,EACA,IACAt8K,EACAs8K,EAAWz7L,EACXw7L,EAAUz7L,EACV27L,EACAF,EACAE,EACA,IACAF,EAAUz7L,EACV27L,EAzCUpmP,EA2CVmmP,EAAWz7L,EA3CD1qD,EA6CVmmP,EACA,KAEa1pR,KAAK,SAIlC8pR,KAAM,CACF/7I,SAAS,EACTvqH,SAAQ,EAAC,KAAE7tB,MAEA,CAAE4tC,EAAG,EAAGC,EADC7tC,EAAKsO,KAAK,kBAG9B,aAAY,KAAEtO,EAAI,KAAE4d,EAAI,OAAE+rH,IACtB,GAAe,IAAXA,EAAc,CACd,MAAM/yE,EAAO52D,EAAKi4H,UACZ38E,EAAWt7C,EAAKsO,KAAK,gBACT,MAAdsP,EAAKqQ,QACLrQ,EAAKqQ,MAAQqtB,GAEjB,MAAMjF,EAAM,EACNjmB,EAAMwmC,EAAK9nC,OAAS,EACpBuR,EAAU,EAAUwkB,MAAMjnC,EAAKqQ,MAAQ07G,EAAQtzF,EAAKjmB,GACtDiQ,IAAYib,GACZt7C,EAAKsO,KAAK,CACNqS,KAAM,CAAEkzQ,QAASxzP,GACjB/zB,IAAK,CACDgsF,GAAIj4D,EACJg6D,GAAIh6D,UCnHT,GAAY,UAAW,CAC1Cp1B,MAAO,CACH0V,KAAM,CACF8qN,MAAO,MACPC,MAAO,MACPZ,MAAO,MACPC,MAAO,UCPnB,IAAI,GAAkC,SAAU1wO,EAAG6O,GAC/C,IAAI1P,EAAI,GACR,IAAK,IAAIY,KAAKC,EAAOrB,OAAOkB,UAAUC,eAAe1B,KAAK4B,EAAGD,IAAM8O,EAAEpK,QAAQ1E,GAAK,IAC9EZ,EAAEY,GAAKC,EAAED,IACb,GAAS,MAALC,GAAqD,mBAAjCrB,OAAOsxG,sBACtB,KAAIhyG,EAAI,EAAb,IAAgB8B,EAAIpB,OAAOsxG,sBAAsBjwG,GAAI/B,EAAI8B,EAAE4C,OAAQ1E,IAC3D4Q,EAAEpK,QAAQ1E,EAAE9B,IAAM,GAAKU,OAAOkB,UAAUwxD,qBAAqBjzD,KAAK4B,EAAGD,EAAE9B,MACvEkB,EAAEY,EAAE9B,IAAM+B,EAAED,EAAE9B,KAE1B,OAAOkB,GAKJ,MAAM,WAAa,GACtB,aACI,OAAO6B,KAAK+4R,YAEhB,WAAW3tG,GACPprL,KAAKg5R,UAAU5tG,GAEnB,YACI,OAAOprL,KAAKgzQ,cAAc,kBAE9B,UAAUl/M,EAAQn0D,GAOd,OANc,MAAVm0D,EACA9zD,KAAKi5R,eAGLj5R,KAAKy6J,cAAc,iBAAkB,GAAKy+H,eAAeplO,GAASn0D,GAE/DK,KAEX,eAEI,OADAA,KAAKizQ,iBAAiB,kBACfjzQ,OAGf,SAAWm5R,GACP,SAASD,EAAeplO,GACpB,MAAyB,iBAAXA,EACRA,EACAA,EACGvtD,IAAKxH,GACFmC,MAAMD,QAAQlC,GACPA,EAAEiQ,KAAK,KAEd,GAAMonD,YAAYr3D,GACX,GAAGA,EAAEwzC,MAAMxzC,EAAEyzC,IAEjB,IAENxjC,KAAK,KAElBmqR,EAAKD,eAAiBA,EACtBC,EAAKx2N,OAAO,CACR,UAAU2uM,GACN,MAAM,OAAEx9M,GAAWw9M,EAAUt9B,EAAS,GAAOs9B,EAAU,CAAC,WACxD,GAAIx9M,EAAQ,CACR,MAAMvxC,EAAO22Q,EAAeplO,GACxBvxC,GACA,EAAU4rK,UAAU6lD,EAAQ,uBAAwBzxN,GAG5D,OAAOyxN,KA1BnB,CA6BG,KAAS,GAAO,KCjEI,GAAY,UAAW,GAAI,CAAE7zO,OAAQ,KCApC,GAAY,WAAY,GAAI,CAAEA,OAAQ,KCF9D,IAAI,GAAkC,SAAUnB,EAAG6O,GAC/C,IAAI1P,EAAI,GACR,IAAK,IAAIY,KAAKC,EAAOrB,OAAOkB,UAAUC,eAAe1B,KAAK4B,EAAGD,IAAM8O,EAAEpK,QAAQ1E,GAAK,IAC9EZ,EAAEY,GAAKC,EAAED,IACb,GAAS,MAALC,GAAqD,mBAAjCrB,OAAOsxG,sBACtB,KAAIhyG,EAAI,EAAb,IAAgB8B,EAAIpB,OAAOsxG,sBAAsBjwG,GAAI/B,EAAI8B,EAAE4C,OAAQ1E,IAC3D4Q,EAAEpK,QAAQ1E,EAAE9B,IAAM,GAAKU,OAAOkB,UAAUwxD,qBAAqBjzD,KAAK4B,EAAGD,EAAE9B,MACvEkB,EAAEY,EAAE9B,IAAM+B,EAAED,EAAE9B,KAE1B,OAAOkB,GAIS,GAAKsvP,OAAO,CAC5Br8M,MAAO,OACPksF,OAAQ,CACJ,CACI73C,QAAS,OACThgF,SAAU,MAEd,CACIggF,QAAS,OACThgF,SAAU,QAEd,CACIggF,QAAS,OACThgF,SAAU,UAGlBmK,MAAO,CACHwpR,GAAI,CACA9pD,SAAU,OACVE,UAAW,OACX5/L,KAAM,OACNC,OAAQ,OACRouJ,cAAe,OAEnB34K,KAAM,CACFsqB,KAAM,OACNC,OAAQ,OACRskM,YAAa,IAGrB,UAAUm9B,GACN,MAAM,KAAEpiO,GAASoiO,EAAUt9B,EAAS,GAAOs9B,EAAU,CAAC,SAItD,OAHIpiO,GACA,EAAUi/I,UAAU6lD,EAAQ,kBAAmB9kM,GAE5C8kM,KChDf,IAAI,GAAkC,SAAUh1O,EAAG6O,GAC/C,IAAI1P,EAAI,GACR,IAAK,IAAIY,KAAKC,EAAOrB,OAAOkB,UAAUC,eAAe1B,KAAK4B,EAAGD,IAAM8O,EAAEpK,QAAQ1E,GAAK,IAC9EZ,EAAEY,GAAKC,EAAED,IACb,GAAS,MAALC,GAAqD,mBAAjCrB,OAAOsxG,sBACtB,KAAIhyG,EAAI,EAAb,IAAgB8B,EAAIpB,OAAOsxG,sBAAsBjwG,GAAI/B,EAAI8B,EAAE4C,OAAQ1E,IAC3D4Q,EAAEpK,QAAQ1E,EAAE9B,IAAM,GAAKU,OAAOkB,UAAUwxD,qBAAqBjzD,KAAK4B,EAAGD,EAAE9B,MACvEkB,EAAEY,EAAE9B,IAAM+B,EAAED,EAAE9B,KAE1B,OAAOkB,GAKc,GAAKsvP,OAAO,CACjCr8M,MAAO,aACPksF,OAAQ,CACJ,CACI73C,QAAS,OACThgF,SAAU,QAEdmhH,GAASsB,sBACH,CACEziC,QAAS,gBACThgF,SAAU,gBACVwV,SAAU,CACN,CACIwqE,QAAS,MACTnnF,GAAI,EAAIA,GAAG0sG,MACXvlG,SAAU,QACV6e,MAAO,CACH+M,MAAO,OACPoC,OAAQ,OACRjB,SAAU,SACVu8F,gBAAiB,cACjBxrB,UAAW,SACX/sE,OAAQ,EACRC,QAAS,UACTgwH,UAAW,aACXliI,QAAS,OACT80Q,WAAY,SACZC,eAAgB,aAK9B,CACE7zM,QAAS,OACThgF,SAAU,QACVmK,MAAO,CACHoqO,WAAY,YAI5BpqO,MAAO,CACH0V,KAAM3nB,OAAO+rD,OAAO/rD,OAAO+rD,OAAO,GAAI,GAAK+xN,UAAW,CAAEnsC,SAAU,OAAQE,UAAW,SACrF2oD,cAAe,CACX7oD,SAAU,OACVE,UAAW,QAEfz3B,MAAO,CACHzzL,MAAO,CACHw8F,SAAU,MAItB,UAAUwwJ,GACN,MAAM,KAAEtsQ,GAASssQ,EAAUt9B,EAAS,GAAOs9B,EAAU,CAAC,SAItD,OAHItsQ,GACA,EAAUmpL,UAAU6lD,EAAQ,mBAAoBhvO,GAE7CgvO,GAEX13M,UAAW,CACPt3B,KAAM,CACF,IAAIA,GAAM,KAAE6sO,EAAI,KAAEhlN,EAAI,QAAEkjN,EAAO,KAAEvpO,EAAI,MAAEoJ,IACnC,KAAIpJ,aAAgB4xF,aAGf,CAED,MAAM9zE,EAAQ1U,EAAM0U,OAAS,GACvBi1Q,EAAY,CAAEv0R,OAAMqsB,OAAQ,EAAGoC,OAAQ,QACvC+lQ,EAAY77R,OAAO+rD,OAAO,CAAEqvI,mBAAoB,UAAYz0K,GAC5D4tN,EAAW,GAAKuB,QAAQvB,SAQ9B,OAPA,EAAY90O,KAAK80O,EAAS5vN,IAAKtiB,KAAMu5R,EAAW,CAC5C1nD,OACAhlN,OACArmB,OACAupO,UACAngO,MAAO4pR,IAEJ,CAAE5pP,KAAMtrB,EAAMuyF,OAAS,MAf9BrwG,EAAKgN,YAAcxO,GAkB3B,SAASA,GAAM,QAAE+qO,EAAO,KAAEvpO,IACtB,GAAIA,aAAgB2kG,WAChB,OAAO4kI,EAAQr1K,iBC/Fd,GAAY,QAAS,CACtC9qD,MAAO,CACH6G,MAAO,CACH64N,SAAU,OACVE,UAAW,SAGnBx4M,UAAW4kP,MACZ,CACCn2Q,SAAU,UCTe,GAAY,iBAAkB,CACvD63H,OAAQ,CACJ,CACI73C,QAAS,OACThgF,SAAU,aACVmK,MAAO,CACHigC,OAAQ,SAGhB,CACI41C,QAAS,QACThgF,SAAU,SAEd,CACIggF,QAAS,OACThgF,SAAU,SACVmK,MAAO,CACHggC,KAAM,SAGd,CACI61C,QAAS,OACThgF,SAAU,UAGlBmK,MAAO,CACHo/I,WAAY,CACRsgF,UAAW,EACXE,WAAY,EACZj9L,EAAG,GACHC,EAAG,GACH5C,KAAM,WAEVlZ,OAAQ,CACJ44M,SAAU,OACVE,UAAW,OACX3/L,OAAQ,UACRskM,YAAa,GAEjB19N,MAAO,CAEH64N,UAAW,EACXE,WAAY,EACZj9L,EAAG,GACHC,EAAG,KAGXxb,UAAW4kP,OC/Cc,GAAY,iBAAkB,CACvDt+I,OAAQ,CACJ,CACI73C,QAAS,OACThgF,SAAU,QAEd,CACIggF,QAAS,QACThgF,SAAU,SAEd,CACIggF,QAAS,OACThgF,SAAU,UAGlBmK,MAAO,CACH0V,KAAM,CACFgqN,SAAU,OACVE,UAAW,OACX3/L,OAAQ,UACRD,KAAM,UACNukM,YAAa,GAEjB19N,MAAO,CAEH64N,SAAU,MACVE,WAAY,GACZj9L,EAAG,GACHC,EAAG,GACHs8L,oBAAqB,aAG7B93M,UAAW4kP,OChCe,GAAY,kBAAmB,CACzD5kP,UAAW4kP,KACXt+I,OAAQ,CACJ,CACI73C,QAAS,UACThgF,SAAU,cAEd,CACIggF,QAAS,QACThgF,SAAU,SAEd,CACIggF,QAAS,UACThgF,SAAU,SACVmK,MAAO,CACHggC,KAAM,SAGd,CACI61C,QAAS,OACThgF,SAAU,UAGlBmK,MAAO,CACH8mB,OAAQ,CACJ+4M,MAAO,MACPC,MAAO,MACPU,MAAO,MACPC,MAAO,MACPxgM,OAAQ,UACRskM,YAAa,GAEjBnlF,WAAY,CACRygF,MAAO,MACPC,MAAO,MACPU,MAAO,MACPC,MAAO,MACPzgM,KAAM,WAEVn5B,MAAO,CAEH64N,SAAU,MACVE,UAAW,MAEX4E,KAAM,MACNunC,KAAM,MACN7sC,oBAAqB,eJlC1B,MKbM,GAAO,GAAS2e,OAAO,CAChCr8M,MAAO,OACPksF,OAAQ,CACJ,CACI73C,QAAS,OACThgF,SAAU,OACVioP,cAAe,QACf99O,MAAO,CACHggC,KAAM,OACN+gE,OAAQ,UACR9gE,OAAQ,cACR4pP,cAAe,UAGvB,CACIh0M,QAAS,OACThgF,SAAU,OACVioP,cAAe,QACf99O,MAAO,CACHggC,KAAM,OACNquJ,cAAe,UAI3BruL,MAAO,CACHysG,MAAO,CACHm4H,YAAY,EACZklD,eAAgB,SAEpBlyQ,KAAM,CACF2sN,YAAa,IAEjBl5K,KAAM,CACFprB,OAAQ,OACRskM,YAAa,EACbN,aAAc,cCnCA,GAAK4Z,OAAO,CAClCr8M,MAAO,cACPksF,OAAQ,CACJ,CACI73C,QAAS,OACThgF,SAAU,SACVmK,MAAO,CACHggC,KAAM,SAGd,CACI61C,QAAS,OACThgF,SAAU,OACVmK,MAAO,CACHggC,KAAM,OACN+gE,OAAQ,aAIpB/gG,MAAO,CACHqrD,KAAM,CACFu5K,YAAY,EACZ3kM,OAAQ,UACRskM,YAAa,GACbulD,eAAgB,QAChB7lD,aAAc,CACVr2O,KAAM,OACNqyC,OAAQ,OACRtyC,EAAG,uBACH4vB,SAAU,GAEdwmN,aAAc,CACVn2O,KAAM,OACNqyC,OAAQ,OACRtyC,EAAG,oCACH4vB,SAAU,IAGlBwsQ,OAAQ,CACJnlD,YAAY,EACZJ,KAAM,EACNunC,KAAM,EACN9rO,OAAQ,UACR4B,cAAe,GACf0iM,YAAa,GACbulD,eAAgB,QAChB7lD,aAAc,CACVr2O,KAAM,OACND,EAAG,uBACHsyC,OAAQ,OACR1iB,SAAU,GAEdwmN,aAAc,CACVn2O,KAAM,OACNqyC,OAAQ,OACRtyC,EAAG,oCACH4vB,SAAU,OCxDA,GAAKsgO,OAAO,CAClCr8M,MAAO,cACPksF,OAAQ,CACJ,CACI73C,QAAS,OACThgF,SAAU,UACVmK,MAAO,CACHggC,KAAM,SAGd,CACI61C,QAAS,OACThgF,SAAU,OACVmK,MAAO,CACHggC,KAAM,OACN+gE,OAAQ,aAIpB/gG,MAAO,CACHqrD,KAAM,CACFu5K,YAAY,EACZ3kM,OAAQ,UACRskM,YAAa,EACbulD,eAAgB,QAChB7lD,aAAc,CACVpuJ,QAAS,OACT51C,OAAQ,UACRtyC,EAAG,mCAGX24O,QAAS,CACL1B,YAAY,EACZ3kM,OAAQ,UACRskM,YAAa,EACbulD,eAAgB,YC/BrB,MAAM,WAAa,GACtB,WACI,OAAO15R,KAAK45R,UAEhB,SAAS/0R,GACL7E,KAAK65R,QAAQh1R,GAEjB,UACI,OAAO7E,KAAK6wQ,MAAM/yQ,IAAI,QAE1B,QAAQuxB,EAAM1vB,EAAU,IAOpB,OANY,MAAR0vB,EACArvB,KAAK85R,WAAWn6R,GAGhBK,KAAK6wQ,MAAMvuP,IAAI,OAAQ+M,EAAM1vB,GAE1BK,KAEX,WAAWL,EAAU,IACjB,OAAOK,KAAK6wQ,MAAMjzP,OAAO,OAAQje,IA8CzC,IAAWo6R,IA3CX,SAAWA,GACP,MAAM/zC,UAAa,GACf,OACIrnK,MAAMh5E,OACN3F,KAAK6xO,KAAKzpN,GAAG,WAAY,KACApoB,KAAKurN,MAAM7rN,KAAKs6R,0BAA0Bh6R,KAAK6xO,OAEhE7xO,KAAKi6R,wBAIjB,cAAch9Q,GACV,MAAM/W,EAAMy4E,MAAMk4K,cAAc55O,GAChC,OAAOjd,KAAKqgR,aAAan6Q,EAAK8/O,EAAK5kM,OAAQ,IAAMphD,KAAKi6R,uBAE1D,sBACI,MAAMnoQ,EAAY9xB,KAAK2T,UAAUumR,UACjC,GAAIpoQ,EAAW,CACX,MAAMqoQ,EAAQn6R,KAAKuqC,EAAEzY,GAAWjU,QAC1Bq7D,EAAYl5E,KAAKurN,MAAM7rN,KAAK06R,iBAAiBp6R,KAAK6xO,MACpD34J,IACyB,iBAAdA,EACPihN,EAAM9qQ,KAAK6pD,GAGXihN,EAAMpqQ,OAAOmpD,MAMjC6gN,EAAK/zC,KAAOA,EACZ,SAAWA,GACPA,EAAK5kM,OAAS,OACd4kM,EAAKrjL,OAAO,CACRuvL,UAAW,CAAClM,EAAK5kM,QACjB9B,QAAS,CACLjwB,KAAM22N,EAAK5kM,UAGnB,GAASsyL,SAASn9F,SAAS,YAAayvG,GAR5C,CASGA,EAAO+zC,EAAK/zC,OAAS+zC,EAAK/zC,KAAO,KAzCxC,CA0CG,KAAS,GAAO,MACR+zC,GA4BR,KAAS,GAAO,KA3BVp3N,OAAO,CACR91C,KAAM,YACNywG,OAAQ,CACJ,CACI73C,QAAS,OACThgF,SAAU,QAEd9H,OAAO+rD,OAAO,GAAI,GAAOulM,0BACzB,CACIxpK,QAAS,OACThgF,SAAU,UAGlBmK,MAAO,CACH0V,KAAM,CACFsqB,KAAM,OACNC,OAAQ,OACRy/L,SAAU,OACVE,UAAW,QAEf6qD,GAAI,CACA/qD,SAAU,OACVE,UAAW,WAIvB,GAAKkE,SAASn9F,SAAS,OAAQwjJ,IAEnC,SAAWA,GACPA,EAAKO,kBAAoB,GAAS/7R,OAAO,CACrCgD,KAAM,mBAFd,CAIG,KAAS,GAAO,KCxGnB,IAAI,GAA0C,SAAU2kP,EAAYx+O,EAAQlJ,EAAK2nP,GAC7E,IAA2H5oP,EAAvHD,EAAImJ,UAAU9E,OAAQ5D,EAAIT,EAAI,EAAIoK,EAAkB,OAATy+O,EAAgBA,EAAOxoP,OAAOkrE,yBAAyBnhE,EAAQlJ,GAAO2nP,EACrH,GAAuB,iBAAZ9gL,SAAoD,mBAArBA,QAAQ+gL,SAAyBroP,EAAIsnE,QAAQ+gL,SAASF,EAAYx+O,EAAQlJ,EAAK2nP,QACpH,IAAK,IAAIlpP,EAAIipP,EAAWvkP,OAAS,EAAG1E,GAAK,EAAGA,KAASM,EAAI2oP,EAAWjpP,MAAIc,GAAKT,EAAI,EAAIC,EAAEQ,GAAKT,EAAI,EAAIC,EAAEmK,EAAQlJ,EAAKT,GAAKR,EAAEmK,EAAQlJ,KAAST,GAChJ,OAAOT,EAAI,GAAKS,GAAKJ,OAAOC,eAAe8J,EAAQlJ,EAAKT,GAAIA,GAGzD,MAAM,WAAiB,GAC1B,YAAY4B,GACRg/E,QACA3+E,KAAK47B,MAAQ,GACb57B,KAAK+mD,SAAW,EAChB/mD,KAAKw5H,UAAY,EACjBx5H,KAAKu6R,YAAc,EACnBv6R,KAAKw6R,UAAY,EACjBx6R,KAAKL,QAAUhC,OAAO+rD,OAAO/rD,OAAO+rD,OAAO,GAAI,GAASwuL,gBAAiBv4O,GACzEK,KAAKurN,MAAMjyI,MAAMlxD,GAAG,gBAAiBpoB,KAAKy6R,eAAgBz6R,MAE9D,YACI,OAAOA,KAAKL,QAAQ4rN,MAExB,iBACI,GAAIvrN,KAAKwN,SACL,OAEJ,MACMktR,IADM,IAAIpwR,MAAO83D,UACLpiE,KAAKw6R,WAAa,IAChCE,EAAK16R,KAAK47B,OACT57B,KAAKu6R,aAAev6R,KAAKw5H,WAAakhK,EAAK16R,KAAK+mD,UACjD/mD,KAAKkpI,OACLlpI,KAAK2W,SAGL3W,KAAKu6R,aAAe,EAG5B,OACIv6R,KAAKkpB,QAAQ,QAEjB,QACIlpB,KAAKu6R,YAAc,EACnBv6R,KAAKw6R,WAAY,IAAIlwR,MAAO83D,UAEhC,UACIpiE,KAAKurN,MAAMjyI,MAAM7wD,IAAI,gBAAiBzoB,KAAKy6R,eAAgBz6R,OAGnE,GAAW,CACP,GAAWiwH,WACZ,GAASpxH,UAAW,UAAW,OAO/B,KAAa,GAAW,KALdq5O,eAAiB,CACtBt8M,MAAO,GACPmrB,SAAU,EACVyyE,UAAW,GCrDZ,MAAM,WAAagsH,GACtB,YAAYj6B,GACR5sI,QACA3+E,KAAKurN,MAAQA,EACbvrN,KAAK2F,OAET,cACI,OAAO3F,KAAKurN,MAAM5rN,QAEtB,YACI,OAAOK,KAAKurN,MAAMjyI,MAEtB,WACI,OAAOt5E,KAAKurN,MAAM1+L,KAEtB,SChBJ,ICAW,GDAP,GAA0C,SAAUq5N,EAAYx+O,EAAQlJ,EAAK2nP,GAC7E,IAA2H5oP,EAAvHD,EAAImJ,UAAU9E,OAAQ5D,EAAIT,EAAI,EAAIoK,EAAkB,OAATy+O,EAAgBA,EAAOxoP,OAAOkrE,yBAAyBnhE,EAAQlJ,GAAO2nP,EACrH,GAAuB,iBAAZ9gL,SAAoD,mBAArBA,QAAQ+gL,SAAyBroP,EAAIsnE,QAAQ+gL,SAASF,EAAYx+O,EAAQlJ,EAAK2nP,QACpH,IAAK,IAAIlpP,EAAIipP,EAAWvkP,OAAS,EAAG1E,GAAK,EAAGA,KAASM,EAAI2oP,EAAWjpP,MAAIc,GAAKT,EAAI,EAAIC,EAAEQ,GAAKT,EAAI,EAAIC,EAAEmK,EAAQlJ,EAAKT,GAAKR,EAAEmK,EAAQlJ,KAAST,GAChJ,OAAOT,EAAI,GAAKS,GAAKJ,OAAOC,eAAe8J,EAAQlJ,EAAKT,GAAIA,GAOzD,MAAM,WAAkB,GAC3B,YAAYwtN,GACR5sI,QACA3+E,KAAKurN,MAAQA,EACb,MAAM,UAAE53M,EAAS,SAAE+T,GAAa,GAAO6lO,gBAAgB,GAAUjwH,QACjEt9H,KAAKgvJ,WAAar7I,EAAUq7I,WAC5BhvJ,KAAK4xM,KAAOj+L,EAAUi+L,KACtB5xM,KAAKklF,IAAMvxE,EAAUuxE,IACrBllF,KAAKu3H,KAAO5jH,EAAU4jH,KACtBv3H,KAAKmzK,SAAWx/J,EAAUw/J,SAC1BnzK,KAAK26R,OAAShnR,EAAUgnR,OACxB36R,KAAKiuH,MAAQt6G,EAAUs6G,MACvBjuH,KAAKy3P,UAAY9jP,EAAU8jP,UAC3Bz3P,KAAKmsC,QAAUx4B,EAAUw4B,QACzBnsC,KAAK8xB,UAAY9xB,KAAKL,QAAQmyB,UAC9B9xB,KAAKmpI,QAAU,GAAUyxJ,UAAU56R,KAAK8xB,WACxC9xB,KAAKuqC,EAAEvqC,KAAK8xB,WACPoL,SAASl9B,KAAKmzP,gBAAgB,UAC9BpjO,OAAOrI,GACZ1nB,KAAKqzP,iBAET,YACI,OAAOrzP,KAAKurN,MAAMjyI,MAEtB,cACI,OAAOt5E,KAAKurN,MAAM5rN,QAEtB,iBACI,MAAMm3P,EAAO92P,KAAK6F,YAElB,OADA84E,MAAM00K,eAAeyD,EAAKxtO,QACnBtpB,KAMX,MAAM6N,EAAGgf,GAEL,MAAe,cAAXhf,EAAEtM,MAAqC,IAAbsM,EAAEqd,YAG5BlrB,KAAKL,QAAQs8C,QAASj8C,KAAKL,QAAQs8C,MAAMpuC,EAAGgf,MAG5Chf,EAAE0U,WAA2BrgB,IAAnB2L,EAAE0U,KAAKs4Q,QACVhtR,EAAE0U,KAAKs4Q,UAEdhuQ,GAAQA,EAAKglN,MAAQ,GAAKqiC,OAAOrnP,EAAKglN,SAGtC7xO,KAAKklF,MAAQr3E,EAAEnG,QACf1H,KAAK8xB,YAAcjkB,EAAEnG,SACrB,KAAO2C,SAASrK,KAAKklF,IAAKr3E,EAAEnG,WAKpC,SAASlB,GACL,OAAOxG,KAAKurN,MAAM39F,SAAS4oI,eAAehwP,GAE9C,WAAW2gC,GACHnnC,KAAKL,QAAQm7R,wBACb3zP,EAAIle,iBAER,MAAMpb,EAAI7N,KAAKkuE,eAAe/mC,GACxBta,EAAO7sB,KAAKqnR,SAASx5Q,EAAEnG,QAC7B,GAAI1H,KAAKi8C,MAAMpuC,EAAGgf,GACd,OAEJ,MAAMklQ,EAAa/xR,KAAKurN,MAAM11J,WAAWhoD,EAAEof,QAASpf,EAAEqf,SAClDL,EACAA,EAAKm9P,WAAWn8Q,EAAGkkR,EAAWx/O,EAAGw/O,EAAWv/O,GAG5CxyC,KAAKurN,MAAMriM,QAAQ,iBAAkB,CACjCrb,IACA0kC,EAAGw/O,EAAWx/O,EACdC,EAAGu/O,EAAWv/O,IAI1B,QAAQrL,GACJ,GAAInnC,KAAK4xR,mBAAmBzqP,IAAQnnC,KAAKL,QAAQkyR,eAAgB,CAC7D,MAAMhkR,EAAI7N,KAAKkuE,eAAe/mC,GACxBta,EAAO7sB,KAAKqnR,SAASx5Q,EAAEnG,QAC7B,GAAI1H,KAAKi8C,MAAMpuC,EAAGgf,GACd,OAEJ,MAAMklQ,EAAa/xR,KAAKurN,MAAM11J,WAAWhoD,EAAEof,QAASpf,EAAEqf,SAClDL,EACAA,EAAK0rO,QAAQ1qP,EAAGkkR,EAAWx/O,EAAGw/O,EAAWv/O,GAGzCxyC,KAAKurN,MAAMriM,QAAQ,cAAe,CAC9Brb,IACA0kC,EAAGw/O,EAAWx/O,EACdC,EAAGu/O,EAAWv/O,KAK9B,cAAcrL,GACNnnC,KAAKL,QAAQo7R,2BACb5zP,EAAIle,iBAER,MAAMpb,EAAI7N,KAAKkuE,eAAe/mC,GACxBta,EAAO7sB,KAAKqnR,SAASx5Q,EAAEnG,QAC7B,GAAI1H,KAAKi8C,MAAMpuC,EAAGgf,GACd,OAEJ,MAAMklQ,EAAa/xR,KAAKurN,MAAM11J,WAAWhoD,EAAEof,QAASpf,EAAEqf,SAClDL,EACAA,EAAKo9P,cAAcp8Q,EAAGkkR,EAAWx/O,EAAGw/O,EAAWv/O,GAG/CxyC,KAAKurN,MAAMriM,QAAQ,oBAAqB,CACpCrb,IACA0kC,EAAGw/O,EAAWx/O,EACdC,EAAGu/O,EAAWv/O,IAI1B,mBAAmB3kC,EAAGgf,GACJ,MAAVhf,EAAE0U,OACF1U,EAAE0U,KAAO,IAEbviB,KAAKwrP,aAAa39O,EAAG,CACjBo+Q,YAAap/P,GAAQ,KACrBmuQ,gBAAiB,EACjBC,cAAe,CACX1oP,EAAG1kC,EAAEof,QACLulB,EAAG3kC,EAAEqf,WAGb,MAAM4pO,EAAO92P,KAAK6F,YAClB7F,KAAKs7P,uBAAuBxE,EAAK/D,eAAgBllP,EAAE0U,MACnDviB,KAAKgrP,mBAET,mBAAmBn9O,GAEf,OADa7N,KAAK0rP,aAAa79O,GACnBmtR,iBAAmB,EAEnC,YAAY7zP,GACR,MAAMt5B,EAAI7N,KAAKkuE,eAAe/mC,GACxBta,EAAO7sB,KAAKqnR,SAASx5Q,EAAEnG,QAC7B,GAAI1H,KAAKi8C,MAAMpuC,EAAGgf,GACd,OAEA7sB,KAAKL,QAAQu7R,yBACbrtR,EAAEob,iBAEN,MAAM8oQ,EAAa/xR,KAAKurN,MAAM11J,WAAWhoD,EAAEof,QAASpf,EAAEqf,SAClDL,EACAA,EAAKsuO,YAAYttP,EAAGkkR,EAAWx/O,EAAGw/O,EAAWv/O,IAGzCxyC,KAAKL,QAAQw7R,2BACbttR,EAAEob,iBAENjpB,KAAKurN,MAAMriM,QAAQ,kBAAmB,CAClCrb,IACA0kC,EAAGw/O,EAAWx/O,EACdC,EAAGu/O,EAAWv/O,KAGtBxyC,KAAKmuR,mBAAmBtgR,EAAGgf,GAE/B,YAAYsa,GACR,MAAM5kB,EAAOviB,KAAK0rP,aAAavkN,GACzB8zP,EAAgB14Q,EAAK04Q,cAC3B,GAAIA,GACAA,EAAc1oP,IAAMpL,EAAIla,SACxBguQ,EAAczoP,IAAMrL,EAAIja,QACxB,OAEwB,MAAxB3K,EAAKy4Q,kBACLz4Q,EAAKy4Q,gBAAkB,GAE3Bz4Q,EAAKy4Q,iBAAmB,EAExB,GADwBz4Q,EAAKy4Q,iBACNh7R,KAAKL,QAAQy7R,cAChC,OAEJ,MAAMvtR,EAAI7N,KAAKkuE,eAAe/mC,GACxB4qP,EAAa/xR,KAAKurN,MAAM11J,WAAWhoD,EAAEof,QAASpf,EAAEqf,SAChDL,EAAOtK,EAAK0pQ,YACdp/P,EACAA,EAAKkyO,YAAYlxP,EAAGkkR,EAAWx/O,EAAGw/O,EAAWv/O,GAG7CxyC,KAAKurN,MAAMriM,QAAQ,kBAAmB,CAClCrb,IACA0kC,EAAGw/O,EAAWx/O,EACdC,EAAGu/O,EAAWv/O,IAGtBxyC,KAAKwrP,aAAa39O,EAAG0U,GAEzB,UAAU1U,GACN7N,KAAKw7P,2BACL,MAAMv/L,EAAaj8D,KAAKkuE,eAAergE,GACjCkkR,EAAa/xR,KAAKurN,MAAM11J,WAAWoG,EAAWhvC,QAASgvC,EAAW/uC,SAElEL,EADO7sB,KAAK0rP,aAAa79O,GACbo+Q,YACdp/P,EACAA,EAAKmyO,UAAU/iM,EAAY81N,EAAWx/O,EAAGw/O,EAAWv/O,GAGpDxyC,KAAKurN,MAAMriM,QAAQ,gBAAiB,CAChCrb,EAAGouD,EACH1pB,EAAGw/O,EAAWx/O,EACdC,EAAGu/O,EAAWv/O,IAGjB3kC,EAAE8c,wBACH3qB,KAAKu4P,QAAQ,KAAOpvO,MAAMtb,EAAG,CACzBtM,KAAM,QACNghB,KAAM1U,EAAE0U,QAGhB1U,EAAEmb,2BACFhpB,KAAKqzP,iBAET,YAAYlsN,GACR,MAAMt5B,EAAI7N,KAAKkuE,eAAe/mC,GACxBta,EAAO7sB,KAAKqnR,SAASx5Q,EAAEnG,QAC7B,IAAI1H,KAAKi8C,MAAMpuC,EAAGgf,GAGlB,GAAIA,EACAA,EAAKm+P,YAAYn9Q,OAEhB,CAED,GAAI7N,KAAK8xB,YAAcjkB,EAAEnG,OACrB,OAEJ1H,KAAKurN,MAAMriM,QAAQ,kBAAmB,CAAErb,OAGhD,WAAWs5B,GACP,MAAMt5B,EAAI7N,KAAKkuE,eAAe/mC,GACxBta,EAAO7sB,KAAKqnR,SAASx5Q,EAAEnG,QAC7B,IAAI1H,KAAKi8C,MAAMpuC,EAAGgf,GAGlB,GAAIA,EACAA,EAAKo+P,WAAWp9Q,OAEf,CACD,GAAI7N,KAAK8xB,YAAcjkB,EAAEnG,OACrB,OAEJ1H,KAAKurN,MAAMriM,QAAQ,iBAAkB,CAAErb,OAG/C,aAAas5B,GACT,MAAMt5B,EAAI7N,KAAKkuE,eAAe/mC,GACxBta,EAAO7sB,KAAKqnR,SAASx5Q,EAAEnG,QAC7B,GAAI1H,KAAKi8C,MAAMpuC,EAAGgf,GACd,OAEJ,MAAMwuQ,EAAcr7R,KAAKurN,MAAM39F,SAAS4oI,eAAe3oP,EAAEie,eACzD,GAAIe,EAAM,CACN,GAAIwuQ,IAAgBxuQ,EAEhB,OAEJA,EAAK6pO,aAAa7oP,OAEjB,CACD,GAAIwtR,EACA,OAEJr7R,KAAKurN,MAAMriM,QAAQ,mBAAoB,CAAErb,OAGjD,aAAas5B,GACT,MAAMt5B,EAAI7N,KAAKkuE,eAAe/mC,GACxBta,EAAO7sB,KAAKqnR,SAASx5Q,EAAEnG,QAC7B,GAAI1H,KAAKi8C,MAAMpuC,EAAGgf,GACd,OAEJ,MAAMwuQ,EAAcr7R,KAAKurN,MAAM39F,SAAS4oI,eAAe3oP,EAAEie,eACzD,GAAIe,EAAM,CACN,GAAIwuQ,IAAgBxuQ,EAEhB,OAEJA,EAAK4pO,aAAa5oP,OAEjB,CACD,GAAIwtR,EACA,OAEJr7R,KAAKurN,MAAMriM,QAAQ,mBAAoB,CAAErb,OAGjD,aAAas5B,GACT,MAAMt5B,EAAI7N,KAAKkuE,eAAe/mC,GACxBta,EAAO7sB,KAAKqnR,SAASx5Q,EAAEnG,QAC7B,GAAI1H,KAAKi8C,MAAMpuC,EAAGgf,GACd,OAEJ,MAAMzB,EAAgBvd,EAAEud,cAClB2mQ,EAAa/xR,KAAKurN,MAAM11J,WAAWzqC,EAAc6B,QAAS7B,EAAc8B,SACxEqI,EAAQztB,KAAKitB,KAAK,EAAGjtB,KAAKkzC,IAAI,EAAG5vB,EAAcopF,aAAeppF,EAAcmB,SAC9EM,EACAA,EAAKq+P,aAAar9Q,EAAGkkR,EAAWx/O,EAAGw/O,EAAWv/O,EAAGjd,GAGjDv1B,KAAKurN,MAAMriM,QAAQ,mBAAoB,CACnCrb,IACA0nB,QACAgd,EAAGw/O,EAAWx/O,EACdC,EAAGu/O,EAAWv/O,IAI1B,cAAcrL,GACV,MAAM3gC,EAAO2gC,EAAIvc,cACXpC,EAAQhiB,EAAKvB,aAAa,UAAYuB,EAAKvB,aAAa,cAC9D,GAAIujB,EAAO,CACP,MAAMqE,EAAO7sB,KAAKqnR,SAAS7gR,GAC3B,GAAIqmB,EAAM,CACN,MAAMhf,EAAI7N,KAAKkuE,eAAe/mC,GAC9B,GAAInnC,KAAKi8C,MAAMpuC,EAAGgf,GACd,OAEJ,MAAMklQ,EAAa/xR,KAAKurN,MAAM11J,WAAWhoD,EAAEof,QAASpf,EAAEqf,SACtDL,EAAKs+P,cAAct9Q,EAAG2a,EAAOupQ,EAAWx/O,EAAGw/O,EAAWv/O,KAIlE,kBAAkBrL,EAAKt3B,GACnB,MAAMyrR,EAAan0P,EAAIvc,cACjB2wQ,EAAcD,EAAWr2R,aAAa,UAC5C,GAAIs2R,GAA6C,UAA9BA,EAAYlyR,cAA2B,CACtD,MAAMwjB,EAAO7sB,KAAKqnR,SAASiU,GAC3B,GAAIzuQ,EAAM,CACN,MAAMhf,EAAI7N,KAAKkuE,eAAe/mC,GAC9B,GAAInnC,KAAKi8C,MAAMpuC,EAAGgf,GACd,OAEJ,MAAMklQ,EAAa/xR,KAAKurN,MAAM11J,WAAWhoD,EAAEof,QAASpf,EAAEqf,SACtD,EAAY9vB,KAAKyS,EAAS7P,KAAKurN,MAAO1+L,EAAMhf,EAAGytR,EAAYvJ,EAAWx/O,EAAGw/O,EAAWv/O,KAIhG,kBAAkB3kC,GACd7N,KAAKw7R,kBAAkB3tR,EAAG,CAACgf,EAAMhf,EAAGmqO,EAAQzlM,EAAGC,KAC3C3lB,EAAK4uQ,kBAAkB5tR,EAAGmqO,EAAQzlM,EAAGC,KAG7C,iBAAiB3kC,GACb7N,KAAKw7R,kBAAkB3tR,EAAG,CAACgf,EAAMhf,EAAGmqO,EAAQzlM,EAAGC,KAC3C3lB,EAAK6uQ,iBAAiB7tR,EAAGmqO,EAAQzlM,EAAGC,KAG5C,oBAAoB3kC,GACZ7N,KAAKL,QAAQo7R,2BACbltR,EAAEob,iBAENjpB,KAAKw7R,kBAAkB3tR,EAAG,CAACgf,EAAMhf,EAAGmqO,EAAQzlM,EAAGC,KAC3C3lB,EAAK8uQ,oBAAoB9tR,EAAGmqO,EAAQzlM,EAAGC,KAG/C,iBAAiBrL,GACb,MAAMq6O,EAAYr6O,EAAIvc,cAChBiC,EAAO7sB,KAAKqnR,SAAS7F,GAC3B,GAAI30P,EAAM,CACN,MAAMhf,EAAI7N,KAAKkuE,eAAe/mC,GAC9B,GAAInnC,KAAKi8C,MAAMpuC,EAAGgf,GACd,OAEJ,MAAMklQ,EAAa/xR,KAAKurN,MAAM11J,WAAWhoD,EAAEof,QAASpf,EAAEqf,SACtDL,EAAK+uQ,iBAAiB/tR,EAAGkkR,EAAWx/O,EAAGw/O,EAAWv/O,IAG1D,mBAII,OAAO,EAEX,UACIxyC,KAAKgrP,mBACLhrP,KAAKw7P,2BACLx7P,KAAKmpI,UACLnpI,KAAKmpI,QAAU,QAGvB,GAAW,CACP,GAAKlZ,WACN,GAAUpxH,UAAW,UAAW,MACnC,SAAWg9R,GACP,MAAMxkD,EAAeD,GAAOC,UAAV,SAClBwkD,EAAUv+J,OAAS,CACf,CACIh/H,GAAI,EAAIA,GAAG0sG,MACXvlB,QAAS,MACThgF,SAAU,aACV2L,UAAcimO,EAAH,eAEf,CACI/4O,GAAI,EAAIA,GAAG0sG,MACXvlB,QAAS,MACThgF,SAAU,OACV2L,UAAcimO,EAAH,SAEf,CACI/4O,GAAI,EAAIA,GAAG4mF,IACXO,QAAS,MACThgF,SAAU,MACV2L,UAAcimO,EAAH,OACXznO,MAAO,CACHyhB,MAAO,OACPoC,OAAQ,OACR,cAAe,EAAIn1B,GAAG+sG,OAE1BpwF,SAAU,CACN,CACIwqE,QAAS,OACThgF,SAAU,QAEd,CACIggF,QAAS,IACThgF,SAAU,WACV2L,UAAcimO,EAAH,gBACXp8N,SAAU,CACN,CACIwqE,QAAS,IACThgF,SAAU,SACV2L,UAAcimO,EAAH,eAEf,CACI5xJ,QAAS,IACThgF,SAAU,QACV2L,UAAcimO,EAAH,cAEf,CACI5xJ,QAAS,IACThgF,SAAU,YACV2L,UAAcimO,EAAH,kBAEf,CACI5xJ,QAAS,IACThgF,SAAU,UACV2L,UAAcimO,EAAH,qBA0BnCwkD,EAAUjB,UAnBV,SAAmBp0R,GACf,MAAM8gE,EAAS9gE,EAAK0f,YAEpB,OADA1f,EAAKoH,WAAWu9B,QAAS67B,GAAUM,EAAOliE,YAAY4hE,IAC/C,KAIH,IAFA,EAAInpD,MAAMrX,GAEHA,EAAKgF,WAAW7J,OAAS,GAC5B6E,EAAK2I,gBAAgB3I,EAAKgF,WAAW,GAAGhO,MAG5C,IAAK,IAAIP,EAAI,EAAGC,EAAIoqE,EAAO97D,WAAW7J,OAAQ1E,EAAIC,EAAGD,GAAK,EAAG,CACzD,MAAMgW,EAAOq0D,EAAO97D,WAAWvO,GAC/BuJ,EAAKtB,aAAa+N,EAAKzV,KAAMyV,EAAK/U,OAGtCopE,EAAO15D,WAAWu9B,QAAS67B,GAAUxgE,EAAKpB,YAAY4hE,MA5ElE,CAgFG,KAAc,GAAY,KAC7B,SAAW60N,GACP,MAAMxkD,EAAYD,GAAOC,UACzBwkD,EAAUvyQ,OAAS,CACf+xO,SAAU,aACVygC,YAAa,gBACbrrI,WAAY,cACZD,UAAW,cACXurI,UAAW,cACXjpI,SAAU,aACV/kI,WAAY,eACZC,WAAY,eACZ8/G,WAAY,eACZkuJ,eAAgB,eAChB,CAAC,gBAAgB3kD,UAAmB,eACpC,CAAC,gBAAgBA,UAAmB,eACpC,CAAC,gBAAgBA,gBAAyB,eAC1C,CAAC,gBAAgBA,gBAAyB,eAC1C,CAAC,gBAAgBA,kBAA2B,gBAC5C,CAAC,gBAAgBA,kBAA2B,gBAC5C,CAAC,gBAAgBA,uBAAgC,gBACjD,CAAC,gBAAgBA,uBAAgC,gBACjD,CAAC,gBAAgBA,mBAA4B,mBAC7C,CAAC,gBAAgBA,mBAA4B,sBAC7C,CAAC,gBAAgBA,mBAA4B,oBAC7C,CAAC,gBAAgBA,mBAA4B,oBAC7C,CAAC,gBAAgBA,wBAAiC,mBAClD,CAAC,gBAAgBA,wBAAiC,sBAClD,CAAC,gBAAgBA,wBAAiC,oBAClD,CAAC,gBAAgBA,wBAAiC,oBAClD,CAAC,gBAAgBA,gBAAyB,mBAC1C,CAAC,gBAAgBA,WAAmBA,gBAAyB,mBAC7D,CAAC,gBAAgBA,WAAmBA,gBAAyB,oBAEjEwkD,EAAU9oC,eAAiB,CACvB3iG,UAAW,cACXE,UAAW,cACXD,QAAS,YACTE,SAAU,YACVgrG,YAAa,aAtCrB,CAwCG,KAAc,GAAY,MCxf1B,KAAc,GAAY,KADf0gC,cApBV,SAAuB/zQ,EAAK0gM,GACxB,MAAO,CAAClhN,EAAQ60C,EAAY28F,KACxB,MAAM53H,EAAM43H,EAAWh7I,MACvBg7I,EAAWh7I,MAAQ,YAAaiX,GAE5B,GAAgB,MADCnV,KAAKi0R,SAASb,OACT,CAClB,MAAMjrR,EAAM,yCAAyCo0C,KACrD,IAAY,IAARr0B,EAEA,MADA3H,QAAQrY,MAAMC,GACR,IAAInF,MAAMmF,GAKpB,OAHgB,IAAZygN,GACAroM,QAAQC,KAAKrY,GAEVnI,KAEX,OAAOshB,EAAIlkB,KAAK4C,QAASmV,MClBzC,IAAI,GAA0C,SAAU+wO,EAAYx+O,EAAQlJ,EAAK2nP,GAC7E,IAA2H5oP,EAAvHD,EAAImJ,UAAU9E,OAAQ5D,EAAIT,EAAI,EAAIoK,EAAkB,OAATy+O,EAAgBA,EAAOxoP,OAAOkrE,yBAAyBnhE,EAAQlJ,GAAO2nP,EACrH,GAAuB,iBAAZ9gL,SAAoD,mBAArBA,QAAQ+gL,SAAyBroP,EAAIsnE,QAAQ+gL,SAASF,EAAYx+O,EAAQlJ,EAAK2nP,QACpH,IAAK,IAAIlpP,EAAIipP,EAAWvkP,OAAS,EAAG1E,GAAK,EAAGA,KAASM,EAAI2oP,EAAWjpP,MAAIc,GAAKT,EAAI,EAAIC,EAAEQ,GAAKT,EAAI,EAAIC,EAAEmK,EAAQlJ,EAAKT,GAAKR,EAAEmK,EAAQlJ,KAAST,GAChJ,OAAOT,EAAI,GAAKS,GAAKJ,OAAOC,eAAe8J,EAAQlJ,EAAKT,GAAIA,GAMzD,MAAM,WAAmB,GAC5B,OACQq5O,GAAOE,eACP,GAAW9oD,SAGnB,UACI,GAAW0+D,SAGnB,GAAW,CACP,GAAWj9H,WACZ,GAAWpxH,UAAW,UAAW,MACpC,SAAWq9R,GACP,IAAI7yK,EACA/7C,EAAU,EAed4uN,EAAW1tG,OAdX,WAEI,GADAlhH,GAAW,IACPA,EAAU,GAETs5C,GAASyB,iBAAiB,CAC3BgB,EAAevmH,SAASiC,cAAc,SACtCskH,EAAankH,aAAa,OAAQ,YAClCmkH,EAAa71G,YC7BF,u+lED8BX,MAAMrO,EAAOrC,SAASy1F,cAAc,QAChCpzF,GACAA,EAAK8qB,aAAao5F,EAAclkH,EAAKsO,cAcjDyoR,EAAWhvC,MATX,WACI5/K,GAAW,EACPA,EAAU,IAEV+7C,GAAgBA,EAAahkH,YAC7BgkH,EAAahkH,WAAWC,YAAY+jH,GAExCA,EAAe,OAzBvB,CA4BG,KAAe,GAAa,KEnD/B,IA+XI,GACO8yK,GAhYP,GAAkC,SAAUn9R,EAAG6O,GAC/C,IAAI1P,EAAI,GACR,IAAK,IAAIY,KAAKC,EAAOrB,OAAOkB,UAAUC,eAAe1B,KAAK4B,EAAGD,IAAM8O,EAAEpK,QAAQ1E,GAAK,IAC9EZ,EAAEY,GAAKC,EAAED,IACb,GAAS,MAALC,GAAqD,mBAAjCrB,OAAOsxG,sBACtB,KAAIhyG,EAAI,EAAb,IAAgB8B,EAAIpB,OAAOsxG,sBAAsBjwG,GAAI/B,EAAI8B,EAAE4C,OAAQ1E,IAC3D4Q,EAAEpK,QAAQ1E,EAAE9B,IAAM,GAAKU,OAAOkB,UAAUwxD,qBAAqBjzD,KAAK4B,EAAGD,EAAE9B,MACvEkB,EAAEY,EAAE9B,IAAM+B,EAAED,EAAE9B,KAE1B,OAAOkB,GAKJ,MAAM,GACT,sBACI,OAAO,GAAWyrB,OAEtB,UACI,OAAOjsB,OAAO+rD,OAAO/rD,OAAO+rD,OAAO,GAAI,GAAO0yO,mBAAoBp8R,KAAKq8R,cAAcC,KAEzF,cAKI,GAJAt8R,KAAK84P,QAAU,GACX94P,KAAKq8R,cAAcvjC,SACnB94P,KAAKq8R,cAAcvjC,QAAQ3tN,QAASvhB,GAAW5pB,KAAK2P,UAAUia,IAElC,QAA5B5pB,KAAKq8R,cAAc96R,KAAgB,CACnC,GAAIvB,KAAKs8R,IAAIC,QAAS,CAClB,MAAMnrR,EAAY,GAAWorR,UAC7Bx8R,KAAKy8R,YAAc,GACnBz8R,KAAKs8R,IAAIC,QAAQpxP,QAAShnC,IACtB,MAAM8pI,EAAQjuI,KAAKuqC,EAAE,UACrBvqC,KAAK08R,WAAWzuJ,EAAO9pI,EAAKyL,OAC5Bq+H,EACK/wG,SAAS9rB,GACT8rB,SAAS,GAAG9rB,SAAiBjN,EAAKquB,UAAY,OAC9Cvf,KAAK,YAAa9O,EAAK3G,MACvB8yB,SAAStwB,KAAK8xB,WACnB9xB,KAAKy8R,YAAYt4R,EAAK3G,MAAQywI,IAGtCjuI,KAAK28R,cAET,GAAI38R,KAAK48R,iBAAkB,CACvB,MAAMr7R,EAAOvB,KAAKq8R,cAAc96R,MAAQ,WACxCvB,KAAK48R,iBACA1/P,SAAS,GAAW1V,MACpB0V,SAAS,GAAWrC,SACpBqC,SAAS,GAAG,GAAWtT,UAAUroB,KAE1CvB,KAAKqzP,eAAe,CAChB,CAAC,cAAc,GAAWzpO,QAAW,oBACrC,CAAC,eAAe,GAAWA,QAAW,oBACtC,CAAC,cAAc,GAAW4yQ,WAAc,uBACxC,CAAC,eAAe,GAAWA,WAAc,yBAGjD,kBAAkBr1P,GACd,MAAMia,EAASphD,KAAKuqC,EAAEpD,EAAIvc,eACrBrP,QAAQ,IAAI,GAAWqO,QACvB3W,KAAK,eACNmuC,IACAja,EAAIle,iBACJke,EAAIpe,kBACJ/oB,KAAKwrP,aAAarkN,EAAK,CACnBia,SACAn0B,QAASka,EAAIla,QACbC,QAASia,EAAIja,QACb4+J,OAAQ3kJ,EAAIla,QACZ8+J,OAAQ5kJ,EAAIja,UAEC,cAAbia,EAAI5lC,MAAuC,IAAf4lC,EAAIjc,OAChClrB,KAAK68R,oBAAoBz7O,EAAQ,cAAeja,IAGhDnnC,KAAK68R,oBAAoBz7O,EAAQ,YAAaja,GAC9CnnC,KAAKs7P,uBAAuB,CACxBlrG,UAAW,oBACXE,UAAW,oBACXD,QAAS,kBACTE,SAAU,kBACVgrG,YAAa,mBACdp0N,EAAI5kB,QAInB,kBAAkB4kB,GACd,MACMia,EADOphD,KAAK0rP,aAAavkN,GACXia,OAChBA,GACAphD,KAAK68R,oBAAoBz7O,EAAQ,YAAaja,GAGtD,gBAAgBA,GACZ,MACMia,EADOphD,KAAK0rP,aAAavkN,GACXia,OAChBA,IACAphD,KAAK68R,oBAAoBz7O,EAAQ,UAAWja,GAC5CnnC,KAAKw7P,4BAGb,oBAAoBp6M,EAAQonE,EAAWrhF,EAAKhyB,GACxCgyB,EAAIle,iBACJke,EAAIpe,kBACJ,MAAMlb,EAAI7N,KAAKkuE,eAAe/mC,GACxB5kB,EAAOviB,KAAK0rP,aAAa79O,GACzBk8F,EAAQ/pG,KAAKurN,MAAM11J,WAAWhoD,EAAEof,QAASpf,EAAEqf,SAC3C0mC,EAAS5zD,KAAKurN,MAAM11J,WAAWtzC,EAAK0K,QAAS1K,EAAK2K,SAClDmmC,EAAK02C,EAAMx3D,EAAIqhB,EAAOrhB,EACtB+gB,EAAKy2C,EAAMv3D,EAAIohB,EAAOphB,EAC5BxyC,KAAKkpB,QAAQ,UAAUk4B,KAAUonE,IAAa7qH,OAAO+rD,OAAO,CAAE77C,IAC1DwlD,KACAC,KAAI/gB,EAAGw3D,EAAMx3D,EAAGC,EAAGu3D,EAAMv3D,EAAGrlB,QAASga,EAAIla,QAAU1K,EAAKupK,OAAQ1+J,QAAS+Z,EAAIja,QAAU3K,EAAKwpK,QAAU52K,IAC1GoN,EAAK0K,QAAUka,EAAIla,QACnB1K,EAAK2K,QAAUia,EAAIja,QAEvB,qBAAqBia,GACjBA,EAAIpe,kBACJ,MAAMvrB,EAAOwC,KAAKuqC,EAAEpD,EAAIz/B,QACnB6T,QAAQ,IAAI,GAAWihR,WACvBvpR,KAAK,aACLjT,KAAKuqQ,OAAO/sQ,IACTwC,KAAKuqQ,UACLvqQ,KAAK88R,cAGb98R,KAAK88R,YAAYt/R,GAErB,cACoC,QAA5BwC,KAAKq8R,cAAc96R,MACnBvB,KAAK48R,iBAAiBlrR,KAAK,IAAI,GAAWkY,QAAUvjB,KAAK,CAAC2W,EAAGxW,KACzD,MAAMynI,EAAQjuI,KAAKuqC,EAAE/jC,GACf46C,EAAS6sF,EAAMh7H,KAAK,eACpB7B,EAAY,GAAW2rR,SACvBnzQ,EAAS5pB,KAAKg9R,UAAU57O,GAC9B,IAAKx3B,IAAWA,EAAOqzQ,KAAM,CACzB,MAAMC,EAAUj6R,OACX8tB,iBAAiBvqB,EAAM,WACvBgrB,iBAAiB,WACtB,GAAI0rQ,GAAuB,SAAZA,EAAoB,CAC/B,MAAMC,EAASlvJ,EAAMv8H,KAAK,IAAIN,SAC1B+rR,EAAOx7R,QACP,GAAOpD,OAAO4+R,EAAO,IAAIn4R,KAAKk4R,EAAQl1R,QAAQ,QAAS,KAG/D,MAAMm4G,EAAQ8tB,EAAMzpH,IAAI,oBACxB,GAAI27F,EAAO,CACP,MAAMr3G,EAAUq3G,EAAMlyG,MAAM,6BAC5B,GAAInF,EAAS,CACT,MAAMiN,EAAOjN,EAAQ,GACfs0R,EAAQnvJ,EAAMv8H,KAAK,IAAIN,SACzBgsR,EAAMz7R,OAAS,GACf,GAAOpD,OAAO6+R,EAAM,IAAInqR,KAAK,aAAc8C,QAQvE,aAAavY,GACT,OAAOwC,KAAK84P,QAAQt2M,UAAWr+C,GAASA,EAAK3G,OAASA,GAE1D,UAAUA,GACN,OAAOwC,KAAKq9R,aAAa7/R,IAAS,EAEtC,UAAUA,GACN,OAAOwC,KAAK84P,QAAQpnP,KAAMvN,GAASA,EAAK3G,OAASA,GAErD,aAAaosB,GACT,MAAM0zQ,EAAUt9R,KAAKuqC,EAAE,UAClBrN,SAAS,GAAG,GAAWtT,UAAU,GAAWA,UAAUA,EAAOpsB,QAC7DyV,KAAK,cAAe2W,EAAOpsB,MAC3BglB,KAAK,aAAa,GACvB,GAAgC,QAA5BxiB,KAAKq8R,cAAc96R,KAAgB,CACnC,MAAMG,EAAQ1B,KAAKq9R,aAAazzQ,EAAOpsB,MACjC8+R,EAAMt8R,KAAKs8R,IACX5pJ,EAAc4pJ,EAAI5pJ,YAClBD,EAAc6pJ,EAAI7pJ,YAClBtqG,GAAUuqG,EAAcD,GAAe,EACvCt2E,EAAQ,IAAI,GAAMu2E,EAAaA,GAC/Bn9G,EAAQ2/B,GAAMC,MAAMmnO,EAAIiB,YACxBC,EAAS97R,EAAQ6zB,EAAQ2/B,GAAMC,MAAMmnO,EAAIp/L,YACzCugM,EAAUD,EAASjoQ,EACnBqd,EAAW,EAAIi+F,oBAAoB4B,EAAaC,EAAa8qJ,EAAQC,GACrEC,EAAO,GAAOn/R,OAAO,OAAO2+B,SAAY,GAAW6/P,SAAd,QACrCY,EAAQ,GAAOp/R,OAAO,QACvB2+B,SAAS,GAAW6/P,UACpB9pR,KAAK,IAAK2/B,GACVwgB,UAAUs/E,EAAaA,GACtBr7G,EAAM,GAAMm/B,UAAUruB,GAASq1P,EAASjoQ,EAAQ,EAAG4mC,GAAOpQ,SAC1D6xO,EAAWtB,EAAIsB,SACfC,EAAO,GAAOt/R,OAAO,SACtB0U,KAAKokB,GACL6F,SAAY,GAAW6/P,SAAd,QACd1lQ,EAAImb,EAAInb,EAAImb,EAAIorP,EAAW,EAC3B,MAAME,EAAQ,GAAOv/R,OAAO,OAAQ,CAAE,YAAaq/R,IAC9C3qR,KAAKokB,GACL6F,SAAY,GAAW6/P,SAAd,QACdc,EAAK5qR,KAAK,CACNoe,MAAOusQ,EACPnqQ,OAAQmqQ,IAEZC,EAAKzqO,WAAWwqO,EAAW,GAAIA,EAAW,GAC1CE,EAAM1qO,WAAWwqO,EAAW,GAAIA,EAAW,GAC3CF,EAAK3tQ,OAAO,CAAC4tQ,EAAOE,EAAMC,IAC1BR,EAAQvtQ,OAAO2tQ,EAAK/4R,WAGpB24R,EAAQpgQ,SAAS,GAAG,GAAWtT,cAAcA,EAAO4I,YAChD5I,EAAO5N,UACuB,iBAAnB4N,EAAO5N,QACdshR,EAAQjuQ,KAAKzF,EAAO5N,SAGpBshR,EAAQvtQ,OAAOnG,EAAO5N,UAMlC,OAFAhc,KAAK+9R,iBAAiBT,EAAS1zQ,EAAOqzQ,MACtCj9R,KAAK08R,WAAWY,EAAS1zQ,EAAOha,OACzB0tR,EAEX,UAAU1zQ,GACN,IAAK5pB,KAAKg+R,UAAUp0Q,EAAOpsB,MAAO,CAC9BwC,KAAK84P,QAAQt2P,KAAKonB,GAClB,MAAMN,EAASM,EAAON,OAClBA,GACA3rB,OAAOyR,KAAKka,GAAQ6hB,QAASiW,IACzB,MAAM96C,EAAWgjB,EAAO83B,GAClB5jD,EAAO,UAAUosB,EAAOpsB,QAAQ4jD,IACd,iBAAb96C,EACPtG,KAAKooB,GAAG5qB,EAAMwC,KAAKsG,GAAWtG,MAG9BA,KAAKooB,GAAG5qB,EAAM8I,KAItBtG,KAAK48R,kBACL58R,KAAK48R,iBAAiB7sQ,OAAO/vB,KAAK27P,aAAa/xO,IAGvD,OAAO5pB,KAEX,WAAW84P,GAEP,OADAA,EAAQ3tN,QAASvhB,GAAW5pB,KAAK2P,UAAUia,IACpC5pB,KAEX,gBACI,KAAOA,KAAK84P,QAAQn3P,QAChB3B,KAAKi+R,aAAaj+R,KAAK84P,QAAQ,GAAGt7P,MAEtC,OAAOwC,KAEX,aAAaxC,GACT,MAAMkE,EAAQ1B,KAAKq9R,aAAa7/R,GAC1BosB,EAAS5pB,KAAK84P,QAAQp3P,GAU5B,OATIkoB,IACIA,EAAON,QACP3rB,OAAOyR,KAAKwa,EAAON,QAAQ6hB,QAAS3iB,IAChCxoB,KAAKyoB,IAAI,UAAUjrB,KAAQgrB,OAGnCxoB,KAAKk+R,cAAc1gS,GAAMogB,SACzB5d,KAAK84P,QAAQzxP,OAAO3F,EAAO,IAExB1B,KAEX,aAAaxC,EAAM2gS,GACf,MAAMv0Q,EAAS5pB,KAAKg9R,UAAUx/R,GAK9B,OAJIosB,IACA5pB,KAAKi+R,aAAazgS,GAClBwC,KAAK2P,UAAUhS,OAAO+rD,OAAO/rD,OAAO+rD,OAAO,GAAI9/B,GAASu0Q,KAErDn+R,KAEX,aAAaxC,EAAM0Y,GACf,MAAM0T,EAAS5pB,KAAKg9R,UAAUx/R,GAC9B,GAAIosB,EAAQ,CACR,MAAM0zQ,EAAUt9R,KAAKk+R,cAAc1gS,GAC7B4T,EAAe,GAAWwY,OAAd,iBACD1nB,IAAbgU,IACAA,GAAYonR,EAAQ1/P,SAASxsB,IAEjCksR,EAAQ9/P,YAAYpsB,EAAW8E,GAC/B,MAAM+mR,EAAO/mR,EAAW0T,EAAOw0Q,aAAex0Q,EAAOqzQ,KACjDA,GACAj9R,KAAK+9R,iBAAiBT,EAASL,GAGvC,OAAOj9R,KAEX,aAAaxC,GACT,OAAOwC,KAAKq+R,aAAa7gS,GAAM,GAEnC,eAAeA,GACX,OAAOwC,KAAKq+R,aAAa7gS,GAAM,GAEnC,qBAEI,OADAwC,KAAK84P,QAAQ3tN,QAASvhB,GAAW5pB,KAAKs+R,eAAe10Q,EAAOpsB,OACrDwC,KAEX,cAAcxC,GACV,OAAOwC,KAAK48R,iBAAiBlrR,KAAK,IAAI,GAAWkY,UAAUpsB,KAE/D,iBAAiB8/R,EAASL,GACtB,GAAgC,QAA5Bj9R,KAAKq8R,cAAc96R,KAAgB,CACnC,MAAM47R,EAASG,EAAQ5rR,KAAK,IAAI,GAAW6sR,aAC3Cv+R,KAAKuqC,EAAE4yP,EAAO,IAAIlqR,KAAK,aAAcgqR,GAAQ,SAG7CK,EAAQ94Q,IAAI,mBAAoBy4Q,EAAO,OAAOA,KAAU,IAGhE,aACI,OAAgC,MAAzBj9R,KAAK48R,iBAEhB,OAAOp/R,GACH,QAAIwC,KAAKw+R,eACEhhS,EACDwC,KAAKy8R,YAAYj/R,GAAMogC,SAAS,GAAW6gQ,iBAC3Cz+R,KAAK48R,iBAAiBh/P,SAAS,GAAG,GAAW8gQ,aAI3D,YAAYlhS,GACR,GAAIwC,KAAKw+R,aAAc,CACnB,MAAM5B,EAAmB58R,KAAK48R,iBAK9B,GAJAj/R,OAAOyR,KAAKpP,KAAKy8R,aAAatxP,QAAS3sC,IACnBwB,KAAKy8R,YAAYj+R,GACzB++B,YAAY,GAAWkhQ,mBAE/Bz+R,KAAKuqQ,SACLvqQ,KAAKkpB,QAAQ,YAAa,CAAE1rB,SAC5Bo/R,EAAiBr/P,YAAY,GAAWmhQ,gBAEvC,CAED,GADA1+R,KAAKkpB,QAAQ,WAAY,CAAE1rB,SACvBA,EAAM,CACN,MAAM++R,EAAUv8R,KAAKs8R,IAAIC,QACnB52Q,EAAS42Q,GAAWA,EAAQ7qR,KAAMzU,GAAMA,EAAEO,OAASA,GACrDmoB,GACAi3Q,EAAiB3pR,KAAK,CAClB,uBAAwB0S,EAAOnoB,KAC/B,2BAA4BmoB,EAAO6M,WAG3CxyB,KAAKy8R,YAAYj/R,GAAM0/B,SAAS,GAAWuhQ,iBAE/C7B,EAAiB1/P,SAAS,GAAWwhQ,cAIjD,WAAWl4R,EAAMoJ,GACb,GAAIA,EAAO,CACP,MAAMq+H,EAAQ,GAAK1jG,EAAE/jC,GACrB7I,OAAOyR,KAAKQ,GAAOu7B,QAAS1lC,IACxB,MAAMk5R,EAAW1wJ,EAAMv8H,KAAKjM,GAAUgW,UAAUjK,OAAO/L,GACjDquI,EAAKlkI,EAAMnK,IAAag1E,MAAOkO,GAAQmrD,EAAI7gI,EAAO,GAAO6gI,EAAI,CAAC,UAChEnrD,GACAg2M,EAASzhQ,SAASyrD,GAEtBg2M,EAAS1rR,KAAKA,QAmB3B,KAAW,GAAS,KAbZmpR,kBAAoB,CACvB3pJ,YAAa,GACbC,YAAa,GACb6qJ,WAAY,GACZrgM,WAAY,EACZ0gM,SAAU,GACVrB,QAAS,CACL,CACI/+R,KAAM,UACNg1B,SAAU,QAMf2pQ,GASR,KAAe,GAAa,KARhBvyQ,OAAS,GAAK/qB,UAAUs0P,gBAAgB,iBACnDgpC,GAAW30Q,KAAU20Q,GAAWvyQ,OAAd,QAClBuyQ,GAAWthQ,QAAashQ,GAAWvyQ,OAAd,WACrBuyQ,GAAWuC,WAAgBvC,GAAWvyQ,OAAd,cACxBuyQ,GAAWK,UAAeL,GAAWvyQ,OAAd,cACvBuyQ,GAAWsC,gBAAqBtC,GAAWvyQ,OAAd,qBAC7BuyQ,GAAWY,SAAcZ,GAAWvyQ,OAAd,aACtBuyQ,GAAWoC,YAAiBpC,GAAWvyQ,OAAd,iBCxY7B,ICyOI,GDzOA,GAA0C,SAAUs8N,EAAYx+O,EAAQlJ,EAAK2nP,GAC7E,IAA2H5oP,EAAvHD,EAAImJ,UAAU9E,OAAQ5D,EAAIT,EAAI,EAAIoK,EAAkB,OAATy+O,EAAgBA,EAAOxoP,OAAOkrE,yBAAyBnhE,EAAQlJ,GAAO2nP,EACrH,GAAuB,iBAAZ9gL,SAAoD,mBAArBA,QAAQ+gL,SAAyBroP,EAAIsnE,QAAQ+gL,SAASF,EAAYx+O,EAAQlJ,EAAK2nP,QACpH,IAAK,IAAIlpP,EAAIipP,EAAWvkP,OAAS,EAAG1E,GAAK,EAAGA,KAASM,EAAI2oP,EAAWjpP,MAAIc,GAAKT,EAAI,EAAIC,EAAEQ,GAAKT,EAAI,EAAIC,EAAEmK,EAAQlJ,EAAKT,GAAKR,EAAEmK,EAAQlJ,KAAST,GAChJ,OAAOT,EAAI,GAAKS,GAAKJ,OAAOC,eAAe8J,EAAQlJ,EAAKT,GAAIA,GAE5D,GAAkC,SAAUiB,EAAG6O,GAC/C,IAAI1P,EAAI,GACR,IAAK,IAAIY,KAAKC,EAAOrB,OAAOkB,UAAUC,eAAe1B,KAAK4B,EAAGD,IAAM8O,EAAEpK,QAAQ1E,GAAK,IAC9EZ,EAAEY,GAAKC,EAAED,IACb,GAAS,MAALC,GAAqD,mBAAjCrB,OAAOsxG,sBACtB,KAAIhyG,EAAI,EAAb,IAAgB8B,EAAIpB,OAAOsxG,sBAAsBjwG,GAAI/B,EAAI8B,EAAE4C,OAAQ1E,IAC3D4Q,EAAEpK,QAAQ1E,EAAE9B,IAAM,GAAKU,OAAOkB,UAAUwxD,qBAAqBjzD,KAAK4B,EAAGD,EAAE9B,MACvEkB,EAAEY,EAAE9B,IAAM+B,EAAED,EAAE9B,KAE1B,OAAOkB,GAGJ,MAAM,WAAe,GACxB,YAAYwB,GACRg/E,QACA,MAAMm1D,EAAKn0I,GAAS,KAAEktB,EAAI,KAAEglN,EAAI,KAAEltO,EAAI,KAAEi1D,EAAI,MAAE2xJ,GAAUz3E,EAAIg8H,EAAe,GAAOh8H,EAAI,CAAC,OAAQ,OAAQ,OAAQ,OAAQ,UACnHjnH,GACA7sB,KAAK6sB,KAAOA,EACZ7sB,KAAK6xO,KAAOhlN,EAAKglN,KACjB7xO,KAAKurN,MAAQ1+L,EAAK0+L,MAClBvrN,KAAKs5E,MAAQt5E,KAAKurN,MAAMjyI,QAElBu4J,GAAQj4K,GAAQj1D,IAAS4mN,IAC/BvrN,KAAK6xO,KAAOltO,GAAQi1D,GAAQi4K,EAC5B7xO,KAAK6sB,KAAO0+L,EAAM39F,SAASihJ,eAAe7uQ,KAAK6xO,MAC/C7xO,KAAKurN,MAAQA,EACbvrN,KAAKs5E,MAAQt5E,KAAKurN,MAAMjyI,OAE5B,MAAMw9K,EAAO92P,KAAK6F,aACO,IAArBlG,EAAQ0kK,UACRyyF,EAAK8nC,gBAAgB5+R,KAAKurN,OAE9BurC,EAAKvgH,SAASv2I,MACdA,KAAK2F,KAAKmqQ,GAEd,qBAII,OAHK9vQ,KAAK6+R,cAAcxjR,IAAIrb,OACxBA,KAAK6+R,cAAcv8Q,IAAItiB,KAAM,IAE1BA,KAAK6+R,cAAc/gS,IAAIkC,MAElC,gBAAgBk2D,EAAUq1J,GACT,MAATA,IAEAA,EAAQr1J,EAASq1J,OAErB,MAAMuzE,EAAM9+R,KAAK++R,cACjB,IAAI1vR,EAAQyvR,EAAIvzE,EAAM1+L,KAAKsrD,KACd,MAAT9oE,IACAA,EAAQyvR,EAAIvzE,EAAM1+L,KAAKsrD,KAAO,IAElC9oE,EAAM6mD,EAASiiB,KAAOjiB,EAE1B,kBAAkBA,EAAUq1J,GACX,MAATA,IAEAA,EAAQr1J,EAASq1J,OAErB,MAAMuzE,EAAM9+R,KAAK++R,cACbD,EAAIvzE,EAAM1+L,KAAKsrD,aACR2mN,EAAIvzE,EAAM1+L,KAAKsrD,KAAKjiB,EAASiiB,KAG5C,uBAAuBozI,GACnB,MACMl8M,EADMrP,KAAK++R,cACCxzE,EAAM1+L,KAAKsrD,KACzB9oE,GACA1R,OAAOyR,KAAKC,GAAO87B,QAASgtC,IACxB,MAAMjiB,EAAW7mD,EAAM8oE,GACnBjiB,GACAA,EAASt4C,WAKzB,oBAAoB2tM,GAEhB,OADYvrN,KAAK++R,cACNxzE,EAAM1+L,KAAKsrD,MAAQ,GAElC,KAAKx4E,IACL,SACI,OAAOK,KAEX,kBAC+C,IAAvCA,KAAKL,QAAQq/R,uBACbh/R,KAAKurN,MAAMnjM,GAAG,kBAAmBpoB,KAAK4d,OAAQ5d,MAGtD,iBAC+C,IAAvCA,KAAKL,QAAQq/R,uBACbh/R,KAAKurN,MAAM9iM,IAAI,kBAAmBzoB,KAAK4d,OAAQ5d,MAGvD,SACIA,KAAKi/R,gBAGL,OAFaj/R,KAAK6F,YACbgoO,WAAW7tO,MACT2+E,MAAM/gE,SAEjB,UACI5d,KAAK4d,UAIb,GAAOihR,cAAgB,IAAIr+N,QAC3B,GAAW,CACP,GAAKyvD,WACN,GAAOpxH,UAAW,UAAW,MC9GzB,MAAM,WAAa,GACtB,WACI,OAAOmB,KAAK6xO,KAEhB,eACI,MAAM38C,EAAOl1L,KAAK6xO,KAAKrvN,KAAK,QAC5B,OAAIthB,MAAMD,QAAQi0L,GACY,MAAtBl1L,KAAKL,QAAQ+B,MACNwzL,EAAKl1L,KAAKL,QAAQ+B,OAEtB,KAEJwzL,EAEX,KAAKv1L,GACDK,KAAKL,QAAUhC,OAAO+rD,OAAO,GAAI/pD,GACjCK,KAAKb,SACLa,KAAKk/R,iBAET,iBACIl/R,KAAKqzP,eAAe,CAChB7iG,UAAW,cACXC,WAAY,gBAEhBzwJ,KAAKs5E,MAAMlxD,GAAG,IAAKpoB,KAAKyrD,OAAQzrD,MAChCA,KAAKurN,MAAMnjM,GAAG,QAASpoB,KAAKyrD,OAAQzrD,MACpCA,KAAKurN,MAAMnjM,GAAG,YAAapoB,KAAKyrD,OAAQzrD,MACxCA,KAAKs5E,MAAMlxD,GAAG,UAAWpoB,KAAK4d,OAAQ5d,MACtCA,KAAK2E,KAAKyjB,GAAG,UAAWpoB,KAAK4d,OAAQ5d,MACrCA,KAAK6sB,KAAKzE,GAAG,wBAAyBpoB,KAAKm/R,YAAan/R,MACxDA,KAAK6sB,KAAKzE,GAAG,wBAAyBpoB,KAAKm/R,YAAan/R,MACxDA,KAAK6sB,KAAKzE,GAAG,sBAAuBpoB,KAAKo/R,cAAep/R,MACxDA,KAAK6sB,KAAKzE,GAAG,sBAAuBpoB,KAAKo/R,cAAep/R,MACxDA,KAAK6sB,KAAKzE,GAAG,sBAAuBpoB,KAAKq/R,gBAAiBr/R,MAC1DA,KAAK6sB,KAAKzE,GAAG,oBAAqBpoB,KAAKs/R,cAAet/R,MACtD2+E,MAAMugN,iBAEV,gBACIl/R,KAAKgrP,mBACLhrP,KAAKs5E,MAAM7wD,IAAI,IAAKzoB,KAAKyrD,OAAQzrD,MACjCA,KAAKurN,MAAM9iM,IAAI,QAASzoB,KAAKyrD,OAAQzrD,MACrCA,KAAKurN,MAAM9iM,IAAI,YAAazoB,KAAKyrD,OAAQzrD,MACzCA,KAAKs5E,MAAM7wD,IAAI,UAAWzoB,KAAK4d,OAAQ5d,MACvCA,KAAK2E,KAAK8jB,IAAI,UAAWzoB,KAAK4d,OAAQ5d,MACtCA,KAAK6sB,KAAKpE,IAAI,wBAAyBzoB,KAAKm/R,YAAan/R,MACzDA,KAAK6sB,KAAKpE,IAAI,wBAAyBzoB,KAAKm/R,YAAan/R,MACzDA,KAAK6sB,KAAKpE,IAAI,sBAAuBzoB,KAAKo/R,cAAep/R,MACzDA,KAAK6sB,KAAKpE,IAAI,sBAAuBzoB,KAAKo/R,cAAep/R,MACzDA,KAAK6sB,KAAKpE,IAAI,sBAAuBzoB,KAAKq/R,gBAAiBr/R,MAC3DA,KAAK6sB,KAAKpE,IAAI,oBAAqBzoB,KAAKs/R,cAAet/R,MACvD2+E,MAAMsgN,gBAEV,SASI,OARAj/R,KAAK8xB,UAAYhvB,SAASiC,cAAc,OACxC,EAAIm4B,SAASl9B,KAAK8xB,UAAW9xB,KAAKmzP,gBAAgB,gBAC9CnzP,KAAKL,QAAQyR,WACb,EAAI8rB,SAASl9B,KAAK8xB,UAAW9xB,KAAKL,QAAQyR,WAE9CpR,KAAK6sB,KAAKqQ,SAAS,GAAQqiQ,MAC3Bv/R,KAAKurN,MAAMz5L,UAAU1sB,YAAYpF,KAAK8xB,WACtC9xB,KAAKyrD,SACEzrD,KAEX,SAEI,OADAA,KAAK6sB,KAAK0Q,YAAY,GAAQgiQ,MACvB5gN,MAAM/gE,SAEjB,SACI,GAAI5d,KAAKsxQ,SAAU,CACf,MAAM,OAAE7lN,EAAM,SAAEj5B,GAAaxyB,KAAKsxQ,SAC5Bn8P,EAAO,CACT2jR,KAAM94R,KACN6xO,KAAM7xO,KAAK6xO,KACXltO,KAAM3E,KAAK2E,MAEf,GAAI6tB,EAAU,CACV,MAAM6E,EAAM7E,EAASp1B,KAAK4C,KAAKurN,MAAO5tN,OAAO+rD,OAAO,GAAIv0C,IACxD,GAAIkiB,EAAK,CACL,MAAMunG,EAAM5+H,KAAKurN,MAAMn0J,SACjBmE,EAAOv7D,KAAK2E,KAAKi4H,UACjBloE,EAAQQ,GAAM1D,UAAUxxD,KAAK2E,KAAK+nP,YAClC3iJ,EAAQ,GAAMxrG,OAAO84B,GACb,IAAVq9B,GACAq1C,EAAMx2C,QAAQmB,EAAO,CAAEniB,EAAGgpB,EAAKlqC,MAAQ,EAAGmhB,EAAG+oB,EAAK9nC,OAAS,IAE/Ds2E,EAAM32C,UAAUmI,GAAM12C,MAAM+5G,EAAI5zH,EAAG4zH,EAAIrhI,GAAG61D,UAAUwrE,EAAI/wH,EAAG+wH,EAAI5pB,GAC/Dh1G,KAAK8xB,UAAUxN,MAAMiS,KAAUwzE,EAAMx3D,EAAT,KAC5BvyC,KAAK8xB,UAAUxN,MAAMrT,IAAS84F,EAAMv3D,EAAT,MAG/BiZ,GACAA,EAAOruD,KAAK4C,KAAKurN,MAAO5tN,OAAO+rD,OAAO,GAAIv0C,KAItD,OACInV,KAAK8xB,UAAUxN,MAAMC,QAAU,OAEnC,OACIvkB,KAAK8xB,UAAUxN,MAAMC,QAAU,GAEnC,cACIvkB,KAAK0lB,OAET,gBACI1lB,KAAKwlB,OAET,iBAAgB,KAAEszQ,IACV94R,KAAKm4E,MAAQ2gN,EAAK3gN,KAClBn4E,KAAK0lB,OAGb,gBACI1lB,KAAKwlB,OAET,OAAOhoB,EAAM2pC,GACT,GAAInnC,KAAK6sB,KAAM,CACX,MAAMhf,EAAI7N,KAAK6sB,KAAKqhD,eAAe/mC,GAC7B4qP,EAAa/xR,KAAKurN,MAAM11J,WAAWhoD,EAAEof,QAASpf,EAAEqf,SACtDltB,KAAK6sB,KAAKjO,OAAO,QAAQphB,EAAQ,CAC7BqQ,IACAgf,KAAM7sB,KAAK6sB,KACXloB,KAAM3E,KAAK2E,KACXktO,KAAM7xO,KAAK6xO,KACXt/L,EAAGw/O,EAAWx/O,EACdC,EAAGu/O,EAAWv/O,EACdsmP,KAAM94R,OAENA,KAAK6xO,KAAKhlD,SACV7sL,KAAK6sB,KAAKjO,OAAO,QAAQphB,EAAQ,CAC7BqQ,IACAgf,KAAM7sB,KAAK6sB,KACXloB,KAAM3E,KAAK2E,KACXktO,KAAM7xO,KAAK6xO,KACXt/L,EAAGw/O,EAAWx/O,EACdC,EAAGu/O,EAAWv/O,EACdsmP,KAAM94R,OAGLA,KAAK6xO,KAAKptK,UACfzkE,KAAK6sB,KAAKjO,OAAO,QAAQphB,EAAQ,CAC7BqQ,IACAgf,KAAM7sB,KAAK6sB,KACX+sC,KAAM55D,KAAK6xO,KACXA,KAAM7xO,KAAK6xO,KACXt/L,EAAGw/O,EAAWx/O,EACdC,EAAGu/O,EAAWv/O,EACdsmP,KAAM94R,QAKtB,YAAY6N,GACRA,EAAEkb,kBACF/oB,KAAKwrP,aAAa39O,EAAG,CACjB2xR,UAAU,EACVj3L,QAAS16F,EAAEof,QACXu7E,QAAS36F,EAAEqf,QACXD,QAASpf,EAAEof,QACXC,QAASrf,EAAEqf,UAEfltB,KAAKurN,MAAM1+L,KAAKm+N,mBAChBhrP,KAAKs7P,uBAAuB,GAAQvI,eAAgBllP,EAAE0U,MAClDviB,KAAKsxQ,UAAYtxQ,KAAKsxQ,SAASnW,aAC/Bn7P,KAAKsxQ,SAASnW,YAAY/9P,KAAK4C,KAAKurN,MAAO,CACvC19M,IACA0U,KAAMviB,KAAK0rP,aAAa79O,GACxBirR,KAAM94R,KACN6xO,KAAM7xO,KAAK6xO,KACXltO,KAAM3E,KAAK2E,OAGnB3E,KAAK4e,OAAO,iBAAkB/Q,GAElC,YAAYA,GACR,MAAM0U,EAAOviB,KAAK0rP,aAAa79O,GACzBgf,EAAO7sB,KAAKurN,MAAMsjD,eAAe7uQ,KAAK2E,MAW5C,GAVK4d,EAAKi9Q,WACNj9Q,EAAKi9Q,UAAW,EACZ3yQ,IACAA,EAAKqQ,SAAS,GAAQuiQ,UACtBz/R,KAAK4e,OAAO,OAAQ/Q,IAExB7N,KAAKs5E,MAAM88K,WAAW,OAAQ,CAAEj+K,IAAKn4E,KAAKm4E,OAE9C51D,EAAK0K,QAAUpf,EAAEof,QACjB1K,EAAK2K,QAAUrf,EAAEqf,QACbltB,KAAKsxQ,UAAYtxQ,KAAKsxQ,SAASvS,YAAa,CAC5C,MAAMngI,EAAM5+H,KAAKurN,MAAMn0J,SACjB/D,GAAMxlD,EAAEof,QAAU1K,EAAKgmF,SAAWq2B,EAAI5zH,EACtCsoD,GAAMzlD,EAAEqf,QAAU3K,EAAKimF,SAAWo2B,EAAIrhI,EACtCm3D,EAAQ10D,KAAK2E,KAAK+nP,WAClBn3N,EAAQ,IAAI,GAAM89B,EAAIC,GAAIC,OAAOmB,GACvC10D,KAAKsxQ,SAASvS,YAAY3hQ,KAAK4C,KAAKurN,MAAO,CACvC19M,IACA0U,OACA8rH,OAAQ94G,EAAMgd,EACd+7F,OAAQ/4G,EAAMid,EACdsmP,KAAM94R,KACN6xO,KAAM7xO,KAAK6xO,KACXltO,KAAM3E,KAAK2E,OAGnB3E,KAAK4e,OAAO,WAAY/Q,GACxB7N,KAAK4e,OAAO,iBAAkB/Q,GAElC,UAAUA,GACN7N,KAAKw7P,2BACLx7P,KAAKurN,MAAM1+L,KAAKwmO,iBAChB,MAAM9wO,EAAOviB,KAAK0rP,aAAa79O,GACzBgf,EAAO7sB,KAAKurN,MAAMsjD,eAAe7uQ,KAAK2E,MACxC4d,EAAKi9Q,WACD3yQ,GACAA,EAAK0Q,YAAY,GAAQkiQ,UAEzBz/R,KAAKsxQ,UAAYtxQ,KAAKsxQ,SAAStS,WAC/Bh/P,KAAKsxQ,SAAStS,UAAU5hQ,KAAK4C,KAAKurN,MAAO,CACrC19M,IACA0U,OACAu2Q,KAAM94R,KACN6xO,KAAM7xO,KAAK6xO,KACXltO,KAAM3E,KAAK2E,OAGnB3E,KAAKs5E,MAAM+8K,UAAU,OAAQ,CAAEl+K,IAAKn4E,KAAKm4E,MACzCn4E,KAAK4e,OAAO,UAAW/Q,IAE3B7N,KAAK4e,OAAO,eAAgB/Q,KAIpC,SAAW+qO,GACPA,EAAQ2mD,KAAO,kBACf3mD,EAAQ6mD,SAAW,gBACnB7mD,EAAQma,eAAiB,CACrB3iG,UAAW,cACXE,UAAW,cACXD,QAAS,YACTE,SAAU,aAPlB,CASG,KAAY,GAAU,KCnPzB,IAUImvI,GA4OA,GAtPA,GAA0C,SAAUx5C,EAAYx+O,EAAQlJ,EAAK2nP,GAC7E,IAA2H5oP,EAAvHD,EAAImJ,UAAU9E,OAAQ5D,EAAIT,EAAI,EAAIoK,EAAkB,OAATy+O,EAAgBA,EAAOxoP,OAAOkrE,yBAAyBnhE,EAAQlJ,GAAO2nP,EACrH,GAAuB,iBAAZ9gL,SAAoD,mBAArBA,QAAQ+gL,SAAyBroP,EAAIsnE,QAAQ+gL,SAASF,EAAYx+O,EAAQlJ,EAAK2nP,QACpH,IAAK,IAAIlpP,EAAIipP,EAAWvkP,OAAS,EAAG1E,GAAK,EAAGA,KAASM,EAAI2oP,EAAWjpP,MAAIc,GAAKT,EAAI,EAAIC,EAAEQ,GAAKT,EAAI,EAAIC,EAAEmK,EAAQlJ,EAAKT,GAAKR,EAAEmK,EAAQlJ,KAAST,GAChJ,OAAOT,EAAI,GAAKS,GAAKJ,OAAOC,eAAe8J,EAAQlJ,EAAKT,GAAIA,IAOhE,SAAW2hS,GACPA,EAAU59R,KAAO,iBACjB49R,EAAUvsH,SAAcusH,EAAU59R,KAAb,YACrB49R,EAAUC,KAAUD,EAAUvsH,SAAb,QAHrB,CAIGusH,KAAcA,GAAY,KACtB,MAAM,WAAgB,GACzB,YAAY//R,GACRg/E,QACA3+E,KAAKL,QAAUhC,OAAO+rD,OAAO/rD,OAAO+rD,OAAO,GAAI,GAAKwuL,gBAAiBv4O,GACrEK,KAAK4/R,eAAiB,EAAYz+O,SAASnhD,KAAK4/R,eAAenhS,KAAKuB,MAAO,GAC3EA,KAAK8xB,UAAYhvB,SAASiC,cAAc,OACxC/E,KAAKkiR,WAAaliR,KAAKuqC,EAAEvqC,KAAK8xB,WAAWoL,SAASl9B,KAAKmzP,gBAAgBusC,GAAU59R,OACjF,MAAM+9R,EAAiB/8R,SAASiC,cAAc,OAC9C/E,KAAK8xB,UAAU1sB,YAAYy6R,GAC3B7/R,KAAK8/R,UAAY9/R,KAAKuqC,EAAE,SAASrN,SAASl9B,KAAKmzP,gBAAgBusC,GAAUvsH,WACrEnzK,KAAKL,QAAQogS,WACb//R,KAAKggS,WAAahgS,KAAKuqC,EAAE,SACpBrN,SAASl9B,KAAKmzP,gBAAgBusC,GAAUC,OACxCrvQ,SAAStwB,KAAK8/R,WACdhiS,IAAI,IAEbkC,KAAKkiR,WAAWnyP,OAAO/vB,KAAK8/R,WAAWt7Q,IAAI,CACvC6M,MAAOrxB,KAAKL,QAAQ0xB,MACpBoC,OAAQzzB,KAAKL,QAAQ8zB,OACrBgD,QAASz2B,KAAKL,QAAQ82B,UAEtBz2B,KAAKL,QAAQmyB,WACb9xB,KAAKL,QAAQmyB,UAAU1sB,YAAYpF,KAAK8xB,WAE5C9xB,KAAKigS,YAAcjgS,KAAKurN,MACxB,MAAM20E,EAAqBviS,OAAO+rD,OAAO/rD,OAAO+rD,OAAO,GAAI1pD,KAAKL,QAAQwgS,cAAe,CAAEruQ,UAAW+tQ,EAAgBvmN,MAAOt5E,KAAKigS,YAAY3mN,MAAO8mN,QAAQ,EAAMz+P,MAAO3hC,KAAKigS,YAAYpuG,UAAWsiE,aAAa,EAAOviD,MAAM,EAAO5iD,YAAY,EAAOqxI,UAAU,EAAOC,UAAU,EAAO5T,WAAW,EAAO6T,WAAW,EAAOC,UAAU,EAAOC,WAAW,EAAOC,SAAS,EAAOzM,UAAU,IAC3Xj0R,KAAK2gS,YAAc3gS,KAAKL,QAAQihS,YAC1B5gS,KAAKL,QAAQihS,YAAYV,GACzB,IAAI,GAAMA,GAChBlgS,KAAK2gS,YAAY/yK,SAASizK,WAC1B7gS,KAAK8gS,YAAY9gS,KAAKigS,YAAYtgS,QAAQ0xB,MAAOrxB,KAAKigS,YAAYtgS,QAAQ8zB,QAC1EzzB,KAAKk/R,iBAET,YACI,OAAOl/R,KAAKL,QAAQ4rN,MAExB,eACI,OAAOvrN,KAAKurN,MAAM0oE,SAASb,OAE/B,qBACI,OAAIpzR,KAAKi0R,SACEj0R,KAAKi0R,SAASniQ,UAElB9xB,KAAKurN,MAAMz5L,UAEtB,sBACI,OAAI9xB,KAAKi0R,SACEj0R,KAAKi0R,SAAS/R,WAElBliR,KAAKuqC,EAAEvqC,KAAKurN,MAAMz5L,WAE7B,iBACQ9xB,KAAKi0R,SACLj0R,KAAK+gS,gBAAgB34Q,GAAG,SAASpoB,KAAKorP,oBAAuBprP,KAAK4/R,iBAGlE5/R,KAAKigS,YAAY73Q,GAAG,YAAapoB,KAAKghS,uBAAwBhhS,MAC9DA,KAAKigS,YAAY73Q,GAAG,QAASpoB,KAAKghS,uBAAwBhhS,OAE9DA,KAAKigS,YAAY73Q,GAAG,SAAUpoB,KAAK8gS,YAAa9gS,MAChDA,KAAKqzP,eAAe,CAChB7iG,UAAW,cACXC,WAAY,cACZ,CAAC,cAAczwJ,KAAKmzP,gBAAgB,UAAa,WACjD,CAAC,eAAenzP,KAAKmzP,gBAAgB,UAAa,aAG1D,gBACQnzP,KAAKi0R,SACLj0R,KAAK+gS,gBAAgBt4Q,IAAIzoB,KAAKorP,sBAG9BprP,KAAKigS,YAAYx3Q,IAAI,YAAazoB,KAAKghS,uBAAwBhhS,MAC/DA,KAAKigS,YAAYx3Q,IAAI,QAASzoB,KAAKghS,uBAAwBhhS,OAE/DA,KAAKigS,YAAYx3Q,IAAI,SAAUzoB,KAAK8gS,YAAa9gS,MACjDA,KAAKgrP,mBAET,WACIhrP,KAAK2gS,YAAY9zQ,KAAKjP,SACtB5d,KAAKi/R,gBACLj/R,KAAK2gS,YAAY1wK,UAErB,uBAAuBtwH,GACfA,EAAQg5P,IAAM34P,KAAKihS,wBACnBjhS,KAAK4/R,iBAGL5/R,KAAK8gS,YAAY9gS,KAAKigS,YAAYtgS,QAAQ0xB,MAAOrxB,KAAKigS,YAAYtgS,QAAQ8zB,QAGlF,YAAY1wB,EAAGlC,GACX,IAAIwwB,EACAoC,EACa,iBAAN1wB,GACPsuB,EAAQtuB,EAAEsuB,MACVoC,EAAS1wB,EAAE0wB,SAGXpC,EAAQtuB,EACR0wB,EAAS5yB,GAEb,MAAM+yD,EAAS5zD,KAAKigS,YAAYtgS,QAC1BklB,EAAQ7kB,KAAKigS,YAAYzsP,UAAU0tP,WACnC3vQ,EAAWvxB,KAAKL,QAAQ0xB,MAAQ,EAAIrxB,KAAKL,QAAQ82B,QACjDksK,EAAY3iM,KAAKL,QAAQ8zB,OAAS,EAAIzzB,KAAKL,QAAQ82B,QACzDpF,GAASxM,EAAM6uC,GACfjgC,GAAU5O,EAAM8uC,GAChB3zD,KAAKm8D,MAAQr0D,KAAKkzC,IAAIzpB,EAAWF,EAAOsxK,EAAYlvK,GACpD,MAAM0oC,EAAQn8D,KAAKm8D,MACb5pB,EAAKqhB,EAAOrhB,EAAI4pB,EAASt3C,EAAM6uC,GAC/BlhB,EAAKohB,EAAOphB,EAAI2pB,EAASt3C,EAAM8uC,GAOrC,OANAtiC,GAAS8qC,EACT1oC,GAAU0oC,EACVn8D,KAAK2gS,YAAYQ,YAAY9vQ,EAAOoC,GACpCzzB,KAAK2gS,YAAYvtO,UAAU7gB,EAAGC,GAC9BxyC,KAAK2gS,YAAY97Q,MAAMs3C,EAAOA,GAC9Bn8D,KAAK4/R,iBACE5/R,KAEX,iBACI,MAAMm8D,EAAQn8D,KAAKm8D,MACbt3C,EAAQ7kB,KAAKigS,YAAYzsP,UAAU0tP,WACzC,IAAIttO,EAAS,KACb,GAAI5zD,KAAKi0R,SACLrgO,EAAS5zD,KAAKi0R,SAASmN,mBAAmB,EAAG,OAE5C,CACD,MAAMxiK,EAAM5+H,KAAKigS,YAAY7oO,SAC7BxD,EAAS,IAAI,IAAOgrE,EAAI/wH,EAAI+wH,EAAI5zH,GAAI4zH,EAAI5pB,EAAI4pB,EAAIrhI,GAEpD,MAAMi1B,EAAWxyB,KAAKuqC,EAAEvqC,KAAK2gS,YAAY7uQ,WAAWU,WAC9CitG,EAAcz/H,KAAK2gS,YAAYvtO,YACrCqsE,EAAY7kE,GAAK6kE,EAAY7kE,IAAM,EACnC56D,KAAKqhS,SAAW,CACZpwR,IAAKuhB,EAASvhB,IAAM2iD,EAAOphB,EAAI2pB,EAAQsjE,EAAY7kE,GACnDrkC,KAAM/D,EAAS+D,KAAOq9B,EAAOrhB,EAAI4pB,EAAQsjE,EAAY9kE,GACrDtpC,MAAQrxB,KAAK+gS,gBAAgBzmJ,aAAen+E,EAASt3C,EAAM6uC,GAC3DjgC,OAASzzB,KAAK+gS,gBAAgBxmJ,cAAgBp+E,EAASt3C,EAAM8uC,IAEjE3zD,KAAK8/R,UAAUt7Q,IAAIxkB,KAAKqhS,UAE5B,YAAYl6P,GACR,MAAMt5B,EAAI7N,KAAKkuE,eAAe/mC,GACxBia,EAASvzC,EAAEnG,SAAW1H,KAAKggS,WAAa,UAAY,WACpD,GAAErlO,EAAE,GAAEC,GAAO56D,KAAKigS,YAAY7sO,YAC9Bu4L,EAAY,CACdvqM,SACAn0B,QAASpf,EAAEof,QACXC,QAASrf,EAAEqf,QACXuK,WAAYz3B,KAAK6/R,eAAepoQ,WAChCD,UAAWx3B,KAAK6/R,eAAeroQ,UAC/BmoQ,KAAM3/R,KAAKigS,YAAYN,OACvB96Q,MAAO7kB,KAAKigS,YAAYzsP,UAAU0tP,WAClCG,SAAUrhS,KAAKqhS,SACfliK,WAAYxkE,EACZykE,WAAYxkE,GAEhB56D,KAAKihS,yBAA0B,EAC/BjhS,KAAKs7P,uBAAuB,GAAKvI,eAAgBpH,GAErD,SAASxkN,GACL,MAAMt5B,EAAI7N,KAAKkuE,eAAe/mC,GACxBla,EAAUpf,EAAEof,QACZC,EAAUrf,EAAEqf,QACZ3K,EAAO1U,EAAE0U,KACf,OAAQA,EAAK6+B,QACT,IAAK,UAAW,CACZ,MAAMv8B,EAAQ7kB,KAAKigS,YAAYzsP,UAAU0tP,WACnCniM,GAAM9xE,EAAU1K,EAAK0K,SAAWpI,EAAM6uC,GACtCsrC,GAAM9xE,EAAU3K,EAAK2K,SAAWrI,EAAM8uC,GACxC3zD,KAAKi0R,UACLj0R,KAAK6/R,eAAepoQ,WAAalV,EAAKkV,WAAasnE,EAAK/+F,KAAKm8D,MAC7Dn8D,KAAK6/R,eAAeroQ,UAAYjV,EAAKiV,UAAYwnE,EAAKh/F,KAAKm8D,OAG3Dn8D,KAAKigS,YAAY7sO,UAAU7wC,EAAK48G,WAAapgC,EAAK/+F,KAAKm8D,MAAO55C,EAAK68G,WAAapgC,EAAKh/F,KAAKm8D,OAE9F,MAEJ,IAAK,UAAW,CACZ,MAAMmlO,EAAa/+Q,EAAKsC,MAClB08Q,EAAgBh/Q,EAAK8+Q,SACrB9rQ,EAAQ,GAAKhT,EAAK0K,QAAUA,GAAWs0Q,EAAclwQ,MAAQiwQ,EAAW5tO,GAC1EnxC,EAAKi/Q,SACL/iJ,qBAAqBl8H,EAAKi/Q,SAE9Bj/Q,EAAKi/Q,QAAUppQ,sBAAsB,KACjCp4B,KAAKigS,YAAYN,KAAKpqQ,EAAQhT,EAAKo9Q,KAAM,CACrCpjG,UAAU,EACVklG,SAAUzhS,KAAKL,QAAQ8hS,SACvBC,SAAU1hS,KAAKL,QAAQ+hS,aAG/B,QAMZ,aACI1hS,KAAKw7P,2BACLx7P,KAAKihS,yBAA0B,EAEnC,SAAS95P,GACL,MAAMt5B,EAAI7N,KAAKkuE,eAAe/mC,GAC9B,IAAIoL,EACAC,EACJ,MAAMm2F,EAAK3oI,KAAK2gS,YAAYvtO,YAE5B,GADAu1E,EAAG/tE,GAAK+tE,EAAG/tE,IAAM,EACA,MAAb/sD,EAAEsf,QAAiB,CACnB,MAAMgb,EAASnoC,KAAKuqC,EAAEvqC,KAAK2gS,YAAY7uQ,WAAWqW,SAClDoK,EAAI1kC,EAAE6e,MAAQyb,EAAO5R,KACrBic,EAAI3kC,EAAE8e,MAAQwb,EAAOl3B,SAGrBshC,EAAI1kC,EAAEsf,QACNqlB,EAAI3kC,EAAEuf,QAEV,MAAM4vE,GAAMzqD,EAAIo2F,EAAGhuE,IAAM36D,KAAKm8D,MACxB8gC,GAAMzqD,EAAIm2F,EAAG/tE,IAAM56D,KAAKm8D,MAC9Bn8D,KAAKigS,YAAY0B,YAAY3kM,EAAIC,GAErC,UACIj9F,KAAK4d,UAGb,GAAW,CACP,GAAKqyG,WACN,GAAQpxH,UAAW,UAAW,MAEjC,SAAWwjL,GACPA,EAAK61D,eAAiB,CAClB7mN,MAAO,IACPoC,OAAQ,IACRgD,QAAS,GACTspQ,UAAU,EACV0B,SAAU,IACVC,SAAU,GACVvB,aAAc,GACdS,YAAcjhS,GAAY,IAAI,GAAMA,IAExC0iL,EAAK0wE,eAAiB,CAClB3iG,UAAW,WACXE,UAAW,WACXD,QAAS,aACTE,SAAU,cAflB,CAiBG,KAAS,GAAO,KCxQnB,IAAI,GAA0C,SAAU21F,EAAYx+O,EAAQlJ,EAAK2nP,GAC7E,IAA2H5oP,EAAvHD,EAAImJ,UAAU9E,OAAQ5D,EAAIT,EAAI,EAAIoK,EAAkB,OAATy+O,EAAgBA,EAAOxoP,OAAOkrE,yBAAyBnhE,EAAQlJ,GAAO2nP,EACrH,GAAuB,iBAAZ9gL,SAAoD,mBAArBA,QAAQ+gL,SAAyBroP,EAAIsnE,QAAQ+gL,SAASF,EAAYx+O,EAAQlJ,EAAK2nP,QACpH,IAAK,IAAIlpP,EAAIipP,EAAWvkP,OAAS,EAAG1E,GAAK,EAAGA,KAASM,EAAI2oP,EAAWjpP,MAAIc,GAAKT,EAAI,EAAIC,EAAEQ,GAAKT,EAAI,EAAIC,EAAEmK,EAAQlJ,EAAKT,GAAKR,EAAEmK,EAAQlJ,KAAST,GAChJ,OAAOT,EAAI,GAAKS,GAAKJ,OAAOC,eAAe8J,EAAQlJ,EAAKT,GAAIA,GAE5D,GAAkC,SAAUiB,EAAG6O,GAC/C,IAAI1P,EAAI,GACR,IAAK,IAAIY,KAAKC,EAAOrB,OAAOkB,UAAUC,eAAe1B,KAAK4B,EAAGD,IAAM8O,EAAEpK,QAAQ1E,GAAK,IAC9EZ,EAAEY,GAAKC,EAAED,IACb,GAAS,MAALC,GAAqD,mBAAjCrB,OAAOsxG,sBACtB,KAAIhyG,EAAI,EAAb,IAAgB8B,EAAIpB,OAAOsxG,sBAAsBjwG,GAAI/B,EAAI8B,EAAE4C,OAAQ1E,IAC3D4Q,EAAEpK,QAAQ1E,EAAE9B,IAAM,GAAKU,OAAOkB,UAAUwxD,qBAAqBjzD,KAAK4B,EAAGD,EAAE9B,MACvEkB,EAAEY,EAAE9B,IAAM+B,EAAED,EAAE9B,KAE1B,OAAOkB,GAKJ,MAAM,WAAiB,GAC1B,YAAYwB,GACRg/E,QACA,MAAM,MAAE4sI,GAAU5rN,EAASq0O,EAAS,GAAOr0O,EAAS,CAAC,UACrDK,KAAKurN,MAAQA,EACbvrN,KAAKL,QAAUhC,OAAO+rD,OAAO,CAAEk4O,UAAW,IAAM5tD,GAChDh0O,KAAKb,SACLa,KAAK6hS,cACA7hS,KAAKwN,UACNxN,KAAKk/R,iBAGb,YACI,OAAOl/R,KAAKurN,MAAMjyI,MAEtB,yBACI,OAAOt5E,KAAKmzP,gBAAgB,mBAEhC,wBACI,OAAUnzP,KAAK8hS,mBAAR,YAEX,0BACI,OAAU9hS,KAAK8hS,mBAAR,cAEX,eACI,OAAiC,IAAzB9hS,KAAKL,QAAQo9I,UACuB,IAAxC/8I,KAAKurN,MAAM5rN,QAAQ6gS,SAASzjJ,QAEpC,SACQ/8I,KAAKwN,WACLxN,KAAKL,QAAQo9I,SAAU,EACvB/8I,KAAKurN,MAAM5rN,QAAQ6gS,SAASzjJ,SAAU,EACtC/8I,KAAKk/R,kBAGb,UACSl/R,KAAKwN,WACNxN,KAAKL,QAAQo9I,SAAU,EACvB/8I,KAAKurN,MAAM5rN,QAAQ6gS,SAASzjJ,SAAU,EACtC/8I,KAAKi/R,iBAGb,UAAUztR,GACNxR,KAAKL,QAAQ6R,OAASA,EACtBxR,KAAK6hS,cAET,SACI7hS,KAAK8xB,UAAYhvB,SAASiC,cAAc,OACxC/E,KAAKkiR,WAAaliR,KAAKuqC,EAAEvqC,KAAK8xB,WAC9B9xB,KAAK+hS,YAAc/hS,KAAKuqC,EAAEznC,SAASiC,cAAc,QAAQm4B,SAASl9B,KAAKgiS,qBACvEhiS,KAAKiiS,UAAYjiS,KAAKuqC,EAAEznC,SAASiC,cAAc,QAAQm4B,SAASl9B,KAAKkiS,mBACrEliS,KAAKkiR,WACAx8P,OACAwX,SAASl9B,KAAK8hS,oBACd/xQ,OAAO,CAAC/vB,KAAK+hS,YAAa/hS,KAAKiiS,YAChCjiS,KAAKL,QAAQyR,WACbpR,KAAKkiR,WAAWhlP,SAASl9B,KAAKL,QAAQyR,WAG9C,iBACIpR,KAAKi/R,gBACLj/R,KAAKurN,MAAMnjM,GAAG,iBAAkBpoB,KAAKmiS,oBAAqBniS,MAC1DA,KAAKurN,MAAMnjM,GAAG,iBAAkBpoB,KAAKoiS,aAAcpiS,MACnDA,KAAKs5E,MAAMlxD,GAAG,aAAcpoB,KAAKqiS,YAAariS,MAC9CA,KAAKs7P,uBAAuB,CACxBjrG,QAAS,OACTE,SAAU,SAGlB,gBACIvwJ,KAAKurN,MAAM9iM,IAAI,iBAAkBzoB,KAAKmiS,oBAAqBniS,MAC3DA,KAAKurN,MAAM9iM,IAAI,iBAAkBzoB,KAAKoiS,aAAcpiS,MACpDA,KAAKs5E,MAAM7wD,IAAI,aAAczoB,KAAKqiS,YAAariS,MAC/CA,KAAKw7P,2BAET,cACIx7P,KAAKsiS,aAAe,GACpBtiS,KAAKuiS,YAAc,GACnBviS,KAAKwiS,eAAiB,KACtB,MAAMhxR,EAASxR,KAAKL,QAAQ6R,OACxBtQ,MAAMD,QAAQuQ,GACdA,EAAO25B,QAAShnC,IACQ,iBAATA,EACPnE,KAAKsiS,aAAan+R,IAAQ,EAG1BnE,KAAKuiS,YAAYp+R,EAAKqK,KAAM,IAIb,mBAAXgD,IACZxR,KAAKwiS,eAAiBhxR,GAG9B,aAAY,KAAEhU,EAAI,KAAE+kB,IACH,WAAT/kB,GACAwC,KAAKyiS,eAAelgR,EAAKsvN,KAAMtvN,GAGvC,qBAAoB,KAAEsK,EAAI,EAAE0lB,EAAC,EAAEC,IAC3B,MAAMgqN,EAAa3vO,EAAK2mQ,mBACxB,GAAIh3B,GAAcx8P,KAAK0iS,cAAclmC,GAAa,CAC9C,MAAMnlO,EAAMxK,EAAKglN,KAAKgjB,cACtB70P,KAAKmoC,OAAS,CACVoK,EAAGA,EAAIlb,EAAIkb,EACXC,EAAGA,EAAInb,EAAImb,IAIvB,cAAc3lB,GACV,OAAOA,GAAQA,EAAKglN,KAAKhlD,UAAYhgK,EAAK+oO,IAAI,eAElD,eAAejxP,EAAMhF,GACjB,GAAIK,KAAKL,QAAQ2gS,WACZ3gS,EAAQgjS,SACThjS,EAAQg5P,IACRh5P,EAAQohQ,WACRphQ,EAAQijS,cAAe,CACvB,MAAM/1Q,EAAO7sB,KAAKurN,MAAM39F,SAASihJ,eAAelqQ,GAChD,GAAIkoB,GAAQA,EAAKglN,KAAKhlD,SAAU,CAC5B,MAAMg2G,EAAWl+R,EAAKi4H,UAChBkmK,EAAkBD,EAAStnO,KAAK52D,EAAK+nP,YACrCq2C,EAAcD,EAAgBx+L,aAC9B0+L,EAAkBF,EAAgB/9L,iBAClCrwC,EAAQQ,GAAM1D,UAAU7sD,EAAK+nP,YAC7Bk1C,EAAY5hS,KAAKL,QAAQiiS,WAAa,EAC5C,IAAIqB,EACAC,EACAC,EACAC,EACAC,EACAC,EACJ,MAAMC,EAAa,CACfjyG,SAAU,EACVh2H,WAAY,GAEVylM,EAAYphQ,EAAQohQ,UACpB6hC,EAAgBjjS,EAAQijS,cACxBY,EAAoB7jS,EAAQ6jS,mBACM,IAApCZ,EAAcn/R,QAAQ,SACtB8/R,EAAWjyG,SAAW0xG,EAAgBzwP,EAGtCgxP,EAAWjyG,SAAWyxG,EAAYxwP,GAEG,IAArCqwP,EAAcn/R,QAAQ,UACtB8/R,EAAWjoO,WAAa0nO,EAAgBxwP,EAGxC+wP,EAAWjoO,WAAaynO,EAAYvwP,EAExCxyC,KAAKs5E,MAAM8sL,WAAW9/M,KAAMurL,IACxB,GAAI7xO,KAAKyjS,UAAU9+R,EAAMktO,GACrB,OAAO,EAEX,MAAM6xD,EAAW7xD,EAAKj1G,UAAUrhE,KAAKs2K,EAAK6a,YACpCi3C,EAAcD,EAASp/L,aACvBs/L,EAAkBF,EAAS3+L,iBAC3B72F,EAAS,CACXojL,SAAU,CAACqyG,EAAYpxP,EAAGqxP,EAAgBrxP,GAC1C+oB,WAAY,CAACqoO,EAAYnxP,EAAGoxP,EAAgBpxP,IAE1CqxP,EAAY,GAuBlB,OAtBAlmS,OAAOyR,KAAKlB,GAAQi9B,QAASunB,IACzB,MAAMl0D,EAAMk0D,EACNtnD,EAAO8C,EAAO1P,GACf+H,IAAKrI,IAAU,CAChBs0B,SAAUt0B,EACV2yD,SAAU/oD,KAAKinC,IAAI7wC,EAAQqlS,EAAW/kS,OAErCgT,OAAQrN,GAASA,EAAK0sD,UAAY+wO,GACvCiC,EAAUrlS,GAAO,EAAS+nD,OAAOn7C,EAAOjH,GAASA,EAAK0sD,YAEtC,MAAhBoyO,GAAwBY,EAAUvyG,SAAS3vL,OAAS,IACpDshS,EAAeY,EAAUvyG,SAAS,GAAG9+J,SACrC0wQ,EAAcp7R,KAAKkzC,IAAI8nP,EAAgBtwP,EAAGkxP,EAASlxP,GACnD2wP,EACIr7R,KAAKitB,IAAIiuQ,EAAgBxwP,EAAGoxP,EAAgBpxP,GAAK0wP,GAEpC,MAAjBE,GAAyBS,EAAUvoO,WAAW35D,OAAS,IACvDyhS,EAAgBS,EAAUvoO,WAAW,GAAG9oC,SACxC6wQ,EAAiBv7R,KAAKkzC,IAAI8nP,EAAgBvwP,EAAGmxP,EAASnxP,GACtD+wP,EACIx7R,KAAKitB,IAAIiuQ,EAAgBzwP,EAAGqxP,EAAgBrxP,GAAK8wP,GAElC,MAAhBJ,GAAyC,MAAjBG,IAEnCpjS,KAAK0lB,OACL,IAAI2tC,EAAK,EACLC,EAAK,EACY,MAAjB8vO,GAAyC,MAAhBH,IACL,MAAhBA,IACA5vO,GACwC,IAApCuvO,EAAcn/R,QAAQ,SAChBw/R,EAAeD,EAAgBzwP,EAC/BwwP,EAAYxwP,EAAI0wP,GAET,MAAjBG,IACA9vO,GACyC,IAArCsvO,EAAcn/R,QAAQ,UAChB2/R,EAAgBJ,EAAgBxwP,EAChCuwP,EAAYvwP,EAAI4wP,IAGlC,IAAIU,EAAS,EACTC,EAAU,EACd,GAAIrvO,EAAQ,IAAO,EACD,KAAVA,GAA0B,MAAVA,GAChBovO,EAASxwO,EACTywO,EAAU1wO,IAGVywO,EAASzwO,EACT0wO,EAAUzwO,OAGb,CACD,MAAMuzM,EAAWnyM,GAAS,GAAKA,EAAQ,GACjC,EACAA,GAAS,IAAMA,EAAQ,IACnB,EACAA,GAAS,KAAOA,EAAQ,IACpB,EACA,EACO,MAAjB0uO,GAAyC,MAAhBH,IACrB5vO,EAAKC,GACLA,EAAK,EACL8vO,OAAgBlhS,IAGhBmxD,EAAK,EACL4vO,OAAe/gS,IAGvB,MAAMiyD,EAAMe,GAAMC,MAAMT,EAAQ,IAC5BrB,IACAywO,EAAsB,IAAbj9B,EAAiBxzM,EAAKvrD,KAAK8vB,IAAIu8B,GAAOd,EAAKvrD,KAAK0tD,IAAIrB,IAE7Db,IACAywO,EAAuB,IAAbl9B,EAAiBvzM,EAAKxrD,KAAK8vB,IAAIu8B,GAAOb,EAAKxrD,KAAK0tD,IAAIrB,IAElE,MAAM6vO,EAA0B,IAAbn9B,GAA+B,IAAbA,EACrC,OAAQ28B,GACJ,IAAK,MACL,IAAK,SACDO,EAAUzwO,EACJA,GAAM0wO,EAAal8R,KAAK8vB,IAAIu8B,GAAOrsD,KAAK0tD,IAAIrB,IAC5Cd,GAAM2wO,EAAal8R,KAAK0tD,IAAIrB,GAAOrsD,KAAK8vB,IAAIu8B,IAClD,MACJ,IAAK,OACL,IAAK,QACD2vO,EAASzwO,EACHA,GAAM2wO,EAAal8R,KAAK8vB,IAAIu8B,GAAOrsD,KAAK0tD,IAAIrB,IAC5Cb,GAAM0wO,EAAal8R,KAAK0tD,IAAIrB,GAAOrsD,KAAK8vB,IAAIu8B,KAM9D,OAAQqvO,GACJ,IAAK,MACL,IAAK,SACDM,EAAS,EACT,MACJ,IAAK,OACL,IAAK,QACDC,EAAU,EAKlB,MAAM1iL,EAAWrhH,KAAKurN,MAAMmoE,cAC5B,IAAIuQ,EAAWn8R,KAAKitB,IAAI8tQ,EAASxxQ,MAAQyyQ,EAAQziL,GAC7C6iL,EAAYp8R,KAAKitB,IAAI8tQ,EAASpvQ,OAASswQ,EAAS1iL,GAChD1hH,EAAQ2xB,UAAY3xB,EAAQ2xB,SAAW+vF,IACvC4iL,EAAWn8R,KAAKitB,IAAIkvQ,EAAUtkS,EAAQ2xB,WAEtC3xB,EAAQ+iM,WAAa/iM,EAAQ+iM,UAAYrhF,IACzC6iL,EAAYp8R,KAAKitB,IAAImvQ,EAAWvkS,EAAQ+iM,YAExC/iM,EAAQ4xB,WACR0yQ,EAAWn8R,KAAKkzC,IAAIipP,EAAUtkS,EAAQ4xB,WAEtC5xB,EAAQgjM,YACRuhG,EAAYp8R,KAAKkzC,IAAIkpP,EAAWvkS,EAAQgjM,YAExChjM,EAAQmvO,sBACJi1D,EAAUD,EACVI,EAAYD,GAAYpB,EAASpvQ,OAASovQ,EAASxxQ,OAGnD4yQ,EAAWC,GAAarB,EAASxxQ,MAAQwxQ,EAASpvQ,SAGtDwwQ,IAAapB,EAASxxQ,OAAS6yQ,IAAcrB,EAASpvQ,SACtD9uB,EAAK8qH,OAAOw0K,EAAUC,EAAW,CAC7BnjC,YACAyiC,oBACAZ,gBACAD,SAAS,EACTwB,UAAWnkS,KAAKm4E,IAChB4gM,SAAU/4Q,KAAKurN,MAAM7rN,KAAK+zR,gBAAgB5mQ,KAE1Cs2Q,IACAA,GAAkBe,EAAYrB,EAASpvQ,QAEvC6vQ,IACAA,GAAmBW,EAAWpB,EAASxxQ,QAG/C,MAAM+yQ,EAAiBz/R,EAAKi4H,UAAUrhE,KAAK7G,GACvCuuO,GACAn7R,KAAKinC,IAAIq1P,EAAe7xP,EAAI0wP,GAAgB,GAC5Cn7R,KAAKinC,IAAIq1P,EAAe/yQ,MAAQ+yQ,EAAe7xP,EAAI0wP,GAAgB,IACnEA,OAAe/gS,GAEfkhS,GACAt7R,KAAKinC,IAAIq1P,EAAe5xP,EAAI4wP,GAAiB,GAC7Ct7R,KAAKinC,IAAIq1P,EAAe3wQ,OAAS2wQ,EAAe5xP,EAAI4wP,GAAiB,IACrEA,OAAgBlhS,GAEpBlC,KAAKyrD,OAAO,CACRw3O,eACAC,cACAC,iBACAC,gBACAC,iBACAC,sBAKhB,cAAa,KAAEz2Q,EAAI,EAAEhf,EAAC,EAAE0kC,EAAC,EAAEC,IACvB,MAAMgqN,EAAa3vO,EAAK6+N,aAAa79O,GAAGw2R,eAAiBx3Q,EACzD,IAAK7sB,KAAK0iS,cAAclmC,GACpB,OAEJ,MAAM73P,EAAO63P,EAAW3qB,KAClBj1L,EAAOj4C,EAAKi0I,UACZpmH,EAAW7tB,EAAKkwP,cAChByvC,EAAW,IAAI,GAAU/xP,EAAIvyC,KAAKmoC,OAAOoK,EAAGC,EAAIxyC,KAAKmoC,OAAOqK,EAAGoK,EAAKvrB,MAAOurB,EAAKnpB,QAChFihC,EAAQ/vD,EAAK+nP,WACb63C,EAAaD,EAAS5pO,YACtBooO,EAAkBwB,EAAS/oO,KAAK7G,GAChCquO,EAAcD,EAAgBx+L,aAC9B0+L,EAAkBF,EAAgB/9L,iBAClCl0C,EAAW7wD,KAAKL,QAAQiiS,WAAa,EAC3C,IAAIqB,EACAC,EACAC,EACAC,EACAC,EACAC,EACAkB,EAAc,EACdC,EAAgB,EA+DpB,GA9DAzkS,KAAKs5E,MAAM8sL,WAAW9/M,KAAMo+O,IACxB,GAAI1kS,KAAKyjS,UAAU9+R,EAAM+/R,GACrB,OAAO,EAEX,MAAMhB,EAAWgB,EAAW9nK,UAAUrhE,KAAKmpO,EAAWh4C,YAChDi4C,EAAajB,EAAShpO,YACtBipO,EAAcD,EAASp/L,aACvBs/L,EAAkBF,EAAS3+L,iBAoDjC,OAnDoB,MAAhBk+L,IACIn7R,KAAKinC,IAAI41P,EAAWpyP,EAAIgyP,EAAWhyP,GAAKse,GACxCoyO,EAAe0B,EAAWpyP,EAC1BiyP,EAAc,IAET18R,KAAKinC,IAAI40P,EAAYpxP,EAAIwwP,EAAYxwP,GAAKse,GAC/CoyO,EAAeU,EAAYpxP,EAC3BiyP,EAAc,GAET18R,KAAKinC,IAAI40P,EAAYpxP,EAAIywP,EAAgBzwP,GAAKse,GACnDoyO,EAAeU,EAAYpxP,EAC3BiyP,EAAc,GAET18R,KAAKinC,IAAI60P,EAAgBrxP,EAAIywP,EAAgBzwP,GAAKse,GACvDoyO,EAAeW,EAAgBrxP,EAC/BiyP,EAAc,GAET18R,KAAKinC,IAAI60P,EAAgBrxP,EAAIwwP,EAAYxwP,GAAKse,IACnDoyO,EAAeW,EAAgBrxP,GAEf,MAAhB0wP,IACAC,EAAcp7R,KAAKkzC,IAAI8nP,EAAgBtwP,EAAGkxP,EAASlxP,GACnD2wP,EACIr7R,KAAKitB,IAAIiuQ,EAAgBxwP,EAAGoxP,EAAgBpxP,GAAK0wP,IAGxC,MAAjBE,IACIt7R,KAAKinC,IAAI41P,EAAWnyP,EAAI+xP,EAAW/xP,GAAKqe,GACxCuyO,EAAgBuB,EAAWnyP,EAC3BiyP,EAAgB,IAEX38R,KAAKinC,IAAI40P,EAAYnxP,EAAIuwP,EAAYvwP,GAAKqe,EAC/CuyO,EAAgBO,EAAYnxP,EAEvB1qC,KAAKinC,IAAI40P,EAAYnxP,EAAIwwP,EAAgBxwP,GAAKqe,GACnDuyO,EAAgBO,EAAYnxP,EAC5BiyP,EAAgB,GAEX38R,KAAKinC,IAAI60P,EAAgBpxP,EAAIwwP,EAAgBxwP,GAAKqe,GACvDuyO,EAAgBQ,EAAgBpxP,EAChCiyP,EAAgB,GAEX38R,KAAKinC,IAAI60P,EAAgBpxP,EAAIuwP,EAAYvwP,GAAKqe,IACnDuyO,EAAgBQ,EAAgBpxP,GAEf,MAAjB4wP,IACAC,EAAiBv7R,KAAKkzC,IAAI8nP,EAAgBvwP,EAAGmxP,EAASnxP,GACtD+wP,EACIx7R,KAAKitB,IAAIiuQ,EAAgBzwP,EAAGqxP,EAAgBrxP,GAAK8wP,IAGtC,MAAhBJ,GAAyC,MAAjBG,IAEnCpjS,KAAK0lB,OACgB,MAAjB09Q,GAAyC,MAAhBH,EAAsB,CAC1B,MAAjBG,IACAN,EAAgBtwP,EACZ4wP,EAAgBqB,EAAgB3B,EAAgBrvQ,QAEpC,MAAhBwvQ,IACAH,EAAgBvwP,EAAI0wP,EAAeuB,EAAc1B,EAAgBzxQ,OAErE,MAAMuzQ,EAAY9B,EAAgBpoO,YAC5BmqO,EAAOD,EAAUryP,EAAI+xP,EAASjzQ,MAAQ,EACtCyzQ,EAAOF,EAAUpyP,EAAI8xP,EAAS7wQ,OAAS,EACvC4/B,EAAKwxO,EAAOryQ,EAAS+f,EACrB+gB,EAAKwxO,EAAOtyQ,EAASggB,EAChB,IAAP6gB,GAAmB,IAAPC,IACZ3uD,EAAKyuD,UAAUC,EAAIC,EAAI,CACnBqvO,SAAS,EACT5pB,SAAU/4Q,KAAKurN,MAAM7rN,KAAK+zR,gBAAgBj3B,KAE1C8mC,IACAA,GAAmBjwO,GAEnB8vO,IACAA,GAAkB7vO,IAG1BtzD,KAAKyrD,OAAO,CACRw3O,eACAC,cACAC,iBACAC,gBACAC,iBACAC,qBAIZ,UAAUyB,EAAUL,GAChB,OAAQA,EAAWl2R,KAAOu2R,EAASv2R,IAC/Bk2R,EAAW/wB,eAAeoxB,IAC1B/kS,KAAKsiS,aAAaoC,EAAWtzP,QAC7BpxC,KAAKuiS,YAAYmC,EAAWl2R,KAC3BxO,KAAKwiS,gBACF,EAAYplS,KAAK4C,KAAKwiS,eAAgBxiS,KAAKurN,MAAOm5E,GAE9D,OAAOpzB,GACH,MAAM1yI,EAAM5+H,KAAKurN,MAAMn0J,SACjB1D,EAAKkrE,EAAI5zH,EACT2oD,EAAKirE,EAAIrhI,EACTo9D,EAAKikE,EAAI/wH,EACT+sD,EAAKgkE,EAAI5pB,EACTgwL,EAAQhlS,KAAKL,QAAQqlS,MACrBC,EAA4C,MAA9BjlS,KAAKurN,MAAM0oE,SAASb,OACpC9hB,EAAS8xB,cACTpjS,KAAK+hS,YACAv9Q,IAAI,CACLvT,IAAKqgQ,EAAS8xB,cAAgBzvO,EAAKiH,EACnCrkC,KAAMyuQ,EACA1zB,EAAS+xB,eAAiB3vO,EAAKiH,EAC/BsqO,EACI,QACA,EACV5zQ,MAAO2zQ,EACD1zB,EAASgyB,gBAAkB5vO,EAC3BuxO,EACI,OACA,SAETz/Q,OAGLxlB,KAAK+hS,YAAYr8Q,OAEjB4rP,EAAS2xB,aACTjjS,KAAKiiS,UACAz9Q,IAAI,CACL+R,KAAM+6O,EAAS2xB,aAAevvO,EAAKiH,EACnC1pD,IAAK+zR,EACC1zB,EAAS4xB,YAAcvvO,EAAKiH,EAC5BqqO,EACI,QACA,EACVxxQ,OAAQuxQ,EACF1zB,EAAS6xB,eAAiBxvO,EAC1BsxO,EACI,OACA,SAETz/Q,OAGLxlB,KAAKiiS,UAAUv8Q,OAEnB1lB,KAAKwlB,OAET,aACQxlB,KAAK25B,QACLoC,aAAa/7B,KAAK25B,OAClB35B,KAAK25B,MAAQ,MAGrB,OAMI,OALA35B,KAAKkiR,WAAW18P,OAChBxlB,KAAKklS,aAC4B,MAA7BllS,KAAK8xB,UAAUzsB,YACfrF,KAAKurN,MAAMz5L,UAAU1sB,YAAYpF,KAAK8xB,WAEnC9xB,KAEX,OACIA,KAAKkiR,WAAWx8P,OAChB1lB,KAAKklS,aACL,MAAMh4C,EAAQltP,KAAKL,QAAQutP,MACrBtxN,EAAyB,iBAAVsxN,EAAqBA,GAAkB,IAAVA,EAAkB,IAAO,EAM3E,OALItxN,EAAQ,IACR57B,KAAK25B,MAAQ12B,OAAO2c,WAAW,KAC3B5f,KAAK4qP,WACNhvN,IAEA57B,KAEX,WACIA,KAAKi/R,gBACLj/R,KAAK0lB,OAET,UACI1lB,KAAK4d,UAGb,GAAW,CACP,GAAKqyG,WACN,GAASpxH,UAAW,UAAW,MCtjBlC,IAk9BWsmS,GAl9BP,GAA0C,SAAUj/C,EAAYx+O,EAAQlJ,EAAK2nP,GAC7E,IAA2H5oP,EAAvHD,EAAImJ,UAAU9E,OAAQ5D,EAAIT,EAAI,EAAIoK,EAAkB,OAATy+O,EAAgBA,EAAOxoP,OAAOkrE,yBAAyBnhE,EAAQlJ,GAAO2nP,EACrH,GAAuB,iBAAZ9gL,SAAoD,mBAArBA,QAAQ+gL,SAAyBroP,EAAIsnE,QAAQ+gL,SAASF,EAAYx+O,EAAQlJ,EAAK2nP,QACpH,IAAK,IAAIlpP,EAAIipP,EAAWvkP,OAAS,EAAG1E,GAAK,EAAGA,KAASM,EAAI2oP,EAAWjpP,MAAIc,GAAKT,EAAI,EAAIC,EAAEQ,GAAKT,EAAI,EAAIC,EAAEmK,EAAQlJ,EAAKT,GAAKR,EAAEmK,EAAQlJ,KAAST,GAChJ,OAAOT,EAAI,GAAKS,GAAKJ,OAAOC,eAAe8J,EAAQlJ,EAAKT,GAAIA,GAOzD,MAAM,WAAiB,GAC1B,OACIiC,KAAKolS,eACLplS,KAAKk/R,iBAELl/R,KAAKqlS,WAAWrlS,KAAKs5E,MAAM6zM,aAEtBntR,KAAKguE,YAAchuE,KAAK6xL,WACzB7xL,KAAKslS,mBAGb,iBACItlS,KAAKs5E,MAAMlxD,GAAG,SAAUpoB,KAAKulS,YAAavlS,MAC1CA,KAAKs5E,MAAMlxD,GAAG,UAAWpoB,KAAKwlS,eAAgBxlS,MAC9CA,KAAKs5E,MAAMlxD,GAAG,aAAcpoB,KAAKqiS,YAAariS,MAC9CA,KAAKs5E,MAAMlxD,GAAG,aAAcpoB,KAAKg1R,YAAah1R,MAC9CA,KAAKs5E,MAAMlxD,GAAG,eAAgBpoB,KAAKi1R,cAAej1R,MAClDA,KAAKs5E,MAAMlxD,GAAG,qBAAsBpoB,KAAKylS,oBAAqBzlS,MAC9DA,KAAKs5E,MAAMlxD,GAAG,sBAAuBpoB,KAAK0lS,qBAAsB1lS,MAEpE,gBACIA,KAAKs5E,MAAM7wD,IAAI,SAAUzoB,KAAKulS,YAAavlS,MAC3CA,KAAKs5E,MAAM7wD,IAAI,UAAWzoB,KAAKwlS,eAAgBxlS,MAC/CA,KAAKs5E,MAAM7wD,IAAI,aAAczoB,KAAKqiS,YAAariS,MAC/CA,KAAKs5E,MAAM7wD,IAAI,aAAczoB,KAAKg1R,YAAah1R,MAC/CA,KAAKs5E,MAAM7wD,IAAI,eAAgBzoB,KAAKi1R,cAAej1R,MACnDA,KAAKs5E,MAAM7wD,IAAI,qBAAsBzoB,KAAKylS,oBAAqBzlS,MAC/DA,KAAKs5E,MAAM7wD,IAAI,sBAAuBzoB,KAAK0lS,qBAAsB1lS,MAErE,eACIA,KAAK2lS,QAAU,CACXC,WAAY,CAAC,GAAI,GAAI,IACrB5iN,QAAS,GACT6iN,YAAa,GACbC,UAAW,GACXC,cAAe,GACfniR,MAAO,EACPxc,MAAM,EACNg5R,QAAQ,EACR4F,UAAW,KACXC,YAAa,MAGrB,cACQjmS,KAAKs5E,MAAM4sN,eAAe,GAASC,wBAGvCnmS,KAAKomS,YAET,gBAAe,QAAEzmS,IACbK,KAAKqmS,gBACLrmS,KAAKqlS,WAAWrlS,KAAKs5E,MAAM6zM,WAAYxtR,GAE3C,aAAY,KAAEnC,EAAI,KAAE+kB,IAChB,GAAIviB,KAAKguE,WACL,OAEJ,MAAMsL,EAAQt5E,KAAKs5E,MACnB,IAAKt5E,KAAK6xL,UAAW,CACjB,MAAMy0G,EAAwB,GAASC,wBACnCD,EAAsBpoP,SAAS1gD,KAC9B87E,EAAM4sN,eAAeI,IACtBtmS,KAAKwmS,YAAYjkR,GAGzB,MAAMkkR,EAAsB,GAASN,sBACjCM,EAAoBvoP,SAAS1gD,KAC5B87E,EAAM4sN,eAAeO,IACtBzmS,KAAKomS,YAGb,aAAY,KAAEv0D,EAAI,QAAElyO,IAChB,MAAM6yB,EAAW7yB,EAAQ6yB,SACrBxyB,KAAK6xL,WAAiC,iBAAbr/J,EACzBxyB,KAAK0mS,WAAW70D,EAAMlyO,IAGlBA,EAAQ81R,cAAgBjjQ,GACxBxyB,KAAK0gE,OAAO,CAAEliE,IAAK,aAEvBwB,KAAK0mS,WAAW70D,EAAMlyO,GACL,IAAb6yB,GACAxyB,KAAK6gS,SAAS,CAAEriS,IAAK,cAIjC,eAAc,KAAEqzO,EAAI,QAAElyO,IAClB,MAAMktB,EAAO7sB,KAAK6uQ,eAAeh9B,GAC7BhlN,GACA7sB,KAAKi0P,kBAAkBpnO,EAAM,GAAS85Q,YAAa95Q,EAAK2zH,SAAU7gJ,GAG1E,qBAAoB,KAAEkyO,EAAI,QAAElyO,IACxB,GAA6B,WAAzBK,KAAKL,QAAQinS,QAAsB,CACnC,MAAM/5Q,EAAO7sB,KAAK6uQ,eAAeh9B,GAC7BhlN,GACA7sB,KAAKi0P,kBAAkBpnO,EAAM,GAASg6Q,YAAah6Q,EAAK2zH,SAAU7gJ,IAI9E,sBAAqB,KAAEkyO,EAAM7sM,QAASY,EAAO,QAAEjmC,IAEtCimC,GACD5lC,KAAK8mS,oCAAoCj1D,GAAM,GAEnD,MAAMhlN,EAAO7sB,KAAK6uQ,eAAeh9B,IAC5BjsM,GAAW/Y,EACZ7sB,KAAK+mS,WAAWl1D,GAEXjsM,GAAmB,MAAR/Y,GAChB7sB,KAAK0mS,WAAW70D,EAAMlyO,GAGtBimC,GACA5lC,KAAK8mS,oCAAoCj1D,GAAM,GAGvD,oCAAoCltO,EAAMihC,GAYtC5lC,KAAKs5E,MAAMqhM,kBAAkBh2Q,GAAMwmC,QAASyuB,IACxC,MAAM0qM,EAZU,EAAC1qM,EAAM+yN,KAEvB,GADiB/yN,EAAKqsM,oBACL0mB,EAAgBn+Q,GAC7B,OAAOorD,EAAKslN,gBAGhB,OADiBtlN,EAAKusM,oBACLwmB,EAAgBn+Q,GACtBorD,EAAKulN,gBAET,MAGU6nB,CAAYptO,EAAMj1D,IACnB,MAAZ2/P,GAAoBA,EAAS7yJ,eAC7B7rE,EAAUg0B,EAAKp0C,OAASo0C,EAAKl0C,UAIzC,sBAAsBk0C,EAAMwyL,GACxB,MAAMywB,EAAsB,WAAbzwB,EAAwBxyL,EAAKqsM,kBAAoBrsM,EAAKusM,kBAC/Dt0B,EAAOgrC,EAAS78Q,KAAKs5E,MAAMysL,QAAQ8W,GAAU,KACnD,QAAIhrC,IAASA,EAAKpgI,aAKtB,4BAA4B5kF,EAAMltB,EAAU,IACxC,GAAI,GAASi3P,WAAW/pO,GAAO,CAC3B,MAAMglN,EAAOhlN,EAAKglN,KACZ68B,EAAQ1uQ,KAAKs5E,MAAMqhM,kBAAkB9oC,GAC3C,IAAK,IAAI3qO,EAAI,EAAGxI,EAAIgwQ,EAAM/sQ,OAAQuF,EAAIxI,EAAGwI,GAAK,EAAG,CAC7C,MAAM0yD,EAAO80M,EAAMxnQ,GACb4qO,EAAW9xO,KAAK6uQ,eAAej1M,GACrC,IAAKk4K,EACD,SAEJ,MAAMm1D,EAAa,CAAC,UAChBrtO,EAAKulN,kBAAoBttC,GACzBo1D,EAAWzkS,KAAK,UAEhBo3D,EAAKslN,kBAAoBrtC,GACzBo1D,EAAWzkS,KAAK,UAEpBxC,KAAKknS,mBAAmBp1D,EAAUA,EAASugB,QAAQ40C,GAAan1D,EAAStxF,SAAU7gJ,KAI/F,yBAAyBktB,EAAM5P,GAC3B,IAAK4P,IAAS,GAAS+pO,WAAW/pO,GAC9B,OAAO,EAEX,MAAMglN,EAAOhlN,EAAKglN,KAClB,GAAIA,EAAKhlD,SACL,OAAO,EAEX,MAAMilD,EAAWjlN,EACjB,GAAIglN,EAAKptK,UAA4D,IAA/CxnD,EAAO4P,EAAKwlO,QAAQ,CAAC,SAAU,YAAmB,CAGpE,IAAI80C,EAAa,EACjB,MAAMprC,EAAa/7P,KAAK6uQ,eAAeh9B,EAAKqtC,iBACxCnjB,IAAe/7P,KAAKogR,cAAcrkB,KAClCorC,EAAannS,KAAKs2P,SAASyF,GAC3BjqB,EAASo1C,qBAAqB,WAElC,IAAIkgB,EAAa,EACjB,MAAM5qC,EAAax8P,KAAK6uQ,eAAeh9B,EAAKstC,iBAK5C,GAJI3iB,IAAex8P,KAAKogR,cAAc5jB,KAClC4qC,EAAapnS,KAAKs2P,SAASkG,GAC3B1qB,EAASo1C,qBAAqB,WAEf,IAAfigB,GAAmC,IAAfC,EAEpB,OAAQpnS,KAAKs2P,SAASxkB,GAG9B,OAAO,EAEX,mBAAmBjlN,EAAM5P,EAAMujI,EAAU7gJ,EAAU,IAC/C,MAAMw4E,EAAMtrD,EAAKsrD,IACXwtN,EAAU3lS,KAAK2lS,QACrB,IAAIt2R,EAAQs2R,EAAQC,WAAWplJ,GAC1BnxI,IACDA,EAAQs2R,EAAQC,WAAWplJ,GAAY,IAE3C,MAAM6mJ,EAAch4R,EAAM8oE,IAAQ,GAC7BkvN,EAAcpqR,KAAUA,IAGxBoqR,IACD1B,EAAQ/hR,OAAS,GAEjB3G,EAAO,GAAS0pR,aAAeU,EAAc,GAASR,YAGtDx3R,EAAM8oE,IAAQ,GAAS0uN,YAElB5pR,EAAO,GAAS4pR,aACrBQ,EAAc,GAASV,cAGvBt3R,EAAM8oE,IAAQ,GAASwuN,aAE3Bt3R,EAAM8oE,IAAQl7D,EACdjd,KAAKurN,MAAM7rN,KAAK4nS,cAAcz6Q,EAAM5P,EAAMtd,IAE9C,kBAAkBktB,EAAM5P,EAAMujI,EAAU7gJ,EAAU,IAC9CK,KAAKknS,mBAAmBr6Q,EAAM5P,EAAMujI,EAAU7gJ,GAC9C,MAAMkyL,EAAU7xL,KAAK6xL,UACrB,GAAI7xL,KAAKguE,YACJ6jH,IAA6B,IAAlBlyL,EAAQgiC,OACpB3hC,KAAKs5E,MAAM4sN,eAAe,GAASK,yBACnC,OAEJ,MAAMgB,EAAQvnS,KAAKwmS,YAAY7mS,GAC3BkyL,GACA7xL,KAAKurN,MAAMriM,QAAQ,cAAe,CAAEq+Q,QAAO5nS,YAMnD,SAASktB,EAAMltB,EAAU,IACrB,GAAY,MAARktB,EACA,OAAO,EAEX,MAAMsrD,EAAMtrD,EAAKsrD,IAEX9oE,EADUrP,KAAK2lS,QACCC,WAAW/4Q,EAAK2zH,UAChCvjI,EAAOjd,KAAKwnS,oBAAoB36Q,GAAQxd,EAAM8oE,GAEpD,cADO9oE,EAAM8oE,GACRl7D,EAGEjd,KAAKynS,WAAW56Q,EAAM5P,EAAMtd,GAFxB,EAOf,UAAUA,EAAU,IAChBK,KAAK0nS,UAAU/nS,GACfK,KAAKwmS,YAAY7mS,GAMrB,YAAYkyO,EAAMlyO,EAAU,IACxB,MAAMktB,EAAO7sB,KAAK6uQ,eAAeh9B,GACjC,OAAY,MAARhlN,EACO,MAEX7sB,KAAKs2P,SAASzpO,EAAMltB,GACbktB,GAEX,WAAWA,EAAM5P,EAAMtd,EAAU,IAC7B,GAAY,MAARktB,EACA,OAAO,EAEX,GAAI,GAAS+pO,WAAW/pO,GAAO,CAC3B,GAAI5P,EAAO,GAAS0pR,YAEhB,OADA3mS,KAAK+mS,WAAWl6Q,EAAKglN,MACd,EAEP50N,EAAO,GAAS4pR,cAChB7mS,KAAK2nS,WAAW96Q,GAChB5P,GAAQ,GAAS4pR,aAGzB,OAAK5pR,EAGE4P,EAAKgqO,cAAc55O,EAAMtd,GAFrB,EAIf,YAAYA,EAAU,IAClB,IAAIwB,EACAymS,EAAa,EACbC,EAAe,EACfrnJ,EAAW,GAASsnJ,aACxB,GACI3mS,EAASnB,KAAK+nS,iBAAiBpoS,GAC/BioS,GAAc,EACdC,GAAgB1mS,EAAO0mS,aACvBrnJ,EAAW14I,KAAKkzC,IAAI75C,EAAOq/I,SAAUA,UAC/Br/I,EAAO0c,OACjB,MAAO,CACH2iI,WACAonJ,aACAC,gBAGR,iBAAiBloS,EAAU,IACvB,MAAMgmS,EAAU3lS,KAAK2lS,QACfC,EAAaD,EAAQC,WACrBoC,EAAYroS,EAAQqoS,WAAa,GAASC,kBAChD,IAAIpqR,GAAQ,EACR2iI,EAAW,GAASsnJ,aACpBI,EAAe,EACfC,EAAiB,EACjBN,EAAe,EACfO,EAAiB,EACjBV,EAAY/nS,EAAQ+nS,WAAa1nS,KAAKL,QAAQ+nS,UACzB,mBAAdA,IACPA,EAAY,MAGhBW,EAAM,IAAK,IAAItpS,EAAI,EAAGL,EAAIknS,EAAWjkS,OAAQ5C,EAAIL,EAAGK,GAAK,EAAG,CACxD,MAAMsQ,EAAQu2R,EAAW7mS,GAEzB,IAAK,MAAMo5E,KAAO9oE,EAAO,CACrB,GAAIw4R,GAAgBG,EAAW,CAC3BnqR,GAAQ,EACR,MAAMwqR,EAEV,MAAMx7Q,EAAO,GAAK69N,MAAMvyK,GACxB,IAAKtrD,EAAM,QACAxd,EAAM8oE,GACb,SAEJ,IAAIkvN,EAAch4R,EAAM8oE,GAExB,GAA6C,IAAxCkvN,EAAc,GAASV,aAAoB,CAC5C,MAAM2B,EAAcnwN,KAAOwtN,EAAQG,UACnC,GAAI4B,IACC,EAAYtqS,KAAKsqS,EAAW1nS,KAAKurN,MAAO,CACrC1+L,KAAMA,EACNi5Q,UAAWwC,IACX,CAECA,IACDtoS,KAAKuoS,sBAAsB17Q,GAC3BA,EAAK+9N,WAET+6C,EAAQG,UAAU3tN,IAAQkvN,SACnBh4R,EAAM8oE,GACbgwN,GAAkB,EAClB,SAGAG,IACAjB,GAAe,GAASR,YACxBqB,GAAgB,GAEpBb,GAAernS,KAAKwnS,oBAAoB36Q,GAE5C,MAAMkrN,EAAWlrN,EACjB,IAAI27Q,EAAexoS,KAAKynS,WAAW56Q,EAAMw6Q,EAAa1nS,GACtD,GAAI6oS,EAAe,EAAG,CAClB,MAAM32D,EAAOkG,EAASlG,KAClBA,GAAQA,EAAKptK,WAETszK,EAAS2b,UAAU80C,EAAc,YAChCxoS,KAAKyoS,sBAAsB52D,EAAM,YAClC22D,EAAezwD,EAAS4b,aAAa60C,EAAc,UACnDA,GAAgB,GAAS7B,aAGzB5uD,EAAS2b,UAAU80C,EAAc,YAChCxoS,KAAKyoS,sBAAsB52D,EAAM,YAClC22D,EAAezwD,EAAS4b,aAAa60C,EAAc,UACnDA,GAAgB,GAAS7B,cAIjC6B,EAAe,IAEfn5R,EAAM8oE,GAAOqwN,GACRxoS,KAAKurN,MAAM7rN,KAAKgpS,gBAAgB3wD,EAAUywD,EAAc7oS,IACzD0P,EAAM8oE,KACNiwN,GAAkB,EAClBvqR,GAAQ,IAIZ2iI,EAAWzhJ,IACXyhJ,EAAWzhJ,GAEf8oS,GAAgB,SACTx4R,EAAM8oE,KAGrB,MAAO,CACHt6D,QACA2iI,WACA0nJ,eACAC,iBACAN,eACAO,kBAGR,iBAAiBzoS,EAAU,GAAI4iB,EAAO,CAClC6uO,UAAW,EACX5wG,SAAU,GAASsnJ,eAEnB,MAAMnC,EAAU3lS,KAAK2lS,QACfM,EAAcN,EAAQM,YAC5B,GAAIA,EAAa,CAEb,GADA,EAAIxnJ,qBAAqBwnJ,GACF,IAAnB1jR,EAAK6uO,UAAiB,CACtB,MAAMu3C,EAAWhpS,EAAQuwB,OACD,mBAAby4Q,GACP,EAAYvrS,KAAKurS,EAAU3oS,KAAKurN,MAAOvrN,KAAKurN,OAGpD,MAAMg8E,EAAQvnS,KAAK+nS,iBAAiBpoS,GAC9BipS,EAAW5oS,KAAK6oS,cAAc,CAChCnB,UAAW/nS,EAAQ+nS,UACnBoB,iBAAkB,GAASC,iBAAmBxB,EAAMW,aACpDc,mBAAoB,GAASD,iBAAmBxB,EAAMY,iBAE1D,IAAI/2C,EAAY7uO,EAAK6uO,UACrB,MAAMr2L,EAAQ4qO,EAAQ/hR,MAChBskR,EAAeU,EAASV,aACxBC,EAAiBS,EAAST,eAC5BZ,EAAMM,aAAe,IAErBz2C,GAAam2C,EAAMM,aAAeN,EAAMY,eACxC5lR,EAAKi+H,SAAW14I,KAAKkzC,IAAIusP,EAAM/mJ,SAAUj+H,EAAKi+H,UAC1C+mJ,EAAM1pR,OAA0B,IAAjBqqR,GACfX,EAAM/mJ,SAAWj+H,EAAKi+H,SACtB+mJ,EAAMW,cAAgBA,EACtBX,EAAMY,gBAAkBA,EACxBnoS,KAAKurN,MAAMriM,QAAQ,cAAe,CAAEq+Q,QAAO5nS,YAC3C4iB,EAAK6uO,UAAY,EACjBu0C,EAAQ/hR,MAAQ,GAGhBrB,EAAK6uO,UAAYA,GAIzB,MAAM63C,EAAatpS,EAAQgf,SAS3B,GARIo8C,GAA+B,mBAAfkuO,GAChB,EAAY7rS,KAAK6rS,EAAYjpS,KAAKurN,MAAO,CACrCxwJ,QACAtwD,KAAM88R,EAAM1pR,MACZmnB,QAASosN,IAIbu0C,EAAQM,cAAgBA,EACxB,OAGRN,EAAQM,YAAc,EAAI7tQ,sBAAsB,KAC5Cp4B,KAAKslS,iBAAiB3lS,EAAS4iB,KAGvC,oBAAoBsK,GAChB,MAAMsrD,EAAMtrD,EAAKsrD,IACXwtN,EAAU3lS,KAAK2lS,QACrB,GAAIxtN,KAAOwtN,EAAQ3iN,QACf,OAAO,EAEX2iN,EAAQ3iN,QAAQ7K,IAAO,EACvBwtN,EAAQE,YAAYrjS,KAAK21E,GACzB,MAAMl7D,EAAO0oR,EAAQG,UAAU3tN,IAAQ,EAEvC,cADOwtN,EAAQG,UAAU3tN,GAClBl7D,EAEX,sBAAsB4P,GAClB,MAAMsrD,EAAMtrD,EAAKsrD,IACXwtN,EAAU3lS,KAAK2lS,QACrB,GAAIxtN,KAAOwtN,EAAQG,UACf,OAAO,EAEXH,EAAQG,UAAU3tN,IAAQ,GAAS0uN,YACnC,MAAM5pR,EAAO0oR,EAAQG,UAAU3tN,GAG/B,OAFAwtN,EAAQI,cAAcvjS,KAAK21E,UACpBwtN,EAAQ3iN,QAAQ7K,GAChBl7D,EAEX,cAAc4P,GACV,GAAY,MAARA,EACA,OAAO,EAGX,OADYA,EAAKsrD,OACHn4E,KAAK2lS,QAAQ3iN,QAE/B,kBACI,OAAOrlF,OAAOyR,KAAKpP,KAAK2lS,QAAQ3iN,SAASz8E,IAAK4xE,GAAQ,GAASuyK,MAAMvyK,IAEzE,oBACI,OAAOx6E,OAAOyR,KAAKpP,KAAK2lS,QAAQG,WAAWv/R,IAAK4xE,GAAQ,GAASuyK,MAAMvyK,IAE3E,kBAAkB+wN,EAAYlB,GAC1B,IAAImB,EAAe,EACnB,GAA0B,mBAAfD,EACP,OAAOC,EAEX,MAAMxD,EAAU3lS,KAAK2lS,QACf3iN,EAAU2iN,EAAQ3iN,QAClB6iN,EAAcF,EAAQE,YACtBjpP,EAAoB,MAAborP,EACPnC,EAAYlkS,OACZmG,KAAKkzC,IAAI6qP,EAAYlkS,OAAQqmS,GACnC,IAAK,IAAI/qS,EAAI,EAAGA,EAAI2/C,EAAM3/C,GAAK,EAAG,CAC9B,MAAMk7E,EAAM0tN,EAAY5oS,GACxB,KAAMk7E,KAAO6K,GACT,SAEJ,MAAMn2D,EAAO,GAAS69N,MAAMvyK,GAC5B,GAAY,MAARtrD,EACA,SAMJ,GAJoB,EAAYzvB,KAAK8rS,EAAYlpS,KAAKurN,MAAO,CACzD1+L,KAAMA,EACNi5Q,WAAW,IAEE,CAEbD,EAAYrjS,KAAK21E,GACjB,SAEJgxN,GAAgB,EACHnpS,KAAKuoS,sBAAsB17Q,IAEpCA,EAAK+9N,UAKb,OADAi7C,EAAYx+R,OAAO,EAAGu1C,GACfusP,EAEX,oBAAoBzB,EAAWM,GAC3B,IAAIoB,EAAa,EACQ,mBAAd1B,IACPA,EAAY,MAEhB,MAAM/B,EAAU3lS,KAAK2lS,QACfG,EAAYH,EAAQG,UACpBC,EAAgBJ,EAAQI,cACxBnpP,EAAoB,MAAborP,EACPjC,EAAcpkS,OACdmG,KAAKkzC,IAAI+qP,EAAcpkS,OAAQqmS,GACrC,IAAK,IAAI/qS,EAAI,EAAGA,EAAI2/C,EAAM3/C,GAAK,EAAG,CAC9B,MAAMk7E,EAAM4tN,EAAc9oS,GAC1B,KAAMk7E,KAAO2tN,GACT,SAEJ,MAAMj5Q,EAAO,GAAS69N,MAAMvyK,GAC5B,GAAY,MAARtrD,EACA,SAEJ,GAAI66Q,IACC,EAAYtqS,KAAKsqS,EAAW1nS,KAAKurN,MAAO,CAAE1+L,OAAMi5Q,WAAW,IAAU,CACtEC,EAAcvjS,KAAK21E,GACnB,SAEJixN,GAAc,EACd,MAAMnsR,EAAOjd,KAAKwnS,oBAAoB36Q,GAClC5P,GACAjd,KAAKknS,mBAAmBr6Q,EAAM5P,EAAM4P,EAAK2zH,SAAU,CAC/C6oJ,UAAU,IAMtB,OADAtD,EAAc1+R,OAAO,EAAGu1C,GACjBwsP,EAEX,cAAczpS,EAAU,CACpBmpS,iBAAkB5sO,OAAOswM,iBACzBw8B,mBAAoB9sO,OAAOswM,mBAE3B,MAAMk7B,EAAY/nS,EAAQ+nS,WAAa1nS,KAAKL,QAAQ+nS,UAC9CS,EAAiBnoS,KAAKspS,kBAAkB5B,EAAW/nS,EAAQqpS,oBAOjE,MAAO,CAAEd,aANYloS,KAAKupS,oBAAoB7B,EAG9CS,EAAiB,EACXrgS,KAAKkzC,IAAIh7C,KAAK2lS,QAAQI,cAAcpkS,OAASwmS,EAAgBxoS,EAAQmpS,kBACrEnpS,EAAQmpS,kBACSX,kBAK3B,UAAUxoS,EAAU,IAChB,OAAOK,KAAK6oS,cAAclpS,GAE9B,WACI,QAASK,KAAKL,QAAQygS,OAM1B,OAAOzgS,EAAU,IACb,MAAMnB,EAAMmB,EAAQnB,IACdmnS,EAAU3lS,KAAK2lS,QACfvF,EAASpgS,KAAKL,QAAQygS,OACtB4F,EAAYL,EAAQK,UAC1B,GAAIxnS,GAAOA,IAAQwnS,EAAW,CAC1B,GAAI5F,GAAU4F,EAEV,OAEJL,EAAQvF,OAASA,EACjBuF,EAAQK,UAAYxnS,EAExBwB,KAAKL,QAAQygS,QAAS,EACtB,MAAM6F,EAAcN,EAAQM,YAC5BN,EAAQM,YAAc,KAClBjmS,KAAK6xL,WAA4B,MAAfo0G,GAClB,EAAIxnJ,qBAAqBwnJ,GAE7BjmS,KAAKurN,MAAMriM,QAAQ,SAAU,CAAE1qB,QAEnC,SAASmB,EAAU,IACf,MAAMnB,EAAMmB,EAAQnB,IACdmnS,EAAU3lS,KAAK2lS,QACfK,EAAYL,EAAQK,UAE1B,GAAIxnS,GAAOwnS,GAAaxnS,IAAQwnS,EAC5B,OAIJ,GAFAL,EAAQK,UAAY,KAEhBxnS,GAAOA,IAAQwnS,GAAaL,EAAQvF,OACpC,OAEJ,MAAM95R,EAAW,KACbtG,KAAKL,QAAQygS,OAASuF,EAAQvF,QAAS,EACnCuF,EAAQv+R,OACRpH,KAAKomS,YACLT,EAAQv+R,MAAO,GAEnB,MAAMoiS,EAAU7pS,EAAQwwB,MACpBq5Q,GACA,EAAYpsS,KAAKosS,EAASxpS,KAAKurN,MAAOvrN,KAAKurN,OAE/CvrN,KAAKurN,MAAMriM,QAAQ,WAAY,CAAE1qB,SAErC,GAAIwB,KAAK6xL,UAAW,CAChB7xL,KAAK0gE,SACL,MAAM3hD,EAAapf,EAAQgf,SAC3B3e,KAAKslS,iBAAiB3nS,OAAO+rD,OAAO/rD,OAAO+rD,OAAO,GAAI/pD,GAAU,CAAEgf,SAAU,EAAGlU,OAAMu6B,UAAS+1B,YAClFh8C,GACA,EAAY3hB,KAAK2hB,EAAY/e,KAAKurN,MAAO,CAAE9gN,OAAMu6B,UAAS+1B,UAG1DtwD,GACAnE,aAKZtG,KAAKwmS,YAAY7mS,GACjB2G,IAGR,UACI,QAAStG,KAAKL,QAAQgiC,MAE1B,SAASA,GACL3hC,KAAKL,QAAQgiC,MAAQA,EAEzB,WACI3hC,KAAK0gE,SACL1gE,KAAKypS,cAET,WAAWt3B,EAAQ,GAAIxyQ,EAAU,IAC7BK,KAAKolS,eACLplS,KAAKypS,cACLzpS,KAAK0gE,OAAO,CAAEliE,IAAK,UACnB,IAAK,IAAIvB,EAAI,EAAGyB,EAAIyzQ,EAAMxwQ,OAAQ1E,EAAIyB,EAAGzB,GAAK,EAC1C+C,KAAK0mS,WAAWv0B,EAAMl1Q,GAAI0C,GAE9BK,KAAK6gS,SAAS,CAAEriS,IAAK,UACrBwB,KAAKomS,YAET,WAAWv0D,GACP,MAAMhlN,EAAO7sB,KAAK0qP,MAAM7Y,EAAKrjO,IAC7B,GAAIqe,EAAM,CACN,MAAMsrD,EAAMtrD,EAAKsrD,IACXwtN,EAAU3lS,KAAK2lS,QACf3iN,EAAU2iN,EAAQ3iN,QAClB8iN,EAAYH,EAAQG,UAC1Bj5Q,EAAKjP,gBACE5d,KAAK0qP,MAAM7Y,EAAKrjO,WAChBw0E,EAAQ7K,UACR2tN,EAAU3tN,GAErB,OAAOtrD,EAEX,cACQ7sB,KAAK0qP,OACL/sP,OAAOyR,KAAKpP,KAAK0qP,OAAOv/M,QAAS38B,IAC7B,MAAMqe,EAAO7sB,KAAK0qP,MAAMl8O,GACpBqe,GACA7sB,KAAK+mS,WAAWl6Q,EAAKglN,QAIjC7xO,KAAK0qP,MAAQ,GAEjB,WAAW7Y,EAAMlyO,EAAU,IACvB,MAAM6O,EAAKqjO,EAAKrjO,GACVk8O,EAAQ1qP,KAAK0qP,MACnB,IAAIztO,EAAO,EACP4P,EAAO69N,EAAMl8O,GACjB,GAAKqjO,EAAKpgI,eAGNogI,EAAKptK,UACAzkE,KAAKyoS,sBAAsB52D,EAAM,WACjC7xO,KAAKyoS,sBAAsB52D,EAAM,WAF1C,CAMA,GAAIhlN,EACA5P,EAAO,GAAS4pR,gBAEf,CACD,MAAMh1R,EAAM7R,KAAKurN,MAAM7rN,KAAKgqS,eAAe73D,GACvChgO,IACAgb,EAAO69N,EAAM7Y,EAAKrjO,IAAMqD,EACxBgb,EAAK0+L,MAAQvrN,KAAKurN,MAClBtuM,EAAOjd,KAAKuoS,sBAAsB17Q,GAAQA,EAAK4mO,oBAGnD5mO,GACA7sB,KAAKi0P,kBAAkBpnO,EAAM5P,EAAM4P,EAAK2zH,SAAU7gJ,IAG1D,iBACI,MAAgC,UAAzBK,KAAKL,QAAQinS,QAExB,YACS5mS,KAAK2pS,mBAGN3pS,KAAKguE,WAELhuE,KAAK2lS,QAAQv+R,MAAO,EAGxBpH,KAAK4pS,kBAET,aAAa3jS,EAAOi3C,GAGhB,MAAMiiG,EAAal5I,EAAMM,IAAKC,IAC1B,MAAMnB,EAAamB,EAAKnB,WAIlB8K,EAAc9K,EAAW4qB,aAAantB,SAAS+kB,eAAe,IAAKrhB,EAAK2J,aAC9E,OAAQu0R,IACJ,GAAIr/R,IAAeq/R,EACf,MAAM,IAAI1hS,MAAM,kEAGpBqC,EAAW4qB,aAAay0Q,EAAYv0R,GAEpC9K,EAAWC,YAAY6K,MAG/BlK,EAAMmB,KAAK81C,GAAY/R,QAAQ,CAAC3kC,EAAM9E,IAAUy9I,EAAWz9I,GAAO8E,IAEtE,iBAgCI,MAAMP,EAAQjG,KAAK6sB,KACd0d,EAAEvqC,KAAK6sB,KAAKohG,OACZhzG,SAAS,kBACTnV,UACCwzE,EAAQt5E,KAAKs5E,MACnBt5E,KAAK6pS,aAAa5jS,EAAO,CAAC+E,EAAGC,KACzB,MAAM6+R,EAAQxwN,EAAMysL,QAAQ/6P,EAAE/F,aAAa,iBAAmB,IACxD8kS,EAAQzwN,EAAMysL,QAAQ96P,EAAEhG,aAAa,iBAAmB,IACxD+kS,EAAKF,EAAM7yH,aAAe,EAC1B3mE,EAAKy5L,EAAM9yH,aAAe,EAChC,OAAO+yH,IAAO15L,EAAK,EAAI05L,EAAK15L,GAAM,EAAI,IAG9C,UAAUwoE,EAAS,GACK,MAAhB94K,KAAKiqS,UACLjqS,KAAKiqS,QAAU,IAEnB,MAAMC,EAASlqS,KAAKiqS,QACpB,IAAIrjK,EAAQsjK,EAAOpxH,GACnB,GAAIlyC,EACA,OAAOA,EAEXA,EAAQsjK,EAAOpxH,GAAUh2K,SAASuO,cAAc,YAAWynK,EAAS,IACpE,IAAIqxH,GAAa5rP,IAEjB,IAAK,MAAM//C,KAAO0rS,EAAQ,CACtB,MAAME,GAAY5rS,EACd4rS,EAAWtxH,GAAUsxH,EAAWD,IAChCA,EAAYC,GAMpB,MAAMt2I,EAAQ9zJ,KAAK6sB,KAAKohG,MACxB,GAAIk8K,KAAe5rP,IAAU,CACzB,MAAM8rP,EAAgBH,EAAOC,GAC7Br2I,EAAM7jI,aAAa22G,EAAOyjK,EAAcl6R,kBAGxC2jJ,EAAM7jI,aAAa22G,EAAOktB,EAAMrgJ,YAEpC,OAAOmzH,EAEX,gBACQ5mI,KAAKiqS,SACLtsS,OAAOyR,KAAKpP,KAAKiqS,SAAS9+P,QAASklE,IAC/B,MAAM7pG,EAAOxG,KAAKiqS,QAAQ55L,GACtB7pG,GAAQA,EAAKnB,YACbmB,EAAKnB,WAAWC,YAAYkB,KAIxCxG,KAAKiqS,QAAU,GAEnB,WAAWp9Q,GACP,MAAMohG,EAAQjuH,KAAK6sB,KAAKohG,MACxB,OAAQjuH,KAAKL,QAAQinS,SACjB,IAAK,SAAU,CACX,MAAM9tH,EAASjsJ,EAAKglN,KAAK56D,YACnBrwC,EAAQ5mI,KAAKsqS,UAAUxxH,GAC7B7qD,EAAMh+F,aAAapD,EAAKiF,UAAW80G,GACnC,MAEJ,IAAK,QACL,QACI3Y,EAAM7oH,YAAYynB,EAAKiF,YAInC,eAAe+/M,GACX,GAAY,MAARA,EACA,OAAO,KAEX,MAAMrjO,EAAK,GAAK0lQ,OAAOriC,GAAQA,EAAKrjO,GAAKqjO,EACzC,OAAO7xO,KAAK0qP,MAAMl8O,GAEtB,eAAehI,GACX,GAAY,MAARA,EACA,OAAO,KAEX,MAAMkB,EAAyB,iBAATlB,EAChBxG,KAAK6sB,KAAKohG,MAAM11B,cAAc/xF,GAC9BA,aAAgBypG,QACZzpG,EACAA,EAAK,GACf,GAAIkB,EAAQ,CACR,MAAM8G,EAAKxO,KAAK6sB,KAAKqoO,SAAS,eAAgBxtP,GAC9C,GAAI8G,EACA,OAAOxO,KAAK0qP,MAAMl8O,GAG1B,OAAO,KAEX,mBAAmBzP,GACf,MAAM80D,EAAM,CAAEthB,EAAGxzC,EAAEwzC,EAAGC,EAAGzzC,EAAEyzC,GAC3B,OAAOxyC,KAAKs5E,MACP6zM,WACA5mR,IAAKsrO,GAAS7xO,KAAK6uQ,eAAeh9B,IAClCrgO,OAAQqb,GACG,MAARA,GACO,EAAI+vG,QAAQ/vG,EAAKiF,UAAW,CAC/BpqB,OAAQ1H,KAAK6sB,KAAKohG,QACnBl5D,cAAclB,IAK7B,oBAAoBhrB,EAAMlpC,EAAU,IAChC,MAAM87I,EAAO,GAAUl9I,OAAOsqC,GAC9B,OAAO7oC,KAAKs5E,MACPi1L,WACAhoQ,IAAKqzD,GAAS55D,KAAK6uQ,eAAej1M,IAClCpoD,OAAQqb,IACT,GAAIA,EAAM,CACN,MAAM0uC,EAAO,EAAIqhE,QAAQ/vG,EAAKiF,UAAW,CACrCpqB,OAAQ1H,KAAK6sB,KAAKohG,QAQtB,OANmB,IAAf1yD,EAAKlqC,MACLkqC,EAAKyqC,QAAQ,EAAG,GAEK,IAAhBzqC,EAAK9nC,QACV8nC,EAAKyqC,QAAQ,EAAG,GAEbrmG,EAAQihL,OACTnlC,EAAKx0C,aAAa1rC,GAClBkgF,EAAK7zC,oBAAoBrsC,GAEnC,OAAO,IAGf,gBAAgB1yB,EAAMlpC,EAAU,IAC5B,MAAM87I,EAAO,GAAUl9I,OAAOsqC,GAC9B,OAAO7oC,KAAKs5E,MACP8sL,WACA7/P,IAAK5B,GAAS3E,KAAK6uQ,eAAelqQ,IAClC6M,OAAQqb,IACT,GAAIA,EAAM,CACN,MAAM0uC,EAAO,EAAIqhE,QAAQ/vG,EAAKiF,UAAW,CACrCpqB,OAAQ1H,KAAK6sB,KAAKohG,QAEtB,OAAOtuH,EAAQihL,OACTnlC,EAAKx0C,aAAa1rC,GAClBkgF,EAAK7zC,oBAAoBrsC,GAEnC,OAAO,IAGf,UACIv7D,KAAKolS,eACLplS,KAAKi/R,iBAGb,GAAW,CACP,GAAKhvK,WACN,GAASpxH,UAAW,UAAW,OACvBsmS,GAYR,KAAa,GAAW,KAXd0B,YAAc,GAAK,GAC5B1B,GAASwB,YAAc,GAAK,GAC5BxB,GAAS4D,iBAAmB,IAC5B5D,GAAS8C,kBAAoB,IAC7B9C,GAAS2C,aAAe,EACxB3C,GAASgB,sBAAwB,CAC7B,MACA,WACA,WAEJhB,GAASoB,wBAA0B,CAAC,aC79BxC,IAAI,GAA0C,SAAUrgD,EAAYx+O,EAAQlJ,EAAK2nP,GAC7E,IAA2H5oP,EAAvHD,EAAImJ,UAAU9E,OAAQ5D,EAAIT,EAAI,EAAIoK,EAAkB,OAATy+O,EAAgBA,EAAOxoP,OAAOkrE,yBAAyBnhE,EAAQlJ,GAAO2nP,EACrH,GAAuB,iBAAZ9gL,SAAoD,mBAArBA,QAAQ+gL,SAAyBroP,EAAIsnE,QAAQ+gL,SAASF,EAAYx+O,EAAQlJ,EAAK2nP,QACpH,IAAK,IAAIlpP,EAAIipP,EAAWvkP,OAAS,EAAG1E,GAAK,EAAGA,KAASM,EAAI2oP,EAAWjpP,MAAIc,GAAKT,EAAI,EAAIC,EAAEQ,GAAKT,EAAI,EAAIC,EAAEmK,EAAQlJ,EAAKT,GAAKR,EAAEmK,EAAQlJ,KAAST,GAChJ,OAAOT,EAAI,GAAKS,GAAKJ,OAAOC,eAAe8J,EAAQlJ,EAAKT,GAAIA,GAMzD,MAAM,WAA0B,GACnC,WACI,OAAOiC,KAAK6sB,KAAKmiI,WAErB,OACIhvJ,KAAKk/R,iBACDl/R,KAAKL,QAAQqvJ,YACbhvJ,KAAKkhK,KAAKlhK,KAAKL,QAAQqvJ,YAG/B,iBACIhvJ,KAAKurN,MAAMnjM,GAAG,QAASpoB,KAAKyrD,OAAQzrD,MACpCA,KAAKurN,MAAMnjM,GAAG,YAAapoB,KAAKyrD,OAAQzrD,MAE5C,gBACIA,KAAKurN,MAAM9iM,IAAI,QAASzoB,KAAKyrD,OAAQzrD,MACrCA,KAAKurN,MAAM9iM,IAAI,YAAazoB,KAAKyrD,OAAQzrD,MAE7C,sBAAsBL,EAAU,IAC5B,IAAI4qS,EAAiB5qS,EAAQi9C,MAAQ,YACjC4tP,EAAqB7qS,EAAQ6yB,UAAY,SAC7C,MAAM3N,EAAQ7kB,KAAKurN,MAAM/3K,UAAU0tP,WAC7Bv4J,EAAK3oI,KAAKurN,MAAMn4J,YAEtB,GAAkC,iBAAvBo3O,EAAiC,CAGxCA,EAAqB,GAFX7hK,EAAGhuE,GAAK91C,EAAM6uC,IAAM82O,EAAmBj4P,GAAK,QAC5Co2F,EAAG/tE,GAAK/1C,EAAM8uC,IAAM62O,EAAmBh4P,GAAK,OAI5B,iBAAnB+3P,IACPA,EAAiB,GAAUthM,SAASshM,GAAgB1lR,MAAMA,EAAM6uC,GAAI7uC,EAAM8uC,IAC1E42O,EAAiB,GAAGA,EAAel5Q,WAAWk5Q,EAAe92Q,YAEjEzzB,KAAKwG,KAAK8d,MAAMimR,eAAiBA,EACjCvqS,KAAKwG,KAAK8d,MAAMkmR,mBAAqBA,EAEzC,oBAAoBv8H,EAAKtuK,EAAU,IAC/B,KAAMsuK,aAAer5C,kBAEjB,YADA50H,KAAKwG,KAAK8d,MAAMunM,gBAAkB,IAItC,MAAMx8M,EAAQrP,KAAKyqS,aACnB,GAAIp7R,GAASA,EAAMoH,QAAU9W,EAAQ8W,MACjC,OAEJ,IAAIo9K,EACJ,MAAM79J,EAAUr2B,EAAQq2B,QAClBu0Q,EAAiB5qS,EAAQi9C,KAC/B,IAAI8tP,EAAmB/qS,EAAQgtD,QAAU,YACzC,MAAMz4C,EAAU,GAAWw/N,SAAS51O,IAAI4sS,GACxC,GAAuB,mBAAZx2R,EAAwB,CAC/B,MAAMy2R,EAAUhrS,EAAQgrS,SAAW,EACnC18H,EAAI58I,OAASs5Q,EACb18H,EAAIx6I,QAAUk3Q,EACd,MAAMr9K,EAASp5G,EAAQ+5J,EAAKtuK,GAC5B,KAAM2tH,aAAkBs9K,mBACpB,MAAM,IAAI5nS,MAAM,0DAEpB6wL,EAAMvmE,EAAOknD,UAAU,aAGnBk2H,EADA/qS,EAAQgtD,QAAU+9O,IAAqB/qS,EAAQgtD,OAC5BhtD,EAAQgtD,OAGR,SAEO,iBAAnB49O,GAEPA,EAAel5Q,OAASi8F,EAAOj8F,MAAQ48I,EAAI58I,MAC3Ck5Q,EAAe92Q,QAAU65F,EAAO75F,OAASw6I,EAAIx6I,aAErBvxB,IAAnBqoS,IAEL5qS,EAAQi9C,KAAO,CACXvrB,MAAOi8F,EAAOj8F,MAAQs5Q,EACtBl3Q,OAAQ65F,EAAO75F,OAASk3Q,SAKhC92G,EAAM5lB,EAAI3pK,SACapC,IAAnBqoS,IACA5qS,EAAQi9C,KAAO,CACXvrB,MAAO48I,EAAI58I,MACXoC,OAAQw6I,EAAIx6I,SAIX,MAATpkB,GACwB,iBAAjB1P,EAAQi9C,MACfj9C,EAAQ8W,QAAUpH,EAAMoH,OACxB9W,EAAQgtD,SAAWt9C,EAAMs9C,QACzBhtD,EAAQgrS,UACJt7R,EAAMs7R,UACVt7R,EAAMutC,KAAO,EAAUn1C,MAAM9H,EAAQi9C,OAEzC,MAAMt4B,EAAQtkB,KAAKwG,KAAK8d,MACxBA,EAAMunM,gBAAkB,OAAOh4B,KAC/BvvK,EAAMomR,iBAAmBA,EACzBpmR,EAAM0R,QAAqB,MAAXA,GAAmBA,GAAW,EAAI,GAAK,GAAGA,EAC1Dh2B,KAAK6qS,sBAAsBlrS,GAE/B,sBAAsBk3G,GAClB72G,KAAKwG,KAAK8d,MAAMyqG,gBAAkBlY,GAAS,GAE/C,wBAAwBl3G,GACpBK,KAAKurN,MAAM5rN,QAAQqvJ,WAAarvJ,EAEpC,SACQK,KAAKyqS,cACLzqS,KAAK6qS,sBAAsB7qS,KAAKyqS,cAGxC,KAAK9qS,GACD,MAAMy5B,EAAOz5B,GAAW,GAGxB,GAFAK,KAAK8qS,wBAAwBnrS,GAC7BK,KAAK+qS,sBAAsB3xQ,EAAKy9E,OAC5Bz9E,EAAK3iB,MAAO,CACZzW,KAAKyqS,aAAe,EAAUhjS,MAAM2xB,GACpC,MAAM60I,EAAMnrK,SAASiC,cAAc,OACnCkpK,EAAIznI,OAAS,IAAMxmC,KAAKgrS,oBAAoB/8H,EAAKtuK,GACjDsuK,EAAI/oK,aAAa,cAAe,aAChC+oK,EAAI3pK,IAAM80B,EAAK3iB,WAGfzW,KAAKgrS,oBAAoB,MACzBhrS,KAAKyqS,aAAe,KAG5B,QACIzqS,KAAKkhK,OAET,UACIlhK,KAAK64D,QACL74D,KAAKi/R,iBAGb,GAAW,CACP,GAAKhvK,WACN,GAAkBpxH,UAAW,UAAW,MCvJ3C,IA83BI,GA93BA,GAA0C,SAAUqnP,EAAYx+O,EAAQlJ,EAAK2nP,GAC7E,IAA2H5oP,EAAvHD,EAAImJ,UAAU9E,OAAQ5D,EAAIT,EAAI,EAAIoK,EAAkB,OAATy+O,EAAgBA,EAAOxoP,OAAOkrE,yBAAyBnhE,EAAQlJ,GAAO2nP,EACrH,GAAuB,iBAAZ9gL,SAAoD,mBAArBA,QAAQ+gL,SAAyBroP,EAAIsnE,QAAQ+gL,SAASF,EAAYx+O,EAAQlJ,EAAK2nP,QACpH,IAAK,IAAIlpP,EAAIipP,EAAWvkP,OAAS,EAAG1E,GAAK,EAAGA,KAASM,EAAI2oP,EAAWjpP,MAAIc,GAAKT,EAAI,EAAIC,EAAEQ,GAAKT,EAAI,EAAIC,EAAEmK,EAAQlJ,EAAKT,GAAKR,EAAEmK,EAAQlJ,KAAST,GAChJ,OAAOT,EAAI,GAAKS,GAAKJ,OAAOC,eAAe8J,EAAQlJ,EAAKT,GAAIA,GAE5D,GAAkC,SAAUiB,EAAG6O,GAC/C,IAAI1P,EAAI,GACR,IAAK,IAAIY,KAAKC,EAAOrB,OAAOkB,UAAUC,eAAe1B,KAAK4B,EAAGD,IAAM8O,EAAEpK,QAAQ1E,GAAK,IAC9EZ,EAAEY,GAAKC,EAAED,IACb,GAAS,MAALC,GAAqD,mBAAjCrB,OAAOsxG,sBACtB,KAAIhyG,EAAI,EAAb,IAAgB8B,EAAIpB,OAAOsxG,sBAAsBjwG,GAAI/B,EAAI8B,EAAE4C,OAAQ1E,IAC3D4Q,EAAEpK,QAAQ1E,EAAE9B,IAAM,GAAKU,OAAOkB,UAAUwxD,qBAAqBjzD,KAAK4B,EAAGD,EAAE9B,MACvEkB,EAAEY,EAAE9B,IAAM+B,EAAED,EAAE9B,KAE1B,OAAOkB,GAQJ,MAAM,WAAiB,GAC1B,YAAYwB,GACRg/E,QACA3+E,KAAKy2B,QAAU,CAAEF,KAAM,EAAGtlB,IAAK,EAAGohB,MAAO,EAAGmpC,OAAQ,GACpDx7D,KAAKL,QAAU,GAAKwiH,WAAWxiH,GAC/B,MAAMklB,EAAQ7kB,KAAKurN,MAAM/3K,UAAU0tP,WACnClhS,KAAK0zD,GAAK7uC,EAAM6uC,GAChB1zD,KAAK2zD,GAAK9uC,EAAM8uC,GAChB,MAAMtiC,EAAQrxB,KAAKL,QAAQ0xB,OAASrxB,KAAKurN,MAAM5rN,QAAQ0xB,MACjDoC,EAASzzB,KAAKL,QAAQ8zB,QAAUzzB,KAAKurN,MAAM5rN,QAAQ8zB,OACzDzzB,KAAK8xB,UAAYhvB,SAASiC,cAAc,OACxC/E,KAAKkiR,WAAaliR,KAAKuqC,EAAEvqC,KAAK8xB,WACzBoL,SAASl9B,KAAKmzP,gBAAgB,GAAK83C,iBACnCzmR,IAAI,CAAE6M,QAAOoC,WACdzzB,KAAKL,QAAQurS,aACblrS,KAAKkiR,WAAWhlP,SAASl9B,KAAKmzP,gBAAgB,GAAKg4C,aAEnDnrS,KAAKL,QAAQyR,WACbpR,KAAKkiR,WAAWhlP,SAASl9B,KAAKL,QAAQyR,WAE1C,MAAMyuR,EAAiB7/R,KAAKurN,MAAMz5L,UAC9B+tQ,EAAex6R,YACfrF,KAAKkiR,WAAWjyP,aAAa4vQ,GAGjC,MAAMv7Q,EAAQu7Q,EAAe56R,aAAa,SAC1C,GAAIqf,EAAO,CACP,MAAMrgB,EAAM,GACGqgB,EAAMnb,MAAM,KACpBgiC,QAAShnC,IACZ,MAAM+lG,EAAU/lG,EAAKimC,OACrB,GAAI8/D,EAAS,CACT,MAAM3vD,EAAO2vD,EAAQ/gG,MAAM,KACvBoxC,EAAK54C,SACLsC,EAAIs2C,EAAK,GAAGnQ,QAAUmQ,EAAK,GAAKA,EAAK,GAAGnQ,OAAS,OAI7DzsC,OAAOyR,KAAKnL,GAAKknC,QAAS3sC,IACV,UAARA,GAA2B,WAARA,IAGvBqhS,EAAev7Q,MAAM9lB,GAAO,GAC5BwB,KAAK8xB,UAAUxN,MAAM9lB,GAAOyF,EAAIzF,MAGxCwB,KAAKgc,QAAUlZ,SAASiC,cAAc,OACtC/E,KAAKorS,SAAWprS,KAAKuqC,EAAEvqC,KAAKgc,SACvBkhB,SAASl9B,KAAKmzP,gBAAgB,GAAKk4C,eACnC7mR,IAAI,CACL6M,MAAOrxB,KAAKurN,MAAM5rN,QAAQ0xB,MAC1BoC,OAAQzzB,KAAKurN,MAAM5rN,QAAQ8zB,SAG/BzzB,KAAKgvJ,WAAalsJ,SAASiC,cAAc,OACzC/E,KAAKsrS,YAActrS,KAAKuqC,EAAEvqC,KAAKgvJ,YAAY9xH,SAASl9B,KAAKmzP,gBAAgB,GAAKo4C,kBAC9EvrS,KAAKorS,SAASr7Q,OAAO/vB,KAAKgvJ,YACrBhvJ,KAAKL,QAAQurS,aACdlrS,KAAKorS,SAASr7Q,OAAO/vB,KAAKurN,MAAM1+L,KAAK+kL,MAEzC5xM,KAAKorS,SAASr7Q,OAAO8vQ,GACrB7/R,KAAKorS,SAAS96Q,SAAStwB,KAAK8xB,WAC5B9xB,KAAKk/R,iBACAl/R,KAAKL,QAAQurS,aACdlrS,KAAKurN,MAAM3Z,KAAKnmJ,SAEpBzrD,KAAKwrS,kBAAoB,IAAI,GAASr0D,WAAWn3O,MAC5CA,KAAKL,QAAQ8rS,YACdzrS,KAAKyrD,SAGb,YACI,OAAOzrD,KAAKL,QAAQ4rN,MAExB,YACI,OAAOvrN,KAAKurN,MAAMjyI,MAEtB,iBACI,MAAMiyI,EAAQvrN,KAAKurN,MACbjyI,EAAQt5E,KAAKs5E,MACnBiyI,EAAMnjM,GAAG,QAASpoB,KAAK0rS,QAAS1rS,MAChCurN,EAAMnjM,GAAG,SAAUpoB,KAAK2rS,SAAU3rS,MAClCurN,EAAMnjM,GAAG,eAAgBpoB,KAAK4rS,oBAAqB5rS,MACnDurN,EAAMnjM,GAAG,gBAAiBpoB,KAAK4rS,oBAAqB5rS,MACpDurN,EAAMnjM,GAAG,cAAepoB,KAAK6rS,sBAAuB7rS,MACpDurN,EAAMnjM,GAAG,eAAgBpoB,KAAK6rS,sBAAuB7rS,MACrDurN,EAAMnjM,GAAG,cAAepoB,KAAK8rS,aAAc9rS,MAC3CurN,EAAMnjM,GAAG,WAAYpoB,KAAKy3H,SAAUz3H,MACpCs5E,EAAMlxD,GAAG,UAAWpoB,KAAKy3H,SAAUz3H,MACnCs5E,EAAMlxD,GAAG,aAAcpoB,KAAKy3H,SAAUz3H,MACtCs5E,EAAMlxD,GAAG,eAAgBpoB,KAAKy3H,SAAUz3H,MACxCs5E,EAAMlxD,GAAG,eAAgBpoB,KAAKy3H,SAAUz3H,MACxCs5E,EAAMlxD,GAAG,aAAcpoB,KAAKqiS,YAAariS,MACzCA,KAAK+rS,2BAET,gBACI,MAAMxgF,EAAQvrN,KAAKurN,MACbjyI,EAAQt5E,KAAKs5E,MACnBiyI,EAAM9iM,IAAI,QAASzoB,KAAK0rS,QAAS1rS,MACjCurN,EAAM9iM,IAAI,SAAUzoB,KAAK2rS,SAAU3rS,MACnCurN,EAAM9iM,IAAI,cAAezoB,KAAK4rS,oBAAqB5rS,MACnDurN,EAAM9iM,IAAI,eAAgBzoB,KAAK4rS,oBAAqB5rS,MACpDurN,EAAM9iM,IAAI,aAAczoB,KAAK6rS,sBAAuB7rS,MACpDurN,EAAM9iM,IAAI,cAAezoB,KAAK6rS,sBAAuB7rS,MACrDurN,EAAM9iM,IAAI,cAAezoB,KAAK8rS,aAAc9rS,MAC5CurN,EAAM9iM,IAAI,WAAYzoB,KAAKy3H,SAAUz3H,MACrCs5E,EAAM7wD,IAAI,UAAWzoB,KAAKy3H,SAAUz3H,MACpCs5E,EAAM7wD,IAAI,aAAczoB,KAAKy3H,SAAUz3H,MACvCs5E,EAAM7wD,IAAI,eAAgBzoB,KAAKy3H,SAAUz3H,MACzCs5E,EAAM7wD,IAAI,eAAgBzoB,KAAKy3H,SAAUz3H,MACzCs5E,EAAM7wD,IAAI,aAAczoB,KAAKqiS,YAAariS,MAC1CA,KAAKgsS,6BAET,mBACIhsS,KAAKL,QAAQ8rS,YAAa,EAE9B,oBACIzrS,KAAKL,QAAQ8rS,YAAa,EAE9B,YACQzrS,KAAKurN,MAAM15B,WAAc7xL,KAAKL,QAAQ8rS,YAG1CzrS,KAAKyrD,SAET,YAAYt2C,IACJnV,KAAKurN,MAAM15B,WAAc7xL,KAAKL,QAAQ8rS,YAGtC,GAASlF,wBAAwBroP,SAAS/oC,EAAK3X,OAC/CwC,KAAKyrD,SAGb,yBAAyBniC,GACrB,MAAM2iR,EAAO3iR,GAAU,GAAUA,OACjCtpB,KAAKksS,kBAAoBvuS,OAAOyR,KAAK68R,GAAMzgQ,OAAO,CAAC8B,EAAM9vC,KACrD,MAAMqS,EAAUo8R,EAAKzuS,GACrB,IAA2B,IAAvBA,EAAKiG,QAAQ,KACb,GAAuB,mBAAZoM,EACPy9B,EAAK9vC,GAAQqS,MAEZ,CACD,IAAI8M,EAAS3c,KAAKurN,MAAM1+L,KAAKhd,GACP,mBAAX8M,IACPA,EAASA,EAAOle,KAAKuB,KAAKurN,MAAM1+L,MAChCygB,EAAK9vC,GAAQmf,GAIzB,OAAO2wB,GACR,IACHttC,KAAKmsS,kBAAoBnsS,KAAKmsS,kBAAkB1tS,KAAKuB,MACrDrC,OAAOyR,KAAKpP,KAAKksS,mBAAmB/gQ,QAAS3tC,IACzCwC,KAAKmrP,cAAc3tP,EAAM,CACrBq9R,SAAS,GACV76R,KAAKmsS,qBAGhB,6BACIxuS,OAAOyR,KAAKpP,KAAKksS,mBAAmB/gQ,QAAS3tC,IACzCwC,KAAKosS,gBAAgB5uS,EAAMwC,KAAKmsS,qBAGxC,kBAAkBt+R,GACd,IAAIo9M,GAAQ,EACZ,MAAMvjN,EAASmG,EAAEnG,OACjB,GAAK1H,KAAKL,QAAQurS,YAKdjgF,EADKjrN,KAAKL,QAAQqvJ,WACVhvJ,KAAKgvJ,aAAetnJ,EAGpB1H,KAAKgc,UAAYtU,MARE,CAC3B,MAAMmlB,EAAO7sB,KAAKurN,MAAM1+L,KACxBo+L,EAAQp+L,EAAKmiI,aAAetnJ,GAAUmlB,EAAK+kL,OAASlqM,EAQxD,GAAIujN,EAAO,CACP,MAAMp7M,EAAU7P,KAAKksS,kBAAkBr+R,EAAEtM,MAClB,mBAAZsO,GACPA,EAAQrM,MAAMxD,KAAKurN,MAAO9kN,YAItC,cAAa,MAAE8gS,IACPvnS,KAAKL,QAAQ8rS,YAAclE,EAAM/mJ,SAAW,GAC5CxgJ,KAAKyrD,SAGb,WACQzrD,KAAKqsS,oBACLrsS,KAAK2hS,YAAY3hS,KAAKqsS,kBAAkB95P,EAAGvyC,KAAKqsS,kBAAkB75P,GAClExyC,KAAKssS,mBAGb,SAAQ,GAAE54O,EAAE,GAAEC,EAAE,GAAE2yC,EAAE,GAAEC,IAClBvmG,KAAKusS,YAAY74O,EAAIC,IACjB2yC,GAAMC,KACNvmG,KAAK2hS,YAAYr7L,EAAIC,GACrBvmG,KAAKssS,mBAGwB,mBADPtsS,KAAKL,QAAQ6sS,mBAAqBxsS,KAAKL,QAAQ8sS,sBAErEzsS,KAAKyrD,SAGb,sBACIzrD,KAAK0sS,iBAAmB1sS,KAAK8xB,UAAU2F,WACvCz3B,KAAK2sS,gBAAkB3sS,KAAK8xB,UAAU0F,UAE1C,wBACIx3B,KAAK8xB,UAAU2F,WAAaz3B,KAAK0sS,iBACjC1sS,KAAK8xB,UAAU0F,UAAYx3B,KAAK2sS,gBAChC3sS,KAAK0sS,iBAAmB,KACxB1sS,KAAK2sS,gBAAkB,KAE3B,kBACI3sS,KAAK4sS,iBAAmB,CACpBv7Q,MAAOrxB,KAAK8xB,UAAUoiH,YACtBzgH,OAAQzzB,KAAK8xB,UAAUqiH,cAG/B,oBACIn0I,KAAK4sS,iBAAmB,KAE5B,sBACQhmL,GAASK,OAASL,GAASO,UAC3BnnH,KAAKkiR,WAAW19P,IAAI,aAAc,UAG1C,qBACQoiG,GAASK,OAASL,GAASO,UAC3BnnH,KAAKkiR,WAAW19P,IAAI,aAAc,WAG1C,eAAe6M,EAAOoC,GACL,MAATpC,IACArxB,KAAKL,QAAQktS,UAAYx7Q,GAEf,MAAVoC,IACAzzB,KAAKL,QAAQkvI,WAAap7G,GAE9BzzB,KAAKssS,kBAET,kBAKI,GAJItsS,KAAK8sS,WAAa9sS,KAAK8sS,UAAUznS,YACjCrF,KAAK8sS,UAAUznS,WAAWC,YAAYtF,KAAK8sS,WAE/C9sS,KAAK8sS,UAAY,KACb9sS,KAAKL,QAAQurS,aAAelrS,KAAKL,QAAQmtS,UAAW,CACpD,MAAMC,EAAa/sS,KAAKurN,MAAM5rN,QAAQ0xB,MAChC27Q,EAAchtS,KAAKurN,MAAM5rN,QAAQ8zB,OACjCo5Q,EAAY7sS,KAAKL,QAAQktS,UAAY7sS,KAAK0zD,GAC1Cm7E,EAAa7uI,KAAKL,QAAQkvI,WAAa7uI,KAAK2zD,GAClD,GAAIo5O,EAAaF,GAAaG,EAAcn+J,EAAY,CACpD,IAAIo+J,GAAe,EACnB,MAAMn7Q,EAAYhvB,SAASiC,cAAc,OACzC,IAAK,IAAI9H,EAAI,EAAGC,EAAI4K,KAAKq4C,MAAM4sP,EAAaF,GAAY5vS,EAAIC,EAAGD,GAAK,EAChE+C,KAAKuqC,EAAE,UACFrN,SAASl9B,KAAKmzP,gBAAgB,6BAC9B3uO,IAAI,CAAE+R,KAAMt5B,EAAI4vS,IAChBv8Q,SAASwB,GACdm7Q,GAAe,EAEnB,IAAK,IAAIhwS,EAAI,EAAGC,EAAI4K,KAAKq4C,MAAM6sP,EAAcn+J,GAAa5xI,EAAIC,EAAGD,GAAK,EAClE+C,KAAKuqC,EAAE,UACFrN,SAASl9B,KAAKmzP,gBAAgB,+BAC9B3uO,IAAI,CAAEvT,IAAKhU,EAAI4xI,IACfv+G,SAASwB,GACdm7Q,GAAe,EAEfA,IACA,EAAI/vQ,SAASpL,EAAW9xB,KAAKmzP,gBAAgB,oBAC7CnzP,KAAKuqC,EAAEvqC,KAAKurN,MAAM1+L,KAAK+kL,MAAMzhL,MAAM2B,GACnC9xB,KAAK8sS,UAAYh7Q,KAKjC,SACI,MAAM8qB,EAAO58C,KAAKktS,gBAClBltS,KAAKqsS,kBAAoBrsS,KAAKohS,mBAAmBxkP,EAAKvrB,MAAQ,EAAGurB,EAAKnpB,OAAS,GAC/E,IAAI05Q,EAAgBntS,KAAKL,QAAQ6sS,mBAAqBxsS,KAAKL,QAAQ8sS,oBACtC,mBAAlBU,IACPA,EAAgB,EAAY/vS,KAAK+vS,EAAentS,KAAMA,OAE1D,MAAML,EAAUhC,OAAO+rD,OAAO,CAAE0jP,UAAWptS,KAAKL,QAAQktS,UAAWQ,WAAYrtS,KAAKL,QAAQkvI,WAAYy+J,eAAgB,YAAcH,GACtIntS,KAAKurN,MAAMgiF,aAAavtS,KAAKwtS,uBAAuB7tS,IAExD,uBAAuBA,GACnB,MAAM+zD,EAAK1zD,KAAK0zD,GACVC,EAAK3zD,KAAK2zD,GAmBhB,OAlBAh0D,EAAQytS,YAAcztS,EAAQytS,WAAa15O,GAC3C/zD,EAAQ0tS,aAAe1tS,EAAQ0tS,YAAc15O,GAC7Ch0D,EAAQ2xB,WAAa3xB,EAAQ2xB,UAAYoiC,GACzC/zD,EAAQ+iM,YAAc/iM,EAAQ+iM,WAAa/uI,GACZ,iBAApBh0D,EAAQ82B,QACf92B,EAAQ82B,QAAU,CACdF,MAAO52B,EAAQ82B,QAAQF,MAAQ,GAAKm9B,EACpCrhC,OAAQ1yB,EAAQ82B,QAAQpE,OAAS,GAAKqhC,EACtCziD,KAAMtR,EAAQ82B,QAAQxlB,KAAO,GAAK0iD,EAClC6H,QAAS77D,EAAQ82B,QAAQ+kC,QAAU,GAAK7H,GAGZ,iBAApBh0D,EAAQ82B,UACpB92B,EAAQ82B,SAAWi9B,GAElB1zD,KAAKL,QAAQ8rS,aACd9rS,EAAQ8tS,YAAc,GAAUlvS,UAE7BoB,EAEX,YAAY+zD,EAAIC,GACZ,MAAMh0D,EAAUK,KAAKurN,MAAM5rN,QACrB0zD,EAAKK,EAAK1zD,KAAK0zD,GACfJ,EAAKK,EAAK3zD,KAAK2zD,GACrB3zD,KAAK0zD,GAAKA,EACV1zD,KAAK2zD,GAAKA,EACV3zD,KAAKurN,MAAMn4J,UAAUzzD,EAAQ4yC,EAAI8gB,EAAI1zD,EAAQ6yC,EAAI8gB,GACjDtzD,KAAKurN,MAAM41E,YAAYxhS,EAAQ0xB,MAAQgiC,EAAI1zD,EAAQ8zB,OAAS6/B,GAEhE,kBAAkB/8B,EAAMtlB,EAAKtR,GACzB,GAAY,MAAR42B,GAAuB,MAAPtlB,EAChB,MAAO,CACHslB,KAAMv2B,KAAK8xB,UAAU2F,WACrBxmB,IAAKjR,KAAK8xB,UAAU0F,WAG5B,MAAMhV,EAAO,GAab,MAZoB,iBAAT+T,IACP/T,EAAKiV,WAAalB,GAEH,iBAARtlB,IACPuR,EAAKgV,UAAYvmB,GAEjBtR,GAAWA,EAAQg5B,UACnB34B,KAAKkiR,WAAWrnP,QAAQrY,EAAM7iB,EAAQg5B,WAGtC34B,KAAKkiR,WAAW1/P,KAAKA,GAElBxiB,KAQX,cAAcuyC,EAAGC,EAAG7yC,GAChB,MAAMi9C,EAAO58C,KAAKktS,gBACZtuK,EAAM5+H,KAAKurN,MAAMn0J,SACjB50C,EAAO,GAab,MAZiB,iBAAN+vB,IACP/vB,EAAKiV,WAAa8a,EAAIqK,EAAKvrB,MAAQ,EAAIutG,EAAI/wH,GAAK7N,KAAKy2B,QAAQF,MAAQ,IAExD,iBAANic,IACPhwB,EAAKgV,UAAYgb,EAAIoK,EAAKnpB,OAAS,EAAImrG,EAAI5pB,GAAKh1G,KAAKy2B,QAAQxlB,KAAO,IAEpEtR,GAAWA,EAAQg5B,UACnB34B,KAAKkiR,WAAWrnP,QAAQrY,EAAM7iB,EAAQg5B,WAGtC34B,KAAKkiR,WAAW1/P,KAAKA,GAElBxiB,KAMX,gBAAgBL,GACZ,MAAM+zD,EAAK1zD,KAAK0zD,GACVC,EAAK3zD,KAAK2zD,GACVF,EAASzzD,KAAKurN,MAAMmiF,iBAAiBhzO,YAC3C,OAAO16D,KAAK2tS,cAAcl6O,EAAOlhB,EAAImhB,EAAID,EAAOjhB,EAAImhB,EAAIh0D,GAM5D,aAAakyO,EAAMlyO,GACf,MAAM+zD,EAAK1zD,KAAK0zD,GACVC,EAAK3zD,KAAK2zD,GACVF,EAASo+K,EAAKj1G,UAAUliE,YAC9B,OAAO16D,KAAK2tS,cAAcl6O,EAAOlhB,EAAImhB,EAAID,EAAOjhB,EAAImhB,EAAIh0D,GAc5D,OAAOiuS,GACH,OAAO5tS,KAAK2hS,YAAYiM,GAE5B,YAAYr7P,EAAGC,EAAG7yC,GACd,MAAMi/H,EAAM5+H,KAAKurN,MAAMn0J,SACjB1D,EAAKkrE,EAAI5zH,EACT2oD,EAAKirE,EAAIrhI,EACTo9D,GAAMikE,EAAI/wH,EACV+sD,GAAMgkE,EAAI5pB,EACV64L,EAASlzO,EAAK36D,KAAKurN,MAAM5rN,QAAQ0xB,MACjCy8Q,EAAUlzO,EAAK56D,KAAKurN,MAAM5rN,QAAQ8zB,OACxC,IAAIq8O,EAEJ,GADA9vQ,KAAK+tS,kBACY,iBAANx7P,GAA+B,iBAANC,EAAgB,CAChDs9N,EAAenwQ,EACf,MAAMquS,EAAgBhuS,KAAKiuS,iBAAiBvzO,YAC3B,iBAANnoB,EACPA,GAAKmhB,EAGLnhB,EAAIy7P,EAAcz7P,EAEL,iBAANC,EACPA,GAAKmhB,EAGLnhB,EAAIw7P,EAAcx7P,OAItBs9N,EAAev9N,EACfA,GAAKooB,EAAKkzO,GAAU,EACpBr7P,GAAKooB,EAAKkzO,GAAW,EAEzB,GAAIh+B,GAAgBA,EAAar5O,QAC7B,OAAOz2B,KAAKkuS,cAAc,CAAE37P,IAAGC,KAAK,MAAO,MAAOs9N,GAEtD,MAAMr5O,EAAUz2B,KAAKmuS,aACfC,EAAapuS,KAAKktS,gBAClBlwM,EAAKoxM,EAAW/8Q,MAAQ,EACxB4rE,EAAKmxM,EAAW36Q,OAAS,EACzB8C,EAAOymE,EAAKvmE,EAAQF,KAAOgc,EAAIooB,EAC/BtoC,EAAQ2qE,EAAKvmE,EAAQpE,MAAQkgB,EAAIs7P,EACjC58R,EAAMgsF,EAAKxmE,EAAQxlB,IAAMuhC,EAAIooB,EAC7BY,EAASyhC,EAAKxmE,EAAQ+kC,OAAShpB,EAAIs7P,EACzC9tS,KAAKquS,WAAWvmS,KAAKitB,IAAIwB,EAAM,GAAIzuB,KAAKitB,IAAI1C,EAAO,GAAIvqB,KAAKitB,IAAI9jB,EAAK,GAAInJ,KAAKitB,IAAIymC,EAAQ,IAC1F,MAAMr6D,EAASnB,KAAK2tS,cAAcp7P,EAAGC,EAAGs9N,QAAgB5tQ,GAExD,OADAlC,KAAKsuS,oBACEntS,EAEX,cAAcxB,GACV,OAAOK,KAAKuuS,gBAAgB,SAAU5uS,GAE1C,WAAWkyO,EAAMlyO,GACb,OAAOK,KAAKwuS,aAAa38D,EAAM,SAAUlyO,GAU7C,gBAAgB03B,EAAK13B,GACjB,MAAMkpC,EAAO7oC,KAAKurN,MAAMmiF,eAAe/tS,GACvC,OAAOK,KAAKyuS,aAAa5lQ,EAAMxR,EAAK13B,GAExC,aAAakyO,EAAMx6M,EAAK13B,GACpB,MAAM47D,EAAOs2K,EAAKj1G,UAClB,OAAO58H,KAAKyuS,aAAalzO,EAAMlkC,EAAK13B,GAExC,aAAakpC,EAAMxR,EAAK13B,GACpB,MAAM47D,EAAO,GAAUh9D,OAAOsqC,GAC9B,OAAQxR,GACJ,IAAK,SACD,OAAOr3B,KAAKkuS,cAAc3yO,EAAKb,YAAa,MAAO,MAAO/6D,GAC9D,IAAK,MACD,OAAOK,KAAKkuS,cAAc3yO,EAAKgpC,eAAgB,MAAO,EAAG5kG,GAC7D,IAAK,YACD,OAAOK,KAAKkuS,cAAc3yO,EAAKkpC,cAAe,OAAQ,EAAG9kG,GAC7D,IAAK,QACD,OAAOK,KAAKkuS,cAAc3yO,EAAK2pC,iBAAkB,OAAQ,MAAOvlG,GACpE,IAAK,eACD,OAAOK,KAAKkuS,cAAc3yO,EAAKwpC,iBAAkB,OAAQ,OAAQplG,GACrE,IAAK,SACD,OAAOK,KAAKkuS,cAAc3yO,EAAKspC,kBAAmB,MAAO,OAAQllG,GACrE,IAAK,cACD,OAAOK,KAAKkuS,cAAc3yO,EAAKqpC,gBAAiB,EAAG,OAAQjlG,GAC/D,IAAK,OACD,OAAOK,KAAKkuS,cAAc3yO,EAAK6pC,gBAAiB,EAAG,MAAOzlG,GAC9D,IAAK,WACD,OAAOK,KAAKkuS,cAAc3yO,EAAK+oC,aAAc,EAAG,EAAG3kG,GACvD,QACI,OAAOK,MAGnB,cAAcm2D,EAAO5jB,EAAGC,EAAG7yC,EAAU,IACjC,MAAQ82B,QAAS+1B,GAAQ7sD,EAASmwQ,EAAe,GAAOnwQ,EAAS,CAAC,YAC5D82B,EAAU,EAAUu6J,eAAexkI,GACnCkiP,EAAa,GAAUzlM,SAASjpG,KAAKktS,iBACrCyB,EAAaD,EAAWjnS,QAAQ0+F,cAAc,CAChD5zD,EAAG9b,EAAQF,KACXic,EAAG/b,EAAQxlB,IACXogB,OAAQoF,EAAQpE,MAAQoE,EAAQF,KAChC9C,QAASgD,EAAQxlB,IAAMwlB,EAAQ+kC,UAGnCjpB,EAAI,EAAU45I,oBAAoB55I,EAAGzqC,KAAKitB,IAAI,EAAG45Q,EAAWt9Q,SACpD,IACJkhB,EAAIo8P,EAAWt9Q,MAAQkhB,IAG3BC,EAAI,EAAU25I,oBAAoB35I,EAAG1qC,KAAKitB,IAAI,EAAG45Q,EAAWl7Q,UACpD,IACJ+e,EAAIm8P,EAAWl7Q,OAAS+e,GAE5B,MAAMohB,EAAS+6O,EAAWrqM,aAAalxC,UAAU7gB,EAAGC,GAC9CviC,EAAOy+R,EAAWh0O,YAAYzqD,KAAK2jD,GACnC/uC,EAAQ7kB,KAAK2/R,OACbiP,EAAU3+R,EAAK4U,MAAM,EAAIA,EAAO,EAAIA,GACpC1jB,EAAS,GAAM5C,OAAO43D,GAAO/C,UAAUw7O,GAC7C,OAAO5uS,KAAK2hS,YAAYxgS,EAAOoxC,EAAGpxC,EAAOqxC,EAAGs9N,GAEhD,KAAKt+C,EAAQ7xN,GACT,GAAc,MAAV6xN,EACA,OAAOxxN,KAAK0zD,GAGhB,IAAIspC,EACAC,EAFJt9F,EAAUA,GAAW,GAGrB,MAAMyuS,EAAapuS,KAAKktS,gBAClBz5O,EAASzzD,KAAKohS,mBAAmBgN,EAAW/8Q,MAAQ,EAAG+8Q,EAAW36Q,OAAS,GACjF,IAAIigC,EAAK89J,EACL79J,EAAK69J,EAmBT,GAlBK7xN,EAAQ48L,WACT7oI,GAAM1zD,KAAK0zD,GACXC,GAAM3zD,KAAK2zD,IAEXh0D,EAAQkvS,YACRn7O,EAAK5rD,KAAK8qB,MAAM8gC,EAAK/zD,EAAQkvS,WAAalvS,EAAQkvS,UAClDl7O,EAAK7rD,KAAK8qB,MAAM+gC,EAAKh0D,EAAQkvS,WAAalvS,EAAQkvS,WAElDlvS,EAAQ+hS,WACRhuO,EAAK5rD,KAAKkzC,IAAIr7C,EAAQ+hS,SAAUhuO,GAChCC,EAAK7rD,KAAKkzC,IAAIr7C,EAAQ+hS,SAAU/tO,IAEhCh0D,EAAQ8hS,WACR/tO,EAAK5rD,KAAKitB,IAAIp1B,EAAQ8hS,SAAU/tO,GAChCC,EAAK7rD,KAAKitB,IAAIp1B,EAAQ8hS,SAAU9tO,IAEpCD,EAAK1zD,KAAKurN,MAAM/3K,UAAUs7P,WAAWp7O,GACrCC,EAAK3zD,KAAKurN,MAAM/3K,UAAUs7P,WAAWn7O,GACjCh0D,EAAQ8zD,OAAQ,CAChB,MAAMl8B,EAAKm8B,EAAK1zD,KAAK0zD,GACfq7O,EAAKp7O,EAAK3zD,KAAK2zD,GACrBqpC,EAAKr9F,EAAQ8zD,OAAOlhB,GAAK5yC,EAAQ8zD,OAAOlhB,EAAIkhB,EAAOlhB,GAAKhb,EACxD0lE,EAAKt9F,EAAQ8zD,OAAOjhB,GAAK7yC,EAAQ8zD,OAAOjhB,EAAIihB,EAAOjhB,GAAKu8P,OAGxD/xM,EAAKvpC,EAAOlhB,EACZ0qD,EAAKxpC,EAAOjhB,EAMhB,OAJAxyC,KAAKgvS,qBACLhvS,KAAKurN,MAAM/3K,UAAU3uB,MAAM6uC,EAAIC,GAC/B3zD,KAAK2hS,YAAY3kM,EAAIC,GACrBj9F,KAAKivS,oBACEjvS,KAEX,WAAW6oC,EAAMlpC,EAAU,IACvB,MAAM87I,EAAO,GAAUl9I,OAAOsqC,GACxB0iL,EAAQvrN,KAAKurN,MACnB5rN,EAAQ8tS,YAAchyJ,EACM,MAAxB97I,EAAQuvS,eACRvvS,EAAQuvS,aAAe,CACnB38P,EAAGg5K,EAAM5rN,QAAQ4yC,EACjBC,EAAG+4K,EAAM5rN,QAAQ6yC,EACjBnhB,MAAOrxB,KAAKkiR,WAAW7wP,QACvBoC,OAAQzzB,KAAKkiR,WAAWzuP,WAGhCzzB,KAAKgvS,qBACLzjF,EAAM/3K,UAAU27P,sBAAsBxvS,GAAS,GAC/C,MAAM8zD,EAASgoF,EAAK/gF,YAGpB,OAFA16D,KAAK2hS,YAAYluO,EAAOlhB,EAAGkhB,EAAOjhB,GAClCxyC,KAAKivS,oBACEjvS,KAEX,UAAUL,EAAU,IAChB,OAAOK,KAAKovS,WAAWpvS,KAAKurN,MAAMmiF,eAAe/tS,GAAUA,GAE/D,kBAAkB4yC,EAAGC,EAAG7yC,GAYpB,IAAI6zC,EACA67P,EAZa,iBAAN98P,GACP5yC,EAAU6yC,EACVA,EAAID,EAAEC,EACND,EAAIA,EAAEA,GAGNC,EAAIA,EAEO,MAAX7yC,IACAA,EAAU,IAId,MAAMklB,EAAQ7kB,KAAK0zD,GACb47O,EAAcxnS,KAAKitB,IAAIp1B,EAAQklB,OAASA,EAAO,MAC/CupR,EAAapuS,KAAKktS,gBAClBl7D,EAAc,IAAI,GAAMz/L,EAAGC,GAC3Bu/O,EAAa/xR,KAAKohS,mBAAmBgN,EAAW/8Q,MAAQ,EAAG+8Q,EAAW36Q,OAAS,GACrF,GAAI5O,IAAUyqR,EAAa,CACvB,MAAMl8O,EAAY2+N,EAAW9hR,KAAK+hO,GAAantN,MAAMA,EAAOA,GAAO+N,QACnE4gB,EAAY,aAAa4f,EAAU7gB,OAAO6gB,EAAU5gB,WAEnD,CACD,MAAMjd,EAAS+5Q,GAAezqR,EAAQyqR,GAAgBt9D,EAAYnhL,SAASkhO,GACrExjO,EAAQwjO,EAAWtqR,QAAQkuD,KAAKq8K,EAAaz8M,GAC7Cq+B,EAAS5zD,KAAKuvS,uBAAuBhhP,GAAO37B,QAClD4gB,EAAY,SAAS87P,EAAczqR,KACnCwqR,EAAkB,GAAGz7O,EAAOrhB,OAAOqhB,EAAOphB,MAE9C,MAAMg9P,EAAkB7vS,EAAQ6vS,gBAkBhC,OAjBAxvS,KAAKkiR,WAAWhlP,SAAS,GAAKuyQ,qBAC9BzvS,KAAKorS,SACA3iR,IAAI,GAAKinR,qBACTtnR,GAAG,GAAKsnR,oBAAsB7hS,IAC/B7N,KAAK2vS,eAAeL,EAAa,CAAE/8P,EAAGA,EAAGC,EAAGA,IACb,mBAApBg9P,GACP,EAAYpyS,KAAKoyS,EAAiBxvS,KAAM6N,EAAEud,iBAG7C5G,IAAI,CACLgvB,YACA67P,kBACA5gN,WAAY,YACZ4I,mBAAoB13F,EAAQy3B,UAAY,KACxCw4Q,gBAAiBjwS,EAAQi8B,MACzBi0Q,yBAA0BlwS,EAAQowQ,SAE/B/vQ,KAEX,eAAe6kB,EAAO9lB,GAMlB,OALAiB,KAAKgvS,qBACLhvS,KAAKurN,MAAM1mM,MAAMA,GACjB7kB,KAAK8vS,mBACL9vS,KAAK2hS,YAAY5iS,EAAEwzC,EAAGxzC,EAAEyzC,GACxBxyC,KAAKivS,oBACEjvS,KAEX,mBAUI,OATAA,KAAKkiR,WAAW3kP,YAAY,GAAKkyQ,qBACjCzvS,KAAKorS,SAAS3iR,IAAI,GAAKinR,qBAAqBlrR,IAAI,CAC5CgvB,UAAW,GACX67P,gBAAiB,GACjB5gN,WAAY,GACZ4I,mBAAoB,GACpBu4M,gBAAiB,GACjBC,yBAA0B,KAEvB7vS,KAEX,iBAAiB+vS,EAAWpwS,EAAU,IAClC,MAAMkpC,EAAO,GAAUtqC,OAAOwxS,GACxBrO,EAAW/hS,EAAQ+hS,UAAYnjP,IAC/BkjP,EAAW9hS,EAAQ8hS,UAAYvlO,OAAO8zO,UACtCnB,EAAYlvS,EAAQkvS,WAAa,KACjCoB,EAAatwS,EAAQ80B,YAAc,EACnCg/B,EAAS9zD,EAAQ8zD,OACjB,GAAMl1D,OAAOoB,EAAQ8zD,QACrB5qB,EAAK6xB,YACL0zO,EAAapuS,KAAKktS,gBAClBnqS,EAAIqrS,EAAW/8Q,MAAQ4+Q,EACvBpvS,EAAIutS,EAAW36Q,OAASw8Q,EAC9B,IAAIprR,EAAQ,IAAI,GAAU4uC,EAAOlhB,EAAIxvC,EAAI,EAAG0wD,EAAOjhB,EAAI3xC,EAAI,EAAGkC,EAAGlC,GAAGmmG,wBAAwBn+D,EAAM4qB,GAMlG,OALA5uC,EAAQ/c,KAAKkzC,IAAIn2B,EAAO68Q,GACpBmN,IACAhqR,EAAQ/c,KAAKq4C,MAAMt7B,EAAQgqR,GAAaA,GAE5ChqR,EAAQ/c,KAAKitB,IAAI0sQ,EAAU58Q,GACpB7kB,KAAKkwS,kBAAkBz8O,EAAQ91D,OAAO+rD,OAAO,CAAE7kC,SAASllB,IAEnE,aAAawnC,GACT,MAAMt5B,EAAI7N,KAAKkuE,eAAe/mC,GAC9BnnC,KAAKitB,QAAUpf,EAAEof,QACjBjtB,KAAKktB,QAAUrf,EAAEqf,QACjBltB,KAAKkpB,QAAQ,YAAa,CAAErb,MAC5B7N,KAAKuqC,EAAEznC,SAASwiB,MAAM8C,GAAG,CACrB,sCAAuCpoB,KAAKmwS,IAAI1xS,KAAKuB,MACrD,mCAAoCA,KAAKowS,YAAY3xS,KAAKuB,MAC1D,qBAAsBA,KAAKowS,YAAY3xS,KAAKuB,QAEhDA,KAAKuqC,EAAEtnC,QAAQmlB,GAAG,kBAAmBpoB,KAAKowS,YAAY3xS,KAAKuB,OAE/D,IAAImnC,GACA,MAAMt5B,EAAI7N,KAAKkuE,eAAe/mC,GACxBksB,EAAKxlD,EAAEof,QAAUjtB,KAAKitB,QACtBqmC,EAAKzlD,EAAEqf,QAAUltB,KAAKktB,QAC5BltB,KAAK8xB,UAAU0F,WAAa87B,EAC5BtzD,KAAK8xB,UAAU2F,YAAc47B,EAC7BrzD,KAAKitB,QAAUpf,EAAEof,QACjBjtB,KAAKktB,QAAUrf,EAAEqf,QACjBltB,KAAKkpB,QAAQ,UAAW,CAAErb,MAE9B,YAAYA,GACR7N,KAAKuqC,EAAEznC,SAASwiB,MAAMmD,IAAI,YAC1BzoB,KAAKuqC,EAAEtnC,QAAQwlB,IAAI,YACnBzoB,KAAKkpB,QAAQ,WAAY,CAAErb,MAE/B,mBAAmB7C,EAAGC,GAClB,IAAIsnC,EAAiB,iBAANvnC,EAAiBA,EAAEunC,EAAIvnC,EAClCwnC,EAAiB,iBAANxnC,EAAiBA,EAAEwnC,EAAIvnC,EACtC,MAAM2zH,EAAM5+H,KAAKurN,MAAMn0J,SAGvB,OAFA7kB,GAAKvyC,KAAK8xB,UAAU2F,WAAaz3B,KAAKy2B,QAAQF,KAAOqoG,EAAI/wH,EACzD2kC,GAAKxyC,KAAK8xB,UAAU0F,UAAYx3B,KAAKy2B,QAAQxlB,IAAM2tH,EAAI5pB,EAChD,IAAI,GAAMziE,EAAIqsF,EAAI5zH,EAAGwnC,EAAIosF,EAAIrhI,GAExC,uBAAuBg1C,EAAGC,GACtB,MAAMzzC,EAAiB,iBAANwzC,EAAiB,GAAMh0C,OAAOg0C,GAAK,IAAI,GAAMA,EAAGC,GAC3DosF,EAAM5+H,KAAKurN,MAAMn0J,SACjB3gC,EAAUz2B,KAAKy2B,QACrB,OAAO,EAAIknG,eAAe5+H,EAAG6/H,GAAKxrE,UAAU38B,EAAQF,KAAME,EAAQxlB,KAEtE,OAAOogB,EAAOoC,GACV,IAAI1wB,EAAa,MAATsuB,EAAgBA,EAAQrxB,KAAK8xB,UAAUY,YAC3C7xB,EAAc,MAAV4yB,EAAiBA,EAASzzB,KAAK8xB,UAAU+B,aAChC,iBAAN9wB,IACPA,EAAI+E,KAAK8qB,MAAM7vB,IAEF,iBAANlC,IACPA,EAAIiH,KAAK8qB,MAAM/xB,IAEnBb,KAAKL,QAAQ0xB,MAAQtuB,EACrB/C,KAAKL,QAAQ8zB,OAAS5yB,EACtBb,KAAKkiR,WAAW19P,IAAI,CAAE6M,MAAOtuB,EAAG0wB,OAAQ5yB,IACxCb,KAAKyrD,SAET,gBACI,OAAIzrD,KAAK4sS,iBACE5sS,KAAK4sS,iBAET,CACHv7Q,MAAOrxB,KAAK8xB,UAAUoiH,YACtBzgH,OAAQzzB,KAAK8xB,UAAUqiH,cAG/B,WAAWlnH,EAASC,GAChB,MACM4E,EAAY9xB,KAAK8xB,UACjB+W,EAAO/W,EAAUuE,wBACvB,IAAIg9B,EAAK,EACLC,EAAK,EAmBT,OAlBIrmC,GAAW4b,EAAKtS,KALL,KAMX88B,GANW,IAQXnmC,GAAW2b,EAAK53B,IARL,KASXqiD,GATW,IAWXrmC,GAAW4b,EAAKxW,MAXL,KAYXghC,EAZW,IAcXnmC,GAAW2b,EAAK2yB,OAdL,KAeXlI,EAfW,IAiBJ,IAAPD,IACAvhC,EAAU2F,YAAc47B,GAEjB,IAAPC,IACAxhC,EAAU0F,WAAa87B,GAEpB,CACH+8O,UAAWh9O,EACXi9O,UAAWh9O,GAGnB,WAAW/8B,EAAMlE,EAAOphB,EAAKuqD,GACzB,IAAI/kC,EAAUz2B,KAAKmuS,aACnBnuS,KAAKy2B,QAAU,CACXF,KAAMzuB,KAAK8qB,MAAM6D,EAAQF,MAAQA,GAAQ,IACzCtlB,IAAKnJ,KAAK8qB,MAAM6D,EAAQxlB,KAAOA,GAAO,IACtCuqD,OAAQ1zD,KAAK8qB,MAAM6D,EAAQ+kC,QAAUA,GAAU,IAC/CnpC,MAAOvqB,KAAK8qB,MAAM6D,EAAQpE,OAASA,GAAS,KAEhDoE,EAAUz2B,KAAKy2B,QACfz2B,KAAKorS,SAAS5mR,IAAI,CACd6M,MAAOoF,EAAQF,KAAOv2B,KAAKurN,MAAM5rN,QAAQ0xB,MAAQoF,EAAQpE,MACzDoB,OAAQgD,EAAQxlB,IAAMjR,KAAKurN,MAAM5rN,QAAQ8zB,OAASgD,EAAQ+kC,SAE9D,MAAM1pC,EAAY9xB,KAAKurN,MAAMz5L,UAG7B,OAFAA,EAAUxN,MAAMiS,KAAUv2B,KAAKy2B,QAAQF,KAAhB,KACvBzE,EAAUxN,MAAMrT,IAASjR,KAAKy2B,QAAQxlB,IAAhB,KACfjR,KAEX,aACI,MAAMy2B,EAAUz2B,KAAKL,QAAQ82B,QAC7B,MAAuB,mBAAZA,EACA,EAAUu6J,eAAe,EAAY5zL,KAAKq5B,EAASz2B,KAAMA,OAE7D,EAAUgxL,eAAev6J,GAKpC,iBACI,MAAMmoG,EAAM5+H,KAAKurN,MAAMn0J,SACjBxa,EAAO58C,KAAKktS,gBACZh4Q,EAAM,CACRqd,EAAGvyC,KAAK8xB,UAAU2F,YAAc,EAChC+a,EAAGxyC,KAAK8xB,UAAU0F,WAAa,EAC/BnG,MAAOurB,EAAKvrB,MACZoC,OAAQmpB,EAAKnpB,QAEXgoH,EAAO,EAAIje,mBAAmBtoG,EAAK0pG,EAAI2V,WAG7C,OAFAkH,EAAKlpG,IAAMvyC,KAAKy2B,QAAQF,MAAQ,GAAKv2B,KAAK0zD,GAC1C+nF,EAAKjpG,IAAMxyC,KAAKy2B,QAAQxlB,KAAO,GAAKjR,KAAK2zD,GAClC8nF,EAEX,cAAco2F,EAAMlyO,EAAU,IAC1B,MAAM47D,EAAOs2K,EAAKj1G,UACZ6e,EAAOz7I,KAAKiuS,iBAClB,OAAOtuS,EAAQihL,OACTnlC,EAAKx0C,aAAa1rC,GAClBkgF,EAAK7zC,oBAAoBrsC,GAEnC,eAAepF,GACX,OAAOn2D,KAAKiuS,iBAAiBl5O,cAAcoB,GAK/C,OAEI,OADAn2D,KAAKkiR,WAAW19P,IAAI,WAAY,UACzBxkB,KAKX,SAEI,OADAA,KAAKkiR,WAAW19P,IAAI,WAAY,UACzBxkB,KAEX,WACIA,KAAKi/R,gBAET,UACIj/R,KAAKuqC,EAAEvqC,KAAKurN,MAAMz5L,WAAW7B,aAAajwB,KAAKkiR,YAC/CliR,KAAK4d,UCl2BN,SAAS,GAAOpgB,EAAM2pC,EAAKta,EAAM1X,EAAO,IAC3C,GAAI0X,EAAM,CACN,MAAM0+L,EAAQ1+L,EAAK0+L,MACb19M,EAAI09M,EAAM1+L,KAAKqhD,eAAe/mC,GAC9B4qP,EAAaxmE,EAAM11J,WAAWhoD,EAAEof,QAASpf,EAAEqf,SACjDL,EAAKjO,OAAOphB,EAAMG,OAAO+rD,OAAO,CAAE77C,IAC9Bgf,OAAMloB,KAAMkoB,EAAKglN,KAAMA,KAAMhlN,EAAKglN,KAAMt/L,EAAGw/O,EAAWx/O,EAAGC,EAAGu/O,EAAWv/O,GAAKr9B,KD+1BxF,GAAW,CACP,GAAK86G,WACN,GAASpxH,UAAW,UAAW,OAsB/B,KAAa,GAAW,KADds4O,WAnBT,cAAyB,GACrB,YAAY88C,GACRt1M,MAAMs1M,EAAS1oE,OACfvrN,KAAKi0R,SAAWA,EACZA,EAASt0R,QAAQqvJ,YACjBhvJ,KAAKkhK,KAAK+yH,EAASt0R,QAAQqvJ,YAGnC,WACI,OAAOhvJ,KAAKi0R,SAASjlI,WAEzB,OACIhvJ,KAAKurN,MAAMnjM,GAAG,QAASpoB,KAAKyrD,OAAQzrD,MACpCA,KAAKurN,MAAMnjM,GAAG,YAAapoB,KAAKyrD,OAAQzrD,MAE5C,wBAAwBL,GACpBK,KAAKi0R,SAASt0R,QAAQqvJ,WAAarvJ,IAM/C,SAAW0iL,GACPA,EAAK4oH,eAAiB,iBACtB5oH,EAAKkuH,aAAkBluH,EAAK4oH,eAAR,WACpB5oH,EAAKmuH,cAAmBnuH,EAAK4oH,eAAR,YACrB5oH,EAAK8oH,WAAgB9oH,EAAK4oH,eAAR,SAClB5oH,EAAKgpH,aAAkBhpH,EAAK4oH,eAAR,WACpB5oH,EAAKkpH,gBAAqBlpH,EAAK4oH,eAAR,cACvB5oH,EAAKotH,oBAAsB,yBAC3BptH,EAAKqtH,oBAAsB,0CAC3BrtH,EAAK61D,eAAiB,CAClB,UACI,MAAMt7L,EAAO58C,KAAKktS,gBACZ57Q,EAAWxpB,KAAKitB,IAAI/0B,KAAKL,QAAQ8wS,iBAAmB,EAAG,IAAM,EAC7D/tG,EAAY56L,KAAKitB,IAAI/0B,KAAKL,QAAQ+wS,kBAAoB,EAAG,IAAM,EAC/Dn6Q,EAAOzuB,KAAKitB,IAAI6nB,EAAKvrB,MAAQC,EAAU,GACvCrgB,EAAMnJ,KAAKitB,IAAI6nB,EAAKnpB,OAASivK,EAAW,GAC9C,MAAO,CAAEnsK,OAAMtlB,MAAKohB,MAAOkE,EAAMilC,OAAQvqD,IAE7Cw/R,gBAAiB,GACjBC,iBAAkB,GAClBxF,aAAa,EACb4B,WAAW,EACXrB,YAAY,GAYhBppH,EAAKlgE,WAVL,SAAoBxiH,GAChB,MAAMwB,EAAS,EAAUgF,MAAM,GAAIk8K,EAAK61D,eAAgBv4O,GAOxD,OANwB,MAApBwB,EAAO0rS,YACP1rS,EAAO0rS,UAAYltS,EAAQ4rN,MAAM5rN,QAAQ0xB,OAEpB,MAArBlwB,EAAO0tI,aACP1tI,EAAO0tI,WAAalvI,EAAQ4rN,MAAM5rN,QAAQ8zB,QAEvCtyB,GAhCf,CAmCG,KAAS,GAAO,KEl6BnB,IAq0BI,GCpZA,GDjbA,GAA0C,SAAU+kP,EAAYx+O,EAAQlJ,EAAK2nP,GAC7E,IAA2H5oP,EAAvHD,EAAImJ,UAAU9E,OAAQ5D,EAAIT,EAAI,EAAIoK,EAAkB,OAATy+O,EAAgBA,EAAOxoP,OAAOkrE,yBAAyBnhE,EAAQlJ,GAAO2nP,EACrH,GAAuB,iBAAZ9gL,SAAoD,mBAArBA,QAAQ+gL,SAAyBroP,EAAIsnE,QAAQ+gL,SAASF,EAAYx+O,EAAQlJ,EAAK2nP,QACpH,IAAK,IAAIlpP,EAAIipP,EAAWvkP,OAAS,EAAG1E,GAAK,EAAGA,KAASM,EAAI2oP,EAAWjpP,MAAIc,GAAKT,EAAI,EAAIC,EAAEQ,GAAKT,EAAI,EAAIC,EAAEmK,EAAQlJ,EAAKT,GAAKR,EAAEmK,EAAQlJ,KAAST,GAChJ,OAAOT,EAAI,GAAKS,GAAKJ,OAAOC,eAAe8J,EAAQlJ,EAAKT,GAAIA,GAUzD,MAAM,WAAkB,GAC3B,YAAY4B,GACRg/E,QACA3+E,KAAKL,QAAU,EAAUwG,MAAM,GAAI,GAAQ+xO,eAAgBv4O,GACvDK,KAAKL,QAAQ25E,QACbt5E,KAAKL,QAAQsvB,WAAajvB,KAAKL,QAAQ25E,MAAMrqD,YAE7CjvB,KAAKL,QAAQsvB,WACbjvB,KAAKivB,WAAajvB,KAAKL,QAAQsvB,YAG/BjvB,KAAKivB,WAAa,IAAI,GAAW,GAAI,CACjCiuB,WAAY,GAAQyzP,kBAExB3wS,KAAKL,QAAQsvB,WAAajvB,KAAKivB,YAEnCjvB,KAAK4wS,SAAW,EAChB5wS,KAAK6tP,kBACL7tP,KAAK6wS,cACL7wS,KAAKk/R,iBAET,YACI,OAAOl/R,KAAKL,QAAQ4rN,MAExB,mBACI,OAAOvrN,KAAKmzP,gBAAgB,GAAQx1N,WAAWzI,KAEnD,aACI,OAAOl1B,KAAKkiR,WAAWjnQ,SAAS,IAAIjb,KAAK8wS,cAE7C,oBACI,OAAO9wS,KAAKL,QAEhB,iBACI,MAAM4rN,EAAQvrN,KAAKurN,MACbt8L,EAAajvB,KAAKivB,WACxBjvB,KAAKqzP,eAAe,CAChB,CAAC,cAAcrzP,KAAK8wS,cAAiB,0BACrC,CAAC,eAAe9wS,KAAK8wS,cAAiB,4BACvC,GACHvlF,EAAMnjM,GAAG,QAASpoB,KAAK+wS,mBAAoB/wS,MAC3CurN,EAAMnjM,GAAG,YAAapoB,KAAK+wS,mBAAoB/wS,MAC/CurN,EAAMjyI,MAAMlxD,GAAG,UAAWpoB,KAAKgxS,eAAgBhxS,MAC/CivB,EAAW7G,GAAG,QAASpoB,KAAKg1R,YAAah1R,MACzCivB,EAAW7G,GAAG,UAAWpoB,KAAKi1R,cAAej1R,MAC7CivB,EAAW7G,GAAG,UAAWpoB,KAAKixS,UAAWjxS,MACzCivB,EAAW7G,GAAG,UAAWpoB,KAAKkxS,oBAAqBlxS,MACnDivB,EAAW7G,GAAG,uBAAwBpoB,KAAKmxS,sBAAuBnxS,MAClEivB,EAAW7G,GAAG,eAAgBpoB,KAAKoxS,cAAepxS,MAEtD,gBACI,MAAMurN,EAAQvrN,KAAKurN,MACbt8L,EAAajvB,KAAKivB,WACxBjvB,KAAKgrP,mBACLz/B,EAAM9iM,IAAI,QAASzoB,KAAK+wS,mBAAoB/wS,MAC5CurN,EAAM9iM,IAAI,YAAazoB,KAAK+wS,mBAAoB/wS,MAChDurN,EAAMjyI,MAAM7wD,IAAI,UAAWzoB,KAAKgxS,eAAgBhxS,MAChDivB,EAAWxG,IAAI,QAASzoB,KAAKg1R,YAAah1R,MAC1CivB,EAAWxG,IAAI,UAAWzoB,KAAKi1R,cAAej1R,MAC9CivB,EAAWxG,IAAI,UAAWzoB,KAAKixS,UAAWjxS,MAC1CivB,EAAWxG,IAAI,UAAWzoB,KAAKkxS,oBAAqBlxS,MACpDivB,EAAWxG,IAAI,uBAAwBzoB,KAAKmxS,sBAAuBnxS,MACnEivB,EAAWxG,IAAI,eAAgBzoB,KAAKoxS,cAAepxS,MAEvD,WACIA,KAAKi/R,gBAET,qBACIj/R,KAAKqxS,qBAAqB,CAAE1vQ,OAAO,IAEvC,gBACI3hC,KAAKqxS,uBAET,uBAAsB,KAAE1sS,EAAI,QAAEhF,IAC1B,MAAM,qBAAE2xS,EAAoB,cAAErzG,GAAkBj+L,KAAKL,SAC/C,GAAEg5P,EAAE,UAAErxO,GAAc3nB,EAC1B,IAAI4xS,GAAoBvxS,KAAKwxS,YAS7B,GAJAD,EACIA,KAC8B,IAAzBD,GAAmD,SAAlBrzG,GAC1CszG,EAAmBA,GAAoB54C,IAAOrxO,EAC1CiqR,EAAkB,CAClBvxS,KAAKwxS,aAAc,EACnB,MAAMxsQ,EAAUrgC,EAAK6tB,WACfytB,EAAWt7C,EAAKs7C,SAAS,YACzBoT,EAAKruB,EAAQuN,EAAI0N,EAAS1N,EAC1B+gB,EAAKtuB,EAAQwN,EAAIyN,EAASzN,EACrB,IAAP6gB,GAAmB,IAAPC,GACZtzD,KAAKyxS,uBAAuBp+O,EAAIC,EAAI3uD,EAAMhF,GAE9CK,KAAKwxS,aAAc,GAG3B,gBAAe,QAAE35M,IACTA,GAAWA,EAAQl2F,QACnB3B,KAAK0xS,SAAS75M,GAGtB,UACI,OAAO73F,KAAK2B,QAAU,EAE1B,WAAWkwO,GACP,OAAO7xO,KAAKivB,WAAW5T,IAAIw2N,GAE/B,aACI,OAAO7xO,KAAKivB,WAAWttB,OAE3B,YACI,OAAO3B,KAAKivB,WAAWnpB,UAE3B,OAAOqsQ,EAAOxyQ,EAAU,IACpBA,EAAQ80R,QAAS,EACjB,MAAMvrN,EAAQlpE,KAAKwR,OAAOtQ,MAAMD,QAAQkxQ,GAASA,EAAQ,CAACA,IAE1D,OADAnyQ,KAAKivB,WAAW3uB,IAAI4oE,EAAOvpE,GACpBK,KAEX,SAASmyQ,EAAOxyQ,EAAU,IAItB,OAFAA,EAAQ80R,QAAS,EACjBz0R,KAAKivB,WAAWrR,OAAO1c,MAAMD,QAAQkxQ,GAASA,EAAQ,CAACA,GAAQxyQ,GACxDK,KAEX,MAAMmyQ,EAAOxyQ,EAAU,IACnB,GAAIwyQ,EAAO,CACP,GAAIxyQ,EAAQizL,MAAO,CACf,MAAM2vG,EAAcviS,KAAKwR,OAAOtQ,MAAMD,QAAQkxQ,GAASA,EAAQ,CAACA,IAEhE,OADAnyQ,KAAKivB,WAAWtY,MAAM4rR,EAAa5kS,OAAO+rD,OAAO/rD,OAAO+rD,OAAO,GAAI/pD,GAAU,CAAEg5P,IAAI,KAC5E34P,KAEX,MAAMmb,EAAOnb,KAAKmyQ,MACZxkQ,EAAO3N,KAAKwR,OAAOtQ,MAAMD,QAAQkxQ,GAASA,EAAQ,CAACA,IACnDw/B,EAAU,GACVC,EAAU,GAChBz2R,EAAKgwB,QAAS0mM,GAAU8/D,EAAQ9/D,EAAKrjO,IAAMqjO,GAC3ClkO,EAAKw9B,QAAS0mM,GAAU+/D,EAAQ//D,EAAKrjO,IAAMqjO,GAC3C,MAAMz9D,EAAQ,GACRv8E,EAAU,GAoBhB,OAnBAlqF,EAAKw9B,QAAS0mM,IACL8/D,EAAQ9/D,EAAKrjO,KACd4lK,EAAM5xK,KAAKqvO,KAGnB12N,EAAKgwB,QAAS0mM,IACL+/D,EAAQ//D,EAAKrjO,KACdqpF,EAAQr1F,KAAKqvO,KAGjBh6I,EAAQl2F,QACR3B,KAAK0xS,SAAS75M,EAASl6F,OAAO+rD,OAAO/rD,OAAO+rD,OAAO,GAAI/pD,GAAU,CAAEg5P,IAAI,KAEvEvkF,EAAMzyK,QACN3B,KAAK4J,OAAOwqK,EAAOz2K,OAAO+rD,OAAO/rD,OAAO+rD,OAAO,GAAI/pD,GAAU,CAAEg5P,IAAI,KAEhD,IAAnB9gK,EAAQl2F,QAAiC,IAAjByyK,EAAMzyK,QAC9B3B,KAAK6xS,kBAEF7xS,KAEX,OAAOA,KAAKktP,MAAMvtP,GAEtB,MAAMA,EAAU,IASZ,OARIK,KAAK2B,UACiB,IAAlBhC,EAAQizL,MACR5yL,KAAK0xS,SAAS1xS,KAAKmyQ,MAAOxyQ,GAG1BK,KAAKivB,WAAWtY,MAAM,GAAIhZ,OAAO+rD,OAAO/rD,OAAO+rD,OAAO,GAAI/pD,GAAU,CAAEg5P,IAAI,MAG3E34P,KAEX,UAAUwR,GACNxR,KAAKL,QAAQ6R,OAASA,EAE1B,WAAWwK,GACPhc,KAAKL,QAAQqc,QAAUA,EAE3B,eAAemrB,GAIX,IAAIoL,EACAC,EAHJrL,EAAMnnC,KAAKkuE,eAAe/mC,GAC1BnnC,KAAKktP,QAGL,MAAM2yC,EAAiB7/R,KAAKurN,MAAMz5L,UAClC,GAAmB,MAAfqV,EAAIha,SACW,MAAfga,EAAI/Z,SACJyyQ,EAAex1R,SAAS88B,EAAIz/B,QAC5B6qC,EAAIpL,EAAIha,QACRqlB,EAAIrL,EAAI/Z,YAEP,CACD,MAAM+a,EAASnoC,KAAKuqC,EAAEs1P,GAAgB13P,SAChC1Q,EAAaooQ,EAAepoQ,WAC5BD,EAAYqoQ,EAAeroQ,UACjC+a,EAAIpL,EAAIla,QAAUkb,EAAO5R,KAAOtzB,OAAO+lC,YAAcvR,EACrD+a,EAAIrL,EAAIja,QAAUib,EAAOl3B,IAAMhO,OAAO8lC,YAAcvR,EAExDx3B,KAAKkiR,WAAW19P,IAAI,CAChBvT,IAAKuhC,EACLjc,KAAMgc,EACNlhB,MAAO,EACPoC,OAAQ,IAEZzzB,KAAKwrP,aAAarkN,EAAK,CACnBia,OAAQ,YACRn0B,QAASka,EAAIla,QACbC,QAASia,EAAIja,QACbC,QAASolB,EACTnlB,QAASolB,EACT69P,UAAW,EACXC,UAAW,IAEftwS,KAAKs7P,uBAAuB,GAAQvI,eAAgB5rN,EAAI5kB,MAE5D,OAAO4vP,GACH,MAAM3gQ,EAASxR,KAAKL,QAAQ6R,OAC5B,OAAItQ,MAAMD,QAAQuQ,GACP2gQ,EAAM3gQ,OAAQqgO,IAAUrgO,EAAO0sC,SAAS2zL,KAAUrgO,EAAO0sC,SAAS2zL,EAAKzgM,QAE5D,mBAAX5/B,EACA2gQ,EAAM3gQ,OAAQqgO,GAAS,EAAYz0O,KAAKoU,EAAQxR,KAAKurN,MAAOsmB,IAEhEsgC,EAEX,cAAchrO,GACV,MAAMokL,EAAQvrN,KAAKurN,MACbogC,EAAY3rP,KAAK0rP,aAAavkN,GAEpC,OADewkN,EAAUvqM,QAErB,IAAK,YAAa,CACd,IAAI/vB,EAAQrxB,KAAKkiR,WAAW7wP,QACxBoC,EAASzzB,KAAKkiR,WAAWzuP,SAC7B,MAAM0U,EAASnoC,KAAKkiR,WAAW/5O,SACzByrB,EAAS23J,EAAMumF,YAAY3pQ,EAAO5R,KAAM4R,EAAOl3B,KAC/C4T,EAAQ0mM,EAAM/3K,UAAU0tP,WAC9B7vQ,GAASxM,EAAM6uC,GACfjgC,GAAU5O,EAAM8uC,GAChB,MAAM9qB,EAAO,IAAI,GAAU+qB,EAAOrhB,EAAGqhB,EAAOphB,EAAGnhB,EAAOoC,GAChD0+O,EAAQnyQ,KAAK+xS,mBAAmBlpQ,GAAMtiC,IAAKsmB,GAASA,EAAKglN,MAC/D7xO,KAAK2W,MAAMw7P,EAAO,CAAEv/E,OAAO,IAC3B5yL,KAAKgyS,iBACL,MAEJ,IAAK,cAAe,CAChB,MAAMC,EAAS1mF,EAAM11J,WAAW1uB,EAAIla,QAASka,EAAIja,SACjD,IAAKltB,KAAKL,QAAQuyS,UAAW,CACzB,MAAM3vR,EAAOopO,EACb3rP,KAAKmyS,4BAA4B,CAC7B9+O,GAAI9wC,EAAK0K,QAAU1K,EAAKgmF,QACxBj1C,GAAI/wC,EAAK2K,QAAU3K,EAAKimF,UAGhCxoG,KAAKurN,MAAMjyI,MAAM+8K,UAAU,kBAC3Br2P,KAAKoyS,eAAe,cAAejrQ,EAAK8qQ,EAAO1/P,EAAG0/P,EAAOz/P,GACzD,MAEJ,QACIxyC,KAAKktP,SAKjB,UAAU/lN,GACSnnC,KAAK0rP,aAAavkN,GAAKia,SAElCphD,KAAKqyS,cAAclrQ,GACnBnnC,KAAKw7P,4BAGb,wBAAwBr0N,GACfnnC,KAAKL,QAAQuyS,WACd/qQ,EAAIpe,kBAER,MAAMlb,EAAI7N,KAAKkuE,eAAe/mC,GAC1BnnC,KAAKL,QAAQ0zR,SACbrzR,KAAKsyS,iBAAiBzkS,GAE1B,MAAM0kS,EAAavyS,KAAKwyS,oBAAoB3kS,EAAEnG,QAC9C1H,KAAKwrP,aAAa39O,EAAG,CAAE0kS,eACvB,MAAMN,EAASjyS,KAAKurN,MAAM11J,WAAWhoD,EAAEof,QAASpf,EAAEqf,SAClDltB,KAAKoyS,eAAe,gBAAiBvkS,EAAGokS,EAAO1/P,EAAG0/P,EAAOz/P,GACzDxyC,KAAKs7P,uBAAuB,GAAQvI,eAAgBllP,EAAE0U,MAE1D,iBAAiB4kB,GACbnnC,KAAKurN,MAAMjyI,MAAM88K,WAAW,kBAC5B,MAAM67C,EAASjyS,KAAKurN,MAAM11J,WAAW1uB,EAAIla,QAASka,EAAIja,SACtDltB,KAAKwrP,aAAarkN,EAAK,CACnBia,OAAQ,cACRn0B,QAASglR,EAAO1/P,EAChBrlB,QAAS+kR,EAAOz/P,EAChB+1D,QAAS0pM,EAAO1/P,EAChBi2D,QAASypM,EAAOz/P,IAGxB,mBAAmBy/P,EAAQ1vR,GACvB,IAAI8wC,EAAK4+O,EAAO1/P,EAAIhwB,EAAK0K,QACrBqmC,EAAK2+O,EAAOz/P,EAAIjwB,EAAK2K,QACzB,MAAM6rP,EAAW/4Q,KAAKurN,MAAM7rN,KAAK+zR,kBACjC,GAAI1a,EAAU,CACV,MAAM5G,EAAQnyQ,KAAKivB,WAAWnpB,UACxB2sS,EAAY,GAAKz8B,aAAa7D,EAAO,CAAExqQ,MAAM,KAAW,GAAUpJ,SAClEm0S,EAAQ35B,EAASxmO,EAAIkgQ,EAAUlgQ,EAC/BogQ,EAAQ55B,EAASvmO,EAAIigQ,EAAUjgQ,EAC/BogQ,EAAQ75B,EAASxmO,EAAIwmO,EAAS1nP,OAASohR,EAAUlgQ,EAAIkgQ,EAAUphR,OAC/DwhR,EAAQ95B,EAASvmO,EAAIumO,EAAStlP,QAAUg/Q,EAAUjgQ,EAAIigQ,EAAUh/Q,QAatE,GAZI4/B,EAAKq/O,IACLr/O,EAAKq/O,GAELp/O,EAAKq/O,IACLr/O,EAAKq/O,GAELC,EAAQv/O,IACRA,EAAKu/O,GAELC,EAAQv/O,IACRA,EAAKu/O,IAEJ7yS,KAAKL,QAAQuyS,UAAW,CACzB,MAAM/kR,EAAU8kR,EAAO1/P,EAAIhwB,EAAKgmF,QAC1Bn7E,EAAU6kR,EAAOz/P,EAAIjwB,EAAKimF,QAChCn1C,EAAKlmC,GAAWulR,GAASvlR,GAAWylR,EAAQ,EAAIv/O,EAChDC,EAAKlmC,GAAWulR,GAASvlR,GAAWylR,EAAQ,EAAIv/O,GAGxD,MAAO,CACHD,KACAC,MAGR,4BAA4BnrB,GACxB,MAAM,GAAEkrB,EAAE,GAAEC,GAAOnrB,EACnB,GAAIkrB,GAAMC,EACN,GAAKtzD,KAAKyxS,uBAAuBp+O,EAAIC,GAAKtzD,KAAK8yS,aACvC9yS,KAAKivB,WAAWttB,OAAS,GACzB3B,KAAKqxS,2BAGR,CACD,MAAMxsR,EAAQ7kB,KAAKurN,MAAM/3K,UAAU0tP,WACnClhS,KAAK+yS,OAAOzyS,IAAIN,KAAKgzS,qBAAqBxuR,IAAI,CAC1C+R,KAAM,KAAK88B,EAAKxuC,EAAM6uC,GACtBziD,IAAK,KAAKqiD,EAAKzuC,EAAM8uC,MAKrC,gBAAgBphB,EAAGC,GACf,MAAMyhP,EAAWj0R,KAAKurN,MAAM0oE,SAASb,OACrC,OAAIa,EACOA,EAASC,WAAW3hP,EAAGC,GAE3B,CAAE69P,UAAW,EAAGC,UAAW,GAEtC,gBAAgBnpQ,GACZ,MAAMt5B,EAAI7N,KAAKkuE,eAAe/mC,GACxBwkN,EAAY3rP,KAAK0rP,aAAa79O,GAEpC,OADe89O,EAAUvqM,QAErB,IAAK,YAAa,CACd,MAAM7+B,EAAOopO,GACO,IAAhBppO,EAAK8oQ,SACLrrR,KAAKkiR,WAAW5xP,SAAStwB,KAAKurN,MAAMz5L,WACpC9xB,KAAKizS,iBACL1wR,EAAK8oQ,QAAS,GAElB,MAAM,UAAEglB,EAAS,UAAEC,GAActwS,KAAKmzR,gBAAgBtlR,EAAEof,QAASpf,EAAEqf,SACnE3K,EAAK8tR,WAAaA,EAClB9tR,EAAK+tR,WAAaA,EAClB,MAAMj9O,EAAKxlD,EAAEof,QAAU1K,EAAK0K,QAAU1K,EAAK8tR,UACrC/8O,EAAKzlD,EAAEqf,QAAU3K,EAAK2K,QAAU3K,EAAK+tR,UACrC/5Q,EAAO7C,SAAS1zB,KAAKkiR,WAAW19P,IAAI,QAAS,IAC7CvT,EAAMyiB,SAAS1zB,KAAKkiR,WAAW19P,IAAI,OAAQ,IACjDxkB,KAAKkiR,WAAW19P,IAAI,CAChB+R,KAAM88B,EAAK,EAAI9wC,EAAK4K,QAAUkmC,EAAK98B,EACnCtlB,IAAKqiD,EAAK,EAAI/wC,EAAK6K,QAAUkmC,EAAKriD,EAClCogB,MAAOvpB,KAAKinC,IAAIskB,GAChB5/B,OAAQ3rB,KAAKinC,IAAIukB,KAErB,MAEJ,IAAK,cAAe,CAChB,MAAM2+O,EAASjyS,KAAKurN,MAAM11J,WAAWhoD,EAAEof,QAASpf,EAAEqf,SAC5C3K,EAAOopO,EACPxjN,EAASnoC,KAAKkzS,mBAAmBjB,EAAQ1vR,GAC3CviB,KAAKL,QAAQuyS,UACblyS,KAAKmyS,4BAA4BhqQ,GAGjCnoC,KAAKmzS,wBAAwBhrQ,GAE7BA,EAAOkrB,KACP9wC,EAAK0K,QAAUglR,EAAO1/P,GAEtBpK,EAAOmrB,KACP/wC,EAAK2K,QAAU+kR,EAAOz/P,GAE1BxyC,KAAKoyS,eAAe,gBAAiBjrQ,EAAK8qQ,EAAO1/P,EAAG0/P,EAAOz/P,GAC3D,OAKRxyC,KAAK8yS,cAAe,EAExB,uBAAuBz/O,EAAIC,EAAIovB,EAAS0wN,GACpC,MAAM7sS,EAAM,GACN8sS,EAAW,GASjB,GARI3wN,IACAn8E,EAAIm8E,EAAQl0E,KAAM,GAEtBxO,KAAKivB,WAAWnpB,UAAUqlC,QAAS0mM,IAC/BA,EAAKwgC,eAAe,CAAE1qQ,MAAM,IAAQwjC,QAAS67B,IACzCzgE,EAAIygE,EAAMx4D,KAAM,MAGpB4kS,GAAgBA,EAAat6B,YAAa,CAC1C,MAAMkU,EAAchtR,KAAKurN,MAAM47D,YAAYisB,EAAat6B,aACpDkU,IACAzmR,EAAIymR,EAAYx+Q,KAAM,EACtBw+Q,EAAY3a,eAAe,CAAE1qQ,MAAM,IAAQwjC,QAAS67B,IAChDzgE,EAAIygE,EAAMx4D,KAAM,IAEpB6kS,EAAS7wS,KAAKwqR,IAGtBhtR,KAAKivB,WAAWnpB,UAAUqlC,QAAS0mM,IAC/B,IAAKtrO,EAAIsrO,EAAKrjO,IAAK,CACf,MAAM7O,EAAUhC,OAAO+rD,OAAO/rD,OAAO+rD,OAAO,GAAI0pP,GAAe,CAAE9rR,UAAWtnB,KAAKm4E,IAAKuK,QAAS2wN,IAC/FxhE,EAAKz+K,UAAUC,EAAIC,EAAI3zD,GACvBK,KAAKurN,MAAMjyI,MAAMqhM,kBAAkB9oC,GAAM1mM,QAASyuB,IACzCrzD,EAAIqzD,EAAKprD,MACVorD,EAAKxG,UAAUC,EAAIC,EAAI3zD,GACvB4G,EAAIqzD,EAAKprD,KAAM,QAMnC,mBAAmBq6B,GACf,MAAM0iL,EAAQvrN,KAAKurN,MACb5rN,EAAU,CACZihL,OAAQ5gL,KAAKL,QAAQihL,QAEzB,IAAI8pE,EAAQ,GAuBZ,OAtBI1qP,KAAKL,QAAQ2zS,aAET5oD,EADA1qP,KAAKL,QAAQ+0P,gBACLhK,EAAM1pP,OAAOuqN,EAAMjyI,MACtB09M,eAAenuP,EAAMlpC,GACrB4G,IAAK5B,GAAS4mN,EAAM39F,SAASihJ,eAAelqQ,IAC5C6M,OAAQqb,GAAiB,MAARA,IAGd69N,EAAM1pP,OAAOuqN,EAAM39F,SAASy+J,gBAAgBxjP,EAAMlpC,KAG9DK,KAAKL,QAAQ4zS,aAET7oD,EADA1qP,KAAKL,QAAQ+0P,gBACLhK,EAAM1pP,OAAOuqN,EAAMjyI,MACtBk6N,eAAe3qQ,EAAMlpC,GACrB4G,IAAKqzD,GAAS2xJ,EAAM39F,SAASihJ,eAAej1M,IAC5CpoD,OAAQqb,GAAiB,MAARA,IAGd69N,EAAM1pP,OAAOuqN,EAAM39F,SAAS6lL,oBAAoB5qQ,EAAMlpC,KAG/D+qP,EAEX,eAAeltP,EAAMqQ,EAAG0kC,EAAGC,GACvB,MACM3lB,EADO7sB,KAAK0rP,aAAa79O,GACb0kS,WAClBvyS,KAAKkpB,QAAQ1rB,EAAM,CAAEqQ,IAAGgf,OAAM0lB,IAAGC,IAAGq/L,KAAMhlN,EAAKglN,OAEnD,qBAAqBA,GACjB,OAAO7xO,KAAKmzP,iBAAmBthB,EAAKhlD,SAAW,OAAS,QAA5B,aAEhC,yBAAyBglD,GACrB,MAAMhlN,EAAO7sB,KAAKurN,MAAM39F,SAASihJ,eAAeh9B,GAC5ChlN,GACAA,EAAKqQ,SAASl9B,KAAK0zS,qBAAqB7hE,IAGhD,8BAA8BA,GAC1B,MAAMhlN,EAAO7sB,KAAKurN,MAAM39F,SAASihJ,eAAeh9B,GAC5ChlN,GACAA,EAAK0Q,YAAYv9B,KAAK0zS,qBAAqB7hE,IAGnD,oBAAoBA,GAChB7xO,KAAK2zS,8BAA8B9hE,GAC/B7xO,KAAK4zS,oBAAoB/hE,KACzB7xO,KAAKkiR,WAAWxwQ,KAAK,kBAAkBmgO,EAAKrjO,QAAQoP,SACzB,IAAvB5d,KAAK+yS,OAAOpxS,QACZ3B,KAAK0lB,OAET1lB,KAAK4wS,SAAW9oS,KAAKitB,IAAI,EAAG/0B,KAAK4wS,SAAW,IAGpD,yBAAyBz+B,GACrBA,EAAMhnO,QAAS0mM,GAAS7xO,KAAK2zS,8BAA8B9hE,IAC3D7xO,KAAK0lB,OACL1lB,KAAK+yS,OAAOn1R,SACZ5d,KAAK4wS,SAAW,EAEpB,OACI5wS,KAAKkiR,WACA3kP,YAAYv9B,KAAKmzP,gBAAgB,GAAQx1N,WAAWk2Q,aACpDt2Q,YAAYv9B,KAAKmzP,gBAAgB,GAAQx1N,WAAWznB,WAE7D,iBACIlW,KAAKkiR,WAAWhlP,SAASl9B,KAAKmzP,gBAAgB,GAAQx1N,WAAWk2Q,aAErE,iBACI7zS,KAAKkiR,WAAW3kP,YAAYv9B,KAAKmzP,gBAAgB,GAAQx1N,WAAWk2Q,aAExE,eACI7zS,KAAKkiR,WACA9lP,WAAW,SACXc,SAASl9B,KAAKmzP,gBAAgB,GAAQx1N,WAAWznB,WAE1D,kBACIlW,KAAK8xB,UAAYhvB,SAASiC,cAAc,OACxC/E,KAAKkiR,WAAaliR,KAAKuqC,EAAEvqC,KAAK8xB,WAC9B9xB,KAAKkiR,WAAWhlP,SAASl9B,KAAKmzP,gBAAgB,GAAQx1N,WAAW77B,OAC7D9B,KAAKL,QAAQyR,WACbpR,KAAKkiR,WAAWhlP,SAASl9B,KAAKL,QAAQyR,WAE1CpR,KAAKgzS,oBAAsBhzS,KAAKuqC,EAAE,UAAUrN,SAASl9B,KAAKmzP,gBAAgB,GAAQx1N,WAAW2kH,QAC7FtiJ,KAAK8zS,kBAAoB9zS,KAAKuqC,EAAE,UAAUrN,SAASl9B,KAAKmzP,gBAAgB,GAAQx1N,WAAW3hB,UAC3Fhc,KAAKgzS,oBAAoBjjR,OAAO/vB,KAAK8zS,mBACrC9zS,KAAKgzS,oBAAoB//R,KAAK,wBAAyBjT,KAAKivB,WAAWttB,QACvE3B,KAAKkiR,WAAWlyP,QAAQhwB,KAAKgzS,qBAC7BhzS,KAAK48R,iBAAmB58R,KAAKgzS,oBAEjC,wBAAwB7qQ,IAChBA,EAAOkrB,IAAMlrB,EAAOmrB,KACpBtzD,KAAKgzS,oBAAoBxuR,IAAI,CACzB+R,KAAM,KAAK4R,EAAOkrB,GAClBpiD,IAAK,KAAKk3B,EAAOmrB,KAI7B,kBACI,MAAMM,EAAS,CAAErhB,EAAGgM,IAAU/L,EAAG+L,KAC3B0mD,EAAS,CAAE1yD,EAAG,EAAGC,EAAG,GACZxyC,KAAKivB,WACdnpB,UACA0L,OAAQqgO,GAAS7xO,KAAK4zS,oBAAoB/hE,IACzC1mM,QAAS0mM,IACX,MAAMhlN,EAAO7sB,KAAKurN,MAAM39F,SAASihJ,eAAeh9B,GAChD,GAAIhlN,EAAM,CACN,MAAM0uC,EAAO1uC,EAAK+vG,QAAQ,CACtB83H,gBAAiB10P,KAAKL,QAAQ+0P,kBAElC9gM,EAAOrhB,EAAIzqC,KAAKkzC,IAAI4Y,EAAOrhB,EAAGgpB,EAAKhpB,GACnCqhB,EAAOphB,EAAI1qC,KAAKkzC,IAAI4Y,EAAOphB,EAAG+oB,EAAK/oB,GACnCyyD,EAAO1yD,EAAIzqC,KAAKitB,IAAIkwE,EAAO1yD,EAAGgpB,EAAKhpB,EAAIgpB,EAAKlqC,OAC5C4zE,EAAOzyD,EAAI1qC,KAAKitB,IAAIkwE,EAAOzyD,EAAG+oB,EAAK/oB,EAAI+oB,EAAK9nC,WAGpDzzB,KAAKgzS,oBACAxuR,IAAI,CACLgO,SAAU,WACVyrK,cAAe,OACf1nK,KAAMq9B,EAAOrhB,EACbthC,IAAK2iD,EAAOphB,EACZnhB,MAAO4zE,EAAO1yD,EAAIqhB,EAAOrhB,EACzB9e,OAAQwxE,EAAOzyD,EAAIohB,EAAOphB,IAEzBv/B,KAAK,wBAAyBjT,KAAKivB,WAAWttB,QACnD,MAAMoyS,EAAa/zS,KAAKL,QAAQqc,QAChC,GAAI+3R,EACA,GAA0B,mBAAfA,EAA2B,CAClC,MAAM/3R,EAAU,EAAY5e,KAAK22S,EAAY/zS,KAAKurN,MAAOvrN,KAAMA,KAAK8zS,kBAAkB,IAClF93R,GACAhc,KAAK8zS,kBAAkBzkR,KAAKrT,QAIhChc,KAAK8zS,kBAAkBzkR,KAAK0kR,GAGhC/zS,KAAKivB,WAAWttB,OAAS,IAAM3B,KAAK8xB,UAAUzsB,WAC9CrF,KAAKkiR,WAAW5xP,SAAStwB,KAAKurN,MAAMz5L,WAE/B9xB,KAAKivB,WAAWttB,QAAU,GAAK3B,KAAK8xB,UAAUzsB,YACnDrF,KAAK8xB,UAAUzsB,WAAWC,YAAYtF,KAAK8xB,WAGnD,oBAAoB+/M,GAChB,OAASA,EAAKhlD,WAAkD,IAAtC7sL,KAAKL,QAAQ2xS,sBAClCz/D,EAAKptK,WAAkD,IAAtCzkE,KAAKL,QAAQq0S,qBAEvC,mBAAmBniE,GAEf,GADA7xO,KAAKi0S,yBAAyBpiE,GAC1B7xO,KAAK4zS,oBAAoB/hE,GAAO,CAChC,MAAMhlN,EAAO7sB,KAAKurN,MAAM39F,SAASihJ,eAAeh9B,GAChD,GAAIhlN,EAAM,CACN,MAAM0uC,EAAO1uC,EAAK+vG,QAAQ,CACtB83H,gBAAiB10P,KAAKL,QAAQ+0P,kBAE5BtjP,EAAYpR,KAAK8wS,aACvB9wS,KAAKuqC,EAAE,UACFrN,SAAS9rB,GACT8rB,SAAS,GAAG9rB,KAAaygO,EAAKhlD,SAAW,OAAS,UAClD55K,KAAK,eAAgB4+N,EAAKrjO,IAC1BgW,IAAI,CACLgO,SAAU,WACV+D,KAAMglC,EAAKhpB,EACXthC,IAAKsqD,EAAK/oB,EACVnhB,MAAOkqC,EAAKlqC,MACZoC,OAAQ8nC,EAAK9nC,OACbwqK,cAAej+L,KAAKL,QAAQs+L,eAAiB,SAE5C3tK,SAAStwB,KAAK8xB,WACnB9xB,KAAKk0S,eACLl0S,KAAK4wS,UAAY,IAI7B,qBAAqBjxS,EAAU,IACvBK,KAAKivB,WAAWttB,OAAS,IACzB3B,KAAK8yS,cAAe,EACpB9yS,KAAKurN,MAAM39F,SAASqmI,kBAAkBj0P,KAAM,EAAG,EAAGL,IAG1D,gBAYI,OAXIK,KAAK4wS,WACL5wS,KAAK0lB,OACL1lB,KAAK+yS,OAAO1sS,KAAK,CAAC2W,EAAGxW,KACjB,MAAMq2Q,EAAS78Q,KAAKuqC,EAAE/jC,GAAMoX,SAAS3K,KAAK,gBACpC4+N,EAAO7xO,KAAKivB,WAAWnxB,IAAI++Q,GAC7BhrC,GACA7xO,KAAKm0S,mBAAmBtiE,KAGhC7xO,KAAK6xS,mBAEF,EAEX,oBAAoBrrS,GAChB,MAAMgI,EAAKhI,EAAKvB,aAAa,gBAC7B,GAAIuJ,EAAI,CACJ,MAAMqjO,EAAO7xO,KAAKivB,WAAWnxB,IAAI0Q,GACjC,GAAIqjO,EACA,OAAO7xO,KAAKurN,MAAM39F,SAASihJ,eAAeh9B,GAGlD,OAAO,KAEX,eAAc,KAAEA,IACZ7xO,KAAKo0S,oBAAoBviE,GACzB7xO,KAAK6xS,kBAET,WAAU,SAAE5xP,EAAQ,QAAEjb,IAClBhlC,KAAKq0S,yBAAyBp0P,GAC9Bjb,EAAQmG,QAAS0mM,IACb7xO,KAAKs0S,sBAAsBziE,GAC3B7xO,KAAKm0S,mBAAmBtiE,KAE5B7xO,KAAK6xS,kBAET,aAAY,KAAEhgE,IAIV7xO,KAAKs0S,sBAAsBziE,GAC3B7xO,KAAKm0S,mBAAmBtiE,GACxB7xO,KAAK6xS,kBAET,sBAAsBhgE,GAClBA,EAAKppN,IAAI,UAAWzoB,KAAKi1R,cAAej1R,MACxC6xO,EAAKzpN,GAAG,UAAWpoB,KAAKi1R,cAAej1R,MAE3C,qBAAoB,MAAEo0K,EAAK,QAAEv8E,EAAO,QAAEl4F,IAClCy0K,EAAMjpI,QAAS0mM,IACX7xO,KAAKkpB,QAAQ,gBAAiB,CAAE2oN,OAAMlyO,YACtCK,KAAKurN,MAAMriM,QAAQ,gBAAiB,CAAE2oN,OAAMlyO,YACxCkyO,EAAKhlD,UACL7sL,KAAKkpB,QAAQ,gBAAiB,CAAE2oN,OAAMlyO,UAASgF,KAAMktO,IACrD7xO,KAAKurN,MAAMriM,QAAQ,gBAAiB,CAAE2oN,OAAMlyO,UAASgF,KAAMktO,KAEtDA,EAAKptK,WACVzkE,KAAKkpB,QAAQ,gBAAiB,CAAE2oN,OAAMlyO,UAASi6D,KAAMi4K,IACrD7xO,KAAKurN,MAAMriM,QAAQ,gBAAiB,CAAE2oN,OAAMlyO,UAASi6D,KAAMi4K,OAGnEh6I,EAAQ1sD,QAAS0mM,IACb7xO,KAAKkpB,QAAQ,kBAAmB,CAAE2oN,OAAMlyO,YACxCK,KAAKurN,MAAMriM,QAAQ,kBAAmB,CAAE2oN,OAAMlyO,YAC1CkyO,EAAKhlD,UACL7sL,KAAKkpB,QAAQ,kBAAmB,CAAE2oN,OAAMlyO,UAASgF,KAAMktO,IACvD7xO,KAAKurN,MAAMriM,QAAQ,kBAAmB,CAAE2oN,OAAMlyO,UAASgF,KAAMktO,KAExDA,EAAKptK,WACVzkE,KAAKkpB,QAAQ,kBAAmB,CAAE2oN,OAAMlyO,UAASi6D,KAAMi4K,IACvD7xO,KAAKurN,MAAMriM,QAAQ,kBAAmB,CAAE2oN,OAAMlyO,UAASi6D,KAAMi4K,OAGrE,MAAM18N,EAAO,CACTi/J,QACAv8E,UACAl4F,UACAuW,SAAUlW,KAAKmyQ,OAEnBnyQ,KAAKkpB,QAAQ,oBAAqB/T,GAClCnV,KAAKurN,MAAMriM,QAAQ,oBAAqB/T,GAG5C,sBACI,MAAMg9P,EAAQnyQ,KAAKivB,WAAWnpB,UAC9B9F,KAAKktP,QACLltP,KAAKurN,MAAMjyI,MAAMo7M,YAAYviB,EAAO,CAAE7qP,UAAWtnB,KAAKm4E,MAE1D,aAAY,EAAEtqE,IACV,MAAMskQ,EAAQnyQ,KAAKivB,WAAWnpB,UACxB2tD,EAAS,GAAKuiN,aAAa7D,GAAOz3M,YAClCu3O,EAASjyS,KAAKurN,MAAM11J,WAAWhoD,EAAEof,QAASpf,EAAEqf,SAC5Cm/O,EAAS8F,EAAM3mO,OAAO,CAAC8B,EAAMukM,KAC/BvkM,EAAKukM,EAAKrjO,IAAM0mD,GAAM1D,UAAUqgL,EAAK6a,YAC9Bp/M,GACR,IACHttC,KAAKwrP,aAAa39O,EAAG,CACjB4lD,SACA44M,SACA/qQ,MAAO2wS,EAAO/9O,MAAMT,KAG5B,UAAS,EAAE5lD,IACP,MAAM0U,EAAOviB,KAAK0rP,aAAa79O,GACzB+jM,EAAO5xM,KAAKurN,MAAM5rN,QAAQ0gS,SAASzuF,KACnCvwF,EAA2B,mBAATuwF,EAClB,EAAYx0M,KAAKw0M,EAAM5xM,KAAKurN,MAAO,MACnC3Z,EACAqgG,EAASjyS,KAAKurN,MAAM11J,WAAWhoD,EAAEof,QAASpf,EAAEqf,SAC5CqI,EAAQhT,EAAKjhB,MAAQ2wS,EAAO/9O,MAAM3xC,EAAKkxC,QACxClxC,EAAKgyR,UACNhyR,EAAKgyR,SAAU,GAEfzsS,KAAKinC,IAAIxZ,GAAS,OAClBv1B,KAAKivB,WAAWnpB,UAAUqlC,QAASxmC,IAC/B,MAAM+vD,EAAQ,GAAKmB,WAAWtzC,EAAK8pP,OAAO1nQ,EAAK6J,IAAM+mB,EAAO8rF,GAAY,IACxE18G,EAAK4uD,OAAOmB,EAAO,CACf6nI,UAAU,EACV9oI,OAAQlxC,EAAKkxC,OACbnsC,UAAWtnB,KAAKm4E,QAGxBn4E,KAAKqxS,wBAGb,YAAW,EAAExjS,IACT,MAAM0U,EAAOviB,KAAK0rP,aAAa79O,GAC3B0U,EAAKgyR,UACLhyR,EAAKgyR,SAAU,EACfv0S,KAAKivB,WAAWnpB,UAAUqlC,QAASxmC,IAC/B,GAAO,eAAgBkJ,EAAG7N,KAAKurN,MAAMsjD,eAAelqQ,OAIhE,aAAY,EAAEkJ,IACV,MAAMwzG,EAAWrhH,KAAKurN,MAAMmoE,cACtBvhB,EAAQnyQ,KAAKivB,WAAWnpB,UACxBy1D,EAAO,GAAKy6M,aAAa7D,GACzBqiC,EAASriC,EAAM5rQ,IAAKsrO,GAASA,EAAKj1G,WAClCrrG,EAAWijR,EAAOhpQ,OAAO,CAACja,EAAUgqC,IAC/BA,EAAKlqC,MAAQE,EAAWgqC,EAAKlqC,MAAQE,EAC7CgtB,KACGokJ,EAAY6xG,EAAOhpQ,OAAO,CAACm3J,EAAWpnI,IACjCA,EAAK9nC,OAASkvK,EAAYpnI,EAAK9nC,OAASkvK,EAChDpkJ,KACHv+C,KAAKwrP,aAAa39O,EAAG,CACjB0tD,OACA42M,MAAOnyQ,KAAKurN,MAAMjyI,MAAMy9M,YAAY5kB,GACpC7gP,SAAW+vF,EAAW9lD,EAAKlqC,MAASE,EACpCmxK,UAAYrhF,EAAW9lD,EAAK9nC,OAAUkvK,IAG9C,UAAS,EAAE90L,EAAC,GAAEwlD,EAAE,GAAEC,IACd,MAAM/wC,EAAOviB,KAAK2rP,UAAU99O,GACtB0tD,EAAOh5C,EAAKg5C,KACZlqC,EAAQkqC,EAAKlqC,MACboC,EAAS8nC,EAAK9nC,OACdwwQ,EAAWn8R,KAAKitB,IAAI1D,EAAQgiC,EAAI9wC,EAAK+O,UACrC4yQ,EAAYp8R,KAAKitB,IAAItB,EAAS6/B,EAAI/wC,EAAKmgL,WACxCngL,EAAKkyR,UACNlyR,EAAKkyR,SAAU,IAEf3sS,KAAKinC,IAAI1d,EAAQ4yQ,GAAY,MAC7Bn8R,KAAKinC,IAAItb,EAASywQ,GAAa,QAC/BlkS,KAAKurN,MAAMjyI,MAAMi+M,YAAY0M,EAAUC,EAAW3hR,EAAK4vP,MAAO,CAC1D7qP,UAAWtnB,KAAKm4E,MAEpB5c,EAAKlqC,MAAQ4yQ,EACb1oO,EAAK9nC,OAASywQ,EACdlkS,KAAKqxS,wBAGb,YAAW,EAAExjS,IACT,MAAM0U,EAAOviB,KAAK2rP,UAAU99O,GACxB0U,EAAKkyR,UACLlyR,EAAKkyR,SAAU,EACfz0S,KAAKivB,WAAWnpB,UAAUqlC,QAASxmC,IAC/B,GAAO,eAAgBkJ,EAAG7N,KAAKurN,MAAMsjD,eAAelqQ,OAKhE,UACI3E,KAAKktP,QACLltP,KAAK4d,UAGb,GAAW,CACP,GAAKqyG,WACN,GAAUpxH,UAAW,UAAW,MACnC,EAAUowL,YAAY,GAAW,IAIjC,SAAW2pD,GACP,MAAM9hO,EAAO,mBACb8hO,EAAQj7M,WAAa,CACjB77B,KAAMgV,EACNwrI,MAAUxrI,EAAH,SACPoe,IAAQpe,EAAH,OACLkF,QAAYlF,EAAH,WACT+8R,WAAe/8R,EAAH,cACZZ,SAAaY,EAAH,aAEd8hO,EAAQma,eAAiB,CACrB3iG,UAAW,kBACXE,UAAW,kBACXD,QAAS,YACTE,SAAU,YACVgrG,YAAa,aAEjB3iB,EAAQV,eAAiB,CACrBm7C,SAAS,EACT6e,WAAW,EACXtxH,QAAQ,EACR8zE,iBAAiB,EACjB14O,QAAQsL,GACG,EAAUylC,SAAS,yDAAnB,CAA6E,CAAEprD,OAAQ2lB,EAAU3lB,SAE5Gm3P,QAAS,CACL,CACIt7P,KAAM,SACNg1B,SAAU,KACVlJ,OAAQ,CACJknI,UAAW,wBAGnB,CACIhzJ,KAAM,SACNg1B,SAAU,KACVlJ,OAAQ,CACJknI,UAAW,cACXJ,UAAW,WACXC,QAAS,eAGjB,CACI7yJ,KAAM,SACNg1B,SAAU,KACVlJ,OAAQ,CACJknI,UAAW,cACXJ,UAAW,WACXC,QAAS,iBAQzBuoF,EAAQ+3D,gBAHR,SAAyB9+D,GACrB,OAAOA,EAAKq0B,eAAevkQ,QAtDnC,CAyDG,KAAY,GAAU,KC13BlB,MAAM,WAAkB,GAC3B,WACI,OAAO3B,KAAK6xO,KAEhB,yBACI,OAAO7xO,KAAKmzP,gBAAgB,oBAEhC,sBACI,OAAUnzP,KAAK8hS,mBAAR,UAEX,sBACI,OAAU9hS,KAAK8hS,mBAAR,UAEX,KAAKniS,GACDK,KAAKL,QAAUhC,OAAO+rD,OAAO/rD,OAAO+rD,OAAO,GAAI,GAAQwuL,gBAAiBv4O,GACxEK,KAAKb,SACLa,KAAKk/R,iBAET,iBACIl/R,KAAKqzP,eAAe,CAChB,CAAC,cAAcrzP,KAAK00S,iBAAoB,gBACxC,CAAC,eAAe10S,KAAK00S,iBAAoB,gBACzC,CAAC,cAAc10S,KAAK20S,iBAAoB,gBACxC,CAAC,eAAe30S,KAAK20S,iBAAoB,kBAE7C30S,KAAKs5E,MAAMlxD,GAAG,IAAKpoB,KAAKyrD,OAAQzrD,MAChCA,KAAKurN,MAAMnjM,GAAG,QAASpoB,KAAKyrD,OAAQzrD,MACpCA,KAAKurN,MAAMnjM,GAAG,YAAapoB,KAAKyrD,OAAQzrD,MACxCA,KAAK2E,KAAKyjB,GAAG,UAAWpoB,KAAK4d,OAAQ5d,MACrCA,KAAKs5E,MAAMlxD,GAAG,UAAWpoB,KAAK4d,OAAQ5d,MACtCA,KAAK6sB,KAAKzE,GAAG,sBAAuBpoB,KAAKq/R,gBAAiBr/R,MAC1DA,KAAK6sB,KAAKzE,GAAG,oBAAqBpoB,KAAKs/R,cAAet/R,MACtD2+E,MAAMugN,iBAEV,gBACIl/R,KAAKgrP,mBACLhrP,KAAKs5E,MAAM7wD,IAAI,IAAKzoB,KAAKyrD,OAAQzrD,MACjCA,KAAKurN,MAAM9iM,IAAI,QAASzoB,KAAKyrD,OAAQzrD,MACrCA,KAAKurN,MAAM9iM,IAAI,YAAazoB,KAAKyrD,OAAQzrD,MACzCA,KAAK2E,KAAK8jB,IAAI,UAAWzoB,KAAK4d,OAAQ5d,MACtCA,KAAKs5E,MAAM7wD,IAAI,UAAWzoB,KAAK4d,OAAQ5d,MACvCA,KAAK6sB,KAAKpE,IAAI,sBAAuBzoB,KAAKq/R,gBAAiBr/R,MAC3DA,KAAK6sB,KAAKpE,IAAI,oBAAqBzoB,KAAKs/R,cAAet/R,MACvD2+E,MAAMsgN,gBAEV,gBACIj/R,KAAK8xB,UAAYhvB,SAASiC,cAAc,OACxC/E,KAAKkiR,WAAaliR,KAAKuqC,EAAEvqC,KAAK8xB,WAC9B,MAAM8iR,EAAQ50S,KAAKuqC,EAAE,UAAU/nB,KAAK,aAAa,GAC3CqyR,EAAUD,EAAMntS,QAAQy1B,SAASl9B,KAAK20S,iBACtCG,EAAW,GAAQC,UAAUxuS,IAAK8wB,GAC7Bu9Q,EACFntS,QACAy1B,SAASl9B,KAAK00S,iBACdzhS,KAAK,gBAAiBokB,IAE/Br3B,KAAK6d,QACL7d,KAAKkiR,WAAWnyP,OAAO+kR,EAAUD,GAErC,SAYI,OAXA70S,KAAKm5P,gBACLn5P,KAAK6sB,KAAKqQ,SAAS,GAAQ83Q,UAC3Bh1S,KAAKkiR,WACAhlP,SAASl9B,KAAK8hS,oBACdtkQ,YAAY,iBAAkBx9B,KAAKL,QAAQmvO,sBAAwB9uO,KAAKL,QAAQs1S,oBAChFz3Q,YAAY,aAAcx9B,KAAKL,QAAQu1S,WACvC13Q,YAAY,aAAcx9B,KAAKL,QAAQw1S,WACxCn1S,KAAKL,QAAQyR,WACbpR,KAAKkiR,WAAWhlP,SAASl9B,KAAKL,QAAQyR,WAE1CpR,KAAKurN,MAAMz5L,UAAU1sB,YAAYpF,KAAK8xB,WAC/B9xB,KAAKyrD,SAEhB,SACI,MAAMmzE,EAAM5+H,KAAKurN,MAAMn0J,SACjBmE,EAAOv7D,KAAK2E,KAAKi4H,UACvBrhE,EAAKhpB,GAAKqsF,EAAI5zH,EACduwD,EAAKhpB,GAAKqsF,EAAI/wH,EACd0tD,EAAK/oB,GAAKosF,EAAIrhI,EACdg+D,EAAK/oB,GAAKosF,EAAI5pB,EACdz5C,EAAKlqC,OAASutG,EAAI5zH,EAClBuwD,EAAK9nC,QAAUmrG,EAAIrhI,EACnB,MAAMm3D,EAAQQ,GAAM1D,UAAUxxD,KAAK2E,KAAK+nP,YAClCl5M,EAAsB,IAAVkhB,EAAc,UAAUA,QAAc,GASxD,OARA10D,KAAKkiR,WAAW19P,IAAI,CAChBgvB,YACAniB,MAAOkqC,EAAKlqC,MACZoC,OAAQ8nC,EAAK9nC,OACb8C,KAAMglC,EAAKhpB,EACXthC,IAAKsqD,EAAK/oB,IAEdxyC,KAAKo1S,0BACEp1S,KAEX,SAEI,OADAA,KAAK6sB,KAAK0Q,YAAY,GAAQy3Q,UACvBr2N,MAAM/gE,SAEjB,kBACI5d,KAAKq1S,cAET,gBACIr1S,KAAKs1S,aAET,0BAKI,MAAM5gP,EAAQQ,GAAM1D,UAAUxxD,KAAK2E,KAAK+nP,YAClCn9O,EAAQzH,KAAKq4C,MAAMuU,GAAS,GAAQ6gP,WAAW5zS,OAAS,MAC9D,GAAI4N,IAAUvP,KAAKw1S,UAAW,CAE1B,MAAMlsC,EAAa,GAAQisC,WAAWjyS,MAAMiM,GAAOvO,OAAO,GAAQu0S,WAAWjyS,MAAM,EAAGiM,IAChF6B,EAAa1D,GAAQ,GAAG1N,KAAK8hS,6BAA6Bp0R,IAChE1N,KAAKkiR,WACAxwQ,KAAK,IAAI1R,KAAK00S,iBACdn3Q,YAAY,GAAQg4Q,WAAWhvS,IAAKmH,GAAQ0D,EAAU1D,IAAMsB,KAAK,MACjE3I,KAAK,CAAC3E,EAAO8E,KACdxG,KAAKuqC,EAAE/jC,GAAM02B,SAAS9rB,EAAUk4P,EAAW5nQ,OAE/C1B,KAAKw1S,UAAYjmS,GAGzB,iBAAiB7B,GACb,MAAMgnD,EAAQQ,GAAM1D,UAAUxxD,KAAK2E,KAAK+nP,YACxC,IAAIhrP,EAAQ,GAAQqzS,UAAUtxS,QAAQiK,GAGtC,OAFAhM,GAASoG,KAAKq4C,MAAMuU,GAAS,GAAQqgP,UAAUpzS,OAAS,MACxDD,GAAS,GAAQqzS,UAAUpzS,OACpB,GAAQozS,UAAUrzS,GAE7B,uBAAuBgM,GACnB,MAAQ,CACJuD,IAAK,WACLuqD,OAAQ,eACRjlC,KAAM,cACNlE,MAAO,aACT3kB,IAAQA,EAEd,cAAcy5B,GACVA,EAAIpe,kBACJ/oB,KAAKs5E,MAAM88K,WAAW,SAAU,CAAEj+K,IAAKn4E,KAAKm4E,MAC5C,MAAMzqE,EAAM1N,KAAKuqC,EAAEpD,EAAIz/B,QAAQuL,KAAK,iBAC9B4Z,EAAO7sB,KAAKurN,MAAMsjD,eAAe7uQ,KAAK2E,MAC5C3E,KAAKy1S,gBAAgBtuQ,EAAKz5B,GAC1B1N,KAAK01S,YAAYvuQ,GACjB,GAAO,wBAAyBA,EAAKta,GAEzC,gBAAgBsa,EAAKq8P,GACjB,MAAMZ,EAAgB5iS,KAAK21S,iBAAiBnS,GAC5C,IAAIzkM,EAAK,EACLC,EAAK,EACTwkM,EAAkBr6R,MAAM,KAAKgiC,QAAS41N,IAClChiK,EAAK,CAAExoE,MAAO,EAAGlE,MAAO,GAAI0uO,IAAchiK,EAC1CC,EAAK,CAAE/tF,KAAM,EAAGuqD,OAAQ,GAAIulM,IAAc/hK,IAE9C,MAAM+hK,EAAY/gQ,KAAK41S,uBAAuBpS,GACxC/9R,EAAW,CACb,YAAa,aACb,WAAY,cACZ,cAAe,WACf,eAAgB,WAClBs7P,GACIrsM,EAAQQ,GAAM1D,UAAUxxD,KAAK2E,KAAK+nP,YACxC1sP,KAAKwrP,aAAarkN,EAAK,CACnB1hC,WACAs7P,YACA6hC,gBACAY,oBACA9uO,QACAmhP,QAAS92M,EACT+2M,QAAS92M,EACT59C,OAAQ,aAGhB,cAAcja,GACVA,EAAIpe,kBACJ/oB,KAAKs5E,MAAM88K,WAAW,SAAU,CAAEj+K,IAAKn4E,KAAKm4E,MAC5C,MAAMtrD,EAAO7sB,KAAKurN,MAAMsjD,eAAe7uQ,KAAK2E,MACtC8uD,EAASzzD,KAAK2E,KAAKi4H,UAAUliE,YAC7B7sD,EAAI7N,KAAKkuE,eAAe/mC,GACxB8qQ,EAASjyS,KAAKurN,MAAM11J,WAAWhoD,EAAEof,QAASpf,EAAEqf,SAClDltB,KAAKwrP,aAAarkN,EAAK,CACnBssB,SACArS,OAAQ,WACRsT,MAAOQ,GAAM1D,UAAUxxD,KAAK2E,KAAK+nP,YACjCprP,MAAO,GAAM/C,OAAO0zS,GAAQ/9O,MAAMT,KAEtCzzD,KAAK01S,YAAYvuQ,GACjB,GAAO,wBAAyBA,EAAKta,GAEzC,YAAYsa,GACR,MAAMta,EAAO7sB,KAAKurN,MAAMsjD,eAAe7uQ,KAAK2E,MAC5C,IAAI4d,EAAOviB,KAAK0rP,aAAavkN,GAC7B,GAAI5kB,EAAK6+B,OAAQ,CACb,MAAMvzC,EAAI7N,KAAKkuE,eAAe/mC,GAC9B,IAAIla,EAAUpf,EAAEof,QACZC,EAAUrf,EAAEqf,QAChB,MAAM+mQ,EAAWj0R,KAAKurN,MAAM0oE,SAASb,OAC/Bra,EAAW/4Q,KAAKL,QAAQo2S,mBAC9B,IAAiB,IAAbh9B,GAAyC,iBAAbA,EAAuB,CACnD,MAAMvnD,GAAsB,IAAbunD,EAAoB,EAAIA,EACjCvuP,EAAMypQ,EAAWnsR,KAAKitB,IAAIy8L,EAAQ,GAAKA,EACvC3oL,EAAO7oC,KAAKurN,MAAMz5L,UAAUuE,wBAClCpJ,EAAU,EAAUu8B,MAAMv8B,EAAS4b,EAAKtS,KAAO/L,EAAKqe,EAAKxW,MAAQ7H,GACjE0C,EAAU,EAAUs8B,MAAMt8B,EAAS2b,EAAK53B,IAAMuZ,EAAKqe,EAAK2yB,OAAShxC,QAE5DxqB,KAAKL,QAAQq2S,sBAAwB/hB,GAC1CA,EAASC,WAAWjnQ,EAASC,GAEjC,MAAMmK,EAAMr3B,KAAKurN,MAAM11J,WAAW5oC,EAASC,GACrCm0F,EAAWrhH,KAAKurN,MAAMmoE,cACtB/uR,EAAO3E,KAAK2E,KACZhF,EAAUK,KAAKL,QACrB,GAAoB,aAAhB4iB,EAAK6+B,OAAuB,CAC5B7+B,EAAOA,EACFA,EAAKkyR,UACF5nR,IACAA,EAAKqQ,SAAS,iBACd,GAAO,cAAeiK,EAAKta,IAE/BtK,EAAKkyR,SAAU,GAEnB,MAAMwB,EAActxS,EAAKi4H,UACnBs5K,EAAgB,GAAM33S,OAAO84B,GAC9Bk8B,OAAOhxC,EAAKmyC,MAAOuhP,EAAYv7O,aAC/BzqD,KAAKgmS,EAAY1zR,EAAK9c,WAC3B,IAAI4rB,EAAQ9O,EAAKszR,QACXK,EAAc3jQ,EAAIhwB,EAAKszR,QACvBI,EAAY5kR,MACdoC,EAASlR,EAAKuzR,QACZI,EAAc1jQ,EAAIjwB,EAAKuzR,QACvBG,EAAYxiR,OAClB,MAAM0iR,EAAW9kR,EACX+kR,EAAY3iR,EAOlB,GANApC,EAAQ,GAAKwkC,WAAWxkC,EAAOgwF,GAC/B5tF,EAAS,GAAKoiC,WAAWpiC,EAAQ4tF,GACjChwF,EAAQvpB,KAAKitB,IAAI1D,EAAO1xB,EAAQ2xB,UAAY+vF,GAC5C5tF,EAAS3rB,KAAKitB,IAAItB,EAAQ9zB,EAAQ+iM,WAAarhF,GAC/ChwF,EAAQvpB,KAAKkzC,IAAI3pB,EAAO1xB,EAAQ4xB,UAAYgtB,KAC5C9qB,EAAS3rB,KAAKkzC,IAAIvnB,EAAQ9zB,EAAQgjM,WAAapkJ,KAC3C5+C,EAAQmvO,oBAAqB,CAC7B,MAAMunE,EAAkBJ,EAAY5kR,MAAQoC,EAAUwiR,EAAYxiR,OAC5D6iR,EAAmBL,EAAYxiR,OAASpC,EAAS4kR,EAAY5kR,MAC/DA,EAAQglR,EACR5iR,EAAS6iR,EAGTjlR,EAAQglR,EAGhB,MAAM7S,EAAoBjhR,EAAKihR,kBAC/B,GAAI7jS,EAAQ42S,eACPJ,IAAa9kR,GAAS+kR,IAAc3iR,GAAS,CAC9C,IAAI+iR,EACsB,SAAtBhT,EACI2S,IAAa9kR,IACbmlR,EAAW,SAGY,UAAtBhT,EACD2S,IAAa9kR,IACbmlR,EAAW,QAGY,QAAtBhT,EACD4S,IAAc3iR,IACd+iR,EAAW,UAGY,WAAtBhT,EACD4S,IAAc3iR,IACd+iR,EAAW,OAGY,aAAtBhT,EACD2S,IAAa9kR,GAAS+kR,IAAc3iR,EACpC+iR,EAAW,eAENL,IAAa9kR,EAClBmlR,EAAW,YAENJ,IAAc3iR,IACnB+iR,EAAW,eAGY,cAAtBhT,EACD2S,IAAa9kR,GAAS+kR,IAAc3iR,EACpC+iR,EAAW,cAENL,IAAa9kR,EAClBmlR,EAAW,WAENJ,IAAc3iR,IACnB+iR,EAAW,gBAGY,gBAAtBhT,EACD2S,IAAa9kR,GAAS+kR,IAAc3iR,EACpC+iR,EAAW,YAENL,IAAa9kR,EAClBmlR,EAAW,eAENJ,IAAc3iR,IACnB+iR,EAAW,YAGY,iBAAtBhT,IACD2S,IAAa9kR,GAAS+kR,IAAc3iR,EACpC+iR,EAAW,WAENL,IAAa9kR,EAClBmlR,EAAW,cAENJ,IAAc3iR,IACnB+iR,EAAW,cAGnB,MAAMC,EAAcD,EACpBx2S,KAAKs1S,aACL,MAAMhY,EAAUt9R,KAAKkiR,WAAWxwQ,KAAK,IAAI1R,KAAK00S,kCAAkC+B,OAChFz2S,KAAKq1S,YAAY/X,EAAQ,IACzBt9R,KAAKy1S,gBAAgBtuQ,EAAKsvQ,GAC1Bz2S,KAAK++P,YAAY53N,GAErB,GAAI8uQ,EAAY5kR,QAAUA,GAAS4kR,EAAYxiR,SAAWA,EAAQ,CAC9D,MAAM05Q,EAAgB,CAClBx0C,IAAI,EACJoI,UAAWx+O,EAAKw+O,UAChByiC,kBAAmBjhR,EAAKihR,kBACxBZ,cAAergR,EAAKqgR,cACpBtxQ,SAAU3xB,EAAQ2xB,SAClBoxK,UAAW/iM,EAAQ+iM,UACnBnxK,SAAU5xB,EAAQ4xB,SAClBoxK,UAAWhjM,EAAQgjM,UACnBmsC,qBAAqD,IAAhCnvO,EAAQmvO,qBAEjCnqO,EAAK8qH,OAAOp+F,EAAOoC,EAAQ05Q,GAC3B,GAAO,gBAAiBhmQ,EAAKta,GAEjC,GAAO,wBAAyBsa,EAAKta,QAEpC,GAAoB,aAAhBtK,EAAK6+B,OAAuB,CACjC7+B,EAAOA,EACFA,EAAKgyR,UACF1nR,IACAA,EAAKqQ,SAAS,iBACd,GAAO,cAAeiK,EAAKta,IAE/BtK,EAAKgyR,SAAU,GAEnB,MAAMt7B,EAAet0Q,EAAK+nP,WACpBx4L,EAAQ3xC,EAAKjhB,MAAQ,GAAM/C,OAAO84B,GAAK68B,MAAM3xC,EAAKkxC,QACxD,IAAI/rD,EAAS6a,EAAKmyC,MAAQR,EACtBv0D,EAAQ+2S,aACRhvS,EAAS,GAAKmuD,WAAWnuD,EAAQ/H,EAAQ+2S,aAEzCz9B,IAAiBvxQ,IACjB/C,EAAK4uD,OAAO7rD,EAAQ,CAAE60L,UAAU,IAChC,GAAO,gBAAiBp1J,EAAKta,IAEjC,GAAO,wBAAyBsa,EAAKta,KAIjD,UAAUsa,GACN,MAAMta,EAAO7sB,KAAKurN,MAAMsjD,eAAe7uQ,KAAK2E,MACtC4d,EAAOviB,KAAK0rP,aAAavkN,GAC3B5kB,EAAK6+B,SACLphD,KAAK22S,WAAWxvQ,GAChBnnC,KAAKs5E,MAAM+8K,UAA0B,aAAhB9zO,EAAK6+B,OAAwB,SAAW,SAAU,CACnE+2B,IAAKn4E,KAAKm4E,MAEM,aAAhB51D,EAAK6+B,OACL,GAAO,sBAAuBja,EAAKta,GAEd,aAAhBtK,EAAK6+B,QACV,GAAO,sBAAuBja,EAAKta,IAI/C,YAAYjD,GAGR,GAFA5pB,KAAK4pB,OAASA,GAAU,KACxB5pB,KAAKkiR,WAAWhlP,SAAYl9B,KAAK8hS,mBAAR,WACrBl4Q,EAAQ,CACR5pB,KAAKuqC,EAAE3gB,GAAQsT,SAAYl9B,KAAK8hS,mBAAR,kBACxB,MAAMzqQ,EAAMzN,EAAO3kB,aAAa,iBAChC,GAAIoyB,EAAK,CACL,MAAM3pB,EAAM,GAAQ6nS,WAAW,GAAQR,UAAUtxS,QAAQ4zB,IACzDr3B,KAAKkiR,WAAWhlP,SAAS,GAAGl9B,KAAK8hS,6BAA6Bp0R,OAI1E,aAEI,GADA1N,KAAKkiR,WAAW3kP,YAAev9B,KAAK8hS,mBAAR,WACxB9hS,KAAK4pB,OAAQ,CACb5pB,KAAKuqC,EAAEvqC,KAAK4pB,QAAQ2T,YAAev9B,KAAK8hS,mBAAR,kBAChC,MAAMzqQ,EAAMr3B,KAAK4pB,OAAO3kB,aAAa,iBACrC,GAAIoyB,EAAK,CACL,MAAM3pB,EAAM,GAAQ6nS,WAAW,GAAQR,UAAUtxS,QAAQ4zB,IACzDr3B,KAAKkiR,WAAW3kP,YAAY,GAAGv9B,KAAK8hS,6BAA6Bp0R,KAErE1N,KAAK4pB,OAAS,MAGtB,YAAYud,GACRnnC,KAAKq1S,YAAYluQ,EAAIz/B,QACrB1H,KAAKurN,MAAM1+L,KAAKm+N,mBAChBhrP,KAAKs7P,uBAAuB,GAAQvI,eAAgB5rN,EAAI5kB,MAE5D,WAAW4kB,GACPnnC,KAAKs1S,aACLt1S,KAAKw7P,2BACLx7P,KAAKurN,MAAM1+L,KAAKwmO,iBAChB,MAAMxmO,EAAO7sB,KAAKurN,MAAMsjD,eAAe7uQ,KAAK2E,MACtC4d,EAAOviB,KAAK0rP,aAAavkN,GAC3Bta,IACAA,EAAK0Q,YAAY,QAAQhb,EAAK6+B,QACV,aAAhB7+B,EAAK6+B,QAAyB7+B,EAAKkyR,QACnC,GAAO,eAAgBttQ,EAAKta,GAEP,aAAhBtK,EAAK6+B,QAAyB7+B,EAAKgyR,SACxC,GAAO,eAAgBptQ,EAAKta,MAM5C,SAAW+rN,GACPA,EAAQo8D,SAAW,uBACnBp8D,EAAQ28D,WAAa,CAAC,KAAM,IAAK,KAAM,IAAK,KAAM,IAAK,KAAM,KAC7D38D,EAAQm8D,UAAY,CAChB,WACA,MACA,YACA,QACA,eACA,SACA,cACA,QAEJn8D,EAAQma,eAAiB,CACrB3iG,UAAW,cACXE,UAAW,cACXD,QAAS,YACTE,SAAU,aAEdqoF,EAAQV,eAAiB,CACrB5mN,SAAU,EACVoxK,UAAW,EACXnxK,SAAUgtB,IACVokJ,UAAWpkJ,IACXm4P,WAAY,GACZvB,WAAW,EACXrmE,qBAAqB,EACrBmmE,oBAAoB,EACpBc,oBAAoB,EACpBC,sBAAsB,EACtBO,cAAc,GA9BtB,CAgCG,KAAY,GAAU,KCldzB,IAcW,GAdP,GAAkC,SAAUv3S,EAAG6O,GAC/C,IAAI1P,EAAI,GACR,IAAK,IAAIY,KAAKC,EAAOrB,OAAOkB,UAAUC,eAAe1B,KAAK4B,EAAGD,IAAM8O,EAAEpK,QAAQ1E,GAAK,IAC9EZ,EAAEY,GAAKC,EAAED,IACb,GAAS,MAALC,GAAqD,mBAAjCrB,OAAOsxG,sBACtB,KAAIhyG,EAAI,EAAb,IAAgB8B,EAAIpB,OAAOsxG,sBAAsBjwG,GAAI/B,EAAI8B,EAAE4C,OAAQ1E,IAC3D4Q,EAAEpK,QAAQ1E,EAAE9B,IAAM,GAAKU,OAAOkB,UAAUwxD,qBAAqBjzD,KAAK4B,EAAGD,EAAE9B,MACvEkB,EAAEY,EAAE9B,IAAM+B,EAAED,EAAE9B,KAE1B,OAAOkB,IAgBR,KAAY,GAAU,KADby4S,iBARR,SAA0BrrF,EAAOviN,EAAKrJ,GAClC,MAAMwB,EAAS,GAKf,OAJAxD,OAAOyR,KAAKzP,GAAW,IAAIwrC,QAAS3sC,IAChC,MAAMqG,EAAMlF,EAAQnB,GACpB2C,EAAO3C,GAAsB,mBAARqG,EAAqBA,EAAIzH,KAAKmuN,EAAOviN,GAAOnE,IAE9D1D,GAIf,SAAW01S,GAqEPA,EAAQ/4S,IApER,SAAa6B,GACT,MAAM,KAAEiyM,EAAI,QAAEklG,EAAO,UAAEvW,EAAS,UAAE7T,EAAS,SAAE8T,EAAQ,SAAEF,EAAQ,SAAED,EAAQ,KAAEvH,EAAI,UAAE2H,EAAS,QAAEC,EAAO,SAAEzM,EAAQ,QAAE8iB,EAAO,SAAEC,EAAQ,WAAElpK,GAAenuI,EAASq0O,EAAS,GAAOr0O,EAGxK,CAAC,OAAQ,UAAW,YAAa,YAAa,WAAY,WAAY,WAAY,OAAQ,YAAa,UAAW,WAAY,UAAW,WAAY,eAGjJmyB,EAAYnyB,EAAQmyB,UAC1B,GAAiB,MAAbA,EASA,MAAM,IAAI9uB,MAAM,4DARI,MAAhBgxO,EAAO3iN,QACP2iN,EAAO3iN,MAAQS,EAAUoiH,aAER,MAAjB8/F,EAAOvgN,SACPugN,EAAOvgN,OAAS3B,EAAUqiH,cAMlC,MAAMhzI,EAAS,EAAUgF,MAAM,GAAI0wS,EAAQ3qQ,SAAU8nM,GAG/CijE,EAAc,CAAEr6P,KAAM,GAAIhX,SAAS,GA4CzC,OA1CIzkC,EAAOywM,KADS,iBAATA,EACO,CAAEh1J,KAAMg1J,EAAMhsK,SAAS,GAEhB,kBAATgsK,EACEj0M,OAAO+rD,OAAO/rD,OAAO+rD,OAAO,GAAIutP,GAAc,CAAErxQ,QAASgsK,IAGzDj0M,OAAO+rD,OAAO/rD,OAAO+rD,OAAO,GAAIutP,GAAcrlG,GAIhD,CACZ,UACA,YACA,YACA,WACA,WACA,WACA,OACA,YACA,UACA,WACA,UACA,WACA,cAEIzmK,QAAS3sC,IACb,MAAMqG,EAAMlF,EAAQnB,GACD,kBAARqG,EACP1D,EAAO3C,GAAKu+I,QAAUl4I,EAGtB1D,EAAO3C,GAAOb,OAAO+rD,OAAO/rD,OAAO+rD,OAAO,GAAIvoD,EAAO3C,IAAOqG,KAKhE1D,EAAO6tJ,YACP7tJ,EAAO8yR,SAASl3I,SACc,MAA9B57I,EAAO8yR,SAASjlI,aAChB7tJ,EAAO8yR,SAASjlI,WAAa7tJ,EAAO6tJ,kBAC7B7tJ,EAAO6tJ,YAEX7tJ,GAnEf,CAsEG,KAAY,GAAU,KACzB,SAAW01S,GACPA,EAAQ3qQ,SAAW,CACfqG,EAAG,EACHC,EAAG,EACHo/J,KAAM,CACFh1J,KAAM,GACNhX,SAAS,GAEbsxQ,QAAS,CACLl8P,IAAK,IACLjmB,IAAK,IAETi6H,YAAY,EACZmoJ,aAAc,CACVtrO,QAAS,CACLruE,KAAM,SACN2X,KAAM,CACFshB,QAAS,IAGjB2gR,cAAe,CACX55S,KAAM,YACN2X,KAAM,CACF/D,UAAW,GAAKulB,OAAO,oBAG/B0gR,gBAAiB,CACb75S,KAAM,YACN2X,KAAM,CACF/D,UAAW,GAAKulB,OAAO,uBAInC2+N,WAAY,CACR8I,MAAM,EACNk5C,OAAO,EAGPC,UAAU,EAGVC,WAAW,EACXC,WAAW,EACXC,WAAW,EACXC,WAAW,EACXxhE,WAAW,EACXqW,OAAQ,SACR24B,WAAY,QACZS,gBAAiB,WACjBrwB,SAAU,KACV8vB,OAAQ,SACR39K,UAAW,SACXykL,mBAAkB,EAAC,KAAE5qR,EAAI,WAAEw6P,EAAU,WAAES,KAEpB,OADO,WAATj7P,EAAoBi7P,EAAaT,GAGlDlkB,WAAU,IACC,IAAI,IAGnB+/D,aAAc,CACVvzI,UAAU,EACV26H,uBAAuB,GAE3BsB,SAAU,CACNvjJ,SAAS,EACTzrH,SAAU,EACVoxK,UAAW,EACXnxK,SAAU2qC,OAAOswM,iBACjB7pE,UAAWzmI,OAAOswM,iBAClBqrC,YAAY,EACZC,YAAY,EACZ5jB,YAAY,EACZplD,qBAAqB,EACrBynE,cAAc,GAElBlW,SAAU,CACNtjJ,SAAS,EACT60D,KAAM,IAEV4/F,YAAa,CACTz4B,UAAU,GAEd+f,KAAM,CACF/7I,SAAS,EACTsnB,UAAU,EACV26H,uBAAuB,GAE3BtS,UAAW,CACP3vI,SAAS,EACTi1I,WAAY,OACZE,WAAW,EACXjmF,SAAU,KAAM,GAEpBs0F,UAAW,CACPxjJ,SAAS,EACT82J,YAAY,EACZP,YAAY,EACZC,YAAY,EACZt1G,cAAe,OACfv4G,UAAU,EACV2tM,SAAS,EACTzyG,QAAQ,EACR8zE,iBAAiB,EACjBqjD,mBAAmB,EACnBC,mBAAmB,EACnBC,mBAAmB,EACnBj8R,QAAS,KACT88O,QAAS,MAEbg+C,QAAS,CACL/5J,SAAS,EACTm7J,WAAY,CAAC,kBAEjB1X,SAAU,CACNzjJ,SAAS,GAEb0jJ,UAAW,CACP1jJ,SAAS,GAEb2jJ,QAAS,CACL3jJ,SAAS,GAEbk3I,SAAU,CACNl3I,SAAS,GAEbi6J,SAAU,CACNj6J,SAAS,GAEbjP,WAAY,CACRiP,SAAS,EACTy0E,OAAQ,IACR2mF,qBAAqB,GAEzBx2Q,OAAO,EACPy+P,QAAQ,EACRwG,QAAS,QACTxL,cAAe,EACfvJ,eAAgB,EAChBkB,gBAAiB,EACjB+H,wBAAwB,EACxBI,yBAAyB,EACzBH,2BAA2B,EAC3BI,2BAA2B,EAC3BhnC,YAAa,CACTikD,kBAAkB,GAEtBn8P,MAAO,KAAM,GAnJrB,CAqJG,KAAY,GAAU,KCtPzB,IAAI,GAAkC,SAAUj9C,EAAG6O,GAC/C,IAAI1P,EAAI,GACR,IAAK,IAAIY,KAAKC,EAAOrB,OAAOkB,UAAUC,eAAe1B,KAAK4B,EAAGD,IAAM8O,EAAEpK,QAAQ1E,GAAK,IAC9EZ,EAAEY,GAAKC,EAAED,IACb,GAAS,MAALC,GAAqD,mBAAjCrB,OAAOsxG,sBACtB,KAAIhyG,EAAI,EAAb,IAAgB8B,EAAIpB,OAAOsxG,sBAAsBjwG,GAAI/B,EAAI8B,EAAE4C,OAAQ1E,IAC3D4Q,EAAEpK,QAAQ1E,EAAE9B,IAAM,GAAKU,OAAOkB,UAAUwxD,qBAAqBjzD,KAAK4B,EAAGD,EAAE9B,MACvEkB,EAAEY,EAAE9B,IAAM+B,EAAED,EAAE9B,KAE1B,OAAOkB,GAMJ,MAAM,WAAoB,GAC7B,UACI,OAAO6B,KAAKurN,MAAM1+L,KAAKsrD,IAE3B,UACI,OAAOn4E,KAAK6sB,KAAKq4D,IAErB,WACI,OAAOllF,KAAK6sB,KAAK0qG,KAErB,UAAU/oH,GACN,OAAsC,MAA/BxO,KAAKklF,IAAI32E,eAAeC,GAEnC,OAAO7O,GACH,IAAI04S,EAAW14S,EAAQ6O,GACvB,MAAMhR,EAAOmC,EAAQnC,KAIrB,GAHK66S,IACDA,EAAW,UAAU76S,KAAQwC,KAAKm4E,OAAO,EAAUu3G,SAAS3sK,KAAKs3C,UAAU16D,QAE1EK,KAAKs4S,UAAUD,GAAW,CAC3B,MAAM3yS,EAAK,GAAOguO,SAAS51O,IAAIN,GAC/B,GAAU,MAANkI,EACA,OAAO,GAAOguO,SAASQ,WAAW12O,GAEtC,MAAM8/H,EAAS53H,EAAG/F,EAAQwV,MAAQ,IAG5BvF,EAAQjS,OAAO+rD,OAAO/rD,OAAO+rD,OAAO,CAAEnX,GAAI,EAAGC,GAAI,EAAGnhB,MAAO,EAAGoC,OAAQ,EAAG8kR,YAAa,qBAAuB54S,EAAQiQ,OAAQ,CAAEpB,GAAI6pS,IACzI,GAAO95S,OAAO,GAAOw0L,SAASz1D,GAAS1tH,GAAO0gB,SAAStwB,KAAKu3H,MAEhE,OAAO8gL,EAEX,SAAS14S,GACL,IAAI6O,EAAK7O,EAAQ6O,GACjB,MAAMjN,EAAO5B,EAAQ4B,KAIrB,GAHKiN,IACDA,EAAK,YAAYjN,KAAQvB,KAAKm4E,OAAO,EAAUu3G,SAAS3sK,KAAKs3C,UAAU16D,QAEtEK,KAAKs4S,UAAU9pS,GAAK,CACrB,MAOM8uH,EAAS,IAAI/7H,KAPL5B,EAAQg4K,MACJpxK,IAAKkd,IACnB,MAAMuS,EAA0B,MAAhBvS,EAAKuS,SAAmBkmC,OAAO9lC,SAAS3S,EAAKuS,SACvDvS,EAAKuS,QACL,EACN,MAAO,iBAAiBvS,EAAK0kB,uBAAuB1kB,EAAKozF,wBAAwB7gF,SAEtDhnB,KAAK,QAAQzN,KACtCqO,EAAQjS,OAAO+rD,OAAO,CAAEl7C,MAAM7O,EAAQiQ,OAC5C,GAAOrR,OAAO++H,EAAQ1tH,GAAO0gB,SAAStwB,KAAKu3H,MAE/C,OAAO/oH,EAEX,OAAO7O,GACH,MAAM,GAAE6O,EAAE,KAAE4lO,EAAI,KAAEunC,EAAI,YAAE68B,EAAW,aAAEC,EAAY,QAAEhzN,EAAO,SAAExqE,GAAatb,EAASiQ,EAAQ,GAAOjQ,EAAS,CAAC,KAAM,OAAQ,OAAQ,cAAe,eAAgB,UAAW,aAC3K,IAAI+4S,EAAWlqS,EAIf,GAHKkqS,IACDA,EAAW,UAAU14S,KAAKm4E,OAAO,EAAUu3G,SAAS3sK,KAAKs3C,UAAU16D,QAElEK,KAAKs4S,UAAUI,GAAW,CACX,SAAZjzN,UAEO71E,EAAMrS,EAEjB,MAAMo7S,EAAa,GAAOp6S,OAAO,SAAU,CACvC61O,OACAunC,OACAntQ,GAAIkqS,EACJt+Q,SAAU,UACVw+Q,OAAwB,MAAhBH,EAAuBA,EAAe,OAC9CD,YAAaA,GAAe,kBAC7Bv9R,EACGA,EAAS1U,IAAKutI,IACZ,IAAI,QAAEruD,GAAYquD,EAAIrlG,EAAQ,GAAOqlG,EAAI,CAAC,YAC1C,OAAO,GAAOv1I,OAAO,GAAGknF,GAAa,OAAQ,EAAI8jB,eAAe5rG,OAAO+rD,OAAO/rD,OAAO+rD,OAAO,GAAI95C,GAAQ6+B,OAE1G,CAAC,GAAOlwC,OAAOknF,GAAW,OAAQ,EAAI8jB,eAAe35F,MAC3D5P,KAAKu3H,KAAKnyH,YAAYuzS,EAAWh0S,MAErC,OAAO+zS,EAEX,OAAOlqS,GACH,MAAMhI,EAAOxG,KAAKklF,IAAI32E,eAAeC,GACjChI,GAAQA,EAAKnB,YACbmB,EAAKnB,WAAWC,YAAYkB,IClGxC,IAAI,GAA0C,SAAU0/O,EAAYx+O,EAAQlJ,EAAK2nP,GAC7E,IAA2H5oP,EAAvHD,EAAImJ,UAAU9E,OAAQ5D,EAAIT,EAAI,EAAIoK,EAAkB,OAATy+O,EAAgBA,EAAOxoP,OAAOkrE,yBAAyBnhE,EAAQlJ,GAAO2nP,EACrH,GAAuB,iBAAZ9gL,SAAoD,mBAArBA,QAAQ+gL,SAAyBroP,EAAIsnE,QAAQ+gL,SAASF,EAAYx+O,EAAQlJ,EAAK2nP,QACpH,IAAK,IAAIlpP,EAAIipP,EAAWvkP,OAAS,EAAG1E,GAAK,EAAGA,KAASM,EAAI2oP,EAAWjpP,MAAIc,GAAKT,EAAI,EAAIC,EAAEQ,GAAKT,EAAI,EAAIC,EAAEmK,EAAQlJ,EAAKT,GAAKR,EAAEmK,EAAQlJ,KAAST,GAChJ,OAAOT,EAAI,GAAKS,GAAKJ,OAAOC,eAAe8J,EAAQlJ,EAAKT,GAAIA,GAE5D,GAAkC,SAAUiB,EAAG6O,GAC/C,IAAI1P,EAAI,GACR,IAAK,IAAIY,KAAKC,EAAOrB,OAAOkB,UAAUC,eAAe1B,KAAK4B,EAAGD,IAAM8O,EAAEpK,QAAQ1E,GAAK,IAC9EZ,EAAEY,GAAKC,EAAED,IACb,GAAS,MAALC,GAAqD,mBAAjCrB,OAAOsxG,sBACtB,KAAIhyG,EAAI,EAAb,IAAgB8B,EAAIpB,OAAOsxG,sBAAsBjwG,GAAI/B,EAAI8B,EAAE4C,OAAQ1E,IAC3D4Q,EAAEpK,QAAQ1E,EAAE9B,IAAM,GAAKU,OAAOkB,UAAUwxD,qBAAqBjzD,KAAK4B,EAAGD,EAAE9B,MACvEkB,EAAEY,EAAE9B,IAAM+B,EAAED,EAAE9B,KAE1B,OAAOkB,GAKJ,MAAM,WAAoB,GAC7B,WACI,OAAO6B,KAAK6sB,KAAK+kL,KAErB,WACI,OAAO5xM,KAAKL,QAAQiyM,KAExB,OACI5xM,KAAKk/R,iBACLl/R,KAAKkhK,KAAKlhK,KAAK4xM,MAEnB,iBACI5xM,KAAKurN,MAAMnjM,GAAG,QAASpoB,KAAKyrD,OAAQzrD,MACpCA,KAAKurN,MAAMnjM,GAAG,YAAapoB,KAAKyrD,OAAQzrD,MAE5C,gBACIA,KAAKurN,MAAM9iM,IAAI,QAASzoB,KAAKyrD,OAAQzrD,MACrCA,KAAKurN,MAAM9iM,IAAI,YAAazoB,KAAKyrD,OAAQzrD,MAE7C,WAAW4lC,GACH5lC,KAAK4xM,KAAKhsK,UAAYA,IACtB5lC,KAAK4xM,KAAKhsK,QAAUA,EACpB5lC,KAAKyrD,UAGb,cACI,OAAOzrD,KAAK4xM,KAAKh1J,KAErB,YAAYA,GACR58C,KAAK4xM,KAAKh1J,KAAO90C,KAAKitB,IAAI6nB,EAAM,GAChC58C,KAAKyrD,SAET,OACIzrD,KAAKkzQ,YAAW,GAChBlzQ,KAAKyrD,SAET,OACIzrD,KAAKkzQ,YAAW,GAChBlzQ,KAAKyrD,SAET,QACIzrD,KAAKwG,KAAK8d,MAAMunM,gBAAkB,GAEtC,KAAKlsN,GACDK,KAAK64D,QACL74D,KAAKk2D,SAAW,KAChBv4D,OAAO+rD,OAAO1pD,KAAK4xM,KAAMjyM,GACzBK,KAAK81O,SAAW91O,KAAK64S,YAAYl5S,GACjCK,KAAKyrD,SAET,OAAO9rD,EAAU,IACb,MAAM0hH,EAAWrhH,KAAK4xM,KAAKh1J,KAC3B,GAAIykE,GAAY,IAAMrhH,KAAK4xM,KAAKhsK,QAC5B,OAAO5lC,KAAK64D,QAEhB,MAAM+lE,EAAM5+H,KAAKurN,MAAMn0J,SACjBw6I,EAAO5xM,KAAKmwH,cACZjnD,EAAQhoE,MAAMD,QAAQtB,GAAWA,EAAU,CAACA,GAClDK,KAAK81O,SAAS3qM,QAAQ,CAACjJ,EAAUxgC,KAC7B,MAAM8M,EAAK,WAAW9M,EAChBgyD,EAAKkrE,EAAI5zH,GAAK,EACd2oD,EAAKirE,EAAIrhI,GAAK,GACd,OAAEkuD,EAAM,OAAE6xE,GAAWp7F,EAAU8xM,EAAS,GAAO9xM,EAAU,CAAC,SAAU,WACpEviC,EAAUhC,OAAO+rD,OAAO/rD,OAAO+rD,OAAO/rD,OAAO+rD,OAAO,GAAIsqL,GAAS9qK,EAAMxnE,IAAS,CAAEgyD,KACpFC,KAAI2yC,GAAIs4B,EAAI/wH,GAAK,EAAG04F,GAAIq4B,EAAI5pB,GAAK,EAAG3jF,MAAOgwF,EAAW3tD,EAAIjgC,OAAQ4tF,EAAW1tD,IAC5Ei+I,EAAKv2L,IAAI7M,IACVojM,EAAKtxM,IAAIkO,EAAI,GAAOjQ,OAAO,UAAW,CAAEiQ,KAAIsqS,aAAc,kBAAoB,GAAOz7K,cAAcC,IAAS34H,MAEhH,MAAMo0S,EAAcnnG,EAAK9zM,IAAI0Q,GACP,mBAAXi9C,GACPA,EAAOstP,EAAYnrS,WAAW,GAAIjO,GAEtC,IAAI4yC,EAAI5yC,EAAQ2mG,GAAK3mG,EAAQ0xB,MACzBkhB,EAAI,IACJA,GAAK5yC,EAAQ0xB,OAEjB,IAAImhB,EAAI7yC,EAAQ4mG,GAAK5mG,EAAQ8zB,OACzB+e,EAAI,IACJA,GAAK7yC,EAAQ8zB,QAEjB,EAAIxgB,KAAK8lS,EAAa,CAClBxmQ,IACAC,IACAnhB,MAAO1xB,EAAQ0xB,MACfoC,OAAQ9zB,EAAQ8zB,WAGxB,MAAM2hK,GAAS,IAAI4jH,eAAgBC,kBAAkBrnG,EAAK9vM,MACpDy/B,EAAM,iCAAiCqtH,KAAKwmC,MAClDp1L,KAAKwG,KAAK8d,MAAMunM,gBAAkBtqL,EAEtC,cAII,OAHKvhC,KAAKk2D,WACNl2D,KAAKk2D,SAAW,IAAI,IAEjBl2D,KAAKk2D,SAEhB,YAAYv2D,GACR,IAAKA,EACD,MAAO,GAEX,MAAM4B,EAAO5B,EAAQ4B,KACrB,GAAY,MAARA,EACA,MAAO,CACH5D,OAAO+rD,OAAO/rD,OAAO+rD,OAAO,GAAI,GAAc+pL,QAAQliL,KAAM5xD,EAAQwV,OAG5E,MAAM+zD,EAAQ,GAAcwqK,SAAS51O,IAAIyD,GACzC,GAAI2nE,EAAO,CACP,IAAI/zD,EAAOxV,EAAQwV,MAAQ,GAI3B,OAHKjU,MAAMD,QAAQkU,KACfA,EAAO,CAACA,IAELjU,MAAMD,QAAQioE,GACfA,EAAM3iE,IAAI,CAACpC,EAAMzC,IAAW/D,OAAO+rD,OAAO/rD,OAAO+rD,OAAO,GAAIvlD,GAAOgR,EAAKzT,KACxE,CAAC/D,OAAO+rD,OAAO/rD,OAAO+rD,OAAO,GAAIwf,GAAQ/zD,EAAK,KAExD,OAAO,GAAcu+N,SAASQ,WAAW3yO,GAE7C,UACIvB,KAAKi/R,gBACLj/R,KAAK64D,SAGb,GAAW,CACP,GAAKo3D,WACN,GAAYpxH,UAAW,UAAW,MC/I9B,MAAM,WAAqB,GAC9B,kBACI,OAAO,EAAIu/H,gBAAgBp+H,KAAK6sB,KAAKohG,MAAM/iB,gBAK/C,kBAEI,MAAMriE,EAAO7oC,KAAK6sB,KAAKq4D,IAAI7uD,wBAC3B,OAAO,IAAI,GAAMwS,EAAKtS,KAAMsS,EAAK53B,KAKrC,gBAEI,OAAOjR,KAAKk5S,kBAAkB9lP,UAAUnwD,OAAOk2S,QAASl2S,OAAOm2S,SAEnE,WAAW7mQ,EAAGC,GAIV,OAHuB,iBAAND,EACXvyC,KAAKohS,mBAAmB7uP,EAAGC,GAC3BxyC,KAAKohS,mBAAmB7uP,EAAEA,EAAGA,EAAEC,IAC5BqjB,WAAW71D,KAAKurN,MAAMmoE,eAEnC,kBAAkBnhP,EAAGC,GACjB,MAAMu/O,EAAa,GAAMxzR,OAAOg0C,EAAGC,GACnC,OAAO,EAAImrF,eAAeo0J,EAAY/xR,KAAKurN,MAAMn0J,UAErD,mBAAmB7kB,EAAGC,GAClB,MAAMu/O,EAAa,GAAMxzR,OAAOg0C,EAAGC,GACnC,OAAO,EAAImrF,eAAeo0J,EAAY/xR,KAAKq5S,mBAE/C,iBAAiB9mQ,EAAGC,GAIhB,OAHuB,iBAAND,EACXvyC,KAAKs5S,kBAAkB/mQ,EAAGC,GAC1BxyC,KAAKs5S,kBAAkB/mQ,IACpB6gB,UAAUpzD,KAAKu5S,iBAE5B,iBAAiBhnQ,EAAGC,EAAGnhB,EAAOoC,GAC1B,MAAM+lR,EAAY,GAAUj7S,OAAOg0C,EAAGC,EAAGnhB,EAAOoC,GAChD,OAAO,EAAI+pG,mBAAmBg8K,EAAWx5S,KAAKurN,MAAMn0J,UAExD,kBAAkB7kB,EAAGC,EAAGnhB,EAAOoC,GAC3B,MAAM+lR,EAAY,GAAUj7S,OAAOg0C,EAAGC,EAAGnhB,EAAOoC,GAChD,OAAO,EAAI+pG,mBAAmBg8K,EAAWx5S,KAAKq5S,mBAElD,gBAAgB9mQ,EAAGC,EAAGnhB,EAAOoC,GAIzB,OAH0B,iBAAN8e,EACdvyC,KAAKy5S,iBAAiBlnQ,EAAGC,EAAGnhB,EAAOoC,GACnCzzB,KAAKy5S,iBAAiBlnQ,IAChB6gB,UAAUpzD,KAAKu5S,iBAE/B,kBAAkBhnQ,EAAGC,GACjB,MAAMknQ,EAAa,GAAMn7S,OAAOg0C,EAAGC,GACnC,OAAO,EAAImrF,eAAe+7K,EAAY15S,KAAKurN,MAAMn0J,SAASm9E,WAE9D,mBAAmBhiG,EAAGC,GAClB,MAAMmnQ,EAAc,GAAMp7S,OAAOg0C,EAAGC,GACpC,OAAO,EAAImrF,eAAeg8K,EAAa35S,KAAKq5S,kBAAkB9kK,WAElE,mBAAmBhiG,EAAGC,GAClB,MAAMmnQ,EAAc,GAAMp7S,OAAOg0C,EAAGC,GACpC,OAAO,EAAImrF,eAAeg8K,EAAa35S,KAAKurN,MAAMn0J,SAAS/N,SAASrpD,KAAKq5S,kBAAkB9kK,YAE/F,iBAAiBhiG,EAAGC,GAChB,MACMknQ,EADY,GAAMn7S,OAAOg0C,EAAGC,GACLviC,KAAKjQ,KAAKu5S,iBACvC,OAAOv5S,KAAK45S,kBAAkBF,GAElC,iBAAiBnnQ,EAAGC,EAAGnhB,EAAOoC,GAC1B,MAAMomR,EAAY,GAAUt7S,OAAOg0C,EAAGC,EAAGnhB,EAAOoC,GAChD,OAAO,EAAI+pG,mBAAmBq8K,EAAW75S,KAAKurN,MAAMn0J,SAASm9E,WAEjE,kBAAkBhiG,EAAGC,EAAGnhB,EAAOoC,GAC3B,MAAMi7Q,EAAa,GAAUnwS,OAAOg0C,EAAGC,EAAGnhB,EAAOoC,GACjD,OAAO,EAAI+pG,mBAAmBkxK,EAAY1uS,KAAKq5S,kBAAkB9kK,WAErE,kBAAkBhiG,EAAGC,EAAGnhB,EAAOoC,GAC3B,MAAMi7Q,EAAa,GAAUnwS,OAAOg0C,EAAGC,EAAGnhB,EAAOoC,GACjD,OAAO,EAAI+pG,mBAAmBkxK,EAAY1uS,KAAKurN,MAAMn0J,SAAS/N,SAASrpD,KAAKq5S,kBAAkB9kK,YAElG,gBAAgBhiG,EAAGC,EAAGnhB,EAAOoC,GACzB,MAAMomR,EAAY,GAAUt7S,OAAOg0C,EAAGC,EAAGnhB,EAAOoC,GAC1CqmR,EAAa95S,KAAKu5S,gBAGxB,OAFAM,EAAUtnQ,GAAKunQ,EAAWvnQ,EAC1BsnQ,EAAUrnQ,GAAKsnQ,EAAWtnQ,EACnBxyC,KAAK+5S,iBAAiBF,IC1FrC,ICCWG,GDDP,GAA0C,SAAU9zD,EAAYx+O,EAAQlJ,EAAK2nP,GAC7E,IAA2H5oP,EAAvHD,EAAImJ,UAAU9E,OAAQ5D,EAAIT,EAAI,EAAIoK,EAAkB,OAATy+O,EAAgBA,EAAOxoP,OAAOkrE,yBAAyBnhE,EAAQlJ,GAAO2nP,EACrH,GAAuB,iBAAZ9gL,SAAoD,mBAArBA,QAAQ+gL,SAAyBroP,EAAIsnE,QAAQ+gL,SAASF,EAAYx+O,EAAQlJ,EAAK2nP,QACpH,IAAK,IAAIlpP,EAAIipP,EAAWvkP,OAAS,EAAG1E,GAAK,EAAGA,KAASM,EAAI2oP,EAAWjpP,MAAIc,GAAKT,EAAI,EAAIC,EAAEQ,GAAKT,EAAI,EAAIC,EAAEmK,EAAQlJ,EAAKT,GAAKR,EAAEmK,EAAQlJ,KAAST,GAChJ,OAAOT,EAAI,GAAKS,GAAKJ,OAAOC,eAAe8J,EAAQlJ,EAAKT,GAAIA,GAGzD,MAAM,WAAwB,GACjC,cACI4gF,SAASl4E,WACTzG,KAAKozR,OAASpzR,KAAKurN,MAAM7rN,KAAKu6S,iBAElC,UACIj6S,KAAKozR,OAAOnjK,WAGpB,GAAW,CACP,GAAKA,WACN,GAAgBpxH,UAAW,UAAW,MChBzC,SAAWm7S,GACP,SAASh3R,EAAM0kE,GACX,MAAMwyN,EAAK,GACLC,EAAM,GAcZ,OAbIj5S,MAAMD,QAAQymF,GACdwyN,EAAG13S,QAAQklF,GAGXA,EAAUv+E,MAAM,KAAKgiC,QAAShnC,KACC,IAAvBA,EAAKV,QAAQ,KACby2S,EAAG13S,KAAK2B,GAGRg2S,EAAI33S,QAAQ2B,EAAKgF,MAAM,QAI5B,CAAE+wS,KAAIC,OAEjBH,EAAYh3R,MAAQA,EAoBpBg3R,EAAYxlP,OAnBZ,SAAgB04F,EAAYC,GACxB,GAAkB,MAAdD,GAAoC,MAAdC,EAAoB,CAC1C,MAAMz0D,EAAK11E,EAAMkqI,GACXv0D,EAAK31E,EAAMmqI,GACXitJ,EAAM1hN,EAAGwhN,GAAG9yS,OACZizS,EAAM1hN,EAAGuhN,GAAG9yS,OACZkzS,EAAO5hN,EAAGyhN,IAAI/yS,OACdmzS,EAAO5hN,EAAGwhN,IAAI/yS,OACdozS,EAAQ,CAAC1nK,EAAIiuC,IACPjuC,EAAGnxI,SAAWo/K,EAAGp/K,SACN,IAAdmxI,EAAGnxI,QAAgBmxI,EAAGvtF,MAAM,CAACv6C,EAAG/N,IAAM+N,IAAM+1K,EAAG9jL,KAExD,OAAOu9S,EAAMJ,EAAKC,IAAQG,EAAMF,EAAMC,GAE1C,OAAkB,MAAdrtJ,GAAoC,MAAdC,GAuB9B6sJ,EAAYhyP,QAjBZ,SAAiBn6C,EAAG65E,EAAWk5F,GAC3B,GAAiB,MAAbl5F,GACCxmF,MAAMD,QAAQymF,IAAmC,IAArBA,EAAU/lF,OACvC,OAAOi/K,IACY,IAAb/yK,EAAEqe,SACc,IAAdre,EAAEye,UACY,IAAdze,EAAE4e,UACa,IAAf5e,EAAE+e,SAGd,MAAM,GAAEstR,EAAE,IAAEC,GAAQn3R,EAAM0kE,GACpBz5E,EAASzP,IACX,MAAMhB,EAAUgB,EAAI6K,cAAP,MACb,OAAmB,IAAZwE,EAAErQ,IAEb,OAAO08S,EAAG5zP,KAAM9nD,GAAQyP,EAAMzP,KAAS27S,EAAI50P,MAAO/mD,GAAQyP,EAAMzP,KAvDxE,CA0DGw7S,KAAgBA,GAAc,KC5DjC,IAAI,GAA0C,SAAU9zD,EAAYx+O,EAAQlJ,EAAK2nP,GAC7E,IAA2H5oP,EAAvHD,EAAImJ,UAAU9E,OAAQ5D,EAAIT,EAAI,EAAIoK,EAAkB,OAATy+O,EAAgBA,EAAOxoP,OAAOkrE,yBAAyBnhE,EAAQlJ,GAAO2nP,EACrH,GAAuB,iBAAZ9gL,SAAoD,mBAArBA,QAAQ+gL,SAAyBroP,EAAIsnE,QAAQ+gL,SAASF,EAAYx+O,EAAQlJ,EAAK2nP,QACpH,IAAK,IAAIlpP,EAAIipP,EAAWvkP,OAAS,EAAG1E,GAAK,EAAGA,KAASM,EAAI2oP,EAAWjpP,MAAIc,GAAKT,EAAI,EAAIC,EAAEQ,GAAKT,EAAI,EAAIC,EAAEmK,EAAQlJ,EAAKT,GAAKR,EAAEmK,EAAQlJ,KAAST,GAChJ,OAAOT,EAAI,GAAKS,GAAKJ,OAAOC,eAAe8J,EAAQlJ,EAAKT,GAAIA,GAKzD,MAAM,WAAwB,GACjC,oBACI,OAAOiC,KAAKL,QAAQs0R,SAExB,eACI,QAAIj0R,KAAKy6S,gBACsC,iBAAhCz6S,KAAKy6S,cAAcC,SACnB16S,KAAKy6S,cAAcC,SAAS39J,UAE9B/8I,KAAKy6S,cAAcC,UAIpC,OACI16S,KAAKozR,OAASpzR,KAAKurN,MAAM7rN,KAAKi7S,iBAC9B36S,KAAKk/R,iBACLl/R,KAAK2xR,kBACD3xR,KAAKozR,QACLpzR,KAAKozR,OAAO3/N,SAGpB,iBACI,IAAIykP,EAAa,GACjB,MAAMwC,EAAW16S,KAAKy6S,cAAcC,SAEhCxC,EADoB,iBAAbwC,EACMA,EAASxC,YAAc,GAGvB,CAAC,iBAEdA,EAAWh6P,SAAS,mBACpBl+C,KAAKurN,MAAMnjM,GAAG,kBAAmBpoB,KAAK46S,eAAgB56S,MACtDA,KAAKurN,MAAMnjM,GAAG,2BAA4BpoB,KAAK46S,eAAgB56S,MAC/DA,KAAKurN,MAAMnjM,GAAG,2BAA4BpoB,KAAK46S,eAAgB56S,OAE/Dk4S,EAAWh6P,SAAS,oBACpBl+C,KAAK66S,iBAAmB76S,KAAK66S,iBAAiBp8S,KAAKuB,MACnDA,KAAK6sB,KAAK0d,EAAEvqC,KAAKozR,OAAOthQ,WAAW1J,GAAG,YAAapoB,KAAK66S,mBAGhE,gBACI,IAAI3C,EAAa,GACjB,MAAMwC,EAAW16S,KAAKy6S,cAAcC,SAEhCxC,EADoB,iBAAbwC,EACMA,EAASxC,YAAc,GAGvB,CAAC,iBAEdA,EAAWh6P,SAAS,mBACpBl+C,KAAKurN,MAAM9iM,IAAI,kBAAmBzoB,KAAK46S,eAAgB56S,MACvDA,KAAKurN,MAAM9iM,IAAI,2BAA4BzoB,KAAK46S,eAAgB56S,MAChEA,KAAKurN,MAAM9iM,IAAI,2BAA4BzoB,KAAK46S,eAAgB56S,OAEhEk4S,EAAWh6P,SAAS,mBACpBl+C,KAAK6sB,KACA0d,EAAEvqC,KAAKozR,OAAOthQ,WACdrJ,IAAI,YAAazoB,KAAK66S,kBAGnC,iBAAiBhtS,GACI,IAAbA,EAAEqd,QAAgBlrB,KAAK86S,aAAajtS,GAAG,IAAS7N,KAAKozR,SACrDpzR,KAAK2xR,iBAAgB,GACrB3xR,KAAKozR,OAAO2nB,aAAaltS,GACzB7N,KAAKozR,OAAO11Q,KAAK,WAAY,IAAM1d,KAAK2xR,iBAAgB,KAGhE,gBAAe,EAAE9jR,IACT7N,KAAKozR,SACDpzR,KAAK86S,aAAajtS,GAAG,IACpB7N,KAAK86S,aAAajtS,KAAO7N,KAAKurN,MAAMjkM,UAAU0zR,gBAAgBntS,GAAG,MAClE7N,KAAK2xR,iBAAgB,GACrB3xR,KAAKozR,OAAO2nB,aAAaltS,GACzB7N,KAAKozR,OAAO11Q,KAAK,WAAY,IAAM1d,KAAK2xR,iBAAgB,KAIpE,aAAa9jR,EAAG+yK,GACZ,OAAQ5gL,KAAKozR,QACTpzR,KAAK06S,UACLV,GAAYhyP,QAAQn6C,EAAG7N,KAAKy6S,cAAc/yN,UAAWk5F,IACrD5gL,KAAKurN,MAAM7rN,KAAKo7S,aAAajtS,GAErC,gBAAgBotS,GACZ,GAAmB,MAAfj7S,KAAKozR,OACL,OAEJ,MAAMthQ,EAAY9xB,KAAKozR,OAAOthQ,UACxB4oR,EAAW16S,KAAK6sB,KAAKsmO,gBAAgB,2BACvCnzP,KAAK06S,UACL,EAAIx9Q,SAASpL,EAAW4oR,GACxB5oR,EAAUopR,QAAQpE,WAAamE,GAAWt3S,YAG1C,EAAI45B,YAAYzL,EAAW4oR,GAGnC,gBACS16S,KAAK06S,WACN16S,KAAKy6S,cAAcC,UAAW,EAC9B16S,KAAK2xR,mBAWb,iBACQ3xR,KAAK06S,WACL16S,KAAKy6S,cAAcC,UAAW,EAC9B16S,KAAK2xR,mBAGb,OACQ3xR,KAAKozR,QACLpzR,KAAKozR,OAAOr1Q,OAGpB,SACQ/d,KAAKozR,QACLpzR,KAAKozR,OAAO+nB,SAGpB,SACQn7S,KAAKozR,QACLpzR,KAAKozR,OAAO3nO,SAGpB,mBACQzrD,KAAKozR,QACLpzR,KAAKozR,OAAOgoB,mBAGpB,oBACQp7S,KAAKozR,QACLpzR,KAAKozR,OAAOioB,oBAGpB,OAAOhqR,EAAOoC,GACNzzB,KAAKozR,QACLpzR,KAAKozR,OAAO3jK,OAAOp+F,EAAOoC,GAGlC,UACQzzB,KAAKozR,QACLpzR,KAAKozR,OAAOnjK,UAEhBjwH,KAAKi/R,iBAGb,GAAW,CACP,GAAKhvK,WACN,GAAgBpxH,UAAW,UAAW,MCrKzC,IAAI,GAA0C,SAAUqnP,EAAYx+O,EAAQlJ,EAAK2nP,GAC7E,IAA2H5oP,EAAvHD,EAAImJ,UAAU9E,OAAQ5D,EAAIT,EAAI,EAAIoK,EAAkB,OAATy+O,EAAgBA,EAAOxoP,OAAOkrE,yBAAyBnhE,EAAQlJ,GAAO2nP,EACrH,GAAuB,iBAAZ9gL,SAAoD,mBAArBA,QAAQ+gL,SAAyBroP,EAAIsnE,QAAQ+gL,SAASF,EAAYx+O,EAAQlJ,EAAK2nP,QACpH,IAAK,IAAIlpP,EAAIipP,EAAWvkP,OAAS,EAAG1E,GAAK,EAAGA,KAASM,EAAI2oP,EAAWjpP,MAAIc,GAAKT,EAAI,EAAIC,EAAEQ,GAAKT,EAAI,EAAIC,EAAEmK,EAAQlJ,EAAKT,GAAKR,EAAEmK,EAAQlJ,KAAST,GAChJ,OAAOT,EAAI,GAAKS,GAAKJ,OAAOC,eAAe8J,EAAQlJ,EAAKT,GAAIA,GAE5D,GAAkC,SAAUiB,EAAG6O,GAC/C,IAAI1P,EAAI,GACR,IAAK,IAAIY,KAAKC,EAAOrB,OAAOkB,UAAUC,eAAe1B,KAAK4B,EAAGD,IAAM8O,EAAEpK,QAAQ1E,GAAK,IAC9EZ,EAAEY,GAAKC,EAAED,IACb,GAAS,MAALC,GAAqD,mBAAjCrB,OAAOsxG,sBACtB,KAAIhyG,EAAI,EAAb,IAAgB8B,EAAIpB,OAAOsxG,sBAAsBjwG,GAAI/B,EAAI8B,EAAE4C,OAAQ1E,IAC3D4Q,EAAEpK,QAAQ1E,EAAE9B,IAAM,GAAKU,OAAOkB,UAAUwxD,qBAAqBjzD,KAAK4B,EAAGD,EAAE9B,MACvEkB,EAAEY,EAAE9B,IAAM+B,EAAED,EAAE9B,KAE1B,OAAOkB,GAGJ,MAAM,WAAyB,GAClC,oBACI,MAAM21I,EAAK9zI,KAAKs7S,iBAAiB,QAAEv+J,GAAYjJ,EAC/C,OAD4D,GAAOA,EAAI,CAAC,YAG5E,sBACI,OAAO9zI,KAAKL,QAAQ8gS,UAExB,YACI,OAAOzgS,KAAKozR,OAAOjhB,MAEvB,eACI,OAAwC,IAAjCnyQ,KAAKs7S,gBAAgBv+J,QAEhC,OACI/8I,KAAKozR,OAASpzR,KAAKurN,MAAM7rN,KAAK67S,kBAC9Bv7S,KAAKozR,OAAOooB,YAAYx7S,KAAKs7S,iBAEjC,SACQt7S,KAAKwN,WACLxN,KAAKs7S,gBAAgBv+J,SAAU,GAGvC,UACS/8I,KAAKwN,WACNxN,KAAKs7S,gBAAgBv+J,SAAU,GAGvC,KAAKo1H,EAAOxyQ,EAAU,IACbK,KAAKwN,UACNxN,KAAKozR,OAAO7rR,KAAK4qQ,EAAOnyQ,KAAKurN,MAAO5tN,OAAO+rD,OAAO/rD,OAAO+rD,OAAO,GAAI1pD,KAAKy7S,eAAgB97S,IAGjG,IAAIwyQ,EAAOxyQ,EAAU,IACZK,KAAKwN,UACNxN,KAAKozR,OAAOsoB,IAAIvpC,EAAOnyQ,KAAKurN,MAAO5tN,OAAO+rD,OAAO/rD,OAAO+rD,OAAO,GAAI1pD,KAAKy7S,eAAgB97S,IAGhG,MAAMA,EAAU,GAAI4rN,EAAQvrN,KAAKurN,OAC7B,OAAKvrN,KAAKwN,SAGH,GAFIxN,KAAKozR,OAAOuoB,MAAMpwF,EAAO5tN,OAAO+rD,OAAO/rD,OAAO+rD,OAAO,GAAI1pD,KAAKy7S,eAAgB97S,IAI7F,MAAM66E,GACGx6E,KAAKwN,WAAYgtE,GAClBx6E,KAAKozR,OAAOlmC,QAGpB,UACI,OAAOltP,KAAKozR,OAAO1rO,UAEvB,UACI1nD,KAAKktP,OAAM,IAGnB,GAAW,CACP,GAAKj9H,WACN,GAAiBpxH,UAAW,UAAW,MC5E1C,IAAI,GAA0C,SAAUqnP,EAAYx+O,EAAQlJ,EAAK2nP,GAC7E,IAA2H5oP,EAAvHD,EAAImJ,UAAU9E,OAAQ5D,EAAIT,EAAI,EAAIoK,EAAkB,OAATy+O,EAAgBA,EAAOxoP,OAAOkrE,yBAAyBnhE,EAAQlJ,GAAO2nP,EACrH,GAAuB,iBAAZ9gL,SAAoD,mBAArBA,QAAQ+gL,SAAyBroP,EAAIsnE,QAAQ+gL,SAASF,EAAYx+O,EAAQlJ,EAAK2nP,QACpH,IAAK,IAAIlpP,EAAIipP,EAAWvkP,OAAS,EAAG1E,GAAK,EAAGA,KAASM,EAAI2oP,EAAWjpP,MAAIc,GAAKT,EAAI,EAAIC,EAAEQ,GAAKT,EAAI,EAAIC,EAAEmK,EAAQlJ,EAAKT,GAAKR,EAAEmK,EAAQlJ,KAAST,GAChJ,OAAOT,EAAI,GAAKS,GAAKJ,OAAOC,eAAe8J,EAAQlJ,EAAKT,GAAIA,GAKzD,MAAM,WAAyB,GAClC,cACI4gF,SAASl4E,WACTzG,KAAK47S,WAAa,GAEtB,OACI57S,KAAKk/R,iBAET,iBACIl/R,KAAKurN,MAAMnjM,GAAG,iBAAkBpoB,KAAK67S,gBAAiB77S,MACtDA,KAAKurN,MAAMnjM,GAAG,mBAAoBpoB,KAAK87S,kBAAmB97S,MAE9D,gBACIA,KAAKurN,MAAM9iM,IAAI,iBAAkBzoB,KAAK67S,gBAAiB77S,MACvDA,KAAKurN,MAAM9iM,IAAI,mBAAoBzoB,KAAK87S,kBAAmB97S,MAE/D,iBAAkB6sB,KAAMkrN,EAAQ,OAAEC,EAAM,QAAEr4O,EAAU,KAChD,MAAM04E,EAAWr4E,KAAK+7S,mBAAmBp8S,GACzC,IAAK04E,EACD,OAEJ,MAAM75E,EAAMwB,KAAKm4O,iBAAiBH,EAAQ3/J,GAC1C,IAAKr4E,KAAK47S,WAAWp9S,GAAM,CACvB,MAAMq6O,EAAcxgK,EAASwgK,YAC7BA,EAAY1C,UAAU4B,EAAUC,EAAQr6O,OAAO+rD,OAAO,GAAI2uB,EAASljE,OACnEnV,KAAK47S,WAAWp9S,GAAO,CACnBu5O,WACAC,SACAa,cACA1jO,KAAMkjE,EAASljE,OAI3B,mBAAkB,OAAE6iO,EAAM,QAAEr4O,EAAU,KAClC,MAAM04E,EAAWr4E,KAAK+7S,mBAAmBp8S,GACzC,IAAK04E,EACD,OAEJ,MAAM7pE,EAAKxO,KAAKm4O,iBAAiBH,EAAQ3/J,GACzCr4E,KAAK84O,YAAYtqO,GAErB,mBAAmB7O,GACf,MAAMwgS,EAAengS,KAAKL,QAC1B,IAAIq8S,EAAiBr8S,EAAQk5O,YAC7B,GAAsB,MAAlBmjE,EAAwB,CAExB,MAAMz6S,EAAO5B,EAAQ4B,KACrBy6S,EACKz6S,GAAQ4+R,EAAagX,aAAa51S,IAC/B4+R,EAAagX,aAAatrO,QAEtC,GAAsB,MAAlBmwO,EACA,OAAO,KAEX,MAAMn4O,EAAgC,iBAAnBm4O,EACb,CACEx+S,KAAMw+S,GAERA,EACAx+S,EAAOqmE,EAAIrmE,KACXq7O,EAAc,GAAYnF,SAAS51O,IAAIN,GAC7C,OAAmB,MAAfq7O,EACO,GAAYnF,SAASQ,WAAW12O,IAE3C,GAAY4W,MAAM5W,EAAMq7O,GACjB,CACHr7O,OACAq7O,cACA1jO,KAAM0uD,EAAI1uD,MAAQ,KAG1B,iBAAiB6iO,EAAQr4O,GAErB,OADA,EAAIkrG,SAASmtI,GACNr4O,EAAQnC,KAAOw6O,EAAOxpO,GAAKuU,KAAKs3C,UAAU16D,EAAQwV,MAE7D,YAAY3G,GACR,MAAM2nO,EAAYn2O,KAAK47S,WAAWptS,GAC9B2nO,IACAA,EAAU0C,YAAYC,YAAY3C,EAAU4B,SAAU5B,EAAU6B,OAAQ7B,EAAUhhO,aAC3EnV,KAAK47S,WAAWptS,IAG/B,UACI7Q,OAAOyR,KAAKpP,KAAK47S,YAAYzwQ,QAAS38B,GAAOxO,KAAK84O,YAAYtqO,IAC9DxO,KAAKi/R,iBAGb,GAAW,CACP,GAAiBhvK,WAClB,GAAiBpxH,UAAW,UAAW,MClG1C,IAAI,GAA0C,SAAUqnP,EAAYx+O,EAAQlJ,EAAK2nP,GAC7E,IAA2H5oP,EAAvHD,EAAImJ,UAAU9E,OAAQ5D,EAAIT,EAAI,EAAIoK,EAAkB,OAATy+O,EAAgBA,EAAOxoP,OAAOkrE,yBAAyBnhE,EAAQlJ,GAAO2nP,EACrH,GAAuB,iBAAZ9gL,SAAoD,mBAArBA,QAAQ+gL,SAAyBroP,EAAIsnE,QAAQ+gL,SAASF,EAAYx+O,EAAQlJ,EAAK2nP,QACpH,IAAK,IAAIlpP,EAAIipP,EAAWvkP,OAAS,EAAG1E,GAAK,EAAGA,KAASM,EAAI2oP,EAAWjpP,MAAIc,GAAKT,EAAI,EAAIC,EAAEQ,GAAKT,EAAI,EAAIC,EAAEmK,EAAQlJ,EAAKT,GAAKR,EAAEmK,EAAQlJ,KAAST,GAChJ,OAAOT,EAAI,GAAKS,GAAKJ,OAAOC,eAAe8J,EAAQlJ,EAAKT,GAAIA,GAKzD,MAAM,WAAyB,GAClC,cACI4gF,SAASl4E,WACTzG,KAAKi8S,QAAU,IAAI97O,IAEvB,gBACI,OAAOngE,KAAKurN,MAAM1+L,KAAKiF,UAE3B,eACI,OAAO9xB,KAAKurN,MAAM1+L,KAAKsmJ,SAE3B,yBACI,OAA0C,IAAnCnzK,KAAKL,QAAQ4gS,UAAUxjJ,QAElC,OACI/8I,KAAKk/R,iBACLl/R,KAAKyvH,SAET,iBACIzvH,KAAKurN,MAAMnjM,GAAG,eAAgBpoB,KAAKk8S,cAAel8S,MAClDA,KAAKurN,MAAMnjM,GAAG,gBAAiBpoB,KAAKm8S,eAAgBn8S,MACpDA,KAAKurN,MAAMnjM,GAAG,kBAAmBpoB,KAAKo8S,iBAAkBp8S,MAE5D,gBACIA,KAAKurN,MAAM9iM,IAAI,eAAgBzoB,KAAKk8S,cAAel8S,MACnDA,KAAKurN,MAAM9iM,IAAI,gBAAiBzoB,KAAKm8S,eAAgBn8S,MACrDA,KAAKurN,MAAM9iM,IAAI,kBAAmBzoB,KAAKo8S,iBAAkBp8S,MAE7D,eAAc,KAAE2E,IACZ,IAAK3E,KAAKq8S,mBAAoB,CAC1B,MAAMjpB,EAASpzR,KAAKurN,MAAM7rN,KAAK48S,gBAAgB33S,EAAM,CAAE0/J,UAAU,IAC7D+uH,GACApzR,KAAKi8S,QAAQ35R,IAAI3d,EAAMyuR,IAInC,gBAAe,KAAEzuR,IACb,GAAI3E,KAAKq8S,mBAAoB,CACzB,MAAMjpB,EAASpzR,KAAKurN,MAAM7rN,KAAK48S,gBAAgB33S,EAAM,CAAE0/J,UAAU,IAC7D+uH,GACApzR,KAAKi8S,QAAQ35R,IAAI3d,EAAMyuR,IAInC,kBAAiB,KAAEzuR,IACf,GAAI3E,KAAKq8S,mBAAoB,CACzB,MAAMjpB,EAASpzR,KAAKi8S,QAAQn+S,IAAI6G,GAC5ByuR,GACAA,EAAOnjK,UAEXjwH,KAAKi8S,QAAQ74N,OAAOz+E,IAM5B,YACI,MAAM6uC,EAAYxzC,KAAKmzK,SAASluK,aAAa,aAS7C,OARIuuC,IAAcxzC,KAAKu8S,0BAGnBv8S,KAAKw8S,eAAiBx8S,KAAKmzK,SAASspI,SACpCz8S,KAAKu8S,wBAA0B/oQ,GAI5B,EAAI4qF,gBAAgBp+H,KAAKw8S,gBAKpC,UAAUplP,GACN,MAAMwnE,EAAM,EAAIR,gBAAgBhnE,GAC1B5jB,EAAY,EAAIyqF,wBAAwBW,GAC9C5+H,KAAKmzK,SAASjuK,aAAa,YAAasuC,GACxCxzC,KAAKw8S,eAAiB59K,EACtB5+H,KAAKu8S,wBAA0B/oQ,EAEnC,OAAOniB,EAAOoC,GACV,IAAI1wB,OAAcb,IAAVmvB,EAAsBrxB,KAAKL,QAAQ0xB,MAAQA,EAC/CxwB,OAAeqB,IAAXuxB,EAAuBzzB,KAAKL,QAAQ8zB,OAASA,EACrDzzB,KAAKL,QAAQ0xB,MAAQtuB,EACrB/C,KAAKL,QAAQ8zB,OAAS5yB,EACL,iBAANkC,IACPA,EAAI+E,KAAK8qB,MAAM7vB,IAEF,iBAANlC,IACPA,EAAIiH,KAAK8qB,MAAM/xB,IAEnBb,KAAK8xB,UAAUxN,MAAM+M,MAAa,MAALtuB,EAAY,GAAQA,EAAH,KAC9C/C,KAAK8xB,UAAUxN,MAAMmP,OAAc,MAAL5yB,EAAY,GAAQA,EAAH,KAC/C,MAAM+7C,EAAO58C,KAAK08S,kBAElB,OADA18S,KAAKurN,MAAMriM,QAAQ,SAAUvrB,OAAO+rD,OAAO,GAAI9M,IACxC58C,KAEX,kBACI,IAAI+C,EAAI/C,KAAKL,QAAQ0xB,MACjBxwB,EAAIb,KAAKL,QAAQ8zB,OAOrB,OANK,EAAU40B,SAAStlD,KACpBA,EAAI/C,KAAK8xB,UAAUoiH,aAElB,EAAU7rF,SAASxnD,KACpBA,EAAIb,KAAK8xB,UAAUqiH,cAEhB,CAAE9iH,MAAOtuB,EAAG0wB,OAAQ5yB,GAE/B,WACI,OAAO,EAAIi9H,cAAc99H,KAAKo0P,aAElC,MAAM1gM,EAAIC,EAAKD,EAAI4yC,EAAK,EAAGC,EAAK,EAAG5mG,EAAU,IAGzC,GAFA+zD,EAAK1zD,KAAK8uS,WAAWp7O,GACrBC,EAAK3zD,KAAK8uS,WAAWn7O,GACjB2yC,GAAMC,EAAI,CACV,MAAMoiC,EAAK3oI,KAAK28S,iBACVhiP,EAAKguE,EAAGhuE,GAAK2rC,GAAM5yC,EAAK,GACxBkH,EAAK+tE,EAAG/tE,GAAK2rC,GAAM5yC,EAAK,GAC1BgH,IAAOguE,EAAGhuE,IAAMC,IAAO+tE,EAAG/tE,IAC1B56D,KAAKozD,UAAUuH,EAAIC,GAG3B,MAAMxD,EAASp3D,KAAKo0P,YAKpB,OAJAh9L,EAAOpsD,EAAI0oD,EACX0D,EAAO75D,EAAIo2D,EACX3zD,KAAKk9L,UAAU9lI,GACfp3D,KAAKurN,MAAMriM,QAAQ,QAASvrB,OAAO+rD,OAAO,CAAEgK,KAAIC,KAAI2yC,KAAIC,MAAM5mG,IACvDK,KAEX,WAAW6kB,GACP,MAAM0pC,EAAQvuD,KAAKurN,MAAM5rN,QAAQu3S,QACjC,OAAO,EAAU1tP,MAAM3kC,EAAO0pC,EAAMvT,KAAO,IAAMuT,EAAMx5B,KAAO,IAElE,UACI,OAAO/0B,KAAKkhS,WAAWxtO,GAE3B,KAAK89J,EAAQ7xN,GACTA,EAAUA,GAAW,GACrB,IAAI+zD,EAAK89J,EACL79J,EAAK69J,EACT,MAAM3sM,EAAQ7kB,KAAKkhS,WACbkN,EAAapuS,KAAK08S,kBACxB,IAAI1/M,EAAKoxM,EAAW/8Q,MAAQ,EACxB4rE,EAAKmxM,EAAW36Q,OAAS,EAuB7B,GAtBK9zB,EAAQ48L,WACT7oI,GAAM7uC,EAAM6uC,GACZC,GAAM9uC,EAAM8uC,IAEZh0D,EAAQkvS,YACRn7O,EAAK5rD,KAAK8qB,MAAM8gC,EAAK/zD,EAAQkvS,WAAalvS,EAAQkvS,UAClDl7O,EAAK7rD,KAAK8qB,MAAM+gC,EAAKh0D,EAAQkvS,WAAalvS,EAAQkvS,WAElDlvS,EAAQ+hS,WACRhuO,EAAK5rD,KAAKkzC,IAAIr7C,EAAQ+hS,SAAUhuO,GAChCC,EAAK7rD,KAAKkzC,IAAIr7C,EAAQ+hS,SAAU/tO,IAEhCh0D,EAAQ8hS,WACR/tO,EAAK5rD,KAAKitB,IAAIp1B,EAAQ8hS,SAAU/tO,GAChCC,EAAK7rD,KAAKitB,IAAIp1B,EAAQ8hS,SAAU9tO,IAEhCh0D,EAAQ8zD,SACRupC,EAAKr9F,EAAQ8zD,OAAOlhB,EACpB0qD,EAAKt9F,EAAQ8zD,OAAOjhB,GAExBkhB,EAAK1zD,KAAK8uS,WAAWp7O,GACrBC,EAAK3zD,KAAK8uS,WAAWn7O,GACjBqpC,GAAMC,EAAI,CACV,MAAM0rC,EAAK3oI,KAAK28S,iBACVhiP,EAAKqiC,GAAMA,EAAK2rC,EAAGhuE,KAAOjH,EAAK7uC,EAAM6uC,IACrCkH,EAAKqiC,GAAMA,EAAK0rC,EAAG/tE,KAAOjH,EAAK9uC,EAAM8uC,IACvCgH,IAAOguE,EAAGhuE,IAAMC,IAAO+tE,EAAG/tE,IAC1B56D,KAAKozD,UAAUuH,EAAIC,EAAI,CAAE+9L,GAAIh5P,EAAQg5P,KAI7C,OADA34P,KAAK6kB,MAAM6uC,EAAIC,EAAI,EAAG,EAAG,CAAEglM,GAAIh5P,EAAQg5P,KAChC34P,KAEX,cACI,OAAO,EAAI69H,iBAAiB79H,KAAKo0P,aAErC,OAAO1/L,EAAOsoC,EAAIC,GACd,GAAU,MAAND,GAAoB,MAANC,EAAY,CAC1B,MAAM1hC,EAAO,EAAIqhE,QAAQ58H,KAAKurN,MAAM1+L,KAAKohG,OACzCjxB,EAAKzhC,EAAKlqC,MAAQ,EAClB4rE,EAAK1hC,EAAK9nC,OAAS,EAEvB,MAAMmrG,EAAM5+H,KAAKo0P,YACZhhM,UAAU4pC,EAAIC,GACd1pC,OAAOmB,GACPtB,WAAW4pC,GAAKC,GAErB,OADAj9F,KAAKk9L,UAAUt+D,GACR5+H,KAEX,iBACI,OAAO,EAAI49H,oBAAoB59H,KAAKo0P,aAExC,UAAUz5L,EAAIC,EAAIj7D,EAAU,IACxB,MAAMy3D,EAASp3D,KAAKo0P,YACpBh9L,EAAOvpD,EAAI8sD,GAAM,EACjBvD,EAAO49C,EAAIp6C,GAAM,EACjB56D,KAAKk9L,UAAU9lI,GACf,MAAMuxE,EAAK3oI,KAAK28S,iBAIhB,OAHA38S,KAAKL,QAAQ4yC,EAAIo2F,EAAGhuE,GACpB36D,KAAKL,QAAQ6yC,EAAIm2F,EAAG/tE,GACpB56D,KAAKurN,MAAMriM,QAAQ,YAAavrB,OAAO+rD,OAAO/rD,OAAO+rD,OAAO,GAAIi/E,GAAKhpI,IAC9DK,KAEX,UAAUsmG,EAAIC,GACV,OAAOvmG,KAAKozD,UAAUkzC,GAAM,EAAGC,GAAM,GAEzC,aAAa6mM,EAAWC,EAAY52Q,EAAS92B,GACzC,GAAyB,iBAAdytS,EAAwB,CAC/B,MAAMh0Q,EAAOg0Q,EACbA,EAAYh0Q,EAAKg0Q,WAAa,EAC9BC,EAAaj0Q,EAAKi0Q,YAAc,EAChC52Q,EAAU2C,EAAK3C,SAAW,EAC1B92B,EAAUy5B,OAGVg0Q,EAAYA,GAAa,EACzBC,EAAaA,GAAc,EAC3B52Q,EAAUA,GAAW,EACN,MAAX92B,IACAA,EAAU,IAGlB,MAAMymJ,EAAW,EAAU4qC,eAAev6J,GACpCC,EAAS/2B,EAAQ+2B,QAAU,EAC3B+2Q,EAAc9tS,EAAQ8tS,YACtB,GAAUlvS,OAAOoB,EAAQ8tS,aACzBztS,KAAK0tS,eAAe/tS,GACtB+2B,EAAS,GACT+2Q,EAAYznM,QAAQtvE,GAExB,MAAM7R,EAAQ7kB,KAAKkhS,WACb9tO,EAAYpzD,KAAK28S,iBACjBjpP,EAAK7uC,EAAM6uC,GACXC,EAAK9uC,EAAM8uC,GACjB85O,EAAYl7P,GAAKmhB,EACjB+5O,EAAYj7P,GAAKmhB,EACjB85O,EAAYp8Q,OAASqiC,EACrB+5O,EAAYh6Q,QAAUkgC,EACtB,IAAItiC,EAAQvpB,KAAKitB,IAAIjtB,KAAK0tB,MAAMi4Q,EAAYp8Q,MAAQo8Q,EAAYl7P,GAAK66P,GAAY,GAC7EA,EACA35Q,EAAS3rB,KAAKitB,IAAIjtB,KAAK0tB,MAAMi4Q,EAAYh6Q,OAASg6Q,EAAYj7P,GAAK66P,GAAa,GAAKA,EACrF1yO,EAAK,EACLC,EAAK,GACuB,aAA3Bj7D,EAAQ2tS,gBAAiCG,EAAYl7P,EAAI,GAC9B,aAA3B5yC,EAAQ2tS,gBAAiCG,EAAYl7P,GAAK,GAChC,QAA3B5yC,EAAQ2tS,kBACR3yO,EAAK7yD,KAAK0tB,MAAMi4Q,EAAYl7P,EAAI66P,GAAaA,EAC7CzyO,GAAMyrF,EAAS7vH,KACflF,GAASspC,IAEmB,aAA3Bh7D,EAAQ2tS,gBAAiCG,EAAYj7P,EAAI,GAC9B,aAA3B7yC,EAAQ2tS,gBAAiCG,EAAYj7P,GAAK,GAChC,QAA3B7yC,EAAQ2tS,kBACR1yO,EAAK9yD,KAAK0tB,MAAMi4Q,EAAYj7P,EAAI66P,GAAcA,EAC9CzyO,GAAMwrF,EAASn1I,IACfwiB,GAAUmnC,GAEdvpC,GAAS+0H,EAAS/zH,MAClBoB,GAAU2yH,EAAS5qF,OAEnBnqC,EAAQvpB,KAAKitB,IAAI1D,EAAO1xB,EAAQ2xB,UAAY,GAC5CmC,EAAS3rB,KAAKitB,IAAItB,EAAQ9zB,EAAQ+iM,WAAa,GAE/CrxK,EAAQvpB,KAAKkzC,IAAI3pB,EAAO1xB,EAAQ4xB,UAAY2qC,OAAOswM,kBACnD/4O,EAAS3rB,KAAKkzC,IAAIvnB,EAAQ9zB,EAAQgjM,WAAazmI,OAAOswM,kBACtD,MAAM5vN,EAAO58C,KAAK08S,kBACZE,EAAcvrR,IAAUurB,EAAKvrB,OAASoC,IAAWmpB,EAAKnpB,OAS5D,OARsBknC,IAAOvH,EAAUuH,IAAMC,IAAOxH,EAAUwH,KAG1D56D,KAAKozD,UAAUuH,EAAIC,GAEnBgiP,GACA58S,KAAKyvH,OAAOp+F,EAAOoC,GAEhB,IAAI,IAAWknC,EAAKjH,GAAKkH,EAAKjH,EAAItiC,EAAQqiC,EAAIjgC,EAASkgC,GAElE,kBAAkBh0D,EAAU,IACxBK,KAAKmvS,sBAAsBxvS,GAE/B,sBAAsBA,EAAU,GAAIyzD,GAAY,GAC5C,IAAIypP,EACAC,EACJ,GAAIn9S,EAAQ8tS,YAAa,CACrB,MAAMA,EAAc9tS,EAAQ8tS,YAC5BoP,EAAc78S,KAAKurN,MAAMqpC,aAAa64C,GACtCqP,EAAqB,GAAMv+S,OAAOkvS,QAGlCoP,EAAc78S,KAAK+8S,eAAep9S,GAClCm9S,EAAqB98S,KAAKurN,MAAMyxF,aAAaH,GAEjD,IAAKA,EAAYxrR,QAAUwrR,EAAYppR,OACnC,OAEJ,MAAMgD,EAAU,EAAUu6J,eAAerxL,EAAQ82B,SAC3CgrQ,EAAW9hS,EAAQ8hS,UAAY,EAC/BC,EAAW/hS,EAAQ+hS,UAAYxlO,OAAOswM,iBACtCywC,EAAYt9S,EAAQs9S,WAAaxb,EACjCyb,EAAYv9S,EAAQu9S,WAAaxb,EACjCyb,EAAYx9S,EAAQw9S,WAAa1b,EACjC2b,EAAYz9S,EAAQy9S,WAAa1b,EACvC,IAAI2b,EACJ,GAAI19S,EAAQuvS,aACRmO,EAAa19S,EAAQuvS,iBAEpB,CACD,MAAMoO,EAAet9S,KAAK08S,kBACpBa,EAAmBv9S,KAAK28S,iBAC9BU,EAAa,CACT9qQ,EAAGgrQ,EAAiB5iP,GACpBnoB,EAAG+qQ,EAAiB3iP,GACpBvpC,MAAOisR,EAAajsR,MACpBoC,OAAQ6pR,EAAa7pR,QAG7B4pR,EAAa,GAAU9+S,OAAO8+S,GAAYl3M,cAAc,CACpD5zD,EAAG9b,EAAQF,KACXic,EAAG/b,EAAQxlB,IACXogB,OAAQoF,EAAQF,KAAOE,EAAQpE,MAC/BoB,QAASgD,EAAQxlB,IAAMwlB,EAAQ+kC,SAEnC,MAAMgiP,EAAex9S,KAAKkhS,WAC1B,IAAIuc,EAASJ,EAAWhsR,MAAQwrR,EAAYxrR,MAASmsR,EAAa9pP,GAC9DgqP,EAASL,EAAW5pR,OAASopR,EAAYppR,OAAU+pR,EAAa7pP,IAChC,IAAhCh0D,EAAQmvO,sBACR2uE,EAAQC,EAAQ51S,KAAKkzC,IAAIyiQ,EAAOC,IAGpC,MAAMr8L,EAAW1hH,EAAQkvS,UASzB,GARIxtL,IACAo8L,EAAQp8L,EAAWv5G,KAAKq4C,MAAMs9P,EAAQp8L,GACtCq8L,EAAQr8L,EAAWv5G,KAAKq4C,MAAMu9P,EAAQr8L,IAG1Co8L,EAAQ,EAAUj0P,MAAMi0P,EAAOR,EAAWC,GAC1CQ,EAAQ,EAAUl0P,MAAMk0P,EAAOP,EAAWC,GAC1Cp9S,KAAK6kB,MAAM44R,EAAOC,GACdtqP,EAAW,CACX,MAAMQ,EAAS5zD,KAAKL,QACdg+S,EAAQN,EAAW9qQ,EAAIuqQ,EAAmBvqQ,EAAIkrQ,EAAQ7pP,EAAOrhB,EAC7DqrQ,EAAQP,EAAW7qQ,EAAIsqQ,EAAmBtqQ,EAAIkrQ,EAAQ9pP,EAAOphB,EACnExyC,KAAKozD,UAAUuqP,EAAOC,IAG9B,eAAej+S,EAAU,IACrB,OAAIA,EAAQ+0P,gBACD10P,KAAKs5E,MAAMukO,mBAAqB,IAAI,GAExC,EAAIjhL,QAAQ58H,KAAKurN,MAAM1+L,KAAKohG,OAEvC,eAAetuH,EAAU,IACrB,OAAOK,KAAKurN,MAAMqpC,aAAa50P,KAAK0tS,eAAe/tS,IAEvD,eACI,MAAMkpC,EAAO,GAAUogE,SAASjpG,KAAK08S,mBACrC,OAAO18S,KAAKurN,MAAMyxF,aAAan0Q,GAEnC,WAAWA,EAAMlpC,EAAU,IACvB,MAAM87I,EAAO,GAAUl9I,OAAOsqC,GACxB0iL,EAAQvrN,KAAKurN,MACnB5rN,EAAQ8tS,YAAchyJ,EACM,MAAxB97I,EAAQuvS,eACRvvS,EAAQuvS,aAAe,CACnB38P,EAAGg5K,EAAM5rN,QAAQ4yC,EACjBC,EAAG+4K,EAAM5rN,QAAQ6yC,EACjBnhB,MAAOrxB,KAAKL,QAAQ0xB,MACpBoC,OAAQzzB,KAAKL,QAAQ8zB,SAG7BzzB,KAAKmvS,sBAAsBxvS,GAAS,GACpC,MAAM8zD,EAASgoF,EAAK/gF,YAEpB,OADA16D,KAAK2hS,YAAYluO,EAAOlhB,EAAGkhB,EAAOjhB,GAC3BxyC,KAEX,UAAUL,EAAU,IAChB,OAAOK,KAAKovS,WAAWpvS,KAAK0tS,eAAe/tS,GAAUA,GAEzD,YAAY4yC,EAAGC,GACX,MAAM47P,EAAapuS,KAAK08S,kBAClB73R,EAAQ7kB,KAAKkhS,WACbv4J,EAAK3oI,KAAK28S,iBACV3/M,EAAKoxM,EAAW/8Q,MAAQ,EACxB4rE,EAAKmxM,EAAW36Q,OAAS,EAE/B+e,EAAiB,iBAANA,EAAiBA,EAAIyqD,EAChC1qD,EAAIyqD,GAFJzqD,EAAiB,iBAANA,EAAiBA,EAAIyqD,GAEnBn4E,EAAM6uC,GACnBlhB,EAAIyqD,EAAKzqD,EAAI3tB,EAAM8uC,GACfg1E,EAAGhuE,KAAOpoB,GAAKo2F,EAAG/tE,KAAOpoB,GACzBxyC,KAAKozD,UAAU7gB,EAAGC,GAG1B,cAAc7yC,GACV,MACM8zD,EADOzzD,KAAKurN,MAAMmiF,eAAe/tS,GACnB+6D,YACpB16D,KAAK2hS,YAAYluO,EAAOlhB,EAAGkhB,EAAOjhB,GAEtC,WAAWq/L,GACP,OAAO7xO,KAAKwuS,aAAa38D,EAAM,UAEnC,cAAc17K,EAAO5jB,EAAGC,GACpB,MAAM47P,EAAapuS,KAAK08S,mBAExBnqQ,EAAI,EAAU45I,oBAAoB55I,EAAGzqC,KAAKitB,IAAI,EAAGq5Q,EAAW/8Q,SACpD,IACJkhB,EAAI67P,EAAW/8Q,MAAQkhB,IAG3BC,EAAI,EAAU25I,oBAAoB35I,EAAG1qC,KAAKitB,IAAI,EAAGq5Q,EAAW36Q,UACpD,IACJ+e,EAAI47P,EAAW36Q,OAAS+e,GAE5B,MAAMm2F,EAAK3oI,KAAK28S,iBACV93R,EAAQ7kB,KAAKkhS,WACb7tO,EAAK9gB,EAAI4jB,EAAM5jB,EAAI1tB,EAAM6uC,GACzBJ,EAAK9gB,EAAI2jB,EAAM3jB,EAAI3tB,EAAM8uC,GAC3Bg1E,EAAGhuE,KAAOtH,GAAMs1E,EAAG/tE,KAAOtH,GAC1BtzD,KAAKozD,UAAUC,EAAIC,GAG3B,aAAazqB,EAAMxR,GACf,MAAMkkC,EAAO,GAAUh9D,OAAOsqC,GAC9B,OAAQxR,GACJ,IAAK,SACD,OAAOr3B,KAAKkuS,cAAc3yO,EAAKb,YAAa,MAAO,OACvD,IAAK,MACD,OAAO16D,KAAKkuS,cAAc3yO,EAAKgpC,eAAgB,MAAO,GAC1D,IAAK,YACD,OAAOvkG,KAAKkuS,cAAc3yO,EAAKkpC,cAAe,OAAQ,GAC1D,IAAK,QACD,OAAOzkG,KAAKkuS,cAAc3yO,EAAK2pC,iBAAkB,OAAQ,OAC7D,IAAK,eACD,OAAOllG,KAAKkuS,cAAc3yO,EAAKwpC,iBAAkB,OAAQ,QAC7D,IAAK,SACD,OAAO/kG,KAAKkuS,cAAc3yO,EAAKspC,kBAAmB,MAAO,QAC7D,IAAK,cACD,OAAO7kG,KAAKkuS,cAAc3yO,EAAKqpC,gBAAiB,EAAG,QACvD,IAAK,OACD,OAAO5kG,KAAKkuS,cAAc3yO,EAAK6pC,gBAAiB,EAAG,OACvD,IAAK,WACD,OAAOplG,KAAKkuS,cAAc3yO,EAAK+oC,aAAc,EAAG,GACpD,QACI,OAAOtkG,MAGnB,aAAa6xO,EAAMx6M,GACf,MAAMkkC,EAAOs2K,EAAKj1G,UAClB,OAAO58H,KAAKyuS,aAAalzO,EAAMlkC,GAEnC,gBAAgBA,EAAK13B,GACjB,MAAMkpC,EAAO7oC,KAAKurN,MAAMmiF,eAAe/tS,GACvC,OAAOK,KAAKyuS,aAAa5lQ,EAAMxR,GAEnC,UACIr3B,KAAKi8S,QAAQ9wQ,QAASioP,GAAWA,EAAOnjK,WACxCjwH,KAAKi8S,QAAQpjP,QACb74D,KAAKi/R,iBAGb,GAAW,CACP,GAAiBhvK,WAClB,GAAiBpxH,UAAW,UAAW,MCxd1C,IAAI,GAA0C,SAAUqnP,EAAYx+O,EAAQlJ,EAAK2nP,GAC7E,IAA2H5oP,EAAvHD,EAAImJ,UAAU9E,OAAQ5D,EAAIT,EAAI,EAAIoK,EAAkB,OAATy+O,EAAgBA,EAAOxoP,OAAOkrE,yBAAyBnhE,EAAQlJ,GAAO2nP,EACrH,GAAuB,iBAAZ9gL,SAAoD,mBAArBA,QAAQ+gL,SAAyBroP,EAAIsnE,QAAQ+gL,SAASF,EAAYx+O,EAAQlJ,EAAK2nP,QACpH,IAAK,IAAIlpP,EAAIipP,EAAWvkP,OAAS,EAAG1E,GAAK,EAAGA,KAASM,EAAI2oP,EAAWjpP,MAAIc,GAAKT,EAAI,EAAIC,EAAEQ,GAAKT,EAAI,EAAIC,EAAEmK,EAAQlJ,EAAKT,GAAKR,EAAEmK,EAAQlJ,KAAST,GAChJ,OAAOT,EAAI,GAAKS,GAAKJ,OAAOC,eAAe8J,EAAQlJ,EAAKT,GAAIA,GAIzD,MAAM,WAAyB,GAClC,cACI4gF,SAASl4E,WACTzG,KAAK89S,SAAW,IAAIt9O,QACpBxgE,KAAK+9S,YAAc,IAAIv9O,QAE3B,oBACI,OAAOxgE,KAAKL,QAAQ4gS,UAExB,yBACI,OAAuC,IAA/BvgS,KAAKy6S,cAAc19J,UACW,IAAlC/8I,KAAKy6S,cAAc5G,WAE3B,eACI,OAAsC,IAA/B7zS,KAAKy6S,cAAc19J,QAE9B,aACI,OAAO/8I,KAAKozR,OAAOzxR,OAEvB,YACI,OAAO3B,KAAKozR,OAAOjhB,MAEvB,OACInyQ,KAAKozR,OAASpzR,KAAKurN,MAAM7rN,KAAKs+S,kBAC9Bh+S,KAAKk/R,iBAET,iBACIl/R,KAAKurN,MAAMnjM,GAAG,kBAAmBpoB,KAAKi+S,iBAAkBj+S,MACxDA,KAAKurN,MAAMnjM,GAAG,cAAepoB,KAAKk+S,aAAcl+S,MAChDA,KAAKurN,MAAMnjM,GAAG,iBAAkBpoB,KAAKm+S,gBAAiBn+S,MACtDA,KAAKurN,MAAMnjM,GAAG,eAAgBpoB,KAAKo+S,cAAep+S,MAClDA,KAAKozR,OAAOhrQ,GAAG,gBAAiBpoB,KAAKq+S,eAAgBr+S,MAEzD,gBACIA,KAAKurN,MAAM9iM,IAAI,kBAAmBzoB,KAAKi+S,iBAAkBj+S,MACzDA,KAAKurN,MAAM9iM,IAAI,cAAezoB,KAAKk+S,aAAcl+S,MACjDA,KAAKurN,MAAM9iM,IAAI,iBAAkBzoB,KAAKm+S,gBAAiBn+S,MACvDA,KAAKurN,MAAM9iM,IAAI,eAAgBzoB,KAAKo+S,cAAep+S,MACnDA,KAAKozR,OAAO3qQ,IAAI,gBAAiBzoB,KAAKq+S,eAAgBr+S,MAE1D,kBAAiB,EAAE6N,KACX7N,KAAKg7S,gBAAgBntS,GAAG,IACvB7N,KAAKg7S,gBAAgBntS,KACjB7N,KAAKurN,MAAM0oE,SAAS6mB,aAAajtS,GAAG,KACpC7N,KAAKurN,MAAMurF,QAAQgE,aAAajtS,GAAG,KACxC7N,KAAKs+S,gBAAgBzwS,GAG7B,eACI7N,KAAKktP,QAET,gBAAgBr/O,EAAG+yK,GACf,OAAS5gL,KAAKu+S,oBACVvE,GAAYhyP,QAAQn6C,EAAG7N,KAAKy6S,cAAc/yN,UAAWk5F,IACrD5gL,KAAKurN,MAAM7rN,KAAKs7S,gBAAgBntS,GAExC,iBAAgB,KAAEgkO,IACd7xO,KAAK89S,SAASx7R,IAAIuvN,GAAM,GAE5B,eAAc,EAAEhkO,EAAC,KAAEgkO,IACf,MAAMlyO,EAAUK,KAAKy6S,cACrB,IAAIjtS,EAAWxN,KAAKwN,UACfA,GAAYxN,KAAK89S,SAASziS,IAAIw2N,KAC/BrkO,GAAyC,IAA9B7N,EAAQo4S,kBACdvqS,IACDA,GAAyC,IAA9B7N,EAAQq4S,mBAA+BnmE,EAAKhlD,UAEtDr/K,IACDA,GAAyC,IAA9B7N,EAAQs4S,mBAA+BpmE,EAAKptK,WAG1Dj3D,KACwB,IAArB7N,EAAQ+lF,WAAwB73E,EAAEye,UAAYze,EAAE4e,QAChDzsB,KAAK2W,MAAMk7N,GAEN7xO,KAAK+9S,YAAY1iS,IAAIw2N,GAC1B7xO,KAAK+9S,YAAY36N,OAAOyuJ,GAEnB7xO,KAAKw+S,WAAW3sE,GACrB7xO,KAAK0xS,SAAS7/D,GAGd7xO,KAAK4J,OAAOioO,IAGpB7xO,KAAK89S,SAAS16N,OAAOyuJ,GAEzB,gBAAe,EAAEhkO,EAAC,KAAEgkO,IACX7xO,KAAKwN,WAC8B,IAAhCxN,KAAKy6S,cAAc/0N,WAAuB73E,EAAEye,SAAWze,EAAE4e,WACzDzsB,KAAK0xS,SAAS7/D,GACd7xO,KAAK+9S,YAAYz7R,IAAIuvN,GAAM,IAIvC,UACI,OAAO7xO,KAAK2B,QAAU,EAE1B,WAAWkwO,GACP,OAAO7xO,KAAKozR,OAAOorB,WAAW3sE,GAElC,SAASsgC,GACL,OAAQjxQ,MAAMD,QAAQkxQ,GAASA,EAAQ,CAACA,IACnC5rQ,IAAKsrO,GAAyB,iBAATA,EAAoB7xO,KAAKurN,MAAM47D,YAAYt1C,GAAQA,GACxErgO,OAAQqgO,GAAiB,MAARA,GAE1B,OAAOsgC,EAAOxyQ,EAAU,IACpB,MAAMuW,EAAWlW,KAAKmtR,SAAShb,GAS/B,OARIj8P,EAASvU,SACL3B,KAAKs1F,aACLt1F,KAAKozR,OAAOxpR,OAAOsM,EAAUvW,GAG7BK,KAAK2W,MAAMT,EAAS5S,MAAM,EAAG,GAAI3D,IAGlCK,KAEX,SAASmyQ,EAAOxyQ,EAAU,IAEtB,OADAK,KAAKozR,OAAOse,SAAS1xS,KAAKmtR,SAAShb,GAAQxyQ,GACpCK,KAEX,MAAMmyQ,EAAOxyQ,EAAU,IAEnB,OADAK,KAAKozR,OAAOz8Q,MAAMw7P,EAAQnyQ,KAAKmtR,SAAShb,GAAS,GAAIxyQ,GAC9CK,KAEX,MAAML,EAAU,IAEZ,OADAK,KAAKozR,OAAOlmC,MAAMvtP,GACXK,KAEX,SAII,OAHIA,KAAKwN,WACLxN,KAAKy6S,cAAc19J,SAAU,GAE1B/8I,KAEX,UAII,OAHKA,KAAKwN,WACNxN,KAAKy6S,cAAc19J,SAAU,GAE1B/8I,KAEX,gBAAgB6N,GAIZ,OAHK7N,KAAKu+S,oBACNv+S,KAAKozR,OAAOqrB,eAAe5wS,GAExB7N,KAEX,mBAYI,OAXIA,KAAKu+S,qBACLv+S,KAAKy6S,cAAc5G,YAAa,GAU7B7zS,KAEX,oBAII,OAHKA,KAAKu+S,qBACNv+S,KAAKy6S,cAAc5G,YAAa,GAE7B7zS,KAEX,aACI,OAAuC,IAAhCA,KAAKy6S,cAAc/0N,SAE9B,iBAEI,OADA1lF,KAAKy6S,cAAc/0N,UAAW,EACvB1lF,KAEX,kBAEI,OADAA,KAAKy6S,cAAc/0N,UAAW,EACvB1lF,KAEX,aAAa0nF,GAET,OADA1nF,KAAKy6S,cAAc/yN,UAAYA,EACxB1nF,KAEX,WAAWgc,GAEP,OADAhc,KAAKozR,OAAO6E,WAAWj8Q,GAChBhc,KAEX,UAAUwR,GAEN,OADAxR,KAAKozR,OAAOsrB,UAAUltS,GACfxR,KAEX,UACIA,KAAKi/R,gBACLj/R,KAAKozR,OAAOnjK,WAGpB,GAAW,CACP,GAAKA,WACN,GAAiBpxH,UAAW,UAAW,MC9M1C,IA6dI,GA7dA,GAA0C,SAAUqnP,EAAYx+O,EAAQlJ,EAAK2nP,GAC7E,IAA2H5oP,EAAvHD,EAAImJ,UAAU9E,OAAQ5D,EAAIT,EAAI,EAAIoK,EAAkB,OAATy+O,EAAgBA,EAAOxoP,OAAOkrE,yBAAyBnhE,EAAQlJ,GAAO2nP,EACrH,GAAuB,iBAAZ9gL,SAAoD,mBAArBA,QAAQ+gL,SAAyBroP,EAAIsnE,QAAQ+gL,SAASF,EAAYx+O,EAAQlJ,EAAK2nP,QACpH,IAAK,IAAIlpP,EAAIipP,EAAWvkP,OAAS,EAAG1E,GAAK,EAAGA,KAASM,EAAI2oP,EAAWjpP,MAAIc,GAAKT,EAAI,EAAIC,EAAEQ,GAAKT,EAAI,EAAIC,EAAEmK,EAAQlJ,EAAKT,GAAKR,EAAEmK,EAAQlJ,KAAST,GAChJ,OAAOT,EAAI,GAAKS,GAAKJ,OAAOC,eAAe8J,EAAQlJ,EAAKT,GAAIA,GAE5D,GAAkC,SAAUiB,EAAG6O,GAC/C,IAAI1P,EAAI,GACR,IAAK,IAAIY,KAAKC,EAAOrB,OAAOkB,UAAUC,eAAe1B,KAAK4B,EAAGD,IAAM8O,EAAEpK,QAAQ1E,GAAK,IAC9EZ,EAAEY,GAAKC,EAAED,IACb,GAAS,MAALC,GAAqD,mBAAjCrB,OAAOsxG,sBACtB,KAAIhyG,EAAI,EAAb,IAAgB8B,EAAIpB,OAAOsxG,sBAAsBjwG,GAAI/B,EAAI8B,EAAE4C,OAAQ1E,IAC3D4Q,EAAEpK,QAAQ1E,EAAE9B,IAAM,GAAKU,OAAOkB,UAAUwxD,qBAAqBjzD,KAAK4B,EAAGD,EAAE9B,MACvEkB,EAAEY,EAAE9B,IAAM+B,EAAED,EAAE9B,KAE1B,OAAOkB,GAKJ,MAAM,WAAuB,GAChC,YAAYwB,GACRg/E,QACA3+E,KAAK2+S,cAAgB,KACrB3+S,KAAK4+S,WAAa,EAClB5+S,KAAK6+S,gBAAkB,EACvB7+S,KAAK8+S,SAAU,EACf9+S,KAAKwpB,SAAW,GAChBxpB,KAAKurN,MAAQ5rN,EAAQ4rN,MACrBvrN,KAAKs5E,MAAQ35E,EAAQ4rN,MAAMjyI,MAC3Bt5E,KAAKL,QAAU,GAAKwiH,WAAWxiH,GAC/BK,KAAK++S,UAAY,IAAI,GAAeC,UAAU,CAC1Cte,QAAS1gS,KACTi/S,cAAej/S,KAAKL,QAAQs/S,gBAEhCj/S,KAAKktP,QACLltP,KAAKk/R,iBAET,eACI,OAAgC,IAAzBl/R,KAAKL,QAAQo9I,QAExB,SACQ/8I,KAAKwN,WACLxN,KAAKL,QAAQo9I,SAAU,GAG/B,UACS/8I,KAAKwN,WACNxN,KAAKL,QAAQo9I,SAAU,GAG/B,KAAKp9I,EAAU,IACX,IAAKK,KAAKwN,SAAU,CAChB,MAAMwwF,EAAMh+F,KAAKk/S,UAAUh0S,MACvB8yF,IACAh+F,KAAKm/S,cAAcnhN,EAAKr+F,GACxBK,KAAKo/S,UAAU58S,KAAKw7F,GACpBh+F,KAAK4e,OAAO,OAAQo/E,EAAKr+F,IAGjC,OAAOK,KAEX,KAAKL,EAAU,IACX,IAAKK,KAAKwN,SAAU,CAChB,MAAMwwF,EAAMh+F,KAAKo/S,UAAUl0S,MACvB8yF,IACAh+F,KAAKq/S,aAAarhN,EAAKr+F,GACvBK,KAAKk/S,UAAU18S,KAAKw7F,GACpBh+F,KAAK4e,OAAO,OAAQo/E,EAAKr+F,IAGjC,OAAOK,KAMX,OAAOL,EAAU,IACb,IAAKK,KAAKwN,SAAU,CAChB,MAAMwwF,EAAMh+F,KAAKk/S,UAAUh0S,MACvB8yF,IACAh+F,KAAKm/S,cAAcnhN,EAAKr+F,GACxBK,KAAKo/S,UAAY,GACjBp/S,KAAK4e,OAAO,SAAUo/E,EAAKr+F,IAGnC,OAAOK,KAEX,MAAML,EAAU,IAIZ,OAHAK,KAAKk/S,UAAY,GACjBl/S,KAAKo/S,UAAY,GACjBp/S,KAAK4e,OAAO,QAAS,KAAMjf,GACpBK,KAEX,UACI,OAAQA,KAAKwN,UAAYxN,KAAKk/S,UAAUv9S,OAAS,EAErD,UACI,OAAQ3B,KAAKwN,UAAYxN,KAAKo/S,UAAUz9S,OAAS,EAErD,SAAS2nB,KAAWyjD,GAEhB,OADA/sE,KAAK++S,UAAU9yG,SAAS3iL,KAAWyjD,GAC5B/sE,KAEX,UACIA,KAAK++S,UAAU9uL,UACfjwH,KAAKktP,QACLltP,KAAKi/R,gBAET,iBACIj/R,KAAKs5E,MAAMlxD,GAAG,cAAepoB,KAAKs/S,iBAAkBt/S,MACpDA,KAAKs5E,MAAMlxD,GAAG,aAAcpoB,KAAKu/S,kBAAmBv/S,MAChDA,KAAKL,QAAQ6/S,YACbx/S,KAAKL,QAAQ6/S,WAAWr0Q,QAAQ,CAAC3tC,EAAMkE,KACnC1B,KAAKwpB,SAAS9nB,GAAS1B,KAAKy/S,WAAWhhT,KAAKuB,KAAMxC,GAClDwC,KAAKs5E,MAAMlxD,GAAG5qB,EAAMwC,KAAKwpB,SAAS9nB,MAG1C1B,KAAK++S,UAAU32R,GAAG,UAAYjT,GAASnV,KAAKkpB,QAAQ,UAAW/T,IAEnE,gBACInV,KAAKs5E,MAAM7wD,IAAI,cAAezoB,KAAKs/S,iBAAkBt/S,MACrDA,KAAKs5E,MAAM7wD,IAAI,aAAczoB,KAAKu/S,kBAAmBv/S,MACjDA,KAAKL,QAAQ6/S,aACbx/S,KAAKL,QAAQ6/S,WAAWr0Q,QAAQ,CAAC3tC,EAAMkE,KACnC1B,KAAKs5E,MAAM7wD,IAAIjrB,EAAMwC,KAAKwpB,SAAS9nB,MAEvC1B,KAAKwpB,SAAS7nB,OAAS,GAE3B3B,KAAK++S,UAAUt2R,IAAI,WAEvB,cAAc9oB,GACV,MAAO,CACHizL,QAAOjzL,GAAUA,EAAQizL,MACzBrwK,KAAM,IAGd,cAAcy7E,EAAKr+F,GACfK,KAAK8+S,SAAU,EACf,MAAMY,EAAOx+S,MAAMD,QAAQ+8F,GAAO,GAAK2hN,kBAAkB3hN,GAAO,CAACA,GACjE,IAAK,IAAI/gG,EAAIyiT,EAAK/9S,OAAS,EAAG1E,GAAK,EAAGA,GAAK,EAAG,CAC1C,MAAM+gG,EAAM0hN,EAAKziT,GACX6yQ,EAAenyQ,OAAO+rD,OAAO/rD,OAAO+rD,OAAO,GAAI/pD,GAAU,EAAUwrD,KAAK6yC,EAAIr+F,QAASK,KAAKL,QAAQigT,mBAAqB,KAC7H5/S,KAAK6/S,eAAe7hN,GAAK,EAAM8xK,GAEnC9vQ,KAAK8+S,SAAU,EAEnB,aAAa9gN,EAAKr+F,GACdK,KAAK8+S,SAAU,EACf,MAAMY,EAAOx+S,MAAMD,QAAQ+8F,GAAO,GAAK2hN,kBAAkB3hN,GAAO,CAACA,GACjE,IAAK,IAAI/gG,EAAI,EAAGA,EAAIyiT,EAAK/9S,OAAQ1E,GAAK,EAAG,CACrC,MAAM+gG,EAAM0hN,EAAKziT,GACX6yQ,EAAenyQ,OAAO+rD,OAAO/rD,OAAO+rD,OAAO,GAAI/pD,GAAU,EAAUwrD,KAAK6yC,EAAIr+F,QAASK,KAAKL,QAAQmgT,kBAAoB,KAC5H9/S,KAAK6/S,eAAe7hN,GAAK,EAAO8xK,GAEpC9vQ,KAAK8+S,SAAU,EAEnB,eAAe9gN,EAAKyqL,EAAQ9oR,GACxB,MAAM25E,EAAQt5E,KAAKs5E,MAEbu4J,EAAOv4J,EAAMysL,QAAQ/nK,EAAIz7E,KAAK/T,IAC9Bga,EAAQw1E,EAAIx1E,MAClB,GAAK,GAAKu3R,WAAWv3R,IAAUigQ,GAC1B,GAAKu3B,cAAcx3R,KAAWigQ,EAC/B52C,EAAKj0N,OAAOje,QAEX,GAAK,GAAKogT,WAAWv3R,KAAWigQ,GAChC,GAAKu3B,cAAcx3R,IAAUigQ,EAAS,CACvC,MAAMlmQ,EAAOy7E,EAAIz7E,KACbA,EAAK5d,KACL20E,EAAMs+M,QAAQr1Q,EAAKoJ,MAAOhsB,GAErB4iB,EAAKq3C,MACV0f,EAAMu+M,QAAQt1Q,EAAKoJ,MAAOhsB,QAG7B,GAAI,GAAKsgT,cAAcz3R,GAAQ,CAChC,MAAMjG,EAAOy7E,EAAIz7E,KACX/jB,EAAM+jB,EAAK/jB,IACjB,GAAIA,EAAK,CACL,MAAMN,EAAQuqR,EAASlmQ,EAAKpH,KAAK3c,GAAO+jB,EAAK5U,KAAKnP,GAClDqzO,EAAKrvN,KAAKhkB,EAAKN,EAAOyB,QAGzB,CACD,MAAMkgT,EAAiB7/S,KAAKL,QAAQkgT,eAChCA,GACA,EAAYziT,KAAKyiT,EAAgB7/S,KAAMg+F,EAAKyqL,EAAQ9oR,IAIhE,WAAW6oB,EAAOrT,GACd,GAAInV,KAAK8+S,SAAW9+S,KAAKwN,SACrB,OAEJ,MAAM0lJ,EAAY/9I,EACZxV,EAAUuzJ,EAAUvzJ,SAAW,GACrC,GAAIA,EAAQ80R,OACR,OAEJ,GAAK,GAAKsrB,WAAWv3R,IAAUxoB,KAAKL,QAAQugT,WACvC,GAAKF,cAAcx3R,IAAUxoB,KAAKL,QAAQwgT,cAC1C,GAAKF,cAAcz3R,IAAUxoB,KAAKL,QAAQygT,aAC3C,OAIJ,MAAMlwR,EAASlwB,KAAKL,QAAQ0gT,iBAC5B,GAAc,MAAVnwR,IACgD,IAAhD,EAAY9yB,KAAK8yB,EAAQlwB,KAAMwoB,EAAOrT,GACtC,OAEU,kBAAVqT,IAEAA,EAAQ,eAAe0qI,EAAU10J,KAErC,MAAMqzO,EAAO3+E,EAAU2+E,KACjByuE,EAAgB,GAAM3oB,QAAQ9lD,GACpC,IAAI7zI,EACJ,GAAIh+F,KAAK2+S,cAAe,CAGpB3gN,EAAMh+F,KAAK2+S,cAAc72S,KAAKitB,IAAI/0B,KAAK6+S,eAAgB,IAKvD,MAAM0B,EAAUD,IAAkBtiN,EAAIwiN,aAAgBxiN,EAAIz7E,KAAK/T,KAAOqjO,EAAKrjO,GACrEiyS,EAAWziN,EAAIx1E,QAAUA,EAC/B,GAAIxoB,KAAK6+S,gBAAkB,IAAM0B,GAAUE,GAAW,CAGlD,MAAM/+S,EAAQ1B,KAAK2+S,cAAcn8P,UAAWw7C,IAAUsiN,GAAiBtiN,EAAIwiN,aAAgBxiN,EAAIz7E,KAAK/T,KAAOqjO,EAAKrjO,KAC5GwvF,EAAIx1E,QAAUA,GACd9mB,EAAQ,GAAK,GAAKq+S,WAAWv3R,IAAU,GAAKw3R,cAAcx3R,GAC1Dw1E,EAAMh+F,KAAK0gT,cAAc,CAAE9tH,OAAO,KAGlC50F,EAAMh+F,KAAK2+S,cAAcj9S,GACzB1B,KAAK2+S,cAAct3S,OAAO3F,EAAO,IAErC1B,KAAK2+S,cAAcn8S,KAAKw7F,GACxBh+F,KAAK6+S,eAAiB7+S,KAAK2+S,cAAch9S,OAAS,QAItDq8F,EAAMh+F,KAAK0gT,cAAc,CAAE9tH,OAAO,IAItC,GAAI,GAAKmtH,WAAWv3R,IAAU,GAAKw3R,cAAcx3R,GAAQ,CACrD,MAAMjG,EAAOy7E,EAAIz7E,KAWjB,OAVAy7E,EAAIx1E,MAAQA,EACZw1E,EAAIr+F,QAAUA,EACd4iB,EAAK/T,GAAKqjO,EAAKrjO,GACf+T,EAAKoJ,MAAQ,EAAUu7B,UAAU2qL,EAAK9lL,UAClC8lL,EAAKptK,SACLliD,EAAKq3C,MAAO,EAEPi4K,EAAKhlD,WACVtqK,EAAK5d,MAAO,GAET3E,KAAKwC,KAAKw7F,EAAKr+F,GAI1B,GAAI,GAAKsgT,cAAcz3R,GAAQ,CAC3B,MAAMhqB,EAAM2W,EAAK3W,IACX+jB,EAAOy7E,EAAIz7E,KAsBjB,OArBKy7E,EAAI40F,OAAU50F,EAAIx1E,QAGnBw1E,EAAIx1E,MAAQA,EACZw1E,EAAIr+F,QAAUA,EACd4iB,EAAK/jB,IAAMA,EACM,MAAb+jB,EAAKpH,OACLoH,EAAKpH,KAAO,IAEhBoH,EAAKpH,KAAK3c,GAAO,EAAUiJ,MAAMoqO,EAAK5xL,SAASzhD,IAC3C8hT,EACAtiN,EAAIwiN,aAAc,EAGlBj+R,EAAK/T,GAAKqjO,EAAKrjO,IAGN,MAAb+T,EAAK5U,OACL4U,EAAK5U,KAAO,IAEhB4U,EAAK5U,KAAKnP,GAAO,EAAUiJ,MAAMoqO,EAAKrvN,KAAKhkB,IACpCwB,KAAKwC,KAAKw7F,EAAKr+F,GAI1B,MAAMghT,EAAkB3gT,KAAKL,QAAQghT,gBACjCA,GACA,EAAYvjT,KAAKujT,EAAiB3gT,KAAMwoB,EAAOrT,EAAM6oF,GAEzDh+F,KAAKwC,KAAKw7F,EAAKr+F,GASnB,iBAAiBA,GACTK,KAAK8+S,UAGL9+S,KAAK2+S,cACL3+S,KAAK4+S,YAAc,GAGnB5+S,KAAK2+S,cAAgB,CAAC3+S,KAAK0gT,cAAc,CAAE9tH,OAAO,KAClD5yL,KAAK4+S,WAAa,EAClB5+S,KAAK6+S,gBAAkB,IAO/B,kBAAkBl/S,GACd,IAAIK,KAAK8+S,QAGT,GAAI9+S,KAAK2+S,eAAiB3+S,KAAK4+S,YAAc,EAAG,CAC5C,MAAMc,EAAO1/S,KAAK4gT,mBAAmB5gT,KAAK2+S,eACtCe,EAAK/9S,OAAS,IACd3B,KAAKo/S,UAAY,GACjBp/S,KAAKk/S,UAAU18S,KAAKk9S,GACpB1/S,KAAK4e,OAAO,MAAO8gS,EAAM//S,IAE7BK,KAAK2+S,cAAgB,KACrB3+S,KAAK6+S,gBAAkB,EACvB7+S,KAAK4+S,WAAa,OAEb5+S,KAAK2+S,eAAiB3+S,KAAK4+S,WAAa,IAC7C5+S,KAAK4+S,YAAc,GAG3B,mBAAmBD,GACf,IAAIe,EAAOf,EAAcr7S,QACzB,MAAMnC,EAAS,GACf,KAAOu+S,EAAK/9S,OAAS,GAAG,CACpB,MAAMq8F,EAAM0hN,EAAKnwS,QACX43B,EAAM62D,EAAIx1E,MACVha,EAAKwvF,EAAIz7E,KAAK/T,GACpB,GAAW,MAAP24B,IAAsB,MAAN34B,GAAcwvF,EAAIwiN,aAAc,CAChD,GAAI,GAAKT,WAAW54Q,GAAM,CACtB,MAAMzlC,EAAQg+S,EAAKl9P,UAAWllD,GAAM,GAAK0iT,cAAc1iT,EAAEkrB,QAAUlrB,EAAEilB,KAAK/T,KAAOA,GACjF,GAAI9M,GAAS,EAAG,CACZg+S,EAAOA,EAAKluS,OAAO,CAAClU,EAAGL,IAAMyE,EAAQzE,GAAKK,EAAEilB,KAAK/T,KAAOA,GACxD,eAGH,GAAI,GAAKwxS,cAAc74Q,GAAM,CAC9B,MAAMzlC,EAAQg+S,EAAKl9P,UAAWllD,GAAM,GAAKyiT,WAAWziT,EAAEkrB,QAAUlrB,EAAEilB,KAAK/T,KAAOA,GAC9E,GAAI9M,GAAS,EAAG,CACZg+S,EAAKr4S,OAAO3F,EAAO,GACnB,eAGH,GAAI,GAAKu+S,cAAc94Q,GAAM,CAC9B,MAAM5kB,EAAOy7E,EAAIz7E,KACjB,GAAI,EAAUolC,QAAQplC,EAAKpH,KAAMoH,EAAK5U,MAClC,SAMRxM,EAAOqB,KAAKw7F,IAGpB,OAAO78F,EAEX,OAAOqnB,EAAOw1E,EAAKr+F,GACf,MAAM+/S,EAAc,MAAP1hN,EAAc,KAAO98F,MAAMD,QAAQ+8F,GAAOA,EAAM,CAACA,GAC9Dh+F,KAAKk8E,KAAK1zD,EAAO,CAAEk3R,OAAM//S,YACzBK,KAAKk8E,KAAK,SAAU,CAAEwjO,OAAM//S,YAEhC,KAAKq+F,EAAKr+F,GACNK,KAAKo/S,UAAY,GACbphN,EAAI40F,OACJ5yL,KAAK6+S,eAAiB/2S,KAAKitB,IAAI/0B,KAAK6+S,eAAgB,GACpD7+S,KAAKk8E,KAAK,QAAS,CAAE8hB,MAAKr+F,cAG1BK,KAAKk/S,UAAU18S,KAAKw7F,GACpBh+F,KAAK4e,OAAO,MAAOo/E,EAAKr+F,KAIpC,GAAW,CACP,GAASswH,WACV,GAAepxH,UAAW,UAAW,MACxC,SAAWgiT,GAMP,MAAM7B,UAAkB,GACpB,YAAYr/S,GACRg/E,QACA3+E,KAAKuG,IAAM,GACXvG,KAAK2oL,QAAUhpL,EAAQ+gS,QACvB1gS,KAAKi/S,eAA0C,IAA1Bt/S,EAAQs/S,cAC7Bj/S,KAAK2oL,QAAQvgK,GAAG,MAAOpoB,KAAK8gT,eAAgB9gT,MAEhD,gBAAe,KAAE0/S,IACb,OAAOx+S,MAAMD,QAAQy+S,GACfA,EAAKn6P,MAAOy4C,GAAQh+F,KAAK+gT,eAAe/iN,IACxCh+F,KAAK+gT,eAAerB,GAE9B,eAAe1hN,GACX,GAAIA,EAAIr+F,UAAsC,IAA3Bq+F,EAAIr+F,QAAQqhT,WAC3B,OAAO,EAEX,MAAMj0O,EAAaixB,EAAIx1E,OAASxoB,KAAKuG,IAAIy3F,EAAIx1E,QAAW,GACxD,IAAIy4R,EAAc,KAqBlB,OApBAl0O,EAAU5hC,QAAS+1Q,IACf,IAAIjkT,EAAI,EACR,MAAMw2M,EAAUvrL,IACZ,MAAMxiB,EAAKw7S,EAAOjkT,GAClBA,GAAK,EACL,IACI,IAAIyI,EAKA,YADAu7S,EAAc/4R,GAHdxiB,EAAGwiB,EAAK81E,EAAKy1G,GAOrB,MAAOvrL,GACHurL,EAAOvrL,KAGfurL,EAAOwtG,MAEPA,IACIjhT,KAAKi/S,eACLj/S,KAAK2oL,QAAQ77E,SAEjB9sG,KAAKk8E,KAAK,UAAW,CAAEh0D,IAAK+4R,KACrB,GAIf,SAAS33R,KAAWyjD,GAChB,MAAMk/N,EAAO/qS,MAAMD,QAAQqoB,GAAUA,EAASA,EAAOngB,MAAM,OAY3D,OAXA4jE,EAAU5hC,QAAS7kC,IACf,GAAwB,mBAAbA,EACP,MAAM,IAAItD,MAASipS,EAAKj9R,KAAK,KAAb,mCAGxBi9R,EAAK9gQ,QAAS3iB,IACa,MAAnBxoB,KAAKuG,IAAIiiB,KACTxoB,KAAKuG,IAAIiiB,GAAS,IAEtBxoB,KAAKuG,IAAIiiB,GAAOhmB,KAAKuqE,KAElB/sE,KAEX,UACIA,KAAK2oL,QAAQlgK,IAAI,MAAOzoB,KAAK8gT,eAAgB9gT,OAGrD,GAAW,CACP,GAASiwH,WACV+uL,EAAUngT,UAAW,UAAW,MACnCgiT,EAAe7B,UAAYA,EA5E/B,CA6EG,KAAmB,GAAiB,KAEvC,SAAW38H,GAIPA,EAAK09H,WAHL,SAAoBv3R,GAChB,MAAiB,eAAVA,GAMX65J,EAAK29H,cAHL,SAAuBx3R,GACnB,MAAiB,iBAAVA,GAMX65J,EAAK49H,cAHL,SAAuBz3R,GACnB,OAAgB,MAATA,GAAiBA,EAAMskC,WAAW,iBAqB7Cu1H,EAAKlgE,WAlBL,SAAoBxiH,GAChB,MAAM,MAAE4rN,GAAU5rN,EAASq0O,EAAS,GAAOr0O,EAAS,CAAC,UAC/CwhT,EAAgB,CAClB,aACA,eACA,iBAEEC,EAAc,CAChB,cACA,cAEE5B,EAAa7/S,EAAQ6/S,WACrB7/S,EAAQ6/S,WAAWhuS,OAAQgX,KAAY65J,EAAK49H,cAAcz3R,IACxD24R,EAAcjjQ,SAAS11B,IACvB44R,EAAYljQ,SAAS11B,KACvB24R,EACN,OAAOxjT,OAAO+rD,OAAO/rD,OAAO+rD,OAAO,GAAIsqL,GAAS,CAAEwrE,aAAYM,iBAAkBngT,EAAQmgT,kBAAoB,CAAC,gBAAiBF,kBAAmBjgT,EAAQigT,mBAAqB,CAAC,mBA0BnLv9H,EAAKs9H,kBAvBL,SAA2BD,GACvB,MAAMh3S,EAAU,GAChB,IAAK,IAAIzL,EAAI,EAAG25D,EAAK8oP,EAAK/9S,OAAQ1E,EAAI25D,EAAI35D,GAAK,EAAG,CAC9C,MAAM+gG,EAAM0hN,EAAKziT,GACjB,IAAIyE,EAAQ,KACZ,GAAI2gL,EAAK09H,WAAW/hN,EAAIx1E,OAAQ,CAC5B,MAAMha,EAAKwvF,EAAIz7E,KAAK/T,GACpB,IAAK,IAAItH,EAAI,EAAGA,EAAIjK,EAAGiK,GAAK,EACxB,GAAIw4S,EAAKx4S,GAAGqb,KAAK/T,KAAOA,EAAI,CACxB9M,EAAQwF,EACR,OAIE,OAAVxF,EACAgH,EAAQrB,OAAO3F,EAAO,EAAGs8F,GAGzBt1F,EAAQlG,KAAKw7F,GAGrB,OAAOt1F,GArDf,CAwDG,KAAS,GAAO,KCthBnB,IAAI,GAA0C,SAAUw9O,EAAYx+O,EAAQlJ,EAAK2nP,GAC7E,IAA2H5oP,EAAvHD,EAAImJ,UAAU9E,OAAQ5D,EAAIT,EAAI,EAAIoK,EAAkB,OAATy+O,EAAgBA,EAAOxoP,OAAOkrE,yBAAyBnhE,EAAQlJ,GAAO2nP,EACrH,GAAuB,iBAAZ9gL,SAAoD,mBAArBA,QAAQ+gL,SAAyBroP,EAAIsnE,QAAQ+gL,SAASF,EAAYx+O,EAAQlJ,EAAK2nP,QACpH,IAAK,IAAIlpP,EAAIipP,EAAWvkP,OAAS,EAAG1E,GAAK,EAAGA,KAASM,EAAI2oP,EAAWjpP,MAAIc,GAAKT,EAAI,EAAIC,EAAEQ,GAAKT,EAAI,EAAIC,EAAEmK,EAAQlJ,EAAKT,GAAKR,EAAEmK,EAAQlJ,KAAST,GAChJ,OAAOT,EAAI,GAAKS,GAAKJ,OAAOC,eAAe8J,EAAQlJ,EAAKT,GAAIA,GAGzD,MAAM,WAAuB,GAChC,oBACI,OAAOiC,KAAKL,QAAQo3S,QAExB,OACI/2S,KAAKozR,OAASpzR,KAAKurN,MAAM7rN,KAAK2hT,gBAElC,UACQrhT,KAAKozR,QACLpzR,KAAKozR,OAAOnjK,WAIxB,GAAW,CACP,GAAKA,WACN,GAAepxH,UAAW,UAAW,M,yBCtBpC,GAA0C,SAAUqnP,EAAYx+O,EAAQlJ,EAAK2nP,GAC7E,IAA2H5oP,EAAvHD,EAAImJ,UAAU9E,OAAQ5D,EAAIT,EAAI,EAAIoK,EAAkB,OAATy+O,EAAgBA,EAAOxoP,OAAOkrE,yBAAyBnhE,EAAQlJ,GAAO2nP,EACrH,GAAuB,iBAAZ9gL,SAAoD,mBAArBA,QAAQ+gL,SAAyBroP,EAAIsnE,QAAQ+gL,SAASF,EAAYx+O,EAAQlJ,EAAK2nP,QACpH,IAAK,IAAIlpP,EAAIipP,EAAWvkP,OAAS,EAAG1E,GAAK,EAAGA,KAASM,EAAI2oP,EAAWjpP,MAAIc,GAAKT,EAAI,EAAIC,EAAEQ,GAAKT,EAAI,EAAIC,EAAEmK,EAAQlJ,EAAKT,GAAKR,EAAEmK,EAAQlJ,KAAST,GAChJ,OAAOT,EAAI,GAAKS,GAAKJ,OAAOC,eAAe8J,EAAQlJ,EAAKT,GAAIA,GAKzD,MAAM,WAAiBynP,GAC1B,YAAY7lP,GACRg/E,QACA3+E,KAAKL,QAAUA,EACf,MAAMs0R,EAAWj0R,KAAKurN,MAAM0oE,SAASb,OACrCpzR,KAAK8xB,UAAYmiQ,EAAWA,EAASniQ,UAAY9xB,KAAKurN,MAAMz5L,UACxDnyB,EAAQiD,OACR5C,KAAK0H,OAAS5E,UAGd9C,KAAK0H,OAAS1H,KAAK8xB,UACd9xB,KAAKwN,UAENxN,KAAK0H,OAAOxC,aAAa,WAAY,MAGzClF,KAAKurN,MAAMnjM,GAAG,eAAgBpoB,KAAK6tB,MAAO7tB,MAC1CA,KAAKurN,MAAMnjM,GAAG,gBAAiBpoB,KAAK6tB,MAAO7tB,OAE/CA,KAAKshT,UAAY,GAASC,gBAAgBvhT,MAE9C,YACI,OAAOA,KAAKL,QAAQ4rN,MAExB,eACI,OAAgC,IAAzBvrN,KAAKL,QAAQo9I,QAExB,SACQ/8I,KAAKwN,WACLxN,KAAKL,QAAQo9I,SAAU,EACvB/8I,KAAKurN,MAAM5rN,QAAQq3S,SAASj6J,SAAU,EAClC/8I,KAAK0H,kBAAkB0wF,aACvBp4F,KAAK0H,OAAOxC,aAAa,WAAY,OAIjD,UACSlF,KAAKwN,WACNxN,KAAKL,QAAQo9I,SAAU,EACvB/8I,KAAKurN,MAAM5rN,QAAQq3S,SAASj6J,SAAU,EAClC/8I,KAAK0H,kBAAkB0wF,aACvBp4F,KAAK0H,OAAOyH,gBAAgB,aAIxC,GAAGC,EAAM9I,EAAU86C,GACfphD,KAAKshT,UAAU7iT,KAAKuB,KAAKwhT,QAAQpyS,GAAO9I,EAAU86C,GAEtD,IAAIhyC,EAAMgyC,GACNphD,KAAKshT,UAAU93Q,OAAOxpC,KAAKwhT,QAAQpyS,GAAOgyC,GAE9C,MAAMvzC,GAEF,GADqB7N,KAAKyhT,aAAa5zS,EAAEA,GAErC,OAEW7N,KAAK0H,OACbmmB,MAAM,CACT6zR,eAAe,IAGvB,QAAQtyS,GACJ,OAAQlO,MAAMD,QAAQmO,GAAQA,EAAO,CAACA,IAAO7I,IAAK/H,GAAQwB,KAAK2hT,UAAUnjT,IAE7E,UAAUA,GACN,MAAMohR,EAAWphR,EACZ6K,cACArB,QAAQ,MAAO,IACfA,QAAQ,SAAU,OAClBA,QAAQ,MAAO,WACd45S,EAAW5hT,KAAKL,QAAQq6M,OAC9B,OAAI4nG,EACO,EAAYxkT,KAAKwkT,EAAU5hT,KAAKurN,MAAOq0D,GAE3CA,EAEX,aAAa/xQ,GACT,MAAMnG,EAAUmG,EAAE6/I,YAAc7/I,EAAEnG,OAClC,QAAIA,IACIA,IAAW1H,KAAK0H,QAAUA,IAAW5E,SAASwiB,MAG3C,EAAIjb,SAASrK,KAAK8xB,UAAWpqB,IAI5C,aAAamG,GACT,MAAMnG,EAASmG,EAAEnG,OAEjB,MAAmB,WADHA,GAAUA,EAAO+9E,QAAQp8E,eAG7C,kBAAkBwE,GACd,MAAMg0S,GAAW7hT,KAAKwN,UAAYxN,KAAK8hT,aAAaj0S,GAC9C4zS,EAAezhT,KAAKyhT,aAAa5zS,GACvC,GAAIg0S,EAAS,CACT,MAAMn9S,EAAOmJ,EAAEkf,SAAWlf,EAAE+f,MAC5B,GAAI6zR,IAA0B,IAAT/8S,GAAuB,KAATA,GAC/B,OAAO,EAEX,GAAI1E,KAAKL,QAAQs8C,MACb,OAAO,EAAY7+C,KAAK4C,KAAKL,QAAQs8C,MAAOj8C,KAAKurN,MAAO19M,GAGhE,OAAOg0S,EAEX,UACI7hT,KAAKshT,UAAU3qS,SAGvB,GAAW,CACP6uO,GAAWv1H,WACZ,GAASpxH,UAAW,UAAW,OAiB/B,KAAa,GAAW,KADd0iT,gBAdT,SAAyBvK,GACrB,MAAMsK,EAAY,IAAI,KAAUtK,EAAStvS,QACnC2jJ,EAAei2J,EAAUj2J,aAU/B,OATAi2J,EAAUj2J,aAAe,CAACx9I,EAAGrH,EAAM8mJ,KAC3B0pJ,EAAS+K,kBAAkBl0S,MACvBw9I,GACOA,EAAajuJ,KAAKkkT,EAAWzzS,EAAGrH,EAAM8mJ,GAMlDg0J,GCtIf,IAAI,GAA0C,SAAUp7D,EAAYx+O,EAAQlJ,EAAK2nP,GAC7E,IAA2H5oP,EAAvHD,EAAImJ,UAAU9E,OAAQ5D,EAAIT,EAAI,EAAIoK,EAAkB,OAATy+O,EAAgBA,EAAOxoP,OAAOkrE,yBAAyBnhE,EAAQlJ,GAAO2nP,EACrH,GAAuB,iBAAZ9gL,SAAoD,mBAArBA,QAAQ+gL,SAAyBroP,EAAIsnE,QAAQ+gL,SAASF,EAAYx+O,EAAQlJ,EAAK2nP,QACpH,IAAK,IAAIlpP,EAAIipP,EAAWvkP,OAAS,EAAG1E,GAAK,EAAGA,KAASM,EAAI2oP,EAAWjpP,MAAIc,GAAKT,EAAI,EAAIC,EAAEQ,GAAKT,EAAI,EAAIC,EAAEmK,EAAQlJ,EAAKT,GAAKR,EAAEmK,EAAQlJ,KAAST,GAChJ,OAAOT,EAAI,GAAKS,GAAKJ,OAAOC,eAAe8J,EAAQlJ,EAAKT,GAAIA,GAKzD,MAAM,WAAmBynP,GAC5B,YAAY7lP,GACRg/E,QACA3+E,KAAKL,QAAUA,EACfK,KAAKgiT,gBAAkB,EACvB,MAAM/tB,EAAWj0R,KAAKurN,MAAM0oE,SAASb,OACrCpzR,KAAK8xB,UAAYmiQ,EAAWA,EAASniQ,UAAY9xB,KAAKurN,MAAMz5L,UAC5D9xB,KAAK0H,OAAS1H,KAAKL,QAAQiD,OAASE,SAAW9C,KAAK8xB,UACpD9xB,KAAKiiT,iBAAmB,IAAI,EAAI9kH,iBAAiBn9L,KAAK0H,OAAQ1H,KAAKkrR,aAAazsR,KAAKuB,MAAOA,KAAKkiT,gBAAgBzjT,KAAKuB,OAClHA,KAAKL,QAAQo9I,SACb/8I,KAAKy9L,QAAO,GAGpB,YACI,OAAOz9L,KAAKL,QAAQ4rN,MAExB,eACI,OAAgC,IAAzBvrN,KAAKL,QAAQo9I,QAExB,OAAOviE,IACCx6E,KAAKwN,UAAYgtE,KACjBx6E,KAAKL,QAAQo9I,SAAU,EACvB/8I,KAAKurN,MAAM5rN,QAAQmuI,WAAWiP,SAAU,EACxC/8I,KAAKiiT,iBAAiBxkH,UAG9B,UACSz9L,KAAKwN,WACNxN,KAAKL,QAAQo9I,SAAU,EACvB/8I,KAAKurN,MAAM5rN,QAAQmuI,WAAWiP,SAAU,EACxC/8I,KAAKiiT,iBAAiBnkS,WAG9B,gBAAgBqpB,GACZ,MAAMt5B,EAAKs5B,EAAI/b,eAAiB+b,EAC1B8U,EAAQj8C,KAAKL,QAAQs8C,MAC3B,OAAkB,MAATA,GAAiBA,EAAM7+C,KAAK4C,KAAKurN,MAAO19M,KAC7CmsS,GAAYhyP,QAAQn6C,EAAG7N,KAAKL,QAAQ+nF,WAE5C,aAAavgD,GACT,MAAMt5B,EAAKs5B,EAAI/b,eAAiB+b,EAC1B8U,EAAQj8C,KAAKL,QAAQs8C,MAC3B,IAAc,MAATA,GAAiBA,EAAM7+C,KAAK4C,KAAKurN,MAAO19M,KACzCmsS,GAAYhyP,QAAQn6C,EAAG7N,KAAKL,QAAQ+nF,WAAY,CAChD,MAAM8pI,EAASxxN,KAAKL,QAAQ6xN,QAAU,IACb,MAArBxxN,KAAKw9S,eACLx9S,KAAKmiT,SAAW,CAAE5vQ,EAAGpL,EAAIla,QAASulB,EAAGrL,EAAIja,SACzCltB,KAAKw9S,aAAex9S,KAAKurN,MAAM0oE,SAASb,OAClCpzR,KAAKurN,MAAM0oE,SAASb,OAAOuM,OAC3B3/R,KAAKurN,MAAM/3K,UAAU0tP,WAAWxtO,IAE5BvsB,EAAImnG,OACN,EAIJtuI,KAAKw9S,aAAe,IACpBx9S,KAAKgiT,iBAAmBhiT,KAAKw9S,aAAe,KAAQx9S,KAAKw9S,aAKzDx9S,KAAKgiT,gBACDl6S,KAAK8qB,MAAM5yB,KAAKw9S,aAAehsF,EAAS,IAAM,GAAKxxN,KAAKw9S,aAO5Dx9S,KAAKw9S,cAAgB,IACrBx9S,KAAKgiT,iBAAmBhiT,KAAKw9S,aAAe,KAAQx9S,KAAKw9S,aAKzDx9S,KAAKgiT,gBACDl6S,KAAK8qB,MAAM5yB,KAAKw9S,cAAgB,EAAIhsF,GAAU,IAC1C,GACAxxN,KAAKw9S,aAGrBx9S,KAAKgiT,gBAAkBl6S,KAAKitB,IAAI,IAAMjtB,KAAKkzC,IAAIh7C,KAAKw9S,aAAex9S,KAAKgiT,gBAAiB,KACrFhiT,KAAKw9S,cACT,MAAMvpB,EAAWj0R,KAAKurN,MAAM0oE,SAASb,OAC/BoqB,EAAex9S,KAAKw9S,aAC1B,IAAIlO,EAActvS,KAAKurN,MAAM/3K,UAAUs7P,WAAW0O,EAAex9S,KAAKgiT,iBACtE,MAAMvgB,EAAWzhS,KAAKL,QAAQ8hS,UAAYvlO,OAAOkmP,iBAC3C1gB,EAAW1hS,KAAKL,QAAQ+hS,UAAYxlO,OAAOswM,iBAEjD,GADA8iC,EAAc,EAAU9lP,MAAM8lP,EAAa7N,EAAUC,GACjD4N,IAAgBkO,EAChB,GAAIvpB,EACA,GAAIj0R,KAAKL,QAAQw4S,oBAAqB,CAClC,MAAMvkP,EAAS5zD,KAAKurN,MAAMp6G,MAAMiwL,mBAAmBphS,KAAKmiT,UACxDluB,EAAS0L,KAAK2P,EAAa,CACvB/yG,UAAU,EACV9oI,OAAQG,EAAOnsD,eAInBwsR,EAAS0L,KAAK2P,EAAa,CAAE/yG,UAAU,SAI3C,GAAIv8L,KAAKL,QAAQw4S,oBAAqB,CAClC,MAAMvkP,EAAS5zD,KAAKurN,MAAMp6G,MAAMkxM,mBAAmBriT,KAAKmiT,UACxDniT,KAAKurN,MAAM/3K,UAAUmsP,KAAK2P,EAAa,CACnC/yG,UAAU,EACV9oI,OAAQG,EAAOnsD,QACfkxP,IAAI,SAIR34P,KAAKurN,MAAM/3K,UAAUmsP,KAAK2P,EAAa,CAAE/yG,UAAU,EAAMo8D,IAAI,IAIzE34P,KAAKw9S,aAAe,KACpBx9S,KAAKgiT,gBAAkB,GAG/B,UACIhiT,KAAK8d,WAGb,GAAW,CACP0nO,GAAWv1H,WACZ,GAAWpxH,UAAW,UAAW,MCxIpC,IAAI,GAA0C,SAAUqnP,EAAYx+O,EAAQlJ,EAAK2nP,GAC7E,IAA2H5oP,EAAvHD,EAAImJ,UAAU9E,OAAQ5D,EAAIT,EAAI,EAAIoK,EAAkB,OAATy+O,EAAgBA,EAAOxoP,OAAOkrE,yBAAyBnhE,EAAQlJ,GAAO2nP,EACrH,GAAuB,iBAAZ9gL,SAAoD,mBAArBA,QAAQ+gL,SAAyBroP,EAAIsnE,QAAQ+gL,SAASF,EAAYx+O,EAAQlJ,EAAK2nP,QACpH,IAAK,IAAIlpP,EAAIipP,EAAWvkP,OAAS,EAAG1E,GAAK,EAAGA,KAASM,EAAI2oP,EAAWjpP,MAAIc,GAAKT,EAAI,EAAIC,EAAEQ,GAAKT,EAAI,EAAIC,EAAEmK,EAAQlJ,EAAKT,GAAKR,EAAEmK,EAAQlJ,KAAST,GAChJ,OAAOT,EAAI,GAAKS,GAAKJ,OAAOC,eAAe8J,EAAQlJ,EAAKT,GAAIA,GAKzD,MAAM,WAAqB,GAC9B,KAAK4B,EAAU,IACX,MAAMmwQ,EAAenyQ,OAAO+rD,OAAO/rD,OAAO+rD,OAAO,GAAI,GAAawuL,gBAAiBv4O,GAC7E2iT,EAAStiT,KAAKuiT,iBAAiBzyC,GACrCA,EAAah1P,MAAMwnS,EAASA,GAAWtiT,KAAKwiT,gBAAgBF,EAAQxyC,GAAe,CAC/E2yC,UAAWziT,KAAK0iT,aAAa5yC,KAGrC,gBACI,OAAO9vQ,KAAK6sB,KAAKsmO,gBAAgB,eAErC,gBAAgBmvD,EAAQ3iT,GACpB,GAAI2iT,EAAQ,CACR,MAAMK,EAAQ,KAAO7/S,SAASwiB,MACxB48P,EAAa,KAAOliR,KAAK6sB,KAAKiF,WAC9B8wR,EAAgB5iT,KAAK6sB,KAAKsmO,gBAAgB,kBAChDwvD,EAAMzlR,SAAS0lR,GACf,MAAMC,EAAY3gC,EAAWjnQ,WAAW6U,SACxCwyR,EAAOn3Q,QAAS23Q,IACZA,EACKvlR,YAAev9B,KAAKoR,UAAR,YACZ8rB,SAAYl9B,KAAKoR,UAAR,UACTkf,SAASqyR,KAElB,IAAIz8S,GAAM,EACV,MAAMomC,EAAK,KACFpmC,IACDA,GAAM,EACNy8S,EAAMplR,YAAYqlR,GAClBN,EAAOn3Q,QAAS23Q,GAAUA,EAAMllS,UAChCskQ,EAAWnyP,OAAO8yR,GAClB,KAAO,IAAI7iT,KAAK+iT,cAAgBnlS,SAChC5d,KAAKurN,MAAMriM,QAAQ,cAAevpB,GAClC,KAAOsD,QAAQwlB,IAAI,aAAc6jB,KAGzC,KAAOrpC,QAAQqlB,IAAI,aAAcgkB,GACjC1sB,WAAW0sB,EAAI,KACfrpC,OAAO+/S,SAGf,gBAAgBC,EAAUtjT,GACtBK,KAAKurN,MAAMriM,QAAQ,eAAgBvpB,GACnC,MAAMmjT,EAAQ,KAAO,UAAU5lR,SAASl9B,KAAKoR,WACvC+oR,EAAQ,KAAO,UAChBj9P,SAASl9B,KAAK6sB,KAAKsmO,gBAAgB,sBACnC3uO,IAAI,WAAY,YACjB7kB,EAAQi9C,MACRkmQ,EAAM5lR,SAAS,GAAGl9B,KAAKoR,kBAAkBzR,EAAQi9C,QAErD,MAAMsmQ,EAAO,GAAO3kT,OAAOyB,KAAK6sB,KAAKq4D,KAAKz9E,QACpC07S,EAASD,EAAK14M,QAAQ,IAAIxqG,KAAK6sB,KAAKsmO,gBAAgB,oBAC1DgnC,EAAMpqQ,OAAOmzR,EAAKv+S,MAClB,MAAM89S,EAAYziT,KAAK0iT,aAAa/iT,GAC9ByjT,EAAYpjT,KAAKurN,MAAM/3K,UAAU6vQ,eACjCrkT,EAAIgB,KAAKurN,MAAM/3K,UAAU0tP,WACzBv4J,EAAK3oI,KAAKurN,MAAMn4J,YAChBgE,EAAS,EAAIgnE,kBAAkBhrE,UAAUu1E,EAAGhuE,GAAK37D,EAAE00D,GAAIi1E,EAAG/tE,GAAK57D,EAAE20D,IACjE2Y,EAAOtsE,KAAKsjT,YAAYF,EAAWH,EAAUR,GAC7C59R,EAAQynD,EAAKznD,MACb02C,EAAO+Q,EAAK/Q,KAclB,OAbA4+N,EAAM31Q,IAAI,CACN+R,KAAM,EACNtlB,IAAK,IAETiyS,EAAKjwS,KAAK,CACNoe,MAAOkqC,EAAKlqC,MAAQxM,EACpB4O,OAAQ8nC,EAAK9nC,OAAS5O,EACtBP,MAAO,oBACPwoJ,QAAS,CAACvxG,EAAKhpB,EAAGgpB,EAAK/oB,EAAG+oB,EAAKlqC,MAAOkqC,EAAK9nC,QAAQzkB,KAAK,OAE5Dm0S,EAAOlwS,KAAK,YAAa,EAAIgrH,wBAAwB7mE,IACrD0rP,EAAM/yR,OAAOoqQ,GACb2oB,EAAM5lR,SAAYl9B,KAAKoR,UAAR,YACR,CACH0xS,QACAL,aAGR,iBAAiB9iT,GACb,IAAIuG,EACJ,MAAMu1I,EAAOz7I,KAAKujT,aAAa5jT,GACzB2iT,EAAS,GACf,GAAI3iT,EAAQ+gM,KAAM,CACd,MAAM8rC,EAAWxsO,KAAKwjT,YAAY/nK,EAAM97I,EAAQ+gM,MAC9B1gM,KAAKyjT,aAAahoK,EAAM+wF,GAChCrhM,QAAS83Q,IACf/8S,EAAMlG,KAAK0jT,gBAAgBT,EAAUtjT,GACrC2iT,EAAO9/S,KAAK0D,EAAI48S,cAIpB58S,EAAMlG,KAAK0jT,gBAAgBjoK,EAAM97I,GACjC2iT,EAAO9/S,KAAK0D,EAAI48S,OAEpB,GAAI58S,EAAK,CACL,MAAM02C,EAAO,CACTvrB,MAAOnrB,EAAIu8S,UAAUpsH,SACrB5iK,OAAQvtB,EAAIu8S,UAAUnsH,WAE1Bt2L,KAAK2jT,iBAAiB/mQ,EAAMj9C,GAEhC,OAAO2iT,EAEX,mBACI,OAAOtiT,KAAK6sB,KAAKsmO,gBAAgB,qBAErC,iBAAiBv2M,EAAMj9C,GACnB,MAAMikT,EAAUjmT,OAAOyR,KAAKwtC,GAAMpR,OAAO,CAAC8B,EAAM9uC,IAAQ,GAAG8uC,KAAQ9uC,KAAOo+C,EAAKp+C,MAAS,IAClFg4B,EAAS,EAAUw6J,eAAerxL,EAAQ62B,QAC1CqtR,EAAalkT,EAAQkkT,YAAc,GACnCC,EAAYnkT,EAAQmkT,WAAa,GACjCt/R,EAAM,oCAETxkB,KAAKoR,aAAapR,KAAKoR,gCACtBwyS,iEAKA,CACAptR,EAAOvlB,IAAM4yS,EACbrtR,EAAOnE,MAAQwxR,EACfrtR,EAAOglC,OAASqoP,EAChBrtR,EAAOD,KAAOstR,GAChB70S,KAAK,0BACGrP,EAAQokT,MAAM1yR,MAAQyyR,KAAankT,EAAQokT,MAAMtwR,OAASqwR,kBAEjE9jT,KAAKoR,aAAapR,KAAKoR,kCACtBwyS,wBAGEp1S,EAAKxO,KAAK+iT,aACViB,EAAS,KAAO,IAAIx1S,GACtBw1S,EAAOriT,OACPqiT,EAAO30R,KAAK7K,GAGZ,KAAO,QAAQuL,OAAO,+BAA+BvhB,MAAOgW,cAGpE,aAAa7kB,GACT,IAAI87I,EAAO97I,EAAQ87I,KACnB,IAAKA,EAAM,CACP,MAAMhlH,EAAU,EAAUu6J,eAAerxL,EAAQ82B,SACjDglH,EAAOz7I,KAAKurN,MAAMmiF,iBAAiBvnM,cAAc,CAC7C5zD,GAAI9b,EAAQF,KACZic,GAAI/b,EAAQxlB,IACZogB,MAAOoF,EAAQF,KAAOE,EAAQpE,MAC9BoB,OAAQgD,EAAQxlB,IAAMwlB,EAAQ+kC,SAGtC,OAAOigF,EAEX,YAAYA,EAAMwoK,GACd,GAAsB,iBAAXA,EAAqB,CAC5B,MAAM3iS,EAAM2iS,EACNvjH,EAAO,CACTrvK,MAAO/P,EAAI+P,MACXoC,OAAQnS,EAAImS,QAQhB,OANkB,MAAditK,EAAKrvK,QACLqvK,EAAKrvK,MAAQvpB,KAAK0tB,KAAKimH,EAAKpqH,OAAS/P,EAAI4iS,SAAW,KAErC,MAAfxjH,EAAKjtK,SACLitK,EAAKjtK,OAAS3rB,KAAK0tB,KAAKimH,EAAKhoH,QAAUnS,EAAIo1I,MAAQ,KAEhDgqC,EAEX,MAAO,CACHrvK,MAAOoqH,EAAKpqH,MACZoC,OAAQgoH,EAAKhoH,QAGrB,aAAagoH,EAAM+wF,GACf,MAAM23E,EAAQ,GACR9yR,EAAQm7M,EAASn7M,MACjBoC,EAAS+4M,EAAS/4M,OACxB,IAAK,IAAI1wB,EAAI,EAAGrE,EAAI,EAAGqE,EAAI04I,EAAKhoH,QAAU/0B,EAAI,IAAKqE,GAAK0wB,EAAQ/0B,GAAK,EACjE,IAAK,IAAImC,EAAI,EAAGxD,EAAI,EAAGwD,EAAI46I,EAAKpqH,OAASh0B,EAAI,IAAKwD,GAAKwwB,EAAOh0B,GAAK,EAC/D8mT,EAAM3hT,KAAK,IAAI,GAAUi5I,EAAKlpG,EAAI1xC,EAAG46I,EAAKjpG,EAAIzvC,EAAGsuB,EAAOoC,IAGhE,OAAO0wR,EAEX,aAAaxkT,GACT,MAAMokT,EAAQpkT,EAAQokT,MAChBvtR,EAAS,EAAUw6J,eAAerxL,EAAQ62B,QAC1CqtR,EAAalkT,EAAQkkT,YAAc,GACnCC,EAAYnkT,EAAQmkT,WAAa,GACjCztH,EAEN,QAAQ0tH,EAAM1yR,QAAQyyR,OAAettR,EAAOD,KAAOC,EAAOnE,QAAQwxR,KAC5DvtH,EAEN,QAAQytH,EAAMtwR,SAASqwR,OAAettR,EAAOvlB,IAAMulB,EAAOglC,SAASqoP,KAC7D39S,EAAM,GAAKysB,QAAQ0jK,EAAUC,GACnC,MAAO,CACHD,WACAC,YACAjlK,MAAOnrB,EAAImrB,MACXoC,OAAQvtB,EAAIutB,QAGpB,YAAY2vR,EAAWH,EAAUR,GAC7B,MAAMlnP,EAAO,IAAI,GAAU0nP,EAAS1wQ,EAAI6wQ,EAAU7wQ,EAAG0wQ,EAASzwQ,EAAI4wQ,EAAU5wQ,EAAGywQ,EAAS5xR,MAAO4xR,EAASxvR,QAClG2wR,EAAY7oP,EAAKlqC,MAAQkqC,EAAK9nC,OAC9B4wR,EAAa5B,EAAUpxR,MAAQoxR,EAAUhvR,OAC/C,MAAO,CACH8nC,OACA12C,MAAOw/R,EAAaD,EACd3B,EAAUpxR,MAAQkqC,EAAKlqC,MACvBoxR,EAAUhvR,OAAS8nC,EAAK9nC,OAC9B6wR,cAAeD,EAAaD,GAGpC,YAEJ,GAAW,CACP,GAAKn0L,WACN,GAAapxH,UAAW,UAAW,OAcnC,KAAiB,GAAe,KAZlBq5O,eAAiB,CAC1Bx3C,MAAM,EACNqjH,MAAO,CACH1yR,MAAO,IACPoC,OAAQ,KAEZqwR,UAAW,KACXttR,OAAQ,GACRqtR,WAAY,KACZptR,QAAS,EACT3b,MAAO,CAACwnS,EAAQiC,IAAiBA,EAAajC,IC7O/C,MAAM,WAAsB,GAC/B,MAAMh8S,EAAU3G,EAAU,IACtBK,KAAKurN,MAAMriM,QAAQ,gBAAiBvpB,GACpC,MAAM6kT,EAASxkT,KAAK6sB,KAAKq4D,IACnBg+N,EAAO,GAAO3kT,OAAOimT,GAAQ/8S,QACnC,IAAIg9S,EAAYvB,EAAKv+S,KACrB,MAAMw+S,EAASD,EAAK14M,QAAQ,IAAIxqG,KAAK6sB,KAAKsmO,gBAAgB,oBACpDrmF,EAAUntK,EAAQmtK,SAAW9sK,KAAKurN,MAAMyxF,aAAah9S,KAAKurN,MAAMwxF,kBAChE9nR,EAAYt1B,EAAQ+kT,mBAC1B,GAAIzvR,EAAW,CACX,MAAM2nB,EAA4B,kBAAd3nB,EAA0B63I,EAAU73I,EACxDiuR,EAAKjwS,KAAK,CACNoe,MAAOurB,EAAKvrB,MACZoC,OAAQmpB,EAAKnpB,SAsBrB,GAnBAyvR,EACK/zS,gBAAgB,SAChB8D,KAAK,UAAW,CAAC65J,EAAQv6H,EAAGu6H,EAAQt6H,EAAGs6H,EAAQz7I,MAAOy7I,EAAQr5I,QAAQzkB,KAAK,MAChFm0S,EAAOh0S,gBAAgB,cAgBI,IAAvBxP,EAAQglT,WAAsB,CAC9B,MAAM7hT,EAAW0hT,EAAOn2S,cAClBu2S,EAAO1jT,MAAM0qC,KAAK44Q,EAAOv1S,iBAAiB,MAC1C41S,EAAS3jT,MAAM0qC,KAAK64Q,EAAUx1S,iBAAiB,MAC/C61S,EAAkBhiT,EAASsqI,YAAYzrI,OACvCojT,EAAkB,GACxB,IAAK,IAAIryP,EAAIoyP,EAAkB,EAAGpyP,GAAK,EAAGA,GAAK,EAO3CqyP,EAAgBryP,GAAK5vD,EAASsqI,YAAY16E,GAC1C5vD,EAASsqI,YAAY16E,GAAGllD,UAAW,EAEvC,MAAMw3S,EAAwB,GAC9BJ,EAAKz5Q,QAAQ,CAAC3kC,EAAM9E,KAChB,MAAMm3I,EAAgB51I,OAAO8tB,iBAAiBvqB,EAAM,MAG9Cy+S,EAAuB,GAC7BtnT,OAAOyR,KAAKypI,GAAe1tG,QAASvsC,IAChCqmT,EAAqBrmT,GACjBi6I,EAAcrnH,iBAAiB5yB,KAEvComT,EAAsBtjT,GAASujT,IAG/BH,IAAoBhiT,EAASsqI,YAAYzrI,QACzCojT,EAAgB55Q,QAAQ,CAAC5jC,EAAM7F,KAC3BoB,EAASsqI,YAAY1rI,GAAS6F,IAGtC,IAAK,IAAItK,EAAI,EAAGA,EAAI6nT,EAAiB7nT,GAAK,EACtC6F,EAASsqI,YAAYnwI,GAAGuQ,UAAW,EAEvC,MAAM03S,EAAe,GACrBN,EAAKz5Q,QAAQ,CAAC3kC,EAAM9E,KAChB,MAAMm3I,EAAgB51I,OAAO8tB,iBAAiBvqB,EAAM,MAC9Cy+S,EAAuBD,EAAsBtjT,GAC7CyjT,EAAc,GACpBxnT,OAAOyR,KAAKypI,GAAe1tG,QAASvsC,IAC3B,EAAUsrC,UAAUtrC,IACrBi6I,EAAcrnH,iBAAiB5yB,KAC3BqmT,EAAqBrmT,KACzBumT,EAAYvmT,GAAYi6I,EAAcrnH,iBAAiB5yB,MAG/DsmT,EAAaxjT,GAASyjT,IAE1BN,EAAO15Q,QAAQ,CAAC3kC,EAAM9E,KAClB,KAAO8E,GAAMge,IAAI0gS,EAAaxjT,MAGtC,MAAM0jT,EAAazlT,EAAQylT,WAC3B,GAA0B,iBAAfA,EAAyB,CAChC,MAAMC,EAAeb,EAChBn2S,cAAcy5B,eAAew9Q,eAAe,KAAM,MAAO,MACzDC,mBAAmBH,GACxBlC,EAAKlzR,QAAQ,GAAOzxB,OAAO,QAAS,CAChCgD,KAAM,YACP,CAAC8jT,KAER,MAAMrrG,EAAS,KACX,MAAMwrG,EAAkB7lT,EAAQ6lT,gBAChC,GAA+B,mBAApBA,EAAgC,CACvC,MAAMt/S,EAAM,EAAY9I,KAAKooT,EAAiBxlT,KAAKurN,MAAOk5F,GACtDv+S,aAAei2H,gBACfsoL,EAAYv+S,GAGpB,MAAM8uL,GAAU,IAAIgkH,eACfC,kBAAkBwL,GAClBz8S,QAAQ,UAAW,KACxBhI,KAAKurN,MAAMriM,QAAQ,eAAgBvpB,GACnC2G,EAAS0uL,IAEb,GAAIr1L,EAAQ8lT,gBAAiB,CACzB,MAAMC,EAAYxC,EAAKxxS,KAAK,SAASnL,IAAKo/S,GAC/B,IAAIx4O,QAAS3wD,IAChB,MAAM+kB,EAAMokR,EAAO1yS,KAAK,eAAiB0yS,EAAO1yS,KAAK,QACrDugL,GAAQoB,eAAerzJ,EAAK,CAACrZ,EAAK8sK,MACzB9sK,GAAO8sK,GACR2wH,EAAO1yS,KAAK,aAAc+hL,GAE9Bx4K,SAIZ2wD,QAAQ+kH,IAAIwzH,GAAW5oS,KAAKk9L,QAG5BA,IAGR,UAAU1zM,EAAU3G,GAChB,IAAImtK,EAAUntK,EAAQmtK,SAAW9sK,KAAKurN,MAAMwxF,iBAC5C,MAAMtmR,EAAU,EAAUu6J,eAAerxL,EAAQ82B,SAC7C92B,EAAQ0xB,OAAS1xB,EAAQ8zB,SACrBgD,EAAQF,KAAOE,EAAQpE,OAAS1yB,EAAQ0xB,QACxCoF,EAAQF,KAAOE,EAAQpE,MAAQ,GAE/BoE,EAAQxlB,IAAMwlB,EAAQ+kC,QAAU77D,EAAQ8zB,SACxCgD,EAAQxlB,IAAMwlB,EAAQ+kC,OAAS,IAGvC,MAAMoqP,EAAY,IAAI,IAAWnvR,EAAQF,MAAOE,EAAQxlB,IAAKwlB,EAAQF,KAAOE,EAAQpE,MAAOoE,EAAQxlB,IAAMwlB,EAAQ+kC,QACjH,GAAI77D,EAAQ0xB,OAAS1xB,EAAQ8zB,OAAQ,CACjC,MAAMpC,EAAQy7I,EAAQz7I,MAAQoF,EAAQF,KAAOE,EAAQpE,MAC/CoB,EAASq5I,EAAQr5I,OAASgD,EAAQxlB,IAAMwlB,EAAQ+kC,OACtDoqP,EAAU/gS,MAAMwM,EAAQ1xB,EAAQ0xB,MAAOoC,EAAS9zB,EAAQ8zB,QAE5Dq5I,EAAU,GAAUvuK,OAAOuuK,GAAS3mE,cAAcy/M,GAClD,MAAMC,EAAmC,iBAAlBlmT,EAAQ0xB,OAAgD,iBAAnB1xB,EAAQ8zB,OAC9D,CAAEpC,MAAO1xB,EAAQ0xB,MAAOoC,OAAQ9zB,EAAQ8zB,QACxCq5I,EACN,IAAIjoJ,EAAQllB,EAAQw8D,MAAQtpC,WAAWlzB,EAAQw8D,OAAS,EACnDD,OAAO9lC,SAASvR,IAAoB,IAAVA,IAC3BA,EAAQ,GAEZ,MAAM+3B,EAAO,CACTvrB,MAAOvpB,KAAKitB,IAAIjtB,KAAK8qB,MAAMizR,EAAQx0R,MAAQxM,GAAQ,GACnD4O,OAAQ3rB,KAAKitB,IAAIjtB,KAAK8qB,MAAMizR,EAAQpyR,OAAS5O,GAAQ,IAEzD,CACI,MAAMihS,EAAgBhjT,SAASiC,cAAc,UACvCghT,EAAYD,EAAc/4Q,WAAW,MAC3C+4Q,EAAcz0R,MAAQurB,EAAKvrB,MAC3By0R,EAAcryR,OAASmpB,EAAKnpB,OAC5B,MAAM8e,EAAIqK,EAAKvrB,MAAQ,EACjBmhB,EAAIoK,EAAKnpB,OAAS,EACxBsyR,EAAUt1Q,UAAY,aACtBs1Q,EAAUthJ,SAASlyH,EAAGC,EAAG,EAAG,GAC5B,MAAMjwB,EAAOwjS,EAAUC,aAAazzQ,EAAGC,EAAG,EAAG,GAAGjwB,KAChD,GAAgB,IAAZA,EAAK,IAAwB,IAAZA,EAAK,IAAwB,IAAZA,EAAK,GACvC,MAAM,IAAIvf,MAAM,iBAGxB,MAAMirK,EAAM,IAAIl7C,MAChBk7C,EAAIznI,OAAS,KACT,MAAM8mF,EAASxqH,SAASiC,cAAc,UACtCuoH,EAAOj8F,MAAQurB,EAAKvrB,MACpBi8F,EAAO75F,OAASmpB,EAAKnpB,OACrB,MAAM1zB,EAAUutH,EAAOvgF,WAAW,MAClChtC,EAAQ0wC,UAAY9wC,EAAQovH,iBAAmB,QAC/ChvH,EAAQ0kK,SAAS,EAAG,EAAG7nH,EAAKvrB,MAAOurB,EAAKnpB,QACxC,IACI1zB,EAAQo6F,UAAU8zE,EAAK,EAAG,EAAGrxH,EAAKvrB,MAAOurB,EAAKnpB,QAC9C,MAAMuhK,EAAU1nE,EAAOknD,UAAU70K,EAAQ4B,KAAM5B,EAAQgrS,SACvDrkS,EAAS0uL,GAEb,MAAO9sL,MAIXlI,KAAKimT,MAAOjxH,IACR/mB,EAAI3pK,IAAM,sBAAsBm7B,mBAAmBu1J,IACpDr3L,OAAO+rD,OAAO/rD,OAAO+rD,OAAO,GAAI/pD,GAAU,CAAEmtK,UAAS24I,iBAAiB,EAAMf,mBAAoB/mT,OAAO+rD,OAAO,GAAI9M,MAEzH,MAAMt2C,EAAU3G,EAAU,IACtBK,KAAKw0K,UAAUluK,EAAU3I,OAAO+rD,OAAO/rD,OAAO+rD,OAAO,GAAI/pD,GAAU,CAAE4B,KAAM,eAE/E,OAAO+E,EAAU3G,EAAU,IACvBK,KAAKw0K,UAAUluK,EAAU3I,OAAO+rD,OAAO/rD,OAAO+rD,OAAO,GAAI/pD,GAAU,CAAE4B,KAAM,iBC1M5E,MAAM,WAAoB,GAC7B,cACIo9E,SAASl4E,WACTzG,KAAKi8S,QAAU,IAAI97O,IAEvB,yBACI,OAA0C,IAAnCngE,KAAKL,QAAQ4gS,UAAUxjJ,QAElC,OACI/8I,KAAKk/R,iBAET,iBACIl/R,KAAKurN,MAAMnjM,GAAG,eAAgBpoB,KAAKk8S,cAAel8S,MAClDA,KAAKurN,MAAMnjM,GAAG,gBAAiBpoB,KAAKm8S,eAAgBn8S,MACpDA,KAAKurN,MAAMnjM,GAAG,kBAAmBpoB,KAAKo8S,iBAAkBp8S,MAE5D,gBACIA,KAAKurN,MAAM9iM,IAAI,eAAgBzoB,KAAKk8S,cAAel8S,MACnDA,KAAKurN,MAAM9iM,IAAI,gBAAiBzoB,KAAKm8S,eAAgBn8S,MACrDA,KAAKurN,MAAM9iM,IAAI,kBAAmBzoB,KAAKo8S,iBAAkBp8S,MAE7D,eAAc,KAAE2E,IACZ,IAAK3E,KAAKq8S,mBAAoB,CAC1B,MAAMJ,EAAUj8S,KAAKurN,MAAM7rN,KAAKwmT,WAAWvhT,EAAM,CAAE0/J,UAAU,IACzD43I,GACAj8S,KAAKi8S,QAAQ35R,IAAI3d,EAAMs3S,IAInC,gBAAe,KAAEt3S,IACb,GAAI3E,KAAKq8S,mBAAoB,CACzB,MAAMJ,EAAUj8S,KAAKurN,MAAM7rN,KAAKwmT,WAAWvhT,EAAM,CAAE0/J,UAAU,IACzD43I,GACAj8S,KAAKi8S,QAAQ35R,IAAI3d,EAAMs3S,IAInC,kBAAiB,KAAEt3S,IACf,GAAI3E,KAAKq8S,mBAAoB,CACzB,MAAMJ,EAAUj8S,KAAKi8S,QAAQn+S,IAAI6G,GAC7Bs3S,GACAA,EAAQ9wQ,QAASioP,GAAWA,EAAOnjK,WAEvCjwH,KAAKi8S,QAAQ74N,OAAOz+E,KC5ChC,IAAI,GAA0C,SAAUuhP,EAAYx+O,EAAQlJ,EAAK2nP,GAC7E,IAA2H5oP,EAAvHD,EAAImJ,UAAU9E,OAAQ5D,EAAIT,EAAI,EAAIoK,EAAkB,OAATy+O,EAAgBA,EAAOxoP,OAAOkrE,yBAAyBnhE,EAAQlJ,GAAO2nP,EACrH,GAAuB,iBAAZ9gL,SAAoD,mBAArBA,QAAQ+gL,SAAyBroP,EAAIsnE,QAAQ+gL,SAASF,EAAYx+O,EAAQlJ,EAAK2nP,QACpH,IAAK,IAAIlpP,EAAIipP,EAAWvkP,OAAS,EAAG1E,GAAK,EAAGA,KAASM,EAAI2oP,EAAWjpP,MAAIc,GAAKT,EAAI,EAAIC,EAAEQ,GAAKT,EAAI,EAAIC,EAAEmK,EAAQlJ,EAAKT,GAAKR,EAAEmK,EAAQlJ,KAAST,GAChJ,OAAOT,EAAI,GAAKS,GAAKJ,OAAOC,eAAe8J,EAAQlJ,EAAKT,GAAIA,GAKzD,MAAM,WAAuB,GAChC,oBACI,OAAOiC,KAAKL,QAAQm3S,QAExB,eACI,OAAO92S,KAAKy6S,gBAAgD,IAA/Bz6S,KAAKy6S,cAAc19J,QAEpD,OACI/8I,KAAKk/R,iBACLl/R,KAAK2xR,kBAET,iBACI,MAAMumB,EAAal4S,KAAKy6S,cAAcvC,WACjCA,IAGDA,EAAWh6P,SAAS,mBACpBl+C,KAAKurN,MAAMnjM,GAAG,kBAAmBpoB,KAAK46S,eAAgB56S,MACtDA,KAAKurN,MAAMnjM,GAAG,2BAA4BpoB,KAAK46S,eAAgB56S,MAC/DA,KAAKurN,MAAMnjM,GAAG,2BAA4BpoB,KAAK46S,eAAgB56S,OAE/Dk4S,EAAWh6P,SAAS,oBACpBl+C,KAAK66S,iBAAmB76S,KAAK66S,iBAAiBp8S,KAAKuB,MACnDA,KAAK6sB,KAAK0d,EAAEvqC,KAAKurN,MAAMz5L,WAAW1J,GAAG,YAAapoB,KAAK66S,mBAEvD3C,EAAWh6P,SAAS,gBACpBl+C,KAAKiiT,iBAAmB,IAAI,EAAI9kH,iBAAiBn9L,KAAKurN,MAAMz5L,UAAW9xB,KAAKkrR,aAAazsR,KAAKuB,MAAOA,KAAKkiT,gBAAgBzjT,KAAKuB,OAC/HA,KAAKiiT,iBAAiBxkH,WAG9B,gBACI,MAAMy6G,EAAal4S,KAAKy6S,cAAcvC,WACjCA,IAGDA,EAAWh6P,SAAS,mBACpBl+C,KAAKurN,MAAM9iM,IAAI,kBAAmBzoB,KAAK46S,eAAgB56S,MACvDA,KAAKurN,MAAM9iM,IAAI,2BAA4BzoB,KAAK46S,eAAgB56S,MAChEA,KAAKurN,MAAM9iM,IAAI,2BAA4BzoB,KAAK46S,eAAgB56S,OAEhEk4S,EAAWh6P,SAAS,mBACpBl+C,KAAK6sB,KAAK0d,EAAEvqC,KAAKurN,MAAMz5L,WAAWrJ,IAAI,YAAazoB,KAAK66S,kBAExD3C,EAAWh6P,SAAS,eAChBl+C,KAAKiiT,kBACLjiT,KAAKiiT,iBAAiBnkS,WAIlC,gBAAe,EAAEjQ,KACT7N,KAAK86S,aAAajtS,GAAG,IACpB7N,KAAK86S,aAAajtS,KAAO7N,KAAKurN,MAAMjkM,UAAU0zR,gBAAgBntS,GAAG,KAClE7N,KAAK+6S,aAAaltS,GAG1B,aAAaA,EAAG+yK,GACZ,OAAQ5gL,KAAK06S,UACTV,GAAYhyP,QAAQn6C,EAAG7N,KAAKy6S,cAAc/yN,UAAWk5F,IACrD5gL,KAAKurN,MAAM7rN,KAAKo7S,aAAajtS,GAErC,aAAas5B,GACT,MAAMt5B,EAAI7N,KAAK6sB,KAAKqhD,eAAe/mC,GACnCnnC,KAAKitB,QAAUpf,EAAEof,QACjBjtB,KAAKktB,QAAUrf,EAAEqf,QACjBltB,KAAK82S,SAAU,EACf92S,KAAK2xR,kBACL3xR,KAAK6sB,KAAK0d,EAAEznC,SAASwiB,MAAM8C,GAAG,CAC1B,sCAAuCpoB,KAAKmwS,IAAI1xS,KAAKuB,MACrD,mCAAoCA,KAAKowS,YAAY3xS,KAAKuB,MAC1D,qBAAsBA,KAAKowS,YAAY3xS,KAAKuB,QAEhDA,KAAK6sB,KAAK0d,EAAEtnC,QAAQmlB,GAAG,kBAAmBpoB,KAAKowS,YAAY3xS,KAAKuB,OAEpE,IAAImnC,GACA,MAAMt5B,EAAI7N,KAAK6sB,KAAKqhD,eAAe/mC,GAC7BksB,EAAKxlD,EAAEof,QAAUjtB,KAAKitB,QACtBqmC,EAAKzlD,EAAEqf,QAAUltB,KAAKktB,QAC5BltB,KAAKitB,QAAUpf,EAAEof,QACjBjtB,KAAKktB,QAAUrf,EAAEqf,QACjB,MAAMy7G,EAAK3oI,KAAKurN,MAAM/3K,UAAUmpQ,iBAC1BhiP,EAAKguE,EAAGhuE,GAAKtH,EACbuH,EAAK+tE,EAAG/tE,GAAKtH,EACnBtzD,KAAKurN,MAAM/3K,UAAU4f,UAAUuH,EAAIC,EAAI,CAAE+9L,IAAI,IAGjD,YAAY9qP,GACR7N,KAAK82S,SAAU,EACf92S,KAAK2xR,kBACL3xR,KAAK6sB,KAAK0d,EAAEznC,SAASwiB,MAAMmD,IAAI,YAC/BzoB,KAAK6sB,KAAK0d,EAAEtnC,QAAQwlB,IAAI,YAE5B,kBACI,MAAMqJ,EAAY9xB,KAAK6sB,KAAKiF,UACtBglR,EAAU92S,KAAK6sB,KAAKsmO,gBAAgB,iBACpCunD,EAAW16S,KAAK6sB,KAAKsmO,gBAAgB,kBACvCnzP,KAAK06S,SACD16S,KAAK82S,SACL,EAAI55Q,SAASpL,EAAWglR,GACxB,EAAIv5Q,YAAYzL,EAAW4oR,KAG3B,EAAIn9Q,YAAYzL,EAAWglR,GAC3B,EAAI55Q,SAASpL,EAAW4oR,KAI5B,EAAIn9Q,YAAYzL,EAAWglR,GAC3B,EAAIv5Q,YAAYzL,EAAW4oR,IAGnC,iBAAiB7sS,GACI,IAAbA,EAAEqd,QAAgBlrB,KAAK86S,aAAajtS,GAAG,IACvC7N,KAAK+6S,aAAaltS,GAG1B,gBAAgBA,GACZ,OAAO7N,KAAK06S,WAAa7sS,EAAEye,QAE/B,aAAaze,EAAGwgI,EAAQC,GACfzgI,EAAEye,SACHtsB,KAAKurN,MAAMutD,aAAazqI,GAASC,GAGzC,YAAY/7F,EAAGC,GACX,MACM4wQ,EAAYpjT,KAAKurN,MAAM83F,eAC7B,IAAIhwP,EAAK,EACLC,EAAK,EACL/gB,GAAK6wQ,EAAU7sR,KAJJ,KAKX88B,GALW,IAOX7gB,GAAK4wQ,EAAUnyS,IAPJ,KAQXqiD,GARW,IAUX/gB,GAAK6wQ,EAAU/wR,MAVJ,KAWXghC,EAXW,IAaX7gB,GAAK4wQ,EAAU5nP,OAbJ,KAcXlI,EAdW,IAgBJ,IAAPD,GAAmB,IAAPC,GACZtzD,KAAKurN,MAAMutD,aAAazlN,GAAKC,GAGrC,gBACStzD,KAAK06S,WACN16S,KAAKy6S,cAAc19J,SAAU,EAC7B/8I,KAAK2xR,mBAGb,iBACQ3xR,KAAK06S,WACL16S,KAAKy6S,cAAc19J,SAAU,EAC7B/8I,KAAK2xR,mBAGb,UACI3xR,KAAKi/R,iBAGb,GAAW,CACP,GAAKhvK,WACN,GAAepxH,UAAW,UAAW,MC3KxC,IAAI,GAA0C,SAAUqnP,EAAYx+O,EAAQlJ,EAAK2nP,GAC7E,IAA2H5oP,EAAvHD,EAAImJ,UAAU9E,OAAQ5D,EAAIT,EAAI,EAAIoK,EAAkB,OAATy+O,EAAgBA,EAAOxoP,OAAOkrE,yBAAyBnhE,EAAQlJ,GAAO2nP,EACrH,GAAuB,iBAAZ9gL,SAAoD,mBAArBA,QAAQ+gL,SAAyBroP,EAAIsnE,QAAQ+gL,SAASF,EAAYx+O,EAAQlJ,EAAK2nP,QACpH,IAAK,IAAIlpP,EAAIipP,EAAWvkP,OAAS,EAAG1E,GAAK,EAAGA,KAASM,EAAI2oP,EAAWjpP,MAAIc,GAAKT,EAAI,EAAIC,EAAEQ,GAAKT,EAAI,EAAIC,EAAEmK,EAAQlJ,EAAKT,GAAKR,EAAEmK,EAAQlJ,KAAST,GAChJ,OAAOT,EAAI,GAAKS,GAAKJ,OAAOC,eAAe8J,EAAQlJ,EAAKT,GAAIA,GAIzD,MAAM,WAAoB,GAC7B,cACI,OAAqC,MAA9BiC,KAAKurN,MAAM0oE,SAASb,OAE/B,eACI,OAAOpzR,KAAKilS,cACNjlS,KAAKurN,MAAM0oE,SAASb,OAAOthQ,UAC3B9xB,KAAKurN,MAAMz5L,UAErB,OACI,MAAM25Q,EAAazrS,KAAKL,QAAQ8rS,WAChC,GAAIA,EAAY,CACZ,MAAM/jS,EAA+B,kBAAf+jS,EAChBzrS,KAAKmmT,eACL1a,EACN,GAAWhtS,KAAKiJ,EAAQ,KACpB,MAAMoqB,EAAY9xB,KAAKmmT,eAEjB90R,EAAQS,EAAUY,YAClBe,EAAS3B,EAAU+B,aACzB7zB,KAAKyvH,OAAOp+F,EAAOoC,MAI/B,OAAOpC,EAAOoC,GACNzzB,KAAKilS,cACLjlS,KAAKomT,eAAe/0R,EAAOoC,GAG3BzzB,KAAKmhS,YAAY9vQ,EAAOoC,GAGhC,YAAYpC,EAAOoC,GACfzzB,KAAKurN,MAAM/3K,UAAUi8E,OAAOp+F,EAAOoC,GAEvC,eAAepC,EAAOoC,GAClBzzB,KAAKurN,MAAM0oE,SAASxkK,OAAOp+F,EAAOoC,GAEtC,WAAWpC,EAAOoC,GACd,MAAMyiC,EAAWl2D,KAAKurN,MAAM0oE,SAASb,OACjCl9N,GACAA,EAASmwP,eAAeh1R,EAAOoC,GAGvC,UACI,GAAWolC,MAAM74D,KAAKmmT,iBAG9B,GAAW,CACP,GAAKl2L,WACN,GAAYpxH,UAAW,UAAW,MC1DrC,IAsDI,GAtDA,GAA0C,SAAUqnP,EAAYx+O,EAAQlJ,EAAK2nP,GAC7E,IAA2H5oP,EAAvHD,EAAImJ,UAAU9E,OAAQ5D,EAAIT,EAAI,EAAIoK,EAAkB,OAATy+O,EAAgBA,EAAOxoP,OAAOkrE,yBAAyBnhE,EAAQlJ,GAAO2nP,EACrH,GAAuB,iBAAZ9gL,SAAoD,mBAArBA,QAAQ+gL,SAAyBroP,EAAIsnE,QAAQ+gL,SAASF,EAAYx+O,EAAQlJ,EAAK2nP,QACpH,IAAK,IAAIlpP,EAAIipP,EAAWvkP,OAAS,EAAG1E,GAAK,EAAGA,KAASM,EAAI2oP,EAAWjpP,MAAIc,GAAKT,EAAI,EAAIC,EAAEQ,GAAKT,EAAI,EAAIC,EAAEmK,EAAQlJ,EAAKT,GAAKR,EAAEmK,EAAQlJ,KAAST,GAChJ,OAAOT,EAAI,GAAKS,GAAKJ,OAAOC,eAAe8J,EAAQlJ,EAAKT,GAAIA,GAE5D,GAAkC,SAAUiB,EAAG6O,GAC/C,IAAI1P,EAAI,GACR,IAAK,IAAIY,KAAKC,EAAOrB,OAAOkB,UAAUC,eAAe1B,KAAK4B,EAAGD,IAAM8O,EAAEpK,QAAQ1E,GAAK,IAC9EZ,EAAEY,GAAKC,EAAED,IACb,GAAS,MAALC,GAAqD,mBAAjCrB,OAAOsxG,sBACtB,KAAIhyG,EAAI,EAAb,IAAgB8B,EAAIpB,OAAOsxG,sBAAsBjwG,GAAI/B,EAAI8B,EAAE4C,OAAQ1E,IAC3D4Q,EAAEpK,QAAQ1E,EAAE9B,IAAM,GAAKU,OAAOkB,UAAUwxD,qBAAqBjzD,KAAK4B,EAAGD,EAAE9B,MACvEkB,EAAEY,EAAE9B,IAAM+B,EAAED,EAAE9B,KAE1B,OAAOkB,IAwCX,SAAWmoT,GAmBPA,EAAU5mT,KAlBV,SAAc6mT,EAAUC,GACpB,MAAO,CAAC9+S,EAAQ60C,EAAY28F,KACxB,MAAM53H,EAAM43H,EAAWh7I,MACjBV,EAAOgpT,GAAYjqQ,EACzB28F,EAAWh7I,MAAQ,YAAaiX,GAC5B,MAAMzV,EAAOM,KAAKL,QAAQnC,GAC1B,GAAY,MAARkC,EAAc,CACdM,KAAKymT,eAAiBnlS,EAAI7iB,KAAKuB,QAASmV,GACxC,MAAMjP,EAAM,EAAY9I,KAAKsC,EAAMM,KAAKurN,SAAUp2M,GAElD,GADAnV,KAAKymT,eAAiB,KACX,MAAPvgT,IAA6B,IAAbqgT,GAA6B,OAARrgT,EACrC,OAAOA,EAGf,OAAOob,EAAIlkB,KAAK4C,QAASmV,MAmBrCmxS,EAAUn2R,MAdV,SAAeq2R,GACX,MAAO,CAAC9+S,EAAQ60C,EAAY28F,KACxB,MAAM53H,EAAM43H,EAAWh7I,MACjBV,EAAOgpT,GAAYjqQ,EACzB28F,EAAWh7I,MAAQ,YAAaiX,GAC5B,IAAIjP,EAAMob,EAAIlkB,KAAK4C,QAASmV,GAC5B,MAAMzV,EAAOM,KAAKL,QAAQnC,GAI1B,OAHY,MAARkC,IACAwG,EAAM,EAAY9I,KAAKsC,EAAMM,KAAKurN,SAAUp2M,IAASjP,GAElDA,KA9BvB,CAmCG,KAAc,GAAY,KACtB,MAAM,WAAa,GACtB,cACI,GAAIlG,KAAKL,QAAQ25E,MACb,OAAOt5E,KAAKL,QAAQ25E,MAExB,MAAMA,EAAQ,IAAI,GAElB,OADAA,EAAMiyI,MAAQvrN,KAAKurN,MACZjyI,EAEX,aACI,OAAO,IAAI,GAAUt5E,KAAKurN,OAE9B,iBACI,OAAO,IAAI,GAASvrN,KAAKurN,OAE7B,oBACI,OAAO,IAAI,GAAYvrN,KAAKurN,OAEhC,oBACI,OAAO,IAAI,GAAYvrN,KAAKurN,OAEhC,qBACI,OAAO,IAAI,GAAavrN,KAAKurN,OAEjC,oBACI,OAAO,IAAI,GAAYvrN,KAAKurN,OAEhC,gBAAgB5mN,EAAM81S,GAClB,MAAM96S,EAAUK,KAAK0mT,oBAAoB/hT,GACzC,OAAIhF,EAAQu1S,WAAav1S,EAAQw1S,UACtB,IAAI,GAAUx3S,OAAO+rD,OAAO/rD,OAAO+rD,OAAO,CAAE/kD,OAAM4mN,MAAOvrN,KAAKurN,OAAS5rN,GAAU86S,KAExF96S,EAAQ0kK,UACR,GAAUu6H,gBAAgB5+R,KAAKurN,OAE5B,MAEX,WAAW5mN,EAAM81S,GACb,MAAM96S,EAAU,GAAQi3S,iBAAiB52S,KAAKurN,MAAO5mN,EAAM3E,KAAKL,QAAQm5R,MAClEhpB,EAAenyQ,OAAO+rD,OAAO/rD,OAAO+rD,OAAO,GAAI/pD,GAAU86S,GAC3D3qC,EAAazrG,UACb,GAAKu6H,gBAAgB5+R,KAAKurN,OAE9BukD,EAAazrG,UAAW,EACxB,MAAMy0H,EAAOn0R,EAAK6d,KAAK,QACjBy5R,EAAU,GAoBhB,OAnBa/6S,MAAMD,QAAQ63R,GAAQA,EAAO,CAACA,IACtC3tP,QAAQ,CAAC2tP,EAAMp3R,KACZo3R,IACqB,IAAjBA,EAAK/7I,UAGmB,mBAAjB+7I,EAAK/7I,UAC4B,IAAxC+7I,EAAK/7I,QAAQ3/I,KAAK4C,KAAKurN,MAAO5mN,IAOlChF,EAAQo9I,SACRk/J,EAAQz5S,KAAK,IAAI,GAAK7E,OAAO+rD,OAAO,CAAE/kD,OAClCjD,QAAO6pN,MAAOvrN,KAAKurN,OAASukD,QAGjCmsC,EAEX,oBAAoBt3S,GAChB,MAAM27R,EAAW,GAAQsW,iBAAiB52S,KAAKurN,MAAO5mN,EAAM3E,KAAKL,QAAQ2gS,UACnED,EAAW,GAAQuW,iBAAiB52S,KAAKurN,MAAO5mN,EAAM3E,KAAKL,QAAQ0gS,UACnEuX,EAAe,GAAQhB,iBAAiB52S,KAAKurN,MAAO5mN,EAAM3E,KAAKL,QAAQi4S,cAE7E,OADgBj6S,OAAO+rD,OAAO/rD,OAAO+rD,OAAO,GAAIkuP,GAAe,CAAE1C,UAAW5U,EAASvjJ,QAASzrH,SAAUgvQ,EAAShvQ,SAAUC,SAAU+uQ,EAAS/uQ,SAAUmxK,UAAW49F,EAAS59F,UAAWC,UAAW29F,EAAS39F,UAAWsyG,mBAAoB3U,EAASuX,WAAY9B,mBAAyC,MAArBzV,EAASvnB,SAAmBunB,EAASvnB,SAAWunB,EAASwX,WAAY9B,qBAAsB1V,EAASpM,WAAYplD,oBAAqBwxD,EAASxxD,oBAAqBynE,aAAcjW,EAASiW,aAAcpB,UAAW9U,EAAStjJ,QAAS25J,WAAYrW,EAASzuF,OAGjhB,yBACI,OAAO,IAAI,GAAiB5xM,KAAKurN,OAErC,yBACI,OAAO,IAAI,GAAiBvrN,KAAKurN,OAErC,0BACI,OAAO,IAAI,GAAkBvrN,KAAKurN,OAEtC,kBACI,OAAO,IAAI,GAEf,yBACI,OAAO,IAAI,GAAiBvrN,KAAKurN,OAErC,iBACI,OAAO,IAAI,GAAS5tN,OAAO+rD,OAAO,CAAE6hK,MAAOvrN,KAAKurN,OAASvrN,KAAKL,QAAQ6gS,WAE1E,wBACI,OAAO,IAAI,GAAgBxgS,KAAKurN,OAEpC,kBACI,OAAO,IAAI,GAAU5tN,OAAO+rD,OAAO,CAAE6hK,MAAOvrN,KAAKurN,OAASvrN,KAAKL,QAAQ4gS,YAE3E,yBACI,OAAO,IAAI,GAAiBvgS,KAAKurN,OAGrC,gBAAgB19M,GACZ,OAAO,EAEX,uBACI,OAAO,IAAI,GAAelQ,OAAO+rD,OAAO,CAAE6hK,MAAOvrN,KAAKurN,OAASvrN,KAAKL,QAAQ+gS,UAEhF,iBACI,OAAI1gS,KAAKL,QAAQs0R,SAASl3I,QACf,IAAI,GAASp/I,OAAO+rD,OAAO,CAAE6hK,MAAOvrN,KAAKurN,OAASvrN,KAAKL,QAAQs0R,WAEnE,KAEX,wBACI,OAAO,IAAI,GAAgBj0R,KAAKurN,OAGpC,aAAa19M,GACT,OAAO,EAEX,gBACI,MAAMimI,EAAK9zI,KAAKL,QAAQo3S,SAAS,QAAEh6J,GAAYjJ,EAAIn0I,EAAU,GAAOm0I,EAAI,CAAC,YACzE,OAAIiJ,EACO,IAAI,GAAQp/I,OAAO+rD,OAAO,CAAE6hK,MAAOvrN,KAAKurN,OAAS5rN,IAErD,KAEX,uBACI,OAAO,IAAI,GAAeK,KAAKurN,OAEnC,iBACI,OAAO,IAAI,GAAS5tN,OAAO+rD,OAAO,CAAE6hK,MAAOvrN,KAAKurN,OAASvrN,KAAKL,QAAQq3S,WAE1E,mBACI,OAAO,IAAI,GAAWr5S,OAAO+rD,OAAO,CAAE6hK,MAAOvrN,KAAKurN,OAASvrN,KAAKL,QAAQmuI,aAE5E,qBACI,OAAO,IAAI,GAAa9tI,KAAKurN,OAEjC,sBACI,OAAO,IAAI,GAAcvrN,KAAKurN,OAElC,uBACI,OAAO,IAAI,GAAevrN,KAAKurN,OAEnC,oBACI,OAAO,IAAI,GAAYvrN,KAAKurN,OAEhC,oBAAoB3xJ,GAChB,MAAMj6D,EAAUK,KAAKL,QAAQ21P,WACvBqxD,EAAmC,MAAtBhnT,EAAQgnT,WAAqBhnT,EAAQgnT,WAAahnT,EAAQ43S,SAC7E,GAA0B,mBAAfoP,EACP,QAASA,EAEb,MAAM70E,EAAW9xO,KAAKurN,MAAMsjD,eAAej1M,GACrCuiN,EAAaviN,EAAKslN,gBAClB7C,EAAaziN,EAAKulN,gBAClBpjB,EAAa/7P,KAAKurN,MAAMsjD,eAAesN,GACvC3f,EAAax8P,KAAKurN,MAAMsjD,eAAewN,GAC7C,OAAO,EAAYj/Q,KAAKupT,EAAY3mT,KAAKurN,MAAO,CAC5C3xJ,OACAk4K,WACAqqC,aACAE,aACAtgB,aACAS,aACA4f,WAAYxiN,EAAKmhN,kBACjBuB,WAAY1iN,EAAKihN,kBACjBxe,aAAcvqB,EAASuqB,aACvBQ,aAAc/qB,EAAS+qB,eAG/B,aAAajjM,EAAMr4D,EAAMiqR,GACrB,IAAKxrR,KAAK4mT,oBAAoBhtP,GAAO,CACjC,MAAMu8M,EAAWv8M,EAAKqsM,kBAChBmQ,EAAWx8M,EAAKusM,kBACtB,IAAMgQ,IAAYC,EACd,OAAO,EAGf,MAAMnqE,EAAWjsM,KAAKL,QAAQ21P,WAAWq4B,aACzC,OAAI1hF,GACO,EAAY7uM,KAAK6uM,EAAUjsM,KAAKurN,MAAO,CAC1C3xJ,OACAr4D,OACA0+C,SAAUurO,IAKtB,eAAezzC,EAAUC,EAAQnqO,GAC7B,GAAsC,YAAlCmqO,EAAO/yO,aAAa,UAAyB,CAC7C,MAAMgnM,EAAWjsM,KAAKL,QAAQ21P,WAAWw9B,eACzC,OAAI7mF,GACO,EAAY7uM,KAAK6uM,EAAUjsM,KAAKurN,MAAO,CAC1C19M,IACAmqO,SACAnrN,KAAMkrN,EACNlG,KAAMkG,EAASlG,OAK3B,OAAO,EAEX,eAAekqB,EAAYM,GACvB,IAAIziM,EACJ,MAAMr7D,EAASyB,KAAKL,QAAQ21P,WAAWzd,WAWvC,OAVIt5O,IACAq7D,EAAO,EAAYx8D,KAAKmB,EAAQyB,KAAKurN,MAAO,CACxC8wC,eACAN,aACAogB,WAAYpgB,EAAWlqB,QAGnB,MAARj4K,IACAA,EAAO,IAAI,IAERA,EAEX,mBAAmBmiM,EAAYM,EAAcG,EAAYK,EAAcqB,EAAcpsB,EAAU+0E,GAC3F,MAAMlnT,EAAUK,KAAKL,QAAQ21P,WACvBkiD,EAAY73S,EAAQ63S,UACpBC,EAAY93S,EAAQ83S,UACpBC,EAAY/3S,EAAQ+3S,UACpBC,EAAYh4S,EAAQg4S,UACpBmP,EAAmC,MAAtBnnT,EAAQmnT,WAAqBnnT,EAAQmnT,WAAannT,EAAQ23S,MACvErrG,EAAWtsM,EAAQwsR,mBACnBvyN,EAAOk4K,EAAWA,EAASD,KAAO,KAClC8lB,EAAgC,WAAjBuG,EAA4B1B,EAAaT,EACxDnE,EAAkC,WAAjBsG,EAA4BrB,EAAeR,EAClE,IAAIpxC,GAAQ,EACZ,MAAM87F,EAAc96G,IAChB,MAAMmwE,EAA8B,WAAjBle,EACb2oD,EACIA,EAAkBj0E,KAClB,KACJh5K,EACIA,EAAKmhN,kBACL,KACJuB,EAA8B,WAAjBpe,EACb2oD,EACIA,EAAkBj0E,KAClB,KACJh5K,EACIA,EAAKihN,kBACL,KACV,OAAO,EAAYz9Q,KAAK6uM,EAAUjsM,KAAKurN,MAAO,CAC1C3xJ,OACAk4K,WACAiqB,aACAS,aACA4f,aACAE,aACAjgB,eACAQ,eACAsf,WAAYpgB,EAAaA,EAAWlqB,KAAO,KAC3CwqC,WAAY7f,EAAaA,EAAW3qB,KAAO,KAC3CtwO,KAAM28P,KA6Cd,GA1CiB,MAAbs5C,IACyB,kBAAdA,EACFA,GAAaz7C,IAAeS,IAC7BvxC,GAAQ,GAIZA,EAAQ87F,EAAWvP,IAGvBvsF,GAAsB,MAAb0sF,IACgB,kBAAdA,GACFA,GAAa//C,IACd3sC,GAAQ,GAIZA,EAAQ87F,EAAWpP,IAGvB1sF,GAAsB,MAAbysF,IACgB,kBAAdA,GACFA,GAAa,GAASnjE,WAAWojB,KAClC1sC,GAAQ,GAIZA,EAAQ87F,EAAWrP,IAGvBzsF,GAAsB,MAAbwsF,IACgB,kBAAdA,EACFA,GAA6B,MAAhB9/C,GACV,GAAS3C,WAAW2C,IAAmC,MAAlBC,IACrC3sC,GAAQ,GAKhBA,EAAQ87F,EAAWtP,IAGvBxsF,GAAuB,MAAd67F,GAAsBh1E,EAAU,CACzC,MAAMl4K,EAAOk4K,EAASD,KAChB9tN,EAA0B,WAAjBm6O,EACT2oD,EACAjtP,EAAK08M,YACL5uQ,EAA0B,WAAjBw2P,EACT2oD,EACAjtP,EAAK48M,YACL3Y,EAAegpD,EACf7mT,KAAKurN,MAAM47D,YAAY0/B,EAAkBh1E,MACzC,KACN,GAAI9tN,GAAUrc,GAAUqc,EAAO8tN,MAAQnqO,EAAOmqO,MAAQgsB,EAClD,GAA0B,mBAAfipD,EACP77F,EAAQ87F,EAAWD,OAElB,CACD,MAAME,EAAiBhnT,KAAKs5E,MAAMqhM,kBAAkB9c,EAAc,CAC9Did,SAA2B,WAAjB5c,EACV0c,SAA2B,WAAjB1c,IAEd,GAAI8oD,EAAerlT,OACf,GAAmB,aAAfmlT,EAA2B,CACbE,EAAe1gQ,KAAMmuI,IAC/B,MAAMz1L,EAAIy1L,EAAK6hF,YACTn4Q,EAAIs2L,EAAK+hF,YACf,OAAQx3Q,GACJb,GACAa,EAAE6yO,OAAS9tN,EAAO8tN,MAClB1zO,EAAE0zO,OAASnqO,EAAOmqO,MACR,MAAV7yO,EAAE4zO,MACF5zO,EAAE4zO,OAAS7uN,EAAO6uN,MACR,MAAVz0O,EAAEy0O,MACFz0O,EAAEy0O,OAASlrO,EAAOkrO,SAGtB3nB,GAAQ,QAGX,IAAK67F,EAAY,CACJE,EAAe1gQ,KAAMmuI,IAC/B,MAAMz1L,EAAIy1L,EAAK6hF,YACTn4Q,EAAIs2L,EAAK+hF,YACf,OAAQx3Q,GAAKb,GAAKa,EAAE6yO,OAAS9tN,EAAO8tN,MAAQ1zO,EAAE0zO,OAASnqO,EAAOmqO,SAG9D5mB,GAAQ,KAUhC,OAHIA,GAAqB,MAAZhf,IACTgf,EAAQ87F,EAAW96G,IAEhBgf,EAEX,gBAAgBp+L,GACZ,MAAMksP,EAAW/4Q,KAAKL,QAAQ6xS,YAAYz4B,SACpCt9H,EAA2B,mBAAbs9H,EACd,EAAY37Q,KAAK27Q,EAAU/4Q,KAAKurN,MAAO1+L,GACvCksP,EACN,MAAoB,iBAATt9H,EACAz7I,KAAKurN,MAAM/3K,UAAU6vQ,eAAer9M,QAAQy1C,IAE1C,IAATA,EACOz7I,KAAKurN,MAAM/3K,UAAU6vQ,eAEzB5nK,GAAQ,KAEnB,cAAc5uH,EAAM5P,EAAMtd,GAClBsd,EAAO,GAAS4pR,aAAelnS,EAAQ0pS,UAG3CrpS,KAAKurN,MAAM39F,SAASq5L,4BAA4Bp6R,EAAMltB,GAE1D,gBAAgBktB,EAAM5P,EAAMtd,GACxB,OAAOK,KAAKurN,MAAM39F,SAASs5L,yBAAyBr6R,EAAM5P,GAE9D,YAAY40N,GACR,OAAO,KAEX,eAAeA,GACX,MAAMlyO,EAAU,CAAE4rN,MAAOvrN,KAAKurN,OACxBurC,EAAO92P,KAAKmnT,YAAYt1E,GAC9B,GAAIilB,EACA,OAAO,IAAIA,EAAKjlB,EAAMlyO,GAE1B,MAAMktB,EAAOglN,EAAKhlN,KAClB,GAAY,MAARA,GAAgC,iBAATA,EAAmB,CAC1C,MAAMg3C,EAAM,GAAS6vK,SAAS51O,IAAI+uB,GAClC,OAAIg3C,EACO,IAAIA,EAAIguK,EAAMlyO,GAElB,GAAS+zO,SAASQ,WAAWrnN,GAExC,OAAIglN,EAAKhlD,SACE,IAAI,GAASglD,EAAMlyO,GAE1BkyO,EAAKptK,SACE,IAAI,GAASotK,EAAMlyO,GAEvB,KAEX,iBAAiBgF,GACb,IAAIuB,EAAMvB,EAAKi1R,UAOf,MANmB,iBAAR1zR,IACPA,EAAM,GAAKo0R,kBAAkBx8R,IAAIoI,IAAQA,GAEzC,EAAU0B,cAAc1B,KACxBA,EAAMA,EAAI/G,QAEK,mBAAR+G,EACA,EAAY9I,KAAK8I,EAAKlG,KAAKurN,MAAO5mN,GAEtCuB,EAEX,0BAA0BvB,GACtB,IAAI0qB,EAAO1qB,EAAKi1R,UAIhB,GAHoB,iBAATvqQ,IACPA,EAAO,GAAKirQ,kBAAkBx8R,IAAIuxB,IAASA,GAE3C,EAAUznB,cAAcynB,GAAO,CAC/B,MAAM+3R,EAAe/3R,EAChBg4R,sBACL,MAA4B,mBAAjBD,EACA,EAAYhqT,KAAKgqT,EAAcpnT,KAAKurN,MAAO5mN,KAE7CyiT,EAEb,OAAO,EAEX,oBAAoBjyS,IACpB,eAAeA,IACf,kBAAkBA,KAEtB,GAAW,CACP,GAAUzV,QACX,GAAKb,UAAW,cAAe,MAClC,GAAW,CACP,GAAUa,QACX,GAAKb,UAAW,aAAc,MACjC,GAAW,CACP,GAAUa,QACX,GAAKb,UAAW,iBAAkB,MACrC,GAAW,CACP,GAAUa,QACX,GAAKb,UAAW,oBAAqB,MACxC,GAAW,CACP,GAAUa,QACX,GAAKb,UAAW,oBAAqB,MACxC,GAAW,CACP,GAAUa,QACX,GAAKb,UAAW,qBAAsB,MACzC,GAAW,CACP,GAAUa,QACX,GAAKb,UAAW,oBAAqB,MACxC,GAAW,CACP,GAAUa,QACX,GAAKb,UAAW,kBAAmB,MACtC,GAAW,CACP,GAAUa,QACX,GAAKb,UAAW,aAAc,MACjC,GAAW,CACP,GAAUa,QACX,GAAKb,UAAW,yBAA0B,MAC7C,GAAW,CACP,GAAUa,QACX,GAAKb,UAAW,yBAA0B,MAC7C,GAAW,CACP,GAAUa,QACX,GAAKb,UAAW,0BAA2B,MAC9C,GAAW,CACP,GAAUa,QACX,GAAKb,UAAW,kBAAmB,MACtC,GAAW,CACP,GAAUa,QACX,GAAKb,UAAW,yBAA0B,MAC7C,GAAW,CACP,GAAUa,QACX,GAAKb,UAAW,iBAAkB,MACrC,GAAW,CACP,GAAUa,QACX,GAAKb,UAAW,wBAAyB,MAC5C,GAAW,CACP,GAAUa,QACX,GAAKb,UAAW,kBAAmB,MACtC,GAAW,CACP,GAAUa,QACX,GAAKb,UAAW,yBAA0B,MAC7C,GAAW,CACP,GAAUa,QACX,GAAKb,UAAW,kBAAmB,MACtC,GAAW,CACP,GAAUa,QACX,GAAKb,UAAW,uBAAwB,MAC3C,GAAW,CACP,GAAUa,QACX,GAAKb,UAAW,iBAAkB,MACrC,GAAW,CACP,GAAUa,QACX,GAAKb,UAAW,wBAAyB,MAC5C,GAAW,CACP,GAAUa,QACX,GAAKb,UAAW,eAAgB,MACnC,GAAW,CACP,GAAUa,QACX,GAAKb,UAAW,gBAAiB,MACpC,GAAW,CACP,GAAUa,QACX,GAAKb,UAAW,uBAAwB,MAC3C,GAAW,CACP,GAAUa,QACX,GAAKb,UAAW,iBAAkB,MACrC,GAAW,CACP,GAAUa,QACX,GAAKb,UAAW,mBAAoB,MACvC,GAAW,CACP,GAAUa,QACX,GAAKb,UAAW,qBAAsB,MACzC,GAAW,CACP,GAAUa,QACX,GAAKb,UAAW,sBAAuB,MAC1C,GAAW,CACP,GAAUa,QACX,GAAKb,UAAW,uBAAwB,MAC3C,GAAW,CACP,GAAUa,QACX,GAAKb,UAAW,oBAAqB,MACxC,GAAW,CACP,GAAUsxB,SACX,GAAKtxB,UAAW,gBAAiB,MACpC,GAAW,CACP,GAAUsxB,SACX,GAAKtxB,UAAW,kBAAmB,MACtC,GAAW,CACP,GAAUa,QACX,GAAKb,UAAW,cAAe,MAClC,GAAW,CACP,GAAUa,MAAK,IAChB,GAAKb,UAAW,iBAAkB,MACrC,GAAW,CACP,GAAUa,QACX,GAAKb,UAAW,mBAAoB,MACvC,GAAW,CACP,GAAUa,QACX,GAAKb,UAAW,4BAA6B,MAChD,GAAW,CACP,GAAUa,QACX,GAAKb,UAAW,sBAAuB,MAC1C,GAAW,CACP,GAAUa,QACX,GAAKb,UAAW,iBAAkB,MACrC,GAAW,CACP,GAAUa,QACX,GAAKb,UAAW,oBAAqB,MC1oBxC,IA45CWyoT,GCh1CP,GCuFA,GFnKA,GAA0C,SAAUphE,EAAYx+O,EAAQlJ,EAAK2nP,GAC7E,IAA2H5oP,EAAvHD,EAAImJ,UAAU9E,OAAQ5D,EAAIT,EAAI,EAAIoK,EAAkB,OAATy+O,EAAgBA,EAAOxoP,OAAOkrE,yBAAyBnhE,EAAQlJ,GAAO2nP,EACrH,GAAuB,iBAAZ9gL,SAAoD,mBAArBA,QAAQ+gL,SAAyBroP,EAAIsnE,QAAQ+gL,SAASF,EAAYx+O,EAAQlJ,EAAK2nP,QACpH,IAAK,IAAIlpP,EAAIipP,EAAWvkP,OAAS,EAAG1E,GAAK,EAAGA,KAASM,EAAI2oP,EAAWjpP,MAAIc,GAAKT,EAAI,EAAIC,EAAEQ,GAAKT,EAAI,EAAIC,EAAEmK,EAAQlJ,EAAKT,GAAKR,EAAEmK,EAAQlJ,KAAST,GAChJ,OAAOT,EAAI,GAAKS,GAAKJ,OAAOC,eAAe8J,EAAQlJ,EAAKT,GAAIA,GAiCzD,MAAM,WAAc,GACvB,YAAY4B,GACRg/E,QACA3+E,KAAKL,QAAU,GAAa7B,IAAI6B,GAChCK,KAAKwkB,IAAM,IAAI,GAAWxkB,MAC1BA,KAAKN,KAAO,IAAI,GAAYM,MAC5BA,KAAK6sB,KAAO7sB,KAAKN,KAAK6nT,aACtBvnT,KAAKu3H,KAAOv3H,KAAKN,KAAK8nT,oBACtBxnT,KAAKmxG,MAAQnxG,KAAKN,KAAK+nT,qBACvBznT,KAAKwzC,UAAYxzC,KAAKN,KAAKgoT,yBAC3B1nT,KAAK84R,KAAO94R,KAAKN,KAAKioT,oBACtB3nT,KAAKm2O,UAAYn2O,KAAKN,KAAKkoT,yBAC3B5nT,KAAK4xM,KAAO5xM,KAAKN,KAAKmoT,oBACtB7nT,KAAKgvJ,WAAahvJ,KAAKN,KAAKooT,0BAC5B9nT,KAAKs5E,MAAQt5E,KAAKN,KAAKqoT,cACvB/nT,KAAK4tH,SAAW5tH,KAAKN,KAAKsoT,iBAC1BhoT,KAAKygS,UAAYzgS,KAAKN,KAAKuoT,yBAC3BjoT,KAAKwgS,SAAWxgS,KAAKN,KAAKwoT,wBAC1BloT,KAAKsnB,UAAYtnB,KAAKN,KAAKyoT,yBAC3BnoT,KAAK0gS,QAAU1gS,KAAKN,KAAK0oT,uBACzBpoT,KAAKi0R,SAAWj0R,KAAKN,KAAK2oT,wBAC1BroT,KAAK+2S,QAAU/2S,KAAKN,KAAK4oT,uBACzBtoT,KAAKg3S,SAAWh3S,KAAKN,KAAK6oT,iBAC1BvoT,KAAK8tI,WAAa9tI,KAAKN,KAAK8oT,mBAC5BxoT,KAAKgjT,MAAQhjT,KAAKN,KAAK+oT,qBACvBzoT,KAAKg6M,OAASh6M,KAAKN,KAAKgpT,sBACxB1oT,KAAK82S,QAAU92S,KAAKN,KAAKipT,uBACzB3oT,KAAK48C,KAAO58C,KAAKN,KAAKkpT,oBAE1B,gBACI,OAAO5oT,KAAK6sB,KAAKiF,UAErBh0B,IAAKE,OAAOC,eACR,OAAO,GAAMA,YAGjB,OAAO4zO,GACH,OAAOA,EAAKhlD,SAEhB,OAAOglD,GACH,OAAOA,EAAKptK,SAEhB,WAAW0tM,EAAOxyQ,EAAU,IAExB,OADAK,KAAKs5E,MAAMm+M,WAAWtlB,EAAOxyQ,GACtBK,KAEX,WAAWL,EAAU,IAEjB,OADAK,KAAKs5E,MAAMzgB,MAAMl5D,GACVK,KAEX,OAAOL,EAAU,IACb,OAAOK,KAAKs5E,MAAMvtB,OAAOpsD,GAE7B,UAAU4iB,GACN,OAAOviB,KAAKs5E,MAAMrvC,UAAU1nB,GAEhC,SAASA,EAAM5iB,EAAU,IAErB,OADAK,KAAKs5E,MAAMk+M,SAASj1Q,EAAM5iB,GACnBK,KAEX,YAAYwO,GACR,OAAOxO,KAAKs5E,MAAMysL,QAAQv3P,GAE9B,QAAQ7J,EAAMhF,EAAU,IACpB,OAAOK,KAAKs5E,MAAMs+M,QAAQjzR,EAAMhF,GAEpC,SAASgoB,EAAOhoB,EAAU,IACtB,OAAOK,KAAKo0Q,QAAQzsP,EAAMphB,IAAK5B,GAAU,GAAKkoL,OAAOloL,GAAQA,EAAO3E,KAAKktI,WAAWvoI,IAAShF,GAEjG,WAAW2xQ,GACP,OAAOtxQ,KAAKs5E,MAAM4zD,WAAWokI,GAEjC,WAAW3sQ,EAAMhF,EAAU,IACvB,OAAOK,KAAKs5E,MAAM07L,WAAWrwQ,EAAMhF,GAEvC,QAAQi6D,EAAMj6D,EAAU,IACpB,OAAOK,KAAKs5E,MAAMu+M,QAAQj+N,EAAMj6D,GAEpC,SAAS+uQ,EAAO/uQ,EAAU,IACtB,OAAOK,KAAKo0Q,QAAQ1F,EAAMnoQ,IAAKqzD,GAAU,GAAK6K,OAAO7K,GAAQA,EAAO55D,KAAK63O,WAAWj+K,IAASj6D,GAEjG,WAAWi6D,EAAMj6D,EAAU,IACvB,OAAOK,KAAKs5E,MAAM07L,WAAWp7M,EAAMj6D,GAEvC,WAAW2xQ,GACP,OAAOtxQ,KAAKs5E,MAAMu+J,WAAWy5B,GAEjC,QAAQz/B,EAAMlyO,EAAU,IAEpB,OADAK,KAAKs5E,MAAM86L,QAAQviC,EAAMlyO,GAClBK,KAEX,WAAW6xO,EAAMlyO,EAAU,IACvB,OAAOK,KAAKs5E,MAAM07L,WAAWnjC,EAAMlyO,GAEvC,YAAYwyQ,EAAOxyQ,EAAU,IACzB,OAAOK,KAAKs5E,MAAMo7M,YAAYviB,EAAOxyQ,GAEzC,qBAAqBkyO,EAAMlyO,EAAU,IACjC,OAAOK,KAAKs5E,MAAMg8M,qBAAqBzjD,EAAMlyO,GAEjD,yBAAyBkyO,EAAMlyO,EAAU,IAErC,OADAK,KAAKs5E,MAAM+7M,yBAAyBxjD,EAAMlyO,GACnCK,KAEX,QAAQ6xO,GACJ,OAAO7xO,KAAKs5E,MAAMj+D,IAAIw2N,GAQ1B,QAAQrjO,GACJ,OAAOxO,KAAKs5E,MAAMysL,QAAQv3P,GAE9B,WACI,OAAOxO,KAAKs5E,MAAM6zM,WAEtB,eACI,OAAOntR,KAAKs5E,MAAMve,QAKtB,WACI,OAAO/6D,KAAKs5E,MAAM8sL,WAKtB,WACI,OAAOpmQ,KAAKs5E,MAAMi1L,WAKtB,iBAAiB18B,GACb,OAAO7xO,KAAKs5E,MAAMq7L,iBAAiB9iC,GAKvC,iBAAiBA,GACb,OAAO7xO,KAAKs5E,MAAMm7L,iBAAiB5iC,GAKvC,kBAAkBA,EAAMlyO,EAAU,IAC9B,OAAOK,KAAKs5E,MAAMqhM,kBAAkB9oC,EAAMlyO,GAK9C,eACI,OAAOK,KAAKs5E,MAAMuvO,WAKtB,eACI,OAAO7oT,KAAKs5E,MAAMwvO,WAMtB,WAAWj3E,GACP,OAAO7xO,KAAKs5E,MAAMyvO,OAAOl3E,GAM7B,WAAWA,GACP,OAAO7xO,KAAKs5E,MAAM0vO,OAAOn3E,GAM7B,aAAaA,EAAMlyO,EAAU,IACzB,OAAOK,KAAKs5E,MAAM89M,aAAavlD,EAAMlyO,GAKzC,WAAW82R,EAAOC,EAAO/2R,EAAU,IAC/B,OAAOK,KAAKs5E,MAAM2vO,WAAWxyB,EAAOC,EAAO/2R,GAE/C,cAAckyO,EAAMlyO,EAAU,IAC1B,OAAOK,KAAKs5E,MAAM4vO,cAAcr3E,EAAMlyO,GAK1C,YAAY82R,EAAOC,EAAO/2R,EAAU,IAChC,OAAOK,KAAKs5E,MAAM6vO,YAAY1yB,EAAOC,EAAO/2R,GAEhD,gBAAgBkyO,EAAMlyO,EAAU,IAC5B,OAAOK,KAAKs5E,MAAM8vO,gBAAgBv3E,EAAMlyO,GAK5C,cAAc82R,EAAOC,EAAO/2R,EAAU,IAClC,OAAOK,KAAKs5E,MAAM+vO,cAAc5yB,EAAOC,EAAO/2R,GAElD,qBAAqBwyQ,GACjB,OAAOnyQ,KAAKs5E,MAAMu6L,qBAAqB1B,GAU3C,YAAYA,EAAOxyQ,EAAU,IACzB,OAAOK,KAAKs5E,MAAMy9M,YAAY5kB,EAAOxyQ,GASzC,cAAcwyQ,EAAOxyQ,EAAU,IAC3B,OAAOK,KAAKs5E,MAAMgwO,cAAcn3C,EAAOxyQ,GAE3C,WAAWwyQ,GACP,OAAOnyQ,KAAKs5E,MAAM28L,WAAW9D,GAEjC,kBAAkB5/N,EAAGC,GACjB,OAAOxyC,KAAKs5E,MAAM29M,kBAAkB1kP,EAAGC,GAE3C,eAAeD,EAAGC,EAAGzvC,EAAGlC,EAAGlB,GACvB,OAAOK,KAAKs5E,MAAM09M,eAAezkP,EAAGC,EAAGzvC,EAAGlC,EAAGlB,GAEjD,kBAAkBgF,EAAMhF,EAAU,IAC9B,OAAOK,KAAKs5E,MAAM24M,kBAAkBttR,EAAMhF,GAE9C,WAAWkyO,EAAM3oO,EAAUvJ,EAAU,IAEjC,OADAK,KAAKs5E,MAAMwvC,OAAO+oH,EAAM3oO,EAAUvJ,GAC3BK,KAMX,gBAAgB+jB,EAAQrc,EAAQ/H,EAAU,IACtC,OAAOK,KAAKs5E,MAAMiwO,gBAAgBxlS,EAAQrc,EAAQ/H,GAKtD,kBACI,OAAOK,KAAKs5E,MAAMukO,kBAKtB,aAAa1rC,EAAOxyQ,EAAU,IAC1B,OAAOK,KAAKs5E,MAAM08L,aAAa7D,EAAOxyQ,GAE1C,WAAWnC,EAAM+kB,EAAO,IACpBviB,KAAKs5E,MAAM88K,WAAW54P,EAAM+kB,GAEhC,UAAU/kB,EAAM+kB,EAAO,IACnBviB,KAAKs5E,MAAM+8K,UAAU74P,EAAM+kB,GAE/B,YAAYokK,EAAMC,EAAMC,GACpB,MAAMrpL,EAAuB,iBAATmpL,EAAoBA,EAAO,SACzCkvF,EAA0B,iBAATlvF,EAAoBC,EAAOD,EAC5CpkK,EAAuB,mBAATqkK,EAAsBC,EAAOD,EACjD5mL,KAAKo2P,WAAW54P,EAAM+kB,GACtB,MAAMphB,EAAS00Q,IAEf,OADA71Q,KAAKq2P,UAAU74P,EAAM+kB,GACdphB,EAEX,aAAa0wO,EAAM6jD,GACf,OAAO11R,KAAKs5E,MAAMkwO,aAAa33E,EAAM6jD,GAIzC,WACI,OAAO11R,KAAK4tH,SAAS5/C,WAEzB,OAAOruE,EAAU,IAEb,OADAK,KAAK4tH,SAASltD,OAAO/gE,GACdK,KAEX,SAASL,EAAU,IAEf,OADAK,KAAK4tH,SAASizK,SAASlhS,GAChBK,KAEX,UACI,OAAOA,KAAK4tH,SAASikE,UAEzB,SAASlwJ,GAEL,OADA3hC,KAAK4tH,SAAS67L,SAAS9nR,GAChB3hC,KAEX,SAAS6zD,GACL,OAAI,GAAKqgN,OAAOrgN,GACL7zD,KAAK6uQ,eAAeh7M,GAExB7zD,KAAKw2P,eAAe3iM,GAE/B,UAAUA,GACN,OAAI,GAAUm1C,gBAAgBn1C,GACnB7zD,KAAKqsR,gBAAgBx4N,GAE5B,GAAMuC,YAAYvC,GACX7zD,KAAK0pT,mBAAmB71P,GAE5B,GAEX,eAAeg+K,GACX,OAAO7xO,KAAK4tH,SAASihJ,eAAeh9B,GAExC,eAAerrO,GACX,OAAOxG,KAAK4tH,SAAS4oI,eAAehwP,GAExC,mBAAmB+rC,EAAGC,GAClB,MAAMzzC,EAAiB,iBAANwzC,EAAiB,CAAEA,IAAGC,EAAGA,GAAMD,EAChD,OAAOvyC,KAAK4tH,SAAS87L,mBAAmB3qT,GAE5C,gBAAgBwzC,EAAGC,EAAGnhB,EAAOoC,EAAQ9zB,GACjC,MAAMkpC,EAAoB,iBAAN0J,EACd,CACEA,IACAC,EAAGA,EACHnhB,MAAOA,EACPoC,OAAQA,GAEV8e,EACAu9N,EAA4B,iBAANv9N,EACtB5yC,EACA6yC,EACN,OAAOxyC,KAAK4tH,SAASy+J,gBAAgBxjP,EAAMinO,GAE/C,cAAcjjP,GACV,OAAO7sB,KAAK4tH,SAASwyJ,cAAcvzP,GAEvC,kBACI,OAAO7sB,KAAK4tH,SAAS+7L,kBAEzB,oBACI,OAAO3pT,KAAK4tH,SAASg8L,oBAEzB,OAAOlrL,GACH,YAAmB,IAARA,EACA1+H,KAAKwzC,UAAU4gN,aAE1Bp0P,KAAKwzC,UAAU0pJ,UAAUx+D,GAClB1+H,MAEX,OAAOqxB,EAAOoC,GAEV,OADAzzB,KAAK48C,KAAK6yE,OAAOp+F,EAAOoC,GACjBzzB,KAEX,YAAYqxB,EAAOoC,GAEf,OADAzzB,KAAK48C,KAAKukP,YAAY9vQ,EAAOoC,GACtBzzB,KAEX,eAAeqxB,EAAOoC,GAElB,OADAzzB,KAAK48C,KAAKwpQ,eAAe/0R,EAAOoC,GACzBzzB,KAEX,WAAWqxB,EAAOoC,GAEd,OADAzzB,KAAK48C,KAAKitQ,WAAWx4R,EAAOoC,GACrBzzB,KAEX,MAAM0zD,EAAIC,EAAKD,EAAIspC,EAAK,EAAGC,EAAK,GAC5B,YAAkB,IAAPvpC,EACA1zD,KAAKwzC,UAAU0tP,YAE1BlhS,KAAKwzC,UAAU3uB,MAAM6uC,EAAIC,EAAIqpC,EAAIC,GAC1Bj9F,MAEX,KAAKwxN,EAAQ7xN,GACT,MAAMs0R,EAAWj0R,KAAKi0R,SAASb,OAC/B,GAAIa,EAAU,CACV,QAAsB,IAAXziE,EACP,OAAOyiE,EAAS0L,OAEpB1L,EAAS0L,KAAKnuE,EAAQ7xN,OAErB,CACD,QAAsB,IAAX6xN,EACP,OAAOxxN,KAAKwzC,UAAUs2Q,UAE1B9pT,KAAKwzC,UAAUmsP,KAAKnuE,EAAQ7xN,GAEhC,OAAOK,KAEX,OAAOwxN,EAAQ7xN,EAAU,IACrB,MAAMs0R,EAAWj0R,KAAKi0R,SAASb,OAO/B,OANIa,EACAA,EAAS0L,KAAKnuE,EAAQ7zN,OAAO+rD,OAAO/rD,OAAO+rD,OAAO,GAAI/pD,GAAU,CAAE48L,UAAU,KAG5Ev8L,KAAKwzC,UAAUmsP,KAAKnuE,EAAQ7zN,OAAO+rD,OAAO/rD,OAAO+rD,OAAO,GAAI/pD,GAAU,CAAE48L,UAAU,KAE/Ev8L,KAEX,WAAW6oC,EAAMlpC,EAAU,IACvB,MAAMs0R,EAAWj0R,KAAKi0R,SAASb,OAO/B,OANIa,EACAA,EAASmb,WAAWvmQ,EAAMlpC,GAG1BK,KAAKwzC,UAAU47P,WAAWvmQ,EAAMlpC,GAE7BK,KAEX,UAAUL,EAAU,IAChB,MAAMs0R,EAAWj0R,KAAKi0R,SAASb,OAO/B,OANIa,EACAA,EAAS81B,UAAUpqT,GAGnBK,KAAKwzC,UAAUu2Q,UAAUpqT,GAEtBK,KAEX,OAAO00D,EAAOsoC,EAAIC,GACd,YAAqB,IAAVvoC,EACA10D,KAAKwzC,UAAUw2Q,eAE1BhqT,KAAKwzC,UAAU+f,OAAOmB,EAAOsoC,EAAIC,GAC1Bj9F,MAEX,UAAU26D,EAAIC,GACV,YAAkB,IAAPD,EACA36D,KAAKwzC,UAAUmpQ,kBAE1B38S,KAAKwzC,UAAU4f,UAAUuH,EAAIC,GACtB56D,MAEX,YAAYqzD,EAAIC,GACZ,MAAMq1E,EAAK3oI,KAAKozD,YACVuH,EAAKguE,EAAGhuE,GAAKtH,EACbuH,EAAK+tE,EAAG/tE,GAAKtH,EACnB,OAAOtzD,KAAKozD,UAAUuH,EAAIC,GAQ9B,UACI,OAAO56D,KAAKwzC,UAAU6vQ,eAE1B,eACI,OAAOrjT,KAAKwzC,UAAU6vQ,eAE1B,eAAe1jT,EAAU,IACrB,OAAOK,KAAKwzC,UAAUk6P,eAAe/tS,GAEzC,eAAeA,EAAU,IACrB,OAAOK,KAAKwzC,UAAUupQ,eAAep9S,GAEzC,aAAaytS,EAAWC,EAAY52Q,EAAS92B,GACzC,OAAOK,KAAKwzC,UAAU+5P,aAAaH,EAAWC,EAAY52Q,EAAS92B,GAEvE,kBAAkBA,EAAU,IAExB,OADAK,KAAKwzC,UAAUy2Q,kBAAkBtqT,GAC1BK,KAKX,OAAO4tS,GACH,OAAO5tS,KAAK2hS,YAAYiM,GAE5B,YAAYr7P,EAAGC,EAAG7yC,GACd,MAAMs0R,EAAWj0R,KAAKi0R,SAASb,OAO/B,OANIa,EACAA,EAAS0N,YAAYpvP,EAAGC,EAAG7yC,GAG3BK,KAAKwzC,UAAUmuP,YAAYpvP,EAAGC,GAE3BxyC,KAEX,cAAcL,GACV,MAAMs0R,EAAWj0R,KAAKi0R,SAASb,OAO/B,OANIa,EACAA,EAASi2B,cAAcvqT,GAGvBK,KAAKwzC,UAAU02Q,cAAcvqT,GAE1BK,KAEX,WAAW6xO,EAAMlyO,GACb,MAAMs0R,EAAWj0R,KAAKi0R,SAASb,OAO/B,OANIa,EACAA,EAASk2B,WAAWt4E,EAAMlyO,GAG1BK,KAAKwzC,UAAU22Q,WAAWt4E,GAEvB7xO,KAEX,cAAcm2D,EAAO5jB,EAAGC,EAAG7yC,EAAU,IACjC,MAAMs0R,EAAWj0R,KAAKi0R,SAASb,OAO/B,OANIa,EACAA,EAASia,cAAc/3O,EAAO5jB,EAAGC,EAAG7yC,GAGpCK,KAAKwzC,UAAU06P,cAAc/3O,EAAO5jB,EAAGC,GAEpCxyC,KAEX,aAAa6oC,EAAMk4N,EAAWphQ,GAC1B,MAAMs0R,EAAWj0R,KAAKi0R,SAASb,OAO/B,OANIa,EACAA,EAASwa,aAAa5lQ,EAAMk4N,EAAWphQ,GAGvCK,KAAKwzC,UAAUi7P,aAAa5lQ,EAAMk4N,GAE/B/gQ,KAEX,aAAa6xO,EAAMkvB,EAAWphQ,GAC1B,MAAMs0R,EAAWj0R,KAAKi0R,SAASb,OAO/B,OANIa,EACAA,EAASua,aAAa38D,EAAMkvB,EAAWphQ,GAGvCK,KAAKwzC,UAAUg7P,aAAa38D,EAAMkvB,GAE/B/gQ,KAEX,gBAAgBq3B,EAAK13B,GACjB,MAAMs0R,EAAWj0R,KAAKi0R,SAASb,OAO/B,OANIa,EACAA,EAASsa,gBAAgBl3Q,EAAK13B,GAG9BK,KAAKwzC,UAAU+6P,gBAAgBl3Q,EAAK13B,GAEjCK,KAIX,kBACI,OAAOA,KAAKmxG,MAAMkoM,kBAKtB,kBACI,OAAOr5S,KAAKmxG,MAAM+nM,kBAKtB,gBACI,OAAOl5S,KAAKmxG,MAAMooM,gBAEtB,WAAWhnQ,EAAGC,GACV,OAAOxyC,KAAKmxG,MAAMt7C,WAAWtjB,EAAGC,GAEpC,YAAYD,EAAGC,EAAGnhB,EAAOoC,GACrB,OAAI,GAAUu1E,gBAAgBz2D,GACnBvyC,KAAKmxG,MAAMi5M,gBAAgB73Q,GAErB,iBAANA,GACM,iBAANC,GACU,iBAAVnhB,GACW,iBAAXoC,EACAzzB,KAAKmxG,MAAMi5M,gBAAgB73Q,EAAGC,EAAGnhB,EAAOoC,GAE5CzzB,KAAKmxG,MAAMk5M,iBAAiB93Q,EAAGC,GAE1C,YAAYD,EAAGC,EAAGnhB,EAAOoC,GACrB,OAAI,GAAUu1E,gBAAgBz2D,GACnBvyC,KAAKmxG,MAAMm5M,gBAAgB/3Q,GAErB,iBAANA,GACM,iBAANC,GACU,iBAAVnhB,GACW,iBAAXoC,EACAzzB,KAAKmxG,MAAMm5M,gBAAgB/3Q,EAAGC,EAAGnhB,EAAOoC,GAE5CzzB,KAAKmxG,MAAMo5M,iBAAiBh4Q,EAAGC,GAE1C,cAAcD,EAAGC,EAAGnhB,EAAOoC,GACvB,OAAI,GAAUu1E,gBAAgBz2D,GACnBvyC,KAAKmxG,MAAMq5M,kBAAkBj4Q,GAEvB,iBAANA,GACM,iBAANC,GACU,iBAAVnhB,GACW,iBAAXoC,EACAzzB,KAAKmxG,MAAMq5M,kBAAkBj4Q,EAAGC,EAAGnhB,EAAOoC,GAE9CzzB,KAAKmxG,MAAMiwL,mBAAmB7uP,EAAGC,GAE5C,cAAcD,EAAGC,EAAGnhB,EAAOoC,GACvB,OAAI,GAAUu1E,gBAAgBz2D,GACnBvyC,KAAKmxG,MAAMs5M,kBAAkBl4Q,GAEvB,iBAANA,GACM,iBAANC,GACU,iBAAVnhB,GACW,iBAAXoC,EACAzzB,KAAKmxG,MAAMs5M,kBAAkBl4Q,EAAGC,EAAGnhB,EAAOoC,GAE9CzzB,KAAKmxG,MAAMu5M,mBAAmBn4Q,EAAGC,GAE5C,aAAaD,EAAGC,EAAGnhB,EAAOoC,GACtB,OAAI,GAAUu1E,gBAAgBz2D,GACnBvyC,KAAKmxG,MAAMsoM,iBAAiBlnQ,GAEtB,iBAANA,GACM,iBAANC,GACU,iBAAVnhB,GACW,iBAAXoC,EACAzzB,KAAKmxG,MAAMsoM,iBAAiBlnQ,EAAGC,EAAGnhB,EAAOoC,GAE7CzzB,KAAKmxG,MAAMmoM,kBAAkB/mQ,EAAGC,GAE3C,aAAaD,EAAGC,EAAGnhB,EAAOoC,GACtB,OAAI,GAAUu1E,gBAAgBz2D,GACnBvyC,KAAKmxG,MAAM4oM,iBAAiBxnQ,GAEtB,iBAANA,GACM,iBAANC,GACU,iBAAVnhB,GACW,iBAAXoC,EACAzzB,KAAKmxG,MAAM4oM,iBAAiBxnQ,EAAGC,EAAGnhB,EAAOoC,GAE7CzzB,KAAKmxG,MAAMyoM,kBAAkBrnQ,EAAGC,GAE3C,cAAcD,EAAGC,EAAGnhB,EAAOoC,GACvB,OAAI,GAAUu1E,gBAAgBz2D,GACnBvyC,KAAKmxG,MAAMw5M,kBAAkBp4Q,GAEvB,iBAANA,GACM,iBAANC,GACU,iBAAVnhB,GACW,iBAAXoC,EACAzzB,KAAKmxG,MAAMw5M,kBAAkBp4Q,EAAGC,EAAGnhB,EAAOoC,GAE9CzzB,KAAKmxG,MAAMkxM,mBAAmB9vQ,EAAGC,GAI5C,aAAa7yC,GACT,OAAOK,KAAKu3H,KAAK/lH,OAAO7R,GAE5B,eAAeA,GACX,OAAOK,KAAKu3H,KAAK22C,SAASvuK,GAE9B,aAAaA,GACT,OAAOK,KAAKu3H,KAAKw+B,OAAOp2J,GAI5B,cACI,OAAOK,KAAK4xM,KAAK8hF,cAErB,YAAYryK,GAER,OADArhH,KAAK4xM,KAAKg5G,YAAYvpM,GACfrhH,KAEX,WAEI,OADAA,KAAK4xM,KAAKpsL,OACHxlB,KAEX,WAEI,OADAA,KAAK4xM,KAAKlsL,OACH1lB,KAEX,YAEI,OADAA,KAAK4xM,KAAK/4I,QACH74D,KAEX,SAASL,GAEL,OADAK,KAAK4xM,KAAK1wC,KAAKvhK,GACRK,KAIX,mBAEI,OADAA,KAAKgvJ,WAAWvjG,SACTzrD,KAEX,eAAeL,EAASkrT,GACpB,MAAM52B,EAAWj0R,KAAKi0R,SAASb,OAO/B,OANgB,MAAZa,GAAgD,MAA3Bj0R,KAAKL,QAAQqvJ,YAAuB67J,EAIzD7qT,KAAKgvJ,WAAWkS,KAAKvhK,GAHrBs0R,EAASuX,kBAAkBtqI,KAAKvhK,GAK7BK,KAEX,gBAAgB6qT,GACZ,MAAM52B,EAAWj0R,KAAKi0R,SAASb,OAO/B,OANgB,MAAZa,GAAgD,MAA3Bj0R,KAAKL,QAAQqvJ,YAAuB67J,EAIzD7qT,KAAKgvJ,WAAWn2F,QAHhBo7N,EAASuX,kBAAkB3yO,QAKxB74D,KAIX,qBACI,OAAQA,KAAKygS,UAAUjzR,SAE3B,kBAEI,OADAxN,KAAKygS,UAAUhjG,SACRz9L,KAEX,mBAEI,OADAA,KAAKygS,UAAU3iR,UACR9d,KAEX,gBAAgB+8I,GAiBZ,OAhBe,MAAXA,EACIA,IAAY/8I,KAAK8qT,uBACb/tK,EACA/8I,KAAK+qT,kBAGL/qT,KAAKgrT,oBAIRhrT,KAAK8qT,qBACV9qT,KAAKgrT,mBAGLhrT,KAAK+qT,kBAEF/qT,KAEX,mBACI,OAAOA,KAAKygS,UAAU/4O,UAE1B,sBACI,OAAO1nD,KAAKygS,UAAUtuB,MAE1B,iBAEI,OADAnyQ,KAAKygS,UAAUvzC,QACRltP,KAEX,KAAKmyQ,EAAOxyQ,EAAU,IAElB,OADAK,KAAKygS,UAAUl5R,KAAK4qQ,EAAOxyQ,GACpBK,KAEX,IAAImyQ,EAAOxyQ,EAAU,IAEjB,OADAK,KAAKygS,UAAUib,IAAIvpC,EAAOxyQ,GACnBK,KAEX,MAAML,EAAU,GAAI4rN,EAAQvrN,MACxB,OAAOA,KAAKygS,UAAUkb,MAAMh8S,EAAS4rN,GAIzC,mBACI,OAAQvrN,KAAK0gS,QAAQlzR,SAEzB,gBAEI,OADAxN,KAAK0gS,QAAQjjG,SACNz9L,KAEX,iBAEI,OADAA,KAAK0gS,QAAQ5iR,UACN9d,KAEX,cAAc+8I,GAiBV,OAhBe,MAAXA,EACIA,IAAY/8I,KAAKirT,qBACbluK,EACA/8I,KAAKkrT,gBAGLlrT,KAAKmrT,kBAIRnrT,KAAKirT,mBACVjrT,KAAKmrT,iBAGLnrT,KAAKkrT,gBAEFlrT,KAEX,KAAKL,EAAU,IAEX,OADAK,KAAK0gS,QAAQ0qB,KAAKzrT,GACXK,KAEX,cAAcL,EAAU,IAEpB,OADAK,KAAK0gS,QAAQ5zL,OAAOntG,GACbK,KAEX,KAAKL,EAAU,IAEX,OADAK,KAAK0gS,QAAQ2qB,KAAK1rT,GACXK,KAEX,UACI,OAAOA,KAAK0gS,QAAQ4qB,UAExB,UACI,OAAOtrT,KAAK0gS,QAAQ6qB,UAExB,aAAa5rT,EAAU,IACnBK,KAAK0gS,QAAQxzC,MAAMvtP,GAIvB,oBACI,OAAQK,KAAKg3S,SAASxpS,SAE1B,iBAEI,OADAxN,KAAKg3S,SAASv5G,SACPz9L,KAEX,kBAEI,OADAA,KAAKg3S,SAASl5R,UACP9d,KAEX,eAAe+8I,GAiBX,OAhBe,MAAXA,EACIA,IAAY/8I,KAAKwrT,sBACbzuK,EACA/8I,KAAKyrT,iBAGLzrT,KAAK0rT,mBAIR1rT,KAAKwrT,oBACVxrT,KAAK0rT,kBAGL1rT,KAAKyrT,iBAEFzrT,KAEX,QAAQoP,EAAM9I,EAAU86C,GAEpB,OADAphD,KAAKg3S,SAAS5uR,GAAGhZ,EAAM9I,EAAU86C,GAC1BphD,KAEX,UAAUoP,EAAMgyC,GAEZ,OADAphD,KAAKg3S,SAASvuR,IAAIrZ,EAAMgyC,GACjBphD,KAIX,sBACI,OAAQA,KAAK8tI,WAAWtgI,SAE5B,mBAEI,OADAxN,KAAK8tI,WAAW2vD,SACTz9L,KAEX,oBAEI,OADAA,KAAK8tI,WAAWhwH,UACT9d,KAEX,iBAAiB+8I,GAeb,OAde,MAAXA,EACI/8I,KAAK2rT,sBACL3rT,KAAK4rT,oBAGL5rT,KAAK6rT,mBAGJ9uK,EACL/8I,KAAK6rT,mBAGL7rT,KAAK4rT,oBAEF5rT,KAIX,aAEI,OADiBA,KAAKi0R,SAASb,OAEpBpzR,KAAKi0R,SAASymB,SAElB16S,KAAK82S,QAAQ4D,SAExB,gBAQI,OAPiB16S,KAAKi0R,SAASb,OAE3BpzR,KAAKi0R,SAAS63B,gBAGd9rT,KAAK82S,QAAQgV,gBAEV9rT,KAEX,iBAQI,OAPiBA,KAAKi0R,SAASb,OAE3BpzR,KAAKi0R,SAAS83B,iBAGd/rT,KAAK82S,QAAQiV,iBAEV/rT,KAEX,cAAc06S,GAiBV,OAhBgB,MAAZA,EACI16S,KAAKgsT,aACLhsT,KAAK+rT,iBAGL/rT,KAAK8rT,gBAGJpR,IAAa16S,KAAKgsT,eACnBtR,EACA16S,KAAK8rT,gBAGL9rT,KAAK+rT,kBAGN/rT,KAIX,eACI,IAAI8zI,EAC4B,QAA/BA,EAAK9zI,KAAKi0R,SAASb,cAA2B,IAAPt/I,GAAyBA,EAAG/1H,OAExE,iBACI,IAAI+1H,EAC4B,QAA/BA,EAAK9zI,KAAKi0R,SAASb,cAA2B,IAAPt/I,GAAyBA,EAAGqnK,SAExE,iBACI,IAAIrnK,EAC4B,QAA/BA,EAAK9zI,KAAKi0R,SAASb,cAA2B,IAAPt/I,GAAyBA,EAAGroF,SAExE,uBAEI,OADiBzrD,KAAKi0R,SAASb,OACf64B,oBAEpB,qBAAqB11R,EAAMtlB,EAAKtR,GAG5B,OAFiBK,KAAKi0R,SAASb,OACtB64B,kBAAkB11R,EAAMtlB,EAAKtR,GAC/BK,KAQX,cAAcuyC,EAAGC,EAAG7yC,GAGhB,OAFiBK,KAAKi0R,SAASb,OACtBua,cAAcp7P,EAAGC,EAAG7yC,GACtBK,KAMX,gBAAgBL,GAGZ,OAFiBK,KAAKi0R,SAASb,OACtB84B,gBAAgBvsT,GAClBK,KAMX,aAAa6xO,EAAMlyO,GAGf,OAFiBK,KAAKi0R,SAASb,OACtB+4B,aAAat6E,EAAMlyO,GACrBK,KAEX,kBAAkBuyC,EAAGC,EAAG7yC,GAGpB,OAFiBK,KAAKi0R,SAASb,OACtB8c,kBAAkB39P,EAAGC,EAAG7yC,GAC1BK,KAEX,iBAAiB6oC,EAAMlpC,EAAU,IAG7B,OAFiBK,KAAKi0R,SAASb,OACtBg5B,iBAAiBvjR,EAAMlpC,GACzBK,KAIX,qBACI,OAAQA,KAAKsnB,UAAU9Z,SAE3B,kBAEI,OADAxN,KAAKsnB,UAAUm2K,SACRz9L,KAEX,mBAEI,OADAA,KAAKsnB,UAAUxJ,UACR9d,KAEX,gBAAgB+8I,GAiBZ,OAhBe,MAAXA,EACIA,IAAY/8I,KAAKq8S,uBACbt/J,EACA/8I,KAAKqsT,kBAGLrsT,KAAKssT,oBAIRtsT,KAAKq8S,qBACVr8S,KAAKssT,mBAGLtsT,KAAKqsT,kBAEFrsT,KAEX,sBACI,OAAOA,KAAKsnB,UAAUguE,aAE1B,0BAEI,OADAt1F,KAAKsnB,UAAUilS,iBACRvsT,KAEX,2BAEI,OADAA,KAAKsnB,UAAUklS,kBACRxsT,KAEX,wBAAwB0lF,GAiBpB,OAhBgB,MAAZA,EACIA,IAAa1lF,KAAKysT,wBACd/mO,EACA1lF,KAAK0sT,0BAGL1sT,KAAK2sT,4BAIR3sT,KAAKysT,sBACVzsT,KAAK2sT,2BAGL3sT,KAAK0sT,0BAEF1sT,KAEX,qBACI,OAAiD,IAA1CA,KAAKsnB,UAAU8rQ,OAAOzzR,QAAQ0zR,QAEzC,yBAEI,OADArzR,KAAKsnB,UAAU8rQ,OAAOzzR,QAAQ0zR,SAAU,EACjCrzR,KAEX,0BAEI,OADAA,KAAKsnB,UAAU8rQ,OAAOzzR,QAAQ0zR,SAAU,EACjCrzR,KAEX,uBAAuBqzR,GAiBnB,OAhBe,MAAXA,EACIA,IAAYrzR,KAAK4sT,uBACbv5B,EACArzR,KAAK6sT,yBAGL7sT,KAAK8sT,2BAIR9sT,KAAK4sT,qBACV5sT,KAAK8sT,0BAGL9sT,KAAK6sT,yBAEF7sT,KAEX,sBACI,OAAQA,KAAKsnB,UAAUi3R,mBAE3B,mBAEI,OADAv+S,KAAKsnB,UAAUylS,mBACR/sT,KAEX,oBAEI,OADAA,KAAKsnB,UAAU0lS,oBACRhtT,KAEX,iBAAiB+8I,GAiBb,OAhBe,MAAXA,EACIA,IAAY/8I,KAAKitT,wBACblwK,EACA/8I,KAAK+sT,mBAGL/sT,KAAKgtT,qBAIRhtT,KAAKitT,sBACVjtT,KAAKgtT,oBAGLhtT,KAAK+sT,mBAEF/sT,KAEX,qBACI,OAAgD,IAAzCA,KAAKsnB,UAAU8rQ,OAAOzzR,QAAQihL,OAEzC,yBAEI,OADA5gL,KAAKsnB,UAAU8rQ,OAAOzzR,QAAQihL,QAAS,EAChC5gL,KAEX,0BAEI,OADAA,KAAKsnB,UAAU8rQ,OAAOzzR,QAAQihL,QAAS,EAChC5gL,KAEX,uBAAuB4gL,GAiBnB,OAhBc,MAAVA,EACIA,IAAW5gL,KAAKktT,uBACZtsI,EACA5gL,KAAKmtT,yBAGLntT,KAAKotT,2BAIRptT,KAAKktT,qBACVltT,KAAKotT,0BAGLptT,KAAKmtT,yBAEFntT,KAEX,uBAAuB0nF,GACnB1nF,KAAKsnB,UAAU+lS,aAAa3lO,GAEhC,mBAAmBl2E,GAEf,OADAxR,KAAKsnB,UAAUo3R,UAAUltS,GAClBxR,KAEX,2BAA2Bgc,GAEvB,OADAhc,KAAKsnB,UAAU2wQ,WAAWj8Q,GACnBhc,KAEX,mBACI,OAAOA,KAAKsnB,UAAUogC,UAE1B,eAAe/nD,GAEX,OADAK,KAAKsnB,UAAU4lO,MAAMvtP,GACdK,KAEX,eAAemyQ,EAAOxyQ,GAElB,OADAK,KAAKsnB,UAAU3Q,MAAMw7P,EAAOxyQ,GACrBK,KAEX,mBACI,OAAOA,KAAKsnB,UAAU6qP,MAE1B,uBACI,OAAOnyQ,KAAKsnB,UAAU3lB,OAE1B,WAAWkwO,GACP,OAAO7xO,KAAKsnB,UAAUk3R,WAAW3sE,GAErC,OAAOsgC,EAAOxyQ,GAEV,OADAK,KAAKsnB,UAAU1d,OAAOuoQ,EAAOxyQ,GACtBK,KAEX,SAASmyQ,EAAOxyQ,GAEZ,OADAK,KAAKsnB,UAAUoqR,SAASv/B,EAAOxyQ,GACxBK,KAIX,oBACI,OAAQA,KAAKwgS,SAASpN,OAAO5lR,SAEjC,iBAEI,OADAxN,KAAKwgS,SAASpN,OAAO31F,SACdz9L,KAEX,kBAEI,OADAA,KAAKwgS,SAASpN,OAAOt1Q,UACd9d,KAEX,eAAe+8I,GACX,GAAe,MAAXA,EAiBA,OANI/8I,KAAKstT,oBACLttT,KAAKutT,kBAGLvtT,KAAKwtT,iBAEFxtT,KAhBH+8I,IAAY/8I,KAAKstT,sBACbvwK,EACA/8I,KAAKwtT,iBAGLxtT,KAAKutT,mBAcrB,eAEI,OADAvtT,KAAKwgS,SAASpN,OAAO1tQ,OACd1lB,KAEX,kBAAkBwR,GAEd,OADAxR,KAAKwgS,SAASpN,OAAOsrB,UAAUltS,GACxBxR,KAEX,8BACI,OAAiD,IAA1CA,KAAKwgS,SAASpN,OAAOzzR,QAAQ2gS,SAExC,2BAEI,OADAtgS,KAAKwgS,SAASpN,OAAOzzR,QAAQ2gS,UAAW,EACjCtgS,KAEX,4BAEI,OADAA,KAAKwgS,SAASpN,OAAOzzR,QAAQ2gS,UAAW,EACjCtgS,KAEX,yBAAyBytT,GAiBrB,OAhBwB,MAApBA,EACIA,IAAqBztT,KAAK0tT,gCACtBD,EACAztT,KAAK2tT,2BAGL3tT,KAAK4tT,6BAIR5tT,KAAK0tT,8BACV1tT,KAAK4tT,4BAGL5tT,KAAK2tT,2BAEF3tT,KAEX,kBACI,OAA8C,IAAvCA,KAAKwgS,SAASpN,OAAOzzR,QAAQqlS,MAExC,sBAEI,OADAhlS,KAAKwgS,SAASpN,OAAOzzR,QAAQqlS,OAAQ,EAC9BhlS,KAEX,uBAEI,OADAA,KAAKwgS,SAASpN,OAAOzzR,QAAQqlS,OAAQ,EAC9BhlS,KAEX,oBAAoBglS,GAiBhB,OAhBa,MAATA,EACIA,IAAUhlS,KAAK6tT,oBACX7oB,EACAhlS,KAAK8tT,sBAGL9tT,KAAK+tT,wBAIR/tT,KAAK6tT,kBACV7tT,KAAK+tT,uBAGL/tT,KAAK8tT,sBAEF9tT,KAEX,uBACI,OAAOA,KAAKwgS,SAASpN,OAAOzzR,QAAQiiS,UAExC,qBAAqBA,GAEjB,OADA5hS,KAAKwgS,SAASpN,OAAOzzR,QAAQiiS,UAAYA,EAClC5hS,KAIX,cAEI,OADAA,KAAKk8E,KAAK,gBACHl8E,KAEX,YAEI,OADAA,KAAKk8E,KAAK,cACHl8E,KAEX,YAEI,OADAA,KAAKk8E,KAAK,cACHl8E,KAIX,MAAMsG,EAAU3G,EAAU,IACtBK,KAAKg6M,OAAOisG,MAAM3/S,EAAU3G,GAEhC,UAAU2G,EAAU3G,GAChBK,KAAKg6M,OAAOxlC,UAAUluK,EAAU3G,GAEpC,MAAM2G,EAAU3G,EAAU,IACtBK,KAAKg6M,OAAOg0G,MAAM1nT,EAAU3G,GAEhC,OAAO2G,EAAU3G,EAAU,IACvBK,KAAKg6M,OAAOi0G,OAAO3nT,EAAU3G,GAIjC,aAAaA,GACTK,KAAKgjT,MAAMx9R,KAAK7lB,GAIpB,UACIK,KAAKkuT,aACLluT,KAAKyoB,MACLzoB,KAAKwkB,IAAIyrG,UACTjwH,KAAKN,KAAKuwH,UACVjwH,KAAKu3H,KAAKtH,UACVjwH,KAAK4xM,KAAK3hF,UACVjwH,KAAKmxG,MAAM8e,UACXjwH,KAAKwzC,UAAUy8E,UACfjwH,KAAK84R,KAAK7oK,UACVjwH,KAAKm2O,UAAUlmH,UACfjwH,KAAKgvJ,WAAW/+B,UAChBjwH,KAAKygS,UAAUxwK,UACfjwH,KAAKwgS,SAASvwK,UACdjwH,KAAKsnB,UAAU2oG,UACfjwH,KAAK0gS,QAAQzwK,UACbjwH,KAAKg3S,SAAS/mL,UACdjwH,KAAK8tI,WAAW7d,UAChBjwH,KAAKgjT,MAAM/yL,UACXjwH,KAAKg6M,OAAO/pF,UACZjwH,KAAK+2S,QAAQ9mL,UACbjwH,KAAK82S,QAAQ7mL,UACbjwH,KAAKi0R,SAAShkK,UACdjwH,KAAK6sB,KAAKojG,UACVjwH,KAAK4tH,SAASqC,UACdjwH,KAAK48C,KAAKqzE,WAGlB,GAAW,CACP,GAAUgsK,iBACX,GAAMp9R,UAAW,eAAgB,MACpC,GAAW,CACP,GAAUo9R,iBACX,GAAMp9R,UAAW,iBAAkB,MACtC,GAAW,CACP,GAAUo9R,iBACX,GAAMp9R,UAAW,iBAAkB,MACtC,GAAW,CACP,GAAUo9R,iBACX,GAAMp9R,UAAW,uBAAwB,MAC5C,GAAW,CACP,GAAUo9R,iBACX,GAAMp9R,UAAW,uBAAwB,MAC5C,GAAW,CACP,GAAUo9R,iBACX,GAAMp9R,UAAW,gBAAiB,MACrC,GAAW,CACP,GAAUo9R,iBACX,GAAMp9R,UAAW,kBAAmB,MACvC,GAAW,CACP,GAAUo9R,iBACX,GAAMp9R,UAAW,eAAgB,MACpC,GAAW,CACP,GAAUo9R,iBACX,GAAMp9R,UAAW,oBAAqB,MACzC,GAAW,CACP,GAAUo9R,iBACX,GAAMp9R,UAAW,mBAAoB,MACxC,GAAW,CACP,GAASoxH,WACV,GAAMpxH,UAAW,UAAW,OACpByoT,GAsBR,KAAU,GAAQ,KApBXthE,KAAO,GACbshE,GAAM6G,KAAO,GACb7G,GAAMniB,SAAW,GACjBmiB,GAAM8G,SAAW,GACjB9G,GAAM+G,WAAa,GACnB/G,GAAMgH,YAAc,GACpBhH,GAAMiH,YAAc,GACpBjH,GAAMkH,YAAc,GACpBlH,GAAMmH,aAAe,GACrBnH,GAAMoH,aAAe,GACrBpH,GAAMqH,cAAgB,GACtBrH,GAAMsH,eAAiB,GACvBtH,GAAMzG,eAAiB,GACvByG,GAAMuH,gBAAkB,GACxBvH,GAAMwH,gBAAkB,GACxBxH,GAAMyH,iBAAmB,GACzBzH,GAAM0H,iBAAmB,GACzB1H,GAAM2H,iBAAmB,GACzB3H,GAAM4H,kBAAoB,GAC1B5H,GAAM6H,iBAAmB,GAE7B,SAAW7H,GACPA,EAAMrpT,YAAc,MAAMqpT,EAAM9pT,KAkBhC8pT,EAAM8H,QAjBN,SAAiBl5P,GACb,GAAgB,MAAZA,EACA,OAAO,EAEX,GAAIA,aAAoBoxP,EACpB,OAAO,EAEX,MAAM11S,EAAMskD,EAASl4D,OAAOC,aACtBstN,EAAQr1J,EACd,OAAY,MAAPtkD,GAAeA,IAAQ01S,EAAMrpT,cAChB,MAAdstN,EAAM7rN,MACQ,MAAd6rN,EAAM1+L,MACS,MAAf0+L,EAAMjyI,OAdlB,CAoBG,KAAU,GAAQ,KACrB,SAAWguO,GAUPA,EAAMnoT,OATN,SAAgBQ,EAAS4iB,GACrB,MAAMgpM,EAAQ5rN,aAAmBy4F,YAC3B,IAAIkvN,EAAM,CAAEx1R,UAAWnyB,IACvB,IAAI2nT,EAAM3nT,GAIhB,OAHY,MAAR4iB,GACAgpM,EAAMisE,SAASj1Q,GAEZgpM,GARf,CAWG,KAAU,GAAQ,KACrB,SAAW+7F,GACPA,EAAM+H,aAAe,GAAK37E,SAASn9F,SACnC+wK,EAAMgI,aAAe,GAAK57E,SAASn9F,SACnC+wK,EAAMiI,aAAe,GAAS77E,SAASn9F,SACvC+wK,EAAMkI,aAAe,GAAc97E,SAASn9F,SAC5C+wK,EAAMmI,aAAe,GAAc/7E,SAASn9F,SAC5C+wK,EAAMoI,eAAiB,GAAgBh8E,SAASn9F,SAChD+wK,EAAMqI,iBAAmB,GAAkBj8E,SAASn9F,SACpD+wK,EAAMsI,iBAAmB,GAAkBl8E,SAASn9F,SACpD+wK,EAAMuI,mBAAqB,GAAoBn8E,SAASn9F,SACxD+wK,EAAMwI,oBAAsB,GAAqBp8E,SAASn9F,SAC1D+wK,EAAMyI,mBAAqB,GAAoBr8E,SAASn9F,SACxD+wK,EAAM0I,wBAA0B,GAAyBt8E,SAASn9F,SAClE+wK,EAAM2I,eAAiB,GAAgBv8E,SAASn9F,SAChD+wK,EAAM4I,eAAiB,GAAgBx8E,SAASn9F,SAChD+wK,EAAM6I,kBAAoB,GAAmBz8E,SAASn9F,SACtD+wK,EAAM8I,eAAiB,GAAoB18E,SAASn9F,SACpD+wK,EAAM+I,mBAAqB,GAAoB38E,SAASn9F,SACxD+wK,EAAMgJ,wBAA0B,GAAyB58E,SAASn9F,SAClE+wK,EAAMiJ,2BAA6B,GAA4B78E,SAASn9F,SACxE+wK,EAAMkJ,sBAAwB,GAAKl2B,kBAAkB/jJ,SApBzD,CAqBG,KAAU,GAAQ,KACrB,SAAW+wK,GACPA,EAAMmJ,eAAiB,GAAK/8E,SAAS7F,WACrCy5E,EAAMoJ,eAAiB,GAAKh9E,SAAS7F,WACrCy5E,EAAMqJ,eAAiB,GAASj9E,SAAS7F,WACzCy5E,EAAMsJ,eAAiB,GAAcl9E,SAAS7F,WAC9Cy5E,EAAMuJ,eAAiB,GAAcn9E,SAAS7F,WAC9Cy5E,EAAMwJ,iBAAmB,GAAgBp9E,SAAS7F,WAClDy5E,EAAMyJ,mBAAqB,GAAkBr9E,SAAS7F,WACtDy5E,EAAM0J,mBAAqB,GAAkBt9E,SAAS7F,WACtDy5E,EAAM2J,qBAAuB,GAAoBv9E,SAAS7F,WAC1Dy5E,EAAM4J,sBAAwB,GAAqBx9E,SAAS7F,WAC5Dy5E,EAAM6J,qBAAuB,GAAoBz9E,SAAS7F,WAC1Dy5E,EAAM8J,0BAA4B,GAAyB19E,SAAS7F,WACpEy5E,EAAM+J,iBAAmB,GAAgB39E,SAAS7F,WAClDy5E,EAAMgK,iBAAmB,GAAgB59E,SAAS7F,WAClDy5E,EAAMiK,oBAAsB,GAAmB79E,SAAS7F,WACxDy5E,EAAMkK,iBAAmB,GAAoB99E,SAAS7F,WACtDy5E,EAAMmK,qBAAuB,GAAoB/9E,SAAS7F,WAC1Dy5E,EAAMoK,0BAA4B,GAAyBh+E,SAAS7F,WACpEy5E,EAAMqK,6BAA+B,GAA4Bj+E,SAAS7F,WAC1Ey5E,EAAMsK,wBAA0B,GAAKt3B,kBAAkBzsD,WApB3D,CAqBG,KAAU,GAAQ,KC3/Cd,MAAM,GACT,cACI7tO,KAAKmyQ,MAAQ,GAEjB,KAAKA,EAAO5mD,EAAO5rN,EAAU,IACzBK,KAAKL,QAAUhC,OAAO+rD,OAAO,GAAI/pD,GACjC,MACM2nE,GADQ,GAAMqwN,QAAQpsE,GAASA,EAAQA,EAAMjyI,OAC9BgwO,cAAcn3C,EAAOxyQ,GAE1CK,KAAKmyQ,MAAQ,EAAS5rN,OAAO5oD,OAAOyR,KAAKk4D,GAAQ/gE,IAAK/H,GAAQ8oE,EAAO9oE,IAAQqzO,GAAUA,EAAKptK,SAAW,EAAI,GAC3GzkE,KAAK0/B,UAAU//B,GAEnB,IAAIwyQ,EAAO5mD,EAAO5rN,EAAU,IACxBK,KAAKuH,KAAK4qQ,EAAO5mD,EAAO5rN,IACV,GAAMyvT,QAAQ7jG,GAASA,EAAMjyI,MAAQiyI,GAC7CgnD,YAAY,MAAO,KACrBJ,EAAMhnO,QAAS0mM,GAASA,EAAKj0N,YAGrC,MAAM2tM,EAAO5rN,EAAU,IACnB,MAAMmwQ,EAAenyQ,OAAO+rD,OAAO/rD,OAAO+rD,OAAO,GAAI1pD,KAAKL,SAAUA,IAC9D,OAAEwoC,EAAM,UAAE0pR,EAAS,UAAEC,GAAchiD,EACzC,IAAIz8M,EAAK,GACLC,EAAK,GACLnrB,IACAkrB,EAAuB,iBAAXlrB,EAAsBA,EAASA,EAAOkrB,GAClDC,EAAuB,iBAAXnrB,EAAsBA,EAASA,EAAOmrB,IAEtDtzD,KAAKw7S,YAAY1rC,GACjB,MAAMqC,EAAQnyQ,KAAKmyQ,MACnBA,EAAMhnO,QAAS0mM,IACXA,EAAKv4J,MAAQ,KACbu4J,EAAK90M,WAAW,WACZs2B,GAAMC,IACNu+K,EAAKz+K,UAAUC,EAAIC,GAEnBw+P,GAAajgF,EAAKhlD,UAClBglD,EAAKrvN,KAAKsvS,GAEVD,GAAahgF,EAAKptK,UAClBotK,EAAKrvN,KAAKqvS,KAGlB,MAAMv4O,EAAQ,GAAM81O,QAAQ7jG,GAASA,EAAMjyI,MAAQiyI,EAKnD,OAJAjyI,EAAMi5L,YAAY,QAAS,KACvBj5L,EAAMk8M,SAASx1R,KAAKmyQ,SAExBnyQ,KAAKuH,KAAK4qQ,EAAO5mD,EAAO5rN,GACjBwyQ,EAEX,UAAUxyQ,IAC0B,IAA5BA,EAAQoyT,iBACR,GAAQ7oL,KAAKlpI,KAAKmyQ,OAG1B,YAAYxyQ,GACR,GAAIA,EAAQoyT,gBAAiB,CACzB,MAAM5/C,EAAQ,GAAQ6/C,QAClB7/C,IACAnyQ,KAAKmyQ,MAAQA,IAIzB,UACI,OAAOnyQ,KAAKmyQ,MAAMxwQ,QAAU,EAEhC,QACI3B,KAAKL,QAAU,GACfK,KAAKmyQ,MAAQ,GACb,GAAQjlB,UAIhB,SAAWjgI,GACP,MAAMglM,EAAuB76E,GAAOC,UAAV,mBAO1BpqH,EAAQic,KANR,SAAcipI,GACV,GAAIlvQ,OAAOy1M,aAAc,CACrB,MAAMn2L,EAAO4vP,EAAM5rQ,IAAKsrO,GAASA,EAAK9lL,UACtC2sJ,aAAaC,QAAQs5G,EAAmBlvS,KAAKs3C,UAAU93C,MAa/D0qG,EAAQ+kM,MATR,WACI,GAAI/uT,OAAOy1M,aAAc,CACrB,MAAMp3L,EAAMo3L,aAAa7mE,QAAQogL,GAC3B9/C,EAAQ7wP,EAAMyB,KAAKC,MAAM1B,GAAO,GACtC,GAAI6wP,EACA,OAAO,GAAMqlB,SAASrlB,KAUlCllJ,EAAQigI,MALR,WACQjqP,OAAOy1M,cACPA,aAAa+xC,WAAWwnE,IArBpC,CAyBG,KAAY,GAAU,KEjGlB,MAAM,GACT,YAAYC,GACRlyT,KAAKkyT,KAAOA,EAEhB,cACI,OAAOlyT,KAAKkyT,KAAKvyT,QAErB,YACI,OAAOK,KAAKkyT,KAAK3mG,MAErB,YACI,OAAOvrN,KAAKkyT,KAAK54O,MAErB,WACI,OAAOt5E,KAAKkyT,KAAKrlS,KAErB,WACI,OAAO7sB,KAAKkyT,KAAKrgF,KAErB,WACI,OAAO7xO,KAAK6xO,KAEhB,aACI,MAAO,CACHzgO,UAAW,YACX0nP,QAAS,CACL,CACIt7P,KAAM,SACNg1B,SAAU,KACVlJ,OAAQ,CACJknI,UAAWxwJ,KAAKg1Q,WAAWv2Q,KAAKuB,OAEpCi9R,KAAM,MAEV,CACIz/R,KAAM,SACNg1B,SAAU,KACVlJ,OAAQ,CACJknI,UAAWxwJ,KAAKmyT,YAAY1zT,KAAKuB,MACjCowJ,UAAWpwJ,KAAKoyT,SAAS3zT,KAAKuB,MAC9BqwJ,QAASrwJ,KAAKqyT,WAAW5zT,KAAKuB,OAElCi9R,KAAM,MAEV,CACIz/R,KAAM,QACNg1B,SAAU,IACVlJ,OAAQ,CACJknI,UAAWxwJ,KAAKsyT,WAAW7zT,KAAKuB,MAChCowJ,UAAWpwJ,KAAKuyT,QAAQ9zT,KAAKuB,MAC7BqwJ,QAASrwJ,KAAKwyT,UAAU/zT,KAAKuB,OAEjCi9R,KAAM,MAEV,CACIz/R,KAAM,OACNg1B,SAAU,IACVlJ,OAAQ,CACJknI,UAAWxwJ,KAAKyyT,UAAUh0T,KAAKuB,MAC/BowJ,UAAWpwJ,KAAK0yT,OAAOj0T,KAAKuB,MAC5BqwJ,QAASrwJ,KAAK2yT,SAASl0T,KAAKuB,OAEhCi9R,KAAM,MAEV,CACIz/R,KAAM,OACNg1B,SAAU,KACVlJ,OAAQ,CACJknI,UAAWxwJ,KAAK4yT,UAAUn0T,KAAKuB,MAC/BowJ,UAAWpwJ,KAAK6yT,OAAOp0T,KAAKuB,MAC5BqwJ,QAASrwJ,KAAK8yT,SAASr0T,KAAKuB,OAEhCi9R,KAAM,MAEV,CACIz/R,KAAM,SACNg1B,SAAU,IACVlJ,OAAQ,CACJknI,UAAWxwJ,KAAK+yT,OAAOt0T,KAAKuB,OAEhCi9R,KAAM,MAEV,CACIz/R,KAAM,SACNg1B,SAAU,KACVlJ,OAAQ,CACJknI,UAAWxwJ,KAAKgzT,YAAYv0T,KAAKuB,MACjCowJ,UAAWpwJ,KAAKizT,SAASx0T,KAAKuB,MAC9BqwJ,QAASrwJ,KAAKkzT,WAAWz0T,KAAKuB,OAElCi9R,KAAM,OAGd,KAAKpwQ,GACD,GAAI7sB,KAAKL,QAAQ+0P,gBAAiB,CAE9B,OADa7nO,EAAKglN,KACNj1G,UAEhB,OAAO/vG,EAAK+vG,WAEhB,QAAQ/vG,GACJ,MAAMkgC,EAAW,EAAUA,SAAS,6FAC9B8kL,EAAOhlN,EAAKglN,KACZt2K,EAAOs2K,EAAKj1G,UAClB,OAAO7vE,EAAS,CACZxa,EAAGzqC,KAAKq4C,MAAMob,EAAKhpB,GACnBC,EAAG1qC,KAAKq4C,MAAMob,EAAK/oB,GACnBnhB,MAAOvpB,KAAKq4C,MAAMob,EAAKlqC,OACvBoC,OAAQ3rB,KAAKq4C,MAAMob,EAAK9nC,QACxBihC,MAAO5sD,KAAKq4C,MAAM0xL,EAAK6a,eAG/B1U,OAAOnrN,GACIA,EAAKiF,UAEhBqhS,cAAe,GACfC,eAAgB,GAChBC,sBAAuB,MACvBC,cAAe,GACf5c,WAAY,GACZ6c,cAAc,GAGtB,aACIvzT,KAAKs5E,MAAMg8M,qBAAqBt1R,KAAK6xO,MACrC7xO,KAAK6xO,KAAKj0N,SAGd,WAAU,EAAE20B,EAAC,EAAEC,IACXxyC,KAAKkyT,KAAK97D,aACV,MAAM7qC,EAAQvrN,KAAKurN,MACb3xJ,EAAO55D,KAAKwzT,8BAClB55P,EAAK28M,UAAU,CAAEhkO,IAAGC,MACpBxyC,KAAKs5E,MAAMu+M,QAAQj+N,EAAM,CACrBonP,YAAY,EACZkR,KAAMlyT,KAAKkyT,KAAK/5O,IAChBx2C,OAAO,IAEX4pL,EAAM1+L,KAAKm+N,mBACXhrP,KAAK8xO,SAAWvmB,EAAM39F,SAASihJ,eAAej1M,GAC9C55D,KAAK8xO,SAASgtB,yBAAyB,SAAU,CAC7CvsN,IACAC,IACAi5O,eAAgB,WAGxB,8BACI,MAAMzzC,EAASh4O,KAAKyzT,UAAUzzT,KAAK6sB,KAAM,UACnCu/N,EAAWpsP,KAAKosR,gBAAgBpsR,KAAK6sB,KAAMmrN,GAC3Cp+K,EAAO55D,KAAKurN,MAAM7rN,KAAKwzR,eAAelzR,KAAK6sB,KAAMmrN,GAEvD,OADAp+K,EAAKy8M,UAAUjqB,GACRxyL,EAEX,UAAU/sC,EAAMu/N,GACZ,MAAMpU,EAASh4O,KAAKL,QAAQq4O,OAC5B,GAAsB,mBAAXA,EAAuB,CAC9B,MAAMnzO,EAAM,EAAYzH,KAAK46O,EAAQh4O,KAAKkyT,KAAMrlS,EAAMu/N,GACtD,GAAIvnP,aAAesmG,WACf,OAAOtmG,EAGf,MAAM,IAAI7B,MAAM,0CAEpB,gBAAgB6pB,EAAMmrN,GAClB,MAAMoU,EAAW,CACbva,KAAMhlN,EAAKglN,KAAKrjO,IAEpB,GAAIwpO,IAAWnrN,EAAKiF,UAAW,CAC3B,MAAM8gN,EAAOoF,EAAO/yO,aAAa,QAC7B2tO,EACAwZ,EAASxZ,KAAOA,EAGhBwZ,EAAS3mP,SAAWonB,EAAKk+N,YAAY/S,GAG7C,OAAOoU,EAEX,QAAO,EAAEv+O,EAAC,EAAE0kC,EAAC,EAAEC,IACPxyC,KAAK8xO,UACL9xO,KAAK8xO,SAASitB,YAAYlxP,EAAG0kC,EAAGC,GAGxC,UAAS,EAAE3kC,EAAC,EAAE0kC,EAAC,EAAEC,IACb,MAAMs/L,EAAW9xO,KAAK8xO,SACtB,GAAIA,EAAU,CACVA,EAASktB,UAAUnxP,EAAG0kC,EAAGC,GACzB,MAAMonB,EAAOk4K,EAASD,KAClBj4K,EAAK48N,WACLx2R,KAAK0zT,aAAa95P,GAEtB55D,KAAKkyT,KAAK77D,YACVr2P,KAAKkyT,KAAKhpS,QAAQ,oBAAqB,CAAE0wC,SACzC55D,KAAK8xO,SAAW,KAEpB9xO,KAAKurN,MAAM1+L,KAAKwmO,iBAEpB,aAAaz5L,GACT,IAAI+5P,EAAU,KACVC,EAAU,KACd,MAAMN,EAAgBtzT,KAAKL,QAAQ2zT,cAC7BnzB,EAAengS,KAAKurN,MAAM5rN,QAC1Bk6S,EAAY,IAAI,GAAU,EAAG,EAAG1Z,EAAa9uQ,MAAO8uQ,EAAa1sQ,QACjE8nC,EAAOv7D,KAAKurN,MAAMyxF,aAAah9S,KAAK6sB,KAAK+vG,WACjC,CACV58H,KAAKL,QAAQ0zT,sBACb,MACA,SACA,OACA,SACF/sQ,KAAM9zB,IACJ,IAAI2jC,EAAQ,KACR9C,EAAK,EACLC,EAAK,EACT,OAAQ9gC,GACJ,IAAK,MACD2jC,EAAQ,IAAI,GAAMoF,EAAKhpB,EAAIgpB,EAAKlqC,MAAQ,EAAGkqC,EAAK/oB,EAAI8gR,GACpDjgQ,EAAKigQ,EAAgB,EACrB,MACJ,IAAK,SACDn9P,EAAQ,IAAI,GAAMoF,EAAKhpB,EAAIgpB,EAAKlqC,MAAQ,EAAGkqC,EAAK/oB,EAAI+oB,EAAK9nC,OAAS6/R,GAClEjgQ,EAAKigQ,EAAgB,EACrB,MACJ,IAAK,OACDn9P,EAAQ,IAAI,GAAMoF,EAAKhpB,EAAI+gR,EAAe/3P,EAAK/oB,EAAI+oB,EAAK9nC,OAAS,GACjE6/B,EAAKggQ,EAAgB,EACrB,MACJ,IAAK,QACDn9P,EAAQ,IAAI,GAAMoF,EAAKhpB,EAAIgpB,EAAKlqC,MAAQiiS,EAAe/3P,EAAK/oB,EAAI+oB,EAAK9nC,OAAS,GAC9E6/B,EAAKggQ,EAAgB,EAK7B,QAAIn9P,IACAw9P,EAAUx9P,EAAM/C,WAAWC,GAAKC,GAChCsgQ,EAAUz9P,EAAM/C,UAAUC,EAAIC,GACtBumP,EAAU9kP,cAAc4+P,IAAY9Z,EAAU9kP,cAAc6+P,OAI/DD,GAAWC,GACpBh6P,EAAKmjM,YAAY,CAAC42D,EAASC,IAKnC,aAAY,EAAE/lT,IACV7N,KAAKkyT,KAAK97D,aACVp2P,KAAKwmD,KAAO,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAG1+C,KAAKq4C,MAAM+U,GAAM1D,UAAUxxD,KAAK2E,KAAK+nP,YAAc,KACxF1sP,KAAK6sB,KAAKqQ,SAAS,iBACnB,GAAO,cAAervB,EAAG7N,KAAK6sB,MAElC,UAAS,EAAEhf,EAAC,GAAEwlD,EAAE,GAAEC,IACd,MAAM1W,EAAO58C,KAAK2E,KAAKi0I,UACjBvnH,EAAQvpB,KAAKitB,IAAI6nB,EAAKvrB,OAASrxB,KAAKwmD,KAAO6M,EAAKC,GAAK,GACrD7/B,EAAS3rB,KAAKitB,IAAI6nB,EAAKnpB,QAAUzzB,KAAKwmD,KAAO8M,EAAKD,GAAK,GAC7DrzD,KAAK2E,KAAK8qH,OAAOp+F,EAAOoC,EAAQ,CAC5B8oK,UAAU,IAEd,GAAO,gBAAiB1uL,EAAG7N,KAAK6sB,MAEpC,YAAW,EAAEhf,IACT7N,KAAK6sB,KAAK0Q,YAAY,iBACtB,GAAO,eAAgB1vB,EAAG7N,KAAK6sB,MAC/B7sB,KAAKkyT,KAAK77D,YAId,YAAW,EAAExoP,EAAC,EAAE0kC,EAAC,EAAEC,IACfxyC,KAAKkyT,KAAK97D,aACV,MACM9uL,EADUtnE,KAAKL,QACE8H,MAAMzH,KAAK6xO,KAAM,CACpCpqO,OAAO,IAEX,IAAK,GAAKysQ,OAAO5sM,GACb,MAAM,IAAItkE,MAAM,yCAEpBhD,KAAK6zT,mBAAmBvsP,EAAQ/0B,EAAGC,GACnCxyC,KAAKs5E,MAAM86L,QAAQ9sM,EAAQ,CACvB4qP,KAAMlyT,KAAKkyT,KAAK/5O,IAChBx2C,OAAO,IAEX,MAAMmyR,EAAY9zT,KAAKurN,MAAM39F,SAASihJ,eAAevnM,GACrDwsP,EAAU34D,YAAYttP,EAAG0kC,EAAGC,GAC5BxyC,KAAKkyT,KAAK1mE,aAAa39O,EAAG,CAAEimT,cAEhC,mBAAmBjiF,EAAMt/L,EAAGC,GACxB,MAAMihB,EAASo+K,EAAKj1G,UAAUliE,YACxBrH,EAAK9gB,EAAIkhB,EAAOlhB,EAChB+gB,EAAK9gB,EAAIihB,EAAOjhB,EACtBq/L,EAAKz+K,UAAUC,EAAIC,GAEvB,SAAQ,EAAEzlD,EAAC,EAAE0kC,EAAC,EAAEC,IACZ,MAAM3lB,EAAO7sB,KAAKkyT,KAAKxmE,aAAa79O,GAAGimT,UACnCjnS,GACAA,EAAKkyO,YAAYlxP,EAAG0kC,EAAGC,GAG/B,WAAU,EAAE3kC,EAAC,EAAE0kC,EAAC,EAAEC,IACd,MAAMuhR,EAAW/zT,KAAKkyT,KAAKxmE,aAAa79O,GAAGimT,UACvCC,GACAA,EAAS/0D,UAAUnxP,EAAG0kC,EAAGC,GAE7BxyC,KAAKkyT,KAAK77D,YAId,WAAU,EAAExoP,EAAC,EAAE0kC,EAAC,EAAEC,IACdxyC,KAAKkyT,KAAK97D,aACV,MAAM9uL,EAAStnE,KAAKL,QAAQ8H,MAAMzH,KAAK6xO,KAAM,CACzCmiF,MAAM,IAEV,IAAK,GAAK9/C,OAAO5sM,GACb,MAAM,IAAItkE,MAAM,yCAEpBhD,KAAK6zT,mBAAmBvsP,EAAQ/0B,EAAGC,GACnCxyC,KAAKs5E,MAAM86L,QAAQ9sM,EAAQ,CACvB4qP,KAAMlyT,KAAKkyT,KAAK/5O,IAChBx2C,OAAO,IAEX,MAAMi4B,EAAO55D,KAAKwzT,8BACZM,EAAY9zT,KAAKurN,MAAM39F,SAASihJ,eAAevnM,GAC/C0wK,EAASh4O,KAAKyzT,UAAUK,EAAW,UACnC1nE,EAAWpsP,KAAKosR,gBAAgB0nC,EAAW97E,GACjDp+K,EAAK28M,UAAUnqB,GACfpsP,KAAKs5E,MAAMu+M,QAAQj+N,EAAM,CACrBs4P,KAAMlyT,KAAKkyT,KAAK/5O,IAChBx2C,OAAO,IAEXmyR,EAAU34D,YAAYttP,EAAG0kC,EAAGC,GAC5BxyC,KAAKkyT,KAAK1mE,aAAa39O,EAAG,CAAEimT,cAEhC,QAAO,EAAEjmT,EAAC,EAAE0kC,EAAC,EAAEC,IACX,MAAM3lB,EAAO7sB,KAAKkyT,KAAKxmE,aAAa79O,GAAGimT,UACnCjnS,GACAA,EAAKkyO,YAAYlxP,EAAG0kC,EAAGC,GAG/B,UAAS,EAAE3kC,EAAC,EAAE0kC,EAAC,EAAEC,IACb,MAAM3lB,EAAO7sB,KAAKkyT,KAAKxmE,aAAa79O,GAAGimT,UACnCjnS,GACAA,EAAKmyO,UAAUnxP,EAAG0kC,EAAGC,GAEzBxyC,KAAKkyT,KAAK77D,YAId,aAAY,EAAExoP,EAAC,EAAE0kC,EAAC,EAAEC,IAChBxyC,KAAKkyT,KAAK97D,aACV,MAAM3iM,EAASzzD,KAAK2E,KAAKi4H,UAAUliE,YAC7B/yC,EAAQ,CAAC3nB,KAAK2E,MAChB3E,KAAKL,QAAQ4zT,cACbvzT,KAAK2E,KACA0tQ,eAAe,CAChB1qQ,MAAM,IAEL6jC,OAAO,CAAC8B,EAAMukM,KACXA,EAAKhlD,UACLv/I,EAAK9qC,KAAKqvO,GAEPvkM,GACR3lB,GAEP3nB,KAAKkyT,KAAK1mE,aAAa39O,EAAG,CACtB4lD,SACA9rC,QACAssS,kBAAmBtsS,EAAMphB,IAAK5B,GAASA,EAAK+nP,YAC5CwnE,iBAAkB,IAAI,GAAM3hR,EAAGC,GAAG0hB,MAAMT,KAE5C9rC,EAAMwjB,QAASxmC,IACX,MAAMkoB,EAAO7sB,KAAKurN,MAAMsjD,eAAelqQ,GACnCkoB,IACAA,EAAKqQ,SAAS,iBACd,GAAO,cAAervB,EAAGgf,MAIrC,UAAS,EAAEhf,EAAC,EAAE0kC,EAAC,EAAEC,IACb,MAAMjwB,EAAOviB,KAAKkyT,KAAKxmE,aAAa79O,GAC9B0nB,EAAQhT,EAAK2xS,iBAAmB,IAAI,GAAM3hR,EAAGC,GAAG0hB,MAAM3xC,EAAKkxC,QACjElxC,EAAKoF,MAAMwjB,QAAQ,CAACxmC,EAAMjD,KACtB,MAAMw7F,EAAa36E,EAAK0xS,kBAAkBvyT,GACpCyyT,EAAc,GAAKt+P,WAAWqnC,EAAa3nE,EAAOv1B,KAAKL,QAAQ+2S,YACrE/xS,EAAK4uD,OAAO4gQ,EAAa,CACrB53H,UAAU,EACV9oI,OAAQlxC,EAAKkxC,OACby+P,KAAMlyT,KAAKkyT,KAAK/5O,MAEpB,GAAO,gBAAiBtqE,EAAG7N,KAAKurN,MAAMsjD,eAAelqQ,MAG7D,YAAW,EAAEkJ,IACI7N,KAAKkyT,KAAKxmE,aAAa79O,GAC/B8Z,MAAMwjB,QAASxmC,IAChB,MAAMkoB,EAAO7sB,KAAKurN,MAAMsjD,eAAelqQ,GACvCkoB,EAAK0Q,YAAY,iBACjB,GAAO,eAAgB1vB,EAAGgf,KAE9B7sB,KAAKkyT,KAAK77D,YAId,SACIr2P,KAAKkyT,KAAK97D,aACVp2P,KAAKs5E,MAAMg8M,qBAAqBt1R,KAAK6xO,MACrC7xO,KAAKkyT,KAAK77D,aC3ZX,MAAM+9D,GACT,YAAYlC,GACRlyT,KAAKkyT,KAAOA,EAEhB,cACI,OAAOlyT,KAAKkyT,KAAKvyT,QAErB,YACI,OAAOK,KAAKkyT,KAAK3mG,MAErB,YACI,OAAOvrN,KAAKkyT,KAAK54O,MAErB,WACI,OAAOt5E,KAAKkyT,KAAKrlS,KAErB,WACI,OAAO7sB,KAAKkyT,KAAKrgF,KAErB,WACI,OAAO7xO,KAAK6xO,KAEhB,aACI,MAAO,CACHzgO,UAAW,YACX0nP,QAAS,CACL,CACIt7P,KAAM,SACNg1B,SAAU,KACVyqQ,KAAM,KACN3zQ,OAAQ,CACJknI,UAAWxwJ,KAAKq0T,WAAW51T,KAAKuB,QAGxC,CACIxC,KAAM,YACNg1B,SAAU,KACVyqQ,KAAM,KACN3zQ,OAAQ,CACJknI,UAAWxwJ,KAAKs0T,cAAc71T,KAAKuB,SAI/Cgc,SAAS,EACTu/C,KAAK1uC,GACMA,EAAK0+L,MAAMqpC,aAAa/nO,EAAKgyO,gBAAgB,KAExDs0D,eAAgB,EAChBC,gBAAiB,GAGzB,aACIpzT,KAAK6xO,KAAKj0N,SAEd,gBACI,MAAMmG,EAAS/jB,KAAK45D,KAAK08M,YACnB5uQ,EAAS1H,KAAK45D,KAAK48M,YACzBx2Q,KAAK45D,KAAKp3C,KAAK,CACXuB,OAAQrc,EACRA,OAAQqc,KFtDb,MAAM,WAAa,GACtB,WACI,OAAO/jB,KAAKL,QAAQ4B,MAAQ,WAEhC,oBACI,OAAOvB,KAAKL,QAEhB,KAAKA,GACDK,KAAKL,QAAU,EAAUwG,MAAM,GAAK+xO,eAAgBl4O,KAAK6xO,KAAKhlD,SACxD,IAAI,GAAW7sL,MAAMu0T,aACrBv0T,KAAK6xO,KAAKptK,SACN,IAAI2vP,GAAWp0T,MAAMu0T,aACrB,KAAM50T,GAChBK,KAAKb,SACLa,KAAK6wS,cACL7wS,KAAKyrD,SACLzrD,KAAKk/R,iBAET,iBACI,MAAM5lN,EAAQt5E,KAAKs5E,MACbiyI,EAAQvrN,KAAKurN,MACNvrN,KAAK6sB,KAAKglN,KAClBzpN,GAAG,UAAWpoB,KAAK4d,OAAQ5d,MAChCs5E,EAAMlxD,GAAG,UAAWpoB,KAAK4d,OAAQ5d,MACjCurN,EAAMnjM,GAAG,eAAgBpoB,KAAK4d,OAAQ5d,MACtCs5E,EAAMlxD,GAAG,IAAKpoB,KAAKyrD,OAAQzrD,MAC3BurN,EAAMnjM,GAAG,QAASpoB,KAAKyrD,OAAQzrD,MAC/BurN,EAAMnjM,GAAG,YAAapoB,KAAKyrD,OAAQzrD,MACnC2+E,MAAMugN,iBAEV,gBACI,MAAM5lN,EAAQt5E,KAAKs5E,MACbiyI,EAAQvrN,KAAKurN,MACbsmB,EAAO7xO,KAAK6sB,KAAKglN,KACvB7xO,KAAKgrP,mBACLnZ,EAAKppN,IAAI,UAAWzoB,KAAK4d,OAAQ5d,MACjCs5E,EAAM7wD,IAAI,UAAWzoB,KAAK4d,OAAQ5d,MAClCurN,EAAM9iM,IAAI,eAAgBzoB,KAAK4d,OAAQ5d,MACvCs5E,EAAM7wD,IAAI,IAAKzoB,KAAKyrD,OAAQzrD,MAC5BurN,EAAM9iM,IAAI,QAASzoB,KAAKyrD,OAAQzrD,MAChCurN,EAAM9iM,IAAI,YAAazoB,KAAKyrD,OAAQzrD,MACpC2+E,MAAMsgN,gBAEV,SACI,MAAMt/R,EAAUK,KAAKL,QACfgpF,EAAM3oF,KAAKmzP,gBAAgB,eAgBjC,OAfAnzP,KAAK6sB,KAAKqQ,SAAS,GAAQ83Q,UAC3Bh1S,KAAK8xB,UAAYhvB,SAASiC,cAAc,OACxC/E,KAAKkiR,WAAaliR,KAAKuqC,EAAEvqC,KAAK8xB,WACzBoL,SAASyrD,GACT11E,KAAK,aAAcjT,KAAK6sB,KAAKglN,KAAKzgM,OACnCzxC,EAAQyR,WACRpR,KAAKkiR,WAAWhlP,SAASv9B,EAAQyR,WAErCpR,KAAK48R,iBAAmB58R,KAAKuqC,EAAE,UAC1BrN,SAAYyrD,EAAH,YACTr4D,SAAStwB,KAAK8xB,WACnB9xB,KAAKorS,SAAWprS,KAAKuqC,EAAE,UAClBrN,SAAYyrD,EAAH,YACTr4D,SAAStwB,KAAK8xB,WACnB9xB,KAAKkiR,WAAW5xP,SAAStwB,KAAKurN,MAAMz5L,WAC7B9xB,KAEX,SAGI,OAFAA,KAAKq2P,YACLr2P,KAAK6sB,KAAK0Q,YAAY,GAAQy3Q,UACvBr2N,MAAM/gE,SAEjB,SACI,GAAI5d,KAAKw+R,aAAc,CACnBx+R,KAAKk4R,gBACL,MAAM38N,EAAOv7D,KAAK48H,UACZu2L,EAAgBnzT,KAAKL,QAAQwzT,eAAiB,EAC9CC,EAAiBpzT,KAAKL,QAAQyzT,gBAAkB,EACtDpzT,KAAK48R,iBAAiBp/P,YAAex9B,KAAKw0T,gBAAR,QAAgCj5P,EAAKlqC,MAAQ8hS,GAAiB53P,EAAK9nC,OAAS0/R,GAC9G,MAAM/hT,EAAepR,KAAKw0T,gBAAR,SAClBx0T,KAAK48R,iBAAiBp/P,YAAYpsB,GAAYpR,KAAK48R,iBAAiBh/P,SAASxsB,IACzEmqD,EAAKlqC,MAAQ+hS,GACb73P,EAAK9nC,OAAS2/R,GAClBpzT,KAAKkiR,WAAW19P,IAAI,CAChB6M,MAAOkqC,EAAKlqC,MACZoC,OAAQ8nC,EAAK9nC,OACb8C,KAAMglC,EAAKhpB,EACXthC,IAAKsqD,EAAK/oB,IAEVxyC,KAAKg+R,UAAU,WACfh+R,KAAKy0T,eAES,aAAdz0T,KAAKuB,MAAqC,YAAdvB,KAAKuB,MAC7BvB,KAAKg+R,UAAU,SACfh+R,KAAK00T,cAKrB,gBACI,MAAM14S,EAAUhc,KAAKL,QAAQqc,QAC7B,GAAuB,mBAAZA,EAAwB,CAC/B,MAAM9V,EAAM,EAAY9I,KAAK4e,EAAShc,KAAMA,KAAK6sB,KAAM7sB,KAAKorS,SAAS,IACjEllS,GACAlG,KAAKorS,SAAS/7Q,KAAKnpB,QAGlB8V,EACLhc,KAAKorS,SAAS/7Q,KAAKrT,GAGnBhc,KAAKorS,SAASxtR,SAGtB,UACI,MAAMiP,EAAO7sB,KAAK6sB,KACZ0uC,EAAOv7D,KAAKL,QAAQ47D,KACpB1yB,EAAuB,mBAAT0yB,EAAsB,EAAYn+D,KAAKm+D,EAAMv7D,KAAM6sB,GAAQ0uC,EAC/E,OAAO,GAAUh9D,OAAOZ,OAAO+rD,OAAO,CAAEnX,EAAG,EAAGC,EAAG,EAAGnhB,MAAO,EAAGoC,OAAQ,GAAKoV,IAE/E,aACI7oC,KAAK6xO,KAAKj0N,SAEd,aACI,MAAMi0N,EAAO7xO,KAAK6sB,KAAKglN,KAAKpqO,QACtBolB,EAAO7sB,KAAKurN,MAAM7rN,KAAKgqS,eAAe73D,GACtC5mB,EAAQjrN,KAAKurN,MAAM7rN,KAAKysR,mBAAmBnsR,KAAK6sB,KAAM,KAAMA,EAAM,KAAM,UAC9E7sB,KAAK48R,iBAAiB3hR,SAAS,SAASuiB,YAAY,UAAWytL,GAC/Dp+L,EAAKjP,SAET,eACI,MAAM+2S,EAAW30T,KAAKs5E,MAAMqhM,kBAAkB36Q,KAAK6sB,KAAKglN,MAAMlwO,OAAS,EACvE3B,KAAK48R,iBAAiB3hR,SAAS,WAAWuiB,YAAY,UAAWm3R,GAGrE,aACI30T,KAAKs5E,MAAM88K,WAAW,OAAQ,CAC1B87D,KAAMlyT,KAAKm4E,MAGnB,YACQn4E,KAAKs5E,MAAM4sN,eAAe,SAC1BlmS,KAAKs5E,MAAM+8K,UAAU,OAAQ,CACzB67D,KAAMlyT,KAAKm4E,QAaxB,KAAS,GAAO,KAPV+/J,eAAiB,CAClB32O,KAAM,WACN8iK,UAAU,EACV26H,uBAAuB,EACvBtqC,iBAAiB,EACjBjtP,MAAQoqO,GAASA,EAAKpqO,QAAQwqQ,gBAGtCt0Q,OAAOmqE,oBAAoB,GAAOjpE,WAAWssC,QAAS3tC,IACrC,gBAATA,GACAG,OAAOC,eAAe,GAAKiB,UAAWrB,EAAMG,OAAOkrE,yBAAyB,GAAOhqE,UAAWrB,MAItG,SAAWo7O,GACPA,EAAQo8D,SAAW,kBADvB,CAEG,KAAY,GAAU,KGtKzB,IA8VW4f,GCzQPC,GCuQA,GAWA,GFvWA,GAA0C,SAAU3uE,EAAYx+O,EAAQlJ,EAAK2nP,GAC7E,IAA2H5oP,EAAvHD,EAAImJ,UAAU9E,OAAQ5D,EAAIT,EAAI,EAAIoK,EAAkB,OAATy+O,EAAgBA,EAAOxoP,OAAOkrE,yBAAyBnhE,EAAQlJ,GAAO2nP,EACrH,GAAuB,iBAAZ9gL,SAAoD,mBAArBA,QAAQ+gL,SAAyBroP,EAAIsnE,QAAQ+gL,SAASF,EAAYx+O,EAAQlJ,EAAK2nP,QACpH,IAAK,IAAIlpP,EAAIipP,EAAWvkP,OAAS,EAAG1E,GAAK,EAAGA,KAASM,EAAI2oP,EAAWjpP,MAAIc,GAAKT,EAAI,EAAIC,EAAEQ,GAAKT,EAAI,EAAIC,EAAEmK,EAAQlJ,EAAKT,GAAKR,EAAEmK,EAAQlJ,KAAST,GAChJ,OAAOT,EAAI,GAAKS,GAAKJ,OAAOC,eAAe8J,EAAQlJ,EAAKT,GAAIA,GAOzD,MAAM,WAAY,GACrB,YAAY4B,GACRg/E,QACA3+E,KAAKL,QAAUhC,OAAO+rD,OAAO/rD,OAAO+rD,OAAO,GAAI,GAAIxd,UAAWvsC,GAC9DK,KAAK8xB,UAAYhvB,SAASiC,cAAc,OACxC/E,KAAKkiR,WAAaliR,KAAKuqC,EAAEvqC,KAAK8xB,WAAWoL,SAASl9B,KAAKmzP,gBAAgB,eACvEnzP,KAAK80T,cAAgB,IAAI,GAAMn3T,OAAO+rD,OAAO/rD,OAAO+rD,OAAO,GAAI1pD,KAAKL,QAAQo1T,sBAAuB,CAAEjjS,UAAWhvB,SAASiC,cAAc,OAAQssB,MAAO,EAAGoC,OAAQ,KACjKzzB,KAAKkiR,WAAWnyP,OAAO/vB,KAAK80T,cAAchjS,WAE9C,qBACI,MAAMpqB,EAAS1H,KAAKL,QAAQ+H,OAC5B,OAAO,GAAM0nT,QAAQ1nT,GAAUA,EAAOusR,SAASb,OAAS1rR,EAE5D,kBACI,MAAMA,EAAS1H,KAAKL,QAAQ+H,OAC5B,OAAO,GAAM0nT,QAAQ1nT,GAAUA,EAASA,EAAO6jN,MAEnD,kBACI,OAAOvrN,KAAK2gS,YAAYrnN,MAE5B,eACI,OAAOt5E,KAAK2gS,YAAYH,SAASpN,OAErC,MAAMzuR,EAAMwiC,GACR,MAAMt5B,EAAIs5B,EACVt5B,EAAEob,iBACFjpB,KAAKg1T,YAAY5+D,WAAW,OAC5Bp2P,KAAKkiR,WACAhlP,SAAS,YACT5M,SAAStwB,KAAKL,QAAQs1T,iBAAmBnyT,SAASwiB,MACvDtlB,KAAKk1T,WAAavwT,EAClB3E,KAAKm1T,gBAAgBxwT,EAAMkJ,EAAEof,QAASpf,EAAEqf,SACxC,MAAM68E,EAAQ/pG,KAAKo1T,mBAAmBvnT,EAAEof,QAASpf,EAAEqf,SAC/CltB,KAAKstT,sBACLttT,KAAKwgS,SAAS2B,oBAAoB,CAC9Bt0R,IACAlJ,OACAktO,KAAMltO,EACNkoB,KAAM7sB,KAAKq1T,aACX9iR,EAAGw3D,EAAMx3D,EACTC,EAAGu3D,EAAMv3D,IAEbxyC,KAAKs1T,aAAaltS,GAAG,kBAAmBpoB,KAAKo+P,KAAMp+P,OAEvDA,KAAKs7P,uBAAuB,GAAIvI,eAAgBllP,EAAE0U,MAEtD,oBACI,OAAOviB,KAAKwgS,WAAaxgS,KAAKwgS,SAAShzR,SAE3C,gBAAgB0nT,EAAYjoS,EAASC,GACjC,MAAM4nS,EAAgB90T,KAAK80T,cACrBS,EAAgBT,EAAcx7O,MAC9Bg8O,EAAet1T,KAAKL,QAAQ61T,YAAYN,EAAY,CACtDA,aACAJ,gBACAn0B,YAAa3gS,KAAK2gS,cAEtB20B,EAAa9iS,SAAS,EAAG,GACzB,IAAIiE,EAAU,EAId,GAHIz2B,KAAKstT,sBACL72R,GAAWz2B,KAAKwgS,SAAS7gS,QAAQiiS,WAAa,GAE9C5hS,KAAKstT,qBAAuBttT,KAAKL,QAAQ81T,OAAQ,CACjD,MAAM5wS,EAAQ7kB,KAAK2gS,YAAYntP,UAAU0tP,WACzC4zB,EAAcjwS,MAAMA,EAAM6uC,GAAI7uC,EAAM8uC,IACpCl9B,GAAW3uB,KAAKitB,IAAIlQ,EAAM6uC,GAAI7uC,EAAM8uC,SAGpCmhQ,EAAcjwS,MAAM,EAAG,GAE3B7kB,KAAK01T,gBACD11T,KAAKL,QAAQg5B,WACb34B,KAAKkiR,WAAWz+P,MAAK,GAAM,GAE/B8xS,EAAc99B,WAAW,CAAC69B,IAC1B,MAAMK,EAAeb,EAAcjmD,eAAeymD,GAClDK,EAAa3qE,mBACb2qE,EAAa9jF,KAAKppN,IAAI,WACtBqsS,EAAcvnB,aAAa,CACvB92Q,UACA62Q,eAAgB,QAEpB,MAAM/xO,EAAOo6P,EAAa/4L,UAC1B58H,KAAK41T,aAAeD,EAAa/4L,QAAQ,CAAE83H,iBAAiB,IAC5D10P,KAAKu1B,MAAQv1B,KAAK41T,aAAatxN,aAAar0F,KAAKsrD,EAAK+oC,cACtDtkG,KAAKs1T,aAAeA,EACpBt1T,KAAKq1T,aAAeM,EACpB31T,KAAK61T,aAAeP,EAAa14L,UACjC58H,KAAKy2B,QAAUA,EACfz2B,KAAK81T,aAAe91T,KAAK+1T,oBAAoB9oS,EAASC,GAE1D,oBAAoBD,EAASC,GACzB,MAAMsK,EAAY10B,SAASwiB,KAAKkS,WAAa10B,SAAS+N,gBAAgB2mB,UAChEjC,EAAQv1B,KAAKu1B,MACbs7N,EAAW7wP,KAAK41T,aAChBn/R,EAAUz2B,KAAKy2B,SAAW,EAC1B0R,EAAS,CACX5R,KAAMtJ,EAAUsI,EAAMgd,EAAIs+M,EAASx/N,MAAQ,EAAIoF,EAC/CxlB,IAAKic,EAAUqI,EAAMid,EAAIq+M,EAASp9N,OAAS,EAAIgD,EAAUe,GAK7D,OAHIx3B,KAAK80T,eACL90T,KAAKkiR,WAAW/5O,OAAOA,GAEpBA,EAEX,mBAAmBoK,EAAGC,GAClB,MAAMu3D,EAAQ/pG,KAAK2gS,YAAYhtL,cAAcphE,EAAGC,GAC1C+oB,EAAOv7D,KAAK61T,aAIlB,OAHA9rN,EAAMx3D,GAAKgpB,EAAKlqC,MAAQ,EACxB04E,EAAMv3D,GAAK+oB,EAAK9nC,OAAS,EACzBzzB,KAAKs1T,aAAa9iS,SAASu3E,EAAMx3D,EAAGw3D,EAAMv3D,GACnCu3D,EAEX,MAAK,KAAE8nI,EAAI,QAAE7sM,EAAO,QAAErlC,IAClB,MAAMgF,EAAOktO,EACb,GAAIlyO,EAAQgjS,QAAS,CACjB,MAAMpnO,EAAOv7D,KAAK61T,aAClBlxT,EAAK6tB,SAAS+oC,EAAKhpB,EAAI5yC,EAAQg7D,GAAIY,EAAK/oB,EAAI7yC,EAAQi7D,GAAI,CAAEiI,QAAQ,IAClE7iE,KAAKq1T,aAAajiQ,YAClBzuD,EAAK6tB,SAASwS,EAAQuN,EAAGvN,EAAQwN,EAAG,CAAEqwB,QAAQ,IAC9C7iE,KAAKg2T,WAAa,CACdzjR,EAAG5yC,EAAQg7D,GACXnoB,EAAG7yC,EAAQi7D,SAIf56D,KAAKg2T,WAAa,KAG1B,WAAW7uR,GACP,MAAMkuR,EAAer1T,KAAKq1T,aAC1B,GAAIA,EAAc,CACdluR,EAAIle,iBACJ,MAAMpb,EAAI7N,KAAKkuE,eAAe/mC,GACxBla,EAAUpf,EAAEof,QACZC,EAAUrf,EAAEqf,QAClBltB,KAAK+1T,oBAAoB9oS,EAASC,GAClC,MAAM68E,EAAQ/pG,KAAKo1T,mBAAmBnoS,EAASC,GACzC+oS,EAAgBj2T,KAAK2gS,YAAYhhS,QAAQ+sR,UAAU3vI,QACnDm5K,GAAeD,GAAiBj2T,KAAKstT,sBACvCttT,KAAKm2T,kBAAkB,CACnB5jR,EAAGtlB,EACHulB,EAAGtlB,IAEX,GAAI+oS,EAAe,CACfZ,EAAa7pE,aAAa39O,EAAG,CACzB09M,MAAOvrN,KAAK2gS,YACZtO,mBAAoBryR,KAAKqyR,qBAE7B,MAAM9vQ,EAAO8yS,EAAa3pE,aAAa79O,GACnCqoT,EACAb,EAAathC,iBAAiBlmR,EAAG0U,GAGjC8yS,EAAa5iC,eAAelwQ,GAEhCviB,KAAKqyR,mBAAqB9vQ,EAAK8vQ,mBAG/BryR,KAAKstT,sBACD4I,EACAl2T,KAAKwgS,SAAS4B,aAAa,CACvBv0R,IACAgf,KAAMwoS,EACN9iR,EAAGw3D,EAAMx3D,EACTC,EAAGu3D,EAAMv3D,IAIbxyC,KAAKwgS,SAAS96Q,SAK9B,UAAUyhB,GACN,MAAMmuR,EAAet1T,KAAKs1T,aAC1B,GAAIA,EAAc,CACd,MAAMznT,EAAI7N,KAAKkuE,eAAe/mC,GACxBkuR,EAAer1T,KAAKq1T,aACpBQ,EAAe71T,KAAK61T,aACpBG,EAAah2T,KAAKg2T,WACxB,IAAIzjR,EAAIsjR,EAAatjR,EACjBC,EAAIqjR,EAAarjR,EACjBwjR,IACAzjR,GAAKyjR,EAAWzjR,EAChBC,GAAKwjR,EAAWxjR,GAEpB8iR,EAAa9iS,SAAS+f,EAAGC,EAAG,CAAEqwB,QAAQ,IACtC,MAAM38D,EAAMlG,KAAKoiD,KAAKkzQ,EAAc,CAAE/iR,EAAG1kC,EAAEof,QAASulB,EAAG3kC,EAAEqf,UACnD5mB,EAAY3B,IACVA,GACA3E,KAAKo2T,UAAUd,GACXt1T,KAAK2gS,YAAYhhS,QAAQ+sR,UAAU3vI,SAAWs4K,IAC9CA,EAAa7pE,aAAa39O,EAAG,CACzBgkO,KAAMltO,EACN4mN,MAAOvrN,KAAK2gS,YACZtO,mBAAoBryR,KAAKqyR,qBAE7BgjC,EAAarhC,kBAAkBnmR,EAAGwnT,EAAa3pE,aAAa79O,MAIhE7N,KAAKq2T,gBAETr2T,KAAKqyR,mBAAqB,KAC1BryR,KAAKg1T,YAAY3+D,UAAU,QAE3B,EAAYxkE,QAAQ3rL,IAEpBlG,KAAKw7P,2BACLt1P,EAAI4W,KAAKxW,IAGTA,EAASJ,IAIrB,gBACQlG,KAAKs1T,eACLt1T,KAAKk1T,WAAa,KAClBl1T,KAAKs1T,aAAa13S,SAClB5d,KAAKs1T,aAAe,KACpBt1T,KAAKq1T,aAAe,KACpBr1T,KAAKu1B,MAAQ,KACbv1B,KAAKy2B,QAAU,KACfz2B,KAAKg2T,WAAa,KAClBh2T,KAAK81T,aAAe,KACpB91T,KAAKw7P,4BAGb,UAAU85D,GACFt1T,KAAKs1T,eAAiBA,IACtBt1T,KAAK01T,gBACL11T,KAAKkiR,WAAW3kP,YAAY,YAAY3f,UAGhD,gBACI,MAAM03S,EAAet1T,KAAKs1T,aAC1B,GAAIA,EAAc,CACd,MAAM17R,EAAO55B,KAAKL,QAAQg5B,UAC1B,GAAIiB,EAAM,CACN,MAAMxC,EAA4B,iBAATwC,GAAqBA,EAAKxC,UAAa,IAC1DtB,EAA0B,iBAAT8D,GAAqBA,EAAK9D,QAAW,QAC5D91B,KAAKq1T,aAAe,KACpBr1T,KAAKkiR,WAAWrnP,QAAQ76B,KAAK81T,aAAc1+R,EAAUtB,EAAQ,IAAM91B,KAAKo2T,UAAUd,SAGlFt1T,KAAKo2T,UAAUd,IAI3B,kBAAkBv2T,GACd,IAAI4vS,EACJ,MAAMhO,EAAc3gS,KAAK2gS,YACnB21B,EAAiBt2T,KAAKs2T,eAC5B,GAAIA,EACA,GAAIA,EAAe32T,QAAQ8rS,WACvBkD,EAAa3uS,KAAKu2T,YAAYD,EAAexkS,eAE5C,CACD,MAAM0kS,EAASx2T,KAAKu2T,YAAYD,EAAexkS,WAC/C68Q,EAAa3uS,KAAKu2T,YAAY51B,EAAY7uQ,WAAW61E,mBAAmB6uN,QAI5E7nB,EAAa3uS,KAAKu2T,YAAY51B,EAAY7uQ,WAE9C,OAAO68Q,GAAcA,EAAW55O,cAAch2D,GAElD,YAAYyH,GACR,MAAMynI,EAAQjuI,KAAKuqC,EAAE/jC,GACf2hC,EAAS8lG,EAAM9lG,SACf3Q,EAAY10B,SAASwiB,KAAKkS,WAAa10B,SAAS+N,gBAAgB2mB,UAChEC,EAAa30B,SAASwiB,KAAKmS,YAAc30B,SAAS+N,gBAAgB4mB,WACxE,OAAO,GAAUl5B,OAAO,CACpBg0C,EAAGpK,EAAO5R,KAAO7C,SAASu6G,EAAMzpH,IAAI,qBAAsB,IAAMiT,EAChE+a,EAAGrK,EAAOl3B,IAAMyiB,SAASu6G,EAAMzpH,IAAI,oBAAqB,IAAMgT,EAC9DnG,MAAO48G,EAAMqM,aACb7mH,OAAQw6G,EAAMsM,gBAGtB,KAAK+6K,EAAcj+R,GACf,GAAIr3B,KAAKm2T,kBAAkB9+R,GAAM,CAC7B,MAAMspQ,EAAc3gS,KAAK2gS,YACnBq0B,EAAcr0B,EAAYrnN,MAC1BywB,EAAQ42L,EAAYhtL,cAAct8E,GAClC69R,EAAal1T,KAAKk1T,WAClBuB,EAAez2T,KAAKL,QAAQ+2T,YAAYpB,EAAc,CACxDJ,aACAI,eACA30B,YAAa3gS,KAAK2gS,YAClBm0B,cAAe90T,KAAK80T,gBAElBv5P,EAAOk7P,EAAa75L,UAC1B7yB,EAAMx3D,GAAKgpB,EAAKhpB,EAAIgpB,EAAKlqC,MAAQ,EACjC04E,EAAMv3D,GAAK+oB,EAAK/oB,EAAI+oB,EAAK9nC,OAAS,EAClC,MAAM4tF,EAAWrhH,KAAKg2T,WAAa,EAAIr1B,EAAYjN,cACnD+iC,EAAajkS,SAAS,GAAKqjC,WAAWk0C,EAAMx3D,EAAG8uE,GAAW,GAAKxrD,WAAWk0C,EAAMv3D,EAAG6uE,IACnFo1M,EAAaxkD,eACb,MAAM0kD,EAAe32T,KAAKL,QAAQg3T,aAC5BzwT,GAAMywT,GACNA,EAAaF,EAAc,CACzBvB,aACAI,eACAmB,eACA91B,cACAm0B,cAAe90T,KAAK80T,gBAG5B,MAAmB,kBAAR5uT,EACHA,GACA8uT,EAAY5gD,QAAQqiD,EAAc,CAAEG,QAAS52T,KAAKm4E,MAC3Cs+O,GAEJ,KAEJ,EAAYtkI,kBAAkBjsL,GAAK4W,KAAMmuM,GACxCA,GACA+pG,EAAY5gD,QAAQqiD,EAAc,CAAEG,QAAS52T,KAAKm4E,MAC3Cs+O,GAEJ,MAGf,OAAO,KAEX,WACQz2T,KAAK80T,gBACL90T,KAAK80T,cAAcjoS,KAAKjP,SACxB5d,KAAK80T,cAAc7kM,WAG3B,UACIjwH,KAAK4d,UAGb,GAAW,CACP,GAAKqyG,WACN,GAAIpxH,UAAW,UAAW,OAClB+1T,GAaR,KAAQ,GAAM,KAZT1oR,SAAW,CACXvT,WAAW,EACX68R,YAAcN,GAAeA,EAAWztT,QACxCivT,YAAcpB,GAAiBA,EAAa7tT,SAEhDmtT,GAAI7hE,eAAiB,CACjB3iG,UAAW,aACXE,UAAW,aACXD,QAAS,YACTE,SAAU,YACVgrG,YAAa,aCnRrB,SAAWs5D,GAIPA,EAAWgC,UAHX,SAAmBlvS,EAAOnqB,GACtB,OAAOmqB,EAAM6jB,OAAO,CAAC8B,EAAM3oC,IAASmD,KAAKitB,IAAIpwB,EAAKi0I,UAAUp7I,GAAO8vC,GAAO,IAU9EunR,EAAWiC,cAPX,SAAuBnvS,EAAOovS,EAAUC,GACpC,MAAMn1P,EAAM,GACZ,IAAK,IAAI5kE,EAAI+5T,EAAcD,EAAUngQ,EAAK35D,EAAI+5T,EAAa/5T,EAAI25D,EAAI35D,GAAK,EACpE4kE,EAAIr/D,KAAKmlB,EAAM1qB,IAEnB,OAAO4kE,GAUXgzP,EAAWoC,iBAPX,SAA0BtvS,EAAOuvS,EAAaF,GAC1C,MAAMn1P,EAAM,GACZ,IAAK,IAAI5kE,EAAIi6T,EAAatgQ,EAAKjvC,EAAMhmB,OAAQ1E,EAAI25D,EAAI35D,GAAK+5T,EACtDn1P,EAAIr/D,KAAKmlB,EAAM1qB,IAEnB,OAAO4kE,GASXgzP,EAAWsC,WANX,SAAoBjuP,EAAO5nE,GACvB,OAAO4nE,EAAM19B,OAAO,CAAC8B,EAAMnpC,EAAMlH,KAC7BqwC,EAAK9qC,KAAK8qC,EAAKrwC,GAAKkH,GACbmpC,GACR,CAAChsC,GAAS,KAzBrB,CA4BGuzT,KAAeA,GAAa,KC3GxB,MAAM,WAAgB,GACzB,YAAYl1T,GAeR,GAdAg/E,QACA3+E,KAAKo3T,OAAS,GACdp3T,KAAKq3T,QAAU,GACfr3T,KAAKL,QAAUhC,OAAO+rD,OAAO/rD,OAAO+rD,OAAO,GAAI,GAAQwuL,gBAAiBv4O,GACxEK,KAAKs3T,IAAM,IAAI,GAAIt3T,KAAKL,SACxBK,KAAKu3T,SAAW,EAAYp2Q,SAASnhD,KAAKu3T,SAAU,KACpDv3T,KAAK8xB,UAAYhvB,SAASiC,cAAc,OACxC/E,KAAKkiR,WAAaliR,KAAKuqC,EAAEvqC,KAAK8xB,WACzBoL,SAASl9B,KAAKmzP,gBAAgB,GAAWr8O,OACzC7D,KAAK,sBAAuBjT,KAAKL,QAAQ63T,cAAgB,oBAC9Dx3T,KAAKL,QAAQ83T,YACT93T,EAAQ83T,aACJ93T,EAAQuO,QACRvO,EAAQuO,OAAOo4C,KAAM5E,IAAgC,IAAtBA,EAAM+1Q,aACzCz3T,KAAKL,QAAQ83T,YAAa,CAC1Bz3T,KAAKkiR,WAAWhlP,SAAS,eACPv9B,EAAQuO,QACtBvO,EAAQuO,OAAOq3C,MAAO7D,GAAUA,EAAMg2Q,YAAmC,IAAtBh2Q,EAAM+1Q,cAEzDz3T,KAAKkiR,WAAWhlP,SAAS,aAGjCl9B,KAAKuqC,EAAE,UACFrN,SAASl9B,KAAKmzP,gBAAgB,GAAWxzE,QACzCtwJ,KAAKrvB,KAAKL,QAAQggL,OAClBrvJ,SAAStwB,KAAKkiR,YACfviR,EAAQmpH,QACR9oH,KAAKkiR,WAAWhlP,SAAS,cAAcnN,OAAO/vB,KAAK23T,gBAEvD33T,KAAKorS,SAAWprS,KAAKuqC,EAAE,UAClBrN,SAASl9B,KAAKmzP,gBAAgB,GAAWn3O,UACzCsU,SAAStwB,KAAKkiR,YACnB,MAAM01C,EAAqBj4T,EAAQk4T,qBAAuB,GAC1D,GAAIl4T,EAAQuO,QAAUvO,EAAQuO,OAAOvM,OACjChC,EAAQuO,OAAOi9B,QAASuW,IACpB,MAAMo2Q,EAAS93T,KAAKuqC,EAAE,UACjBrN,SAASl9B,KAAKmzP,gBAAgB,GAAWzxM,QACzCzuC,KAAK,YAAayuC,EAAMlkD,OACH,MAArBkkD,EAAM+1Q,aAAuB93T,EAAQ83T,cAChB,IAAtB/1Q,EAAM+1Q,cACNK,EAAO56R,SAAS,eAEpB46R,EAAOt6R,YAAY,aAAiC,IAApBkkB,EAAMg2Q,WACtC,MAAMK,EAAS/3T,KAAKuqC,EAAE,SACjBrN,SAASl9B,KAAKmzP,gBAAgB,GAAW6kE,aACzC3oS,KAAKqyB,EAAMi+H,OAASj+H,EAAMlkD,MACzB4tS,EAAWprS,KAAKuqC,EAAE,UAAUrN,SAASl9B,KAAKmzP,gBAAgB,GAAW8kE,eACrEC,EAAsBx2Q,EAAMy+O,aAC5B50E,EAAQ,IAAI,GAAM5tN,OAAO+rD,OAAO/rD,OAAO+rD,OAAO/rD,OAAO+rD,OAAO,GAAIkuQ,GAAqBM,GAAsB,CAAEpmS,UAAWhvB,SAASiC,cAAc,OAAQu0E,MAAOs+O,EAAmBt+O,OAAS,IAAI,GAASjoD,MAAOqwB,EAAMqrP,YAAcptS,EAAQw4T,kBAAmB1kS,OAAQiuB,EAAMsrP,aAAertS,EAAQy4T,mBAAoBjkE,aAAa,EAAOgnC,2BAA2B,KAC3WiQ,EAASr7Q,OAAOw7L,EAAMz5L,WACtBgmS,EAAO/nS,OAAOgoS,EAAQ3sB,GAAU96Q,SAAStwB,KAAKorS,UAC9CprS,KAAKq3T,QAAQ31Q,EAAMlkD,MAAQs6T,EAC3B93T,KAAKo3T,OAAO11Q,EAAMlkD,MAAQ+tN,QAG7B,CACD,MAAMA,EAAQ,IAAI,GAAM5tN,OAAO+rD,OAAO/rD,OAAO+rD,OAAO,GAAIkuQ,GAAqB,CAAE9lS,UAAWhvB,SAASiC,cAAc,OAAQu0E,MAAOs+O,EAAmBt+O,OAAS,IAAI,GAASjoD,MAAO1xB,EAAQw4T,kBAAmB1kS,OAAQ9zB,EAAQy4T,mBAAoBjkE,aAAa,EAAOgnC,2BAA2B,KAC9Rn7R,KAAKorS,SAASr7Q,OAAOw7L,EAAMz5L,WAC3B9xB,KAAKo3T,OAAO,GAAQiB,kBAAoB9sG,EAG5C,OADAvrN,KAAKk/R,iBACEl/R,KAEX,qBACI,MAAM0H,EAAS1H,KAAKL,QAAQ+H,OAC5B,OAAO,GAAM0nT,QAAQ1nT,GAAUA,EAAOusR,SAASb,OAAS1rR,EAE5D,kBACI,MAAMA,EAAS1H,KAAKL,QAAQ+H,OAC5B,OAAO,GAAM0nT,QAAQ1nT,GAAUA,EAASA,EAAO6jN,MAEnD,kBACI,OAAOvrN,KAAK2gS,YAAYrnN,MAE5B,eACI,OAAOt5E,KAAKuqC,EAAE,UACTrN,SAASl9B,KAAKmzP,gBAAgB,GAAWrqI,SACzC/4F,OAAO/vB,KAAKuqC,EAAE,YACdt3B,KAAK,CACN1R,KAAM,SACN03C,YAAaj5C,KAAKL,QAAQs5C,aAAe,WAExC/b,SAASl9B,KAAKmzP,gBAAgB,GAAWmlE,cAElD,iBACI,MAAM34I,EAAQ3/K,KAAKmzP,gBAAgB,GAAWxzE,OACxC24I,EAAat4T,KAAKmzP,gBAAgB,GAAWmlE,YAC7CN,EAAah4T,KAAKmzP,gBAAgB,GAAW6kE,YACnDh4T,KAAKqzP,eAAe,CAChB,CAAC,UAAU1zE,GAAU,eACrB,CAAC,eAAeA,GAAU,eAC1B,CAAC,UAAUq4I,GAAe,oBAC1B,CAAC,eAAeA,GAAe,oBAC/B,CAAC,UAAUM,GAAe,WAC1B,CAAC,YAAYA,GAAe,kBAC5B,CAAC,aAAaA,GAAe,qBAEjC36T,OAAOyR,KAAKpP,KAAKo3T,QAAQjsR,QAASyiN,IAChB5tP,KAAKo3T,OAAOxpE,GACpBxlO,GAAG,iBAAkBpoB,KAAKu4T,YAAav4T,QAGrD,gBACIA,KAAKgrP,mBACLrtP,OAAOyR,KAAKpP,KAAKo3T,QAAQjsR,QAASyiN,IAChB5tP,KAAKo3T,OAAOxpE,GACpBnlO,IAAI,iBAAkBzoB,KAAKu4T,YAAav4T,QAGtD,KAAKuiB,EAAMqrO,GAWP,OAVI1sP,MAAMD,QAAQshB,GACdviB,KAAKw4T,UAAUj2S,EAAMqrO,GAEhB5tP,KAAKL,QAAQuO,QAClBvQ,OAAOyR,KAAKpP,KAAKL,QAAQuO,QAAQi9B,QAASyiN,IAClCrrO,EAAKqrO,IACL5tP,KAAKw4T,UAAUj2S,EAAKqrO,GAAYA,KAIrC5tP,KAEX,UAAUmyQ,EAAOvkB,GACb,MAAMt0K,EAAQt5E,KAAKy4T,SAAS7qE,GAC5B,GAAIt0K,EAAO,CACP,MAAM3xD,EAAQwqP,EAAM5rQ,IAAKsrO,GAAS,GAAKhlD,OAAOglD,GAAQA,EAAO,GAAKtzO,OAAOszO,IACzEv4J,EAAMm+M,WAAW9vQ,GAErB,MAAM+5B,EAAQ1hD,KAAKg3Q,SAASppB,GAC5B,IAAIn6N,EAASzzB,KAAKL,QAAQy4T,mBACtB12Q,GAA8B,MAArBA,EAAMsrP,cACfv5Q,EAASiuB,EAAMsrP,aAEnB,MAAMhzB,EAAUt4N,GAASA,EAAMs4N,QAAWh6Q,KAAKL,QAAQq6Q,OAIvD,GAHIA,GAAU1gM,GACV,EAAYl8E,KAAK48Q,EAAQh6Q,KAAMs5E,EAAO53B,IAErCjuB,EAAQ,CACT,MAAM83L,EAAQvrN,KAAK04T,SAAS9qE,GAC5BriC,EAAMgiF,aAAa,CACfj8Q,SAAUi6L,EAAM5rN,QAAQ0xB,MACxBg8Q,WAAY,EACZ52Q,QAAUirB,GAASA,EAAMi3Q,cACrB34T,KAAKL,QAAQi5T,qBACb,KAGZ,OAAO54T,KAEX,YAAYmV,GACR,MAAM,EAAEtH,EAAC,KAAElJ,GAASwQ,EACpBnV,KAAKs3T,IAAIh2T,MAAMqD,EAAMkJ,GAEzB,OAAOgrT,EAASrnT,GACZ,MAAM+qH,EAAQ5+H,OAAOyR,KAAKpP,KAAKo3T,QAAQ5rR,OAAO,CAAC8B,EAAMsgN,KACjD,MAAMriC,EAAQvrN,KAAKo3T,OAAOxpE,GACpBpwP,EAAOowP,IAAc,GAAQyqE,iBAAmB,KAAOzqE,EACvD1kL,EAAQqiJ,EAAMjyI,MAAM8sL,WAAW50P,OAAQqgO,IACzC,IAAIv8N,GAAU,EAEVA,EADkB,mBAAX9D,EACG,EAAYpU,KAAKoU,EAAQxR,KAAM6xO,EAAMgnF,EAASr7T,EAAMwC,MAEvC,kBAAXwR,EACFA,EAGAxR,KAAK84T,cAAcjnF,EAAMgnF,EAASrnT,EAAQqnT,EAAQxvT,gBAAkBwvT,GAElF,MAAMhsS,EAAO0+L,EAAM39F,SAASihJ,eAAeh9B,GAI3C,OAHIhlN,GACAA,EAAK0d,EAAE1d,EAAKiF,WAAW0L,YAAY,aAAcloB,GAE9CA,IAELinH,EAAQrzD,EAAMvnE,OAAS,EACvBhC,EAAUK,KAAKL,QACf25E,EAAQ,IAAI,GAalB,OAZAA,EAAMm+M,WAAWvuN,GACbvpE,EAAQq6Q,QACR,EAAY58Q,KAAKuC,EAAQq6Q,OAAQh6Q,KAAMs5E,EAAOt5E,KAAKg3Q,SAASppB,IAE5D5tP,KAAKq3T,QAAQzpE,IACb5tP,KAAKq3T,QAAQzpE,GAAWpwN,YAAY,aAAc++F,GAEtDgvF,EAAMgiF,aAAa,CACfH,UAAW,EACXC,WAAY,EACZ52Q,QAAS92B,EAAQi5T,qBAAuB,KAErCtrR,GAAQivF,IAChB,GACHv8H,KAAKkiR,WAAW1kP,YAAY,aAAc++F,GAE9C,cAAcs1G,EAAMgnF,EAASlgT,EAASogT,GAClC,OAAIF,IAAWlgT,GACJhb,OAAOyR,KAAKuJ,GAAS2tC,KAAMlV,IAC9B,GAAc,MAAVA,GAAiBygM,EAAKzgM,QAAUA,EAAO,CACvC,MAAM5/B,EAASmH,EAAQy4B,GACvB,GAAsB,kBAAX5/B,EACP,OAAOA,EAGX,OADctQ,MAAMD,QAAQuQ,GAAUA,EAAS,CAACA,IACnC80C,KAAMpX,IACf,IAAIrqC,EAAMgtO,EAAKg+B,cAAc3gO,GAC7B,OAAW,MAAPrqC,IACAA,EAAM,GAAGA,EACJk0T,IACDl0T,EAAMA,EAAIwE,eAEPxE,EAAIpB,QAAQo1T,IAAY,KAK3C,OAAO,IAKnB,SAAS1xR,GACLnnC,KAAKwR,OAAO21B,EAAIz/B,OAAOxJ,MAAO8B,KAAKL,QAAQmpH,QAE/C,kBACI9oH,KAAKkiR,WAAWhlP,SAAS,cAE7B,mBACIl9B,KAAKkiR,WAAW3kP,YAAY,cAEhC,eACQv9B,KAAKL,QAAQ83T,cACbz3T,KAAKkiR,WAAW1kP,YAAY,aACxBx9B,KAAKkiR,WAAWtkP,SAAS,aACzB59B,KAAKg5T,iBAGLh5T,KAAKi5T,gBAIjB,kBAAkB9xR,GACd,MAAM2wR,EAAS93T,KAAKuqC,EAAEpD,EAAIz/B,QAAQ6T,QAAQ,IAAIvb,KAAKmzP,gBAAgB,GAAWzxM,QAC9E1hD,KAAKk5T,YAAYpB,EAAO7kT,KAAK,cAAgB,IAC7C,MAAMkmT,EAAex7T,OAAOyR,KAAKpP,KAAKq3T,SAAS9xQ,MAAO/nD,IAClD,MAAMkkD,EAAQ1hD,KAAKg3Q,SAASx5Q,GACtBs6T,EAAS93T,KAAKq3T,QAAQ75T,GAC5B,OAASkkD,IAA+B,IAAtBA,EAAM+1Q,aAA0BK,EAAOl6R,SAAS,eAEtE59B,KAAKkiR,WAAW1kP,YAAY,YAAa27R,GAE7C,SAASvrE,GACL,MAAMriC,EAAQvrN,KAAK04T,SAAS9qE,GAC5B,OAAOriC,EAAQA,EAAMjyI,MAAQ,KAEjC,SAASs0K,GACL,OAAO5tP,KAAKo3T,OAAOxpE,GAAa,GAAQyqE,kBAE5C,SAASzqE,GACL,MAAM1/O,EAASlO,KAAKL,QAAQuO,OAC5B,OAAiB,MAAb0/O,GAAqB1/O,GAAUA,EAAOvM,OAC/BuM,EAAOwD,KAAMgwC,GAAUA,EAAMlkD,OAASowP,GAE1C,KAEX,YAAYA,GAOR,OANI5tP,KAAKo5T,iBAAiBxrE,GACtB5tP,KAAKq5T,YAAYzrE,GAGjB5tP,KAAKs5T,cAAc1rE,GAEhB5tP,KAEX,cAAc4tP,GACV,GAAI5tP,KAAKu5T,mBAAmB3rE,GAAY,CACpC,MAAMkqE,EAAS93T,KAAKq3T,QAAQzpE,GACxBkqE,IAAW93T,KAAKo5T,iBAAiBxrE,KACjC5tP,KAAKkpB,QAAQ,iBAAkB,CAAE1rB,KAAMowP,IACvCkqE,EAAO56R,SAAS,cAGxB,OAAOl9B,KAEX,YAAY4tP,GACR,GAAI5tP,KAAKu5T,mBAAmB3rE,GAAY,CACpC,MAAMkqE,EAAS93T,KAAKq3T,QAAQzpE,GACxBkqE,GAAU93T,KAAKo5T,iBAAiBxrE,KAChC5tP,KAAKkpB,QAAQ,eAAgB,CAAE1rB,KAAMowP,IACrCkqE,EAAOv6R,YAAY,cAG3B,OAAOv9B,KAEX,mBAAmB4tP,GAEf,OADe5tP,KAAKq3T,QAAQzpE,GACdhwN,SAAS,eAE3B,iBAAiBgwN,GACb,MAAMkqE,EAAS93T,KAAKq3T,QAAQzpE,GAC5B,OAAOkqE,GAAUA,EAAOl6R,SAAS,aAErC,iBAEI,OADAjgC,OAAOyR,KAAKpP,KAAKq3T,SAASlsR,QAASyiN,GAAc5tP,KAAKs5T,cAAc1rE,IAC7D5tP,KAEX,eAEI,OADArC,OAAOyR,KAAKpP,KAAKq3T,SAASlsR,QAASyiN,GAAc5tP,KAAKq5T,YAAYzrE,IAC3D5tP,KAEX,YAAY4tP,EAAWhxM,GACnB,MAAM2uK,EAAQvrN,KAAKo3T,OAAOxpE,GAI1B,OAHIriC,GACAA,EAAM97F,OAAO7yE,EAAKvrB,MAAOurB,EAAKnpB,QAE3BzzB,KAEX,WACIrC,OAAOyR,KAAKpP,KAAKo3T,QAAQjsR,QAASyiN,IAChB5tP,KAAKo3T,OAAOxpE,GACpB/gO,KAAKjP,gBACJ5d,KAAKo3T,OAAOxpE,KAEvB5tP,KAAKs3T,IAAI15S,SACT5d,KAAKi/R,gBACLj/R,KAAKw7P,6BAeV,KAAY,GAAU,KAXbtjB,eAAiBv6O,OAAO+rD,OAAO,CAAEyuQ,kBAAmB,IAAKC,mBAAoB,IAAKz4I,MAAO,UAAW83I,aAAa,EAAOx+Q,YAAa,SAAUu+Q,aAAc,mBAAoB,OAAOl+O,EAAO53B,GAC/L,MAAM/hD,EAAU,CACZ65T,YAAax5T,KAAKL,QAAQw4T,kBAAoB,EAAI,GAClDjU,QAAS,EACTuV,UAAW,GACXC,aAAa,EACbrmQ,GAAI,GACJC,GAAI,KDtVb,SAAc6+M,EAAOxyQ,EAAU,IAClC,MAAM25E,EAAQ,GAAMq+M,QAAQxlB,GACtBA,GACA,IAAI,IAAQslB,WAAWtlB,EAAO,CAC5B/qQ,MAAM,EACNqtR,QAAQ,IAEV9sQ,EAAQ2xD,EAAM8sL,WACd89C,EAAUvkT,EAAQukT,SAAW,EAC7BxtJ,EAAO5uJ,KAAK0tB,KAAK7N,EAAMhmB,OAASuiT,GAChC7wP,EAAK1zD,EAAQ0zD,IAAM,EACnBC,EAAK3zD,EAAQ2zD,IAAM,EACnBqmQ,GAA4B,IAAnBh6T,EAAQ8zD,OACjBimQ,GAAsC,IAAxB/5T,EAAQ+5T,YACtBE,EAAUj6T,EAAQi6T,SAAW,EAC7BC,EAAUl6T,EAAQk6T,SAAW,EAC7BC,EAAe,GACrB,IAAIN,EAAc75T,EAAQ65T,YAC1B,GAAoB,YAAhBA,EACA,IAAK,IAAItyT,EAAI,EAAGA,EAAIg9S,EAASh9S,GAAK,EAAG,CACjC,MAAMgiE,EAAQ2rP,GAAWoC,iBAAiBtvS,EAAOzgB,EAAGg9S,GACpD4V,EAAat3T,KAAKqyT,GAAWgC,UAAU3tP,EAAO,SAAW7V,OAG5D,CACkB,MAAfmmQ,GAAuC,SAAhBA,IACvBA,EAAc3E,GAAWgC,UAAUlvS,EAAO,SAAW0rC,GAEzD,IAAK,IAAIp2D,EAAI,EAAGA,EAAIinT,EAASjnT,GAAK,EAC9B68T,EAAat3T,KAAKg3T,GAG1B,MAAMO,EAAclF,GAAWsC,WAAW2C,EAAcF,GAClDI,EAAa,GACnB,IAAIP,EAAY95T,EAAQ85T,UACxB,GAAkB,YAAdA,EACA,IAAK,IAAIx8T,EAAI,EAAGA,EAAIy5J,EAAMz5J,GAAK,EAAG,CAC9B,MAAMisE,EAAQ2rP,GAAWiC,cAAcnvS,EAAO1qB,EAAGinT,GACjD8V,EAAWx3T,KAAKqyT,GAAWgC,UAAU3tP,EAAO,UAAY5V,OAG3D,CACgB,MAAbmmQ,GAAmC,SAAdA,IACrBA,EAAY5E,GAAWgC,UAAUlvS,EAAO,UAAY2rC,GAExD,IAAK,IAAIr2D,EAAI,EAAGA,EAAIy5J,EAAMz5J,GAAK,EAC3B+8T,EAAWx3T,KAAKi3T,GAGxB,MAAMQ,EAAUpF,GAAWsC,WAAW6C,EAAYH,GAClDvgP,EAAM88K,WAAW,UACjBzuO,EAAMwjB,QAAQ,CAACxmC,EAAMjD,KACjB,MAAMq1T,EAAWr1T,EAAQwiT,EACnBgT,EAAcpvT,KAAKq4C,MAAMz+C,EAAQwiT,GACjCsV,EAAcM,EAAa/C,GAC3B0C,EAAYO,EAAW9C,GAC7B,IAAIl6N,EAAK,EACLC,EAAK,EACLrgD,EAAOj4C,EAAKi0I,UAChB,GAAI8gL,EAAa,CACb,IAAIroS,EAAQmoS,EAAc,EAAInmQ,EAC1B5/B,EAASgmS,EAAY,EAAInmQ,EAC7B,MAAM4mQ,EAAat9Q,EAAKnpB,QAAUmpB,EAAKvrB,MAAQA,EAAQurB,EAAKvrB,MAAQ,GAC9D8oS,EAAYv9Q,EAAKvrB,OAASurB,EAAKnpB,OAASA,EAASmpB,EAAKnpB,OAAS,GACjEgmS,EAAYS,EACZ7oS,EAAQ8oS,EAGR1mS,EAASymS,EAEbt9Q,EAAO,CACHvrB,QACAoC,UAEJ9uB,EAAK0zQ,QAAQz7N,EAAMj9C,GAEnBg6T,IACA38N,GAAMw8N,EAAc58Q,EAAKvrB,OAAS,EAClC4rE,GAAMw8N,EAAY78Q,EAAKnpB,QAAU,GAErC9uB,EAAK6tB,SAASunS,EAAYhD,GAAY1jQ,EAAK2pC,EAAIi9N,EAAQ/C,GAAe5jQ,EAAK2pC,EAAIt9F,KAEnF25E,EAAM+8K,UAAU,UCsQR,CAAK/8K,EAAO37E,OAAO+rD,OAAO/rD,OAAO+rD,OAAO/rD,OAAO+rD,OAAO,GAAI/pD,GAAUK,KAAKL,QAAQy6T,eAAiB14Q,EAAQA,EAAM04Q,cAAgB,OAC/H,GAAIluR,UAGjB,SAAWiwP,GACPA,EAAWrlR,KAAO,iBAClBqlR,EAAWx8G,MAAWw8G,EAAWrlR,KAAd,SACnBqlR,EAAWrzK,OAAYqzK,EAAWrlR,KAAd,UACpBqlR,EAAWm8B,WAAgBn8B,EAAWrzK,OAAd,QACxBqzK,EAAWngR,QAAamgR,EAAWrlR,KAAd,WACrBqlR,EAAWz6O,MAAWy6O,EAAWrlR,KAAd,SACnBqlR,EAAW67B,WAAgB77B,EAAWz6O,MAAd,SACxBy6O,EAAW87B,aAAkB97B,EAAWz6O,MAAd,WAR9B,CASG,KAAe,GAAa,KAE/B,SAAWk3L,GACPA,EAAQy/E,iBAAmB,cAD/B,CAEG,KAAY,GAAU,KC/VqBjhF,GAAOI,WACjD53N,YAVJ,WACI,GAAIw3N,GAAOI,UAAW,CAClB,MAAMzzM,EAAO,qCACPkqI,EAAM,IAAIl7C,MACVu+I,EAAW3zQ,OAAO+rD,OAAO/rD,OAAO+rD,OAAO,GAAI0tL,GAAOK,WAAY,CAAE39K,Q7KF9D,S6KEuEugQ,GAAIv3T,SAASyxL,IAAKx2L,GAAG,IAAIuM,MAAO83D,UAAWk4P,IAAI,EAAMC,UAAW,WACzIh4S,EAAOkd,mBAAmB1c,KAAKs3C,UAAU,CAACi3M,KAChDrjG,EAAI3pK,IAAM,GAAGy/B,uBAA0BxhB,OAIzB,KCXf,MAAM,GAAW,EAAShkB,OAAO,CACpCgD,KAAM,kBAEV,GAAMi5T,qBAAuB,GAASjkL,SACtC,GAAMkkL,uBAAyB,GAAS5sF,WCHxC,GAAMsgF,KAAKtvT,UAAU67T,gBAAkB,SAAU/1T,GAC7C,MAAM+1T,EAAkB16T,KAAKL,QAAQ+6T,gBACrC,GAA+B,mBAApBA,EAAgC,CACvC,MAAMx0T,EAAM,EAAY9I,KAAKs9T,EAAiB16T,KAAKurN,MAAO5mN,GAC1D,GAAW,MAAPuB,EACA,OAAOA,EAGf,IAAIA,EAAMvB,EAAKg2T,eACf,GAAmB,iBAARz0T,EAAkB,CACzB,MAAMgzE,EAAY,GAASp7E,IAAIoI,GAC/B,GAAiB,MAAbgzE,EACA,OAAO,GAASg7J,WAAWhuO,GAE/BA,EAAMgzE,EAEV,OAAOhzE,GCjBJ,MAAM,WAAiB,GAC1B,gBACI,OAAOlG,KAAK26T,eAEhB,cAAc91T,GACV7E,KAAK46T,aAAa/1T,GAEtB,eACI,OAAO7E,KAAK6wQ,MAAM/yQ,IAAI,aAE1B,aAAao7E,EAAWv5E,EAAU,IAO9B,OANiB,MAAbu5E,EACAl5E,KAAK66T,gBAAgBl7T,GAGrBK,KAAK6wQ,MAAMvuP,IAAI,YAAa42D,EAAWv5E,GAEpCK,KAEX,gBAAgBL,EAAU,IAEtB,OADAK,KAAK6wQ,MAAMjzP,OAAO,YAAaje,GACxBK,OAGf,SAAW86T,GACP,SAASroD,EAAUsoD,EAAkBpgC,EAAS,QAC1C,MAAMr9J,EAAS,CACX,CACI73C,QAASk1M,EACTl1R,SAAU,SAgBlB,OAbIs1T,EACAz9L,EAAO96H,KAAK,GAAOysP,0BAGnB3xH,EAAO96H,KAAK,CACRijF,QAAS,IACThgF,SAAU,YAGlB63H,EAAO96H,KAAK,CACRijF,QAAS,OACThgF,SAAU,UAEP63H,EAEXw9L,EAASn4P,OAAO,CACZ91C,KAAM,iBACNywG,OAAQm1I,GAAU,GAClB7iQ,MAAO,CACH0V,KAAM,CACFsqB,KAAM,OACNC,OAAQ,OACRy/L,SAAU,OACVE,UAAW,QAEf6qD,GAAI,CACA/qD,SAAU,OACVE,UAAW,QAEfz3B,MAAO,CACHj3F,SAAU,GACVlxE,KAAM,OACNwkM,KAAM,MACNunC,KAAM,MACN3hC,WAAY,SACZjhD,mBAAoB,WAG5B,UAAUu4E,GACN,GAAuB,MAAnBA,EAASh0I,OAAgB,CACzB,MAAMq9J,EAASrpB,EAASqpB,OAClBogC,EAAmBzpD,EAASypD,iBAClC,IAAc,MAAVpgC,GAAsC,MAApBogC,KAClBzpD,EAASh0I,OAASm1I,GAA+B,IAArBsoD,EAA4BpgC,GACpDA,GAAQ,CACc,MAAlBrpB,EAAS1hQ,QACT0hQ,EAAS1hQ,MAAQ,IAErB,IAAIA,EAAQ,GACG,WAAX+qR,EACA/qR,EAAQ,CACJwgO,MAAO,MACPC,MAAO,MACPQ,KAAM,OAGM,YAAX8pD,IACL/qR,EAAQ,CACJwgO,MAAO,MACPC,MAAO,MACPZ,MAAO,MACPC,MAAO,QAGA,SAAXirD,IACArpB,EAAS1hQ,MAAQ,EAAUzJ,MAAM,GAAImrQ,EAAS1hQ,MAAO,CACjD0V,KAAM3nB,OAAO+rD,OAAO,CAAE4lL,SAAU,KAAME,UAAW,MAAQ5/N,OAM7E,OAAO0hQ,KAGf,GAAK59B,SAASn9F,SAAS,YAAaukL,GAAU,GAnFlD,CAoFG,KAAa,GAAW,K,cC7FvB,GAAgB,SAASv9T,EAAG0N,GAI5B,OAHA,GAAgBtN,OAAO20D,gBAClB,CAAEC,UAAW,cAAgBrxD,OAAS,SAAU3D,EAAG0N,GAAK1N,EAAEg1D,UAAYtnD,IACvE,SAAU1N,EAAG0N,GAAK,IAAK,IAAIlM,KAAKkM,EAAOtN,OAAOkB,UAAUC,eAAe1B,KAAK6N,EAAGlM,KAAIxB,EAAEwB,GAAKkM,EAAElM,MAC3ExB,EAAG0N,IAW5B,IA6DI+vT,GAlDJ,SAASC,GAASv9T,GACd,IAAIsB,EAAsB,mBAAXhB,QAAyBA,OAAOkL,SAAU7L,EAAI2B,GAAKtB,EAAEsB,GAAI/B,EAAI,EAC5E,GAAII,EAAG,OAAOA,EAAED,KAAKM,GACrB,GAAIA,GAAyB,iBAAbA,EAAEiE,OAAqB,MAAO,CAC1CgM,KAAM,WAEF,OADIjQ,GAAKT,GAAKS,EAAEiE,SAAQjE,OAAI,GACrB,CAAEQ,MAAOR,GAAKA,EAAET,KAAMwN,MAAO/M,KAG5C,MAAM,IAAI0hB,UAAUpgB,EAAI,0BAA4B,mCAGxD,SAASk8T,GAAOx9T,EAAGgB,GACf,IAAIrB,EAAsB,mBAAXW,QAAyBN,EAAEM,OAAOkL,UACjD,IAAK7L,EAAG,OAAOK,EACf,IAAmBK,EAAY8P,EAA3B5Q,EAAII,EAAED,KAAKM,GAAOokL,EAAK,GAC3B,IACI,WAAc,IAANpjL,GAAgBA,KAAM,MAAQX,EAAId,EAAE0Q,QAAQlD,MAAMq3K,EAAGt/K,KAAKzE,EAAEG,OAExE,MAAOgK,GAAS2F,EAAI,CAAE3F,MAAOA,GAC7B,QACI,IACQnK,IAAMA,EAAE0M,OAASpN,EAAIJ,EAAU,SAAII,EAAED,KAAKH,GAElD,QAAU,GAAI4Q,EAAG,MAAMA,EAAE3F,OAE7B,OAAO45K,EAGX,SAASF,GAAchnJ,EAAIgR,EAAMi2I,GAC7B,GAAIA,GAA6B,IAArBp7K,UAAU9E,OAAc,IAAK,IAA4BmgL,EAAxB7kL,EAAI,EAAGC,EAAI0uC,EAAKjqC,OAAY1E,EAAIC,EAAGD,KACxE6kL,GAAQ7kL,KAAK2uC,IACRk2I,IAAIA,EAAK5gL,MAAMrC,UAAUyE,MAAMlG,KAAKwuC,EAAM,EAAG3uC,IAClD6kL,EAAG7kL,GAAK2uC,EAAK3uC,IAGrB,OAAO29B,EAAG55B,OAAO8gL,GAAM5gL,MAAMrC,UAAUyE,MAAMlG,KAAKwuC,IAetD,IAAIuvR,GAAmB,GACnBC,GAAiC,WACjC,SAASA,EAAgB1xP,GACrB1pE,KAAKohC,QAAS,EACdphC,KAAKq7T,QAAU,GACfr7T,KAAKs7T,SAAW,GAChBt7T,KAAK0pE,GAAKA,EAqCd,OAnCA0xP,EAAgBv8T,UAAUo4B,IAAM,SAAUvxB,GACtC,GAAI1F,KAAKohC,OACL,IAEI,OADAphC,KAAKooB,KACE1iB,IAEX,QACI1F,KAAKyoB,WAGJ,GAKb2yS,EAAgBv8T,UAAUupB,GAAK,WACvBpoB,KAAKohC,SACL+5R,GAAiB34T,KAAKxC,MACtBg7T,GAAoBh7T,OAG5Bo7T,EAAgBv8T,UAAU4pB,IAAM,WACxBzoB,KAAKohC,SACL+5R,GAAiBjwT,MACjB8vT,GAAoBG,GAAiBA,GAAiBx5T,OAAS,KAGvEy5T,EAAgBv8T,UAAU4kB,KAAO,WACzBzjB,KAAKohC,SACLphC,KAAK0pE,GAAGqO,WACR/3E,KAAKq7T,QAAQlwR,SAAQ,SAAUt9B,GAAK,OAAOA,EAAE4V,UAC7CzjB,KAAKs7T,SAASnwR,SAAQ,SAAUowR,GAAW,OAAOA,OAClDv7T,KAAKohC,QAAS,IAGfg6R,EA1CyB,IA4CH,SAAUloQ,GAEvC,SAASsoQ,EAAYC,QACA,IAAbA,IAAuBA,GAAW,GACtC,IAAItoQ,EACAuW,OAAKxnE,EAQT,OAyGR,SAA6CwD,GACzC,IAAIyV,EAAOugT,GACXA,IAA0B,EAC1B,IACIh2T,IAEJ,QACIg2T,GAA0BvgT,GAvH1BwgT,EAAoC,WAChCjyP,EAAKkyP,GAAwBC,SAEjC1oQ,EAAQD,EAAO91D,KAAK4C,KAAM0pE,IAAO1pE,KAC5By7T,GAOb,SAA2BK,EAAQhtT,GAC/B,IAAIglI,EAEJ,IADAhlI,EAAQA,GAASksT,KACJlsT,EAAMsyB,OAEf,YADAtyB,EAAMusT,QAAQ74T,KAAKs5T,GAIvB,IAAIpyP,EAAqC,QAA/BoqE,EAAKioL,YAAyC,IAAPjoL,OAAgB,EAASA,EAAGhqG,MAC7E4/B,GAAMA,EAAGmP,IAAI,kBAAkB,WAAc,OAAOijP,EAAOr4S,UAfnDu4S,CAAkB7oQ,GAEfA,GAhIf,SAAmB51D,EAAG0N,GAClB,GAAiB,mBAANA,GAA0B,OAANA,EAC3B,MAAM,IAAImU,UAAU,uBAAyBtS,OAAO7B,GAAK,iCAE7D,SAASunD,IAAOxyD,KAAK6F,YAActI,EADnC,GAAcA,EAAG0N,GAEjB1N,EAAEsB,UAAkB,OAANoM,EAAatN,OAAOY,OAAO0M,IAAMunD,EAAG3zD,UAAYoM,EAAEpM,UAAW,IAAI2zD,IA+G/EH,CAAUmpQ,EAAatoQ,GADK,CAgB9BkoQ,IA8CF,IAAIa,QAAgB/5T,EACpB,IACI,IAAIg6T,GAAc1kR,QAAQ,OACtB0kR,IAAeC,GAAMD,IACrBD,GAAgBC,GAEXA,IACL,YAAaA,IACbC,GAAMD,GAAYrwP,WAClBowP,GAAgBC,GAAYrwP,SAGpC,MAAOioE,IAGP,IAAIsoL,GAAiB,KACjBC,GAAkB,KAClBX,IAA0B,EAE9B,SAASS,GAAMl4T,GACX,OAAOA,GAAO,GAAWA,IAAqB,QAAbA,EAAIzG,KAMzC,SAASq+T,KAIL,OAAOO,GAGX,SAASE,KAKL,OAJkBF,IAAkBH,GAgCxC,SAASM,GAAmBrmQ,GACxB,GAAKwlQ,GAAL,CAEA,IAAIvgT,EAAOkhT,GACXlhT,SAA4CA,EAAKrM,MAAM2Z,MAEvD4zS,OADAA,GAAkBnmQ,IACgDmmQ,GAAgBvtT,MAAMsZ,MAE5F,SAAS2zS,KACL,OAAOM,GAEX,IAAIG,GAAmB,IAAIh8P,QAC3B,SAASi8P,GAAwB/yP,GAC7B,GAAI8yP,GAAiBnhT,IAAIquD,GACrB,OAAO8yP,GAAiB1+T,IAAI4rE,GAEhC,IAAIxT,EAAW,CACXpsB,MAAO4/B,EACPje,OAAQie,EAAGuN,aACX11E,KAAMmoE,EAAGjpE,SACT2hB,IAAKsnD,EAAGyW,KAERjE,KAAMxS,EAAG2R,MAAM58E,KAAKirE,GACpBvpE,OAAQ,KACR2B,KAAM,OAnGd,SAA8B4nE,GAC1B,IAAKA,EAAG56D,MAAO,CACX,IAAI4tT,EAAU,IAAItB,GAAgB1xP,EAAG5/B,OACrC4/B,EAAG56D,MAAQ4tT,EACXhzP,EAAG5/B,MAAM+uC,IAAI,kBAAkB,WAAc,OAAO6jP,EAAQj5S,UAEzDimD,EAAG56D,MA+FV6tT,CAAqBzmQ,GAgDrB,MA9CoB,CAChB,OACA,QACA,QACA,OACA,QACA,SAEU/qB,SAAQ,SAAU3oB,GAC5BsnB,GAAMosB,EAAU1zC,EAAM,CAClB1kB,IAAK,WACD,OAAO4rE,EAAG,IAAI1oE,OAAOwhB,UAIjCsnB,GAAMosB,EAAU,YAAa,CACzBp4D,IAAK,WAED,OAAO4rE,EAAGyN,cAGlBrtC,GAAMosB,EAAU,cAAe,CAC3Bp4D,IAAK,WAED,OAAO4rE,EAAG6L,gBAGlBzrC,GAAMosB,EAAU,gBAAiB,CAC7Bp4D,IAAK,WAED,OAAO4rE,EAAG2N,aAGlBvtC,GAAMosB,EAAU,UAAW,CACvBp4D,IAAK,WAED,OAAO4rE,EAAGgX,WAGlB87O,GAAiBl6S,IAAIonD,EAAIxT,GACrBwT,EAAG6C,UACHrW,EAAS/1D,OAASs8T,GAAwB/yP,EAAG6C,UAE7C7C,EAAGlpE,QACH01D,EAASp0D,KAAO26T,GAAwB/yP,EAAGlpE,QAExC01D,EAIX,SAAShO,GAAS5/C,GACd,MAAuB,mBAATA,GAAuB,cAAcsG,KAAKtG,EAAK3E,YAEjE,IAAIyhE,GAA8B,oBAAXpnE,QACnBkqD,GAASlqD,SACU,oBAAZqnE,SACPnd,GAASmd,QAAQC,SACjBs3P,GAAS,SAAU5/S,GAAK,OAAOA,GACnC,SAAS8sB,GAAMpiC,EAAQlJ,EAAKs1I,GACxB,IAAIh2I,EAAMg2I,EAAGh2I,IAAKwkB,EAAMwxH,EAAGxxH,IAC3B3kB,OAAOC,eAAe8J,EAAQlJ,EAAK,CAC/BX,YAAY,EACZwkB,cAAc,EACdvkB,IAAKA,GAAO8+T,GACZt6S,IAAKA,GAAOs6S,KAGpB,SAAS,GAAI34T,EAAKzF,EAAKqG,EAAKhH,GACxBF,OAAOC,eAAeqG,EAAKzF,EAAK,CAC5BN,MAAO2G,EACPhH,aAAcA,EACdwtB,UAAU,EACVhJ,cAAc,IAGtB,SAASze,GAAOK,EAAKzF,GACjB,OAAOb,OAAOmB,eAAe1B,KAAK6G,EAAKzF,GAc3C,SAAS,GAAQ+zC,GACb,OAAOrxC,MAAMD,QAAQsxC,GAEJ50C,OAAOkB,UAAU8E,SAWtC,SAASo9D,GAAkBl8D,GACvB,IAAInG,EAAIm0B,WAAW/lB,OAAOjI,IAC1B,OAAQnG,GAAK,GACToJ,KAAKq4C,MAAMzhD,KAAOA,GAClB03B,SAASvxB,IACTnG,GANqB,WAQ7B,SAAS,GAASmG,GACd,OAAe,OAARA,GAA+B,iBAARA,EAElC,SAAS,GAAc0tC,GACnB,MAAuB,oBAlEZ,SAAUA,GAAK,OAAO50C,OAAOkB,UAAU8E,SAASvG,KAAKm1C,GAkEzD,CAASA,GAEpB,SAAS,GAAWA,GAChB,MAAoB,mBAANA,EAoClB,SAASsqR,GAAwBn9T,EAAMgI,GAOnC,OANAA,EAASA,GAAUq0T,KAQvB,SAASH,GAAwBtzT,EAAM3I,QACnB,IAAZA,IAAsBA,EAAU,IACpC,IAAIkjE,EAASv6D,EAAKq6D,OAAOE,OACzBv6D,EAAKq6D,OAAOE,QAAS,EACrB,IAAI6G,EAAK,IAAIphE,EAAK3I,GAElB,OADA2I,EAAKq6D,OAAOE,OAASA,EACd6G,EAMX,SAASozP,GAAgBpzP,EAAIqzP,GACzB,OAAO,WAEH,IADA,IAAI5nT,EAAO,GACF/L,EAAK,EAAGA,EAAK3C,UAAU9E,OAAQyH,IACpC+L,EAAK/L,GAAM3C,UAAU2C,GAEzB,GAAKsgE,EAAGyH,aAAa4rP,GAKrB,OAAOrzP,EAAGyH,aAAa4rP,GAAUv5T,MAAMkmE,EAAIv0D,IAmDnD,SAAS6nT,GAAax/T,GAClB,OAAO4nE,GAAYpnE,OAAOi/T,IAAIz/T,GAAQA,EAEZw/T,GAAa,iCACZA,GAAa,kCAD5C,IAGIE,GAAS,yBAETC,GAAoB,IAAI38P,QAExB48P,IADS,IAAI58P,QACC,IAAIA,SAiEtB,IAAI68P,GACA,SAAiBvpL,GAEbhqG,GAAM9pC,KAAM,QAAS,CACjBlC,IAFMg2I,EAAGh2I,IAGTwkB,IAHoBwxH,EAAGxxH,OAQnC,SAASg7S,GAAU39T,EAAS49T,EAAYC,QACjB,IAAfD,IAAyBA,GAAa,QACvB,IAAfC,IAAyBA,GAAa,GAC1C,IAAIz/T,EAAI,IAAIs/T,GAAQ19T,GAEhB69T,IACAz/T,EAAE+9T,QAAS,GAIf,IAAI/8O,EAASphF,OAAO8/T,KAAK1/T,GAGzB,OAFIw/T,GACAH,GAAY96S,IAAIy8D,GAAQ,GACrBA,EAEX,SAAS,GAAIz9D,GACT,IAAIwyH,EACJ,GAAI4pL,GAAMp8S,GACN,OAAOA,EAEX,IAAIpjB,EAAQy/T,KAAU7pL,EAAK,IAAOopL,IAAU57S,EAAKwyH,IACjD,OAAOwpL,GAAU,CACbx/T,IAAK,WAAc,OAAOI,EAAMg/T,KAChC56S,IAAK,SAAUlG,GAAK,OAAQle,EAAMg/T,IAAU9gT,KAGpD,SAASshT,GAAMx/T,GACX,OAAOA,aAAiBm/T,GAuB5B,SAASO,GAAMj/T,EAAQH,GACbA,KAAOG,GAvHjB,SAAe+I,EAAQlJ,EAAKqG,GACxB,IAEIivI,EAFM+nL,KAEG7oQ,KAAsBmwB,GAAT2wD,EAAGtzH,KAAuBszH,EAAG3wD,gBAInD1b,EAAK//D,EAAOggE,OAChB,SAASm2P,IAEDp2P,GAAM,GAAS5iE,KAASjB,GAAOiB,EAAK,WACpCi5T,GAAmBj5T,GAG3B,GAAI,GAAQ6C,GAAS,CACjB,GAAIq5D,GAAkBviE,GAIlB,OAHAkJ,EAAO/F,OAASmG,KAAKitB,IAAIrtB,EAAO/F,OAAQnD,GACxCkJ,EAAOL,OAAO7I,EAAK,EAAGqG,GACtBg5T,IACOh5T,EAEN,GAAY,WAARrG,GAAoBqG,IAAQ6C,EAAO/F,OAGxC,OAFA+F,EAAO/F,OAASkD,EAChB4iE,SAAwCA,EAAGG,IAAIhpD,SACxC/Z,EAGXrG,KAAOkJ,KAAYlJ,KAAOb,OAAOkB,YACjC6I,EAAOlJ,GAAOqG,EACdg5T,KAGAn2T,EAAO+gE,QAAWhB,GAAMA,EAAGS,UAM1BT,GAIL0b,EAAe1b,EAAGvpE,MAAOM,EAAKqG,GAE9Bk5T,GAAoBr2T,EAAQlJ,EAAKqG,GACjCg5T,IACAp2P,EAAGG,IAAIhpD,UAPHlX,EAAOlJ,GAAOqG,GAiFdm5T,CAAMr/T,EAAQH,OAAK0D,GACvB,IAAIka,EAAIzd,EAAOH,GACf,OAAIk/T,GAAMthT,GACCA,EACJkhT,GAAU,CACbx/T,IAAK,WAAc,OAAOa,EAAOH,IACjC8jB,IAAK,SAAUlG,GAAK,OAAQzd,EAAOH,GAAO4d,KA6DlD,SAAS6hT,GAAMh6T,GACX,IAAI6vI,EACJ,OAAOnoE,QAAQ1nE,GACXL,GAAOK,EAAK,WACU,iBAAfA,EAAIyjE,SACY,QAArBosE,EAAK7vI,EAAIyjE,cAA2B,IAAPosE,OAAgB,EAASA,EAAW,WAE3E,SAASoqL,GAAWj6T,GAChB,IAAI6vI,EACJ,OAAOnoE,QAAQ1nE,GACXL,GAAOK,EAAK,WACU,iBAAfA,EAAIyjE,UACa,QAArBosE,EAAK7vI,EAAIyjE,cAA2B,IAAPosE,OAAgB,EAASA,EAAW,WAM5E,SAASqqL,GAAmBz2T,GACxB,MAAK,GAAcA,IACfu2T,GAAMv2T,IACN,GAAQA,IACRg2T,GAAMh2T,KApSezD,EAqSDyD,EApSpB03E,EAAMy8O,KACHz8O,GAAOn7E,aAAem7E,IAoSzB+9O,GAAkB9hT,IAAI3T,IAL1B,CAjSJ,IAA6BzD,EACrBm7E,EAuSJ+9O,GAAkB76S,IAAI5a,GAAQ,GAE9B,IADA,IAAI0H,EAAOzR,OAAOyR,KAAK1H,GACdzK,EAAI,EAAGA,EAAImS,EAAKzN,OAAQ1E,IAC7B8gU,GAAoBr2T,EAAQ0H,EAAKnS,KAMzC,SAAS8gU,GAAoBr2T,EAAQlJ,EAAKqG,GACtC,GAAY,WAARrG,IAEAy/T,GAAMv2T,EAAOlJ,IAAjB,CAEA,IAAIf,EACAimB,EACA9kB,EAAWjB,OAAOkrE,yBAAyBnhE,EAAQlJ,GACvD,GAAII,EAAU,CACV,IAA8B,IAA1BA,EAASyjB,aACT,OAEJ5kB,EAASmB,EAASd,IAClB4lB,EAAS9kB,EAAS0jB,IACZ7kB,IAAUimB,GACS,IAArBjd,UAAU9E,SACVkD,EAAM6C,EAAOlJ,IAGrB2/T,GAAmBt5T,GACnBilC,GAAMpiC,EAAQlJ,EAAK,CACfV,IAAK,WACD,IAAII,EAAQT,EAASA,EAAOL,KAAKsK,GAAU7C,EAE3C,OAAIrG,IAAQ0+T,IAAUQ,GAAMx/T,GACjBA,EAAMA,MAGNA,GAGfokB,IAAK,SAAuB0mD,GACpBvrE,IAAWimB,IAKXllB,IAAQ0+T,IAAUQ,GAAM74T,KAAS64T,GAAM10P,GACvCnkE,EAAI3G,MAAQ8qE,EAEPtlD,GACLA,EAAOtmB,KAAKsK,EAAQshE,GACpBnkE,EAAMmkE,GAGNnkE,EAAMmkE,EAEVm1P,GAAmBn1P,QAI/B,SAASV,GAAQrkE,GACb,IACIm6T,EADAh/O,EAAMk9O,KAENl9O,EAAIiE,WACJ+6O,EAAWh/O,EAAIiE,WAAWp/E,GAQ1Bm6T,EALSxC,GAAwBx8O,EAAK,CAClC78D,KAAM,CACF87S,QAASp6T,KAGHkf,MAAMk7S,QAMxB,OAHKz6T,GAAOw6T,EAAU,WAClBN,GAAmBM,GAEhBA,EAKX,SAASN,GAAmB75T,EAAKu6C,GAC7B,IAAI8/Q,EAAKxqL,EAET,QADa,IAATt1F,IAAmBA,EAAO,IAAI4hB,MAC9B5hB,EAAKnjC,IAAIpX,KAAQL,GAAOK,EAAK,WAActG,OAAO6qE,aAAavkE,GAAnE,CAEA,GAAIA,EAAK,SAsBb,SAAsB/F,QACJ,IAAVA,IAAoBA,EAAQ,IAChC,MAAO,CACHA,MAAOA,EACP0pE,IAAK,CACDhpD,OAAQg+S,GACRj3P,OAAQi3P,GACRn3P,OAAQm3P,GACRl3P,UAAWk3P,KA9BA2B,CAAat6T,IAChCu6C,EAAKl+C,IAAI2D,GACT,IACI,IAAK,IAAIgwE,EAAKgnP,GAASt9T,OAAOyR,KAAKnL,IAAOgxE,EAAKhB,EAAGtmE,QAASsnE,EAAGxqE,KAAMwqE,EAAKhB,EAAGtmE,OAAQ,CAChF,IACIzP,EAAQ+F,EADFgxE,EAAG/2E,QAEP,GAAcA,IAAU,GAAQA,MAClC+/T,GAAM//T,IACLP,OAAO6qE,aAAatqE,IAGzB4/T,GAAmB5/T,EAAOsgD,IAGlC,MAAOggR,GAASF,EAAM,CAAEp2T,MAAOs2T,GAC/B,QACI,IACQvpP,IAAOA,EAAGxqE,OAASqpI,EAAK7/D,EAAGwqP,SAAS3qL,EAAG12I,KAAK62E,GAEpD,QAAU,GAAIqqP,EAAK,MAAMA,EAAIp2T,SAerC,SAASw2T,KACL,OAAOp2P,GAAQ,IAAIZ,OAqEvB,SAASi2P,GAAS15T,GACd,IAAK,GAASA,GAIV,OAAOA,EAEX,IAAM,GAAcA,KAAQ,GAAQA,IAChCg6T,GAAMh6T,KACLtG,OAAO6qE,aAAavkE,GACrB,OAAOA,EAEX,IAAIm6T,EAAW91P,GAAQrkE,GAEvB,OADAk6T,GAAmBC,GACZA,EAqIX,SAASO,GAAgBC,GACrB,OAAO,SAAUt4T,EAAUoB,GACvB,IAHgBlK,EAGZ04D,EAAW2mQ,GAHgB,KAAK77T,QAApBxD,EAG+BohU,GAHC,GAAG98S,cAAgBtkB,EAAK8F,MAAM,IAGfoE,GAC/D,OAAQwuD,GAIhB,SAA0BkpB,EAAKlpB,EAAUx2D,EAAMmF,GAC3C,IAAIlF,EAAUu2D,EAASpsB,MAAMrpC,SACzBo+T,EAAUz/O,EAAIzc,OAAOC,sBAAsBljE,GAC3CsvE,EAIR,SAAsB9Y,EAAUxwD,GAC5B,OAAO,WAEH,IADA,IAAIyP,EAAO,GACF/L,EAAK,EAAGA,EAAK3C,UAAU9E,OAAQyH,IACpC+L,EAAK/L,GAAM3C,UAAU2C,GAEzB,IAAI+R,EAAO4gT,KACXQ,GAAmBrmQ,GACnB,IACI,OAAOxwD,EAAGlC,WAAM,EAAQo+K,GAAc,GAAIs5I,GAAO/lT,IAAO,IAE5D,QACIonT,GAAmBphT,KAhBT2jT,CAAa5oQ,EAAUrxD,GAEzC,OADAlF,EAAQD,GAAQm/T,EAAQl/T,EAAQD,GAAOsvE,GAChCA,EARC+vP,CAAiBlD,KAAqB3lQ,EAAU0oQ,EAAet4T,IA0BvDq4T,GAAgB,eACpBA,GAAgB,WACXA,GAAgB,gBACrBA,GAAgB,WACVA,GAAgB,iBACpBA,GAAgB,aACZA,GAAgB,iBACpBA,GAAgB,aACdA,GAAgB,eACbA,GAAgB,kBA2jBvC,IAAIK,GAAiB,CACjB18S,IATJ,SAAaonD,EAAIlrE,EAAKN,IACLwrE,EAAGu1P,0BACZv1P,EAAGu1P,2BAA6B,IAC9BzgU,GAAON,GAObJ,IALJ,SAAa4rE,EAAIlrE,GACb,OAAQkrE,EAAGu1P,2BAA6B,IAAIzgU,KAkEhD,SAAS0gU,GAAkBx1P,GACvB,IAAIy1P,EAAcH,GAAelhU,IAAI4rE,EAAI,gBAAkB,GAC3D,GAAKy1P,GAAgBxhU,OAAOyR,KAAK+vT,GAAax9T,OAA9C,CAIA,IAFA,IAAIukF,EAAOxc,EAAG8W,MACV4+O,EAAaJ,GAAelhU,IAAI4rE,EAAI,SAAW,GAC1ChoE,EAAQ,EAAGA,EAAQ09T,EAAWz9T,OAAQD,IAAS,CACpD,IACI29T,EAAaF,EADb3gU,EAAM4gU,EAAW19T,KAEhBwkF,EAAK1nF,IAAQ6gU,GAAc3B,GAAM2B,KAClCA,EAAWnhU,MAAQ,MAG3B,IAAIohU,EAAU3hU,OAAOyR,KAAK82E,GACtBq5O,EAAe,GACnB,IAAS79T,EAAQ,EAAGA,EAAQ49T,EAAQ39T,OAAQD,IAAS,CACjD,IAAIlD,EACA6gU,EAAaF,EADb3gU,EAAM8gU,EAAQ59T,IAEdwkF,EAAK1nF,IAAQ6gU,GAAc3B,GAAM2B,KACjCA,EAAWnhU,MAAQgoF,EAAK1nF,GACxB+gU,EAAa/8T,KAAKhE,IAG1BwgU,GAAe18S,IAAIonD,EAAI,OAAQ61P,IAEnC,SAASC,GAAY91P,GAEjB,IADA,IAAIppD,EAAQ,CAACopD,EAAG+M,QACTn2D,EAAM3e,QAAQ,CACjB,IAAI0lE,EAAQ/mD,EAAMpV,MAClB,GAAIm8D,IACIA,EAAMtnE,SACNm/T,GAAkB73P,EAAMtnE,SACxBsnE,EAAMpsD,UACN,IAAK,IAAIhe,EAAI,EAAGA,EAAIoqE,EAAMpsD,SAAStZ,SAAU1E,EACzCqjB,EAAM9d,KAAK6kE,EAAMpsD,SAAShe,KAM9C,SAASwiU,GAAc/1P,EAAIl6B,GACvB,IAAI8uR,EAAKxqL,EACT,GAAKpqE,EAAL,CAGA,IAAIg2P,EAAeV,GAAelhU,IAAI4rE,EAAI,gBAC1C,GAAKg2P,GAAiBlwR,EAAtB,CAIA,IAAKkwR,EAAc,CACf,IAAIC,EAAehC,GAAS,IAC5B+B,EAAe,CAAElwR,IAAKA,EAAKjtB,KAAMo9S,GACjCX,GAAe18S,IAAIonD,EAAI,eAAgBg2P,GACvC51R,GAAM0F,EAAK,QAAS,CAChB1xC,IAAK,WACD,OAAO4hU,aAAmD,EAASA,EAAan9S,MAEpFD,IAAK,eAMb,IAAIyB,EAAS2lD,EAAGgN,OACZ2uC,EAAU,SAAUpyG,GACfrP,GAAO87T,EAAan9S,KAAMtP,IAC3B62B,GAAM41R,EAAan9S,KAAMtP,EAAM,CAC3BnV,IAAK,WAED,OAAO4rE,EAAGgN,OAAOzjE,OAKjC,IACI,IAAK,IAAIghE,EAAKgnP,GAASt9T,OAAOyR,KAAK2U,IAAUkxD,EAAKhB,EAAGtmE,QAASsnE,EAAGxqE,KAAMwqE,EAAKhB,EAAGtmE,OAAQ,CAEnF03G,EADWpwC,EAAG/2E,QAItB,MAAOsgU,GAASF,EAAM,CAAEp2T,MAAOs2T,GAC/B,QACI,IACQvpP,IAAOA,EAAGxqE,OAASqpI,EAAK7/D,EAAGwqP,SAAS3qL,EAAG12I,KAAK62E,GAEpD,QAAU,GAAIqqP,EAAK,MAAMA,EAAIp2T,UAGrC,SAAS+qE,GAAmBvJ,EAAIk2P,GAC5B,IAAIC,EAAcn2P,EAAGjpE,SAASm1E,aAC9B,GAAKiqP,EAAL,CAKA,IAHA,IAAIzvP,EAAY4uP,GAAelhU,IAAI4rE,EAAI,UAAY,GAC/Co2P,EAz2CR,SAAsBhwP,EAAOK,GACzB,IAAItO,EACJ,GAAKiO,EAGA,IAAIA,EAAMW,YAEX,OAAOX,EAAMW,YAIb,IAAK,IAAIjyE,KADTqjE,EAAM,GACUiO,EACRA,EAAMtxE,IAAmB,MAAXA,EAAI,KAClBqjE,EAAIrjE,IAAO,QAVnBqjE,EAAM,GAeV,IAAK,IAAIrjE,KAAO2xE,EACN3xE,KAAOqjE,IACTA,EAAIrjE,IAAO,GAGnB,OAAOqjE,EAk1CQgO,CAAagwP,EAAYt9S,KAAKyyD,YAAatL,EAAG0H,QAEpD1vE,EAAQ,EAAGA,EAAQ0uE,EAAUzuE,OAAQD,IAAS,CAE9Co+T,EADDthU,EAAM4xE,EAAU1uE,YAETk+T,EAAWphU,GAI1B,IAAIuhU,EAAYpiU,OAAOyR,KAAK0wT,GAC5B,IAASp+T,EAAQ,EAAGA,EAAQq+T,EAAUp+T,OAAQD,IAAS,CACnD,IAAIlD,EACCohU,EADDphU,EAAMuhU,EAAUr+T,MAEhBk+T,EAAWphU,GAAOs+T,GAAgBpzP,EAAIlrE,IAG9CwgU,GAAe18S,IAAIonD,EAAI,QAASq2P,IAEpC,SAASC,GAAwB9pQ,EAAUxwD,EAAImvL,GAC3C,IAAIorI,EAAQlE,KACZQ,GAAmBrmQ,GACnB,IACI,OAAOxwD,EAAGwwD,GAEd,MAEAhuC,GACI,IAAI2sK,EAIA,MAAM3sK,EAHN2sK,EAAQ3sK,GAMhB,QACIq0S,GAAmB0D,IAI3B,SAAS5yR,GAAM+xC,GACXA,EAAI/xC,MAAM,CACNtsC,aAcJ,WACI,IAAI2oE,EAAK1pE,KACLS,EAAWipE,EAAGjpE,SACdwpB,EAAQxpB,EAASwpB,MAAO9qB,EAASsB,EAAStB,OAC1CA,IAEAsB,EAAStB,OAAS,WAGd,IAFA,IAAIg0D,EAAQnzD,KACRmV,EAAO,GACF/L,EAAK,EAAGA,EAAK3C,UAAU9E,OAAQyH,IACpC+L,EAAK/L,GAAM3C,UAAU2C,GAEzB,OAAO42T,GAAwBvD,GAAwB/yP,IAAK,WACxD,OAAOvqE,EAAOqE,MAAM2vD,EAAOh+C,QAIvC,IAAK8U,EACD,OAEJ,IAAK,GAAWA,GAIZ,cAEJ,IAAI1H,EAAO9hB,EAAS8hB,KAEpB9hB,EAAS8hB,KAAO,WAEZ,OAKR,SAAmBmnD,EAAI/9C,QACL,IAAVA,IAAoBA,EAAQ,IAChC,IAQI8rB,EARAxtB,EAAQy/C,EAAGjpE,SAASwpB,MACpBulB,EAuGR,SAA4Bk6B,GACxB,IAAIl6B,EAAM,CAAEsgC,MAAO,IACF,CACb,OACA,SACA,OACA,YACA,WACA,cAGO3kC,SAAQ,SAAU3sC,GACzB,IAAI0hU,EAAS,IAAIl/T,OAAOxC,GACxBsrC,GAAM0F,EAAKhxC,EAAK,CACZV,IAAK,WAAc,OAAO4rE,EAAGw2P,IAC7B59S,IAAK,kBAMbm9S,GAAc/1P,EAAIl6B,GAXK,CAAC,QAYPrE,SAAQ,SAAU3sC,GAC/B,IAAI0hU,EAAS,IAAIl/T,OAAOxC,GACxBsrC,GAAM0F,EAAKhxC,EAAK,CACZV,IAAK,WACD,OAAO,WAEH,IADA,IAAIqX,EAAO,GACF/L,EAAK,EAAGA,EAAK3C,UAAU9E,OAAQyH,IACpC+L,EAAK/L,GAAM3C,UAAU2C,GAEzB,IAAI1D,EAAKgkE,EAAGw2P,GACZx6T,EAAGlC,MAAMkmE,EAAIv0D,WAKzB,EAGJ,OAAOq6B,EA/IG2wR,CAAmBz2P,GACzBxT,EAAWumQ,GAAwB/yP,GAWvC,GAVAxT,EAASkqQ,aAAe5wR,EAExB,GAAI7jB,EAAO,SAAU+yS,MAErBzrP,GAAmBvJ,EAAIl6B,EAAIsgC,OAE3BkwP,GAAwB9pQ,GAAU,WAE9Bze,EAAUxtB,EAAM0B,EAAO6jB,OAEtBiI,EACD,OACJ,GAAI,GAAWA,GAAU,CAErB,IAAI4oR,EAAgB5oR,EAMpB,YAJAiyB,EAAGjpE,SAAStB,OAAS,WAEjB,OADA8zE,GAAmBvJ,EAAIl6B,EAAIsgC,OACpBkwP,GAAwB9pQ,GAAU,WAAc,OAAOmqQ,SAIjE,GAAI,GAAS5oR,GAAU,CACpBymR,GAAWzmR,KACXA,EA3zChB,SAAgBxzC,GAIZ,IAAK,GAAcA,GACf,OAAOA,EACX,IAAIiC,EAAM,GACV,IAAK,IAAI1H,KAAOyF,EACZiC,EAAI1H,GAAOo/T,GAAM35T,EAAKzF,GAE1B,OAAO0H,EAizCeo6T,CAAO7oR,IAErBunR,GAAe18S,IAAIonD,EAAI,cAAejyB,GACtC,IAAI8oR,EAAe9oR,EA2BnB,YA1BA95C,OAAOyR,KAAKmxT,GAAcp1R,SAAQ,SAAU3tC,GACxC,IAAIgjU,EAAeD,EAAa/iU,GAChC,IAAKkgU,GAAM8C,GACP,GAAKtC,GAAWsC,GAiBP,GAAQA,KACbA,EAAe,GAAIA,SAjBnB,GAAI,GAAWA,GAAe,CAC1B,IAAIC,EAASD,EACbA,EAAeA,EAAa/hU,KAAKirE,GACjC/rE,OAAOyR,KAAKqxT,GAAQt1R,SAAQ,SAAUqhK,GAClCg0H,EAAah0H,GAAOi0H,EAAOj0H,WAGzB,GAASg0H,GA6CvC,SAASE,EAAsBh5T,EAAQq1Q,QACnB,IAAZA,IAAsBA,EAAU,IAAI58M,KACxC,GAAI48M,EAAQ1hQ,IAAI3T,GACZ,OAAOq1Q,EAAQj/Q,IAAI4J,GAGvB,GADAq1Q,EAAQz6P,IAAI5a,GAAQ,GAChB,GAAQA,IAAWw2T,GAAWx2T,GAE9B,OADAq1Q,EAAQz6P,IAAI5a,GAAQ,IACb,EAEX,IAAK,GAAcA,IAAWu2T,GAAMv2T,IAAWg2T,GAAMh2T,GACjD,OAAO,EAEX,OAAO/J,OAAOyR,KAAK1H,GAAQ4+C,MAAK,SAAU/T,GACtC,OAAOmuR,EAAsBh5T,EAAO6qC,GAAIwqO,MAxDnB2jD,CAAsBF,IAoBnD,SAASG,EAAej5T,EAAQ82C,QACf,IAATA,IAAmBA,EAAO,IAAI4hB,KAClC,GAAI5hB,EAAKnjC,IAAI3T,GACT,OACJ,IAAK,GAAcA,IACfg2T,GAAMh2T,IACNw2T,GAAWx2T,IACXu2T,GAAMv2T,GACN,OACJ,IAEIy7E,EAFM04O,KAEe7oQ,KAAKmwB,eAC9BxlF,OAAOyR,KAAK1H,GAAQyjC,SAAQ,SAAUunB,GAClC,IAAI7tD,EAAM6C,EAAOgrD,GACjBywB,EAAez7E,EAAQgrD,EAAG7tD,GACtBA,IACA25C,EAAKl+C,IAAIuE,GACT87T,EAAe97T,EAAK25C,OAlCRmiR,CAAeH,GALfA,EAAe,GAAIA,IAhS/C,SAAsB92P,EAAIg5D,EAAUk+L,GAChC,IAAIj1S,EAAQ+9C,EAAGjpE,SAASkrB,MAClB+2G,KAAYh5D,GAAS/9C,GAAS/nB,GAAO+nB,EAAO+2G,KAC1Cg7L,GAAMkD,GACN92R,GAAM4/B,EAAIg5D,EAAU,CAChB5kI,IAAK,WAAc,OAAO8iU,EAAU1iU,OACpCokB,IAAK,SAAUzd,GACX+7T,EAAU1iU,MAAQ2G,KAK1BilC,GAAM4/B,EAAIg5D,EAAU,CAChB5kI,IAAK,WAID,OAHIogU,GAAW0C,IACXA,EAAUl5P,OAAOE,IAAIjC,SAElBi7P,GAEXt+S,IAAK,SAAUzd,GACX+7T,EAAY/7T,MAwRhBg8T,CAAan3P,EAAIlsE,EAAMgjU,MAI3B,EAnEAM,CAAUp3P,EAAIA,EAAGqiI,QACV,GAAWxpL,GACZA,EAAKnlB,KAAKssE,EAAIA,GACdnnD,GAAQ,KA7ClBygE,QAAS,WACLw8O,GAAYx/T,OAEhB0gI,aAAc,WACV++L,GAAcz/T,OAElBijF,QAAS,WACLu8O,GAAYx/T,SA+NxB,SAASyjF,GAAQrE,IA93DjB,SAAyBA,GAErB,OAAOg9O,IAAkBx4T,GAAOw7E,EANV,kCAm4DlB2hP,CAAgB3hP,KAgBpBA,EAAIzc,OAAOC,sBAAsB34C,MAAQ,SAAU9pB,EAAQ6mE,GACvD,OAAO,SAAuBr7C,EAAO5rB,GACjC,OAhDZ,SAASqpE,EAAUx9B,EAAMhR,GACrB,IAAKgR,EACD,OAAOhR,EACX,IAAKA,EACD,OAAOgR,EAKX,IAJA,IAAIptC,EACA6qE,EACAC,EACAl6D,EAAOg2D,GAAYC,QAAQC,QAAQ15B,GAAQjuC,OAAOyR,KAAKw8B,GAClD3uC,EAAI,EAAGA,EAAImS,EAAKzN,OAAQ1E,IAGjB,YAFZuB,EAAM4Q,EAAKnS,MAIXosE,EAAQzuC,EAAGp8B,GACX8qE,EAAU19B,EAAKptC,GACVoF,GAAOg3B,EAAIp8B,GAGP6qE,IAAUC,GACf,GAAcD,KACbq0P,GAAMr0P,IACP,GAAcC,KACbo0P,GAAMp0P,IACPF,EAAUE,EAASD,GAPnBzuC,EAAGp8B,GAAO8qE,GAUlB,OAAO1uC,EAqBQwuC,CAAU,GAAWjpE,GAAUA,EAAOwrB,EAAO5rB,IAAY,QAAKmC,EAAW,GAAW8kE,GAASA,EAAMr7C,EAAO5rB,IAAY,QAAKmC,KA/3D9I,SAA2Bk9E,GAKvBg9O,GAAiBh9O,EACjBzhF,OAAOC,eAAewhF,EA5BA,gCA4B0B,CAC5C/8D,cAAc,EACdgJ,UAAU,EACVntB,OAAO,IAy3DX8iU,CAAkB5hP,GAClB/xC,GAAM+xC,IAEV,IAAI6hP,GAAS,CACTx9O,QAAS,SAAUrE,GAAO,OAAOqE,GAAQrE,KA2E7C,IC9rEiB8hP,GDgsEK,oBAAXj+T,QAA0BA,OAAOm8E,KACxCn8E,OAAOm8E,IAAIU,IAAImhP,KChsEjBC,IADeA,GAMT,OALS,QACFA,GAAoC,+BAC/C,KAAIphP,IAAI,IAKZ,IC6EWqhP,GD3EPC,GAAO,KCbP,IDcU,KAAItnQ,QCdoB,SAAU96D,EAAG6O,GAC/C,IAAI1P,EAAI,GACR,IAAK,IAAIY,KAAKC,EAAOrB,OAAOkB,UAAUC,eAAe1B,KAAK4B,EAAGD,IAAM8O,EAAEpK,QAAQ1E,GAAK,IAC9EZ,EAAEY,GAAKC,EAAED,IACb,GAAS,MAALC,GAAqD,mBAAjCrB,OAAOsxG,sBACtB,KAAIhyG,EAAI,EAAb,IAAgB8B,EAAIpB,OAAOsxG,sBAAsBjwG,GAAI/B,EAAI8B,EAAE4C,OAAQ1E,IAC3D4Q,EAAEpK,QAAQ1E,EAAE9B,IAAM,GAAKU,OAAOkB,UAAUwxD,qBAAqBjzD,KAAK4B,EAAGD,EAAE9B,MACvEkB,EAAEY,EAAE9B,IAAM+B,EAAED,EAAE9B,KAE1B,OAAOkB,IAIJ,MAAM,WAAqB,GAC9B,OACIwgF,MAAMh5E,OAEV,wBACI,OAAO3F,KAAK2T,UAAUumR,UAE1B,cAAcj9Q,GACV,MAAM/W,EAAMy4E,MAAMk4K,cAAc55O,GAChC,OAAOjd,KAAKqgR,aAAan6Q,EAAK,GAAak7C,OAAQ,KAC/C88I,GAAUO,aAAa,KACnBz+L,KAAKqhU,yBAIjB,qBACIrhU,KAAKshU,sBACL,MAAMx/T,EAAO9B,KAAKuhU,wBACZ58T,EAAO3E,KAAK6xO,KACZtmB,EAAQvrN,KAAKurN,MACnB,GAAIzpN,EAAM,CACN,MAAMo3E,EAAYl5E,KAAKurN,MAAM7rN,KAAKg7T,gBAAgB/1T,GACtC,CACR,MAAMy6E,EAAMgiP,GACNx7S,EAAM9iB,SAASiC,cAAc,OAGnC,GAFA6gB,EAAItB,MAAM+M,MAAQ,OAClBzL,EAAItB,MAAMmP,OAAS,OACM,iBAAdylD,EACPtzD,EAAI7T,UAAYmnE,EAChBl5E,KAAK0pE,GAAK,IAAI0V,EAAI,CAAE1vE,GAAIkW,QAEvB,CACD,MAAMkuH,EAAK56D,GAAW,SAAEnsB,GAAa+mF,EAAIrlG,EAAQ,GAAOqlG,EAAI,CAAC,aAC7DluH,EAAI7T,UAAYg7C,EAChB/sD,KAAK0pE,GAAK,IAAI0V,EAAIzhF,OAAO+rD,OAAO,CAAEh6C,GAAIkW,EAAKskD,QAAO,KACnC,CACHwuP,SAAU,IAAMntG,EAChBi2G,QAAS,IAAM78T,KAElB8pC,IAEb3sC,EAAKsD,YAAYpF,KAAK0pE,GAAGmY,OAkBrC,sBACI,MAAM//E,EAAO9B,KAAKuhU,wBAOlB,OANIvhU,KAAK0pE,KACK1pE,KAAK0pE,GAAGqO,WAElB/3E,KAAK0pE,GAAK,MAEd5nE,EAAKiQ,UAAY,GACVjQ,EAEX,UAGI,OAFA9B,KAAKshU,sBACL3iP,MAAMisK,UACC5qP,OAGJmhU,GASR,KAAiB,GAAe,KARlB//Q,OAAS,MACtB+/Q,GAAax+P,OAAO,CAChBuvL,UAAW,CAACivE,GAAa//Q,QACzB9B,QAAS,CACL45B,UAAWioP,GAAa//Q,UAGhC,GAASsyL,SAASn9F,SAAS,iBAAkB4qL,IAAc,GC7BhD,ICnEuL,GCctM,CACE3jU,KAAM,aACN+kB,KAFF,WAGI,MAAO,CACLk/S,UAAU,EACVC,UAAW,IAGf/1S,MAAO,CACLg2S,QAASzlQ,OACT0lQ,MAAO,CACLrgU,KAAM5D,OACNkuE,QAAS,KAGblzD,QAAS,CACPkpT,SADJ,SACA,GACM,OAAKzlT,EACDA,EAAEza,QAAU,GACPya,EAAEojG,UAAU,EAAG,IAEfpjG,EAJM,KAQnBgV,SAAU,GACVyzC,MAAO,GACPoF,OAAQ,CAAC,WACTx+B,QAAS,GACTu3C,QA7BF,cCKe,I,OAXC,YACd,ICTW,WAAa,IAAIquE,EAAIrxJ,KAASyyG,EAAG4+C,EAAIhgF,eAAmB4D,EAAGo8E,EAAI9wE,MAAMtL,IAAIw9B,EAAG,OAAOx9B,EAAG,MAAM,CAACyP,YAAY,gBAAgB,CAACzP,EAAG,MAAM,CAACphB,IAAI,aAAa,CAACohB,EAAG,IAAI,CAACyP,YAAY,UAAUpgE,MAAM,CAAGkvB,UAAW,WAAa69G,EAAIqwK,UAAY,QAAU9xT,MAAM,CAAC,KAAOyhJ,EAAIswK,UAAU,CAACtwK,EAAIn9E,GAAG,WAAWm9E,EAAI39E,GAAG29E,EAAIt9E,GAAG,WAAPs9E,CAAmBA,EAAIuwK,MAAM90F,aAAa,YAAYz7E,EAAIn9E,GAAG,KAAKe,EAAG,IAAI,CAACyP,YAAY,UAAUjK,MAAM,CAAEqnP,QAASzwK,EAAIowK,WAAY,CAACpwK,EAAIn9E,GAAG,WAAWm9E,EAAI39E,GAAG29E,EAAIuwK,MAAMpkU,MAAM,kBACvc,IDWpB,EACA,KACA,WACA,M,SEXa,SAASukU,GAAQ95R,GAC5B,IADoC,EAqBhCA,EANAo4P,gBAfgC,WAqBhCp4P,EALAgsP,gBAhBgC,MACZ,CACpBl3I,SAAS,EACT29J,UAAU,GAHsB,IAqBhCzyQ,EAJA+uQ,gBAjBgC,WAqBhC/uQ,EAHAy4P,eAlBgC,WAqBhCz4P,EAFA6lG,kBAnBgC,MAKV,CACtBiP,SAAS,EACT0kJ,SAAU,IACVC,SAAU,EACVh6M,UAAW,CAAC,OAAQ,SATY,IAqBhCz/C,EADAksN,mBApBgC,MAWT,CACvB6tE,aAAa,GAZmB,EAsBpC,MAAO,CACHz/S,KADG,WAEC,MAAO,CACHgpM,MAAO,KACP80E,SAAUA,EACVpM,SAAUA,EACV+iB,SAAUA,EACVtW,QAASA,EACT5yJ,WAAYA,EACZqmH,YAAaA,IAGrBnxK,QAZG,WAaChjF,KAAKiiU,aAETx2R,QAAS,CAELw2R,UAFK,WAGD,IAAIv4P,EAAK1pE,KACTA,KAAKurN,MAAQ,IAAI+7F,GAAM,CACnBx1R,UAAWhvB,SAASyL,eAAe,kBACnC8iB,MAAOq4C,EAAGqjO,YAAcjqS,SAASyL,eAAe,kBAAkB2lI,YAClEzgH,OAAQi2C,EAAGsjO,aAAelqS,SAASyL,eAAe,kBAAkB4lI,aACpEy9D,MAAM,EACN65F,YAAY,EACZpL,SAAU32N,EAAG22N,SACbpM,SAAUvqN,EAAGuqN,SACbnmJ,WAAYpkE,EAAGokE,WACfkpK,SAAUttO,EAAGstO,SACbtW,QAASh3N,EAAGg3N,QACZvsC,YAAazqL,EAAGyqL,YAChB4iD,QAAS,CACLh6J,SAAS,EACTjrH,UAAWhvB,SAASyL,eAAe,WACnC8iB,MAAO,IACPoC,OAAQ,IACR0sQ,aAAc,CACVx+P,OAAO,EACP+nQ,eAFU,SAEK73D,GAEX,GAAIA,EAAKptK,SACL,OAAO,UAM3BlkD,QAAQi2I,IAAI,qBAGhB0rK,iBAnCK,SAmCY/9T,GAAM,IACXmoE,EAASnoE,EAATmoE,KAEJ3nE,EAAO,CACPysC,MAAO,YACPmB,EAHoB+5B,EAAhB/5B,EAIJC,EAJoB85B,EAAb95B,EAKPkiB,MALoB4X,EAAV5X,MAMVrjC,MAAO,GACPoC,OAAQ,IACR7jB,MAAO,CACH0V,KAAM,CACFuqB,OAAQ,YAGhBttB,KAAM,CAAEykQ,OAAQ7iR,EAAKqK,IACrB0qE,UAAW,CACP32D,KADO,WAEH,MAAO,CACHo/S,QAAS,IAGjBxiP,WAAY,CACRgjP,eAEJ12R,QAAS,GACTtsC,OAVO,SAUA0B,GACH,OAAOA,EAAE,eAAgB,CACrB8qB,MAAO,CACHi2S,MAAOz9T,QAM3BnE,KAAKurN,MAAMqsE,QAAQjzR,MCvGnC,ICR4M,GDW5M,CACEnH,KAAM,mBACNqtE,OAAQ,CALV,QACEw1N,UAAU,KAKV99Q,KAHF,WAII,MAAO,CACLgpM,MAAO,OAGX5/L,MAAO,CACLy2S,SAAU,CACR7gU,KAAM26D,QAER8wO,YAAa,CACXzrS,KAAM26D,QAERkwK,WAAY,CACV7qO,KAAML,MACN2qE,QAAS,KAGb5B,OAAQ,GACRpF,MAAO,GACPp5B,QAAS,CAEP42R,WAFJ,WAGM,IAAI34P,EAAK1pE,KACTA,KAAKosO,WAAWjhM,SAAQ,SAA9B,GACQu+B,EAAGw4P,iBAAiB/9T,MAEtBnE,KAAKurN,MAAM2+F,kBAGflnO,QAhCF,WAiCIhjF,KAAKqiU,eEzBM,I,OAXC,YACd,ICTW,WAAa,IAAiB5vN,EAATzyG,KAAgBqxE,eAAhBrxE,KAA0CugF,MAAMtL,GAAO,OAAvDj1E,KAAkE8zE,GAAG,KACjF,CAAC,WAAa,IAAiB2+B,EAATzyG,KAAgBqxE,eAAmB4D,EAAnCj1E,KAA0CugF,MAAMtL,IAAIw9B,EAAG,OAAOx9B,EAAG,MAAM,CAACyP,YAAY,sBAAsB,CAACzP,EAAG,MAAM,CAACrlE,MAAM,CAAC,GAAK,aAAjI5P,KAAkJk0E,GAAG,KAAKe,EAAG,MAAM,CAACrlE,MAAM,CAAC,GAAK,yBDW1N,EACA,KACA,KACA,M,SEf4N,GCmB9N,CACEpS,KAAM,mBACN2hF,WAAY,CAAEmjP,iBAAhB,IACE32S,MAAO,CACL44M,UAAW,CAAEhjO,KAAMoqE,QAASkgI,UAAU,GACtCgP,UAAW,CAAEt5M,KAAMuL,OAAQ++L,UAAU,GACrCugC,WAAY,CAAE7qO,KAAM5D,OAAQkuM,UAAU,IAExChnI,MAAO,CACL0/J,UADJ,SACA,cAOM,OANN,GACQ,YAAR,WACU,EAAV,kCACU,EAAV,gBACA,KAEa1/N,IAGX0d,KAnBF,WAoBI,MAAO,CACL9M,KAAMyyL,OAAOC,IAAIC,SAASC,MAC1Bk6H,OAAQ,GACRC,YAAY,IAGhB/2R,QAAS,CAEPu/L,WAFJ,WAEA,WACMhrO,KAAKukO,WAAY,EACjB3kN,YAAW,WACT,EAAR,gBACA,QChCe,I,OAXC,YACd,ICTW,WAAa,IAAIyxI,EAAIrxJ,KAASyyG,EAAG4+C,EAAIhgF,eAAmB4D,EAAGo8E,EAAI9wE,MAAMtL,IAAIw9B,EAAG,OAAOx9B,EAAG,aAAa,CAACyP,YAAY,iBAAiB90E,MAAM,CAAC,MAAQ,IAAI,KAAOyhJ,EAAIkzE,YAAY,CAAElzE,EAAc,WAAEp8E,EAAG,KAAK,CAACrlE,MAAM,CAAC,KAAO,UAAUmgE,KAAK,UAAU,CAACshF,EAAIn9E,GAAGm9E,EAAI39E,GAAG29E,EAAI+6E,WAAW5uO,MAAQ,SAAS6zJ,EAAIl9E,KAAKk9E,EAAIn9E,GAAG,KAAKe,EAAG,MAAM,CAACyP,YAAY,qBAAqB90E,MAAM,CAAC,cAAgB,iBAAiB,CAAEyhJ,EAAc,WAAEp8E,EAAG,mBAAmB,CAACrlE,MAAM,CAAC,SAAW,IAAI,YAAc,IAAI,WAAayhJ,EAAIkxK,UAAUlxK,EAAIl9E,KAAKk9E,EAAIn9E,GAAG,MAAOm9E,EAAImxK,YAAcnxK,EAAIkzE,UAAWtvJ,EAAG,MAAM,CAACyP,YAAY,iBAAiB,CAAC2sE,EAAIn9E,GAAGm9E,EAAI39E,GAAG29E,EAAI57I,KAAK+iE,YAAY64E,EAAIl9E,MAAM,GAAGk9E,EAAIn9E,GAAG,KAAKe,EAAG,MAAM,CAACyP,YAAY,YAAY90E,MAAM,CAAC,IAAM,uCAAuCwY,GAAG,CAAC,MAAQipI,EAAI25E,cAAc35E,EAAIn9E,GAAG,KAAKe,EAAG,0BAA0B,CAACyV,YAAY,CAAC,QAAU,QAAQ96E,MAAM,CAAC,KAAO,SAAS,KAAO,QAAQmgE,KAAK,UAAU,CAACkF,EAAG,SAAS,CAACo8E,EAAIn9E,GAAGm9E,EAAI39E,GAAG29E,EAAI57I,KAAKw3N,eAAe,KACz6B,IDWpB,EACA,KACA,WACA,M,8KEfyI,GCM5H,CACbzvO,KAAM,kBACNmuB,MAAO,CACLkvL,UAAU,CAAEt5M,KAAMuL,OAAQ++L,UAAU,GACpC6I,UAAU,CAACnzM,KAAMoqE,QAASkgI,UAAU,GACpCk8B,eAAgB,CAAExmO,KAAM5D,OAAQkuM,UAAU,GAC1Cm8B,WAAY,CAAEzmO,KAAMuL,OAAQ++L,UAAU,IAExC1sH,WAAY,CAAE8oJ,qBAAmBC,qBAAmBC,qBACtCs6F,sBAAqBC,qBAEnCngT,KAAM,WACJ,MAAO,CACL9M,KAAKyyL,OAAOC,IAAIC,SAASC,MACzBsX,MAAO3/M,KAAK66M,UACZnG,UAAW10M,KAAK00M,UAChB/+B,OAAQA,OACRyyD,UAAWA,UACXC,UAAWA,UACXL,WAAYhoO,KAAKgoO,WACjB26F,kBAAmB,GACnBC,qBAAsB,GACtBC,gBAAiB,GACjBr6F,aAAc,CAAE51B,WAAY,EAAGC,UAAW,EAAGr4E,OAAQ,GACrDsoM,uBAAuB,EACvBp6F,iBAAiB,EACjBC,iBAAiB,EACjBC,iBAAiB,EACjBm6F,gBAAgB,EAChBC,cAAc,EACd3+F,mBpU4ImC,IoU3InCwE,eAAgB,GAChB3B,iBAAiB,EACjB+7F,UAAW,IAGfp+P,MAAO,CACLg2I,UAAU,WACR76M,KAAK2/M,MAAQ3/M,KAAK66M,UAClB76M,KAAKkjU,uBACLljU,KAAKmjU,uBAGTxqT,QAAS,CACPuwN,WAAY,SAAU9sN,GAClB,OAAKA,GAAU,KAALA,EAGCA,EAFA,KAKfksL,WAAW,SAASlsL,GAChB,OAAKA,GAAU,KAALA,EAGC29L,MAAM39L,GAAG49L,OAAOC,kBAAkB,QAFlC,MAMjB7oL,SAAU,CAER+3M,qBAAsB,WACpB,IAAI5rO,EAAIyf,EAAEkqC,UAAUlnD,KAAK2iU,mBACpBplU,IAAGA,EAAI,IACZ,IAAIglB,EAAO,GAcX,OAbAhlB,EAAE4tC,SAAQ,SAAUhnC,GAChBoe,EAAK/f,KAAK,CACNkhC,OAAQv/B,EAAKu/B,OACblmC,KAAM2G,EAAKilO,QACXxjC,GAAIzhM,EAAKklO,MACT9nO,KAAM4C,EAAKmlO,QACXj/B,SAAUlmM,EAAKqlO,YACfC,WAAYtlO,EAAKulO,UACjBC,YAAaxlO,EAAKylO,mBAClBC,UAAW1lO,EAAK2lO,iBAChBt7N,GAAIrK,EAAKqK,QAGV+T,GAGTwnN,wBAAyB,WACvB,IAAIxsO,EAAIyf,EAAEkqC,UAAUlnD,KAAK4iU,sBACpBrlU,IAAGA,EAAI,IACZ,IAAIglB,EAAO,GAaX,OAZAhlB,EAAE4tC,SAAQ,SAAUhnC,GAChBoe,EAAK/f,KAAK,CACNgM,GAAGrK,EAAKqK,GACRzI,IAAK5B,EAAK6lO,MACVnC,QAAS1jO,EAAK8lO,YACdnC,MAAO3jO,EAAK+lO,UACZC,QAAShmO,EAAKimO,YACdC,MAAOlmO,EAAKmmO,UACZC,WAAYpmO,EAAKqmO,YACjBl9L,KAAMnpC,EAAKmpC,UAGZ/qB,GAGT6gT,eAAgB,WACd,IAAI7lU,EAAIyf,EAAEkqC,UAAUlnD,KAAK6iU,iBACpBtlU,IAAGA,EAAI,IACZ,IAAIglB,EAAO,GAUX,OATAhlB,EAAE4tC,SAAQ,SAAUhnC,GAChBoe,EAAK/f,KAAK,CACRgM,GAAIrK,EAAKqK,GACThR,KAAM2G,EAAK3G,KACX6lU,SAAUl/T,EAAKm/T,SACfC,cAAep/T,EAAKo+T,OACpBiB,qBAAsBr/T,EAAKq/T,0BAG1BjhT,EAAK,IAAM,OAGtBkpB,QAAS,CAEPg/L,gBAFO,WAGLjyJ,QAAQkuI,cACR1mN,KAAKirO,iBACAjrO,KAAK8iU,wBACR9iU,KAAK2qO,oBACL3qO,KAAKkjU,uBACLljU,KAAK8iU,uBAAwB,IAIjCl4F,mBAZO,WAaLpyJ,QAAQkuI,cACR1mN,KAAKirO,iBACDjrO,KAAK8iU,wBACP9iU,KAAK2qO,oBACL3qO,KAAKyjU,0BACLzjU,KAAK8iU,uBAAwB,IAIjCh4F,yBAtBO,SAsBkBpqC,GACvB1gM,KAAKirO,iBACLzyJ,QAAQkuI,cACR1mN,KAAKwoO,aAAa51B,WAAalS,EAC3B1gM,KAAK8iU,sBACL9iU,KAAKkjU,uBAELljU,KAAKyjU,2BAIX94F,kBAjCO,WAkCL3qO,KAAKwoO,aAAa31B,UAAY,EAC9B7yM,KAAKwoO,aAAa51B,WAAa,GAGjCswH,qBAtCO,WAuCLljU,KAAK0jU,iBAAiB,GACtBzjI,OAAOwC,KAAK,8BACZ,CAAEkd,MAAO3/M,KAAK2/M,MACZ/M,WAAY5yM,KAAKwoO,aAAa51B,WAC9BC,UAAW7yM,KAAKwoO,aAAa31B,UAC7BtxM,KAAM,IACL6iC,QAAQ,SAAUy9B,GACjB7hE,KAAK2iU,kBAAoB9gQ,EAAIt/C,KAAKnX,KAClCpL,KAAKwoO,aAAahuG,OAAS34D,EAAIt/C,KAAKi4G,QACtC/7H,KAAKuB,OAAOkyL,IAAI,WACdlyL,KAAK2jU,uBACPllU,KAAKuB,QAGTmjU,mBArDO,WAsDLnjU,KAAK0jU,iBAAiB,GACtBzjI,OAAOwC,KAAK,sCACZ,CAAEkd,MAAO3/M,KAAK2/M,QAASv7K,QAAQ,SAAUw/R,GACpCA,EAAWrhT,MACZviB,KAAK0jU,iBAAiB,GACtBzjI,OAAOwC,KAAK,wCACV,CAAEohI,SAAUA,GAAGD,EAAWrhT,KAAX,WAAgC6hB,QAAQ,SAAUy9B,GAC7DA,EAAIt/C,KAAK/T,GACVxO,KAAK6iU,gBAAkB,CAAC,MAAIhhQ,EAAIt/C,OAEjCviB,KAAK6iU,gBAAkB,IAEzBpkU,KAAKuB,OAAOkyL,IAAI,WACflyL,KAAK2jU,uBACNllU,KAAKuB,QAEPA,KAAK6iU,gBAAkB,IAEzBpkU,KAAKuB,OAAOkyL,IAAI,WACdlyL,KAAK2jU,uBACPllU,KAAKuB,QAGTyjU,wBA7EO,WA8ELzjU,KAAK0jU,iBAAiB,GACtBzjI,OAAOwC,KAAK,2CACZ,CAAEkd,MAAO3/M,KAAK2/M,MACZ/M,WAAY5yM,KAAKwoO,aAAa51B,WAC9BC,UAAW7yM,KAAKwoO,aAAa31B,UAC7BtxM,KAAM,IACL6iC,QAAQ,SAAUy9B,GACjB7hE,KAAK4iU,qBAAuB/gQ,EAAIt/C,KAAKnX,KACrCpL,KAAKwoO,aAAahuG,OAAS34D,EAAIt/C,KAAKi4G,QACtC/7H,KAAKuB,OAAOkyL,IAAI,WACdlyL,KAAK2jU,uBACPllU,KAAKuB,QAGTkrO,aA5FO,SA4FMn3B,EAAKxyM,GAAM,WACtBvB,KAAKirO,iBACLrrN,YAAW,WAGT,OAFA,EAAKykN,mBpUzC4B,IoU0CjC,EAAKwE,eAAiB90B,EACdxyM,GACN,IAAK,SACH,EAAKmnO,iBAAkB,EACvB,MAEF,IAAK,SACH,EAAKC,iBAAkB,EACvB,MAEF,IAAK,aACH,EAAKzB,iBAAkB,EACvB,EAAK0B,iBAAkB,EACvB,MAEF,IAAK,gBACH,EAAK1B,iBAAkB,EACvB,EAAK0B,iBAAkB,KAM1B,KAGLuC,aAAc,SAASluN,GACrBjd,KAAKirO,iBACFhuN,IACDu7D,QAAQkuI,cACR1mN,KAAKmjU,qBACLnjU,KAAKkjU,yBAIT93F,eAAgB,SAASnuN,GACvBjd,KAAKirO,iBACFhuN,IACDu7D,QAAQkuI,cACR1mN,KAAKmjU,qBACFnjU,KAAK8iU,sBACN9iU,KAAKkjU,uBAELljU,KAAKyjU,4BAKXK,aAhJO,SAgJM/vH,EAAKxyM,GAEhB,GADAvB,KAAKirO,iBACO,WAAT1pO,EACDqU,SAASG,KAAO,2CAA6C/V,KAAK2/M,MAAQ,SAAWp+M,MAChF,CACL,IAAM4xD,EAAQnzD,KACd22M,OAAO8L,QACL,kDACUhtM,KAAKsuT,+BADf,YAGA,CAACtuT,KAAKqsM,GAAGrsM,KAAKq3F,SAChB,WACE9sG,KAAKi9K,QACLzkG,QAAQkuI,cACRzmB,OAAOwC,KAAK,uBAAwB,CAAEohI,SAAU9vH,EAAIvlM,KAAM41B,QAAQ,SAAUy9B,GACzEjjD,GAAOnJ,KAAK8hN,eAAgB,EAAG,WAC/B33M,YAAW,WACR44D,QAAQkuI,cACRvzJ,EAAMgwQ,uBACL,MACL1kU,KAAKuB,OAAOkyL,IAAI,WACf15G,QAAQsuI,cACTroN,KAAKuB,UACN,WACDA,KAAKi9K,aAKX+mJ,aA7KO,SA6KMjwH,GAAK,WAChB/zM,KAAKirO,iBACLrrN,YAAW,WACT,EAAKojT,cAAe,IACnB,KAGLiB,iBApLO,SAoLUlwH,GAAK,WACpB/zM,KAAKirO,iBACLrrN,YAAW,WACT,EAAKmjT,gBAAiB,IACrB,KAGLY,oBA3LO,WA4LL3jU,KAAKijU,UAAYjjU,KAAKijU,UAAY,EACZ,IAAnBjjU,KAAKijU,WACLzqP,QAAQsuI,cAIb48G,iBAlMO,SAkMU39T,GACf/F,KAAKijU,UAAYjjU,KAAKijU,UAAYl9T,GAGpCklO,eAtMO,WAuMLjrO,KAAK0oO,iBAAkB,EACvB1oO,KAAK2oO,iBAAkB,EACvB3oO,KAAK4oO,iBAAkB,EACvB5oO,KAAKknO,iBAAkB,EACvBlnO,KAAK+iU,gBAAiB,EACtB/iU,KAAKgjU,cAAe,EACpBhjU,KAAKijU,UAAY,IAGrBngP,QApUa,WAqUXtK,QAAQkuI,cACR1mN,KAAKkjU,uBACLljU,KAAKmjU,uBC1TM,I,OAXC,YACd,ICTW,WAAa,IAAI9xK,EAAIrxJ,KAASyyG,EAAG4+C,EAAIhgF,eAAmB4D,EAAGo8E,EAAI9wE,MAAMtL,IAAIw9B,EAAG,OAAOx9B,EAAG,MAAM,CAACA,EAAG,MAAM,CAACyP,YAAY,6BAA6B,CAACzP,EAAG,SAAS,CAACyP,YAAY,gBAAgBjK,MAAM,CAAC,gBAAgB42E,EAAIyxK,uBAAuB16S,GAAG,CAAC,MAAQipI,EAAIo5E,kBAAkB,CAACp5E,EAAIn9E,GAAGm9E,EAAI39E,GAAG29E,EAAI57I,KAAK4tN,yCAAyChyE,EAAIn9E,GAAG,KAAKe,EAAG,SAAS,CAACyP,YAAY,gBAAgBjK,MAAM,CAAC,eAAe42E,EAAIyxK,uBAAuB16S,GAAG,CAAC,MAAQipI,EAAIu5E,qBAAqB,CAACv5E,EAAIn9E,GAAGm9E,EAAI39E,GAAG29E,EAAI57I,KAAK41N,oBAAoBh6E,EAAIn9E,GAAG,KAAKe,EAAG,MAAM,CAACyP,YAAY,gCAAgC,CAACzP,EAAG,WAAW,CAACzK,WAAW,CAAC,CAAChtE,KAAK,OAAOoqF,QAAQ,SAAS1pF,MAAOmzJ,EAAyB,sBAAEv0E,WAAW,0BAA0B4N,YAAY,CAAC,MAAQ,QAAQ96E,MAAM,CAAC,oBAAoB,CAAC6jB,OAAO,OAAOu7H,WAAW,UAAUn4C,MAAM,QAAQ,OAAS,GAAG,KAAOw6C,EAAI83E,uBAAuB,CAACl0J,EAAG,kBAAkB,CAACyP,YAAY,OAAO90E,MAAM,CAAC,KAAO,SAAS,MAAQyhJ,EAAI57I,KAAK0xM,QAAQ,MAAQ91D,EAAI02E,eAAeuD,cAAc,IAAIt2J,YAAYq8E,EAAIj9E,GAAG,CAAC,CAAC51E,IAAI,UAAUkH,GAAG,SAASoJ,GAAO,MAAO,CAACmmE,EAAG,MAAM,CAAC3wD,MAAM,CAAEuyF,MAA0B,MAAnB/nG,EAAMilM,IAAIrwK,OAAgB,UAAW,YAAa,CAAC2tH,EAAIn9E,GAAG,qBAAqBm9E,EAAI39E,GAAqB,MAAlB5kE,EAAMilM,IAAIrwK,OAAa2tH,EAAI57I,KAAKozL,QAAQx3C,EAAI57I,KAAKqmN,QAAQ,6BAA6BzqE,EAAIn9E,GAAG,KAAKe,EAAG,kBAAkB,CAACrlE,MAAM,CAAC,KAAO,OAAO,MAAQyhJ,EAAI57I,KAAKwvN,cAAc,MAAQ5zE,EAAI02E,eAAeuD,cAAc,GAAG,wBAAwB,IAAIt2J,YAAYq8E,EAAIj9E,GAAG,CAAC,CAAC51E,IAAI,UAAUkH,GAAG,SAASoJ,GAAO,MAAO,CAACuiJ,EAAIn9E,GAAG,qBAAqBm9E,EAAI39E,GAAG5kE,EAAMilM,IAAIv2M,MAAQsR,EAAMilM,IAAInO,IAAM,KAAK,yBAAyBv0C,EAAIn9E,GAAG,KAAKe,EAAG,kBAAkB,CAACrlE,MAAM,CAAC,KAAO,KAAK,MAAQ,KAAK,wBAAwB,GAAG,MAAQyhJ,EAAI02E,eAAeuD,cAAc,IAAIt2J,YAAYq8E,EAAIj9E,GAAG,CAAC,CAAC51E,IAAI,UAAUkH,GAAG,SAASoJ,GAAO,MAAO,CAACuiJ,EAAIn9E,GAAG,qBAAqBm9E,EAAI39E,GAAG29E,EAAIt9E,GAAG,aAAPs9E,CAAqBviJ,EAAMilM,IAAInO,KAAK,yBAAyBv0C,EAAIn9E,GAAG,KAAKe,EAAG,kBAAkB,CAACrlE,MAAM,CAAC,KAAO,OAAO,MAAQyhJ,EAAI57I,KAAKw0L,iBAAiB,MAAQ54C,EAAI02E,eAAeuD,cAAc,GAAG,wBAAwB,IAAIt2J,YAAYq8E,EAAIj9E,GAAG,CAAC,CAAC51E,IAAI,UAAUkH,GAAG,SAASoJ,GAAO,MAAO,CAACuiJ,EAAIn9E,GAAG,qBAAqBm9E,EAAI39E,GAAG29E,EAAIt9E,GAAG,aAAPs9E,CAAqBviJ,EAAMilM,IAAIxyM,OAAO,yBAAyB8vJ,EAAIn9E,GAAG,KAAKe,EAAG,kBAAkB,CAACrlE,MAAM,CAAC,KAAO,WAAW,MAAQyhJ,EAAI57I,KAAK+1N,iBAAiB,MAAQn6E,EAAI02E,eAAeuD,cAAc,GAAG,wBAAwB,IAAIt2J,YAAYq8E,EAAIj9E,GAAG,CAAC,CAAC51E,IAAI,UAAUkH,GAAG,SAASoJ,GAAO,MAAO,CAACuiJ,EAAIn9E,GAAG,qBAAqBm9E,EAAI39E,GAAG29E,EAAIt9E,GAAG,aAAPs9E,CAAqBviJ,EAAMilM,IAAI1J,WAAW,yBAAyBh5C,EAAIn9E,GAAG,KAAKe,EAAG,kBAAkB,CAACrlE,MAAM,CAAC,KAAO,aAAa,MAAQyhJ,EAAI57I,KAAKg2N,eAAe,MAAQp6E,EAAI02E,eAAeuD,cAAc,GAAG,wBAAwB,IAAIt2J,YAAYq8E,EAAIj9E,GAAG,CAAC,CAAC51E,IAAI,UAAUkH,GAAG,SAASoJ,GAAO,MAAO,CAACuiJ,EAAIn9E,GAAG,qBAAqBm9E,EAAI39E,GAAG29E,EAAIt9E,GAAG,aAAPs9E,CAAqBviJ,EAAMilM,IAAI01B,aAAa,yBAAyBp4E,EAAIn9E,GAAG,KAAKe,EAAG,kBAAkB,CAACrlE,MAAM,CAAC,KAAO,YAAY,MAAQyhJ,EAAI57I,KAAK6tN,WAAW,MAAQjyE,EAAI02E,eAAeuD,cAAc,GAAG,wBAAwB,IAAIt2J,YAAYq8E,EAAIj9E,GAAG,CAAC,CAAC51E,IAAI,UAAUkH,GAAG,SAASoJ,GAAO,MAAO,CAACuiJ,EAAIn9E,GAAG,qBAAqBm9E,EAAI39E,GAAG5kE,EAAMilM,IAAI81B,WAAa,KAAK,yBAAyBx4E,EAAIn9E,GAAG,KAAKe,EAAG,kBAAkB,CAACrlE,MAAM,CAAC,KAAO,KAAK,MAAQyhJ,EAAI57I,KAAKi2N,WAAW,MAAQr6E,EAAI02E,eAAeuD,cAAc,IAAIt2J,YAAYq8E,EAAIj9E,GAAG,CAAC,CAAC51E,IAAI,UAAUkH,GAAG,SAASoJ,GAAO,MAAO,CAAgB,IAAdA,EAAMilM,IAAIvlM,GAAQymE,EAAG,MAAM,CAAEo8E,EAAa,UAAEp8E,EAAG,YAAY,CAACyP,YAAY,aAAa90E,MAAM,CAAC,KAAO,OAAO,KAAO,SAASwY,GAAG,CAAC,MAAQ,SAASkqD,GAAQ,OAAO++E,EAAI65E,aAAap8N,EAAMilM,IAAK,aAAa,CAAC1iD,EAAIn9E,GAAG,2BAA2Bm9E,EAAI39E,GAAG29E,EAAI57I,KAAKk2N,QAAQ,4BAA4Bt6E,EAAIl9E,KAAKk9E,EAAIn9E,GAAG,KAAMm9E,EAAa,UAAEp8E,EAAG,YAAY,CAACyP,YAAY,aAAa90E,MAAM,CAAC,KAAO,OAAO,KAAO,QAAQwY,GAAG,CAAC,MAAQ,SAASkqD,GAAQ,OAAO++E,EAAI65E,aAAap8N,EAAMilM,IAAK,aAAa,CAAC1iD,EAAIn9E,GAAG,2BAA2Bm9E,EAAI39E,GAAG29E,EAAI57I,KAAKm2N,SAAS,4BAA4Bv6E,EAAIl9E,KAAKk9E,EAAIn9E,GAAG,KAAMm9E,EAAa,UAAEp8E,EAAG,YAAY,CAACyP,YAAY,aAAa90E,MAAM,CAAC,KAAO,OAAO,KAAO,QAAQwY,GAAG,CAAC,MAAQ,SAASkqD,GAAQ,OAAO++E,EAAI65E,aAAap8N,EAAMilM,IAAK,iBAAiB,CAAC1iD,EAAIn9E,GAAG,2BAA2Bm9E,EAAI39E,GAAG29E,EAAI57I,KAAKo2N,QAAQ,4BAA4Bx6E,EAAIl9E,MAAM,GAAGk9E,EAAIl9E,KAAKk9E,EAAIn9E,GAAG,KAAoB,IAAdplE,EAAMilM,IAAIvlM,KAAY6iJ,EAAI+2E,YAAc/2E,EAAIg3E,UAAYpzJ,EAAG,MAAM,CAACo8E,EAAIn9E,GAAG,UAAUm9E,EAAIl9E,aAAa,GAAGk9E,EAAIn9E,GAAG,KAAKe,EAAG,WAAW,CAACzK,WAAW,CAAC,CAAChtE,KAAK,OAAOoqF,QAAQ,SAAS1pF,OAAQmzJ,EAAIyxK,sBAAuBhmP,WAAW,2BAA2BltE,MAAM,CAAC,oBAAoB,CAAC6jB,OAAO,OAAOu7H,WAAW,UAAUn4C,MAAM,QAAQ,OAAS,GAAG,KAAOw6C,EAAI04E,0BAA0B,CAAC90J,EAAG,kBAAkB,CAACrlE,MAAM,CAAC,KAAO,MAAM,MAAQyhJ,EAAI57I,KAAKq2N,uBAAuB,wBAAwB,GAAG,MAAQ,QAAQ92J,YAAYq8E,EAAIj9E,GAAG,CAAC,CAAC51E,IAAI,UAAUkH,GAAG,SAASoJ,GAAO,MAAO,CAACuiJ,EAAIn9E,GAAG,qBAAqBm9E,EAAI39E,GAAG5kE,EAAMilM,IAAIhuM,KAAK,yBAAyBsrJ,EAAIn9E,GAAG,KAAKe,EAAG,kBAAkB,CAACrlE,MAAM,CAAC,KAAO,UAAU,MAAQyhJ,EAAI57I,KAAKs2N,eAAe,wBAAwB,IAAI/2J,YAAYq8E,EAAIj9E,GAAG,CAAC,CAAC51E,IAAI,UAAUkH,GAAG,SAASoJ,GAAO,MAAO,CAACuiJ,EAAIn9E,GAAG,qBAAqBm9E,EAAI39E,GAAG5kE,EAAMilM,IAAI8zB,SAAW/4N,EAAMilM,IAAI+zB,OAAS,KAAK,yBAAyBz2E,EAAIn9E,GAAG,KAAKe,EAAG,kBAAkB,CAACrlE,MAAM,CAAC,KAAO,QAAQ,MAAQyhJ,EAAI57I,KAAKu2N,eAAe,OAAO,wBAAwB,IAAIh3J,YAAYq8E,EAAIj9E,GAAG,CAAC,CAAC51E,IAAI,UAAUkH,GAAG,SAASoJ,GAAO,MAAO,CAACuiJ,EAAIn9E,GAAG,qBAAqBm9E,EAAI39E,GAAG5kE,EAAMilM,IAAI+zB,OAAO,yBAAyBz2E,EAAIn9E,GAAG,KAAKe,EAAG,kBAAkB,CAACrlE,MAAM,CAAC,KAAO,UAAU,MAAQyhJ,EAAI57I,KAAKw2N,WAAW,wBAAwB,IAAIj3J,YAAYq8E,EAAIj9E,GAAG,CAAC,CAAC51E,IAAI,UAAUkH,GAAG,SAASoJ,GAAO,MAAO,CAACuiJ,EAAIn9E,GAAG,qBAAqBm9E,EAAI39E,GAAG5kE,EAAMilM,IAAIo2B,SAAWr7N,EAAMilM,IAAIs2B,OAAS,KAAK,yBAAyBh5E,EAAIn9E,GAAG,KAAKe,EAAG,kBAAkB,CAACrlE,MAAM,CAAC,KAAO,QAAQ,MAAQyhJ,EAAI57I,KAAKy2N,aAAa,wBAAwB,IAAIl3J,YAAYq8E,EAAIj9E,GAAG,CAAC,CAAC51E,IAAI,UAAUkH,GAAG,SAASoJ,GAAO,MAAO,CAACuiJ,EAAIn9E,GAAG,qBAAqBm9E,EAAI39E,GAAG5kE,EAAMilM,IAAIs2B,OAAO,yBAAyBh5E,EAAIn9E,GAAG,KAAKe,EAAG,kBAAkB,CAACrlE,MAAM,CAAC,KAAO,aAAa,MAAQyhJ,EAAI57I,KAAK02N,aAAa,wBAAwB,IAAIn3J,YAAYq8E,EAAIj9E,GAAG,CAAC,CAAC51E,IAAI,UAAUkH,GAAG,SAASoJ,GAAO,MAAO,CAACuiJ,EAAIn9E,GAAG,qBAAqBm9E,EAAI39E,GAAG29E,EAAIt9E,GAAG,aAAPs9E,CAAqBviJ,EAAMilM,IAAIw2B,WAAW5mO,WAAWwF,MAAM,KAAK,KAAK,yBAAyBkoJ,EAAIn9E,GAAG,KAAKe,EAAG,kBAAkB,CAACrlE,MAAM,CAAC,KAAO,KAAK,MAAQyhJ,EAAI57I,KAAKi2N,WAAW,MAAQ,SAAS12J,YAAYq8E,EAAIj9E,GAAG,CAAC,CAAC51E,IAAI,UAAUkH,GAAG,SAASoJ,GAAO,MAAO,CAAgB,IAAdA,EAAMilM,IAAIvlM,GAAQymE,EAAG,MAAM,CAAEo8E,EAAa,UAAEp8E,EAAG,YAAY,CAACyP,YAAY,aAAagG,YAAY,CAAC,MAAQ,OAAO96E,MAAM,CAAC,KAAO,OAAO,KAAO,QAAQwY,GAAG,CAAC,MAAQ,SAASkqD,GAAQ,OAAO++E,EAAI65E,aAAap8N,EAAMilM,IAAK,oBAAoB,CAAC1iD,EAAIn9E,GAAGm9E,EAAI39E,GAAG29E,EAAI57I,KAAKo2N,WAAWx6E,EAAIl9E,MAAM,GAAGk9E,EAAIl9E,KAAKk9E,EAAIn9E,GAAG,KAAoB,IAAdplE,EAAMilM,IAAIvlM,IAAW6iJ,EAAIg3E,UAAsCh3E,EAAIl9E,KAA/Bc,EAAG,MAAM,CAACo8E,EAAIn9E,GAAG,kBAA2B,GAAGm9E,EAAIn9E,GAAG,KAAKe,EAAG,MAAM,CAACyP,YAAY,UAAU,CAACzP,EAAG,YAAY,CAACrlE,MAAM,CAAC,eAAeyhJ,EAAIm3E,aAAa51B,WAAW,aAAa,CAACvhD,EAAIm3E,aAAa31B,WAAW,OAAS,0CAA0C,MAAQxhD,EAAIm3E,aAAahuG,QAAQpyG,GAAG,CAAC,iBAAiBipI,EAAIy5E,6BAA6B,IAAI,GAAGz5E,EAAIn9E,GAAG,KAAKe,EAAG,MAAM,CAACyP,YAAY,gCAAgC,CAACzP,EAAG,MAAM,CAACyP,YAAY,uBAAuB,CAAC2sE,EAAIn9E,GAAGm9E,EAAI39E,GAAG29E,EAAI57I,KAAKyuT,yBAAyB7yK,EAAIn9E,GAAG,KAAKe,EAAG,MAAM,CAACzK,WAAW,CAAC,CAAChtE,KAAK,UAAUoqF,QAAQ,YAAY1pF,MAAOmzJ,EAAiB,cAAEv0E,WAAW,mBAAmB,CAAC7H,EAAG,MAAM,CAACyP,YAAY,uBAAuB,CAACzP,EAAG,MAAM,CAACyP,YAAY,WAAW,CAAC2sE,EAAIn9E,GAAGm9E,EAAI39E,GAAG29E,EAAI57I,KAAKwvN,kBAAkB5zE,EAAIn9E,GAAG,KAAKe,EAAG,MAAM,CAACyP,YAAY,WAAW,CAAC2sE,EAAIn9E,GAAGm9E,EAAI39E,GAAG29E,EAAI57I,KAAK0uT,kCAAkC9yK,EAAIn9E,GAAG,KAAKe,EAAG,MAAM,CAACyP,YAAY,WAAW,CAAC2sE,EAAIn9E,GAAGm9E,EAAI39E,GAAG29E,EAAI57I,KAAK2uT,uCAAuC/yK,EAAIn9E,GAAG,KAAKe,EAAG,MAAM,CAACyP,YAAY,WAAW,CAAC2sE,EAAIn9E,GAAGm9E,EAAI39E,GAAG29E,EAAI57I,KAAKi2N,iBAAiBr6E,EAAIn9E,GAAG,KAAMm9E,EAAkB,eAAEp8E,EAAG,MAAM,CAACyP,YAAY,qBAAqB,CAACzP,EAAG,MAAM,CAACyP,YAAY,WAAW,CAAC2sE,EAAIn9E,GAAGm9E,EAAI39E,GAAG29E,EAAI+xK,eAAe5lU,MAAQ,QAAQ6zJ,EAAIn9E,GAAG,KAAKe,EAAG,MAAM,CAACyP,YAAY,WAAW,CAACzP,EAAG,OAAO,CAACyP,YAAY,YAAYt8D,GAAG,CAAC,MAAQ,SAASkqD,GAAQ,OAAO++E,EAAI2yK,aAAa3yK,EAAI+xK,mBAAmB,CAAC/xK,EAAIn9E,GAAG,2BAA2Bm9E,EAAI39E,GAAG29E,EAAI+xK,eAAeI,sBAAsB,MAAMnyK,EAAI39E,GAAG29E,EAAI+xK,eAAeC,UAAU,4BAA4BhyK,EAAIn9E,GAAG,KAAKe,EAAG,MAAM,CAACyP,YAAY,WAAW,CAA4B,KAA1B2sE,EAAI+xK,eAAe50T,GAAWymE,EAAG,MAAM,CAACA,EAAG,MAAM,CAACyP,YAAY,cAAc90E,MAAM,CAAC,IAAM,qCAAqC,IAAM,IAAIwY,GAAG,CAAC,MAAQ,SAASkqD,GAAQ,OAAO++E,EAAI4yK,iBAAiB5yK,EAAI+xK,sBAAsB/xK,EAAIl9E,KAAKk9E,EAAIn9E,GAAG,KAAgC,KAA1Bm9E,EAAI+xK,eAAe50T,GAAWymE,EAAG,MAAM,CAACo8E,EAAIn9E,GAAG,SAASm9E,EAAIl9E,OAAOk9E,EAAIn9E,GAAG,KAAKe,EAAG,MAAM,CAACyP,YAAY,WAAW,CAA4B,KAA1B2sE,EAAI+xK,eAAe50T,GAAWymE,EAAG,MAAM,CAAEo8E,EAAa,UAAEp8E,EAAG,YAAY,CAACyP,YAAY,aAAa90E,MAAM,CAAC,KAAO,OAAO,KAAO,SAASwY,GAAG,CAAC,MAAQ,SAASkqD,GAAQ,OAAO++E,EAAIyyK,aAAazyK,EAAI+xK,eAAgB,WAAW,CAAC/xK,EAAIn9E,GAAG,2BAA2Bm9E,EAAI39E,GAAG29E,EAAI57I,KAAKy2L,MAAM,0BAA0B76C,EAAIl9E,KAAKk9E,EAAIn9E,GAAG,KAAMm9E,EAAa,UAAEp8E,EAAG,YAAY,CAACyP,YAAY,aAAa90E,MAAM,CAAC,KAAO,OAAO,KAAO,QAAQwY,GAAG,CAAC,MAAQ,SAASkqD,GAAQ,OAAO++E,EAAIyyK,aAAazyK,EAAI+xK,eAAgB,aAAa,CAAC/xK,EAAIn9E,GAAG,2BAA2Bm9E,EAAI39E,GAAG29E,EAAI57I,KAAKo2N,QAAQ,0BAA0Bx6E,EAAIl9E,MAAM,GAAGk9E,EAAIl9E,KAAKk9E,EAAIn9E,GAAG,KAAgC,KAA1Bm9E,EAAI+xK,eAAe50T,KAAe6iJ,EAAI+2E,YAAc/2E,EAAIg3E,UAAYpzJ,EAAG,MAAM,CAACo8E,EAAIn9E,GAAG,UAAUm9E,EAAIl9E,SAASk9E,EAAIl9E,KAAKk9E,EAAIn9E,GAAG,KAAOm9E,EAAI+xK,eAA2qB/xK,EAAIl9E,KAA/pBc,EAAG,MAAM,CAACyP,YAAY,kBAAkB,CAACzP,EAAG,MAAM,CAACyP,YAAY,eAAe,CAAC2sE,EAAIn9E,GAAG,uBAAuBm9E,EAAI39E,GAAG29E,EAAI57I,KAAK4uT,6BAA6B,sBAAsBhzK,EAAIn9E,GAAG,KAAKe,EAAG,MAAM,CAACyP,YAAY,WAAW,CAAE2sE,EAAU,OAAEp8E,EAAG,YAAY,CAACyP,YAAY,aAAa90E,MAAM,CAAC,KAAO,OAAO,KAAO,SAASwY,GAAG,CAAC,MAAQ,SAASkqD,GAAQ,OAAO++E,EAAIyyK,aAAazyK,EAAI+xK,eAAgB,UAAU,CAAC/xK,EAAIn9E,GAAG,2BAA2Bm9E,EAAI39E,GAAG29E,EAAI57I,KAAK6uT,KAAK,0BAA0BjzK,EAAIl9E,KAAKk9E,EAAIn9E,GAAG,KAAOm9E,EAAIskB,OAAmJtkB,EAAIl9E,KAA/Ic,EAAG,YAAY,CAACyP,YAAY,aAAa90E,MAAM,CAAC,KAAO,OAAO,KAAO,UAAU,CAACyhJ,EAAIn9E,GAAG,qDAA8D,SAAkBm9E,EAAIn9E,GAAG,KAAKe,EAAG,oBAAoB,CAACrlE,MAAM,CAAC,UAAYyhJ,EAAIq3E,gBAAgB,mBAAqBr3E,EAAIgzE,mBAAmB,mBAAqBhzE,EAAIw3E,eAAe,UAAYx3E,EAAIsuD,MAAM,YAActuD,EAAI22E,YAAY5/M,GAAG,CAAC,eAAiBipI,EAAI85E,gBAAgB95E,EAAIn9E,GAAG,KAAKe,EAAG,oBAAoB,CAACrlE,MAAM,CAAC,UAAYyhJ,EAAIs3E,gBAAgB,mBAAqBt3E,EAAIgzE,mBAAmB,mBAAqBhzE,EAAIw3E,eAAe,UAAYx3E,EAAIsuD,MAAM,UAAYtuD,EAAIqjD,UAAU,YAAcrjD,EAAI22E,YAAY5/M,GAAG,CAAC,eAAiBipI,EAAI85E,gBAAgB95E,EAAIn9E,GAAG,KAAKe,EAAG,oBAAoB,CAACrlE,MAAM,CAAC,UAAYyhJ,EAAIu3E,gBAAgB,gBAAkBv3E,EAAI61E,gBAAgB,mBAAqB71E,EAAIgzE,mBAAmB,mBAAqBhzE,EAAIw3E,gBAAgBzgN,GAAG,CAAC,eAAiBipI,EAAI+5E,kBAAkB/5E,EAAIn9E,GAAG,KAAKe,EAAG,mBAAmB,CAACrlE,MAAM,CAAC,UAAYyhJ,EAAI0xK,eAAe,UAAY1xK,EAAIsuD,MAAM,WAAatuD,EAAI+xK,kBAAkB/xK,EAAIn9E,GAAG,KAAKe,EAAG,qBAAqB,CAACrlE,MAAM,CAAC,UAAYyhJ,EAAI2xK,aAAa,WAAa3xK,EAAI+xK,mBAAmB,KACj4V,IDWpB,EACA,KACA,WACA,M,SEfwI,GCI3H,CACb5lU,KAAM,iBACNmuB,MAAO,CACLkvL,UAAU,CAAEt5M,KAAMuL,OAAQ++L,UAAU,GACpC6I,UAAU,CAACnzM,KAAMoqE,QAASkgI,UAAU,GACpCk8B,eAAgB,CAAExmO,KAAM5D,OAAQkuM,UAAU,GAC1Cm8B,WAAY,CAAEzmO,KAAMuL,OAAQ++L,UAAU,IAExC1sH,WAAY,CAAE8oJ,qBAAmBC,qBAAmBC,sBACpD5lN,KAAM,WACJ,MAAO,CACL9M,KAAKyyL,OAAOC,IAAIC,SAASC,MACzBsX,MAAO3/M,KAAK66M,UACZutB,UAAWA,UACXC,UAAWA,UACX3zB,UAAW10M,KAAK00M,UAChBszB,WAAYhoO,KAAKgoO,WACjBu8F,oBAAoB,EACpBC,uBAAuB,EACvBC,eAAgB,GAChBC,kBAAmB,GACnBC,kBAAmB,GACnBC,yBAA0B,GAC1BC,eAAgB,CACdjyH,WAAY,EACZC,UAAW,EACXr4E,OAAQ,GAEVsqM,sBAAuB,CACrBlyH,WAAY,EACZC,UAAW,EACXr4E,OAAQ,GAEVyoM,UAAW,EACXv6F,iBAAiB,EACjBC,iBAAiB,EACjBC,iBAAiB,EACjBvE,mBxUiIgC,IwUhIhCwE,eAAgB,GAChB3B,iBAAiB,IAGrBriK,MAAO,CACLg2I,UAAU,WACR76M,KAAK2/M,MAAQ3/M,KAAK66M,YAGtBzpL,SAAU,CAER2zS,uBAAwB,WACtB,IAAIxnU,EAAIyf,EAAEkqC,UAAUlnD,KAAKykU,gBACpBlnU,IAAGA,EAAI,IACZ,IAAIglB,EAAO,GAWX,OAVAhlB,EAAE4tC,SAAQ,SAAUhnC,GAChBoe,EAAK/f,KAAK,CACNkhC,OAAQv/B,EAAKu/B,OACblmC,KAAM2G,EAAKilO,QACXxjC,GAAIzhM,EAAKklO,MACT9nO,KAAM4C,EAAKmlO,QACXG,WAAYtlO,EAAKulO,UACjBl7N,GAAIrK,EAAKqK,QAGV+T,GAGTyiT,0BAA2B,WACzB,IAAIznU,EAAIyf,EAAEkqC,UAAUlnD,KAAK2kU,mBACpBpnU,IAAGA,EAAI,IACZ,IAAIglB,EAAO,GAaX,OAZAhlB,EAAE4tC,SAAQ,SAAUhnC,GAChBoe,EAAK/f,KAAK,CACNgM,GAAGrK,EAAKqK,GACRzI,IAAK5B,EAAK6lO,MACVnC,QAAS1jO,EAAK8lO,YACdnC,MAAO3jO,EAAK+lO,UACZC,QAAShmO,EAAKimO,YACdC,MAAOlmO,EAAKmmO,UACZC,WAAYpmO,EAAKqmO,YACjBl9L,KAAMnpC,EAAKmpC,UAGZ/qB,GAGT0iT,0BAA2B,WACzB,IAAI1nU,EAAIyf,EAAEkqC,UAAUlnD,KAAK0kU,mBACpBnnU,IAAGA,EAAI,IACZ,IAAIglB,EAAO,GAiBX,OAhBAhlB,EAAE4tC,SAAQ,SAAUhnC,GACI,MAAjBA,EAAK+gU,aAAiB/gU,EAAK+gU,WAAW,UACrB,MAAjB/gU,EAAK+gU,aAAiB/gU,EAAK+gU,WAAWllU,KAAKyV,KAAK4wB,MACnD9jB,EAAK/f,KAAK,CACNkhC,OAAQv/B,EAAKu/B,OACblmC,KAAM2G,EAAKilO,QACXxjC,GAAIzhM,EAAKklO,MACT9nO,KAAM4C,EAAKmlO,QACX67F,kBAAmBhhU,EAAKkmM,SACxB7wE,UAAWr1H,EAAKq1H,UAChB0rM,WAAY/gU,EAAK+gU,WACjBE,eAAgBjhU,EAAKkhU,iBACrB57F,WAAYtlO,EAAKulO,UACjBl7N,GAAIrK,EAAKqK,QAGV+T,GAGT+iT,iCAAkC,WAChC,IAAI/nU,EAAIyf,EAAEkqC,UAAUlnD,KAAK4kU,0BACpBrnU,IAAGA,EAAI,IACZ,IAAIglB,EAAO,GAaX,OAZAhlB,EAAE4tC,SAAQ,SAAUhnC,GAChBoe,EAAK/f,KAAK,CACNgM,GAAGrK,EAAKqK,GACRzI,IAAK5B,EAAK6lO,MACVnC,QAAS1jO,EAAK8lO,YACdnC,MAAO3jO,EAAK+lO,UACZC,QAAShmO,EAAKimO,YACdC,MAAOlmO,EAAKmmO,UACZC,WAAYpmO,EAAKqmO,YACjBl9L,KAAMnpC,EAAKmpC,UAGZ/qB,IAGX5J,QAAS,CACPuwN,WAAY,SAAU9sN,GAClB,OAAKA,GAAU,KAALA,EAGCA,EAFA,KAKfksL,WAAW,SAASlsL,GAChB,OAAKA,GAAU,KAALA,EAGC29L,MAAM39L,GAAG49L,OAAOC,kBAAkB,QAFlC,MAMjBxuK,QAAS,CAEP85R,kBAAmB,WACjBvlU,KAAK0qO,uBACLlyJ,QAAQkuI,cACH1mN,KAAKukU,qBACRvkU,KAAKukU,oBAAqB,EAC1BvkU,KAAKwlU,sBACLxlU,KAAKylU,sBAITC,qBAAsB,WACpB1lU,KAAK0qO,uBACLlyJ,QAAQkuI,cACJ1mN,KAAKukU,qBACLvkU,KAAKukU,oBAAqB,EAC1BvkU,KAAKwlU,sBACLxlU,KAAK2lU,yBAIXC,qBAAsB,WACpB5lU,KAAK0qO,uBACLlyJ,QAAQkuI,cACH1mN,KAAKwkU,wBACNxkU,KAAKwkU,uBAAwB,EAC7BxkU,KAAK6lU,6BACL7lU,KAAK8lU,yBAIXC,4BAA6B,WAC3B/lU,KAAK0qO,uBACLlyJ,QAAQkuI,cACJ1mN,KAAKwkU,wBACLxkU,KAAKwkU,uBAAwB,EAC7BxkU,KAAK6lU,6BACL7lU,KAAKgmU,gCAIXR,oBAAqB,WACnBxlU,KAAK6kU,eAAehyH,UAAY,EAChC7yM,KAAK6kU,eAAejyH,WAAa,GAGnCizH,2BAA4B,WAC1B7lU,KAAK8kU,sBAAsBjyH,UAAY,EACvC7yM,KAAK8kU,sBAAsBlyH,WAAa,GAG1CqzH,2BAA4B,SAAUvlI,GACpC1gM,KAAK0qO,uBACL1qO,KAAK6kU,eAAejyH,WAAalS,EACjCloH,QAAQkuI,cACJ1mN,KAAKukU,mBACLvkU,KAAKylU,oBAELzlU,KAAK2lU,wBAIXO,sCAAuC,SAAUxlI,GAC/C1gM,KAAK0qO,uBACL1qO,KAAK8kU,sBAAsBlyH,WAAalS,EACxCloH,QAAQkuI,cACJ1mN,KAAKwkU,sBACLxkU,KAAK8lU,uBAEL9lU,KAAKgmU,+BAIXP,kBAAmB,WACjBzlU,KAAKijU,UAAYjjU,KAAKijU,UAAY,EAClChjI,OAAOwC,KAAK,4CACV,CAAEkd,MAAO3/M,KAAK2/M,MACZ/M,WAAY5yM,KAAK6kU,eAAejyH,WAChCC,UAAW7yM,KAAK6kU,eAAehyH,UAC/B40B,exUzD4B,MwU0D3BrjM,QAAQ,SAAUy9B,GACjB7hE,KAAKykU,eAAiB5iQ,EAAIt/C,KAAKnX,KAC/BpL,KAAK6kU,eAAerqM,OAAS34D,EAAIt/C,KAAKi4G,QACxC/7H,KAAKuB,OAAOkyL,IAAI,WACdlyL,KAAK2jU,uBACPllU,KAAKuB,QAGX2lU,qBAAsB,WACpB3lU,KAAKijU,UAAYjjU,KAAKijU,UAAY,EAClChjI,OAAOwC,KAAK,0DACZ,CAAEkd,MAAO3/M,KAAK2/M,MACZ/M,WAAY5yM,KAAK6kU,eAAejyH,WAChCC,UAAW7yM,KAAK6kU,eAAehyH,UAC/B40B,exUxE8B,MwUyE7BrjM,QAAQ,SAAUy9B,GACnB7hE,KAAK2kU,kBAAoB9iQ,EAAIt/C,KAAKnX,KAClCpL,KAAK6kU,eAAerqM,OAAS34D,EAAIt/C,KAAKi4G,QACtC/7H,KAAKuB,OAAOkyL,IAAI,WAChBlyL,KAAK2jU,uBACLllU,KAAKuB,QAGT8lU,qBAAsB,WACpB9lU,KAAKijU,UAAYjjU,KAAKijU,UAAY,EAClChjI,OAAOwC,KAAK,4CAA6C,CACvDkd,MAAO3/M,KAAK2/M,MACZ/M,WAAY5yM,KAAK8kU,sBAAsBlyH,WACvCC,UAAW7yM,KAAK8kU,sBAAsBjyH,UACtC40B,exUrFwB,MwUsFvBrjM,QAAQ,SAAUy9B,GACjB7hE,KAAK0kU,kBAAoB7iQ,EAAIt/C,KAAKnX,MACpC3M,KAAKuB,OAAOkyL,IAAI,WACdlyL,KAAK2jU,uBACPllU,KAAKuB,QAGTgmU,4BAA6B,WAC1BhmU,KAAKijU,UAAYjjU,KAAKijU,UAAY,EACjChjI,OAAOwC,KAAK,0DACZ,CAAEkd,MAAO3/M,KAAK2/M,MACZ/M,WAAY5yM,KAAK8kU,sBAAsBlyH,WACvCC,UAAW7yM,KAAK8kU,sBAAsBjyH,UACtC40B,exUnGsB,MwUoGrBrjM,QAAQ,SAAUy9B,GACnB7hE,KAAK4kU,yBAA2B/iQ,EAAIt/C,KAAKnX,KACzCpL,KAAK8kU,sBAAsBtqM,OAAS34D,EAAIt/C,KAAKi4G,QAC7C/7H,KAAKuB,OAAOkyL,IAAI,WAChBlyL,KAAK2jU,uBACLllU,KAAKuB,QAGXkrO,aAAc,SAASn3B,EAAKxyM,EAAMikO,GAAY,WAC5CxlO,KAAKirO,iBACLrrN,YAAW,WAGT,OAFA,EAAKykN,mBAAqBmB,EAC1B,EAAKqD,eAAiB90B,EACdxyM,GACN,IAAK,SACH,EAAKmnO,iBAAkB,EACvB,MAEF,IAAK,SACH,EAAKC,iBAAkB,EACvB,MAEF,IAAK,aACH,EAAKzB,iBAAkB,EACvB,EAAK0B,iBAAkB,EACvB,MAEF,IAAK,gBACH,EAAK1B,iBAAkB,EACvB,EAAK0B,iBAAkB,KAMxB,KAGPuC,aAAc,SAASluN,GACrBjd,KAAKirO,iBACFhuN,IxU9I6B,MwU+I3Bjd,KAAKqkO,mBACNrkO,KAAKylU,oBAELzlU,KAAK8lU,yBAKX16F,eAAgB,SAASnuN,GACvBjd,KAAKirO,iBACFhuN,IACEjd,KAAKukU,mBACNvkU,KAAKylU,oBAELzlU,KAAK2lU,uBAEJ3lU,KAAKwkU,sBACNxkU,KAAK8lU,uBAEL9lU,KAAKgmU,gCAKX/6F,eAAe,WACbjrO,KAAK0oO,iBAAkB,EACvB1oO,KAAK2oO,iBAAkB,EACvB3oO,KAAK4oO,iBAAkB,EACvB5oO,KAAKknO,iBAAkB,EACvBlnO,KAAKijU,UAAY,GAGnBv4F,qBAtMO,WAuML1qO,KAAK0oO,iBAAkB,EACvB1oO,KAAK2oO,iBAAkB,EACvB3oO,KAAK4oO,iBAAkB,GAGzB+6F,oBAAqB,WACnB3jU,KAAKijU,UAAYjjU,KAAKijU,UAAY,EACZ,IAAnBjjU,KAAKijU,WACLzqP,QAAQsuI,cAIbq/G,YAAa,WACX3tP,QAAQkuI,cACR1mN,KAAKylU,oBACLzlU,KAAK8lU,yBAGThjP,QAAS,WACP9iF,KAAKmmU,eAEPnjP,QAAS,cC5VI,I,OAXC,YACd,ICTW,WAAa,IAAIquE,EAAIrxJ,KAASyyG,EAAG4+C,EAAIhgF,eAAmB4D,EAAGo8E,EAAI9wE,MAAMtL,IAAIw9B,EAAG,OAAOx9B,EAAG,MAAM,CAACA,EAAG,MAAM,CAACyP,YAAY,6BAA6B,CAACzP,EAAG,SAAS,CAACyP,YAAY,gBAAgBjK,MAAM,CAAC,gBAAgB42E,EAAIkzK,oBAAoBn8S,GAAG,CAAC,MAAQipI,EAAIk0K,oBAAoB,CAACl0K,EAAIn9E,GAAGm9E,EAAI39E,GAAG29E,EAAI57I,KAAK6tN,eAAejyE,EAAIn9E,GAAG,KAAKe,EAAG,SAAS,CAACyP,YAAY,gBAAgBjK,MAAM,CAAC,eAAe42E,EAAIkzK,oBAAoBn8S,GAAG,CAAC,MAAQipI,EAAIq0K,uBAAuB,CAACr0K,EAAIn9E,GAAGm9E,EAAI39E,GAAG29E,EAAI57I,KAAK41N,oBAAoBh6E,EAAIn9E,GAAG,KAAKe,EAAG,MAAM,CAACyP,YAAY,gCAAgC,CAACzP,EAAG,WAAW,CAACzK,WAAW,CAAC,CAAChtE,KAAK,OAAOoqF,QAAQ,SAAS1pF,MAAOmzJ,EAAsB,mBAAEv0E,WAAW,uBAAuB4N,YAAY,CAAC,MAAQ,QAAQ96E,MAAM,CAAC,oBAAoB,CAAC6jB,OAAO,OAAOu7H,WAAW,UAAUn4C,MAAM,QAAQ,OAAS,GAAG,KAAOw6C,EAAI0zK,yBAAyB,CAAC9vP,EAAG,kBAAkB,CAACrlE,MAAM,CAAC,KAAO,SAAS,MAAQyhJ,EAAI02E,eAAeq+F,QAAQ,GAAG,MAAQ/0K,EAAI57I,KAAK0xM,SAASnyI,YAAYq8E,EAAIj9E,GAAG,CAAC,CAAC51E,IAAI,UAAUkH,GAAG,SAASoJ,GAAO,MAAO,CAACmmE,EAAG,MAAM,CAAC3wD,MAAM,CAAEuyF,MAA0B,MAAnB/nG,EAAMilM,IAAIrwK,OAAgB,UAAW,YAAa,CAAC2tH,EAAIn9E,GAAG,qBAAqBm9E,EAAI39E,GAAqB,MAAlB5kE,EAAMilM,IAAIrwK,OAAa2tH,EAAI57I,KAAKozL,QAAQx3C,EAAI57I,KAAKqmN,QAAQ,6BAA6BzqE,EAAIn9E,GAAG,KAAKe,EAAG,kBAAkB,CAACrlE,MAAM,CAAC,KAAO,OAAO,MAAQyhJ,EAAI57I,KAAKwvN,cAAc,MAAQ5zE,EAAI02E,eAAeq+F,QAAQ,GAAG,wBAAwB,IAAIpxP,YAAYq8E,EAAIj9E,GAAG,CAAC,CAAC51E,IAAI,UAAUkH,GAAG,SAASoJ,GAAO,MAAO,CAACuiJ,EAAIn9E,GAAG,mBAAmBm9E,EAAI39E,GAAG5kE,EAAMilM,IAAIv2M,MAAQsR,EAAMilM,IAAInO,IAAM,KAAK,uBAAuBv0C,EAAIn9E,GAAG,KAAKe,EAAG,kBAAkB,CAACrlE,MAAM,CAAC,KAAO,KAAK,MAAQ,KAAK,MAAQyhJ,EAAI02E,eAAeq+F,QAAQ,GAAG,wBAAwB,IAAIpxP,YAAYq8E,EAAIj9E,GAAG,CAAC,CAAC51E,IAAI,UAAUkH,GAAG,SAASoJ,GAAO,MAAO,CAACuiJ,EAAIn9E,GAAG,mBAAmBm9E,EAAI39E,GAAG29E,EAAIt9E,GAAG,aAAPs9E,CAAqBviJ,EAAMilM,IAAInO,KAAK,uBAAuBv0C,EAAIn9E,GAAG,KAAKe,EAAG,kBAAkB,CAACrlE,MAAM,CAAC,KAAO,OAAO,MAAQyhJ,EAAI57I,KAAKw0L,iBAAiB,MAAQ54C,EAAI02E,eAAeq+F,QAAQ,GAAG,wBAAwB,IAAIpxP,YAAYq8E,EAAIj9E,GAAG,CAAC,CAAC51E,IAAI,UAAUkH,GAAG,SAASoJ,GAAO,MAAO,CAACuiJ,EAAIn9E,GAAG,mBAAmBm9E,EAAI39E,GAAG29E,EAAIt9E,GAAG,aAAPs9E,CAAqBviJ,EAAMilM,IAAIxyM,OAAO,uBAAuB8vJ,EAAIn9E,GAAG,KAAKe,EAAG,kBAAkB,CAACrlE,MAAM,CAAC,KAAO,aAAa,MAAQyhJ,EAAI57I,KAAKg2N,eAAe,MAAQp6E,EAAI02E,eAAeq+F,QAAQ,GAAG,wBAAwB,IAAIpxP,YAAYq8E,EAAIj9E,GAAG,CAAC,CAAC51E,IAAI,UAAUkH,GAAG,SAASoJ,GAAO,MAAO,CAACuiJ,EAAIn9E,GAAG,mBAAmBm9E,EAAI39E,GAAG29E,EAAIt9E,GAAG,aAAPs9E,CAAqBviJ,EAAMilM,IAAI01B,aAAa,uBAAuBp4E,EAAIn9E,GAAG,KAAKe,EAAG,kBAAkB,CAACrlE,MAAM,CAAC,KAAO,KAAK,MAAQyhJ,EAAI57I,KAAKi2N,WAAW,MAAQr6E,EAAI02E,eAAeq+F,QAAQ,IAAIpxP,YAAYq8E,EAAIj9E,GAAG,CAAC,CAAC51E,IAAI,UAAUkH,GAAG,SAASoJ,GAAO,MAAO,CAAgB,IAAdA,EAAMilM,IAAIvlM,GAAQymE,EAAG,MAAM,CAAEo8E,EAAa,UAAEp8E,EAAG,YAAY,CAACyP,YAAY,aAAa90E,MAAM,CAAC,KAAO,OAAO,KAAO,QAAQwY,GAAG,CAAC,MAAQ,SAASkqD,GAAQ,OAAO++E,EAAI65E,aAAap8N,EAAMilM,IAAK,SAAU,QAAQ,CAAC1iD,EAAIn9E,GAAG,2BAA2Bm9E,EAAI39E,GAAG29E,EAAI57I,KAAKk2N,WAAWt6E,EAAIl9E,KAAKk9E,EAAIn9E,GAAG,KAAMm9E,EAAa,UAAEp8E,EAAG,YAAY,CAACyP,YAAY,aAAagG,YAAY,CAAC,MAAQ,WAAW96E,MAAM,CAAC,KAAO,OAAO,KAAO,QAAQwY,GAAG,CAAC,MAAQ,SAASkqD,GAAQ,OAAO++E,EAAI65E,aAAap8N,EAAMilM,IAAK,SAAU,QAAQ,CAAC1iD,EAAIn9E,GAAG,2BAA2Bm9E,EAAI39E,GAAG29E,EAAI57I,KAAKm2N,YAAYv6E,EAAIl9E,KAAKk9E,EAAIn9E,GAAG,KAAMm9E,EAAa,UAAEp8E,EAAG,YAAY,CAACyP,YAAY,aAAagG,YAAY,CAAC,MAAQ,OAAO96E,MAAM,CAAC,KAAO,OAAO,KAAO,QAAQwY,GAAG,CAAC,MAAQ,SAASkqD,GAAQ,OAAO++E,EAAI65E,aAAap8N,EAAMilM,IAAK,aAAc,QAAQ,CAAC1iD,EAAIn9E,GAAG,2BAA2Bm9E,EAAI39E,GAAG29E,EAAI57I,KAAKo2N,WAAWx6E,EAAIl9E,MAAM,GAAGk9E,EAAIl9E,KAAKk9E,EAAIn9E,GAAG,KAAoB,IAAdplE,EAAMilM,IAAIvlM,KAAY6iJ,EAAI+2E,YAAc/2E,EAAIg3E,UAAYpzJ,EAAG,MAAM,CAACo8E,EAAIn9E,GAAG,UAAUm9E,EAAIl9E,aAAa,GAAGk9E,EAAIn9E,GAAG,KAAKe,EAAG,WAAW,CAACzK,WAAW,CAAC,CAAChtE,KAAK,OAAOoqF,QAAQ,SAAS1pF,OAAQmzJ,EAAIkzK,mBAAoBznP,WAAW,wBAAwBltE,MAAM,CAAC,oBAAoB,CAAC6jB,OAAO,OAAOu7H,WAAW,UAAUn4C,MAAM,QAAQ,OAAS,GAAG,KAAOw6C,EAAI2zK,4BAA4B,CAAC/vP,EAAG,kBAAkB,CAACrlE,MAAM,CAAC,KAAO,MAAM,MAAQyhJ,EAAI57I,KAAKq2N,uBAAuB,wBAAwB,GAAG,MAAQ,QAAQ92J,YAAYq8E,EAAIj9E,GAAG,CAAC,CAAC51E,IAAI,UAAUkH,GAAG,SAASoJ,GAAO,MAAO,CAACuiJ,EAAIn9E,GAAG,mBAAmBm9E,EAAI39E,GAAG5kE,EAAMilM,IAAIhuM,KAAK,uBAAuBsrJ,EAAIn9E,GAAG,KAAKe,EAAG,kBAAkB,CAACrlE,MAAM,CAAC,KAAO,UAAU,MAAQyhJ,EAAI57I,KAAKs2N,eAAe,wBAAwB,IAAI/2J,YAAYq8E,EAAIj9E,GAAG,CAAC,CAAC51E,IAAI,UAAUkH,GAAG,SAASoJ,GAAO,MAAO,CAACuiJ,EAAIn9E,GAAG,mBAAmBm9E,EAAI39E,GAAG5kE,EAAMilM,IAAI8zB,SAAW/4N,EAAMilM,IAAI+zB,OAAS,KAAK,uBAAuBz2E,EAAIn9E,GAAG,KAAKe,EAAG,kBAAkB,CAACrlE,MAAM,CAAC,KAAO,QAAQ,MAAQyhJ,EAAI57I,KAAKu2N,eAAe,OAAO,wBAAwB,IAAIh3J,YAAYq8E,EAAIj9E,GAAG,CAAC,CAAC51E,IAAI,UAAUkH,GAAG,SAASoJ,GAAO,MAAO,CAACuiJ,EAAIn9E,GAAG,mBAAmBm9E,EAAI39E,GAAG5kE,EAAMilM,IAAI+zB,OAAO,uBAAuBz2E,EAAIn9E,GAAG,KAAKe,EAAG,kBAAkB,CAACrlE,MAAM,CAAC,KAAO,UAAU,MAAQyhJ,EAAI57I,KAAKw2N,WAAW,wBAAwB,IAAIj3J,YAAYq8E,EAAIj9E,GAAG,CAAC,CAAC51E,IAAI,UAAUkH,GAAG,SAASoJ,GAAO,MAAO,CAACuiJ,EAAIn9E,GAAG,mBAAmBm9E,EAAI39E,GAAG5kE,EAAMilM,IAAIo2B,SAAWr7N,EAAMilM,IAAIs2B,OAAS,KAAK,uBAAuBh5E,EAAIn9E,GAAG,KAAKe,EAAG,kBAAkB,CAACrlE,MAAM,CAAC,KAAO,QAAQ,MAAQyhJ,EAAI57I,KAAKy2N,aAAa,wBAAwB,IAAIl3J,YAAYq8E,EAAIj9E,GAAG,CAAC,CAAC51E,IAAI,UAAUkH,GAAG,SAASoJ,GAAO,MAAO,CAACuiJ,EAAIn9E,GAAG,mBAAmBm9E,EAAI39E,GAAG5kE,EAAMilM,IAAIs2B,OAAO,uBAAuBh5E,EAAIn9E,GAAG,KAAKe,EAAG,kBAAkB,CAACrlE,MAAM,CAAC,KAAO,aAAa,MAAQyhJ,EAAI57I,KAAK02N,aAAa,wBAAwB,IAAIn3J,YAAYq8E,EAAIj9E,GAAG,CAAC,CAAC51E,IAAI,UAAUkH,GAAG,SAASoJ,GAAO,MAAO,CAACuiJ,EAAIn9E,GAAG,mBAAmBm9E,EAAI39E,GAAG29E,EAAIt9E,GAAG,aAAPs9E,CAAqBviJ,EAAMilM,IAAIw2B,WAAW5mO,WAAWwF,MAAM,KAAK,KAAK,uBAAuBkoJ,EAAIn9E,GAAG,KAAKe,EAAG,kBAAkB,CAACrlE,MAAM,CAAC,KAAO,OAAO,MAAQyhJ,EAAI57I,KAAKuxN,aAAa,wBAAwB,GAAG,MAAQ,WAAW31E,EAAIn9E,GAAG,KAAKe,EAAG,kBAAkB,CAACrlE,MAAM,CAAC,KAAO,KAAK,MAAQyhJ,EAAI57I,KAAKi2N,WAAW,MAAQ,SAAS12J,YAAYq8E,EAAIj9E,GAAG,CAAC,CAAC51E,IAAI,UAAUkH,GAAG,SAASoJ,GAAO,MAAO,CAAgB,IAAdA,EAAMilM,IAAIvlM,GAAQymE,EAAG,MAAM,CAAEo8E,EAAa,UAAEp8E,EAAG,YAAY,CAACyP,YAAY,aAAagG,YAAY,CAAC,MAAQ,OAAO96E,MAAM,CAAC,KAAO,OAAO,KAAO,QAAQwY,GAAG,CAAC,MAAQ,SAASkqD,GAAQ,OAAO++E,EAAI65E,aAAap8N,EAAMilM,IAAK,gBAAiB,QAAQ,CAAC1iD,EAAIn9E,GAAGm9E,EAAI39E,GAAG29E,EAAI57I,KAAKo2N,WAAWx6E,EAAIl9E,MAAM,GAAGk9E,EAAIl9E,KAAKk9E,EAAIn9E,GAAG,KAAoB,IAAdplE,EAAMilM,IAAIvlM,IAAW6iJ,EAAIg3E,UAAsCh3E,EAAIl9E,KAA/Bc,EAAG,MAAM,CAACo8E,EAAIn9E,GAAG,kBAA2B,GAAGm9E,EAAIn9E,GAAG,KAAKe,EAAG,MAAM,CAACyP,YAAY,UAAU,CAACzP,EAAG,YAAY,CAACrlE,MAAM,CAAC,eAAeyhJ,EAAIwzK,eAAejyH,WAAW,aAAa,CAACvhD,EAAIwzK,eAAehyH,WAAW,OAAS,0CAA0C,MAAQxhD,EAAIwzK,eAAerqM,QAAQpyG,GAAG,CAAC,iBAAiBipI,EAAI40K,+BAA+B,IAAI,GAAG50K,EAAIn9E,GAAG,KAA+C,IAAzCm9E,EAAI4zK,0BAA0BtjU,OAAcszE,EAAG,MAAM,CAACA,EAAG,MAAM,CAACyP,YAAY,4BAA4BgG,YAAY,CAAC,aAAa,SAAS,CAACzV,EAAG,SAAS,CAACyP,YAAY,gBAAgBjK,MAAM,CAAC,gBAAgB42E,EAAImzK,uBAAuBp8S,GAAG,CAAC,MAAQipI,EAAIu0K,uBAAuB,CAACv0K,EAAIn9E,GAAG,eAAem9E,EAAI39E,GAAG29E,EAAI57I,KAAK4wT,SAASh1K,EAAIn9E,GAAG,KAAKe,EAAG,SAAS,CAACyP,YAAY,gBAAgBjK,MAAM,CAAC,eAAe42E,EAAImzK,uBAAuBp8S,GAAG,CAAC,MAAQipI,EAAI00K,8BAA8B,CAAC10K,EAAIn9E,GAAG,eAAem9E,EAAI39E,GAAG29E,EAAI57I,KAAK41N,oBAAoBh6E,EAAIn9E,GAAG,KAAKe,EAAG,MAAM,CAACyP,YAAY,gCAAgC,CAACzP,EAAG,WAAW,CAACzK,WAAW,CAAC,CAAChtE,KAAK,OAAOoqF,QAAQ,SAAS1pF,MAAOmzJ,EAAyB,sBAAEv0E,WAAW,0BAA0B4N,YAAY,CAAC,MAAQ,QAAQ96E,MAAM,CAAC,oBAAoB,CAAC6jB,OAAO,OAAOu7H,WAAW,UAAUn4C,MAAM,QAAQ,OAAS,GAAG,KAAOw6C,EAAI4zK,4BAA4B,CAAChwP,EAAG,kBAAkB,CAACrlE,MAAM,CAAC,KAAO,SAAS,MAAQyhJ,EAAI02E,eAAeu+F,UAAU,GAAG,MAAQj1K,EAAI57I,KAAK0xM,SAASnyI,YAAYq8E,EAAIj9E,GAAG,CAAC,CAAC51E,IAAI,UAAUkH,GAAG,SAASoJ,GAAO,MAAO,CAACmmE,EAAG,MAAM,CAAC3wD,MAAM,CAAEuyF,MAA0B,MAAnB/nG,EAAMilM,IAAIrwK,OAAgB,UAAW,YAAa,CAAC2tH,EAAIn9E,GAAG,qBAAqBm9E,EAAI39E,GAAqB,MAAlB5kE,EAAMilM,IAAIrwK,OAAa2tH,EAAI57I,KAAKozL,QAAQx3C,EAAI57I,KAAKqmN,QAAQ,0BAA0B,MAAK,EAAM,cAAczqE,EAAIn9E,GAAG,KAAKe,EAAG,kBAAkB,CAACrlE,MAAM,CAAC,KAAO,OAAO,MAAQyhJ,EAAI57I,KAAKwvN,cAAc,MAAQ5zE,EAAI02E,eAAeu+F,UAAU,GAAG,wBAAwB,IAAItxP,YAAYq8E,EAAIj9E,GAAG,CAAC,CAAC51E,IAAI,UAAUkH,GAAG,SAASoJ,GAAO,MAAO,CAACuiJ,EAAIn9E,GAAG,qBAAqBm9E,EAAI39E,GAAG5kE,EAAMilM,IAAIv2M,MAAQsR,EAAMilM,IAAInO,IAAM,KAAK,sBAAsB,MAAK,EAAM,cAAcv0C,EAAIn9E,GAAG,KAAKe,EAAG,kBAAkB,CAACrlE,MAAM,CAAC,KAAO,KAAK,MAAQ,KAAK,MAAQyhJ,EAAI02E,eAAeu+F,UAAU,GAAG,wBAAwB,IAAItxP,YAAYq8E,EAAIj9E,GAAG,CAAC,CAAC51E,IAAI,UAAUkH,GAAG,SAASoJ,GAAO,MAAO,CAACuiJ,EAAIn9E,GAAG,qBAAqBm9E,EAAI39E,GAAG29E,EAAIt9E,GAAG,aAAPs9E,CAAqBviJ,EAAMilM,IAAInO,KAAK,sBAAsB,MAAK,EAAM,aAAav0C,EAAIn9E,GAAG,KAAKe,EAAG,kBAAkB,CAACrlE,MAAM,CAAC,KAAO,OAAO,MAAQyhJ,EAAI57I,KAAKw0L,iBAAiB,MAAQ54C,EAAI02E,eAAeu+F,UAAU,GAAG,wBAAwB,IAAItxP,YAAYq8E,EAAIj9E,GAAG,CAAC,CAAC51E,IAAI,UAAUkH,GAAG,SAASoJ,GAAO,MAAO,CAACuiJ,EAAIn9E,GAAG,qBAAqBm9E,EAAI39E,GAAG29E,EAAIt9E,GAAG,aAAPs9E,CAAqBviJ,EAAMilM,IAAIxyM,OAAO,sBAAsB,MAAK,EAAM,aAAa8vJ,EAAIn9E,GAAG,KAAKe,EAAG,kBAAkB,CAACrlE,MAAM,CAAC,KAAO,oBAAoB,MAAQyhJ,EAAI57I,KAAK40L,SAAS,MAAQh5C,EAAI02E,eAAeu+F,UAAU,GAAG,wBAAwB,IAAItxP,YAAYq8E,EAAIj9E,GAAG,CAAC,CAAC51E,IAAI,UAAUkH,GAAG,SAASoJ,GAAO,MAAO,CAACuiJ,EAAIn9E,GAAG,qBAAqBm9E,EAAI39E,GAAG29E,EAAIt9E,GAAG,aAAPs9E,CAAqBviJ,EAAMilM,IAAIoxH,oBAAoB,sBAAsB,MAAK,EAAM,cAAc9zK,EAAIn9E,GAAG,KAAKe,EAAG,kBAAkB,CAACrlE,MAAM,CAAC,KAAO,aAAa,MAAQyhJ,EAAI57I,KAAKg2N,eAAe,MAAQp6E,EAAI02E,eAAeu+F,UAAU,GAAG,wBAAwB,IAAItxP,YAAYq8E,EAAIj9E,GAAG,CAAC,CAAC51E,IAAI,UAAUkH,GAAG,SAASoJ,GAAO,MAAO,CAACuiJ,EAAIn9E,GAAG,qBAAqBm9E,EAAI39E,GAAG29E,EAAIt9E,GAAG,aAAPs9E,CAAqBviJ,EAAMilM,IAAI01B,aAAa,sBAAsB,MAAK,EAAM,cAAcp4E,EAAIn9E,GAAG,KAAKe,EAAG,kBAAkB,CAACrlE,MAAM,CAAC,KAAO,KAAK,MAAQyhJ,EAAI57I,KAAKi2N,WAAW,MAAQr6E,EAAI02E,eAAeu+F,UAAU,IAAItxP,YAAYq8E,EAAIj9E,GAAG,CAAC,CAAC51E,IAAI,UAAUkH,GAAG,SAASoJ,GAAO,MAAO,CAAgB,IAAdA,EAAMilM,IAAIvlM,GAAQymE,EAAG,MAAM,CAAEo8E,EAAa,UAAEp8E,EAAG,YAAY,CAACyP,YAAY,aAAa90E,MAAM,CAAC,KAAO,OAAO,KAAO,QAAQwY,GAAG,CAAC,MAAQ,SAASkqD,GAAQ,OAAO++E,EAAI65E,aAAap8N,EAAMilM,IAAK,SAAU,QAAQ,CAAC1iD,EAAIn9E,GAAGm9E,EAAI39E,GAAG29E,EAAI57I,KAAKk2N,WAAWt6E,EAAIl9E,KAAKk9E,EAAIn9E,GAAG,KAAMm9E,EAAa,UAAEp8E,EAAG,YAAY,CAACyP,YAAY,aAAagG,YAAY,CAAC,MAAQ,WAAW96E,MAAM,CAAC,KAAO,OAAO,KAAO,QAAQwY,GAAG,CAAC,MAAQ,SAASkqD,GAAQ,OAAO++E,EAAI65E,aAAap8N,EAAMilM,IAAK,SAAU,QAAQ,CAAC1iD,EAAIn9E,GAAGm9E,EAAI39E,GAAG29E,EAAI57I,KAAKm2N,YAAYv6E,EAAIl9E,KAAKk9E,EAAIn9E,GAAG,KAAMm9E,EAAa,UAAEp8E,EAAG,YAAY,CAACyP,YAAY,aAAagG,YAAY,CAAC,MAAQ,OAAO96E,MAAM,CAAC,KAAO,OAAO,KAAO,QAAQwY,GAAG,CAAC,MAAQ,SAASkqD,GAAQ,OAAO++E,EAAI65E,aAAap8N,EAAMilM,IAAK,aAAc,QAAQ,CAAC1iD,EAAIn9E,GAAGm9E,EAAI39E,GAAG29E,EAAI57I,KAAKo2N,WAAWx6E,EAAIl9E,MAAM,GAAGk9E,EAAIl9E,KAAKk9E,EAAIn9E,GAAG,KAAoB,IAAdplE,EAAMilM,IAAIvlM,KAAY6iJ,EAAI+2E,YAAc/2E,EAAIg3E,UAAYpzJ,EAAG,MAAM,CAACo8E,EAAIn9E,GAAG,UAAUm9E,EAAIl9E,SAAS,MAAK,EAAM,eAAe,GAAGk9E,EAAIn9E,GAAG,KAAKe,EAAG,WAAW,CAACzK,WAAW,CAAC,CAAChtE,KAAK,OAAOoqF,QAAQ,SAAS1pF,OAAQmzJ,EAAImzK,sBAAuB1nP,WAAW,2BAA2BltE,MAAM,CAAC,oBAAoB,CAAC6jB,OAAO,OAAOu7H,WAAW,UAAUn4C,MAAM,QAAQ,OAAS,GAAG,KAAOw6C,EAAIi0K,mCAAmC,CAACrwP,EAAG,kBAAkB,CAACrlE,MAAM,CAAC,KAAO,MAAM,MAAQyhJ,EAAI57I,KAAKq2N,uBAAuB,MAAQ,SAAS92J,YAAYq8E,EAAIj9E,GAAG,CAAC,CAAC51E,IAAI,UAAUkH,GAAG,SAASoJ,GAAO,MAAO,CAACuiJ,EAAIn9E,GAAG,qBAAqBm9E,EAAI39E,GAAG5kE,EAAMilM,IAAIhuM,KAAK,sBAAsB,MAAK,EAAM,cAAcsrJ,EAAIn9E,GAAG,KAAKe,EAAG,kBAAkB,CAACrlE,MAAM,CAAC,KAAO,UAAU,MAAQyhJ,EAAI57I,KAAKs2N,eAAe,wBAAwB,IAAI/2J,YAAYq8E,EAAIj9E,GAAG,CAAC,CAAC51E,IAAI,UAAUkH,GAAG,SAASoJ,GAAO,MAAO,CAACuiJ,EAAIn9E,GAAG,qBAAqBm9E,EAAI39E,GAAG5kE,EAAMilM,IAAI8zB,SAAW/4N,EAAMilM,IAAI+zB,OAAS,KAAK,sBAAsB,MAAK,EAAM,cAAcz2E,EAAIn9E,GAAG,KAAKe,EAAG,kBAAkB,CAACrlE,MAAM,CAAC,KAAO,QAAQ,MAAQyhJ,EAAI57I,KAAKu2N,eAAe,OAAO,wBAAwB,IAAIh3J,YAAYq8E,EAAIj9E,GAAG,CAAC,CAAC51E,IAAI,UAAUkH,GAAG,SAASoJ,GAAO,MAAO,CAACuiJ,EAAIn9E,GAAG,qBAAqBm9E,EAAI39E,GAAG5kE,EAAMilM,IAAI+zB,OAAO,sBAAsB,MAAK,EAAM,cAAcz2E,EAAIn9E,GAAG,KAAKe,EAAG,kBAAkB,CAACrlE,MAAM,CAAC,KAAO,UAAU,MAAQyhJ,EAAI57I,KAAKw2N,WAAW,wBAAwB,IAAIj3J,YAAYq8E,EAAIj9E,GAAG,CAAC,CAAC51E,IAAI,UAAUkH,GAAG,SAASoJ,GAAO,MAAO,CAACuiJ,EAAIn9E,GAAG,qBAAqBm9E,EAAI39E,GAAG5kE,EAAMilM,IAAIo2B,SAAWr7N,EAAMilM,IAAIs2B,OAAS,KAAK,sBAAsB,MAAK,EAAM,aAAah5E,EAAIn9E,GAAG,KAAKe,EAAG,kBAAkB,CAACrlE,MAAM,CAAC,KAAO,QAAQ,MAAQyhJ,EAAI57I,KAAKy2N,aAAa,wBAAwB,IAAIl3J,YAAYq8E,EAAIj9E,GAAG,CAAC,CAAC51E,IAAI,UAAUkH,GAAG,SAASoJ,GAAO,MAAO,CAACuiJ,EAAIn9E,GAAG,qBAAqBm9E,EAAI39E,GAAG5kE,EAAMilM,IAAIs2B,OAAO,sBAAsB,MAAK,EAAM,cAAch5E,EAAIn9E,GAAG,KAAKe,EAAG,kBAAkB,CAACrlE,MAAM,CAAC,KAAO,aAAa,MAAQyhJ,EAAI57I,KAAK02N,aAAa,wBAAwB,IAAIn3J,YAAYq8E,EAAIj9E,GAAG,CAAC,CAAC51E,IAAI,UAAUkH,GAAG,SAASoJ,GAAO,MAAO,CAACuiJ,EAAIn9E,GAAG,qBAAqBm9E,EAAI39E,GAAG29E,EAAIt9E,GAAG,aAAPs9E,CAAqBviJ,EAAMilM,IAAIw2B,WAAW5mO,WAAWwF,MAAM,KAAK,KAAK,sBAAsB,MAAK,EAAM,cAAckoJ,EAAIn9E,GAAG,KAAKe,EAAG,kBAAkB,CAACrlE,MAAM,CAAC,KAAO,OAAO,MAAQyhJ,EAAI57I,KAAKuxN,aAAa,wBAAwB,MAAM31E,EAAIn9E,GAAG,KAAKe,EAAG,kBAAkB,CAACrlE,MAAM,CAAC,KAAO,KAAK,MAAQyhJ,EAAI57I,KAAKi2N,WAAW,MAAQr6E,EAAI02E,eAAeq+F,QAAQ,IAAIpxP,YAAYq8E,EAAIj9E,GAAG,CAAC,CAAC51E,IAAI,UAAUkH,GAAG,SAASoJ,GAAO,MAAO,CAAgB,IAAdA,EAAMilM,IAAIvlM,GAAQymE,EAAG,MAAM,CAAEo8E,EAAa,UAAEp8E,EAAG,YAAY,CAACyP,YAAY,aAAagG,YAAY,CAAC,MAAQ,OAAO96E,MAAM,CAAC,KAAO,OAAO,KAAO,QAAQwY,GAAG,CAAC,MAAQ,SAASkqD,GAAQ,OAAO++E,EAAI65E,aAAap8N,EAAMilM,IAAK,gBAAiB,QAAQ,CAAC1iD,EAAIn9E,GAAGm9E,EAAI39E,GAAG29E,EAAI57I,KAAKo2N,WAAWx6E,EAAIl9E,MAAM,GAAGk9E,EAAIl9E,KAAKk9E,EAAIn9E,GAAG,KAAoB,IAAdplE,EAAMilM,IAAIvlM,IAAW6iJ,EAAIg3E,UAAsCh3E,EAAIl9E,KAA/Bc,EAAG,MAAM,CAACo8E,EAAIn9E,GAAG,cAAuB,MAAK,EAAM,eAAe,GAAGm9E,EAAIn9E,GAAG,KAAKe,EAAG,MAAM,CAACyP,YAAY,UAAU,CAACzP,EAAG,YAAY,CAACrlE,MAAM,CAAC,eAAeyhJ,EAAIyzK,sBAAsBlyH,WAAW,aAAa,CAACvhD,EAAIyzK,sBAAsBjyH,WAAW,OAAS,0CAA0C,MAAQxhD,EAAIyzK,sBAAsBtqM,QAAQpyG,GAAG,CAAC,iBAAiBipI,EAAI60K,0CAA0C,IAAI,KAAK70K,EAAIl9E,KAAKk9E,EAAIn9E,GAAG,KAAKe,EAAG,oBAAoB,CAACrlE,MAAM,CAAC,UAAYyhJ,EAAIq3E,gBAAgB,mBAAqBr3E,EAAIgzE,mBAAmB,mBAAqBhzE,EAAIw3E,eAAe,UAAYx3E,EAAIsuD,MAAM,YAActuD,EAAI22E,YAAY5/M,GAAG,CAAC,eAAiBipI,EAAI85E,gBAAgB95E,EAAIn9E,GAAG,KAAKe,EAAG,oBAAoB,CAACrlE,MAAM,CAAC,UAAYyhJ,EAAIs3E,gBAAgB,mBAAqBt3E,EAAIgzE,mBAAmB,mBAAqBhzE,EAAIw3E,eAAe,UAAYx3E,EAAIsuD,MAAM,UAAYtuD,EAAIqjD,UAAU,YAAcrjD,EAAI22E,YAAY5/M,GAAG,CAAC,eAAiBipI,EAAI85E,gBAAgB95E,EAAIn9E,GAAG,KAAKe,EAAG,oBAAoB,CAACrlE,MAAM,CAAC,UAAYyhJ,EAAIu3E,gBAAgB,gBAAkBv3E,EAAI61E,gBAAgB,mBAAqB71E,EAAIgzE,mBAAmB,mBAAqBhzE,EAAIw3E,gBAAgBzgN,GAAG,CAAC,eAAiBipI,EAAI+5E,mBAAmB,KACzlc,IDWpB,EACA,KACA,WACA,M,kIEwBF,ICvCgO,GDuChO,CACE,KAAF,qBACE,MAAF,CACIlE,gBAAiB,CAArB,yBACI7C,mBAAoB,CAAE9iO,KAAMuL,OAAQ++L,UAAU,GAC9Cy4B,mBAAoB,CAAE/iO,KAAM5D,OAAQkuM,UAAU,GAC9C04B,UAAW,CAAf,2BAEE,QAAF,CACI4C,iBAAkB,SAAtB,GAGQ,IAAR,EAFM,OAAN,GAGA,U3U8HmC,I2U7HnC,4CADA,K3UgI0C,I2U9H1C,uCAFA,GAGA,cALA,MASE,MAAF,CACI,UAAJ,YACM,KAAN,2BAGE/1M,SAAU,CACRm1S,kBADJ,WAEM,IAAN,uCAYM,MAXN,CACQ/oU,KAAMD,EAAEipU,mBAAqBjpU,EAAEkpU,YAC/B7gI,GAAIroM,EAAEmpU,iBAAmBnpU,EAAEopU,UAC3B7+F,MAAOvqO,EAAEuqO,OAAS,GAClBD,QAAStqO,EAAEsqO,SAAWtqO,EAAEuqO,MACxB6+F,UAAWppU,EAAEopU,WAAa,GAC1BC,UAAWrpU,EAAEopU,WAAa,GAC1BE,SAAUtpU,EAAEmpU,iBAAmB,GAC/BI,UAAWvpU,EAAEiR,IAAM,GACnBu4T,SAAUxpU,EAAEiR,IAAM,MAKxB,KAAF,iBACI,MAAJ,CACMiH,KAAMyyL,OAAOC,IAAIC,SAASC,MAC1B++B,uBAAwBpnO,KAAKukO,UAC7ByiG,oB3U6F6B,I2U7FnC,2B3U+F0C,I2U9FpCC,kBAAN,U3U4FmC,I2U3FnC,CACQ,OAAR,2BACQ,UAAR,sCACQ,SAAR,cACQ,YAAR,gBALA,K3U8F0C,I2UvF1C,CACQ,OAAR,iCACQ,UAAR,4CACQ,SAAR,yBACQ,YAAR,eAXA,KAgBE,QAAF,CAEI5/F,mBAFJ,WAEA,WACMrnO,KAAKonO,wBAAyB,EAC9BxnN,YAAW,WACT,EAAR,mBACQ,EAAR,6BACA,MAGI2nN,mBAVJ,WAUA,WACM/uJ,QAAQkuI,cACR,IAAN,iDACA,4CACA,gDACA,KACMwgH,EAAY/7R,SAAQ,SAA1B,kCACM80J,OAAOwC,KAAK0kI,EAAlB,uBACQ,GAAR,iCACQ,KAAR,0BACQ,KAAR,mBACQ,KAAR,4BACA,6BACQ,GAAR,GACQ,KAAR,sBACA,uCE5Ge,I,OAXC,YACd,ICTW,WAAa,IAAI91K,EAAIrxJ,KAASyyG,EAAG4+C,EAAIhgF,eAAmB4D,EAAGo8E,EAAI9wE,MAAMtL,IAAIw9B,EAAG,OAAOx9B,EAAG,aAAa,CAACrlE,MAAM,CAAC,KAAOyhJ,EAAI+1E,uBAAuB,MAAQ,KAAK,CAACnyJ,EAAG,KAAK,CAACrlE,MAAM,CAAC,KAAO,UAAUmgE,KAAK,UAAU,CAACshF,EAAIn9E,GAAGm9E,EAAI39E,GAAG29E,EAAI57I,KAAKqxH,SAASuqB,EAAIn9E,GAAG,KAAKe,EAAG,MAAM,CAACA,EAAG,KAAK,CAACyP,YAAY,uBAAuB,CAAC2sE,EAAIn9E,GAAGm9E,EAAI39E,GAAG29E,EAAI57I,KAAKiyN,0BAA0Br2E,EAAIn9E,GAAG,KAAKe,EAAG,IAAI,CAACyP,YAAY,yBAAyB,CAAC2sE,EAAIn9E,GAAGm9E,EAAI39E,GAAG29E,EAAI57I,KAAKkyN,4BAA4Bt2E,EAAIn9E,GAAG,KAAKe,EAAG,MAAM,CAACyP,YAAY,uBAAuBgG,YAAY,CAAC,QAAU,YAAY,gBAAgB,oBAAoB,aAAa,mBAAmB,CAACzV,EAAG,MAAM,CAACyP,YAAY,oBAAoB,CAACzP,EAAG,MAAM,CAACyP,YAAY,4BAA4B,CAACzP,EAAG,QAAQ,CAACyV,YAAY,CAAC,MAAQ,QAAQ,QAAU,eAAe,aAAa,UAAU,CAAC2mE,EAAIn9E,GAAGm9E,EAAI39E,GAAG29E,EAAI57I,KAAKmyN,YAAY,OAAOv2E,EAAIn9E,GAAG,KAAKe,EAAG,OAAO,CAACo8E,EAAIn9E,GAAGm9E,EAAI39E,GAAG29E,EAAIt9E,GAAG,mBAAPs9E,CAA2BA,EAAIgzE,0BAA0BhzE,EAAIn9E,GAAG,KAAMm9E,EAAmB,gBAAEp8E,EAAG,MAAM,CAACA,EAAG,MAAM,CAACyP,YAAY,2BAA2B90E,MAAM,CAAC,MAAQyhJ,EAAIk1K,kBAAkB1+F,SAASx2E,EAAIk1K,kBAAkBz+F,QAAQ,CAAC7yJ,EAAG,QAAQ,CAACyV,YAAY,CAAC,MAAQ,QAAQ,QAAU,eAAe,aAAa,UAAU,CAAC2mE,EAAIn9E,GAAGm9E,EAAI39E,GAAG29E,EAAI57I,KAAKwvN,eAAe,OAAO5zE,EAAIn9E,GAAG,KAAKe,EAAG,OAAO,CAACo8E,EAAIn9E,GAAGm9E,EAAI39E,GAAG29E,EAAIk1K,kBAAkB1+F,SAAWx2E,EAAIk1K,kBAAkBz+F,cAAcz2E,EAAIl9E,KAAKk9E,EAAIn9E,GAAG,KAAOm9E,EAAI61E,gBAA8X71E,EAAIl9E,KAAjXc,EAAG,MAAM,CAACA,EAAG,MAAM,CAACyP,YAAY,2BAA2B90E,MAAM,CAAC,MAAQyhJ,EAAIk1K,kBAAkB/oU,MAAM6zJ,EAAIk1K,kBAAkB3gI,KAAK,CAAC3wH,EAAG,QAAQ,CAACyV,YAAY,CAAC,MAAQ,QAAQ,QAAU,eAAe,aAAa,UAAU,CAAC2mE,EAAIn9E,GAAGm9E,EAAI39E,GAAG29E,EAAI57I,KAAKwvN,eAAe,OAAO5zE,EAAIn9E,GAAG,KAAKe,EAAG,OAAO,CAACo8E,EAAIn9E,GAAGm9E,EAAI39E,GAAG29E,EAAIk1K,kBAAkB/oU,MAAQ6zJ,EAAIk1K,kBAAkB3gI,WAAoBv0C,EAAIn9E,GAAG,KAAKe,EAAG,MAAM,CAACyP,YAAY,4BAA4B,CAACzP,EAAG,QAAQ,CAACyV,YAAY,CAAC,MAAQ,QAAQ,QAAU,eAAe,aAAa,UAAU,CAAC2mE,EAAIn9E,GAAGm9E,EAAI39E,GAAG29E,EAAI57I,KAAKs2M,YAAY,OAAO16D,EAAIn9E,GAAG,KAAKe,EAAG,OAAO,CAACo8E,EAAIn9E,GAAGm9E,EAAI39E,GAAG29E,EAAI61E,gBAAkB71E,EAAIk1K,kBAAkBz+F,MAAQz2E,EAAIk1K,kBAAkB3gI,aAAav0C,EAAIn9E,GAAG,KAAKe,EAAG,0BAA0B,CAACrlE,MAAM,CAAC,KAAO,UAAUmgE,KAAK,UAAU,CAACkF,EAAG,gBAAgB,CAAC7sD,GAAG,CAAC,MAAQipI,EAAIg2E,qBAAqB,CAACh2E,EAAIn9E,GAAGm9E,EAAI39E,GAAG29E,EAAI57I,KAAKq3F,WAAWukD,EAAIn9E,GAAG,KAAKe,EAAG,gBAAgB,CAAC7sD,GAAG,CAAC,MAAQipI,EAAIk2E,qBAAqB,CAACl2E,EAAIn9E,GAAGm9E,EAAI39E,GAAG29E,EAAI57I,KAAKyvN,cAAc,IAAI,KAC9zE,IDWpB,EACA,KACA,WACA,M,kIEeF,IC9BgO,GD8BhO,CACE1nO,KAAM,qBACNmuB,MAAO,CACL04M,mBAAoB,CAAE9iO,KAAMuL,OAAQ++L,UAAxC,GACIy4B,mBAAoB,CAAE/iO,KAAM5D,OAAQkuM,UAAU,GAC9CgP,UAAJ,0BACI0pB,UAAW,CAAf,0BACIC,YAAa,CAAjB,0BAEE3/J,MAAO,CACL0/J,UADJ,SACA,GAIM,OAHN,IACQvkO,KAAKskO,mBAAqBtnN,EAAEkqC,UAAUlnD,KAAKskO,qBAEtCz/N,IAGXusB,SAAU,CACRm1S,kBADJ,WAEM,IAAN,uCAOM,MANN,CACQ/oU,KAAMD,EAAEipU,mBAAqBjpU,EAAEkpU,YAC/B7gI,GAAIroM,EAAEmpU,iBAAmBnpU,EAAEopU,UAC3BS,UAAW7pU,EAAE6pU,WAAa,IAC1BC,UAAW9pU,EAAEopU,WAAa,MAKhCpkT,KAAF,iBACI,MAAO,CACL,KAAN,0BACM,MAAN,eACM,UAAN,eACM,YAAN,iBACM,YAAN,CACQ/kB,KAAM,CAAC,CAAEquM,UAAU,EAAOprL,QAAShL,KAAKivN,mBAAoBx7M,QAAS,SACrE08K,GAAI,CAAC,CAAEiG,UAAU,EAAMprL,QAAShL,KAAKkvN,WAAYz7M,QAAS,SAC1Dk+S,UAAW,CACnB,qEACA,gCAGM,oB/UyG6B,I+UzGnC,2B/U2G0C,I+U1GpC,eAAN,U/UwGmC,I+UvGnC,gCADA,K/U0G0C,I+UxG1C,kCAFA,KAME37R,QAAS,CAEP67R,kBAFJ,WAEA,WACMtnU,KAAKukO,WAAY,EACjB3kN,YAAW,WACT,EAAR,2BACQ,EAAR,yCACA,MAGIilN,mBAAoB,WAClB,IAAN,E/UuFmC,M+UvFnC,wBACA,4DACM7kO,KAAKwgF,MAAMskJ,mBAAmB74B,SAAS,SAAUgf,GAC/C,GAAIA,EAAO,CACTzyI,QAAQkuI,cACR,IAAV,GACY,UAAZ,8BACY,YAAZ,uCACY,UAAZ,qCACY,UAAZ,sCACY,GAAZ,8BACY,KAAZ,wCAEUzmB,OAAOwC,KAAKkxB,EAAQp0L,GAAO6E,QAAQ,SAAUy9B,GAAvD,WACY,GAAZ,iCACY,KAAZ,aACY,YAAZ,WACc,EAAd,2BACc,EAAd,yCACA,MACA,8BACY,GAAZ,MACA,gBACY,QAAZ,kBAGA,eElGe,I,OAXC,YACd,ICTW,WAAa,IAAIwvF,EAAIrxJ,KAASyyG,EAAG4+C,EAAIhgF,eAAmB4D,EAAGo8E,EAAI9wE,MAAMtL,IAAIw9B,EAAG,OAAOx9B,EAAG,aAAa,CAACrlE,MAAM,CAAC,KAAOyhJ,EAAIkzE,UAAU,MAAQ,IAAI,MAAQ,KAAK,CAACtvJ,EAAG,KAAK,CAACrlE,MAAM,CAAC,KAAO,UAAUmgE,KAAK,UAAU,CAACshF,EAAIn9E,GAAGm9E,EAAI39E,GAAG29E,EAAI0zE,cAAc1zE,EAAIgzE,wBAAwBhzE,EAAIn9E,GAAG,KAAKe,EAAG,MAAM,CAACyP,YAAY,uBAAuBgG,YAAY,CAAC,QAAU,YAAY,gBAAgB,oBAAoB,aAAa,mBAAmB,CAACzV,EAAG,UAAU,CAACphB,IAAI,qBAAqB6wB,YAAY,qBAAqB90E,MAAM,CAAC,MAAQyhJ,EAAIk1K,kBAAkB,MAAQl1K,EAAI2zE,YAAY,cAAc3zE,EAAImzE,cAAc,CAACvvJ,EAAG,eAAe,CAACrlE,MAAM,CAAC,MAAQyhJ,EAAI57I,KAAKwvN,cAAc,KAAO,SAAS,CAAChwJ,EAAG,WAAW,CAACrlE,MAAM,CAAC,UAAY,GAAG,YAAcyhJ,EAAI57I,KAAKivN,oBAAoBprJ,MAAM,CAACp7E,MAAOmzJ,EAAIk1K,kBAAsB,KAAEjgU,SAAS,SAAUu9L,GAAMxyC,EAAIlwE,KAAKkwE,EAAIk1K,kBAAmB,OAAQ1iI,IAAM/mH,WAAW,6BAA6B,GAAGu0E,EAAIn9E,GAAG,KAAKe,EAAG,eAAe,CAACrlE,MAAM,CAAC,MAAQ,KAAK,KAAO,OAAO,CAACqlE,EAAG,WAAW,CAACrlE,MAAM,CAAC,UAAY,GAAG,SAAW,GAAG,YAAcyhJ,EAAI57I,KAAKkvN,YAAYrrJ,MAAM,CAACp7E,MAAOmzJ,EAAIk1K,kBAAoB,GAAEjgU,SAAS,SAAUu9L,GAAMxyC,EAAIlwE,KAAKkwE,EAAIk1K,kBAAmB,KAAM1iI,IAAM/mH,WAAW,2BAA2B,GAAGu0E,EAAIn9E,GAAG,KAAMm9E,EAAIgzE,qBAAuBhzE,EAAI21K,oBAAqB/xP,EAAG,eAAe,CAACrlE,MAAM,CAAC,MAAQyhJ,EAAI57I,KAAK8xT,sBAAsB,KAAO,cAAc,CAACtyP,EAAG,WAAW,CAACrlE,MAAM,CAAC,UAAY,EAAE,YAAcyhJ,EAAI57I,KAAK+xT,4BAA4BluP,MAAM,CAACp7E,MAAOmzJ,EAAIk1K,kBAA2B,UAAEjgU,SAAS,SAAUu9L,GAAMxyC,EAAIlwE,KAAKkwE,EAAIk1K,kBAAmB,YAAa1iI,IAAM/mH,WAAW,kCAAkC,GAAGu0E,EAAIl9E,MAAM,IAAI,GAAGk9E,EAAIn9E,GAAG,KAAKe,EAAG,0BAA0B,CAACrlE,MAAM,CAAC,KAAO,UAAUmgE,KAAK,UAAU,CAACkF,EAAG,gBAAgB,CAAC7sD,GAAG,CAAC,MAAQipI,EAAIi2K,oBAAoB,CAACj2K,EAAIn9E,GAAGm9E,EAAI39E,GAAG29E,EAAI57I,KAAKq3F,WAAWukD,EAAIn9E,GAAG,KAAKe,EAAG,gBAAgB,CAAC7sD,GAAG,CAAC,MAAQipI,EAAIwzE,qBAAqB,CAACxzE,EAAIn9E,GAAGm9E,EAAI39E,GAAG29E,EAAI57I,KAAKyvN,cAAc,IAAI,KACh3D,IDWpB,EACA,KACA,WACA,M,kIEoCF,ICnDgO,GDmDhO,CACE1nO,KAAM,qBACNmuB,MAAO,CACL04M,mBAAoB,CAAE9iO,KAAMuL,OAAQ++L,UAAU,GAC9Cy4B,mBAAoB,CAAE/iO,KAAM5D,OAAQkuM,UAAU,GAC9CgP,UAAJ,0BACI0pB,UAAW,CAAf,0BACIC,YAAa,CAAjB,0BAEE3/J,MAAO,CACL0/J,UAAW,SAAf,GACMvkO,KAAKynU,kBAAoB5iU,EAC/B,IACQ7E,KAAKynU,mBAAoB,EACzBznU,KAAKwgF,MAAMknP,oBAAoBpiG,cAC/BtlO,KAAKulO,mBAIX,SAAF,CACIghG,kBADJ,WAEM,IAAN,uCASM,MARN,CACQ/oU,KAAMD,EAAEipU,mBAAqBjpU,EAAEkpU,YAC/B7gI,GAAIroM,EAAEmpU,iBAAmBnpU,EAAEopU,UAC3BS,UAAW7pU,EAAE6pU,WAAa,IAC1BC,UAAW9pU,EAAEopU,WAAa,IAC1B7+F,MAAOvqO,EAAEmpU,iBAAmB,GAC5B7+F,QAAStqO,EAAEipU,mBAAqB,MAKtCjkT,KAAM,WAAR,MACA,OACM9M,KAAN,0BACMkqM,MAAO3/M,KAAK66M,UACZ2qB,WAAYxlO,KAAKqkO,mBACjBojG,kBAAmBznU,KAAKukO,UACxByiG,oBnVwF6B,ImVxFnC,2BnV0F0C,ImVzFpCW,WAAY,CACVnqU,KAAM,GACNooM,GAAI,GACJt4J,KAAM,IAER03L,YAAa,CACXxnO,KAAM,CAAC,CAAEquM,UAAU,EAAOprL,QAASynL,OAAOC,IAAIC,SAASC,MAAMq8B,mBAAoBx7M,QAAS,SAC1F08K,GAAI,CACZ,0EACA,WnV8EmC,MmV9EnC,8BACU,QAAV,SAEQt4J,KAAM,CACd,+EAGMs6R,WAAN,UnVuEmC,ImVtEnC,6BADA,KnVyE0C,ImVvE1C,mCAFA,KAMEn8R,QAAS,CAEPy6L,0BAFJ,WAEA,WACM,KAAN,qBACM,YAAN,WACQ,EAAR,gBACQ,EAAR,6BACA,MAGIC,mBAAoB,WACxB,oDACA,MACU3tJ,QAAQkuI,cACR,IAAV,GACY,KAAZ,eACY,UAAZ,0BACY,YAAZ,4BACY,MAAZ,mBACY,QAAZ,4BACY,UAAZ,iCACY,MAAZ,6BACY,QAAZ,+BACY,KAAZ,6BAEUzmB,OAAOwC,KAAKziM,KAAK4nU,UAAU5nU,KAAKqkO,oBAAqB9kM,GAAO6E,QAAQ,SAAUy9B,GAAxF,WACY,GAAZ,iCACY,KAAZ,2BACY,YAAZ,WACc,EAAd,kBACA,MACA,8BACY,GAAZ,MACA,gBACY,QAAZ,kBAGA,aAGI0jK,cAxCJ,WAyCMvlO,KAAK2nU,WAAa,CAChB,KAAR,+BAEM3nU,KAAKynU,mBAAoB,EACzBznU,KAAKukO,WAAY,EACjBvkO,KAAKwgF,MAAMknP,oBAAoBpiG,iBE5ItB,I,OAXC,YACd,ICTW,WAAa,IAAIj0E,EAAIrxJ,KAASyyG,EAAG4+C,EAAIhgF,eAAmB4D,EAAGo8E,EAAI9wE,MAAMtL,IAAIw9B,EAAG,OAAOx9B,EAAG,MAAM,CAACA,EAAG,aAAa,CAACrlE,MAAM,CAAC,KAAOyhJ,EAAIo2K,kBAAkB,MAAQ,IAAI,MAAQ,KAAK,CAACxyP,EAAG,KAAK,CAACrlE,MAAM,CAAC,KAAO,UAAUmgE,KAAK,UAAU,CAACshF,EAAIn9E,GAAGm9E,EAAI39E,GAAG29E,EAAI57I,KAAK8wN,UAAUl1E,EAAIn9E,GAAG,KAAKe,EAAG,MAAM,CAACyP,YAAY,uBAAuBgG,YAAY,CAAC,QAAU,YAAY,gBAAgB,oBAAoB,aAAa,mBAAmB,CAACzV,EAAG,MAAM,CAACyP,YAAY,oBAAoB,CAACzP,EAAG,MAAM,CAACyP,YAAY,gBAAgB,CAAC2sE,EAAIn9E,GAAGm9E,EAAI39E,GAAG29E,EAAI57I,KAAKs2N,mBAAmB16E,EAAIn9E,GAAG,KAAKe,EAAG,MAAM,CAACyP,YAAY,qBAAqB,CAACzP,EAAG,OAAO,CAACo8E,EAAIn9E,GAAGm9E,EAAI39E,GAAG29E,EAAI57I,KAAKwvN,eAAe,QAAQ5zE,EAAIn9E,GAAG,KAAKe,EAAG,OAAO,CAACo8E,EAAIn9E,GAAGm9E,EAAI39E,GAAG29E,EAAIk1K,kBAAkB/oU,MAAM6zJ,EAAIk1K,kBAAkB3gI,SAASv0C,EAAIn9E,GAAG,KAAKe,EAAG,MAAM,CAACyP,YAAY,oBAAoBpgE,MAAM,CAAE23H,aAAcoV,EAAIgzE,qBAAuBhzE,EAAI21K,oBAAqB,IAAI,SAAU,CAAC/xP,EAAG,OAAO,CAACo8E,EAAIn9E,GAAG,UAAUm9E,EAAIn9E,GAAG,KAAKe,EAAG,OAAO,CAACo8E,EAAIn9E,GAAGm9E,EAAI39E,GAAG29E,EAAIk1K,kBAAkB3gI,SAASv0C,EAAIn9E,GAAG,KAAMm9E,EAAIgzE,qBAAuBhzE,EAAI21K,oBAAqB/xP,EAAG,MAAM,CAACyP,YAAY,oBAAoBgG,YAAY,CAAC,gBAAgB,SAAS,CAACzV,EAAG,OAAO,CAACo8E,EAAIn9E,GAAGm9E,EAAI39E,GAAG29E,EAAI57I,KAAK8xT,uBAAuB,QAAQl2K,EAAIn9E,GAAG,KAAKe,EAAG,OAAO,CAACo8E,EAAIn9E,GAAGm9E,EAAI39E,GAAG29E,EAAIk1K,kBAAkBa,gBAAgB/1K,EAAIl9E,OAAOk9E,EAAIn9E,GAAG,KAAKe,EAAG,MAAM,CAACyP,YAAY,eAAegG,YAAY,CAAC,OAAS,OAAO,cAAc,SAAS,CAAC2mE,EAAIn9E,GAAGm9E,EAAI39E,GAAG29E,EAAI57I,KAAKw2N,eAAe56E,EAAIn9E,GAAG,KAAKe,EAAG,UAAU,CAACphB,IAAI,sBAAsB6wB,YAAY,sBAAsB90E,MAAM,CAAC,MAAQyhJ,EAAIs2K,WAAW,MAAQt2K,EAAI2zE,YAAY,cAAc3zE,EAAImzE,cAAc,CAACvvJ,EAAG,eAAe,CAACrlE,MAAM,CAAC,MAAQyhJ,EAAI57I,KAAKwvN,cAAc,KAAO,SAAS,CAAChwJ,EAAG,WAAW,CAACrlE,MAAM,CAAC,UAAY,GAAG,YAAcyhJ,EAAI57I,KAAKivN,oBAAoBprJ,MAAM,CAACp7E,MAAOmzJ,EAAIs2K,WAAe,KAAErhU,SAAS,SAAUu9L,GAAMxyC,EAAIlwE,KAAKkwE,EAAIs2K,WAAY,OAAQ9jI,IAAM/mH,WAAW,sBAAsB,GAAGu0E,EAAIn9E,GAAG,KAAKe,EAAG,eAAe,CAACrlE,MAAM,CAAC,MAAQ,KAAK,KAAO,OAAO,CAACqlE,EAAG,WAAW,CAACrlE,MAAM,CAAC,UAAY,GAAG,YAAcyhJ,EAAI57I,KAAKkvN,YAAYrrJ,MAAM,CAACp7E,MAAOmzJ,EAAIs2K,WAAa,GAAErhU,SAAS,SAAUu9L,GAAMxyC,EAAIlwE,KAAKkwE,EAAIs2K,WAAY,KAAM9jI,IAAM/mH,WAAW,oBAAoB,GAAGu0E,EAAIn9E,GAAG,KAAKe,EAAG,eAAe,CAACrlE,MAAM,CAAC,MAAQyhJ,EAAI57I,KAAKuxN,aAAa,KAAO,SAAS,CAAC/xJ,EAAG,WAAW,CAACrlE,MAAM,CAAC,UAAY,GAAG,YAAcyhJ,EAAI57I,KAAKwxN,eAAe3tJ,MAAM,CAACp7E,MAAOmzJ,EAAIs2K,WAAe,KAAErhU,SAAS,SAAUu9L,GAAMxyC,EAAIlwE,KAAKkwE,EAAIs2K,WAAY,OAAQ9jI,IAAM/mH,WAAW,sBAAsB,IAAI,IAAI,GAAGu0E,EAAIn9E,GAAG,KAAKe,EAAG,0BAA0B,CAACrlE,MAAM,CAAC,KAAO,UAAUmgE,KAAK,UAAU,CAACkF,EAAG,gBAAgB,CAAC7sD,GAAG,CAAC,MAAQipI,EAAI60E,4BAA4B,CAAC70E,EAAIn9E,GAAGm9E,EAAI39E,GAAG29E,EAAI57I,KAAKq3F,WAAWukD,EAAIn9E,GAAG,KAAKe,EAAG,gBAAgB,CAAC7sD,GAAG,CAAC,MAAQipI,EAAI80E,qBAAqB,CAAC90E,EAAIn9E,GAAGm9E,EAAI39E,GAAG29E,EAAI57I,KAAKyvN,cAAc,IAAI,IAAI,KACvrF,IDWpB,EACA,KACA,WACA,M,SEf4N,GCuB9N,CACE1nO,KAAM,iBACNmuB,MAAO,CACL44M,UAAW,CAAEhjO,KAAMoqE,QAASkgI,UAAU,GACtCgP,UAAW,CAAEt5M,KAAMuL,OAAQ++L,UAAU,GACrC24B,YAAa,CAAEjjO,KAAMuL,OAAQ++L,UAAU,GACvCg8H,WAAY,CAAEtmU,KAAMuL,OAAQ++L,UAAU,IAExChnI,MAAO,CACL,UAAJ,YAIM,OAHN,GACQ,KAAR,iBAEA,IAGEtiD,KAAF,WACI,MAAO,CACL9M,KAAMyyL,OAAOC,IAAIC,SAASC,MAC1Bm8B,YAAaxkO,KAAKwkO,YAClBQ,YAAa,CACXxnO,KAAM,CAAC,CAAEquM,UAAU,EAAOprL,QAASynL,OAAOC,IAAIC,SAASC,MAAMq8B,mBAAoBx7M,QAAS,SAC1F08K,GAAI,CACZ,sDACQ,CAAR,+BAGMkiI,iBAAkB,CAChBtqU,KAAM,GACNooM,GAAI,MAIVn6J,QAAS,CAEPs8R,oBAFJ,WAGM/nU,KAAKwgF,MAAMwnP,oBAAoB/7H,SAAS,SAAUgf,GAC5CA,IACFzyI,QAAQkuI,cACRzmB,OAAOwC,KAAK,8BACtB,oCACY,KAAZ,kCACY,UAAZ,kBACA,oBACA,YACc,GAAd,8BACc,KAAd,2BACgB,MAAhB,EACgB,KxV6G0B,QwV1G1C,6BACY,GAAZ,IACA,2BACY,QAAZ,cACA,cAEA,aAIIwlI,aA5BJ,WA4BA,WACMjoU,KAAKukO,WAAY,EACjBvkO,KAAKq7E,MAAM,oBAAqB,CAC9Bp+D,MAAM,EACN1b,KxV4FkC,MwV1FpCqe,YAAW,WACT,EAAR,mBACA,KAIIsoT,eAxCJ,WAyCM,KAAN,iCACM,KAAN,aACM,KAAN,2CCjFe,GAXC,YACd,ICRW,WAAa,IAAI72K,EAAIrxJ,KAASyyG,EAAG4+C,EAAIhgF,eAAmB4D,EAAGo8E,EAAI9wE,MAAMtL,IAAIw9B,EAAG,OAAOx9B,EAAG,aAAa,CAACyP,YAAY,oBAAoB90E,MAAM,CAAC,KAAOyhJ,EAAIkzE,UAAU,MAAQ,IAAI,MAAQ,KAAK,CAACtvJ,EAAG,KAAK,CAACrlE,MAAM,CAAC,KAAO,UAAUmgE,KAAK,UAAU,CAACshF,EAAIn9E,GAAGm9E,EAAI39E,GAAG29E,EAAI57I,KAAK0yT,oCAAoC92K,EAAIn9E,GAAG,KAAKe,EAAG,MAAM,CAACyV,YAAY,CAAC,OAAS,cAAc,gBAAgB,oBAAoB,aAAa,mBAAmB,CAACzV,EAAG,UAAU,CAACphB,IAAI,sBAAsBjkD,MAAM,CAAC,MAAQyhJ,EAAIy2K,iBAAiB,MAAQz2K,EAAI2zE,YAAY,cAAc3zE,EAAImzE,cAAc,CAACvvJ,EAAG,eAAe,CAACrlE,MAAM,CAAC,MAAQyhJ,EAAI57I,KAAKwvN,cAAc,KAAO,SAAS,CAAChwJ,EAAG,WAAW,CAACrlE,MAAM,CAAC,UAAY,GAAG,YAAcyhJ,EAAI57I,KAAK2yT,4BAA4B9uP,MAAM,CAACp7E,MAAOmzJ,EAAIy2K,iBAAqB,KAAExhU,SAAS,SAAUu9L,GAAMxyC,EAAIlwE,KAAKkwE,EAAIy2K,iBAAkB,OAAQjkI,IAAM/mH,WAAW,4BAA4B,GAAGu0E,EAAIn9E,GAAG,KAAKe,EAAG,eAAe,CAACrlE,MAAM,CAAC,MAAQyhJ,EAAI57I,KAAK44L,GAAG,KAAO,OAAO,CAACp5H,EAAG,WAAW,CAACrlE,MAAM,CAAC,UAAY,GAAG,YAAcyhJ,EAAI57I,KAAKkvN,YAAYrrJ,MAAM,CAACp7E,MAAOmzJ,EAAIy2K,iBAAmB,GAAExhU,SAAS,SAAUu9L,GAAMxyC,EAAIlwE,KAAKkwE,EAAIy2K,iBAAkB,KAAMjkI,IAAM/mH,WAAW,0BAA0B,IAAI,IAAI,GAAGu0E,EAAIn9E,GAAG,KAAKe,EAAG,0BAA0B,CAACrlE,MAAM,CAAC,KAAO,UAAUmgE,KAAK,UAAU,CAACkF,EAAG,gBAAgB,CAAC7sD,GAAG,CAAC,MAAQipI,EAAI42K,eAAe,CAAC52K,EAAIn9E,GAAGm9E,EAAI39E,GAAG29E,EAAI57I,KAAKq3F,WAAWukD,EAAIn9E,GAAG,KAAKe,EAAG,gBAAgB,CAAC7sD,GAAG,CAAC,MAAQipI,EAAI02K,sBAAsB,CAAC12K,EAAIn9E,GAAGm9E,EAAI39E,GAAG29E,EAAI57I,KAAKyvN,cAAc,IAAI,KACh6C,IDUpB,EACA,KACA,KACA,M,QEd2I,GCK9H,CACb1nO,KAAM,iBACNmuB,MAAO,CACLkvL,UAAU,CAAEt5M,KAAMuL,OAAQ++L,UAAU,GACpCk8B,eAAgB,CAAExmO,KAAML,MAAO2qM,UAAU,GACzCm8B,WAAY,CAAEzmO,KAAMuL,OAAQ++L,UAAU,IAExC1sH,WAAY,CAACkpP,sBAAoBC,sBAAoBC,sBAAoBC,qBACzEjmT,KARa,WASX,MAAO,CACL9M,KAAMyyL,OAAOC,IAAIC,SAASC,MAC1B1yB,OAAQA,OACRyyD,UAAWA,UACXC,UAAWA,UACX1oB,MAAO3/M,KAAK66M,UACZ4tH,cAAe,CACb,CAAC1wH,MAAO,GAAIv5M,IAAK,IAAK6yB,MAAO,IAC7B,CAAC0mL,MAAOtiM,KAAKwvN,cAAezmO,IAAK,IAAK6yB,MAAOrxB,KAAK+nO,eAAe,IACjE,CAAChwB,MAAOtiM,KAAK44L,GAAI7vM,IAAK,IAAK6yB,MAAOrxB,KAAK+nO,eAAe,IACtD,CAAChwB,MAAOtiM,KAAK8xT,sBAAuB/oU,IAAK,IAAK6yB,MAAOrxB,KAAK+nO,eAAe,IACzE,CAAChwB,MAAOtiM,KAAKizT,yBAA0BlqU,IAAK,IAAK6yB,MAAOrxB,KAAK+nO,eAAe,IAC5E,CAAChwB,MAAOtiM,KAAKg2N,eAAgBjtO,IAAK,IAAK6yB,MAAOrxB,KAAK+nO,eAAe,IAClE,CAAChwB,MAAOtiM,KAAKi2N,WAAYltO,IAAK,IAAK6yB,MAAOrxB,KAAK+nO,eAAe,KAEhE4gG,WAAY,GACZC,YAAa,CAAEh2H,WAAY,EAAGC,UAAW,EAAGr4E,OAAQ,GACpDquM,mBAAmB,EACnBpB,mBAAmB,EACnBqB,mBAAmB,EACnBC,sBAAsB,EACtB1kG,mB5V+I6B,I4V9I7BwE,eAAgB,GAChB57B,YAAa,GACbG,eAAgB,KAGpBh8K,SAAU,CACR43S,kBADQ,WAEN,IAAIzrU,EAAIyf,EAAEkqC,UAAUlnD,KAAKitM,aAEzB,OADK1vM,IAAGA,EAAI,IACLA,IAGXob,QAAS,CACP2vL,WAAW,SAASlsL,GAChB,OAAKA,GAAU,KAALA,EAGC29L,MAAM39L,GAAG49L,OAAOC,kBAAkB,QAFlC,MAMjBxuK,QAAS,CAEPw9R,aAFO,SAEMpkU,GACX7E,KAAKkpU,gBACFrkU,IACD7E,KAAK2oU,WAAa9jU,IAItBqmO,aATO,SASMr9N,EAAE1J,EAAK5C,GAAM,WAKxB,OAJAsM,EAAEkb,kBACF/oB,KAAKkpU,gBACLlpU,KAAK6oO,eAAiB1kO,EACtBnE,KAAKqkO,mB5V4GwB,I4V3GrB9iO,GACN,IAAK,SACHqe,YAAW,WACT,EAAKipT,mBAAoB,IACxB,IACH,MAEF,IAAK,UACH,IAAI11Q,EAAQnzD,KACZ22M,OAAOunB,SAAS,CACdv+C,MAAOuoB,OAAOC,IAAIC,SAASC,MAAMk+B,MACjCx5K,8HAA8Ht3C,KAAK0zT,iCAAnI,OACAn8S,QAAQ,CAACvX,KAAKqsM,GAAGrsM,KAAKq3F,QACtBg1G,GAAG,WACD9hN,KAAKi9K,QACLr9J,YAAW,WACTuzC,EAAMs0Q,mBAAoB,IACzB,KAEL36N,OAAO,eAET,MAEF,IAAK,SACH,GAAG3oG,EAAKilU,YAAY,EAAG,CACrB,IAAIj2Q,EAAQnzD,KACZ22M,OAAOunB,SAAS,CACdv+C,MAAOuoB,OAAOC,IAAIC,SAASC,MAAMk+B,MACjCx5K,gIAAgIt3C,KAAK4zT,2BAArI,OACAr8S,QAAQ,CAACvX,KAAKqsM,GAAGrsM,KAAKq3F,QACtBg1G,GAAG,WACD9hN,KAAKi9K,QACLr9J,YAAW,WACTuzC,EAAM21Q,mBAAoB,IACzB,KAELh8N,OAAO,oBAGT9sG,KAAK8oU,mBAAoB,IAOjCQ,cA5DO,SA4DOrsU,EAAGiK,EAAG3F,GAAM,WAKxB,OAJAvB,KAAKkpU,gBACLlpU,KAAK6oO,eAAiB7oO,KAAKitM,YAAYhwM,GAAjB,cAAqCiK,GAC3DlH,KAAK6oO,eAAL,UAAmC7oO,KAAKitM,YAAYhwM,GAAjB,UACnC+C,KAAKqkO,mB5V2D+B,I4V1D5B9iO,GACN,IAAK,SACH,IAAI4xD,EAAQnzD,KACZ22M,OAAOunB,SAAS,CACdv+C,MAAOuoB,OAAOC,IAAIC,SAASC,MAAMk+B,MACjCx5K,wJACmDt3C,KAAK8zT,2BADxD,OAEAv8S,QAAQ,CAACvX,KAAKqsM,GAAGrsM,KAAKq3F,QACtBg1G,GAAG,WACD9hN,KAAKi9K,QACLr9J,YAAW,WACTuzC,EAAM21Q,mBAAoB,IACzB,KAELh8N,OAAO,eAET,MAEF,IAAK,SACHltF,YAAW,WACT,EAAKipT,mBAAoB,IACxB,IACH,MAEF,IAAK,UACH,IAAI11Q,EAAQnzD,KACZ22M,OAAOunB,SAAS,CACdv+C,MAAOuoB,OAAOC,IAAIC,SAASC,MAAMk+B,MACjCx5K,8HAA8Ht3C,KAAK0zT,iCAAnI,OACAn8S,QAAQ,CAACvX,KAAKqsM,GAAGrsM,KAAKq3F,QACtBg1G,GAAG,WACD9hN,KAAKi9K,QACLr9J,YAAW,WACTuzC,EAAMs0Q,mBAAoB,IACzB,KAEL36N,OAAO,iBASf08N,iBA9GO,SA8GUrlU,EAAKlH,GACpB+C,KAAKkpU,gBACLlpU,KAAKqkO,mB5VW+B,I4VVpCrkO,KAAKotM,eAAiBjpM,EAAKwiU,WAAa,GACrC3mU,KAAKotM,iBACNptM,KAAK+oU,sBAAuB,IAIhCU,gBAvHO,SAuHS5nQ,GACd7hE,KAAKkpU,gBACFrnQ,EAAI5kD,MACLjd,KAAK0pU,wBAAwB1pU,KAAK4oU,YAAYh2H,aAIlDu4B,aA9HO,SA8HMluN,GACXjd,KAAKkpU,gBACFjsT,GACDjd,KAAK0pU,wBAAwB1pU,KAAK4oU,YAAYh2H,aAIlD+2H,SArIO,SAqIE1sT,GAAM,WACbjd,KAAKkpU,gBACFjsT,GACD2C,YAAW,WACT,EAAKgqT,mBACJ,IAIPF,wBA9IO,SA8IiBhpI,GAAM,WAC5B1gM,KAAKkpU,gBACLlpU,KAAK4oU,YAAYh2H,WAAalS,EAC9B9gL,YAAW,WACT,EAAKgqT,mBACJ,IAGLA,eAtJO,WAuJLpxP,QAAQkuI,cACRzmB,OAAOwC,KAAK,yCACZ,CAAEonI,KAAM7pU,KAAK2/M,MACX4sB,UAAWvsO,KAAK4oU,YAAYh2H,WAC5B45B,SAAUxsO,KAAK4oU,YAAY/1H,YAC1BzuK,QAAQ,SAAUy9B,GACnB7hE,KAAKitM,YAAcjwL,EAAEkqC,UAAU2a,EAAIt/C,KAAKnX,MACxCpL,KAAK4oU,YAAYpuM,OAAS34D,EAAIt/C,KAAKi4G,QACnC/7H,KAAKuB,OAAOkyL,IAAI,WACd15G,QAAQsuI,cACVroN,KAAKuB,QAGTkpU,cApKO,WAqKLlpU,KAAK8oU,mBAAoB,EACzB9oU,KAAKynU,mBAAoB,EACzBznU,KAAK6oU,mBAAoB,EACzB7oU,KAAK+oU,sBAAuB,EAC5B/oU,KAAKqkO,mB5VhDwB,I4ViD7BrkO,KAAKotM,eAAiB,KAG1BpqH,QAjOa,WAkOXhjF,KAAK4pU,mBCpNM,I,OAXC,YACd,ICTW,WAAa,IAAIv4K,EAAIrxJ,KAASyyG,EAAG4+C,EAAIhgF,eAAmB4D,EAAGo8E,EAAI9wE,MAAMtL,IAAIw9B,EAAG,OAAOx9B,EAAG,MAAM,CAACA,EAAG,MAAM,CAACyP,YAAY,sBAAsB2sE,EAAI19E,GAAI09E,EAAiB,eAAE,SAASltJ,GAAM,OAAO8wE,EAAG,MAAM,CAACz2E,IAAI2F,EAAK3F,IAAIkmF,YAAY,iBAAiBpgE,MAAM,CAAE+M,MAAOltB,EAAKktB,MAAQ,OAAQ,CAACggI,EAAIn9E,GAAG,YAAYm9E,EAAI39E,GAAGvvE,EAAK4zM,OAAO,eAAc,GAAG1mD,EAAIn9E,GAAG,KAAuC,IAAjCm9E,EAAI23K,kBAAkBrnU,OAAcszE,EAAG,MAAM,CAACA,EAAG,cAAc,CAACyP,YAAY,kBAAkB90E,MAAM,CAAC,UAAY,IAAIwY,GAAG,CAAC,OAASipI,EAAI43K,cAAc3vP,MAAM,CAACp7E,MAAOmzJ,EAAc,WAAE/qJ,SAAS,SAAUu9L,GAAMxyC,EAAIs3K,WAAW9kI,GAAK/mH,WAAW,eAAeu0E,EAAI19E,GAAI09E,EAAqB,mBAAE,SAASltJ,EAAKzC,GAAO,OAAOuzE,EAAG,MAAM,CAACz2E,IAAI2F,EAAKwiU,WAAW,CAAqB,MAAnBxiU,EAAKijU,WAAwC,MAAnBjjU,EAAKijU,UAAmBnyP,EAAG,mBAAmB,CAACrlE,MAAM,CAAC,KAAOzL,EAAKwiU,YAAY,CAAC1xP,EAAG,WAAW,CAAClF,KAAK,SAAS,CAACkF,EAAG,MAAM,CAACyV,YAAY,CAAC,QAAU,SAAS,CAACzV,EAAG,MAAM,CAACyP,YAAY,cAAcpgE,MAAM,CAAE+M,MAAQggI,EAAI02E,eAAe,GAAM,OAAS,CAAC12E,EAAIn9E,GAAGm9E,EAAI39E,GAAGvvE,EAAKsiU,gBAAgBp1K,EAAIn9E,GAAG,KAAKe,EAAG,MAAM,CAACyP,YAAY,cAAcpgE,MAAM,CAAE+M,MAAQggI,EAAI02E,eAAe,GAAM,OAAS,CAAC12E,EAAIn9E,GAAGm9E,EAAI39E,GAAGvvE,EAAKwiU,cAAct1K,EAAIn9E,GAAG,KAAKe,EAAG,MAAM,CAACyP,YAAY,cAAcpgE,MAAM,CAAE+M,MAAQggI,EAAI02E,eAAe,GAAM,OAAS,CAAC12E,EAAIn9E,GAAGm9E,EAAI39E,GAAGvvE,EAAKijU,cAAc/1K,EAAIn9E,GAAG,KAAKe,EAAG,MAAM,CAACyP,YAAY,cAAcpgE,MAAM,CAAE+M,MAAQggI,EAAI02E,eAAe,GAAM,OAAS,CAAC12E,EAAIn9E,GAAGm9E,EAAI39E,GAAGvvE,EAAKilU,gBAAgB/3K,EAAIn9E,GAAG,KAAKe,EAAG,MAAM,CAACyP,YAAY,cAAcpgE,MAAM,CAAE+M,MAAQggI,EAAI02E,eAAe,GAAM,OAAS,CAAC12E,EAAIn9E,GAAGm9E,EAAI39E,GAAG29E,EAAIt9E,GAAG,aAAPs9E,CAAqBltJ,EAAK2lU,kBAAkBz4K,EAAIn9E,GAAG,KAAKe,EAAG,MAAM,CAACyP,YAAY,cAAcpgE,MAAM,CAAE+M,MAAQggI,EAAI02E,eAAe,GAAM,OAAS,CAAE12E,EAAa,UAAEp8E,EAAG,YAAY,CAACyP,YAAY,aAAa90E,MAAM,CAAC,KAAO,QAAQ,KAAO,QAAQwY,GAAG,CAAC,MAAQ,SAASkqD,GAAQ,OAAO++E,EAAI65E,aAAa54J,EAAOnuE,EAAK,aAAa,CAACktJ,EAAIn9E,GAAG,uBAAuBm9E,EAAI39E,GAAG29E,EAAI57I,KAAKk2N,QAAQ,wBAAwBt6E,EAAIl9E,KAAKk9E,EAAIn9E,GAAG,KAAMm9E,EAAa,UAAEp8E,EAAG,YAAY,CAACyP,YAAY,aAAa90E,MAAM,CAAC,KAAO,OAAO,KAAO,QAAQwY,GAAG,CAAC,MAAQ,SAASkqD,GAAQ,OAAO++E,EAAI65E,aAAa54J,EAAOnuE,EAAK,cAAc,CAACktJ,EAAIn9E,GAAG,uBAAuBm9E,EAAI39E,GAAG29E,EAAI57I,KAAKm2N,SAAS,wBAAwBv6E,EAAIl9E,KAAKk9E,EAAIn9E,GAAG,KAAMm9E,EAAa,UAAEp8E,EAAG,YAAY,CAACyP,YAAY,aAAa90E,MAAM,CAAC,KAAO,OAAO,KAAO,QAAQwY,GAAG,CAAC,MAAQ,SAASkqD,GAAQ,OAAO++E,EAAI65E,aAAa54J,EAAOnuE,EAAK,aAAa,CAACktJ,EAAIn9E,GAAG,uBAAuBm9E,EAAI39E,GAAG29E,EAAI57I,KAAKo2N,QAAQ,wBAAwBx6E,EAAIl9E,MAAM,OAAOk9E,EAAIn9E,GAAG,KAAKe,EAAG,MAAM,CAACyP,YAAY,wBAAwB,CAAEvgF,EAAK4lU,eAAiB5lU,EAAK4lU,cAAcpoU,OAAS,EAAGszE,EAAG,MAAM,CAACyP,YAAY,gBAAgB2sE,EAAI19E,GAAIxvE,EAAkB,eAAE,SAAS+sM,EAAQj0M,GAAG,OAAOg4E,EAAG,MAAM,CAACz2E,IAAIvB,EAAEynF,YAAY,uBAAuB,CAACzP,EAAG,MAAM,CAACyP,YAAY,YAAY,CAAC2sE,EAAIn9E,GAAGm9E,EAAI39E,GAAGz2E,EAAE,MAAMo0J,EAAIn9E,GAAG,KAAKe,EAAG,MAAM,CAACyP,YAAY,kBAAkBpgE,MAAM,CAAE+M,MAAQggI,EAAI02E,eAAe,GAAM,OAAS,CAAC12E,EAAIn9E,GAAGm9E,EAAI39E,GAAGw9H,EAAQs1H,sBAAsBn1K,EAAIn9E,GAAG,KAAKe,EAAG,MAAM,CAACyP,YAAY,kBAAkBpgE,MAAM,CAAE+M,MAAQggI,EAAI02E,eAAe,GAAM,OAAS,CAAC12E,EAAIn9E,GAAGm9E,EAAI39E,GAAGw9H,EAAQw1H,oBAAoBr1K,EAAIn9E,GAAG,KAAKe,EAAG,MAAM,CAACyP,YAAY,kBAAkBpgE,MAAM,CAAE+M,MAAQggI,EAAI02E,eAAe,GAAM,OAAS,CAAC12E,EAAIn9E,GAAGm9E,EAAI39E,GAAG29E,EAAIt9E,GAAG,aAAPs9E,CAAqB6/C,EAAQ44H,kBAAkBz4K,EAAIn9E,GAAG,KAAKe,EAAG,MAAM,CAACyP,YAAY,kBAAkBpgE,MAAM,CAAE+M,MAAQggI,EAAI02E,eAAe,GAAM,OAAS,CAAE12E,EAAa,UAAEp8E,EAAG,YAAY,CAACyP,YAAY,aAAa90E,MAAM,CAAC,KAAO,OAAO,KAAO,SAASwY,GAAG,CAAC,MAAQ,SAASkqD,GAAQ,OAAO++E,EAAIi4K,cAAc5nU,EAAOzE,EAAG,aAAa,CAACo0J,EAAIn9E,GAAG,uBAAuBm9E,EAAI39E,GAAG29E,EAAI57I,KAAKk2N,QAAQ,0BAA0Bt6E,EAAIl9E,KAAKk9E,EAAIn9E,GAAG,KAAMm9E,EAAa,UAAEp8E,EAAG,YAAY,CAACyP,YAAY,aAAa90E,MAAM,CAAC,KAAO,OAAO,KAAO,QAAQwY,GAAG,CAAC,MAAQ,SAASkqD,GAAQ,OAAO++E,EAAIi4K,cAAc5nU,EAAOzE,EAAG,cAAc,CAACo0J,EAAIn9E,GAAG,yBAAyBm9E,EAAI39E,GAAG29E,EAAI57I,KAAKm2N,SAAS,0BAA0Bv6E,EAAIl9E,KAAKk9E,EAAIn9E,GAAG,KAAMm9E,EAAa,UAAEp8E,EAAG,YAAY,CAACyP,YAAY,aAAa90E,MAAM,CAAC,KAAO,OAAO,KAAO,QAAQwY,GAAG,CAAC,MAAQ,SAASkqD,GAAQ,OAAO++E,EAAIi4K,cAAc5nU,EAAOzE,EAAG,aAAa,CAACo0J,EAAIn9E,GAAG,yBAAyBm9E,EAAI39E,GAAG29E,EAAI57I,KAAKo2N,QAAQ,0BAA0Bx6E,EAAIl9E,MAAM,QAAO,GAAGk9E,EAAIl9E,KAAKk9E,EAAIn9E,GAAG,KAAOhY,OAAO/3D,EAAKilU,aAAeltQ,OAAO/3D,EAAKijU,YAAe/1K,EAAIskB,OAAQ1gG,EAAG,MAAM,CAACyP,YAAY,sBAAsBt8D,GAAG,CAAC,MAAQ,SAASkqD,GAAQ,OAAO++E,EAAIm4K,iBAAiBrlU,EAAMzC,MAAU,CAAC2vJ,EAAIn9E,GAAG,wBAAwBm9E,EAAI39E,GAAG29E,EAAI57I,KAAKu0T,gCAAgC,oBAAoB34K,EAAIl9E,QAAQ,GAAGk9E,EAAIl9E,KAAKk9E,EAAIn9E,GAAG,KAAyB,MAAnB/vE,EAAKijU,WAAwC,MAAnBjjU,EAAKijU,UAAmBnyP,EAAG,MAAM,CAACyP,YAAY,gBAAgB,CAACzP,EAAG,MAAM,CAACyP,YAAY,cAAcpgE,MAAM,CAAE+M,MAAQggI,EAAI02E,eAAe,GAAM,OAAS,CAAC12E,EAAIn9E,GAAGm9E,EAAI39E,GAAGvvE,EAAKsiU,gBAAgBp1K,EAAIn9E,GAAG,KAAKe,EAAG,MAAM,CAACyP,YAAY,cAAcpgE,MAAM,CAAE+M,MAAQggI,EAAI02E,eAAe,GAAM,OAAS,CAAC12E,EAAIn9E,GAAGm9E,EAAI39E,GAAGvvE,EAAKwiU,cAAct1K,EAAIn9E,GAAG,KAAKe,EAAG,MAAM,CAACyP,YAAY,cAAcpgE,MAAM,CAAE+M,MAAQggI,EAAI02E,eAAe,GAAM,OAAS,CAAC12E,EAAIn9E,GAAGm9E,EAAI39E,GAAGvvE,EAAKijU,cAAc/1K,EAAIn9E,GAAG,KAAKe,EAAG,MAAM,CAACyP,YAAY,cAAcpgE,MAAM,CAAE+M,MAAQggI,EAAI02E,eAAe,GAAM,OAAS,CAAC12E,EAAIn9E,GAAGm9E,EAAI39E,GAAGvvE,EAAKilU,gBAAgB/3K,EAAIn9E,GAAG,KAAKe,EAAG,MAAM,CAACyP,YAAY,cAAcpgE,MAAM,CAAE+M,MAAQggI,EAAI02E,eAAe,GAAM,OAAS,CAAC12E,EAAIn9E,GAAGm9E,EAAI39E,GAAG29E,EAAIt9E,GAAG,aAAPs9E,CAAqBltJ,EAAK2lU,kBAAkBz4K,EAAIn9E,GAAG,KAAKe,EAAG,MAAM,CAACyP,YAAY,cAAcpgE,MAAM,CAAE+M,MAAQggI,EAAI02E,eAAe,GAAM,OAAS,CAAE12E,EAAa,UAAEp8E,EAAG,YAAY,CAACyP,YAAY,aAAa90E,MAAM,CAAC,KAAO,OAAO,KAAO,SAASwY,GAAG,CAAC,MAAQ,SAASkqD,GAAQ,OAAO++E,EAAI65E,aAAa54J,EAAOnuE,EAAK,aAAa,CAACktJ,EAAIn9E,GAAG,qBAAqBm9E,EAAI39E,GAAG29E,EAAI57I,KAAKk2N,QAAQ,sBAAsBt6E,EAAIl9E,KAAKk9E,EAAIn9E,GAAG,KAAMm9E,EAAa,UAAEp8E,EAAG,YAAY,CAACyP,YAAY,aAAa90E,MAAM,CAAC,KAAO,OAAO,KAAO,QAAQwY,GAAG,CAAC,MAAQ,SAASkqD,GAAQ,OAAO++E,EAAI65E,aAAa54J,EAAOnuE,EAAK,cAAc,CAACktJ,EAAIn9E,GAAG,qBAAqBm9E,EAAI39E,GAAG29E,EAAI57I,KAAKm2N,SAAS,sBAAsBv6E,EAAIl9E,KAAKk9E,EAAIn9E,GAAG,KAAMm9E,EAAa,UAAEp8E,EAAG,YAAY,CAACyP,YAAY,aAAa90E,MAAM,CAAC,KAAO,OAAO,KAAO,QAAQwY,GAAG,CAAC,MAAQ,SAASkqD,GAAQ,OAAO++E,EAAI65E,aAAa54J,EAAOnuE,EAAK,aAAa,CAACktJ,EAAIn9E,GAAG,qBAAqBm9E,EAAI39E,GAAG29E,EAAI57I,KAAKo2N,QAAQ,sBAAsBx6E,EAAIl9E,MAAM,KAAKk9E,EAAIl9E,MAAM,MAAK,IAAI,GAAGk9E,EAAIl9E,KAAKk9E,EAAIn9E,GAAG,KAAuC,IAAjCm9E,EAAI23K,kBAAkBrnU,OAAcszE,EAAG,MAAM,CAACyP,YAAY,mBAAmB,CAAC2sE,EAAIn9E,GAAG,SAASm9E,EAAI39E,GAAG29E,EAAI57I,KAAK6xM,aAAa,UAAUj2D,EAAIl9E,KAAKk9E,EAAIn9E,GAAG,KAAKe,EAAG,MAAM,CAACyP,YAAY,UAAU,CAACzP,EAAG,YAAY,CAACrlE,MAAM,CAAC,eAAeyhJ,EAAIu3K,YAAYh2H,WAAW,aAAa,CAACvhD,EAAIu3K,YAAY/1H,WAAW,OAAS,0CAA0C,MAAQxhD,EAAIu3K,YAAYpuM,QAAQpyG,GAAG,CAAC,iBAAiBipI,EAAIq4K,4BAA4B,GAAGr4K,EAAIn9E,GAAG,KAAKe,EAAG,qBAAqB,CAACrlE,MAAM,CAAC,UAAYyhJ,EAAIy3K,kBAAkB,iBAAkB,EAAM,mBAAqBz3K,EAAIgzE,mBAAmB,mBAAqBhzE,EAAIw3E,gBAAgBzgN,GAAG,CAAC,eAAiBipI,EAAIs4K,YAAYt4K,EAAIn9E,GAAG,KAAKe,EAAG,qBAAqB,CAACrlE,MAAM,CAAC,UAAYyhJ,EAAIw3K,kBAAkB,mBAAqBx3K,EAAIgzE,mBAAmB,mBAAqBhzE,EAAIw3E,eAAe,UAAYx3E,EAAIsuD,MAAM,YAActuD,EAAI22E,YAAY5/M,GAAG,CAAC,eAAiBipI,EAAI85E,gBAAgB95E,EAAIn9E,GAAG,KAAKe,EAAG,qBAAqB,CAACrlE,MAAM,CAAC,UAAYyhJ,EAAIo2K,kBAAkB,mBAAqBp2K,EAAIgzE,mBAAmB,mBAAqBhzE,EAAIw3E,eAAe,UAAYx3E,EAAIsuD,MAAM,YAActuD,EAAI22E,YAAY5/M,GAAG,CAAC,eAAiBipI,EAAI85E,gBAAgB95E,EAAIn9E,GAAG,KAAKe,EAAG,mBAAmB,CAACrlE,MAAM,CAAC,UAAYyhJ,EAAI03K,qBAAqB,UAAY13K,EAAIsuD,MAAM,YAActuD,EAAI22E,WAAW,WAAa32E,EAAI+7C,gBAAgBhlL,GAAG,CAAC,kBAAoBipI,EAAIo4K,oBAAoB,KAC34O,IDWpB,EACA,KACA,WACA,M,SEf+I,GCElI,CACbjsU,KAAM,qBACNmuB,MAAO,CACLkvL,UAAU,CAAEt5M,KAAMuL,OAAQ++L,UAAU,IAEtC1sH,WAAY,CAAEmpP,uBACd/lT,KANa,WAOX,MAAO,CACL9M,KAAMyyL,OAAOC,IAAIC,SAASC,MAC1BggC,UAAWA,UACX2+F,oBhWsK6B,IgWtKRiD,2BhWwKe,IgWvKpCC,mBAAoB,CAAEt3H,WAAY,EAAGC,UAAW,EAAGr4E,OAAQ,GAC3D2vM,kBAAmB,CAAEv3H,WAAY,EAAGC,UAAW,EAAGr4E,OAAQ,GAC1D4vM,mBAAoB,GACpBC,kBAAmB,GACnBvB,mBAAmB,EACnBzkG,mBhWgK6B,IgW/J7BwE,eAAgB,GAChBo6F,UAAW,IAGftqT,QAAS,CACPuwN,WAAY,SAAU9sN,GAClB,OAAKA,GAAU,KAALA,EAGCA,EAFA,KAKfksL,WAAW,SAASlsL,GAChB,OAAKA,GAAU,KAALA,EAGC29L,MAAM39L,GAAG49L,OAAOC,kBAAkB,QAFlC,MAMjB7oL,SAAU,CACRk5S,uBADQ,WAEN,IAAI/sU,EAAIyf,EAAEkqC,UAAUlnD,KAAKoqU,oBACpB7sU,IAAGA,EAAI,IACZ,IAAIglB,EAAO,GAaX,OAZAhlB,EAAE4tC,SAAQ,SAAUhnC,GAChBoe,EAAK/f,KAAK,CACNs/D,GAAI39D,EAAKq4C,OACTqrL,QAAS1jO,EAAKomU,gBACdziG,MAAO3jO,EAAKqmU,WACZrgG,QAAShmO,EAAKwjU,WACdt9F,MAAOlmO,EAAKsmU,MACZC,KAAMvmU,EAAKumU,KACXC,gBAAiBxmU,EAAKwmU,gBACtBn8T,GAAIrK,EAAK2iU,eAGVvkT,GAETqoT,sBAnBQ,WAoBN,IAAIrtU,EAAIyf,EAAEkqC,UAAUlnD,KAAKqqU,mBACpB9sU,IAAGA,EAAI,IACZ,IAAIglB,EAAO,GAaX,OAZAhlB,EAAE4tC,SAAQ,SAAUhnC,GAChBoe,EAAK/f,KAAK,CACRs/D,GAAI39D,EAAKq4C,OACTqrL,QAAS1jO,EAAK0mU,aACd/iG,MAAO3jO,EAAK2mU,WACZ3gG,QAAShmO,EAAKgmO,QACdE,MAAOlmO,EAAKkmO,MACZqgG,KAAMvmU,EAAKumU,KACXC,gBAAiBxmU,EAAK4mU,WACtBv8T,GAAIrK,EAAK6mU,qBAGRzoT,IAGXkpB,QAAS,CAEPk+R,SAFO,SAEE1sT,GACPjd,KAAKkpU,gBACFjsT,IhWiG0B,MgWhGxBjd,KAAKqkO,mBACNrkO,KAAK0pU,wBAAwB1pU,KAAKkqU,mBAAmBt3H,YAErD5yM,KAAKirU,8BAA8BjrU,KAAKmqU,kBAAkBv3H,cAKhEs4B,aAbO,SAaM/mO,EAAM5C,GAAM,WACvBvB,KAAK6oO,eAAiB1kO,EACtBnE,KAAKqkO,mBAAqB9iO,EAC1Bqe,YAAW,WACT,EAAKkpT,mBAAoB,IACxB,KAGLoC,sBArBO,WAsBLlrU,KAAKijU,UAAYjjU,KAAKijU,UAAY,EAClChjI,OAAOwC,KAAK,mCACZ,CAAEonI,KAAM7pU,KAAK66M,UACX0xB,UAAWvsO,KAAKkqU,mBAAmBt3H,WACnC45B,SAAUxsO,KAAKkqU,mBAAmBr3H,YACjCzuK,QAAQ,SAAUy9B,GACnB7hE,KAAKoqU,mBAAqBvoQ,EAAIt/C,KAAKnX,KACnCpL,KAAKkqU,mBAAmB1vM,OAAS34D,EAAIt/C,KAAKi4G,QAC1C/7H,KAAKuB,OAAOkyL,IAAI,WAChBlyL,KAAK2jU,uBACLllU,KAAKuB,QAGTmrU,4BAnCO,WAoCLnrU,KAAKijU,UAAYjjU,KAAKijU,UAAY,EAClChjI,OAAOwC,KAAK,yCAA0C,CACpDonI,KAAM7pU,KAAK66M,UACX0xB,UAAWvsO,KAAKmqU,kBAAkBv3H,WAClC45B,SAAUxsO,KAAKmqU,kBAAkBt3H,YAChCzuK,QAAQ,SAAUy9B,GACnB7hE,KAAKqqU,kBAAoBxoQ,EAAIt/C,KAAKnX,KAClCpL,KAAKmqU,kBAAkB3vM,OAAS34D,EAAIt/C,KAAKi4G,QACzC/7H,KAAKuB,OAAOkyL,IAAI,WACdlyL,KAAK2jU,uBACPllU,KAAKuB,QAGT0pU,wBAjDO,SAiDiBhpI,GACrB1gM,KAAKkpU,gBACLlpU,KAAKkqU,mBAAmBt3H,WAAalS,EACrCloH,QAAQkuI,cACR1mN,KAAKkrU,yBAGRD,8BAxDO,SAwDuBvqI,GAC3B1gM,KAAKkpU,gBACLlpU,KAAKmqU,kBAAkBv3H,WAAalS,EACpCloH,QAAQkuI,cACR1mN,KAAKmrU,+BAGRhF,YA/DO,WAgEL3tP,QAAQkuI,cACR1mN,KAAKkrU,wBACLlrU,KAAKmrU,+BAGPjC,cArEO,WAsELlpU,KAAK8oU,mBAAoB,GAG3BnF,oBAzEO,WA0EL3jU,KAAKijU,UAAYjjU,KAAKijU,UAAY,EACZ,IAAnBjjU,KAAKijU,WACNzqP,QAAQsuI,eAId9jI,QA3Ja,WA4JXhjF,KAAKmmU,gBC3IM,I,OAXC,YACd,ICTW,WAAa,IAAI90K,EAAIrxJ,KAASyyG,EAAG4+C,EAAIhgF,eAAmB4D,EAAGo8E,EAAI9wE,MAAMtL,IAAIw9B,EAAG,OAAOx9B,EAAG,MAAM,CAACA,EAAG,MAAM,CAACyP,YAAY,iBAAiB,CAAC2sE,EAAIn9E,GAAGm9E,EAAI39E,GAAG29E,EAAI57I,KAAK21T,oCAAoC/5K,EAAIn9E,GAAG,KAAKe,EAAG,WAAW,CAACrlE,MAAM,CAAC,oBAAoB,CAAC6jB,OAAO,OAAOu7H,WAAW,UAAUn4C,MAAM,QAAQ,OAAS,GAAG,KAAOw6C,EAAIi5K,yBAAyB,CAACr1P,EAAG,kBAAkB,CAACrlE,MAAM,CAAC,KAAO,KAAK,MAAQyhJ,EAAI57I,KAAKq2N,uBAAuB,wBAAwB,GAAG,MAAQ,QAAQ92J,YAAYq8E,EAAIj9E,GAAG,CAAC,CAAC51E,IAAI,UAAUkH,GAAG,SAASoJ,GAAO,MAAO,CAACuiJ,EAAIn9E,GAAG,mBAAmBm9E,EAAI39E,GAAG5kE,EAAMilM,IAAIjyI,IAAI,uBAAuBuvF,EAAIn9E,GAAG,KAAKe,EAAG,kBAAkB,CAACrlE,MAAM,CAAC,KAAO,UAAU,MAAQyhJ,EAAI57I,KAAKs2N,eAAe,wBAAwB,IAAI/2J,YAAYq8E,EAAIj9E,GAAG,CAAC,CAAC51E,IAAI,UAAUkH,GAAG,SAASoJ,GAAO,MAAO,CAACuiJ,EAAIn9E,GAAG,mBAAmBm9E,EAAI39E,GAAG5kE,EAAMilM,IAAI8zB,SAAW/4N,EAAMilM,IAAI+zB,OAAS,KAAK,uBAAuBz2E,EAAIn9E,GAAG,KAAKe,EAAG,kBAAkB,CAACrlE,MAAM,CAAC,KAAO,QAAQ,MAAQyhJ,EAAI57I,KAAKu2N,eAAe,OAAO,wBAAwB,IAAIh3J,YAAYq8E,EAAIj9E,GAAG,CAAC,CAAC51E,IAAI,UAAUkH,GAAG,SAASoJ,GAAO,MAAO,CAACuiJ,EAAIn9E,GAAG,mBAAmBm9E,EAAI39E,GAAG5kE,EAAMilM,IAAI+zB,OAAO,uBAAuBz2E,EAAIn9E,GAAG,KAAKe,EAAG,kBAAkB,CAACrlE,MAAM,CAAC,KAAO,UAAU,MAAQyhJ,EAAI57I,KAAKw2N,WAAW,wBAAwB,IAAIj3J,YAAYq8E,EAAIj9E,GAAG,CAAC,CAAC51E,IAAI,UAAUkH,GAAG,SAASoJ,GAAO,MAAO,CAACuiJ,EAAIn9E,GAAG,mBAAmBm9E,EAAI39E,GAAG5kE,EAAMilM,IAAIo2B,SAAWr7N,EAAMilM,IAAIs2B,OAAS,KAAK,uBAAuBh5E,EAAIn9E,GAAG,KAAKe,EAAG,kBAAkB,CAACrlE,MAAM,CAAC,KAAO,QAAQ,MAAQyhJ,EAAI57I,KAAKy2N,aAAa,wBAAwB,IAAIl3J,YAAYq8E,EAAIj9E,GAAG,CAAC,CAAC51E,IAAI,UAAUkH,GAAG,SAASoJ,GAAO,MAAO,CAACuiJ,EAAIn9E,GAAG,mBAAmBm9E,EAAI39E,GAAG5kE,EAAMilM,IAAIs2B,OAAO,uBAAuBh5E,EAAIn9E,GAAG,KAAKe,EAAG,kBAAkB,CAACrlE,MAAM,CAAC,KAAO,kBAAkB,MAAQyhJ,EAAI57I,KAAK02N,aAAa,wBAAwB,IAAIn3J,YAAYq8E,EAAIj9E,GAAG,CAAC,CAAC51E,IAAI,UAAUkH,GAAG,SAASoJ,GAAO,MAAO,CAACuiJ,EAAIn9E,GAAG,mBAAmBm9E,EAAI39E,GAAG29E,EAAIt9E,GAAG,aAAPs9E,CAAqBviJ,EAAMilM,IAAI42H,gBAAgBhnU,WAAWwF,MAAM,KAAK,KAAK,uBAAuBkoJ,EAAIn9E,GAAG,KAAKe,EAAG,kBAAkB,CAACrlE,MAAM,CAAC,KAAO,KAAK,MAAQyhJ,EAAI57I,KAAKi2N,WAAW,MAAQ,SAAS12J,YAAYq8E,EAAIj9E,GAAG,CAAC,CAAC51E,IAAI,UAAUkH,GAAG,SAASoJ,GAAO,MAAO,CAAgB,IAAdA,EAAMilM,IAAIvlM,GAAQymE,EAAG,MAAM,CAAEo8E,EAAa,UAAEp8E,EAAG,YAAY,CAACyP,YAAY,aAAagG,YAAY,CAAC,MAAQ,OAAO96E,MAAM,CAAC,KAAO,OAAO,KAAO,QAAQwY,GAAG,CAAC,MAAQ,SAASkqD,GAAQ,OAAO++E,EAAI65E,aAAap8N,EAAMilM,IAAK1iD,EAAI21K,wBAAwB,CAAC31K,EAAIn9E,GAAG,2BAA2Bm9E,EAAI39E,GAAG29E,EAAI57I,KAAKo2N,QAAQ,0BAA0Bx6E,EAAIl9E,MAAM,GAAGk9E,EAAIl9E,KAAKk9E,EAAIn9E,GAAG,KAAoB,IAAdplE,EAAMilM,IAAIvlM,IAAW6iJ,EAAIg3E,UAAsCh3E,EAAIl9E,KAA/Bc,EAAG,MAAM,CAACo8E,EAAIn9E,GAAG,kBAA2B,GAAGm9E,EAAIn9E,GAAG,KAAKe,EAAG,MAAM,CAACyP,YAAY,SAASgG,YAAY,CAAC,gBAAgB,SAAS,CAACzV,EAAG,YAAY,CAACrlE,MAAM,CAAC,eAAeyhJ,EAAI64K,mBAAmBt3H,WAAW,aAAa,CAACvhD,EAAI64K,mBAAmBr3H,WAAW,OAAS,0CAA0C,MAAQxhD,EAAI64K,mBAAmB1vM,QAAQpyG,GAAG,CAAC,iBAAiBipI,EAAIq4K,4BAA4B,GAAGr4K,EAAIn9E,GAAG,KAAKe,EAAG,MAAM,CAACyV,YAAY,CAAC,OAAS,OAAO,WAAa,UAAU,OAAS,aAAa2mE,EAAIn9E,GAAG,KAAKe,EAAG,MAAM,CAACyP,YAAY,gBAAgBgG,YAAY,CAAC,aAAa,SAAS,CAAC2mE,EAAIn9E,GAAGm9E,EAAI39E,GAAG29E,EAAI57I,KAAK41T,2CAA2Ch6K,EAAIn9E,GAAG,KAAKe,EAAG,WAAW,CAACrlE,MAAM,CAAC,oBAAoB,CAAC6jB,OAAO,OAAOu7H,WAAW,UAAUn4C,MAAM,QAAQ,OAAS,GAAG,KAAOw6C,EAAIu5K,wBAAwB,CAAC31P,EAAG,kBAAkB,CAACrlE,MAAM,CAAC,KAAO,MAAM,MAAQyhJ,EAAI57I,KAAKq2N,uBAAuB,wBAAwB,GAAG,MAAQ,QAAQ92J,YAAYq8E,EAAIj9E,GAAG,CAAC,CAAC51E,IAAI,UAAUkH,GAAG,SAASoJ,GAAO,MAAO,CAACuiJ,EAAIn9E,GAAG,qBAAqBm9E,EAAI39E,GAAG5kE,EAAMilM,IAAIjyI,IAAI,yBAAyBuvF,EAAIn9E,GAAG,KAAKe,EAAG,kBAAkB,CAACrlE,MAAM,CAAC,KAAO,UAAU,MAAQyhJ,EAAI57I,KAAKs2N,eAAe,wBAAwB,IAAI/2J,YAAYq8E,EAAIj9E,GAAG,CAAC,CAAC51E,IAAI,UAAUkH,GAAG,SAASoJ,GAAO,MAAO,CAACuiJ,EAAIn9E,GAAG,mBAAmBm9E,EAAI39E,GAAG5kE,EAAMilM,IAAI8zB,SAAW/4N,EAAMilM,IAAI+zB,OAAS,KAAK,uBAAuBz2E,EAAIn9E,GAAG,KAAKe,EAAG,kBAAkB,CAACrlE,MAAM,CAAC,KAAO,QAAQ,MAAQyhJ,EAAI57I,KAAKu2N,eAAe,OAAO,wBAAwB,IAAIh3J,YAAYq8E,EAAIj9E,GAAG,CAAC,CAAC51E,IAAI,UAAUkH,GAAG,SAASoJ,GAAO,MAAO,CAACuiJ,EAAIn9E,GAAG,mBAAmBm9E,EAAI39E,GAAG5kE,EAAMilM,IAAI+zB,OAAO,uBAAuBz2E,EAAIn9E,GAAG,KAAKe,EAAG,kBAAkB,CAACrlE,MAAM,CAAC,KAAO,UAAU,MAAQyhJ,EAAI57I,KAAKw2N,WAAW,wBAAwB,IAAIj3J,YAAYq8E,EAAIj9E,GAAG,CAAC,CAAC51E,IAAI,UAAUkH,GAAG,SAASoJ,GAAO,MAAO,CAACuiJ,EAAIn9E,GAAG,mBAAmBm9E,EAAI39E,GAAG5kE,EAAMilM,IAAIo2B,SAAWr7N,EAAMilM,IAAIs2B,OAAS,KAAK,uBAAuBh5E,EAAIn9E,GAAG,KAAKe,EAAG,kBAAkB,CAACrlE,MAAM,CAAC,KAAO,QAAQ,MAAQyhJ,EAAI57I,KAAKy2N,aAAa,wBAAwB,IAAIl3J,YAAYq8E,EAAIj9E,GAAG,CAAC,CAAC51E,IAAI,UAAUkH,GAAG,SAASoJ,GAAO,MAAO,CAACuiJ,EAAIn9E,GAAG,mBAAmBm9E,EAAI39E,GAAG5kE,EAAMilM,IAAIs2B,OAAO,uBAAuBh5E,EAAIn9E,GAAG,KAAKe,EAAG,kBAAkB,CAACrlE,MAAM,CAAC,KAAO,aAAa,MAAQyhJ,EAAI57I,KAAK02N,aAAa,wBAAwB,IAAIn3J,YAAYq8E,EAAIj9E,GAAG,CAAC,CAAC51E,IAAI,UAAUkH,GAAG,SAASoJ,GAAO,MAAO,CAACuiJ,EAAIn9E,GAAG,mBAAmBm9E,EAAI39E,GAAG29E,EAAIt9E,GAAG,aAAPs9E,CAAqBviJ,EAAMilM,IAAI42H,gBAAgBhnU,WAAWwF,MAAM,KAAK,KAAK,uBAAuBkoJ,EAAIn9E,GAAG,KAAKe,EAAG,kBAAkB,CAACrlE,MAAM,CAAC,KAAO,KAAK,MAAQyhJ,EAAI57I,KAAKi2N,WAAW,MAAQ,SAAS12J,YAAYq8E,EAAIj9E,GAAG,CAAC,CAAC51E,IAAI,UAAUkH,GAAG,SAASoJ,GAAO,MAAO,CAAgB,IAAdA,EAAMilM,IAAIvlM,GAAQymE,EAAG,MAAM,CAAEo8E,EAAa,UAAEp8E,EAAG,YAAY,CAACyP,YAAY,aAAagG,YAAY,CAAC,MAAQ,OAAO96E,MAAM,CAAC,KAAO,OAAO,KAAO,QAAQwY,GAAG,CAAC,MAAQ,SAASkqD,GAAQ,OAAO++E,EAAI65E,aAAap8N,EAAMilM,IAAK1iD,EAAI44K,+BAA+B,CAAC54K,EAAIn9E,GAAG,2BAA2Bm9E,EAAI39E,GAAG29E,EAAI57I,KAAKo2N,QAAQ,0BAA0Bx6E,EAAIl9E,MAAM,GAAGk9E,EAAIl9E,KAAKk9E,EAAIn9E,GAAG,KAAoB,IAAdplE,EAAMilM,IAAIvlM,IAAW6iJ,EAAIg3E,UAAsCh3E,EAAIl9E,KAA/Bc,EAAG,MAAM,CAACo8E,EAAIn9E,GAAG,kBAA2B,GAAGm9E,EAAIn9E,GAAG,KAAKe,EAAG,MAAM,CAACyP,YAAY,UAAU,CAACzP,EAAG,YAAY,CAACrlE,MAAM,CAAC,eAAeyhJ,EAAI84K,kBAAkBv3H,WAAW,aAAa,CAACvhD,EAAI84K,kBAAkBt3H,WAAW,OAAS,0CAA0C,MAAQxhD,EAAI84K,kBAAkB3vM,QAAQpyG,GAAG,CAAC,iBAAiBipI,EAAI45K,kCAAkC,GAAG55K,EAAIn9E,GAAG,KAAKe,EAAG,qBAAqB,CAACrlE,MAAM,CAAC,UAAYyhJ,EAAIy3K,kBAAkB,iBAAkB,EAAK,mBAAqBz3K,EAAIgzE,mBAAmB,mBAAqBhzE,EAAIw3E,gBAAgBzgN,GAAG,CAAC,eAAiBipI,EAAIs4K,aAAa,KACj+L,IDWpB,EACA,KACA,WACA,M,SEfqI,GCExH,CACbnsU,KAAM,cACNmuB,MAAO,CACLkvL,UAAU,CAAEt5M,KAAMuL,OAAQ++L,UAAU,GACpCk8B,eAAgB,CAAExmO,KAAML,MAAO2qM,UAAU,GACzCm8B,WAAY,CAAEzmO,KAAMuL,OAAQ++L,UAAU,IAExC1sH,WAAY,CAAEmsP,kBAAgBC,uBAC9BhpT,KAAM,WACJ,MAAO,CACL9M,KAAMyyL,OAAOC,IAAIC,SAASC,MAC1BsX,MAAO3/M,KAAK66M,UACZmtB,WAAYhoO,KAAKgoO,WACjBt6B,iBAAiB,IAGrB7oI,MAAO,CACLg2I,UAAU,WACR76M,KAAK2/M,MAAQ3/M,KAAK66M,YAGtBpvK,QAAS,CAEP2nK,UAFO,WAGLpzM,KAAK0tM,iBAAmB1tM,KAAK0tM,iBAG/B09B,eANO,SAMQnuN,GACVjd,KAAK0tM,gBACN1tM,KAAKwgF,MAAMgrP,kBAAkB7B,SAAS,CAAC1sT,SAEvCjd,KAAKwgF,MAAMirP,sBAAsB9B,SAAS,CAAC1sT,YCdpC,I,OAXC,YACd,ICTW,WAAa,IAAIo0I,EAAIrxJ,KAASyyG,EAAG4+C,EAAIhgF,eAAmB4D,EAAGo8E,EAAI9wE,MAAMtL,IAAIw9B,EAAG,OAAOx9B,EAAG,MAAM,CAACA,EAAG,MAAM,CAACyP,YAAY,6BAA6B,CAACzP,EAAG,SAAS,CAACyP,YAAY,gBAAgBjK,MAAM,CAAC,gBAAgB42E,EAAIq8C,iBAAiBtlL,GAAG,CAAC,MAAQipI,EAAI+hD,YAAY,CAAC/hD,EAAIn9E,GAAG,WAAWm9E,EAAI39E,GAAG29E,EAAI57I,KAAKy7L,SAAS,YAAY7/C,EAAIn9E,GAAG,KAAKe,EAAG,SAAS,CAACyP,YAAY,gBAAgBjK,MAAM,CAAC,eAAe42E,EAAIq8C,iBAAiBtlL,GAAG,CAAC,MAAQipI,EAAI+hD,YAAY,CAAC/hD,EAAIn9E,GAAG,WAAWm9E,EAAI39E,GAAG29E,EAAI57I,KAAK41N,eAAe,cAAch6E,EAAIn9E,GAAG,KAAKe,EAAG,MAAM,CAACyP,YAAY,gCAAgC,CAAE2sE,EAAmB,gBAAEp8E,EAAG,iBAAiB,CAACphB,IAAI,oBAAoBjkD,MAAM,CAAC,UAAYyhJ,EAAIwpD,UAAU,eAAiBxpD,EAAI02E,eAAe,WAAa12E,EAAI22E,cAAc32E,EAAIl9E,KAAKk9E,EAAIn9E,GAAG,KAAOm9E,EAAIq8C,gBAA0Gr8C,EAAIl9E,KAA7Fc,EAAG,qBAAqB,CAACphB,IAAI,wBAAwBjkD,MAAM,CAAC,UAAYyhJ,EAAIwpD,cAAuB,OACt2B,IDWpB,EACA,KACA,WACA,M,SEf6N,GCwD/N,CACEr9M,KAAM,sBACNmuB,MAAO,CACL+/S,eAAgB,CAAEnqU,KAAMuL,OAAQ++L,UAApC,GACI8/H,YAAa,CAAEpqU,KAAM5D,OAAQkuM,UAAU,GACvCgP,UAAJ,0BACI0pB,UAAW,CAAf,0BACIC,YAAa,CAAjB,0BAEE3/J,MAAO,CACL0/J,UADJ,SACA,GAEM,OADN,mBACa1/N,IAGX0d,KAfF,WAgBI,MAAO,CACL9M,KAAMyyL,OAAOC,IAAIC,SAASC,MAC1Bk8B,UAAWvkO,KAAKukO,UAChBS,YAAa,CACXvb,SAAU,CAClB,mEAEQmiH,OAAQ,CAChB,gEACA,+BAEQ9lH,MAAO,CACf,+BAEQ+lH,UAAW,CAAC,CAAEhgI,UAAU,KAE1BigI,SAAU,CAAEriH,SAAU,GAAImiH,OAAQ,GAAI9lH,MAAO,IAC7Cif,cAAe,CACb,IAAO,CAAf,yEACQ,OAAU,CAAlB,0EACQ,OAAU,CAAlB,uFAEMgnG,WAAY,GACZC,sBAAuB,KAG3B56S,SAAU,CACR66S,gBADJ,WAEM,OAAOjsU,KAAK2rU,YAAmB,MAAEn6T,QAAO,SAA9C,GACQ,OAA0B,IAAnBrN,EAAK+nU,aAApB,iBACQ,OAAR,UAIEzgS,QAAS,CAEP67R,kBAFJ,WAEA,WACMtnU,KAAKukO,WAAY,EACjB3kN,YAAW,WACT,EAAR,2BACQ,EAAR,uCACQ,EAAR,cACQ,EAAR,2BACA,MAGIusT,sBAZJ,SAYA,cACA,8BACA,cACUnsU,KAAKgsU,sBAAwBhsU,KAAK+rU,WAAWv6T,QAAO,SAA9D,GACY,OAAO46T,EAAIluR,SAAS/5C,EAAKjG,UAG3B8B,KAAKgsU,sBAAwB,GAE/BhsU,KAAK8rU,SAASO,UAAYrsU,KAAKgsU,sBAAsBx6T,QAAO,SAApE,GACU,OAAO,EAAjB,wCACA,oCAEA,iCACQ,KAAR,4DACU,OAAO46T,EAAIluR,SAAS/5C,MAC9B,+BAII0gO,mBAhCJ,WAiCM7kO,KAAKwgF,MAAMskJ,mBAAmB74B,SAAS,SAAUgf,GAAvD,WACQ,GAAIA,EAAO,CACT,IAAV,KACU,OAAV,qBACY,IAAK,MACjB,GACA,mCACA,uCACA,8BACA,2BACA,yCAEA,MAEY,IAAK,SACjB,SACA,sCACA,wCACA,qCACA,mBAGA,GACA,mCACA,uCACA,8BACA,wCACA,mBAEA,MAEY,IAAK,SACjB,SACA,qCACA,oCACA,mBAGA,GACA,kCACA,UAKU,GAAV,oDAEY,YADA,GAAZ,gCAGUjrN,KAAKq7E,MAAM,WAAY,CACrB6jJ,UAAW3/L,EACX+sS,SAAUtsU,KAAK0rU,eACf/3G,OAAQ3zN,KAAK+kO,cAAc/kO,KAAK0rU,gBAAwB,WAGpE,aAGI9tP,SA3FJ,WA4FM59E,KAAK+rU,WAAa,GAClB/rU,KAAKgsU,sBAAwB,GAC7B,IAAN,KACMhsU,KAAK8rU,SAAW,CACdriH,SAAUzpN,KAAK2rU,YAAkB,KAAY,SAC7CC,OAAQ5rU,KAAK2rU,YAAkB,KAAU,OACzC7lH,MAAO9lN,KAAK2rU,YAAmB,MAAEplU,KAAI,SAA7C,kBACQ8lU,UAAWrsU,KAAKisU,iBAElBhsI,OAAOwC,KAAK,wCAAyC,CACnDkkB,eAAgB3mN,KAAK66M,YAC7B,+BACQ0xH,EAAY1qQ,EAAIt/C,MAAQ,GAChC,yCACUviB,KAAK+rU,WAAa/rU,KAAK2rU,YAAY7lH,MAC7C,oBAAY,OAAZ,6CACA,iBAEY,MAAZ,OADA,oBAAc,OAAd,eACA,oBAEU9lN,KAAKgsU,sBAAwBhsU,KAAK+rU,YAElCQ,EAAUphS,SAAQ,SAA5B,GACY,EAAZ,+CAGA,eC7Me,I,OAXC,YACd,ICTW,WAAa,IAAIkmH,EAAIrxJ,KAASyyG,EAAG4+C,EAAIhgF,eAAmB4D,EAAGo8E,EAAI9wE,MAAMtL,IAAIw9B,EAAG,OAAOx9B,EAAG,aAAa,CAACrlE,MAAM,CAAC,KAAOyhJ,EAAIkzE,UAAU,MAA+B,WAAvBlzE,EAAIq6K,eAA6B,IAAI,IAAI,MAAQ,KAAK,CAACz2P,EAAG,KAAK,CAACrlE,MAAM,CAAC,KAAO,UAAUmgE,KAAK,UAAU,CAACshF,EAAIn9E,GAAGm9E,EAAI39E,GAAG29E,EAAI0zE,cAAc1zE,EAAIq6K,gBAAuB,UAAMr6K,EAAIn9E,GAAG,KAA6B,WAAvBm9E,EAAIq6K,eAA6Bz2P,EAAG,MAAM,CAACA,EAAG,KAAK,CAACyP,YAAY,uBAAuB,CAAC2sE,EAAIn9E,GAAGm9E,EAAI39E,GAAG29E,EAAI57I,KAAKiyN,0BAA0Br2E,EAAIn9E,GAAG,KAAKe,EAAG,IAAI,CAACyP,YAAY,yBAAyB,CAAC2sE,EAAIn9E,GAAGm9E,EAAI39E,GAAG29E,EAAI57I,KAAK+2T,+BAA+Bn7K,EAAIl9E,KAAKk9E,EAAIn9E,GAAG,KAAKe,EAAG,MAAM,CAACyP,YAAY,iBAAiBjK,MAAM,CAAC,cAAsC,WAAvB42E,EAAIq6K,iBAA8B,CAACz2P,EAAG,UAAU,CAACphB,IAAI,qBAAqB6wB,YAAY,qBAAqB90E,MAAM,CAAC,MAAQyhJ,EAAIy6K,SAAS,MAAQz6K,EAAI2zE,YAAY,cAAc,UAAU,CAAC/vJ,EAAG,eAAe,CAACrlE,MAAM,CAAC,MAAUyhJ,EAAI57I,KAAwB,oBAAI,IAAO47I,EAAI57I,KAAkB,cAAG,KAAO,aAAa,CAACw/D,EAAG,WAAW,CAACrlE,MAAM,CAAC,SAAkC,WAAvByhJ,EAAIq6K,eAA4B,UAAY,GAAG,YAAgBr6K,EAAI57I,KAAY,QAAI,IAAO47I,EAAI57I,KAAmC,gCAAI6jE,MAAM,CAACp7E,MAAOmzJ,EAAIy6K,SAAiB,SAAExlU,SAAS,SAAUu9L,GAAMxyC,EAAIlwE,KAAKkwE,EAAIy6K,SAAU,WAAYjoI,IAAM/mH,WAAW,wBAAwB,GAAGu0E,EAAIn9E,GAAG,KAAKe,EAAG,eAAe,CAACrlE,MAAM,CAAC,MAAQyhJ,EAAI57I,KAAKi0M,6BAA6B,KAAO,WAAW,CAACz0I,EAAG,WAAW,CAACrlE,MAAM,CAAC,SAAkC,QAAvByhJ,EAAIq6K,eAAyB,UAAY,GAAG,YAAcr6K,EAAI57I,KAAKg3T,8BAA8BnzP,MAAM,CAACp7E,MAAOmzJ,EAAIy6K,SAAe,OAAExlU,SAAS,SAAUu9L,GAAMxyC,EAAIlwE,KAAKkwE,EAAIy6K,SAAU,SAAUjoI,IAAM/mH,WAAW,sBAAsB,GAAGu0E,EAAIn9E,GAAG,KAAKe,EAAG,eAAe,CAACyV,YAAY,CAAC,aAAa,QAAQ96E,MAAM,CAAC,MAAQyhJ,EAAI57I,KAAKi3T,wBAAwB,KAA8B,QAAvBr7K,EAAIq6K,eAA2B,QAAU,cAAc,CAACz2P,EAAG,YAAY,CAACrlE,MAAM,CAAC,SAAW,GAAG,SAAkC,WAAvByhJ,EAAIq6K,eAA4B,YAAcr6K,EAAI57I,KAAKyxM,kBAAkB9+L,GAAG,CAAC,OAASipI,EAAI86K,uBAAuB7yP,MAAM,CAACp7E,MAAOmzJ,EAAIy6K,SAAc,MAAExlU,SAAS,SAAUu9L,GAAMxyC,EAAIlwE,KAAKkwE,EAAIy6K,SAAU,QAASjoI,IAAM/mH,WAAW,mBAAmBu0E,EAAI19E,GAAI09E,EAAc,YAAE,SAASltJ,GAAM,OAAO8wE,EAAG,YAAY,CAACz2E,IAAI2F,EAAKjG,MAAM0R,MAAM,CAAC,MAAQzL,EAAK4zM,MAAM,MAAQ5zM,EAAKjG,YAAW,IAAI,GAAGmzJ,EAAIn9E,GAAG,KAA6B,WAAvBm9E,EAAIq6K,eAA6Bz2P,EAAG,MAAM,CAACyP,YAAY,cAAc,CAACzP,EAAG,OAAO,CAACyV,YAAY,CAAC,MAAQ,YAAY,CAAC2mE,EAAIn9E,GAAG,OAAOm9E,EAAIn9E,GAAG,iBAAiBm9E,EAAI39E,GAA0B,WAAvB29E,EAAIq6K,eAA8Br6K,EAAI57I,KAAKk3T,gCAAkCt7K,EAAI57I,KAAKm3T,iCAAiC,mBAAmBv7K,EAAIl9E,KAAKk9E,EAAIn9E,GAAG,KAAKe,EAAG,eAAe,CAACyV,YAAY,CAAC,aAAa,QAAQ96E,MAAM,CAAC,MAAQyhJ,EAAI57I,KAAKo3T,8BAA8B,KAAOx7K,EAAIy7K,eAAe,CAAC73P,EAAG,YAAY,CAACrlE,MAAM,CAAC,SAAkC,WAAvByhJ,EAAIq6K,eAA4B,SAAW,GAAG,YAAcr6K,EAAI57I,KAAKyxM,kBAAkB5tI,MAAM,CAACp7E,MAAOmzJ,EAAIy6K,SAAkB,UAAExlU,SAAS,SAAUu9L,GAAMxyC,EAAIlwE,KAAKkwE,EAAIy6K,SAAU,YAAajoI,IAAM/mH,WAAW,uBAAuBu0E,EAAI19E,GAAI09E,EAAyB,uBAAE,SAASltJ,GAAM,OAAO8wE,EAAG,YAAY,CAACz2E,IAAI2F,EAAKjG,MAAM0R,MAAM,CAAC,MAAQzL,EAAK4zM,MAAM,MAAQ5zM,EAAKjG,YAAW,IAAI,IAAI,GAAGmzJ,EAAIn9E,GAAG,KAA6B,QAAvBm9E,EAAIq6K,eAA0Bz2P,EAAG,MAAM,CAACyP,YAAY,cAAc,CAACzP,EAAG,OAAO,CAACyV,YAAY,CAAC,MAAQ,YAAY,CAAC2mE,EAAIn9E,GAAG,OAAOm9E,EAAIn9E,GAAG,eAAem9E,EAAI39E,GAA0B,WAAvB29E,EAAIq6K,eAA8Br6K,EAAI57I,KAAKs3T,gCAAgC17K,EAAI57I,KAAKu3T,iCAAiC,eAAe37K,EAAIl9E,MAAM,GAAGk9E,EAAIn9E,GAAG,KAAKe,EAAG,0BAA0B,CAACrlE,MAAM,CAAC,KAAO,UAAUmgE,KAAK,UAAU,CAACkF,EAAG,gBAAgB,CAAC7sD,GAAG,CAAC,MAAQipI,EAAIi2K,oBAAoB,CAACj2K,EAAIn9E,GAAGm9E,EAAI39E,GAAG29E,EAAI57I,KAAKq3F,WAAWukD,EAAIn9E,GAAG,KAAKe,EAAG,gBAAgB,CAAC7sD,GAAG,CAAC,MAAQipI,EAAIwzE,qBAAqB,CAACxzE,EAAIn9E,GAAGm9E,EAAI39E,GAAG29E,EAAI57I,KAAKyvN,cAAc,IAAI,KAC1mH,IDWpB,EACA,KACA,WACA,M,SEf6N,GC8B/N,CACE1nO,KAAM,oBACNmuB,MAAO,CACLkvL,UAAJ,0BACI0pB,UAAJ,2BACItiN,WAAY,CAAhB,yBACIgrT,aAAc,CAAlB,yBAEEpoQ,MAAO,CACL0/J,UADJ,SACA,GAMM,OALN,IACQvkO,KAAKkoU,iBACLloU,KAAKktU,SAAWltU,KAAKiiB,WACrBjiB,KAAKmtU,gBAAgBntU,KAAKktU,WAErBroU,IAGX0d,KAAF,WACI,MAAO,CACL,KAAN,0BACM,YAAN,mDACM,MAAN,eACM,UAAN,eACM,eAAN,UACM,UAAN,GACM,SAAN,KAGEkpB,QAAS,CAEP2hS,eAFJ,SAEA,GACM,IAAN,yDACM,OAAN,EACejpU,EAAK3G,KAEL4e,GAIXixT,cAXJ,WAWA,WACMrtU,KAAKukO,WAAY,EACjBvkO,KAAKq7E,MAAM,cAAe,CACxBp+D,KAA8B,YAAxBjd,KAAKstU,eACXC,UAAWvtU,KAAKutU,YAElB3tT,YAAW,WACT,EAAR,mBACA,MAGI4tT,cAtBJ,WAuBMxtU,KAAKkoU,iBACLloU,KAAKmtU,gBAAgBntU,KAAKktU,WAG5BC,gBA3BJ,SA2BA,GACMltI,OAAOwC,KAAKn2H,EAAKqnJ,OAAQrnJ,EAAK4yJ,WAAW96L,QAAQ,SAAvD,cACA,8BACU,KAAV,yBAGA,iDACUy9B,EAAIt/C,KAAK4oB,SAAQ,SAA3B,GACA,eACc,EAAd,6CAGUnrC,KAAKstU,eAAiBttU,KAAKutU,UAAU5rU,OAAS,EAAI,SAA5D,YAEA,6BACQ+hO,GAAR,OACQ1jO,KAAKqtU,iBACb,6BAEA,aAGInF,eAjDJ,WAkDMloU,KAAKstU,eAAiB,UACtBttU,KAAKutU,UAAY,MC3FR,I,OAXC,YACd,ICTW,WAAa,IAAIl8K,EAAIrxJ,KAASyyG,EAAG4+C,EAAIhgF,eAAmB4D,EAAGo8E,EAAI9wE,MAAMtL,IAAIw9B,EAAG,OAAOx9B,EAAG,aAAa,CAACrlE,MAAM,CAAC,KAAOyhJ,EAAIkzE,UAAU,MAAQ,IAAI,MAAQ,KAAK,CAACtvJ,EAAG,KAAK,CAACrlE,MAAM,CAAC,KAAO,UAAUmgE,KAAK,UAAU,CAACshF,EAAIn9E,GAAGm9E,EAAI39E,GAAG29E,EAAI57I,KAAKg4T,gCAAgCp8K,EAAIn9E,GAAG,KAAKe,EAAG,MAAM,CAACyP,YAAY,uBAAuBgG,YAAY,CAAC,QAAU,YAAY,gBAAgB,oBAAoB,aAAa,mBAAmB,CAAyB,WAAvB2mE,EAAIi8K,eAA6Br4P,EAAG,MAAM,CAACyP,YAAY,mBAAmB,CAAyB,YAAvB2sE,EAAIi8K,eAA8Br4P,EAAG,MAAM,CAACrlE,MAAM,CAAC,IAAM,yCAAyCyhJ,EAAIl9E,KAAKk9E,EAAIn9E,GAAG,KAA6B,YAAvBm9E,EAAIi8K,eAA8Br4P,EAAG,MAAM,CAACrlE,MAAM,CAAC,IAAM,2CAA2CyhJ,EAAIl9E,OAAOk9E,EAAIl9E,KAAKk9E,EAAIn9E,GAAG,KAA6B,YAAvBm9E,EAAIi8K,eAA8Br4P,EAAG,MAAM,CAACyP,YAAY,YAAY,CAAC2sE,EAAIn9E,GAAGm9E,EAAI39E,GAAG29E,EAAI57I,KAAKi4T,mCAAmCr8K,EAAIl9E,KAAKk9E,EAAIn9E,GAAG,KAA6B,YAAvBm9E,EAAIi8K,eAA8Br4P,EAAG,MAAM,CAACyP,YAAY,YAAY,CAAC2sE,EAAIn9E,GAAGm9E,EAAI39E,GAAG29E,EAAI57I,KAAKk4T,qBAAqBt8K,EAAIl9E,KAAKk9E,EAAIn9E,GAAG,KAA6B,WAAvBm9E,EAAIi8K,eAA6Br4P,EAAG,MAAM,CAACyP,YAAY,sBAAsB,CAACzP,EAAG,MAAM,CAAC9C,SAAS,CAAC,UAAYk/E,EAAI39E,GAAG29E,EAAIu8K,gBAAgBv8K,EAAIn9E,GAAG,KAAKe,EAAG,MAAM,CAACyP,YAAY,cAAc2sE,EAAI19E,GAAI09E,EAAa,WAAE,SAASltJ,GAAM,OAAO8wE,EAAG,MAAM,CAACz2E,IAAI2F,EAAKugF,YAAY,cAAc,CAAC2sE,EAAIn9E,GAAG,sBAAsBm9E,EAAI39E,GAAG29E,EAAI+7K,eAAejpU,EAAKyhM,KAAK,wBAAuB,KAAKv0C,EAAIl9E,OAAOk9E,EAAIn9E,GAAG,KAAKe,EAAG,0BAA0B,CAACrlE,MAAM,CAAC,KAAO,UAAUmgE,KAAK,UAAU,CAACkF,EAAG,gBAAgB,CAAC7sD,GAAG,CAAC,MAAQipI,EAAIg8K,gBAAgB,CAACh8K,EAAIn9E,GAAGm9E,EAAI39E,GAAG29E,EAAI57I,KAAKo4T,4BAA4Bx8K,EAAIn9E,GAAG,KAA6B,WAAvBm9E,EAAIi8K,eAA6Br4P,EAAG,gBAAgB,CAAC7sD,GAAG,CAAC,MAAQipI,EAAIm8K,gBAAgB,CAACn8K,EAAIn9E,GAAG,eAAem9E,EAAI39E,GAAG29E,EAAI57I,KAAKq4T,qBAAqB,gBAAgBz8K,EAAIl9E,MAAM,IAAI,KAClvD,IDWpB,EACA,KACA,WACA,M,kIETa,ICN0H,GDM1H,CACb32E,KAAM,gBACNmuB,MAAO,CACLkvL,UAAU,CAAEt5M,KAAMuL,OAAQ++L,UAAU,GACpC6I,UAAU,CAAEnzM,KAAMoqE,QAASkgI,UAAU,GACrCk8B,eAAgB,CAAExmO,KAAM5D,OAAQkuM,UAAU,GAC1Cm8B,WAAY,CAAEzmO,KAAMuL,OAAQ++L,UAAU,IAExC1sH,WAAY,CAAE8oJ,qBAAmBC,qBAAmBC,qBACtC4lG,qBAAmBC,sBACjCzrT,KAAM,WACJ,MAAO,CACL9M,KAAMyyL,OAAOC,IAAIC,SAASC,MAC1B+/B,UAAWA,UACXC,UAAWA,UACX1oB,MAAO3/M,KAAK66M,UACZnG,UAAW10M,KAAK00M,UAChBszB,WAAYhoO,KAAKgoO,WACjBimG,cAAe,GACfC,iBAAkB,GAClBC,cAAe,CACbv7H,WAAY,EAAGC,UAAW,EAAGr4E,OAAQ,GAEvC4zM,aAAc,GACdC,aAAc,CACZz7H,WAAY,EAAGC,UAAW,EAAGr4E,OAAQ,GAEvC8zM,mBAAmB,EACnB5lG,iBAAiB,EACjBC,iBAAiB,EACjBC,iBAAiB,EACjB2lG,gBAAgB,EAChBC,gBAAgB,EAChBnqG,mB/W+I+B,I+W9I/BwE,eAAgB,GAChB3B,iBAAiB,EACjBunG,QAAS,GACT/C,eAAgB,MAChBuB,aAAc,GACdyB,mBAAoB,GACpBC,kBAAmB,CACjBpmH,KAAM,CAAEqjH,OAAQ,GAAIniH,SAAU,IAC9B3D,MAAO,IAETm9G,UAAW,EACX2L,aAAc,GACdC,kBAAkB,IAGtBhqQ,MAAO,CACLg2I,UAAU,WACR76M,KAAK2/M,MAAQ3/M,KAAK66M,UAClB76M,KAAK8uU,mBACL9uU,KAAK+uU,oBAGTp2T,QAAS,CACPuwN,WAAY,SAAU9sN,GAClB,OAAKA,GAAU,KAALA,EAGCA,EAFA,KAKfksL,WAAW,SAASlsL,GAChB,OAAKA,GAAU,KAALA,EAGC29L,MAAM39L,GAAG49L,OAAOC,kBAAkB,QAFlC,MAMjB7oL,SAAU,CAER49S,sBAFQ,WAGN,IAAIzxU,EAAIyf,EAAEkqC,UAAUlnD,KAAKiuU,eACpB1wU,IAAGA,EAAI,IACZ,IAAIglB,EAAO,GAgBX,OAfAhlB,EAAE4tC,SAAQ,SAAUhnC,GAClBoe,EAAK/f,KAAK,CACRkhC,OAAQv/B,EAAKu/B,OACblmC,KAAM2G,EAAKilO,QACXxjC,GAAIzhM,EAAKklO,MACT9nO,KAAM4C,EAAKmlO,QACXC,OAAQplO,EAAKolO,OACbl/B,SAAUlmM,EAAKqlO,YACfC,WAAYtlO,EAAKulO,UACjBC,YAAaxlO,EAAKylO,mBAClBC,UAAW1lO,EAAK2lO,iBAChBhwK,QAAS31D,EAAK8qU,IACdzgU,GAAIrK,EAAKqK,QAGN+T,GAGT2sT,yBAxBQ,WAyBN,IAAI3xU,EAAIyf,EAAEkqC,UAAUlnD,KAAKkuU,kBACpB3wU,IAAGA,EAAI,IACZ,IAAIglB,EAAO,GAaX,OAZAhlB,EAAE4tC,SAAQ,SAAUhnC,GAClBoe,EAAK/f,KAAK,CACRgM,GAAGrK,EAAKqK,GACRzI,IAAK5B,EAAK6lO,MACVnC,QAAS1jO,EAAK8lO,YACdnC,MAAO3jO,EAAK+lO,UACZC,QAAShmO,EAAKimO,YACdC,MAAOlmO,EAAKmmO,UACZC,WAAYpmO,EAAKqmO,YACjBl9L,KAAMnpC,EAAKmpC,UAGR/qB,GAGT4sT,qBA3CQ,WA4CN,IAAI5xU,EAAIyf,EAAEkqC,UAAUlnD,KAAKouU,cACzB,IAAK7wU,EAAK,MAAO,GACjB,IAII6xU,EAJAC,EAAQ,GACRC,EAAU,GACVC,EAAQ,GACRC,EAAU,GAEVC,EAAY,GAEhBlyU,EAAE4tC,SAAQ,SAAAqsF,GACR63M,EAAM7sU,KAAKg1H,EAAQouE,IACnB0pI,EAAQ9sU,KAAK,CAACopU,OAAQp0M,EAAQo0M,OAAQniH,SAAUjyF,EAAQiyF,cAE1D2lH,EAAiB7xU,EAAEiuC,QAAO,SAACkkS,EAAKnnH,GAE9B,OADIA,EAAK2jH,YAAawD,EAAInnH,EAAK3iB,IAAM2iB,EAAKqjH,QACnC8D,IACN,IACH,IAAMC,EAAeA,GAAfA,UAAmB,IAAIvvQ,IAAIivQ,KAC3BO,EAAc,IAAIxvQ,IAClByvQ,EAAiBP,EAAQ99T,QAAO,SAAArN,GACpC,IAAM3F,EAAM2F,EAAKynU,OAASznU,EAAKslN,SAC/B,OAAImmH,EAAYv0T,IAAI7c,KAGlBoxU,EAAYtvU,IAAI9B,IACT,MAmCX,OAhCAmxU,EAAaxkS,SAAQ,SAAAy6J,GACnB2pI,EAAM3pI,GAAM,GACZroM,EAAE4tC,SAAQ,SAAAqsF,GACNA,EAAQouE,KAAOA,GAChB2pI,EAAM3pI,GAAIpjM,KAAK,CAACopU,OAAQp0M,EAAQo0M,OAAQniH,SAAUjyF,EAAQiyF,iBAI/DzpN,KAAK0uU,mBAAqBa,EAC1BM,EAAe1kS,SAAQ,SAAAo9K,GACtBinH,EAAQjnH,EAAKqjH,QAAU,GACvBruU,EAAE4tC,SAAQ,SAAAqsF,GACNA,EAAQo0M,SAAWrjH,EAAKqjH,QACzB4D,EAAQjnH,EAAKqjH,QAAQppU,KAAKg1H,EAAQouE,UAItC5lM,KAAKyuU,QAAUkB,EACfE,EAAe1kS,SAAQ,SAAUo9K,EAAK7mN,GACpC+tU,EAAUjtU,KAAK,CACbgM,GAAI9M,EAAQ,EACZkqU,OAAQrjH,EAAKqjH,OACbniH,SAAUlB,EAAKkB,SACf2C,OAAQojH,EAAQjnH,EAAKqjH,QAAQrlU,KAAI,SAAA2xN,GAC/B,MAAO,CACLtyB,GAAIsyB,EACJg0G,UAAWkD,EAAel3G,KAAU3P,EAAKqjH,gBAKjD5rU,KAAKquU,aAAa7zM,OAASi1M,EAAU9tU,OAC9B8tU,EAAUnsU,OACdtD,KAAKquU,aAAaz7H,WAAY,GAAK5yM,KAAKquU,aAAax7H,UACrD7yM,KAAKquU,aAAaz7H,WAAa5yM,KAAKquU,aAAax7H,aAIxDpnK,QAAS,CAEPqkS,iBAFO,WAGLt3P,QAAQkuI,cACR1mN,KAAK0qO,uBACA1qO,KAAKsuU,oBACRtuU,KAAK+vU,qBACL/vU,KAAK8uU,mBACL9uU,KAAK+uU,kBACL/uU,KAAKsuU,mBAAoB,IAI7B0B,oBAbO,WAcLx3P,QAAQkuI,cACR1mN,KAAK0qO,uBACD1qO,KAAKsuU,oBACPtuU,KAAK+vU,qBACL/vU,KAAKqoN,sBACLroN,KAAKsuU,mBAAoB,IAI7B2B,mBAvBO,SAuBYvvI,GACjBloH,QAAQkuI,cACR1mN,KAAK0qO,uBACL1qO,KAAKmuU,cAAcv7H,WAAalS,EAC5B1gM,KAAKsuU,kBACLtuU,KAAK8uU,mBAEL9uU,KAAKqoN,uBAIX6nH,qBAlCO,SAkCcxvI,GACnB1gM,KAAK0qO,uBACL1qO,KAAKquU,aAAaz7H,WAAalS,GAGjCqvI,mBAvCO,WAwCL/vU,KAAKmuU,cAAct7H,UAAY,EAC/B7yM,KAAKmuU,cAAcv7H,WAAa,GAGlCk8H,iBA5CO,WA6CL9uU,KAAK0jU,iBAAiB,GACtBzjI,OAAOwC,KAAK,4CACZ,CAAEkd,MAAO3/M,KAAK2/M,MACZ/M,WAAY5yM,KAAKmuU,cAAcv7H,WAC/BC,UAAW7yM,KAAKmuU,cAAct7H,UAC9B40B,e/WxD6B,M+WyD5BrjM,QAAQ,SAAUy9B,GACnB7hE,KAAKiuU,cAAgBpsQ,EAAIt/C,KAAKnX,KAC9BpL,KAAKmuU,cAAc3zM,OAAS34D,EAAIt/C,KAAKi4G,QACrC/7H,KAAKuB,OAAOkyL,IAAI,WAChBlyL,KAAK2jU,uBACLllU,KAAKuB,QAGTqoN,oBA3DO,WA4DLroN,KAAK0jU,iBAAiB,GACtBzjI,OAAOwC,KAAK,0DACV,CAAEkd,MAAO3/M,KAAK2/M,MACZ/M,WAAY5yM,KAAKmuU,cAAcv7H,WAC/BC,UAAW7yM,KAAKmuU,cAAct7H,UAC9B40B,e/WvE2B,M+WwE1BrjM,QAAQ,SAAUy9B,GACjB7hE,KAAKkuU,iBAAmBrsQ,EAAIt/C,KAAKnX,KACjCpL,KAAKmuU,cAAc3zM,OAAS34D,EAAIt/C,KAAKi4G,QACvC/7H,KAAKuB,OAAOkyL,IAAI,WAChBlyL,KAAK2jU,uBACLllU,KAAKuB,QAGXotU,eA1EO,SA0EQhxT,GACb,IAAMjY,EAAOnE,KAAKitU,aAAav7T,MAAK,SAAAhC,GAAM,OAAOA,EAAGk2L,KAAOxpL,KAC3D,OAAGjY,EACMA,EAAK3G,KAEL4e,GAIX2yT,gBAnFO,WAoFL/uU,KAAK0jU,iBAAiB,GACtBzjI,OAAOwC,KAAK,wCAAyC,CACnDkkB,eAAgB3mN,KAAK2/M,QACpBv7K,QAAQ,SAAUy9B,GACnB7hE,KAAKitU,aAAeprQ,EAAIt/C,MAAQ,IAChC9jB,KAAKuB,OAAOkyL,IAAI,WAChBlyL,KAAK2jU,sBAEL1jI,OAAOwC,KAAK,oCACZ,CAAEkkB,eAAgB3mN,KAAK2/M,QAASv7K,QAAQ,SAAU+rS,GAC7CA,EAAS5tT,OACVviB,KAAKouU,aAAe+B,EAAS5tT,MAAQ,KAEvC9jB,KAAKuB,OAAOkyL,IAAI,WAChBlyL,KAAK2jU,uBACLllU,KAAKuB,QACPvB,KAAKuB,QAGTkrO,aAvGO,SAuGMn3B,EAAKxyM,GAAM,WACtBvB,KAAKirO,iBACLrrN,YAAW,WAGT,OAFA,EAAKykN,mB/WhHwB,I+WiH7B,EAAKwE,eAAiB90B,EACdxyM,GACN,IAAK,SACH,EAAKmnO,iBAAkB,EACvB,MAEF,IAAK,SACH,EAAKC,iBAAkB,EACvB,MAEF,IAAK,aACH,EAAKzB,iBAAkB,EACvB,EAAK0B,iBAAkB,EACvB,MAEF,IAAK,gBACH,EAAK1B,iBAAkB,EACvB,EAAK0B,iBAAkB,KAM1B,KAGLuC,aArIO,SAqIMluN,GACXjd,KAAKirO,iBACFhuN,IACDu7D,QAAQkuI,cACR1mN,KAAK8uU,mBACL9uU,KAAK+uU,oBAIT3jG,eA9IO,SA8IQnuN,GACbjd,KAAKirO,iBACFhuN,IACDu7D,QAAQkuI,cACR1mN,KAAK+uU,kBACF/uU,KAAKsuU,kBACNtuU,KAAK8uU,mBAEL9uU,KAAKqoN,wBAKX+nH,eA3JO,SA2JQ7uU,EAAMwyM,GAAK,WACxB/zM,KAAKirO,iBACLjrO,KAAK2uU,kBAAoB,CAACpmH,KAAM,CAACqjH,OAAQ,GAAIniH,SAAU,IAAK3D,MAAO,IACnE9lN,KAAK0rU,eAAiBnqU,EACV,QAATA,IACDvB,KAAK2uU,kBAAoB,CACvBpmH,KAAM,CAAEqjH,OAAQ73H,EAAI63H,OAAQniH,SAAU1V,EAAI0V,UAC1C3D,mBAAW/R,EAAIqY,WAGnBxsM,YAAW,WACT,EAAK2uT,gBAAiB,IACrB,MAGL8B,eA1KO,SA0KQxuQ,GAAK,WAGlB,GAFA7hE,KAAKswU,aAAezuQ,EACpB7hE,KAAK0rU,eAAiB7pQ,EAAIyqQ,SACN,QAAjBzqQ,EAAIyqQ,SAAoB,CACzB,IAAMiE,EAAYvwU,KAAKmvU,qBAAqBz9T,MAAK,SAAChC,GAC9C,OAAOA,EAAGk8T,SAAW/pQ,EAAIq9J,UAAJ,UAEzB,GAAGqxG,GAAavwU,KAAKwwU,eAAeD,EAAUnkH,OAAQvqJ,EAAIq9J,UAAJ,QAEpD,YADAtgN,GAAOnJ,KAAKg7T,mBAAoB,GASlC,GANAzwU,KAAK4uU,aAAe,GACpB/sQ,EAAIq9J,UAAJ,OAAwB/zL,SAAQ,SAAA+sL,GAC3B,EAAKw2G,mBAAmBx2G,IAAS,EAAKw2G,mBAAmBx2G,GAAMv2N,QAAU,IAC1E,EAAKitU,aAAapsU,KAAK,EAAK4qU,eAAel1G,OAG5Cl4N,KAAK4uU,aAAajtU,OAAS,EAG5B,OAFA3B,KAAKuuU,gBAAiB,OACtBvuU,KAAK6uU,kBAAmB,GAI5B7uU,KAAKuuU,gBAAiB,EACtBvuU,KAAKwuU,gBAAiB,GAGxBkC,kBArMO,SAqMW7uQ,GAChB7hE,KAAKirO,iBACLjrO,KAAKwgF,MAAMmwP,gBAAgBrJ,oBACxBzlQ,EAAI5kD,OACLu7D,QAAQkuI,cACR1mN,KAAKquU,aAAaz7H,WAAa,EAC/B5yM,KAAK+uU,oBAIT1B,cA/MO,WA+MS,WACdrtU,KAAK6uU,kBAAmB,EACxBjvT,YAAW,WACT,EAAK8qN,yBACJ,MAGLO,eAtNO,WAuNLjrO,KAAKknO,iBAAkB,EACvBlnO,KAAK0qO,wBAGPA,qBA3NO,WA4NL1qO,KAAK0oO,iBAAkB,EACvB1oO,KAAK2oO,iBAAkB,EACvB3oO,KAAK4oO,iBAAkB,EACvB5oO,KAAKuuU,gBAAiB,EACtBvuU,KAAKwuU,gBAAiB,EACtBxuU,KAAKijU,UAAY,EACjBjjU,KAAK2uU,kBAAoB,CACvBpmH,KAAM,CAAEqjH,OAAQ,GAAIniH,SAAU,IAC9B3D,MAAO,IAET9lN,KAAK6uU,kBAAmB,EACxB7uU,KAAK4uU,aAAe,IAGtBjL,oBA1OO,WA2OL3jU,KAAKijU,UAAYjjU,KAAKijU,UAAY,EACZ,IAAnBjjU,KAAKijU,WACLzqP,QAAQsuI,cAIb48G,iBAjPO,SAiPU39T,GACf/F,KAAKijU,UAAYjjU,KAAKijU,UAAYl9T,GAGpCyqU,eArPO,SAqPQI,EAAQC,GAErB,OAAID,EAAOjvU,SAAWkvU,EAAOlvU,QAItBivU,EAAOrrR,OAAM,SAACrnD,EAAOwD,GAAR,OAAkBxD,IAAU2yU,EAAOnvU,QAG3DohF,QApba,WAqbXtK,QAAQkuI,cACR1mN,KAAK8uU,mBACL9uU,KAAK+uU,mBAEP/rP,QAzba,cEaA,I,OAXC,YACd,ICTW,WAAa,IAAIquE,EAAIrxJ,KAASyyG,EAAG4+C,EAAIhgF,eAAmB4D,EAAGo8E,EAAI9wE,MAAMtL,IAAIw9B,EAAG,OAAOx9B,EAAG,MAAM,CAACA,EAAG,MAAM,CAACyP,YAAY,6BAA6B,CAACzP,EAAG,SAAS,CAACyP,YAAY,gBAAgBjK,MAAM,CAAC,gBAAgB42E,EAAIi9K,mBAAmBlmT,GAAG,CAAC,MAAQipI,EAAIy+K,mBAAmB,CAACz+K,EAAIn9E,GAAG,WAAWm9E,EAAI39E,GAAG29E,EAAI57I,KAAKwxM,wBAAwB51D,EAAIn9E,GAAG,KAAKe,EAAG,SAAS,CAACyP,YAAY,gBAAgBjK,MAAM,CAAC,eAAe42E,EAAIi9K,mBAAmBlmT,GAAG,CAAC,MAAQipI,EAAI2+K,sBAAsB,CAAC3+K,EAAIn9E,GAAG,WAAWm9E,EAAI39E,GAAG29E,EAAI57I,KAAK41N,oBAAoBh6E,EAAIn9E,GAAG,KAAKe,EAAG,MAAM,CAACyP,YAAY,gCAAgC,CAACzP,EAAG,WAAW,CAACzK,WAAW,CAAC,CAAChtE,KAAK,OAAOoqF,QAAQ,SAAS1pF,MAAOmzJ,EAAqB,kBAAEv0E,WAAW,sBAAsB4N,YAAY,CAAC,MAAQ,QAAQ96E,MAAM,CAAC,oBAAoB,CAAC6jB,OAAO,OAAOu7H,WAAW,UAAUn4C,MAAM,QAAQ,OAAS,GAAG,KAAOw6C,EAAI29K,wBAAwB,CAAC/5P,EAAG,kBAAkB,CAACyP,YAAY,OAAO90E,MAAM,CAAC,KAAO,SAAS,MAAQyhJ,EAAI57I,KAAK0xM,QAAQ,MAAQ91D,EAAI02E,eAAeuD,cAAc,IAAIt2J,YAAYq8E,EAAIj9E,GAAG,CAAC,CAAC51E,IAAI,UAAUkH,GAAG,SAASoJ,GAAO,MAAO,CAACmmE,EAAG,MAAM,CAAC3wD,MAAM,CAAEuyF,MAA0B,MAAnB/nG,EAAMilM,IAAIrwK,OAAgB,UAAW,YAAa,CAAC2tH,EAAIn9E,GAAG,qBAAqBm9E,EAAI39E,GAAqB,MAAlB5kE,EAAMilM,IAAIrwK,OAAa2tH,EAAI57I,KAAKozL,QAAQx3C,EAAI57I,KAAKqmN,QAAQ,6BAA6BzqE,EAAIn9E,GAAG,KAAKe,EAAG,kBAAkB,CAACrlE,MAAM,CAAC,KAAO,OAAO,MAAQyhJ,EAAI57I,KAAKwvN,cAAc,MAAQ5zE,EAAI02E,eAAeuD,cAAc,GAAG,wBAAwB,IAAIt2J,YAAYq8E,EAAIj9E,GAAG,CAAC,CAAC51E,IAAI,UAAUkH,GAAG,SAASoJ,GAAO,MAAO,CAACuiJ,EAAIn9E,GAAG,qBAAqBm9E,EAAI39E,GAAG5kE,EAAMilM,IAAIv2M,MAAQsR,EAAMilM,IAAInO,IAAM,KAAK,yBAAyBv0C,EAAIn9E,GAAG,KAAKe,EAAG,kBAAkB,CAACrlE,MAAM,CAAC,KAAO,KAAK,MAAQ,KAAK,wBAAwB,GAAG,MAAQyhJ,EAAI02E,eAAeuD,cAAc,IAAIt2J,YAAYq8E,EAAIj9E,GAAG,CAAC,CAAC51E,IAAI,UAAUkH,GAAG,SAASoJ,GAAO,MAAO,CAACuiJ,EAAIn9E,GAAG,qBAAqBm9E,EAAI39E,GAAG29E,EAAIt9E,GAAG,aAAPs9E,CAAqBviJ,EAAMilM,IAAInO,KAAK,yBAAyBv0C,EAAIn9E,GAAG,KAAKe,EAAG,kBAAkB,CAACrlE,MAAM,CAAC,KAAO,OAAO,MAAQyhJ,EAAI57I,KAAKw0L,iBAAiB,MAAQ54C,EAAI02E,eAAeuD,cAAc,GAAG,wBAAwB,IAAIt2J,YAAYq8E,EAAIj9E,GAAG,CAAC,CAAC51E,IAAI,UAAUkH,GAAG,SAASoJ,GAAO,MAAO,CAACuiJ,EAAIn9E,GAAG,qBAAqBm9E,EAAI39E,GAAG29E,EAAIt9E,GAAG,aAAPs9E,CAAqBviJ,EAAMilM,IAAIxyM,OAAO,yBAAyB8vJ,EAAIn9E,GAAG,KAAKe,EAAG,kBAAkB,CAACrlE,MAAM,CAAC,KAAO,WAAW,MAAQyhJ,EAAI57I,KAAK+1N,iBAAiB,MAAQn6E,EAAI02E,eAAeuD,cAAc,GAAG,wBAAwB,IAAIt2J,YAAYq8E,EAAIj9E,GAAG,CAAC,CAAC51E,IAAI,UAAUkH,GAAG,SAASoJ,GAAO,MAAO,CAACuiJ,EAAIn9E,GAAG,qBAAqBm9E,EAAI39E,GAAG29E,EAAIt9E,GAAG,aAAPs9E,CAAqBviJ,EAAMilM,IAAI1J,WAAW,yBAAyBh5C,EAAIn9E,GAAG,KAAKe,EAAG,kBAAkB,CAACrlE,MAAM,CAAC,KAAO,UAAU,MAAQyhJ,EAAI57I,KAAKq7T,oBAAoB,MAAQz/K,EAAI02E,eAAeuD,cAAc,GAAG,wBAAwB,IAAIt2J,YAAYq8E,EAAIj9E,GAAG,CAAC,CAAC51E,IAAI,UAAUkH,GAAG,SAASoJ,GAAO,MAAO,CAACuiJ,EAAIn9E,GAAG,qBAAqBm9E,EAAI39E,GAAG5kE,EAAMilM,IAAIj6I,SAAW,KAAK,yBAAyBu3F,EAAIn9E,GAAG,KAAKe,EAAG,kBAAkB,CAACrlE,MAAM,CAAC,KAAO,aAAa,MAAQyhJ,EAAI57I,KAAKg2N,eAAe,MAAQp6E,EAAI02E,eAAeuD,cAAc,GAAG,wBAAwB,IAAIt2J,YAAYq8E,EAAIj9E,GAAG,CAAC,CAAC51E,IAAI,UAAUkH,GAAG,SAASoJ,GAAO,MAAO,CAACuiJ,EAAIn9E,GAAG,qBAAqBm9E,EAAI39E,GAAG29E,EAAIt9E,GAAG,aAAPs9E,CAAqBviJ,EAAMilM,IAAI01B,aAAa,yBAAyBp4E,EAAIn9E,GAAG,KAAKe,EAAG,kBAAkB,CAACrlE,MAAM,CAAC,KAAO,KAAK,MAAQyhJ,EAAI57I,KAAKi2N,WAAW,MAAQr6E,EAAI02E,eAAeuD,cAAc,IAAIt2J,YAAYq8E,EAAIj9E,GAAG,CAAC,CAAC51E,IAAI,UAAUkH,GAAG,SAASoJ,GAAO,MAAO,CAAgB,IAAdA,EAAMilM,IAAIvlM,GAAQymE,EAAG,MAAM,CAAEo8E,EAAa,UAAEp8E,EAAG,YAAY,CAACyP,YAAY,aAAa90E,MAAM,CAAC,KAAO,OAAO,KAAO,SAASwY,GAAG,CAAC,MAAQ,SAASkqD,GAAQ,OAAO++E,EAAI65E,aAAap8N,EAAMilM,IAAK,aAAa,CAAC1iD,EAAIn9E,GAAG,2BAA2Bm9E,EAAI39E,GAAG29E,EAAI57I,KAAKk2N,QAAQ,4BAA4Bt6E,EAAIl9E,KAAKk9E,EAAIn9E,GAAG,KAAMm9E,EAAa,UAAEp8E,EAAG,YAAY,CAACyP,YAAY,aAAa90E,MAAM,CAAC,KAAO,OAAO,KAAO,QAAQwY,GAAG,CAAC,MAAQ,SAASkqD,GAAQ,OAAO++E,EAAI65E,aAAap8N,EAAMilM,IAAK,aAAa,CAAC1iD,EAAIn9E,GAAG,2BAA2Bm9E,EAAI39E,GAAG29E,EAAI57I,KAAKm2N,SAAS,4BAA4Bv6E,EAAIl9E,KAAKk9E,EAAIn9E,GAAG,KAAMm9E,EAAa,UAAEp8E,EAAG,YAAY,CAACyP,YAAY,aAAa90E,MAAM,CAAC,KAAO,OAAO,KAAO,QAAQwY,GAAG,CAAC,MAAQ,SAASkqD,GAAQ,OAAO++E,EAAI65E,aAAap8N,EAAMilM,IAAK,iBAAiB,CAAC1iD,EAAIn9E,GAAG,2BAA2Bm9E,EAAI39E,GAAG29E,EAAI57I,KAAKo2N,QAAQ,4BAA4Bx6E,EAAIl9E,MAAM,GAAGk9E,EAAIl9E,KAAKk9E,EAAIn9E,GAAG,KAAoB,IAAdplE,EAAMilM,IAAIvlM,KAAY6iJ,EAAI+2E,YAAc/2E,EAAIg3E,UAAYpzJ,EAAG,MAAM,CAACo8E,EAAIn9E,GAAG,UAAUm9E,EAAIl9E,aAAa,GAAGk9E,EAAIn9E,GAAG,KAAKe,EAAG,WAAW,CAACzK,WAAW,CAAC,CAAChtE,KAAK,OAAOoqF,QAAQ,SAAS1pF,OAAQmzJ,EAAIi9K,kBAAmBxxP,WAAW,uBAAuBltE,MAAM,CAAC,oBAAoB,CAAC6jB,OAAO,OAAOu7H,WAAW,UAAUn4C,MAAM,QAAQ,OAAS,GAAG,KAAOw6C,EAAI69K,2BAA2B,CAACj6P,EAAG,kBAAkB,CAACrlE,MAAM,CAAC,KAAO,MAAM,MAAQyhJ,EAAI57I,KAAKq2N,uBAAuB,wBAAwB,GAAG,MAAQ,QAAQ92J,YAAYq8E,EAAIj9E,GAAG,CAAC,CAAC51E,IAAI,UAAUkH,GAAG,SAASoJ,GAAO,MAAO,CAACuiJ,EAAIn9E,GAAG,qBAAqBm9E,EAAI39E,GAAG5kE,EAAMilM,IAAIhuM,KAAK,yBAAyBsrJ,EAAIn9E,GAAG,KAAKe,EAAG,kBAAkB,CAACrlE,MAAM,CAAC,KAAO,UAAU,MAAQyhJ,EAAI57I,KAAKs2N,eAAe,wBAAwB,IAAI/2J,YAAYq8E,EAAIj9E,GAAG,CAAC,CAAC51E,IAAI,UAAUkH,GAAG,SAASoJ,GAAO,MAAO,CAACuiJ,EAAIn9E,GAAG,qBAAqBm9E,EAAI39E,GAAG5kE,EAAMilM,IAAI8zB,SAAW/4N,EAAMilM,IAAI+zB,OAAS,KAAK,yBAAyBz2E,EAAIn9E,GAAG,KAAKe,EAAG,kBAAkB,CAACrlE,MAAM,CAAC,KAAO,QAAQ,MAAQyhJ,EAAI57I,KAAKu2N,eAAe,OAAO,wBAAwB,IAAIh3J,YAAYq8E,EAAIj9E,GAAG,CAAC,CAAC51E,IAAI,UAAUkH,GAAG,SAASoJ,GAAO,MAAO,CAACuiJ,EAAIn9E,GAAG,qBAAqBm9E,EAAI39E,GAAG5kE,EAAMilM,IAAI+zB,OAAO,yBAAyBz2E,EAAIn9E,GAAG,KAAKe,EAAG,kBAAkB,CAACrlE,MAAM,CAAC,KAAO,UAAU,MAAQyhJ,EAAI57I,KAAKw2N,WAAW,wBAAwB,IAAIj3J,YAAYq8E,EAAIj9E,GAAG,CAAC,CAAC51E,IAAI,UAAUkH,GAAG,SAASoJ,GAAO,MAAO,CAACuiJ,EAAIn9E,GAAG,qBAAqBm9E,EAAI39E,GAAG5kE,EAAMilM,IAAIo2B,SAAWr7N,EAAMilM,IAAIs2B,OAAS,KAAK,yBAAyBh5E,EAAIn9E,GAAG,KAAKe,EAAG,kBAAkB,CAACrlE,MAAM,CAAC,KAAO,QAAQ,MAAQyhJ,EAAI57I,KAAKy2N,aAAa,wBAAwB,IAAIl3J,YAAYq8E,EAAIj9E,GAAG,CAAC,CAAC51E,IAAI,UAAUkH,GAAG,SAASoJ,GAAO,MAAO,CAACuiJ,EAAIn9E,GAAG,qBAAqBm9E,EAAI39E,GAAG5kE,EAAMilM,IAAIs2B,OAAO,yBAAyBh5E,EAAIn9E,GAAG,KAAKe,EAAG,kBAAkB,CAACrlE,MAAM,CAAC,KAAO,aAAa,MAAQyhJ,EAAI57I,KAAK02N,aAAa,wBAAwB,IAAIn3J,YAAYq8E,EAAIj9E,GAAG,CAAC,CAAC51E,IAAI,UAAUkH,GAAG,SAASoJ,GAAO,MAAO,CAACuiJ,EAAIn9E,GAAG,qBAAqBm9E,EAAI39E,GAAG29E,EAAIt9E,GAAG,aAAPs9E,CAAqBviJ,EAAMilM,IAAIw2B,WAAW5mO,WAAWwF,MAAM,KAAK,KAAK,yBAAyBkoJ,EAAIn9E,GAAG,KAAKe,EAAG,kBAAkB,CAACrlE,MAAM,CAAC,KAAO,KAAK,MAAQyhJ,EAAI57I,KAAKi2N,WAAW,MAAQ,SAAS12J,YAAYq8E,EAAIj9E,GAAG,CAAC,CAAC51E,IAAI,UAAUkH,GAAG,SAASoJ,GAAO,MAAO,CAAgB,IAAdA,EAAMilM,IAAIvlM,GAAQymE,EAAG,MAAM,CAAEo8E,EAAa,UAAEp8E,EAAG,YAAY,CAACyP,YAAY,aAAagG,YAAY,CAAC,MAAQ,OAAO96E,MAAM,CAAC,KAAO,OAAO,KAAO,QAAQwY,GAAG,CAAC,MAAQ,SAASkqD,GAAQ,OAAO++E,EAAI65E,aAAap8N,EAAMilM,IAAK,oBAAoB,CAAC1iD,EAAIn9E,GAAG,8BAA8Bm9E,EAAI39E,GAAG29E,EAAI57I,KAAKo2N,QAAQ,4BAA4Bx6E,EAAIl9E,MAAM,GAAGk9E,EAAIl9E,KAAKk9E,EAAIn9E,GAAG,KAAoB,IAAdplE,EAAMilM,IAAIvlM,IAAW6iJ,EAAIg3E,UAAsCh3E,EAAIl9E,KAA/Bc,EAAG,MAAM,CAACo8E,EAAIn9E,GAAG,kBAA2B,GAAGm9E,EAAIn9E,GAAG,KAAKe,EAAG,MAAM,CAACyP,YAAY,UAAU,CAACzP,EAAG,YAAY,CAACrlE,MAAM,CAAC,eAAeyhJ,EAAI88K,cAAcv7H,WAAW,aAAa,CAACvhD,EAAI88K,cAAct7H,WAAW,OAAS,0CAA0C,MAAQxhD,EAAI88K,cAAc3zM,QAAQpyG,GAAG,CAAC,iBAAiBipI,EAAI4+K,uBAAuB,IAAI,GAAG5+K,EAAIn9E,GAAG,KAAKe,EAAG,MAAM,CAACyP,YAAY,gCAAgC,CAACzP,EAAG,MAAM,CAACyP,YAAY,6BAA6B,CAACzP,EAAG,OAAO,CAACo8E,EAAIn9E,GAAGm9E,EAAI39E,GAAG29E,EAAI57I,KAAKs7T,wBAAwB1/K,EAAIn9E,GAAG,KAAKe,EAAG,aAAa,CAACrlE,MAAM,CAAC,eAAe,sBAAsB,OAAS,OAAO,UAAY,UAAU,CAACqlE,EAAG,MAAM,CAACrlE,MAAM,CAAC,KAAO,WAAWmgE,KAAK,WAAW,CAACshF,EAAIn9E,GAAG,IAAIm9E,EAAI39E,GAAG29E,EAAI57I,KAAKm3T,iCAAiC,OAAOv7K,EAAIn9E,GAAG,KAAKe,EAAG,MAAM,CAACyV,YAAY,CAAC,OAAS,WAAW96E,MAAM,CAAC,IAAM,yCAAyCyhJ,EAAIn9E,GAAG,KAAKe,EAAG,MAAM,CAACyV,YAAY,CAAC,KAAO,IAAI,gBAAgB,SAAS,CAACzV,EAAG,SAAS,CAACyP,YAAY,gBAAgBt8D,GAAG,CAAC,MAAQ,SAASkqD,GAAQ,OAAO++E,EAAI++K,eAAe,UAAU,CAAC/+K,EAAIn9E,GAAGm9E,EAAI39E,GAAG29E,EAAI57I,KAAKu7T,wBAAwB,GAAG3/K,EAAIn9E,GAAG,KAAKe,EAAG,WAAW,CAACyV,YAAY,CAAC,MAAQ,QAAQ96E,MAAM,CAAC,oBAAoB,CAAC6jB,OAAO,OAAOu7H,WAAW,UAAUn4C,MAAM,QAAQ,OAAS,GAAG,KAAOw6C,EAAI89K,uBAAuB,CAACl6P,EAAG,kBAAkB,CAACyP,YAAY,OAAO90E,MAAM,CAAC,KAAO,KAAK,MAAQyhJ,EAAI57I,KAAK2gM,KAAK,MAAQ/kD,EAAI02E,eAAeuD,cAAc,IAAIt2J,YAAYq8E,EAAIj9E,GAAG,CAAC,CAAC51E,IAAI,UAAUkH,GAAG,SAASoJ,GAAO,MAAO,CAACuiJ,EAAIn9E,GAAG,qBAAqBm9E,EAAI39E,GAAG5kE,EAAMilM,IAAIvlM,IAAI,yBAAyB6iJ,EAAIn9E,GAAG,KAAKe,EAAG,kBAAkB,CAACrlE,MAAM,CAAC,MAAQ,IAAI,MAAQyhJ,EAAI57I,KAAK+zM,+BAA+B,KAAO,WAAW,wBAAwB,MAAMn4D,EAAIn9E,GAAG,KAAKe,EAAG,kBAAkB,CAACrlE,MAAM,CAAC,MAAQ,IAAI,MAAQyhJ,EAAI57I,KAAKi0M,6BAA6B,KAAO,SAAS,wBAAwB,IAAI10I,YAAYq8E,EAAIj9E,GAAG,CAAC,CAAC51E,IAAI,UAAUkH,GAAG,SAASoJ,GAAO,MAAO,CAACuiJ,EAAIn9E,GAAG,qBAAqBm9E,EAAI39E,GAAG29E,EAAIt9E,GAAG,aAAPs9E,CAAqBviJ,EAAMilM,IAAI63H,SAAS,yBAAyBv6K,EAAIn9E,GAAG,KAAKe,EAAG,kBAAkB,CAACrlE,MAAM,CAAC,MAAQyhJ,EAAI57I,KAAKi3T,wBAAwB,KAAO,UAAU13P,YAAYq8E,EAAIj9E,GAAG,CAAC,CAAC51E,IAAI,UAAUkH,GAAG,SAASoJ,GAAO,MAAO,CAACmmE,EAAG,MAAM,CAACyP,YAAY,eAAe2sE,EAAI19E,GAAI7kE,EAAMilM,IAAU,QAAE,SAAS0Y,GAAI,OAAOx3I,EAAG,MAAM,CAACz2E,IAAIiuN,EAAG/nI,YAAY,WAAW,CAAE+nI,EAAY,UAAEx3I,EAAG,MAAM,CAACrlE,MAAM,CAAC,IAAM,yCAAyCyhJ,EAAIl9E,KAAKk9E,EAAIn9E,GAAG,uBAAuBm9E,EAAI39E,GAAG29E,EAAI+7K,eAAe3gH,EAAG7mB,KAAK,2BAA0B,UAAUv0C,EAAIn9E,GAAG,KAAKe,EAAG,kBAAkB,CAACrlE,MAAM,CAAC,KAAO,KAAK,MAAQyhJ,EAAI57I,KAAKi2N,WAAW,MAAQr6E,EAAI02E,eAAeuD,cAAc,IAAIt2J,YAAYq8E,EAAIj9E,GAAG,CAAC,CAAC51E,IAAI,UAAUkH,GAAG,SAASoJ,GAAO,MAAO,CAAgB,IAAdA,EAAMilM,IAAIvlM,GAAQymE,EAAG,MAAM,CAAEo8E,EAAa,UAAEp8E,EAAG,YAAY,CAACyP,YAAY,aAAa90E,MAAM,CAAC,KAAO,OAAO,KAAO,SAASwY,GAAG,CAAC,MAAQ,SAASkqD,GAAQ,OAAO++E,EAAI++K,eAAe,SAAUthU,EAAMilM,QAAQ,CAAC1iD,EAAIn9E,GAAG,2BAA2Bm9E,EAAI39E,GAAG29E,EAAI57I,KAAKk2N,QAAQ,4BAA4Bt6E,EAAIl9E,KAAKk9E,EAAIn9E,GAAG,KAAMm9E,EAAa,UAAEp8E,EAAG,YAAY,CAACyP,YAAY,aAAa90E,MAAM,CAAC,KAAO,OAAO,KAAO,QAAQwY,GAAG,CAAC,MAAQ,SAASkqD,GAAQ,OAAO++E,EAAI++K,eAAe,SAAUthU,EAAMilM,QAAQ,CAAC1iD,EAAIn9E,GAAG,2BAA2Bm9E,EAAI39E,GAAG29E,EAAI57I,KAAKo2N,QAAQ,4BAA4Bx6E,EAAIl9E,MAAM,GAAGk9E,EAAIl9E,KAAKk9E,EAAIn9E,GAAG,KAAoB,IAAdplE,EAAMilM,IAAIvlM,KAAY6iJ,EAAI+2E,YAAc/2E,EAAIg3E,UAAYpzJ,EAAG,MAAM,CAACo8E,EAAIn9E,GAAG,UAAUm9E,EAAIl9E,aAAa,GAAGk9E,EAAIn9E,GAAG,KAAKe,EAAG,MAAM,CAACyP,YAAY,UAAU,CAACzP,EAAG,YAAY,CAACrlE,MAAM,CAAC,eAAeyhJ,EAAIg9K,aAAaz7H,WAAW,aAAa,CAACvhD,EAAIg9K,aAAax7H,WAAW,OAAS,0CAA0C,MAAQxhD,EAAIg9K,aAAa7zM,QAAQpyG,GAAG,CAAC,iBAAiBipI,EAAI6+K,yBAAyB,IAAI,GAAG7+K,EAAIn9E,GAAG,KAAKe,EAAG,oBAAoB,CAACrlE,MAAM,CAAC,UAAYyhJ,EAAIq3E,gBAAgB,mBAAqBr3E,EAAIgzE,mBAAmB,mBAAqBhzE,EAAIw3E,eAAe,UAAYx3E,EAAIsuD,MAAM,YAActuD,EAAI22E,YAAY5/M,GAAG,CAAC,eAAiBipI,EAAI85E,gBAAgB95E,EAAIn9E,GAAG,KAAKe,EAAG,oBAAoB,CAACrlE,MAAM,CAAC,UAAYyhJ,EAAIs3E,gBAAgB,mBAAqBt3E,EAAIgzE,mBAAmB,mBAAqBhzE,EAAIw3E,eAAe,UAAYx3E,EAAIsuD,MAAM,UAAYtuD,EAAIqjD,UAAU,YAAcrjD,EAAI22E,YAAY5/M,GAAG,CAAC,eAAiBipI,EAAI85E,gBAAgB95E,EAAIn9E,GAAG,KAAKe,EAAG,oBAAoB,CAACrlE,MAAM,CAAC,UAAYyhJ,EAAIu3E,gBAAgB,gBAAkBv3E,EAAI61E,gBAAgB,mBAAqB71E,EAAIgzE,mBAAmB,mBAAqBhzE,EAAIw3E,gBAAgBzgN,GAAG,CAAC,eAAiBipI,EAAI+5E,kBAAkB/5E,EAAIn9E,GAAG,KAAKe,EAAG,oBAAoB,CAACphB,IAAI,kBAAkBjkD,MAAM,CAAC,UAAYyhJ,EAAIk9K,eAAe,eAAiBl9K,EAAIq6K,eAAe,YAAcr6K,EAAIs9K,kBAAkB,UAAYt9K,EAAIsuD,MAAM,YAActuD,EAAI22E,YAAY5/M,GAAG,CAAC,SAAWipI,EAAIg/K,kBAAkBh/K,EAAIn9E,GAAG,KAAKe,EAAG,oBAAoB,CAACrlE,MAAM,CAAC,UAAYyhJ,EAAIm9K,eAAe,UAAYn9K,EAAIsuD,MAAM,WAAatuD,EAAIi/K,aAAa,aAAej/K,EAAI47K,cAAc7kT,GAAG,CAAC,YAAcipI,EAAIq/K,qBAAqBr/K,EAAIn9E,GAAG,KAAKe,EAAG,aAAa,CAACrlE,MAAM,CAAC,KAAOyhJ,EAAIw9K,iBAAiB,MAAQ,IAAI,MAAQ,KAAK,CAAC55P,EAAG,KAAK,CAACrlE,MAAM,CAAC,KAAO,UAAUmgE,KAAK,UAAU,CAACshF,EAAIn9E,GAAGm9E,EAAI39E,GAAG29E,EAAI57I,KAAKg4T,gCAAgCp8K,EAAIn9E,GAAG,KAAKe,EAAG,MAAM,CAACyP,YAAY,uBAAuBgG,YAAY,CAAC,QAAU,YAAY,gBAAgB,oBAAoB,aAAa,mBAAmB,CAACzV,EAAG,MAAM,CAACyP,YAAY,sBAAsB,CAACzP,EAAG,MAAM,CAACo8E,EAAIn9E,GAAGm9E,EAAI39E,GAAG29E,EAAI57I,KAAKw7T,6BAA6B5/K,EAAIn9E,GAAG,KAAKe,EAAG,MAAM,CAACyP,YAAY,cAAc2sE,EAAI19E,GAAI09E,EAAgB,cAAE,SAASltJ,GAAM,OAAO8wE,EAAG,MAAM,CAACz2E,IAAI2F,EAAKugF,YAAY,cAAc,CAAC2sE,EAAIn9E,GAAG,sBAAsBm9E,EAAI39E,GAAGvvE,GAAM,wBAAuB,OAAOktJ,EAAIn9E,GAAG,KAAKe,EAAG,0BAA0B,CAACrlE,MAAM,CAAC,KAAO,UAAUmgE,KAAK,UAAU,CAACkF,EAAG,gBAAgB,CAAC7sD,GAAG,CAAC,MAAQipI,EAAIg8K,gBAAgB,CAACh8K,EAAIn9E,GAAG,eAAem9E,EAAI39E,GAAG29E,EAAI57I,KAAKo4T,yBAAyB,iBAAiB,IAAI,IAAI,KAC7xY,IDWpB,EACA,KACA,WACA,M,kIEyBF,ICxC+M,GDwC/M,CACErwU,KAAM,gBACNmuB,MAAO,CACLulT,oBAAqB,CAAE3vU,KAAMoqE,QAASkgI,UAAU,GAChDslI,cAAe,CAAE5vU,KAAMuL,OAAQ++L,UAAU,GACzC8T,MAAO,CAAEp+M,KAAMuL,OAAQ++L,UAAU,GACjC6I,UAAW,CAAEnzM,KAAMoqE,QAASkgI,UAAU,GACtC24B,YAAa,CAAEjjO,KAAMuL,OAAQ++L,UAAU,GACvCulI,mBAAoB,CAAE7vU,KAAMoqE,QAASkgI,UAAU,IAEjDhnI,MAAO,CACL,oBAAJ,YAIM,OAHN,GACQ,KAAR,iBAEA,GAEI,cAAJ,YAEM,OADA,KAAN,iBACA,IAGEtiD,KAAF,iBACI,MAAO,CACL9M,KAAMyyL,OAAOC,IAAIC,SAASC,MAC1B09B,uBAAuB,EACvBsrG,kBAAkB,EAClB7sG,YAAaxkO,KAAKwkO,YAClBQ,YAAa,CACXxnO,KAAM,CACd,mFAEQooM,GAAI,CACZ,2EAEQigC,UAAW,CACnB,6EAEQC,iBAAkB,CAC1B,sFACA,+BAEQx4L,KAAM,CACd,+EAGMs4L,UAAW,CACTp3N,GAAI,GACJhR,KAAM,GACNooM,GAAI,GACJigC,UAAW,GACXC,iBAAkB,GAClBvkO,KAAMvB,KAAKmxU,cACX7jS,KAAM,IAERgkS,eAAN,UnX2EsC,ImX1EtC,8BADA,KnX+EoC,ImX7EpC,2BAFA,KnXiFyC,ImX9EzC,kCAHA,KnXuFqC,ImXnFrC,iBAJA,IAIA,0BAJA,KAQE7lS,QAAS,CAEP8lS,iBAFJ,SAEA,GACUn1T,EAAIA,EAAE0F,cACV,GAAN,mBACQ9hB,KAAKqxU,kBAAmB,MAD1B,CAKA,GAAN,YAEQ,GAHR,4CAGA,QAEU,YADA,KAAV,2BAGA,2CACU,KAAV,yBAEU,KAAV,4BAKIG,mBAvBJ,WAwBMxxU,KAAKwgF,MAAMixP,gBAAgBxlI,SAAS,SAAUgf,GACxCA,IACFzyI,QAAQkuI,cAClB,wBACY1mN,KAAK0xU,yBAEL1xU,KAAK2xU,uBAGjB,aAIIC,qBArCJ,SAqCA,GACM,IAAN,GACQjyH,MAAO3/M,KAAK2/M,MACZ0pB,MAAOwoG,EAAW,GAClBzoG,QAASyoG,EAAa,MAAKA,EAAW,GACtCC,aAAcD,EAAkB,UAChC/rG,iBAAkB,MAEpB7lC,OAAOwC,KAAK,2CAA4CljK,GAAO6E,QAAQ,SAAUy9B,KACvF,6BACA,eACU,GAAV,GAEU7hE,KAAK6mN,SAAS3+M,MAAM2U,EAAK1U,MAEnC,mBAIIupU,uBAxDJ,WAyDM,IAAN,GACQ72H,UAAW76M,KAAK2/M,MAChBniN,KAAMwC,KAAK4lO,UAAUpoO,KAAK4sC,OAC1Bw7J,GAAI5lM,KAAK4lO,UAAUhgC,GAAGx7J,OACtB2nS,UAAW/xU,KAAK4lO,UAAUC,UAAUz7L,QAE5C,OACM61J,OAAOwC,KAAK,+BAAgCljK,GAAO6E,QAAQ,SAAUy9B,GACnE,GAAR,QACU,IAAV,SACA,iBnXAsC,MmXCtC,qBACc,KAAd,wBAEY7hE,KAAK6mN,SAAS,CAAEpmM,QAAShL,KAAK8hN,eAAgBh2N,KAAM,YACpDvB,KAAKkxU,qBAAsB,EAC3BlxU,KAAKq7E,MAAM,cAAe,CACxBp+D,MAAM,EACN1b,KAAMvB,KAAK4lO,UAAUrkO,KACrB+wM,WAAY,CAACzwI,EAAIt/C,SAGnBo0L,OAAOgtB,OAAO,CACZhkD,MAAOuoB,OAAOC,IAAIC,SAASC,MAAMu7B,gBACjC72K,SACd,+GAEA,KAFA,oCAKA,kDALA,aAQc//B,QAAd,OACc80L,GAAd,WACgB9hN,KAAKi9K,QACL9pH,EAAM6+Q,+BAKZhyU,KAAK6mN,SAAS3+M,MAAMuN,KAAKw8T,yBACzBjyU,KAAKgyU,wBAEf,6BACA,eACUtuG,GAAV,GAEU1jO,KAAK6mN,SAAS3+M,MAAM2U,EAAK1U,MAEnC,qCAIIwpU,mBA/GJ,WAgHM,IAAN,GACQ,MAAS3xU,KAAK2/M,MACd,QAAW3/M,KAAK4lO,UAAUpoO,KAAK4sC,OAC/B,MAASpqC,KAAK4lO,UAAUhgC,GAAGx7J,OAC3B,aAAgBpqC,KAAK4lO,UAAUC,UAAUz7L,OACzC,iBAAoBpqC,KAAK4lO,UAAUE,iBAAiB17L,QAA5D,MAEM61J,OAAOwC,KAAK,2CAA4CljK,GAAO6E,QAAQ,SAAUy9B,GAC/E7hE,KAAK6mN,SAAS,CAAEpmM,QAAShL,KAAK8hN,eAAgBh2N,KAAM,YACpDvB,KAAKkxU,qBAAsB,EAC3BlxU,KAAKq7E,MAAM,cAAe,CACxB,MAAV,EACU,KAAV,oBACU,WAAV,YAEA,6BACA,eACU,GAAV,GAEUr7E,KAAK6mN,SAAS3+M,MAAM2U,EAAK1U,MAEnC,qCAII6pU,qBAzIJ,WAyIA,WACMhyU,KAAKkxU,qBAAsB,EAC3BlxU,KAAKq7E,MAAM,cAAe,CACxBp+D,KAAMjd,KAAKoxU,mBACX7vU,KAAMvB,KAAK4lO,UAAUrkO,KACrB+wM,WAAY,KAEd1yL,YAAW,WACT,EAAR,mBACA,KAIIsoT,eAtJJ,WAuJM,KAAN,WACQ,GAAR,8BACQ,iBAAR,oBAEM,KAAN,iBACM,KAAN,uBACM,KAAN,sBACM,KAAN,yBACM,KAAN,oBACM,KAAN,uCErPe,GAXC,YACd,ICRW,WAAa,IAAI72K,EAAIrxJ,KAASyyG,EAAG4+C,EAAIhgF,eAAmB4D,EAAGo8E,EAAI9wE,MAAMtL,IAAIw9B,EAAG,OAAOx9B,EAAG,aAAa,CAACyP,YAAY,oBAAoB90E,MAAM,CAAC,KAAOyhJ,EAAI6/K,oBAAoB,MAAQ,IAAI,MAAQ,KAAK,CAACj8P,EAAG,KAAK,CAACrlE,MAAM,CAAC,KAAO,UAAUmgE,KAAK,UAAU,CAACshF,EAAIn9E,GAAGm9E,EAAI39E,GAAG29E,EAAIigL,cAAcjgL,EAAI8/K,mBAAmB9/K,EAAIn9E,GAAG,KAAKe,EAAG,MAAM,CAACyV,YAAY,CAAC,OAAS,cAAc,gBAAgB,oBAAoB,aAAa,mBAAmB,CAACzV,EAAG,UAAU,CAACphB,IAAI,kBAAkB6wB,YAAY,kBAAkB90E,MAAM,CAAC,MAAQyhJ,EAAIu0E,UAAU,MAAQv0E,EAAI2zE,YAAY,cAAc3zE,EAAImzE,cAAc,CAACvvJ,EAAG,eAAe,CAACrlE,MAAM,CAAC,MAAQyhJ,EAAI57I,KAAKwvN,cAAc,KAAO,SAAS,CAAChwJ,EAAG,WAAW,CAACrlE,MAAM,CAAC,UAAY,GAAG,YAAcyhJ,EAAI57I,KAAKivN,oBAAoBprJ,MAAM,CAACp7E,MAAOmzJ,EAAIu0E,UAAc,KAAEt/N,SAAS,SAAUu9L,GAAMxyC,EAAIlwE,KAAKkwE,EAAIu0E,UAAW,OAAQ/hC,IAAM/mH,WAAW,qBAAqB,GAAGu0E,EAAIn9E,GAAG,KAAKe,EAAG,eAAe,CAACrlE,MAAM,CAAC,MAAQyhJ,EAAI57I,KAAK44L,GAAG,KAAO,OAAO,CAACp5H,EAAG,WAAW,CAACrlE,MAAM,CAAC,UAAY,GAAG,YAAcyhJ,EAAI57I,KAAKkvN,YAAYv8M,GAAG,CAAC,MAAQ,SAASkqD,GAAQ,OAAO++E,EAAIkgL,iBAAiBlgL,EAAIu0E,UAAUhgC,MAAMtsH,MAAM,CAACp7E,MAAOmzJ,EAAIu0E,UAAY,GAAEt/N,SAAS,SAAUu9L,GAAMxyC,EAAIlwE,KAAKkwE,EAAIu0E,UAAW,KAAM/hC,IAAM/mH,WAAW,mBAAmB,GAAGu0E,EAAIn9E,GAAG,KAAKe,EAAG,eAAe,CAACrlE,MAAM,CAAC,MAAQyhJ,EAAI57I,KAAKy8T,YAAY,KAAO,cAAc,CAACj9P,EAAG,WAAW,CAACrlE,MAAM,CAAC,UAAY,GAAG,YAAcyhJ,EAAI57I,KAAKqxN,cAAcxtJ,MAAM,CAACp7E,MAAOmzJ,EAAIu0E,UAAmB,UAAEt/N,SAAS,SAAUu9L,GAAMxyC,EAAIlwE,KAAKkwE,EAAIu0E,UAAW,YAAa/hC,IAAM/mH,WAAW,0BAA0B,GAAGu0E,EAAIn9E,GAAG,KAAMm9E,EAAyB,sBAAEp8E,EAAG,eAAe,CAACrlE,MAAM,CAAC,MAAQyhJ,EAAI57I,KAAKsxN,uBAAuB,KAAO,qBAAqB,CAAC9xJ,EAAG,WAAW,CAACrlE,MAAM,CAAC,YAAcyhJ,EAAI57I,KAAKsxN,wBAAwBztJ,MAAM,CAACp7E,MAAOmzJ,EAAIu0E,UAA0B,iBAAEt/N,SAAS,SAAUu9L,GAAMxyC,EAAIlwE,KAAKkwE,EAAIu0E,UAAW,mBAAoB/hC,IAAM/mH,WAAW,+BAA+B,CAAC7H,EAAG,IAAI,CAACrlE,MAAM,CAAC,KAAO,UAAUmgE,KAAK,UAAU,CAACshF,EAAIn9E,GAAG,YAAY,GAAGm9E,EAAIl9E,MAAM,GAAGk9E,EAAIn9E,GAAG,KAAMm9E,EAAyB,sBAAEp8E,EAAG,MAAM,CAACyV,YAAY,CAAC,OAAS,OAAO,cAAc,OAAO,gBAAgB,MAAM,YAAY,OAAO,aAAa,SAAS,MAAQ,QAAQ,CAAC2mE,EAAIn9E,GAAG,WAAWm9E,EAAI39E,GAAG29E,EAAI57I,KAAK08T,iBAAiB,YAAY9gL,EAAIl9E,KAAKk9E,EAAIn9E,GAAG,KAAMm9E,EAAoB,iBAAEp8E,EAAG,MAAM,CAACyV,YAAY,CAAC,QAAU,aAAa,cAAc,OAAO,gBAAgB,MAAM,YAAY,OAAO,aAAa,SAAS,MAAQ,YAAY,CAAC2mE,EAAIn9E,GAAG,WAAWm9E,EAAI39E,GAAG29E,EAAI57I,KAAK28T,yBAAyB,YAAY/gL,EAAIl9E,MAAM,GAAGk9E,EAAIn9E,GAAG,KAAKe,EAAG,0BAA0B,CAACrlE,MAAM,CAAC,KAAO,UAAUmgE,KAAK,UAAU,CAACkF,EAAG,gBAAgB,CAAC7sD,GAAG,CAAC,MAAQipI,EAAI2gL,uBAAuB,CAAC3gL,EAAIn9E,GAAGm9E,EAAI39E,GAAG29E,EAAI57I,KAAKq3F,WAAWukD,EAAIn9E,GAAG,KAAKe,EAAG,gBAAgB,CAAC7sD,GAAG,CAAC,MAAQipI,EAAImgL,qBAAqB,CAACngL,EAAIn9E,GAAGm9E,EAAI39E,GAAG29E,EAAI57I,KAAKyvN,cAAc,IAAI,KACttF,IDUpB,EACA,KACA,WACA,M,QEd0N,GC2B5N,CACE1nO,KAAM,iBACNmuB,MAAO,CACL0mT,qBAAsB,CAAE9wU,KAAMoqE,QAASkgI,UAAU,GACjD8T,MAAO,CAAEp+M,KAAMuL,OAAQ++L,UAAU,GACjC24B,YAAa,CAAEjjO,KAAMuL,OAAQ++L,UAAU,IAEzChnI,MAAO,CACL,qBAAJ,YAIM,OAHN,GACQ,KAAR,iBAEA,IAGEtiD,KAAF,WACI,MAAO,CACL9M,KAAMyyL,OAAOC,IAAIC,SAASC,MAC1Bm8B,YAAaxkO,KAAKwkO,YAClBQ,YAAa,CACXxnO,KAAM,CAAC,CAAEquM,UAAU,EAAOprL,QAASynL,OAAOC,IAAIC,SAASC,MAAMq8B,mBAAoBx7M,QAAS,SAC1F08K,GAAI,CACZ,sDACQ,CAAR,8BAEQwhI,UAAW,CACnB,qEACA,gCAGMO,WAAY,CACVnqU,KAAM,GACNooM,GAAI,GACJwhI,UAAW,MAIjB37R,QAAS,CAEP6mS,kBAAmB,WACjBtyU,KAAKwgF,MAAM+xP,iBAAiBtmI,SAAS,SAAUgf,GAC7C,GAAIA,EAAO,CACTzyI,QAAQkuI,cACR,IAAV,GACY8rH,KAAMxyU,KAAK2/M,MACX8mH,YAAazmU,KAAK2nU,WAAWnqU,KAAK4sC,OAClCi9R,UAAWrnU,KAAK2nU,WAAW/hI,GAAGx7J,OAC9Bg9R,UAAWpnU,KAAK2nU,WAAWP,WAE7BnnI,OAAOwC,KAAK,8BAA+Bx6J,GAAQ7D,QAAQ,SAAUy9B,GAC/E,WACc7hE,KAAKq7E,MAAM,cAAe,CACxBp+D,MAAM,EACN1b,KxXkGmB,IwXjGnB+wM,WAAY,CAAC,CACXm0H,YAAa5kQ,EAAIt/C,KAAkB,YACnC8kT,UAAWxlQ,EAAIt/C,KAAgB,UAC/B6kT,UAAW,GAA7B,qBAIA,4BACgB,GAAhB,kFAEgB,GAAhB,8CAGcpnU,KAAK6mN,SAAS3+M,MAAMuN,KAAK0uN,cAEvC,6BACYT,GAAZ,IACA,2BACY,QAAZ,cACA,cACA,aAIIukG,aAzCJ,WAyCA,WACMjoU,KAAKq7E,MAAM,cAAe,CACxBp+D,MAAM,EACN1b,KxXsE2B,IwXrE3B+wM,WAAY,KAEd1yL,YAAW,WACT,EAAR,mBACA,MAIIsoT,eArDJ,WAsDM,KAAN,wBACM,KAAN,wCACM,KAAN,wCCtGe,GAXC,YACd,ICRW,WAAa,IAAI72K,EAAIrxJ,KAASyyG,EAAG4+C,EAAIhgF,eAAmB4D,EAAGo8E,EAAI9wE,MAAMtL,IAAIw9B,EAAG,OAAOx9B,EAAG,aAAa,CAACyP,YAAY,oBAAoB90E,MAAM,CAAC,KAAOyhJ,EAAIghL,qBAAqB,MAAQ,IAAI,MAAQ,KAAK,CAACp9P,EAAG,KAAK,CAACrlE,MAAM,CAAC,KAAO,UAAUmgE,KAAK,UAAU,CAACshF,EAAIn9E,GAAGm9E,EAAI39E,GAAG29E,EAAI57I,KAAKg9T,2BAA2BphL,EAAIn9E,GAAG,KAAKe,EAAG,MAAM,CAACyV,YAAY,CAAC,OAAS,iBAAiB,gBAAgB,oBAAoB,aAAa,mBAAmB,CAACzV,EAAG,UAAU,CAACphB,IAAI,mBAAmB6wB,YAAY,mBAAmB90E,MAAM,CAAC,MAAQyhJ,EAAIs2K,WAAW,MAAQt2K,EAAI2zE,YAAY,cAAc3zE,EAAImzE,cAAc,CAACvvJ,EAAG,eAAe,CAACrlE,MAAM,CAAC,MAAQyhJ,EAAI57I,KAAKwvN,cAAc,KAAO,SAAS,CAAChwJ,EAAG,WAAW,CAACrlE,MAAM,CAAC,UAAY,GAAG,YAAcyhJ,EAAI57I,KAAKi9T,YAAYp5P,MAAM,CAACp7E,MAAOmzJ,EAAIs2K,WAAe,KAAErhU,SAAS,SAAUu9L,GAAMxyC,EAAIlwE,KAAKkwE,EAAIs2K,WAAY,OAAQ9jI,IAAM/mH,WAAW,sBAAsB,GAAGu0E,EAAIn9E,GAAG,KAAKe,EAAG,eAAe,CAACrlE,MAAM,CAAC,MAAQyhJ,EAAI57I,KAAK44L,GAAG,KAAO,OAAO,CAACp5H,EAAG,WAAW,CAACrlE,MAAM,CAAC,UAAY,GAAG,YAAcyhJ,EAAI57I,KAAKk9T,8BAA8Br5P,MAAM,CAACp7E,MAAOmzJ,EAAIs2K,WAAa,GAAErhU,SAAS,SAAUu9L,GAAMxyC,EAAIlwE,KAAKkwE,EAAIs2K,WAAY,KAAM9jI,IAAM/mH,WAAW,oBAAoB,GAAGu0E,EAAIn9E,GAAG,KAAKe,EAAG,eAAe,CAACrlE,MAAM,CAAC,MAAQyhJ,EAAI57I,KAAK8xT,sBAAsB,KAAO,cAAc,CAACtyP,EAAG,WAAW,CAACrlE,MAAM,CAAC,UAAY,GAAG,YAAcyhJ,EAAI57I,KAAK+xT,4BAA4BluP,MAAM,CAACp7E,MAAOmzJ,EAAIs2K,WAAoB,UAAErhU,SAAS,SAAUu9L,GAAMxyC,EAAIlwE,KAAKkwE,EAAIs2K,WAAY,YAAa9jI,IAAM/mH,WAAW,2BAA2B,IAAI,GAAGu0E,EAAIn9E,GAAG,KAAKe,EAAG,MAAM,CAACyV,YAAY,CAAC,OAAS,WAAW,GAAG2mE,EAAIn9E,GAAG,KAAKe,EAAG,0BAA0B,CAACrlE,MAAM,CAAC,KAAO,UAAUmgE,KAAK,UAAU,CAACkF,EAAG,gBAAgB,CAAC7sD,GAAG,CAAC,MAAQipI,EAAI42K,eAAe,CAAC52K,EAAIn9E,GAAGm9E,EAAI39E,GAAG29E,EAAI57I,KAAKq3F,WAAWukD,EAAIn9E,GAAG,KAAKe,EAAG,gBAAgB,CAAC7sD,GAAG,CAAC,MAAQipI,EAAIihL,oBAAoB,CAACjhL,EAAIn9E,GAAGm9E,EAAI39E,GAAG29E,EAAI57I,KAAKyvN,cAAc,IAAI,KAC9xD,IDUpB,EACA,KACA,KACA,M,iIEUF,ICxB+N,GDwB/N,CACE1nO,KAAM,oBACNmuB,MAAO,CACLinT,eAAgB,CAAErxU,KAAMoqE,QAASkgI,UAAU,GAC3C8T,MAAO,CAAEp+M,KAAMuL,OAAQ++L,UAAU,IAEnCtpL,KAAM,WACJ,MAAO,CACL,KAAN,0BACM,eAAN,oBACM,aAAN,qCACM,UAAN,4BACM,iBAAN,EACM,gBAAN,EACM,mBAAN,EACM,WAAN,KAGEsiD,MAAF,CACI+tQ,eADJ,SACA,GAEM,OADA5yU,KAAK4yU,eAAiB/tU,EACfA,IAGX4mC,QAAS,CAEPonS,gBAAJ,sBACM7yU,KAAKq7E,MAAM,iBAAkB,CAAEp+D,MAAM,EAAOq1L,WAAY,KACxD1yL,YAAW,WACT,EAAR,mBACA,MAGIkzT,cATJ,WAUM9yU,KAAK+yU,mBAAoB,EACzB/yU,KAAKgzU,gBAAiB,EACtBhzU,KAAKizU,iBAAkB,EACvBjzU,KAAKkzU,UAAYz9T,KAAK09T,qBAAuB,IAC7CnzU,KAAKozU,aAAe,mCACpBnzI,OAAOwC,KAAK,6BAA8B,CAAE+vI,KAAMxyU,KAAK2/M,QAASv7K,QAAQ,SAAUy9B,GAChF7hE,KAAKqzU,WAAaxxQ,EAAIt/C,MAAQ,IACtC,sCACQ3C,YAAW,WACT,EAAV,kDACA,yBACY,EAAZ,qBACY,EAAZ,mBACY,EAAZ,+CAEY,EAAZ,kBACY,EAAZ,gDAEA,OACA,aAGI0zT,kBAhCJ,WAgCA,WACMtzU,KAAKq7E,MAAM,iBACjB,CACQ,MAAR,EACQ,WAAR,iCAEMz7D,YAAW,WACT,EAAR,mBACA,MAGI2zT,SA3CJ,WA2CA,WACMvzU,KAAKq7E,MAAM,iBAAkB,CAAE/lD,MAAO,gBAAiBrY,MAAM,IAC7D2C,YAAW,WACT,EAAR,mBACA,MAGIsoT,eAlDJ,WAmDM,KAAN,kBACM,KAAN,kDACM,KAAN,sCACM,KAAN,mBACM,KAAN,kBACM,KAAN,qBACM,KAAN,iBEtFe,I,OAXC,YACd,ICTW,WAAa,IAAI72K,EAAIrxJ,KAASyyG,EAAG4+C,EAAIhgF,eAAmB4D,EAAGo8E,EAAI9wE,MAAMtL,IAAIw9B,EAAG,OAAOx9B,EAAG,aAAa,CAACyP,YAAY,oBAAoB90E,MAAM,CAAC,KAAOyhJ,EAAIuhL,eAAe,MAAQ,IAAI,MAAQ,KAAK,CAAC39P,EAAG,KAAK,CAACrlE,MAAM,CAAC,KAAO,UAAUmgE,KAAK,UAAU,CAACshF,EAAIn9E,GAAGm9E,EAAI39E,GAAG29E,EAAI57I,KAAK+9T,yBAAyBniL,EAAIn9E,GAAG,KAAKe,EAAG,MAAM,CAACyP,YAAY,WAAW,CAACzP,EAAG,MAAM,CAACrlE,MAAM,CAAC,IAAMyhJ,EAAI+hL,aAAa,IAAM,QAAQ/hL,EAAIn9E,GAAG,KAAKe,EAAG,MAAM,CAACyP,YAAY,cAAc,CAACzP,EAAG,OAAO,CAAC3wD,MAAM,CAAEuyF,MAAOw6C,EAAI0hL,kBAAmB,MAAM,UAAW,CAAC1hL,EAAIn9E,GAAGm9E,EAAI39E,GAAG29E,EAAI6hL,gBAAgB7hL,EAAIn9E,GAAG,KAAKe,EAAG,0BAA0B,CAACrlE,MAAM,CAAC,KAAO,UAAUmgE,KAAK,UAAU,CAACkF,EAAG,gBAAgB,CAAC7sD,GAAG,CAAC,MAAQipI,EAAIwhL,kBAAkB,CAACxhL,EAAIn9E,GAAG,aAAam9E,EAAI39E,GAAI29E,EAAI0hL,kBAA+D1hL,EAAI57I,KAAKg+T,8BAApDpiL,EAAI57I,KAAKi+T,iCAA0E,cAAcriL,EAAIn9E,GAAG,KAAOm9E,EAAI4hL,iBAAoB5hL,EAAI0hL,kBAAsK1hL,EAAIl9E,KAAvJc,EAAG,gBAAgB,CAAC7sD,GAAG,CAAC,MAAQipI,EAAIyhL,gBAAgB,CAACzhL,EAAIn9E,GAAG,0BAA0Bm9E,EAAI39E,GAAG29E,EAAI57I,KAAKk+T,+BAA+B,cAAuBtiL,EAAIn9E,GAAG,KAAMm9E,EAAI4hL,kBAAoB5hL,EAAI0hL,kBAAmB99P,EAAG,gBAAgB,CAACrlE,MAAM,CAAC,UAAYyhJ,EAAI2hL,gBAAgB5qT,GAAG,CAAC,MAAQipI,EAAIiiL,oBAAoB,CAACjiL,EAAIn9E,GAAGm9E,EAAI39E,GAAG29E,EAAI57I,KAAKm+T,mCAAmC,cAAcviL,EAAIl9E,KAAKk9E,EAAIn9E,GAAG,KAAMm9E,EAAqB,kBAAEp8E,EAAG,gBAAgB,CAAC7sD,GAAG,CAAC,MAAQipI,EAAIkiL,WAAW,CAACliL,EAAIn9E,GAAG,0BAA0Bm9E,EAAI39E,GAAG29E,EAAI57I,KAAKo+T,wBAAwB,cAAcxiL,EAAIl9E,MAAM,IAAI,KAC96C,IDWpB,EACA,KACA,WACA,M,kIEsBF,ICrC+N,GDqC/N,CACE32E,KAAM,oBACNmuB,MAAO,CACL,eAAJ,2BACI,WAAJ,yBACI,MAAJ,2BAEEk5C,MAAO,CACL,eADJ,SACA,GAEM,OADA,KAAN,YACA,GAEI,WALJ,SAKA,GAEM,OADA,KAAN,iBACA,IAGEtiD,KAAM,WACJ,MAAO,CACL9M,KAAMyyL,OAAOC,IAAIC,SAASC,MAC1Bk8B,UAAWvkO,KAAK8zU,eAChBC,eAAgB,KAGpB3iT,SAAU,CACR4iT,aADJ,WAGM,OADN,mCAIEvoS,QAAS,CAEPwoS,iBAFJ,WAEA,WACM,KAAN,aACM,YAAN,WACQ,EAAR,+BACQ,EAAR,mBACA,MAGIC,YAVJ,SAUA,GACA,IACQl0U,KAAK+zU,eAAiB/zU,KAAK+zU,eAAeviU,QAAO,SAAzD,6BACA,gCACUxR,KAAKi0U,qBAKXE,mBAnBJ,WAoBA,+CACA,2EAEA,SACQ,GAAR,qBAGM37P,QAAQkuI,cACRzmB,OAAOwC,KAAK,4BAA6B,CACvC,KAAR,WACQ,YAAR,qCACA,oBACQ,KAAR,qBACU,MAAV,cACU,WAAV,sCAEA,2BACQjqH,QAAQsuI,cAChB,6BACQ4c,GAAR,IACA,cAGIwkG,eA3CJ,WA4CM,KAAN,cACM,KAAN,qBE7Fe,I,OAXC,YACd,ICTW,WAAa,IAAI72K,EAAIrxJ,KAASyyG,EAAG4+C,EAAIhgF,eAAmB4D,EAAGo8E,EAAI9wE,MAAMtL,IAAIw9B,EAAG,OAAOx9B,EAAG,aAAa,CAACyP,YAAY,oBAAoB90E,MAAM,CAAC,KAAOyhJ,EAAIkzE,UAAU,MAAQ,IAAI,MAAQ,KAAK,CAACtvJ,EAAG,KAAK,CAACrlE,MAAM,CAAC,KAAO,UAAUmgE,KAAK,UAAU,CAACshF,EAAIn9E,GAAGm9E,EAAI39E,GAAG29E,EAAI57I,KAAK2+T,6BAA6B/iL,EAAIn9E,GAAG,KAAKe,EAAG,MAAM,CAACyV,YAAY,CAAC,OAAS,YAAY,YAAY,OAAO,eAAe,SAAS,CAACzV,EAAG,OAAO,CAACo8E,EAAIn9E,GAAGm9E,EAAI39E,GAAG29E,EAAI57I,KAAK4+T,oCAAoChjL,EAAIn9E,GAAG,KAAKe,EAAG,MAAM,CAACyV,YAAY,CAAC,QAAU,SAAS,gBAAgB,SAAS,CAACzV,EAAG,MAAM,CAACyP,YAAY,mBAAmB,CAACzP,EAAG,MAAM,CAACyP,YAAY,eAAe,CAAC2sE,EAAIn9E,GAAGm9E,EAAI39E,GAAG29E,EAAI57I,KAAK6+T,gCAAgCjjL,EAAIn9E,GAAG,KAAKe,EAAG,MAAM,CAACyP,YAAY,eAAegG,YAAY,CAAC,eAAe,UAAU,CAAC2mE,EAAIn9E,GAAGm9E,EAAI39E,GAAG29E,EAAI57I,KAAK8+T,8BAA8BljL,EAAIn9E,GAAG,KAAKe,EAAG,MAAM,CAACyP,YAAY,iBAAiBgG,YAAY,CAAC,MAAQ,SAAS,CAAC2mE,EAAIn9E,GAAG,eAAem9E,EAAI39E,GAAG29E,EAAI57I,KAAKi2N,iBAAiBr6E,EAAIn9E,GAAG,KAAKe,EAAG,MAAM,CAACyP,YAAY,qBAAqB2sE,EAAI19E,GAAI09E,EAAgB,cAAE,SAASltJ,EAAKzC,GAAO,OAAOuzE,EAAG,MAAM,CAACz2E,IAAIkD,EAAMgjF,YAAY,iBAAiB,CAACzP,EAAG,MAAM,CAACyP,YAAY,cAAc90E,MAAM,CAAC,MAAQzL,EAAKsiU,cAAc,CAACp1K,EAAIn9E,GAAGm9E,EAAI39E,GAAGvvE,EAAKsiU,gBAAgBp1K,EAAIn9E,GAAG,KAAKe,EAAG,MAAM,CAACyP,YAAY,gBAAgB,CAAC2sE,EAAIn9E,GAAGm9E,EAAI39E,GAAGvvE,EAAKwiU,cAAct1K,EAAIn9E,GAAG,KAAM/vE,EAAc,UAAE8wE,EAAG,MAAM,CAACyP,YAAY,iBAAiBgG,YAAY,CAAC,OAAS,WAAWtiE,GAAG,CAAC,MAAQ,SAASkqD,GAAQ,OAAO++E,EAAI6iL,YAAY/vU,EAAKwiU,cAAc,CAACt1K,EAAIn9E,GAAG,mBAAmBm9E,EAAI39E,GAAG29E,EAAI57I,KAAKo2N,QAAQ,oBAAoBx6E,EAAIl9E,UAAS,KAAKk9E,EAAIn9E,GAAG,KAAKe,EAAG,MAAM,CAACyV,YAAY,CAAC,OAAS,YAAY,QAAU,SAAS,YAAY,SAAS,CAACzV,EAAG,MAAM,CAACyV,YAAY,CAAC,gBAAgB,QAAQ,CAAC2mE,EAAIn9E,GAAGm9E,EAAI39E,GAAG29E,EAAI57I,KAAK++T,oCAAoCnjL,EAAIn9E,GAAG,KAAKe,EAAG,0BAA0B,CAACrlE,MAAM,CAAC,KAAO,UAAUmgE,KAAK,UAAU,CAACkF,EAAG,gBAAgB,CAAC7sD,GAAG,CAAC,MAAQipI,EAAI4iL,mBAAmB,CAAC5iL,EAAIn9E,GAAGm9E,EAAI39E,GAAG29E,EAAI57I,KAAKg/T,oCAAoCpjL,EAAIn9E,GAAG,KAAKe,EAAG,gBAAgB,CAAC7sD,GAAG,CAAC,MAAQipI,EAAI8iL,qBAAqB,CAAC9iL,EAAIn9E,GAAGm9E,EAAI39E,GAAG29E,EAAI57I,KAAKm+T,uCAAuC,IAAI,KACxiE,IDWpB,EACA,KACA,WACA,M,SEfsI,GCIzH,CACbp2U,KAAM,eACNmuB,MAAO,CACL+oT,iBAAkB,CAAEnzU,KAAMoqE,QAASkgI,UAAU,GAC7C8T,MAAO,CAAEp+M,KAAMuL,OAAQ++L,UAAU,GACjC24B,YAAa,CAAEjjO,KAAMuL,OAAQ++L,UAAU,IAEzC1sH,WAAY,CAAEw1P,kBAAgBC,qBAAmBC,sBACjDtyT,KAAK,WACH,MAAO,CACL9M,KAAMyyL,OAAOC,IAAIC,SAASC,MAC1BsX,MAAO3/M,KAAK2/M,MACZ6kB,YAAaxkO,KAAKwkO,YAClBswG,oBAAoB,EACpBC,WAAYt/T,KAAK+9T,qBACjBwB,WAAY,CACV,CAACj9H,MAAOtiM,KAAK+9T,qBAAsB3uU,IAAK4Q,KAAK+9T,qBAC5C9iH,OAAQ,sCAAuC8S,UAAW,2CAC3D,CAACzrB,MAAOtiM,KAAKw/T,mBAAoBpwU,IAAK4Q,KAAKw/T,mBAC1CvkH,OAAQ,qCAAsC8S,UAAW,2CAE5D0xG,gBAAgB,EAChBC,gBAAgB,EAChBC,cAAe,KAGnB3pS,QAAS,CAEP4pS,iBAFO,WAEY,WACjBr1U,KAAKq7E,MAAM,cAAe,CAACp+D,MAAM,IACjC2C,YAAW,WACT,EAAKsoT,mBACJ,MAGLoN,oBATO,SASanxU,GAAM,WACxBnE,KAAKu1U,iBAAiBpxU,GACtByb,YAAW,WACT,EAAK41T,mBACJ,KAGLD,iBAhBO,SAgBUpxU,GACfnE,KAAK+0U,WAAa5wU,EAAKU,KAGzB2wU,eApBO,WAsBL,OADAx1U,KAAK00U,kBAAmB,EACjB10U,KAAK+0U,YACV,KAAKt/T,KAAK+9T,qBACRxzU,KAAKk1U,gBAAiB,EACtB,MAEF,KAAKz/T,KAAKw/T,mBACNj1U,KAAK80U,oBAAqB,IASlCW,iBArCO,SAqCU5zQ,GACZA,EAAI5kD,MACLjd,KAAKkoU,iBACFrmQ,EAAIywI,WAAW3wM,OAAS,GACzB3B,KAAKq7E,MAAM,cAAexZ,IAG5B7hE,KAAKq1U,oBAITK,aAhDO,SAgDM7zQ,GAAK,WAEhB,GADA7hE,KAAKk1U,gBAAiB,EACnBrzQ,EAAIvsC,OAAuB,kBAAdusC,EAAIvsC,MAKjB,OAJAt1B,KAAKkoU,sBACLtoT,YAAW,WACT,EAAKk1T,oBAAqB,IACzB,IAGHjzQ,EAAI5kD,MACLjd,KAAKo1U,cAAgBvzQ,EAAIywI,WACzB1yL,YAAW,WACT,EAAKu1T,gBAAiB,IACrB,KAEHn1U,KAAKq1U,oBAITM,iBAnEO,SAmEU9zQ,GAAK,WACjBA,EAAI5kD,MACLjd,KAAKkoU,iBACLtpT,GAAOnJ,KAAKmgU,2BAA2B,EAAE,WACzCh2T,YAAW,WACT,EAAKy7D,MAAM,cAAexZ,KACzB,IAEH7hE,KAAKq1U,oBAKTnN,eAhFO,WAiFLloU,KAAK00U,kBAAmB,EACxB10U,KAAK80U,oBAAqB,EAC1B90U,KAAKk1U,gBAAiB,EACtBl1U,KAAKm1U,gBAAiB,EACtBn1U,KAAKo1U,cAAgB,GACrBp1U,KAAK+0U,WAAat/T,KAAK+9T,wBCjGd,I,OAXC,YACd,ICTW,WAAa,IAAIniL,EAAIrxJ,KAASyyG,EAAG4+C,EAAIhgF,eAAmB4D,EAAGo8E,EAAI9wE,MAAMtL,IAAIw9B,EAAG,OAAOx9B,EAAG,MAAM,CAACA,EAAG,aAAa,CAACyP,YAAY,oBAAoB90E,MAAM,CAAC,KAAOyhJ,EAAIqjL,iBAAiB,MAAQ,IAAI,MAAQ,KAAK,CAACz/P,EAAG,KAAK,CAACrlE,MAAM,CAAC,KAAO,UAAUmgE,KAAK,UAAU,CAACshF,EAAIn9E,GAAGm9E,EAAI39E,GAAG29E,EAAI57I,KAAKogU,gCAAgCxkL,EAAIn9E,GAAG,KAAKe,EAAG,MAAM,CAACyV,YAAY,CAAC,OAAS,OAAO,QAAU,OAAO,kBAAkB,gBAAgB,QAAU,WAAW2mE,EAAI19E,GAAI09E,EAAc,YAAE,SAASltJ,EAAKzC,GAAO,OAAOuzE,EAAG,MAAM,CAACz2E,IAAIkD,EAAMgjF,YAAY,kBAAkBjK,MAAM,CAAC,yBAA0Bt2E,EAAK4zM,QAAU1mD,EAAI0jL,YAAYnlU,MAAM,CAAC,MAAQzL,EAAK4zM,OAAO3vL,GAAG,CAAC,MAAQ,SAASkqD,GAAQ,OAAO++E,EAAIkkL,iBAAiBpxU,IAAO,SAAW,SAASmuE,GAAQ,OAAO++E,EAAIikL,oBAAoBnxU,MAAS,CAAC8wE,EAAG,MAAM,CAACyP,YAAY,kBAAkB2sE,EAAIn9E,GAAG,KAAKe,EAAG,MAAM,CAACyP,YAAY,cAAc,CAACzP,EAAG,MAAM,CAACrlE,MAAM,CAAC,IAAMzL,EAAK4zM,QAAU1mD,EAAI0jL,WAAa5wU,EAAKq/N,UAAWr/N,EAAKusN,OAAO,IAAM,QAAQr/D,EAAIn9E,GAAG,KAAKe,EAAG,MAAM,CAACyP,YAAY,eAAepgE,MAAM,CAAEuyF,MAAO1yG,EAAK4zM,QAAU1mD,EAAI0jL,WAAa,UAAW,YAAa,CAAC1jL,EAAIn9E,GAAG,qBAAqBm9E,EAAI39E,GAAGvvE,EAAK4zM,OAAO,yBAAwB,GAAG1mD,EAAIn9E,GAAG,KAAKe,EAAG,MAAM,CAACyP,YAAY,YAAY,CAACzP,EAAG,KAAK,CAACo8E,EAAIn9E,GAAGm9E,EAAI39E,GAAG29E,EAAI57I,KAAK+9T,yBAAyBniL,EAAIn9E,GAAG,KAAKe,EAAG,IAAI,CAACo8E,EAAIn9E,GAAGm9E,EAAI39E,GAAG29E,EAAI57I,KAAKqgU,oCAAoCzkL,EAAIn9E,GAAG,KAAKe,EAAG,KAAK,CAACo8E,EAAIn9E,GAAGm9E,EAAI39E,GAAG29E,EAAI57I,KAAKnV,KAAK,IAAI+wJ,EAAI39E,GAAG29E,EAAI57I,KAAKw/T,uBAAuB5jL,EAAIn9E,GAAG,KAAKe,EAAG,IAAI,CAACo8E,EAAIn9E,GAAGm9E,EAAI39E,GAAG29E,EAAI57I,KAAKsgU,oCAAoC1kL,EAAIn9E,GAAG,KAAKe,EAAG,0BAA0B,CAACrlE,MAAM,CAAC,KAAO,UAAUmgE,KAAK,UAAU,CAACkF,EAAG,gBAAgB,CAAC7sD,GAAG,CAAC,MAAQipI,EAAIgkL,mBAAmB,CAAChkL,EAAIn9E,GAAGm9E,EAAI39E,GAAG29E,EAAI57I,KAAKq3F,WAAWukD,EAAIn9E,GAAG,KAAKe,EAAG,gBAAgB,CAAC7sD,GAAG,CAAC,MAAQipI,EAAImkL,iBAAiB,CAACnkL,EAAIn9E,GAAGm9E,EAAI39E,GAAG29E,EAAI57I,KAAK9H,UAAU,IAAI,GAAG0jJ,EAAIn9E,GAAG,KAAKe,EAAG,iBAAiB,CAACrlE,MAAM,CAAC,qBAAuByhJ,EAAIyjL,mBAAmB,MAAQzjL,EAAIsuD,MAAM,YAActuD,EAAImzE,aAAap8M,GAAG,CAAC,YAAcipI,EAAIokL,oBAAoBpkL,EAAIn9E,GAAG,KAAKe,EAAG,oBAAoB,CAACrlE,MAAM,CAAC,eAAiByhJ,EAAI6jL,eAAe,MAAQ7jL,EAAIsuD,OAAOv3L,GAAG,CAAC,eAAiBipI,EAAIqkL,gBAAgBrkL,EAAIn9E,GAAG,KAAKe,EAAG,oBAAoB,CAACrlE,MAAM,CAAC,eAAiByhJ,EAAI8jL,eAAe,WAAa9jL,EAAI+jL,cAAc,MAAQ/jL,EAAIsuD,OAAOv3L,GAAG,CAAC,YAAcipI,EAAIskL,qBAAqB,KACxsE,IDWpB,EACA,KACA,WACA,M,SEfiN,GC0CnN,CACEn4U,KAAM,oBACNmuB,MAAO,CACL,eAAJ,2BACI,WAAJ,yBACI,MAAJ,2BAEEk5C,MAAO,CACL,eADJ,SACA,GAEM,OADA,KAAN,YACA,GAEI,WALJ,SAKA,GAEM,OADA,KAAN,iBACA,IAGEtiD,KAAM,WACJ,MAAO,CACL9M,KAAMyyL,OAAOC,IAAIC,SAASC,MAC1B0rI,eAAgB,GAChBxvG,UAAWvkO,KAAK8zU,eAChBkC,eAAgB,KAGpB5kT,SAAU,CACR4iT,aADJ,WAGM,OADN,mCAIEvoS,QAAS,CAEPwoS,iBAFJ,WAEA,WACM,KAAN,aACM,YAAN,WACQ,EAAR,+BACQ,EAAR,mBACA,MAGIC,YAVJ,SAUA,GACA,IACQl0U,KAAK+zU,eAAiB/zU,KAAK+zU,eAAeviU,QAAO,SAAzD,GACU,OAAOrN,EAAKyhM,KAAOA,KAE7B,+BACU5lM,KAAKi0U,mBAELj0U,KAAKq7E,MAAM,aAAcr7E,KAAK+zU,kBAKpCkC,eAvBJ,WAwBMz9P,QAAQkuI,cACRzmB,OAAOwC,KAAK,gDAClB,kBACQ,iBAAR,EACQ,QAAR,sBACA,+BACA,SACU,KAAV,uBAEQ,KAAR,aACQ,KAAR,0EACQ,YAAR,WACU,EAAV,mBACA,MACA,6BACQ,KAAR,uBACA,2BACQ,QAAR,cACA,aAGIyzI,gBA7CJ,WA8CMl2U,KAAKukO,WAAY,EACjBvkO,KAAKq7E,MAAM,mBxYkDqB,MwY/ClC86P,cAlDJ,WAmDMn2U,KAAKukO,WAAY,EACjBvkO,KAAKq7E,MAAM,mBxYmDwB,MwYhDrC6sP,eAvDJ,WAwDM,KAAN,cACM,KAAN,kBACM,KAAN,qBChHe,I,OAXC,YACd,ICTW,WAAa,IAAI72K,EAAIrxJ,KAASyyG,EAAG4+C,EAAIhgF,eAAmB4D,EAAGo8E,EAAI9wE,MAAMtL,IAAIw9B,EAAG,OAAOx9B,EAAG,aAAa,CAACyP,YAAY,oBAAoB90E,MAAM,CAAC,KAAOyhJ,EAAIkzE,UAAU,MAAQ,IAAI,MAAQ,KAAK,CAACtvJ,EAAG,KAAK,CAACrlE,MAAM,CAAC,KAAO,UAAUmgE,KAAK,UAAU,CAACshF,EAAIn9E,GAAGm9E,EAAI39E,GAAG29E,EAAI57I,KAAK2gU,iCAAiC/kL,EAAIn9E,GAAG,KAAKe,EAAG,MAAM,CAACyV,YAAY,CAAC,OAAS,YAAY,YAAY,OAAO,eAAe,SAAS,CAACzV,EAAG,OAAO,CAACo8E,EAAIn9E,GAAGm9E,EAAI39E,GAAG29E,EAAI57I,KAAK4gU,6BAA6BhlL,EAAIn9E,GAAG,KAAKe,EAAG,MAAM,CAACyV,YAAY,CAAC,QAAU,SAAS,gBAAgB,SAAS,CAACzV,EAAG,MAAM,CAACyP,YAAY,mBAAmB,CAACzP,EAAG,MAAM,CAACyP,YAAY,eAAe,CAAC2sE,EAAIn9E,GAAGm9E,EAAI39E,GAAG29E,EAAI57I,KAAK6+T,gCAAgCjjL,EAAIn9E,GAAG,KAAKe,EAAG,MAAM,CAACyP,YAAY,eAAegG,YAAY,CAAC,eAAe,UAAU,CAAC2mE,EAAIn9E,GAAGm9E,EAAI39E,GAAG29E,EAAI57I,KAAK8+T,8BAA8BljL,EAAIn9E,GAAG,KAAKe,EAAG,MAAM,CAACyP,YAAY,iBAAiBgG,YAAY,CAAC,MAAQ,SAAS,CAAC2mE,EAAIn9E,GAAG,eAAem9E,EAAI39E,GAAG29E,EAAI57I,KAAKi2N,iBAAiBr6E,EAAIn9E,GAAG,KAAKe,EAAG,MAAM,CAACyP,YAAY,qBAAqB2sE,EAAI19E,GAAI09E,EAAgB,cAAE,SAASltJ,EAAKzC,GAAO,OAAOuzE,EAAG,MAAM,CAACz2E,IAAIkD,EAAMgjF,YAAY,iBAAiB,CAACzP,EAAG,MAAM,CAACyP,YAAY,cAAc90E,MAAM,CAAC,MAAQzL,EAAK3G,OAAO,CAAC6zJ,EAAIn9E,GAAGm9E,EAAI39E,GAAGvvE,EAAK3G,SAAS6zJ,EAAIn9E,GAAG,KAAKe,EAAG,MAAM,CAACyP,YAAY,gBAAgB,CAAC2sE,EAAIn9E,GAAGm9E,EAAI39E,GAAGvvE,EAAKyhM,OAAOv0C,EAAIn9E,GAAG,KAAM/vE,EAAO,GAAE8wE,EAAG,MAAM,CAACyP,YAAY,iBAAiBgG,YAAY,CAAC,OAAS,WAAWtiE,GAAG,CAAC,MAAQ,SAASkqD,GAAQ,OAAO++E,EAAI6iL,YAAY/vU,EAAKyhM,OAAO,CAACv0C,EAAIn9E,GAAG,mBAAmBm9E,EAAI39E,GAAG29E,EAAI57I,KAAKo2N,QAAQ,oBAAoBx6E,EAAIl9E,UAAS,KAAKk9E,EAAIn9E,GAAG,KAAKe,EAAG,MAAM,CAACyV,YAAY,CAAC,OAAS,YAAY,QAAU,SAAS,YAAY,SAAS,CAACzV,EAAG,MAAM,CAACyV,YAAY,CAAC,gBAAgB,QAAQ,CAAC2mE,EAAIn9E,GAAGm9E,EAAI39E,GAAG29E,EAAI57I,KAAK6gU,4BAA4BjlL,EAAIn9E,GAAG,KAAKe,EAAG,MAAM,CAACyP,YAAY,kBAAkB,CAACzP,EAAG,OAAO,CAAC7sD,GAAG,CAAC,MAAQipI,EAAI6kL,kBAAkB,CAAC7kL,EAAIn9E,GAAGm9E,EAAI39E,GAAG29E,EAAI57I,KAAK8gU,mCAAmCllL,EAAIn9E,GAAG,gCAAgCe,EAAG,OAAO,CAAC7sD,GAAG,CAAC,MAAQipI,EAAI8kL,gBAAgB,CAAC9kL,EAAIn9E,GAAGm9E,EAAI39E,GAAG29E,EAAI57I,KAAK+gU,sCAAsCnlL,EAAIn9E,GAAG,KAAKe,EAAG,0BAA0B,CAACrlE,MAAM,CAAC,KAAO,UAAUmgE,KAAK,UAAU,CAACkF,EAAG,gBAAgB,CAAC7sD,GAAG,CAAC,MAAQipI,EAAI4iL,mBAAmB,CAAC5iL,EAAIn9E,GAAGm9E,EAAI39E,GAAG29E,EAAI57I,KAAKg/T,oCAAoCpjL,EAAIn9E,GAAG,KAAKe,EAAG,gBAAgB,CAAC7sD,GAAG,CAAC,MAAQipI,EAAI4kL,iBAAiB,CAAC5kL,EAAIn9E,GAAGm9E,EAAI39E,GAAG29E,EAAI57I,KAAKk+T,mCAAmC,IAAI,KAC/xE,IDWpB,EACA,KACA,WACA,M,SEfwI,GCC3H,CACbn2U,KAAM,iBACNmuB,MAAO,CACLg0L,MAAO,CAAEp+M,KAAMuL,OAAQ++L,UAAU,IAEnCtpL,KALa,WAMX,MAAO,CACL9M,KAAMyyL,OAAOC,IAAIC,SAASC,MAC1BouI,SAAU,KAGd5xQ,MAAO,CACL4xQ,SADK,SACKr6T,GACJA,EAAEza,OAAS,GACb3B,KAAKmiF,WAAU,WxgBShB,IAAuBu0P,KwgBRNnsS,EAAE,kDAAkDt3B,KAAK,OxgBStE,IAAIk6D,SAAQ,SAAC3wD,EAASC,GAC3B,IAAIwxJ,EAAM,IAAIl7C,MACVlxD,EAAM,GAEVosG,EAAIznI,OAAS,WACXq7B,EAAM,CACJxwC,MAAOrxB,KAAKqxB,MACZoC,OAAQzzB,KAAKyzB,QAEfjX,EAAQqlD,IAEVosG,EAAI3pK,IAAMoyU,MwgBpByE55T,MAAK,SAAA+kD,GAElF,GAAIA,EAAIpuC,OAAS,IAAMouC,EAAIxwC,MAAQ,IAAK,CACtCkZ,EAAE,kDAAkD9W,OAAO,KAC3D,IAAI6oC,EAAOuF,EAAIxwC,MAAQwwC,EAAIpuC,OAC3B8W,EAAE,kDAAkDlZ,MAAa,IAAPirC,YAOtE7wB,QAAS,CAEPwxI,MAFO,WAGLj9K,KAAKy2U,SAAW,GAChBz2U,KAAKq7E,MAAM,kBAAmB,UAGhCs7P,aAPO,SAOOpgU,GACZvW,KAAKy2U,SAAWz2U,KAAKy2U,SAASjlU,QAAO,SAACrN,GACpCA,EAAKie,IAAO7L,EAAK6L,OAEnBpiB,KAAKy2U,SAAW,IAGlBG,WAdO,SAcKrgU,EAAMkgU,GAChB,IAAMI,EAAWtgU,EAAKqmC,MAAQ,EACxBk6R,EAAWvgU,EAAK/Y,KAAKgiH,UAAUjpG,EAAK/Y,KAAKylD,YAAY,MACxD,CAAC,OAAQ,OAAQ,QAAQ/E,SAAS44R,GAClC92U,KAAKy2U,SAAWA,GAEhBz2U,KAAK6mN,SAAS3+M,MAAMuN,KAAKshU,yBACzB/2U,KAAKy2U,SAAW,IAEH,IAAbI,GACEA,EAAS,KAAO,GAAKA,EAAS,KAAK,KAAO,KAC3C72U,KAAK6mN,SAAS3+M,MAAMuN,KAAKuhU,0CACzBh3U,KAAKy2U,SAAW,KAGlBz2U,KAAK6mN,SAAS3+M,MAAMuN,KAAKw8T,yBACzBjyU,KAAKy2U,SAAW,KAIpBQ,YAlCO,WAmCL,GAA4B,GAAxBj3U,KAAKy2U,SAAS90U,OAAlB,CAIA,IAAMwxD,EAAQnzD,KACR+0L,EAAS,IAAID,WACnBC,EAAOE,cAAcj1L,KAAKy2U,SAAS,GAAGn1T,KACtCyzK,EAAOvuJ,OAAS,SAAU34B,GACxB2qE,QAAQkuI,cACRzmB,OAAOwC,KAAK,iCAAkC,CAC7CoY,UAAW1nJ,EAAMwsJ,MACjBlpM,MAAO5I,EAAEnG,OAAOvG,OAAOgI,MAAM,KAAK,KAAKi7B,QAAQ,SAASy9B,GACvD,GAAgB,SAAbA,EAAIt/C,KAGL,OAFA4wC,EAAM0zJ,SAAS3+M,MAAMuN,KAAKuuN,+BAC1B7wK,EAAMsjR,SAAW,IAGnB,GAAG50Q,EAAIt/C,KAAM,CACX,IAAMgrT,EAAY1rQ,EAAIt/C,KAAJ,WAAyB,GACrC20T,EAAcr1Q,EAAIt/C,KAAJ,aAA2B,GAC/C,GAAwB,IAArBgrT,EAAU5rU,OACgB,IAAvBu1U,EAAYv1U,QACbwxD,EAAM0zJ,SAASziL,QAAQ3uB,KAAK8hN,gBAC5BpkK,EAAMkoB,MAAM,kBAAmB67P,IAE/B/jR,EAAM0zJ,SAAS3+M,MAAMuN,KAAK0hU,2CAE5BhkR,EAAMsjR,SAAW,OACb,CACL,IAAMW,EAAc,CAClBC,YAAa,GACbC,cAAe,GACfC,SAAU,GACVC,WAAY,GACZC,WAAYlK,EAAU5rU,QAAU,EAChC+1U,aAAcR,EAAYv1U,QAAU,EACpCo5D,MAAOwyQ,EAAU5rU,OAASu1U,EAAYv1U,QAExC4rU,EAAUpiS,SAAQ,SAAAhnC,GAAUizU,EAAA,YAA2B50U,KAAK2B,EAAKyhM,OACjEwxI,EAAA,SAA0BA,EAAA,YAA2BpoU,KAAK,MACvDkoU,EAAYv1U,OAAS,GACrBu1U,EAAY/rS,SAAQ,SAAAhnC,GAAUizU,EAAA,cAA6B50U,KAAK2B,EAAKyhM,OACrEwxI,EAAA,WAA4BA,EAAA,cAA6BpoU,KAAK,OAE9DooU,EAAA,WAA4B3hU,KAAKqzM,WAEpCnS,OAAO8L,QACL,iPAGMhtM,KAAKkiU,aAAgB,uDACnBP,EAAA,MAJR,qHAMM3hU,KAAKmiU,yBAA2B,qDAC9BR,EAAA,WAPR,oHASM3hU,KAAKoiU,yBAA2B,qDAC9BT,EAAA,aAVR,sFAaM3hU,KAAKqiU,wBAbX,+GAgBMV,EAAA,SAhBN,yEAmBM3hU,KAAKsiU,yBAnBX,gHAsBMX,EAAA,WAtBN,eAyBF,CAAC3hU,KAAKqsM,GAAGrsM,KAAKq3F,SACd,WACE9sG,KAAKi9K,QACqB,IAAvBi6J,EAAYv1U,OACbwxD,EAAMkoB,MAAM,kBAAmB67P,GAG/B/jR,EAAM0zJ,SAAS3+M,MAAMuN,KAAKuiU,2CAE5B7kR,EAAMsjR,SAAW,MAEnB,WACEz2U,KAAKi9K,QACL9pH,EAAMsjR,SAAW,YAIrBtjR,EAAM0zJ,SAAS3+M,MAAMuN,KAAK0hU,2CAC1BhkR,EAAMsjR,SAAW,IAEnBh4U,KAAKuB,OAAO6c,KAAK,SAASA,GAC1Bs2C,EAAM0zJ,SAAS3+M,MAAM2U,EAAK1U,KAC1BgrD,EAAMsjR,SAAW,IACjBh4U,KAAKuB,OAAOkyL,IAAI,WAChB15G,QAAQsuI,cACRroN,KAAKuB,aAhGPA,KAAK6mN,SAAS3+M,MAAMuN,KAAKwiU,4BC7ClB,I,OAXC,YACd,ICTW,WAAa,IAAI5mL,EAAIrxJ,KAASyyG,EAAG4+C,EAAIhgF,eAAmB4D,EAAGo8E,EAAI9wE,MAAMtL,IAAIw9B,EAAG,OAAOx9B,EAAG,MAAM,CAACyP,YAAY,iBAAiB,CAACzP,EAAG,MAAM,CAACyP,YAAY,yBAAyBgG,YAAY,CAAC,UAAU,QAAQ,MAAQ,QAAQ,QAAU,UAAU,CAACzV,EAAG,MAAM,CAACyP,YAAY,0BAA0B,CAACzP,EAAG,KAAK,CAACo8E,EAAIn9E,GAAGm9E,EAAI39E,GAAG29E,EAAI57I,KAAKyiU,wBAAwB7mL,EAAIn9E,GAAG,KAAKe,EAAG,MAAM,CAACyP,YAAY,6BAA6B,CAACzP,EAAG,MAAM,CAACyV,YAAY,CAAC,OAAS,UAAU2mE,EAAIn9E,GAAG,KAAKe,EAAG,YAAY,CAACphB,IAAI,gBAAgB6wB,YAAY,gBAAgB90E,MAAM,CAAC,YAAY,eAAe,eAAc,EAAM,MAAQ,IAAI,YAAYyhJ,EAAIulL,WAAW,YAAYvlL,EAAIolL,UAAUzhQ,YAAYq8E,EAAIj9E,GAAG,CAAC,CAAC51E,IAAI,OAAOkH,GAAG,SAASmuD,GAC7rB,IAAIt9C,EAAOs9C,EAAIt9C,KACf,OAAO0+D,EAAG,MAAM,GAAG,CAACA,EAAG,MAAM,CAACyP,YAAY,iCAAiC90E,MAAM,CAAC,IAAM2G,EAAKgrB,IAAI,IAAM,MAAM8vH,EAAIn9E,GAAG,KAAKe,EAAG,OAAO,CAACyP,YAAY,gCAAgC,CAACzP,EAAG,OAAO,CAACyP,YAAY,8BAA8Bt8D,GAAG,CAAC,MAAQ,SAASkqD,GAAQ,OAAO++E,EAAIslL,aAAapgU,MAAS,CAAC0+D,EAAG,IAAI,CAACyP,YAAY,8BAA8B,CAACzP,EAAG,IAAI,CAACyP,YAAY,eAAe90E,MAAM,CAAC,KAAO,WAAWmgE,KAAK,cAAcshF,EAAIn9E,GAAG,KAAKe,EAAG,IAAI,CAACzK,WAAW,CAAC,CAAChtE,KAAK,OAAOoqF,QAAQ,SAAS1pF,MAA8B,GAAvBmzJ,EAAIolL,SAAS90U,OAAam7E,WAAW,yBAAyB4H,YAAY,mBAAmB,CAAC2sE,EAAIn9E,GAAG,aAAam9E,EAAI39E,GAAG29E,EAAI57I,KAAK0iU,yBAAyB,eAAe,GAAG9mL,EAAIn9E,GAAG,KAAKe,EAAG,IAAI,CAACyP,YAAY,cAAc,CAAC2sE,EAAIn9E,GAAGm9E,EAAI39E,GAAG29E,EAAI57I,KAAK2iU,4BAA4B/mL,EAAIn9E,GAAG,KAAKe,EAAG,MAAM,CAACyP,YAAY,gCAAgC,CAACzP,EAAG,SAAS,CAAC7sD,GAAG,CAAC,MAAQipI,EAAI4rB,QAAQ,CAAC5rB,EAAIn9E,GAAGm9E,EAAI39E,GAAG29E,EAAI57I,KAAKq3F,WAAWukD,EAAIn9E,GAAG,KAAKe,EAAG,SAAS,CAAC7sD,GAAG,CAAC,MAAQipI,EAAI4lL,cAAc,CAAC5lL,EAAIn9E,GAAGm9E,EAAI39E,GAAG29E,EAAI57I,KAAKyvN,qBAC/7B,IDSpB,EACA,KACA,WACA,M,kIEOF,ICtB+M,GDsB/M,CACE1nO,KAAM,gBACNmuB,MAAO,CACLinT,eAAgB,CAAErxU,KAAMoqE,QAASkgI,UAAU,GAC3C8T,MAAO,CAAEp+M,KAAMuL,OAAQ++L,UAAU,GACjCulI,mBAAoB,CAAE7vU,KAAMoqE,QAASkgI,UAAU,GAC/CwsI,aAAc,CAAE92U,KAAML,MAAO2qM,UAAU,IAEzCtpL,KAAM,WACJ,MAAO,CACL,KAAN,0BACM,eAAN,oBACM,aAAN,kBACM,aAAN,qCACM,UAAN,4BACM,iBAAN,EACM,gBAAN,EACM,aAAN,EACM,WAAN,KAGEsiD,MAAF,CACI+tQ,eADJ,SACA,GAEM,OADA5yU,KAAK4yU,eAAiB/tU,EACfA,IAGX4mC,QAAS,CAEPonS,gBAAJ,sBACM7yU,KAAKq7E,MAAM,iBAAkB,CAAEp+D,KAAMjd,KAAKoxU,mBAAoB9+H,WAAY,KAC1E1yL,YAAW,WACT,EAAR,mBACA,MAGIkzT,cATJ,WAUM,KAAN,eACM,KAAN,kBACM,KAAN,mBACM,KAAN,wCACM,KAAN,gDACA,kBACQ,OAAR,qCACUj4H,UAAW76M,KAAK2/M,MAChB24H,aAAct4U,KAAKq4U,eAC7B,oBACA,SACY,KAAZ,oBAEA,6BACU,KAAV,uBACA,2BAAU,IAAV,OACU,YAAV,WACY,EAAZ,kDACA,yBACc,EAAd,+CACc,EAAd,eACc,EAAd,qBAEc,EAAd,kBACc,EAAd,gDAEA,OACA,YAEQ,KAAR,2CAKI/E,kBA5CJ,WA4CA,WACMtzU,KAAKq7E,MAAM,iBACjB,CACQ,MAAR,EACQ,WAAR,iCAEMz7D,YAAW,WACT,EAAR,mBACA,MAGIsoT,eAvDJ,WAwDM,KAAN,kBACM,KAAN,kDACM,KAAN,sCACM,KAAN,mBACM,KAAN,kBACM,KAAN,eACM,KAAN,kBACM,KAAN,iBE7Fe,I,OAXC,YACd,ICTW,WAAa,IAAI72K,EAAIrxJ,KAASyyG,EAAG4+C,EAAIhgF,eAAmB4D,EAAGo8E,EAAI9wE,MAAMtL,IAAIw9B,EAAG,OAAOx9B,EAAG,aAAa,CAACyP,YAAY,oBAAoB90E,MAAM,CAAC,KAAOyhJ,EAAIuhL,eAAe,MAAQ,IAAI,MAAQ,KAAK,CAAC39P,EAAG,KAAK,CAACrlE,MAAM,CAAC,KAAO,UAAUmgE,KAAK,UAAU,CAACshF,EAAIn9E,GAAGm9E,EAAI39E,GAAG29E,EAAI57I,KAAK8iU,uCAAuClnL,EAAIn9E,GAAG,KAAKe,EAAG,MAAM,CAACyP,YAAY,WAAW,CAACzP,EAAG,MAAM,CAACrlE,MAAM,CAAC,IAAMyhJ,EAAI+hL,aAAa,IAAM,QAAQ/hL,EAAIn9E,GAAG,KAAKe,EAAG,MAAM,CAACyP,YAAY,cAAc,CAACzP,EAAG,OAAO,CAAC3wD,MAAM,CAAEuyF,MAAOw6C,EAAImnL,YAAa,MAAM,UAAW,CAACnnL,EAAIn9E,GAAGm9E,EAAI39E,GAAG29E,EAAI6hL,gBAAgB7hL,EAAIn9E,GAAG,KAAKe,EAAG,0BAA0B,CAACrlE,MAAM,CAAC,KAAO,UAAUmgE,KAAK,UAAU,CAACkF,EAAG,gBAAgB,CAAC7sD,GAAG,CAAC,MAAQipI,EAAIwhL,kBAAkB,CAACxhL,EAAIn9E,GAAGm9E,EAAI39E,GAAG29E,EAAI57I,KAAKi+T,oCAAoCriL,EAAIn9E,GAAG,KAAOm9E,EAAI4hL,iBAAoB5hL,EAAImnL,YAAqJnnL,EAAIl9E,KAA5Ic,EAAG,gBAAgB,CAAC7sD,GAAG,CAAC,MAAQipI,EAAIyhL,gBAAgB,CAACzhL,EAAIn9E,GAAG,0BAA0Bm9E,EAAI39E,GAAG29E,EAAI57I,KAAKk+T,kCAA2CtiL,EAAIn9E,GAAG,KAAMm9E,EAAmB,gBAAEp8E,EAAG,gBAAgB,CAACrlE,MAAM,CAAC,UAAYyhJ,EAAI2hL,gBAAgB5qT,GAAG,CAAC,MAAQipI,EAAIiiL,oBAAoB,CAACjiL,EAAIn9E,GAAGm9E,EAAI39E,GAAG29E,EAAI57I,KAAKm+T,sCAAsCviL,EAAIl9E,KAAKk9E,EAAIn9E,GAAG,KAAMm9E,EAAe,YAAEp8E,EAAG,gBAAgB,CAAC7sD,GAAG,CAAC,MAAQipI,EAAIyhL,gBAAgB,CAACzhL,EAAIn9E,GAAG,0BAA0Bm9E,EAAI39E,GAAG29E,EAAI57I,KAAKgjU,mCAAmCpnL,EAAIl9E,MAAM,IAAI,KAClyC,IDWpB,EACA,KACA,WACA,M,kIEVa,ICL6H,GDK7H,CACb32E,KAAM,mBACNmuB,MAAO,CACL+sT,eAAgB,CAAEn3U,KAAMoqE,QAASkgI,UAAU,GAC3C8T,MAAO,CAAEp+M,KAAMuL,OAAQ++L,UAAU,GACjC6I,UAAW,CAAEnzM,KAAMoqE,QAASkgI,UAAU,GACtC24B,YAAa,CAAEjjO,KAAMuL,OAAQ++L,UAAU,GACvC8sI,gBAAiB,CAAEp3U,KAAMoqE,QAASkgI,UAAU,IAE9C1sH,WAAY,CAAEy5P,iBAAeC,iBAAeC,qBAAmBC,mBAC/Dx2T,KAAK,WACH,MAAO,CACL9M,KAAMyyL,OAAOC,IAAIC,SAASC,MAC1BsX,MAAO3/M,KAAK2/M,MACZ6kB,YAAaxkO,KAAKwkO,YAClBgB,WAAY,GACZwzG,kBAAkB,EAClBC,SAAUxjU,KAAK+9T,qBACfwB,WAAY,CACV,CAACj9H,MAAOtiM,KAAK+9T,qBAAsB3uU,IAAK4Q,KAAK+9T,qBAC5C9iH,OAAQ,sCAAuC8S,UAAW,2CAC3D,CAACzrB,MAAOtiM,KAAKyjU,8BAA+Br0U,IAAK4Q,KAAKyjU,8BACrDxoH,OAAQ,uCAAwC8S,UAAW,4CAC5D,CAACzrB,MAAOtiM,KAAKw/T,mBAAoBpwU,IAAK4Q,KAAKw/T,mBAC1CvkH,OAAQ,qCAAsC8S,UAAW,2CAE5D21G,qBAAsB,GACtBC,cAAc,EACdjE,gBAAgB,EAChBD,gBAAgB,EAChBE,cAAe,GACfiE,iBAAiB,EACjBjI,oBAAoB,IAGxB3lS,QAAS,CAEP6tS,eAFO,WAEU,WACft5U,KAAKq7E,MAAM,cAAe,CAACp+D,MAAM,IACjC2C,YAAW,WACT,EAAKsoT,mBACJ,MAGLqR,gBATO,SASSh4U,GAAM,WACpBvB,KAAKwlO,WAAajkO,EAClBqe,YAAW,WACT,EAAKo5T,kBAAmB,IACvB,KAGLQ,kBAhBO,SAgBWr1U,GAAM,WACtBnE,KAAKy5U,eAAet1U,GACpByb,YAAW,WACT,EAAK85T,iBACJ,KAGLD,eAvBO,SAuBQt1U,GACbnE,KAAKi5U,SAAW90U,EAAKU,KAGvB60U,aA3BO,WA4BH15U,KAAK04U,gBAAiB,EACtB,IAAMvlR,EAAQnzD,KACd,OAAOA,KAAKi5U,UACV,KAAKxjU,KAAK+9T,qBACRh7P,QAAQkuI,cACRzmB,OAAOwC,KAAK,wCAAyC,CAAEoY,UAAW76M,KAAK2/M,QAASv7K,QAAQ,SAASy9B,GAC5FA,EAAIt/C,MAAQs/C,EAAIt/C,KAAK5gB,OAAS,GAC/B3B,KAAKm5U,qBAAuBt3Q,EAAIt/C,KAChCviB,KAAKk1U,gBAAiB,GAEtBv+H,OAAO8L,QACP,8EAEIhtM,KAAKkkU,wBAFT,UAGYlkU,KAAKmkU,wBAHjB,YAKA,CAACnkU,KAAKqsM,GAAIrsM,KAAKq3F,SACf,WACE9sG,KAAKi9K,QACL9pH,EAAMomR,gBnZmFc,QmZlFnB,WACDv5U,KAAKi9K,QACL9pH,EAAMomR,gBnZsFiB,SmZnF3B96U,KAAKuB,OAAO6c,MAAK,SAASA,GACxB85L,OAAOC,MAAM/5L,EAAK1U,KAClBgrD,EAAMmmR,oBACPpnJ,IAAI,WACH15G,QAAQsuI,cACVroN,KAAKuB,OACP,MAEF,KAAKyV,KAAKyjU,8BACNl5U,KAAKo5U,cAAe,EACpB,MAEJ,KAAK3jU,KAAKw/T,mBACNj1U,KAAKu5U,gBnZsEsB,OmZ7DrC9D,iBA3EO,SA2EU5zQ,GAAK,WACpB,GAAGA,EAAI5kD,KAAM,CAEX,GADAjd,KAAKg5U,kBAAmB,EACK,IAA1Bn3Q,EAAIywI,WAAW3wM,OAEhB,YADA3B,KAAKm1U,gBAAiB,GnZyDS,MmZtD9BtzQ,EAAItgE,KACLqe,YAAW,WACT,GAAG,EAAKw1T,cAAczzU,OAAS,EAAG,CAChC,IAGO,EAFP,GADoB,EAAKyzU,cAAc1jU,MAAK,SAAAhC,GAAM,OAAOA,EAAGk2L,KAAO/jI,EAAIywI,WAAW,GAAG1M,MAEnF,EAAKihB,SAAS3+M,MAAMuN,KAAKokU,+BAEzB,IAAKzE,eAActiU,QAAnB,WAA8B+uD,EAAIywI,aAEpC1yL,YAAW,WACT,EAAKu1T,gBAAiB,IACrB,UAEH,EAAK95P,MAAM,cAAexZ,KAE3B,IAEHjiD,YAAW,WACT,GAAGiiD,EAAIywI,YAAczwI,EAAIywI,WAAW3wM,OAAS,EAAG,CAC9C,IAAMm4U,EAAmBj4Q,EAAIywI,WAAW,GAClCynI,EAAS,EAAK3I,mBAAqB0I,EAAA,GAAyBA,EAAA,MAClE,EAAKX,qBAAuB,CAACY,GAC7B,EAAK7E,gBAAiB,KAEvB,SAGLl1U,KAAKs5U,kBAITU,eAjHO,SAiHQ/8T,GAAM,WACnBjd,KAAKkoU,iBACO,UAATjrT,EACAjd,KAAKq7E,MAAM,cAAe,CAACp+D,MAAM,KAElCjd,KAAKo1U,cAAgBn4T,EACrB2C,YAAW,WACT,EAAKu1T,gBAAiB,IACrB,MAIP8E,iBA7HO,SA6HU7uU,GACfpL,KAAKo1U,cAAgBhqU,GAGvBsqU,aAjIO,SAiIM7zQ,GAAK,WAEhB,GADA7hE,KAAKk1U,gBAAiB,EACnBrzQ,EAAI5kD,KAAM,CAEuB,MADlC,GAAGjd,KAAKo1U,cAAczzU,OAAS,GAC7B,GAA6B,IAA1BkgE,EAAIywI,WAAW3wM,QAChB,EAAA3B,KAAKo1U,eAActiU,QAAnB,WAA8B+uD,EAAIywI,kBAGpCtyM,KAAKo1U,cAAgBvzQ,EAAIywI,WAE3B1yL,YAAW,WACT,EAAKu1T,gBAAiB,IACrB,SAEHn1U,KAAKs5U,kBAIT3D,iBAnJO,SAmJU9zQ,GACZA,EAAI5kD,MACLjd,KAAKkoU,iBACDloU,KAAK24U,iBAGP34U,KAAKq7E,MAAM,cAAexZ,GAC1B7hE,KAAK6mN,SAAS,CAAEpmM,QAAShL,KAAK8hN,eAAgBh2N,KAAM,aAHpDvB,KAAKq5U,iBAAkB,GAMzBr5U,KAAKs5U,kBAITY,iBAjKO,SAiKU34U,GAAK,WACpBvB,KAAKm1U,gBAAiB,EACtBn1U,KAAKwlO,WAAajkO,EAClBvB,KAAKoxU,oBAAqB,EAC1BxxT,YAAW,WACT,EAAK25T,gBAAgBh4U,KACpB,KAGL44U,YA1KO,WA0KO,WACZn6U,KAAKq5U,iBAAkB,EACvBr5U,KAAKq7E,MAAM,cAAe,CAAEp+D,MAAM,IAClC2C,YAAW,WACT,EAAKsoT,mBACJ,MAGLkS,WAlLO,WAmLL5hQ,QAAQkuI,cACRzmB,OAAOwC,KAAK,sCACV,CAAEkd,MAAO3/M,KAAK2/M,QAASv7K,QAAQ,SAAUy9B,GAAK,WAC5C,GAAGA,EAAIt/C,KAAM,CACX,IAAM83T,EAASx4Q,EAAIt/C,KAAJ,SAAuB,OAAS,MAC/C3M,SAASG,KAAO,2CAA6C/V,KAAK2/M,MAAQ,SAAW06H,EAExFz6T,YAAW,WACV,EAAKsoT,mBACH,MACJzpU,KAAKuB,OAAOkyL,IAAI,WACd15G,QAAQsuI,cACVroN,KAAKuB,QAGTkoU,eAlMO,WAmMLloU,KAAK04U,gBAAiB,EACtB14U,KAAKg5U,kBAAmB,EACxBh5U,KAAKk1U,gBAAiB,EACtBl1U,KAAKo5U,cAAe,EACpBp5U,KAAKm1U,gBAAiB,EACtBn1U,KAAKo1U,cAAgB,GACrBp1U,KAAKq5U,iBAAkB,EACvBr5U,KAAKoxU,oBAAqB,EAC1BpxU,KAAKi5U,SAAWxjU,KAAK+9T,wBEhOZ,I,OAXC,YACd,ICTW,WAAa,IAAIniL,EAAIrxJ,KAASyyG,EAAG4+C,EAAIhgF,eAAmB4D,EAAGo8E,EAAI9wE,MAAMtL,IAAIw9B,EAAG,OAAOx9B,EAAG,MAAM,CAACA,EAAG,aAAa,CAACyP,YAAY,oBAAoB90E,MAAM,CAAC,KAAOyhJ,EAAIqnL,eAAe,MAAQ,IAAI,MAAQ,KAAK,CAACzjQ,EAAG,KAAK,CAACrlE,MAAM,CAAC,KAAO,UAAUmgE,KAAK,UAAU,CAACshF,EAAIn9E,GAAGm9E,EAAI39E,GAAG29E,EAAI57I,KAAKogU,gCAAgCxkL,EAAIn9E,GAAG,KAAKe,EAAG,MAAM,CAACyV,YAAY,CAAC,OAAS,OAAO,QAAU,SAAS2mE,EAAI19E,GAAI09E,EAAc,YAAE,SAASltJ,EAAKzC,GAAO,OAAOuzE,EAAG,MAAM,CAACz2E,IAAIkD,EAAMgjF,YAAY,kBAAkBjK,MAAM,CAAC,yBAA0Bt2E,EAAK4zM,QAAU1mD,EAAI4nL,UAAUrpU,MAAM,CAAC,MAAQzL,EAAK4zM,OAAO3vL,GAAG,CAAC,MAAQ,SAASkqD,GAAQ,OAAO++E,EAAIooL,eAAet1U,IAAO,SAAW,SAASmuE,GAAQ,OAAO++E,EAAImoL,kBAAkBr1U,MAAS,CAAC8wE,EAAG,MAAM,CAACyP,YAAY,kBAAkB2sE,EAAIn9E,GAAG,KAAKe,EAAG,MAAM,CAACyP,YAAY,cAAc,CAACzP,EAAG,MAAM,CAACrlE,MAAM,CAAC,IAAMzL,EAAK4zM,QAAU1mD,EAAI4nL,SAAW90U,EAAKq/N,UAAWr/N,EAAKusN,OAAO,IAAM,QAAQr/D,EAAIn9E,GAAG,KAAKe,EAAG,MAAM,CAACyP,YAAY,eAAepgE,MAAM,CAAEuyF,MAAO1yG,EAAK4zM,QAAU1mD,EAAI4nL,SAAW,UAAW,YAAa,CAAC5nL,EAAIn9E,GAAG,qBAAqBm9E,EAAI39E,GAAGvvE,EAAK4zM,OAAO,yBAAwB,GAAG1mD,EAAIn9E,GAAG,KAAKe,EAAG,0BAA0B,CAACrlE,MAAM,CAAC,KAAO,UAAUmgE,KAAK,UAAU,CAACkF,EAAG,gBAAgB,CAAC7sD,GAAG,CAAC,MAAQipI,EAAIioL,iBAAiB,CAACjoL,EAAIn9E,GAAGm9E,EAAI39E,GAAG29E,EAAI57I,KAAKq3F,WAAWukD,EAAIn9E,GAAG,KAAKe,EAAG,gBAAgB,CAAC7sD,GAAG,CAAC,MAAQipI,EAAIqoL,eAAe,CAACroL,EAAIn9E,GAAGm9E,EAAI39E,GAAG29E,EAAI57I,KAAK6kU,sCAAsC,IAAI,GAAGjpL,EAAIn9E,GAAG,KAAKe,EAAG,gBAAgB,CAACrlE,MAAM,CAAC,oBAAsByhJ,EAAI2nL,iBAAiB,cAAgB3nL,EAAIm0E,WAAW,MAAQn0E,EAAIsuD,MAAM,UAAYtuD,EAAIqjD,UAAU,YAAcrjD,EAAImzE,YAAY,mBAAqBnzE,EAAI+/K,oBAAoBhpT,GAAG,CAAC,YAAcipI,EAAIokL,oBAAoBpkL,EAAIn9E,GAAG,KAAKe,EAAG,gBAAgB,CAACrlE,MAAM,CAAC,eAAiByhJ,EAAI6jL,eAAe,aAAe7jL,EAAI8nL,qBAAqB,MAAQ9nL,EAAIsuD,MAAM,mBAAqBtuD,EAAI+/K,oBAAoBhpT,GAAG,CAAC,eAAiBipI,EAAIqkL,gBAAgBrkL,EAAIn9E,GAAG,KAAKe,EAAG,aAAa,CAACyP,YAAY,oBAAoB90E,MAAM,CAAC,KAAOyhJ,EAAI+nL,aAAa,MAAQ,IAAI,MAAQ,KAAK,CAACnkQ,EAAG,iBAAiB,CAACrlE,MAAM,CAAC,MAAQyhJ,EAAIsuD,OAAOv3L,GAAG,CAAC,gBAAkBipI,EAAI2oL,mBAAmB,GAAG3oL,EAAIn9E,GAAG,KAAKe,EAAG,oBAAoB,CAACrlE,MAAM,CAAC,eAAiByhJ,EAAI8jL,eAAe,WAAa9jL,EAAI+jL,cAAc,MAAQ/jL,EAAIsuD,OAAOv3L,GAAG,CAAC,YAAcipI,EAAIskL,iBAAiB,WAAatkL,EAAI4oL,iBAAiB,iBAAmB5oL,EAAI6oL,oBAAoB7oL,EAAIn9E,GAAG,KAAKe,EAAG,aAAa,CAACyP,YAAY,oBAAoB90E,MAAM,CAAC,KAAOyhJ,EAAIgoL,gBAAgB,MAAQ,IAAI,MAAQ,KAAK,CAACpkQ,EAAG,KAAK,CAACrlE,MAAM,CAAC,KAAO,UAAUmgE,KAAK,UAAU,CAACshF,EAAIn9E,GAAGm9E,EAAI39E,GAAG29E,EAAI57I,KAAKqxH,SAASuqB,EAAIn9E,GAAG,KAAKe,EAAG,MAAM,CAACyV,YAAY,CAAC,OAAS,YAAY,YAAY,OAAO,QAAU,OAAO,aAAa,WAAW,CAACzV,EAAG,OAAO,CAACo8E,EAAIn9E,GAAGm9E,EAAI39E,GAAG29E,EAAI57I,KAAK8kU,uCAAuClpL,EAAIn9E,GAAG,KAAKe,EAAG,0BAA0B,CAACrlE,MAAM,CAAC,KAAO,UAAUmgE,KAAK,UAAU,CAACkF,EAAG,gBAAgB,CAAC7sD,GAAG,CAAC,MAAQipI,EAAI8oL,cAAc,CAAC9oL,EAAIn9E,GAAGm9E,EAAI39E,GAAG29E,EAAI57I,KAAK+kU,sCAAsCnpL,EAAIn9E,GAAG,KAAKe,EAAG,gBAAgB,CAAC7sD,GAAG,CAAC,MAAQipI,EAAI+oL,aAAa,CAAC/oL,EAAIn9E,GAAGm9E,EAAI39E,GAAG29E,EAAI57I,KAAK6kU,sCAAsC,IAAI,IAAI,KACz9F,IDWpB,EACA,KACA,WACA,M,kIEkDF,ICjE2M,GDiE3M,CACE98U,KAAM,kBACNmuB,MAAO,CACL8uT,WAAY,CAAEl5U,KAAMoqE,QAASkgI,UAAU,GACvC2mI,KAAM,CAAV,yBACIngI,SAAU,CAAE9wM,KAAMoqE,QAASkgI,UAAU,GACrCm8B,WAAY,CAAhB,0BAEE7oJ,WAAY,CAAEy5P,cAAhB,wCACEr2T,KATF,WASA,MACI,MAAO,CACL9M,KAAMyyL,OAAOC,IAAIC,SAASC,MAC1BmqI,KAAMxyU,KAAKwyU,KACXkI,QAAS,GACTC,eAAe,EACfC,kBAAkB,EAClBp1G,WAAY/vN,KAAK2tN,gCACjBy3G,SAAUt3G,GACVu3G,eAAN,UACA,qCvZ0FoC,KuZ3FpC,KAEA,0CvZ2FyC,KuZ7FzC,KAGA,sCvZoFsC,KuZvFtC,KAIA,avZ2FmC,KuZ/FnC,KAKA,yBvZ8FqC,KuZnGrC,GAOMl1G,UAAW,CACTp3N,GAAI,GACJhR,KAAM,GACNooM,GAAI,GACJigC,UAAW,GACXC,iBAAkB,GAClBvkO,KAAM,GACN+rC,KAAM,IAER0rS,kBAAkB,EAClB+B,sBAAsB,IAG1Bl2Q,MAAO,CACL41Q,WADJ,SACA,GAaM,OAZN,cACA,wB,sHAAA,CACA,IADA,CAEA,CACU1iI,MAAOtiM,KAAKulU,sCACZn2U,IvZoEyB,IuZnEzB6rN,OAAQ,wCACR8S,UAAW,+CAGrB,iBAEavmN,IAGXwuB,QAAS,CAEX,oBAFA,WAGA,sBACA,iCAGA,oBAPA,SAOA,cACA,yBACA,uBACA,wBACA,IAGA,kBAdA,WAcA,WACA,sBACA,wDACA,uBACA,qBACA,+CACA,0BACA,MAEA,gDACA,sBACA,MAEA,QACA,yBAIA,KAGA,iBAnCA,SAmCA,GACA,wBACA,2BAGA,iBAxCA,SAwCA,GACA,sBACA,qCAGA,eA7CA,WA6CA,WACA,gBACQj9B,GAAI,GAAZ,2BACQs3N,iBAAkB,GAA1B,iBAEA,mBACA,yBACA,6BACA,yBACA,uBACA,oDACA,QE7Je,I,OAXC,YACd,ICTW,WAAa,IAAIz0E,EAAIrxJ,KAASyyG,EAAG4+C,EAAIhgF,eAAmB4D,EAAGo8E,EAAI9wE,MAAMtL,IAAIw9B,EAAG,OAAOx9B,EAAG,MAAM,CAACA,EAAG,aAAa,CAACyP,YAAY,oBAAoB90E,MAAM,CAAC,KAAOyhJ,EAAIopL,WAAW,MAAQ,IAAI,MAAQ,KAAK,CAACxlQ,EAAG,KAAK,CAACrlE,MAAM,CAAC,KAAO,UAAUmgE,KAAK,UAAU,CAACshF,EAAIn9E,GAAGm9E,EAAI39E,GAAG29E,EAAI57I,KAAKwlU,iCAAiC5pL,EAAIn9E,GAAG,KAAKe,EAAG,MAAM,CAACyP,YAAY,kBAAkB2sE,EAAI19E,GAAI09E,EAAY,UAAE,SAASltJ,EAAKzC,GAAO,OAAOuzE,EAAG,MAAM,CAACz2E,IAAIkD,EAAMgjF,YAAY,kBAAkBjK,MAAM,CAAC,yBAA0Bt2E,EAAK4zM,QAAU1mD,EAAIm0E,YAAYp9M,GAAG,CAAC,SAAW,SAASkqD,GAAQ,OAAO++E,EAAI6pL,oBAAoB/2U,IAAO,MAAQ,SAASmuE,GAAQ,OAAO++E,EAAI8hD,iBAAiBhvM,MAAS,CAAC8wE,EAAG,MAAM,CAACyP,YAAY,kBAAkB2sE,EAAIn9E,GAAG,KAAKe,EAAG,MAAM,CAACyP,YAAY,cAAc,CAACzP,EAAG,MAAM,CAACrlE,MAAM,CAAC,IAAMzL,EAAK4zM,QAAU1mD,EAAIm0E,WAAarhO,EAAKq/N,UAAWr/N,EAAKusN,OAAO,IAAM,QAAQr/D,EAAIn9E,GAAG,KAAKe,EAAG,MAAM,CAACyP,YAAY,eAAepgE,MAAM,CAAEuyF,MAAO1yG,EAAK4zM,QAAU1mD,EAAIm0E,WAAa,UAAW,YAAa,CAACn0E,EAAIn9E,GAAG,qBAAqBm9E,EAAI39E,GAAGvvE,EAAK4zM,OAAO,yBAAwB,GAAG1mD,EAAIn9E,GAAG,KAAKe,EAAG,0BAA0B,CAACrlE,MAAM,CAAC,KAAO,UAAUmgE,KAAK,UAAU,CAACkF,EAAG,gBAAgB,CAAC7sD,GAAG,CAAC,MAAQipI,EAAI8pL,sBAAsB,CAAC9pL,EAAIn9E,GAAG,iBAAiBm9E,EAAI39E,GAAG29E,EAAI57I,KAAK2lU,yCAAyC/pL,EAAIn9E,GAAG,KAAKe,EAAG,gBAAgB,CAAC7sD,GAAG,CAAC,MAAQipI,EAAIgqL,oBAAoB,CAAChqL,EAAIn9E,GAAG,iBAAiBm9E,EAAI39E,GAAG29E,EAAI57I,KAAK6lU,wCAAwC,IAAI,GAAGjqL,EAAIn9E,GAAG,KAAKe,EAAG,gBAAgB,CAACphB,IAAI,mBAAmBjkD,MAAM,CAAC,cAAgByhJ,EAAIu0E,UAAUrkO,KAAK,oBAAsB8vJ,EAAI2nL,iBAAiB,MAAQ3nL,EAAImhL,KAAK,YAAcnhL,EAAI22E,WAAW,mBAAqB32E,EAAIupL,iBAAiB,UAAYvpL,EAAIghD,UAAUjqL,GAAG,CAAC,YAAcipI,EAAIokL,oBAAoBpkL,EAAIn9E,GAAG,KAAKe,EAAG,mBAAmB,CAACphB,IAAI,oBAAoBjkD,MAAM,CAAC,eAAiByhJ,EAAI0pL,qBAAqB,MAAQ1pL,EAAImhL,KAAK,UAAYnhL,EAAIghD,SAAS,YAAchhD,EAAI22E,WAAW,gBAAkB32E,EAAIspL,eAAevyT,GAAG,CAAC,YAAcipI,EAAIokL,oBAAoBpkL,EAAIn9E,GAAG,KAAKe,EAAG,eAAe,CAACphB,IAAI,kBAAkBjkD,MAAM,CAAC,iBAAmByhJ,EAAIkqL,iBAAiB,MAAQlqL,EAAImhL,KAAK,YAAcnhL,EAAI22E,YAAY5/M,GAAG,CAAC,YAAcipI,EAAIokL,qBAAqB,KACjmE,IDWpB,EACA,KACA,WACA,M,SEfiJ,GCCpI,CACbj4U,KAAM,uBACNmuB,MAAO,CACL44M,UAAW,CAAChjO,KAAMoqE,QAASkgI,UAAU,GACrC8T,MAAO,CAACp+M,KAAMuL,OAAQ++L,UAAU,IAElChnI,MAAO,CACL0/J,UADK,SACK1/N,GAER,OADA7E,KAAKw7U,eAAiB32U,EACfA,IAGX0d,KAZa,WAaX,MAAO,CACL9M,KAAKyyL,OAAOC,IAAIC,SAASC,MACzBsX,MAAO3/M,KAAK2/M,MACZ67H,eAAgBx7U,KAAKukO,UACrBk3G,kBAAmB,CACjB,CACE/qH,OAAQ,yBACRgrH,UAAWjmU,KAAKkmU,uBAChBC,QAASnmU,KAAKomU,yBACdC,SAAU,EACVC,SAAU,sCAEZ,CACErrH,OAAQ,yBACRgrH,UAAWjmU,KAAKumU,gBAChBJ,QAASnmU,KAAKwmU,mBACdH,SAAU,EACVC,SAAU,uCAGdG,UAAW,EACXC,kBAAkB,EAClBC,iBAAiB,EACjBC,kBAAmB,KACnBC,SAAU,CACRC,UAAW,GACXC,mBAAoB,IAEtBrvI,UAAW,CACT+c,EAAG,CAACllN,KAAMyQ,KAAKgnU,6CAA8CC,UAAW,WACxEvyH,EAAG,CAACnlN,KAAMyQ,KAAKknU,6CAA8CD,UAAW,WACxEE,EAAG,CAAC53U,KAAMyQ,KAAKonU,uCAAwCH,UAAW,cAIxEjxS,QAAS,CAEPqxS,oBAFO,WAEe,WACpB98U,KAAKq7E,MAAM,eAAe,GAC1Bz7D,YAAW,WACT,EAAKm9T,kBACJ,MAGLC,WATO,SASKz7U,GAAM,WAChBvB,KAAKkoU,iBACLloU,KAAK+8U,gBACLn9T,YAAW,WACT,EAAKs8T,SAAW36U,EAChB,EAAK46U,kBAAmB,EACxB,EAAKC,iBAAkB,IACtB,IACHx8T,WAAW,WACTqgL,OAAOwC,KAAK,+BAAgC,CAAE,GAAMziM,KAAK2/M,MAAOp+M,SAAO6iC,QAAQ,SAAUy9B,GAAK,WAC1F7hE,KAAKo8U,iBAAkB,EACvBp8U,KAAKm8U,kBAAmB,EACJ,GAAjBn8U,KAAKk8U,WACJl8U,KAAKs8U,SAAW,CACdC,UAAW16Q,EAAIt/C,KAAKg6T,WAAa,GACjCC,mBAAoB36Q,EAAIt/C,KAAKi6T,oBAAsB,KAGrC,GAAjBx8U,KAAKk8U,WACJl8U,KAAKq8U,kBAAoBx6Q,EAAIt/C,KAC1BviB,KAAKq8U,mBAAqBr8U,KAAKq8U,kBAAkB16U,OAAS,GAC3D3B,KAAKq8U,kBAAkBlxS,SAAQ,SAAAhnC,GAC7B,EAAKm4U,SAASC,UAAU/5U,KAAK,CAC3ByzM,cAAe9xM,EAAK8xM,cACpBgnI,UAAW94U,EAAK+4U,yBAK5Bz+U,KAAKuB,OAAO6c,MAAK,SAAUA,GACzB+B,GAAO/B,EAAK1U,IAAK,OAErB1J,KAAKuB,MAAO,MAGhBm9U,cA5CO,WA8CL,GAAoB,GAAjBn9U,KAAKk8U,SACJ,IAAI38S,EAAM,CAAC,GAAMv/B,KAAK2/M,MAAO,aAAgB3/M,KAAKq8U,mBAC9C/+H,EAAM,kDAEN/9K,EAAM,CAAE,GAAMv/B,KAAK2/M,OACnBrC,EAAM,kCAEdt9M,KAAKm8U,kBAAmB,EACxBn8U,KAAKo9U,YAAY9/H,EAAK/9K,GAAO,IAG/B69S,YAzDO,SAyDK9/H,EAAK/9K,EAAO89S,GACtB,IAAMlqR,EAAQnzD,KACdw4E,QAAQkuI,cACRzmB,OAAOwC,KAAK6a,EAAI/9K,GAAO6E,SAAQ,SAAUy9B,GACvC,GAAGA,EAAIt/C,KAAK+6T,YAAcD,EAAa,CAEnC,IADA,IAAIhuT,EAAK,GACDpyB,EAAE,EAAEA,EAAE4kE,EAAIt/C,KAAK6pT,IAAIzqU,OAAO1E,IAC9BoyB,GAAM,OAAOwyC,EAAIt/C,KAAK6pT,IAAInvU,GAAG,QA0BjC,GAxBA05M,OAAOunB,SAAS,CACZv+C,MAAOuoB,OAAOC,IAAIC,SAASC,MAAMk+B,MACjCx5K,SACA,iCACkCm7I,OAAOC,IAAIC,SAASC,MAAMk1I,YAD5D,uLAGkCr1I,OAAOC,IAAIC,SAASC,MAAMm1I,YAH5D,aAKAxwT,QAAQ,CAACk7K,OAAOC,IAAIC,SAASC,MAAMo1I,UAAUv1I,OAAOC,IAAIC,SAASC,MAAMv7F,QACvEg1G,GAAG,WAEC,IAAI47H,EAAa,GACjB,GAAqB,GAAlBvqR,EAAM+oR,SAAc,CACnBwB,EAAa,CAAE,GAAMvqR,EAAMwsJ,MAAO,YAAa,EAAM,aAAexsJ,EAAMkpR,mBAC1E,IAAI/+H,EAAM,iDACT,CACDogI,EAAa,CAAE,GAAMvqR,EAAMwsJ,MAAO,YAAa,GAC3CrC,EAAM,kCAEdnqJ,EAAMiqR,YAAY9/H,EAAKogI,GAAY,GACnC19U,KAAKi9K,SAETnwE,OAAO,eAERjrC,EAAIt/C,KAAKo7T,cAAcxqR,EAAMmpR,SAASsB,OAAOj8U,OAAO,GAAGwxD,EAAMmpR,SAASE,mBAAmB76U,OAAO,EAAE,CACjG,IAAI62P,EAAI11P,SAASyL,eAAe,WAAWlJ,WAAWA,WAAWA,WAAWkzF,cAAc,qDAC1FigK,EAAIhrP,UAAS,EACbgrP,EAAIl0O,MAAMyqG,gBAAgB,OAE9BjsH,SAASyL,eAAe,WAAWwD,UAAYsd,OAEjDzQ,GAAOnJ,KAAK8hN,eAAgB,EAAG,WAC/BpkK,EAAM+0Q,iBACN/0Q,EAAM4pR,gBACN5pR,EAAMkoB,MAAM,cAAe,CAACp+D,MAAM,OAElCJ,MAAK,SAAUA,GACf+B,GAAOnJ,KAAKoH,EAAK1U,KAAM,MACvB+pL,KAAI,WACJ15G,QAAQsuI,iBAIdohH,eA7GO,WA8GLloU,KAAKw7U,gBAAiB,EACtBx7U,KAAKm8U,kBAAmB,EACxBn8U,KAAKq8U,kBAAoB,KACzBr8U,KAAKo8U,iBAAkB,GAGzBW,cApHO,WAqHL/8U,KAAKk8U,UAAY,EACjBl8U,KAAKs8U,SAAW,CACdC,UAAW,GACXC,mBAAoB,OCtJb,I,OAXC,YACd,ICTW,WAAa,IAAInrL,EAAIrxJ,KAASyyG,EAAG4+C,EAAIhgF,eAAmB4D,EAAGo8E,EAAI9wE,MAAMtL,IAAIw9B,EAAG,OAAOx9B,EAAG,MAAM,CAACA,EAAG,YAAY,CAACyP,YAAY,4CAA4C90E,MAAM,CAAC,QAAUyhJ,EAAImqL,eAAe,wBAAuB,EAAM,yBAAwB,EAAM,MAAQnqL,EAAI57I,KAAKooU,qBAAqB,cAAa,EAAK,MAAQ,SAASz1T,GAAG,CAAC,iBAAiB,SAASkqD,GAAQ++E,EAAImqL,eAAelpQ,KAAU,CAAC2C,EAAG,IAAI,CAACyP,YAAY,YAAY,CAAC2sE,EAAIn9E,GAAGm9E,EAAI39E,GAAG29E,EAAI57I,KAAKqoU,uBAAuBzsL,EAAIn9E,GAAG,KAAKe,EAAG,MAAM,CAACyP,YAAY,uBAAuB2sE,EAAI19E,GAAI09E,EAAqB,mBAAE,SAASltJ,EAAKzC,GAAO,OAAOuzE,EAAG,IAAI,CAACz2E,IAAKkD,EAAQ,MAAOgpF,YAAY,CAAC,OAAS,WAAWtiE,GAAG,CAAC,MAAQ,SAASkqD,GAAQ,OAAO++E,EAAI2rL,WAAW74U,EAAK23U,aAAa,CAAC7mQ,EAAG,MAAM,CAACyP,YAAY,sBAAsB,CAACzP,EAAG,MAAM,CAACyP,YAAY,gCAAgC,CAACzP,EAAG,MAAM,CAACyV,YAAY,CAAC,MAAQ,OAAO,OAAS,QAAQ96E,MAAM,CAAC,IAAMzL,EAAKusN,OAAO,IAAM,MAAMr/D,EAAIn9E,GAAG,KAAKe,EAAG,MAAM,CAACA,EAAG,IAAI,CAACyP,YAAY,4BAA4B,CAAC2sE,EAAIn9E,GAAGm9E,EAAI39E,GAAGvvE,EAAKu3U,cAAcrqL,EAAIn9E,GAAG,KAAKe,EAAG,IAAI,CAACyP,YAAY,0BAA0B,CAAC2sE,EAAIn9E,GAAGm9E,EAAI39E,GAAGvvE,EAAKy3U,YAAYvqL,EAAIn9E,GAAG,KAAwB,IAAlB/vE,EAAK23U,SAAgB7mQ,EAAG,IAAI,CAACyP,YAAY,mBAAmB,CAACzP,EAAG,MAAM,CAACrlE,MAAM,CAAC,IAAM,6BAA6B,IAAM,MAAMyhJ,EAAIn9E,GAAG,KAAKe,EAAG,OAAO,CAACo8E,EAAIn9E,GAAGm9E,EAAI39E,GAAG29E,EAAI57I,KAAKsoU,oCAAoC1sL,EAAIl9E,SAASk9E,EAAIn9E,GAAG,KAAKe,EAAG,MAAM,CAACyP,YAAY,2BAA2B90E,MAAM,CAAC,IAAMzL,EAAK43U,SAAS,IAAM,aAAY,KAAK1qL,EAAIn9E,GAAG,KAAKe,EAAG,aAAa,CAACrlE,MAAM,CAAC,KAAOyhJ,EAAI8qL,kBAAoC,IAAhB9qL,EAAI6qL,SAAc,MAAQ,IAAI,MAAQ,KAAK,CAACjnQ,EAAG,KAAK,CAACrlE,MAAM,CAAC,KAAO,UAAUmgE,KAAK,UAAU,CAACshF,EAAIn9E,GAAGm9E,EAAI39E,GAAG29E,EAAI57I,KAAKuoU,eAAe3sL,EAAIn9E,GAAG,KAAKe,EAAG,MAAM,CAACyP,YAAY,kBAAkB,CAAC2sE,EAAIn9E,GAAGm9E,EAAI39E,GAAG29E,EAAI57I,KAAKwoU,0BAA0B5sL,EAAIn9E,GAAG,KAAKe,EAAG,MAAM,CAACyP,YAAY,eAAe,CAACzP,EAAG,IAAI,CAACyP,YAAY,qBAAqB,CAAC2sE,EAAIn9E,GAAGm9E,EAAI39E,GAAG29E,EAAI57I,KAAKyoU,qBAAqB7sL,EAAIn9E,GAAG,KAAMm9E,EAAIirL,SAASC,UAAU56U,QAAQ,EAAGszE,EAAG,IAAI,CAACyP,YAAY,aAAa,CAAC2sE,EAAIn9E,GAAGm9E,EAAI39E,GAAG29E,EAAI57I,KAAK0oU,kBAAkB9sL,EAAIl9E,KAAKk9E,EAAIn9E,GAAG,KAAMm9E,EAAIirL,SAASC,UAAU56U,OAAO,EAAGszE,EAAG,IAAI,CAACyP,YAAY,cAAc,CAAC2sE,EAAIn9E,GAAGm9E,EAAI39E,GAAG29E,EAAI57I,KAAK2oU,kBAAkB/sL,EAAIl9E,KAAKk9E,EAAIn9E,GAAG,KAAMm9E,EAAIirL,SAASC,UAAU56U,OAAO,EAAGszE,EAAG,KAAK,CAACyP,YAAY,4BAA4B2sE,EAAI19E,GAAI09E,EAAIirL,SAAkB,WAAE,SAASn4U,EAAKzC,GAAO,OAAOuzE,EAAG,KAAK,CAACz2E,IAAIkD,EAAMgjF,YAAY,gBAAgB90E,MAAM,CAAC,MAAQzL,IAAO,EAAGzC,EAAM,GAAG,GAAI,GAAKA,GAAO2vJ,EAAIirL,SAASC,UAAU56U,OAAO,EAAGszE,EAAG,OAAO,CAACo8E,EAAIn9E,GAAGm9E,EAAI39E,GAAGvvE,GAAM,OAAO8wE,EAAG,OAAO,CAACo8E,EAAIn9E,GAAGm9E,EAAI39E,GAAGvvE,WAAa,GAAGktJ,EAAIl9E,OAAOk9E,EAAIn9E,GAAG,KAAKe,EAAG,MAAM,CAACyP,YAAY,eAAe,CAACzP,EAAG,IAAI,CAACyP,YAAY,qBAAqB,CAAC2sE,EAAIn9E,GAAGm9E,EAAI39E,GAAG29E,EAAI57I,KAAK4oU,QAAQhtL,EAAIn9E,GAAG,KAAMm9E,EAAIirL,SAASE,mBAAmB76U,QAAQ,EAAGszE,EAAG,IAAI,CAACyP,YAAY,aAAa,CAAC2sE,EAAIn9E,GAAGm9E,EAAI39E,GAAG29E,EAAI57I,KAAK0oU,kBAAkB9sL,EAAIl9E,KAAKk9E,EAAIn9E,GAAG,KAAMm9E,EAAIirL,SAASE,mBAAmB76U,OAAO,EAAGszE,EAAG,IAAI,CAACyP,YAAY,cAAc,CAAC2sE,EAAIn9E,GAAGm9E,EAAI39E,GAAG29E,EAAI57I,KAAK6oU,YAAYjtL,EAAIl9E,KAAKk9E,EAAIn9E,GAAG,KAAMm9E,EAAIirL,SAASE,mBAAmB76U,OAAO,EAAGszE,EAAG,KAAK,CAACyP,YAAY,4BAA4B2sE,EAAI19E,GAAI09E,EAAIirL,SAA2B,oBAAE,SAASn4U,EAAKzC,GAAO,OAAOuzE,EAAG,KAAK,CAACz2E,IAAIkD,EAAMgjF,YAAY,WAAW90E,MAAM,CAAC,MAAQzL,IAAO,EAAGzC,EAAM,GAAG,IAAI,GAAGA,IAAS2vJ,EAAIirL,SAASE,mBAAmB76U,OAAO,EAAGszE,EAAG,OAAO,CAACo8E,EAAIn9E,GAAGm9E,EAAI39E,GAAGvvE,GAAM,OAAO8wE,EAAG,OAAO,CAACo8E,EAAIn9E,GAAGm9E,EAAI39E,GAAGvvE,WAAa,GAAGktJ,EAAIl9E,OAAOk9E,EAAIn9E,GAAG,KAAKe,EAAG,0BAA0B,CAACrlE,MAAM,CAAC,KAAO,UAAUmgE,KAAK,UAAU,CAACkF,EAAG,gBAAgB,CAAC7sD,GAAG,CAAC,MAAQipI,EAAIyrL,sBAAsB,CAACzrL,EAAIn9E,GAAGm9E,EAAI39E,GAAG29E,EAAI57I,KAAKq3F,WAAWukD,EAAIn9E,GAAG,KAAKe,EAAG,gBAAgB,CAACrlE,MAAM,CAAC,SAA4C,GAAjCyhJ,EAAIirL,SAASC,UAAU56U,QAAyD,GAA1C0vJ,EAAIirL,SAASE,mBAAmB76U,QAAaymB,GAAG,CAAC,MAAQipI,EAAI8rL,gBAAgB,CAAC9rL,EAAIn9E,GAAG,eAAem9E,EAAI39E,GAAG29E,EAAI57I,KAAKnV,SAAS,GAAG+wJ,EAAIn9E,GAAG,KAAKe,EAAG,MAAM,CAACzK,WAAW,CAAC,CAAChtE,KAAK,OAAOoqF,QAAQ,SAAS1pF,MAAOmzJ,EAAmB,gBAAEv0E,WAAW,oBAAoB4H,YAAY,eAAe,CAACzP,EAAG,MAAM,CAACrlE,MAAM,CAAC,IAAM,sCAAsCyhJ,EAAIn9E,GAAG,KAAKe,EAAG,IAAI,CAACyP,YAAY,oBAAoB,CAAC2sE,EAAIn9E,GAAGm9E,EAAI39E,GAAG29E,EAAI57I,KAAK8oU,yBAAyB,GAAGltL,EAAIn9E,GAAG,KAAKe,EAAG,aAAa,CAACrlE,MAAM,CAAC,KAAOyhJ,EAAI8qL,kBAAoC,GAAhB9qL,EAAI6qL,SAAc,MAAQ,IAAI,MAAQ,KAAK,CAACjnQ,EAAG,KAAK,CAACrlE,MAAM,CAAC,KAAO,UAAUmgE,KAAK,UAAU,CAACshF,EAAIn9E,GAAGm9E,EAAI39E,GAAG29E,EAAI57I,KAAKuoU,eAAe3sL,EAAIn9E,GAAG,KAAKe,EAAG,MAAM,CAACyP,YAAY,+BAA+BgG,YAAY,CAAC,aAAa,QAAQ,aAAa,QAAQ,SAAW,WAAW,CAAE2mE,EAAIirL,SAASC,UAAU56U,OAAO,EAAGszE,EAAG,MAAM,CAACA,EAAG,MAAM,CAACyP,YAAY,mBAAmB,CAAC2sE,EAAIn9E,GAAG,mBAAmBm9E,EAAI39E,GAAG29E,EAAI57I,KAAK+oU,sCAAsC,oBAAoBntL,EAAIn9E,GAAG,KAAKe,EAAG,MAAM,CAACyP,YAAY,oBAAoB,CAACzP,EAAG,eAAe,CAACyV,YAAY,CAAC,MAAQ,OAAO,OAAS,SAAS96E,MAAM,CAAC,aAAa,iBAAiByhJ,EAAI19E,GAAI09E,EAAIirL,SAAkB,WAAE,SAASn4U,GAAM,OAAO8wE,EAAG,MAAM,CAACz2E,IAAI2F,EAAKs6U,OAAO/5P,YAAY,oBAAoB,CAACzP,EAAG,MAAM,CAACyP,YAAY,gBAAgB,CAACzP,EAAG,MAAM,CAACrlE,MAAM,CAAC,IAAM,oCAAoC,IAAM,MAAMyhJ,EAAIn9E,GAAG,KAAKe,EAAG,OAAO,CAACo8E,EAAIn9E,GAAGm9E,EAAI39E,GAAGvvE,EAAK8xM,oBAAoB5kD,EAAIn9E,GAAG,KAAM/vE,EAAK84U,WAAa94U,EAAK84U,UAAUt7U,OAAO,EAAGszE,EAAG,MAAM,CAACyP,YAAY,qBAAqB2sE,EAAI19E,GAAIxvE,EAAc,WAAE,SAAS62D,GAAU,OAAOia,EAAG,MAAM,CAACz2E,IAAIw8D,EAASyf,MAAM,CAAC,gBAA2C,IAA1Bt2E,EAAK84U,UAAUt7U,OACpkK,oBAA+C,IAA1BwC,EAAK84U,UAAUt7U,SAAe,CAACszE,EAAG,MAAM,CAACo8E,EAAIn9E,GAAG,mCAAmCm9E,EAAI39E,GAAG1Y,EAAS0jR,YAAY,qCAAwD,IAAlB1jR,EAASz5D,KAAY0zE,EAAG,MAAM,CAACyV,YAAY,CAAC,OAAS,eAAe96E,MAAM,CAAC,IAAM,uCAAuCyhJ,EAAIl9E,OAAOk9E,EAAIn9E,GAAG,KAAKe,EAAG,MAAM,CAAC3wD,MAAM,CAAEuyF,MAAOw6C,EAAI87C,UAAUnyI,EAASt3B,QAAmB,YAAK,CAACuxC,EAAG,OAAO,CAACyV,YAAY,CAAC,eAAe,SAAS,CAAC2mE,EAAIn9E,GAAG,OAAOm9E,EAAIn9E,GAAG,mCAAmCm9E,EAAI39E,GAAG29E,EAAI87C,UAAUnyI,EAASt3B,QAAc,MAAK,MAAM,uCAAsC,GAAG2tH,EAAIl9E,UAAS,IAAI,KAAKk9E,EAAIl9E,KAAKk9E,EAAIn9E,GAAG,KAAOm9E,EAAI+qL,iBAAoD,GAAjC/qL,EAAIirL,SAASC,UAAU56U,OAAwW0vJ,EAAIl9E,KAA/Vc,EAAG,MAAM,CAACA,EAAG,IAAI,CAACyV,YAAY,CAAC,aAAa,SAAS,aAAa,SAAS,CAACzV,EAAG,MAAM,CAACrlE,MAAM,CAAC,IAAM,iCAAiC,IAAM,QAAQyhJ,EAAIn9E,GAAG,KAAKe,EAAG,IAAI,CAACyV,YAAY,CAAC,MAAQ,UAAU,cAAc,OAAO,aAAa,SAAS,gBAAgB,SAAS,CAAC2mE,EAAIn9E,GAAG,uBAAuBm9E,EAAI39E,GAAG29E,EAAI57I,KAAKkpU,WAAW,0BAAmCttL,EAAIn9E,GAAG,KAAKe,EAAG,0BAA0B,CAACyV,YAAY,CAAC,aAAa,QAAQ96E,MAAM,CAAC,KAAO,UAAUmgE,KAAK,UAAU,CAACkF,EAAG,gBAAgB,CAAC7sD,GAAG,CAAC,MAAQipI,EAAIyrL,sBAAsB,CAACzrL,EAAIn9E,GAAGm9E,EAAI39E,GAAG29E,EAAI57I,KAAKq3F,WAAWukD,EAAIn9E,GAAG,KAAKe,EAAG,gBAAgB,CAACrlE,MAAM,CAAC,SAA4C,GAAjCyhJ,EAAIirL,SAASC,UAAU56U,QAAyD,GAA1C0vJ,EAAIirL,SAASE,mBAAmB76U,QAAaymB,GAAG,CAAC,MAAQipI,EAAI8rL,gBAAgB,CAAC9rL,EAAIn9E,GAAG,mBAAmBm9E,EAAI39E,GAAG29E,EAAI57I,KAAKmpU,yCAAyC,oBAAoB,GAAGvtL,EAAIn9E,GAAG,KAAKe,EAAG,MAAM,CAACzK,WAAW,CAAC,CAAChtE,KAAK,OAAOoqF,QAAQ,SAAS1pF,MAAOmzJ,EAAmB,gBAAEv0E,WAAW,oBAAoB4H,YAAY,eAAe,CAACzP,EAAG,MAAM,CAACrlE,MAAM,CAAC,IAAM,sCAAsCyhJ,EAAIn9E,GAAG,KAAKe,EAAG,IAAI,CAACyP,YAAY,oBAAoB,CAAC2sE,EAAIn9E,GAAGm9E,EAAI39E,GAAG29E,EAAI57I,KAAK8oU,yBAAyB,IAAI,KACr0D,IDUpB,EACA,KACA,WACA,M,kIEPa,ICRyH,GDQzH,CACb/gV,KAAM,qBACN2hF,WAAY,CACR0/P,gBAAcC,mBAAiBC,kBAC/BC,eAAaC,iBAAeC,mBAC5BC,yBAEJxzT,MAAM,CACFkvL,UAAU,CAACt5M,KAAMuL,OAAQ++L,UAAU,GACnCuzI,SAAU,CAAC79U,KAAMuL,OAAQ++L,UAAU,IAEvCtpL,KAXa,WAYX,MAAO,CACL9M,KAAKyyL,OAAOC,IAAIC,SAASC,MACzB0/B,gB/ZpBAA,EAAiB,GAqGnBA,GAlGCA,EADA9kO,OAAO2S,SAASG,KAAKtS,QAAQ,iBAAiB,EAC7B,CACd,GAAK,CACD6nO,cAAc,CAAC,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAC3C86F,QAAQ,CAAC,IAAI,IAAI,IAAI,IAAI,IAAI,KAC7BE,UAAU,CAAC,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,MAEvC,QAAQ,CACJh7F,cAAc,CAAC,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAC3C86F,QAAQ,CAAC,IAAI,IAAI,IAAI,IAAI,IAAI,KAC7BE,UAAU,CAAC,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,MAEvC,QAAQ,CACJh7F,cAAc,CAAC,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAC3C86F,QAAQ,CAAC,IAAI,IAAI,IAAI,IAAI,IAAI,KAC7BE,UAAU,CAAC,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,MAEvC,QAAQ,CACJh7F,cAAc,CAAC,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAC3C86F,QAAQ,CAAC,IAAI,IAAI,IAAI,IAAI,IAAI,KAC7BE,UAAU,CAAC,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,MAEvC,QAAQ,CACJh7F,cAAc,CAAC,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAC3C86F,QAAQ,CAAC,IAAI,IAAI,IAAI,IAAI,IAAI,KAC7BE,UAAU,CAAC,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,MAEvC,QAAQ,CACJh7F,cAAc,CAAC,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAC3C86F,QAAQ,CAAC,IAAI,IAAI,IAAI,IAAI,IAAI,KAC7BE,UAAU,CAAC,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,MAEvC,QAAQ,CACJh7F,cAAc,CAAC,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAC3C86F,QAAQ,CAAC,IAAI,IAAI,IAAI,IAAI,IAAI,KAC7BE,UAAU,CAAC,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,MAEvC,QAAQ,CACJh7F,cAAc,CAAC,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAC3C86F,QAAQ,CAAC,IAAI,IAAI,IAAI,IAAI,IAAI,KAC7BE,UAAU,CAAC,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,MAEvC,QAAQ,CACJh7F,cAAc,CAAC,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAC3C86F,QAAQ,CAAC,IAAI,IAAI,IAAI,IAAI,IAAI,KAC7BE,UAAU,CAAC,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,OAIxB,CACd,GAAK,CACDh7F,cAAc,CAAC,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAC1C86F,QAAQ,CAAC,IAAI,IAAI,IAAI,IAAI,IAAI,KAC7BE,UAAU,CAAC,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,MAEtC,QAAQ,CACJh7F,cAAc,CAAC,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,KAC1C86F,QAAQ,CAAC,IAAI,IAAI,IAAI,IAAI,IAAI,KAC7BE,UAAU,CAAC,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,MAEvC,QAAQ,CACJh7F,cAAc,CAAC,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,KAC1C86F,QAAQ,CAAC,IAAI,IAAI,IAAI,IAAI,IAAI,KAC7BE,UAAU,CAAC,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,MAEvC,QAAQ,CACJh7F,cAAc,CAAC,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,KAC1C86F,QAAQ,CAAC,IAAI,IAAI,IAAI,IAAI,IAAI,KAC7BE,UAAU,CAAC,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,MAEvC,QAAQ,CACJh7F,cAAc,CAAC,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,KAC1C86F,QAAQ,CAAC,IAAI,IAAI,IAAI,IAAI,IAAI,KAC7BE,UAAU,CAAC,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,MAEvC,QAAQ,CACJh7F,cAAc,CAAC,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,KACzC86F,QAAQ,CAAC,IAAI,IAAI,IAAI,IAAI,IAAI,KAC7BE,UAAU,CAAC,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,MAEvC,QAAQ,CACJh7F,cAAc,CAAC,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,KAC1C86F,QAAQ,CAAC,IAAI,IAAI,IAAI,IAAI,IAAI,KAC7BE,UAAU,CAAC,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,MAEvC,QAAQ,CACJh7F,cAAc,CAAC,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,KACzC86F,QAAQ,CAAC,IAAI,IAAI,IAAI,IAAI,IAAI,KAC7BE,UAAU,CAAC,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,MAEvC,QAAQ,CACJh7F,cAAc,CAAC,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAC1C86F,QAAQ,CAAC,IAAI,IAAI,IAAI,IAAI,IAAI,KAC7BE,UAAU,CAAC,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,QAK1B+Y,UAAU,aACTt3G,EAAes3G,UAAU,aAEzBt3G,EAAA,I+ZlFfpyD,OAAQA,OACRgqC,MAAO3/M,KAAK66M,UACZykI,OAAQ,GACRC,QAAS,GACT7qI,WAAW,EACX8mI,gBAAgB,EAChBgE,eAAe,EACftO,qBAAqB,EACrB91G,UAAW3lN,KAAK2tN,gCAChBq8G,SAAUt8G,I/Z/BgB,IAC1B4E,G+ZiCJt8L,QAAS,CAEPi0S,cAFO,WAGH1/U,KAAKwkO,YAAY,QACS,SAAvB66G,UAAU,cACTr/U,KAAKwkO,YAAY,SAEK,SAAvB66G,UAAU,cACTr/U,KAAKwkO,YAAY,SAEK,SAAvB66G,UAAU,cACTr/U,KAAKwkO,YAAY,UAIzBm7G,2BAfO,WAesB,WAC3B3/U,KAAKw7U,gBAAiB,EACtBx7U,KAAKkxU,qBAAsB,EAC3BlxU,KAAKwgF,MAAMo/P,cAAc1X,iBACzBtoT,YAAW,WACT,EAAKsxT,qBAAsB,IAC1B,MAGL2O,iBAxBO,WAwBY,WACjB7/U,KAAKkxU,qBAAsB,EAC3BlxU,KAAKw7U,gBAAiB,EACtBx7U,KAAKwgF,MAAMs/P,aAAa5X,iBACxBtoT,YAAW,WACT,EAAK47T,gBAAiB,IACrB,MAGLuE,UAjCO,SAiCGj9H,GACR9iN,KAAKggV,YACL,IAAI7sR,EAAQnzD,KACZigM,OAAOwC,KAAK,yCAA0C,CAAE,MAASziM,KAAK2/M,QAASv7K,QAAQ,SAAUy9B,GAC5FA,EAAIt/C,MAAQs/C,EAAIt/C,KAAKmyL,YACtB10M,KAAKy/U,SAAL,aAAoBt8G,IAApB,CAAqC,CAAEprB,MAAOtiM,KAAKy7L,QAAS1zM,KAAMiY,KAAKy7L,QAAShzM,MAAOuX,KAAKy7L,YAE3FrvI,EAAIt/C,OAASs/C,EAAIt/C,KAAKmyL,YACvB10M,KAAKy/U,SAAL,aAAoBt8G,MAEtBnjO,KAAK00M,UAAY7yI,EAAIt/C,KAAKmyL,UAC1B10M,KAAKs/U,OAASz9Q,EAAIt/C,KAAK09T,SAAWp+Q,EAAIt/C,KAAK3M,SAC3C5V,KAAKw/U,cAAgB39Q,EAAIt/C,KAAKi9T,cAC9Bx/U,KAAKu/U,QAAU19Q,EAAIt/C,KAAK/kB,KACrBslN,GAAa9iN,KAAKw/U,eACnB7oI,OAAOunB,SAAS,CACdv+C,MAAMuoB,OAAOC,IAAIC,SAASC,MAAM63I,uBAChCnzR,gIAAgIm7I,OAAOC,IAAIC,SAASC,MAAM83I,sBAA1J,OACAnzT,QAAQ,CAACk7K,OAAOC,IAAIC,SAASC,MAAM+3I,yBAAyBl4I,OAAOC,IAAIC,SAASC,MAAMg4I,sBACtFv+H,GAAG,WACC3uJ,EAAMqtB,MAAMo/P,cAAc5C,WAAW,GACrCh9U,KAAKi9K,SAETnwE,OAAO,gBAGXruG,KAAKuB,OAAOkyL,IAAI,aAChBzzL,KAAKuB,QAGTq7N,eA/DO,SA+DQhoB,GACXrzM,KAAKkxU,qBAAsB,EAC3BlxU,KAAKo7N,UAAY/nB,EAAI71M,MAGzB8iV,YApEO,SAoEKz+Q,GAGV,GAFA7hE,KAAKwgF,MAAMs/P,aAAa5X,iBACxBloU,KAAKwgF,MAAMo/P,cAAc1X,iBACtBrmQ,EAAI5kD,KAEL,OADAjd,KAAK+/U,YACG//U,KAAKo7N,WACX,KAAK3lN,KAAK2tN,gCACRpjO,KAAKwgF,MAAM+/P,YAAYn1G,gBAAe,GACtC,MAEF,KAAK31N,KAAK4tN,qCACRrjO,KAAKwgF,MAAMggQ,eAAep1G,gBAAe,GACzC,MAEF,KAAK31N,KAAK6tN,WACRtjO,KAAKwgF,MAAMigQ,cAAcr1G,gBAAe,GACxC,MAEF,KAAK31N,KAAKy7L,QACRlxM,KAAKwgF,MAAMkgQ,WAAWt1G,gBAAe,GACrC,MAEF,KAAK31N,KAAKwxM,oBACRjnN,KAAKwgF,MAAMmgQ,aAAav1G,gBAAe,KAQ/C40G,UAnGO,WAoGLhgV,KAAKw7U,gBAAiB,EACtBx7U,KAAKkxU,qBAAsB,IAG/BrsQ,MAAM,CACJg2I,UADI,WAEF76M,KAAK2/M,MAAQ3/M,KAAK66M,UAClB76M,KAAKo7N,UAAY3lN,KAAK2tN,gCACtBpjO,KAAKy/U,SAAWt8G,GAChBnjO,KAAKggV,YACLhgV,KAAK+/U,cAGTj9P,QA5Ia,WA8IU,wBAAlB9iF,KAAKo/U,WACNp/U,KAAKo7N,UAAY3lN,KAAK4tN,sCAExBrjO,KAAK+/U,aAEP/8P,QAnJa,WAoJXhjF,KAAK0/U,kBEzIM,I,OAXC,YACd,ICTW,WAAa,IAAIruL,EAAIrxJ,KAASyyG,EAAG4+C,EAAIhgF,eAAmB4D,EAAGo8E,EAAI9wE,MAAMtL,IAAIw9B,EAAG,OAAOx9B,EAAG,MAAM,CAACrlE,MAAM,CAAC,GAAK,iBAAiB,CAACqlE,EAAG,MAAM,CAACyP,YAAY,eAAe,CAACzP,EAAG,MAAM,CAACyP,YAAY,gBAAgB,CAAC2sE,EAAIn9E,GAAGm9E,EAAI39E,GAAG29E,EAAIkuL,YAAYluL,EAAIn9E,GAAG,KAAKe,EAAG,MAAM,CAACyP,YAAY,4BAA4B,CAACzP,EAAG,IAAI,CAACyP,YAAY,oBAAoB,CAAC2sE,EAAIn9E,GAAGm9E,EAAI39E,GAAG29E,EAAIiuL,WAAWjuL,EAAIn9E,GAAG,KAAMm9E,EAAU,OAAEp8E,EAAG,SAAS,CAACyP,YAAY,gBAAgBgG,YAAY,CAAC,cAAc,QAAQtiE,GAAG,CAAC,MAAQipI,EAAIsuL,6BAA6B,CAACtuL,EAAIn9E,GAAG,yBAAyBm9E,EAAI39E,GAAG29E,EAAI57I,KAAKnV,KAAK,oBAAoB+wJ,EAAIl9E,KAAKk9E,EAAIn9E,GAAG,KAAMm9E,EAAU,OAAEp8E,EAAG,YAAY,CAACyP,YAAY,IAAIgG,YAAY,CAAC,MAAQ,UAAU,kBAAkB,aAAa96E,MAAM,CAAC,KAAO,QAAQwY,GAAG,CAAC,MAAQipI,EAAIwuL,mBAAmB,CAACxuL,EAAIn9E,GAAG,mBAAmBm9E,EAAI39E,GAAG29E,EAAI57I,KAAKmrU,kBAAkB,qBAAqBvvL,EAAIl9E,MAAM,KAAKk9E,EAAIn9E,GAAG,KAAKe,EAAG,MAAM,CAACyP,YAAY,QAAQ,CAACzP,EAAG,UAAU,CAAC7sD,GAAG,CAAC,YAAYipI,EAAIgqE,gBAAgB/hJ,MAAM,CAACp7E,MAAOmzJ,EAAa,UAAE/qJ,SAAS,SAAUu9L,GAAMxyC,EAAI+pE,UAAUv3B,GAAK/mH,WAAW,cAAcu0E,EAAI19E,GAAI09E,EAAY,UAAE,SAASltJ,EAAKzC,GAAO,OAAOuzE,EAAG,cAAc,CAACz2E,IAAIkD,EAAMkO,MAAM,CAAC,MAAQzL,EAAK4zM,MAAM,KAAO5zM,EAAK3G,WAAU,IAAI,GAAG6zJ,EAAIn9E,GAAG,KAAMm9E,EAAI+pE,YAAc/pE,EAAI57I,KAAK2tN,gCAAiCnuJ,EAAG,MAAM,CAACA,EAAG,eAAe,CAACphB,IAAI,cAAcjkD,MAAM,CAAC,UAAYyhJ,EAAIsuD,MAAM,UAAYtuD,EAAIqjD,UAAU,eAAiBrjD,EAAI02E,eAAe,WAAa12E,EAAImzE,aAAap8M,GAAG,CAAC,kBAAoBipI,EAAI0uL,cAAc,GAAG1uL,EAAIl9E,KAAKk9E,EAAIn9E,GAAG,KAAMm9E,EAAI+pE,YAAc/pE,EAAI57I,KAAK4tN,qCAAsCpuJ,EAAG,MAAM,CAACA,EAAG,kBAAkB,CAACphB,IAAI,iBAAiBjkD,MAAM,CAAC,UAAYyhJ,EAAIsuD,MAAM,UAAYtuD,EAAIqjD,UAAU,eAAiBrjD,EAAI02E,eAAe,WAAa12E,EAAImzE,gBAAgB,GAAGnzE,EAAIl9E,KAAKk9E,EAAIn9E,GAAG,KAAMm9E,EAAI+pE,YAAc/pE,EAAI57I,KAAK6tN,WAAYruJ,EAAG,MAAM,CAACA,EAAG,iBAAiB,CAACphB,IAAI,gBAAgBjkD,MAAM,CAAC,UAAYyhJ,EAAIsuD,MAAM,UAAYtuD,EAAIqjD,UAAU,eAAiBrjD,EAAI02E,eAAe,WAAa12E,EAAImzE,gBAAgB,GAAGnzE,EAAIl9E,KAAKk9E,EAAIn9E,GAAG,KAAMm9E,EAAI+pE,YAAc/pE,EAAI57I,KAAKy7L,QAASj8H,EAAG,MAAM,CAACA,EAAG,cAAc,CAACphB,IAAI,aAAajkD,MAAM,CAAC,UAAYyhJ,EAAIsuD,MAAM,WAAatuD,EAAImzE,YAAY,eAAiB,CAAC,IAAI,IAAI,IAAI,IAAI,IAAI,SAAS,GAAGnzE,EAAIl9E,KAAKk9E,EAAIn9E,GAAG,KAAMm9E,EAAI+pE,YAAc/pE,EAAI57I,KAAKwxM,oBAAqBhyI,EAAG,MAAM,CAACA,EAAG,gBAAgB,CAACphB,IAAI,eAAejkD,MAAM,CAAC,UAAYyhJ,EAAIsuD,MAAM,UAAYtuD,EAAIqjD,UAAU,eAAiBrjD,EAAI02E,eAAe,WAAa12E,EAAImzE,aAAap8M,GAAG,CAAC,kBAAoBipI,EAAI0uL,cAAc,GAAG1uL,EAAIl9E,KAAKk9E,EAAIn9E,GAAG,KAAKe,EAAG,kBAAkB,CAACphB,IAAI,eAAejkD,MAAM,CAAC,eAAeyhJ,EAAI6/K,oBAAoB,QAAQ7/K,EAAIsuD,MAAM,cAActuD,EAAImzE,YAAY,YAAYnzE,EAAIqjD,WAAWtsL,GAAG,CAAC,QAAUipI,EAAIivL,eAAejvL,EAAIn9E,GAAG,KAAKe,EAAG,uBAAuB,CAACphB,IAAI,gBAAgBjkD,MAAM,CAAC,UAAYyhJ,EAAImqL,eAAe,MAAQnqL,EAAIsuD,OAAOv3L,GAAG,CAAC,YAAcipI,EAAIivL,eAAejvL,EAAIn9E,GAAG,KAAKe,EAAG,MAAM,CAACyV,YAAY,CAAC,OAAS,WAAW,KAC50F,IDWpB,EACA,KACA,WACA,M,SEbFm2P,GAAmBp9P,QAAU,SAASrE,GAClCA,EAAIlG,UAAU2nQ,GAAmBrjV,KAAMqjV,KAG5BA,ICNXC,GDMWD,MCLTE,GAAa,SAAU/1U,EAAGC,GAC9B,OAAQ,IAAIX,KAAKU,GAAGo3D,UAAY,IAAI93D,KAAKW,GAAGm3D,WCF2F,GDI1H,CACX5kE,KAAM,mBACNmuB,MAAO,CACL2gD,KAAM,CAAE/qE,KAAM5D,QACdimB,MAAO,CAAEriB,KAAM26D,QACf8kR,YAAa,CAACz/U,KAAMoqE,QAASE,SAAS,GACtC0yI,UAAW,CAAEh9M,KAAM+I,KAAMuhE,QAAS,IAAIvhE,OAExCiY,KARW,WAST,MAAO,CACL9M,KAAMyyL,OAAOC,IAAIC,SAASC,MAC1Bk4B,sBAAuBvgO,KAAKssE,KAC5B20Q,SAAU,CACN1+T,MAAM,EACN2+T,YAAY,GAEhBC,sBAAuB,EACvBC,wBAAwB,EACxBC,kBAAmBrhV,KAAKu+M,WAAa,IAAIj0M,KACzCg3U,yBAAyB,EACzBC,wBAAyB,OACzBC,oBAAqB,GACrBC,YAAa,CACTj8T,MAAM,EACNpa,KAAM,GACN8K,SAAU,GACVkrB,QAAQ,GAEZ4+L,UAAW,GACX0hH,0BAA2B1hV,KAAKssE,KAAKooI,UACrCitI,SAAUz5I,OAAOC,IAAIC,SAASC,MAAMu5I,qBACpCC,YAAa3nI,eAAelyM,QAAQ,KAAM,KAAKA,QAAQ,KAAM,KAC7D42M,cAAe,CACXC,aAAc7+M,KAAK8+M,sBAI3BrzK,QAAS,CAELqzK,mBAFK,SAEcjjL,GACf,OAAOA,EAAKumC,UAAYpiE,KAAKu+M,UAAUn8I,WAG3C+8I,eANK,WAYG,IAAI3sK,EACAn1C,GANR0+B,aAAa/7B,KAAK8hV,YACkB,QAAhC9hV,KAAKuhV,0BACLvhV,KAAKqhV,kBAAoB,IAAI/2U,KAAKtK,KAAKqhV,kBAAkBj/Q,UAAY,QAErC,SAAhCpiE,KAAKuhV,2BAIAvhV,KAAKqhV,kBAAkB74I,WAAa,EAAI,GAAM,GAC/Ch2J,EAAIxyC,KAAKqhV,kBAAkB34I,cAAgB,EAC3CrrM,EAAI,KAGJm1C,EAAIxyC,KAAKqhV,kBAAkB34I,cAC3BrrM,EAAI2C,KAAKqhV,kBAAkB74I,WAAa,EAAI,GAEhDxoM,KAAKqhV,kBAAoB,IAAI/2U,KAAKkoC,EAAI,IAAMn1C,IAEZ,QAAhC2C,KAAKuhV,0BACLvhV,KAAKqhV,kBAAoB,IAAI/2U,KAAMtK,KAAKqhV,kBAAkB34I,cAAgB,EAAI,KAElF1oM,KAAK+hV,kBAGT3iI,eA/BK,WAoCG,IAAI5sK,EACAn1C,GAL4B,QAAhC2C,KAAKuhV,0BACLvhV,KAAKqhV,kBAAoB,IAAI/2U,KAAKtK,KAAKqhV,kBAAkBj/Q,UAAY,QAErC,SAAhCpiE,KAAKuhV,2BAIAvhV,KAAKqhV,kBAAkB74I,WAAa,EAAI,GAAM,IAC/Ch2J,EAAIxyC,KAAKqhV,kBAAkB34I,cAAgB,EAC3CrrM,EAAI,IAGJm1C,EAAIxyC,KAAKqhV,kBAAkB34I,cAC3BrrM,EAAI2C,KAAKqhV,kBAAkB74I,WAAa,EAAI,GAEhDxoM,KAAKqhV,kBAAoB,IAAI/2U,KAAKkoC,EAAI,IAAMn1C,IAEZ,QAAhC2C,KAAKuhV,0BACLvhV,KAAKqhV,kBAAoB,IAAI/2U,KAAMtK,KAAKqhV,kBAAkB34I,cAAgB,EAAI,KAElF1oM,KAAK+hV,kBAGTA,eAAgB/kU,EAAEmkC,UAAS,WACvB,GAAsC,GAAlC5W,EAAE,qBAAqB7oC,QACvB1B,KAAKgiV,yBAAyB,CAAEt6U,OAAQ6iC,EAAE,qBAAqB,SAC5D,CAEH,IADA,IAAInuB,EACKnf,EAAI,EAAGA,EAAI+C,KAAKyhV,YAAYr2U,KAAKzJ,OAAQ1E,IAC1C+C,KAAKyhV,YAAYr2U,KAAKnO,GAAtB,OAAqC+C,KAAKyhV,YAAYvrU,SAAS6hM,QAC/D37L,EAAIpc,KAAKyhV,YAAYr2U,KAAKnO,IAGlC+C,KAAKiiV,qBAAqB7lU,MAE/B,KAEH8lU,qBArEK,SAqEgBrmT,GAEjB,GADQ0O,EAAE,wCAAwC3M,SAAS,kBAqBD,QAAlD59B,KAAKyhV,YAAYvrU,SAAShY,MAAMmL,cAC5BrJ,KAAKssE,KAAKooI,UACV10M,KAAKmiV,wBAGLniV,KAAKoiV,gCAI4C,UAAjDpiV,KAAKyhV,YAAYvrU,SAAShY,MAAMmL,eAA8E,WAAjDrJ,KAAKyhV,YAAYvrU,SAAShY,MAAMmL,cAC7FrJ,KAAKqiV,0BAGLriV,KAAKsiV,2BAGbtiV,KAAKshV,yBAA0B,OAlC/B,OADQ/2S,EAAE,gDAAgD7oC,MAAM6oC,EAAE,uCAE9D,KAAK,EACDvqC,KAAKmhV,sBAAwB,EAC7BnhV,KAAKuiV,2BACL,MACJ,KAAK,EACDviV,KAAKmhV,sBAAwB,EAC7BnhV,KAAKuiV,2BACL,MACJ,KAAK,EACDviV,KAAKmhV,sBAAwB,EAC7BnhV,KAAKuiV,2BACL,MACJ,QACIviV,KAAKuiV,2BACLviV,KAAKshV,yBAA0B,IAuB/CkB,oBA/GK,SA+Geh6T,GAChB+hB,EAAE/hB,EAAM9gB,QAAQw1B,SAAS,iBACzBqN,EAAE/hB,EAAM9gB,QAAQ2S,WAAWkjB,YAAY,iBACvC,IAAItgC,EAAIstC,EAAE,gDAAgD7oC,MAAM8mB,EAAM9gB,QAItE,OAHA1H,KAAKwgF,MAAMiiQ,iBAAiBC,aAC5B1iV,KAAKwgF,MAAMiiQ,iBAAiBE,OAAS,KACrC3iV,KAAKshV,yBAA0B,EACvBrkV,GACJ,KAAK,EACD+C,KAAKmhV,sBAAwB,EAC7BnhV,KAAKuhV,wBAA0B,OAC/BvhV,KAAK6hV,YAAc3nI,eAAelyM,QAAQ,KAAM,KAAKA,QAAQ,KAAM,KACnEhI,KAAKuiV,2BACL,MACJ,KAAK,EACDviV,KAAKmhV,sBAAwB,EAC7BnhV,KAAKuhV,wBAA0B,QAC/BvhV,KAAK6hV,YAAc5nI,kBAAkB,SAASjyM,QAAQ,KAAM,KAC5DhI,KAAKuiV,2BACL,MACJ,KAAK,EACDviV,KAAKmhV,sBAAwB,EAC7BnhV,KAAKuhV,wBAA0B,OAC/BvhV,KAAK6hV,YAAc5nI,kBAAkB,QAAQjyM,QAAQ,KAAM,KAC3DhI,KAAKuiV,2BACL,MACJ,QACIviV,KAAKuiV,2BACLviV,KAAKshV,yBAA0B,IAI3CU,yBA/IK,SA+IoBx5T,GAMrB,OALAxoB,KAAKyhV,YAAYrgT,QAAS,EAC1BphC,KAAKohV,wBAAyB,EAC9BphV,KAAKshV,yBAA0B,EAEvB/2S,EAAE,gDAAgD7oC,MAAM6oC,EAAE,uCAE9D,KAAK,EACDvqC,KAAKmhV,sBAAwB,EAC7BnhV,KAAKuiV,2BACLviV,KAAKuhV,wBAA0B,OAC/BvhV,KAAK6hV,YAAc3nI,eAAelyM,QAAQ,KAAM,KAAKA,QAAQ,KAAM,KACnE,MACJ,KAAK,EACDhI,KAAKmhV,sBAAwB,EAC7BnhV,KAAKuiV,2BACLviV,KAAKuhV,wBAA0B,QAC/BvhV,KAAK6hV,YAAc5nI,kBAAkB,SAASjyM,QAAQ,KAAM,KAC5D,MACJ,KAAK,EACDhI,KAAKmhV,sBAAwB,EAC7BnhV,KAAKuiV,2BACLviV,KAAKuhV,wBAA0B,OAC/BvhV,KAAK6hV,YAAc,OACnB,MACJ,QACI7hV,KAAKuiV,2BACLviV,KAAKuhV,wBAA0B,OAC/BvhV,KAAKshV,yBAA0B,IAG3CW,qBA9KK,SA8KgB7lU,GACjBpc,KAAKyhV,YAAYvrU,SAAWkG,EAC5Bpc,KAAKyhV,YAAYrgT,QAAS,EAC1BphC,KAAK6hV,YAAc3nI,eAAelyM,QAAQ,KAAM,KAAKA,QAAQ,KAAM,KAEnEhI,KAAKohV,wBAAyB,EAC9BphV,KAAKuhV,wBAA0B,OAC/BvhV,KAAKshV,yBAA0B,EAE1BllU,IAGyB,QAA1BA,EAAEle,MAAMmL,cACJrJ,KAAK0hV,0BACL1hV,KAAKmiV,wBAGLniV,KAAKoiV,gCAIoB,UAAzBhmU,EAAEle,MAAMmL,eAAsD,WAAzB+S,EAAEle,MAAMmL,cAC7CrJ,KAAKqiV,0BAGLriV,KAAKsiV,6BAMjBM,qBA7MK,WA8MD5iV,KAAKyhV,YAAYvrU,SAAWlW,KAAKwhV,oBACjCxhV,KAAKyhV,YAAYj8T,MAAO,EACxBxlB,KAAKyhV,YAAYrgT,QAAS,EAC1BphC,KAAKi3E,gBAGT4rQ,cApNK,WAqND,IAAIC,EAAkB7iJ,OAAO8iJ,cAAc/iV,KAAKqhV,mBAAqB,YACrE2B,eAAerqI,QAAQ,kBAAmBmqI,GAC1CE,eAAerqI,QAAQ,wBAAyB34M,KAAKugO,sBAAsB36B,IAC3E3iM,OAAO9C,OAAOyV,SAASG,KAAO,6BAGlCktU,uBA3NK,WA4ND,IAAI/jU,EAAOlf,KACPuB,EAAOvB,KAAKmhV,sBAChB,OAAQ5/U,GACJ,KAAK,EACDA,EAAO,EACP,MACJ,KAAK,EACDA,EAAO,EACP,MACJ,KAAK,EACDA,EAAO,EAGf,IAAI2hV,EAAY34S,EAAE,eAAe74B,KAAK,UAAU,GAAG8iK,UAAU,WAAWrrK,MAAM,KAAK,GAE/Eo2B,EAAQ,CACR,KAFkB0gK,OAAO8iJ,cAAc/iV,KAAKqhV,mBAAqB,YAGjE,KAAQ9/U,EACR,GAAMvB,KAAKugO,sBAAsB36B,GACjC,WAAcs9I,EACd,UAAa34S,EAAE,eAAe74B,KAAK,UAAU2f,QAC7C,WAAckZ,EAAE,eAAe74B,KAAK,UAAU+hB,UAElDwsK,OAAOwC,KAAK,gDAAiDljK,GAAO,SAAUsiC,OAC3Ez9B,SAAQ,SAAUy9B,GACjB,IAAItiC,EAAQ,CACR,GAAMsiC,EAAIt/C,MAGdrD,EAAKikU,YAAY5jT,OAIzB6jT,oBA7PK,SA6Peh4U,GAChB,IAAIi4U,EAAgB,GACpBA,EAAgBA,EAAcriV,OAAOoK,GACrC,IAAK,IAAInO,EAAI,EAAGA,EAAIomV,EAAc1hV,OAAQ1E,IAEtComV,EAAcpmV,GAAGiB,MAAQmlV,EAAcpmV,GAAGqmV,WAC1CD,EAAcpmV,GAAG86M,MAAQsrI,EAAcpmV,GAAGsmV,YAE9C,IAAIxjM,EAASsjM,EAAc7gS,WAAU,SAAAr+C,GACjC,MAAwC,OAAjCA,EAAKm/U,WAAWj6U,eAA2D,SAAjClF,EAAKm/U,WAAWj6U,iBAErE,IAAe,GAAX02I,EAAc,CACd,IAAMyjM,EAAUzgU,KAAKC,MAAMD,KAAKs3C,UAAUgpR,EAActjM,KACxDsjM,EAAch8U,OAAO04I,EAAO,GAC5BsjM,EAAcvwU,QAAQ0wU,GAE1B,OAAOH,GAEXd,yBA/QK,WAgRD,IAAIrjU,EAAOlf,KACPzC,EAAIyC,KAAKqhV,kBACbphJ,OAAOwC,KAAK,kDAAmD,CAC3DmD,GAAI1mL,EAAKotD,KAAKs5H,GACd2C,KAAMtI,OAAO8iJ,cAAcxlV,GAAK,YAChCgE,KAAM2d,EAAKiiU,wBACZ/8S,SAAQ,SAAUy9B,GACjBA,EAAIt/C,KAAK8kK,GAAKxlH,EAAIt/C,KAAK8kK,GAAGjgL,KAAK25U,KAC3Bl/Q,EAAIt/C,OAASs/C,EAAIt/C,KAAKkhU,OAAO9hV,SAAUkgE,EAAIt/C,KAAK0uL,GAAGtvM,QAAyC,GAA7BkgE,EAAIt/C,KAAKmhU,UAAU/hV,QAA4C,GAA7BkgE,EAAIt/C,KAAKmhU,UAAU/hV,QAA4C,GAA7BkgE,EAAIt/C,KAAKmhU,UAAU/hV,QAKtJud,EAAKykU,oBAAoB,CAAE,IAAO,GAAI,SAAY,GAAI,2BAA8B,GAAI,uBAA0B,GAAI,OAAU,GAAI,GAAM,GAAI,YAAe,GAAI,KAAQ,GAAI,GAAM,GAAI,UAAa,KACpMzkU,EAAK+hU,SAASC,YAAa,IAL3BhiU,EAAKykU,oBAAoB9hR,EAAIt/C,MAC7BrD,EAAK+hU,SAASC,YAAa,MAMhCrkU,MAAK,SAAUglD,GACd3iD,EAAKykU,oBAAoB,CAAE,IAAO,GAAI,SAAY,GAAI,2BAA8B,GAAI,uBAA0B,GAAI,OAAU,GAAI,GAAM,GAAI,YAAe,GAAI,KAAQ,GAAI,GAAM,GAAI,UAAa,KACpMzkU,EAAK+hU,SAASC,YAAa,MAGnCkB,8BArSK,WAsSD,IAAI7kV,EAAIyC,KAAKqhV,kBACTniU,EAAOlf,KACXigM,OAAOwC,KAAK,0CAA2C,CACnDj0L,GAAI0Q,EAAKqhN,sBAAsB36B,GAC/B2C,KAAMwR,MAAMx8M,GAAGy8M,OAAO,yBACvB,SAAUn4I,GACLA,EAAIt/C,MACJrD,EAAK0kU,wBAAwB/hR,EAAIt/C,MACjCrD,EAAK+hU,SAASC,YAAa,IAG3BhiU,EAAK0kU,wBAAwB,CAAC,CAAEr7I,KAAM,sBAAuBs7I,IAAK,KAClE3kU,EAAK+hU,SAASC,YAAa,OAIvCmB,wBAtTK,WAuTD,IAAInjU,EAAOlf,KACXigM,OAAOwC,KAAK,8CAA+C,CACvD8F,KAAMwR,MAAM/5M,KAAKqhV,mBAAmBrnI,OAAO,uBAC3C1F,OAAQt0M,KAAKyhV,YAAYvrU,SAAShY,MAClCsQ,GAAIxO,KAAKugO,sBAAsB36B,KAChCxhK,SAAQ,SAAUy9B,GACbA,EAAIt/C,MAAQvF,EAAE5N,KAAKyyD,EAAIt/C,MAAM5gB,OAAS,GACtCud,EAAK4kU,qBAAqBjiR,EAAIt/C,KAAM2lL,OAAOC,IAAIC,SAASC,MAAMnpL,EAAKuiU,YAAYvrU,SAAS6hM,OAAQ74L,EAAKuiU,YAAYvrU,SAAS+O,MAC1H/F,EAAK+hU,SAASC,YAAa,IAE3BhiU,EAAK4kU,qBAAqB,CACtBC,QAAS,CAAC,CACNx7I,KAAM,sBACN+L,OAAQ,KAEbp1L,EAAKuiU,YAAYvrU,SAAS6hM,MAAO74L,EAAKuiU,YAAYvrU,SAAS+O,MAC9D/F,EAAK+hU,SAASC,YAAa,OAKvCiB,sBA5UK,WA6UD,IAAIjjU,EAAOlf,KACPzC,EAAIyC,KAAKqhV,kBACbphJ,OAAOwC,KAAK,6CAA8C,CAAEmD,GAAI1mL,EAAKqhN,sBAAsB36B,GAAI2C,KAAMwR,MAAMx8M,GAAGy8M,OAAO,yBAA0B51K,SAAQ,SAAUy9B,GACzJA,EAAIt/C,MAAQs/C,EAAIt/C,KAAKyhU,MAAMriV,QAC3Bud,EAAK+kU,4BAA4BpiR,EAAIt/C,MACrCrD,EAAK+hU,SAASC,YAAa,IAG3BhiU,EAAK+kU,4BAA4B,CAAE,QAAW,GAAI,KAAQ,GAAI,GAAM,GAAI,IAAO,GAAI,MAAS,KAC5F/kU,EAAK+hU,SAASC,YAAa,MAEhCrkU,MAAK,SAAUglD,GACd3iD,EAAK+kU,4BAA4B,CAAE,QAAW,GAAI,KAAQ,GAAI,GAAM,GAAI,IAAO,GAAI,MAAS,KAC5F/kU,EAAK+hU,SAASC,YAAa,MAInCgD,iBA9VK,WA+VDlkV,KAAKqhV,kBAAoB,IAAI/2U,KAC7BigC,EAAE,kDAAkD5jC,GAAG,GAAGu2B,SAAS,iBAAiB7iB,WAAWkjB,YAAY,iBAC3Gv9B,KAAKohV,wBAAyB,EAC9BphV,KAAKshV,yBAA0B,EAC/BthV,KAAKuhV,wBAA0B,QAGnC0C,4BAtWK,SAsWuB1hU,GACxB,IAAMrD,EAAOlf,KACb,GAAIuiB,EAAKmhU,UAAT,CAEA,IAAMS,EAAW,CAEb,GAAM,CACFxoI,OAAQp5L,EAAK0uL,IAAI1uL,EAAK0uL,GAAGtvM,OAAO,EAAE4gB,EAAK0uL,GAAG1qM,KAAI,SAAU6V,EAAGnf,GACvD,MAAO,CAAE,MAASiiB,EAAK8hU,YAAc94I,OAAOC,IAAIC,SAASC,MAAM+7I,eAAgBl8I,OAAOC,IAAIC,SAASC,MAAMg8I,sBAAwB,MACxH,MAAS,CAACpnV,EAAImf,EAAEo2B,EAAG0uE,QAAQ,IAAK,WAAc,MACxD,GACH3+F,KAAMA,EAAK0uL,GACXqzI,UAAW,UACXrnI,WAAW,EACXz/M,MAAO0hB,EAAK8hU,YAAc94I,OAAOC,IAAIC,SAASC,MAAM+7I,eAAgBl8I,OAAOC,IAAIC,SAASC,MAAMg8I,sBAAwB,OAE1H,MAAS,CACL1oI,OAAQp5L,EAAKyhU,OAAOzhU,EAAKyhU,MAAMriV,OAAO,EAAE4gB,EAAKyhU,MAAMz9U,KAAI,SAAU6V,EAAGnf,GAChE,MAAO,CAAE,KAAQirM,OAAOC,IAAIC,SAASC,MAAM27I,MAAQ,MAAO,MAAS,CAAC/mV,EAAImf,EAAEo2B,EAAG0uE,QAAQ,IAAK,WAAc,MACzG,GACH3+F,KAAMA,EAAKyhU,MACXM,UAAW,UACXrnI,WAAW,EACXz/M,KAAM0qM,OAAOC,IAAIC,SAASC,MAAM27I,MAAQ,OAE5C,QAAW,CACProI,OAAQp5L,EAAK2uL,SAAS3uL,EAAK2uL,QAAQvvM,OAAO,EAAE4gB,EAAK2uL,QAAQ3qM,KAAI,SAAU6V,EAAGnf,GACtE,MAAO,CAAE,KAAQirM,OAAOC,IAAIC,SAASC,MAAM6I,QAAU,MAAO,MAAS,CAACj0M,EAAImf,EAAEo2B,EAAG0uE,QAAQ,IAAK,WAAc,MAC3G,GACH3+F,KAAMA,EAAK2uL,QACXozI,UAAW,UACXrnI,WAAW,EACXz/M,KAAM0qM,OAAOC,IAAIC,SAASC,MAAM6I,QAAU,OAE9C,SAAY,CACRyK,OAAOp5L,EAAKgiU,UAAUhiU,EAAKgiU,SAAS5iV,OAAO,EAAG4gB,EAAKgiU,SAASh+U,KAAI,SAAU6V,EAAGnf,GACzE,MAAO,CAAE,KAAQirM,OAAOC,IAAIC,SAASC,MAAMm8I,UAAY,MAAO,MAAS,CAACvnV,EAAImf,EAAEo2B,EAAG0uE,QAAQ,IAAK,WAAc,MAC7G,GACHojO,UAAW,UACXrnI,WAAW,EACX16L,KAAMA,EAAKgiU,SACX/mV,KAAM0qM,OAAOC,IAAIC,SAASC,MAAMm8I,UAAY,OAEhD,IAAO,CACH7oI,OAAQp5L,EAAKmqL,KAAKnqL,EAAKmqL,IAAI/qM,OAAO,EAAE4gB,EAAKmqL,IAAInmM,KAAI,SAAU6V,EAAGnf,GAC1D,MAAO,CAAE,KAAQirM,OAAOC,IAAIC,SAASC,MAAMoG,IAAM,MAAO,MAAS,CAACxxM,EAAImf,EAAEo2B,EAAG0uE,QAAQ,IAAK,WAAc,MACvG,GACH3+F,KAAMA,EAAKmqL,IACX43I,UAAW,UACXrnI,WAAW,EACXz/M,KAAM0qM,OAAOC,IAAIC,SAASC,MAAMoG,IAAM,OAE1C,KAAQ,CACJkN,OAAQp5L,EAAKkiU,MAAMliU,EAAKkiU,KAAK9iV,OAAO,EAAE4gB,EAAKkiU,KAAKl+U,KAAI,SAAU6V,EAAGnf,GAC7D,MAAO,CAAE,KAAQirM,OAAOC,IAAIC,SAASC,MAAMq8I,KAAO,MAAO,MAAS,CAACznV,EAAImf,EAAEo2B,EAAG0uE,QAAQ,IAAK,WAAc,MACxG,GACH3+F,KAAMA,EAAKkiU,KACXH,UAAW,UACXrnI,WAAW,EACXz/M,KAAM0qM,OAAOC,IAAIC,SAASC,MAAMq8I,KAAO,OAE3C,KAAQ,CACJ/oI,OAAQp5L,EAAK+I,KAAK/kB,KAAI,SAAU6V,EAAGnf,GAC/B,MAAO,CAAE,KAAQirM,OAAOC,IAAIC,SAASC,MAAM/8K,KAAO,MAAO,MAAS,CAACruB,EAAImf,EAAEo2B,EAAG0uE,QAAQ,IAAK,WAAc,MAE3G3+F,KAAMA,EAAK+I,KACX2xL,WAAW,EACXqnI,UAAW,UACX9mV,KAAM0qM,OAAOC,IAAIC,SAASC,MAAM/8K,KAAO,OAE3C,YAAe,CACXqwL,OAAQp5L,EAAKoiU,aAAepiU,EAAKoiU,YAAYhjV,OAAS,EAAI4gB,EAAKoiU,YAAYp+U,KAAI,SAAU6V,EAAGnf,GACxF,MAAO,CAAE,KAAQirM,OAAOC,IAAIC,SAASC,MAAMu8I,yBAA0B,MAAS,CAAC3nV,EAAImf,EAAEo2B,EAAG0uE,QAAQ,IAAK,WAAc,MACpH,GACH3+F,KAAMA,EAAKoiU,aAAe,GAC1B1nI,WAAW,EACXqnI,UAAW,UACX9mV,KAAM0qM,OAAOC,IAAIC,SAASC,MAAMu8I,0BAEpC,aAAgB,CACZjpI,OAAQp5L,EAAKsiU,cAAgBtiU,EAAKsiU,aAAaljV,OAAS,EAAI4gB,EAAKsiU,aAAat+U,KAAI,SAAU6V,EAAGnf,GAC3F,MAAO,CAAE,KAAQirM,OAAOC,IAAIC,SAASC,MAAMy8I,0BAA2B,MAAS,CAAC7nV,EAAImf,EAAEo2B,EAAG0uE,QAAQ,IAAK,WAAc,MACrH,GACH3+F,KAAMA,EAAKsiU,cAAgB,GAC3B5nI,WAAW,EACXqnI,UAAW,UACX9mV,KAAM0qM,OAAOC,IAAIC,SAASC,MAAMy8I,2BAEpC,aAAgB,CACZnpI,OAAQp5L,EAAKwiU,cAAgBxiU,EAAKwiU,aAAapjV,OAAS,EAAI4gB,EAAKwiU,aAAax+U,KAAI,SAAU6V,EAAGnf,GAC3F,MAAO,CAAE,KAAQirM,OAAOC,IAAIC,SAASC,MAAM28I,0BAA2B,MAAS,CAAC/nV,EAAImf,EAAEo2B,EAAG0uE,QAAQ,IAAK,WAAc,MACrH,GACH3+F,KAAMA,EAAKwiU,cAAgB,GAC3B9nI,WAAW,EACXqnI,UAAW,UACX9mV,KAAM0qM,OAAOC,IAAIC,SAASC,MAAM28I,2BAEpC,aAAgB,CACZrpI,OAAQp5L,EAAK0iU,cAAgB1iU,EAAK0iU,aAAatjV,OAAS,EAAI4gB,EAAK0iU,aAAa1+U,KAAI,SAAU6V,EAAGnf,GAC3F,MAAO,CAAE,KAAQirM,OAAOC,IAAIC,SAASC,MAAM68I,0BAA2B,MAAS,CAACjoV,EAAImf,EAAEo2B,EAAG0uE,QAAQ,IAAK,WAAc,MACrH,GACH3+F,KAAMA,EAAK0iU,cAAgB,GAC3BhoI,WAAW,EACXqnI,UAAW,UACX9mV,KAAM0qM,OAAOC,IAAIC,SAASC,MAAM68I,4BAGpC/hV,EAAM,GACNgiV,EAAa,GACXC,EAAa,GACfC,EAAgB,GACpB1nV,OAAOyR,KAAK+0U,GAAU59U,KAAI,SAAA/H,GACtB2E,EAAIX,KAAK2hV,EAAS3lV,GAAK+jB,MACnBA,EAAKmhU,WAAWnhU,EAAKmhU,UAAUjgV,QAAQjF,IAAQ,IAC/C2mV,EAAW3iV,KAAK,CACZhF,KAAM2mV,EAAS3lV,GAAKhB,KACpBq5G,MAAOstO,EAAS3lV,GAAK8lV,UACrBrnD,KAAM,cAEVooD,EAAc7iV,KAAK2hV,EAAS3lV,GAAK+jB,KAAK5gB,QACtCyjV,EAAW5iV,KAAK,CACZjB,KAAM,OACN/D,KAAM2mV,EAAS3lV,GAAKhB,KACpBy/M,WAAYknI,EAAS3lV,GAAKy+M,WAC1B16L,KAAM4hU,EAAS3lV,GAAKm9M,OACpBuB,UAAW,CACPC,OAAQ,CACJtmG,MAAOstO,EAAS3lV,GAAK8lV,YAG7B5pI,UAAW,CACPyC,OAAQ,CACJr6G,WAAY,EACZC,YAAaohP,EAAS3lV,GAAK8lV,kBAO/CnhV,EAAMA,EAAII,OACV,IAAI+hV,EAAO,EACPC,EAAO,EAEPpiV,EAAIxB,QAAUwB,GACdA,EAAIgoC,SAAQ,SAAU/uB,EAAGnf,GACjBmf,EAAEo2B,EAAI8yS,IACNA,EAAOlpU,EAAEo2B,GAETp2B,EAAEo2B,EAAI+yS,IACNA,EAAOnpU,EAAEo2B,MAIT,GAAR+yS,GACAA,EAAO,GACPD,EAA6B,EAAtBx9U,KAAK0tB,KAAK8vT,EAAO,IACL,IAEN,EAARC,EAAYD,GACjBC,GAAsC,GAA/Bz9U,KAAK0tB,MAAc,EAAR+vT,EAAa,KAC/BD,GAAQC,GACW,IAGnBD,EAA8B,GAAvBx9U,KAAK0tB,KAAK8vT,EAAO,IACxBC,GAAQD,EACIA,EAAO,GAGvB,IAAIl/T,EAAS,CACTwrL,KAAM,CACFr7K,KAAM,GACNlE,MAAO,GACPmpC,OAAQ,IAEZmkH,MAAO,GACPg6B,QAAS,CACLzwL,QAAS,OACT0wL,SAAS,EACTC,UAAW,SAAU5xK,GACjB,IAEIjc,EAFA86G,EAAO,GACPjrG,EAAOoM,EAAO,GAAG1lB,KAAKrkB,MAAM,GAEhC8tB,EAAMlkB,KAAKq4C,MAAOtkB,EAAO,GAAK,GAAM,KAAOA,EAAO,IAAIl4B,YAAck4B,EAAO,IAAIl4B,YAAc,KAAQk4B,EAAO,GAAK,EAAK,KAAOA,EAAO,GAAK,GAAGl4B,YAAck4B,EAAO,GAAK,GAAGl4B,YACzK,IAAIuwN,EAAOxgM,SAAS1H,EAAI7iB,MAAM,KAAK,IAgCnC,OA5BI6iB,EADAkoM,GAAQ,GACFloM,EAGA,IAAMkoM,EAAKvwN,WAAa,IAAMqoB,EAAI7iB,MAAM,KAAK,GAEvD8+B,EAAOkD,SAAQ,SAAU/uB,EAAGnf,GACpBmf,EAAEmG,KAAK/kB,MAAQ0qM,OAAOC,IAAIC,SAASC,MAAM27I,MAAQ,MAC7CnxT,WAAWzW,EAAEle,MAAM,IAAM,EACzB4oI,GAAQ1qH,EAAE5e,KAAO,IAAM0qM,OAAOC,IAAIC,SAASC,MAAMkS,KAAO,WAAan+L,EAAEmG,KAAKrkB,MAAM,GAAK,QAClE,GAAdke,EAAEle,MAAM,GACf4oI,GAAQ1qH,EAAE5e,KAAO,QAAU4e,EAAEmG,KAAKrkB,MAAM,GAAK,QAE7C4oI,GAAQ1qH,EAAE5e,KAAO,IAAM0qM,OAAOC,IAAIC,SAASC,MAAMiS,IAAM,WAAal+L,EAAEmG,KAAKrkB,MAAM,GAAK,QAGrFke,EAAEmG,KAAK/kB,MAAQ0qM,OAAOC,IAAIC,SAASC,MAAM6I,QAAU,OAAO90L,EAAEmG,KAAK/kB,MAAQ0qM,OAAOC,IAAIC,SAASC,MAAMm8I,UAAY,MAChH3xT,WAAWzW,EAAEle,MAAM,IAAM,EACzB4oI,GAAQ1qH,EAAE5e,KAAO,IAAM0qM,OAAOC,IAAIC,SAASC,MAAMgS,WAAa,WAAaj+L,EAAEmG,KAAKrkB,MAAM,GAAK,QACxE,GAAdke,EAAEle,MAAM,GACf4oI,GAAQ1qH,EAAE5e,KAAO,MAAQ4e,EAAEmG,KAAKrkB,MAAM,GAAK,SAE3C4oI,GAAQ1qH,EAAE5e,KAAO,IAAM0qM,OAAOC,IAAIC,SAASC,MAAM+R,QAAU,WAAah+L,EAAEmG,KAAKrkB,MAAM,GAAK,QAI9F4oI,GAAQ1qH,EAAE5e,KAAO,MAAQ4e,EAAEmG,KAAKrkB,MAAM,GAAK,YAG5C8tB,EAAM,SAAW86G,IAGhC+0E,OAAQ,CACJxpL,MAAO,GACP9P,KAAM4iU,EACNK,QAAS,GACTr4H,WAAY,EACZD,UAAW,GACXh3M,SAAU,CACN,WAAW,GAEf05I,UAAW,CACP/4C,MAAO,SAGf2lG,MAAO,CACHxhK,IAAK,EACLjmB,IAAKxS,EAAK0uL,GAAGtvM,OACb8jV,QAAQ,EACRptT,SAAU,GACV92B,KAAM,WACN+rN,SAAU,CACN9nM,MAAM,GAEVi3L,SAAU,CACN/B,UAAW,CACP7jG,MAAO,UACPxlF,MAAO,IAGfqrL,UAAW,CACPrkL,SAAU,EACVw+E,MAAO,UACPgjG,UAAW,SAAUt6K,GACjB,GAAIA,GAASA,EAAQ,IAAM,EAAG,CAC1B,IAAI20L,EAAO30L,EAAQ,GAMnB,OAJI20L,EADAA,GAAQ,GACDA,EAAKvwN,WAEL,IAAMuwN,GAEH,SAI1BtX,UAAW,CACPlC,UAAW,CACP1kL,QAAS,GACTz0B,KAAM,YAIlBo7M,MAAO,CAAC,CACJ2Q,SAAU,CACN9nM,MAAM,GAEVi3L,SAAU,CACN/B,UAAW,CACP7jG,MAAO,YAGf6lG,UAAW,CACP7lG,MAAO,WAEX+lG,UAAW,CACPlC,UAAW,CACP1kL,QAAS,GACTz0B,KAAM,WAGd/D,KAAM,WACNkoV,aAAc,MACdC,cAAe,CACX9uO,MAAO,UACPiK,SAAU,GACVrqF,QAAS,CAAC,EAAG,GAAI,GAAI,MAE1B,CACCj5B,KAAM0qM,OAAOC,IAAIC,SAASC,MAAMoG,IAAM,MACtCi3I,aAAc,MACdC,cAAe,CACX9uO,MAAO,UACPiK,SAAU,GACVrqF,QAAS,CAAC,EAAG,GAAI,IAAK,KAE1BgmL,SAAU,CACN/B,UAAW,CACP7jG,MAAO,UACPt1G,KAAM,UAGdq7M,UAAW,CACPp3L,MAAM,GAGV8nM,SAAU,CACN9nM,MAAM,KAIdm2L,OAAQypI,GAEZh/T,EAAOy1L,OAAO3lM,SAASgyL,OAAOC,IAAIC,SAASC,MAAM/8K,KAAO,QAAS,EACjEw1T,GAAcjoR,QACdioR,GAAchlI,UAAU11L,KAG5Bw9T,wBA3qBK,SA2qBmBrhU,GACpB,IAAIsqM,EAAQtqM,EAAKhc,KAAI,SAAUlJ,GAC3B,OAAOA,EAAEkrM,QAETukB,EAASvqM,EAAKhc,KAAI,SAAUlJ,GAC5B,OAAOA,EAAEwmV,OAET+B,EAAY,EACZC,EAAY,EAEhBh5H,EAAM1hL,SAAQ,SAAUhnC,EAAMzC,GACtBorN,EAAOprN,GAASkkV,IAChBA,EAAY94H,EAAOprN,IAEnBorN,EAAOprN,GAASmkV,IAChBA,EAAY/4H,EAAOprN,OAO3B,IAAIokV,EAAc9oU,EAAEmjC,MAAkB,IAAZylS,EAAkB,IAExCG,EAAgBD,EAAc,EAC9BE,EAAW,EACXC,EAAW,GAEXF,GAAiB,KACjBC,EAAW,IACXC,EAAW,KACJF,GAAiB,KACxBC,EAAW,IACXC,EAAW,KACJF,GAAiB,MACxBC,EAAW,IACXC,EAAW,KAGf,IAAIC,EAAah+I,OAAOC,IAAIC,SAASC,MAAM89I,QAAU,IAAMF,EAAW,KAGlE7/T,EAAS,CACTwrL,KAAM,CACFr7K,KAAM,GACNlE,MAAO,GACPmpC,OAAQ,IAEZqgJ,OAAQ,CACJxpL,MAAO,EACP9P,KAAM,CAAC,CACH/kB,KAAM0oV,IAEVt2L,UAAW,CACP/4C,MAAO,SAGf2lG,MAAO,CACHj7M,KAAM,WACNghB,KAAMsqM,EACNS,SAAU,CACN9nM,MAAM,GAEVi3L,SAAU,CACN/B,UAAW,CACP7jG,MAAO,SAGf6lG,UAAW,CACP7lG,MAAO,OACPiK,SAAU,EACVzoF,SAAU,EACVwhL,UAAW,SAAUz9L,EAAGnf,GACpB,IAAI24L,EAAM,cAActnL,KAAK,gCAAgCA,KAAK8N,GAAG,IACrE,GAAIw5K,EACA,OAAOliK,SAASkiK,EAAI,MAIhCw3B,YAAa,CACTrV,MAAO,CACHvyL,MAAM,KAIlBm3L,MAAO,CACHn/M,KAAM0oV,EACNlrS,IAAK6qS,EACL9wT,IAAK+wT,EACLztT,SAAUwtT,EAAY,GAAKC,EAAcD,GAAa,EAAIC,EAAc,EACxElpI,UAAW,CACPp3L,MAAM,EACNk1L,UAAW,CACPn5M,KAAM,SACNs1G,MAAO,SAGfy2G,SAAU,CACN9nM,MAAM,GAEVmgU,cAAe,CACXlvT,QAAS,CAAC,EAAG,EAAG,EAAG,KAEvBimL,UAAW,CACP7lG,MAAO,OACPgjG,UAAW,SAAU37M,EAAOwD,GACxB,OAAOgyB,SAASx1B,EAAQ8nV,IAE5BllO,SAAU,GAEd27F,SAAU,CACN/B,UAAW,CACP7jG,MAAO,aAInB8iG,QAAS,CACLn0L,MAAM,EACN0D,QAAS,OACT0wL,SAAS,EACTwT,YAAa,CACT7rN,KAAM,SAOVs4M,UAAW,SAAUt6K,GACjBA,EAAQA,EAAM,GACd,IAAI1D,EAAOk+K,MAAMx6K,EAAM/hC,MAAMw8M,OAAOE,4BACpC,MAAO,CAAChS,OAAOC,IAAIC,SAASC,MAAM89I,QAAU,MAC3C5mT,EAAMrhC,MAAQ8nV,GAAU9kO,QAAQ,GAAK,IAClC,IACA+kO,EACA,IACA,oCACJ/9I,OAAOC,IAAIC,SAASC,MAAMxsK,KAC1B,KAAOA,EAAO,KAAK7sB,KAAK,MAGhCo+M,YAAa,CACT5nM,MAAM,GAEVm2L,OAAQ,CACJn+M,KAAM0oV,EACN3kV,KAAM,OACN27M,UAAW,CACPC,OAAQ,CACJtmG,MAAO,YAGfuvO,UAAW,CACPjpI,OAAQ,CACJtmG,MAAO,OACP7gF,QAAS,KAGjBqwT,YAAY,EACZ9jU,KAAMuqM,EACNv2K,OAAQ,cACR+vS,WAAY,GAEhBv3N,gBAAiB,WAErB+xN,GAAcjoR,QACdioR,GAAchlI,UAAU11L,IAG5B09T,qBAp1BK,SAo1BgBvhU,EAAMw1L,EAAO9yL,GAgB9B,IAAI4nM,EAAQtqM,EAAKvF,EAAE5N,KAAKmT,GAAM,IAAIhc,KAAI,SAAUlJ,GAC5C,OAAOA,EAAEkrM,QAETolB,EAAQ,GACZ,IAAK,IAAIj7J,KAAKnwC,EAAM,CAChB,GAAIvF,EAAE5N,KAAKmT,GAAM5gB,OAAS,EAEtB,IAAInD,EAAMu5M,EAAQ,IAAM,MAAMzpM,KAAKokD,GAAG,GAAK,SAEvCl0D,EAAMu5M,EAEd4V,EAAMnrN,KAAK,CACPhF,KAAMgB,EACN+jB,KAAMA,EAAKmwC,GAAGnsD,KAAI,SAAUpC,GACxB,OAAOA,EAAKmwM,YAKxB,IAAIiyI,EAAW,EACf54H,EAAMxiL,SAAQ,SAAUhnC,GACpB,IAAIqiV,EAAUxpU,EAAE+X,IAAI5wB,EAAKoe,MACzBgkU,EAAWA,EAAWC,EAAUD,EAAWC,KAE/C,IAAIC,EAAS,EACA,QAATxhU,IACIshU,GAAY,KACZE,EAAS,IACTxhU,EAAO,OACAshU,GAAY,MACnBE,EAAS,IACTxhU,EAAO,QAOf0oM,EAAMxiL,SAAQ,SAAUwwK,GACpBA,EAAOp5L,KAAK4oB,SAAQ,SAAUhnC,EAAMzC,GACb,MAAfi6M,EAAOn+M,MAA+B,iBAAfm+M,EAAOn+M,KAC9Bm+M,EAAOp5L,KAAK7gB,GAASsb,EAAEmjC,MAAMh8C,EAAOsiV,EAAQ,GAE5C9qI,EAAOp5L,KAAK7gB,GAASsb,EAAEmjC,MAAMh8C,EAAOsiV,EAAQ,SA6BxD,IAAMC,EAAgBzhU,EAAO8yL,EAAQ,IAAM9yL,EAAO,IAAM8yL,EACpD3xL,EAAS,CACTywF,MAAO,CAAC,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,WAC3G+6F,KAAM,CACFr7K,KAAM,GACNlE,MAAO,GACPmpC,OAAQ,IAEZqgJ,OAAQ,CACJxpL,MAAO,GACP9P,KAAMorM,EAAMpnN,KAAI,SAAUpC,GACtB,OAAOA,EAAK3G,QAEhBq8M,UAAW,SAAUr8M,GACjB,OAAIynB,EACOznB,EAAO,MAAQynB,EAAO,IAEtBznB,GAGfoyJ,UAAW,CACP/4C,MAAO,SAGf2lG,MAAO,CACHj7M,KAAM,WACNghB,KAAMsqM,EACNS,SAAU,CACN9nM,MAAM,GAEVi3L,SAAU,CACN/B,UAAW,CACP7jG,MAAO,SAGf6lG,UAAW,CACP7lG,MAAO,OACPiK,SAAU,EACVzoF,SAAU,EACVwhL,UAAW,SAAUz9L,EAAGnf,GACpB,IAAI24L,EAAM,cAActnL,KAAK,gCAAgCA,KAAK8N,GAAG,IACrE,GAAIw5K,EACA,OAAOliK,SAASkiK,EAAI,MAIhCw3B,YAAa,CACTrV,MAAO,CACHvyL,MAAM,KAIlBm3L,MAAO,CACHn/M,KAAMkpV,EACN9pI,UAAW,CACPp3L,MAAM,EACNk1L,UAAW,CACPn5M,KAAM,SACNs1G,MAAO,SAGfy2G,SAAU,CACN9nM,MAAM,GAEVmgU,cAAe,CACXlvT,QAAS,CAAC,EAAG,EAAG,EAAGiwT,EAAc/kV,OAAS,GAAK,IAAM,KAEzD+6M,UAAW,CACP7lG,MAAO,OAIPiK,SAAU,GAEd27F,SAAU,CACN/B,UAAW,CACP7jG,MAAO,aAInB8iG,QAAS,CACLn0L,MAAM,EACN0D,QAAS,OACT0wL,SAAS,EACTwT,YAAa,CACT7rN,KAAM,SAOVs4M,UAAW,SAAUt6K,GACjB,IAAI4O,EAAM,GACNtS,EAAOk+K,MAAMx6K,EAAM,GAAG/hC,MAAMw8M,OAAOE,4BAKvC,OAJA36K,EAAM4L,SAAQ,SAAUhnC,GACpBgqC,GAAOhqC,EAAKg2M,WAAa,KAAOh2M,EAAKjG,MAAQ,IAAM+mB,EAAO,uCAE9DkpB,GAAO+5J,OAAOC,IAAIC,SAASC,MAAMxsK,KAAO,KAAOA,IAIvDuxL,YAAa,CACT5nM,MAAM,GAEVm2L,OAAQgS,EAAMpnN,KAAI,SAAUpC,GACxB,MAAO,CACH3G,KAAM2G,EAAK3G,KACX+D,KAAM,OACN6kV,UAAW,CACPjpI,OAAQ,CACJtmG,MAAO,OACP7gF,QAAS,KAGjBqwT,YAAY,EACZ9jU,KAAMpe,EAAKoe,KACXg0B,OAAQ,cACR+vS,WAAY,MAGpBv3N,gBAAiB,WAErB+xN,GAAcjoR,QACdioR,GAAchlI,UAAU11L,IAG5BugU,wBA3iCK,SA2iCmBpkU,EAAMw1L,GAC1B,IASI6uI,EAAcrkU,EAAKwhU,QAAQx9U,KAAI,SAAU6V,EAAGnf,GAC5C,MAAO,CAAE,KAAQ,aAAc,MAAS,CAACA,EAAGmf,EAAEk4L,QAAS,WAAc,MAErEuyI,EAActkU,EAAKukU,QAAQvgV,KAAI,SAAU6V,EAAGnf,GAC5C,MAAO,CAAE,KAAQ,aAAc,MAAS,CAACA,EAAGmf,EAAEk4L,QAAS,WAAc,MAGrEluL,EAAS,CACTu5J,MAAO,GACPiyB,KAAM,CACFr7K,KAAM,GACNlE,MAAO,GACPmpC,OAAQ,IAEZqgJ,OAAQ,CACJxpL,MAAO,GACP9P,KAzBS,CAAC,CACd/kB,KAAM,aACNq5G,MAAO,UACPomL,KAAM,aACP,CACCz/R,KAAM,aACNq5G,MAAO,UACPomL,KAAM,cAmBFuoD,QAAS,GACTr4H,WAAY,EACZD,UAAW,GACXt9D,UAAW,CACP/4C,MAAO,SAGf8iG,QAAS,CACL9iG,MAAO,CAAC,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,WAC3G3tF,QAAS,OACT0wL,SAAS,EACTC,UAAW,SAAU5xK,GACjB,IAEIjc,EAFA86G,EAAO,GACPjrG,EAAOoM,EAAO,GAAG1lB,KAAKrkB,MAAM,GAEhC8tB,EAAMlkB,KAAKq4C,MAAOtkB,EAAO,GAAK,GAAM,KAAOA,EAAO,IAAIl4B,YAAck4B,EAAO,IAAIl4B,YAAc,KAAQk4B,EAAO,GAAK,EAAK,KAAOA,EAAO,GAAK,GAAGl4B,YAAck4B,EAAO,GAAK,GAAGl4B,YACzK,IAAIuwN,EAAOxgM,SAAS1H,EAAI7iB,MAAM,KAAK,IAYnC,OARI6iB,EADAkoM,GAAQ,GACFloM,EAGA,IAAMkoM,EAAKvwN,WAAa,IAAMqoB,EAAI7iB,MAAM,KAAK,GAEvD8+B,EAAOkD,SAAQ,SAAU/uB,EAAGnf,GACxB6pI,GAAQ1qH,EAAE5e,KAAO,MAAQ4e,EAAEmG,KAAKrkB,MAAM,GAAK,YAExC8tB,EAAM,SAAW86G,IAIhC01E,MAAO,CACHxhK,IAAK,EACLjmB,IAAK8xT,EAAYllV,OACjB8jV,QAAQ,EACRptT,SAAU,GACV92B,KAAM,WACN+rN,SAAU,CACN9nM,MAAM,GAEVi3L,SAAU,CACN/B,UAAW,CACP7jG,MAAO,SAGf6lG,UAAW,CACP7lG,MAAO,UACPx+E,SAAU,EACVwhL,UAAW,SAAUt6K,GACjB,GAAIA,EAAQ,IAAM,EAAG,CACjB,IAAI20L,EAAO30L,EAAQ,GAOnB,OALI20L,EADAA,GAAQ,GACDA,EAAKvwN,WAGL,IAAMuwN,GAEH,SAK1BtX,UAAW,CACPp3L,MAAM,IAIdm3L,MAAO,CAAC,CACJn/M,KAAM,aACNo/M,UAAW,CACPp3L,MAAM,EACNk1L,UAAW,CACPn5M,KAAM,SACNs1G,MAAO,SAGfy2G,SAAU,CACN9nM,MAAM,GAEVmgU,cAAe,CACXlvT,QAAS,CAAC,EAAG,EAAG,EAAG,KAEvBimL,UAAW,CACP7lG,MAAO,OAIPiK,SAAU,GAEd27F,SAAU,CACN/B,UAAW,CACP7jG,MAAO,aAIhB,CACComG,WAAY,EACZz/M,KAAM,aACNo/M,UAAW,CACPp3L,MAAM,EACNk1L,UAAW,CACPn5M,KAAM,SACNs1G,MAAO,SAGfy2G,SAAU,CACN9nM,MAAM,GAEVmgU,cAAe,CACXlvT,QAAS,CAAC,EAAG,EAAG,GAAI,KAExBimL,UAAW,CACP7lG,MAAO,OAKPiK,SAAU,GAEd27F,SAAU,CACN/B,UAAW,CACP7jG,MAAO,cAKnB8kG,OAAQ,CAAC,CACLn+M,KAAM,aACN+D,KAAM,OACNghB,KAAMqkU,EACN1pI,UAAW,CACPC,OAAQ,CACJtmG,MAAO,aAGhB,CACCr5G,KAAM,aACN+D,KAAM,OACNghB,KAAMskU,EACN5pI,WAAY,EACZC,UAAW,CACPC,OAAQ,CACJtmG,MAAO,cAInBkY,gBAAiB,WAIrB+xN,GAAcjoR,QACdt4C,QAAQi2I,IAAIpwI,GACZ06T,GAAchlI,UAAU11L,IAG5Bk8T,yBAluCK,WAmuCD,IAAIpjU,EAAOlf,KACXigM,OAAOwC,KAAK,8CAA+C,CACvD8F,KAAMwR,MAAM/5M,KAAKqhV,mBAAmBrnI,OAAO,uBAC3C1F,OAAQt0M,KAAKyhV,YAAYvrU,SAAShY,MAClCsQ,GAAIxO,KAAKugO,sBAAsB36B,KAChCxhK,SAAQ,SAAUy9B,GACbA,EAAIt/C,MAAQs/C,EAAIt/C,KAAKwhU,SAAW/mU,EAAE5N,KAAKyyD,EAAIt/C,MAAM5gB,OAAS,GAC1Dud,EAAKynU,wBAAwB9kR,EAAIt/C,KAAMrD,EAAKuiU,YAAYvrU,SAAS6hM,OACjE74L,EAAK+hU,SAASC,YAAa,IAE3BhiU,EAAKynU,wBAAwB,CACzB,QAAW,CAAC,CACRp+I,KAAM,sBACN+L,OAAQ,IAEZ,QAAW,CAAC,CACR/L,KAAM,sBACN+L,OAAQ,KAEbp1L,EAAKuiU,YAAYvrU,SAAS6hM,OAC7B74L,EAAK+hU,SAASC,YAAa,MAEhCrkU,MAAK,SAAUglD,GACd3iD,EAAKynU,wBAAwB,CACzB,QAAW,CAAC,CACRp+I,KAAM,sBACN+L,OAAQ,IAEZ,QAAW,CAAC,CACR/L,KAAM,sBACN+L,OAAQ,KAEbp1L,EAAKuiU,YAAYvrU,SAAS6hM,OAC7B74L,EAAK+hU,SAASC,YAAa,MAGnCyC,oBAvwCK,SAuwCephU,GAChB,IACI4iU,EADAtuO,EAAQ,CAAC,UAAW,UAAW,WAE/BktO,EAAU,GACV+C,EAAU,GACVC,EAAU,GACV91I,EAAKjxM,KAAKugO,sBAAsB7rB,UAAYxM,OAAOC,IAAIC,SAASC,MAAMg8I,qBAAuBn8I,OAAOC,IAAIC,SAASC,MAAM2+I,YAClF,GAArCzkU,EAAKmhU,UAAUjgV,QAAQ,YAAsD,GAAnC8e,EAAKmhU,UAAUjgV,QAAQ,SAA0C,GAAzB8e,EAAKmhU,UAAU/hV,QACjGwjV,EAAa,CAAC,CACV3nV,KAAM0qM,OAAOC,IAAIC,SAASC,MAAMo7I,OAAS,QACzC5sO,MAAOA,EAAM,GACbomL,KAAM,aACP,CACCz/R,KAAM0qM,OAAOC,IAAIC,SAASC,MAAMkS,KAAO,QACvC1jG,MAAOA,EAAM,GACbomL,KAAM,aACP,CACCz/R,KAAM0qM,OAAOC,IAAIC,SAASC,MAAMiS,IAAM,QACtCzjG,MAAOA,EAAM,GACbomL,KAAM,cAEV8mD,EAAUxhU,EAAKkhU,OAAOl9U,KAAI,SAAU6V,EAAGnf,GACnC,MAAO,CAAE,KAAQirM,OAAOC,IAAIC,SAASC,MAAMo7I,OAAS,QAAS,MAAUrnU,EAAEo2B,EAAG0uE,QAAQ,OAExF4lO,EAAUvkU,EAAKg4L,KAAKh0M,KAAI,SAAU6V,EAAGnf,GACjC,MAAO,CAAE,KAAQirM,OAAOC,IAAIC,SAASC,MAAMkS,KAAO,QAAS,MAAUn+L,EAAEo2B,EAAG0uE,QAAQ,OAEtF6lO,EAAUxkU,EAAK+3L,IAAI/zM,KAAI,SAAU6V,EAAGnf,GAChC,MAAO,CAAE,KAAQirM,OAAOC,IAAIC,SAASC,MAAMiS,IAAM,QAAS,MAAUl+L,EAAEo2B,EAAG0uE,QAAQ,GAAI,WAAc,QAG7D,GAArC3+F,EAAKmhU,UAAUjgV,QAAQ,YAAoD,GAAjC8e,EAAKmhU,UAAUjgV,QAAQ,OAAwC,GAAzB8e,EAAKmhU,UAAU/hV,QACpGwjV,EAAa,CAAC,CACV3nV,KAAMyzM,EAAK,QACXp6F,MAAOA,EAAM,GACbomL,KAAM,aACP,CACCz/R,KAAM0qM,OAAOC,IAAIC,SAASC,MAAMo7I,OAAS,QACzC5sO,MAAOA,EAAM,GACbomL,KAAM,aACP,CACCz/R,KAAM0qM,OAAOC,IAAIC,SAASC,MAAMwU,OAAS,IAAMoqI,SAAW,IAC1DpwO,MAAOA,EAAM,GACbomL,KAAM,cAEV8mD,EAAUxhU,EAAK0uL,GAAG1qM,KAAI,SAAU6V,EAAGnf,GAC/B,MAAO,CAAE,KAAQg0M,EAAK,QAAS,MAAS70L,EAAEo2B,MAE9Cs0S,EAAUvkU,EAAKkhU,OAAOl9U,KAAI,SAAU6V,EAAGnf,GACnC,MAAO,CAAE,KAAQirM,OAAOC,IAAIC,SAASC,MAAMo7I,OAAS,QAAS,MAAUrnU,EAAEo2B,EAAG0uE,QAAQ,OAExF6lO,EAAUxkU,EAAK2kU,iBAAiB3gV,KAAI,SAAU6V,EAAGnf,GAC7C,MAAO,CAAE,KAAQirM,OAAOC,IAAIC,SAASC,MAAMwU,OAAS,IAAMoqI,SAAW,IAAK,MAAU7qU,EAAEo2B,EAAG0uE,QAAQ,GAAI,WAAc,QAGjF,GAAjC3+F,EAAKmhU,UAAUjgV,QAAQ,QAAoD,GAArC8e,EAAKmhU,UAAUjgV,QAAQ,WAA4C,GAAzB8e,EAAKmhU,UAAU/hV,QACpGwjV,EAAa,CAAC,CACV3nV,KAAMyzM,EAAK,QACXp6F,MAAOA,EAAM,GACbomL,KAAM,aACP,CACCz/R,KAAM0qM,OAAOC,IAAIC,SAASC,MAAMwU,OAAS,IAAMoqI,SAAW,IAC1DpwO,MAAOA,EAAM,GACbomL,KAAM,cAEV8mD,EAAUxhU,EAAK0uL,GAAG1qM,KAAI,SAAU6V,EAAGnf,GAC/B,MAAO,CAAE,KAAQg0M,EAAK,QAAS,MAAU70L,EAAEo2B,EAAG0uE,QAAQ,OAE1D4lO,EAAUvkU,EAAK2kU,iBAAiB3gV,KAAI,SAAU6V,EAAGnf,GAC7C,MAAO,CAAE,KAAQirM,OAAOC,IAAIC,SAASC,MAAMwU,OAAS,IAAMoqI,SAAW,IAAK,MAAU7qU,EAAEo2B,EAAG0uE,QAAQ,GAAI,WAAc,QAGjF,GAAjC3+F,EAAKmhU,UAAUjgV,QAAQ,QAAoD,GAArC8e,EAAKmhU,UAAUjgV,QAAQ,WAA4C,GAAzB8e,EAAKmhU,UAAU/hV,QACpGwjV,EAAa,CACT,CAAE3nV,KAAMyzM,EAAK,QAASp6F,MAAOA,EAAM,GAAIomL,KAAM,aAC7C,CAAEz/R,KAAM0qM,OAAOC,IAAIC,SAASC,MAAM8+I,kBAAmBtwO,MAAOA,EAAM,KAEtEktO,EAAUxhU,EAAK0uL,GAAG1qM,KAAI,SAAU6V,EAAGnf,GAC/B,MAAO,CAAE,KAAQg0M,EAAK,QAAS,MAAU70L,EAAEo2B,EAAG0uE,QAAQ,OAE1D4lO,EAAUvkU,EAAK6kU,OAAO7gV,KAAI,SAAU6V,EAAGnf,GACnC,MAAO,CAAE,KAAQirM,OAAOC,IAAIC,SAASC,MAAM8+I,kBAAmB,MAAU/qU,EAAEo2B,EAAG0uE,QAAQ,SAGnD,GAAjC3+F,EAAKmhU,UAAUjgV,QAAQ,QAAoD,GAArC8e,EAAKmhU,UAAUjgV,QAAQ,WAA4C,GAAzB8e,EAAKmhU,UAAU/hV,QACpGwjV,EAAa,CACT,CAAE3nV,KAAMyzM,EAAK,QAASp6F,MAAOA,EAAM,IACnC,CAAEr5G,KAAM0qM,OAAOC,IAAIC,SAASC,MAAM8+I,kBAAmBtwO,MAAOA,EAAM,IAClE,CAAEr5G,KAAM0qM,OAAOC,IAAIC,SAASC,MAAMwU,OAAS,IAAMoqI,SAAW,IAAKpwO,MAAOA,EAAM,KAElFktO,EAAUxhU,EAAK0uL,GAAG1qM,KAAI,SAAU6V,EAAGnf,GAC/B,MAAO,CAAE,KAAQg0M,EAAK,QAAS,MAAU70L,EAAEo2B,EAAG0uE,QAAQ,OAE1D4lO,EAAUvkU,EAAK6kU,OAAO7gV,KAAI,SAAU6V,EAAGnf,GACnC,MAAO,CAAE,KAAQirM,OAAOC,IAAIC,SAASC,MAAM8+I,kBAAmB,MAAU/qU,EAAEo2B,EAAG0uE,QAAQ,OAEzF6lO,EAAUxkU,EAAK2kU,iBAAiB3gV,KAAI,SAAU6V,EAAGnf,GAC7C,MAAO,CAAE,KAAQirM,OAAOC,IAAIC,SAASC,MAAMwU,OAAS,IAAMoqI,SAAW,IAAK,MAAU7qU,EAAEo2B,EAAG0uE,QAAQ,GAAI,WAAc,QAG7E,GAArC3+F,EAAKmhU,UAAUjgV,QAAQ,WAA4C,GAAzB8e,EAAKmhU,UAAU/hV,QAC9DwjV,EAAa,CAAC,CACV3nV,KAAM0qM,OAAOC,IAAIC,SAASC,MAAMo7I,OAAS,QACzC5sO,MAAOA,EAAM,GACbomL,KAAM,cAEV8mD,EAAUxhU,EAAKkhU,OAAOl9U,KAAI,SAAU6V,EAAGnf,GACnC,MAAO,CAAE,KAAQirM,OAAOC,IAAIC,SAASC,MAAMo7I,OAAS,QAAS,MAAUrnU,EAAEo2B,EAAG0uE,QAAQ,SAGlD,GAAjC3+F,EAAKmhU,UAAUjgV,QAAQ,OAAwC,GAAzB8e,EAAKmhU,UAAU/hV,SAC1DwjV,EAAa,CAAC,CACV3nV,KAAMyzM,EAAK,QACXp6F,MAAOA,EAAM,GACbomL,KAAM,cAEV8mD,EAAUxhU,EAAK0uL,GAAG1qM,KAAI,SAAU6V,EAAGnf,GAC/B,MAAO,CAAE,KAAQg0M,EAAK,QAAS,MAAU70L,EAAEo2B,EAAG0uE,QAAQ,QAoB9D,IAAIokO,EAAO,EAIPz4H,EAAQtqM,EAAK8kK,GAAG9gL,KAAI,SAAU6V,EAAGnf,GAEjC,MAAI,mBAAmB2R,KAAKwN,GACjB29L,MAAM39L,EAAEjT,MAAM,KAAK,GAAK,OAASiT,EAAEjT,MAAM,KAAK,IAAI6wM,OAAOC,kBAAkB,UAC3E,UAAUrrM,KAAKwN,GACf29L,MAAM,SAAgB39L,EAAEjT,MAAM,KAAK,IAAI6wM,OAAOC,kBAAkB,SAEhEF,MAAM39L,GAAG49L,OAAOE,mBAKrB,GAAGl5M,OAAO+iV,EAAS+C,GACzB37S,SAAQ,SAAU/uB,EAAGnf,GACjBmf,EAAEle,MAAQonV,IACVA,EAAOlpU,EAAEle,UAGjBonV,EAA6B,EAAtBx9U,KAAK0tB,KAAK8vT,EAAO,GAExB,IAAIl/T,EAAS,CACTu5J,MAAO,GACPiyB,KAAM,CACFr7K,KAAM,GACNlE,MAAO,GACPmpC,OAAQ,IAEZghJ,MAAO,CACH8Q,SAAU,CACN9nM,MAAM,GAGVi3L,SAAU,CACN/B,UAAW,CACP7jG,MAAO,YAGf6lG,UAAW,CACP7lG,MAAO,WAEXt0F,KAAMsqM,GAEVlQ,MAAO,CAAC,CACJ3hK,IAAK,EAELsyK,SAAU,CACN9nM,MAAM,GAEVi3L,SAAU,CACN/B,UAAW,CACP7jG,MAAO,YAGf6lG,UAAW,CACP7lG,MAAO,WAEX+lG,UAAW,CACPlC,UAAW,CACP1kL,QAAS,GACTz0B,KAAM,WAGd/D,KAAM,MACNkoV,aAAc,MACdC,cAAe,CACX9uO,MAAO,UACPiK,SAAU,GACVrqF,QAAS,CAAC,EAAG,GAAI,GAAI,OAG7BolL,OAAQ,CACJxpL,MAAO,GACP9P,KAAM4iU,EACNK,QAAS,GACTr4H,WAAY,EACZD,UAAW,GACXt9D,UAAW,CACP/4C,MAAO,SAGf8iG,QAAS,CACLzwL,QAAS,OACT0wL,SAAS,EACTC,UAAW,SAAUt6K,GAEjB,IAAIo6K,EAAUp6K,EAAM,GAAG8nT,UAAY,OAInC,OAHA9nT,EAAM4L,SAAQ,SAAU/uB,EAAGnf,GACvB08M,GAAWp6K,EAAMtiC,GAAGO,KAAO,UAAY+hC,EAAMtiC,GAAGiB,MAAQ,UAErDy7M,IAGfa,SAAU,CAAC,CACPj5M,KAAM,SACNq3S,OAAQ,eAEZj9F,OAAQ,GACR5sF,gBAAiB,YAEoB,GAArCxsG,EAAKmhU,UAAUjgV,QAAQ,YAAsD,GAAnC8e,EAAKmhU,UAAUjgV,QAAQ,SAA0C,GAAzB8e,EAAKmhU,UAAU/hV,OAEjGykB,EAAOu1L,OAAS,CAAC,CACbp6M,KAAM,MACN/D,KAAM0qM,OAAOC,IAAIC,SAASC,MAAMo7I,OAAS,QACzCzmI,YAAa,GACbE,UAAW,CACPC,OAAQ,CACJtmG,MAAOA,EAAM,GACbywO,gBAAiB,CAAC,EAAG,EAAG,EAAG,KAGnC/kU,KAAMwhU,GAEV,CACIxiV,KAAM,MACN/D,KAAM0qM,OAAOC,IAAIC,SAASC,MAAMkS,KAAO,QACvCyC,YAAa,GACbE,UAAW,CACPC,OAAQ,CACJtmG,MAAOA,EAAM,GACbywO,gBAAiB,CAAC,EAAG,EAAG,EAAG,KAGnC/kU,KAAMukU,GAEV,CACIvlV,KAAM,MACN/D,KAAM0qM,OAAOC,IAAIC,SAASC,MAAMiS,IAAM,QACtC0C,YAAa,GACbE,UAAW,CACPC,OAAQ,CACJtmG,MAAOA,EAAM,GACbywO,gBAAiB,CAAC,EAAG,EAAG,EAAG,KAGnC/kU,KAAMwkU,KAGgC,GAArCxkU,EAAKmhU,UAAUjgV,QAAQ,YAAoD,GAAjC8e,EAAKmhU,UAAUjgV,QAAQ,OAAwC,GAAzB8e,EAAKmhU,UAAU/hV,QACpGykB,EAAOu2L,MAAMn6M,KAAK,CACdhF,KAAM0qM,OAAOC,IAAIC,SAASC,MAAMwU,OAAS,IAAMoqI,SAAW,IAC1DvB,aAAc,MACdC,cAAe,CACX9uO,MAAO,UACPiK,SAAU,GACVrqF,QAAS,CAAC,EAAG,GAAI,IAAK,KAG1BgmL,SAAU,CACN/B,UAAW,CACP7jG,MAAO,UACPt1G,KAAM,UAGdq7M,UAAW,CACPp3L,MAAM,GAEV8nM,SAAU,CACN9nM,MAAM,KAGdY,EAAOu1L,OAAS,CAAC,CACbp6M,KAAM,MACN/D,KAAMyzM,EAAK,QACX+L,YAAa,GACbE,UAAW,CACPC,OAAQ,CACJtmG,MAAOA,EAAM,GACbywO,gBAAiB,CAAC,EAAG,EAAG,EAAG,KAGnC/kU,KAAMwhU,GAEV,CACIxiV,KAAM,MACN/D,KAAM0qM,OAAOC,IAAIC,SAASC,MAAMo7I,OAAS,QACzCzmI,YAAa,GACbE,UAAW,CACPC,OAAQ,CACJtmG,MAAOA,EAAM,GACbywO,gBAAiB,CAAC,EAAG,EAAG,EAAG,KAGnC/kU,KAAMukU,GAEV,CACIvlV,KAAM,OACN/D,KAAM0qM,OAAOC,IAAIC,SAASC,MAAMwU,OAAS,IAAMoqI,SAAW,IAC1DhqI,WAAY,EACZC,UAAW,CACPC,OAAQ,CACJtmG,MAAOA,EAAM,GACbywO,gBAAiB,CAAC,EAAG,EAAG,EAAG,KAGnClB,UAAW,CACPjpI,OAAQ,CACJtmG,MAAO,2BAGft0F,KAAMwkU,MAG4B,GAAjCxkU,EAAKmhU,UAAUjgV,QAAQ,QAAoD,GAArC8e,EAAKmhU,UAAUjgV,QAAQ,WAA4C,GAAzB8e,EAAKmhU,UAAU/hV,QACpGykB,EAAOu2L,MAAMn6M,KAAK,CACdhF,KAAM0qM,OAAOC,IAAIC,SAASC,MAAMwU,OAAS,IAAMoqI,SAAW,IAC1DvB,aAAc,MACdC,cAAe,CACX9uO,MAAO,UACPiK,SAAU,GACVrqF,QAAS,CAAC,EAAG,GAAI,IAAK,KAG1BgmL,SAAU,CACN/B,UAAW,CACP7jG,MAAO,UACPt1G,KAAM,UAGdq7M,UAAW,CACPp3L,MAAM,GAEV8nM,SAAU,CACN9nM,MAAM,KAGdY,EAAOu1L,OAAS,CAAC,CACbp6M,KAAM,MACN/D,KAAMyzM,EAAK,QACX+L,YAAa,GACbE,UAAW,CACPC,OAAQ,CACJtmG,MAAOA,EAAM,GACbywO,gBAAiB,CAAC,EAAG,EAAG,EAAG,KAGnC/kU,KAAMwhU,GACP,CACCxiV,KAAM,OACN/D,KAAM0qM,OAAOC,IAAIC,SAASC,MAAMwU,OAAS,IAAMoqI,SAAW,IAC1DhqI,WAAY,EACZC,UAAW,CACPC,OAAQ,CACJtmG,MAAOA,EAAM,GACbywO,gBAAiB,CAAC,EAAG,EAAG,EAAG,KAGnClB,UAAW,CACPjpI,OAAQ,CACJtmG,MAAO,2BAGft0F,KAAMukU,MAG4B,GAAjCvkU,EAAKmhU,UAAUjgV,QAAQ,QAAoD,GAArC8e,EAAKmhU,UAAUjgV,QAAQ,WAA4C,GAAzB8e,EAAKmhU,UAAU/hV,OACpGykB,EAAOu1L,OAAS,CAAC,CACbp6M,KAAM,MACN/D,KAAMyzM,EAAK,QACX+L,YAAa,GACbE,UAAW,CACPC,OAAQ,CACJtmG,MAAOA,EAAM,GACbywO,gBAAiB,CAAC,EAAG,EAAG,EAAG,KAGnC/kU,KAAMwhU,GAEV,CACIxiV,KAAM,MACN/D,KAAM0qM,OAAOC,IAAIC,SAASC,MAAM8+I,kBAChCnqI,YAAa,GACbE,UAAW,CACPC,OAAQ,CACJtmG,MAAOA,EAAM,GACbywO,gBAAiB,CAAC,EAAG,EAAG,EAAG,KAGnC/kU,KAAMukU,KAG4B,GAAjCvkU,EAAKmhU,UAAUjgV,QAAQ,QAAoD,GAArC8e,EAAKmhU,UAAUjgV,QAAQ,WAA4C,GAAzB8e,EAAKmhU,UAAU/hV,QACpGykB,EAAOu2L,MAAMn6M,KAAK,CACdhF,KAAM0qM,OAAOC,IAAIC,SAASC,MAAMwU,OAAS,IAAMoqI,SAAW,IAC1DvB,aAAc,MACdC,cAAe,CACX9uO,MAAO,UACPiK,SAAU,GACVrqF,QAAS,CAAC,EAAG,GAAI,IAAK,KAE1BgmL,SAAU,CACN/B,UAAW,CACP7jG,MAAO,UACPt1G,KAAM,UAGdq7M,UAAW,CACPp3L,MAAM,GAEV8nM,SAAU,CACN9nM,MAAM,KAGdY,EAAOu1L,OAAS,CAAC,CACbp6M,KAAM,MACN/D,KAAMyzM,EAAK,QACX+L,YAAa,GACbE,UAAW,CACPC,OAAQ,CACJtmG,MAAOA,EAAM,GACbywO,gBAAiB,CAAC,EAAG,EAAG,EAAG,KAGnC/kU,KAAMwhU,GAEV,CACIxiV,KAAM,MACN/D,KAAM0qM,OAAOC,IAAIC,SAASC,MAAM8+I,kBAChCnqI,YAAa,GACbE,UAAW,CACPC,OAAQ,CACJtmG,MAAOA,EAAM,GACbywO,gBAAiB,CAAC,EAAG,EAAG,EAAG,KAGnC/kU,KAAMukU,GACR,CACEvlV,KAAM,OACN/D,KAAM0qM,OAAOC,IAAIC,SAASC,MAAMwU,OAAS,IAAMoqI,SAAW,IAC1DhqI,WAAY,EACZC,UAAW,CACPC,OAAQ,CACJtmG,MAAOA,EAAM,GACbywO,gBAAiB,CAAC,EAAG,EAAG,EAAG,KAGnClB,UAAW,CACPjpI,OAAQ,CACJtmG,MAAO,2BAGft0F,KAAMwkU,MAGgC,GAArCxkU,EAAKmhU,UAAUjgV,QAAQ,WAA4C,GAAzB8e,EAAKmhU,UAAU/hV,OAC9DykB,EAAOu1L,OAAS,CAAC,CACbp6M,KAAM,MACN/D,KAAM0qM,OAAOC,IAAIC,SAASC,MAAMo7I,OAAS,QACzCzmI,YAAa,GACbE,UAAW,CACPC,OAAQ,CACJtmG,MAAOA,EAAM,GACbywO,gBAAiB,CAAC,EAAG,EAAG,EAAG,KAGnC/kU,KAAMwhU,KAG4B,GAAjCxhU,EAAKmhU,UAAUjgV,QAAQ,OAAwC,GAAzB8e,EAAKmhU,UAAU/hV,SAC1DykB,EAAOu1L,OAAS,CAAC,CACbp6M,KAAM,MACN/D,KAAMyzM,EAAK,QACX+L,YAAa,GACbE,UAAW,CACPC,OAAQ,CACJtmG,MAAOA,EAAM,GACbywO,gBAAiB,CAAC,EAAG,EAAG,EAAG,KAGnC/kU,KAAMwhU,KAGdjD,GAAcjoR,QACdioR,GAAchlI,UAAU11L,IAG5B+8T,YA5wDK,SA4wDO5jT,GACR0gK,OAAOwC,KAAK,6CAA8CljK,GAAO,SAAUsiC,GAClEA,EAAIt/C,KAAKm0L,UAId9gM,SAASG,KAAO8rD,EAAIt/C,KAAKm0L,UAHrBC,OAAOC,MAAM1O,OAAOC,IAAIC,SAASC,MAAMwO,gBAI5Ch6L,MAAK,WACJ+C,YAAW,WACP8pD,GAAG69Q,aAAaC,WACjB,UAIf3iR,MAAO,CACH,2BAA4B,SAAU+gI,GAClC5lM,KAAKyhV,YAAYr2U,KAAOpL,KAAKojV,oBAAoBpjV,KAAKugO,sBAAsBn1N,QAGpFgmB,SAAU,CACN0uL,QAAS,WACL,IAAMnB,EAAW3+M,KAAKu+M,UACtB,MAAoC,QAAhCv+M,KAAKuhV,wBACE,IAAIj3U,KAAKtK,KAAKqhV,mBAAmBj/Q,UACjC,IAAI93D,KAAQq0M,EAASjW,cAArB,KAAsCiW,EAASnW,WAAa,GAA5D,IAAiEmW,EAASlW,WAAarmI,UACvD,SAAhCpiE,KAAKuhV,wBACL,IAAIj3U,KAAKtK,KAAKqhV,mBAAmBj/Q,UAAY,IAAI93D,KAAKq0M,EAASjW,cAAgB,KAAOiW,EAASnW,WAAa,IAAIpmI,UAChF,QAAhCpiE,KAAKuhV,wBACL,IAAIj3U,KAAKtK,KAAKqhV,mBAAmBj/Q,UAAY,IAAI93D,KAAKq0M,EAASjW,cAAgB,IAAItmI,eADvF,IAKf0gB,QAj1DW,WAk1DP9iF,KAAKugO,sBAAwBvgO,KAAKssE,KAClC,IAAIm7Q,EAASxkV,OAAOwkV,OACpBznV,KAAK2hV,SAAa8F,GAAUA,EAAO74U,KAAK5O,KAAKssE,KAAKs5H,KAAO5lM,KAAKugO,sBAAsBmnH,cAAiBjyU,KAAKkyU,cAAelyU,KAAKmsU,qBAE1H5hV,KAAKssE,MAAQtsE,KAAKssE,KAAKs5H,IAAM5lM,KAAKssE,KAAKs5H,GAAGpmF,UAAU,EAAG,GAAG/7G,QAAQ,QAAU,GAC5E8mC,EAAE,mBAAmB7kB,QAG7Bs9D,QA11DW,WA21DPhjF,KAAKyhV,YAAYr2U,KAAOpL,KAAKojV,oBAAoBpjV,KAAKssE,KAAKxY,QAC3D9zD,KAAKwhV,oBAAsB,CAAEzpI,MAAO/3M,KAAKyhV,YAAYr2U,KAAK,GAAG2sM,MAAO75M,MAAO8B,KAAKyhV,YAAYr2U,KAAK,GAAGlN,MAAO+mB,KAAM,KACjHjlB,KAAKyhV,YAAYvrU,SAAW,CAAE6hM,MAAO/3M,KAAKyhV,YAAYr2U,KAAK,GAAG2sM,MAAO75M,MAAO8B,KAAKyhV,YAAYr2U,KAAK,GAAGlN,MAAO+mB,KAAM,KAClH67T,GAAgBhpI,QAAQnyM,KAAK7C,SAASyL,eAAe,eACrDvO,KAAKiiV,qBAAqBjiV,KAAKyhV,YAAYvrU,YEh1DpC,I,OAXC,YACd,ICTW,WAAa,IAAIm7I,EAAIrxJ,KAASyyG,EAAG4+C,EAAIhgF,eAAmB4D,EAAGo8E,EAAI9wE,MAAMtL,IAAIw9B,EAAG,OAAOx9B,EAAG,MAAM,CAACyP,YAAY,eAAepgE,MAAM,CAAG8N,WAAYi/H,EAAIztI,MAAQ,EAAI,QAAS,UAAY,CAACqxD,EAAG,SAAS,CAACyP,YAAY,0BAA0Bt8D,GAAG,CAAC,MAAQipI,EAAI8tD,kBAAkB9tD,EAAIn9E,GAAG,KAAKe,EAAG,SAAS,CAACyP,YAAY,2BAA2B90E,MAAM,CAAC,UAAYyhJ,EAAIyuD,SAAS13L,GAAG,CAAC,MAAQipI,EAAI+tD,kBAAkB/tD,EAAIn9E,GAAG,KAAKe,EAAG,MAAM,CAACyP,YAAY,oBAAoBjK,MAAM,CAAC,wBAAyB42E,EAAIkvE,uBAAyBlvE,EAAIkvE,sBAAsBv2B,iBAAiB,CAAC34C,EAAIn9E,GAAG,aAAam9E,EAAI39E,GAAG29E,EAAIkvE,uBAAyBlvE,EAAIkvE,sBAAsB/iO,MAAM,YAAY6zJ,EAAIn9E,GAAG,KAAKe,EAAG,MAAM,CAACyP,YAAY,8BAA8B,CAACzP,EAAG,MAAM,CAACyP,YAAY,uBAAuB,CAACzP,EAAG,MAAM,CAACyP,YAAY,iBAAiBjK,MAAM,CAAC,mBAAmB42E,EAAIowL,YAAYrgT,QAAQhZ,GAAG,CAAC,MAAQ,SAASkqD,GAAQ++E,EAAIowL,YAAYj8T,MAAQ6rI,EAAIowL,YAAYj8T,QAAQ,CAACyvD,EAAG,IAAI,CAACo8E,EAAIn9E,GAAGm9E,EAAI39E,GAAG29E,EAAI57I,KAAK47I,EAAIowL,YAAYvrU,SAAS6hM,QAAQ1mD,EAAIowL,YAAYvrU,SAAS6hM,UAAU1mD,EAAIn9E,GAAG,KAAKe,EAAG,MAAMo8E,EAAIn9E,GAAG,KAAKe,EAAG,MAAM,CAACzK,WAAW,CAAC,CAAChtE,KAAK,OAAOoqF,QAAQ,SAAS1pF,MAAOmzJ,EAAIowL,YAAgB,KAAE3kQ,WAAW,qBAAqB4H,YAAY,qBAAqB,CAACzP,EAAG,aAAa,CAACA,EAAG,KAAKo8E,EAAI19E,GAAI09E,EAAIowL,YAAgB,MAAE,SAASt9U,GAAM,OAAO8wE,EAAG,KAAK,CAACz2E,IAAI2F,EAAKikB,GAAG,CAAC,MAAQ,SAASkqD,GAAQ,OAAO++E,EAAI4wL,qBAAqB99U,MAAS,CAACktJ,EAAIn9E,GAAG,qCAAqCm9E,EAAI39E,GAAG29E,EAAI57I,KAAKtR,EAAK4zM,QAAQ5zM,EAAK4zM,OAAO,uCAAsC,MAAM,KAAK1mD,EAAIn9E,GAAG,KAAKe,EAAG,SAAS,CAACyP,YAAY,iBAAiBjK,MAAM,CAAC,oBAAoB42E,EAAIowL,YAAYrgT,QAAQxxB,MAAM,CAAC,KAAO,UAAUwY,GAAG,CAAC,MAAQipI,EAAI2wL,2BAA2B,CAAC3wL,EAAIn9E,GAAG,qBAAqBm9E,EAAI39E,GAAG29E,EAAIswL,UAAU,oBAAoBtwL,EAAIn9E,GAAG,KAAKe,EAAG,MAAM,CAACyP,YAAY,qBAAqB,CAACzP,EAAG,SAAS,CAACzK,WAAW,CAAC,CAAChtE,KAAK,OAAOoqF,QAAQ,SAAS1pF,MAAOmzJ,EAA0B,uBAAEv0E,WAAW,2BAA2B4H,YAAY,gBAAgBgG,YAAY,CAAC,eAAe,QAAQ96E,MAAM,CAAC,KAAO,UAAUwY,GAAG,CAAC,MAAQipI,EAAImxL,sBAAsB,CAACnxL,EAAIn9E,GAAGm9E,EAAI39E,GAAG29E,EAAI57I,KAAKmyU,oBAAoBv2L,EAAIn9E,GAAG,KAAKe,EAAG,SAAS,CAACzK,WAAW,CAAC,CAAChtE,KAAK,OAAOoqF,QAAQ,SAAS1pF,MAAOmzJ,EAA0B,uBAAEv0E,WAAW,2BAA2B4N,YAAY,CAAC,eAAe,OAAO,QAAU,OAAO96E,MAAM,CAAC,KAAO,UAAUwY,GAAG,CAAC,MAAQipI,EAAImxL,sBAAsB,CAACnxL,EAAIn9E,GAAGm9E,EAAI39E,GAAG29E,EAAI57I,KAAKoyU,sBAAsBx2L,EAAIn9E,GAAG,KAAKe,EAAG,SAAS,CAACzK,WAAW,CAAC,CAAChtE,KAAK,OAAOoqF,QAAQ,SAAS1pF,MAAOmzJ,EAA0B,uBAAEv0E,WAAW,2BAA2B4N,YAAY,CAAC,eAAe,OAAO,QAAU,OAAO96E,MAAM,CAAC,KAAO,UAAUwY,GAAG,CAAC,MAAQipI,EAAImxL,sBAAsB,CAACnxL,EAAIn9E,GAAGm9E,EAAI39E,GAAG29E,EAAI57I,KAAKqyU,qBAAqBz2L,EAAIn9E,GAAG,KAAKe,EAAG,iBAAiB,CAACphB,IAAI,mBAAmB6wB,YAAY,WAAW90E,MAAM,CAAC,KAAOyhJ,EAAIkwL,wBAAwB,WAAY,EAAM,SAAWlwL,EAAIiwL,wBAAwB,UAAW,EAAM,OAASjwL,EAAIwwL,YAAY,iBAAiBxwL,EAAIutD,eAAex2L,GAAG,CAAC,OAASipI,EAAI6wL,sBAAsB5oQ,MAAM,CAACp7E,MAAOmzJ,EAAqB,kBAAE/qJ,SAAS,SAAUu9L,GAAMxyC,EAAIgwL,kBAAkBx9I,GAAK/mH,WAAW,wBAAwB,KAAKu0E,EAAIn9E,GAAG,KAAKe,EAAG,MAAM,CAACyP,YAAY,mBAAmB,CAACzP,EAAG,MAAM,CAACyV,YAAY,CAAC,OAAS,SAAS96E,MAAM,CAAC,GAAK,gBAAgByhJ,EAAIn9E,GAAG,KAAMm9E,EAAI4vL,SAAmB,WAAEhsQ,EAAG,MAAM,CAACyP,YAAY,0BAA0BgG,YAAY,CAAC,MAAQ,OAAO,OAAS,WAAW2mE,EAAIl9E,OAAOk9E,EAAIn9E,GAAG,KAAMm9E,EAAIowL,YAAkB,OAAExsQ,EAAG,MAAM,CAACyP,YAAY,oBAAoBt8D,GAAG,CAAC,MAAQipI,EAAIwxL,gBAAgB,CAAC5tQ,EAAG,MAAM,CAACrlE,MAAM,CAAC,IAAM,8BAA8B,IAAM,sBAAsByhJ,EAAIl9E,KAAKk9E,EAAIn9E,GAAG,KAAOm9E,EAAIowL,YAAYrgT,QAASiwH,EAAI4vL,SAASC,WAAiL7vL,EAAIl9E,KAAzKc,EAAG,MAAM,CAACyP,YAAY,oBAAoBt8D,GAAG,CAAC,MAAQipI,EAAI4xL,yBAAyB,CAAChuQ,EAAG,MAAM,CAACrlE,MAAM,CAAC,IAAM,8BAA8B,IAAM,4BACrtH,IDWpB,EACA,KACA,KACA,M,kIEyQF,ICxR2M,GDwR3M,CACEpS,KAAM,kBACNmuB,MAAO,CACL2tD,MAAO,CAAE/3E,KAAM5D,QACfoqV,gBAAiB,GACjBC,UAAW,GACXjtR,MAAO,CAAEx5D,KAAM26D,QACf8kR,YAAa,CAAjB,yBACIziI,UAAW,CAAEh9M,KAAM+I,KAAMuhE,QAAS,IAAIvhE,OAExC60E,WAAY,CAAd,qBACE58D,KAXF,WAWA,MACI,OAAJ,GAAW,EAAX,CACM9M,KAAMyyL,OAAOC,IAAIC,SAASC,MAC1B4/I,QAASjoV,KAAKs5E,MACd4uQ,QAAQ,EACRC,SAAU,EACVC,aAAc,GACdC,QAAS,GACTrtI,cAAe,CACbstI,QAAS,KACTzsH,QAAS3zB,OAAOC,IAAIC,SAASC,MAAMkB,QACnCg/I,QAASrgJ,OAAOC,IAAIC,SAASC,MAAMe,UACnCo/I,QAAStgJ,OAAOC,IAAIC,SAASC,MAAMgB,SAX3C,eAaA,IAbA,cAcA,eAdA,eAeA,cAfA,GAkBEj4K,SAAU,CACRq3T,UADJ,WAGM,IAAIA,EAAYzrU,EAAEvV,MAAMzH,KAAKs5E,MAAMovQ,MAiDnC,OAhDiBxmV,MAAbumV,IACFA,EAAY,CACVlyT,KAAM,GACNlE,MAAO,IAETryB,KAAKs5E,MAAMqmG,MAAQ3/K,KAAKyV,KAAKkpU,UAC7B,EAAR,MACA,oDACA,oDACA,+CACA,kDACA,8CACA,uDACA,2DACA,2DACA,8DACA,uDACQ,CAAR,gDACQ,CAAR,qDAEA,SACA,+CACA,CACU,IAAV,uCACU,MAAV,KACU,KAAV,OAEA,CACU,IAAV,uCACU,MAAV,KACU,KAAV,OAEA,CACU,IAAV,uCACU,MAAV,KACU,KAAV,OAEA,CACU,IAAV,uCACU,MAAV,KACU,KAAV,OAEA,0DACA,0DACA,0DACA,4DAGa8J,IAGX9vU,QAAS,CACPiwL,WADJ,SACA,GACM,MACN,CACQ,KAAR,kCACQ,EAAR,uCACQ,EAAR,8DACQ,EAAR,uCACA,OAGIK,iBAXJ,SAWA,GACM,OAAK96J,GAAc,KAAPA,IAGZA,EAAMA,EAAIhlC,MAAM,MACZ+B,MACGijC,EAAIn/B,KAAK,MAJP,OAOby8B,QAAS,CAEPq9L,mBAFJ,SAEA,GACM9oO,KAAKq7E,MAAM,sBAAuBuqH,IAGpC+iJ,kBANJ,SAMA,GACkB,OAARC,KAEF5oV,KAAKq7E,MAAM,qBAAsBj/D,IAIrCytL,YAAa,SAAjB,GASM,OANS3nM,OADLka,GADJA,EAAIsX,SAAStX,GAAK,KACRjT,MAAM,KAAK,MAEnBiT,EAAI,GAEFA,EAAI,MACNA,EAAI,KAEC,EAAb,aAEIysU,YAxBJ,WAyBM7oV,KAAKq7E,MAAM,iBAAkBr7E,KAAKs5E,MAAMssH,KAE1CkjJ,GA3BJ,WA4B4B,IAAlB9oV,KAAKmoV,WACTnoV,KAAKmoV,SAAWnoV,KAAKmoV,SAAW,IAElCY,KA/BJ,WAgCU/oV,KAAKmoV,WAAanoV,KAAKqoV,QAAQ1mV,OAAS,IAC5C3B,KAAKmoV,SAAWnoV,KAAKmoV,SAAW,IAElCa,gBAnCJ,WAoCMhpV,KAAKipV,QAAU,cACfjpV,KAAKq7E,MAAM,cAEb6tQ,eAvCJ,WAwCMlpV,KAAKipV,QAAU,aACfjpV,KAAKq7E,MAAM,cAGfxW,MAAO,CACLkjR,gBADJ,SACA,GACU3rU,IACFpc,KAAKooV,aAAepoV,KAAKs5E,MAAMqyH,iBAIrC3oH,QA5JF,WA6JQhjF,KAAKgoV,YACPhoV,KAAKgoV,UAAU78S,SAAQ,SAA7B,gCACMnrC,KAAKqoV,QAAUrrU,EAAEvV,MAAMzH,KAAKgoV,YAE9B/nJ,OAAO73K,GAAG,cACd,WACM,KAAN,uBACA,QEzae,I,OAXC,YACd,ICTW,WAAa,IAAIipI,EAAIrxJ,KAASyyG,EAAG4+C,EAAIhgF,eAAmB4D,EAAGo8E,EAAI9wE,MAAMtL,IAAIw9B,EAAG,OAAOx9B,EAAG,MAAM,CAAiB,cAAfo8E,EAAI43L,QAAyBh0Q,EAAG,MAAM,CAACyP,YAAY,cAAcgG,YAAY,CAAC,OAAS,UAAU,CAACzV,EAAG,MAAM,CAACyP,YAAY,qBAAqBjK,MAAM,CAAE,wBAAyB42E,EAAI/3E,MAAM0wH,iBAAkB,CAAC34C,EAAIn9E,GAAG,WAAWm9E,EAAI39E,GAAG29E,EAAI/3E,MAAM97E,MAAM,YAAY6zJ,EAAIn9E,GAAG,KAAKe,EAAG,MAAM,CAACyP,YAAY,wBAAwB,CAACzP,EAAG,eAAe,CAACyV,YAAY,CAAC,OAAS,QAAQ,MAAQ,QAAQ96E,MAAM,CAAC,aAAa,iBAAiB,CAACqlE,EAAG,KAAK,GAAGo8E,EAAI19E,GAAI09E,EAAIo3L,UAAc,MAAE,SAAStkV,GAAM,OAAO8wE,EAAG,KAAK,CAACz2E,IAAI2F,EAAK3F,KAAK,CAACy2E,EAAG,QAAQ,CAACA,EAAG,OAAO,CAACrlE,MAAM,CAAC,MAAQyhJ,EAAI57I,KAAKtR,EAAK3F,MAAQ2F,EAAK3F,MAAM,CAAC6yJ,EAAIn9E,GAAG,qBAAqBm9E,EAAI39E,GAAG29E,EAAI57I,KAAKtR,EAAK3F,MAAQ2F,EAAK3F,KAAK,sBAAsB6yJ,EAAIn9E,GAAG,KAAKe,EAAG,aAAa,CAACyP,YAAY,OAAO90E,MAAM,CAAC,OAAS,QAAQ,UAAY,QAAQ,QAAUyhJ,EAAI57I,KAAK0zU,iBAAiB,CAAE,CAAC,8BAA+B,gBAAgBjrS,SAAS/5C,EAAK3F,KAAMy2E,EAAG,MAAM,CAACyV,YAAY,CAAC,OAAS,cAAc,MAAQ,OAAO,OAAS,OAAO,OAAS,WAAW96E,MAAM,CAAC,IAAM,kCAAkC,IAAM,MAAMyhJ,EAAIl9E,QAAQ,GAAGk9E,EAAIn9E,GAAG,KAAKe,EAAG,OAAO,CAACrlE,MAAM,CAAC,MAAQyhJ,EAAI57I,KAAKtR,EAAKjG,QAAUiG,EAAKjG,QAAQ,CAACmzJ,EAAIn9E,GAAG,mBAAmBm9E,EAAI39E,GAAG29E,EAAI57I,KAAKtR,EAAKjG,QAAUiG,EAAKjG,OAAS,MAAM,oBAAkC,cAAbiG,EAAK3F,KAA4C,IAArB6yJ,EAAI/3E,MAAMiwJ,OAAct0J,EAAG,MAAM,CAACyV,YAAY,CAAC,OAAS,cAAc,OAAS,WAAW96E,MAAM,CAAC,MAAQyhJ,EAAI57I,KAAK81N,4BAA4B,IAAM,oCAAoC,IAAM,IAAInjN,GAAG,CAAC,MAAQ,SAASkqD,GAAQ,OAAO++E,EAAIy3E,mBAAmB3kO,EAAKjG,WAAWmzJ,EAAIl9E,OAAOk9E,EAAIn9E,GAAG,KAAKe,EAAG,KAAK,CAACo8E,EAAIn9E,GAAGm9E,EAAI39E,GAAGvvE,EAAK8gB,cAAa,MAAM,GAAGosI,EAAIn9E,GAAG,KAAKe,EAAG,MAAM,CAACyP,YAAY,yBAAyB,CAACzP,EAAG,eAAe,CAACyV,YAAY,CAAC,OAAS,QAAQ,MAAQ,QAAQ96E,MAAM,CAAC,aAAa,iBAAiB,CAACqlE,EAAG,KAAK,GAAGo8E,EAAI19E,GAAI09E,EAAIo3L,UAAe,OAAE,SAAStkV,GAAM,OAAO8wE,EAAG,KAAK,CAACz2E,IAAI2F,EAAK3F,KAAK,CAACy2E,EAAG,QAAQ,CAACrlE,MAAM,CAAC,MAAQyhJ,EAAI57I,KAAKtR,EAAK3F,MAAQ2F,EAAK3F,MAAM,CAAC6yJ,EAAIn9E,GAAG,mBAAmBm9E,EAAI39E,GAAG29E,EAAI57I,KAAKtR,EAAK3F,MAAQ2F,EAAK3F,KAAK,oBAAoB6yJ,EAAIn9E,GAAG,KAAM/vE,EAAS,KAAE8wE,EAAG,OAAO,CAACyV,YAAY,CAAC,MAAQ,UAAU,kBAAkB,YAAY,OAAS,WAAWtiE,GAAG,CAAC,MAAQ,SAASkqD,GAAQ++E,EAAI43L,QAAU,cAAc,CAAC53L,EAAIn9E,GAAG,mBAAmBm9E,EAAI39E,GAAGvvE,EAAKjG,OAAO,oBAAoBmzJ,EAAIl9E,KAAKk9E,EAAIn9E,GAAG,KAAKe,EAAG,OAAO,CAACrlE,MAAM,CAAC,MAAQyhJ,EAAI57I,KAAKtR,EAAKjG,QAAUiG,EAAKjG,QAAQ,CAACmzJ,EAAIn9E,GAAG,mBAAmBm9E,EAAI39E,GAAG29E,EAAI57I,KAAKtR,EAAKjG,QAAUiG,EAAKjG,OAAS,MAAM,oBAAoBmzJ,EAAIn9E,GAAG,KAAKe,EAAG,KAAK,CAACo8E,EAAIn9E,GAAGm9E,EAAI39E,GAAGvvE,EAAK8gB,cAAa,MAAM,GAAGosI,EAAIn9E,GAAG,KAAMm9E,EAAI/3E,MAAe,UAAErE,EAAG,MAAM,CACliFo8E,EAAI/3E,MAAMssH,GAAG9jL,cAAcre,QAAQ,OAAS,IAC1C4tJ,EAAIo2L,OAAO74U,KAAKyiJ,EAAI/3E,MAAMssH,GAAG9jL,gBAC/BuvI,EAAIo2L,OAAO74U,KAAKyiJ,EAAI/3E,MAAMssH,GAAG9jL,iBAAmBuvI,EAAI/3E,MAAMouQ,cAC3D,CAACzyQ,EAAG,MAAM,CAACyP,YAAY,sBAAsB,CAACzP,EAAG,IAAI,CAACo8E,EAAIn9E,GAAGm9E,EAAI39E,GAAG29E,EAAI/3E,MAAM8vQ,SAAS/3L,EAAIn9E,GAAG,KAAKe,EAAG,OAAO,CAACo8E,EAAIn9E,GAAG,SAASm9E,EAAIn9E,GAAG,KAAKe,EAAG,OAAO,CAACo8E,EAAIn9E,GAAGm9E,EAAI39E,GAAG29E,EAAI57I,KAAKy1L,8BAA8B75C,EAAIn9E,GAAG,KAAKe,EAAG,MAAM,CAACyP,YAAY,8BAA8B,CAACzP,EAAG,KAAK,CAACo8E,EAAIn9E,GAAGm9E,EAAI39E,GAAG29E,EAAI57I,KAAK01L,sBAAsB95C,EAAIn9E,GAAG,KAAKe,EAAG,IAAI,CAACo8E,EAAIn9E,GAAGm9E,EAAI39E,GAAG29E,EAAI/3E,MAAM+vQ,QAAQ,aAAah4L,EAAIl9E,KAAKk9E,EAAIn9E,GAAG,KAAMm9E,EAAI/3E,MAAMssH,GAAG9jL,cAAcre,QAAQ,OAAS,EAAG,CAACwxE,EAAG,MAAM,CAACyP,YAAY,sBAAsB,CAACzP,EAAG,IAAI,CAACo8E,EAAIn9E,GAAG,iBAAiBm9E,EAAI39E,GAAG5rE,KAAKinC,IAAIrb,SAAS29H,EAAI/3E,MAAMgwQ,UAAYj4L,EAAI/3E,MAAMiwQ,aAAa,kBAAkBl4L,EAAIn9E,GAAG,KAAKe,EAAG,OAAO,CAACo8E,EAAIn9E,GAAG,OAAOm9E,EAAIn9E,GAAG,KAAKe,EAAG,OAAO,CAACo8E,EAAIn9E,GAAGm9E,EAAI39E,GAAG29E,EAAI57I,KAAK+zU,kCAAkCn4L,EAAIl9E,KAAKk9E,EAAIn9E,GAAG,KAAMm9E,EAAIo2L,OAAO74U,KAAKyiJ,EAAI/3E,MAAMssH,GAAG9jL,gBAAkBuvI,EAAI/3E,MAAMouQ,cAAe,CAACzyQ,EAAG,MAAM,CAACyP,YAAY,sBAAsB,CAACzP,EAAG,IAAI,CAACo8E,EAAIn9E,GAAGm9E,EAAI39E,GAAG29E,EAAI/3E,MAAM8vQ,SAAS/3L,EAAIn9E,GAAG,KAAKe,EAAG,OAAO,CAACo8E,EAAIn9E,GAAG,SAASm9E,EAAIn9E,GAAG,KAAKe,EAAG,OAAO,CAACo8E,EAAIn9E,GAAGm9E,EAAI39E,GAAG29E,EAAI57I,KAAKg0U,mBAAmBp4L,EAAIn9E,GAAG,KAAKe,EAAG,MAAM,CAACyP,YAAY,8BAA8B,CAACzP,EAAG,KAAK,CAACo8E,EAAIn9E,GAAGm9E,EAAI39E,GAAG29E,EAAI57I,KAAKi0U,iBAAiBr4L,EAAIn9E,GAAG,KAAKe,EAAG,IAAI,CAACo8E,EAAIn9E,GAAGm9E,EAAI39E,GAAG29E,EAAI/3E,MAAM+vQ,QAAQ,aAAah4L,EAAIl9E,KAAKk9E,EAAIn9E,GAAG,KAAKe,EAAG,MAAM,CAACyP,YAAY,eAAe,CAACzP,EAAG,MAAM,CAACyP,YAAY,mBAAmBjK,MAAM,CAAE,WAAY42E,EAAIg3L,QAAQ1mV,OAAS,GAAIymB,GAAG,CAAC,MAAQipI,EAAIy3L,KAAK,CAAC7zQ,EAAG,MAAM,CAACrlE,MAAM,CAAC,IAAuB,IAAjByhJ,EAAI82L,SAC52C,8CACA,yCAAyC,IAAM,QAAQ92L,EAAIn9E,GAAG,KAAKe,EAAG,MAAM,CAACyP,YAAY,yBAAyB,CAACzP,EAAG,MAAM,CAACyP,YAAY,WAAWpgE,MAAM,CAAGrT,KAAqB,IAAhBogJ,EAAI82L,SAAkB,OAAS,CAAyB,IAAvB92L,EAAIg3L,QAAQ1mV,OAAcszE,EAAG,MAAM,CAACyP,YAAY,wBAAwB,CAAwB,GAAtB2sE,EAAIg3L,QAAQ1mV,OAAaszE,EAAG,aAAa,CAACyP,YAAY,OAAO90E,MAAM,CAAC,OAAS,OAAO,UAAY,UAAU,CAACqlE,EAAG,MAAM,CAACrlE,MAAM,CAAC,KAAO,WAAWmgE,KAAK,WAAW,CAACkF,EAAG,KAAK,CAACyP,YAAY,gBAAgB,CAACzP,EAAG,KAAK,CAACA,EAAG,OAAO,CAACo8E,EAAIn9E,GAAGm9E,EAAI39E,GAAG29E,EAAI57I,KAAKy7L,YAAY7/C,EAAIn9E,GAAG,KAAKe,EAAG,OAAO,CAACo8E,EAAIn9E,GAAGm9E,EAAI39E,GAAG,WAAW29E,EAAIn9E,GAAG,KAAKe,EAAG,KAAK,CAACA,EAAG,OAAO,CAACo8E,EAAIn9E,GAAGm9E,EAAI39E,GAAG29E,EAAI57I,KAAKk0U,YAAY,OAAOt4L,EAAIn9E,GAAG,KAAKe,EAAG,OAAO,CAACo8E,EAAIn9E,GAAGm9E,EAAI39E,GAAG,WAAW29E,EAAIn9E,GAAG,KAAKe,EAAG,KAAK,CAACA,EAAG,OAAO,CAACo8E,EAAIn9E,GAAGm9E,EAAI39E,GAAG29E,EAAI57I,KAAKulM,eAAe,OAAO3pD,EAAIn9E,GAAG,KAAKe,EAAG,OAAO,CAACo8E,EAAIn9E,GAAGm9E,EAAI39E,GAAG29E,EAAI2pD,cAAuB,kBAAY3pD,EAAIn9E,GAAG,KAAKe,EAAG,MAAM,CAACyP,YAAY,wCAAwC,CAACzP,EAAG,KAAK,CAACo8E,EAAIn9E,GAAGm9E,EAAI39E,GAAG29E,EAAI57I,KAAKm0U,wBAAwBv4L,EAAIn9E,GAAG,KAAKe,EAAG,MAAM,CAACyP,YAAY,iBAAiBpgE,MAAM,CAAG+M,MAAOggI,EAAIw4C,YAAY,MAAQx4C,EAAIn9E,GAAG,KAAKe,EAAG,IAAI,CAACo8E,EAAIn9E,GAAGm9E,EAAI39E,GAAG,GAAG,WAAW29E,EAAIl9E,MAAM,GAAGk9E,EAAIl9E,KAAKk9E,EAAIn9E,GAAG,KAAKm9E,EAAI19E,GAAI09E,EAAW,SAAE,SAASltJ,EAAKzC,GAAO,OAAOuzE,EAAG,MAAM,CAACz2E,IAAIkD,EAAMgjF,YAAY,uBAAuBt8D,GAAG,CAAC,MAAQ,SAASkqD,GAAQ,OAAO++E,EAAIs3L,kBAAkBxkV,MAAS,CAAC8wE,EAAG,aAAa,CAACyP,YAAY,OAAO90E,MAAM,CAAC,OAAS,OAAO,UAAY,UAAU,CAACqlE,EAAG,MAAM,CAACrlE,MAAM,CAAC,KAAO,WAAWmgE,KAAK,WAAW,CAACkF,EAAG,KAAK,CAACyP,YAAY,gBAAgB,CAACzP,EAAG,KAAK,CAACA,EAAG,OAAO,CAACo8E,EAAIn9E,GAAGm9E,EAAI39E,GAAG29E,EAAI57I,KAAKy7L,YAAY7/C,EAAIn9E,GAAG,KAAKe,EAAG,OAAO,CAACo8E,EAAIn9E,GAAGm9E,EAAI39E,GAAGvvE,EAAKwiU,gBAAgBt1K,EAAIn9E,GAAG,KAAKe,EAAG,KAAK,CAACA,EAAG,OAAO,CAACo8E,EAAIn9E,GAAGm9E,EAAI39E,GAAG29E,EAAI57I,KAAKk0U,YAAY,OAAOt4L,EAAIn9E,GAAG,KAAKe,EAAG,OAAO,CAACo8E,EAAIn9E,GAAGm9E,EAAI39E,GAAGvvE,EAAKkpM,OAAO,SAASh8C,EAAIn9E,GAAG,KAAKe,EAAG,KAAK,CAACA,EAAG,OAAO,CAACo8E,EAAIn9E,GAAGm9E,EAAI39E,GAAG29E,EAAI57I,KAAKulM,eAAe,OAAO3pD,EAAIn9E,GAAG,KAAKe,EAAG,OAAO,CAACo8E,EAAIn9E,GAAGm9E,EAAI39E,GAAGvvE,EAAKy/B,WACtzDz/B,EAAKy/B,WACLytH,EAAI2pD,cAAe,SAAY72M,EAAW,kBAAcktJ,EAAIn9E,GAAG,KAAKe,EAAG,MAAM,CAACyP,YAAY,uCAAuCt8D,GAAG,CAAC,MAAQ,SAASkqD,GAAQ,OAAO++E,EAAIs3L,kBAAkBxkV,MAAS,CAAC8wE,EAAG,KAAK,CAACo8E,EAAIn9E,GAAGm9E,EAAI39E,GAAG29E,EAAI57I,KAAKm0U,wBAAwBv4L,EAAIn9E,GAAG,KAAKe,EAAG,MAAM,CAACyP,YAAY,iBAAiBpgE,MAAM,CAAG+M,MAAOggI,EAAIw4C,YAAY1lM,EAAKuoM,QAAUr7C,EAAIn9E,GAAG,KAAKe,EAAG,IAAI,CAACo8E,EAAIn9E,GAAGm9E,EAAI39E,GAAGvvE,EAAKuoM,KAAK,YAAY,OAAM,KAAKr7C,EAAIn9E,GAAG,KAAMm9E,EAAIg3L,QAAQ1mV,OAAS,EAAGszE,EAAG,MAAM,CAACyP,YAAY,kCAAkCt8D,GAAG,CAAC,MAAQipI,EAAI03L,OAAO,CAAC9zQ,EAAG,MAAM,CAACrlE,MAAM,CAAC,IAAMyhJ,EAAI82L,WAAa92L,EAAIg3L,QAAQ1mV,OAAS,EAC9lB,8CACA,yCAAyC,IAAM,QAAQ0vJ,EAAIl9E,QAAQ,GAAGk9E,EAAIl9E,KAAKk9E,EAAIn9E,GAAG,KAAOm9E,EAAI/3E,MAAMo7H,UAAktBrjD,EAAIl9E,KAA3sBc,EAAG,MAAM,CAACA,EAAG,MAAM,CAACyP,YAAY,sBAAsB,CAACzP,EAAG,IAAI,CAACo8E,EAAIn9E,GAAGm9E,EAAI39E,GAAG29E,EAAI/3E,MAAM8vQ,MAAQ,MAAM/3L,EAAIn9E,GAAG,KAAKe,EAAG,OAAO,CAACo8E,EAAIn9E,GAAG,SAASm9E,EAAIn9E,GAAG,KAAKe,EAAG,OAAO,CAACo8E,EAAIn9E,GAAGm9E,EAAI39E,GAAG29E,EAAI57I,KAAKy1L,8BAA8B75C,EAAIn9E,GAAG,KAAKe,EAAG,MAAM,CAACyP,YAAY,8BAA8B,CAACzP,EAAG,KAAK,CAACo8E,EAAIn9E,GAAGm9E,EAAI39E,GAAG29E,EAAI57I,KAAK01L,sBAAsB95C,EAAIn9E,GAAG,KAAKe,EAAG,IAAI,CAACo8E,EAAIn9E,GAAGm9E,EAAI39E,GAAG29E,EAAI/3E,MAAM+vQ,QAAU,GAAG,WAAWh4L,EAAIn9E,GAAG,KAAKe,EAAG,MAAM,CAACyP,YAAY,8BAA8BgG,YAAY,CAAC,aAAa,iDAAiD,IAAM,UAAU,CAACzV,EAAG,KAAK,CAACo8E,EAAIn9E,GAAGm9E,EAAI39E,GAAG29E,EAAI57I,KAAK41L,0BAA0Bh6C,EAAIn9E,GAAG,KAAKe,EAAG,IAAI,CAACo8E,EAAIn9E,GAAGm9E,EAAI39E,GAAG29E,EAAI/3E,MAAMgyH,QAAU,GAAGj6C,EAAI39E,GAAG29E,EAAI57I,KAAK81L,qBAA8Bl6C,EAAIn9E,GAAG,KAAKe,EAAG,MAAM,CAACyP,YAAY,mBAAmB,CAACzP,EAAG,MAAM,CAACyP,YAAY,gBAAgB90E,MAAM,CAAC,cAAcyhJ,EAAI/3E,MAAM51C,SAAS,CAAC2tH,EAAIn9E,GAAG,aAAam9E,EAAI39E,GAAG29E,EAAIt9E,GAAG,aAAPs9E,CAAqBA,EAAI/3E,MAAM51C,SAAS,cAAoC,IAArB2tH,EAAI/3E,MAAM51C,QAAgB2tH,EAAI/3E,MAAMuwQ,eAAgB50Q,EAAG,OAAO,CAACo8E,EAAIn9E,GAAG,gBAAgBm9E,EAAI39E,GAAG29E,EAAI57I,KAAK47I,EAAI/3E,MAAMuwQ,iBAAiB,iBAAiBx4L,EAAIl9E,OAAOk9E,EAAIn9E,GAAG,MAA2B,GAArBm9E,EAAI/3E,MAAM51C,QAAiB2tH,EAAI/3E,MAAM/7E,EAAEiuM,KAAkMn6C,EAAIl9E,KAAhMc,EAAG,MAAM,CAACyP,YAAY,iBAAiB,CAAC2sE,EAAIn9E,GAAG,aAAam9E,EAAI39E,GAAG29E,EAAI57I,KAAKg2L,oBAAoB,cAAcp6C,EAAI39E,GAAG29E,EAAIt9E,GAAG,mBAAPs9E,CAA2BA,EAAI/3E,MAAMoyH,oBAAoB,cAAuBr6C,EAAIn9E,GAAG,MAA2B,GAArBm9E,EAAI/3E,MAAM51C,OAAcuxC,EAAG,MAAM,CAACyP,YAAY,gBAAgBgG,YAAY,CAAC,OAAS,WAAWtiE,GAAG,CAAC,MAAQipI,EAAIw3L,cAAc,CAACx3L,EAAIn9E,GAAG,aAAam9E,EAAI39E,GAAG29E,EAAI+2L,cAAgB/2L,EAAI/3E,MAAMqyH,eAAe,cAAct6C,EAAIl9E,SAASk9E,EAAIl9E,KAAKk9E,EAAIn9E,GAAG,KAAqB,cAAfm9E,EAAI43L,QAAyBh0Q,EAAG,IAAI,CAACyP,YAAY,aAAapgE,MAAM,CAAErT,IAAKogJ,EAAIt2F,MAAQ,EAAI,MAAM,QAASnrD,MAAM,CAAC,KAAO,gBAAgBwY,GAAG,CAAC,MAAQipI,EAAI23L,kBAAkB,CAAC33L,EAAIn9E,GAAGm9E,EAAI39E,GAAG29E,EAAI57I,KAAKq0U,cAAcz4L,EAAIl9E,KAAKk9E,EAAIn9E,GAAG,KAAqB,eAAfm9E,EAAI43L,QAA0Bh0Q,EAAG,IAAI,CAACyP,YAAY,YAAYpgE,MAAM,CAAErT,IAAKogJ,EAAIt2F,MAAQ,EAAI,MAAM,QAASnrD,MAAM,CAAC,KAAO,gBAAgBwY,GAAG,CAAC,MAAQipI,EAAI63L,iBAAiB,CAAC73L,EAAIn9E,GAAGm9E,EAAI39E,GAAG29E,EAAI57I,KAAKs0U,aAAa14L,EAAIl9E,KAAKk9E,EAAIn9E,GAAG,KAAqB,eAAfm9E,EAAI43L,QAA0Bh0Q,EAAG,qBAAqB,CAACrlE,MAAM,CAAC,KAAOyhJ,EAAI/3E,MAAM,UAAY+3E,EAAIktD,UAAU,MAAQltD,EAAIt2F,MAAM,YAAcs2F,EAAI2vL,eAAe3vL,EAAIl9E,KAAKk9E,EAAIn9E,GAAG,KAAqB,YAAfm9E,EAAI43L,QAAuBh0Q,EAAG,mBAAmB,CAACrlE,MAAM,CAAC,MAAQyhJ,EAAI42L,WAAW52L,EAAIl9E,MAAM,KAC34E,IDCpB,EACA,KACA,WACA,M,SEbF61Q,GAAgBvmQ,QAAU,SAASrE,GAC/BA,EAAIlG,UAAU8wQ,GAAgBxsV,KAAMwsV,KAGzBA,UCNyL,GCCxM,CACIxsV,KAAM,eACNmuB,MAAO,CACH3P,QAASlP,OACT8E,IAAK,CACDrQ,KAAMuL,OACN++D,QAAS,QAGjBtpD,KATJ,WAUQ,MAAO,CACH0nU,SAAU,GACVlqB,UAAW,GACXmqB,SAAU,IAGlB/qV,OAhBJ,SAgBA,GACQ,OAAO0B,EAAEb,KAAK4R,IAAK5R,KAAKiqV,SAAS1jV,KAAI,SAA7C,iBAEIy8E,QAnBJ,WAoBQhjF,KAAK+/T,UAAYpiU,OAAOyR,KAAKpP,KAAKoxE,QAGlC,IAFA,IAAI+4Q,EAASnqV,KAAK+/T,UAAUx5T,KAAI,SAAxC,gCACYqvL,EAAM,IAAIjqL,OAAOw+U,EAAQ,OAChB,CACT,IAAIpsV,EAAI63L,EAAItnL,KAAKtO,KAAKgc,SACtB,IAAKje,EAAG,MACR,IAAIiB,EAAIgB,KAAKgc,QAAQwjG,UAAUx/G,KAAKkqV,SAAUnsV,EAAE2D,OAC5ChD,EAAIsB,KAAKoxE,OAAOrzE,EAAE,IAClC,yBACYiC,KAAKiqV,SAASznV,KAAK9D,GACnBsB,KAAKkqV,SAAWnsV,EAAE2D,MAAQ3D,EAAE,GAAG4D,OAE3C,qCACY3B,KAAKiqV,SAASznV,KAAKxC,KAAKgc,QAAQwjG,UAAUx/G,KAAKkqV,aChB5C,GAXC,YACd,QARE,OAAQ,GAWV,EACA,KACA,KACA,M,QCZFE,GAAa3mQ,QAAU,SAASrE,GAC5BA,EAAIlG,UAAUkxQ,GAAa5sV,KAAM4sV,KAGtBA,UC8Yf,SAASC,KACL,IAAInrU,EAAOlf,KACPzC,EAAIyC,KAAKqhV,kBACbphJ,OAAOwC,KAAK,kDAAmD,CAAEmD,GAAI1mL,EAAKorU,UAAW/hJ,KAAMtI,OAAO8iJ,cAAcxlV,GAAK,YAAagE,KAAM2d,EAAKiiU,wBAAyB/8S,SAAQ,SAAUy9B,IAEhLA,EAAIt/C,OAASs/C,EAAIt/C,KAAKkhU,OAAO9hV,SAAUkgE,EAAIt/C,KAAK0uL,GAAGtvM,QAAyC,GAA7BkgE,EAAIt/C,KAAKmhU,UAAU/hV,QAA4C,GAA7BkgE,EAAIt/C,KAAKmhU,UAAU/hV,QAA4C,GAA7BkgE,EAAIt/C,KAAKmhU,UAAU/hV,QAKtJgiV,GAAoB,CAAE,IAAO,GAAI,SAAY,GAAI,2BAA8B,GAAI,uBAA0B,GAAI,OAAU,GAAI,GAAM,GAAI,YAAe,GAAI,KAAQ,GAAI,GAAM,GAA1L,eACYzkU,EAAK+hU,SAASC,YAAa,IAL3ByC,GAAoB9hR,EAAIt/C,MACxBrD,EAAK+hU,SAASC,YAAa,MAMvC,kBACQyC,GAAoB,CAAE,IAAO,GAAI,SAAY,GAAI,2BAA8B,GAAI,uBAA0B,GAAI,OAAU,GAAI,GAAM,GAAI,YAAe,GAAI,KAAQ,GAAI,GAAM,GAAI,UAAa,KAC/LzkU,EAAK+hU,SAASC,YAAa,KAInC,SAASqJ,KACL,IAAIhtV,EAAIyC,KAAKqhV,kBACTniU,EAAOlf,KACXigM,OAAOwC,KAAK,0CAA2C,CACnDj0L,GAAI0Q,EAAKqhN,sBAAsB36B,GAC/B2C,KAAMtI,OAAO8iJ,cAAcxlV,GAAK,cACxC,YACYskE,EAAIt/C,MAEJqhU,GAAwB/hR,EAAIt/C,MAC5BrD,EAAK+hU,SAASC,YAAa,IAG3B0C,GAAwB,CAAC,CAAEr7I,KAAM,sBAAuBs7I,IAAK,KAC7D3kU,EAAK+hU,SAASC,YAAa,MAIvC,SAASmB,GAAwB9iT,GAC7B,IAAIrgB,EAAOlf,KACXigM,OAAOwC,KAAK,8CAA+C,CACvD8F,KAAMwR,MAAM/5M,KAAKqhV,mBAAmBrnI,OAAO,uBAC3C1F,OAAQt0M,KAAKyhV,YAAYvrU,SAAShY,MAClCsQ,GAAIxO,KAAKugO,sBAAsB36B,KACvC,qBACY/jI,EAAIt/C,MAAQs/C,EAAIt/C,KAAKwhU,SAAW/mU,EAAE5N,KAAKyyD,EAAIt/C,MAAM5gB,OAAS,GAC1DmiV,GAAqBjiR,EAAIt/C,KAAMrD,EAAKuiU,YAAYvrU,SAAS6hM,MAAO74L,EAAKuiU,YAAYvrU,SAAS+O,MAC1F/F,EAAK+hU,SAASC,YAAa,IAE3B4C,GAAqB,CACjBC,QAAS,CAAC,CACNx7I,KAAM,sBACN+L,OAAQ,KAE5B,0DACYp1L,EAAK+hU,SAASC,YAAa,MAKvC,SAASsJ,KACL,IAAItrU,EAAOlf,KACPzC,EAAIyC,KAAKqhV,kBACbphJ,OAAOwC,KAAK,6CAA8C,CAAEmD,GAAI1mL,EAAKqhN,sBAAsB36B,GAAI2C,KAAMtI,OAAO8iJ,cAAcxlV,GAAK,cAAe6mC,SAAQ,SAAUy9B,GACxJA,EAAIt/C,MAAQs/C,EAAIt/C,KAAKyhU,MAAMriV,QAE3BsiV,GAA4BpiR,EAAIt/C,MAChCrD,EAAK+hU,SAASC,YAAa,IAG3B+C,GAA4B,CAAE,QAAW,GAAI,KAAQ,GAAI,GAAM,GAAI,IAAO,GAAI,MAAS,KACvF/kU,EAAK+hU,SAASC,YAAa,MAEvC,kBACQ+C,GAA4B,CAAE,QAAW,GAAI,KAAQ,GAAI,GAAM,GAAI,IAAO,GAAI,MAAS,KACvF/kU,EAAK+hU,SAASC,YAAa,KAcnC,SAAS+C,GAA4B1hU,GASjC,IAAIkoU,EACU,UADVA,EAES,UAFTA,EAGc,UAHdA,EAIY,UAJZA,EAKW,UAEXtnV,EAAM,GAAGnC,OAAOuhB,EAAK2uL,QAAS3uL,EAAK+I,KAAM/I,EAAKyhU,MAAOzhU,EAAK0uL,GAAI1uL,EAAKmqL,KACnE44I,EAAO,EACPC,EAAO,EAEPpiV,EAAIxB,QAAUwB,GACdA,EAAIgoC,SAAQ,SAAU/uB,EAAGnf,GACjBmf,EAAEo2B,EAAI8yS,IACNA,EAAOlpU,EAAEo2B,GAETp2B,EAAEo2B,EAAI+yS,IACNA,EAAOnpU,EAAEo2B,MAIT,GAAR+yS,GACAA,EAAO,EACPD,EAA6B,EAAtBx9U,KAAK0tB,KAAK8vT,EAAO,KAGhC,OACQC,GAAR,GAAez9U,KAAK0tB,MAApB,EAAyB,EAAzB,IACQ8vT,GAAQC,IAIRD,EAA8B,GAAvBx9U,KAAK0tB,KAAK8vT,EAAO,IACxBC,GAAQD,GAGZ,IAAI54I,EAAMnqL,EAAKmqL,IAAInmM,KAAI,SAAU6V,EAAGnf,GAChC,MAAO,CAAE,KAAQirM,OAAOC,IAAIC,SAASC,MAAMoG,IAAnD,gDAEQwC,EAAK1uL,EAAK0uL,GAAG1qM,KAAI,SAAU6V,EAAGnf,GAC9B,MAAO,CAAE,KAAQirM,OAAOC,IAAIC,SAASC,MAAMg8I,qBAAnD,gDAEQnzI,EAAU3uL,EAAK2uL,QAAQ3qM,KAAI,SAAU6V,EAAGnf,GACxC,MAAO,CAAE,KAAQirM,OAAOC,IAAIC,SAASC,MAAM6I,QAAU,MAAO,MAAS,CAACj0M,EAAG,EAAjF,+BAEQ+mV,EAAQzhU,EAAKyhU,MAAMz9U,KAAI,SAAU6V,EAAGnf,GACpC,MAAO,CAAE,KAAQirM,OAAOC,IAAIC,SAASC,MAAM27I,MAAQ,MAAO,MAAS,CAAC/mV,EAAG,EAA/E,+BAEQquB,EAAO/I,EAAK+I,KAAK/kB,KAAI,SAAU6V,EAAGnf,GAClC,MAAO,CAAE,KAAQirM,OAAOC,IAAIC,SAASC,MAAM/8K,KAAO,MAAO,MAAS,CAACruB,EAAG,EAA9E,+BAGQkoV,EAAa,CAAC,CACd3nV,KAAM0qM,OAAOC,IAAIC,SAASC,MAAMoG,IAAxC,MACQ53F,MAAO4zO,EACPxtD,KAAM,aAEd,CACQz/R,KAAM0qM,OAAOC,IAAIC,SAASC,MAAM6I,QAAxC,MACQr6F,MAAO4zO,EACPxtD,KAAM,aACd,CACQz/R,KAAM0qM,OAAOC,IAAIC,SAASC,MAAM27I,MAAQ,MACxCntO,MAAO4zO,EACPxtD,KAAM,cAEN16Q,EAAKmhU,aACgC,GAAjCnhU,EAAKmhU,UAAUjgV,QAAQ,OACvB0hV,EAAWryU,QAAQ,CACftV,KAAM0qM,OAAOC,IAAIC,SAASC,MAAMg8I,qBAAhD,MACgBxtO,MAAO4zO,EACPxtD,KAAM,eAGyB,GAAnC16Q,EAAKmhU,UAAUjgV,QAAQ,SACvB0hV,EAAW3iV,KAAK,CACZhF,KAAM0qM,OAAOC,IAAIC,SAASC,MAAM/8K,KAAO,MACvCurF,MAAO4zO,EACPxtD,KAAM,eAIlB,IAAI72Q,EAAS,CACTwrL,KAAM,CACFr7K,KAAM,GACNlE,MAAO,GACPmpC,OAAQ,IAEZmkH,MAAO,GACPg6B,QAAS,CACLzwL,QAAS,OACT2wL,UAAW,SAAvB,GACgB,IAEI7tL,EAFA86G,EAAO,GACPjrG,EAAOoM,EAAO,GAAG1lB,KAAKrkB,MAAM,GAEhC8tB,EAAMlkB,KAAKq4C,MAAM,EAAjC,wGACgB,IAAI+zK,EAAOxgM,SAAS1H,EAAI7iB,MAAM,KAAK,IAgCnC,OA5BI6iB,EADAkoM,GAAQ,GACFloM,EAGA,IAAMkoM,EAAKvwN,WAAa,IAAMqoB,EAAI7iB,MAAM,KAAK,GAEvD8+B,EAAOkD,SAAQ,SAAU/uB,EAAGnf,GACpBmf,EAAEmG,KAAK/kB,MAAQ0qM,OAAOC,IAAIC,SAASC,MAAM27I,MAAQ,MAC7CnxT,WAAWzW,EAAEle,MAAM,IAAM,EACzB4oI,GAAQ1qH,EAAE5e,KAAO,IAAM0qM,OAAOC,IAAIC,SAASC,MAAMkS,KAAO,WAAan+L,EAAEmG,KAAKrkB,MAAM,GAAK,QACnH,cAC4B4oI,GAAQ1qH,EAAE5e,KAAtC,gCAE4BspI,GAAQ1qH,EAAE5e,KAAO,IAAM0qM,OAAOC,IAAIC,SAASC,MAAMiS,IAAM,WAAal+L,EAAEmG,KAAKrkB,MAAM,GAAK,QAGlH,qDAC4B20B,WAAWzW,EAAEle,MAAM,IAAM,EACzB4oI,GAAQ1qH,EAAE5e,KAAO,IAAM0qM,OAAOC,IAAIC,SAASC,MAAMgS,WAAa,WAAaj+L,EAAEmG,KAAKrkB,MAAM,GAAK,QACzH,cAC4B4oI,GAAQ1qH,EAAE5e,KAAO,MAAQ4e,EAAEmG,KAAKrkB,MAAM,GAAK,SAE3C4oI,GAAQ1qH,EAAE5e,KAAO,IAAM0qM,OAAOC,IAAIC,SAASC,MAAM+R,QAAU,WAAah+L,EAAEmG,KAAKrkB,MAAM,GAAK,QAI9F4oI,GAAQ1qH,EAAE5e,KAAO,MAAQ4e,EAAEmG,KAAKrkB,MAAM,GAAK,YAG5C8tB,EAAM,SAAW86G,IAGhC+0E,OAAQ,CACJxpL,MAAO,GACP9P,KAAM4iU,EACNK,QAAS,GACTr4H,WAAY,EACZD,UAAW,GACXh3M,SAAU,CACN,WAAW,GAEf05I,UAAW,CACP/4C,MAAO,SAGf2lG,MAAO,CACHxhK,IAAK,EACLjmB,IAAKk8K,EAAGtvM,OACR8jV,QAAQ,EACRptT,SAAU,GACV92B,KAAZ,WACY+rN,SAAU,CACN9nM,MAAM,GAEVi3L,SAAU,CACN/B,UAAW,CACP7jG,MAAO,UACPxlF,MAAO,IAGfqrL,UAAW,CACPrkL,SAAhB,EACgBw+E,MAAO,UACPgjG,UAAW,SAA3B,GACoB,GAAIt6K,EAAQ,IAAM,EAAG,CACjB,IAAI20L,EAAO30L,EAAQ,GAOnB,OALI20L,EADAA,GAAQ,GACDA,EAAKvwN,WAGL,IAAMuwN,GAEH,SAM1BtX,UAAW,CACPlC,UAAW,CACP1kL,QAAS,GACTz0B,KAAM,YAIlBo7M,MAAO,CAAC,CACJ2Q,SAAU,CACN9nM,MAAM,GAEVi3L,SAAU,CACN/B,UAAW,CACP7jG,MAAO,YAGf6lG,UAAW,CACP7lG,MAAO,WAEX+lG,UAAW,CACPlC,UAAW,CACP1kL,QAAS,GACTz0B,KAAM,WAGd/D,KAAM,WACNkoV,aAAc,MACdC,cAAe,CACX9uO,MAAO,UACPiK,SAAU,GACVrqF,QAAS,CAAC,EAAG,GAAI,GAAI,MAErC,CACYj5B,KAAM,SACNkoV,aAAc,MACdC,cAAe,CACX9uO,MAAO,UACPiK,SAAU,GACVrqF,QAAS,CAAC,EAAG,GAAI,IAAK,KAE1BgmL,SAAU,CACN/B,UAAW,CACP7jG,MAAO,UACPt1G,KAAM,UAGdq7M,UAAW,CACPp3L,MAAM,GAGV8nM,SAAU,CACN9nM,MAAM,KAIdm2L,OAAQ,CAAC,CACLp6M,KAAM,OACN/D,KAAM0qM,OAAOC,IAAIC,SAASC,MAAMoG,IAA5C,MACYwO,WAAY,EACZ16L,KAAMmqL,EACNwQ,UAAW,CACPC,OAAQ,CACJtmG,MAAO4zO,IAGf/vI,UAAW,CACPyC,OAAQ,CACJr6G,WAAY,EACZC,YAAa0nP,KAMjC,CACYlpV,KAAM,OACN/D,KAAM0qM,OAAOC,IAAIC,SAASC,MAAM6I,QAA5C,MACY3uL,KAAM2uL,EACNgM,UAAW,CACPC,OAAQ,CACJtmG,MAAO4zO,IAGf/vI,UAAW,CACPyC,OAAQ,CACJr6G,WAAY,EACZC,YAAa0nP,KAIjC,CACYlpV,KAAM,OACN/D,KAAM0qM,OAAOC,IAAIC,SAASC,MAAM27I,MAAQ,MACxCzhU,KAAMyhU,EACN9mI,UAAW,CACPC,OAAQ,CACJtmG,MAAO4zO,IAGf/vI,UAAW,CACPyC,OAAQ,CACJr6G,WAAY,EACZC,YAAa0nP,OAS7BrkU,EAAOy1L,OAAO3lM,SAASgyL,OAAOC,IAAIC,SAASC,MAAM/8K,KAArD,UACQ/I,EAAKmhU,aACgC,GAAjCnhU,EAAKmhU,UAAUjgV,QAAQ,OACvB2iB,EAAOu1L,OAAO7oM,QAAQ,CAClBvR,KAAM,OACN/D,KAAM0qM,OAAOC,IAAIC,SAASC,MAAMg8I,qBAAhD,MACgB9hU,KAAM0uL,EACNiM,UAAW,CACPC,OAAQ,CACJtmG,MAAO4zO,IAGf/vI,UAAW,CACPyC,OAAQ,CACJr6G,WAAY,EACZC,YAAa0nP,OAMU,GAAnCloU,EAAKmhU,UAAUjgV,QAAQ,SACvB2iB,EAAOu1L,OAAOn5M,KAAK,CACfjB,KAAM,OACN/D,KAAM0qM,OAAOC,IAAIC,SAASC,MAAM/8K,KAAO,MACvC/I,KAAM+I,EACN4xL,UAAW,CACPC,OAAQ,CACJtmG,MAAO4zO,IAGf/vI,UAAW,CACPyC,OAAQ,CACJr6G,WAAY,EACZC,YAAa0nP,OAOjC3J,cAAcjoR,QACdioR,cAAchlI,UAAU11L,GAuR5B,SAASw9T,GAAwBrhU,GAC7B,IAAIsqM,EAAQtqM,EAAKhc,KAAI,SAAUlJ,GAC3B,OAAOA,EAAEkrM,QAETukB,EAASvqM,EAAKhc,KAAI,SAAUlJ,GAC5B,OAAOA,EAAEwmV,OAET+B,EAAY,EACZC,EAAY,EAEhBh5H,EAAM1hL,SAAQ,SAAUhnC,EAAMzC,GACtBorN,EAAOprN,GAASkkV,IAChBA,EAAY94H,EAAOprN,IAEnBorN,EAAOprN,GAASmkV,IAChBA,EAAY/4H,EAAOprN,OAO3B,IAAIokV,EAAc9oU,EAAEmjC,MAAkB,IAAZylS,EAAkB,IAExCG,EAAgBD,EAAc,EAC9BE,EAAW,EACXC,EAAW,GAEXF,GAAiB,KACjBC,EAAW,IACXC,EAAW,KACnB,QACQD,EAAW,IACXC,EAAW,KACnB,SACQD,EAAW,IACXC,EAAW,KAGf,IAAIC,EAAah+I,OAAOC,IAAIC,SAASC,MAAM89I,QAAU,IAAMF,EAAW,KAGlE7/T,EAAS,CACTwrL,KAAM,CACFr7K,KAAM,GACNlE,MAAO,GACPmpC,OAAQ,IAEZqgJ,OAAQ,CACJxpL,MAAO,EACP9P,KAAM,CAAC,CACH/kB,KAAM0oV,IAEVt2L,UAAW,CACP/4C,MAAO,SAGf2lG,MAAO,CACHj7M,KAAM,WACNghB,KAAMsqM,EACNS,SAAU,CACN9nM,MAAM,GAEVi3L,SAAU,CACN/B,UAAW,CACP7jG,MAAO,SAGf6lG,UAAW,CACP7lG,MAAO,OACPiK,SAAU,EACVzoF,SAAU,EACVwhL,UAAW,SAA3B,KACoB,IAAIjkB,EAAM,cAActnL,KAAK,gCAAgCA,KAAK8N,GAAG,IACrE,GAAIw5K,EACA,OAAOliK,SAASkiK,EAAI,MAIhCw3B,YAAa,CACTrV,MAAO,CACHvyL,MAAM,KAIlBm3L,MAAO,CACHn/M,KAAM0oV,EACNlrS,IAAK6qS,EACL9wT,IAAK+wT,EACLztT,SAAUwtT,EAAY,GAAKC,EAAcD,GAAa,EAAIC,EAAc,EACxElpI,UAAW,CACPp3L,MAAM,EACNk1L,UAAW,CACPn5M,KAAM,SACNs1G,MAAO,SAGfy2G,SAAU,CACN9nM,MAAM,GAEVmgU,cAAe,CACXlvT,QAAS,CAAC,EAAG,EAAG,EAAG,KAEvBimL,UAAW,CACP7lG,MAAO,OACPgjG,UAAW,SAA3B,KACoB,OAAOnmL,SAASx1B,EAAQ8nV,IAE5BllO,SAAU,GAEd27F,SAAU,CACN/B,UAAW,CACP7jG,MAAO,aAInB8iG,QAAS,CACLn0L,MAAM,EACN0D,QAAS,OACTkkM,YAAa,CACT7rN,KAAM,SAOVs4M,UAAW,SAAvB,GACgBt6K,EAAQA,EAAM,GACd,IAAI1D,EAAOk+K,MAAMx6K,EAAM/hC,MAAMw8M,OAAO,uBACpC,MAAO,CAAC9R,OAAOC,IAAIC,SAASC,MAAM89I,QAAU,MAC5D,0BACA,IACA,EACA,IACA,oCACA,+BACA,uBAGQ/4H,YAAa,CACT5nM,MAAM,GAEVm2L,OAAQ,CACJn+M,KAAM0oV,EACN3kV,KAAM,OACN27M,UAAW,CACPC,OAAQ,CACJtmG,MAAO,YAGfuvO,UAAW,CACPjpI,OAAQ,CACJtmG,MAAO,OACP7gF,QAAS,KAGjBqwT,YAAY,EACZ9jU,KAAMuqM,EACNv2K,OAAQ,cACR+vS,WAAY,GAEhBv3N,gBAAR,WAEI+xN,cAAcjoR,QACdioR,cAAchlI,UAAU11L,GAG5B,SAAS09T,GAAqBvhU,EAAMw1L,EAAO9yL,GAgBvC,IAAI4nM,EAAQtqM,EAAKvF,EAAE5N,KAAKmT,GAAM,IAAIhc,KAAI,SAAUlJ,GAC5C,OAAOA,EAAEkrM,QAETolB,EAAQ,GACZ,IAAK,IAAIj7J,KAAKnwC,EAAM,CAChB,GAAIvF,EAAE5N,KAAKmT,GAAM5gB,OAAS,EAEtB,IAAInD,EAAMu5M,EAAQ,IAAM,MAAMzpM,KAAKokD,GAAG,GAAK,SAEvCl0D,EAAMu5M,EAEd4V,EAAMnrN,KAAK,CACPhF,KAAMgB,EACN+jB,KAAMA,EAAKmwC,GAAGnsD,KAAI,SAAUpC,GACxB,OAAOA,EAAKmwM,YAKxB,IAAIiyI,EAAW,EACf54H,EAAMxiL,SAAQ,SAAUhnC,GACpB,IAAIqiV,EAAUxpU,EAAE+X,IAAI5wB,EAAKoe,MACzBgkU,EAAWA,EAAWC,EAAUD,EAAWC,KAE/C,IAAIC,EAAS,EACA,QAATxhU,IACIshU,GAAY,KACZE,EAAS,IACTxhU,EAAO,OACnB,SACYwhU,EAAS,IACTxhU,EAAO,QAOf0oM,EAAMxiL,SAAQ,SAAUwwK,GACpBA,EAAOp5L,KAAK4oB,SAAQ,SAAUhnC,EAAMzC,GAChCi6M,EAAOp5L,KAAK7gB,GAASsb,EAAEmjC,MAAMh8C,EAAOsiV,EAAQ,SA2BpD,IAAIrgU,EAAS,CACTywF,MAAO,CAAC,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,WAC3G+6F,KAAM,CACFr7K,KAAM,GACNlE,MAAO,GACPmpC,OAAQ,IAEZqgJ,OAAQ,CACJxpL,MAAO,GACP9P,KAAMorM,EAAMpnN,KAAI,SAAUpC,GACtB,OAAOA,EAAK3G,QAEhBq8M,UAAW,SAAvB,GACgB,OAAI50L,EACOznB,EAAO,MAAQynB,EAAO,IAEtBznB,GAGfoyJ,UAAW,CACP/4C,MAAO,SAGf2lG,MAAO,CACHj7M,KAAM,WACNghB,KAAMsqM,EACNS,SAAU,CACN9nM,MAAM,GAEVi3L,SAAU,CACN/B,UAAW,CACP7jG,MAAO,SAGf6lG,UAAW,CACP7lG,MAAO,OACPiK,SAAU,EACVzoF,SAAU,EACVwhL,UAAW,SAA3B,KACoB,IAAIjkB,EAAM,cAActnL,KAAK,gCAAgCA,KAAK8N,GAAG,IACrE,GAAIw5K,EACA,OAAOliK,SAASkiK,EAAI,MAIhCw3B,YAAa,CACTrV,MAAO,CACHvyL,MAAM,KAIlBm3L,MAAO,CACHn/M,KAAMynB,EAAO8yL,EAAQ,IAAM9yL,EAAO,IAAM8yL,EACxC6E,UAAW,CACPp3L,MAAM,EACNk1L,UAAW,CACPn5M,KAAM,SACNs1G,MAAO,SAGfy2G,SAAU,CACN9nM,MAAM,GAEVmgU,cAAe,CACXlvT,QAAS,CAAC,EAAG,EAAG,EAAG,KAEvBimL,UAAW,CACP7lG,MAAO,OAIPiK,SAAU,GAEd27F,SAAU,CACN/B,UAAW,CACP7jG,MAAO,aAInB8iG,QAAS,CACLn0L,MAAM,EACN0D,QAAS,OACTkkM,YAAa,CACT7rN,KAAM,SAOVs4M,UAAW,SAAvB,GACgB,IAAI1rK,EAAM,GACNtS,EAAOk+K,MAAMx6K,EAAM,GAAG/hC,MAAMw8M,OAAO,uBAKvC,OAJAz6K,EAAM4L,SAAQ,SAAUhnC,GACpBgqC,GAAOhqC,EAAKg2M,WAAa,KAAOh2M,EAAKjG,MAAQ,IAAM+mB,EAAO,uCAE9DkpB,GAAO+5J,OAAOC,IAAIC,SAASC,MAAMxsK,KAAO,KAAOA,IAIvDuxL,YAAa,CACT5nM,MAAM,GAEVm2L,OAAQgS,EAAMpnN,KAAI,SAAUpC,GACxB,MAAO,CACH3G,KAAM2G,EAAK3G,KACX+D,KAAM,OACN6kV,UAAW,CACPjpI,OAAQ,CACJtmG,MAAO,OACP7gF,QAAS,KAGjBqwT,YAAY,EACZ9jU,KAAMpe,EAAKoe,KACXg0B,OAAQ,cACR+vS,WAAY,MAGpBv3N,gBAAR,WAEI+xN,cAAcjoR,QACdioR,cAAchlI,UAAU11L,GAI5B,SAASugU,GAAwBpkU,EAAMw1L,GACnC,IASI6uI,EAAcrkU,EAAKwhU,QAAQx9U,KAAI,SAAU6V,EAAGnf,GAC5C,MAAO,CAAE,KAAQ,aAAc,MAAS,CAACA,EAAGmf,EAAEk4L,QAAS,WAAc,MAErEuyI,EAActkU,EAAKukU,QAAQvgV,KAAI,SAAU6V,EAAGnf,GAC5C,MAAO,CAAE,KAAQ,aAAc,MAAS,CAACA,EAAGmf,EAAEk4L,QAAS,WAAc,MAGrEluL,EAAS,CACTu5J,MAAO,GACPiyB,KAAM,CACFr7K,KAAM,GACNlE,MAAO,GACPmpC,OAAQ,IAEZqgJ,OAAQ,CACJxpL,MAAO,GACP9P,KAzBS,CAAC,CACd/kB,KAAM,aACNq5G,MAAO,UACPomL,KAAM,aACd,CACQz/R,KAAM,aACNq5G,MAAO,UACPomL,KAAM,cAmBFuoD,QAAS,GACTr4H,WAAY,EACZD,UAAW,GACXt9D,UAAW,CACP/4C,MAAO,SAGf8iG,QAAS,CACL9iG,MAAO,CAAC,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,WAC3G3tF,QAAS,OAET2wL,UAAW,SAAvB,GACgB,IAEI7tL,EAFA86G,EAAO,GACPjrG,EAAOoM,EAAO,GAAG1lB,KAAKrkB,MAAM,GAEhC8tB,EAAMlkB,KAAKq4C,MAAM,EAAjC,wGACgB,IAAI+zK,EAAOxgM,SAAS1H,EAAI7iB,MAAM,KAAK,IAYnC,OARI6iB,EADAkoM,GAAQ,GACFloM,EAGA,IAAMkoM,EAAKvwN,WAAa,IAAMqoB,EAAI7iB,MAAM,KAAK,GAEvD8+B,EAAOkD,SAAQ,SAAU/uB,EAAGnf,GACxB6pI,GAAQ1qH,EAAE5e,KAAO,MAAQ4e,EAAEmG,KAAKrkB,MAAM,GAAK,YAExC8tB,EAAM,SAAW86G,IAIhC01E,MAAO,CACHxhK,IAAK,EACLjmB,IAAK8xT,EAAYllV,OACjB8jV,QAAQ,EACRptT,SAAU,GACV92B,KAAZ,WACY+rN,SAAU,CACN9nM,MAAM,GAEVi3L,SAAU,CACN/B,UAAW,CACP7jG,MAAO,SAGf6lG,UAAW,CACP7lG,MAAO,UACPx+E,SAAU,EACVwhL,UAAW,SAA3B,GACoB,GAAIt6K,EAAQ,IAAM,EAAG,CACjB,IAAI20L,EAAO30L,EAAQ,GAOnB,OALI20L,EADAA,GAAQ,GACDA,EAAKvwN,WAGL,IAAMuwN,GAEH,SAK1BtX,UAAW,CACPp3L,MAAM,IAIdm3L,MAAO,CAAC,CACJn/M,KAAM,aACNo/M,UAAW,CACPp3L,MAAM,EACNk1L,UAAW,CACPn5M,KAAM,SACNs1G,MAAO,SAGfy2G,SAAU,CACN9nM,MAAM,GAEVmgU,cAAe,CACXlvT,QAAS,CAAC,EAAG,EAAG,EAAG,KAEvBimL,UAAW,CACP7lG,MAAO,OAIPiK,SAAU,GAEd27F,SAAU,CACN/B,UAAW,CACP7jG,MAAO,aAI3B,CACYomG,WAAY,EACZz/M,KAAM,aACNo/M,UAAW,CACPp3L,MAAM,EACNk1L,UAAW,CACPn5M,KAAM,SACNs1G,MAAO,SAGfy2G,SAAU,CACN9nM,MAAM,GAEVmgU,cAAe,CACXlvT,QAAS,CAAC,EAAG,EAAG,GAAI,KAExBimL,UAAW,CACP7lG,MAAO,OAKPiK,SAAU,GAEd27F,SAAU,CACN/B,UAAW,CACP7jG,MAAO,cAKnB8kG,OAAQ,CAAC,CACLn+M,KAAM,aACN+D,KAAM,OACNghB,KAAMqkU,EACN1pI,UAAW,CACPC,OAAQ,CACJtmG,MAAO,aAG3B,CACYr5G,KAAM,aACN+D,KAAM,OACNghB,KAAMskU,EACN5pI,WAAY,EACZC,UAAW,CACPC,OAAQ,CACJtmG,MAAO,cAInBkY,gBAAiB,WAIrB+xN,cAAcjoR,QACdioR,cAAchlI,UAAU11L,GAG5B,SAASk8T,KACL,IAAIpjU,EAAOlf,KACXigM,OAAOwC,KAAK,8CAA+C,CACvD8F,KAAMwR,MAAM/5M,KAAKqhV,mBAAmBrnI,OAAO,uBAC3C1F,OAAQt0M,KAAKyhV,YAAYvrU,SAAShY,MAClCsQ,GAAIxO,KAAKugO,sBAAsB36B,KACvC,qBACY/jI,EAAIt/C,MAAQs/C,EAAIt/C,KAAKwhU,SAAW/mU,EAAE5N,KAAKyyD,EAAIt/C,MAAM5gB,OAAS,GAC1DglV,GAAwB9kR,EAAIt/C,KAAMrD,EAAKuiU,YAAYvrU,SAAS6hM,OAC5D74L,EAAK+hU,SAASC,YAAa,IAE3ByF,GAAwB,CACpB,QAAW,CAAC,CACRp+I,KAAM,sBACN+L,OAAQ,IAEZ,QAAW,CAAC,CACR/L,KAAM,sBACN+L,OAAQ,KAE5B,8BACYp1L,EAAK+hU,SAASC,YAAa,MAEvC,kBACQyF,GAAwB,CACpB,QAAW,CAAC,CACRp+I,KAAM,sBACN+L,OAAQ,IAEZ,QAAW,CAAC,CACR/L,KAAM,sBACN+L,OAAQ,KAExB,8BACQp1L,EAAK+hU,SAASC,YAAa,KAGnC,SAASyC,GAAoBphU,GACzB,IACI4iU,EADAtuO,EAAQ,CAAC,UAAW,UAAW,WAE/BktO,EAAU,GACV+C,EAAU,GACVC,EAAU,IAC2B,GAArCxkU,EAAKmhU,UAAUjgV,QAAQ,YAAsD,GAAnC8e,EAAKmhU,UAAUjgV,QAAQ,SAA0C,GAAzB8e,EAAKmhU,UAAU/hV,QACjGwjV,EAAa,CAAC,CACV3nV,KAAM0qM,OAAOC,IAAIC,SAASC,MAAMo7I,OAAS,QACzC5sO,MAAOA,EAAM,GACbomL,KAAM,aAClB,CACYz/R,KAAM0qM,OAAOC,IAAIC,SAASC,MAAMkS,KAAO,QACvC1jG,MAAOA,EAAM,GACbomL,KAAM,aAClB,CACYz/R,KAAM0qM,OAAOC,IAAIC,SAASC,MAAMiS,IAAM,QACtCzjG,MAAOA,EAAM,GACbomL,KAAM,cAEV8mD,EAAUxhU,EAAKkhU,OAAOl9U,KAAI,SAAU6V,EAAGnf,GACnC,MAAO,CAAE,KAAQirM,OAAOC,IAAIC,SAASC,MAAMo7I,OAAS,QAAS,MAAS,EAAlF,iBAEQqD,EAAUvkU,EAAKg4L,KAAKh0M,KAAI,SAAU6V,EAAGnf,GACjC,MAAO,CAAE,KAAQirM,OAAOC,IAAIC,SAASC,MAAMkS,KAAO,QAAS,MAAS,EAAhF,iBAEQwsI,EAAUxkU,EAAK+3L,IAAI/zM,KAAI,SAAU6V,EAAGnf,GAChC,MAAO,CAAE,KAAQirM,OAAOC,IAAIC,SAASC,MAAMiS,IAAM,QAAS,MAAS,EAA/E,gCAGA,wFACQ6qI,EAAa,CAAC,CACV3nV,KAAM0qM,OAAOC,IAAIC,SAASC,MAAMg8I,qBAA5C,QACYxtO,MAAOA,EAAM,GACbomL,KAAM,aAClB,CACYz/R,KAAM0qM,OAAOC,IAAIC,SAASC,MAAMo7I,OAAS,QACzC5sO,MAAOA,EAAM,GACbomL,KAAM,aAClB,CACYz/R,KAAM0qM,OAAOC,IAAIC,SAASC,MAAMwU,OAAS,IAAMoqI,SAAW,IAC1DpwO,MAAOA,EAAM,GACbomL,KAAM,cAEV8mD,EAAUxhU,EAAK0uL,GAAG1qM,KAAI,SAAU6V,EAAGnf,GAC/B,MAAO,CAAE,KAAQirM,OAAOC,IAAIC,SAASC,MAAMg8I,qBAAvD,sBAEQyC,EAAUvkU,EAAKkhU,OAAOl9U,KAAI,SAAU6V,EAAGnf,GACnC,MAAO,CAAE,KAAQirM,OAAOC,IAAIC,SAASC,MAAMo7I,OAAS,QAAS,MAAS,EAAlF,iBAEQsD,EAAUxkU,EAAK2kU,iBAAiB3gV,KAAI,SAAU6V,EAAGnf,GAC7C,MAAO,CAAE,KAAQirM,OAAOC,IAAIC,SAASC,MAAMwU,OAAS,IAAMoqI,SAAW,IAAK,MAAS,EAA/F,gCAGA,qDACQ9B,EAAa,CAAC,CACV3nV,KAAM0qM,OAAOC,IAAIC,SAASC,MAAMg8I,qBAA5C,QACYxtO,MAAOA,EAAM,GACbomL,KAAM,aAClB,CACYz/R,KAAM0qM,OAAOC,IAAIC,SAASC,MAAMwU,OAAS,IAAMoqI,SAAW,IAC1DpwO,MAAOA,EAAM,GACbomL,KAAM,cAEV8mD,EAAUxhU,EAAK0uL,GAAG1qM,KAAI,SAAU6V,EAAGnf,GAC/B,MAAO,CAAE,KAAQirM,OAAOC,IAAIC,SAASC,MAAMg8I,qBAAvD,iCAEQyC,EAAUvkU,EAAK2kU,iBAAiB3gV,KAAI,SAAU6V,EAAGnf,GAC7C,MAAO,CAAE,KAAQirM,OAAOC,IAAIC,SAASC,MAAMwU,OAAS,IAAMoqI,SAAW,IAAK,MAAS,EAA/F,gCAGA,yDACQ9B,EAAa,CAAC,CACV3nV,KAAM0qM,OAAOC,IAAIC,SAASC,MAAMo7I,OAAS,QACzC5sO,MAAOA,EAAM,GACbomL,KAAM,cAEV8mD,EAAUxhU,EAAKkhU,OAAOl9U,KAAI,SAAU6V,EAAGnf,GACnC,MAAO,CAAE,KAAQirM,OAAOC,IAAIC,SAASC,MAAMo7I,OAAS,QAAS,MAAS,EAAlF,mBAGA,sDACQ0B,EAAa,CAAC,CACV3nV,KAAM,OAAlB,gDACYq5G,MAAOA,EAAM,GACbomL,KAAM,cAEV8mD,EAAUxhU,EAAK0uL,GAAG1qM,KAAI,SAAU6V,EAAGnf,GAC/B,MAAO,CAAE,KAAQirM,OAAOC,IAAIC,SAASC,MAAMg8I,qBAAvD,kCAoBI,IAAIiB,EAAO,EAIPz4H,EAAQtqM,EAAK8kK,GAAG9gL,KAAI,SAAU6V,EAAGnf,GACjC,OAA2B,GAAvBmf,EAAEjT,MAAM,KAAKxH,OACNya,EAAEjT,MAAM,KAAK,GAAK,IAAMiT,EAAEjT,MAAM,KAAK,GAGrCiT,KAIL,GAAGpb,OAAO+iV,EAAS+C,GACzB37S,SAAQ,SAAU/uB,EAAGnf,GACjBmf,EAAEle,MAAQonV,IACVA,EAAOlpU,EAAEle,UAGjBonV,EAA6B,EAAtBx9U,KAAK0tB,KAAK8vT,EAAO,GAExB,IAAIl/T,EAAS,CACTu5J,MAAO,GACPiyB,KAAM,CACFr7K,KAAM,GACNlE,MAAO,GACPmpC,OAAQ,IAEZghJ,MAAO,CACH8Q,SAAU,CACN9nM,MAAM,GAGVi3L,SAAU,CACN/B,UAAW,CACP7jG,MAAO,YAGf6lG,UAAW,CACP7lG,MAAO,WAEXt0F,KAAMsqM,GAEVlQ,MAAO,CAAC,CACJ3hK,IAAK,EAELsyK,SAAU,CACN9nM,MAAM,GAEVi3L,SAAU,CACN/B,UAAW,CACP7jG,MAAO,YAGf6lG,UAAW,CACP7lG,MAAO,WAEX+lG,UAAW,CACPlC,UAAW,CACP1kL,QAAS,GACTz0B,KAAM,WAGd/D,KAAM,MACNkoV,aAAc,MACdC,cAAe,CACX9uO,MAAO,UACPiK,SAAU,GACVrqF,QAAS,CAAC,EAAG,GAAI,GAAI,OAG7BolL,OAAQ,CACJxpL,MAAO,GACP9P,KAAM4iU,EACNK,QAAS,GACTr4H,WAAY,EACZD,UAAW,GACXt9D,UAAW,CACP/4C,MAAO,SAGf8iG,QAAS,CACLzwL,QAAS,OACT2wL,UAAW,SAAvB,GAEgB,IAAIF,EAAUp6K,EAAM,GAAG8nT,UAAY,OAInC,OAHA9nT,EAAM4L,SAAQ,SAAU/uB,EAAGnf,GACvB08M,GAAWp6K,EAAMtiC,GAAGO,KAAO,UAAY+hC,EAAMtiC,GAAGiB,MAAQ,UAErDy7M,IAGfa,SAAU,CAAC,CACPj5M,KAAM,SACNq3S,OAAQ,eAEZj9F,OAAQ,GACR5sF,gBAAiB,YAEoB,GAArCxsG,EAAKmhU,UAAUjgV,QAAQ,YAAsD,GAAnC8e,EAAKmhU,UAAUjgV,QAAQ,SAA0C,GAAzB8e,EAAKmhU,UAAU/hV,OAEjGykB,EAAOu1L,OAAS,CAAC,CACbp6M,KAAM,MACN/D,KAAM0qM,OAAOC,IAAIC,SAASC,MAAMo7I,OAAS,QACzCzmI,YAAa,GACbE,UAAW,CACPC,OAAQ,CACJtmG,MAAOA,EAAM,GACbywO,gBAAiB,CAAC,EAAG,EAAG,EAAG,KAGnC/kU,KAAMwhU,GAElB,CACYxiV,KAAM,MACN/D,KAAM0qM,OAAOC,IAAIC,SAASC,MAAMkS,KAAO,QACvCyC,YAAa,GACbE,UAAW,CACPC,OAAQ,CACJtmG,MAAOA,EAAM,GACbywO,gBAAiB,CAAC,EAAG,EAAG,EAAG,KAGnC/kU,KAAMukU,GAElB,CACYvlV,KAAM,MACN/D,KAAM0qM,OAAOC,IAAIC,SAASC,MAAMiS,IAAM,QACtC0C,YAAa,GACbE,UAAW,CACPC,OAAQ,CACJtmG,MAAOA,EAAM,GACbywO,gBAAiB,CAAC,EAAG,EAAG,EAAG,KAGnC/kU,KAAMwkU,KAGlB,wFACQ3gU,EAAOu2L,MAAMn6M,KAAK,CACdhF,KAAM0qM,OAAOC,IAAIC,SAASC,MAAMwU,OAAS,IAAMoqI,SAAW,IAC1DvB,aAAc,MACdC,cAAe,CACX9uO,MAAO,UACPiK,SAAU,GACVrqF,QAAS,CAAC,EAAG,GAAI,IAAK,KAG1BgmL,SAAU,CACN/B,UAAW,CACP7jG,MAAO,UACPt1G,KAAM,UAGdq7M,UAAW,CACPp3L,MAAM,GAEV8nM,SAAU,CACN9nM,MAAM,KAGdY,EAAOu1L,OAAS,CAAC,CACbp6M,KAAM,MACN/D,KAAM0qM,OAAOC,IAAIC,SAASC,MAAMg8I,qBAA5C,QACYrnI,YAAa,GACbE,UAAW,CACPC,OAAQ,CACJtmG,MAAOA,EAAM,GACbywO,gBAAiB,CAAC,EAAG,EAAG,EAAG,KAGnC/kU,KAAMwhU,GAElB,CACYxiV,KAAM,MACN/D,KAAM0qM,OAAOC,IAAIC,SAASC,MAAMo7I,OAAS,QACzCzmI,YAAa,GACbE,UAAW,CACPC,OAAQ,CACJtmG,MAAOA,EAAM,GACbywO,gBAAiB,CAAC,EAAG,EAAG,EAAG,KAGnC/kU,KAAMukU,GAElB,CACYvlV,KAAM,OACN/D,KAAM0qM,OAAOC,IAAIC,SAASC,MAAMwU,OAAS,IAAMoqI,SAAW,IAC1DhqI,WAAY,EACZC,UAAW,CACPC,OAAQ,CACJtmG,MAAOA,EAAM,GACbywO,gBAAiB,CAAC,EAAG,EAAG,EAAG,KAGnClB,UAAW,CACPjpI,OAAQ,CACJtmG,MAAO,2BAGft0F,KAAMwkU,MAGlB,qDACQ3gU,EAAOu2L,MAAMn6M,KAAK,CACdhF,KAAM0qM,OAAOC,IAAIC,SAASC,MAAMwU,OAAS,IAAMoqI,SAAW,IAC1DvB,aAAc,MACdC,cAAe,CACX9uO,MAAO,UACPiK,SAAU,GACVrqF,QAAS,CAAC,EAAG,GAAI,IAAK,KAG1BgmL,SAAU,CACN/B,UAAW,CACP7jG,MAAO,UACPt1G,KAAM,UAGdq7M,UAAW,CACPp3L,MAAM,GAEV8nM,SAAU,CACN9nM,MAAM,KAGdY,EAAOu1L,OAAS,CAAC,CACbp6M,KAAM,MACN/D,KAAM0qM,OAAOC,IAAIC,SAASC,MAAMg8I,qBAA5C,QACYrnI,YAAa,GACbE,UAAW,CACPC,OAAQ,CACJtmG,MAAOA,EAAM,GACbywO,gBAAiB,CAAC,EAAG,EAAG,EAAG,KAGnC/kU,KAAMwhU,GAClB,CACYxiV,KAAM,OACN/D,KAAM0qM,OAAOC,IAAIC,SAASC,MAAMwU,OAAS,IAAMoqI,SAAW,IAC1DhqI,WAAY,EACZC,UAAW,CACPC,OAAQ,CACJtmG,MAAOA,EAAM,GACbywO,gBAAiB,CAAC,EAAG,EAAG,EAAG,KAGnClB,UAAW,CACPjpI,OAAQ,CACJtmG,MAAO,2BAGft0F,KAAMukU,MAGlB,wDACQ1gU,EAAOu1L,OAAS,CAAC,CACbp6M,KAAM,MACN/D,KAAM0qM,OAAOC,IAAIC,SAASC,MAAMo7I,OAAS,QACzCzmI,YAAa,GACbE,UAAW,CACPC,OAAQ,CACJtmG,MAAOA,EAAM,GACbywO,gBAAiB,CAAC,EAAG,EAAG,EAAG,KAGnC/kU,KAAMwhU,KAGlB,sDACQ39T,EAAOu1L,OAAS,CAAC,CACbp6M,KAAM,MACN/D,KAAM0qM,OAAOC,IAAIC,SAASC,MAAMg8I,qBAA5C,QACYrnI,YAAa,GACbE,UAAW,CACPC,OAAQ,CACJtmG,MAAOA,EAAM,GACbywO,gBAAiB,CAAC,EAAG,EAAG,EAAG,KAGnC/kU,KAAZ,KA8BIu+T,cAAcjoR,QACdioR,cAAchlI,UAAU11L,GC7kEiL,ODiD7M,CACI5oB,KAAJ,oBACImuB,MAAJ,CACQ40M,sBAAR,QAEIh+M,KAAM,WACF,MAAO,CACH9M,KAAZ,0BACYwrU,SAAU,CACN1+T,MAAM,EACN2+T,YAAY,GAEhBC,sBAAZ,EAEYC,wBAAwB,EACxBC,kBAAmB,IAAI/2U,KACvBg3U,yBAAyB,EACzBC,wBAAyB,OAEzBE,YAAa,CACTj8T,MAAM,EAENpa,KAAM,GACN8K,SAAU,CAAE6hM,MAAO7P,OAAOC,IAAIC,SAASC,MAAM89I,QAASjoV,MAAO,MAAO+mB,KAAM,KAC1Emc,QAAQ,GAEZkpT,UAAZ,GACYtqH,UAAW,GACX0hH,0BAA2B1hV,KAAKugO,sBAAsB7rB,UACtDitI,SAAUz5I,OAAOC,IAAIC,SAASC,MAAMu5I,qBACpCC,YAAZ,aACYtjI,WAAZ,sBAII9yK,QAAS,CAEL0zK,eAAgB,WAMR,IAAI3sK,EACAn1C,GANR0+B,aAAa/7B,KAAK8hV,YACkB,QAAhC9hV,KAAKuhV,0BACLvhV,KAAKqhV,kBAArB,kDAEgD,SAAhCrhV,KAAKuhV,2BAIrB,0CACoB/uS,EAApB,uCACoBn1C,EAApB,KAGoBm1C,EAApB,qCACoBn1C,EAApB,uCAEgB2C,KAAKqhV,kBAArB,mBAEgD,QAAhCrhV,KAAKuhV,0BACLvhV,KAAKqhV,kBAArB,qDAEYrhV,KAAK+hV,kBAGT3iI,eAAgB,WACZ,IAAZ,aACgB,OAAO,EAMP,IAAI5sK,EACAn1C,GAL4B,QAAhC2C,KAAKuhV,0BACLvhV,KAAKqhV,kBAArB,kDAEgD,SAAhCrhV,KAAKuhV,2BAIrB,2CACoB/uS,EAApB,uCACoBn1C,EAApB,IAGoBm1C,EAApB,qCACoBn1C,EAApB,uCAEgB2C,KAAKqhV,kBAArB,mBAEgD,QAAhCrhV,KAAKuhV,0BACLvhV,KAAKqhV,kBAArB,qDAEYrhV,KAAK+hV,kBAGTA,eAAR,WAGY,GAFAhmT,aAAa/7B,KAAK8hV,YAClB9hV,KAAK0qV,YAAjB,oBACA,iCACgB,GAAhB,kCACoB1qV,KAAKgiV,yBAAyB,CAAlD,uCACA,CAEoB,IADA,IAAI5lU,EACxB,uCACA,kEAC4BA,EAA5B,0BAGoBpc,KAAKiiV,qBAAqB7lU,QAG9Bpc,KAAK8hV,WAArB,sBACoB,GAApB,8BACwB,GAAxB,kCAC4B9hV,KAAKgiV,yBAAyB,CAA1D,uCACA,CAE4B,IADA,IAAI5lU,EAChC,uCACA,kEACoCA,EAApC,0BAG4Bpc,KAAKiiV,qBAAqB7lU,KAGtD,gBAEYpc,KAAK2qV,QAAjB,iBAGQzI,qBAAsB,SAA9B,GAIY,GADQ33S,EAAE,wCAAwC3M,SAAS,kBAqBf,QAApC59B,KAAKyhV,YAAYvrU,SAAShY,MACtB8B,KAAK0hV,0BACL8I,GAAsBptV,KAAK4C,MAG3BuqV,GAA8BntV,KAAK4C,MAIc,UAAjDA,KAAKyhV,YAAYvrU,SAAShY,MAAMmL,eAA8E,WAAjDrJ,KAAKyhV,YAAYvrU,SAAShY,MAAMmL,cAC7Fg5U,GAAwBjlV,KAAK4C,MAG7BsiV,GAAyBllV,KAAK4C,MAGtCA,KAAKshV,yBAA0B,OAlC/B,OADQ/2S,EAAE,gDAAgD7oC,MAAM6oC,EAAE,uCAE9D,KAAK,EACDvqC,KAAKmhV,sBAAwB,EAC7BkJ,GAAyBjtV,KAAK4C,MAC9B,MACJ,KAAK,EACDA,KAAKmhV,sBAAwB,EAC7BkJ,GAAyBjtV,KAAK4C,MAC9B,MACJ,KAAK,EACDA,KAAKmhV,sBAAwB,EAC7BkJ,GAAyBjtV,KAAK4C,MAC9B,MACJ,QACIqqV,GAAyBjtV,KAAK4C,MAAM,GACpCA,KAAKshV,yBAA0B,IA4B/CkB,oBAAqB,SAA7B,GACYj4S,EAAE/hB,EAAM9gB,QAAQw1B,SAAS,iBACzBqN,EAAE/hB,EAAM9gB,QAAQ2S,WAAWkjB,YAAY,iBAEvC,IAAItgC,EAAIstC,EAAE,gDAAgD7oC,MAAM8mB,EAAM9gB,QAQtE,OAHA1H,KAAKwgF,MAAMiiQ,iBAAiBC,aAC5B1iV,KAAKwgF,MAAMiiQ,iBAAiBE,OAAS,KACrC3iV,KAAKshV,yBAA0B,EACvBrkV,GACJ,KAAK,EACD+C,KAAKmhV,sBAAwB,EAC7BnhV,KAAKuhV,wBAA0B,OAC/BvhV,KAAK6hV,YAAc,aACnBwI,GAAyBjtV,KAAK4C,MAC9B,MACJ,KAAK,EACDA,KAAKmhV,sBAAwB,EAC7BnhV,KAAKuhV,wBAA0B,QAC/BvhV,KAAK6hV,YAAc,UACnBwI,GAAyBjtV,KAAK4C,MAC9B,MACJ,KAAK,EACDA,KAAKmhV,sBAAwB,EAC7BnhV,KAAKuhV,wBAA0B,OAC/BvhV,KAAK6hV,YAAc,OACnBwI,GAAyBjtV,KAAK4C,MAC9B,MACJ,QACIqqV,GAAyBjtV,KAAK4C,MAAM,GACpCA,KAAKshV,yBAA0B,IAM3CU,yBAA0B,SAAlC,GAQY,OAPAhiV,KAAKyhV,YAAYrgT,QAAS,EAE1BphC,KAAKohV,wBAAyB,EAC9BphV,KAAKshV,yBAA0B,EAGvB/2S,EAAE,gDAAgD7oC,MAAM6oC,EAAE,uCAE9D,KAAK,EACDvqC,KAAKmhV,sBAAwB,EAC7BkJ,GAAyBjtV,KAAK4C,MAC9BA,KAAKuhV,wBAA0B,OAC/BvhV,KAAK6hV,YAAc,aACnB,MACJ,KAAK,EACD7hV,KAAKmhV,sBAAwB,EAC7BkJ,GAAyBjtV,KAAK4C,MAC9BA,KAAKuhV,wBAA0B,QAC/BvhV,KAAK6hV,YAAc,UACnB,MACJ,KAAK,EACD7hV,KAAKmhV,sBAAwB,EAC7BkJ,GAAyBjtV,KAAK4C,MAC9BA,KAAKuhV,wBAA0B,OAC/BvhV,KAAK6hV,YAAc,OACnB,MACJ,QACIwI,GAAyBjtV,KAAK4C,MAAM,GACpCA,KAAKuhV,wBAA0B,OAC/BvhV,KAAKshV,yBAA0B,IAG3CW,qBAAsB,SAA9B,GACYjiV,KAAKyhV,YAAYvrU,SAAWkG,EAC5Bpc,KAAKyhV,YAAYrgT,QAAS,EAC1BphC,KAAK6hV,YAAc,aAGnB7hV,KAAKohV,wBAAyB,EAC9BphV,KAAKuhV,wBAA0B,OAC/BvhV,KAAKshV,yBAA0B,EAEf,QAAZllU,EAAEle,MACE8B,KAAK0hV,0BACL8I,GAAsBptV,KAAK4C,MAG3BuqV,GAA8BntV,KAAK4C,MAIV,UAAzBoc,EAAEle,MAAMmL,eAAsD,WAAzB+S,EAAEle,MAAMmL,cAC7Cg5U,GAAwBjlV,KAAK4C,MAG7BsiV,GAAyBllV,KAAK4C,OAM1C6iV,cAAe,WACX,IAAIC,EAAkB7iJ,OAAO8iJ,cAAc/iV,KAAKqhV,mBAAqB,YACrE2B,eAAerqI,QAAQ,kBAAmBmqI,GAC1CE,eAAerqI,QAAQ,wBAAyB34M,KAAKugO,sBAAsB36B,IAC3E3iM,OAAO9C,OAAOyV,SAASG,KAAO,6BAGlCktU,uBAAwB,WACpB,IAAI1hV,EAAOvB,KAAKmhV,sBAChB,OAAQ5/U,GACJ,KAAK,EACDA,EAAO,EACP,MACJ,KAAK,EACDA,EAAO,EACP,MACJ,KAAK,EACDA,EAAO,EAGf,IAAI2hV,EAAY34S,EAAE,eAAe74B,KAAK,UAAU,GAAG8iK,UAAU,WAAWrrK,MAAM,KAAK,GAE/Eo2B,EAAQ,CACR,KAFkB0gK,OAAO8iJ,cAAc/iV,KAAKqhV,mBAAqB,YAGjE,KAAQ9/U,EACR,GAAMvB,KAAKugO,sBAAsB36B,GACjC,WAAcs9I,EACd,UAAa34S,EAAE,eAAe74B,KAAK,UAAU2f,QAC7C,WAAckZ,EAAE,eAAe74B,KAAK,UAAU+hB,UAElDwsK,OAAOwC,KAAK,gDAAiDljK,GAAO,SAAUsiC,OAC1F,sBAqwDA,SAAqBtiC,GACjB0gK,OAAOwC,KAAK,6CAA8CljK,GAAO,SAAUsiC,GAClEA,EAAIt/C,KAAKm0L,UAId9gM,SAASG,KAAO8rD,EAAIt/C,KAAKm0L,UAHrBC,OAAOC,MAAM1O,OAAOC,IAAIC,SAASC,MAAMwO,gBAInD,iBACQj3L,YAAW,WACP8pD,GAAG69Q,aAAaC,WAC5B,QA1wDA,CAJ4B,CACR,GAAM3lR,EAAIt/C,YAO1BugE,QAAS,WAEL9iF,KAAKsqV,UAAb,8BACqBrnV,OAAOwkV,OACT74U,KAAK5O,KAAKsqV,WACjBtqV,KAAK2hV,SAAWz5I,OAAOC,IAAIC,SAASC,MAAMs/I,cAG1C3nV,KAAK2hV,SAAWz5I,OAAOC,IAAIC,SAASC,MAAMu5I,qBAG9C5hV,KAAKmiF,WAAU,WACPniF,KAAKsqV,UAAU9qO,UAAU,EAAG,GAAG/7G,QAAQ,QAAU,GACjD8mC,EAAE,mBAAmB7kB,WAIjCs9D,QAAS,WAELhjF,KAAKyhV,YAAYr2U,KAqtDzB,SAA6BA,GACzB,IAAIi4U,EAAgB,CACxB,CACQ,YAAR,QACQ,WAAR,QAGIA,EAAJ,YACI9iU,QAAQi2I,IAAI,CACR6sL,cAAR,IAEI,IAAK,IAAIpmV,EAAI,EAAGA,EAAIomV,EAAc1hV,OAAQ1E,IAEtComV,EAAcpmV,GAAGiB,MAAQmlV,EAAcpmV,GAAGqmV,WAC1CD,EAAcpmV,GAAG86M,MAAQsrI,EAAcpmV,GAAGsmV,YAE9C,OAAOF,EAruDqBD,CAAoBpjV,KAAKugO,sBAAsBzsK,QACvEgtR,cAAgBhpI,QAAQnyM,KAAK7C,SAASyL,eAAe,eACrDvO,KAAKmiF,WAAU,eAEXniF,KAAK0hV,0BACL8I,GAAsBptV,KAAK4C,MAG3BuqV,GAA8BntV,KAAK4C,MAEvC8gV,cAAcrxN,UAElBr+F,SAAJ,CACQ0uL,QAAR,WACY,OAAO9/M,KAAKu+M,UAAxB,8CEzXe,I,OAXC,YACd,ICTW,WAAa,IAAIltD,EAAIrxJ,KAASyyG,EAAG4+C,EAAIhgF,eAAmB4D,EAAGo8E,EAAI9wE,MAAMtL,IAAIw9B,EAAG,OAAOx9B,EAAG,MAAM,CAACyP,YAAY,oBAAoB,CAACzP,EAAG,MAAM,CAACyP,YAAY,oBAAoBjK,MAAM,CAAC,wBAAyB42E,EAAIkvE,uBAAyBlvE,EAAIkvE,sBAAsBv2B,iBAAiB,CAAC34C,EAAIn9E,GAAGm9E,EAAI39E,GAAG29E,EAAIkvE,uBAAyBlvE,EAAIkvE,sBAAsB/iO,SAAS6zJ,EAAIn9E,GAAG,KAAKe,EAAG,MAAM,CAACyP,YAAY,8BAA8B,CAACzP,EAAG,MAAM,CAACyP,YAAY,uBAAuB,CAACzP,EAAG,MAAM,CAACyP,YAAY,iBAAiBjK,MAAM,CAAC,mBAAmB42E,EAAIowL,YAAYrgT,QAAQhZ,GAAG,CAAC,MAAQ,SAASkqD,GAAQ++E,EAAIowL,YAAYj8T,MAAQ6rI,EAAIowL,YAAYj8T,QAAQ,CAACyvD,EAAG,IAAI,CAACo8E,EAAIn9E,GAAGm9E,EAAI39E,GAAG29E,EAAIowL,YAAYvrU,SAAS6hM,UAAU1mD,EAAIn9E,GAAG,KAAKe,EAAG,MAAMo8E,EAAIn9E,GAAG,KAAKe,EAAG,MAAM,CAACzK,WAAW,CAAC,CAAChtE,KAAK,OAAOoqF,QAAQ,SAAS1pF,MAAOmzJ,EAAIowL,YAAgB,KAAE3kQ,WAAW,qBAAqB4H,YAAY,qBAAqB,CAACzP,EAAG,aAAa,CAACA,EAAG,KAAKo8E,EAAI19E,GAAI09E,EAAIowL,YAAgB,MAAE,SAASt9U,GAAM,OAAO8wE,EAAG,KAAK,CAAC7sD,GAAG,CAAC,MAAQ,SAASkqD,GAAQ,OAAO++E,EAAI4wL,qBAAqB99U,MAAS,CAACktJ,EAAIn9E,GAAGm9E,EAAI39E,GAAGvvE,EAAK4zM,aAAY,MAAM,KAAK1mD,EAAIn9E,GAAG,KAAKe,EAAG,SAAS,CAACyP,YAAY,iBAAiBjK,MAAM,CAAC,oBAAoB42E,EAAIowL,YAAYrgT,QAAQxxB,MAAM,CAAC,KAAO,UAAUwY,GAAG,CAAC,MAAQipI,EAAI2wL,2BAA2B,CAAC3wL,EAAIn9E,GAAG,qBAAqBm9E,EAAI39E,GAAG29E,EAAIswL,UAAU,oBAAoBtwL,EAAIn9E,GAAG,KAAKe,EAAG,MAAM,CAACyP,YAAY,qBAAqB,CAACzP,EAAG,SAAS,CAACzK,WAAW,CAAC,CAAChtE,KAAK,OAAOoqF,QAAQ,SAAS1pF,MAAOmzJ,EAA0B,uBAAEv0E,WAAW,2BAA2B4H,YAAY,gBAAgBgG,YAAY,CAAC,eAAe,QAAQ96E,MAAM,CAAC,KAAO,UAAUwY,GAAG,CAAC,MAAQipI,EAAImxL,sBAAsB,CAACnxL,EAAIn9E,GAAGm9E,EAAI39E,GAAG29E,EAAI57I,KAAKmyU,oBAAoBv2L,EAAIn9E,GAAG,KAAKe,EAAG,SAAS,CAACzK,WAAW,CAAC,CAAChtE,KAAK,OAAOoqF,QAAQ,SAAS1pF,MAAOmzJ,EAA0B,uBAAEv0E,WAAW,2BAA2B4N,YAAY,CAAC,eAAe,OAAO,QAAU,OAAO96E,MAAM,CAAC,KAAO,UAAUwY,GAAG,CAAC,MAAQipI,EAAImxL,sBAAsB,CAACnxL,EAAIn9E,GAAGm9E,EAAI39E,GAAG29E,EAAI57I,KAAKoyU,sBAAsBx2L,EAAIn9E,GAAG,KAAKe,EAAG,SAAS,CAACzK,WAAW,CAAC,CAAChtE,KAAK,OAAOoqF,QAAQ,SAAS1pF,MAAOmzJ,EAA0B,uBAAEv0E,WAAW,2BAA2B4N,YAAY,CAAC,eAAe,OAAO,QAAU,OAAO96E,MAAM,CAAC,KAAO,UAAUwY,GAAG,CAAC,MAAQipI,EAAImxL,sBAAsB,CAACnxL,EAAIn9E,GAAGm9E,EAAI39E,GAAG29E,EAAI57I,KAAKqyU,qBAAqBz2L,EAAIn9E,GAAG,KAAKe,EAAG,iBAAiB,CAACphB,IAAI,mBAAmB6wB,YAAY,WAAW90E,MAAM,CAAC,KAAOyhJ,EAAIkwL,wBAAwB,WAAY,EAAM,SAAWlwL,EAAIiwL,wBAAwB,UAAW,EAAM,OAASjwL,EAAIwwL,aAAaz5T,GAAG,CAAC,OAASipI,EAAI6wL,sBAAsB5oQ,MAAM,CAACp7E,MAAOmzJ,EAAqB,kBAAE/qJ,SAAS,SAAUu9L,GAAMxyC,EAAIgwL,kBAAkBx9I,GAAK/mH,WAAW,uBAAuBu0E,EAAIn9E,GAAG,KAAKe,EAAG,MAAM,CAACyP,YAAY,0BAA0Bt8D,GAAG,CAAC,MAAQipI,EAAI8tD,kBAAkB9tD,EAAIn9E,GAAG,KAAKe,EAAG,MAAM,CAACyP,YAAY,2BAA2BjK,MAAM,CAAC,UAAY42E,EAAIyuD,SAAS13L,GAAG,CAAC,MAAQipI,EAAI+tD,mBAAmB,KAAK/tD,EAAIn9E,GAAG,KAAKe,EAAG,MAAM,CAACyP,YAAY,mBAAmB,CAACzP,EAAG,MAAM,CAACyV,YAAY,CAAC,OAAS,SAAS96E,MAAM,CAAC,GAAK,gBAAgByhJ,EAAIn9E,GAAG,KAAMm9E,EAAI4vL,SAAmB,WAAEhsQ,EAAG,MAAM,CAACyP,YAAY,0BAA0BgG,YAAY,CAAC,MAAQ,SAAS,OAAS,WAAW2mE,EAAIl9E,OAAOk9E,EAAIn9E,GAAG,KAAMm9E,EAAIowL,YAAkB,OAAExsQ,EAAG,MAAM,CAACyP,YAAY,oBAAoBt8D,GAAG,CAAC,MAAQipI,EAAIwxL,gBAAgB,CAAC5tQ,EAAG,MAAM,CAACrlE,MAAM,CAAC,IAAM,EAAQ,KAA6C,IAAM,sBAAsByhJ,EAAIl9E,KAAKk9E,EAAIn9E,GAAG,KAAOm9E,EAAIowL,YAAYrgT,QAASiwH,EAAI4vL,SAASC,WAAwM7vL,EAAIl9E,KAAhMc,EAAG,MAAM,CAACyP,YAAY,oBAAoBt8D,GAAG,CAAC,MAAQipI,EAAI4xL,yBAAyB,CAAChuQ,EAAG,MAAM,CAACrlE,MAAM,CAAC,IAAM,EAAQ,KAA6C,IAAM,4BAClgH,IDWpB,EACA,KACA,WACA,M,SEbFg7U,GAAkBnnQ,QAAU,SAASrE,GACjCA,EAAIlG,UAAU0xQ,GAAkBptV,KAAMotV,KAG3BA,UCN+L,GCkC9M,CACEptV,KAAM,qBACNmuB,MAAF,CACIk/T,MAAJ,CACMtpV,KAAN,MACMsqM,UAAN,GAEIi/I,aAAJ,CACMvpV,KAAN,OACMsqE,QAAN,GAEIk/Q,QAAJ,CACMxpV,KAAN,OACMsqM,UAAN,GAEItD,KAAJ,CACMhnM,KAAN,OACMsqM,UAAN,IAGEtpL,KApBF,WAqBI,MAAJ,CACM,KAAN,0BACM,WAAN,KAGEkpB,QAAF,CACIu/S,OADJ,SACA,GACMhrV,KAAK8qV,aAAX,YAEIG,WAJJ,WAKMhrJ,OAAOwC,KAAK,4BAAlB,mGACA,qBACQx/L,OAAO2S,SAASs1U,YACxB,kBACQv0I,OAAOC,MAAM/5L,EAAK1U,SAGtBgjV,OAZJ,WAaMnrV,KAAKusE,QAAQ6+Q,cAAnB,GAEInoU,QAfJ,WAkBM,IADA,IAAI9f,EAAV,GACA,4BACQA,EAAIX,KAAKxC,KAAK6qV,MAAM5tV,IAC5B,6EACU+C,KAAKqrV,WAAW7oV,KAAKW,GAE/B,cACUnD,KAAKqrV,WAAW7oV,KAAKW,GACrBA,EAAV,KAKImoV,QA9BJ,WA+BM,IAAN,iCACQ,IAAIC,EAAWzzI,QAAQnyM,KAC/B,yEAEQw4M,GAAR,oBAIEn7H,QAjEF,WAkEIhjF,KAAKijB,UACLjjB,KAAKmiF,WAAU,WACbniF,KAAKsrV,UACQ,IAAIE,OAAO,oBAAqB,CAE3CC,WAAY,CACVC,OAAQ,sBACRj8S,OAAQ,uBAGVk8S,WAAY,CACVj8U,GAAI,qBACJk8U,WAAV,UC9Fe,GAXC,YACd,ICRW,WAAa,IAAIv6L,EAAIrxJ,KAASyyG,EAAG4+C,EAAIhgF,eAAmB4D,EAAGo8E,EAAI9wE,MAAMtL,IAAIw9B,EAAG,OAAOx9B,EAAG,MAAM,CAACA,EAAG,MAAM,CAACyP,YAAY,iBAAiB,CAAC2sE,EAAIn9E,GAAGm9E,EAAI39E,GAAG29E,EAAI57I,KAAKo2U,aAAax6L,EAAIn9E,GAAG,KAAKe,EAAG,MAAM,CAACyP,YAAY,gBAAgB,CAAC2sE,EAAIn9E,GAAGm9E,EAAI39E,GAAG29E,EAAI57I,KAAKq2U,WAAW,IAAIz6L,EAAI39E,GAAG29E,EAAIk3C,SAASl3C,EAAIn9E,GAAG,KAAKe,EAAG,MAAM,CAACA,EAAG,MAAM,CAACyP,YAAY,oBAAoB,CAACzP,EAAG,MAAM,CAACyP,YAAY,kBAAkB2sE,EAAI19E,GAAI09E,EAAc,YAAE,SAASnoF,GAAO,OAAO+L,EAAG,MAAM,CAACyP,YAAY,yBAAyB2sE,EAAI19E,GAAG,GAAQ,SAASxvE,GAAM,OAAO8wE,EAAG,MAAM,CAACyP,YAAY,cAAcjK,MAAM,CAAC,QAAUt2E,EAAK4nV,UAAU16L,EAAIy5L,cAAc1iU,GAAG,CAAC,MAAQ,SAASkqD,GAAQ,OAAO++E,EAAI25L,OAAO7mV,MAAS,CAAC8wE,EAAG,IAAI,CAACyP,YAAY,8CAA8C2sE,EAAIn9E,GAAG,KAAKe,EAAG,IAAI,CAACyP,YAAY,gBAAgB,CAAC2sE,EAAIn9E,GAAGm9E,EAAI39E,GAAG,SAASvvE,EAAK4nV,SAAS,OAAO16L,EAAIn9E,GAAG,KAAKe,EAAG,MAAM,CAACyP,YAAY,wBAAwB90E,MAAM,CAAC,GAAK,wBAAwBzL,EAAK4nV,iBAAgB,MAAK,OAAO16L,EAAIn9E,GAAG,KAAKe,EAAG,MAAM,CAACyP,YAAY,uBAAuB2sE,EAAIn9E,GAAG,KAAKe,EAAG,MAAM,CAACyP,YAAY,uBAAuB2sE,EAAIn9E,GAAG,KAAKe,EAAG,MAAM,CAACyP,YAAY,sBAAsB2sE,EAAIn9E,GAAG,KAAKe,EAAG,MAAM,CAACyP,YAAY,eAAe,CAACzP,EAAG,SAAS,CAACyP,YAAY,aAAat8D,GAAG,CAAC,MAAQ,SAASkqD,GAAQ,OAAO++E,EAAI85L,YAAY,CAAC95L,EAAIn9E,GAAGm9E,EAAI39E,GAAG29E,EAAI57I,KAAKq3F,WAAWukD,EAAIn9E,GAAG,KAAKe,EAAG,SAAS,CAACyP,YAAY,cAAct8D,GAAG,CAAC,MAAQipI,EAAI45L,aAAa,CAAC55L,EAAIn9E,GAAGm9E,EAAI39E,GAAG29E,EAAI57I,KAAKu2U,qBACv2C,IDUpB,EACA,KACA,KACA,M,QEbFC,GAAmBxoQ,QAAU,SAAArE,GACzBA,EAAIlG,UAAU+yQ,GAAmBzuV,KAAMyuV,KAG5BA,UCLiM,GCyEhN,CACIzuV,KAAJ,uBACImuB,MAAJ,CACQnG,KAAM,CACd,aACA,cAGIjD,KAAJ,WACQ,MAAO,CACH9M,KAAZ,0BACY6tL,WAAZ,GACY4oJ,YAAZ,GACYC,gBAAZ,GACYC,sBAAZ,GACY1rJ,KAAM,CACFkS,WAAY,EACZC,UAAW,GACXw5I,aAAc,GAElB7zQ,SAAS,EACrB,iBAGI3T,MAAJ,CACQy+H,WAAYtmL,EAAEmkC,UAAS,WAC/B,2BACA,uBACYnhD,KAAKssV,uBACjB,MAEI7gT,QAAJ,CACQgyS,UAAW,SAAnB,KACA,2BACA,2CACA,uBACgBz9U,KAAKusV,YAAYj6I,EAAY,KAAMu/H,EAAOjsI,IAAI,SAAU4mJ,EAASpjV,GAC7DutM,OAAOC,MAAM1O,OAAOC,IAAIC,SAASC,MAAMokJ,kBAC3D,WACA,sBACwB91I,OAAOC,MAAM1O,OAAOC,IAAIC,SAASC,MAAMqkJ,oBAG3Cp6I,EAAW9vM,KAAKqvU,GAChB7xU,KAAKi3E,iBACzB,aACA,sBACA,sBACoB0/H,OAAOC,MAAM1O,OAAOC,IAAIC,SAASC,MAAMqkJ,oBAG3D,UACgBC,EAAoBA,EAAoBhrV,OAAS,GAAGirV,eAAiB,CAAC/a,GACtE7xU,KAAKi3E,iBACrB,YACYj3E,KAAKq7E,MAAM,WAAvB,GACYr7E,KAAK6sV,uBAETC,aAAc,SAAtB,KACA,8DACA,0DACA,6BACA,6BACA,kCAEA,aACA,YACY9sV,KAAKi3E,eACLj3E,KAAKq7E,MAAM,WAAvB,sBACYr7E,KAAK6sV,uBAGjB,gCACA,2BACA,eAEA,OADA,WACA,EAIA,OADA,KACA,GAGA,uBACA,QAIA,OAHA,0CACA,8BAEA,GAEQE,aAAc,SAAtB,KACiBloV,EAGDo7L,OAChB,2FACA,qBACoB,IAApB,sCACoB,EACpB,wBACwB,MAAxB,CAC4B,MAA5B,cAC4B,GAA5B,aAVgB3zJ,EAAG,KAiBX0gT,iBAAR,WACYhtV,KAAK0gM,KAAKkS,WAAtB,EACY5yM,KAAKsjM,WAAjB,GACYtjM,KAAKssV,qBAETW,kBAAR,WACYjtV,KAAK0gM,KAAKkS,WAAtB,EACY5yM,KAAKssV,qBAETY,uBAAR,YACYltV,KAAK0gM,KAAKkS,WAAtB,EACY5yM,KAAKsjM,WAAjB,QACYtjM,KAAKssV,qBAETA,kBAAR,WACYtsV,KAAKmtV,iBAAiB/oT,QAAQ,SAA1C,GACgBpkC,KAAKw4E,SAArB,EACgBx4E,KAAKksV,YAArB,YACgBlsV,KAAK0gM,KAAK2rJ,aAA1B,cACgBrsV,KAAKotV,YAAcptV,KAAK0gM,KAAK2rJ,aAAersV,KAAK0gM,KAAKkS,WAAa5yM,KAAK0gM,KAAKmS,WAC7F,YACA,kBACgB8D,OAAOC,MAAM/5L,EAAK1U,SAG1BglV,eAAR,WACY,OAAOltJ,OAAOwC,KAAK,kDAA/B,4DAEQ4qJ,SAAU,WAClB,eAEA,uBACA,gBACA,0CACgBrtV,KAAKw4E,SAArB,EACgBx4E,KAAKksV,YAArB,qCACgBlsV,KAAK0gM,KAAK2rJ,aAA1B,cACgBrsV,KAAKotV,YAAcptV,KAAK0gM,KAAK2rJ,aAAersV,KAAK0gM,KAAKkS,WAAa5yM,KAAK0gM,KAAKmS,WAC7F,YACA,kBACgB8D,OAAOC,MAAM/5L,EAAK1U,UAG1B2kG,OAAQ,WACJ9sG,KAAKmsV,gBAAjB,oCACYnsV,KAAK6sV,sBACjB,8BAEA,cACY7sV,KAAKosV,sBAAjB,8BACYpsV,KAAK6sV,sBACjB,8BAEQA,oBAAR,WACY,IAAIzgB,EAAhB,GACYpsU,KAAKmsV,gBAAgBhhT,SAAQ,SAAUhnC,GACnC,IAAImpV,EAApB,KACA,sCACoB,IAAI9vV,EAAxB,mBACA,QACwBA,KAAxB,EACwBooM,GAAxB,KACwB0nJ,IAAxB,UAIYttV,KAAKq7E,MAAM,UAAvB,KAGIjqD,SAAJ,CACQm8T,oBAAR,WAEY,OADZ,0BAC+BhnV,KAAI,SAAUpC,GAC7C,OACA,eACA,QACA,gBACA,qBACA,wCACwB,MAAO,CACH3G,KAA4B,IAAtBs/M,EAAM0wI,YAAoB1wI,EAAMt/M,KAAOs/M,EAAMt/M,KAAO,IAAMs/M,EAAM2wI,WAAa,MAA8B,IAAvB3wI,EAAM0wI,YAAqBtlJ,OAAOC,IAAIC,SAASC,MAAMw+B,UAAY3+B,OAAOC,IAAIC,SAASC,MAAMu9B,WAAjN,IACA,QACA,gBACA,uBACA,yBACA,6BACA,mCAOI5iJ,QAAJ,WACQhjF,KAAKssV,sBCjQE,I,OAXC,YACd,ICTW,WAAa,IAAIj7L,EAAIrxJ,KAASyyG,EAAG4+C,EAAIhgF,eAAmB4D,EAAGo8E,EAAI9wE,MAAMtL,IAAIw9B,EAAG,OAAOx9B,EAAG,MAAM,CAACyP,YAAY,mBAAmB,CAACzP,EAAG,aAAa,CAACrlE,MAAM,CAAC,KAAOyhJ,EAAI7rI,KAAK,MAAQ6rI,EAAI57I,KAAKi4U,aAAa,MAAQ,IAAI,OAAQ,IAAO,CAACz4Q,EAAG,MAAM,CAACyP,YAAY,WAAWgG,YAAY,CAAC,eAAe,OAAO,cAAc,SAAS,CAACzV,EAAG,WAAW,CAACyP,YAAY,KAAKgG,YAAY,CAAC,eAAe,OAAO,MAAQ,SAAS96E,MAAM,CAAC,WAAY,EAAK,YAAcyhJ,EAAI57I,KAAKk4U,2BAA2Br0Q,MAAM,CAACp7E,MAAOmzJ,EAAc,WAAE/qJ,SAAS,SAAUu9L,GAAMxyC,EAAIiyC,WAAWO,GAAK/mH,WAAW,eAAe,CAAC7H,EAAG,IAAI,CAACyP,YAAY,0BAA0B90E,MAAM,CAAC,KAAO,UAAUmgE,KAAK,WAAWshF,EAAIn9E,GAAG,KAAMm9E,EAAc,WAAEp8E,EAAG,IAAI,CAACyP,YAAY,+BAA+B90E,MAAM,CAAC,KAAO,UAAUwY,GAAG,CAAC,MAAQipI,EAAI27L,kBAAkBj9Q,KAAK,WAAWshF,EAAIl9E,QAAQ,GAAGk9E,EAAIn9E,GAAG,KAAKe,EAAG,MAAM,CAACyP,YAAY,0BAA0B,CAACzP,EAAG,MAAM,CAACyP,YAAY,kBAAkB,CAACzP,EAAG,KAAK,CAACyP,YAAY,cAAc,CAAC2sE,EAAIn9E,GAAGm9E,EAAI39E,GAAG29E,EAAI57I,KAAKm4U,qBAAqBv8L,EAAIn9E,GAAG,KAAKe,EAAG,MAAM,CAACyP,YAAY,0BAA0B,CAACzP,EAAG,aAAa,CAACzK,WAAW,CAAC,CAAChtE,KAAK,UAAUoqF,QAAQ,YAAY1pF,MAAOmzJ,EAAW,QAAEv0E,WAAW,YAAYjpB,IAAI,gBAAgBjkD,MAAM,CAAC,gBAAgByhJ,EAAI+7L,aAAahlU,GAAG,CAAC,cAAcipI,EAAIg8L,SAAS,qBAAqB,SAAS/6Q,GAAQ++E,EAAI+7L,YAAY96Q,GAAQ,uBAAuB,SAASA,GAAQ++E,EAAI+7L,YAAY96Q,KAAU,CAAC2C,EAAG,cAAc,CAACphB,IAAI,YAAYw9F,EAAI19E,GAAI09E,EAAuB,qBAAE,SAASltJ,EAAKzC,GAAO,OAAOuzE,EAAG,mBAAmB,CAACz2E,IAAIkD,GAAO,CAACuzE,EAAG,WAAW,CAAClF,KAAK,SAAS,CAACkF,EAAG,IAAI,CAACyP,YAAY,cAAcjK,MAAM,UAAYt2E,EAAKu/B,SAAS2tH,EAAIn9E,GAAG,KAAKe,EAAG,MAAM,CAACyP,YAAY,oBAAoB90E,MAAM,CAAC,MAAQzL,EAAK3G,OAAO,CAAC6zJ,EAAIn9E,GAAGm9E,EAAI39E,GAAGvvE,EAAK3G,WAAW6zJ,EAAIn9E,GAAG,KAAKe,EAAG,KAAKo8E,EAAI19E,GAAIxvE,EAAe,YAAE,SAAS24M,EAAM4e,GAAQ,OAAOzmJ,EAAG,KAAK,CAACz2E,IAAIk9N,EAAOh3I,YAAY,kCAAkC,CAACzP,EAAG,IAAI,CAACyP,YAAY,cAAcjK,MAAM,CAAC,UAAYqiI,EAAMp5K,OAAQ,CAACmqT,YAAgC,IAApB/wI,EAAMgxI,eAAoBz8L,EAAIn9E,GAAG,KAAKe,EAAG,OAAO,CAACwF,MAAM,CAACozQ,YAAgC,IAApB/wI,EAAMgxI,YAAiBl+U,MAAM,CAAC,MAAQktM,EAAMt/M,OAAO,CAAC6zJ,EAAIn9E,GAAG,iDAAiDm9E,EAAI39E,GAAexxE,MAAZ46M,EAAMt/M,KAAgBs/M,EAAMlX,GAAGkX,EAAMt/M,MAAM,oDAAoD6zJ,EAAIn9E,GAAG,KAAKe,EAAG,MAAMo8E,EAAIn9E,GAAG,KAAKe,EAAG,MAAM,CAACyP,YAAY,uBAAuB,CAAC2sE,EAAIn9E,GAAGm9E,EAAI39E,GAAGopI,EAAMlX,OAAOv0C,EAAIn9E,GAAG,KAAKe,EAAG,IAAI,CAACyP,YAAY,sDAAsD90E,MAAM,CAAC,GAAKktM,EAAMlX,IAAIx9K,GAAG,CAAC,MAAQ,SAASkqD,GAAQ,OAAO++E,EAAIosL,UAAU3gI,EAAO34M,YAAc,IAAI,MAAK,IAAI,IAAI,KAAKktJ,EAAIn9E,GAAG,KAAKe,EAAG,MAAM,CAACyP,YAAY,mBAAmB,CAACzP,EAAG,KAAK,CAACyP,YAAY,cAAc,CAAC2sE,EAAIn9E,GAAGm9E,EAAI39E,GAAG29E,EAAI57I,KAAKs4U,gCAAgC18L,EAAIn9E,GAAG,KAAKe,EAAG,MAAM,CAACyP,YAAY,0BAA0B2sE,EAAI19E,GAAI09E,EAAmB,iBAAE,SAASltJ,EAAKzC,GAAO,OAAOuzE,EAAG,MAAM,CAACz2E,IAAIkD,EAAMgjF,YAAY,iBAAiB,CAACzP,EAAG,MAAM,CAACyP,YAAY,uBAAuB,CAACzP,EAAG,KAAK,CAACyP,YAAY,sBAAsB2sE,EAAI19E,GAAIxvE,EAAmB,gBAAE,SAAS24M,EAAM4e,GAAQ,OAAOzmJ,EAAG,KAAK,CAACz2E,IAAIk9N,EAAOh3I,YAAY,wBAAwB,CAACzP,EAAG,IAAI,CAACyP,YAAY,cAAcjK,MAAM,CAAC,UAAYqiI,EAAMp5K,OAAQ,CAACmqT,YAAgC,IAApB/wI,EAAMgxI,eAAoBz8L,EAAIn9E,GAAG,KAAKe,EAAG,OAAO,CAACyP,YAAY,kBAAkBjK,MAAM,CAACozQ,YAAgC,IAApB/wI,EAAMgxI,YAAiBl+U,MAAM,CAAC,MAAQktM,EAAMt/M,OAAO,CAAC6zJ,EAAIn9E,GAAGm9E,EAAI39E,GAAexxE,MAAZ46M,EAAMt/M,KAAgBs/M,EAAMlX,GAAGkX,EAAMt/M,SAAS6zJ,EAAIn9E,GAAG,KAAKe,EAAG,MAAMo8E,EAAIn9E,GAAG,KAAKe,EAAG,MAAM,CAACyP,YAAY,uBAAuB,CAAC2sE,EAAIn9E,GAAGm9E,EAAI39E,GAAGopI,EAAMlX,OAAOv0C,EAAIn9E,GAAG,KAAKe,EAAG,IAAI,CAACyP,YAAY,yDAAyDt8D,GAAG,CAAC,MAAQ,SAASkqD,GAAQ,OAAO++E,EAAIy7L,aAAahwI,EAAO34M,YAAc,UAAS,OAAOktJ,EAAIn9E,GAAG,KAAKe,EAAG,0BAA0B,CAACrlE,MAAM,CAAC,KAAO,UAAUmgE,KAAK,UAAU,CAACkF,EAAG,SAAS,CAAC7sD,GAAG,CAAC,MAAQipI,EAAIvkD,SAAS,CAACukD,EAAIn9E,GAAGm9E,EAAI39E,GAAG29E,EAAI57I,KAAKu4U,YAAY,OAAO38L,EAAIn9E,GAAG,KAAKe,EAAG,SAAS,CAAC7sD,GAAG,CAAC,MAAQipI,EAAIywD,KAAK,CAACzwD,EAAIn9E,GAAGm9E,EAAI39E,GAAG29E,EAAI57I,KAAKsiN,mBAAmB,IAAI,KAC7yH,IDWpB,EACA,KACA,WACA,M,SEbFk2H,GAAqBxqQ,QAAU,SAAArE,GAC3BA,EAAIlG,UAAU+0Q,GAAqBzwV,KAAMywV,KAG9BA,UCNsL,GCoCrM,CACA,iBACA,OACA,SACA,WACA,aAGA,KARA,WASA,OACA,+BACA,0LACA,gIACA,wGAGA,SACA,WADA,SACA,GACA,kBACA,CACA,mCACA,oCACA,kCACA,wCACA,iBCzCe,I,OAXC,YACd,ICTW,WAAa,IAAI58L,EAAIrxJ,KAASyyG,EAAG4+C,EAAIhgF,eAAmB4D,EAAGo8E,EAAI9wE,MAAMtL,IAAIw9B,EAAG,OAAOx9B,EAAG,MAAM,CAACyP,YAAY,aAAajK,MAAM,CAAC,aAAc42E,EAAI68L,QAAQvsV,QAAU,IAAI,CAACszE,EAAG,cAAc,CAACrlE,MAAM,CAAC,OAAS,QAAQ,UAAW,EAAM,QAAU,UAAUyhJ,EAAI19E,GAAI09E,EAAW,SAAE,SAASltJ,EAAKzC,GAAO,OAAOuzE,EAAG,mBAAmB,CAACz2E,IAAIkD,GAAO,CAACuzE,EAAG,KAAK,CAACyV,YAAY,CAAC,eAAe,QAAQ,aAAa,OAAO,gBAAgB,QAAQ,OAAS,QAAQ,SAAW,SAAS,CAACzV,EAAG,eAAe,CAACyV,YAAY,CAAC,OAAS,SAAS96E,MAAM,CAAC,aAAa,iBAAiByhJ,EAAI19E,GAAIxvE,EAAe,YAAE,SAASgqV,EAASzsV,GAAO,OAAOuzE,EAAG,MAAM,CAACz2E,IAAIkD,GAAO,CAAqB,cAAnBysV,EAASC,SAAwBn5Q,EAAG,KAAK,CAACyP,YAAY,0BAA0B,CAAEypQ,EAAiB,SAAEl5Q,EAAG,MAAM,CAACyP,YAAY,qCAAqC,CAAC2sE,EAAIn9E,GAAG,yBAAyBm9E,EAAI39E,GAAG29E,EAAI57I,KAAK04U,EAASC,WAAWD,EAASC,UAAU,0BAA0B/8L,EAAIl9E,KAAKk9E,EAAIn9E,GAAG,KAAKe,EAAG,KAAK,CAACwF,MAAM,CAAC,GAAK0zQ,EAASC,SAAS,YAAYD,EAASC,UAAU1jQ,YAAY,CAAC,MAAQ,QAAQ2mE,EAAI19E,GAAIw6Q,EAAmB,YAAE,SAASrxI,EAAMp7M,GAAO,OAAOuzE,EAAG,KAAK,CAACz2E,IAAIkD,EAAMgjF,YAAY,YAAY,CAACzP,EAAG,MAAM,CAACyP,YAAY,yBAAyBpgE,MAAM,CAAGuyF,MAAMimG,EAAMuxI,YAAa,CAACh9L,EAAIn9E,GAAG,6BAA6Bm9E,EAAI39E,GAAG29E,EAAI57I,KAAKqnM,EAAMt+M,MAAMs+M,EAAMt+M,KAAK,8BAA8B6yJ,EAAIn9E,GAAG,KAAKe,EAAG,MAAM,CAACyP,YAAY,yBAAyBpgE,MAAM,CAAGuyF,MAAMimG,EAAMuxI,YAAa,CAACh9L,EAAIn9E,GAAG,6BAA6Bm9E,EAAI39E,GAAiB,UAAdopI,EAAMt+M,IAC75Cs+M,EAAM5+M,MAAMggD,SAAS,YAAcmzG,EAAI57I,KAAKqnM,EAAM5+M,OAASmzJ,EAAI57I,KAAOqnM,EAAW,MAAI,YAEnFA,EAAMwxI,OAASj9L,EAAI57I,KAAKqnM,EAAMwxI,QAAUj9L,EAAI57I,KAAKqnM,EAAM5+M,QAAU4+M,EAAM5+M,OAAQ,mCAAkC,KAAKmzJ,EAAIl9E,UAAS,IAAI,QAAO,IAAI,KACvJ,IDQpB,EACA,KACA,KACA,M,SEbFo6Q,GAAU9qQ,QAAU,SAAArE,GAChBA,EAAIlG,UAAUq1Q,GAAU/wV,KAAM+wV,KAGnBA,UCN4L,GC6C3M,CACE,KAAF,kBACE,MAAF,CACI,UAAJ,CACM,KAAN,MACM,UAAN,IAGE,KARF,WASI,MAAJ,CACM,KAAN,0BACM,YAAN,IAGE,QAAF,CACI,eADJ,SACA,GACM,KAAN,eAEI,UAJJ,SAIA,GACM,KAAN,wCC7Ce,I,OAXC,YACd,ICTW,WAAa,IAAIl9L,EAAIrxJ,KAASyyG,EAAG4+C,EAAIhgF,eAAmB4D,EAAGo8E,EAAI9wE,MAAMtL,IAAIw9B,EAAG,OAAOx9B,EAAG,MAAM,CAACyP,YAAY,aAAa,CAACzP,EAAG,cAAc,CAACphB,IAAI,gBAAgB62B,YAAY,CAAC,OAAS,SAAS96E,MAAM,CAAC,MAAQyhJ,EAAIm9L,UAAU7sV,OAAQ,EAAI,QAAU,QAAQ,UAAW,EAAM,qBAAqB,QAAQymB,GAAG,CAAC,OAASipI,EAAIo9L,iBAAiBp9L,EAAI19E,GAAI09E,EAAa,WAAE,SAAS2yL,EAAMtiV,GAAO,OAAOuzE,EAAG,mBAAmB,CAACz2E,IAAIkD,GAAO,CAACuzE,EAAG,eAAe,CAACyV,YAAY,CAAC,OAAS,SAAS96E,MAAM,CAAC,aAAa,iBAAiB,CAAEo0U,GAASA,EAAMnS,QAAUmS,EAAMnS,OAAOlwU,OAAS,EAAGszE,EAAG,MAAMo8E,EAAI19E,GAAIqwQ,EAAY,QAAE,SAAS7/U,GAAM,OAAO8wE,EAAG,MAAM,CAACz2E,IAAI2F,EAAK3F,IAAIkmF,YAAY,aAAa,CAACzP,EAAG,MAAM,CAACyP,YAAY,aAAa,CAACzP,EAAG,MAAM,CAACyP,YAAY,YAAYpgE,MAAM,CAAEuyF,MAAO1yG,EAAKkqV,YAAa,CAACh9L,EAAIn9E,GAAGm9E,EAAI39E,GAAG29E,EAAI57I,KAAKtR,EAAK3F,SAAS6yJ,EAAIn9E,GAAG,KAAKe,EAAG,MAAM,CAACyP,YAAY,YAAYpgE,MAAM,CAAEuyF,MAAO1yG,EAAKkqV,YAAa,CAACh9L,EAAIn9E,GAAGm9E,EAAI39E,GAAG29E,EAAI57I,KAAKtR,EAAKjG,QAAQ,IAAImzJ,EAAI39E,GAAGvvE,EAAK8gB,WAAWosI,EAAIn9E,GAAG,KAAM/vE,EAAU,MAAE8wE,EAAG,MAAM,CAACyP,YAAY,cAAc2sE,EAAI19E,GAAIxvE,EAAU,OAAE,SAAS6iE,GAAO,OAAOiO,EAAG,MAAM,CAACz2E,IAAIwoE,EAAMxoE,IAAIkmF,YAAY,eAAe,CAACzP,EAAG,MAAM,CAACyP,YAAY,YAAYpgE,MAAM,CAAEuyF,MAAO7vC,EAAMqnR,YAAa,CAACh9L,EAAIn9E,GAAGm9E,EAAI39E,GAAG29E,EAAI57I,KAAKuxD,EAAMxoE,SAAS6yJ,EAAIn9E,GAAG,KAAKe,EAAG,MAAM,CAACyP,YAAY,YAAYpgE,MAAM,CAAEuyF,MAAO7vC,EAAMqnR,YAAa,CAACh9L,EAAIn9E,GAAGm9E,EAAI39E,GAAG29E,EAAI57I,KAAKuxD,EAAM9oE,QAAQ,IAAImzJ,EAAI39E,GAAG1M,EAAM/hD,cAAa,GAAGosI,EAAIl9E,UAAS,GAAGk9E,EAAIl9E,KAAKk9E,EAAIn9E,GAAG,KAAKe,EAAG,MAAM,CAACyP,YAAY,kBAAkB,CAAC2sE,EAAIn9E,GAAGm9E,EAAI39E,GAAG29E,EAAI57I,KAAKi5U,sBAAsBr9L,EAAIn9E,GAAG,KAAM8vQ,GAASA,EAAM2K,WAAa3K,EAAM2K,UAAUhtV,OAAS,EAAGszE,EAAG,MAAMo8E,EAAI19E,GAAIqwQ,EAAe,WAAE,SAAS7/U,GAAM,OAAO8wE,EAAG,MAAM,CAACz2E,IAAI2F,EAAK3F,IAAIkmF,YAAY,aAAa,CAACzP,EAAG,MAAM,CAACyP,YAAY,aAAa,CAACzP,EAAG,MAAM,CAACyP,YAAY,YAAYpgE,MAAM,CAAEuyF,MAAO1yG,EAAKkqV,YAAa,CAACh9L,EAAIn9E,GAAGm9E,EAAI39E,GAAG29E,EAAI57I,KAAKtR,EAAK3F,SAAS6yJ,EAAIn9E,GAAG,KAAKe,EAAG,MAAM,CAACyP,YAAY,YAAYpgE,MAAM,CAAEuyF,MAAO1yG,EAAKkqV,YAAa,CAACh9L,EAAIn9E,GAAGm9E,EAAI39E,GAAG29E,EAAI57I,KAAKtR,EAAKjG,QAAQ,IAAImzJ,EAAI39E,GAAGvvE,EAAK8gB,WAAWosI,EAAIn9E,GAAG,KAAM/vE,EAAU,MAAE8wE,EAAG,MAAM,CAACyP,YAAY,cAAc2sE,EAAI19E,GAAIxvE,EAAU,OAAE,SAAS6iE,GAAO,OAAOiO,EAAG,MAAM,CAACz2E,IAAIwoE,EAAMxoE,IAAIkmF,YAAY,eAAe,CAACzP,EAAG,MAAM,CAACyP,YAAY,YAAYpgE,MAAM,CAAEuyF,MAAO7vC,EAAMqnR,YAAa,CAACh9L,EAAIn9E,GAAGm9E,EAAI39E,GAAG29E,EAAI57I,KAAKuxD,EAAMxoE,SAAS6yJ,EAAIn9E,GAAG,KAAKe,EAAG,MAAM,CAACyP,YAAY,YAAYpgE,MAAM,CAAEuyF,MAAO7vC,EAAMqnR,YAAa,CAACh9L,EAAIn9E,GAAGm9E,EAAI39E,GAAG29E,EAAI57I,KAAKuxD,EAAM9oE,QAAQ,IAAImzJ,EAAI39E,GAAG1M,EAAM/hD,cAAa,GAAGosI,EAAIl9E,UAAS,GAAGk9E,EAAIl9E,QAAQ,MAAK,GAAGk9E,EAAIn9E,GAAG,KAAMm9E,EAAIm9L,WAAan9L,EAAIm9L,UAAU7sV,OAAO,EAAGszE,EAAG,KAAK,CAACyP,YAAY,0BAA0BgG,YAAY,CAAC,IAAM,SAAS2mE,EAAI19E,GAAI09E,EAAa,WAAE,SAASltJ,EAAKzC,GAAO,OAAOuzE,EAAG,KAAK,CAACz2E,IAAI2F,EAAKs2E,MAAM,CAACr5C,OAAQiwH,EAAIu9L,aAAeltV,GAAO0mB,GAAG,CAAC,MAAQ,SAASkqD,GAAQ,OAAO++E,EAAIw9L,UAAUntV,UAAa,GAAG2vJ,EAAIl9E,MAAM,KACloF,IDWpB,EACA,KACA,WACA,M,SEbF26Q,GAAgBrrQ,QAAU,SAAArE,GACtBA,EAAIlG,UAAU41Q,GAAgBtxV,KAAMsxV,KAGzBA,UCAA,SAASC,MCET,SAASC,GAAUrvV,GAC9BK,KAAKytH,IAAM9tH,EAAQ8tH,IACnBztH,KAAKqwC,kBDDT0+S,GAAQlwV,UAAUupB,GAAK,SAAUI,EAAO3Y,EAAS9P,GAC7C,IAAIkvV,EAAKjvV,KAAKsyG,aAAetyG,KAAKsyG,WAAa,IAS/C,OARK28O,EAAGzmU,KAAQymU,EAAGzmU,GAAS,IAE5BymU,EAAGzmU,GAAOhmB,KAAK,CACXgmB,MAAOA,EACP3Y,QAASA,EACT9P,QAASA,GAAWC,OAGjBA,MAGX+uV,GAAQlwV,UAAU4pB,IAAM,SAAUD,EAAO3Y,GACrC,IAAIo/U,EAAKjvV,KAAKsyG,aAAetyG,KAAKsyG,WAAa,IAQ/C,OAPI28O,EAAGzmU,KACqB,GAApBymU,EAAGzmU,GAAO7mB,QAAgBkO,UAAgBo/U,EAAGzmU,GACjDymU,EAAGzmU,GAASymU,EAAGzmU,GAAOhX,QAAO,SAAU3B,GACnC,OAAOA,EAAQA,SAAWA,MAI3B7P,MAGX+uV,GAAQlwV,UAAUqqB,QAAU,SAAUV,GAClC,IAAIymU,EAAKjvV,KAAKsyG,WAAW9pF,KAAWxoB,KAAKsyG,WAAa,IACtD,GAAK28O,EAAL,CACA,IAAI95U,EAAO,GAAG7R,MAAMlG,KAAKqJ,UAAW,GAEpCwoV,EAAG9jT,SAAQ,SAAUt7B,GACjBA,EAAQA,QAAQrM,MAAMqM,EAAQ9P,QAASoV,QCxB/C65U,GAAUnwV,UAAUwxC,gBAAkB,WAClC,IAAIxH,EAAO7oC,KAAKytH,IAAIp3F,wBAChB8R,EAqBR,SAAS+mT,EAAqBrhV,GAC1B,IAAIs6B,EAAS,CAACt6B,EAAEgnI,WAAYhnI,EAAEinI,WAC9B,GAAsB,MAAlBjnI,EAAEo7B,aAAsB,CACxB,IAAIkmT,EAAYD,EAAqBrhV,EAAEo7B,cACvCd,EAAO,IAAMgnT,EAAU,GACvBhnT,EAAO,IAAMgnT,EAAU,GAE3B,OAAOhnT,EA5BM+mT,CAAqBlvV,KAAKytH,KACvCztH,KAAKovV,QAAUjnT,EAAO,GACtBnoC,KAAKqvV,OAASlnT,EAAO,GACrBnoC,KAAKsvV,SAAWzmT,EAAKxX,MACrBrxB,KAAKuvV,UAAY1mT,EAAKpV,QAM1Bu7T,GAAUnwV,UAAU44E,QAAU,WAC1Bz3E,KAAKkwH,GAAGD,UACRjwH,KAAKwvV,UAAYxvV,KAAKwvV,YDcnB,SAAwB7mQ,GAC3B,IAAIh9D,EAAQg9D,EAAI9pF,UAEhB,IAAK,IAAI2jB,KADTmmE,EAAI9pF,UAAY,IAAIkwV,GACHpjU,EACTA,EAAM7sB,eAAe0jB,KACrBmmE,EAAI9pF,UAAU2jB,GAAQmJ,EAAMnJ,IAGpCmmE,EAAI9pF,UAAUgH,YAAc8iF,EAC5BA,EAAIv7C,WAAa2hT,GCpBrBU,CAAeT,IC/BA,gBAAUrmQ,EAAK+mQ,GAC1B,IAAIC,EAAehnQ,EAAI9pF,UACvB,SAAS+wV,KAIT,IAAK,IAAIptU,KAHTotU,EAAQ/wV,UAAY6wV,EAAQ7wV,UAC5B8pF,EAAI9pF,UAAY,IAAI+wV,EAEHD,EACTA,EAAa7wV,eAAe0jB,KAC5BmmE,EAAI9pF,UAAU2jB,GAAQmtU,EAAantU,IAI3CmmE,EAAI9pF,UAAUgH,YAAc8iF,EAC5BA,EAAIv7C,WAAasiT,GCoHN,QACXG,sBAzHJ,SAA+BrhV,EAAI+jC,EAAGC,EAAGzvC,EAAGlC,GACxCb,KAAK8vV,kBAAkBthV,GAAM,IAAIsiM,QAAQ5mC,KAAK,CAC1CrnG,QAAQ,EACRzxB,MAAO,CACHmB,EAAGA,EACHC,EAAGA,EACHnhB,MAAOtuB,EACP0wB,OAAQ5yB,GAEZyjB,MAAO,CACHsrB,KAAM,WAEV2gE,OAAO,IAEXvwG,KAAK0hD,MAAMphD,IAAIN,KAAK8vV,kBAAkBthV,KA4GtCuhV,iBAhGJ,SAA0BvhV,EAAI+jC,EAAGC,EAAGzvC,EAAGlC,EAAGmvV,GACtChwV,KAAKiwV,QAAQzhV,GAAM,IAAIsiM,QAAQ/9E,MAAM,CACjCzuG,MAAO,CACH7N,MAAOzW,KAAKyW,MACZ87B,EAAGA,EACHC,EAAGA,EACHkhB,GAAIs8R,EAAOz9S,EACXohB,GAAIq8R,EAAOx9S,EACXnhB,MAAOtuB,EACP0wB,OAAQ5yB,EACRo5F,OAAQl3F,EACRm3F,QAASr5F,GAEb0vG,OAAO,IAEXvwG,KAAKiwV,QAAQzhV,GAAIkX,OACjB1lB,KAAK0hD,MAAMphD,IAAIN,KAAKiwV,QAAQzhV,KAiF5B0hV,gBAtEJ,SAAyB1hV,EAAI+jC,EAAGC,EAAGzvC,EAAGlC,GAClCb,KAAKmwV,YAAY3hV,GAAM,IAAIsiM,QAAQluG,KAAK,CACpC//B,QAAQ,EACRv+C,MAAO,CACHtf,KAAM,GACNutC,EAAGA,EAAIxvC,EAAI,EACXyvC,EAAGA,EAAI3xC,EAAI,EAAI,EACfs5G,SAAU,OACV2G,SAAU,GACVvd,UAAW,UAEfgN,OAAO,IAEXvwG,KAAKmwV,YAAY3hV,GAAIkX,OACrB1lB,KAAK0hD,MAAMphD,IAAIN,KAAKmwV,YAAY3hV,KAyDhC4hV,kBA9CJ,SAA2B5hV,EAAI+jC,EAAGC,EAAGzvC,EAAGlC,GACpCb,KAAKqwV,cAAc7hV,GAAM,IAAIsiM,QAAQ5mC,KAAK,CACtCrnG,QAAQ,EACRzxB,MAAO,CACHmB,EAAGA,EACHC,EAAGA,EACHnhB,MAAOtuB,EACP0wB,OAAQ5yB,GAEZyjB,MAAO,CACHsrB,KAAM,MAEV2gE,OAAQ,IAEZvwG,KAAKqwV,cAAc7hV,GAAIkX,OACvB1lB,KAAK0hD,MAAMphD,IAAIN,KAAKqwV,cAAc7hV,KAgClC8hV,gBArBJ,SAAyBz5O,EAAOtkE,EAAGC,EAAGzvC,EAAGlC,GACrCb,KAAK0hD,MAAMphD,IAAI,IAAIwwM,QAAQ5mC,KAAK,CAC5B94H,MAAO,CACHmB,EAAGA,EAAI,EACPC,EAAGA,EAAI3xC,EAAI,GACXwwB,MAAOtuB,EAAI,GACX0wB,OAAQ,GAEZnP,MAAO,CACHsrB,KAAMinE,GAEVtG,OAAO,OC5HXggP,IAAa,EACbt1D,GAAgB,K,+YCYL,SAASu1D,GAAe7wV,GAEnCqvV,GAAU5xV,KAAK4C,KAAML,GAErBK,KAAKyW,MAAQ9W,EAAQ8W,MACrBzW,KAAK25M,QAAUh6M,EAAQg6M,QACvB35M,KAAKywV,cAAgB9wV,EAAQ8wV,cAC7BzwV,KAAK0wV,gBAAkB/wV,EAAQ+wV,kBAAmB,EAElD1wV,KAAK2wV,SACL3wV,KAAKq/E,QAQTmxQ,GAAe3xV,UAAU+xV,OAAS,WACnB5wV,KAAK2/R,KAAO,EACZ3/R,KAAK6wV,UAChB7wV,KAAK2/R,MAAQ,EACb3/R,KAAK8wV,aACL9wV,KAAK+wV,gBAOTP,GAAe3xV,UAAUmyV,QAAU,WACpBhxV,KAAK2/R,KAAO,EACZ3/R,KAAKixV,UAChBjxV,KAAK2/R,MAAQ,EACb3/R,KAAK8wV,aACL9wV,KAAK+wV,gBAOTP,GAAe3xV,UAAUqyV,UAAY,SAAU3uU,GAC3C,IAAKA,EAAM,MAAM,IAAIvf,MAAM,yCAE3BhD,KAAKkwH,GAAGv3F,UAAUlV,OAElBzjB,KAAKmxV,QAAU5uU,EACfviB,KAAKoxV,wBACLpxV,KAAK8wV,aACL,IAAK,IAAI7zV,EAAI,EAAGA,EAAIslB,EAAK5gB,OAAQ1E,IACT,GAAhBslB,EAAKtlB,GAAGsE,MACZvB,KAAKqxV,iBAAiB9uU,EAAKtlB,IAE/B+C,KAAKkwH,GAAGv3F,UAAUr3B,QAClBtB,KAAKkpB,QAAQ,aAAa,CACtB+mU,QAAQjwV,KAAKiwV,QACbqB,SAAStxV,KAAKmxV,WAStBX,GAAe3xV,UAAU0yV,cAAgB,SAAU/iV,GAC/C,OAAOxO,KAAKmxV,QAAQ3/U,QAAO,SAAAnU,GAAA,OAAKA,EAAEmR,IAAMA,KAAI,IAMhDgiV,GAAe3xV,UAAU2yV,QAAU,SAAU7xD,GACzC3/R,KAAK2/R,KAAKA,EACV3/R,KAAK8wV,aACL9wV,KAAK+wV,eAOTP,GAAe3xV,UAAU4yV,WAAa,SAAUlvU,GAAM,WAClDviB,KAAKggO,UAAUz9M,EACf,IACImvU,EADAP,EAAQnxV,KAAKmxV,QAAQ3/U,QAAO,SAAAnU,GAAA,OAAe,GAAVA,EAAEkE,QAEvCghB,EAAKq1H,MAAMzsG,QAAQ,SAAU38B,EAAIvR,GAC7B,IAAI00V,EAAmB3xV,KAAK8vV,kBAAkBthV,GAC1CojV,EAAa5xV,KAAKmwV,YAAY3hV,GAC9BozT,EAAQ5hU,KAAKiwV,QAAQzhV,GACrBqjV,EAAc7xV,KAAKqwV,cAAc7hV,GACjC3J,EAAM0d,EAAKA,KAAKhlB,EAAEN,GAClBiB,EAAQ,GACR24G,EAAQ,UACZ+qN,GAASA,EAAMp8S,OACf2rU,EAAQhmT,SAAQ,SAACw3B,GACVA,EAAOn0D,IAAIA,IACVkjV,EAAG/uR,EAAO+uR,OAGlBE,GAAcA,EAAWpsU,OACzBqsU,GAAeA,EAAYrsU,OACvB3gB,GAAc,KAAPA,IACP3G,EAAQ2G,EACRgyG,EAAQ72G,KAAK8xV,YAAYjtV,EAAI6sV,IAEjCE,EAAW3+U,KAAK,CACZqR,MAAO,CACHtf,KAAM9G,KAGdyzV,EAAiB1+U,KAAK,CAClBqR,MAAO,CACHsrB,KAAMinE,MAGhBp4G,KAAKuB,OAGPA,KAAK+xV,kBAAkBxvU,EAAKq1H,OAAOzsG,SAAQ,SAAA38B,GACvC,IAAIozT,EAAQ,EAAKquB,QAAQzhV,GACzBojV,EAAa,EAAKzB,YAAY3hV,GAC9BqjV,EAAc,EAAKxB,cAAc7hV,GAEjCozT,GAASA,EAAMl8S,OACfksU,GAAcA,EAAWlsU,OACzBmsU,GAAeA,EAAYnsU,WAQnC8qU,GAAe3xV,UAAUizV,YAAc,SAAUjtV,EAAI6sV,GAEjD,IAAIr5T,EAASq5T,EAAG,EAehB,OAbI7sV,EAAe,EAATwzB,EACE,UACDxzB,EAAe,EAATwzB,EACL,UACDxzB,EAAe,EAATwzB,EACL,UACDxzB,EAAe,EAATwzB,EACL,UACDxzB,EAAe,EAATwzB,EACL,UAEA,WAShBm4T,GAAe3xV,UAAUiyV,WAAa,WAClC,IAAIl9R,EAAS5zD,KAAK0hD,MAAM/O,sBAAsB3yC,KAAKsvV,SAAW,EAAGtvV,KAAKuvV,UAAY,GAClFvvV,KAAK0hD,MAAMzuC,KAAK,CACZ4R,MAAO,CAAC7kB,KAAK2/R,KAAO,GAAI3/R,KAAK2/R,KAAO,IACpC/rO,SACAphC,SAAU,CAACxyB,KAAKsvV,SAAW,EAAI17R,EAAO,GAAI5zD,KAAKuvV,UAAY,EAAI37R,EAAO,MAE1E5zD,KAAKkpB,QAAQ,aAAc,CACvBy2Q,KAAM3/R,KAAK2/R,KACXsxD,QAASjxV,KAAKixV,QACdJ,QAAS7wV,KAAK6wV,WAQtBL,GAAe3xV,UAAUmzV,kBAAoB,SAAUrvR,KAOvD6tR,GAAe3xV,UAAU8xV,OAAS,WAC9B3wV,KAAKiwV,QAAU,GACfjwV,KAAK8vV,kBAAoB,GACzB9vV,KAAKmwV,YAAc,GACnBnwV,KAAKqwV,cAAgB,GAErBrwV,KAAKmxV,QAAU,KACfnxV,KAAKggO,UAAY,KACjBhgO,KAAKiyV,eAAiB,KACtBjyV,KAAKkyV,iBAAmB,GAExBlyV,KAAKixV,QAAU,EACfjxV,KAAK6wV,QAAU,GACf7wV,KAAK2/R,KAAO,GAMhB6wD,GAAe3xV,UAAUwgF,MAAQ,WDhNlB,IAAS6wC,EAAIz3B,ECkNxBz4F,KAAKkwH,GAAK4gF,QAAQnrM,KAAK3F,KAAKytH,KAC5BztH,KAAKkwH,GAAG5vH,IAAIN,KAAK0hD,MAAQ,IAAIovJ,QAAQzgF,ODnNjBH,ECqNflwH,KAAKkwH,GDrNcz3B,ECqNVz4F,KAAK0hD,MDpNnBwuE,EAAG9nG,GAAG,aAAa,SAAUI,GACzB+nU,IAAa,EACb,IAAIh+S,EAAI/pB,EAAM2E,SAAWsrE,EAAEjmE,SAAS,IAAM,GACtCggB,EAAIhqB,EAAM4E,SAAWqrE,EAAEjmE,SAAS,IAAM,GAC1CyoQ,GAAgB,CAAC1oP,EAAGC,MAExB09E,EAAG9nG,GAAG,WAAW,WACbmoU,IAAa,EACbt1D,GAAgB,QAEpB/qK,EAAG9nG,GAAG,aAAa,SAAUva,GACzB,GAAI0iV,GAAY,CACZ,IAAIh+S,EAAI1kC,EAAEsf,QACNqlB,EAAI3kC,EAAEuf,QAENimC,EAAK9gB,EAAI0oP,GAAc,GACvB3nO,EAAK9gB,EAAIyoP,GAAc,GAC3BxiM,EAAExlF,KAAK,CACHuf,SAAU,CAAC6gC,EAAIC,SCoM3BtzD,KAAKmyV,iBAELnyV,KAAKoyV,cAOT5B,GAAe3xV,UAAUwyV,iBAAmB,SAAU1uR,GAClD,IAAIn0D,EAAKm0D,EAAOn0D,GACZ+jC,EAAI1f,WAAW8vC,EAAOs/C,IAAMjiH,KAAKsvV,SAAWtvV,KAAKqyV,mBAAmB97T,KAAOv2B,KAAKqyV,mBAAmBhgU,OAAS,EAAIryB,KAAKqyV,mBAAmB97T,KACxIic,EAAI3f,WAAW8vC,EAAOu/C,IAAMliH,KAAKuvV,UAAYvvV,KAAKqyV,mBAAmBphV,IAAMjR,KAAKqyV,mBAAmB72R,QAAU,EAAIx7D,KAAKqyV,mBAAmBphV,IACzIlO,EAAI8vB,WAAW8vC,EAAO/lB,KAAK75C,GAC3BlC,EAAIgyB,WAAW8vC,EAAO/lB,KAAK/7C,GAE/BqgK,GAAK2uL,sBAAsBzyV,KAAK4C,KAAMwO,EAAI+jC,EAAGC,EAAGzvC,EAAGlC,GAEnD,IAAImvV,EAAS,CACTz9S,EAAG1f,WAAW8vC,EAAOqtR,OAAOz9S,GAC5BC,EAAG3f,WAAW8vC,EAAOqtR,OAAOx9S,IAEhC0uH,GAAK6uL,iBAAiB3yV,KAAK4C,KAAMwO,EAAI+jC,EAAGC,EAAGzvC,EAAGlC,EAAGmvV,GAEjD9uL,GAAKgvL,gBAAgB9yV,KAAK4C,KAAMwO,EAAI+jC,EAAGC,EAAGzvC,EAAGlC,GAE7CqgK,GAAKkvL,kBAAkBhzV,KAAK4C,KAAMwO,EAAI+jC,EAAGC,EAAGzvC,EAAGlC,GAE/C,IAAIg2G,EAAQ72G,KAAKgyV,kBAAkBrvR,GAE/Bk0C,GACAqqD,GAAKovL,gBAAgBlzV,KAAK4C,KAAM62G,EAAOtkE,EAAGC,EAAGzvC,EAAGlC,GAIpDb,KAAKsyV,yBAAyBtyV,KAAKiwV,QAAQzhV,GAAKm0D,IAQpD6tR,GAAe3xV,UAAU0zV,cAAgB,WACrCvyV,KAAKkyV,iBAAiB/mT,SAAQ,SAAAzU,GAC1BA,EAAOzjB,KAAK,CACRqR,MAAO,CACHurB,OAAQ,WAIpB7vC,KAAKkyV,iBAAmB,IA4B5B1B,GAAe3xV,UAAUuzV,WAAa,WAAY,WAC9CpyV,KAAKkwH,GAAG9nG,GAAG,cAAc,SAAAI,GACrBA,EAAM/E,OADwB,MAEjBmwC,OAAS,EAAKlS,MAAM/O,sBAAsBnqB,EAAM2E,QAAS3E,EAAM4E,SAF9C,UAEzBmlB,EAFyB,KAEtBC,EAFsB,KAG9B,GAAIhqB,EAAMgsF,WAAa,EAAG,CACtB,GAAI,EAAKmrL,MAAQ,EAAKkxD,QAAS,OAC/B,EAAKlxD,MAAQ,MACV,CACH,GAAI,EAAKA,MAAQ,EAAKsxD,QAAS,OAC/B,EAAKtxD,MAAQ,EAEjB,EAAKoxD,cACL,EAAKrvS,MAAMzuC,KAAK,CACZ2gD,cACA/uC,MAAO,CAAC,EAAK86Q,KAAO,GAAI,EAAKA,KAAO,IACpCntQ,SAAU,CAAChK,EAAM2E,QAAUolB,EAAG/pB,EAAM4E,QAAUolB,KAIlD,EAAKtpB,QAAQ,aAAc,CACvBy2Q,KAAM,EAAKA,KACXsxD,QAAS,EAAKA,QACdJ,QAAS,EAAKA,aAItB7wV,KAAKytH,IAAIv8G,iBAAiB,aAAa,SAACsX,GAEpC,GADA,EAAKkoU,iBAAmB,EAAKrgT,kBACK,QAA9B,EAAKspK,QAAQr1L,MAAMC,QAAmB,CACtC,GAAI,EAAKksU,cAEL,YADA,EAAKA,cAAcjoU,EAAO,EAAM,EAAKypU,gBAGzC,EAAKt4I,QAAQr1L,MAAMiS,KAAO/N,EAAM2E,QAAU,EAAKiiU,QAAU,GAAK,KAC9D,EAAKz1I,QAAQr1L,MAAMrT,IAAMuX,EAAM4E,QAAU,EAAKiiU,OAAS,GAAK,KAC5D,EAAK11I,QAAQ5nM,UAAY,OAAS,EAAKkgV,eAAel6I,MAAQ,WAAW7P,OAAOC,IAAIC,SAASC,MAAMmqJ,uBAAyB,EAAKP,eAAeP,GAAK,YAE1J,IAGPlB,GAAe3xV,UAAUkyV,YAAY,WACjC,IAEIW,EAFAnvU,EAAKvF,EAAEvV,MAAMzH,KAAKggO,WAClBmxH,EAAQnxV,KAAKmxV,QAAQ3/U,QAAO,SAAAnU,GAAA,OAAe,GAAVA,EAAEkE,QAEvCghB,EAAKq1H,MAAMzsG,QAAQ,SAAU38B,EAAIvR,GAC7B,IAAI00V,EAAmB3xV,KAAK8vV,kBAAkBthV,GAC1CojV,EAAa5xV,KAAKmwV,YAAY3hV,GAC9BozT,EAAQ5hU,KAAKiwV,QAAQzhV,GACrBqjV,EAAc7xV,KAAKqwV,cAAc7hV,GACjC3J,EAAM0d,EAAKA,KAAKhlB,EAAEN,GAClBiB,EAAQ,GACR24G,EAAQ,UACZ+qN,GAASA,EAAMp8S,OACf2rU,EAAQhmT,SAAQ,SAACw3B,GACVA,EAAOn0D,IAAIA,IACVkjV,EAAG/uR,EAAO+uR,OAGlBE,GAAcA,EAAWpsU,OAEzBqsU,GAAeA,EAAYrsU,OACvB3gB,GAAc,KAAPA,IACP3G,EAAQ2G,EACRgyG,EAAQ72G,KAAK8xV,YAAYjtV,EAAI6sV,IAE9B1xV,KAAK2/R,MAAM3/R,KAAKixV,SACfW,EAAWlsU,OAEfksU,EAAW3+U,KAAK,CACZqR,MAAO,CACHtf,KAAM9G,KAGdyzV,EAAiB1+U,KAAK,CAClBqR,MAAO,CACHsrB,KAAMinE,MAGhBp4G,KAAKuB,QAGXwwV,GAAe3xV,UAAU4zV,eAAiB,SAAS9vR,EAAOijI,GAAG,WACzD5lM,KAAKiyV,eAAiBtvR,EACtB3iE,KAAK25M,QAAQr1L,MAAMC,QAAU,OAE7B,IAAIxlB,EAAIiB,KAAKiyV,eAAe9xV,OAEpBH,KAAKmxV,QAAQ3/U,QAAO,SAAAnU,GAAA,OAAe,GAAVA,EAAEkE,MAAalE,EAAE8C,QAAUpB,KAC1DosC,SAAQ,SAAA9tC,GACN,EAAKgzV,cAAchzV,EAAEmR,IAAIyE,KAAK,CAC1BqR,MAAO,CACHurB,OAAQ,UACRsC,UAAW,KAGnB,EAAK+/S,iBAAiB1vV,KAAK,EAAK6tV,cAAchzV,EAAEmR,QAGpD,IAAI2/B,EAAMnuC,KAAKuxV,cAAcxyV,GAEdiB,KAAKuxV,cAAcpjT,EAAIhuC,QAElB8a,SAASzJ,QAAO,SAAAnU,GAAA,OAAKA,GAAK0B,KACzCosC,SAAQ,SAAA38B,GACT,IAAIxP,EAAI,EAAKuyV,cAAc/iV,GAC3B,GAAGo3L,EACC,IAAI/uF,EAAM,eAENA,EAAM,UAEd73G,EAAEic,SAASkwB,SAAQ,SAAAgtC,GACf,EAAKk4Q,cAAcl4Q,GAAKllE,KAAK,CACzBqR,MAAO,CACHurB,OAAQgnE,EACR1kE,UAAW,KAGnB,EAAK+/S,iBAAiB1vV,KAAK,EAAK6tV,cAAcl4Q,WAU1Dq4Q,GAAe3xV,UAAUyzV,yBAA2B,SAAU77U,EAAOksD,GAAQ,WACzElsD,EAAM2R,GAAG,aAAa,WAClB,EAAKqqU,eAAe9vR,GACpB,EAAKg3I,QAAQr1L,MAAMC,QAAU,QAC7B,EAAK2E,QAAQ,YAAa,CACtB04S,MAAOj/P,EACP7wC,UAAW,OAGnBrb,EAAM2R,GAAG,YAAY,WACjBpoB,KAAKiyV,eAAiBtvR,EACtB3iE,KAAK25M,QAAQr1L,MAAMC,QAAU,OAC7BvkB,KAAKuyV,gBACLvyV,KAAKkpB,QAAQ,WAAY,CACrB04S,MAAOj/P,EACP7wC,UAAW9xB,SAEhBA,OAMPwwV,GAAe3xV,UAAUuyV,sBAAwB,WAC7C,IAAI76T,EAAOgoB,IACPttC,EAAMstC,IACNlsB,EAAQ,EACRmpC,EAAS,EACbx7D,KAAKmxV,QAAQhmT,SAAQ,SAACw3B,EAAQjhE,GAC1B,GAAmB,GAAfihE,EAAOphE,KAAW,CAClB,IAAIgxC,EAAI1f,WAAW8vC,EAAOs/C,GACtBzvE,EAAI3f,WAAW8vC,EAAOu/C,GACtBn/G,EAAI8vB,WAAW8vC,EAAO/lB,KAAK75C,GAC3BlC,EAAIgyB,WAAW8vC,EAAO/lB,KAAK/7C,GAC3B0xC,EAAIhc,IAAMA,EAAOgc,GACjBC,EAAIvhC,IAAKA,EAAMuhC,GACfD,EAAIxvC,EAAIsvB,IAAOA,EAAQkgB,EAAIxvC,GAC3ByvC,EAAI3xC,EAAI26D,IAAQA,EAAShpB,EAAI3xC,OAIzCb,KAAKqyV,mBAAqB,CACtBphV,MACAohB,QACAmpC,SACAjlC,SAORi6T,GAAe3xV,UAAUszV,eAAiB,WACtC,IAAInyV,KAAK25M,QAAT,CAEA,IAAK72M,SAASy1F,cAAc,uBAAwB,CAEzC,qCACA,sFACA,qFACP,IAAIj0E,EAAQxhB,SAASiC,cAAc,SACnCuf,EAAM9V,GAAK,qBACX8V,EAAMvS,UAHNyS,oWAIA1hB,SAASy1F,cAAc,QAAQnzF,YAAYkf,GAG/CtkB,KAAK25M,QAAU72M,SAASiC,cAAc,OACtC/E,KAAK25M,QAAQr1L,MAAMC,QAAU,OAC7BvkB,KAAK25M,QAAQvoM,UAAY,yBACzBtO,SAASwiB,KAAKlgB,YAAYpF,KAAK25M,WAGnC62I,GAAe3xV,UAAUkzV,kBAAoB,SAAUn6M,GAGnD,IAFA,IAAI75I,EAAI,GACJL,EAAI,GAAG4F,MAAMlG,KAAKw6I,GACb36I,EAAI,EAAGA,EAAI+C,KAAKmxV,QAAQxvV,OAAQ1E,IAAK,CAC1C,IAAIy1V,EAAM1yV,KAAKmxV,QAAQl0V,GACnBoY,EAAM3X,EAAE+F,QAAQivV,EAAIlkV,IACxB,GAAG6G,GAAO,GAEN,GADA3X,EAAE2J,OAAOgO,EAAK,GACC,GAAZ3X,EAAEiE,OAAa,WAGtB5D,EAAEyE,KAAKkwV,EAAIlkV,IAEf,OAAOzQ,GAMXyyV,GAAe3xV,UAAU2wV,SAAW,WAChC1sV,SAASwiB,KAAKhgB,YAAYtF,KAAK25M,UAInCg5I,GAAQnC,GAAgBxB,I,mZCngBT,SAAS4D,GAAajzV,GACjCqvV,GAAU5xV,KAAK4C,KAAML,GACrBK,KAAK6yV,cAAgBlzV,EAAQkzV,gBAAiB,EAC9C7yV,KAAKq4B,SAAW14B,EAAQ04B,UAAU,EAClCr4B,KAAKq/E,QAuTF,SAASyzQ,GAAW50V,GACvB,IAAI2C,EAAIiH,KAAKq4C,MAAMjiD,EAAQ,IACvBb,EAAIa,EAAQ,GAChB,OAAQ2C,EAAI,GAAK,IAAM,IAAMA,EAAI,KAAOxD,EAAI,GAAK,IAAM,IAAMA,EAO1D,SAAS01V,GAAWl3T,GACvB,IAAI99B,EAAI,gBAAgBuQ,KAAKutB,GAC7B,IAAK99B,EAAG,MAAM,IAAIiF,MAAM,kDAAqD64B,GAFhD,SAGb99B,EAHa,GAGrB8C,GAHqB,WAGlBxD,EAHkB,KAI7B,OAAqB,GAAdq2B,SAAS7yB,GAAU6yB,SAASr2B,G,yHA/TvCu1V,GAAa/zV,UAAUwgF,MAAQ,WAC3Br/E,KAAKkwH,GAAK4gF,QAAQnrM,KAAK3F,KAAKytH,KAC5B,IAAIxyD,EAAO,IAAI61I,QAAQx2I,KAAK,CACxBuI,QAAQ,EACRzxB,MAAO,CACHylB,GAAI,EACJN,GAAIv2D,KAAKuvV,UAAY,EACrBz4R,GAAI92D,KAAKsvV,SAAW,EACpBv4R,GAAI/2D,KAAKuvV,UAAY,GAEzBjrU,MAAO,CACHurB,OAAQ,aAGhB7vC,KAAKkwH,GAAG5vH,IAAI26D,IAUhB23R,GAAa/zV,UAAU++F,QAAU,SAAUr7E,EAAMogD,EAAQqwR,GAAQ,WAC7DhzV,KAAKk7S,QAAU34R,EACfviB,KAAK2iE,OAASA,EAGd3iE,KAAKizV,oBAGL,IAAIC,EAAW,GACXC,EAAa,GAuDjB,GA+MJ,SAAwB7sV,EAAUvG,GAC9B,IAAK,IAAI9C,EAAI,EAAGA,EAAI,KAASA,IACzBqJ,EAASlJ,KAAK2C,EAAS9C,GAvQ3Bm2V,EAAe,SAAAn2V,GACX,IAAIs+G,EAAW,EAAK83O,UAAUp2V,IAAMshD,IAChC+0S,EAAW,EAAK/wU,KAAKtlB,GACrBqsD,EAAM,EAENgqS,IACAhqS,EAAMgqS,EAAS/1V,EAAEiuC,QAAO,SAAC8d,EAAKvjD,GAAN,OAAcujD,GAAOz2B,WAAW9sB,IAAQ,KAAI,IAExE,IAAIwsC,EAAI,GAAK,EAAK+8S,SAAW,IAAM,GAAK,GAAKryV,EACzCu1C,EALM,GAKK,EAAK+8S,UAAY,EALtB,IAKkC,EAAIjmS,EAAMiyD,GAClDhlD,EAAK,EAAKg5R,UAAY,GAAK,EAAKA,UAAY,EANtC,IAMkDjmS,EAAMiyD,GAClE23O,EAAS1wV,KAAK,CAAC+vC,EAAGC,IAClB2gT,EAAW3wV,KAAK,CAAC+vC,EAAGgkB,OAGpBv2D,KAAKuzV,QACLvzV,KAAKuzV,QAAQtgV,KAAK,CACdm+B,MAAO,CACH0iB,OAAQo/R,MAIhBlzV,KAAKuzV,QAAU,IAAIziJ,QAAQ/mC,QAAQ,CAC/BlnG,QAAQ,EACRzxB,MAAO,CACH0iB,OAAQo/R,EACR5mN,OAAQ,GAEZhoH,MAAO,CACHsrB,KAAM,aAGd5vC,KAAKkwH,GAAG5vH,IAAIN,KAAKuzV,UAGjBvzV,KAAKwzV,UACLxzV,KAAKwzV,UAAUvgV,KAAK,CAChBm+B,MAAO,CACH0iB,OAAQq/R,MAIhBnzV,KAAKwzV,UAAY,IAAI1iJ,QAAQ/mC,QAAQ,CACjClnG,QAAQ,EACRzxB,MAAO,CACH0iB,OAAQq/R,EACR7mN,OAAQ,GAEZhoH,MAAO,CACHsrB,KAAM,aAGd5vC,KAAKkwH,GAAG5vH,IAAIN,KAAKwzV,aAEhBxzV,KAAKyzV,IAAK,CAEXzzV,KAAKyzV,IAAM,IAAI3iJ,QAAQ5mC,KAAK,CACxB94H,MAAO,CACHmB,EAAG,EACHC,EAJE,EAKFnhB,MAAO,GACPoC,OAAQzzB,KAAKuvV,UAAY,EACzBxxV,EAAG,GAEPumB,MAAO,CACHsrB,KAAM,UACNC,OAAQ,MAEZ0gE,OAAQ,KAEZvwG,KAAKkwH,GAAG5vH,IAAIN,KAAKyzV,KACjBzzV,KAAK0zV,oBAET,IAAI73T,EAAO77B,KAAKotO,SACZvxM,GACA77B,KAAK2zV,aAAe3zV,KAAK6yV,cAAiB,KAAWE,GAAWl3T,GAChE77B,KAAK4zV,QAAQ/3T,EAAMm3T,IAEnBhzV,KAAK6zV,gBAAgB7zV,KAAK+kB,eAQlC6tU,GAAa/zV,UAAUi1V,SAAW,WAE9B,GADK9zV,KAAK+kB,eAAc/kB,KAAK+kB,aAAe,KACxC/kB,KAAK+kB,cAAgB/kB,KAAK2zV,cAA9B,CACA3zV,KAAK+kB,cAAgB/kB,KAAKq4B,SAE1B,IAAIka,EAAIvyC,KAAK+kB,cAAgB/kB,KAAKsvV,SAAW,IAAM,GAAK,GACxDtvV,KAAKqjI,UAAY9wF,EACjBvyC,KAAKyzV,IAAIxgV,KAAK,CACVuf,SAAU,CAAC+f,EAAG,KAElBvyC,KAAK6zV,gBAAgB7zV,KAAK+kB,gBAM9B6tU,GAAa/zV,UAAUk1V,SAAW,WAE9B,GADK/zV,KAAK+kB,eAAc/kB,KAAK+kB,aAAe,KACxC/kB,KAAK+kB,cAAgB,GAAzB,CACA/kB,KAAK+kB,cAAgB/kB,KAAKq4B,SAC1B,IAAIka,EAAIvyC,KAAK+kB,cAAgB/kB,KAAKsvV,SAAW,IAAM,GAAK,GACxDtvV,KAAKqjI,UAAY9wF,EACjBvyC,KAAKyzV,IAAIxgV,KAAK,CACVuf,SAAU,CAAC+f,EAAG,KAElBvyC,KAAK6zV,gBAAgB7zV,KAAK+kB,gBAS9B6tU,GAAa/zV,UAAU+0V,QAAU,SAAU/3T,EAAMm3T,GAC7C,GAAIhzV,KAAK+kB,aAAe/kB,KAAK2zV,cAAgBX,EAAQ,CACjD,IAAIzgT,EAAIwgT,GAAWl3T,IAAS77B,KAAKsvV,SAAW,IAAM,GAAK,GACvDtvV,KAAKqjI,UAAY9wF,EACjBvyC,KAAKyzV,IAAIxgV,KAAK,CACVuf,SAAU,CAAC+f,EAAG,KAElBvyC,KAAK6zV,gBAAgBd,GAAWl3T,SAEhC77B,KAAK6zV,gBAAgB7zV,KAAK+kB,eAOlC6tU,GAAa/zV,UAAUo0V,kBAAoB,WAQvC,IAPA,IAIIr7M,EAJAj4F,EAAS,GACT0zS,EAAY,GACZlwU,EAAQ,GAGRlc,EAAM,EAEDhK,EAAI,EAAGA,EAAI+C,KAAKk7S,QAAQv5S,OAAQ1E,IAAK,CAC1C,IAAIslB,EAAOviB,KAAKk7S,QAAQj+S,GACxB26I,EAAQr1H,EAAKq1H,MAIb,IAHA,IAAIr8B,EAAWv7G,KAAK2iE,OAAOnxD,QAAO,SAAAnU,GAAA,OAAe,GAAVA,EAAEkE,MAAaq2I,EAAMn0I,QAAQpG,EAAEmR,KAAO,KACxEjI,KAAI,SAAAlJ,GAAA,OAAKw1B,WAAWx1B,EAAEq0V,OACtBlmT,QAAO,SAAC8d,EAAKvjD,GAAN,OAAcujD,EAAMvjD,IAAK,GAC5BmB,EAAI,EAAGA,EAAIqb,EAAKA,KAAK5gB,OAAQuF,IAClCy4C,EAAOn9C,KAAKo1I,GACZy7M,EAAU7wV,KAAK+4G,GACfp4F,EAAM3gB,KAAK+f,EAAKA,KAAKrb,IAEzBD,GAAOsb,EAAKA,KAAK5gB,OAGrB,IAAS1E,EAAIgK,EAAKhK,EAAI,KAASA,IAC3B0iD,EAAOn9C,KAAKo1I,GACZy7M,EAAU7wV,KAAK+7C,KAGnB,IAAIy1S,EAAWh0V,KAAKk7S,QAAQl7S,KAAKk7S,QAAQv5S,OAAS,GAAG4gB,KAErDviB,KAAKotO,SAAW4mH,EAASA,EAASryV,OAAS,GAAGxD,EAG9C6B,KAAK2/C,OAASA,EACd3/C,KAAKqzV,UAAYA,EACjBrzV,KAAKuiB,KAAOY,GAMhByvU,GAAa/zV,UAAU60V,kBAAoB,WAAY,WAEnD1zV,KAAKyzV,IAAIrrU,GAAG,WAAW,WACnB,EAAK6rU,eAAgB,KAGzBj0V,KAAKkwH,GAAG9nG,GAAG,WAAW,WAClB,EAAK6rU,eAAgB,KAGzBj0V,KAAKkwH,GAAG9nG,GAAG,aAAa,SAAAI,GACpB,IAAIyyC,EAAO,EAAKq0R,SAAW,GACvBv6T,EAAMkmC,EAAO,EAAK04R,aAAe,GAAK,GAC1C,GAAK,EAAKM,cAAV,CACA,IAAI5gS,EAAK7qC,EAAM2E,QAAU,EAAK+mU,WAAW,GACrCC,EAAM,EAAKC,aAAa,GAAK/gS,EAMjC,GALI8gS,EAAM,IAAGA,EAAM,GACfA,EAAMp/T,IAAKo/T,EAAMp/T,GACrB,EAAK0+T,IAAIxgV,KAAK,CACVuf,SAAU,CAAC2hU,EAAK,KAEhB,EAAK9wN,WAAa8wN,EAAtB,CACA,EAAK9wN,UAAY8wN,EACjB,IAAIE,EAAqB,GAANF,EAAW,GAAKl5R,EAE/Bo5R,EADDvsV,KAAKinC,IAAIslT,EAAavsV,KAAK0tB,KAAK6+T,EAAa,EAAKh8T,UAAU,EAAKA,UAAUvwB,KAAKinC,IAAIslT,EAAavsV,KAAKq4C,MAAMk0S,EAAa,EAAKh8T,UAAU,EAAKA,UAC/HvwB,KAAK0tB,KAAK6+T,EAAa,EAAKh8T,UAAU,EAAKA,SAE3CvwB,KAAKq4C,MAAMk0S,EAAa,EAAKh8T,UAAU,EAAKA,SAE7D,EAAKw7T,gBAAgBQ,QAGzBr0V,KAAKkwH,GAAG9nG,GAAG,aAAa,SAAAI,GACpB,IAAIyyC,EAAO,EAAKq0R,SAAW,GACvBv6T,EAAMkmC,EAAO,EAAK04R,aAAe,GAAK,GACtCphT,EAAI/pB,EAAM2E,QAAU,EACpBolB,EAAIxd,IAAKwd,EAAIxd,GACjB,EAAKsuG,UAAY9wF,EACjB,EAAKkhT,IAAIxgV,KAAK,CACVuf,SAAU,CAAC+f,EAAG,KAElB,IAAI8hT,EAAmB,GAAJ9hT,EAAS,GAAK0oB,EAE7Bo5R,EADDvsV,KAAKinC,IAAIslT,EAAavsV,KAAK0tB,KAAK6+T,EAAa,EAAKh8T,UAAU,EAAKA,UAAUvwB,KAAKinC,IAAIslT,EAAavsV,KAAKq4C,MAAMk0S,EAAa,EAAKh8T,UAAU,EAAKA,UAC/HvwB,KAAK0tB,KAAK6+T,EAAa,EAAKh8T,UAAU,EAAKA,SAE3CvwB,KAAKq4C,MAAMk0S,EAAa,EAAKh8T,UAAU,EAAKA,SAE7D,EAAKw7T,gBAAgBQ,GACrB,EAAKJ,eAAgB,EACrB,EAAKC,WAAa,CAAC1rU,EAAM2E,QAAS3E,EAAM4E,SACxC,EAAKgnU,aAAe,CAAC7hT,EAAG,OAQhCqgT,GAAa/zV,UAAUg1V,gBAAkB,SAAU31V,GAC/C,IAAIX,EAAIyC,KAAKuiB,KAAKrkB,GACbX,IACDA,EAAI,CACAY,EAAG20V,GAAW50V,GACdX,EAAG,KAGRW,EAAM,IACT8B,KAAK+kB,aAAe7mB,EAEpB8B,KAAKkpB,QAAQ,aAAc,CACvB3G,KAAMhlB,EACNq6I,MAAO53I,KAAK2/C,OAAOzhD,IAAU,GAC7BwI,MAAgB,GAATxI,EACP0I,KAAM1I,GAAS8B,KAAK2zV,iBAK5BhB,GAAQC,GAAc5D,IC1OtB,IAAI,GAAJ,UACA,SAASsF,KACP,IAAF,iCACE,EAAF,SACE,IAAF,yBAEE,OADF,6CAGA,YCpFsM,GDqFtM,CACE92V,KAAM,aACN+kB,KAAM,WAAR,MAEI,OAAJ,GAAW,EAAX,CACM9M,KAAMyyL,OAAOC,IAAIC,SAASC,MAC1Bp6B,IAAK,KACLkjL,QAAS,KACT5uB,OAAQ,KACR/jH,WAAN,mDACM1sL,UAAW,KACXyiU,OAAQ,KACRC,SAAU,KACVC,SAAU,KACVC,QAAS,KACTC,SAAU,MAXhB,YAYA,MAZA,eAaA,MAbA,uBAcA,GAdA,wBAeA,GAfA,wBAgBA,GAhBA,wBAiBA,GAjBA,eAkBA,GAlBA,iBAmBA,UAnBA,iBAoBA,IApBA,eAqBA,GArBA,mBAsBA,IAtBA,oBAuBA,GAvBA,YAwBA,IAxBA,oBAyBA,GAzBA,kBA0BA,GA1BA,iBA2BA,MA3BA,qBA4BA,IA5BA,iBA6BA,yCA7BA,oBA8BA,CAEM,aAFN,SAEA,GACQ,OAAR,4BAjCA,aAoCA,IApCA,GAuCEhpU,MAAF,CACI0M,SAAJ,CACM92B,KAAN,OACMsqE,QAAN,IAGEmX,QAjDF,WAiDA,WACIhjF,KAAKwlB,KAAO,QAEZxlB,KAAKmiF,WAAU,WACb,GAAN,0CACM,GAAN,kBACQ,EAAR,gBACQ,EAAR,kBAGM,EAAN,sBACM,EAAN,wBACM,EAAN,0BACM,EAAN,0BACM,EAAN,0BACM,EAAN,kBACQsrC,IAAK,EAAb,UACQh3G,MAAO,GACPi6U,iBAAiB,IAEnB,EAAN,gBACQjjO,IAAK,EAAb,UACQolO,eAAe,EACfx6T,SAAR,aAEM,EAAN,uCACQ,EAAR,iBACQ,EAAR,mBACQ,EAAR,aAEM,EAAN,sCACQ,IAAIutK,EAAZ,WACQ,EAAR,6BACA,UACY,EAAZ,qBAIM,EAAN,qCACQ,EAAR,kBAEM,EAAN,uCACQ,EAAR,kCACQ,EAAR,oCAEM,EAAN,wBACA,SACA,WACQ,EAAR,sBAEA,GAGM,EAAN,yBACA,SACA,WACQ,EAAR,uBAEA,GAGM,EAAN,8CACQ,EAAR,sBAEM,EAAN,8CACQ,EAAR,sBAGM,EAAN,qCACQ,IAAIgvJ,EAAa,EACjBpsU,EAAMjG,KAAKhlB,EAAE4tC,SAAQ,SAA7B,GACsB,KAARhnC,GAAeA,IACjBywV,GAAc14R,OAAO/3D,OAGzB,EAAR,aACQ,EAAR,wBACQ,EAAR,4BACQ,EAAR,wBACQ,EAAR,8BAIEsnC,QAAS,CACPopT,QADJ,WACA,WACM70V,KAAKmxV,QAAQhmT,SAAQ,SAA3B,KACyB,GAAbhnC,EAAK5C,MACP,EAAV,2BAKI49M,eAAgB,WACd,KAAN,mDACM,KAAN,gBAGIC,eAAgB,WACpB,eACM,KAAN,mDACM,KAAN,iBAGI01I,MApBJ,SAoBA,gBACUlvJ,EAAKA,EACT3qL,EAASkwB,SAAQ,SAAvB,GACQ,EAAR,6BACchnC,GAAQ24M,EAAMtuM,KAChBsuM,EAAMlX,GAAKA,EACPkX,EAAM7hM,UAAY6hM,EAAM7hM,SAAStZ,OAAS,GAC5C,EAAd,4BAOIozV,cAlCJ,WAkCA,WACM/0V,KAAK0mN,aAAc,EACnB,IAAIvzJ,EAAQnzD,KACZA,KAAKqlN,YACX,qBAEQ,GADA,EAAR,kBACA,OAGU,OAFA,EAAV,oBACU,EAAV,aAGQ,EAAR,0BACU,EAAV,MACU,EAAV,MACU,EAAV,QACA,+BACY,EAAZ,YACc,GAAd,KACc,KAAd,UAGA,YACY,EAAZ,yBACA,QACc,EAAd,MACgB,EAAhB,KACgB,EAAhB,MAEc,EAAd,QACgB,EAAhB,KACgB,EAAhB,MAEA,UACc,EAAd,MACgB,EAAhB,KACgB,EAAhB,MAEA,UACgB,EAAhB,MACgB,EAAhB,UAKQ,EAAR,cACQ,EAAR,mBAEA,iBACQ,EAAR,mBAGI2vI,eArFJ,WAsFM,MAAO,CACLC,SAAUl7I,MAAMm7I,IAAcl7I,OAAO,uBACrC46I,WAAY,EACZ15C,QAAS,CACjB,CACU,KAAV,mBACU,MAAV,uBAMIvuF,aAlGJ,SAkGA,cACA,+DACQ3sN,KAAKm1V,UAAb,IAEMn1V,KAAK0mN,aAAc,EACnB1mN,KAAKijB,UACX,qBAEQ,GADA,EAAR,iBACA,aAGU,IAFA,IACV,0EACA,cACY,IAAZ,QACA,6CACc,OAAd,OAEA,cACc,EAAd,gCACgB,EAAhB,EACgB,EAAhB,KAIU,EAAV,8CACY,OAAZ,oBAGA,MACU,EAAV,gBAEU,EAAV,qBAGA,iBACQ,EAAR,mBAIImyU,cAxIJ,WA0IM,GADAp1V,KAAKq1V,UACDr1V,KAAKq1V,SAAW,EAAG,CACrBr1V,KAAK0mN,aAAc,EAC3B,iBACU1mN,KAAKggO,UAAf,uBAEQ,IAAIr9J,EAAS3iE,KAAK2iE,OAClB3iE,KAAK8xB,UAAUo/T,UAAUvuR,GACzB,IAAIpgD,EAAOviB,KAAKggO,UAChBhgO,KAAKulN,QAAQ3nH,QAAQr7E,EAAK24R,QAASv4O,GAAQ,KAI/C2yR,gBAtJJ,WAuJMt1V,KAAK0mN,aAAX,EACA,iBACQ1mN,KAAKggO,UAAb,uBAEM,IAAIz9M,EAAOviB,KAAKggO,UACZr9J,EAAS3iE,KAAK2iE,OAClB3iE,KAAK8xB,UAAU0/T,QAAQ,GACvBxxV,KAAKulN,QAAQ3nH,QAAQr7E,EAAK24R,QAASv4O,GAAQ,IAG7C4yR,cAjKJ,SAiKA,KAEM,IAAI5yR,EADJ3iE,KAAKw1V,YAAc9zV,EAEnB1B,KAAKmxV,QAAQhmT,SAAQ,SAA3B,GACYhnC,EAAKyhM,IAAMA,GAAmB,GAAbzhM,EAAK5C,OACxBohE,EAASx+D,MAKbnE,KAAK8xB,UAAU2gU,eAAe9vR,EAAQijI,IAExC6vJ,WA7KJ,WA6KA,WACMx1J,OACN,iCACQ,eAAR,mBAEA,qBACQ,EAAR,aACA,oBACA,gBACY,EAAZ,eAEY,EAAZ,mBAMIy1J,eA9LJ,WA+LM11V,KAAKw1V,aAAX,EACMx1V,KAAK8xB,UAAUygU,iBAEjBtvU,QAlMJ,WAmMM,OAAOg9K,OAAOwC,KAAK,kBAAmB,CACpCkzJ,QAAS/uI,aAAagvI,IACtBrtJ,KAAMvoM,KAAKm1V,aAGf9vI,UAxMJ,WAyMM,OAAOplB,OAAOwC,KAAK,oBAAqB,CACtCkkB,eAAgBC,aAAagvI,OAGjC1iT,QA7MJ,WA8MMlzC,KAAKm1V,UAAX,KACMn1V,KAAK2sN,iBAGTv7L,SAAF,CACI0uL,QAAJ,WACM,OAAN,yEE1Ze,I,OAXC,YACd,ICTW,WAAa,IAAIzuD,EAAIrxJ,KAASyyG,EAAG4+C,EAAIhgF,eAAmB4D,EAAGo8E,EAAI9wE,MAAMtL,IAAIw9B,EAAG,OAAOx9B,EAAG,MAAM,CAACzK,WAAW,CAAC,CAAChtE,KAAK,UAAUoqF,QAAQ,YAAY1pF,MAAOmzJ,EAAe,YAAEv0E,WAAW,gBAAgB4H,YAAY,eAAe,CAACzP,EAAG,MAAM,CAACyV,YAAY,CAAC,cAAc,SAAS,CAACzV,EAAG,MAAM,CAACyP,YAAY,wBAAwB,CAACzP,EAAG,MAAM,CAACyP,YAAY,cAAc2sE,EAAI19E,GAAI09E,EAAS,OAAE,SAASltJ,EAAKzC,GAAO,OAAOuzE,EAAG,MAAM,CAACz2E,IAAIkD,EAAMgjF,YAAY,kBAAkBjK,MAAM,CAAEr5C,OAAQ1/B,GAAS2vJ,EAAImkM,aAAcptU,GAAG,CAAC,UAAY,SAASkqD,GAAQ,OAAO++E,EAAIkkM,cAAcpxV,EAAKyhM,GAAIlkM,IAAQ,WAAa,SAAS4wE,GAAQ,OAAO++E,EAAIqkM,oBAAoB,CAACzgR,EAAG,OAAO,CAACyP,YAAY,WAAWgG,YAAY,CAAC,YAAY,QAAQ,QAAU,iBAAiB,CAAC2mE,EAAIn9E,GAAGm9E,EAAI39E,GAAGvvE,EAAKyhM,YAAW,GAAGv0C,EAAIn9E,GAAG,KAAKe,EAAG,MAAM,CAACyP,YAAY,KAAKgG,YAAY,CAAC,MAAQ,UAAU,YAAY,OAAO,OAAS,OAAO,cAAc,OAAO,eAAe,SAAS,CAAC2mE,EAAIn9E,GAAG,aAAam9E,EAAI39E,GAAG29E,EAAI57I,KAAKogV,oBAAoB,IAAIxkM,EAAI39E,GAAG29E,EAAIujM,WAAW,KAAM,mBAAmBvjM,EAAIn9E,GAAG,KAAKe,EAAG,MAAM,CAACphB,IAAI,MAAMjkD,MAAM,CAAC,GAAK,QAAQ,CAACyhJ,EAAIn9E,GAAG,eAAem9E,EAAIn9E,GAAG,KAAKe,EAAG,OAAOo8E,EAAIn9E,GAAG,KAAKe,EAAG,MAAM,CAACyP,YAAY,iBAAiB,CAACzP,EAAG,IAAI,CAACphB,IAAI,UAAU6wB,YAAY,gBAAgBjK,MAAM,CAAC,SAAW42E,EAAIykM,gBAAgBlmV,MAAM,CAAC,GAAK,aAAayhJ,EAAIn9E,GAAG,KAAKe,EAAG,IAAI,CAACphB,IAAI,SAAS6wB,YAAY,eAAejK,MAAM,CAAC,SAAW42E,EAAI0kM,iBAAiBnmV,MAAM,CAAC,GAAK,YAAYyhJ,EAAIn9E,GAAG,KAAKe,EAAG,MAAM,CAACphB,IAAI,KAAK6wB,YAAY,MAAM,CAACzP,EAAG,IAAI,CAACyP,YAAY,oCAAoC90E,MAAM,CAAC,GAAK,IAAIwY,GAAG,CAAC,MAAQ,SAASkqD,GAAQ,OAAO++E,EAAIn+G,cAAcm+G,EAAIn9E,GAAG,KAAKe,EAAG,IAAI,CAACyP,YAAY,qBAAqBgG,YAAY,CAAC,OAAS,WAAW96E,MAAM,CAAC,GAAK,IAAIwY,GAAG,CAAC,MAAQipI,EAAI8tD,kBAAkB9tD,EAAIn9E,GAAG,KAAKe,EAAG,iBAAiB,CAACyV,YAAY,CAAC,MAAQ,SAAS96E,MAAM,CAAC,UAAW,EAAM,WAAY,EAAM,OAASyhJ,EAAImtD,WAAW,gBAAgBntD,EAAIktD,UAAU,KAAO,OAAO,iBAAiBltD,EAAI2kM,aAAa,KAAO,OAAO,YAAc,QAAQ5tU,GAAG,CAAC,OAASipI,EAAIs7D,cAAcrzI,MAAM,CAACp7E,MAAOmzJ,EAAa,UAAE/qJ,SAAS,SAAUu9L,GAAMxyC,EAAI8jM,UAAUtxJ,GAAK/mH,WAAW,eAAeu0E,EAAIn9E,GAAG,KAAKe,EAAG,IAAI,CAACyP,YAAY,sBAAsBjK,MAAM,CAAC,UAAY42E,EAAIyuD,SAASp1H,YAAY,CAAC,OAAS,WAAW96E,MAAM,CAAC,GAAK,IAAIwY,GAAG,CAAC,MAAQipI,EAAI+tD,mBAAmB,GAAG/tD,EAAIn9E,GAAG,KAAKe,EAAG,MAAM,CAACphB,IAAI,MAAMjkD,MAAM,CAAC,GAAK,SAASyhJ,EAAIn9E,GAAG,KAAKe,EAAG,MAAM,CAACyV,YAAY,CAAC,QAAU,iBAAiB,CAACzV,EAAG,IAAI,CAACphB,IAAI,WAAW6wB,YAAY,qBAAqBjK,MAAM,CAAC,SAAW42E,EAAI4kM,iBAAiBrmV,MAAM,CAAC,GAAK,cAAcyhJ,EAAIn9E,GAAG,KAAKe,EAAG,IAAI,CAACyP,YAAY,iBAAiB2sE,EAAIn9E,GAAG,KAAKe,EAAG,OAAO,CAACphB,IAAI,WAAWjkD,MAAM,CAAC,GAAK,aAAa,CAACyhJ,EAAIn9E,GAAG,WAAWm9E,EAAIn9E,GAAG,KAAKe,EAAG,IAAI,CAACphB,IAAI,WAAW6wB,YAAY,sBAAsBjK,MAAM,CAAC,SAAW42E,EAAI6kM,iBAAiBtmV,MAAM,CAAC,GAAK,sBAC/qF,IDWpB,EACA,KACA,KACA,M,SEuIF,UACA,SAAS,KACP,IAAIumV,GAAQ,IAAI7rV,MAAO8rV,oBACvBD,EAAgB,GAARA,EAAa,IACrB,IAAIE,GAAU,IAAI/rV,MAAO83D,UAAY+zR,EAErC,OADgB,IAAI7rV,KAAK+rV,EAAmC,IAAxBzvI,aAAa4tI,SAAgB,GAAK,KAGxE,IAAI,GAAJ,KC9J2M,GD+J3M,CACEh3V,KAAM,kBACNmuB,MAAF,CACI0M,SAAJ,CACM92B,KAAN,OACMsqE,QAAN,IAGEtpD,KARF,WASI,MAAO,CACL9M,KAAMyyL,OAAOC,IAAIC,SAASC,MAC1BiuJ,WAAW,EACX9wU,KAAM,GACNwjT,kBAAmB,GACnButB,UAAW,IAAIjsV,KACf6qV,UAAW,GACXzuI,aAAa,EACb8vI,WAAY,GACZC,WAAY,KACZjC,SAAU,KACVC,SAAU,KACVE,SAAU,KACVpvI,QAAS,KACT8vI,QAAS,EACTG,aAAc,EACd7sB,WAAY,GACZ+tB,SAAU,GACVC,cAAe,GACfn4I,WAAYtE,eAAelyM,QAAQ,KAAM,KAAKA,QAAQ,KAAM,KAC5D4uV,MAAO,GACPhxJ,GAAI,GACJgvJ,WAAY,EACZqB,iBAAiB,EACjBC,iBAAiB,EACjB33I,UAAWxE,MAAM,IAAvB,8BACM88I,YAAajwI,aAAakwI,YAC1Bd,aAAc,CAEZn3I,aAFR,SAEA,GACU,OAAOhjL,EAAKumC,UAAY,GAAlC,cAKE4gB,QA5CF,WA4CA,WACIhjF,KAAK2F,OACL3F,KAAK+2V,YACL/2V,KAAKw0V,SAAWx0V,KAAKwgF,MAAgB,SACrCxgF,KAAKy0V,SAAWz0V,KAAKwgF,MAAgB,SACrCxgF,KAAK20V,SAAW30V,KAAKwgF,MAAgB,SACrCxgF,KAAKulN,QAAU,IAAIqtI,GAAa,CAC9BnlO,IAAKztH,KAAKwgF,MAAW,IACrBqyQ,eAAe,EACfx6T,SAAN,gBAEIr4B,KAAKulN,QAAQn9L,GAAG,cAAc,SAAlC,GACM,IAAIwsU,EAAa,EACjBpsU,EAAMjG,KAAKhlB,EAAE4tC,SAAQ,SAA3B,GACoB,KAARhnC,GAAeA,IACjBywV,GAAc14R,OAAO/3D,OAGzB,EAAN,aACM,EAAN,mBACM,EAAN,4BACM,EAAN,wBACM,EAAN,0BAEInE,KAAKy0V,SAASvjV,iBAAiB,SAAS,WACtC,EAAN,sBAEIlR,KAAK20V,SAASzjV,iBAAiB,SAAS,WACtC,EAAN,uBAGEu6B,QAAS,CACPopT,QADJ,WACA,WACM70V,KAAKmxV,QAAQhmT,SAAQ,SAA3B,GACyB,GAAbhnC,EAAK5C,MACP,EAAV,2BAKI49M,eAAgB,WACdn/M,KAAKm1V,UAAY,IAAI7qV,KAAKtK,KAAKm1V,UAAU/yR,UAAY,OACrDpiE,KAAK2F,QAGPy5M,eAAgB,WACTp/M,KAAK8/M,UACV9/M,KAAKm1V,UAAY,IAAI7qV,KAAKtK,KAAKm1V,UAAU/yR,UAAY,OACrDpiE,KAAK2F,SAEPmvV,MAnBJ,SAmBA,gBACUlvJ,EAAKA,EACT3qL,EAASkwB,SAAQ,SAAvB,GACQ,EAAR,6BACchnC,GAAQ24M,EAAMtuM,KAChBsuM,EAAMlX,GAAKA,EACPkX,EAAM7hM,UAAY6hM,EAAM7hM,SAAStZ,OAAS,GAC5C,EAAd,4BAMIgE,KAhCJ,WAgCA,WACM3F,KAAK0mN,aAAc,EACnB1mN,KAAKq1V,QAAU,EACf,IAAIliS,EAAQnzD,KACZA,KAAKqlN,YACX,qBACQ,EAAR,iBACA,QAIQ,EAAR,0BACU,EAAV,MACU,EAAV,MACU,EAAV,QACU,EAAV,yBACA,YACA,QACc,EAAd,MACgB,EAAhB,KACgB,EAAhB,MAEc,EAAd,QACgB,EAAhB,KACgB,EAAhB,MAEA,UACc,EAAd,MACgB,EAAhB,KACgB,EAAhB,MAEA,UACgB,EAAhB,MACgB,EAAhB,UAKQ,EAAR,kBACQ,EAAR,gBA/BU,EAAV,kBAiCA,iBACQ,EAAR,kBAEMrlN,KAAKg3V,gBAEPzB,cAAe,SAAnB,KACUv1V,KAAKw1V,aAAe9zV,IACxB1B,KAAKw1V,YAAc9zV,GACM,GAArB1B,KAAKw1V,aACPx1V,KAAK2oU,WAAa3oU,KAAK42V,MAAMl1V,GAAOlE,KACpCwC,KAAK02V,SAAW12V,KAAK42V,MAAMl1V,GAAOkkM,KAElC5lM,KAAK2oU,WAAa,GAClB3oU,KAAK02V,SAAW,IAGlB12V,KAAK4lM,GAAKA,EACV5lM,KAAKg3V,iBAEPD,UA5FJ,WA4FA,WACM92J,OACN,iCACQ,eAAR,mBAEA,qBACQ,EAAR,aACA,oBACA,gBACY,EAAZ,eAEY,EAAZ,mBAKI+2J,aA5GJ,WA4GA,WACMh3V,KAAKgpU,kBAAoB,GACzBhpU,KAAK0mN,aAAc,EACnB1mN,KAAKijB,UACX,qBACQ,IAAR,GACU,SAAV,iDACU,WAAV,EACU,QAAV,CACA,CACY,KAAZ,mBACY,MAAZ,mBAIQ,EAAR,iBACA,iCACA,SACY,EAAZ,WACc,QAAd,CACA,CACgB,KAAhB,GACgB,MAAhB,OAKU,EAAV,4CACU,EAAV,+CAEQ,EAAR,kBAEA,iBACQ,EAAR,mBAGIg0U,aAhJJ,WAgJA,WAEM,GADAj3V,KAAKq1V,UACDr1V,KAAKq1V,SAAW,EAAG,CACrBr1V,KAAK0mN,aAAc,EACnB,IAAI/jJ,EAAS3iE,KAAKy2V,WAClB,GAAIz2V,KAAKm2M,UAAW,CAGlB,IAFA,IACIx0M,EAASoxV,GAAW/yV,KAAKm2M,UAAU+kG,QAAQ,GAAG34R,KAAKviB,KAAKm2M,UAAU+kG,QAAQ,GAAG34R,KAAK5gB,OAAhG,MACA,cACY,IAAIk6B,EAAOi3T,GAAW71V,GACZ+C,KAAKm2M,UAAU+kG,QAAQ,GAAG34R,KAAKhc,KAAI,SAAzD,GACc,OAAOpC,EAAKhG,KAE1B,cACc6B,KAAKm2M,UAAU+kG,QAAQ,GAAG34R,KAAK/f,KAAK,CAClCrE,EAAhB,EACgBZ,EAAhB,KAIUyC,KAAKm2M,UAAU+kG,QAAQ,GAAG34R,KAAKnb,MAAK,SAA9C,KACY,OAAO2rV,GAAW/nV,EAAE7M,GAAhC,WAEU6B,KAAKm2M,UAAU+kG,QAAQ,GAAG34R,KAAK4oB,SAAQ,SAAjD,GACY,EAAZ,mBACY,EAAZ,eACY,IAAZ,KACY,EAAZ,uBACc,EAAd,yBAEY,EAAZ,IACY,EAAZ,iDACc,IAAd,KACc,EAAd,uBACc,EAAd,qBACc,EAAd,kDACA,eACA,eACA,aACsB,EAAtB,YACsB,EAAtB,YACsB,EAAtB,YAEsB,EAAtB,6BACsB,EAAtB,6BACsB,EAAtB,gCAKc,EAAd,8BAIUnrC,KAAKgpU,kBAAoBhsT,EAAEvV,MAAMzH,KAAKw2V,YACtCx2V,KAAKs2V,WAAY,EACHt2V,KAAKm2M,UAAU+kG,QAA7B,IACI34R,EAAOviB,KAAKm2M,eAEZ5zL,EAAO,CACT0yU,SAAUl7I,MAAM/5M,KAAKm1V,WAAWn7I,OAAO,uBACvC46I,WAAY,EACZ15C,QAAS,CACrB,CACc,KAAd,mBACc,MAAd,sBAKQl7S,KAAKulN,QAAQ3nH,QAAQr7E,EAAK24R,QAASv4O,GAAQ,KAG/C1/C,QAzNJ,WA0NM,OAAOg9K,OAAOwC,KAAK,uBAAwB,CACzCkzJ,QAAS/uI,aAAagvI,IACtBrtJ,KAAMvoM,KAAKm1V,UACXvvJ,GAAI5lM,KAAK4lM,MAGbyf,UAhOJ,WAiOM,OAAOplB,OAAOwC,KAAK,oBAAqB,CACtCkkB,eAAgBC,aAAagvI,OAGjC1iT,QArOJ,WAsOMlzC,KAAKm1V,UAAX,KACMn1V,KAAK2F,SAGTyrB,SAAU,CACR0uL,QAAS,WACP,OACN,yEEpce,I,OAXC,YACd,ICTW,WAAa,IAAIzuD,EAAIrxJ,KAASyyG,EAAG4+C,EAAIhgF,eAAmB4D,EAAGo8E,EAAI9wE,MAAMtL,IAAIw9B,EAAG,OAAOx9B,EAAG,MAAM,CAACzK,WAAW,CAAC,CAAChtE,KAAK,UAAUoqF,QAAQ,YAAY1pF,MAAOmzJ,EAAe,YAAEv0E,WAAW,gBAAgB4H,YAAY,oBAAoBgG,YAAY,CAAC,cAAc,SAAS,CAACzV,EAAG,MAAM,CAACyP,YAAY,wBAAwB,CAACzP,EAAG,MAAM,CAACyP,YAAY,cAAc,CAAE2sE,EAAIwlM,YAAc,EAAG5hR,EAAG,MAAM,CAACyP,YAAY,kBAAkBjK,MAAM,CAAEr5C,QAA4B,GAApBiwH,EAAImkM,aAAoBptU,GAAG,CAAC,MAAQ,SAASkqD,GAAQ,OAAO++E,EAAIkkM,cAAc,IAAK,MAAM,CAAClkM,EAAIn9E,GAAG,aAAam9E,EAAI39E,GAAG29E,EAAI57I,KAAKyhV,YAAY,cAAc7lM,EAAIl9E,KAAKk9E,EAAIn9E,GAAG,KAAKm9E,EAAI19E,GAAI09E,EAAS,OAAE,SAASltJ,EAAKzC,GAAO,OAAOuzE,EAAG,MAAM,CAACz2E,IAAIkD,EAAMgjF,YAAY,kBAAkBjK,MAAM,CAAEr5C,OAAQ1/B,GAAS2vJ,EAAImkM,aAAcptU,GAAG,CAAC,MAAQ,SAASkqD,GAAQ,OAAO++E,EAAIkkM,cAAcpxV,EAAKyhM,GAAIlkM,MAAU,CAACuzE,EAAG,OAAO,CAACyP,YAAY,WAAWgG,YAAY,CAAC,YAAY,QAAQ,QAAU,iBAAiB,CAAC2mE,EAAIn9E,GAAGm9E,EAAI39E,GAAGvvE,EAAKyhM,aAAY,KAAKv0C,EAAIn9E,GAAG,KAAKe,EAAG,MAAM,CAACyP,YAAY,YAAY,CAACzP,EAAG,MAAM,CAACyP,YAAY,KAAKgG,YAAY,CAAC,YAAY,OAAO,OAAS,OAAO,cAAc,OAAO,eAAe,SAAS,CAAC2mE,EAAIn9E,GAAG,WAAWm9E,EAAI39E,GAAG29E,EAAI57I,KAAKogV,oBAAoB,IAAIxkM,EAAI39E,GAAG29E,EAAIujM,WAAa,KAAM,eAAevjM,EAAIn9E,GAAG,KAAKe,EAAG,MAAM,CAACyP,YAAY,MAAM,CAAE2sE,EAAIs3K,YAAct3K,EAAIqlM,SAAUzhR,EAAG,OAAO,CAACyV,YAAY,CAAC,QAAU,iBAAiB,CAAC2mE,EAAIn9E,GAAGm9E,EAAI39E,GAAG29E,EAAIs3K,YAAY,OAAOt3K,EAAIl9E,KAAKk9E,EAAIn9E,GAAG,KAAKe,EAAG,OAAO,CAACyV,YAAY,CAAC,QAAU,iBAAiB,CAAC2mE,EAAIn9E,GAAGm9E,EAAI39E,GAAG29E,EAAIqlM,aAAarlM,EAAIn9E,GAAG,KAAMm9E,EAAIs3K,YAAct3K,EAAIqlM,SAAUzhR,EAAG,OAAO,CAACyV,YAAY,CAAC,QAAU,iBAAiB,CAAC2mE,EAAIn9E,GAAG,OAAOm9E,EAAIl9E,SAASk9E,EAAIn9E,GAAG,KAAKe,EAAG,MAAM,CAACyV,YAAY,CAAC,QAAU,SAAS,WAAa,SAAS,CAACzV,EAAG,WAAW,CAACyV,YAAY,CAAC,OAAS,qBAAqB96E,MAAM,CAAC,KAAOyhJ,EAAI23K,kBAAkB33K,EAAIklM,WAAW,oBAAoB,CACxxD9iU,OAAQ,OACRu7H,WAAY,UACZn4C,MAAO,QACP,OAAS,QAAQ,CAAC5hC,EAAG,kBAAkB,CAACrlE,MAAM,CAAC,KAAO,WAAW,MAAQyhJ,EAAI57I,KAA2B,sBAAK,0BAA0B47I,EAAIn9E,GAAG,KAAKe,EAAG,kBAAkB,CAACrlE,MAAM,CAAC,MAAQyhJ,EAAI57I,KAAoB,eAAK,iBAAiBu/D,YAAYq8E,EAAIj9E,GAAG,CAAC,CAAC51E,IAAI,UAAUkH,GAAG,SAASoJ,GAAO,MAAO,CAACmmE,EAAG,OAAO,CAACo8E,EAAIn9E,GAAGm9E,EAAI39E,GAAG5kE,EAAMilM,IAAIvF,SAAW,eAAen9C,EAAIn9E,GAAG,KAAKe,EAAG,kBAAkB,CAACrlE,MAAM,CAAC,MAAQyhJ,EAAI57I,KAAoB,eAAK,iBAAiBu/D,YAAYq8E,EAAIj9E,GAAG,CAAC,CAAC51E,IAAI,UAAUkH,GAAG,SAASoJ,GAAO,MAAO,CAACmmE,EAAG,OAAO,CAACo8E,EAAIn9E,GAAGm9E,EAAI39E,GAAG5kE,EAAMilM,IAAI/uK,SAAW,eAAeqsH,EAAIn9E,GAAG,KAAKe,EAAG,kBAAkB,CAACrlE,MAAM,CAAC,MAAQyhJ,EAAI57I,KAAoB,eAAK,iBAAiBu/D,YAAYq8E,EAAIj9E,GAAG,CAAC,CAAC51E,IAAI,UAAUkH,GAAG,SAASoJ,GAAO,MAAO,CAACmmE,EAAG,OAAO,CAACo8E,EAAIn9E,GAAGm9E,EAAI39E,GAAG5kE,EAAMilM,IAAI1G,OAAS,gBAAgB,IAAI,GAAGh8C,EAAIn9E,GAAG,KAAKe,EAAG,MAAM,CAACyP,YAAY,iBAAiB,CAACzP,EAAG,MAAM,CAACyP,YAAY,MAAM,CAACzP,EAAG,IAAI,CAACyP,YAAY,oCAAoC90E,MAAM,CAAC,GAAK,IAAIwY,GAAG,CAAC,MAAQ,SAASkqD,GAAQ,OAAO++E,EAAIn+G,cAAcm+G,EAAIn9E,GAAG,KAAKe,EAAG,IAAI,CAACyP,YAAY,qBAAqBgG,YAAY,CAAC,OAAS,WAAW96E,MAAM,CAAC,GAAK,IAAIwY,GAAG,CAAC,MAAQipI,EAAI8tD,kBAAkB9tD,EAAIn9E,GAAG,KAAKe,EAAG,iBAAiB,CAACyV,YAAY,CAAC,MAAQ,SAAS96E,MAAM,CAAC,UAAW,EAAM,WAAY,EAAM,KAAO,OAAO,OAASyhJ,EAAImtD,WAAW,iBAAiBntD,EAAI2kM,aAAa,KAAO,OAAO,YAAc,QAAQ5tU,GAAG,CAAC,OAASipI,EAAI1rJ,MAAM2zE,MAAM,CAACp7E,MAAOmzJ,EAAa,UAAE/qJ,SAAS,SAAUu9L,GAAMxyC,EAAI8jM,UAAUtxJ,GAAK/mH,WAAW,eAAeu0E,EAAIn9E,GAAG,KAAKe,EAAG,IAAI,CAACyP,YAAY,sBAAsBjK,MAAM,CAAEjtE,UAAW6jJ,EAAIyuD,SAAUp1H,YAAY,CAAC,OAAS,WAAW96E,MAAM,CAAC,GAAK,IAAIwY,GAAG,CAAC,MAAQipI,EAAI+tD,mBAAmB,GAAG/tD,EAAIn9E,GAAG,KAAKe,EAAG,MAAM,CAACphB,IAAI,MAAMjkD,MAAM,CAAC,GAAK,SAASyhJ,EAAIn9E,GAAG,KAAKe,EAAG,MAAM,CAACyV,YAAY,CAAC,QAAU,iBAAiB,CAACzV,EAAG,IAAI,CAACphB,IAAI,WAAW6wB,YAAY,qBAAqBjK,MAAM,CAAEjtE,SAAU6jJ,EAAI4kM,iBAAkBrmV,MAAM,CAAC,GAAK,cAAcyhJ,EAAIn9E,GAAG,KAAKe,EAAG,IAAI,CAACyP,YAAY,iBAAiB2sE,EAAIn9E,GAAG,KAAKe,EAAG,OAAO,CAACphB,IAAI,WAAWjkD,MAAM,CAAC,GAAK,aAAa,CAACyhJ,EAAIn9E,GAAG,WAAWm9E,EAAIn9E,GAAG,KAAKe,EAAG,IAAI,CAACphB,IAAI,WAAW6wB,YAAY,sBAAsBjK,MAAM,CAAEjtE,SAAU6jJ,EAAI6kM,iBAAkBtmV,MAAM,CAAC,GAAK,sBACzkE,IDOpB,EACA,KACA,KACA,M,SEZF,CAACunV,GAAYC,IAAiBjsT,SAAQ,SAAAhnC,GAClCA,EAAKs/E,QAAU,SAAArE,GACXA,EAAIlG,UAAU/0E,EAAK3G,KAAM2G,OAIlB,ICgCX,GDhCW,IACXgzV,cACAC,oBC+BJ,SAASC,GAAU7kU,GACjB,GAAF,WACE,IAAI8kU,KAAK9jH,OAAO,CACdhhN,SAAUA,EACVjsB,IAAK,GACL02R,KAAM,iCACN90P,OAAQ,IAAImvT,KAAKC,OAAO,IAAK,IAC7B/mP,WAAW,IAEb,GAAF,aAEA,ICrDqM,GDqDrM,CACEhzG,KAAM,YACNmuB,MAAO,CACL0F,MAAO,CACL9vB,KAAM26D,OACN2P,QAAS,MAEXp4C,OAAQ,CACNlyB,KAAM26D,OACN2P,QAAS,KAEXgzH,QAAS,CACPt9L,KAAMuL,OACN++D,QAAS,qBAEXr5C,SAAU,CACRjxB,KAAML,MACN2qE,QAAS,WACP,MAAO,CAAC,WAAY,YAGxB2rR,WAAY,CACVj2V,KAAMuL,QAER2qV,aAAc,CACZl2V,KAAMuL,OACN++D,QAAS,qBAEXshJ,WAAY,CACV5rN,KAAMuL,OACN++D,QAAS,SAIbhH,MAAO,CACL6yR,YAAa,WACX13V,KAAK23V,qBAGTp1U,KAAM,WACJ,MAAO,CACL9M,KAAMyyL,OAAOC,IAAIC,SAASC,MAC1BuvJ,SAAU,GACVC,YAAa,GACbp8M,KAAM,GACNq8M,SAAU,GACVC,aAAc,GACdC,IAAK,GACLC,IAAK,GACLP,YAAa,GACbnxV,IAAK,GACL2xV,aAAc,GACdC,YAAa,GACbC,SAAU,GACVh8P,QAAS,GACTi8P,cAAc,EACdC,SAAS,EACTC,SAAU,GACVC,QAAQ,IAGZ/sT,QAAS,CACPgtT,SAAU,WACR,IAEIN,EACAC,EAHAjlS,EAAQnzD,KAKZs3V,KAAKh0Q,OACX,yDACA,WACQ,KAAR,mCACQ,KAAR,mCACQ,KAAR,6BAGQ,IAAR,mBACA,mBAEA,MACA,iBACY,GAAZ,iCACc,cAAd,EACc,OAAd,MACc,SAAd,QAGY,GAAZ,OACY,KAAZ,UAEY,EAAZ,uBASU,GAAV,iCACY,cAAZ,IAGU,EAAV,sBAGQ,GAAR,cACQ,GAAR,cACQ,KAAR,OAGQ,KAAR,4CACA,0CACY,GAAZ,iCACY,EAAZ,UAKY,EAAZ,0CACY,EAAZ,mCAQQ,GAAR,wBACU,IAAV,eACA,eACU,EAAV,qBAEU,GAAV,WATQ,SAAR,GACU,GAAV,UACU,EAAV,UAQU,CAAV,OAEA,aAIIo1Q,cAAe,SAAnB,GACM,IAAIvlS,EAAQnzD,KAEZA,KAAKo4V,SAASO,WAAWnmU,GAAU,SAAUkR,EAAQm+B,GACpC,aAAXn+B,GAAsC,OAAbm+B,EAAIyK,OACgB,OAA3CzK,EAAI+2R,UAAUC,iBAAiBC,UACjC3lS,EAAMykS,SAAW/1R,EAAI+2R,UAAUC,iBAAiBE,UAAY,IAC5D5lS,EAAM0kS,YAAch2R,EAAI+2R,UAAUI,iBAClC7lS,EAAM6kS,IAAMxlU,EAAS,GACrB2gC,EAAM8kS,IAAMzlU,EAAS,IAGrB2gC,EAAM8lS,mBAAmBzmU,EAAS,GAAIA,EAAS,SAKvD0mU,QAAS,SAAb,GACM,OAAO98U,EAAE5e,KAAKwK,QACpB,wBACA,iDAIIixV,mBAAoB,SAAxB,KACM,IAAI9lS,EAAQnzD,KACZigM,OACN,4CACQ,UAAR,EACQ,SAAR,IAEA,qBACQ,EAAR,4BACQ,EAAR,uDACQ,EAAR,iDACQ,EAAR,yBACQ,EAAR,iCACQ,EAAR,MACQ,EAAR,UAIIk5J,SAAU,WACRn5V,KAAKq7E,MAAM,aAAc,OAE3Bs8Q,iBAAkB,WACCptT,EAAE,mBAAnB,IACI4oB,EAAQnzD,KACa,KAArBA,KAAK03V,aAET13V,KAAKk4V,aAAapvO,OAAO9oH,KAAK03V,YAAYttT,QAAQ,SAAU1G,EAAQm+B,GACnD,aAAXn+B,GAAsC,OAAbm+B,EAAIyK,OAC/BnZ,EAAMolS,SAAW12R,EAAIu3R,KACrBjmS,EAAMklS,cAAe,OAI3BgB,cAAe,SAAnB,GAGwB,OAAdj9U,EAAEk9U,SAFMt5V,KAGJi5V,mBAAmB78U,EAAExG,SAASoiV,IAAK57U,EAAExG,SAASqiV,MAH1Cj4V,KAMJ43V,SAAWx7U,EAAE5e,KANTwC,KAOJ63V,YAAcz7U,EAAE6jU,QAPZjgV,KAQJg4V,IAAM57U,EAAExG,SAASoiV,IARbh4V,KASJi4V,IAAM77U,EAAExG,SAASqiV,KAGzBZ,GAAU,CAACj7U,EAAExG,SAASoiV,IAAK57U,EAAExG,SAASqiV,MAZ1Bj4V,KAaNw4V,QAAS,EAbHx4V,KAcNq4V,cAAe,GAEvBkB,cAAe,WAEb,IACI/mU,EADSxyB,KAAKuG,IAAIizV,iBAAiB,GACjB3kG,cAClB1hM,EAAQnzD,KAEZA,KAAKo4V,SAASO,WACpB,eACA,cACQ,GAAR,+BAIU,GAFA,EAAV,2BACU,EAAV,0BACA,8CAEY,IAAZ,+BAKA,2CACA,GACA,sCAEA,uCACA,GACA,kCAEA,2CACA,GACA,sCACY,EAAZ,qBAEY,EAAZ,oBACA,sCAEY,EAAZ,oBACA,wCACA,CAEA,gBACY,EAAZ,iCAEY,EAAZ,+BAEY,EAAZ,mCAEU,EAAV,oCAME31Q,QAAS,WACPpjE,WACJ,WACM,KAAN,YACA,WACA,KElTe,I,OAXC,YACd,ICTW,WAAa,IAAIyxI,EAAIrxJ,KAASyyG,EAAG4+C,EAAIhgF,eAAmB4D,EAAGo8E,EAAI9wE,MAAMtL,IAAIw9B,EAAG,OAAOx9B,EAAG,MAAM,CAACyP,YAAY,cAAc,CAACzP,EAAG,MAAM,CAACyP,YAAY,cAAcpgE,MAAO,cAAgB+sI,EAAIwtC,SAAU,CAAC5pH,EAAG,MAAM,CAAC3wD,MAAO,SAAW+sI,EAAIhgI,MAAf,aAA2CggI,EAAI59H,OAAS,MAAO7jB,MAAM,CAAC,GAAK,qBAAqB,CAACqlE,EAAG,MAAM,CAACyP,YAAY,eAAet8D,GAAG,CAAC,MAAQipI,EAAI8nM,YAAY9nM,EAAIn9E,GAAG,KAAKe,EAAG,MAAM,CAACyP,YAAY,cAAcjK,MAAM,CAAEg/Q,UAAWpoM,EAAIumM,WAAavmM,EAAIwmM,cAAe,CAAC5iR,EAAG,KAAK,CAACo8E,EAAIn9E,GAAGm9E,EAAI39E,GAAG29E,EAAIumM,aAAavmM,EAAIn9E,GAAG,KAAKe,EAAG,IAAI,CAACo8E,EAAIn9E,GAAGm9E,EAAI39E,GAAG29E,EAAIwmM,kBAAkBxmM,EAAIn9E,GAAG,KAAKe,EAAG,MAAM,CAACyP,YAAY,gBAAgBpgE,MAAO,cAAgB+sI,EAAIomM,cAAe,CAACxiR,EAAG,QAAQ,CAACzK,WAAW,CAAC,CAAChtE,KAAK,QAAQoqF,QAAQ,UAAU1pF,MAAOmzJ,EAAe,YAAEv0E,WAAW,gBAAgBltE,MAAM,CAAC,KAAO,QAAQuiE,SAAS,CAAC,MAASk/E,EAAe,aAAGjpI,GAAG,CAAC,MAAQ,SAASkqD,GAAWA,EAAO5qE,OAAOuiF,YAAqBonE,EAAIqmM,YAAYplR,EAAO5qE,OAAOxJ,aAAYmzJ,EAAIn9E,GAAG,KAAKe,EAAG,KAAK,CAACzK,WAAW,CAAC,CAAChtE,KAAK,OAAOoqF,QAAQ,SAAS1pF,MAAOmzJ,EAAgB,aAAEv0E,WAAW,iBAAiB4H,YAAY,iBAAiBpgE,MAAO,cAAgB+sI,EAAIomM,cAAepmM,EAAI19E,GAAI09E,EAAY,UAAE,SAASltJ,EAAKzC,GAAO,OAAOuzE,EAAG,KAAK,CAACz2E,IAAIkD,EAAM0mB,GAAG,CAAC,MAAQ,SAASkqD,GAAQ,OAAO++E,EAAIgoM,cAAcl1V,MAAS,CAAC8wE,EAAG,MAAM,CAAC9C,SAAS,CAAC,UAAYk/E,EAAI39E,GAAG29E,EAAI6nM,QAAQ/0V,OAAUktJ,EAAIn9E,GAAG,KAAKe,EAAG,OAAO,CAACo8E,EAAIn9E,GAAGm9E,EAAI39E,GAAGvvE,EAAK87U,iBAAgB,GAAG5uL,EAAIn9E,GAAG,KAAMm9E,EAAU,OAAEp8E,EAAG,SAAS,CAACyP,YAAY,aAAat8D,GAAG,CAAC,MAAQipI,EAAIkoM,gBAAgB,CAACloM,EAAIn9E,GAAG,aAAam9E,EAAI39E,GAAG29E,EAAI57I,KAAKwkN,YAAY,cAAc5oE,EAAIl9E,aAChgD,IDWpB,EACA,KACA,KACA,M,SEbFulR,GAAUj2Q,QAAU,SAAArE,GAChBA,EAAIlG,UAAUwgR,GAAUl8V,KAAMk8V,KAGnBA,UCNgM,GCmE/M,CACEl8V,KAAM,sBACNmuB,MAAF,CACI2tD,MAAJ,CACM/3E,KAAN,QAEIo4V,MAAJ,CACMp4V,KAAN,OAEIq4V,cAAJ,CACMr4V,KAAN,SAGEghB,KAAF,WACI,MAAO,CACLitB,IAAN,KACM9L,OAAN,UACMjuB,KAAN,0BACMokV,kBAAN,GACMvsJ,UAAN,CACQ,QAAR,kCACQ,QAAR,oCACQ,QAAR,oCAIEl8K,SAAU,CACR,cADJ,cAcEyzC,MAAF,CACI80R,MAAJ,CACM9pV,QADN,SACA,KACQ,KAAR,cAEA,SAEI+pV,cAPJ,SAOA,GACA,wDACA,wDACM55V,KAAK65V,kBAAoBz9U,IAG7BzD,QAAF,CAKI61L,QAAJ,YACM,GAAN,EAIQ,OAHmBpyL,EAAEiW,MAAM7gB,QAAO,SAA1C,GACU,MAAmB,mBAAZrN,EAAK3F,OAEM,GAAGN,MAAMiL,MAAM,KAAK,IAG5C67B,QAAJ,YACM,GAAN,EAIQ,OAHmB5oB,EAAEiW,MAAM7gB,QAAO,SAA1C,GACU,MAAmB,mBAAZrN,EAAK3F,OAEM,GAAGN,MAAMiL,MAAM,KAAK,KAI9CsiC,QAAF,CAGA,iBAHA,SAGA,GACA,iBACA,mBAEA,OADA,yCACA,GAGA,UAVA,SAUA,GACA,OACQ+wK,MAAO,CACL,KAAV,WACU,KAAV,mBACY,OAAZ,UAEU,SAAV,CACY,MAAZ,GAEU,SAAV,CACY,UAAZ,CACc,MAAd,YAGU,UAAV,CACY,MAAZ,UACY,SAAZ,EACY,UAAZ,cACc,IAAd,iEACc,GAAd,EACgB,OAAhB,QAKQG,MAAO,CACL,UAAV,CACY,MAAZ,EACY,UAAZ,CACc,MAAd,YAGU,cAAV,CACY,QAAZ,YAEU,UAAV,CACY,SAAZ,GAEU,SAAV,CACY,UAAZ,CACc,MAAd,YAGU,SAAV,GACU,IAAV,EACU,IAAV,KAEQhD,QAAS,CACP,MAAV,EACU,QAAV,OACU,YAAV,CACY,KAAZ,SAOU,UAAV,YACY,IAAZ,KACA,sDAKY,OAJA,EAAZ,qBACc,GAAd,mEAEY,GAAZ,wCAIQgC,OAAQ,CAAC,CACP,KAAV,MACU,OAAV,OACU,KAAV,mBACY,OAAZ,YAEU,KAAV,OACU,UAAV,CACY,MAAZ,6CACc,OAAd,EACc,MAAd,yBACA,CACc,OAAd,EACc,MAAd,2BAGU,UAAV,CACY,OAAZ,CACc,MAAd,UACc,UAAd,CACgB,MAAhB,gBAMA,iBACA,wBAGE34H,QAAF,WACIhjF,KAAKwvC,IAAMsoK,QAAQnyM,KAAK7C,SAASyL,eAAe,mBCzOrC,I,OAXC,YACd,ICTW,WAAa,IAAI8iJ,EAAIrxJ,KAASyyG,EAAG4+C,EAAIhgF,eAAmB4D,EAAGo8E,EAAI9wE,MAAMtL,IAAIw9B,EAAG,OAAOx9B,EAAG,MAAM,CAACyP,YAAY,0BAA0B,CAACzP,EAAG,IAAI,CAACyP,YAAY,SAAS,CAAC2sE,EAAIn9E,GAAGm9E,EAAI39E,GAAG29E,EAAI/3E,MAAMssH,IAAI,IAAIv0C,EAAI39E,GAAG29E,EAAI/3E,MAAMqtP,UAAW,MAASt1K,EAAI57I,KAAY,QAAK47I,EAAI/3E,MAAW,MAAI,KAAQ+3E,EAAI/3E,MAAe,UAAI,IAAK,OAAO+3E,EAAIn9E,GAAG,KAAKe,EAAG,MAAM,CAACyP,YAAY,cAAc,CAACzP,EAAG,MAAM,CAACyP,YAAY,oBAAoB,CAACzP,EAAG,MAAM,CAACyP,YAAY,kBAAkBjK,MAAM,CAAC,OAA2B,KAAlB42E,EAAI/3E,MAAM51C,OACzd,UAA8B,KAAlB2tH,EAAI/3E,MAAM51C,OACtB,QAA4B,KAAlB2tH,EAAI/3E,MAAM51C,UAAe2tH,EAAIn9E,GAAG,KAAKe,EAAG,MAAM,CAACyP,YAAY,YAAY,CAAC2sE,EAAIn9E,GAAGm9E,EAAI39E,GAAG29E,EAAI/3E,MAAMwgR,YAAY,OAAOzoM,EAAIn9E,GAAG,KAAKe,EAAG,IAAI,CAACyP,YAAY,YAAY,CAAC2sE,EAAIn9E,GAAGm9E,EAAI39E,GAAG29E,EAAIi8C,UAAU,SAASj8C,EAAI/3E,MAAM51C,YAAY2tH,EAAIn9E,GAAG,KAAKe,EAAG,IAAI,CAACyP,YAAY,YAAY,CAAE2sE,EAAIwoM,kBAAyB,QAAE5kR,EAAG,OAAO,CAACrlE,MAAM,CAAC,MAAQyhJ,EAAIwoM,kBAAkBE,UAAU,CAAC1oM,EAAIn9E,GAAG,iBAAiBm9E,EAAI39E,GAAG29E,EAAI57I,KAAK47I,EAAIwoM,kBAAkBE,UAAU,kBAAkB1oM,EAAIl9E,SAASk9E,EAAIn9E,GAAG,KAAKe,EAAG,MAAM,CAACyP,YAAY,8BAA8B,CAACzP,EAAG,KAAK,CAACyP,YAAY,cAAc,CAACzP,EAAG,KAAK,CAACA,EAAG,QAAQ,CAACrlE,MAAM,CAAC,MAAQyhJ,EAAI57I,KAAKukV,QAAQ,CAAC3oM,EAAIn9E,GAAGm9E,EAAI39E,GAAG29E,EAAI57I,KAAKukV,UAAU3oM,EAAIn9E,GAAG,KAAKe,EAAG,OAAO,CAACrlE,MAAM,CAAC,MAAQyhJ,EAAIwoM,kBAAkBxsJ,OAAO,OAAO,CAACh8C,EAAIn9E,GAAGm9E,EAAI39E,GAAG29E,EAAIwoM,kBAAkBxsJ,OAAO,WAAWh8C,EAAIn9E,GAAG,KAAKe,EAAG,KAAK,CAACA,EAAG,QAAQ,CAACrlE,MAAM,CAAC,MAAQyhJ,EAAI57I,KAAK84L,WAAW,CAACl9C,EAAIn9E,GAAGm9E,EAAI39E,GAAG29E,EAAI57I,KAAK84L,aAAal9C,EAAIn9E,GAAG,KAAKe,EAAG,OAAO,CAACrlE,MAAM,CAAC,MAAQyhJ,EAAIwoM,kBAAkBrrJ,SAAS,OAAO,CAACn9C,EAAIn9E,GAAGm9E,EAAI39E,GAAG29E,EAAIwoM,kBAAkBrrJ,SAAS,WAAWn9C,EAAIn9E,GAAG,KAAKe,EAAG,KAAK,CAACA,EAAG,QAAQ,CAACrlE,MAAM,CAAC,MAAQyhJ,EAAI57I,KAAKuvB,UAAU,CAACqsH,EAAIn9E,GAAGm9E,EAAI39E,GAAG29E,EAAI57I,KAAKuvB,YAAYqsH,EAAIn9E,GAAG,KAAKe,EAAG,OAAO,CAACrlE,MAAM,CAAC,MAAQyhJ,EAAIwoM,kBAAkB70T,SAAS,OAAO,CAACqsH,EAAIn9E,GAAGm9E,EAAI39E,GAAG29E,EAAIwoM,kBAAkB70T,SAAS,WAAWqsH,EAAIn9E,GAAG,KAAKe,EAAG,KAAK,CAACA,EAAG,QAAQ,CAACrlE,MAAM,CAAC,MAAQyhJ,EAAI57I,KAAKwkV,uBAAuB,CAAC5oM,EAAIn9E,GAAGm9E,EAAI39E,GAAG29E,EAAI57I,KAAKwkV,sBAAsB,OAAO5oM,EAAIn9E,GAAG,KAAKe,EAAG,OAAO,CAACrlE,MAAM,CAAC,MAAQyhJ,EAAIwoM,kBAAkBK,iBAAiB,OAAO,CAAC7oM,EAAIn9E,GAAGm9E,EAAI39E,GAAG29E,EAAIwoM,kBAAkBK,iBAAiB,WAAW7oM,EAAIn9E,GAAG,KAAKe,EAAG,KAAK,CAACA,EAAG,QAAQ,CAACrlE,MAAM,CAAC,MAAQyhJ,EAAI57I,KAAK0kV,0BAA0B,CAAC9oM,EAAIn9E,GAAGm9E,EAAI39E,GAAG29E,EAAI57I,KAAK0kV,4BAA4B9oM,EAAIn9E,GAAG,KAAKe,EAAG,OAAO,CAACrlE,MAAM,CAAC,MAAQyhJ,EAAIwoM,kBAAkBO,oBAAoB,OAAO,CAAC/oM,EAAIn9E,GAAGm9E,EAAI39E,GAAG29E,EAAIwoM,kBAAkBO,oBAAoB,WAAW/oM,EAAIn9E,GAAG,KAAKe,EAAG,KAAK,CAACA,EAAG,QAAQ,CAACrlE,MAAM,CAAC,MAAQyhJ,EAAI57I,KAAK4kV,MAAM,CAAChpM,EAAIn9E,GAAGm9E,EAAI39E,GAAG29E,EAAI57I,KAAK4kV,QAAQhpM,EAAIn9E,GAAG,KAAKe,EAAG,OAAO,CAACrlE,MAAM,CAAC,MAAQyhJ,EAAIwoM,kBAAkBS,KAAK,OAAO,CAACjpM,EAAIn9E,GAAGm9E,EAAI39E,GAAG29E,EAAIwoM,kBAAkBS,KAAK,WAAWjpM,EAAIn9E,GAAG,KAAKe,EAAG,KAAK,CAACA,EAAG,QAAQ,CAACrlE,MAAM,CAAC,MAAQyhJ,EAAI57I,KAAKk5L,SAAS,CAACt9C,EAAIn9E,GAAGm9E,EAAI39E,GAAG29E,EAAI57I,KAAKk5L,WAAWt9C,EAAIn9E,GAAG,KAAKe,EAAG,OAAO,CAACrlE,MAAM,CAAC,MAAQyhJ,EAAIwoM,kBAAkBU,SAAS,OAAO,CAAClpM,EAAIn9E,GAAGm9E,EAAI39E,GAAG29E,EAAIwoM,kBAAkBU,SAAS,WAAWlpM,EAAIn9E,GAAG,KAAKe,EAAG,KAAK,CAACA,EAAG,QAAQ,CAACrlE,MAAM,CAAC,MAAQyhJ,EAAI57I,KAAK+kV,mBAAmB,CAACnpM,EAAIn9E,GAAGm9E,EAAI39E,GAAG29E,EAAI57I,KAAK+kV,qBAAqBnpM,EAAIn9E,GAAG,KAAKe,EAAG,OAAO,CAACrlE,MAAM,CAAC,MAAQyhJ,EAAIwoM,kBAAkBY,OAAO,OAAO,CAACppM,EAAIn9E,GAAGm9E,EAAI39E,GAAG29E,EAAIwoM,kBAAkBY,OAAO,eAAeppM,EAAIn9E,GAAG,KAAKe,EAAG,MAAM,CAACyP,YAAY,KAAK90E,MAAM,CAAC,GAAK,wBACphF,IDSpB,EACA,KACA,WACA,M,SEbF8qV,GAAoBj3Q,QAAU,SAAArE,GAC1BA,EAAIlG,UAAUwhR,GAAoBl9V,KAAMk9V,KAG7BA,U,qBCN0L,GC4BzM,CACEl9V,KAAM,iBACN+kB,KAAM,WACJ,MAAO,CACLo4U,SAAS,EACTllV,KAAMyyL,OAAOC,IAAIC,SAASC,QAG9B18K,MAAO,CACLztB,MAAO,GACP+6C,YAAa,CACX13C,KAAMuL,OACN++D,QAAS,uCAEX+uR,OAAQ,CACNr5V,KAAMuL,OACN++D,QAAS,kBAEXk6D,QAAS,CACPxkI,KAAM26D,OACN2P,QAAS,SAEXgvR,YAAa,GAEf73Q,QAxBF,aAyBEv3C,QAAS,CACPqvT,iBADJ,WAEM96V,KAAKwgF,MAAMjqE,KAAKiV,SAElBuvU,WAAY,SAAhB,GACM,GAAKvyU,EAAMoC,cAAcowU,MAAMr5V,OAA/B,CAGA,IAAN,OAEA,2BACU4U,EAAOiS,EAAM9gB,OAAOszV,MAAM,GAC9B,GAAIzkV,EAAKqmC,KAAO58C,KAAK+lI,QAEnB,OADA7mH,EAAKshE,MAAMjqE,KAAKrY,MAAQ,GACjB8B,KAAK6mN,SAAS3+M,MAAMlI,KAAKyV,KAAKwlV,eAGvC,IAAN,iBAkCM,OA/BAlmK,EAAOvuJ,OAAS,SAAtB,GACQ,IAAR,kBAEQ,IAAR,eACUjlC,KAAa,WAGvB,4BAEA,yCACQ25V,EAAQ7zV,OAAO,EAAG,GAElB6X,EAAKm8D,MAAM,YAAa6/Q,IAE1BnmK,EAAOomK,UAAY,SAAUttV,GACfqR,EAAK07U,OAAOzxV,MAAM,KAAKm9C,MAAK,SAAU80S,GAEhD,OADU,IAAIzvV,OAAO,KAAOyvV,EAAM,KACvBxsV,KAAK2H,EAAK/Y,SAGrB0hB,EAAKm8D,MAAM,QAAS,CAClB79E,KAAM+Y,EAAK/Y,KACXU,MAAO2P,EAAEnG,OAAOvG,UAGlB+d,EAAK2nM,SAAS3+M,MAAMlI,KAAKyV,KAAKwlV,eAC9B/7U,EAAKshE,MAAMjqE,KAAKrY,MAAQ,KAGlB62L,EAAOsmK,mBAAmBrmP,IAE7B,IAETsmP,UArDJ,SAqDA,GACMztV,EAAEkb,kBACF/oB,KAAKwgF,MAAMjqE,KAAKrY,MAAQ,GACxB8B,KAAKq7E,MAAM,YAAa,IACxBr7E,KAAKq7E,MAAM,QAAS,CAClB79E,KAAM,GACN,MAAR,OAIE4zB,SAAU,CACRmqU,SAAU,WACR,OAAOv7V,KAAK9B,MAAMV,MAAQwC,KAAKi5C,aAEjCulQ,WAAY,WACV,QAASx+S,KAAK9B,MAAMV,MAEtBsnM,YAAa,WACX,QAAS9kM,KAAK9B,MAAMV,MAAQwC,KAAK26V,WCzGxB,I,OAXC,YACd,ICTW,WAAa,IAAItpM,EAAIrxJ,KAASyyG,EAAG4+C,EAAIhgF,eAAmB4D,EAAGo8E,EAAI9wE,MAAMtL,IAAIw9B,EAAG,OAAOx9B,EAAG,MAAM,CAACA,EAAG,MAAM,CAACyP,YAAY,iBAAiBjK,MAAM,CAAE,2BAA4B42E,EAAImtJ,YAAap2R,GAAG,CAAC,MAAQipI,EAAIypM,iBAAiB,WAAa,SAASxoR,GAAQ++E,EAAIspM,SAAU,GAAO,WAAa,SAASroR,GAAQ++E,EAAIspM,SAAU,KAAQ,CAAC1lR,EAAG,OAAO,CAACyP,YAAY,wBAAwB,CAAC2sE,EAAIn9E,GAAGm9E,EAAI39E,GAAG29E,EAAIkqM,aAAatmR,EAAG,QAAQ,CAACphB,IAAI,OAAO62B,YAAY,CAAC,QAAU,QAAQ96E,MAAM,CAAC,KAAO,OAAO,OAAS,cAAcwY,GAAG,CAAC,OAASipI,EAAI0pM,cAAc1pM,EAAIn9E,GAAG,KAAMm9E,EAAe,YAAEp8E,EAAG,OAAO,CAACyP,YAAY,gDAAgDt8D,GAAG,CAAC,MAAQipI,EAAIiqM,aAAajqM,EAAIl9E,WAC/oB,IDWpB,EACA,KACA,KACA,M,SEbFqnR,GAAc/3Q,QAAU,SAAArE,GACpBA,EAAIlG,UAAUsiR,GAAch+V,KAAMg+V,KAGvBA,U,8RCNA,ICA+G,GDA/G,CACbh+V,KAAM,WACN+kB,KAFa,WAGX,MAAO,CACL9M,KAAMyyL,OAAOC,IAAIC,SAASC,MAC1BozJ,eAAe,EACfC,YAAa,GACbC,aAAc,EACdC,aAAc,GACdrlV,KAAM,GACNslV,UAAW,GACXj2J,GAAI,GACJk2J,OAAQ,GACRl2T,QAAS,CACPm2T,QAAQ,GAEVC,aAAc,EACdC,SAAU,GACV9lJ,UAAW,GACX+lJ,aAAc,GACdC,aAAc,CACZlhV,SAAU,WACV88L,MAAO,SAETqkJ,MAAK,EACL17J,KAAM,CACJh/L,MAAO,EACPk7C,KAAM,EACN49E,OAAQ,GAEV6hO,cAAc,EACdC,gBAAgB,EAChBC,eAAgB,CACdh0J,KAAM,CACJ,IAAIj+L,KAAKyvM,MAAM,IAAIzvM,MAAQ0vM,OAAO,wBAClC,IAAI1vM,MAENk2B,SAAU,KAIhB7nB,QAAS,CACP6jV,WADO,SACIpgV,GACT,OAAOA,EAAI29L,MAAM39L,GAAG49L,OAAOC,kBAAkB,OAAS,aAAe,IAEvEwiJ,UAJO,SAIGrgV,GACR,OAAOA,EAAI29L,MAAM39L,GAAG49L,OAAOC,kBAAkB,QAAU,IAEzDyiJ,WAPO,SAOItgV,GACT,OAAOA,EAAIA,EAAEjT,MAAM,KAAKiT,EAAEjT,MAAM,KAAKxH,OAAS,GAAK,KAGvD8pC,QAAS,CACPkxT,aADO,SACMp6U,GACX,IAAIq6U,EAAQ,GACZr6U,EAAK/Q,QAAO,SAACrN,GACPA,EAAKxC,OAAS,GAAKwC,EAAK,IAC1By4V,EAAMp6V,KAAK2B,EAAK,QAGpBy4V,EAAQ17V,MAAM0qC,KAAK,IAAIw0B,IAAIw8R,KACjBj7V,OAAS,IACjB3B,KAAK6mN,SAAS3+M,MAAMlI,KAAKyV,KAAKonV,YAE9B78V,KAAK67V,UAAL,aAAqBe,KAIzBE,QAhBO,SAgBC34V,GACN,IAAIhB,EAAMnD,KAAK87V,OAAOtqV,QAAO,SAACurV,GAC5B,OAAOA,GAAU54V,KAEnBnE,KAAK87V,OAAL,aAAkB34V,IACQ,IAAvBnD,KAAK87V,OAAOn6V,QACZ3B,KAAKg9V,mBAGVA,gBAzBO,WA0BJh9V,KAAK4lM,GAAK5lM,KAAK87V,OAAO,GACtB97V,KAAK87V,OAAS,GACd97V,KAAKi9V,eAERC,kBA9BO,SA8BW36U,EAAMtM,EAASknV,GAC/B,IAAIh6V,EAAMnD,KAAKwgF,MAAM9N,KAAK0qR,kBAAkB5rV,QAAO,SAACrN,GAClD,OAAQA,EAAK8W,YAEfjb,KAAKk8V,aAAL,aAAwB/4V,KAE1BkhK,SApCO,WAqCLrkK,KAAKwgF,MAAM9N,KAAK2qR,eAAe,IAC/Br9V,KAAKy7V,eAAgB,GAEvB6B,kBAxCO,WAyCLt9V,KAAK87V,OAAL,aAAkB97V,KAAK67V,YACnB77V,KAAK87V,OAAOn6V,OAAS,GACvB3B,KAAK4lC,QAAQm2T,QAAS,EACI,IAAvB/7V,KAAK87V,OAAOn6V,OACb3B,KAAKg9V,kBAELh9V,KAAKu9V,kBAAkBv9V,KAAK87V,OAAO,KAGrC97V,KAAK6mN,SAAS3+M,MAAMlI,KAAKyV,KAAK+nV,eAIlCC,UAtDO,SAsDGC,GACR19V,KAAK27V,YAAc+B,EAAUl/V,IAC7B,IAAI4Q,EAAOA,GAAPA,UAAWpP,KAAKwgF,MAAM9N,KAAKirR,mBAC/B39V,KAAK07V,YAAc,GACnB,IACIA,EAAc,GAClB17V,KAAK24M,QAAQ34M,KAAKi8V,SAFA,GAEuBP,GACzC17V,KAAK07V,YAAL,UAAuBA,GACvB17V,KAAK47V,aAAazwT,SAAQ,SAAChnC,GACzB,IAAIzC,EAAQ0N,EAAK3L,QAAQU,GACrBzC,GAAS,GACX0N,EAAK/H,OAAO3F,EAAO,MAGvB1B,KAAKwgF,MAAM9N,KAAK2qR,eAAejuV,GAC/BpP,KAAKy7V,eAAgB,GAGvBmC,eAxEO,SAwEQz5V,GACZnE,KAAKu8V,eAAe/7T,SAAWr8B,EAC/BnE,KAAKs2I,WAAWnyI,IAInBw0M,QA9EO,SA8ECvyL,EAAQy3U,EAAanC,GAAa,WACpCv4V,EAAMA,GAANA,UAAU06V,IACdz3U,EAAO+kB,SAAQ,SAAChnC,GACd,IAAKA,EAAK8W,SAAU,CAClB9X,EAAIgB,EAAK8yG,MAAQ,GAAK9yG,EAAK3F,IAC3B,IAAIs/V,EAAWA,GAAXA,UAAe36V,IAKnB,OAJAu4V,EAAYl5V,KAAKs7V,QACb35V,EAAK3F,KAAO,EAAKm9V,cACnB,EAAKC,aAAL,aAAwBz4V,MAI1BA,EAAIgB,EAAK8yG,MAAQ,GAAK9yG,EAAK3F,IAC3B,EAAKm6M,QAAQx0M,EAAK8W,SAAU9X,EAAKu4V,OAKvCqC,aAhGO,SAgGMC,EAAcC,EAAaC,EAAkBC,GACpDF,EAAYA,YAAYt8V,OAAS3B,KAAKg8V,aACxCh8V,KAAKy7V,eAAgB,EAErBz7V,KAAKy7V,eAAgB,GAIzB2C,UAxGO,WAyGL,IAAIj7V,EAAMA,GAANA,UAAUnD,KAAKi8V,WACnBj8V,KAAKwgF,MAAM9N,KAAK2rR,gBAAgBl7V,GAChCnD,KAAKy7V,eAAgB,EACrBz7V,KAAKg8V,aAAeh8V,KAAKwgF,MAAM9N,KAAKirR,iBAAiBh8V,QAGvD28V,gBA/GO,SA+GSrjV,EAAUtZ,GAAQ,WAChCsZ,EAASkwB,SAAQ,SAAChnC,GACZA,EAAK8W,UACP,EAAKqjV,gBAAgBn6V,EAAK8W,SAAUtZ,OAK1Cu6M,aAvHO,WAuHQ,WACTqiJ,EAAUv+V,KAAK87V,OAAOv1V,KAAI,SAACpC,GAC7B,OAAOA,EAAKR,WAAWymC,UAErB85Q,EAAUlkT,KAAKwgF,MAAM9N,KACtB0qR,kBACA5rV,QAAO,SAACrN,GACP,OAAqB,GAAdA,EAAK8yG,SAEbzrE,QAAO,SAACrqC,EAAQgD,GAAT,aAAwBhD,G,EAAxB,G,EAAiCgD,EAAK4zM,M,EAAQ,EAAKtiM,KAAKtR,EAAK3F,K,6GAAS,KAC3EwB,KAAK4lM,IAAM5lM,KAAK87V,OAAOn6V,OAAS,EACnC3B,KAAK6mN,SAAS3+M,MAAMlI,KAAKyV,KAAK+nV,cAI9Bx9V,KAAKu8V,eAAeh0J,KAAK,GAAGnmI,UAC1BpiE,KAAKu8V,eAAeh0J,KAAK,GAAGnmI,UAC9B,MAEApiE,KAAK6mN,SAAS3+M,MAAMlI,KAAKyV,KAAK+oV,aAG5Bx+V,KAAKk8V,aAAav6V,OAAS,EAC7B3B,KAAK6mN,SAAS3+M,MAAMlI,KAAKyV,KAAKgpV,iBAGV,GAAlBF,EAAQ58V,SACV48V,EAAU,CAACv+V,KAAK4lM,GAAGx7J,SAEjBm0T,EAAQh5S,OAAM,SAACphD,GAEf,MADU,8CACCyK,KAAKzK,OAElBnE,KAAKq8V,cAAe,EACpBp8J,OAAOwC,KAAK,qBAAsB,CAC9BrgL,IAAK,GACLgqT,IAAKmyB,EACLj9V,MAAOy4M,MAAM/5M,KAAKu8V,eAAeh0J,KAAK,IAAIyR,OAAO,uBACjD7yM,IAAK4yM,MAAM/5M,KAAKu8V,eAAeh0J,KAAK,IAAIyR,OAAO,uBAC/CkqG,QAASA,EACTw6C,aAAc,GACdn9V,KAAsC,KAAhCvB,KAAKu8V,eAAe/7T,SAAkB,EAAI,IAC/C4D,SAAQ,SAACy9B,GAEVjiD,YAAW,WACT,EAAK8gL,KAAKh/L,MAAQ,EAClB,EAAKs1V,iBACJ,QACFn6U,MAAK,SAACA,GACP,EAAKgqM,SAAS3+M,MAAM2U,EAAK1U,SAG7BnI,KAAK6mN,SAAS3+M,MAAMlI,KAAKyV,KAAKkpV,gBAIlC1uJ,iBA/KO,SA+KUvP,GACf1gM,KAAK0gM,KAAKh/L,MAAQg/L,EAClB1gM,KAAKg3V,gBAGPA,aApLO,WAoLQ,WACb/2J,OAAOwC,KAAK,qBAAsB,CAC9BmQ,WAAY5yM,KAAK0gM,KAAKh/L,MACtBmxM,UAAW7yM,KAAK0gM,KAAK9jJ,OACpBxY,SAAQ,SAACy9B,GACV,EAAKs0I,UAAYt0I,EAAIt/C,KAAKnX,KAC1B,EAAKs1L,KAAKlmE,OAAS34D,EAAIt/C,KAAKi4G,UAC3B39G,MAAK,SAACA,GACP,EAAKgqM,SAAS3+M,MAAM2U,EAAK1U,QACxB+pL,KAAI,WACL,EAAKmqK,cAAe,MAI1B/lN,WAlMO,SAkMI91G,GAAU,WACnBxgC,KAAKi8V,SAAW,GAChBj8V,KAAKs8V,gBAAiB,EACtBr8J,OAAOwC,KAAK,0BAA2B,CAAClhM,KAAMi/B,IAAW4D,SAAQ,SAACy9B,GAChE,EAAKy6R,gBAAiB,EACtB,EAAKL,SAAWp6R,EAAIt/C,KACpB,EAAK4/D,WAAU,WACb,EAAKi8Q,YACL,EAAKpH,qBAENn6U,MAAK,SAACA,GACP,EAAKy/U,gBAAiB,EACtB,EAAKz1I,SAAS3+M,MAAM2U,EAAK1U,SAI7B80V,YAlNO,WAmNFj9V,KAAK4lM,IACN5lM,KAAKu9V,kBAAkBv9V,KAAK4lM,KAIhC23J,kBAxNO,SAwNWqB,GAAU,WAC1B5+V,KAAKs8V,gBAAiB,EACtBr8J,OAAOwC,KAAK,wBAAyB,CAACmD,GAAIg5J,IAAWx6T,SAAQ,SAACy9B,GAC5D,EAAKy6R,gBAAiB,EACQ,IAA3Bz6R,EAAIt/C,KAAK7a,OAAO/F,OACkB,IAAjC,EAAK46V,eAAe/7T,WACtB,EAAK+7T,eAAe/7T,SAAW,EAC/B,EAAK81G,WAAW,KAGhB,EAAKimN,eAAe/7T,SAAWqhC,EAAIt/C,KAAKs8U,SACxC,EAAK5C,SAAWp6R,EAAIt/C,KAAK7a,QAE3B,EAAKy6E,WAAU,WACb,EAAKi8Q,YACL,EAAKpH,qBAENn6U,MAAK,SAACA,GACP,EAAKy/U,gBAAiB,EACtB,EAAKz1I,SAAS3+M,MAAM2U,EAAK1U,UAI/B26E,QAnSa,WAoSX9iF,KAAKs2I,WAAW,KEjRL,I,OAXC,YACd,ICTW,WAAa,IAAI+a,EAAIrxJ,KAASyyG,EAAG4+C,EAAIhgF,eAAmB4D,EAAGo8E,EAAI9wE,MAAMtL,IAAIw9B,EAAG,OAAOx9B,EAAG,MAAM,CAACyP,YAAY,aAAa,CAACzP,EAAG,MAAM,CAACyP,YAAY,YAAY,CAACzP,EAAG,KAAK,CAACyP,YAAY,aAAa,CAACzP,EAAG,KAAK,CAACyP,YAAY,OAAO,CAAC2sE,EAAIn9E,GAAGm9E,EAAI39E,GAAG29E,EAAI57I,KAAKqpV,iBAAiBztM,EAAIn9E,GAAG,KAAKe,EAAG,MAAM,CAACyP,YAAY,6CAA6C,CAACzP,EAAG,OAAO,CAACyP,YAAY,aAAa,CAAC2sE,EAAIn9E,GAAGm9E,EAAI39E,GAAG29E,EAAI57I,KAAKspV,MAAM,OAAO1tM,EAAIn9E,GAAG,KAAKe,EAAG,MAAM,CAACyV,YAAY,CAAC,cAAc,QAAQ,CAACzV,EAAG,QAAQ,CAACzK,WAAW,CAAC,CAAChtE,KAAK,QAAQoqF,QAAQ,UAAU1pF,MAAOmzJ,EAAM,GAAEv0E,WAAW,MAAM,CAACt/E,KAAK,OAAOoqF,QAAQ,SAAS1pF,MAA6B,IAAtBmzJ,EAAIyqM,OAAOn6V,OAAcm7E,WAAW,wBAAwB4H,YAAY,2BAA2B90E,MAAM,CAAC,KAAO,OAAO,YAAcyhJ,EAAI57I,KAAK+nV,cAAcrrR,SAAS,CAAC,MAASk/E,EAAM,IAAGjpI,GAAG,CAAC,KAAOipI,EAAI4rM,YAAY,MAAQ,SAAS3qR,GAAWA,EAAO5qE,OAAOuiF,YAAqBonE,EAAIu0C,GAAGtzH,EAAO5qE,OAAOxJ,WAAUmzJ,EAAIn9E,GAAG,KAAKe,EAAG,MAAM,CAACzK,WAAW,CAAC,CAAChtE,KAAK,OAAOoqF,QAAQ,SAAS1pF,MAAOmzJ,EAAIyqM,OAAOn6V,OAAS,EAAGm7E,WAAW,sBAAsB4N,YAAY,CAAC,QAAU,OAAO,QAAU,UAAU96E,MAAM,CAAC,KAAO,aAAamgE,KAAK,aAAa,CAACkF,EAAG,KAAK,CAACyP,YAAY,iBAAiB2sE,EAAI19E,GAAI09E,EAAU,QAAE,SAASltJ,GAAM,OAAO8wE,EAAG,OAAO,CAACz2E,IAAI2F,EAAKugF,YAAY,mDAAmD,CAACzP,EAAG,OAAO,CAACyP,YAAY,wBAAwB,CAAC2sE,EAAIn9E,GAAGm9E,EAAI39E,GAAGvvE,MAASktJ,EAAIn9E,GAAG,KAAKe,EAAG,IAAI,CAACyP,YAAY,8BAA8Bt8D,GAAG,CAAC,MAAQ,SAASkqD,GAAQ,OAAO++E,EAAIyrM,QAAQ34V,YAAc,OAAOktJ,EAAIn9E,GAAG,KAAKe,EAAG,MAAM,CAACyP,YAAY,aAAat8D,GAAG,CAAC,MAAQ,SAASkqD,GAAQ++E,EAAIzrH,QAAQm2T,QAAS,KAAQ,CAAC9mR,EAAG,MAAM,CAACyP,YAAY,eAAe2sE,EAAIn9E,GAAG,KAAKe,EAAG,OAAO,CAACo8E,EAAIn9E,GAAG,IAAIm9E,EAAI39E,GAAG29E,EAAI57I,KAAKupV,WAAW,WAAW3tM,EAAIn9E,GAAG,KAAKe,EAAG,MAAM,CAACyP,YAAY,kCAAkC,CAACzP,EAAG,OAAO,CAACyP,YAAY,aAAa,CAAC2sE,EAAIn9E,GAAGm9E,EAAI39E,GAAG29E,EAAI57I,KAAKwpV,QAAQ,OAAO5tM,EAAIn9E,GAAG,KAAKe,EAAG,iBAAiB,CAACyP,YAAY,mBAAmBgG,YAAY,CAAC,MAAQ,SAAS96E,MAAM,CAAC,WAAY,EAAM,eAAe,0BAA0B,KAAO,gBAAgB,kBAAkB,KAAK,oBAAoByhJ,EAAI57I,KAAKyjB,UAAU,kBAAkBm4H,EAAI57I,KAAKk0M,QAAQ,OAASt4D,EAAImtD,YAAYllI,MAAM,CAACp7E,MAAOmzJ,EAAIkrM,eAAmB,KAAEj2V,SAAS,SAAUu9L,GAAMxyC,EAAIlwE,KAAKkwE,EAAIkrM,eAAgB,OAAQ14J,IAAM/mH,WAAW,0BAA0B,GAAGu0E,EAAIn9E,GAAG,KAAKe,EAAG,MAAM,CAACyP,YAAY,kCAAkC,CAACzP,EAAG,OAAO,CAACyP,YAAY,aAAa,CAAC2sE,EAAIn9E,GAAGm9E,EAAI39E,GAAG29E,EAAI57I,KAAKypV,eAAe7tM,EAAIn9E,GAAG,KAAKe,EAAG,iBAAiB,CAAC7sD,GAAG,CAAC,OAASipI,EAAIusM,gBAAgBtkR,MAAM,CAACp7E,MAAOmzJ,EAAIkrM,eAAuB,SAAEj2V,SAAS,SAAUu9L,GAAMxyC,EAAIlwE,KAAKkwE,EAAIkrM,eAAgB,WAAY14J,IAAM/mH,WAAW,4BAA4B,CAAC7H,EAAG,WAAW,CAACz2E,IAAI,qBAAqBoR,MAAM,CAAC,MAAQ,IAAI,CAACyhJ,EAAIn9E,GAAGm9E,EAAI39E,GAAG29E,EAAI57I,KAAK0pV,eAAe9tM,EAAIn9E,GAAG,KAAKe,EAAG,WAAW,CAACz2E,IAAI,YAAYoR,MAAM,CAAC,MAAQ,IAAI,CAACyhJ,EAAIn9E,GAAGm9E,EAAI39E,GAAG29E,EAAI57I,KAAK2pV,WAAW/tM,EAAIn9E,GAAG,KAAKe,EAAG,WAAW,CAACz2E,IAAI,YAAYoR,MAAM,CAAC,MAAQ,IAAI,CAACyhJ,EAAIn9E,GAAGm9E,EAAI39E,GAAG29E,EAAI57I,KAAK4pV,oBAAoB,IAAI,GAAGhuM,EAAIn9E,GAAG,KAAKe,EAAG,MAAM,CAACyP,YAAY,8CAA8CgG,YAAY,CAAC,OAAS,UAAU,SAAW,aAAa,CAACzV,EAAG,OAAO,CAACyP,YAAY,aAAa,CAAC2sE,EAAIn9E,GAAGm9E,EAAI39E,GAAG29E,EAAI57I,KAAK6pV,SAAS,OAAOjuM,EAAIn9E,GAAG,KAAKe,EAAG,aAAa,CAACrlE,MAAM,CAAC,UAAY,SAAS,MAAQ,MAAM,QAAU,SAASwY,GAAG,CAAC,KAAO,SAASkqD,GAAQ++E,EAAI+qM,MAAO,GAAO,KAAO,SAAS9pR,GAAQ++E,EAAI+qM,MAAO,KAAQ,CAACnnR,EAAG,MAAM,CAACyP,YAAY,oBAAoBgG,YAAY,CAAC,OAAS,YAAY,CAACzV,EAAG,MAAM,CAACyV,YAAY,CAAC,QAAU,OAAO,gBAAgB,SAAS,CAACzV,EAAG,MAAM,CAACyP,YAAY,sBAAsBt8D,GAAG,CAAC,MAAQipI,EAAI+sM,YAAY,CAAC/sM,EAAIn9E,GAAG,iBAAiBm9E,EAAI39E,GAAG29E,EAAI57I,KAAK8pV,UAAU,kBAAkBluM,EAAIn9E,GAAG,KAAKe,EAAG,MAAM,CAACyP,YAAY,wBAAwBt8D,GAAG,CAAC,MAAQipI,EAAIgT,WAAW,CAAChT,EAAIn9E,GAAG,iBAAiBm9E,EAAI39E,GAAG29E,EAAI57I,KAAK+pV,SAAS,oBAAoBnuM,EAAIn9E,GAAG,KAAKe,EAAG,UAAU,CAACphB,IAAI,OAAO6wB,YAAY,YAAYgG,YAAY,CAAC,OAAS,QAAQ,aAAa,OAAO,aAAa,UAAU96E,MAAM,CAAC,KAAOyhJ,EAAI4qM,SAAS,MAAQ5qM,EAAI8qM,aAAa,qBAAqB,GAAG,oBAAoB,GAAG,WAAW,MAAM,gBAAgB,IAAI/zU,GAAG,CAAC,MAAQipI,EAAI0sM,aAAa,eAAe1sM,EAAI6rM,mBAAmBloR,YAAYq8E,EAAIj9E,GAAG,CAAC,CAAC51E,IAAI,UAAUkH,GAAG,SAASmuD,GAC1mI,IAAItxC,EAAOsxC,EAAItxC,KACf,OAAO0yD,EAAG,OAAO,CAACyP,YAAY,oBAAoB,CAACzP,EAAG,OAAO,CAACo8E,EAAIn9E,GAAGm9E,EAAI39E,GAAG29E,EAAI57I,KAAK8M,EAAK/jB,kBAAkB,GAAG6yJ,EAAIn9E,GAAG,KAAKe,EAAG,MAAM,CAACrlE,MAAM,CAAC,KAAO,aAAamgE,KAAK,aAAa,CAACkF,EAAG,MAAM,CAACyV,YAAY,CAAC,cAAc,MAAM,QAAU,OAAO,OAAS,UAAU,SAAW,aAAa,CAAE2mE,EAAiB,cAAEp8E,EAAG,MAAM,CAACyP,YAAY,wBAAwB,CAAC2sE,EAAIn9E,GAAG,iBAAiBm9E,EAAI39E,GAAG29E,EAAI57I,KAAKgqV,0BAA0B,kBAAkBxqR,EAAG,IAAI,CAACyP,YAAY,aAAajK,MAAM,CAAC,YAAY42E,EAAI+qM,UAAU/qM,EAAIl9E,KAAKk9E,EAAIn9E,GAAG,KAAOm9E,EAAIoqM,cAA4GpqM,EAAIl9E,KAAjGc,EAAG,IAAI,CAACyP,YAAY,aAAajK,MAAM,CAAC,YAAY42E,EAAI+qM,MAAM1xQ,YAAY,CAAC,MAAQ,UAAmB2mE,EAAIn9E,GAAG,KAAOm9E,EAAIoqM,cAAkZpqM,EAAIl9E,KAAvYc,EAAG,KAAK,CAACyP,YAAY,iBAAiB2sE,EAAI19E,GAAI09E,EAAgB,cAAE,SAASltJ,GAAM,OAAO8wE,EAAG,OAAO,CAACz2E,IAAI2F,EAAKqK,GAAGk2E,YAAY,mDAAmD,CAACzP,EAAG,OAAO,CAACyP,YAAY,wBAAwB,CAAC2sE,EAAIn9E,GAAGm9E,EAAI39E,GAAG29E,EAAI57I,KAAKtR,EAAK3F,SAAS6yJ,EAAIn9E,GAAG,KAAKe,EAAG,IAAI,CAACyP,YAAY,8BAA8Bt8D,GAAG,CAAC,MAAQ,SAASkqD,GAAQ,OAAO++E,EAAIosM,UAAUt5V,YAAc,SAAkBktJ,EAAIn9E,GAAG,KAAKe,EAAG,gBAAgB,CAACyV,YAAY,CAAC,SAAW,WAAW,MAAQ,OAAO,IAAM,QAAQ96E,MAAM,CAAC,SAAWyhJ,EAAIgrM,cAAgBhrM,EAAIirM,gBAAgBl0U,GAAG,CAAC,MAAQipI,EAAI6qD,eAAe,CAAC7qD,EAAIn9E,GAAG,WAAWm9E,EAAI39E,GAAG29E,EAAI57I,KAAKiqV,WAAW,aAAa,GAAGruM,EAAIn9E,GAAG,KAAKe,EAAG,YAAY,CAACyP,YAAY,qBAAqB90E,MAAM,CAAC,QAAUyhJ,EAAIzrH,QAAQm2T,OAAO,MAAQ,QAAQ,iBAAiB,GAAG,cAAa,EAAM,wBAAuB,EAAM,yBAAwB,IAAQ,CAAC9mR,EAAG,MAAM,CAACyP,YAAY,sBAAsBgG,YAAY,CAAC,aAAa,SAAS,MAAQ,OAAO,cAAc,KAAK96E,MAAM,CAAC,KAAO,SAASmgE,KAAK,SAAS,CAACshF,EAAIn9E,GAAG,IAAIm9E,EAAI39E,GAAG29E,EAAI57I,KAAKupV,WAAW,YAAY3tM,EAAIn9E,GAAG,KAAKe,EAAG,MAAM,CAACyV,YAAY,CAAC,QAAU,OAAO,kBAAkB,UAAU96E,MAAM,CAAC,KAAO,UAAUmgE,KAAK,UAAU,CAACkF,EAAG,gBAAgB,CAACyV,YAAY,CAAC,eAAe,OAAO,YAAY,OAAO,WAAa,WAAWtiE,GAAG,CAAC,MAAQ,SAASkqD,GAAQ++E,EAAIzrH,QAAQm2T,QAAS,KAAS,CAAC1qM,EAAIn9E,GAAGm9E,EAAI39E,GAAG29E,EAAI57I,KAAKkqV,aAAatuM,EAAIn9E,GAAG,KAAKe,EAAG,gBAAgB,CAACyV,YAAY,CAAC,YAAY,QAAQ96E,MAAM,CAAC,KAAO,WAAWwY,GAAG,CAAC,MAAQipI,EAAIisM,oBAAoB,CAACjsM,EAAIn9E,GAAGm9E,EAAI39E,GAAG29E,EAAI57I,KAAKmqV,UAAU,GAAGvuM,EAAIn9E,GAAG,KAAKe,EAAG,MAAM,CAACyP,YAAY,qBAAqBgG,YAAY,CAAC,QAAU,WAAW,CAACzV,EAAG,MAAM,CAACyP,YAAY,gBAAgBgG,YAAY,CAAC,QAAU,OAAO,kBAAkB,kBAAkB,CAACzV,EAAG,MAAM,CAACyV,YAAY,CAAC,MAAQ,YAAY,CAAC2mE,EAAIn9E,GAAGm9E,EAAI39E,GAAG29E,EAAI57I,KAAKoqV,aAAaxuM,EAAIn9E,GAAG,KAAKe,EAAG,MAAM,CAACyP,YAAY,sBAAsB90E,MAAM,CAAC,KAAO,SAASmgE,KAAK,SAAS,CAACkF,EAAG,IAAI,CAACyV,YAAY,CAAC,SAAW,UAAU,MAAQ,UAAU,YAAY,QAAQ96E,MAAM,CAAC,KAAO,6BAA6B,CAACyhJ,EAAIn9E,GAAGm9E,EAAI39E,GAAG29E,EAAI57I,KAAKqqV,mBAAmBzuM,EAAIn9E,GAAG,KAAKe,EAAG,iBAAiB,CAACrlE,MAAM,CAAC,eAAeyhJ,EAAI0uM,kBAAkB,OAAS,aAAa,QAAUxhT,IAAS,YAAc8yG,EAAI57I,KAAKuqV,cAAc53U,GAAG,CAAC,UAAYipI,EAAIsrM,cAAcrjR,MAAM,CAACp7E,MAAOmzJ,EAAQ,KAAE/qJ,SAAS,SAAUu9L,GAAMxyC,EAAI96I,KAAKstL,GAAK/mH,WAAW,WAAW,KAAKu0E,EAAIn9E,GAAG,KAAKe,EAAG,MAAM,CAACzK,WAAW,CAAC,CAAChtE,KAAK,UAAUoqF,QAAQ,YAAY1pF,MAAOmzJ,EAAgB,aAAEv0E,WAAW,iBAAiB4N,YAAY,CAAC,QAAU,OAAO,gBAAgB,OAAO,mBAAmB,WAAW96E,MAAM,CAAC,GAAK,YAAY,CAACqlE,EAAG,MAAM,CAACyP,YAAY,eAAe,CAACzP,EAAG,OAAO,CAACo8E,EAAIn9E,GAAGm9E,EAAI39E,GAAG29E,EAAI57I,KAAKwqV,UAAU5uM,EAAIn9E,GAAG,KAAKe,EAAG,OAAO,CAACo8E,EAAIn9E,GAAGm9E,EAAI39E,GAAG29E,EAAI57I,KAAKyqV,cAAc7uM,EAAIn9E,GAAG,KAAKe,EAAG,WAAW,CAACyP,YAAY,UAAUgG,YAAY,CAAC,UAAU,KAAK96E,MAAM,CAAC,KAAOyhJ,EAAI8kD,UAAU,OAAS,KAAK,CAAClhI,EAAG,kBAAkB,CAACrlE,MAAM,CAAC,MAAQyhJ,EAAI57I,KAAK2gM,KAAK,KAAO,QAAQ,MAAQ,QAAQ/kD,EAAIn9E,GAAG,KAAKe,EAAG,kBAAkB,CAACrlE,MAAM,CAAC,MAAQyhJ,EAAI57I,KAAK0qV,WAAWnrR,YAAYq8E,EAAIj9E,GAAG,CAAC,CAAC51E,IAAI,UAAUkH,GAAG,SAASoJ,GAAO,MAAO,CAACmmE,EAAG,OAAO,CAACo8E,EAAIn9E,GAAGm9E,EAAI39E,GAAG29E,EAAIt9E,GAAG,aAAPs9E,CAAqBviJ,EAAMilM,IAAIl4K,iBAAiBw1H,EAAIn9E,GAAG,KAAKe,EAAG,kBAAkB,CAACrlE,MAAM,CAAC,MAAQyhJ,EAAI57I,KAAKiuB,QAAQsxC,YAAYq8E,EAAIj9E,GAAG,CAAC,CAAC51E,IAAI,UAAUkH,GAAG,SAASoJ,GAAO,MAAO,CAACmmE,EAAG,OAAO,CAACo8E,EAAIn9E,GAAGm9E,EAAI39E,GAAG5kE,EAAMilM,IAAIrwK,kBAAkB2tH,EAAIn9E,GAAG,KAAKe,EAAG,kBAAkB,CAACrlE,MAAM,CAAC,MAAQyhJ,EAAI57I,KAAK2qV,UAAUprR,YAAYq8E,EAAIj9E,GAAG,CAAC,CAAC51E,IAAI,UAAUkH,GAAG,SAASoJ,GAAO,MAAO,CAACmmE,EAAG,OAAO,CAACo8E,EAAIn9E,GAAGm9E,EAAI39E,GAAG29E,EAAIt9E,GAAG,YAAPs9E,CAAoBviJ,EAAMilM,IAAIssJ,yBAAyBhvM,EAAIn9E,GAAG,KAAKe,EAAG,kBAAkB,CAACrlE,MAAM,CAAC,MAAQyhJ,EAAI57I,KAAK6qV,SAAS,wBAAwB,IAAItrR,YAAYq8E,EAAIj9E,GAAG,CAAC,CAAC51E,IAAI,UAAUkH,GAAG,SAASoJ,GAAO,MAAO,CAAEA,EAAMilM,IAAIrwK,QAAU2tH,EAAI57I,KAAK8qV,QAAUzxV,EAAMilM,IAAI2C,UAAWzhI,EAAG,MAAM,CAACyP,YAAY,aAAa,CAACzP,EAAG,IAAI,CAACrlE,MAAM,CAAC,KAAOd,EAAMilM,IAAI2C,YAAY,CAACrlD,EAAIn9E,GAAG,mBAAmBm9E,EAAI39E,GAAG29E,EAAIt9E,GAAG,aAAPs9E,CAAqBviJ,EAAMilM,IAAI2C,YAAY,sBAAuB5nM,EAAMilM,IAAIrwK,QAAU2tH,EAAI57I,KAAK+qV,aAAcvrR,EAAG,MAAM,CAACyP,YAAY,aAAa,CAACzP,EAAG,OAAO,CAACo8E,EAAIn9E,GAAGm9E,EAAI39E,GAAG29E,EAAIt9E,GAAG,aAAPs9E,CAAqBviJ,EAAMilM,IAAI2C,iBAAiBzhI,EAAG,MAAM,CAACyP,YAAY,aAAa,CAACzP,EAAG,OAAO,CAACo8E,EAAIn9E,GAAG,kBAAkB,GAAGm9E,EAAIn9E,GAAG,KAAKe,EAAG,MAAM,CAACyP,YAAY,mBAAmB,CAACzP,EAAG,YAAY,CAACyP,YAAY,KAAKgG,YAAY,CAAC,OAAS,gBAAgB96E,MAAM,CAAC,eAAeyhJ,EAAIqvC,KAAKh/L,MAAM,aAAa,CAAC2vJ,EAAIqvC,KAAK9jJ,MAAM,OAAS,yCAAyC,MAAQy0G,EAAIqvC,KAAKlmE,OAAO,SAAW62B,EAAIovM,YAAYr4U,GAAG,CAAC,iBAAiBipI,EAAI4+C,qBAAqB,IAAI,IAAI,KAC/hK,IDSpB,EACA,KACA,WACA,M,SEbFywJ,GAASj9Q,QAAU,SAASrE,GACxBA,EAAIlG,UAAUwnR,GAASljW,KAAMkjW,KAGlBA,U,0LCN2L,GCoD1M,CACEljW,KAAM,iBACN+kB,KAFF,WAGI,MAAO,CACL9M,KAAMyyL,OAAOC,IAAIC,SAASC,QAG9B18K,MAAO,CACLg1U,aAAc,CACZp/V,KAAM5D,QAERijW,YAAJ,CACMr/V,KAAN,SAGE6vB,SAAF,CACIyvU,WADJ,WAEM,GAAN,kBACM,MAAsD,iBAA3C7gW,KAAK2gW,aAAaG,sBACpB9gW,KAAKyV,KAAKzV,KAAK2gW,aAAaG,uBAE/B9gW,KAAK2gW,aAAaG,sBAAsBn/V,OAAS,EAC5C3B,KAAKyV,KAAKzV,KAAK2gW,aAAaG,sBAAsB,SAD3D,IAMNj8R,MAAO,CACL87R,aADJ,SACA,GACUvkV,GAEFpc,KAAKi4M,UAIXxsK,QAAS,CACPs1T,iBADJ,WAEM,GAAN,yDAAM,CACA,IAAI1xU,EAAOrvB,KAAK2gW,aAAaG,sBAAsBv6V,KAAI,SAA7D,GACQ,MAAO,0FAAf,kBAEMowM,OAAOgtB,OAAO,CACpB,uBACA,UACA,yFACA,0DAIIq9H,kBAdJ,SAcA,OACM,OAAOhhW,KAAKurN,MAAMqsE,QAAQ,CACxBxmP,MAAO,WACPmB,EAAG/f,EAAS+f,EACZC,EAAGhgB,EAASggB,EACZ5iC,MAAO,CACL+vK,MAAO,CACL36K,KAAM26K,GAER36K,KAAM,CACJA,KAAMxH,OAMdyjW,qBA9BJ,SA8BA,SACM,OAAOjhW,KAAKurN,MAAMqsE,QAAQ,CACxBxmP,MAAO,cACPmB,EAAG/f,EAAS+f,EACZC,EAAGhgB,EAASggB,EACZ5iC,MAAO,CACLsxV,OAAQ,CACN,aAAczqV,GAEhBkpK,MAAO,CACL36K,KAAM26K,GAER36K,KAAM,CACJA,KAAMxH,IAGVs5Q,MAAO,CACL5oQ,OAAQ,CACNizV,OAAQ,CACNvxV,MAAO,CACLkiI,OAAQ,CACN/zI,EAAG,EACHi6O,QAAQ,EACRnoM,OAAQ,UACRskM,YAAa,EACbvkM,KAAM,QAER5qC,KAAM,CACJ87G,SAAU,GACVlxE,KAAM,SAIVpd,SAAU,CACRh1B,KAAM,cAIZ0rE,MAAO,CACjB,CACY,GAAZ,QACY,MAAZ,SAEY,KAAZ,CACc,EAAd,EACc,EAAd,UAQIk4R,cAnFJ,SAmFA,KACM,OAAOphW,KAAKurN,MAAMqsE,QAAQ,CACxBxmP,MAAO,YACPmB,EAAG/f,EAAS+f,EACZC,EAAGhgB,EAASggB,EACZ5iC,MAAO,CACLsxV,OAAQ,CACN,aAAczqV,IAGlBqgQ,MAAO,CACL5oQ,OAAQ,CACNizV,OAAQ,CACNvxV,MAAO,CACLkiI,OAAQ,CACN/zI,EAAG,EACHi6O,QAAQ,EACRnoM,OAAQ,UACRskM,YAAa,EACbvkM,KAAM,QAER5qC,KAAM,CACJ87G,SAAU,GACVlxE,KAAM,SAIVpd,SAAU,CACRh1B,KAAM,cAIZ0rE,MAAO,CACjB,CACY,GAAZ,QACY,MAAZ,SAEY,KAAZ,CACc,EAAd,IACc,EAAd,UAQIm4R,gBAlIJ,SAkIA,GACM,OAAOrhW,KAAKurN,MAAMqsE,QAAQ,CACxBvmQ,MAAO,GACPoC,OAAQ,GACRskL,MAAO,GACPnoM,MAAO,CACL0V,KAAM,CACJsqB,KAAM,UACNC,OAAQ,YAGZ0C,EAAG/f,EAAS+f,EACZC,EAAGhgB,EAASggB,KAIhB8uT,iBAlJJ,SAkJA,KACM,OAAOthW,KAAKurN,MAAMqsE,QAAQ,CACxBxmP,MAAO,cACPmB,EAAG/f,EAAS+f,EACZC,EAAGhgB,EAASggB,EACZ5iC,MAAO,CACL+vK,MAAO,CACL36K,KAAMA,OAMdu8V,SA/JJ,SA+JA,SACM,IAAInoG,EAAW,CAAC,CAAE7mN,EAAG,IAAKC,EAAG,MACzBgvT,EAAa,CACf3xT,OAAQ,UACR4xT,gBAAiB,GACjB5tH,aAAc,WAEZnwM,IACF89T,EAAa,MACrB,EACA,CACU,MAAV,MAMUE,IACFF,EAAa,MACrB,EACA,CACU,aAAV,KAGQpoG,EAAW,IAEbp5P,KAAKurN,MAAMssE,QAAQ,CACjB9zQ,OAAQA,EACRrc,OAAQA,EACR0xP,SAAUA,EACVisB,OAAQ,CAAE7nR,KAAM,aAChBoS,MAAO,CACLqrD,KAAMumS,MAKZG,UApMJ,WAoMA,WACM,GAAN,aACA,cACA,CACQ,MAAR,IACQ,OAAR,GACQ,MAAR,CACU,KAAV,CACY,OAAZ,UACY,YAAZ,EACY,KAAZ,yBAEU,MAAV,CACY,aAAZ,yCACY,MAAZ,IACY,OAAZ,GACY,EAAZ,GACY,EAAZ,IAEU,MAAV,CACY,KAAZ,IACY,KAAZ,GACY,KAAZ,UACY,SAAZ,GACY,WAAZ,IACY,cAAZ,WAGQ,OAAR,CACA,CACU,QAAV,OACU,SAAV,QAEA,CACU,QAAV,QACU,SAAV,SAEA,CACU,QAAV,OACU,SAAV,YAIA,GAEM,GAAN,aACA,WACA,CACQ,MAAR,IACQ,OAAR,GACQ,MAAR,CACU,KAAV,CACY,SAAZ,OACY,UAAZ,OACY,KAAZ,cACY,OAAZ,UACY,YAAZ,EACY,GAAZ,EACY,GAAZ,EACY,cAAZ,kBAEU,MAAV,CACY,KAAZ,GACY,KAAZ,GACY,KAAZ,UACY,SAAZ,GACY,cAAZ,UAEU,KAAV,CACY,KAAZ,GACY,KAAZ,GACY,SAAZ,GACY,KAAZ,UACY,cAAZ,WAGQ,OAAR,CACA,CACU,QAAV,OACU,SAAV,QAEA,CACU,QAAV,OACU,SAAV,SAEA,CACU,QAAV,OACU,SAAV,WAIA,GAEM,GAAN,aACA,cACA,CACQ,MAAR,IACQ,OAAR,GACQ,MAAR,CACU,KAAV,CACY,SAAZ,OACY,UAAZ,OACY,KAAZ,UACY,OAAZ,UACY,YAAZ,EACY,GAAZ,EACY,GAAZ,EACY,cAAZ,kBAEU,OAAV,CACY,MAAZ,GACY,OAAZ,GACY,KAAZ,GACY,KAAZ,IAEU,MAAV,CACY,KAAZ,IACY,KAAZ,GACY,KAAZ,UACY,SAAZ,GACY,cAAZ,UAEU,KAAV,CACY,KAAZ,IACY,KAAZ,GACY,SAAZ,GACY,KAAZ,UACY,cAAZ,WAGQ,OAAR,CACA,CACU,QAAV,OACU,SAAV,QAEA,CACU,QAAV,QACU,SAAV,QAEA,CACU,QAAV,OACU,SAAV,SAEA,CACU,QAAV,OACU,SAAV,QAEA,CACU,QAAV,QACU,SAAV,aAIA,GAEM,GAAN,aACA,YACA,CACQ,MAAR,IACQ,OAAR,IACQ,OAAR,CACA,CACU,QAAV,OACU,SAAV,QAEA,CACU,QAAV,QACU,SAAV,WAGQ,MAAR,CACU,KAAV,CACY,SAAZ,OACY,UAAZ,OACY,KAAZ,cACY,OAAZ,cACY,YAAZ,EACY,GAAZ,EACY,GAAZ,EACY,cAAZ,kBAEU,OAAV,CACY,MAAZ,IACY,OAAZ,IACY,KAAZ,GACY,KAAZ,MAIA,GAEM,GAAN,aACA,aACA,CACQ,MAAR,GACQ,OAAR,GACQ,OAAR,CACA,CACU,QAAV,OACU,SAAV,QAEA,CACU,QAAV,QACU,SAAV,UAGQ,MAAR,CACU,KAAV,CACY,SAAZ,OACY,UAAZ,OACY,YAAZ,EACY,GAAZ,EACY,GAAZ,EACY,cAAZ,kBAEU,MAAV,CACY,aAAZ,qCACY,MAAZ,GACY,OAAZ,GACY,EAAZ,EACY,EAAZ,MAIA,GAGM,KAAU,+IAOV3hW,KAAKurN,MAAQ,IAAI,GAAvB,CACQz5L,UAAWhvB,SAASyL,eAAe,aACnCqjM,MAAM,EACNvgL,MAAO,KACPoC,OAAQ,IACR0gO,YAAa,CACX6tE,aAAa,EACb4/B,aAAa,KAGjB5hW,KAAKurN,MAAMnjM,GAAG,UAAU,SAA9B,GACQ,GAAIypN,EAAKptK,SAAU,CACjB,IAAV,4BACU,GAAI53C,EAAM,CACR,IAAZ,qBACc2lB,GAAI,GACJD,GAAI,GACJlhB,MAAO,GACPoC,OAAQ,GACR,aAAc,uCAE5B,oBACY7T,YAAW,WACTiN,EAAKg1U,UAAUloV,EAAMhV,KAAM,KAAO,WAC5B+C,GACF,EAAlB,+BAGA,UAEA,CACA,mCACYozQ,UAAU,IAEN3vO,SAAQ,SAAxB,6CAGMnrC,KAAKurN,MAAMnjM,GAAG,YAAY,SAAhC,GACQ,GAAIypN,EAAKptK,SAAU,CACjB,IAAV,4BACU,GAAI53C,EAAM,CACR,IAAZ,qBACc2lB,GAAI,GACJD,GAAI,GACJlhB,MAAO,GACPoC,OAAQ,GACR,aAAc,uCAE5B,oBAEY7T,YAAW,WACTiN,EAAKg1U,UAAUloV,EAAMhV,KAAM,MAAM,WAC3B+C,GACF,EAAlB,iCAGA,UAEA,CACA,mCACYozQ,UAAU,IAEN3vO,SAAQ,SAAxB,gDAII22T,WAhfJ,SAgfA,GACM,IAAK1lV,EACH,MAAO,KAELA,EAAIsX,SAAStX,GAAjB,IACIvb,EAAIiH,KAAKq4C,MAAM/jC,EAAI,IAAM,GACzB4+B,EAAM5+B,EAAI,GAOd,OANIvb,EAAI,KACNA,EAAI,IAAZ,GAEUm6C,EAAM,KACRA,EAAM,IAAd,GAEa,EAAb,cAEI+mT,UA/fJ,WAsgBM,MANU,CACR,KAAMtsV,KAAKozL,QACX7iK,EAAGvwB,KAAKqzL,aACRohB,EAAGz0M,KAAK4zL,OACR8gB,EAAG10M,KAAKusV,2BAEChiW,KAAK2gW,aAAasB,kBAG/BhqJ,MAzgBJ,WAygBA,WAEMj4M,KAAKurN,MAAM2iG,aACXluT,KAAKshW,iBAAiBthW,KAAK+hW,YAAa,CACtCxvT,EAAG,IACHC,EAAG,MAGLxyC,KAAKghW,kBACX,4CACA,gDACA,CACQ,EAAR,GACQ,EAAR,KAGMhhW,KAAKghW,kBACX,qDACA,qCACA,cAEMhhW,KAAKghW,kBACX,0CACA,8CACA,CACQ,EAAR,GACQ,EAAR,MAGMhhW,KAAKghW,kBACX,mDACA,mCACA,eAEM,IAAIh2V,EAAIhL,KAAKihW,qBACnB,4CACA,2CACA,aACA,6CAEUh2V,EAAIjL,KAAKihW,qBACnB,8CACA,6CACA,cACA,gDAEU3jW,EAAI0C,KAAKihW,qBACnB,2CACA,0CACA,cACA,sCAEUiB,EAAMliW,KAAKohW,cACrB,aACA,uCAGMphW,KAAKuhW,SACX,sBACA,EACA,yCAEMvhW,KAAKuhW,SACX,sBACA,EACA,2CAIA,yCACA,yCACA,0CASQvhW,KAAKuhW,SACb,sBACA,iBACA,wCACA,GAXQvhW,KAAKuhW,SACb,sBACA,EACA,wCACA,IAWA,aAOQ,GANI,EAAZ,oCACU,EAAV,0BAEY,EAAZ,mCACU,EAAV,0BAGA,sCACA,oCACA,CACUxlU,aAAa59B,GACb,IAAIA,EAAIyhB,WAAWsJ,EAAS,MAWhCA,GACA,IAAIi5U,EAAYviV,YAAW,YATjC,aACQ,GAAI,EAAZ,sCACU,EAAV,4BACUmc,aAAaglE,GACb,IAAIA,EAAKnhF,WAAWwiV,EAAU,MAMhCA,GACArmU,aAAaomU,KACrB,MAGIpnU,YA/nBJ,cAioBEioD,QApqBF,WAqqBIhjF,KAAK2hW,cCtsBM,I,OAXC,YACd,ICTW,WAAa,IAAItwM,EAAIrxJ,KAASyyG,EAAG4+C,EAAIhgF,eAAmB4D,EAAGo8E,EAAI9wE,MAAMtL,IAAIw9B,EAAG,OAAOx9B,EAAG,MAAM,CAACyP,YAAY,oBAAoB,CAAE2sE,EAAgB,aAAEp8E,EAAG,MAAM,CAACyP,YAAY,yBAAyB,CAACzP,EAAG,MAAM,CAACyP,YAAY,oBAAoB,CAACzP,EAAG,MAAM,CAACA,EAAG,IAAI,CAACo8E,EAAIn9E,GAAGm9E,EAAI39E,GAAG29E,EAAIsvM,aAAa0B,oBAAsB,SAAShxM,EAAIn9E,GAAG,KAAKe,EAAG,IAAI,CAACo8E,EAAIn9E,GAAGm9E,EAAI39E,GAAG29E,EAAI57I,KAAKogN,4BAA8B,aAAaxkE,EAAIn9E,GAAG,KAAKe,EAAG,MAAM,CAACA,EAAG,IAAI,CAACo8E,EAAIn9E,GAAGm9E,EAAI39E,GAAG29E,EAAIsvM,aAAa2B,eAAiB,SAASjxM,EAAIn9E,GAAG,KAAKe,EAAG,IAAI,CAACo8E,EAAIn9E,GAAGm9E,EAAI39E,GAAG29E,EAAI57I,KAAKqgN,6BAA+B,eAAezkE,EAAIn9E,GAAG,KAAKe,EAAG,KAAK,CAACyP,YAAY,eAAe,CAACzP,EAAG,KAAK,CAACA,EAAG,OAAO,CAACo8E,EAAIn9E,GAAGm9E,EAAI39E,GAAG29E,EAAI57I,KAAK8sV,8BAA8BlxM,EAAIn9E,GAAG,KAAKe,EAAG,OAAO,CAACo8E,EAAIn9E,GAAGm9E,EAAI39E,GAAG29E,EAAIsvM,aAAa6B,kBAAoB,MAAM,UAAUnxM,EAAIn9E,GAAG,KAAKe,EAAG,KAAK,CAACA,EAAG,OAAO,CAACo8E,EAAIn9E,GAAGm9E,EAAI39E,GAAG29E,EAAI57I,KAAKw8M,wBAAwB5gE,EAAIn9E,GAAG,KAAKe,EAAG,OAAO,CAACo8E,EAAIn9E,GAAGm9E,EAAI39E,GAAG29E,EAAIsvM,aAAa8B,aAC15BpxM,EAAI57I,KAAM,2BAA8B47I,EAAIsvM,aAAyB,cACrE,WAAWtvM,EAAIn9E,GAAG,KAAKe,EAAG,KAAK,CAACA,EAAG,OAAO,CAACo8E,EAAIn9E,GAAGm9E,EAAI39E,GAAG29E,EAAI57I,KAAKitV,6BAA6BrxM,EAAIn9E,GAAG,KAAKe,EAAG,OAAO,CAACo8E,EAAIn9E,GAAGm9E,EAAI39E,GAAG29E,EAAIsvM,aAAagC,aAAe,eAAetxM,EAAIl9E,KAAKk9E,EAAIn9E,GAAG,KAAKe,EAAG,MAAM,CAACrlE,MAAM,CAAC,GAAK,eAAeyhJ,EAAIn9E,GAAG,KAAKe,EAAG,MAAM,CAACyP,YAAY,iBAAiB,CAACzP,EAAG,OAAO,CAACo8E,EAAIn9E,GAAGm9E,EAAI39E,GAAG29E,EAAIwvM,eAAexvM,EAAIn9E,GAAG,KAAMm9E,EAAIsvM,cAActvM,EAAIsvM,aAAaG,sBAAsBn/V,OAAO,EAAGszE,EAAG,OAAO,CAAC7sD,GAAG,CAAC,MAAQipI,EAAI0vM,mBAAmB,CAAC1vM,EAAIn9E,GAAGm9E,EAAI39E,GAAG29E,EAAI57I,KAAKmtV,kBAAkB,SAASvxM,EAAIl9E,WAC1f,IDSpB,EACA,KACA,WACA,M,SEbF0uR,GAAep/Q,QAAU,SAAArE,GACrBA,EAAIlG,UAAU2pR,GAAerlW,KAAMqlW,KAGxBA,UCNgM,GCiB/M,CACErlW,KAAM,sBACNysE,OAAQ,CAAC,WAAY,WACrB1nD,KAHF,WAII,MAAJ,CACM,KAAN,0BACM,QAAN,QACM,OAAN,EACM,SAAN,GACM,IAAN,EACM,QAAN,GACM,cAAN,IAGEoJ,MAAF,GAMEyF,SAAF,CACI,eADJ,WAOM,MALN,CACQ,EAAR,kBACQ,EAAR,mBACQ,EAAR,uBAEA,cAEI,gBATJ,WAUM,OAAN,0CACA,EAEA,eAGE4xD,QApCF,WAqCIhjF,KAAK8iW,SAAW9iW,KAAKwhU,UAAUv+S,UAAoB,SACnD,IAAJ,oCACIjjB,KAAK0sM,IAAMk/C,EAAYl/C,IACvB1sM,KAAK6xM,QAAU+5C,EAAY/5C,SAAW,GACtC7xM,KAAK0xM,aAAek6C,EAAYl6C,eCvCrB,I,OAXC,YACd,ICTW,WAAa,IAAIrgD,EAAIrxJ,KAASyyG,EAAG4+C,EAAIhgF,eAAmB4D,EAAGo8E,EAAI9wE,MAAMtL,IAAIw9B,EAAG,OAAOx9B,EAAG,MAAM,CAACyP,YAAY,0BAA0B,CAAE2sE,EAAgB,aAAEp8E,EAAG,MAAM,CAACyP,YAAY,SAAS90E,MAAM,CAAC,IAAM,EAAQ,KAA4D,IAAM,MAAMyhJ,EAAIl9E,KAAKk9E,EAAIn9E,GAAG,KAAOm9E,EAAIqgD,aAAwIrgD,EAAIl9E,KAA9Hc,EAAG,MAAM,CAACyP,YAAY,SAAS90E,MAAM,CAAC,IAAM,EAAQ,KAA0D,IAAM,MAAeyhJ,EAAIn9E,GAAG,KAAKe,EAAG,MAAM,CAACyP,YAAY,OAAO,CAACzP,EAAG,IAAI,CAACwF,MAAM,CAAC,MAAS42E,EAAIyxM,SAASC,eAAiB1xM,EAAIyxM,SAASE,YAAYt4Q,YAAY,CAAC,QAAU,IAAI,OAAS,SAAS,CAAC2mE,EAAIn9E,GAAG,eAAem9E,EAAI39E,GAAG29E,EAAIwgD,SAAS,cAAcxgD,EAAIn9E,GAAG,KAAKe,EAAG,MAAM,CAACyP,YAAY,YAAY,CAACzP,EAAG,MAAM,CAACyP,YAAY,cAAcpgE,MAAM,CAAE,MAAQ,GAAG+sI,EAAI4xM,gBAAgB,gBAC/wB,IDWpB,EACA,KACA,WACA,M,SEdE,GAAkB,CAAC,WAAa,IAAiBxwP,EAATzyG,KAAgBqxE,eAAmB4D,EAAnCj1E,KAA0CugF,MAAMtL,IAAIw9B,EAAG,OAAOx9B,EAAG,MAAM,CAACyP,YAAY,0BAA0B,CAACzP,EAAG,MAAM,CAACyP,YAAY,SAAS90E,MAAM,CAAC,IAAM,EAAQ,KAA4D,IAAM,UCDhE,GCQjN,CACA,6BACA,KAFA,WAGA,OACA,+BACA,gBACA,WAGA,OACA,KACA,YACA,YAGA,UACA,eADA,WAOA,MALA,CACA,oBACA,qBACA,yBAEA,cAEA,gBATA,WAUA,uBCde,I,OAXC,YACd,IHTW,WAAa,IAAiB6iG,EAATzyG,KAAgBqxE,eAAhBrxE,KAA0CugF,MAAMtL,GAAO,OAAvDj1E,KAAkE8zE,GAAG,KGWrG,IACA,EACA,KACA,WACA,M,SCfuM,GCSzM,CACIt2E,KAAM,gBACNmuB,MAAO,CACH+X,OAAQ,CAAEmoC,QAAS,GACnB6gI,IAAK,CAAE7gI,QAAS,GAChBlqE,OAAR,aAEI4gB,KAPJ,WAQQ,MAAO,CACHqqL,OAAQ,EACRjzK,MAAO,OAGfkrC,MAAO,CACH6nI,IADR,SACA,GAC+B,GAAf1sM,KAAK0jC,QAA8B,GAAf1jC,KAAK0jC,QACzB1jC,KAAKupM,WAGb7lK,OANR,SAMA,GACqB,GAALtnB,EAAQpc,KAAK6sM,WAC7B,wBACA,iBAGIphK,QAAS,CACLohK,SADR,WACA,WACY7vB,cAAch9K,KAAK25B,OACnB35B,KAAK25B,MAAQojJ,aAAY,WACjB,EAApB,4BACA,MAEQ+vB,YAPR,WAOA,WACY9vB,cAAch9K,KAAK25B,OACnB35B,KAAK25B,MAAQojJ,aAAY,WACjB,EAApB,4BACA,MAEQwsB,QAbR,WAcYvsB,cAAch9K,KAAK25B,OACnB35B,KAAK4sM,OAAS9kM,KAAK0tB,KAAKx1B,KAAK0sM,IAAM,KAEvCz1K,IAjBR,SAiBA,GAC0B,GAAVyM,EAAa1jC,KAAK6sM,WAClC,wBACA,iBAGI7pH,QAAJ,sBACQhjF,KAAKmiF,WAAU,WACX,EAAZ,mBC3DkN,I,OC6ClN,CACE3kF,KAAM,kBACN+kB,KAFF,WAGI,MAAO,CACL9M,KAAMyyL,OAAOC,IAAIC,SAASC,MAC1B66J,UAAW,GACXjyJ,GAAI,EACJvtK,OAAQ,EACRy/T,QAAQ,EACRC,aAAa,IAGjBjkR,WAAY,CACV4tH,cClDY,YACd,ICTW,WAAa,IAAI17C,EAAIrxJ,KAASyyG,EAAG4+C,EAAIhgF,eAAmB4D,EAAGo8E,EAAI9wE,MAAMtL,IAAIw9B,EAAG,OAAOx9B,EAAG,MAAM,CAACyP,YAAY,sBAAsB2sE,EAAI19E,GAAG,GAAI,SAASjyE,GAAO,OAAOuzE,EAAG,MAAM,CAACz2E,IAAIkD,EAAMgjF,YAAY,uBAAuBjK,MAAM,CAAE,6BAA8B/4E,EAAQ2vJ,EAAIu7C,aAAY,KAC7Q,IDWpB,EACA,KACA,KACA,M,SD6CAjhL,MAAO,CACLg1U,aAAc,CACZp/V,KAAM5D,QAERijW,YAAa,CACXr/V,KAAMuL,SAGVskB,SAAU,GACVyzC,MAAO,GACPoF,OAAQ,CAAC,WAAY,WACrBx+B,QAAS,CAEP43T,OAFJ,cAIErgR,QA9BF,WA8BA,WACQ7vB,EAAQnzD,KAChB,iBACIA,KAAKkjW,UAAYljW,KAAKwhU,UAAUv+S,UAAUqlN,aAAag7H,UAAY,GACnEtjW,KAAKixM,GAAKtsM,EAAKse,UAAUqlN,aAAar3B,GACtCjxM,KAAK0jC,OAAS/+B,EAAKse,UAAUqlN,aAAa5kM,OAC1C1jC,KAAKmjW,OAA6C,GAApCx+V,EAAKse,UAAUqlN,aAAa/mO,KAC1CvB,KAAKmiF,WAAU,WACT,EAAV,qBACQ,EAAR,mBAIIx9E,EAAKyjB,GAAG,eAAe,SAA3B,mBACM+qC,EAAM+vS,UAAYl+T,EAAQ/hB,UAAUqlN,aAAag7H,SACjDnwS,EAAM89I,GAAKjsK,EAAQ/hB,UAAUqlN,aAAar3B,GAC1C99I,EAAMzvB,OAASsB,EAAQ/hB,UAAUqlN,aAAa5kM,OAC9CyvB,EAAMgwS,OAAgD,GAAvCn+T,EAAQ/hB,UAAUqlN,aAAa/mO,WGzErC,I,OAXC,YACd,ICTW,WAAa,IAAI8vJ,EAAIrxJ,KAASyyG,EAAG4+C,EAAIhgF,eAAmB4D,EAAGo8E,EAAI9wE,MAAMtL,IAAIw9B,EAAG,OAAOx9B,EAAG,MAAM,CAACyP,YAAY,6BAA6B,CAACzP,EAAG,IAAI,CAACyP,YAAY,iBAAiBjK,MAAM,CACzL,YAA2B,GAAd42E,EAAI3tH,OACjB,aAA4B,GAAd2tH,EAAI3tH,SACjB,CAAC2tH,EAAIn9E,GAAG,SAASm9E,EAAI39E,GAAG29E,EAAI57I,KAAKw7L,IAAI,MAAM5/C,EAAI39E,GAAG29E,EAAI4/C,IAAI,UAAU5/C,EAAIn9E,GAAG,KAAKe,EAAG,MAAM,CAACyP,YAAY,WAAWjK,MAAM,CACxH,kBAAiC,GAAd42E,EAAI3tH,OACvB,mBAAkC,GAAd2tH,EAAI3tH,OACxB2kQ,KAAMh3I,EAAI8xM,OACVI,KAAMlyM,EAAI8xM,UACR9xM,EAAIn9E,GAAG,KAAKe,EAAG,MAAM,CAACzK,WAAW,CAAC,CAAChtE,KAAK,OAAOoqF,QAAQ,SAAS1pF,MAAOmzJ,EAAe,YAAEv0E,WAAW,iBAAiBu0E,EAAI19E,GAAI09E,EAAa,WAAE,SAASltJ,EAAKzC,GAAO,OAAOuzE,EAAG,MAAM,CAACz2E,IAAIkD,GAAO,CAACuzE,EAAG,MAAM,CAACyP,YAAY,kBAAkBjK,MAAM,CACvO,yBAAwC,GAAd42E,EAAI3tH,OAC9B,0BAAyC,GAAd2tH,EAAI3tH,SAC9B,CAACuxC,EAAG,iBAAiB,CAACrlE,MAAM,CAAC,OAASzL,EAAKu/B,OAAO,IAAMv/B,EAAKuoM,IAAI1kM,QAAQ,IAAK,OAAOqpJ,EAAIn9E,GAAG,KAAKe,EAAG,MAAM,CAACyP,YAAY,WAAWjK,MAAsB,IAAhBt2E,EAAKu/B,OAAe,aAAe,eAAe,CAAC2tH,EAAIn9E,GAAG,eAAem9E,EAAI39E,GAAGvvE,EAAKuoM,IAAI1kM,QAAQ,IAAK,KAAqC,OAA9B7D,EAAKuoM,IAAI1kM,QAAQ,IAAK,IAAe,IAAK,KAAK,iBAAiB,QAAO,OACnT,IDApB,EACA,KACA,WACA,M,SEfgN,GCuBlN,CACExK,KAAM,yBACN+kB,KAFF,WAGI,MAAO,CACL9M,KAAN,0BACMmwL,GAAI,GACJqL,GAAI,GACJvE,IAAK,GACL42J,SAAU,GACV5/T,OAAQ,GACRE,WAAN,CACQ,EAAR,iCACQ,KAAR,kCACQ,EAAR,qCAIEqmC,OAAQ,CAAC,WAAY,WACrB+Y,QAlBF,WAmBI,IAAJ,OACA,iBACA,uBACIhjF,KAAK4lM,GAAK49J,EAAqB,WAC/BxjW,KAAKixM,GAAKuyJ,EAAa,GACvBxjW,KAAKsjW,SAAWE,EAAmB,SACnCxjW,KAAK0sM,IAAM82J,EAAc,IACzBxjW,KAAK0jC,OAAS8/T,EAAiB,OAE/B7+V,EAAKyjB,GAAG,eAAe,SAA3B,OACA,EADA,UACA,uBACM+qC,EAAMyyI,GAAK0iC,EAAyB,WACpCn1K,EAAM89I,GAAKq3B,EAAiB,GAC5Bn1K,EAAMmwS,SAAWh7H,EAAuB,SACxCn1K,EAAMu5I,IAAM47B,EAAkB,IAC9Bn1K,EAAMzvB,OAAS4kM,EAAqB,YCtC3B,I,OAXC,YACd,ICTW,WAAa,IAAIj3E,EAAIrxJ,KAASyyG,EAAG4+C,EAAIhgF,eAAmB4D,EAAGo8E,EAAI9wE,MAAMtL,IAAIw9B,EAAG,OAAOx9B,EAAG,MAAM,CAACyP,YAAY,6BAA6B,CAACzP,EAAG,KAAK,CAACA,EAAG,KAAK,CAACA,EAAG,OAAO,CAACo8E,EAAIn9E,GAAGm9E,EAAI39E,GAAG29E,EAAI57I,KAAK44L,IAAI,OAAOh9C,EAAIn9E,GAAG,KAAKe,EAAG,OAAO,CAACo8E,EAAIn9E,GAAGm9E,EAAI39E,GAAG29E,EAAIu0C,SAASv0C,EAAIn9E,GAAG,KAAKe,EAAG,KAAK,CAACA,EAAG,OAAO,CAACo8E,EAAIn9E,GAAGm9E,EAAI39E,GAAG29E,EAAI57I,KAAKw7L,IAAI,OAAO5/C,EAAIn9E,GAAG,KAAKe,EAAG,OAAO,CAACo8E,EAAIn9E,GAAGm9E,EAAI39E,GAAG29E,EAAI4/C,SAAS5/C,EAAIn9E,GAAG,KAAKm9E,EAAI19E,GAAI09E,EAAY,UAAE,SAASltJ,EAAKlH,GAAG,OAAOg4E,EAAG,KAAK,CAACz2E,IAAIvB,GAAG,CAACg4E,EAAG,OAAO,CAACo8E,EAAIn9E,GAAGm9E,EAAI39E,GAAG29E,EAAIiyM,SAAS3hW,OAAS,EAAK,OAAS1E,EAAE,GAAI,OAAO,QAAQo0J,EAAIn9E,GAAG,KAAKe,EAAG,OAAO,CAACo8E,EAAIn9E,GAAGm9E,EAAI39E,GAAGvvE,EAAKuoM,aAAYr7C,EAAIn9E,GAAG,KAAKe,EAAG,KAAK,CAACA,EAAG,OAAO,CAACo8E,EAAIn9E,GAAGm9E,EAAI39E,GAAG29E,EAAI57I,KAAKiuB,QAAQ,OAAO2tH,EAAIn9E,GAAG,KAAKe,EAAG,OAAO,CAACo8E,EAAIn9E,GAAGm9E,EAAI39E,GAAG29E,EAAIztH,WAAWytH,EAAI3tH,eAAe,OACnsB,IDWpB,EACA,KACA,WACA,M,kIEgCF,IC/CgN,GD+ChN,CACElmC,KAAM,uBACNmuB,MAAO,CACL83U,aAAc,CAAEliW,KAAM5D,QACtB+lW,MAAO,CAAX,eAEEvkR,WAAY,CAAEwkR,uBAAhB,8BACEphV,KAPF,WAQI,MAAO,CACL9M,KAAMyyL,OAAOC,IAAIC,SAASC,MAC1Bu7J,UAAW,GAKXC,cAAe,CACrB,6CACA,6CACA,6CACA,4CACA,4CACA,4CACA,4CAEMpiJ,QAAQ,EACRqiJ,YAAa,IAGjBr4T,QAAS,CAEPs4T,cAFJ,WAEA,WACM/jW,KAAKyjW,aAAgC,kBAAEt4T,SAAQ,SAArD,GACQ,EAAR,mCACUrZ,UAAWhvB,SAASyL,eAAe,eAA7C,iBACUqjM,MAAM,EAAhB,sBACUuiD,YAAa,CAAE6tE,aAAa,EAAO4/B,aAAa,KAElD,EAAR,qDACQ,EAAR,8CAEA,uBACQ,EAAR,YACA,MAGIoC,kBAjBJ,SAiBA,GACM,OAAN,QACA,OACA,YACA,gBACA,iBACA,iBACA,sBAAM,GAGFC,aA3BJ,SA2BA,KACM,IAMN,EANA,4CACA,4CAEA,MACA,KAGA,WACMC,EAAUC,GAAe,EAN/B,IAM8CD,EACxC,IAAN,4BACA,6DAqCM,GApCAE,EAAYC,EAAqB,OAAK,EAAI,EAAkB,EAAdF,EAC9CG,GAAWF,EAEjB,YACQ74I,EAAMqsE,QAAQ,CACZppR,GAAI+1V,EAAc,GAAG7lB,WACrBttS,MAAO,cAAjB,OAfA,IAgBU7uB,KAAM,CAAE+lN,aAAci8H,EAAc,IACpCrrR,UAAW,IACTiG,WAAY,CAAEwkR,uBAA1B,IACYxkW,OAFZ,SAEA,GACc,OAAO0B,EAAE,4BAA6B,MAHpD,aAKA,+BAIA,KACQ2jW,EAAmBr5T,SAAQ,SAAnC,KACU,IAAV,gBACA,sBACUogL,EAAMqsE,QAAQ,CACZppR,GAAIg2V,EAAmB9iW,GAAOg9U,WAC9BttS,MAAO,cAEPmB,EAAG+xT,EAAUD,EAAsB,OAAII,GAAnD,eACYjyT,EAAGkyT,EAhCf,IAgCkCR,EACtB3hV,KAAM,CAAE+lN,aAAck8H,EAAmB9iW,IACzCw3E,UAAW,IACTiG,WAAY,CAAEwkR,uBAA5B,IACcxkW,OAFd,SAEA,2CAFA,aAGA,kCAKA,YAEQ,GAAR,KACU,IAAV,aACUosN,EAAMssE,QAAQ,CACZ9zQ,OAAQ,CAApB,aACYrc,OAAQ,CAApB,eACY0xP,SAAU,CACtB,oBACA,qBAEYxpP,MAAO,CACLqrD,KAAM,CACJprB,OAAQ,UACRskM,YAAa,EACbN,aAAc,CAAEj3L,KAAM,EAAGp/C,KAAM,eAIrC+tN,EAAMssE,QAAQ,CACZ9zQ,OAAQ,CAApB,aACYrc,OAAQ,CAApB,eACY0xP,SAAU,CACtB,oBACA,qBAEYxpP,MAAO,CACLqrD,KAAM,CACJprB,OAAQ,UACRskM,YAAa,EACbN,aAAc,CAAEj3L,KAAM,EAAGp/C,KAAM,eAM/C,WACU+tN,EAAMssE,QAAQ,CACZ9zQ,OAAQ,CAApB,aACYrc,OAAQ,CAApB,eACYkI,MAAO,CACLqrD,KAAM,CACJprB,OAAQ,UACRskM,YAAa,EACbN,aAAc,CAAEj3L,KAAM,EAAGp/C,KAAM,iBAQ3CmkW,UA/HJ,WA+HA,WACM3hW,KAAKyjW,aAAgC,kBAAEt4T,SAAQ,SAArD,GACQ,EAAR,mCACU,UAAV,kDACU,MAAV,wBACU,YAAV,kCAEQ,EAAR,qDACQ,EAAR,+CAIIw5T,SA3IJ,SA2IA,GACA,aACYx5T,SAAQ,SAApB,GACYhnC,EAAKoe,MAA2B,YAAnBpe,EAAKoe,KAAKhhB,MACzBgqN,EAAMt6H,WAAW9sF,OAKvBkrT,aApJJ,WAqJM,IACE,GAAR,4BACUjgI,QAAS,YACT/9J,MAAO,IACPoC,OAAQ,IAERqjP,MAAO,CACL5oQ,OAAQ,CACNizV,OAAQ,CACNvxV,MAAO,CACLkiI,OAAQ,CACN/zI,EAAG,EACHi6O,QAAQ,EACR7D,YAAa,IAGjB3hN,SAAU,CACRh1B,KAAM,WACN2X,KAAM,CACJo9B,EAAG,EACHC,EAAG,OAKX02B,MAAO,CACnB,CACc,GAAd,QACc,MAAd,SACc,KAAd,CACgB,EAAhB,IACgB,EAAhB,KAGA,CACc,GAAd,QACc,MAAd,cAKQ,GAAR,6BACUkmH,QAAS,YACT/9J,MAAO,IACPoC,OAAQ,MAElB,YAGImxU,aAtMJ,SAsMA,cACA,OACMr5I,EAAMnjM,GAAG,mBAAmB,SAAlC,oBAEQ,GAAmB,gBAAfzjB,EAAKysC,MAAyB,CAChC,IAAV,oBACczsC,EAAK6tB,WAAW+f,GAAK,OACvBA,EAAI5tC,EAAK6tB,WAAW+f,EAAI,KAE1B,EAAV,8BACU4gB,EAAMwxS,SAASp5I,GACfA,EAAMqsE,QAAQ,CACZxmP,MAAO,eACPmB,EAAGA,EACHC,EAAG7tC,EAAK6tB,WAAWggB,EAAI,GACvBnhB,MAAO,IACPoC,OAAQ,IACRlR,KAAM,CAAEhhB,KAAM,UAAWiiW,SAAU7+V,EAAKse,UAAUqlN,cAClDpvJ,UAAW,CACTiG,WAAY,CACV0lR,uBAAhB,IAEc1lW,OAJd,SAIA,GACgB,OAAO0B,EAAE,qCAMnB0qN,EAAMnjM,GAAG,mBAAmB,SAAlC,cACQ+qC,EAAMwxS,SAASp5I,QAIrBvoI,QApQF,WAoQA,WAEIhjF,KAAKyjW,aAAgC,kBAAEt4T,SAAQ,SAAnD,GACM,EAAN,mCAEInrC,KAAKmiF,WAAU,WACb,EAAN,eACM,EAAN,iBEvSe,I,OAXC,YACd,ICTW,WAAa,IAAIkvE,EAAIrxJ,KAASyyG,EAAG4+C,EAAIhgF,eAAmB4D,EAAGo8E,EAAI9wE,MAAMtL,IAAIw9B,EAAG,OAAOx9B,EAAG,MAAM,CAACyP,YAAY,0BAA0B,CAAE2sE,EAAIoyM,aAAgC,mBAAKpyM,EAAIoyM,aAAgC,kBAAE9hW,OAAS,IAAM0vJ,EAAIqyM,MAAOzuR,EAAG,MAAM,CAACyP,YAAY,cAAct8D,GAAG,CAAC,MAAQipI,EAAI0yM,gBAAgB,CAAC9uR,EAAG,MAAM,CAACrlE,MAAM,CAAC,IAAM,4CAA4C,IAAM,QAAQyhJ,EAAIl9E,KAAKk9E,EAAIn9E,GAAG,KAAKe,EAAG,eAAe,CAACyV,YAAY,CAAC,OAAS,QAAQ,MAAQ,QAAQ96E,MAAM,CAAC,aAAa,iBAAiByhJ,EAAI19E,GAAI09E,EAAIoyM,aAAiC,mBAAE,SAASt/V,GAAM,OAAO8wE,EAAG,MAAM,CAACz2E,IAAI2F,EAAK8xM,cAAcvxH,YAAY,iBAAiB,CAACzP,EAAG,MAAM,CAACyP,YAAY,iBAAiB,CAACzP,EAAG,IAAI,CAACo8E,EAAIn9E,GAAGm9E,EAAI39E,GAAGvvE,EAAK8xM,kBAAkB5kD,EAAIn9E,GAAG,KAAKe,EAAG,IAAI,CAACo8E,EAAIn9E,GAAGm9E,EAAI39E,GAAG29E,EAAI57I,KAAKw7L,IAAI,KAAK5/C,EAAI39E,GAAGvvE,EAAK8sM,OAAO5/C,EAAIn9E,GAAG,KAAM/vE,EAAQ,IAAE8wE,EAAG,IAAI,CAACo8E,EAAIn9E,GAAG,QAAQm9E,EAAI39E,GAAGvvE,EAAKuoM,QAAQr7C,EAAIl9E,OAAOk9E,EAAIn9E,GAAG,KAAKe,EAAG,MAAM,CAACrlE,MAAM,CAAC,GAAM,SAAYzL,EAAkB,sBAAU,GAAGktJ,EAAIn9E,GAAG,KAAOm9E,EAAIqyM,MAAk1CryM,EAAIl9E,KAA/0Cc,EAAG,MAAM,CAACA,EAAG,aAAa,CAACrlE,MAAM,CAAC,MAAQyhJ,EAAI57I,KAAKmgM,wBAAwB,MAAQ,KAAK,KAAOvkD,EAAIowD,SAAS,CAACxsI,EAAG,MAAM,CAACyP,YAAY,YAAY90E,MAAM,CAAC,IAAM,sCAAsCwY,GAAG,CAAC,MAAQ,SAASkqD,GAAQ++E,EAAIowD,QAAS,MAAUpwD,EAAIn9E,GAAG,KAAKe,EAAG,MAAM,CAACyV,YAAY,CAAC,OAAS,QAAQ,WAAa,UAAU,6BAA6B,MAAM,QAAU,YAAY,4BAA4B,MAAM,aAAa,wBAAwB,CAACzV,EAAG,MAAM,CAACyP,YAAY,gBAAgB,CAAC2sE,EAAIn9E,GAAGm9E,EAAI39E,GAAG29E,EAAI57I,KAAKkiU,cAAc,IAAItmL,EAAI39E,GAAG29E,EAAI57I,KAAKqvV,IAAI,KAAKzzM,EAAI39E,GAAG29E,EAAIoyM,aAAasB,cAAkB,OAAM1zM,EAAIn9E,GAAG,KAAKe,EAAG,eAAe,CAACyV,YAAY,CAAC,OAAS,QAAQ,MAAQ,QAAQ96E,MAAM,CAAC,aAAa,iBAAiByhJ,EAAI19E,GAAI09E,EAAIoyM,aAAiC,mBAAE,SAASt/V,GAAM,OAAO8wE,EAAG,MAAM,CAACz2E,IAAI2F,EAAK8xM,cAAcvxH,YAAY,iBAAiB,CAACzP,EAAG,MAAM,CAACyP,YAAY,iBAAiB,CAACzP,EAAG,IAAI,CAACo8E,EAAIn9E,GAAGm9E,EAAI39E,GAAGvvE,EAAK8xM,kBAAkB5kD,EAAIn9E,GAAG,KAAKe,EAAG,IAAI,CAACo8E,EAAIn9E,GAAGm9E,EAAI39E,GAAG29E,EAAI57I,KAAKw7L,IAAI,KAAK5/C,EAAI39E,GAAGvvE,EAAK8sM,OAAO5/C,EAAIn9E,GAAG,KAAM/vE,EAAQ,IAAE8wE,EAAG,IAAI,CAACo8E,EAAIn9E,GAAG,QAAQm9E,EAAI39E,GAAGvvE,EAAKuoM,QAAQr7C,EAAIl9E,OAAOk9E,EAAIn9E,GAAG,KAAKe,EAAG,MAAM,CAACrlE,MAAM,CAAC,GAAM,eAAkBzL,EAAkB,sBAAU,IAAI,GAAGktJ,EAAIn9E,GAAG,KAAKe,EAAG,0BAA0B,CAACyV,YAAY,CAAC,QAAU,QAAQ96E,MAAM,CAAC,KAAO,SAAS,KAAO,QAAQmgE,KAAK,UAAU,CAACkF,EAAG,SAAS,CAACo8E,EAAIn9E,GAAGm9E,EAAI39E,GAAG29E,EAAI57I,KAAKw3N,eAAe,IAAI,IAAa,KAC/xE,IDWpB,EACA,KACA,WACA,M,SEbF+3H,GAAqBvhR,QAAU,SAAArE,GAC3BA,EAAIlG,UAAU8rR,GAAqBxnW,KAAMwnW,KAG9BA,UCNoL,GCSnM,CACIxnW,KAAM,gBACNmuB,MAAO,CACH+X,OAAQ,CAAEmoC,QAAS,GACnB6gI,IAAK,CAAE7gI,QAAS,GAChBlqE,OAAR,aAEI4gB,KAPJ,WAQQ,MAAO,CACHqqL,OAAQ,EACRjzK,MAAO,OAGfkrC,MAAO,CACH6nI,IADR,SACA,GAC+B,GAAf1sM,KAAK0jC,QAA8B,GAAf1jC,KAAK0jC,QACzB1jC,KAAKupM,WAGb7lK,OANR,SAMA,GACqB,GAALtnB,EAAQpc,KAAK6sM,WAC7B,wBACA,iBAGIphK,QAAS,CACLohK,SADR,WACA,WACY7vB,cAAch9K,KAAK25B,OACnB35B,KAAK25B,MAAQojJ,aAAY,WACjB,EAApB,4BACA,MAEQ+vB,YAPR,WAOA,WACY9vB,cAAch9K,KAAK25B,OACnB35B,KAAK25B,MAAQojJ,aAAY,WACjB,EAApB,4BACA,MAEQwsB,QAbR,WAcYvsB,cAAch9K,KAAK25B,OACnB35B,KAAK4sM,OAAS9kM,KAAK0tB,KAAKx1B,KAAK0sM,IAAM,KAEvCz1K,IAjBR,SAiBA,GAC0B,GAAVyM,EAAa1jC,KAAK6sM,WAClC,wBACA,iBAGI7pH,QAAJ,sBACQhjF,KAAKmiF,WAAU,WACX,EAAZ,mBCxCe,I,OAXC,YACd,ICTW,WAAa,IAAIkvE,EAAIrxJ,KAASyyG,EAAG4+C,EAAIhgF,eAAmB4D,EAAGo8E,EAAI9wE,MAAMtL,IAAIw9B,EAAG,OAAOx9B,EAAG,MAAM,CAACyP,YAAY,sBAAsB2sE,EAAI19E,GAAG,GAAI,SAASjyE,GAAO,OAAOuzE,EAAG,MAAM,CAACz2E,IAAIkD,EAAMgjF,YAAY,uBAAuBjK,MAAM,CAAE,6BAA8B/4E,EAAQ2vJ,EAAIu7C,aAAY,KAC7Q,IDWpB,EACA,KACA,KACA,M,SEfmM,GCqGrM,CACEpvM,KAAM,kBACNmuB,MAAO,CACL2mL,WAAY,CAAhB,wBACI2yJ,aAAc,CAAlB,2BAEE9lR,WAAF,mBACE58D,KAPF,WAQI,MAAO,CACL9M,KAAMyyL,OAAOC,IAAIC,SAASC,MAC1B68J,cAAe,GACfC,WAAY,GACZvhU,WAAN,CACQ,EAAR,iCACQ,KAAR,kCACQ,EAAR,qCAIEihC,MAAO,CACLytI,WADJ,SACA,GAEM,OADAtyM,KAAK49E,SAAS5gE,EAAEkqC,UAAU97C,IACnBA,IAGXqgC,QAAS,CACP,SADJ,SACA,cACMzrC,KAAKklW,cAAgB,GACrBllW,KAAKmlW,WAAa,GAClBvlV,YAAW,WACTwlV,EAAQj6T,SAAQ,SAAxB,GACA,WACA,wBAEA,0BAGA,OAGE63C,QAxCF,WAyCIhjF,KAAK49E,SAAS5gE,EAAEkqC,UAAUlnD,KAAKsyM,eC3HpB,I,OAXC,YACd,ICTW,WAAa,IAAIjhD,EAAIrxJ,KAASyyG,EAAG4+C,EAAIhgF,eAAmB4D,EAAGo8E,EAAI9wE,MAAMtL,IAAIw9B,EAAG,OAAOx9B,EAAG,MAAM,CAAGo8E,EAAI4zM,aAGw1C5zM,EAAIl9E,KAH90Cc,EAAG,MAAM,CAACyP,YAAY,cAAc,CAACzP,EAAG,MAAM,CAACyP,YAAY,eAAe2sE,EAAIn9E,GAAG,KAAKe,EAAG,MAAM,CAACyP,YAAY,eAAe,CAAE2sE,EAAI6zM,cAAcvjW,OAAS,EAAGszE,EAAG,MAAM,CAACyP,YAAY,cAAcgG,YAAY,CAAC,gBAAgB,SAAS2mE,EAAI19E,GAAI09E,EAAiB,eAAE,SAASltJ,GAAM,OAAO8wE,EAAG,MAAM,CAACz2E,IAAI2F,EAAKu6U,WAAWh6P,YAAY,iBAAiB,CAACzP,EAAG,IAAI,CAACyP,YAAY,iBAAiBjK,MAAM,CAAE,YAA4B,GAAft2E,EAAKu/B,OAAY,aAA6B,GAAfv/B,EAAKu/B,SAAc,CAAC2tH,EAAIn9E,GAAG,qBAAqBm9E,EAAI39E,GAAG29E,EAAI57I,KAAKw7L,IAAI,MAAM5/C,EAAI39E,GAAGvvE,EAAK8sM,IAAI,sBAAsB5/C,EAAIn9E,GAAG,KAAKe,EAAG,aAAa,CAACyP,YAAY,OAAO90E,MAAM,CAAC,OAAS,QAAQ,UAAY,UAAU,CAACqlE,EAAG,MAAM,CAACyP,YAAY,eAAejK,MAAM,CAAE,kBAAkC,GAAft2E,EAAKu/B,OAAa,mBAAmC,GAAfv/B,EAAKu/B,UAAe2tH,EAAIn9E,GAAG,KAAKe,EAAG,MAAM,CAACrlE,MAAM,CAAC,KAAO,WAAWmgE,KAAK,WAAW,CAACkF,EAAG,KAAK,CAACA,EAAG,KAAK,CAACA,EAAG,OAAO,CAACo8E,EAAIn9E,GAAGm9E,EAAI39E,GAAG29E,EAAI57I,KAAK44L,IAAI,OAAOh9C,EAAIn9E,GAAG,KAAKe,EAAG,OAAO,CAACo8E,EAAIn9E,GAAGm9E,EAAI39E,GAAGvvE,EAAKu6U,iBAAiBrtL,EAAIn9E,GAAG,KAAKe,EAAG,KAAK,CAACA,EAAG,OAAO,CAACo8E,EAAIn9E,GAAGm9E,EAAI39E,GAAG29E,EAAI57I,KAAKw7L,IAAI,OAAO5/C,EAAIn9E,GAAG,KAAKe,EAAG,OAAO,CAACo8E,EAAIn9E,GAAGm9E,EAAI39E,GAAGvvE,EAAK8sM,SAAS5/C,EAAIn9E,GAAG,KAAKm9E,EAAI19E,GAAIxvE,EAAa,UAAE,SAAS+sM,EAAQj0M,GAAG,OAAOg4E,EAAG,KAAK,CAACz2E,IAAIvB,GAAG,CAACg4E,EAAG,OAAO,CAACo8E,EAAIn9E,GAAGm9E,EAAI39E,GAAGvvE,EAAKm/V,SAAS3hW,OAAS,EAAK,OAAS1E,EAAE,GAAI,OAAO,QAAQo0J,EAAIn9E,GAAG,KAAKe,EAAG,OAAO,CAACo8E,EAAIn9E,GAAGm9E,EAAI39E,GAAGw9H,EAAQxE,aAAYr7C,EAAIn9E,GAAG,KAAKe,EAAG,KAAK,CAACA,EAAG,OAAO,CAACo8E,EAAIn9E,GAAGm9E,EAAI39E,GAAG29E,EAAI57I,KAAKiuB,QAAQ,OAAO2tH,EAAIn9E,GAAG,KAAKe,EAAG,OAAO,CAACo8E,EAAIn9E,GAAGm9E,EAAI39E,GAAG29E,EAAIztH,WAAWz/B,EAAKu/B,eAAe,OAAO2tH,EAAIn9E,GAAG,KAAM/vE,EAAKkhW,UAAYlhW,EAAKm/V,UAAYn/V,EAAKm/V,SAAS3hW,OAAS,EAAGszE,EAAG,MAAMo8E,EAAI19E,GAAIxvE,EAAa,UAAE,SAAS+sM,EAAQxvM,GAAO,OAAOuzE,EAAG,MAAM,CAACz2E,IAAIkD,GAAO,CAACuzE,EAAG,MAAM,CAACyP,YAAY,kBAAkBjK,MAAM,CACvsD,yBAA0B,CAAC,EAAE,EAAE,GAAGv8B,SAASgzJ,EAAQxtK,QACnD,2BAA4B,CAAC,EAAE,EAAE,GAAGwa,SAASgzJ,EAAQxtK,UACpD,CAACuxC,EAAG,gBAAgB,CAACrlE,MAAM,CAAC,OAASshM,EAAQxtK,OAAO,IAAMwtK,EAAQxE,IAAI1kM,QAAQ,IAAK,OAAOqpJ,EAAIn9E,GAAG,KAAKe,EAAG,MAAM,CAACyP,YAAY,WAAWjK,MAAyB,IAAnBy2H,EAAQxtK,OAAe,aAAe,eAAe,CAAC2tH,EAAIn9E,GAAG,2BAA2Bm9E,EAAI39E,GAAGw9H,EAAQxE,IAAI1kM,QAAQ,IAAK,KAAwC,OAAjCkpM,EAAQxE,IAAI1kM,QAAQ,IAAK,IAAe,IAAK,KAAK,6BAA6B,QAAO,GAAGqpJ,EAAIl9E,MAAM,MAAK,GAAGk9E,EAAIl9E,KAAKk9E,EAAIn9E,GAAG,KAAMm9E,EAAI8zM,WAAWxjW,OAAS,EAAGszE,EAAG,MAAM,CAACyP,YAAY,eAAe2sE,EAAI19E,GAAI09E,EAAc,YAAE,SAASltJ,GAAM,OAAO8wE,EAAG,MAAM,CAACz2E,IAAI2F,EAAKu6U,WAAWh6P,YAAY,iBAAiB,CAACzP,EAAG,IAAI,CAACyP,YAAY,iBAAiBjK,MAAM,CAAE,YAA4B,GAAft2E,EAAKu/B,OAAY,aAA6B,GAAfv/B,EAAKu/B,SAAc,CAAC2tH,EAAIn9E,GAAG,qBAAqBm9E,EAAI39E,GAAG29E,EAAI57I,KAAKw7L,IAAI,MAAM5/C,EAAI39E,GAAGvvE,EAAK8sM,IAAI,sBAAsB5/C,EAAIn9E,GAAG,KAAKe,EAAG,aAAa,CAACyP,YAAY,OAAO90E,MAAM,CAAC,OAAS,QAAQ,UAAY,UAAU,CAACqlE,EAAG,MAAM,CAACyP,YAAY,eAAejK,MAAM,CAAE,kBAAkC,GAAft2E,EAAKu/B,OAAa,mBAAmC,GAAfv/B,EAAKu/B,UAAe2tH,EAAIn9E,GAAG,KAAKe,EAAG,MAAM,CAACrlE,MAAM,CAAC,KAAO,WAAWmgE,KAAK,WAAW,CAACkF,EAAG,KAAK,CAACA,EAAG,KAAK,CAACA,EAAG,OAAO,CAACo8E,EAAIn9E,GAAGm9E,EAAI39E,GAAG29E,EAAI57I,KAAK44L,IAAI,OAAOh9C,EAAIn9E,GAAG,KAAKe,EAAG,OAAO,CAACo8E,EAAIn9E,GAAGm9E,EAAI39E,GAAGvvE,EAAKu6U,iBAAiBrtL,EAAIn9E,GAAG,KAAKe,EAAG,KAAK,CAACA,EAAG,OAAO,CAACo8E,EAAIn9E,GAAGm9E,EAAI39E,GAAG29E,EAAI57I,KAAKw7L,IAAI,OAAO5/C,EAAIn9E,GAAG,KAAKe,EAAG,OAAO,CAACo8E,EAAIn9E,GAAGm9E,EAAI39E,GAAGvvE,EAAK8sM,SAAS5/C,EAAIn9E,GAAG,KAAKe,EAAG,KAAK,CAACA,EAAG,OAAO,CAACo8E,EAAIn9E,GAAGm9E,EAAI39E,GAAG29E,EAAI57I,KAAKiuB,QAAQ,OAAO2tH,EAAIn9E,GAAG,KAAKe,EAAG,OAAO,CAACo8E,EAAIn9E,GAAGm9E,EAAI39E,GAAG29E,EAAIztH,WAAWz/B,EAAKu/B,qBAAqB,MAAK,GAAG2tH,EAAIl9E,SAAkBk9E,EAAIn9E,GAAG,KAAMm9E,EAAgB,aAAEp8E,EAAG,MAAM,CAACyP,YAAY,yBAAyB2sE,EAAI19E,GAAI09E,EAAc,YAAE,SAASltJ,GAAM,OAAO8wE,EAAG,MAAM,CAACz2E,IAAI2F,EAAKu6U,WAAWh6P,YAAY,iBAAiB,CAACzP,EAAG,IAAI,CAACyP,YAAY,iBAAiBjK,MAAM,CAAE,YAA4B,GAAft2E,EAAKu/B,OAAY,aAA6B,GAAfv/B,EAAKu/B,SAAc,CAAC2tH,EAAIn9E,GAAG,eAAem9E,EAAI39E,GAAG29E,EAAI57I,KAAKw7L,IAAI,MAAM5/C,EAAI39E,GAAGvvE,EAAK8sM,IAAI,gBAAgB5/C,EAAIn9E,GAAG,KAAKe,EAAG,aAAa,CAACyP,YAAY,OAAO90E,MAAM,CAAC,OAAS,QAAQ,UAAY,UAAU,CAACqlE,EAAG,MAAM,CAACyP,YAAY,eAAejK,MAAM,CAAE,kBAAkC,GAAft2E,EAAKu/B,OAAa,mBAAmC,GAAfv/B,EAAKu/B,UAAe2tH,EAAIn9E,GAAG,KAAKe,EAAG,MAAM,CAACrlE,MAAM,CAAC,KAAO,WAAWmgE,KAAK,WAAW,CAACkF,EAAG,KAAK,CAACA,EAAG,KAAK,CAACA,EAAG,OAAO,CAACo8E,EAAIn9E,GAAGm9E,EAAI39E,GAAG29E,EAAI57I,KAAK44L,IAAI,OAAOh9C,EAAIn9E,GAAG,KAAKe,EAAG,OAAO,CAACo8E,EAAIn9E,GAAGm9E,EAAI39E,GAAGvvE,EAAKu6U,iBAAiBrtL,EAAIn9E,GAAG,KAAKe,EAAG,KAAK,CAACA,EAAG,OAAO,CAACo8E,EAAIn9E,GAAGm9E,EAAI39E,GAAG29E,EAAI57I,KAAKw7L,IAAI,OAAO5/C,EAAIn9E,GAAG,KAAKe,EAAG,OAAO,CAACo8E,EAAIn9E,GAAGm9E,EAAI39E,GAAGvvE,EAAK8sM,SAAS5/C,EAAIn9E,GAAG,KAAKm9E,EAAI19E,GAAIxvE,EAAa,UAAE,SAAS+sM,EAAQj0M,GAAG,OAAOg4E,EAAG,KAAK,CAACz2E,IAAIvB,GAAG,CAACg4E,EAAG,OAAO,CAACo8E,EAAIn9E,GAAGm9E,EAAI39E,GAAGvvE,EAAKm/V,SAAS3hW,OAAS,EAAK,OAAS1E,EAAE,GAAI,OAAO,QAAQo0J,EAAIn9E,GAAG,KAAKe,EAAG,OAAO,CAACo8E,EAAIn9E,GAAGm9E,EAAI39E,GAAGw9H,EAAQxE,aAAYr7C,EAAIn9E,GAAG,KAAKe,EAAG,KAAK,CAACA,EAAG,OAAO,CAACo8E,EAAIn9E,GAAGm9E,EAAI39E,GAAG29E,EAAI57I,KAAKiuB,QAAQ,OAAO2tH,EAAIn9E,GAAG,KAAKe,EAAG,OAAO,CAACo8E,EAAIn9E,GAAGm9E,EAAI39E,GAAG29E,EAAIztH,WAAWz/B,EAAKu/B,eAAe,OAAO2tH,EAAIn9E,GAAG,KAAM/vE,EAAKkhW,UAAYlhW,EAAKm/V,UAAYn/V,EAAKm/V,SAAS3hW,OAAS,EAAGszE,EAAG,MAAMo8E,EAAI19E,GAAIxvE,EAAa,UAAE,SAAS+sM,EAAQxvM,GAAO,OAAOuzE,EAAG,MAAM,CAACz2E,IAAIkD,GAAO,CAACuzE,EAAG,MAAM,CAACyP,YAAY,kBAAkBjK,MAAM,CAC13F,yBAA0B,CAAC,EAAE,EAAE,GAAGv8B,SAASgzJ,EAAQxtK,QACnD,2BAA4B,CAAC,EAAE,EAAE,GAAGwa,SAASgzJ,EAAQxtK,UACpD,CAACuxC,EAAG,gBAAgB,CAACrlE,MAAM,CAAC,OAASshM,EAAQxtK,OAAO,IAAMwtK,EAAQxE,IAAI1kM,QAAQ,IAAK,OAAOqpJ,EAAIn9E,GAAG,KAAKe,EAAG,MAAM,CAACyP,YAAY,WAAWjK,MAAyB,IAAnBy2H,EAAQxtK,OAAe,aAAe,eAAe,CAAC2tH,EAAIn9E,GAAG,qBAAqBm9E,EAAI39E,GAAGw9H,EAAQxE,IAAI1kM,QAAQ,IAAK,KAAwC,OAAjCkpM,EAAQxE,IAAI1kM,QAAQ,IAAK,IAAe,IAAK,KAAK,uBAAuB,QAAO,GAAGqpJ,EAAIl9E,MAAM,MAAK,GAAGk9E,EAAIl9E,SAC1W,IDKpB,EACA,KACA,WACA,M,SEfuM,GC2DzM,CACE32E,KAAM,sBACNmuB,MAAO,CACL83U,aAAc,CAAEliW,KAAM5D,SAExBwhF,WAAY,CAAd,oBACE58D,KANF,WAOI,MAAO,CACL9M,KAAMyyL,OAAOC,IAAIC,SAASC,MAC1BoZ,QAAQ,EACRoiJ,cAAe,CACrB,6CACA,6CACA,6CACA,4CACA,4CACA,4CACA,8CAIEp4T,QAAS,CAEPs4T,cAFJ,WAEA,WACA,uBACQ,EAAR,YACA,MAGIC,kBARJ,SAQA,GACM,OAAN,QACA,OACA,YACA,gBACA,iBACA,iBACA,sBAAM,IAGJhhR,QAvCF,WAwCIhjF,KAAKmiF,WAAU,iBChFJ,I,OAXC,YACd,ICTW,WAAa,IAAIkvE,EAAIrxJ,KAASyyG,EAAG4+C,EAAIhgF,eAAmB4D,EAAGo8E,EAAI9wE,MAAMtL,IAAIw9B,EAAG,OAAOx9B,EAAG,MAAM,CAACyP,YAAY,0BAA0B,CAAE2sE,EAAIoyM,aAAqC,wBAAKpyM,EAAIoyM,aAAqC,uBAAE9hW,OAAS,EAAGszE,EAAG,MAAM,CAACyP,YAAY,cAAct8D,GAAG,CAAC,MAAQipI,EAAI0yM,gBAAgB,CAAC9uR,EAAG,MAAM,CAACrlE,MAAM,CAAC,IAAM,4CAA4C,IAAM,QAAQyhJ,EAAIl9E,KAAKk9E,EAAIn9E,GAAG,KAAKe,EAAG,eAAe,CAACyV,YAAY,CAAC,OAAS,QAAQ,MAAQ,QAAQ96E,MAAM,CAAC,aAAa,iBAAiByhJ,EAAI19E,GAAI09E,EAAIoyM,aAAsC,wBAAE,SAASt/V,GAAM,OAAO8wE,EAAG,MAAM,CAACz2E,IAAI2F,EAAKmhW,OAAO5gR,YAAY,iBAAiB,CAACzP,EAAG,MAAM,CAACyP,YAAY,iBAAiB,CAAEvgF,EAAW,OAAE8wE,EAAG,IAAI,CAACo8E,EAAIn9E,GAAGm9E,EAAI39E,GAAGvvE,EAAKmhW,WAAWj0M,EAAIl9E,KAAKk9E,EAAIn9E,GAAG,KAAKe,EAAG,IAAI,CAACo8E,EAAIn9E,GAAGm9E,EAAI39E,GAAG29E,EAAI57I,KAAKw7L,IAAI,KAAK5/C,EAAI39E,GAAGvvE,EAAKohW,UAAU,iCAAiCl0M,EAAI39E,GAAG29E,EAAI57I,KAAK+vV,2BAA2B,KAAKn0M,EAAI39E,GAAGvvE,EAAKshW,SAAS,mBAAmBp0M,EAAI39E,GAAG29E,EAAI57I,KAAKiwV,8BAA8B,KAAKr0M,EAAI39E,GAAGvvE,EAAKwhW,UAAU,iCAAiCt0M,EAAIn9E,GAAG,KAAM/vE,EAAQ,IAAE8wE,EAAG,IAAI,CAACo8E,EAAIn9E,GAAG,QAAQm9E,EAAI39E,GAAGvvE,EAAKuoM,QAAQr7C,EAAIl9E,OAAOk9E,EAAIn9E,GAAG,KAAM/vE,EAAKihW,SAAWjhW,EAAKihW,QAAQzjW,OAAS,EAAGszE,EAAG,MAAM,CAACyP,YAAY,aAAa,CAACzP,EAAG,kBAAkB,CAACrlE,MAAM,CAAC,WAAazL,EAAKihW,QAAQ,cAAgBjhW,EAAKmhW,WAAW,GAAGj0M,EAAIl9E,UAAS,GAAGk9E,EAAIn9E,GAAG,KAAKe,EAAG,aAAa,CAACrlE,MAAM,CAAC,MAAQyhJ,EAAI57I,KAAKmgM,wBAAwB,MAAQ,KAAK,KAAOvkD,EAAIowD,SAAS,CAACxsI,EAAG,MAAM,CAACyP,YAAY,YAAY90E,MAAM,CAAC,IAAM,sCAAsCwY,GAAG,CAAC,MAAQ,SAASkqD,GAAQ++E,EAAIowD,QAAS,MAAUpwD,EAAIn9E,GAAG,KAAKe,EAAG,MAAM,CAACyV,YAAY,CAAC,OAAS,QAAQ,WAAa,UAAU,6BAA6B,MAAM,QAAU,YAAY,4BAA4B,MAAM,aAAa,wBAAwB,CAACzV,EAAG,MAAM,CAACyP,YAAY,gBAAgB,CAAC2sE,EAAIn9E,GAAGm9E,EAAI39E,GAAG29E,EAAI57I,KAAKkiU,cAAc,IAAItmL,EAAI39E,GAAG29E,EAAI57I,KAAKqvV,IAAI,KAAKzzM,EAAI39E,GAAG29E,EAAIoyM,aAAamC,mBAAmBL,UAAU,gBAAgBl0M,EAAI39E,GAAG29E,EAAI57I,KAAK+vV,2BAA2B,KAAKn0M,EAAI39E,GAAG29E,EAAIoyM,aAAamC,mBAAmBH,SAAS,gBAAgBp0M,EAAI39E,GAAG29E,EAAI57I,KAAKiwV,8BAA8B,KAAKr0M,EAAI39E,GAAG29E,EAAIoyM,aAAamC,mBAAmBD,UAAU,eAAet0M,EAAIn9E,GAAG,KAAKe,EAAG,eAAe,CAACyV,YAAY,CAAC,OAAS,QAAQ,MAAQ,QAAQ96E,MAAM,CAAC,aAAa,iBAAiByhJ,EAAI19E,GAAI09E,EAAIoyM,aAAsC,wBAAE,SAASt/V,GAAM,OAAO8wE,EAAG,MAAM,CAACz2E,IAAI2F,EAAKmhW,OAAO5gR,YAAY,iBAAiB,CAACzP,EAAG,MAAM,CAACyP,YAAY,iBAAiB,CAACzP,EAAG,IAAI,CAACo8E,EAAIn9E,GAAGm9E,EAAI39E,GAAGvvE,EAAKmhW,WAAWj0M,EAAIn9E,GAAG,KAAKe,EAAG,IAAI,CAACo8E,EAAIn9E,GAAGm9E,EAAI39E,GAAG29E,EAAI57I,KAAKw7L,IAAI,KAAK5/C,EAAI39E,GAAGvvE,EAAKohW,UAAU,iCAAiCl0M,EAAI39E,GAAG29E,EAAI57I,KAAK+vV,2BAA2B,KAAKn0M,EAAI39E,GAAGvvE,EAAKshW,SAAS,mBAAmBp0M,EAAI39E,GAAG29E,EAAI57I,KAAKiwV,8BAA8B,KAAKr0M,EAAI39E,GAAGvvE,EAAKwhW,UAAU,iCAAiCt0M,EAAIn9E,GAAG,KAAM/vE,EAAQ,IAAE8wE,EAAG,IAAI,CAACo8E,EAAIn9E,GAAG,QAAQm9E,EAAI39E,GAAGvvE,EAAKuoM,QAAQr7C,EAAIl9E,OAAOk9E,EAAIn9E,GAAG,KAAM/vE,EAAKihW,SAAWjhW,EAAKihW,QAAQzjW,OAAS,EAAGszE,EAAG,MAAM,CAACyP,YAAY,aAAa,CAACzP,EAAG,kBAAkB,CAACrlE,MAAM,CAAC,WAAazL,EAAKihW,QAAQ,cAAgBjhW,EAAKmhW,WAAW,GAAGj0M,EAAIl9E,UAAS,IAAI,GAAGk9E,EAAIn9E,GAAG,KAAKe,EAAG,0BAA0B,CAACyV,YAAY,CAAC,QAAU,QAAQ96E,MAAM,CAAC,KAAO,SAAS,KAAO,QAAQmgE,KAAK,UAAU,CAACkF,EAAG,SAAS,CAACo8E,EAAIn9E,GAAGm9E,EAAI39E,GAAG29E,EAAI57I,KAAKw3N,eAAe,IAAI,KAC9qG,IDWpB,EACA,KACA,WACA,M,uLEfyM,GC4C3M,CACEzvO,KAAM,kBACNmuB,MAAO,CACLm3U,SAAU,CAAEvhW,KAAM5D,QAClB8lW,aAAc,CAAEliW,KAAM5D,QACtB+lW,MAAO,CAAEniW,KAAMoqE,SACfk6R,YAAa,CAAjB,eAEE1mR,WAAY,CAAE2mR,oBAAhB,4BACI,qBAAJ,2BACEvjV,KAVF,WAWI,MAAO,CACL9M,KAAMyyL,OAAOC,IAAIC,SAASC,MAC1BkjB,MAAO,KACPynI,QAAQ,EACR+S,YAAY,EACZC,iBAAiB,EAEjBC,WAAY,CACV5gF,OAAQ,CAAE7nR,KAAM,aAChBkqG,UAAW,CACTlqG,KAAM,UACN2X,KAAM,CACJmoF,OAAQ,KAGZ1tF,MAAO,CACLqrD,KAAM,CACJ44K,aAAc,CACZr2O,KAAM,UACNo/C,KAAM,GAER/M,OAAQ,UACRskM,YAAa,EACbp2O,EAAG,KAKTmoW,cAAe,CACb7gF,OAAQ,CAAE7nR,KAAM,aAChBkqG,UAAW,CACTlqG,KAAM,UACN2X,KAAM,CACJmoF,OAAQ,KAGZ1tF,MAAO,CACLqrD,KAAM,CACJ44K,aAAc,CACZr2O,KAAM,UACNo/C,KAAM,GAER/M,OAAQ,UACRskM,YAAa,EACbp2O,EAAG,KAKTooW,WAAY,CAAC,KAAM,MAAO,OAAQ,WAGtCthS,MAAO,CACLi+R,SADJ,SACA,GACUnlW,OAAOyR,KAAKgN,GAAGza,OAAS,IAAM3B,KAAKgzV,SACrChzV,KAAK2hW,YACL3hW,KAAKgzV,QAAS,IAGlByQ,aAPJ,SAOA,GACUrnV,IACFpc,KAAK+lW,YAAa,EAClB/lW,KAAKqvT,eACLrvT,KAAK2hW,YACL3hW,KAAKomW,cAGTL,WAfJ,SAeA,cACW3pV,EAMHpc,KAAKmiF,WAAU,eALfniF,KAAKmiF,WAAU,WACb,EAAV,YACU,EAAV,iBAOE12C,QAAS,CACP67M,KADJ,WAEM,IAAN,0BACQ,IAAR,8CACUtnP,KAAKwgF,MAAM6lR,gBAAgBzC,UAAUplW,GAAKyxH,UAG9CjwH,KAAK+lW,YAAa,GAGpBK,UAVJ,WAWM,IAAN,GACQ/0U,MAAO,IACPoC,OAAQ,GACR7jB,MAAO,CACLmoM,MAAO,CACLnoK,KAAM,WAERtqB,KAAM,CACJsqB,KAAM,cACNC,OAAQ,iBAId,GAAK7vC,KAAK8iW,SAAkB,SAkBlC,eACA,8FAC2C,GAA/B9iW,KAAK8iW,SAAS/wJ,eAAqD,GAA/B/xM,KAAK8iW,SAAS/wJ,eACpD/xM,KAAKurN,MAAMqsE,QAAQ,GAA7B,CACY7/E,MAAO/3M,KAAK8iW,SAASnxJ,QACrBp/J,EAAG,IAAf,OACA,IAGYvyC,KAAK8iW,SAASpxJ,cAChB1xM,KAAKurN,MAAMqsE,QAAQ,GAA7B,CACY7/E,MAAO/3M,KAAK8iW,SAAS7xJ,GACrB1+J,EAAG,IAAf,MACA,IAGQ,IAAR,+CACSvyC,KAAK8iW,SAASpxJ,eAAe40J,EAAa12V,MAAMqrD,KAAKprB,OAAS,WAC/D7vC,KAAKurN,MAAMssE,QAAQ,GAA3B,CACU9zQ,OAAQ,CAAEwuB,EAAG,IAAKC,EAAG,KACrB9qC,OAAQ,CAAE6qC,EAAG,IAAKC,EAAG,KACrB4mN,SAAU,CACpB,cACA,gBAEA,IAEQp5P,KAAKurN,MAAMssE,QAAQ,GAA3B,CACU9zQ,OAAQ,CAAEwuB,EAAG,IAAKC,EAAG,KACrB9qC,OAAQ,CAAE6qC,EAAG,IAAKC,EAAG,KACrB4mN,SAAU,CACpB,cACA,gBAEA,uBApDqC,CACrC,oBACUhoN,MAAO,4BACPmB,EAAG,IAAb,KACUhwB,KAAM,CAAE,IAAlB,MAEQviB,KAAKurN,MAAMqsE,QAAQ,GAA3B,CACU7/E,MAAO/3M,KAAK8iW,SAAS7xJ,GACrB1+J,EAAG,IACHC,EAAG,KACb,IAEQxyC,KAAKurN,MAAMssE,QAAQ,GAA3B,CACU9zQ,OAAQ,CAAEwuB,EAAG,IAAKC,EAAG,KACrB9qC,OAAQ,CAAE6qC,EAAG,IAAKC,EAAG,KACrB4mN,SAAU,CAAC,CAAE7mN,EAAG,IAAKC,EAAG,OAClC,kBAwCA,mBACY,KAAZ,mDACA,8CACA,6DACA,oDAEUxyC,KAAKurN,MAAMqsE,QAAQ,CACjBppR,GAAI,OAAhB,cACY+jC,EAAG,IACHC,EAAGxyC,KAAK8iW,SAAkB,QAAI,IAAM,IACpCzxU,MAAO,GAAnB,UACYwqP,SAAU,yDAKhB77Q,KAAKurN,MAAMqsE,QAAQ,CAAExmP,MAAO,YAAamB,EAAG,IAAKC,EAAG,GAAIjwB,KAAM,CAAE,IAAtE,MACMviB,KAAKurN,MAAMssE,QAAQ,GAAzB,CACQnwR,OAAQ,CAAE6qC,EAAG,IAAKC,EAAG,KACrBzuB,OAAQ,CAAEwuB,EAAG,IAAKC,EAAG,KACrB4mN,SAAU,CAClB,cACA,gBAEA,kBAEUp5P,KAAK8iW,SAAS7wJ,YAAcjyM,KAAK8iW,SAASx3U,MAC5CtrB,KAAKurN,MAAMqsE,QAAQ,GAA3B,CACU7/E,MAAO/3M,KAAK8iW,SAASx3U,KACrBinB,EAAG,IACHC,EAAG,IACb,IAOUxyC,KAAK8iW,SAASyD,WAAavmW,KAAKurN,OACC,IAA/BvrN,KAAK8iW,SAAS3nJ,cAChBn7M,KAAKurN,MAAMqsE,QAAQ,CAAExmP,MAAO,kBAAmBmB,EAAG,IAAKC,EAAG,IAAKjwB,KAAM,CAAExc,IAAK,MAC5E/F,KAAKurN,MAAMssE,QAAQ,GAA7B,CACYnwR,OAAQ,CAAE6qC,EAAG,IAAKC,EAAG,KACrBzuB,OAAQ,CAAEwuB,EAAG,IAAKC,EAAG,MACjC,uBAGUxyC,KAAKurN,MAAMqsE,QAAQ,CAAExmP,MAAO,iBAAkBmB,EAAG,IAAKC,EAAG,IAAKjwB,KAAM,CAAExc,IAAK,MAC3E/F,KAAKurN,MAAMssE,QAAQ,GAA7B,CACYnwR,OAAQ,CAAE6qC,EAAG,IAAKC,EAAG,KACrBzuB,OAAQ,CAAEwuB,EAAG,IAAKC,EAAG,MACjC,kBAEA,sBACA,uBACA,4CAG6C,IAA/BxyC,KAAK8iW,SAAS3nJ,cAChBn7M,KAAKwmW,YAAY,CAAEj0T,EAAG,IAAKC,EAAG,KAAO,CAAED,EAAG,IAAKC,EAAG,KAAO,MAGtB,IAAnCxyC,KAAK8iW,SAAS2D,kBAChBzmW,KAAKurN,MAAMqsE,QAAQ,CAAExmP,MAAO,gBAAiBmB,EAAG,IAAKC,EAAG,IAAKjwB,KAAM,CAAExc,IAAK,MAC1E/F,KAAKurN,MAAMssE,QAAQ,GAA7B,CACYnwR,OAAQ,CAAE6qC,EAAG,IAAKC,EAAG,KACrBzuB,OAAQ,CAAEwuB,EAAG,IAAKC,EAAG,KACrB4mN,SAAU,CACtB,cACA,gBAEA,uBAGUp5P,KAAKurN,MAAMqsE,QAAQ,CAAExmP,MAAO,YAAamB,EAAG,IAAKC,EAAG,IAAKjwB,KAAM,CAAExc,IAAK,MACtE/F,KAAKurN,MAAMssE,QAAQ,GAA7B,CACYnwR,OAAQ,CAAE6qC,EAAG,IAAKC,EAAG,KACrBzuB,OAAQ,CAAEwuB,EAAG,IAAKC,EAAG,KACrB4mN,SAAU,CACtB,cACA,gBACA,kBAEA,oBACA,uBACcrhD,MAAO/3M,KAAK8iW,SAASlxJ,KACrBr/J,EAAG,IACHC,EAAG,KACjB,MAIA,aACQxyC,KAAKurN,MAAMqsE,QAAQ,CAAExmP,MAAO,YAAamB,EAAG,IAAKC,EAAG,IAAKjwB,KAAM,CAAExc,IAAK,MACtE/F,KAAKurN,MAAMssE,QAAQ,GAA3B,CACUnwR,OAAQ,CAAE6qC,EAAG,IAAKC,EAAG,KACrBzuB,OAAQ,CAAEwuB,EAAG,IAAKC,EAAG,KACrB4mN,SAAU,CACpB,cACA,gBACA,kBAEA,oBACUp5P,KAAKurN,MAAMqsE,QAAQ,GAA7B,CACY7/E,MAAO/3M,KAAK8iW,SAASlxJ,KACrBr/J,EAAG,IAAf,OACA,KAIMvyC,KAAK21D,QAIPA,KAlMJ,WAoMM,IAAN,MACA,MACW31D,KAAK8iW,SAAkB,UAC1B4D,EAAU,IACVC,EAAc,MAEe,GAA3B3mW,KAAK8iW,SAAShxJ,UAAkB9xM,KAAK8iW,SAASpxJ,aAC3C1xM,KAAKmmW,WAAWjoT,SAASl+C,KAAK8iW,SAAS7xJ,KAC1CjxM,KAAKwmW,YAAY,CAAEj0T,EAAG,IAAKC,EAAGk0T,GAAW,CAAEn0T,EAAGo0T,EAAan0T,EAAGk0T,GAAW,KAEnF,wDACa1mW,KAAKmmW,WAAWjoT,SAASl+C,KAAK8iW,SAAS7xJ,KAC1CjxM,KAAKwmW,YAAY,CAAEj0T,EAAGo0T,EAAan0T,EAAGk0T,GAAW,CAAEn0T,EAAG,IAAKC,EAAGk0T,GAAxE,MAKU1mW,KAAK8iW,SAAkB,UACU,GAA/B9iW,KAAK8iW,SAAS/wJ,cACX/xM,KAAKmmW,WAAWjoT,SAASl+C,KAAK8iW,SAASnxJ,UAC1C3xM,KAAKwmW,YACjB,CACc,EAAd,IACc,EAAd,KAEA,CACc,EAAd,IACc,EAAd,KAEA,KAGA,iCACexmW,KAAKmmW,WAAWjoT,SAASl+C,KAAK8iW,SAASnxJ,UAC1C3xM,KAAKwmW,YACjB,CACc,EAAd,IACc,EAAd,KAEA,CACc,EAAd,IACc,EAAd,KAGA,SAOA,yFACA,2EACUxmW,KAAKwmW,YAAY,CAAEj0T,EAAG,IAAKC,EAAG,KAAO,CAAED,EAAG,IAAKC,EAAG,KAAO,KAEnE,2EACUxyC,KAAKwmW,YAAY,CAAEj0T,EAAG,IAAKC,EAAG,KAAO,CAAED,EAAG,IAAKC,EAAG,KAAO,MAMnE,qBACA,8CACA,0BAEQxyC,KAAKwmW,YAAY,CAAEj0T,EAAG,IAAKC,EAAG,KAAO,CAAED,EAAG,IAAKC,EAAG,KAAO,MAK7Dg0T,YA3QJ,SA2QA,OACM,GAAW,KAAP94V,EACF,IAAIquU,EAAW,qCAEXA,EAAW,gCAEjB,IAAN,sBACQ3qS,MAAO,QACPmB,EAAG,EACHC,EAAGzuB,EAAOyuB,EAAI,EACdnhB,MAAO,GACPoC,OAAQ,GACRooP,SAAUkgE,IAElB,yBACUlvT,IACFA,EAAKgO,QAAQ,QAAS,CACpB+rU,cAAe,MACfC,cAAe,IACfj7T,KAAM7nB,EAAOwuB,EACb3X,GAAIlzB,EAAO6qC,EACX61O,IAAK,KACLC,YAAa,eAEfx7P,EAAKgO,QAAQ,QAAS,CACpB+rU,cAAe,MACfC,cAAe,UACfphV,OAAQ,UACR2iQ,IAAK,KACLC,YAAa,iBAKnBy+E,aA7SJ,SA6SA,KACM,GAAN,aACA,EACA,CACQ,MAAR,GACQ,OAAR,GACQ,MAAR,CACU,KAAV,CACY,OAAZ,UACY,YAAZ,GAEU,MAAV,CACY,aAAZ,EACY,MAAZ,GACY,OAAZ,GACY,EAAZ,EACY,EAAZ,IAGQ,OAAR,CACA,CACU,QAAV,OACU,SAAV,QAEA,CACU,QAAV,QACU,SAAV,YAIA,IAKIC,gBAhVJ,SAgVA,KACM,GAAN,aACA,EACA,CACQ,MAAR,GACQ,OAAR,GACQ,MAAR,CACU,KAAV,CACY,OAAZ,UACY,YAAZ,GAEU,MAAV,CACY,aAAZ,EACY,MAAZ,GACY,OAAZ,GACY,EAAZ,EACY,EAAZ,IAGQ,OAAR,CACA,CACU,QAAV,OACU,SAAV,QAEA,CACU,QAAV,QACU,SAAV,YAIA,IAKIpF,UAnXJ,WAoXM,IAEE3hW,KAAKurN,MAAQ,IAAI,GAAzB,CACUz5L,UAAWhvB,SAASyL,eAAe,mBACnCqjM,MAAM,EAGNuiD,YAAa,CACX6tE,aAAa,EACb4/B,aAAa,KAGjB5hW,KAAKgnW,gBACb,SACQzmV,QAAQC,KAAKtY,KAKjBmnT,aAvYJ,WAwYM,IAAIl8P,EAAQnzD,KACZ,IACEA,KAAK8mW,aAAa,YAAa,8BAC/B9mW,KAAK8mW,aAAa,YAAa,8BAC/B9mW,KAAK8mW,aAAa,gBAAiB,kCACnC9mW,KAAK+mW,gBAAgB,iBAAkB,0CACvC/mW,KAAK+mW,gBAAgB,kBAAmB,2CAGxC,GAAR,uCACU33K,QAAS,YACT/9J,MAAO,IACPoC,OAAQ,IACRylD,UAAW,CACTiG,WAAY,CACV2mR,oBAAd,IAEY3mW,OAJZ,SAIA,GACc,OAAO0B,EAAE,yBAA0B,CACjC8qB,MAAO,CACL+gL,IAAKv5I,EAAM2vS,SAASp2J,IACpBmF,QAAS1+I,EAAM2vS,SAASjxJ,SAAW,KACnCH,aAAcv+I,EAAM2vS,SAASpxJ,aAC7BoxJ,SAAU3vS,EAAM2vS,gBAO1B,GAAR,0CACU1zK,QAAS,YACT/9J,MAAO,IACPoC,OAAQ,IACRylD,UAAW,CACTiG,WAAY,CACV8nR,sBAAd,IAEY9nW,OAJZ,SAIA,GACc,OAAO0B,EAAE,4BAA6B,CACpC8qB,MAAO,CACL+gL,IAAKv5I,EAAM2vS,SAASp2J,WAMtC,YAGIs6J,cA1bJ,WA2bM,IAAI7zS,EAAQnzD,KACZA,KAAKurN,MAAMnjM,GAAG,cAAc,SAAlC,mCACuB,QAAXzjB,EAAK6J,KACP2kD,EAAM4yS,YAAa,QAK3B/iR,QA5hBF,WA4hBA,WACIhjF,KAAKmiF,WAAU,WAEb,EAAN,kEACM,EAAN,iFACM,EAAN,wEACM,EAAN,eACM,EAAN,YACM,EAAN,YACU,EAAV,QACQ,EAAR,oBC/jBe,I,OAXC,YACd,ICTW,WAAa,IAAIkvE,EAAIrxJ,KAASyyG,EAAG4+C,EAAIhgF,eAAmB4D,EAAGo8E,EAAI9wE,MAAMtL,IAAIw9B,EAAG,OAAOx9B,EAAG,MAAM,CAACyP,YAAY,qBAAqB,CAAE2sE,EAAI00M,aAAe10M,EAAIqyM,MAAOzuR,EAAG,IAAI,CAACyP,YAAY,cAAc90E,MAAM,CAAC,KAAO,gBAAgBwY,GAAG,CAAC,MAAQipI,EAAIi2F,OAAO,CAACj2F,EAAIn9E,GAAG,SAASm9E,EAAI39E,GAAG29E,EAAI57I,KAAKggM,UAAU,YAAYpkD,EAAIl9E,KAAKk9E,EAAIn9E,GAAG,KAAMm9E,EAAgB,aAAEp8E,EAAG,MAAM,CAACzK,WAAW,CAAC,CAAChtE,KAAK,OAAOoqF,QAAQ,SAAS1pF,MAAOmzJ,EAAc,WAAEv0E,WAAW,eAAe4H,YAAY,kBAAkB,CAAG2sE,EAAIoyM,aAAayD,QAA+L71M,EAAIl9E,KAA1Lc,EAAG,OAAO,CAACyV,YAAY,CAAC,cAAc,SAAS,CAAC2mE,EAAIn9E,GAAG,cAAcm9E,EAAI39E,GAAG29E,EAAI57I,KAAKkiU,cAAc,IAAItmL,EAAI39E,GAAG29E,EAAI57I,KAAKqvV,IAAI,KAAKzzM,EAAI39E,GAAG29E,EAAIoyM,aAAasB,cAAc9zJ,IAAI,YAAqB5/C,EAAIn9E,GAAG,KAAMm9E,EAAIoyM,aAAoB,QAAExuR,EAAG,OAAO,CAACyV,YAAY,CAAC,cAAc,SAAS,CAAC2mE,EAAIn9E,GAAG,cAAcm9E,EAAI39E,GAAG29E,EAAI57I,KAAKkiU,cAAc,IAAItmL,EAAI39E,GAAG29E,EAAI57I,KAAKqvV,IAAI,KAAKzzM,EAAI39E,GAAG29E,EAAIoyM,aAAamC,mBAAmBL,UAAU,gBAAgBl0M,EAAI39E,GAAG29E,EAAI57I,KAAK+vV,2BAA2B,KAAKn0M,EAAI39E,GAAG29E,EAAIoyM,aAAamC,mBAAmBH,SAAS,gBAAgBp0M,EAAI39E,GAAG29E,EAAI57I,KAAKiwV,8BAA8B,KAAKr0M,EAAI39E,GAAG29E,EAAIoyM,aAAamC,mBAAmBD,UAAU,aAAat0M,EAAIl9E,OAAOk9E,EAAIl9E,KAAKk9E,EAAIn9E,GAAG,KAAKe,EAAG,MAAM,CAACzK,WAAW,CAAC,CAAChtE,KAAK,OAAOoqF,QAAQ,SAAS1pF,MAAOmzJ,EAAIyxM,SAAiB,SAAEhmR,WAAW,sBAAsB4H,YAAY,cAAcpgE,MAAM,CAAE+N,MAAOg/H,EAAIw0M,YAAc,QAAU,UAAW,CAAC5wR,EAAG,aAAa,CAACyP,YAAY,OAAO90E,MAAM,CAAC,OAAS,QAAQ,UAAY,QAAQ,CAACqlE,EAAG,MAAM,CAACrlE,MAAM,CAAC,KAAO,WAAWmgE,KAAK,WAAW,CAACshF,EAAIn9E,GAAGm9E,EAAI39E,GAAG29E,EAAI57I,KAAK0xV,gCAAgC91M,EAAIn9E,GAAG,KAAKe,EAAG,MAAM,CAACrlE,MAAM,CAAC,IAAM,2BAA2B,IAAM,SAAS,GAAGyhJ,EAAIn9E,GAAG,KAAOm9E,EAAI00M,WAAuD10M,EAAIl9E,KAA/Cc,EAAG,MAAM,CAACrlE,MAAM,CAAC,GAAK,qBAA8ByhJ,EAAIn9E,GAAG,KAAMm9E,EAAI00M,aAAe10M,EAAIoyM,aAAayD,QAASjyR,EAAG,uBAAuB,CAACphB,IAAI,kBAAkBjkD,MAAM,CAAC,SAASyhJ,EAAIqyM,MAAM,gBAAgBryM,EAAIoyM,gBAAgBpyM,EAAIl9E,KAAKk9E,EAAIn9E,GAAG,KAAMm9E,EAAI00M,YAAc10M,EAAIoyM,aAAayD,QAASjyR,EAAG,sBAAsB,CAACrlE,MAAM,CAAC,gBAAgByhJ,EAAIoyM,gBAAgBpyM,EAAIl9E,MAAM,KAC3/D,IDWpB,EACA,KACA,WACA,M,SEbFizR,GAAgB3jR,QAAU,SAAArE,GACtBA,EAAIlG,UAAUkuR,GAAgB5pW,KAAM4pW,KAGzBA,UCN0L,GCgBzM,CACI5pW,KAAJ,gBACImuB,MAAO,CAGH07U,UAAR,CACY9lW,KAAZ,OACYsqE,QAAZ,IAEQ8zG,MAAR,CACYp+K,KAAZ,OACYsqE,QAAZ,UAGItpD,KAdJ,WAeQ,MAAO,CACH9M,KAAZ,0BACY6xV,SAAZ,GACYC,iBAAZ,KAGIn2U,SAAJ,GAKI+tD,WAAJ,GAEI1zC,QAAJ,CACQ+7T,QAAR,WACY,IAAI/tS,EAAKD,UAAUU,UAAU7wD,cAQ7B,GAPArJ,KAAKsnW,SAAjB,CACgB7zU,OAAhB,OACgBorK,QAAhB,UACgBhoF,MAAhB,OACgB4wP,YAAhB,oCACgBt/T,OAAhB,GAEA,kCACgB,IAAI02J,EAApB,UACoBhoF,EAApB,OACoB4wP,EAApB,8CAEoB5oK,EAApB,UACoBhoF,EAApB,OACoB4wP,EAApB,oCAEgB,gBAAgB74V,KAAK6qD,GACrBz5D,KAAKsnW,SAArB,CACoB7zU,OAApB,sBACoBorK,QAApB,EACoBhoF,MAApB,EACoB4wP,YAApB,EACoBt/T,OAApB,IAEA,2CASA,oBARgBnoC,KAAKsnW,SAArB,CACoB7zU,OAApB,OACoBorK,QAApB,EACoBhoF,MAApB,EACoB4wP,YAApB,EACoBt/T,OAApB,oCAEgBnoC,KAAKunW,iBAAiBv4M,WAAtC,GAWYhvJ,KAAKunW,iBAAiB9zU,OAAlC,uBAGQ9lB,KAjDR,WAkDY3N,KAAKq7E,MAAM,SAEfisK,KApDR,WAqDYtnP,KAAKq7E,MAAM,UAGnB2H,QApFJ,WAqFQhjF,KAAKwnW,YClFE,I,OAXC,YACd,ICTW,WAAa,IAAIn2M,EAAIrxJ,KAASyyG,EAAG4+C,EAAIhgF,eAAmB4D,EAAGo8E,EAAI9wE,MAAMtL,IAAIw9B,EAAG,OAAOx9B,EAAG,MAAM,CAACyP,YAAY,mBAAmB,CAACzP,EAAG,MAAM,CAACyP,YAAY,OAAOpgE,MAAM,CAAEuyF,MAAMw6C,EAAIi2M,SAASzwP,MAAMm4C,WAAWqC,EAAIi2M,SAASzoK,QAAQprK,OAAO49H,EAAIi2M,SAAS7zU,OAAOxiB,IAAIogJ,EAAIi2M,SAASn/T,SAAU,CAAC8sC,EAAG,MAAM,CAACyV,YAAY,CAAC,SAAW,WAAW,KAAO,SAAS,MAAQ,QAAQtiE,GAAG,CAAC,MAAQipI,EAAIi2F,OAAO,CAAGj2F,EAAIg2M,UAAqFh2M,EAAIl9E,KAA9Ec,EAAG,MAAM,CAACyP,YAAY,WAAW90E,MAAM,CAAC,IAAMyhJ,EAAIi2M,SAASG,iBAA0Bp2M,EAAIn9E,GAAG,KAAKe,EAAG,MAAM,CAACyP,YAAY,cAAc,CAAC2sE,EAAIn9E,GAAGm9E,EAAI39E,GAAG29E,EAAIsuB,UAAUtuB,EAAIn9E,GAAG,KAAKe,EAAG,MAAM,CAACyV,YAAY,CAAC,SAAW,WAAW,MAAQ,YAAY2mE,EAAIn9E,GAAG,KAAKe,EAAG,MAAM,CAAC3wD,MAAO+sI,EAAoB,uBAC/pB,IDWpB,EACA,KACA,WACA,M,SEbFq2M,GAAcjkR,QAAU,SAAArE,GACpBA,EAAIlG,UAAUwuR,GAAclqW,KAAMkqW,KAGvBA,I,GAAAA,M,yHCsBf,IC5BwM,ID4BxM,OACElqW,KAAM,eACNmuB,MAAO,GACPpJ,KAHF,WAII,MAAO,CACLrkB,MAAO,GACP0nC,SAAS,KANf,QASA,CAIE,UAAF,CACI,KAAJ,OAEE,MAAF,GACE,aAAF,KAjBA,cAmBA,CACE,QADF,SACA,GAEI,KAAJ,aAtBA,gBAyBA,CACE,KADF,WAEI,KAAJ,YAEE,OAJF,SAIA,GACI,KAAJ,cACI,KAAJ,uBACI,KAAJ,yBACI,KAAJ,cAjCA,4BAqCE,KAAF,2BArCA,IETe,I,OAXC,YACd,ICTW,WAAa,IAAIyrH,EAAIrxJ,KAASyyG,EAAG4+C,EAAIhgF,eAAmB4D,EAAGo8E,EAAI9wE,MAAMtL,IAAIw9B,EAAG,OAAOx9B,EAAG,MAAM,CAACyP,YAAY,iBAAiB,CAACzP,EAAG,IAAI,CAAC7sD,GAAG,CAAC,MAAQipI,EAAI7rI,OAAO,CAAC6rI,EAAIz9E,GAAG,YAAY,GAAGy9E,EAAIn9E,GAAG,KAAKe,EAAG,YAAY,CAACrlE,MAAM,CAAC,MAAQyhJ,EAAIsuB,MAAM,QAAUtuB,EAAIzrH,QAAQ,UAAY,MAAM,oBAAmB,EAAK,cAAa,GAAOxd,GAAG,CAAC,iBAAiB,SAASkqD,GAAQ++E,EAAIzrH,QAAQ0sC,KAAU,CAAC2C,EAAG,KAAKo8E,EAAI19E,GAAI09E,EAAa,WAAE,SAASltJ,GAAM,OAAO8wE,EAAG,KAAK,CAACz2E,IAAI2F,EAAKjG,MAAMwmF,YAAY,iBAAiBjK,MAAM,CAAEktR,QAASt2M,EAAInzJ,OAASiG,EAAKjG,OAAQkqB,GAAG,CAAC,MAAQ,SAASkqD,GAAQ,OAAO++E,EAAIznJ,OAAOzF,MAAS,CAACktJ,EAAIn9E,GAAG,aAAam9E,EAAI39E,GAAGvvE,EAAK4zM,OAAO,iBAAgB,MAAM,KACznB,IDWpB,EACA,KACA,KACA,M,SEbF6vJ,GAAankR,QAAU,SAAArE,GACnBA,EAAIlG,UAAU0uR,GAAapqW,KAAMoqW,KAGtBA,ICN0L,GCsBzM,CACEpqW,KAAM,gBACN+kB,KAFF,WAGI,MAAO,CACL9M,KAAMyyL,OAAOC,IAAIC,SAASC,MAC1B2tB,QAAN,EACM93N,MAAN,IACM2pW,kBAAN,GACMC,UAAN,CACA,CACQ,MAAR,kBACQ,MAAR,IACQ,KAAR,yCACQ,MAAR,OAKE3oR,WAAF,CACIyoR,aFnCWA,IEqCbn8T,QAAF,CACI67M,KADJ,WAEM,IAAN,SACM,IACE,EAAR,yBACA,UAEM,IACE,EAAR,+DACA,YAGIygH,cAZJ,SAYA,GACM/nW,KAAK6nW,kBAAoB1jW,EAAK4zM,MAC9B90M,OAAO2S,SAASG,KAAtB,iQCtCe,I,OAXC,YACd,ICTW,WAAa,IAAIs7I,EAAIrxJ,KAASyyG,EAAG4+C,EAAIhgF,eAAmB4D,EAAGo8E,EAAI9wE,MAAMtL,IAAIw9B,EAAG,OAAOx9B,EAAG,MAAM,CAACA,EAAG,kBAAkB,CAACrlE,MAAM,CAAC,MAAQ,mBAAmBwY,GAAG,CAAC,KAAOipI,EAAIi2F,QAAQj2F,EAAIn9E,GAAG,KAAKe,EAAG,MAAM,CAACyP,YAAY,OAAO,CAACzP,EAAG,MAAM,CAACyP,YAAY,gBAAgB,CAACzP,EAAG,OAAO,CAACyP,YAAY,sBAAsB,CAAC2sE,EAAIn9E,GAAGm9E,EAAI39E,GAAG29E,EAAI57I,KAAKuyV,4BAA4B,iCAAiC32M,EAAIn9E,GAAG,KAAKe,EAAG,gBAAgB,CAACrlE,MAAM,CAAC,UAAYyhJ,EAAIy2M,UAAU,MAAQ,oBAAoB1/U,GAAG,CAAC,cAAgBipI,EAAI02M,eAAezuR,MAAM,CAACp7E,MAAOmzJ,EAAS,MAAE/qJ,SAAS,SAAUu9L,GAAMxyC,EAAInzJ,MAAM2lM,GAAK/mH,WAAW,UAAU,CAAGu0E,EAAIw2M,kBAA2Lx2M,EAAIl9E,KAA5Kc,EAAG,OAAO,CAACyP,YAAY,qBAAqBjK,MAAM,CAAC,YAAY42E,EAAIw2M,oBAAoB,CAACx2M,EAAIn9E,GAAGm9E,EAAI39E,GAAG29E,EAAI57I,KAAKwyV,0BAA0B,+BAAwC52M,EAAIn9E,GAAG,KAAMm9E,EAAqB,kBAAEp8E,EAAG,OAAO,CAACyP,YAAY,sBAAsB,CAAC2sE,EAAIn9E,GAAGm9E,EAAI39E,GAAG29E,EAAIw2M,sBAAsBx2M,EAAIl9E,OAAOk9E,EAAIn9E,GAAG,KAAKe,EAAG,SAAS,CAACyP,YAAY,uBAAuBgG,YAAY,CAAC,QAAU,QAAQ96E,MAAM,CAAC,GAAK,aAAa,IAAM,8CAA8C,YAAc,QAAQ,MAAM,KACpmC,IDWpB,EACA,KACA,KACA,M,SEbFs4V,GAAczkR,QAAU,SAASrE,GAC7BA,EAAIlG,UAAUgvR,GAAc1qW,KAAM0qW,KAGvBA,UCCf,IACA,CACE,KAAF,gBACE,UAAF,KCVsM,GDctM,CACE1qW,KAAM,aACN+kB,KAFF,WAGI,MAAO,CACL9M,KAAMyyL,OAAOC,IAAIC,SAASC,MAC1B8/J,iBAAkB,KAGtB18T,QAAS,CACP28T,YADJ,WAEM,IAAN,KACM,GAAInlW,OAAO2S,SAASG,KAAKtS,QAAQ,KAAO,EAQtC,OAPAR,OAAO2S,SAASG,KACxB,cACA,WACA,qBACU,IAAV,eACU,EAAV,kCAEe9R,EAEP,IAAK,IAAb,2BACcyuD,GAAKzvD,OAAO+/U,eAAenxM,QAAQn/E,KACrCzuD,EAAIyuD,GAAKzvD,OAAO+/U,eAAenxM,QAAQn/E,IAG3C,OAAOzuD,IAIbk7E,WAAY,CACV+oR,cAAJ,IAEEllR,QAjCF,WAiCA,WACIrlF,OAAOyR,KAAKpP,KAAKooW,eAAej9T,SAAQ,SAA5C,GACM,OAAN,gDAEInrC,KAAKmoW,iBAAmBjnD,GAAOxvS,MACnC,YAAM,OAAN,8DACA,OEnCe,GAXC,YACd,ICRW,WAAa,IAAiB+gG,EAATzyG,KAAgBqxE,eAAmB4D,EAAnCj1E,KAA0CugF,MAAMtL,IAAIw9B,EAAG,OAAOx9B,EAAG,MAAM,CAACA,EAAxEj1E,KAA+EmoW,iBAAiB,CAACv2V,IAAI,eAAe,KAChI,IDUpB,EACA,KACA,KACA,M,QEZFy2V,GAAW5kR,QAAU,SAASrE,GAC1BA,EAAIlG,UAAUmvR,GAAW7qW,KAAM6qW,KAGpBA,UCLf,SAASC,GAAa3jW,GAClB,IAAI6tB,EAAW7tB,EAAK6tB,WAChBoqB,EAAOj4C,EAAKi4C,OACZ2rT,EAAU/1U,EAAS+f,EAAIqK,EAAKvrB,MAAQ,EACpCm3U,EAAUh2U,EAASggB,EAAIoK,EAAKnpB,OAAS,EACrCg1J,EAAK9jL,EAAK+nP,WAAa5kP,KAAK+vB,GAAM,IAClC4wU,EAAc,CACd,CACIl2T,EAAG/f,EAAS+f,EACZC,EAAGhgB,EAASggB,GAEhB,CACID,EAAG/f,EAAS+f,EAAIqK,EAAKvrB,MACrBmhB,EAAGhgB,EAASggB,GAEhB,CACID,EAAG/f,EAAS+f,EAAIqK,EAAKvrB,MACrBmhB,EAAGhgB,EAASggB,EAAIoK,EAAKnpB,QAEzB,CACI8e,EAAG/f,EAAS+f,EACZC,EAAGhgB,EAASggB,EAAIoK,EAAKnpB,SAGzBi1U,EAAiB,GAarB,OAZAD,EAAYt9T,SAAQ,SAAChnC,GACjBukW,EAAelmW,KAAK,CAChB+vC,EACIzqC,KAAK8vB,IAAI6wJ,IAAMtkL,EAAKouC,EAAIg2T,GACxBzgW,KAAK0tD,IAAIizH,IAAMtkL,EAAKquC,EAAIg2T,GACxBD,EACJ/1T,EACI1qC,KAAK0tD,IAAIizH,IAAMtkL,EAAKouC,EAAIg2T,GACxBzgW,KAAK8vB,IAAI6wJ,IAAMtkL,EAAKquC,EAAIg2T,GACxBA,OAGLE,EAQJ,SAASC,GAAgBhkW,EAAM4mN,GAClC,IAAIq9I,EAAejkW,EACfkkW,GAAc,EAId1lW,EAAM,GAEN2lW,EAAav9I,EAAM66C,WAAW50P,QAAO,SAACrN,GACtC,OAAOA,EAAKqK,KAAO7J,EAAK6J,MA6E5B,OA1EAs6V,EAAW39T,SAAQ,SAAChnC,GAEhB,IAAI4kW,EAAkBT,GAAaM,GACnCG,EAAgB59T,SAAQ,SAAC2xK,GACrB,IAAIvqK,EAAIuqK,EAAMvqK,EACVC,EAAIsqK,EAAMtqK,EACVw2T,EACG7kW,EAAKquB,WAAW+f,EADnBy2T,EAEG7kW,EAAKquB,WAAWggB,EAFnBw2T,EAGO7kW,EAAKy4C,OAAOvrB,MAHnB23U,EAIQ7kW,EAAKy4C,OAAOnpB,OAGpBmvO,EACGomG,EAASA,EAAa,EADzBpmG,EAEGomG,EAASA,EAAc,EAE1Bh+V,GANK7G,EAAKuoP,WAMO5kP,KAAK+vB,GAAM,IAC5B2lE,GAAMjrD,EAAIqwN,GAAQ96P,KAAK8vB,IAAI5sB,IAAMwnC,EAAIowN,GAAQ96P,KAAK0tD,IAAIxqD,GAAK43P,EAC3DnlK,GAAMlrD,EAAIqwN,GAAQ96P,KAAK0tD,IAAIxqD,IAAMwnC,EAAIowN,GAAQ96P,KAAK8vB,IAAI5sB,GAAK43P,EAC3DqmG,EAAaD,EAASA,EAAaD,EAAgB,GAAGx2T,GAAKy2T,EAASD,EAAgB,GAAGx2T,EACvF22T,EAAaF,EAASD,EAAgB,GAAGv2T,GAAKw2T,EAASA,EAAcD,EAAgB,GAAGv2T,EAC5F,GACIgrD,GAAMwrQ,GACNxrQ,GAAMwrQ,EAASA,GACfvrQ,GAAMurQ,GACNvrQ,GAAMurQ,EAASA,GAEfC,GAAcC,EAChB,CAIML,GAAc,EAGlB1lW,EAAIX,KAAK2B,GACT,IAAMoC,EAAM,IAAI45D,IAChBh9D,EAAMA,EAAIqO,QAAO,SAACrO,GAAD,OAAUoD,EAAI8U,IAAIlY,EAAIqL,KAAOjI,EAAI+b,IAAInf,EAAIqL,GAAI,aAK1Es6V,EAAW39T,SAAQ,SAAChnC,GACMmkW,GAAankW,GACnBgnC,SAAQ,SAAC2xK,GACrB,IAAIvqK,EAAIuqK,EAAMvqK,EACVC,EAAIsqK,EAAMtqK,EACVw2T,EACGJ,EAAap2U,WAAW+f,EAD3By2T,EAEGJ,EAAap2U,WAAWggB,EAF3Bw2T,EAGOJ,EAAahsT,OAAOvrB,MAH3B23U,EAIQJ,EAAahsT,OAAOnpB,OAG5BmvO,EACGomG,EAASA,EAAa,EADzBpmG,EAEGomG,EAASA,EAAc,EAE1Bh+V,GANK49V,EAAal8G,WAMD5kP,KAAK+vB,GAAM,IAC5B2lE,GAAMjrD,EAAIqwN,GAAQ96P,KAAK8vB,IAAI5sB,IAAMwnC,EAAIowN,GAAQ96P,KAAK0tD,IAAIxqD,GAAK43P,EAC3DnlK,GAAMlrD,EAAIqwN,GAAQ96P,KAAK0tD,IAAIxqD,IAAMwnC,EAAIowN,GAAQ96P,KAAK8vB,IAAI5sB,GAAK43P,EAE3DplK,GAAMwrQ,GACNxrQ,GAAMwrQ,EAASA,GACfvrQ,GAAMurQ,GACNvrQ,GAAMurQ,EAASA,IAEfH,GAAc,SAMnB,CACHA,YAAYA,EACZM,WAAWhmW,GCtInB,ICAmN,GCenN,CACE3F,KAAM,oBACN+kB,KAFF,WAGI,MAAO,CACLk/S,UAAU,EACVC,UAAW,IAIf/1S,MAAO,CACLg2S,QAASzlQ,OACT0pI,GAAI,CACFrkM,KAAMuL,OACN++D,QAAS,IAEXruE,KAAM,CACJ+D,KAAMuL,QAERk6Q,OAAQ,CACNzlR,KAAMuL,OACN++D,QAAS,KAGblzD,QAAS,GASTyY,SAAU,CACRg4U,gBADJ,WAEM,IACI1nC,EAAY,IACZhrQ,EAFI12D,KAAK2hU,QAEnB,QAYM,OAXIjrQ,GAAO,IAAMA,GAAO,KACtBgrQ,EAAY,IACZ1hU,KAAKyhU,UAAW,GACxB,gBACQC,EAAY,GACpB,iBACQA,GAAa,IAEb1hU,KAAKyhU,UAAW,EAChBC,EAAY,GAEPA,IAGX78P,MAAO,CACL88P,QADJ,SACA,GACM,IAAIjrQ,EAAM,EAAhB,QACUA,GAAO,IAAMA,GAAO,KACtB12D,KAAK0hU,UAAY,IACjB1hU,KAAKyhU,UAAW,GACxB,gBACQzhU,KAAK0hU,UAAY,GACzB,iBACQ1hU,KAAK0hU,WAAa,IAElB1hU,KAAKyhU,UAAW,EAChBzhU,KAAK0hU,UAAY,GAEnB1hU,KAAKi3E,gBAEP2uH,GAhBJ,SAgBA,GACM5lM,KAAKq7E,MAAM,YAAa,CACtB2rM,OAAQhnR,KAAKgnR,OACbphF,GAAI5lM,KAAK4lM,OAUf37H,OAAQ,CAAC,WACTx+B,QAAS,GACTu3C,QAlFF,cCIe,I,OAXC,YACd,IHTW,WAAa,IAAIquE,EAAIrxJ,KAASyyG,EAAG4+C,EAAIhgF,eAAmB4D,EAAGo8E,EAAI9wE,MAAMtL,IAAIw9B,EAAG,OAAOx9B,EAAG,MAAM,CAACyP,YAAY,gBAAgB,CAACzP,EAAG,MAAM,CAACphB,IAAI,aAAa,CAACohB,EAAG,MAAM,CAACyP,YAAY,UAAUpgE,MAAM,CAAGkvB,UAAW,WAAa69G,EAAIqwK,UAAY,QAAU9xT,MAAM,CAAC,KAAOyhJ,EAAIswK,UAAU,CAACtwK,EAAIn9E,GAAG,WAAWm9E,EAAI39E,GAAG29E,EAAIu0C,IAAI,YAAYv0C,EAAIn9E,GAAG,KAAKe,EAAG,IAAI,CAACyP,YAAY,UAAUjK,MAAM,CAAEqnP,QAASzwK,EAAIowK,WAAY,CAACpwK,EAAIn9E,GAAG,WAAWm9E,EAAI39E,GAAG29E,EAAI7zJ,MAAM,oBACja,IGWpB,EACA,KACA,WACA,M,4LCTMo3T,GAAQy0C,EAARz0C,ICN0I,GDOnI,CACbp3T,KAAM,yBACN+kB,KAFa,WAGX,MAAO,CACLylN,WAAY,QACZ+yG,sBAAsB,EACtBuuB,UAAU,EACVC,YAAY,EACZC,YAAY,EACZ/zV,KAAMyyL,OAAOC,IAAIC,SAASC,MAC1BkjB,MAAO,KACPq9I,aAAc,KACda,cAAe,EACfX,WAAY,GACZY,eAAgB,GAChBC,OAAQ,GACRC,WAAY,KACZtyC,IAAK,KACLuyC,WAAY,GACZ9gB,KAAM,KACNnjL,OAAO,EACP09J,SAAU,EACVwmC,UAAWr0V,KAAKs0V,wBAChBlmC,SAAU,GACVmmC,YAAa,GACbnvJ,UAAW+L,aAAajH,MACxBp+M,KAAMqlN,aAAarlN,KACnB0oW,eAAe,IAGnB9qR,WAAY,CAAE+qR,qBACdrlS,MAAO,GACPl5C,MAAO,GACPq3D,QAjCa,WAkCXhjF,KAAKiiU,YACLjiU,KAAKmqW,UACLnqW,KAAKoqW,gBACLpqW,KAAK0/U,gBACa,QAAd1/U,KAAKuB,KAEPvB,KAAKqqW,mBACkB,SAAdrqW,KAAKuB,MAEdvB,KAAKsqW,qBAGT7+T,QAAS,CAGP4+T,iBAHO,WAGY,WACjBrqW,KAAKuqW,oBAAoBnmU,SAAQ,SAACy9B,GAChC,IAAMt/C,EAAOs/C,EAAIt/C,KACbA,GAAiB,MAATA,IACV,EAAKmnV,eAAiBnnV,EAAKnX,KAAK7E,KAAI,SAAApC,GAClC,aACKA,EADL,CAEEqmW,eAAgB,OAGpB,EAAKC,uBAKXF,kBAlBO,WAmBL,OAAOtqK,OAAOwC,KAAK,qCAAsC,CACvDkd,MAAOiH,aAAajH,SAGxB8qJ,gBAvBO,WAuBW,WAChBzqW,KAAK0pW,eAAev+T,SAAQ,SAAChnC,EAAM4vM,GACjC,IAAK,IAAIO,EAAS,EAAGA,EAASnwM,EAAKumW,QAASp2J,IAAU,CACpD,IAAMstH,EAAQ,CACZpzT,GAAI,MAAQy9G,kBACZ25E,GAAI,GACJpoM,KAAM,GACN8uE,KAAM,CACJ/5B,EAAkB,KAAd+hK,EAAS,GAAW,GACxB9hK,EAAe,KAAXuhK,EAAM,GAAW,GACrBr/I,MAAO,IAGXktQ,EAAA,OAAkBA,EAAMpzT,GACxB,EAAK0zT,iBAAiBN,GACtB,EAAK+nC,OAAOnnW,KAAKo/T,GACjB,EAAK0B,gBAKXgnC,kBA5CO,WA4Ca,WAClBtqW,KAAKuqW,oBAAoBnmU,SAAQ,SAACy9B,GAChC,IAAMt/C,EAAOs/C,EAAIt/C,KACbA,GAAiB,MAATA,IACV,EAAKmnV,eAAiBnnV,EAAKnX,KAAK7E,KAAI,SAAApC,GAClC,aACKA,EADL,CAEEqmW,eAAgB,OAGpB,EAAK3mC,SAAWthT,EAAKooV,UACrB,EAAKC,wBAKXA,iBA5DO,WA4DY,WACjBpyR,QAAQkuI,cACRzmB,OACG4qK,YAAY,oCAAqC,CAAEhnC,SAAU7jU,KAAK6jU,WAClE/mT,MAAK,SAAC+kD,GACL,IAAMt/C,EAAOs/C,EAAIt/C,KACbA,GAAiB,MAATA,IACV,EAAKuoV,qBAAqBvoV,EAAKmnV,gBAC/B,EAAKC,OAASpnV,EAAKggT,OACnB,EAAKe,SAAW/gT,EAAK+gT,UAAY/gT,EAAKggT,OAAO5gU,OAC7C,EAAKmoW,UAAYvnV,EAAK/kB,KACtB,EAAKqmU,SAAWthT,EAAK/T,GACrB,EAAKw7V,YAAcznV,EAAKggT,OAAOh8T,KAAI,SAAApC,GAAA,OAAQA,EAAKqK,OAGlD,EAAKu8V,eACLvyR,QAAQsuI,gBAEThmM,OAAM,WAAQ03D,QAAQsuI,iBAE3BgkJ,qBAhFO,SAgFcpB,GACnB1pW,KAAK0pW,eAAev+T,SAAQ,SAAAhnC,GAC1B,IAAMoe,EAAOmnV,EAAel4V,QAAO,SAAAw5V,GAAA,OAAMA,EAAGplK,KAAOzhM,EAAKyhM,MACpDrjL,EAAK,KACPpe,EAAKqmW,eAAiBjoV,EAAK,GAAGioV,gBAAkB,OAKtDvoC,UAzFO,WA0FLjiU,KAAKurN,MAAQ,IAAI+7F,GAAM,CACrBx1R,UAAWhvB,SAASyL,eAAe,eACnC8iB,MAAO,IACPoC,OAAQ,IACRm+K,MAAM,EACN65F,YAAY,EACZpL,UAAU,EACVpM,SAAU,CACRl3I,SAAS,EACT29J,UAAU,GAEZ5sK,WAAY,CACViP,SAAS,EACT0kJ,SAAU,IACVC,SAAU,EACVh6M,UAAW,CAAC,OAAQ,SAEtBsvN,UAAU,EACVtW,QAAS,CACP3jJ,SAAS,EACTmjK,WAAW,EACXC,cAAc,EACdE,iBAJO,SAIU73R,EAAOrT,GACtB,GAAc,iBAAVqT,GACF,GAAyC,IAArC7qB,OAAOyR,KAAK+F,EAAKxV,SAASgC,QAAgBhE,OAAOyR,KAAK+F,EAAKxV,SAASu+C,SAAS,WAC/E,OAAO,OAEJ,GAAc,eAAV11B,GACL7qB,OAAOyR,KAAK+F,EAAKxV,SAASu+C,SAAS,WACrC,OAAO,IAKf64P,QAAS,CACPh6J,SAAS,EACTjrH,UAAWhvB,SAASyL,eAAe,WACnC8iB,MAAO,IACPoC,OAAQ,IACR0sQ,aAAc,CACZx+P,OAAO,EACP+nQ,eAFY,SAEG73D,GAEb,GAAIA,EAAKptK,SACP,OAAO,WAQnBsmS,aA9IO,SA8IMjoJ,GACX,GAAIA,EAAW,CAEb,IAAMn7L,EAAQ3nB,KAAKirW,oBACnBjrW,KAAK2pW,OAAOx+T,SAAQ,SAAC8lK,GACnBtpL,EAAMwjB,SAAQ,SAACxmC,GACb,GAAIA,EAAK4d,KAAKykQ,SAAW/1E,EAAG+1E,OAAQ,CAClC,IAAMx0P,EAAW7tB,EAAKkwP,cACtB5jD,EAAGrL,GAAKqL,EAAGrL,IAAMjhM,EAAK4d,KAAKuqN,WAC3B77B,EAAGzzM,KAAOyzM,EAAGzzM,MAAQmH,EAAK4d,KAAK/kB,KAC/ByzM,EAAG1+J,EAAI/f,EAAS+f,EAChB0+J,EAAGz+J,EAAIhgB,EAASggB,EAChBy+J,EAAGv8I,MAAQ/vD,EAAK+nP,kBAItB1sP,KAAKurN,MAAM2iG,aAEb,IAAM/6P,EAAQnzD,KACdA,KAAK2pW,OAAOx+T,SAAQ,SAAChnC,EAAMzC,GACzB,IAAKohN,EAAW,CACd,IAAMx2I,EAAOnoE,EAAKmoE,KAClBnoE,EAAA,EAAYmoE,EAAK/5B,EACjBpuC,EAAA,EAAYmoE,EAAK95B,EACjBruC,EAAA,MAAgBmoE,EAAK5X,MACrBvwD,EAAA,GAAaA,EAAK2oO,WAClB3oO,EAAA,OAAiBA,EAAK+mW,OACtB/mW,EAAA,OAAiBA,EAAKgnW,OAExBhnW,EAAA,OAAiBA,EAAKqK,IAClBrK,EAAKouC,GAAKpuC,EAAKmoE,OACjBnZ,EAAM+uQ,iBAAiB/9T,OAK7B+9T,iBAlLO,SAkLU/9T,EAAM5C,GACrB,IAAM4xD,EAAQnzD,KACR2E,EAAO,CACXysC,MAAO,YACPmB,EAAGpuC,EAAKouC,GAAKpuC,EAAKmoE,KAAK/5B,EACvBC,EAAGruC,EAAKquC,GAAKruC,EAAKmoE,KAAK95B,EACvBhkC,GAAIrK,EAAK6iR,OACTtyN,MAAOvwD,EAAKuwD,OAASvwD,EAAKmoE,KAAK5X,MAC/BrjC,MAAO,GACPoC,OAAQ,IACR7jB,MAAO,CACL0V,KAAM,CACJuqB,OAAQ,YAGZttB,KAAM,CACJykQ,OAAQ7iR,EAAK6iR,OACbphF,GAAIzhM,EAAKyhM,GACTpoM,KAAM2G,EAAK3G,KACX0tW,OAAQ/mW,EAAK+mW,OACbC,OAAQhnW,EAAKgnW,QAEfjyR,UAAW,CACT32D,KADS,WAEP,MAAO,CACLo/S,QAAS,EACT/7H,GAAIzhM,EAAKyhM,GACTohF,OAAQ7iR,EAAK6iR,OACbxpR,KAAM2G,EAAK3G,KACX0tW,OAAQ/mW,EAAK+mW,OACbC,OAAQhnW,EAAKgnW,SAGjBhsR,WAAY,CACVisR,sBAEFjsW,OAdS,SAcF0B,GACL,OAAOA,EAAE,qBAAsB,CAC7B8qB,MAAO,CACLg2S,QAAS3hU,KAAK2hU,QACd/7H,GAAI5lM,KAAK4lM,GACTohF,OAAQhnR,KAAKgnR,OACbxpR,KAAMwC,KAAKxC,MAEb4qB,GAAI,CACFijV,UADE,SACQ9oV,GACR4wC,EAAMw2S,OAAOx+T,SAAQ,SAAChnC,GAChBA,EAAK6iR,SAAWzkQ,EAAKykQ,SACvB7iR,EAAKyhM,GAAKrjL,EAAKqjL,OAGnBzyI,EAAM02S,WAAW1lW,EAAK6iR,QAAQphF,GAAKrjL,EAAKqjL,GACxCzyI,EAAM02S,WAAW1lW,EAAK6iR,QAAQx4Q,GAAK+T,EAAK/T,GAExC2kD,EAAM43S,cAAa,QAK3B/nR,QArCS,WAsCP7vB,EAAM02S,WAAW1lW,EAAK6iR,QAAUhnR,QAKtC,GADAA,KAAKurN,MAAMqsE,QAAQjzR,GACfpD,EAAM,CACR,IAAM+pW,EAAW,CACftkF,OAAQ7iR,EAAK6iR,OACbphF,GAAIzhM,EAAKyhM,GACTpoM,KAAM2G,EAAK3G,KACX+0C,EAAGpuC,EAAKouC,GAAKpuC,EAAKmoE,KAAK/5B,EACvBC,EAAGruC,EAAKquC,GAAKruC,EAAKmoE,KAAK95B,EACvBkiB,MAAOvwD,EAAKuwD,OAASvwD,EAAKmoE,KAAK5X,OAEjC10D,KAAKurW,aAAaD,EAAU,YAE9B,OAAO3mW,GAMT+6U,cApQO,WAqQL1/U,KAAKgoO,WAAa,QACY,UAA1Bq3G,UAAU,cACZr/U,KAAKgoO,WAAa,SAEU,UAA1Bq3G,UAAU,cACZr/U,KAAKgoO,WAAa,SAEU,UAA1Bq3G,UAAU,cACZr/U,KAAKgoO,WAAa,UAItBwjI,iBAjRO,WAkRLxrW,KAAK+6U,sBAAuB,GAG9BtF,iBArRO,SAqRU5wU,GAAK,WACpB,GAAIA,EAAIoY,KAAM,CACZ,IAAI6+U,EAAS,GACI,MAAbj3V,EAAItD,KACNu6V,EAAOt5V,KAAKqC,EAAIytM,WAAW,GAAG+2B,OAE9ByyH,EAASj3V,EAAIytM,WAEftyM,KAAKuqW,oBAAoBnmU,SAAQ,SAACy9B,GAChC,IAAMt/C,EAAOs/C,EAAIt/C,KACjB,GAAIA,GAAiB,MAATA,EAAiB,CAC3B,IAAMkpV,EAAoBlpV,EAAKnX,KACzBsgW,EAAQ,EAAKhC,eAAenjW,KAAI,SAAApC,GAAA,OAAQA,EAAKyhM,MACnD6lK,EAAkBtgU,SAAQ,SAAAhnC,GACnBunW,EAAMxtT,SAAS/5C,EAAKyhM,MACvBzhM,EAAKqmW,eAAiB,EACtB,EAAKd,eAAelnW,KAAK2B,WAMnCnE,KAAK+6U,sBAAuB,GAG9B4wB,iBA9SO,SA8SUxnW,GACf,IAAMgvD,EAAQnzD,KACd22M,OAAO8L,QAAQ,mDACRhtM,KAAKm2V,6CACR,QACF,CAAC,KAAM,WACP,WAEE3rK,OACGwC,KAAK,+CAAgD,CACpDj0L,GAAIrK,EAAKqK,GACTi5N,eAAgB,MAEjBrjM,QAAQ,SAAUy9B,GAEjB7hE,KAAKi9K,QACY,MAAbp7G,EAAIt/C,OACN4wC,EAAMu2S,eAAiBv2S,EAAMu2S,eAAel4V,QAAO,SAAAw5V,GAAA,OAAMA,EAAGplK,KAAOzhM,EAAKyhM,MAExEzyI,EAAM83S,oBAAoB9/T,SAAQ,SAACxmC,GACjC,GAAIA,EAAK4d,KAAKqjL,KAAOzhM,EAAKyhM,GAAI,CAC5B,IAAMohF,EAASriR,EAAK4d,KAAKykQ,OACzB7zN,EAAM04S,UAAU14S,EAAM02S,WAAW7iF,IACjC7zN,EAAM04S,UAAUlnW,EAAK4d,MACrB4wC,EAAMw2S,OAAOx+T,SAAQ,SAAC8lK,GAChBA,EAAG+1E,SAAWriR,EAAK4d,KAAKykQ,QAC1B7zN,EAAM04S,UAAU56J,YAM1BxyM,KAAKuB,OACN6c,MAAK,SAAUA,GACds2C,EAAM0zJ,SAAS3+M,MAAM2U,EAAK1U,WAE7B,WACDnI,KAAKi9K,YAGX4uL,UAtVO,SAsVGlnW,GACRA,EAAKihM,GAAK,GACVjhM,EAAKnH,KAAO,GACZmH,EAAKumW,OAAS,GACdvmW,EAAKwmW,OAAS,IAIhBW,oBA9VO,SA8VapqW,GAClBq6B,aAAa/7B,KAAK+oV,MACb/oV,KAAK4lK,MAGR5lK,KAAK4lK,OAAQ,EAFb5lK,KAAK4pW,WAAa5pW,KAAK4pW,aAAeloW,EAAQ,KAAOA,GAKzDqqW,UAtWO,SAsWG5nW,EAAM0J,GACdkuB,aAAa/7B,KAAK+oV,MAClB,IAAM7pU,EAAOlf,KACbA,KAAK+oV,KAAOnpU,YAAW,WACrBV,EAAK0mJ,OAAQ,EACb1mJ,EAAK8sV,UAAU7nW,EAAM0J,GACrBqR,EAAK0mJ,OAAQ,IACZ,MAGLukM,QAhXO,WAiXL,IAAMh3S,EAAQnzD,KACdA,KAAKs3T,IAAM,IAAI1C,GAAI,CACjBltT,OAAQyrD,EAAMo4J,MACdkqG,OAAQ,GACR98R,WAAW,EACXg+R,aAJiB,SAIJF,GAEX,IAAIw1C,GAAU,EASd,GARA94S,EAAMu2S,eAAev+T,SAAQ,SAAC6/T,GACxBA,EAAGplK,KAAO6wH,EAAa7mT,MAAM2S,KAAKqjL,IAChColK,EAAGR,gBAAkBQ,EAAGN,UAC1Bv3S,EAAM0zJ,SAAS3+M,MAAMuN,KAAKy2V,0BAC1BD,GAAU,OAIXA,EACH,OAAO,EAZgB,MAcWtD,GAClClyC,EACAtjQ,EAAMo4J,OAFAs9I,EAdiB,EAcjBA,YAAaM,EAdI,EAcJA,WAQrB,GAHAh2S,EAAM21S,WAAa31S,EAAMo4J,MAAM66C,WAAW50P,QAAO,SAACrN,GAChD,OAAOA,EAAKqK,KAAOioT,EAAajoT,OAE7Bq6V,EACH,OAAO,EAEP,IAAIsD,EAAc,EAClB,GAAIhD,EAAWxnW,OAAS,EAAG,CAEzB,IAAMyqW,EAAejD,EAAW5iW,KAAI,SAAC8lW,EAAW3qW,GAC9C,MAAO,CACL22B,SAAUvwB,KAAKinC,IACbs9T,EAAUx3G,cAActiN,EAAIkkR,EAAa5hE,cAActiN,GAEzD7wC,MAAOA,MAGX0qW,EAAanwV,UACb,IAAMqwV,EAAYF,EAAa7lW,KAAI,SAACtC,GAClC,OAAOA,EAAIo0B,YAEP2iB,EAAMlzC,KAAKkzC,IAAL,MAAAlzC,K,sHAAA,CAAYwkW,IAIxBH,EAHcC,EAAa16V,MAAK,SAACvN,GAC/B,OAAOA,EAAKk0B,UAAY2iB,KACvBt5C,MAIL,GAAKynW,EAAWgD,IAAiBhD,EAAWgD,GAAalpV,UAAzD,CACA,IAAMzU,EAAK26V,EAAWgD,GAAalpV,UAAU+jQ,OAC7C,GAAI7zN,EAAM02S,WAAWr7V,GAAIo3L,KAAO6wH,EAAa7mT,MAAM2S,KAAKqjL,GAEtD,OADAzyI,EAAM0zJ,SAAS3+M,MAAMuN,KAAK82V,iCACnB,EAET,IAAMzkI,EAAQ30K,EAAM02S,WAAWr7V,GAAIo3L,GACnCzyI,EAAM02S,WAAWr7V,GAAIo3L,GAAK6wH,EAAa7mT,MAAM2S,KAAKqjL,GAGlD,IACM4mK,EADUr5S,EAAM83S,oBAAoBz5V,QAAO,SAAArN,GAAA,OAAQA,EAAKoe,KAAKqjL,KAAO6wH,EAAa7mT,MAAM2S,KAAKqjL,MAC5Er/L,KAAI,SAAAykW,GACxB,OAAOA,EAAGzoV,KAAK/kB,QAEXA,EAAO21D,EAAMm9H,QAAQk8K,EAAO/1C,GAClCtjQ,EAAM02S,WAAWr7V,GAAIhR,KAAOA,EAE5B21D,EAAMw2S,OAAOx+T,SAAQ,SAAChnC,GAChBA,EAAK6iR,SAAWx4Q,IAClBrK,EAAKyhM,GAAK6wH,EAAa7mT,MAAM2S,KAAKqjL,GAClCzhM,EAAK3G,KAAOA,MAIhB21D,EAAMu2S,eAAev+T,SAAQ,SAAC6/T,GACxBA,EAAGplK,KAAO6wH,EAAa7mT,MAAM2S,KAAKqjL,IACpColK,EAAGR,iBAEDQ,EAAGplK,KAAOkiC,GACZkjI,EAAGR,oBAGP/zC,EAAa7mT,MAAMmoM,MAAMnoK,KAAO,cAEhC,IAAM07T,EAAW,CACftkF,OAAQx4Q,EACRo3L,GAAI6wH,EAAa7mT,MAAM2S,KAAKqjL,GAC5BpoM,KAAMA,GAER21D,EAAMo4S,aAAaD,EAAU,aAC7B1rV,YAAW,WACTuzC,EAAMo4J,MAAMt6H,WAAWwlO,KACtB,UAKXnmI,QApdO,SAodCk8K,EAAO/1C,GACb,IAAIj5T,EAAO,EACLktW,EAAUj0C,EAAa7mT,MAAM2S,KAAKmoV,QAClC+B,EAAOvrW,MAAM0qC,KAAK,IAAI1qC,MAAMwpW,GAASt7V,QACrCs9V,EAAW,GAWjB,OAVAD,EAAKthU,SAAQ,SAAAhoC,GACX,IAAMwpW,EAASj5U,SAASvwB,GAAO,EAC1BqpW,EAAMtuT,SAASyuT,EAAOhpW,aACzB+oW,EAASlqW,KAAKmqW,MAGlBD,EAAStlW,OACe,IAApBslW,EAAS/qW,SACXnE,EAAOkvW,EAAS,IAEXlvW,EAAKmG,YAGdqoW,UAteO,SAseG7nW,EAAM0J,GACd,IAAMlJ,EAAO3E,KAAK4sW,iBAAiBzoW,EAAKyhM,GAAI,CAC1CA,GAAIzhM,EAAKyhM,GACT4kK,eAAgBrmW,EAAKqmW,eACrBE,QAASvmW,EAAKumW,UAEhB1qW,KAAKs3T,IAAIh2T,MAAMqD,EAAMkJ,IAEvB++V,iBA9eO,SA8eUpvW,EAAM+kB,GACrB,OAAOviB,KAAKurN,MAAMr+E,WAAW,CAC3B3qH,KAAMA,EACN8O,MAAO,IACPoC,OAAQ,GACR7jB,MAAO,CACLrO,KAAM,SACNghB,KAAMA,EACN+C,KAAM,CACJsqB,KAAM,cACNC,OAAQ,eAEVkoK,MAAO,CACL/yM,KAAMxH,EACNoyC,KAAM,YAMdi9T,iBAlgBO,WAogBL,IAAMvB,EAAWA,MACZtrW,KAAK4oW,aAAarmV,MAEvBviB,KAAKurW,aAAaD,EAAU,eAC5BtrW,KAAK8sW,OAAO9sW,KAAK4oW,aAAarmV,OAMhCwqV,UA9gBO,WA8gBK,WAEJplV,EAAQ3nB,KAAKgtW,eACfnE,GAAc,EAOlB,GANAlhV,EAAMwjB,SAAQ,SAACxmC,GACT,EAAKkkW,YAAYlkW,KACnBkkW,GAAc,MAIdA,EACF7oW,KAAK6mN,SAAS3+M,MAAMuN,KAAKw3V,8BACpB,CAEL,IAAM1qC,EAASviU,KAAKirW,oBAAoB1kW,KAAI,SAACpC,GAC3C,IAAMquB,EAAWruB,EAAKquB,WACd+f,EAAS/f,EAAT+f,EAAGC,EAAMhgB,EAANggB,EAELjwB,EAAOpe,EAAKoe,KAClB,MAAO,CACL/T,GAAI+T,EAAKykQ,OAAO9oO,SAAS,OAAS,GAAK37B,EAAKykQ,OAC5Cl6C,WAAYvqN,EAAKqjL,GACjBpoM,KAAM+kB,EAAK/kB,KACX0tW,OAAQ3oV,EAAK2oV,OACbC,OAAQ5oV,EAAK4oV,OACbtnC,SAAU,EAAKA,SACfv3P,KAAM,CACJ/5B,IACAC,IACAkiB,MAAOvwD,EAAKuoP,gBAIZzkN,EAAS,CACb+hU,YAAahqW,KAAKktW,eAAe3qC,GACjC/zT,GAAIxO,KAAK6jU,SACTrmU,KAAMwC,KAAK8pW,UACXjvJ,UAAW76M,KAAK66M,UAChByoH,SAAUf,EAAO5gU,QAAU3B,KAAKsjU,SAChC6pC,OAAQ/qV,IACRsnV,eAAgB1pW,KAAK0pW,eACrBnnC,OAAQA,GAEVviU,KAAKiqW,eAAgB,EACrBhqK,OAAOwC,KAAK,wBAAyBx6J,GAClC7D,QAAQ,SAAUy9B,GACjB7hE,KAAK6mN,SAAS,CAAEpmM,QAAShL,KAAK8hN,eAAgBh2N,KAAM,YACpD,IAAMghB,EAAOs/C,EAAIt/C,KACbA,GAAiB,MAATA,GAAiC,QAAdviB,KAAKuB,OAClCvB,KAAK6jU,SAAWthT,IAGlB9jB,KAAKuB,OACN6c,MAAK,SAAUA,GACd7c,KAAK6mN,SAAS,CAAEpmM,QAAShL,KAAK23V,cAAe7rW,KAAM,aAClD2wL,IAAI,WACLlyL,KAAKiqW,eAAgB,GACrBxrW,KAAKuB,SAGbktW,eA1kBO,SA0kBQ3qC,GAEb,OADAviU,KAAKgqW,YAAchqW,KAAKgqW,YAAYx4V,QAAO,SAAArN,GAAA,OAASo+T,EAAOrkR,SAAS/5C,MAC7DnE,KAAKgqW,aAEdqD,SA9kBO,WA+kBL,IAAMzrC,EAAQ,CACZpzT,GAAI,MAAQy9G,kBACZ25E,GAAI,GACJpoM,KAAM,GACN8uE,KAAM,CACJ/5B,EAAG,GACHC,EAAG,IACHkiB,MAAO,IAGXktQ,EAAA,OAAkBA,EAAMpzT,GACxBxO,KAAK2pW,OAAOnnW,KAAKo/T,GAEjB5hU,KAAKkiU,iBAAiBN,GAAO,GAC7B5hU,KAAKsjU,YAGPgqC,UAhmBO,WAimBL,IAAMn6S,EAAQnzD,KACd22M,OAAO8L,QAAQ,4CACRhtM,KAAK83V,0CACR,QACF,CAAC,KAAM,WACP,WACEp6S,EAAMmwQ,WACNnwQ,EAAM05S,mBACN,IAAMloW,EAAOwuD,EAAMo4J,MAAM66C,WAAW50P,QAAO,SAACrN,GAC1C,OACEA,EAAKoe,KAAKykQ,SAAW7zN,EAAMy1S,aAAarmV,KAAKykQ,UAGjD7zN,EAAMo4J,MAAMt6H,WAAWtsF,EAAK,IAE5BwuD,EAAMw2S,OAASx2S,EAAMw2S,OAAOn4V,QAAO,SAACrN,GAClC,OAAOA,EAAK6iR,SAAW7zN,EAAMy1S,aAAarmV,KAAKykQ,UAEjD,IAAMx0P,EAAW2gC,EAAMy1S,aAAa/zG,cAC7BtiN,EAAO/f,EAAP+f,EAAEC,EAAKhgB,EAALggB,EACH84T,EAAWA,MACZn4S,EAAMy1S,aAAarmV,KADlB,CAEJgwB,EAAGA,EACHC,EAAGA,EACHkiB,MAAOvB,EAAMy1S,aAAal8G,aAE5Bv5L,EAAMo4S,aAAaD,EAAU,eAC7Bn4S,EAAMy1S,aAAe,KACrB5oW,KAAKi9K,WACJ,WACDj9K,KAAKi9K,YAIX+vL,aAnoBO,WAqoBL,OADchtW,KAAKirW,oBACNz5V,QAAO,SAACrN,GACnB,MAA0C,oBAAnC4e,KAAKs3C,UAAUl2D,EAAKquB,gBAI/By4U,kBA1oBO,WA8oBL,OAHcjrW,KAAKurN,MAAM66C,WAAW50P,QAAO,SAACrN,GAC1C,MAAqB,aAAdA,EAAKitC,UAIhBo8T,WAhpBO,WAipBL,GAAKxtW,KAAK4oW,aAAV,CACA,IAAMjkW,EAAO3E,KAAK4oW,aACd5oW,KAAKypW,cAAgB,EACvBzpW,KAAKypW,cAAgB,EAErBzpW,KAAKypW,gBAEPzpW,KAAK8oW,WAAa9oW,KAAKurN,MAAM66C,WAAW50P,QAAO,SAACrN,GAC9C,OAAOA,EAAKqK,KAAO7J,EAAK6J,MAE1BxO,KAAK4oW,aAAar1S,QAAQ,IACtBvzD,KAAK6oW,gBACPlkW,EAAK4uD,OAAOvzD,KAAKytW,eAAe/2S,IAAK,CAAE6lI,UAAU,IACjDv8L,KAAK6mN,SAAS3+M,MAAMuN,KAAKw3V,0BACzBjtW,KAAKurN,MAAMm1E,QAAQwe,UAAU73S,OAAOrH,KAAKurN,MAAMm1E,QAAQwe,UAAUv9S,OAAS,MAI9EknW,YAnqBO,SAmqBKtmV,GACV,IACQsmV,EAAgBF,GADXpmV,GAAcviB,KAAK4oW,aACa5oW,KAAKurN,OAA1Cs9I,YACR,OAAOA,GAIT6E,aA1qBO,aA4qBPC,YA5qBO,WA6qBL,IAAIC,EAAU5tW,KAAKurN,MAAMo0E,OAGzB,GAFAiuE,GAAW,IACX5tW,KAAKkhS,SAAS0sE,IACV5tW,KAAKupW,WAAT,CACAvpW,KAAKurN,MAAMsiJ,OAAOD,GAClB,IAAMtC,EAAW,CACfsC,QAASA,GAEX5tW,KAAKurW,aAAaD,EAAU,kBAG9BwC,cAxrBO,WAyrBL,IAAIF,EAAU5tW,KAAKurN,MAAMo0E,OAGzB,GAFAiuE,GAAW,IACX5tW,KAAKkhS,SAAS0sE,IACV5tW,KAAKwpW,WAAT,CACAxpW,KAAKurN,MAAMsiJ,OAAOD,GAClB,IAAMtC,EAAW,CACfsC,QAASA,GAEX5tW,KAAKurW,aAAaD,EAAU,oBAE9BpqE,SAnsBO,SAmsBE0sE,GACP5tW,KAAKupW,WAAaqE,EAAU,EAC5B5tW,KAAKwpW,WAAaoE,EAAU,KAG9BG,UAxsBO,WAysBL/tW,KAAKurN,MAAMm1E,QAAQ0qB,QAGrB4iD,UA5sBO,WA6sBLhuW,KAAKurN,MAAMm1E,QAAQ2qB,QAErBkgD,aA/sBO,SA+sBMhpV,EAAMiG,GACjB,IAAM8iV,EAAW,CACf14K,OAAO,EACPrwK,WACKA,GAELiG,MAAOA,EACP7oB,QAAS,CACPwG,OAAO,IAGXnG,KAAKurN,MAAMm1E,QAAQwe,UAAU18S,KAAK8oW,IAGpClB,cA7tBO,WA6tBS,WACRj3S,EAAQnzD,KACdA,KAAKurN,MAAMnjM,GAAG,kBAAkB,YAAc,IAAXzjB,EAAW,EAAXA,KAC7BA,EAAKihM,GACP,EAAKqoK,aAAc,EAEnB,EAAKA,aAAc,EAGrB,IAAMz7U,EAAW7tB,EAAK6tB,WACtB2gC,EAAMs6S,eAAiB,CACrBl7T,EAAG/f,EAAS+f,EACZC,EAAGhgB,EAASggB,EACZkkB,IAAK/xD,EAAK+nP,eAId1sP,KAAKurN,MAAMnjM,GAAG,mBAAmB,WAC/B,EAAKwgV,aAAe,QAEtB5oW,KAAKurN,MAAMnjM,GAAG,gBAAgB,YAAc,IAAXzjB,EAAW,EAAXA,KAC/BwuD,EAAM21S,WAAa,EAAKv9I,MAAM66C,WAAW50P,QAAO,SAACrN,GAC/C,OAAOA,EAAKqK,KAAO7J,EAAK6J,MAE1B,EAAKo6V,aAAejkW,EAEhBwuD,EAAM01S,YAAYlkW,KACpBA,EAAK6tB,SAAS,EAAKi7U,eAAel7T,EAAG,EAAKk7T,eAAej7T,GACzD2gB,EAAM0zJ,SAAS3+M,MAAMuN,KAAKw3V,0BAC1B,EAAK1hJ,MAAMm1E,QAAQwe,UAAU73S,OAAO,EAAKkkN,MAAMm1E,QAAQwe,UAAUv9S,OAAS,OAG9E3B,KAAKurN,MAAMnjM,GAAG,eAAe,YAAc,IAAXzjB,EAAW,EAAXA,KAC9BwuD,EAAMy1S,aAAejkW,EACrB,IAAM6tB,EAAW7tB,EAAK6tB,WACtB2gC,EAAMs6S,eAAiB,CACrBl7T,EAAG/f,EAAS+f,EACZC,EAAGhgB,EAASggB,EACZkkB,IAAK/xD,EAAK+nP,eAGd1sP,KAAKurN,MAAMnjM,GAAG,gBAAgB,YAAc,IAAXzjB,EAAW,EAAXA,KAC/BwuD,EAAM21S,WAAa,EAAKv9I,MAAM66C,WAAW50P,QAAO,SAACrN,GAC/C,OAAOA,EAAKqK,KAAO7J,EAAK6J,MAE1B2kD,EAAM02S,WAAWllW,EAAKse,UAAU+jQ,QAAQ26C,QAAUh9T,EAAK+nP,WACnDv5L,EAAM01S,YAAYlkW,KACpBA,EAAK4uD,OAAOJ,EAAMs6S,eAAe/2S,IAAK,CAAE6lI,UAAU,IAClDppI,EAAM0zJ,SAAS3+M,MAAMuN,KAAKw3V,0BAC1B,EAAK1hJ,MAAMm1E,QAAQwe,UAAU73S,OAAO,EAAKkkN,MAAMm1E,QAAQwe,UAAUv9S,OAAS,OAG9E3B,KAAKurN,MAAMlvK,QAAQ,CAAC,KAAM,OAAQ,OAAQ,UAAU,SAACxuC,GAEnD,GADAA,EAAEob,iBACE,EAAK2/U,aAAc,CACrB,IAAIp2U,EAAW,EAAKo2U,aAAap2U,WAC7B+f,EAAI/f,EAAS+f,EACbC,EAAIhgB,EAASggB,EACjB,EAAKi7T,eAAiB,CACpBl7T,EAAG/f,EAAS+f,EACZC,EAAGhgB,EAASggB,EACZkkB,IAAK,EAAKkyS,aAAal8G,YAEP,KAAd7+O,EAAEkf,QACJwlB,GAAQ,GACe,KAAd1kC,EAAEkf,QACXylB,GAAQ,GACe,KAAd3kC,EAAEkf,QACXwlB,GAAQ,GACe,KAAd1kC,EAAEkf,UACXylB,GAAQ,IAEV,EAAKo2T,aAAap2U,SAAS+f,EAAGC,GAE1B2gB,EAAM01S,YAAY,EAAKD,gBACzB,EAAKA,aAAap2U,SAAS,EAAKi7U,eAAel7T,EAAG,EAAKk7T,eAAej7T,GACtE2gB,EAAM0zJ,SAAS3+M,MAAMuN,KAAKw3V,0BAC1B,EAAK1hJ,MAAMm1E,QAAQwe,UAAU73S,OAAO,EAAKkkN,MAAMm1E,QAAQwe,UAAUv9S,OAAS,QAIhF3B,KAAKurN,MAAMm1E,QAAQt4Q,GAAG,QAAQ,SAACjT,GAE7B,IAAMuqS,EAAOvqS,EAAKuqS,KAAK,GAEjBl3R,EAAQrT,EAAKuqS,KAAK,GAAGl3R,MACb,cAAVA,EACF,EAAKskV,OAAOptD,EAAKn9R,MACE,gBAAViG,EACT,EAAK/pB,KAAKihT,EAAKn9R,MACI,aAAViG,EACT,EAAK0lV,MAAMxuD,EAAKn9R,MACG,gBAAViG,EACT,EAAK2lV,MAAMzuD,EAAKn9R,MACG,iBAAViG,EACT,EAAK+iM,MAAMsiJ,OAAOnuD,EAAKn9R,KAAKqrV,QAAU,KACnB,mBAAVplV,GACT,EAAK+iM,MAAMsiJ,OAAOnuD,EAAKn9R,KAAKqrV,QAAU,QAG1C5tW,KAAKurN,MAAMm1E,QAAQt4Q,GAAG,QAAQ,SAACjT,GAE7B,IAAMuqS,EAAOvqS,EAAKuqS,KAAK,GACvB,GAAKA,EAAL,CAGA,IAAMl3R,EAAQk3R,EAAKl3R,MACL,cAAVA,EACF,EAAK/pB,KAAKihT,EAAKn9R,MACI,gBAAViG,EACT,EAAKskV,OAAOptD,EAAKn9R,MACE,aAAViG,EACT,EAAK2lV,MAAMzuD,EAAKn9R,MACG,gBAAViG,EACT,EAAK0lV,MAAMxuD,EAAKn9R,MACG,iBAAViG,EACT,EAAK+iM,MAAMsiJ,OAAOnuD,EAAKn9R,KAAKqrV,QAAU,KACnB,mBAAVplV,GACT,EAAK+iM,MAAMsiJ,OAAOnuD,EAAKn9R,KAAKqrV,QAAU,UAI5Cd,OAv1BO,SAu1BAvqV,GAAM,WACL/T,EAAK+T,EAAKykQ,OAChBhnR,KAAKirW,oBAAoB9/T,SAAQ,SAAChnC,GAC5BqK,IAAOrK,EAAKoe,KAAKykQ,SAEnB,EAAK0iF,eAAev+T,SAAQ,SAAC6/T,GACvBA,EAAGplK,KAAOzhM,EAAKoe,KAAKqjL,IACtBolK,EAAGR,oBAGP,EAAKqB,UAAU,EAAKhC,WAAWr7V,IAC/B,EAAKq9V,UAAU1nW,EAAKoe,MACpB,EAAKonV,OAAOx+T,SAAQ,SAAChnC,GACfA,EAAK6iR,SAAWx4Q,GAClB,EAAKq9V,UAAU1nW,WAMzB1F,KA32BO,SA22BF8jB,GAAM,WAGTviB,KAAK0pW,eAAev+T,SAAQ,SAAC6/T,GACvBA,EAAGplK,KAAOrjL,EAAKqjL,IACbolK,EAAGR,gBAAkBQ,EAAGN,SAC1B,EAAK7jJ,SAAS3+M,MAAMuN,KAAKy2V,6BAO/B,IAAM19V,EAAK+T,EAAKykQ,OAChBhnR,KAAK6pW,WAAWr7V,GAAIo3L,GAAKrjL,EAAKqjL,GAC9B5lM,KAAK6pW,WAAWr7V,GAAIhR,KAAO+kB,EAAK/kB,KAEhCwC,KAAK2pW,OAAOx+T,SAAQ,SAAChnC,GACfA,EAAK6iR,SAAWx4Q,IAClBrK,EAAKyhM,GAAKrjL,EAAKqjL,GACfzhM,EAAK3G,KAAO+kB,EAAK/kB,SAIrBwC,KAAK0pW,eAAev+T,SAAQ,SAAC6/T,GACvBA,EAAGplK,KAAOrjL,EAAKqjL,IACjBolK,EAAGR,qBAIT2D,MAz4BO,SAy4BD5rV,GACJ,IAAMq/S,EAAQ,CACZpzT,GAAI+T,EAAKykQ,OACTphF,GAAIrjL,EAAKqjL,GACTpoM,KAAM+kB,EAAK/kB,KACX8uE,KAAM,CACJ/5B,EAAGhwB,EAAKgwB,EACRC,EAAGjwB,EAAKiwB,EACRkiB,MAAOnyC,EAAKmyC,QAGhBktQ,EAAA,OAAkBA,EAAMpzT,GACxBxO,KAAK2pW,OAAOnnW,KAAKo/T,GAEjB5hU,KAAKkiU,iBAAiBN,GACtB5hU,KAAKsjU,YAEP4qC,MA15BO,SA05BD3rV,GACJ,IAAM5d,EAAO3E,KAAKurN,MAAM66C,WAAW50P,QAAO,SAACrN,GACzC,OACEA,EAAKoe,KAAKykQ,SAAWzkQ,EAAKykQ,UAG9BhnR,KAAKurN,MAAMt6H,WAAWtsF,EAAK,IAE3B3E,KAAK2pW,OAAS3pW,KAAK2pW,OAAOn4V,QAAO,SAAArN,GAAA,OAAQA,EAAK6iR,SAAWzkQ,EAAKykQ,UAC9DhnR,KAAK8sW,OAAOvqV,GACZviB,KAAKsjU,cEt8BI,I,OAXC,YACd,ICTW,WAAa,IAAIjyK,EAAIrxJ,KAASyyG,EAAG4+C,EAAIhgF,eAAmB4D,EAAGo8E,EAAI9wE,MAAMtL,IAAIw9B,EAAG,OAAOx9B,EAAG,MAAM,CAACzK,WAAW,CAAC,CAAChtE,KAAK,UAAUoqF,QAAQ,YAAY1pF,MAAOmzJ,EAAiB,cAAEv0E,WAAW,kBAAkB4N,YAAY,CAAC,QAAU,SAAS,CAACzV,EAAG,MAAM,CAACyP,YAAY,qBAAqB,CAACzP,EAAG,MAAM,CAACyP,YAAY,YAAY,CAACzP,EAAG,MAAM,CAACrlE,MAAM,CAAC,IAAM,gCAAgC,IAAM,MAAMyhJ,EAAIn9E,GAAG,KAAKe,EAAG,OAAO,CAACo8E,EAAIn9E,GAAGm9E,EAAI39E,GAAG29E,EAAI57I,KAAK24V,gCAAgC/8M,EAAIn9E,GAAG,KAAKe,EAAG,MAAM,CAACyV,YAAY,CAAC,MAAQ,SAAS96E,MAAM,CAAC,eAAiB,cAAc,IAAM,sCAAsCyhJ,EAAIn9E,GAAG,KAAKe,EAAG,MAAM,CAACyP,YAAY,cAAc2sE,EAAI19E,GAAI09E,EAAkB,gBAAE,SAASltJ,EAAKzC,GAAO,OAAOuzE,EAAG,MAAM,CAACz2E,IAAI2F,EAAKqK,IAAI,CAACymE,EAAG,MAAM,CAACyP,YAAY,MAAMjK,MAAM,CAAC,aAAe42E,EAAIu4M,YAAYloW,GAAO0mB,GAAG,CAAC,MAAQ,SAASkqD,GAAQ,OAAO++E,EAAIy6M,oBAAoBpqW,IAAQ,UAAY,SAAUmM,GAAK,OAAOwjJ,EAAI06M,UAAU5nW,EAAM0J,MAAQ,CAAConE,EAAG,MAAM,CAACyP,YAAY,gBAAgB,CAAazP,EAAG,OAAdvzE,EAAQ,EAAa,CAAC2vJ,EAAIn9E,GAAG,IAAIm9E,EAAI39E,GAAGhyE,EAAQ,KAAgB,CAAC2vJ,EAAIn9E,GAAGm9E,EAAI39E,GAAGhyE,EAAQ,QAAQ2vJ,EAAIn9E,GAAG,KAAKe,EAAG,OAAO,CAACyV,YAAY,CAAC,OAAS,aAAa,CAAC2mE,EAAIn9E,GAAGm9E,EAAI39E,GAAGvvE,EAAKyhM,OAAOv0C,EAAIn9E,GAAG,KAAKe,EAAG,OAAO,CAACo8E,EAAIn9E,GAAGm9E,EAAI39E,GAAGvvE,EAAKqmW,gBAAgB,IAAIn5M,EAAI39E,GAAGvvE,EAAKumW,cAAcr5M,EAAIn9E,GAAG,KAAKe,EAAG,MAAM,CAACyP,YAAY,YAAY90E,MAAM,CAAC,eAAiB,cAAc,IAAM,kCAAkCwY,GAAG,CAAC,MAAQ,SAASkqD,GAAQ,OAAO++E,EAAIs6M,iBAAiBxnW,YAAc,GAAGktJ,EAAIn9E,GAAG,KAAKe,EAAG,MAAM,CAACyP,YAAY,WAAW,CAACzP,EAAG,SAAS,CAACyP,YAAY,cAAct8D,GAAG,CAAC,MAAQipI,EAAIm6M,mBAAmB,CAACn6M,EAAIn9E,GAAGm9E,EAAI39E,GAAG29E,EAAI57I,KAAK44V,6BAA6Bh9M,EAAIn9E,GAAG,KAAKe,EAAG,MAAM,CAACyV,YAAY,CAAC,YAAY,UAAU,CAACzV,EAAG,MAAM,CAACyP,YAAY,iBAAiB,CAACzP,EAAG,MAAM,CAACyP,YAAY,uBAAuB,CAAG2sE,EAAIi4M,SAAyFj4M,EAAIl9E,KAAnFc,EAAG,OAAO,CAACyV,YAAY,CAAC,OAAS,aAAa,CAAC2mE,EAAIn9E,GAAGm9E,EAAI39E,GAAG29E,EAAIy4M,cAAuBz4M,EAAIn9E,GAAG,KAAMm9E,EAAY,SAAEp8E,EAAG,WAAW,CAACrlE,MAAM,CAAC,UAAYyhJ,EAAIi4M,UAAUhwR,MAAM,CAACp7E,MAAOmzJ,EAAa,UAAE/qJ,SAAS,SAAUu9L,GAAMxyC,EAAIy4M,UAAUjmK,GAAK/mH,WAAW,cAAc,CAAC7H,EAAG,YAAY,CAACrlE,MAAM,CAAC,KAAO,SAAS,KAAO,iBAAiBwY,GAAG,CAAC,MAAQ,SAASkqD,GAAQ++E,EAAIi4M,UAAW,IAAQv5R,KAAK,YAAY,GAAGshF,EAAIl9E,KAAKk9E,EAAIn9E,GAAG,KAAOm9E,EAAIi4M,SAAwJj4M,EAAIl9E,KAAlJc,EAAG,MAAM,CAACrlE,MAAM,CAAC,eAAiB,cAAc,IAAM,mCAAmCwY,GAAG,CAAC,MAAQ,SAASkqD,GAAQ++E,EAAIi4M,UAAW,OAAmB,GAAGj4M,EAAIn9E,GAAG,KAAKe,EAAG,MAAM,CAACyP,YAAY,uBAAuB,CAACzP,EAAG,MAAM,CAACrlE,MAAM,CAAC,MAAQyhJ,EAAI57I,KAAK64V,+BAA+BlmV,GAAG,CAAC,MAAQipI,EAAI08M,YAAY,CAAC94R,EAAG,MAAM,CAACrlE,MAAM,CAAC,IAAM,8CAA8C,IAAM,QAAQyhJ,EAAIn9E,GAAG,KAAKe,EAAG,MAAM,CAACrlE,MAAM,CAAC,MAAQyhJ,EAAI57I,KAAK84V,+BAA+BnmV,GAAG,CAAC,MAAQipI,EAAI28M,YAAY,CAAC/4R,EAAG,MAAM,CAACrlE,MAAM,CAAC,IAAM,8CAA8C,IAAM,QAAQyhJ,EAAIn9E,GAAG,KAAKe,EAAG,MAAM,CAACrlE,MAAM,CAAC,MAAQyhJ,EAAI57I,KAAK+4V,gCAAgCpmV,GAAG,CAAC,MAAQipI,EAAIg8M,WAAW,CAACp4R,EAAG,MAAM,CAACrlE,MAAM,CAAC,IAAM,6CAA6C,IAAM,QAAQyhJ,EAAIn9E,GAAG,KAAMm9E,EAAgB,aAAEp8E,EAAG,MAAM,CAACrlE,MAAM,CAAC,MAAQyhJ,EAAI57I,KAAKg5V,iCAAiCrmV,GAAG,CAAC,MAAQipI,EAAIm8M,aAAa,CAACv4R,EAAG,MAAM,CAACrlE,MAAM,CAAC,IAAM,8CAA8C,IAAM,QAAQqlE,EAAG,MAAM,CAACrlE,MAAM,CAAC,MAAQyhJ,EAAI57I,KAAKg5V,kCAAkC,CAACx5R,EAAG,MAAM,CAACrlE,MAAM,CAAC,IAAM,mDAAmD,IAAM,QAAQyhJ,EAAIn9E,GAAG,KAAMm9E,EAAgB,aAAEp8E,EAAG,MAAM,CAACrlE,MAAM,CAAC,MAAQyhJ,EAAI57I,KAAKi5V,iCAAiCtmV,GAAG,CAAC,MAAQipI,EAAIw7M,mBAAmB,CAAC53R,EAAG,MAAM,CAACrlE,MAAM,CAAC,IAAM,gDAAgD,IAAM,QAAQqlE,EAAG,MAAM,CAACrlE,MAAM,CAAC,MAAQyhJ,EAAI57I,KAAKi5V,kCAAkC,CAACz5R,EAAG,MAAM,CAACrlE,MAAM,CAAC,IAAM,qDAAqD,IAAM,QAAQyhJ,EAAIn9E,GAAG,KAAMm9E,EAAgB,aAAEp8E,EAAG,MAAM,CAACrlE,MAAM,CAAC,MAAQyhJ,EAAI57I,KAAKk5V,iCAAiCvmV,GAAG,CAAC,MAAQipI,EAAIi8M,YAAY,CAACr4R,EAAG,MAAM,CAACrlE,MAAM,CAAC,IAAM,gDAAgD,IAAM,QAAQqlE,EAAG,MAAM,CAACrlE,MAAM,CAAC,MAAQyhJ,EAAI57I,KAAKk5V,kCAAkC,CAAC15R,EAAG,MAAM,CAACrlE,MAAM,CAAC,IAAM,qDAAqD,IAAM,QAAQyhJ,EAAIn9E,GAAG,KAAKe,EAAG,MAAM,CAACrlE,MAAM,CAAC,MAAQyhJ,EAAI57I,KAAKm5V,+BAA+BxmV,GAAG,CAAC,MAAQipI,EAAI07M,YAAY,CAAC93R,EAAG,MAAM,CAACrlE,MAAM,CAAC,IAAM,8CAA8C,IAAM,QAAQyhJ,EAAIn9E,GAAG,KAAOm9E,EAAIk4M,WAAiOt0R,EAAG,MAAM,CAACrlE,MAAM,CAAC,MAAQyhJ,EAAI57I,KAAKo5V,kCAAkC,CAAC55R,EAAG,MAAM,CAACrlE,MAAM,CAAC,IAAM,sCAAsC,IAAM,QAA7VqlE,EAAG,MAAM,CAACrlE,MAAM,CAAC,MAAQyhJ,EAAI57I,KAAKo5V,iCAAiCzmV,GAAG,CAAC,MAAQipI,EAAIs8M,cAAc,CAAC14R,EAAG,MAAM,CAACyV,YAAY,CAAC,MAAQ,OAAO,OAAS,QAAQ96E,MAAM,CAAC,IAAM,iCAAiC,IAAM,QAAwJyhJ,EAAIn9E,GAAG,KAAOm9E,EAAIm4M,WAAqOv0R,EAAG,MAAM,CAACrlE,MAAM,CAAC,MAAQyhJ,EAAI57I,KAAKq5V,mCAAmC,CAAC75R,EAAG,MAAM,CAACrlE,MAAM,CAAC,IAAM,uCAAuC,IAAM,QAAnWqlE,EAAG,MAAM,CAACrlE,MAAM,CAAC,MAAQyhJ,EAAI57I,KAAKq5V,kCAAkC1mV,GAAG,CAAC,MAAQipI,EAAIy8M,gBAAgB,CAAC74R,EAAG,MAAM,CAACyV,YAAY,CAAC,MAAQ,OAAO,OAAS,QAAQ96E,MAAM,CAAC,IAAM,kCAAkC,IAAM,QAA0JyhJ,EAAIn9E,GAAG,KAAKe,EAAG,MAAM,CAACyP,YAAY,UAAU90E,MAAM,CAAC,IAAM,iDAAiD,IAAM,MAAMyhJ,EAAIn9E,GAAG,KAAKe,EAAG,MAAM,CAACA,EAAG,OAAO,CAACo8E,EAAIn9E,GAAG,UAAUm9E,EAAI39E,GAAG29E,EAAIiyK,mBAAmBjyK,EAAIn9E,GAAG,KAAKm9E,EAAIv9E,GAAG,KAAKu9E,EAAIn9E,GAAG,KAAKe,EAAG,mBAAmB,CAACphB,IAAI,oBAAoBjkD,MAAM,CAAC,eAAiByhJ,EAAI0pL,qBAAqB,MAAQ1pL,EAAIwpD,UAAU,YAAcxpD,EAAI22E,WAAW,iBAAkB,GAAM5/M,GAAG,CAAC,YAAcipI,EAAIokL,qBAAqB,KAC52K,CAAC,WAAa,IAAiBhjO,EAATzyG,KAAgBqxE,eAAmB4D,EAAnCj1E,KAA0CugF,MAAMtL,IAAIw9B,EAAG,OAAOx9B,EAAG,MAAM,CAACyP,YAAY,eAAe,CAACzP,EAAG,MAAM,CAACrlE,MAAM,CAAC,GAAK,iBAA1H5P,KAA+Ik0E,GAAG,KAAKe,EAAG,MAAM,CAACrlE,MAAM,CAAC,GAAK,kBDWvN,EACA,KACA,WACA,M,SEfgN,GCgBlN,CACEpS,KAAM,mBACNmuB,MAAO,CACLojV,OAAQ,CACNxtW,KAAML,MACN2qM,UAAU,IAGdtpL,KARF,WASI,MAAO,CACL9M,KAAMyyL,OAAOC,IAAIC,SAASC,SCPjB,I,OAXC,YACd,ICTW,WAAa,IAAIh3C,EAAIrxJ,KAASyyG,EAAG4+C,EAAIhgF,eAAmB4D,EAAGo8E,EAAI9wE,MAAMtL,IAAIw9B,EAAG,OAAOx9B,EAAG,MAAM,CAACyP,YAAY,sBAAsB,CAACzP,EAAG,MAAM,CAACyP,YAAY,UAAU,CAAC2sE,EAAIn9E,GAAGm9E,EAAI39E,GAAG29E,EAAI57I,KAAKu5V,qCAAqC39M,EAAIn9E,GAAG,KAAKe,EAAG,MAAM,CAACyP,YAAY,aAAa2sE,EAAI19E,GAAI09E,EAAU,QAAE,SAASltJ,GAAM,OAAO8wE,EAAG,MAAM,CAACz2E,IAAI2F,EAAKugF,YAAY,cAAc,CAACzP,EAAG,IAAI,CAACyP,YAAY,qBAAqB,CAAC2sE,EAAIn9E,GAAG,aAAam9E,EAAI39E,GAAGvvE,EAAKgB,MAAM,cAAcksJ,EAAIn9E,GAAG,KAAKe,EAAG,IAAI,CAACyP,YAAY,qBAAqB,CAAC2sE,EAAIn9E,GAAG,aAAam9E,EAAI39E,GAAGvvE,EAAKooB,QAAQ,mBAAkB,OACziB,IDWpB,EACA,KACA,WACA,M,SEf6M,GCuB/M,CACE/uB,KAAM,sBACNmuB,MAAO,CACLkvL,UAAW,CAAEt5M,KAAMuL,OAAQ++D,QAAS,KAEtCtpD,KALF,WAMI,MAAO,CACL9M,KAAMyyL,OAAOC,IAAIC,SAASC,MAC1B0mK,OAAQ,CACd,CACQ,KAAR,6CACQ,OAAR,6DAEA,CACQ,KAAR,6CACQ,OAAR,6DAEA,CACQ,KAAR,6CACQ,OAAR,6DAEA,CACQ,KAAR,6CACQ,OAAR,6DAEA,CACQ,KAAR,6CACQ,OAAR,gEAKE5vR,WAAY,CAAE8vR,iBAAhB,8BACExjU,QAAS,CAEPyjU,WAFJ,WAIMlvW,KAAKwgF,MAAM2uR,uBAAuBpC,YAElC/sW,KAAKovW,iBAGPA,cATJ,WAUA,uEACQnsW,OAAO2S,SAASG,KAAO,kCAA/B,eAEQ9S,OAAO2S,SAASG,KAAO,oCAA/B,4CAII+2F,OAjBJ,WAkBM7pG,OAAOy9R,QAAQp5C,UCvDN,I,OAXC,YACd,ICTW,WAAa,IAAIj2F,EAAIrxJ,KAASyyG,EAAG4+C,EAAIhgF,eAAmB4D,EAAGo8E,EAAI9wE,MAAMtL,IAAIw9B,EAAG,OAAOx9B,EAAG,MAAM,CAACyP,YAAY,aAAa,CAACzP,EAAG,MAAM,CAACyP,YAAY,mBAAmB,CAACzP,EAAG,OAAO,CAACo8E,EAAIn9E,GAAGm9E,EAAI39E,GAAG29E,EAAI57I,KAAK45V,8BAA8Bh+M,EAAIn9E,GAAG,KAAKe,EAAG,SAAS,CAACyP,YAAY,cAAct8D,GAAG,CAAC,MAAQipI,EAAI69M,aAAa,CAAC79M,EAAIn9E,GAAGm9E,EAAI39E,GAAG29E,EAAI57I,KAAK65V,uCAAuCj+M,EAAIn9E,GAAG,KAAKe,EAAG,SAAS,CAACyP,YAAY,cAAct8D,GAAG,CAAC,MAAQipI,EAAIvkD,SAAS,CAACukD,EAAIn9E,GAAGm9E,EAAI39E,GAAG29E,EAAI57I,KAAK85V,uCAAuCl+M,EAAIn9E,GAAG,KAAKe,EAAG,MAAM,CAACyP,YAAY,uBAAuB,CAACzP,EAAG,MAAM,CAACA,EAAG,2BAA2B,CAACphB,IAAI,yBAAyBjkD,MAAM,CAAC,UAAYyhJ,EAAIwpD,cAAc,GAAGxpD,EAAIn9E,GAAG,KAAKe,EAAG,MAAM,CAACyP,YAAY,mBAAmB,CAACzP,EAAG,mBAAmB,CAACrlE,MAAM,CAAC,OAASyhJ,EAAI09M,WAAW,SACtwB,IDWpB,EACA,KACA,WACA,M,SEbFS,GAAoB/rR,QAAU,SAASrE,GACnCA,EAAIlG,UAAUs2R,GAAoBhyW,KAAMgyW,KAG7BA,UCN8L,GC8B7M,CACEhyW,KAAM,oBACN+kB,KAFF,WAGI,MAAO,CACL9M,KAAMyyL,OAAOC,IAAIC,SAASC,MAC1BonK,WAAY,KAGhB9jV,MAAO,CACLswU,SAAU,CACR16V,KAAML,MACN2qE,QAAS,IAEXoyR,YAAa,CACX18V,KAAML,MACN2qE,QAAS,KAGbhH,MAAO,CAELo5R,YAFJ,SAEA,GACMj+V,KAAKwgF,MAAM9N,KAAK2qR,eAAejhV,IAEjCqzV,WALJ,SAKA,GACMzvW,KAAKwgF,MAAM9N,KAAKlhE,OAAO3M,KAG3B4mC,QAAS,CAEPikU,WAFJ,SAEA,KACM,OAAKxxW,IACEqkB,EAAKw1L,MAAM75J,SAAShgD,IAAUqkB,EAAK/T,GAAG0vC,SAAShgD,KAGxD6/V,aAPJ,WAQM/9V,KAAKq7E,MAAM,kBAAmBr7E,KAAKwgF,MAAM9N,KAAKirR,gBAAe,KAG/DT,kBAXJ,WAYM,IAAN,6EACMl9V,KAAKq7E,MAAM,mBAAoBl4E,KAGnC6/E,QA3CF,cCXe,I,OAXC,YACd,ICTW,WAAa,IAAIquE,EAAIrxJ,KAASyyG,EAAG4+C,EAAIhgF,eAAmB4D,EAAGo8E,EAAI9wE,MAAMtL,IAAIw9B,EAAG,OAAOx9B,EAAG,MAAM,CAACyP,YAAY,uBAAuB,CAACzP,EAAG,WAAW,CAACyP,YAAY,aAAa90E,MAAM,CAAC,YAAcyhJ,EAAI57I,KAAKk6V,qBAAqBr2R,MAAM,CAACp7E,MAAOmzJ,EAAc,WAAE/qJ,SAAS,SAAUu9L,GAAMxyC,EAAIo+M,WAAW5rK,GAAK/mH,WAAW,gBAAgBu0E,EAAIn9E,GAAG,KAAKe,EAAG,UAAU,CAACzK,WAAW,CAAC,CAAChtE,KAAK,OAAOoqF,QAAQ,SAAS1pF,MAAOmzJ,EAAI4qM,SAASt6V,OAAS,EAAGm7E,WAAW,wBAAwBjpB,IAAI,OAAO6wB,YAAY,cAAc90E,MAAM,CAAC,KAAOyhJ,EAAI4qM,SAAS,WAAW,KAAK,gBAAgB,GAAG,qBAAqB,GAAG,qBAAqB5qM,EAAIq+M,YAAYtnV,GAAG,CAAC,MAAQipI,EAAI0sM,aAAa,eAAe1sM,EAAI6rM,mBAAmBloR,YAAYq8E,EAAIj9E,GAAG,CAAC,CAAC51E,IAAI,UAAUkH,GAAG,SAASmuD,GACxuB,IAAIlvD,EAAOkvD,EAAIlvD,KACf,OAAOswE,EAAG,OAAO,CAACyP,YAAY,oBAAoB,CAAE//E,EAAW,OAAEswE,EAAG,MAAM,CAACyV,YAAY,CAAC,gBAAgB,OAAO96E,MAAM,CAAC,IAAM,uCAAuC,IAAM,MAAMyhJ,EAAIl9E,KAAKk9E,EAAIn9E,GAAG,KAAKe,EAAG,OAAO,CAACo8E,EAAIn9E,GAAGm9E,EAAI39E,GAAG/uE,EAAKozM,kBAAkB1mD,EAAIn9E,GAAG,KAA6B,GAAvBm9E,EAAI4qM,SAASt6V,OAAaszE,EAAG,MAAM,CAACyP,YAAY,gBAAgB,CAAC2sE,EAAIn9E,GAAG,IAAIm9E,EAAI39E,GAAG29E,EAAI57I,KAAKqzM,YAAY,OAAOz3D,EAAIl9E,MAAM,KACpW,IDSpB,EACA,KACA,KACA,M,SEbFy7R,GAAkBnsR,QAAU,SAASrE,GACjCA,EAAIlG,UAAU02R,GAAkBpyW,KAAMoyW,KAG3BA,U,+YCN8L,GCoD7M,CACEpyW,KAAM,cACNmuB,MAAO,CACL0M,SAAU,CAAE92B,KAAM26D,OAAtB,YACI2zS,UAAW,CAAEtuW,KAAM26D,OAAvB,WACIqiJ,UAAW,CAAEh9M,KAAMuL,SAErByV,KAPF,WAQI,MAAO,CACL9M,KAAMyyL,OAAOC,IAAIC,SAASC,MAC1Bkd,QAAS,KACT12J,MAAO,CACb,wCACA,wCACA,yBAEMihT,UAAW,EACX90T,IAAK,EACLm6S,UAAW,KACXpgU,IAAK,EACLihU,aAAc,CACZn3I,aAAc7+M,KAAK+vW,cAErBC,KAAM,KACNzZ,UAAW,KACX/3I,WAAYtE,eAAelyM,QAAQ,KAAM,KAAKA,QAAQ,KAAM,OAGhE68D,MAAO,CACLgrS,UADJ,SACA,GACU7vW,KAAKgwW,MAAQhwW,KAAKgwW,KAAK1rV,OAASlI,IAClCpc,KAAKgwW,KAAK1rV,MAAMiS,KAAOna,EAAE8kG,QAAQ,GAAK,KACtClhH,KAAKiwW,cAAa,KAGtB1xJ,UAPJ,SAOA,GACMv+M,KAAKm1V,UAAY,IAAI7qV,KAAK8R,GAC1Bpc,KAAKu2V,UAAYx8I,MAAM,IAAIzvM,KAAK8R,IAAI49L,OAAO,WAG/CvuK,QAAS,CAEPskU,aAFJ,SAEA,GACM,OAAN,sCAGIG,iBANJ,SAMA,KACM,IAAI3lU,EAAE18B,EAAEnG,QAAQk2B,SAAS,YAAzB,CACA,IAAN,wBACA,uCACM59B,KAAKm1V,UAAYh0V,EAAOgvW,GACxBnwW,KAAKq7E,MAAM,WAAY0+H,MAAM/5M,KAAKm1V,WAAWn7I,OAAO,iBAGtDo2J,aAdJ,SAcA,GACMpwW,KAAKm1V,UAAYtwV,GAEnBwrW,SAjBJ,WAkBM,GAAI38U,SAAS1zB,KAAKgwW,KAAK1rV,MAAMiS,OAASv2B,KAAKg7C,IAGzC,OAFAh7C,KAAKgwW,KAAK1rV,MAAMiS,KAAOv2B,KAAKg7C,IAAM,UAClCh7C,KAAKq7E,MAAM,WAAY,SAGzB,IAAIrvD,EAAM,IAAI1hB,KACpB,sDAEM,GAAN,uBACQ,IAAIw0V,EAAW/kJ,MAAM/tL,GAAKooM,SAAlC,QAEY0qI,EAAW9+V,KAAKq4B,SAEtBr4B,KAAKgwW,KAAK1rV,MAAMiS,KACtB,qDACM,IAAI+5U,EAAUv2J,MACpB,SACA,sDACA,UACA,UAEM/5M,KAAKu2V,UAAYx8I,MAAMu2J,GAASt2J,OAAO,SACvCh6M,KAAKq7E,MAAM,WAAYr7E,KAAKu2V,YAE9Bga,UA1CJ,WA2CM,GACN,SACA,sDACA,WACA,kEAIQ,OAFAvwW,KAAKu2V,UAAY,aACjBv2V,KAAKq7E,MAAM,WAAY,SAGzB,IAAIrvD,EAAM,IAAI1hB,KACpB,sDAEM,GAAN,uBACQ,IAAIw0V,EAAW,GAAK/kJ,MAAM/tL,GAAKooM,SAAvC,QAEY0qI,EAAW9+V,KAAKq4B,SAEtBr4B,KAAKgwW,KAAK1rV,MAAMiS,KACtB,qDACM,IAAI+5U,EAAUv2J,MACpB,SACA,sDACA,UACA,UAEM/5M,KAAKu2V,UAAYx8I,MAAMu2J,GAASt2J,OAAO,SACvCh6M,KAAKq7E,MAAM,WAAYr7E,KAAKu2V,YAG9BhsH,WAzEJ,WA0EMvqO,KAAKq7E,MAAM,WAAY0+H,MAAM/5M,KAAKm1V,WAAWn7I,OAAO,gBAGtDi2J,aA7EJ,SA6EA,GACM,IAAIO,EAAOxwW,KAAKu2V,UAAUptV,MAAM,KAAK,GACjC+qN,EAAOl0N,KAAKu2V,UAAUptV,MAAM,KAAK,GAGjCsnW,EAAa3oW,KAAKq4C,MAAMqwT,EAAOxwW,KAAKq4B,UAAYr4B,KAAKq4B,SACrDq4U,EAAa5oW,KAAK0tB,KAAKg7U,EAAOxwW,KAAKq4B,UAAYr4B,KAAKq4B,SAEpDs4U,EAAKH,EAAOxwW,KAAKq4B,SA0B3B,GAxBUu4U,GACEH,EAAa,KACfA,EAAa,IAAMA,GAErBzwW,KAAKu2V,UAAYriI,EAAO,IAAMu8I,GACtC,+BAC0B,IAAdC,IAEFA,EAAa,KADbx8I,EAAOh4J,OAAOg4J,GAAQ,GAEX,KACTA,EAAO,IAAMA,IAGbw8I,EAAa,KACfA,EAAa,IAAMA,GAErB1wW,KAAKu2V,UAAYriI,EAAO,IAAMw8I,IAE1BD,EAAa,KACfA,EAAa,IAAMA,GAErBzwW,KAAKu2V,UAAYriI,EAAO,IAAMu8I,IAGtC,GAEQ,IAAII,GACZ,SACA,sEACA,UACA,mFACA,IACA,GACYt6U,EAAOzuB,KAAK0tB,KAAKq7U,EAAe7wW,KAAK8vW,WACzC9vW,KAAKgwW,KAAK1rV,MAAMiS,KAAOv2B,KAAKg7C,IAAMzkB,EAAO,EAAI,KAC7Cv2B,KAAKq7E,MAAM,WAAYr7E,KAAKu2V,aAIhCua,gBA9HJ,WA8HA,WACM9wW,KAAKgwW,KAAOltW,SAASyL,eAAe,QACpCvO,KAAK8xB,UAAYhvB,SAASyL,eAAe,aACzCvO,KAAKg7C,IAAM,GACXh7C,KAAK+0B,IAAM/0B,KAAK8xB,UAAUoiH,YAAcl0I,KAAKg7C,IAAM,EACnDh7C,KAAK8vW,WAAa9vW,KAAK+0B,IAAM/0B,KAAKg7C,KAAO,KACzCh7C,KAAKgwW,KAAK1rV,MAAMiS,KAAOv2B,KAAKg7C,IAAM,KAClCh7C,KAAKgwW,KAAKe,YAAc,SAA9B,GACQ,IAAIhqG,EAAQv+O,EAAMyE,QAAU,EAApC,qBACA,IAAmB,EAAnB,iBACU,EAAV,kBAEQnqB,SAASkuW,YAAc,SAA/B,GACU,IACIC,GADAzoV,EAAQA,GAASvlB,OAAOulB,OACVyE,QAAU85O,EACxBkqG,EAAQ,EAAtB,IACYA,EAAQ,EAApB,IACA,UACYA,EAAQ,EAApB,QAG6B,EAA7B,IAAU,IAEIZ,EAAWY,EAAQ,EAAjC,UACcV,EAAYU,EAAQ,EAAlC,UAQUA,GANEA,EADEnpW,KAAKinC,IAAIkiU,EAAQZ,GAAYvoW,KAAKinC,IAAIkiU,EAAQV,GACxCA,EACpB,KACoB,EAEAF,GAEM,EAA1B,YACU,EAAV,uBACU,EAAV,qBAEU,IAAI5+J,EAAM,EAApB,UAEc+iJ,GAAYyc,EAAQ,EAAlC,OAIcC,EAAU,IAAI5mW,KAFS,GAAXkqV,EAAgB,GAAK,GAAK,KAGpD,cACA,cACA,WACU,EAAV,iCAEQ1xV,SAASquW,UAAY,SAA7B,GACU,EAAV,eACUruW,SAASkuW,YAAc,KACvBluW,SAASquW,UAAY,QAI3BC,gBArLJ,WAsLM,IAAN,4BADA,KAEA,MAFA,UAEA,OAFA,MAEA,EAFA,SAEA,OAFA,MAEA,EAFA,EAGA,yBACM,OAAOtpW,KAAKq4C,MAAM0wT,EAAe,KAAO,IAG5Cz/U,SAAU,CACRigV,mBADJ,WAEM,OrsBxO6B9oK,EqsBwOnC,ersBtOMwR,MAAMxR,GAAM0O,OAAS8C,QAAQ9C,UAEtB8C,MAAMxR,GAAM0O,OAAS8C,QAAQ9C,UAGlC8C,MAAMxR,GAAMyO,QAAU+C,QAAQ/C,WAEvB+C,MAAMxR,GAAMyO,QAAU+C,QAAQ/C,UAGhC+C,MAAMxR,GAAMA,QAAUwR,QAAQxR,QAZpC,IAA4BA,IqsB2OjCvlH,QAzOF,WAyOA,WACIhjF,KAAKmiF,WAAU,WACb,EAAN,kBACM,EAAN,sCC7Qe,I,OAXC,YACd,ICTW,WAAa,IAAIkvE,EAAIrxJ,KAASyyG,EAAG4+C,EAAIhgF,eAAmB4D,EAAGo8E,EAAI9wE,MAAMtL,IAAIw9B,EAAG,OAAOx9B,EAAG,MAAM,CAACyP,YAAY,gBAAgB,CAACzP,EAAG,MAAM,CAACA,EAAG,MAAM,CAACyP,YAAY,MAAM,CAACzP,EAAG,IAAI,CAACyP,YAAY,qBAAqBgG,YAAY,CAAC,OAAS,WAAWtiE,GAAG,CAAC,MAAQ,SAASkqD,GAAQ,OAAO++E,EAAI6+M,iBAAiB59R,GAAQ,OAAW++E,EAAIn9E,GAAG,KAAKe,EAAG,iBAAiB,CAACyV,YAAY,CAAC,MAAQ,SAAS96E,MAAM,CAAC,UAAW,EAAM,WAAY,EAAM,KAAO,OAAO,OAASyhJ,EAAImtD,WAAW,iBAAiBntD,EAAI2kM,aAAa,KAAO,OAAO,YAAc3kM,EAAI57I,KAAK67V,wBAAwBlpV,GAAG,CAAC,OAASipI,EAAIk5E,YAAYjxJ,MAAM,CAACp7E,MAAOmzJ,EAAa,UAAE/qJ,SAAS,SAAUu9L,GAAMxyC,EAAI8jM,UAAUtxJ,GAAK/mH,WAAW,eAAeu0E,EAAIn9E,GAAG,KAAKe,EAAG,IAAI,CAACyP,YAAY,sBAAsBjK,MAAM,CAAEjtE,SAAU6jJ,EAAIggN,oBAAqB3mR,YAAY,CAAC,OAAS,WAAWtiE,GAAG,CAAC,MAAQ,SAASkqD,GAAQ,OAAO++E,EAAI6+M,iBAAiB59R,GAAQ,QAAW,KAAK++E,EAAIn9E,GAAG,KAAKe,EAAG,MAAM,CAACyP,YAAY,YAAY90E,MAAM,CAAC,GAAK,cAAc,CAACqlE,EAAG,MAAM,CAACyV,YAAY,CAAC,MAAQ,OAAO,OAAS,OAAO,SAAW,WAAW,UAAU,OAAO2mE,EAAIn9E,GAAG,KAAKe,EAAG,MAAM,CAACyP,YAAY,uBAAuB2sE,EAAI19E,GAAI09E,EAAS,OAAE,SAASltJ,GAAM,OAAO8wE,EAAG,MAAM,CAACz2E,IAAI2F,EAAKugF,YAAY,aAAa,CAACzP,EAAG,IAAI,CAACo8E,EAAIn9E,GAAGm9E,EAAI39E,GAAGvvE,MAASktJ,EAAIn9E,GAAG,KAAKe,EAAG,MAAM,CAACyP,YAAY,oBAAmB,GAAG2sE,EAAIn9E,GAAG,KAAKe,EAAG,MAAM,CAACyP,YAAY,MAAMgG,YAAY,CAAC,UAAU,KAAK96E,MAAM,CAAC,GAAK,YAAYyhJ,EAAIn9E,GAAG,KAAKe,EAAG,MAAM,CAACyV,YAAY,CAAC,QAAU,iBAAiB,CAACzV,EAAG,IAAI,CAACphB,IAAI,WAAW6wB,YAAY,qBAAqBjK,MAAM,CAAEjtE,SAAU6jJ,EAAI4kM,iBAAkBrmV,MAAM,CAAC,GAAK,YAAYwY,GAAG,CAAC,MAAQipI,EAAIg/M,YAAYh/M,EAAIn9E,GAAG,KAAKe,EAAG,IAAI,CAACyP,YAAY,iBAAiB2sE,EAAIn9E,GAAG,KAAKe,EAAG,OAAO,CAACphB,IAAI,WAAWjkD,MAAM,CAAC,GAAK,aAAa,CAACyhJ,EAAIn9E,GAAGm9E,EAAI39E,GAAG29E,EAAIklM,cAAcllM,EAAIn9E,GAAG,KAAKe,EAAG,IAAI,CAACphB,IAAI,WAAW6wB,YAAY,sBAAsBjK,MAAM,CAAEjtE,SAAU6jJ,EAAI6kM,iBAAkBtmV,MAAM,CAAC,GAAK,YAAYwY,GAAG,CAAC,MAAQipI,EAAIk/M,mBACh1D,IDWpB,EACA,KACA,WACA,M,SEfuM,GCczM,CACE/yW,KAAM,aACN+kB,KAFF,WAGI,MAAO,CACLk/S,UAAU,EACVC,UAAW,IAGf/1S,MAAO,CACLg2S,QAASzlQ,OACT0lQ,MAAO,CACLrgU,KAAM5D,OACNkuE,QAAS,KAGblzD,QAAS,CACPkpT,SADJ,SACA,GACM,OAAKzlT,EACDA,EAAEza,QAAU,GACPya,EAAEojG,UAAU,EAAG,IAEfpjG,EAJM,IAOjBm1V,YATJ,SASA,GACM,OAAKn1V,EAGIyW,WAAWzW,GAAG8kG,QAAQ,GAFtBruF,WAAW,KAAKquF,QAAQ,KAMrC9vF,SAAU,GACVyzC,MAAO,GACPoF,OAAQ,CAAC,WACTx+B,QAAS,CACP+lU,UADJ,WAEMxxW,KAAK4hU,MAAM3rT,SAAWjW,KAAK4hU,MAAM3rT,QACjCjW,KAAKq7E,MAAM,YAAar7E,KAAK4hU,SAGjC5+O,QAzCF,cCKe,I,OAXC,YACd,ICTW,WAAa,IAAIquE,EAAIrxJ,KAASyyG,EAAG4+C,EAAIhgF,eAAmB4D,EAAGo8E,EAAI9wE,MAAMtL,IAAIw9B,EAAG,OAAOx9B,EAAG,MAAM,CAACyP,YAAY,eAAejK,MAAM,CAAExkE,QAASo7I,EAAIuwK,MAAM3rT,SAAUmS,GAAG,CAAC,MAAQipI,EAAImgN,YAAY,CAACv8R,EAAG,MAAM,CAACphB,IAAI,aAAa,CAACohB,EAAG,MAAM,CAACyP,YAAY,QAAQpgE,MAAM,CAAGkvB,UAAW,WAAa69G,EAAIqwK,UAAY,QAAU9xT,MAAM,CAAC,KAAOyhJ,EAAIswK,UAAU,CAAC1sP,EAAG,MAAM,CAACyP,YAAY,eAAe,CAAC2sE,EAAIn9E,GAAGm9E,EAAI39E,GAAG29E,EAAIt9E,GAAG,cAAPs9E,CAAsBA,EAAIuwK,MAAMzrQ,WAAWk7F,EAAIn9E,GAAG,aAAam9E,EAAIn9E,GAAG,KAAKe,EAAG,IAAI,CAACyP,YAAY,UAAUjK,MAAM,CAAEqnP,QAASzwK,EAAIowK,WAAY,CAACpwK,EAAIn9E,GAAG,WAAWm9E,EAAI39E,GAAG29E,EAAIt9E,GAAG,WAAPs9E,CAAmBA,EAAIuwK,MAAM90F,aAAa,IAAIz7E,EAAI39E,GAAG29E,EAAIuwK,MAAMpkU,MAAM,kBAChmB,IDWpB,EACA,KACA,WACA,M,SEfgN,GCYlN,CACEA,KAAM,mBACNqtE,OAAQ,CALV,QACEw1N,UAAU,KAKV99Q,KAHF,WAII,MAAO,CACLgpM,MAAO,OAGX5/L,MAAO,CACLy2S,SAAU,CACR7gU,KAAM26D,QAER8wO,YAAa,CACXzrS,KAAM26D,QAERkwK,WAAY,CACV7qO,KAAML,MACN2qE,QAAS,KAGb5B,OAAQ,GACRpF,MAAO,GACPp5B,QAAS,CAEP42R,WAFJ,SAEA,gBACMriU,KAAKurN,MAAM2iG,aACX9hF,EAAWjhM,SAAQ,SAAzB,GACQ,EAAR,uBAEmB,UAAT5pC,GACFvB,KAAKurN,MAAM2+F,iBAIfgY,iBAZJ,SAYA,GACM,IAAN,OACA,SAEA,GACQ9wR,MAAO,YACPmB,EAHR,IAIQC,EAJR,IAKQkiB,MALR,QAMQrjC,MAAO,GACPoC,OAAQ,IACR7jB,MAAO,CACL0V,KAAM,CACJuqB,OAAQ,YAGZttB,KAAM,CAAEykQ,OAAQ7iR,EAAKqK,IACrB0qE,UAAW,CACT32D,KADV,WAEY,MAAO,CACLo/S,QAAS,IAGbxiP,WAAY,CACVsyR,QAAZ,IAEUhmU,QAAS,CACPimU,SADZ,SACA,GACcv+S,EAAMu+S,SAASnvV,KAGnBpjB,OAdV,SAcA,GACY,OAAO0B,EAAE,WAAY,CACnBunB,GAAI,CACFopV,UAAWxxW,KAAK0xW,UAElB/lV,MAAO,CACLi2S,MAAOz9T,QAMjBnE,KAAKurN,MAAMqsE,QAAQjzR,IAGrB+sW,SA1DJ,SA0DA,GAEM1xW,KAAKq7E,MAAM,YAAa94D,KAG5BygE,QArFF,c,OCsBA,IClCwM,GDkCxM,CACExlF,KAAM,eACNmuB,MAAO,GACPpJ,KAHF,WAII,MAAO,CACL9M,KAAMyyL,OAAOC,IAAIC,SAASC,MAC1B4zJ,SAAU,GACV7vH,WAAY,GACZ+oH,UAAW,IAAI7qV,KACfisV,UAAW,GACX0H,YAAa,GACbzI,YAAa,EACb36I,UAAW+L,aAAajH,MACxBkkH,SAAU,GACVgsC,UAAW,EACXzjC,IAAK,GACLulC,UAAW,GACX1uC,UAAW,EACX1hU,KAAM,QACNg9M,UAAW,OAGfp/H,WAAY,CAAd,qDEhDgB,YACd,ICTW,WAAa,IAAiBszB,EAATzyG,KAAgBqxE,eAAhBrxE,KAA0CugF,MAAMtL,GAAO,OAAvDj1E,KAAkE8zE,GAAG,KACjF,CAAC,WAAa,IAAiB2+B,EAATzyG,KAAgBqxE,eAAmB4D,EAAnCj1E,KAA0CugF,MAAMtL,IAAIw9B,EAAG,OAAOx9B,EAAG,MAAM,CAACyP,YAAY,sBAAsB,CAACzP,EAAG,MAAM,CAACrlE,MAAM,CAAC,GAAK,aAAjI5P,KAAkJk0E,GAAG,KAAKe,EAAG,MAAM,CAACrlE,MAAM,CAAC,GAAK,yBDW1N,EACA,KACA,KACA,M,SF0CA67B,QAAS,CAEPmmU,aAFJ,WAGM3uW,OAAOy9R,QAAQmxE,IAAI,IAGrBC,uBANJ,WAOM7xK,OAAOwC,KAAK,sCAClB,4CACQ,IAAR,SACA,aACU,KAAV,oBACU,KAAV,WACU,QAAV,cACU,KAAV,cACU,KAAV,mBACU,KAAV,mBAEA,aAGIsvK,YArBJ,WAsBM9xK,OAAOwC,KAAK,iCAClB,8CACQ,IAAR,SACA,YACU,KAAV,sBAEA,2BACQ,KAAR,uBACA,aAGIuvK,kBAjCJ,SAiCA,cACA,oBACUC,IACFA,EAAkBjyW,KAAKkyW,eAAeD,IACtB9mU,SAAQ,SAAhC,GACU,EAAV,oBAGM,IAAN,kBACUgnU,IACFA,EAAgBnyW,KAAKkyW,eAAeC,IACtBhnU,SAAQ,SAA9B,GACU,EAAV,qBAKI+mU,eAlDJ,SAkDA,gBAcM,OAbN,mBACQ,IAAR,sCACA,IACA,4BAIQ,OAHIjuW,EAAImuW,UACN5jW,EAAKo3L,EAAK,IAAMmS,GAEX,CACLvpM,GAAIA,EACJupM,MAAOA,EACP98L,SAAU,EAApB,yBAMI2vV,iBAnEJ,WAoEM3qK,OAAOwC,KAAK,oCAClB,8CACQ,IAAR,SACA,aACU,KAAV,sBAEA,2BACQ,KAAR,uBACA,aAGI4vK,eA/EJ,SA+EA,GACUzuV,IACF5jB,KAAKijU,UAAYjjU,KAAKijU,UAAY,GAEpC,IAAN,GACQ16H,KAAMwR,MAAM/5M,KAAKm1V,WAAWn7I,OAAO,cACnCoyH,IAAKpsU,KAAKosU,IACVkmC,QAAS1rJ,aAAa2rJ,YAAa,IAAIjoW,MAAO8rV,oBAAtD,IAEMn2J,OAAOwC,KAAK,0BAA2Bx6J,GAC7C,oBACQ,IAAR,SACA,aACU,KAAV,cAEA,2BACQ,KAAR,uBACA,aAGI07R,oBAnGJ,WAqGM,GADA3jU,KAAKijU,YACkB,IAAnBjjU,KAAKijU,UAAiB,CACxB,IAAR,2CACQjjU,KAAKwyW,cAAc/4O,GAAgB,KAIvC+4O,cA3GJ,SA2GA,cACMxyW,KAAKosO,WAAWjhM,SAAQ,SAA9B,GACQ,IAAR,gEACQ,GAAI2oB,GAAUA,EAAO,GAAI,CACvB,IAAV,gBACA,iBACUm9I,EAAG96I,MAAQs8S,EAAUj0W,QAErByyM,EAAG96I,MAAQ,SAGG,UAAdn2D,KAAKuB,MACPqe,YAAW,WACT,EAAV,uDACU44D,QAAQsuI,gBAEV9mN,KAAKuB,KAAO,UAEZqe,YAAW,WACT,EAAV,uDACU44D,QAAQsuI,gBAGZ9mN,KAAKijU,UAAY,GAEnByuC,SApIJ,SAoIA,GACUnvV,EAAKtM,QACPjW,KAAKi+V,YAAc/8V,MAAM0qC,KAAK,IAAIw0B,IAAI,GAA9C,O,sHAAA,gDAEQpgE,KAAKi+V,YAAcj+V,KAAKi+V,YAAYzsV,QAAO,SAAnD,GACU,OAAOrN,GAAQoe,EAAKuqN,WAAa,IAAMvqN,EAAK/kB,QAIhDwC,KAAK29V,eAAe39V,KAAKi+V,cAG3BN,eAhJJ,SAgJA,cACM39V,KAAKi+V,YAAc17U,EACnBviB,KAAKosO,WAAWjhM,SAAQ,SAA9B,GACQ,IAAR,0BACY5oB,EAAK27B,SAAS1vC,GAChBkkW,EAAUz8V,SAAU,EAEpBy8V,EAAUz8V,SAAU,KAIxB2J,YAAW,WACT,EAAR,oDAII+yV,aAhKJ,WAiKM3yW,KAAKw1V,YAAc,EACnBx1V,KAAKm1V,UAAY,IAAI7qV,KACrBtK,KAAKwgF,MAAMoyR,YAAYxC,aAAapwW,KAAKm1V,WACzC38Q,QAAQkuI,cACR1mN,KAAKqyW,eAAe,IAGtBQ,gBAxKJ,WAyKM7yW,KAAKw1V,YAAc,EAEnB,IAAN,kBACMx1V,KAAKm1V,UAAY5sJ,EAAKzzK,SAAS,EAAG,OAAOq7U,GACzCnwW,KAAKwgF,MAAMoyR,YAAYxC,aAAapwW,KAAKm1V,WACzC38Q,QAAQkuI,cACR1mN,KAAKqyW,eAAe,IAGtB5pK,QAlLJ,SAkLA,GACMzoM,KAAKm1V,UAAY/4U,EACjB,IAAN,uCAEMpc,KAAKw1V,YAAcx1V,KAAKm1V,YAAc5sJ,EAAO,EAAI,EAEjD/vH,QAAQkuI,cACR1mN,KAAKqyW,eAAe,IAGtBjwS,QA5LJ,SA4LA,GACMpiE,KAAKu2V,UAAYn6U,EAEbpc,KAAKosO,YAAcpsO,KAAKosO,WAAWzqO,QAAU3B,KAAKosO,WAAWzqO,OAAS,IACxE62E,QAAQkuI,cAEV1mN,KAAK8yW,cAAc9yW,KAAKu2V,YAG1Buc,cArMJ,SAqMA,GACM,IAAN,IACUjC,GACV,SACA,yCACA,UACA,mEACA,IACA,GACUt6U,EAAOzuB,KAAK0tB,KAAKq7U,EAAe,IACpC7wW,KAAKwyW,cAAcj8U,IAGrBw8U,aAlNJ,WAmNM,IAEIh+U,EAFYjyB,SAASyL,eAAe,aAEpB2lI,YADV,GAC8B,EACpCloH,EAAM+tL,MAAM,IAAIzvM,KAAKtK,KAAKu+M,YAAYvE,OAAO,YAC7Cg5J,EAAW92S,OAA2B,GAApBlwC,EAAI7iB,MAAM,KAAK,IAAW+yD,OAAOlwC,EAAI7iB,MAAM,KAAK,IAClE2mW,GAAa/6U,EAJP,IAIoB,KAC9B/0B,KAAK6vW,UAAYmD,EAAWlD,EALlB,IAQZmD,iBA5NJ,WA4NA,WACM,OAAN,uDACQ,eAAR,iBACA,qBACA,iDACU,EAAV,iCACU,EAAV,qBAKEjwR,QA9PF,WA+PIhjF,KAAK8xW,0BAEPhvR,QAjQF,WAkQI9iF,KAAKizW,qBIjRM,I,OAXC,YACd,ICTW,WAAa,IAAI5hN,EAAIrxJ,KAASyyG,EAAG4+C,EAAIhgF,eAAmB4D,EAAGo8E,EAAI9wE,MAAMtL,IAAIw9B,EAAG,OAAOx9B,EAAG,MAAM,CAACyV,YAAY,CAAC,MAAQ,OAAO,OAAS,SAAS,CAACzV,EAAG,MAAM,CAACyP,YAAY,iBAAiB,CAACzP,EAAG,MAAM,CAACA,EAAG,IAAI,CAACyP,YAAY,WAAWgG,YAAY,CAAC,cAAc,OAAO96E,MAAM,CAAC,KAAO,qBAAqB,GAAK,wBAAwByhJ,EAAIn9E,GAAG,KAAKe,EAAG,QAAQ,CAACyV,YAAY,CAAC,MAAQ,kBAAkB,cAAc,QAAQ,CAAC2mE,EAAIn9E,GAAGm9E,EAAI39E,GAAG29E,EAAI57I,KAAKy9V,sBAAsB7hN,EAAIn9E,GAAG,KAAKe,EAAG,OAAO,CAACyP,YAAY,aAAat8D,GAAG,CAAC,MAAQipI,EAAIugN,eAAe,CAACvgN,EAAIn9E,GAAGm9E,EAAI39E,GAAG29E,EAAI57I,KAAKggM,eAAepkD,EAAIn9E,GAAG,KAAKe,EAAG,MAAM,CAACzK,WAAW,CAAC,CAAChtE,KAAK,UAAUoqF,QAAQ,YAAY1pF,MAAOmzJ,EAAW,QAAEv0E,WAAW,YAAY4H,YAAY,qBAAqB,CAACzP,EAAG,oBAAoB,CAACphB,IAAI,OAAOjkD,MAAM,CAAC,SAAWyhJ,EAAI4qM,SAAS,YAAc5qM,EAAI4sM,aAAa71U,GAAG,CAAC,gBAAkBipI,EAAIssM,kBAAkBtsM,EAAIn9E,GAAG,KAAKe,EAAG,MAAM,CAACyP,YAAY,gBAAgB,CAACzP,EAAG,KAAK,CAACyP,YAAY,aAAa,CAACzP,EAAG,KAAK,CAACwF,MAAM,CAAEr5C,OAA2B,GAAnBiwH,EAAImkM,aAAmBptU,GAAG,CAAC,MAAQipI,EAAIshN,eAAe,CAACthN,EAAIn9E,GAAGm9E,EAAI39E,GAAG29E,EAAI57I,KAAK09V,+BAA+B9hN,EAAIn9E,GAAG,KAAKe,EAAG,KAAK,CAACwF,MAAM,CAAEr5C,OAA2B,GAAnBiwH,EAAImkM,aAAmBptU,GAAG,CAAC,MAAQipI,EAAIwhN,kBAAkB,CAACxhN,EAAIn9E,GAAGm9E,EAAI39E,GAAG29E,EAAI57I,KAAK29V,mCAAmC/hN,EAAIn9E,GAAG,KAAKe,EAAG,MAAM,CAACyP,YAAY,mBAAmB,CAACzP,EAAG,mBAAmB,CAACphB,IAAI,mBAAmBjkD,MAAM,CAAC,WAAayhJ,EAAI+6E,YAAYhkN,GAAG,CAAC,oBAAoB,SAASkqD,GAAQ++E,EAAI+6E,WAAW95J,GAAQ,qBAAqB,SAASA,GAAQ++E,EAAI+6E,WAAW95J,GAAQ,UAAY++E,EAAIqgN,aAAa,GAAGrgN,EAAIn9E,GAAG,KAAKe,EAAG,MAAM,CAACyP,YAAY,kBAAkB,CAACzP,EAAG,cAAc,CAACzK,WAAW,CAAC,CAAChtE,KAAK,OAAOoqF,QAAQ,SAAS1pF,OAAQmzJ,EAAI74E,QAASsE,WAAW,aAAajpB,IAAI,cAAc62B,YAAY,CAAC,aAAa,QAAQ96E,MAAM,CAAC,UAAYyhJ,EAAIw+M,UAAU,UAAYx+M,EAAIktD,WAAWn2L,GAAG,CAAC,SAAWipI,EAAIo3C,QAAQ,SAAWp3C,EAAIjvF,YAAY,MAAM,OACnzD,IDWpB,EACA,KACA,WACA,M,SEbFixS,GAAa5vR,QAAU,SAASrE,GAC5BA,EAAIlG,UAAUm6R,GAAa71W,KAAM61W,KAGtBA,I,MAAAA,M,yHCLR,IA8BMC,aALsB,EAMVprK,OAAOC,IAAIC,SAASC,MAApB,aADZ,MAJsB,EAMVH,OAAOC,IAAIC,SAASC,MAApB,gBAFZ,MAHqB,EAMVH,OAAOC,IAAIC,SAASC,MAApB,eAHX,IAOAkrK,aAZsB,EAaV,WADZ,MAXsB,EAaV,WAFZ,MAVqB,EAaV,WAHX,IA0BAC,GAAoB,SAAC/2T,GAC9B,IAAM12C,EAAMA,GAAG02C,EACf,IAA0B,IAAtB12C,EAAItC,QAAQ,KACd,OAAO,EAET,IAAM8uC,EAAIxsC,EAAItC,QAAQ,KAAO,EAE7B,OADUsC,EAAIpE,OAAS4wC,GAiIdkhU,GAAmB,SAAC9zW,EAASzB,EAAOqD,GAC/C,IAhBkCghB,EAC9BmxV,EAeAC,EAAaz1W,EACjB,OAAQqD,GACN,KAnLkC,GAoLhC,IACMyO,GAnBN0jW,EAAa,IADiBnxV,EAmBS5iB,GAjBnCgC,OAAS,GACf4gB,EAAK4oB,SAAQ,SAAAhnC,GACRA,EAAK8W,UAAY9W,EAAK8W,SAAStZ,OAAS,GACzCwC,EAAK8W,SAASkwB,SAAQ,SAAAqsF,GACpBk8O,EAAWlxW,KAAKg1H,SAKjBk8O,GASoBhiW,MAAK,SAAAhC,GAAM,OAAOwsD,OAAOxsD,EAAGxR,SAAWA,KAC3D8R,IACD2jW,EAAal+V,KAAKzF,EAAI+nM,QAExB,MAEF,KA1M6B,EA2M3B,GAAGp4M,EAAQgC,OAAS,EAAG,CACrB,IAAMqO,EAAMrQ,EAAQ+R,MAAK,SAAAhC,GAAM,OAAOA,EAAGxR,QAAUA,KAChD8R,IACD2jW,EAAal+V,KAAKzF,EAAI4jW,gBAG1B,MAEF,QACED,EAAaz1W,EAGjB,OAAOy1W,GC/NmI,GCI9H,CACZn2W,KAAM,gBACNmuB,MAAO,CACJkoV,YAAa,CAACtyW,KAAM26D,OAAQ2vI,UAAU,GACtCioK,YAAa,CAACvyW,KAAM5D,OAAQkuM,UAAU,GACtCkoK,YAAa,CAACxyW,KAAML,MAAO2qM,UAAU,GACrCmoK,UAAW,CAACzyW,KAAM5D,OAAQkuM,UAAU,IAEvCtpL,KARY,WASV,MAAO,CACL9M,KAAMyyL,OAAOC,IAAIC,SAASC,MAC1BsX,MAAOiH,aAAap4M,GACpBylW,kBFR2B,EEQRC,wBFTc,EEUjCC,uBFMgC,GELhCC,YAAa,GACbC,YAAa,GACbC,UAAW,KAGfljV,SAAU,CACRmjV,aADQ,WAEN,IAAIh3W,EAAIyf,EAAEkqC,UAAUlnD,KAAK8zW,aAIzB,OAHGv2W,GAAgB,QAAXA,EAAE0nB,OACR1nB,EAAE0nB,KAAO,IAEJ1nB,IAGXkuC,QAAS,CAEP+oU,aAFO,SAEM3vW,GACX7E,KAAKq7E,MAAM,eAAgB,CACzB7sE,GAAIxO,KAAK8zW,YAAL,GACJvyW,KAAMvB,KAAK6zW,YACX31W,MAAe,KAAR2G,EAAaA,EAAM,QAK9B4vW,cAXO,SAWO5mW,GACZ,IAAM6mW,EAAW7mW,EAAEnG,OAAOxJ,MAC1B,GAAgB,KAAbw2W,EAMH,GF2EmB,SAACC,EAAUC,GAClC,QAAgB1yW,IAAb0yW,EAAwB,OAAO,EAClC,IAAIC,GAAO,EA0BX,OAzBAF,EAASxpU,SAAQ,SAAChnC,GAChB,IAAI2wW,GAAU,EACVC,GAAU,EAtFY,IAuFvB5wW,EAAA,UACEywW,EAAW14S,OAAO/3D,EAAA,OACnB2wW,GAAU,GAvFkB,IAyFvB3wW,EAAA,WACJywW,GAAY14S,OAAO/3D,EAAA,OACpB2wW,GAAU,GAzFS,IA4FpB3wW,EAAA,UACEywW,EAAW14S,OAAO/3D,EAAA,OACnB4wW,GAAU,GA5Fe,IA8FpB5wW,EAAA,WACJywW,GAAY14S,OAAO/3D,EAAA,OACpB4wW,GAAU,GAGXD,GAAWC,IACZF,GAAO,MAGJA,EEvGCG,CAAUh1W,KAAKg0W,UAAL,IAAuBU,GAQ9B,CACL,GAAGlB,GAAkBkB,GAAY10W,KAAKg0W,UAAL,aAAgC,CAC/D,IAAIiB,EAASA,GAAGP,EACV37O,EAAWk8O,EAAOxxW,QAAQ,KAAOzD,KAAKg0W,UAAL,aAAiC,EACxEh0W,KAAKq0W,YAAcn4S,OAAO+4S,EAAO3xW,MAAM,EAAGy1H,SAE1C/4H,KAAKq0W,YAAcn4S,OAAOw4S,GAE5B10W,KAAKq7E,MAAM,eAAgB,CACzB7sE,GAAIxO,KAAK8zW,YAAL,GACJvyW,KAAMvB,KAAK6zW,YACX31W,MAAO8B,KAAKq0W,mBAlBdr0W,KAAK6mN,SAAS3+M,MAAMuN,KAAK84C,MAAL,GAAgBvuD,KAAKg0W,UAAL,UACpCh0W,KAAKq0W,YAAc,KACnBr0W,KAAKq7E,MAAM,eAAgB,CACzB7sE,GAAIxO,KAAK8zW,YAAL,GACJvyW,KAAMvB,KAAK6zW,YACX31W,MAAO,oBAXT8B,KAAKq7E,MAAM,eAAgB,CACzB7sE,GAAIxO,KAAK8zW,YAAL,GAAwBvyW,KAAMvB,KAAK6zW,YAAa31W,MAAO,QA6BjEg3W,iBA5CO,SA4CUz6U,GACfz6B,KAAKs0W,UAAY75U,EAAI,IAAM,GAC3Bz6B,KAAKq7E,MAAM,eAAgB,CACzB7sE,GAAIxO,KAAK8zW,YAAL,GACJvyW,KAAMvB,KAAK6zW,YACX31W,MAA0B,KAAnB8B,KAAKs0W,UAAmBt0W,KAAKs0W,UAAY,UC9DzC,I,OAXC,YACd,ICTW,WAAa,IAAIjjN,EAAIrxJ,KAASyyG,EAAG4+C,EAAIhgF,eAAmB4D,EAAGo8E,EAAI9wE,MAAMtL,IAAIw9B,EAAG,OAAOx9B,EAAG,MAAM,CAAEo8E,EAAIwiN,cAAgBxiN,EAAI4iN,kBAAmBh/R,EAAG,MAAM,CAACyP,YAAY,gBAAgB,CAACzP,EAAG,YAAY,CAACrlE,MAAM,CAAC,KAAO,QAAQ,UAAY,GAAG,YAAcyhJ,EAAI57I,KAAK0/V,2BAA2B/sV,GAAG,CAAC,OAASipI,EAAImjN,cAAcl7R,MAAM,CAACp7E,MAAOmzJ,EAAe,YAAE/qJ,SAAS,SAAUu9L,GAAMxyC,EAAI+iN,YAAYvwK,GAAK/mH,WAAW,gBAAgBu0E,EAAI19E,GAAI09E,EAAIkjN,aAAuB,SAAE,SAASvtS,EAAM/pE,GAAG,OAAOg4E,EAAG,YAAY,CAACz2E,IAAIvB,EAAE2S,MAAM,CAAC,MAAQyhJ,EAAI57I,KAAKuxD,EAAM4sS,eAAe,MAAQ5sS,EAAM9oE,YAAW,IAAI,GAAGmzJ,EAAIl9E,KAAKk9E,EAAIn9E,GAAG,KAAMm9E,EAAIwiN,cAAgBxiN,EAAI6iN,wBAAyBj/R,EAAG,MAAM,CAACyP,YAAY,gBAAgB,CAACzP,EAAG,WAAW,CAACrlE,MAAM,CAAC,KAAO,QAAQ,UAAY,GAAG,YAAcyhJ,EAAI57I,KAAK44M,QAAQ,MAAQh9D,EAAI57I,KAAK44M,SAASjmM,GAAG,CAAC,KAAOipI,EAAIojN,eAAen7R,MAAM,CAACp7E,MAAOmzJ,EAAe,YAAE/qJ,SAAS,SAAUu9L,GAAMxyC,EAAIgjN,YAAYxwK,GAAK/mH,WAAW,iBAAiBu0E,EAAIn9E,GAAG,KAAMm9E,EAAIkjN,aAAoB,KAAEt/R,EAAG,MAAM,CAACyP,YAAY,YAAY,CAAC2sE,EAAIn9E,GAAGm9E,EAAI39E,GAAG29E,EAAIkjN,aAAmB,SAAMljN,EAAIl9E,MAAM,GAAGk9E,EAAIl9E,KAAKk9E,EAAIn9E,GAAG,KAAMm9E,EAAIwiN,cAAgBxiN,EAAI8iN,uBAAwBl/R,EAAG,MAAM,CAACyP,YAAY,gBAAgB,CAAE2sE,EAAI0iN,aAAe1iN,EAAI0iN,YAAYpyW,OAAS,EAAGszE,EAAG,MAAM,CAACA,EAAG,cAAc,CAACrlE,MAAM,CAAC,KAAO,QAAQ,UAAY,GAAG,YAAcyhJ,EAAI57I,KAAK0/V,0BAA0B,QAAU9jN,EAAI0iN,YAAY,mBAAkB,EAAM,iBAAiB,SAAS3rV,GAAG,CAAC,OAASipI,EAAI6jN,kBAAkBlgS,YAAYq8E,EAAIj9E,GAAG,CAAC,CAAC51E,IAAI,UAAUkH,GAAG,SAASmuD,GAC79C,IAAIlvD,EAAOkvD,EAAIlvD,KACX4d,EAAOsxC,EAAItxC,KACf,MAAO,CAAC0yD,EAAG,OAAO,CAACo8E,EAAIn9E,GAAGm9E,EAAI39E,GAAGnxD,EAAKw1L,UAAU1mD,EAAIn9E,GAAG,KAAOvvE,EAAKqkT,OAAoE33J,EAAIl9E,KAAhEc,EAAG,OAAO,CAACo8E,EAAIn9E,GAAG,KAAKm9E,EAAI39E,GAAGnxD,EAAKtH,SAAStZ,QAAQ,QAAiB0vJ,EAAIn9E,GAAG,KAAMvvE,EAAW,OAAEswE,EAAG,OAAO,CAACyV,YAAY,CAAC,MAAQ,YAAY,CAACzV,EAAG,MAAMo8E,EAAIn9E,GAAG,IAAIm9E,EAAI39E,GAAGnxD,EAAK6yV,MAAM,kBAAkB/jN,EAAIl9E,SAAS,MAAK,EAAM,eAAe,GAAGk9E,EAAIl9E,OAAOk9E,EAAIl9E,SAClT,IDQpB,EACA,KACA,WACA,M,SEf6I,GCKhI,CACb32E,KAAM,sBACNmuB,MAAO,CACL44M,UAAW,CAAChjO,KAAMoqE,QAASkgI,UAAU,GACrCwpK,YAAa,CAAC9zW,KAAM5D,OAAQkuM,UAAU,GACtCypK,WAAY,CAAC/zW,KAAMuL,OAAQ++L,UAAU,GACrCiwJ,OAAQ,CAACv6V,KAAML,MAAO2qM,UAAU,GAChC0pK,gBAAiB,CAACh0W,KAAML,MAAO2qM,UAAU,IAE3C1sH,WAAY,CAAEq2R,kBACdjzV,KAVa,WAWX,MAAO,CACL9M,KAAMyyL,OAAOC,IAAIC,SAASC,MAC1BsX,MAAOiH,aAAap4M,GACpBylW,kBNX2B,EMY3BC,wBNbiC,EMcjCC,uBNEgC,GMDhCsB,aAAc,GACd/d,YAAY,GACZge,SAAU,GACVC,cAAc,EACdC,mBAAoB,CAClBp7O,OAAQ,EACR+xG,UAAW,EACXC,SAAU,KAIhB3nK,MAAO,CACL0/J,UADK,SACK1/N,GAIR,OAHGA,GACD7E,KAAK61W,mBAEAhxW,IAGXusB,SAAU,CACT43S,kBADS,WACW,WACbzrU,EAAIyf,EAAEvV,MAAMzH,KAAKy1W,cACf5B,EAAc7zW,KAAKq1W,YAAL,aAkBpB,OAjBI93W,IAAGA,EAAI,IACRA,GAAKA,EAAEoE,OAAS,GACjBpE,EAAE4tC,SAAQ,SAAAhnC,GACR,IAAM2xW,EAAe3xW,EAAA,SAAmB,EAAKoxW,gBNzChB,IM0C1B1B,IACD1vW,EAAA,UAAoB,EAAKkxW,YAAL,UACpBlxW,EAAA,SAAmB,EAAKkxW,YAAL,SACnBlxW,EAAA,KAAe,EAAKkxW,YAAL,MAA4BlxW,EAAA,KACvB,KAAjBA,EAAA,OAAwC,OAAjBA,EAAA,QACxBA,EAAA,MAAgBA,EAAA,MAAgBA,EAAA,WAGpCA,EAAA,GAAaA,EAAA,aACbA,EAAA,SAAmB,KACnBA,EAAA,MAAgBsvW,GAAiBqC,EAAa3xW,EAAA,MAAc0vW,MAGzDt2W,IAGXkuC,QAAS,CAEPoqU,iBAFO,WAGL,IAAM5tU,EAAS,CACX8tU,SAAU/1W,KAAK03V,YACfse,eAAgBh2W,KAAK87V,OACrBma,aAAcj2W,KAAKq1W,YAAL,GACd9oI,UAAWvsO,KAAK41W,mBAAL,UACXppI,SAAUxsO,KAAK41W,mBAAL,UAEd31K,OAAOwC,KAAK,iDAAkDx6J,GAAQ7D,QAAQ,SAASy9B,GAClFA,EAAIt/C,OACLviB,KAAKy1W,aAAe5zS,EAAIt/C,KAAJ,MAAoB,GACxCviB,KAAK41W,mBAAL,OAAoC/zS,EAAIt/C,KAAJ,QAAsB,IAE5D9jB,KAAKuB,OAAO6c,KAAK,SAASA,GAC1B7c,KAAK6mN,SAAS3+M,MAAM2U,EAAK1U,MACzB1J,KAAKuB,OAAOkyL,IAAI,WAChBlyL,KAAK21W,cAAe,GACpBl3W,KAAKuB,QAITiwM,iBAvBO,SAuBU7zL,GAAG,WAClBpc,KAAK41W,mBAAmBrpI,UAAYnwN,EACpCpc,KAAK21W,cAAe,EACpB/1V,YAAW,WACT,EAAKi2V,qBACJ,KAILK,eAhCO,SAgCQroW,GAAG,WACVhJ,EAAMgJ,EAAEnG,OAAOxJ,MACrB8B,KAAK03V,YAAc7yV,EACnB7E,KAAK21W,cAAe,EACpB31W,KAAK41W,mBAAqB,CACxBp7O,OAAQ,EACR+xG,UAAW,EACXC,SAAU,GAEZ5sN,YAAW,WACT,EAAKi2V,qBACJ,KAIL5sC,aA/CO,SA+CMpnQ,GACX7hE,KAAKgpU,kBAAkBziU,KAAI,SAAAmJ,GAIzB,OAHGA,EAAGlB,KAAOqzD,EAAA,KACXnyD,EAAGymW,SAAWt0S,EAAI3jE,OAEbwR,MAKX0mW,aAzDO,SAyDMriK,GACX,GAAuB,OAApBA,EAAA,UAAgD,KAApBA,EAAA,SNpHE,IMyH9B/zM,KAAKq1W,YAAL,eACDthK,EAAA,SAAkBA,EAAA,SAAkBA,EAAA,UAEnC5pK,MAAM4pK,EAAA,YAAoBA,EAAA,SAAkB,MAC/Cv7H,QAAQkuI,cACRzmB,OAAOwC,KAAK,yCAA0C,CACpDkkB,eAAgB3mN,KAAK2/M,MACrBq2J,eAAgB,CAACjiK,EAAA,YACjBsiK,YAAa,CAAC,CACZJ,aAAcliK,EAAA,GACd71M,MAAO61M,EAAA,aAER3vK,QAAQ,SAASy9B,GACfA,EAAIt/C,KACLviB,KAAK6mN,SAASziL,QAAQ3uB,KAAA,0BAEtBzV,KAAK6mN,SAAS3+M,MAAMuN,KAAA,SAEtBhX,KAAKuB,OAAO6c,KAAK,SAASA,GAC1B7c,KAAK6mN,SAAS3+M,MAAM2U,EAAK1U,MACzB1J,KAAKuB,OAAOkyL,IAAI,WAChB15G,QAAQsuI,cACRroN,KAAKuB,WA3BP,CACE,IAAIs2W,ENrH2B,IMqHlBt2W,KAAKq1W,YAAL,aAA+D5/V,KAAK44M,QAAQ54M,KAAK0/V,0BAC9Fn1W,KAAK6mN,SAAS3+M,MAAMouW,EAAS,IAAM7gW,KAAKzV,KAAKq1W,YAAL,kBA6B5CrqI,WAzFO,WA0FL,GAAIhrO,KAAK21W,aAYP31W,KAAKkoU,qBAZgB,CACrB,IAAM/0Q,EAAQnzD,KACd22M,OAAO8L,QAAQhtM,KAAK8gW,gBAClB,CAAC9gW,KAAKqsM,GAAGrsM,KAAKq3F,SACd,WACE9sG,KAAKi9K,QACL9pH,EAAM+0Q,oBAER,WACEloU,KAAKi9K,aAQbirJ,eA3GO,WA2GU,WACfloU,KAAKukO,WAAY,EACjBvkO,KAAKq7E,MAAM,oBAAoB,GAC/Bz7D,YAAW,WACT,EAAK61V,aAAe,GACpB,EAAK/d,YAAc,GACnB,EAAK8e,WAAa,EAClB,EAAKb,cAAe,EACpB,EAAKC,mBAAqB,CACxBp7O,OAAQ,EACR+xG,UAAW,EACXC,SAAU,KAEX,QCtKM,I,OAXC,YACd,ICTW,WAAa,IAAIn7E,EAAIrxJ,KAASyyG,EAAG4+C,EAAIhgF,eAAmB4D,EAAGo8E,EAAI9wE,MAAMtL,IAAIw9B,EAAG,OAAOx9B,EAAG,aAAa,CAACyP,YAAY,iBAAiB90E,MAAM,CAAC,MAAQ,IAAK,MAAQyhJ,EAAIikN,WAAW,KAAOjkN,EAAIkzE,YAAY,CAACtvJ,EAAG,MAAM,CAACyP,YAAY,YAAY90E,MAAM,CAAC,IAAM,uCAAuCwY,GAAG,CAAC,MAAQipI,EAAI25E,cAAc35E,EAAIn9E,GAAG,KAAKe,EAAG,MAAM,CAACyP,YAAY,iBAAiB,CAACzP,EAAG,WAAW,CAACyP,YAAY,eAAe90E,MAAM,CAAC,UAAYyhJ,EAAIskN,aAAa,YAActkN,EAAI57I,KAAKk6V,qBAAqBvnV,GAAG,CAAC,KAAOipI,EAAI6kN,gBAAgB58R,MAAM,CAACp7E,MAAOmzJ,EAAe,YAAE/qJ,SAAS,SAAUu9L,GAAMxyC,EAAIqmM,YAAY7zJ,GAAK/mH,WAAW,iBAAiBu0E,EAAIn9E,GAAG,KAAMm9E,EAAIgkN,YAA0B,eAAMhkN,EAAI6iN,wBAAyBj/R,EAAG,MAAM,CAACyP,YAAY,aAAa,CAAC2sE,EAAIn9E,GAAG,cAAcm9E,EAAI39E,GAAG29E,EAAI57I,KAAKghW,iCAAiC,kBAAkBxhS,EAAG,OAAO,CAACo8E,EAAIn9E,GAAGm9E,EAAI39E,GAAG29E,EAAIgkN,YAAuB,UAAY,aAAMhkN,EAAIn9E,GAAG,cAAcm9E,EAAI39E,GAAG29E,EAAI57I,KAAKihW,kBAAkB,OAAOzhS,EAAG,OAAO,CAACo8E,EAAIn9E,GAAGm9E,EAAI39E,GAAG29E,EAAIgkN,YAAuB,UAAa,gBAAQhkN,EAAIl9E,MAAM,GAAGk9E,EAAIn9E,GAAG,KAAKe,EAAG,MAAM,CAACyP,YAAY,aAAa,CAACzP,EAAG,WAAW,CAACzK,WAAW,CAAC,CAAChtE,KAAK,UAAUoqF,QAAQ,YAAY1pF,OAAQmzJ,EAAIskN,aAAc74R,WAAW,kBAAkB4H,YAAY,eAAegG,YAAY,CAAC,MAAQ,QAAQ96E,MAAM,CAAC,OAAS,GAAG,OAAS,MAAM,KAAOyhJ,EAAI23K,kBAAkB,KAAO,QAAQ,aAAa33K,EAAI57I,KAAK6xM,YAAY,oBAAoB,CAAE7zL,OAAQ,OAAQu7H,WAAY,UAAWn4C,MAAO,UAAU,CAAC5hC,EAAG,kBAAkB,CAACrlE,MAAM,CAAC,MAAQyhJ,EAAI57I,KAAKkhW,OAAO,MAAQ,QAAQ,wBAAwB,IAAI3hS,YAAYq8E,EAAIj9E,GAAG,CAAC,CAAC51E,IAAI,UAAUkH,GAAG,SAASoJ,GAAO,MAAO,CAACmmE,EAAG,OAAO,CAACo8E,EAAIn9E,GAAGm9E,EAAI39E,GAAG5kE,EAAMilM,IAAIv2M,gBAAgB6zJ,EAAIn9E,GAAG,KAAKe,EAAG,kBAAkB,CAACrlE,MAAM,CAAC,MAAQyhJ,EAAI57I,KAAK44L,GAAG,wBAAwB,GAAG,MAAQ,SAASr5H,YAAYq8E,EAAIj9E,GAAG,CAAC,CAAC51E,IAAI,UAAUkH,GAAG,SAASoJ,GAAO,MAAO,CAACmmE,EAAG,OAAO,CAACo8E,EAAIn9E,GAAGm9E,EAAI39E,GAAG5kE,EAAMilM,IAAI6iK,sBAAsBvlN,EAAIn9E,GAAG,KAAKe,EAAG,kBAAkB,CAACrlE,MAAM,CAAC,MAAQyhJ,EAAI57I,KAAKohW,yCAAyC,MAAQ,QAAQ,wBAAwB,IAAI7hS,YAAYq8E,EAAIj9E,GAAG,CAAC,CAAC51E,IAAI,UAAUkH,GAAG,SAASoJ,GAAO,MAAO,CAACmmE,EAAG,OAAO,CAACo8E,EAAIn9E,GAAGm9E,EAAI39E,GAAG5kE,EAAMilM,IAAI71M,OAAS,gBAAgBmzJ,EAAIn9E,GAAG,KAAKe,EAAG,kBAAkB,CAACrlE,MAAM,CAAC,MAAQyhJ,EAAI57I,KAAKqhW,uCAAuC,MAAQ,SAAS9hS,YAAYq8E,EAAIj9E,GAAG,CAAC,CAAC51E,IAAI,UAAUkH,GAAG,SAASoJ,GAAO,MAAO,CAACmmE,EAAG,gBAAgB,CAACrlE,MAAM,CAAC,YAAcd,EAAMilM,IAAI,YAAcjlM,EAAMilM,IAAkB,aAAE,YAAc1iD,EAAIkkN,gBAAgB,UAAYzmW,EAAMilM,IAAe,WAAG3rL,GAAG,CAAC,aAAeipI,EAAI43K,uBAAuB53K,EAAIn9E,GAAG,KAAKe,EAAG,kBAAkB,CAACrlE,MAAM,CAAC,MAAQyhJ,EAAI57I,KAAKshW,0CAA0C,MAAQ,SAAS/hS,YAAYq8E,EAAIj9E,GAAG,CAAC,CAAC51E,IAAI,UAAUkH,GAAG,SAASoJ,GAAO,MAAO,CAACmmE,EAAG,SAAS,CAACyP,YAAY,mDAAmDgG,YAAY,CAAC,OAAS,OAAO,cAAc,MAAM,WAAa,UAAU,eAAe,WAAW96E,MAAM,CAAC,KAAO,UAAUwY,GAAG,CAAC,MAAQ,SAASkqD,GAAQ,OAAO++E,EAAI+kN,aAAatnW,EAAMilM,QAAQ,CAAC1iD,EAAIn9E,GAAG,kBAAkBm9E,EAAI39E,GAAG29E,EAAI57I,KAAKuhW,yBAAyB,2BAA2B,GAAG3lN,EAAIn9E,GAAG,KAAKe,EAAG,YAAY,CAACyV,YAAY,CAAC,OAAS,SAAS,aAAa,SAAS96E,MAAM,CAAC,eAAeyhJ,EAAIukN,mBAAmBrpI,UAAU,aAAa,CAACl7E,EAAIukN,mBAAmBppI,UAAU,OAAS,yCAAyC,MAAQn7E,EAAIukN,mBAAmBp7O,QAAQpyG,GAAG,CAAC,iBAAiBipI,EAAI4+C,qBAAqB,GAAG5+C,EAAIn9E,GAAG,KAAKe,EAAG,0BAA0B,CAACyV,YAAY,CAAC,QAAU,QAAQ96E,MAAM,CAAC,KAAO,SAAS,KAAO,QAAQmgE,KAAK,UAAU,CAACkF,EAAG,SAAS,CAACo8E,EAAIn9E,GAAGm9E,EAAI39E,GAAG29E,EAAI57I,KAAKw3N,eAAe,KACh/G,IDWpB,EACA,KACA,WACA,M,SEf0N,GC0B5N,CACEzvO,KAAM,uBACNmuB,MAAO,CACLg0L,MAAO,CAAX,0BAEEp9L,KALF,WAMI,MAAO,CACL9M,KAAMyyL,OAAOC,IAAIC,SAASC,MAC1BsX,MAAOiH,aAAap4M,GACpBihW,WAAY,GACZxT,SAAU,GACVp4B,SAAU,GACVozC,aAAc,GACdC,UAAU,IAIdryS,MAAO,CACL4qS,WADJ,SACA,GACMzvW,KAAKwgF,MAAM22R,QAAQ3lW,OAAO3M,KAG9B4mC,QAAS,CAEPikU,WAFJ,SAEA,KACM,OAAKxxW,GACEqkB,EAAKw1L,MAAM75J,SAAShgD,IAG7Bk5W,qBAPJ,SAOA,GACUp3W,KAAKk3W,SACP,KAAR,6CAEQ,KAAR,iCAEMl3W,KAAKk9V,qBAGPA,kBAhBJ,WAiBM,IAAN,uCACA,oCACQl9V,KAAKk3W,UAAW,EAEhBl3W,KAAKk3W,UAAW,EAElB,IAAN,6CACMl3W,KAAKq7E,MAAM,mBAAoBl4E,IAGjC4uW,YA3BJ,WA4BA,gHACA,SACU/xW,KAAKi8V,SAAWp6R,EAAIt/C,KACpB3C,YAAW,WACrB,sBACc,EAAd,qDAEA,MAEA,6BACQ5f,KAAK6mN,SAAS3+M,MAAM2U,EAAK1U,MACjC,2BACQqwE,QAAQsuI,cAChB,cAGE9jI,QAlEF,WAmEIhjF,KAAK+xW,gBC1EM,I,OAXC,YACd,ICTW,WAAa,IAAI1gN,EAAIrxJ,KAASyyG,EAAG4+C,EAAIhgF,eAAmB4D,EAAGo8E,EAAI9wE,MAAMtL,IAAIw9B,EAAG,OAAOx9B,EAAG,MAAM,CAACyP,YAAY,uBAAuB,CAACzP,EAAG,WAAW,CAACyP,YAAY,aAAa90E,MAAM,CAAC,SAAmC,IAAxByhJ,EAAI4qM,SAASt6V,OAAa,YAAc0vJ,EAAI57I,KAAKk6V,qBAAqBr2R,MAAM,CAACp7E,MAAOmzJ,EAAc,WAAE/qJ,SAAS,SAAUu9L,GAAMxyC,EAAIo+M,WAAW5rK,GAAK/mH,WAAW,gBAAgBu0E,EAAIn9E,GAAG,KAA8B,IAAxBm9E,EAAI4qM,SAASt6V,OAAcszE,EAAG,MAAM,CAACyP,YAAY,kBAAkB,CAACzP,EAAG,cAAc,CAACrlE,MAAM,CAAC,SAA8B,KAAnByhJ,EAAIo+M,YAAmBrnV,GAAG,CAAC,OAASipI,EAAI+lN,sBAAsB99R,MAAM,CAACp7E,MAAOmzJ,EAAY,SAAE/qJ,SAAS,SAAUu9L,GAAMxyC,EAAI6lN,SAASrzK,GAAK/mH,WAAW,aAAa,CAACu0E,EAAIn9E,GAAG,WAAWm9E,EAAI39E,GAAG29E,EAAI57I,KAAK8pV,UAAU,aAAa,GAAGluM,EAAIl9E,KAAKk9E,EAAIn9E,GAAG,KAA8B,IAAxBm9E,EAAI4qM,SAASt6V,OAAcszE,EAAG,UAAU,CAACphB,IAAI,UAAU6wB,YAAY,cAAc90E,MAAM,CAAC,WAAW,KAAK,KAAOyhJ,EAAI4qM,SAAS,qBAAqB5qM,EAAIq+M,WAAW,gBAAgB,GAAG,oBAAoB,GAAG,qBAAqB,IAAItnV,GAAG,CAAC,eAAeipI,EAAI6rM,qBAAqB7rM,EAAIl9E,KAAKk9E,EAAIn9E,GAAG,KAA8B,IAAxBm9E,EAAI4qM,SAASt6V,OAAcszE,EAAG,MAAM,CAACyP,YAAY,gBAAgB,CAAC2sE,EAAIn9E,GAAG,SAASm9E,EAAI39E,GAAG29E,EAAI57I,KAAK6xM,aAAa,UAAUj2D,EAAIl9E,MAAM,KAC3mC,IDWpB,EACA,KACA,WACA,M,kIEVa,ICL8H,GDK9H,CACb32E,KAAM,oBACNmuB,MAAO,CACL0pV,YAAa,CAAE9zW,KAAM5D,OAAQkuM,UAAU,GACvCiwJ,OAAQ,CAACv6V,KAAML,MAAO2qM,UAAU,GAChC0pK,gBAAiB,CAACh0W,KAAML,MAAO2qM,UAAU,IAE3C1sH,WAAY,CAACq2R,kBACbjzV,KARa,WAQN,MACL,MAAO,CACL9M,KAAMyyL,OAAOC,IAAIC,SAASC,MAC1ByrK,YAAa9zW,KAAKq1W,YAClBpB,kBbT2B,EaU3BC,wBbXiC,EaYjCC,uBbIgC,GaHhCkD,UAAU,EACVC,YAAa,CACXC,cAAe,KACfC,cAAe,KACfC,YAAa,MAEfC,SAAU,EACVC,wBbnB2B,EaoBL,iBADtB,KbpBiC,EasBL,iBAF5B,KbJgC,GaOL,eAH3B,GAKAjC,SAAU,KAGdtkV,SAAU,CACRwmV,gBADQ,WAEN,IAAIr6W,EAAIyf,EAAEkqC,UAAUlnD,KAAKq1W,aACrBt3W,EAAIif,EAAEkqC,UAAUlnD,KAAK01W,UAczB,MAbiB,KAAdn4W,EAAA,OAAkC,OAAdA,EAAA,QACrBA,EAAA,MAAaA,EAAA,MAAayC,KAAK03W,SAC/Bn6W,EAAA,MAAak2W,GAAiBl2W,EAAA,SAAgByC,KAAKu1W,gBAAiBh4W,EAAA,MAAWA,EAAA,gBAE9EA,GAA6B,iCAAvBA,EAAA,eACsB,mCAAvBA,EAAA,gBACFA,EAAA,SAAgBA,EAAA,MAEnBQ,IACAR,EAAA,MAAaQ,EAAA,SACbR,EAAA,KAAYQ,EAAA,UACZR,EAAA,UAAiBQ,GAEbR,IAGXkuC,QAAS,CAEPw9R,aAFO,SAEMpnQ,GACRA,IACD7hE,KAAKs3W,YAAYt3W,KAAK23W,aAAa91S,EAAItgE,OAASsgE,EAAI3jE,QAKxD25W,gBATO,SASS1zW,GACd,IAAIjG,SACE45W,EAAe93W,KAAKq1W,YAAL,aACf0C,EAAU/3W,KAAK23W,aAAaxzW,EAAK2zW,cACN,OAA9B93W,KAAKs3W,YAAYS,IAWlB75W,EbxE+B,IauE9B45W,EACO93W,KAAKs3W,YAAYS,GAAW/3W,KAAK03W,SAEjC13W,KAAKs3W,YAAYS,GAExB5tU,MAAMjsC,KAAU8B,KAAKs3W,YAAYS,GAAW,MAClC,OAAV75W,GAA4B,KAAVA,QACRgE,IAAVhE,GAAwBisC,MAAMjsC,IAC/B8B,KAAKq7E,MAAM,kBAAmB,CAACl3E,OAAMjG,Wb/EN,Ia8D5B45W,EACD93W,KAAK6mN,SAAS3+M,MAAMuN,KAAK44M,QAAU,IACf54M,KAAKzV,KAAKq1W,YAAL,gBAEzBr1W,KAAK6mN,SAAS3+M,MAAMuN,KAAK0/V,0BAA4B,IACjC1/V,KAAKzV,KAAKq1W,YAAL,iBAiB/B2C,gBApCO,SAoCS7zW,GACdA,EAAA,SAAmBnE,KAAK03W,SACxB13W,KAAKq7E,MAAM,kBAAmBl3E,IAIhC8zW,eA1CO,SA0CQ9zW,GACb,OAAQA,EAAK2zW,cACX,Kb5F+B,Ea6FD,iCAAzB3zW,EAAA,eACyB,mCAAzBA,EAAA,gBACEnE,KAAK03W,SAAW,KAErB13W,KAAK01W,UbxBcnnT,EawBUvuD,KAAKq1W,YAAL,MbxBH6C,EawB8Bl4W,KAAKq1W,YAAL,KAA2Br1W,KAAK03W,SbvBxF/C,EAAWpmT,EAAMplD,MAAM,KACvBgvW,EAAS,GACXC,EAAW,GACTC,EAASH,EAAKv0W,WAAWhC,OAAS,EACxCgzW,EAASxpU,SAAQ,SAAChnC,EAAKzC,GACrB,GAAGA,EAAQ,GAAM,EAAE,CACjB,IAAIs5C,SACAs9T,SACAvjV,SACAwjV,SACAC,EAAS,GACTC,EAAS,GACVt0W,EAAKV,QAAQ,MAAQ,GAEtB60W,EAlDoB,EAmDpBE,OAFAx9T,GAAOkhB,OAAO/3D,EAAK6D,QAAQ,IAAI,KAAOkwW,GAAMh3P,QAAQm3P,IAEpD,KACOl0W,EAAKV,QAAQ,MAAQ,IAE5B60W,EApD0B,EAqD1BE,OAFAx9T,GAAOkhB,OAAO/3D,EAAK6D,QAAQ,IAAI,KAAOkwW,GAAMh3P,QAAQm3P,IAEpD,KAEF,IAAMK,EAAW/D,EAASjzW,EAAQ,GAC/Bg3W,EAASj1W,QAAQ,MAAQ,GAE1B80W,EAxDiB,EAyDjBE,GAFA1jV,GAAOmnC,OAAOw8S,EAAS1wW,QAAQ,IAAI,KAAOkwW,GAAMh3P,QAAQm3P,IAExD,KACOK,EAASj1W,QAAQ,MAAQ,IAEhC80W,EA1DuB,EA2DvBE,GAFA1jV,GAAOmnC,OAAOw8S,EAAS1wW,QAAQ,IAAI,KAAOkwW,GAAMh3P,QAAQm3P,IAExD,KAEFD,GAAeI,EAASC,EAAxB,IACAN,EAAO31W,KAAK,CAACw4C,MAAIs9T,YAAUvjV,MAAIwjV,kBAGnB,CACd,SAAYH,EAAS54P,UAAU,EAAE44P,EAASz2W,OAAQ,GAClD,IAAOw2W,EACP,UAAc,EAAID,EAClB,aAAgB1E,GAAkB,EAAI0E,KAxChB,IAAC3pT,EAAO2pT,EAC1BvD,EACAwD,EACFC,EACEC,Ia4BRr1R,QA3Ga,WA4GXhjF,KAAKi4W,eAAej4W,KAAKq1W,eE9Fd,I,OAXC,YACd,ICTW,WAAa,IAAIhkN,EAAIrxJ,KAASyyG,EAAG4+C,EAAIhgF,eAAmB4D,EAAGo8E,EAAI9wE,MAAMtL,IAAIw9B,EAAG,OAAOx9B,EAAG,MAAM,CAACyP,YAAY,uBAAuB,CAACzP,EAAG,MAAM,CAACyP,YAAY,qBAAqB,CAAC2sE,EAAIn9E,GAAGm9E,EAAI39E,GAAG29E,EAAI57I,KAAK47I,EAAIumN,gBAA+B,mBAAOvmN,EAAIn9E,GAAG,KAAKe,EAAG,MAAM,CAACyP,YAAY,iCAAiCgG,YAAY,CAAC,MAAQ,YAAY,CAAE2mE,EAAIumN,gBAA8B,eAAMvmN,EAAI6iN,wBAAyBj/R,EAAG,OAAO,CAACA,EAAG,aAAa,CAACyP,YAAY,OAAO90E,MAAM,CAAC,OAAS,OAAO,UAAY,YAAY,QAAUyhJ,EAAIumN,gBAAuB,QAAI,CAAC3iS,EAAG,OAAO,CAACo8E,EAAIn9E,GAAGm9E,EAAI39E,GAAG29E,EAAIumN,gBAAuB,aAAS,GAAGvmN,EAAIl9E,KAAKk9E,EAAIn9E,GAAG,KAAMm9E,EAAIumN,gBAA8B,eAAMvmN,EAAI6iN,wBAAyBj/R,EAAG,OAAO,CAACo8E,EAAIn9E,GAAG,sBAAsBm9E,EAAIl9E,OAAOk9E,EAAIn9E,GAAG,KAAKe,EAAG,MAAM,CAACyP,YAAY,oBAAoBgG,YAAY,CAAC,MAAQ,YAAY,CAAC2mE,EAAIn9E,GAAG,SAASm9E,EAAI39E,GAAG29E,EAAIumN,gBAAsB,MAAK,MAAM,UAAUvmN,EAAIn9E,GAAG,KAAKe,EAAG,MAAM,CAACyP,YAAY,qBAAqB,CAAC2sE,EAAIn9E,GAAG,SAASm9E,EAAI39E,GAAG29E,EAAIumN,gBAAuB,OAAK,MAAM,UAAWvmN,EAAIyqM,OAAOn6V,OAAS,EAAGszE,EAAG,OAAO,CAACo8E,EAAIn9E,GAAG,QAAQm9E,EAAIl9E,KAAKk9E,EAAIn9E,GAAG,KAAMm9E,EAAIyqM,OAAOn6V,OAAS,EAAGszE,EAAG,OAAO,CAACyP,YAAY,eAAet8D,GAAG,CAAC,MAAQ,SAASkqD,GAAQ,OAAO++E,EAAI2mN,gBAAgB3mN,EAAIumN,oBAAoB,CAACvmN,EAAIn9E,GAAG,yBAAyBm9E,EAAIl9E,OAAOk9E,EAAIn9E,GAAG,KAAKe,EAAG,MAAM,CAACyP,YAAY,qBAAqB,CAACzP,EAAG,gBAAgB,CAACrlE,MAAM,CAAC,YAAcyhJ,EAAIumN,gBAA8B,aAAE,YAAcvmN,EAAIumN,gBAAgB,YAAcvmN,EAAIkkN,gBAAgB,UAAYlkN,EAAIumN,gBAA2B,WAAGxvV,GAAG,CAAC,aAAeipI,EAAI43K,iBAAiB,GAAG53K,EAAIn9E,GAAG,KAAKe,EAAG,MAAM,CAACyP,YAAY,qBAAqB,CAACzP,EAAG,SAAS,CAACyP,YAAY,mDAAmDgG,YAAY,CAAC,OAAS,OAAO,cAAc,MAAM,WAAa,UAAU,eAAe,WAAW96E,MAAM,CAAC,KAAO,UAAUwY,GAAG,CAAC,MAAQ,SAASkqD,GAAQ,OAAO++E,EAAIwmN,gBAAgBxmN,EAAIumN,oBAAoB,CAACvmN,EAAIn9E,GAAG,YAAYm9E,EAAI39E,GAAG29E,EAAI57I,KAAKuhW,yBAAyB,kBACj7D,IDWpB,EACA,KACA,WACA,M,SEf4I,GCK/H,CACbx5W,KAAM,qBACNmuB,MAAO,GACPpJ,KAHa,WAIX,MAAO,CACL9M,KAAMyyL,OAAOC,IAAIC,SAASC,MAC1BswK,oBlBe6B,EkBfRC,oBlBgBQ,EkBf7BC,mBlBgB4B,EkBhBRvF,mBACpBC,oBACA5zJ,MAAOiH,aAAap4M,GACpB2nM,UAAW,GACXuhJ,YAAa,GACb2E,cAAc,EACdyc,WAAY,CACVlmK,WAAY,EACZC,UAAW,GACXr4E,OAAQ,KAId31D,MAAO,GACPzzC,SAAS,CAEP2nV,eAFO,WAEU,WACXx7W,EAAIyf,EAAEkqC,UAAUlnD,KAAKm2M,WAYzB,OAXK54M,IAAGA,EAAI,IACTA,EAAEoE,OAAQ,GACXpE,EAAE4tC,SAAQ,SAAAz7B,GAC0B,iCAA/BA,EAAGspW,yBAC2B,mCAA/BtpW,EAAGspW,0BAEHtpW,EAAA,MAAcwsD,OAAOxsD,EAAA,OAAe,KAEtCA,EAAA,MAAc,EAAKupW,gBAAgBvpW,MAGhCnS,IAGXkuC,QAAS,CAEPwkK,iBAFO,SAEUvP,GACf1gM,KAAK84W,WAAL,WAAgCp4K,EAChC1gM,KAAKk5W,iBAIPA,cARO,WASLl5W,KAAKq8V,cAAe,EACpBp8J,OAAOwC,KAAK,iDAAkD,CAC5DkkB,eAAgB3mN,KAAK2/M,MACrBp+M,KAAM,EACNqkM,GAAI5lM,KAAK03V,YACTnrH,UAAWvsO,KAAK84W,WAAL,WACXtsI,SAAUxsO,KAAK84W,WAAL,YACT10U,QAAQ,SAASy9B,GACfA,EAAIt/C,OACLviB,KAAKm2M,UAAYt0I,EAAIt/C,KAAJ,MAAoB,GACrCviB,KAAK84W,WAAL,OAA4Bj3S,EAAIt/C,KAAJ,QAAsB,IAEnD9jB,KAAKuB,OAAO6c,KAAK,SAASA,GAC1B7c,KAAK6mN,SAAS3+M,MAAM2U,EAAK1U,MACzB1J,KAAKuB,OAAOkyL,IAAI,WAChBlyL,KAAKq8V,cAAe,GACpB59V,KAAKuB,QAIVm5W,eA7BO,SA6BQplK,GACb/zM,KAAKq8V,cAAe,EACpBp8J,OAAOwC,KAAK,yCAA0C,CACpD22K,SAAUrlK,EAAA,KACT3vK,QAAQ,SAASy9B,GACfA,EAAIt/C,KACLviB,KAAK6mN,SAASziL,QAAQ3uB,KAAK4jW,0BAE3Br5W,KAAK6mN,SAAS3+M,MAAMuN,KAAK6jW,SAE1B76W,KAAKuB,OAAO6c,KAAK,SAASA,GAC1B7c,KAAK6mN,SAAS3+M,MAAM2U,EAAK1U,MACzB1J,KAAKuB,OAAOkyL,IAAI,WAChBlyL,KAAKq8V,cAAe,GACpB59V,KAAKuB,QAIVi5W,gBA/CO,SA+CS90W,GACd,OlBrFiC,IkBqF9BA,EAAK2zW,aACCriW,KAAKtR,EAAKo1W,sBAEVp1W,EAAA,QAIb6+E,QA9Fa,WA+FXhjF,KAAKk5W,kBCjFM,I,OAXC,YACd,ICTW,WAAa,IAAI7nN,EAAIrxJ,KAASyyG,EAAG4+C,EAAIhgF,eAAmB4D,EAAGo8E,EAAI9wE,MAAMtL,IAAIw9B,EAAG,OAAOx9B,EAAG,MAAM,CAACA,EAAG,MAAM,CAACyP,YAAY,iBAAiB,CAACzP,EAAG,WAAW,CAACyP,YAAY,eAAe90E,MAAM,CAAC,YAAcyhJ,EAAI57I,KAAKk6V,qBAAqBr2R,MAAM,CAACp7E,MAAOmzJ,EAAe,YAAE/qJ,SAAS,SAAUu9L,GAAMxyC,EAAIqmM,YAAY7zJ,GAAK/mH,WAAW,iBAAiBu0E,EAAIn9E,GAAG,KAAKe,EAAG,SAAS,CAACyP,YAAY,gDAAgDgG,YAAY,CAAC,cAAc,MAAM,WAAa,UAAU,eAAe,WAAW96E,MAAM,CAAC,KAAO,UAAUwY,GAAG,CAAC,MAAQipI,EAAI6nN,gBAAgB,CAAC7nN,EAAIn9E,GAAG,eAAem9E,EAAI39E,GAAG29E,EAAI57I,KAAK4xM,UAAU,eAAe,GAAGh2D,EAAIn9E,GAAG,KAAKe,EAAG,WAAW,CAACzK,WAAW,CAAC,CAAChtE,KAAK,UAAUoqF,QAAQ,YAAY1pF,MAAOmzJ,EAAgB,aAAEv0E,WAAW,iBAAiB4H,YAAY,iBAAiBgG,YAAY,CAAC,MAAQ,QAAQ96E,MAAM,CAAC,oBAAoB,CAAC6jB,OAAO,OAAOu7H,WAAW,UAAUn4C,MAAM,QAAQ,KAAOw6C,EAAI0nN,eAAe,aAAa1nN,EAAI57I,KAAK6xM,YAAY,OAAS,KAAK,CAACryI,EAAG,kBAAkB,CAACrlE,MAAM,CAAC,KAAO,gBAAgB,MAAQyhJ,EAAI57I,KAAK+jW,kCAAkC,wBAAwB,IAAIxkS,YAAYq8E,EAAIj9E,GAAG,CAAC,CAAC51E,IAAI,UAAUkH,GAAG,SAASoJ,GAAO,MAAO,CAACuiJ,EAAIn9E,GAAG,iBAAiBm9E,EAAI39E,GAAG5kE,EAAMilM,IAAI0lK,eAAiB3qW,EAAMilM,IAAIpT,aAAe,KAAK,qBAAqBtvC,EAAIn9E,GAAG,KAAKe,EAAG,kBAAkB,CAACrlE,MAAM,CAAC,KAAO,OAAO,MAAQyhJ,EAAI57I,KAAKq2M,MAAM,wBAAwB,IAAI92I,YAAYq8E,EAAIj9E,GAAG,CAAC,CAAC51E,IAAI,UAAUkH,GAAG,SAASoJ,GAAO,MAAO,CAACuiJ,EAAIn9E,GAAG,iBAAiBm9E,EAAI39E,GAAG5kE,EAAMilM,IAAIv2M,MAAM,qBAAqB6zJ,EAAIn9E,GAAG,KAAKe,EAAG,kBAAkB,CAACrlE,MAAM,CAAC,KAAO,KAAK,MAAQyhJ,EAAI57I,KAAKikW,uBAAuB,wBAAwB,IAAI1kS,YAAYq8E,EAAIj9E,GAAG,CAAC,CAAC51E,IAAI,UAAUkH,GAAG,SAASoJ,GAAO,MAAO,CAACuiJ,EAAIn9E,GAAG,iBAAiBm9E,EAAI39E,GAAG5kE,EAAMilM,IAAInO,IAAI,qBAAqBv0C,EAAIn9E,GAAG,KAAKe,EAAG,kBAAkB,CAACrlE,MAAM,CAAC,KAAO,gBAAgB,MAAQyhJ,EAAI57I,KAAKkkW,oCAAoC,wBAAwB,IAAI3kS,YAAYq8E,EAAIj9E,GAAG,CAAC,CAAC51E,IAAI,UAAUkH,GAAG,SAASoJ,GAAO,MAAO,CAACuiJ,EAAIn9E,GAAG,iBAAiBm9E,EAAI39E,GAAG29E,EAAI57I,KAAK3G,EAAMilM,IAAIilK,0BAA0B,qBAAqB3nN,EAAIn9E,GAAG,KAAKe,EAAG,kBAAkB,CAACrlE,MAAM,CAAC,KAAO,QAAQ,MAAQyhJ,EAAI57I,KAAKqhW,uCAAuC,wBAAwB,IAAI9hS,YAAYq8E,EAAIj9E,GAAG,CAAC,CAAC51E,IAAI,UAAUkH,GAAG,SAASoJ,GAAO,MAAO,CAACuiJ,EAAIn9E,GAAG,iBAAiBm9E,EAAI39E,GAAG5kE,EAAMilM,IAAI71M,OAAO,qBAAqBmzJ,EAAIn9E,GAAG,KAAKe,EAAG,kBAAkB,CAACrlE,MAAM,CAAC,KAAO,SAAS,MAAQyhJ,EAAI57I,KAAKmkW,2BAA2B,MAAQ,QAAQ5kS,YAAYq8E,EAAIj9E,GAAG,CAAC,CAAC51E,IAAI,UAAUkH,GAAG,SAASoJ,GAAO,MAAO,CAACmmE,EAAG,OAAO,CAAC3wD,MAAM,CAAEuyF,MAAOw6C,EAAIkiN,iBAAiBzkW,EAAMilM,IAAY,UAAM,CAAC1iD,EAAIn9E,GAAG,gBAAgBm9E,EAAI39E,GAAG29E,EAAI57I,KAAK47I,EAAIiiN,gBAAgBxkW,EAAMilM,IAAY,UAAK,yBAAyB1iD,EAAIn9E,GAAG,KAAKe,EAAG,kBAAkB,CAACrlE,MAAM,CAAC,KAAO,KAAK,MAAQyhJ,EAAI57I,KAAKi2N,WAAW,MAAQ,SAAS12J,YAAYq8E,EAAIj9E,GAAG,CAAC,CAAC51E,IAAI,UAAUkH,GAAG,SAASoJ,GAAO,MAAO,CAAmB,KAAjBA,EAAMilM,IAAIvlM,GAAWymE,EAAG,MAAM,CAACA,EAAG,YAAY,CAACyP,YAAY,gDAAgD90E,MAAM,CAAC,KAAO,QAAQ,SAAWd,EAAMilM,IAAY,SAAM1iD,EAAIwnN,oBAAoBzwV,GAAG,CAAC,MAAQ,SAASkqD,GAAQ,OAAO++E,EAAI8nN,eAAerqW,EAAMilM,QAAQ,CAAC1iD,EAAIn9E,GAAG,uBAAuBm9E,EAAI39E,GAAG29E,EAAI57I,KAAKokW,OAAO,yBAAyB,GAAGxoN,EAAIl9E,KAAKk9E,EAAIn9E,GAAG,KAAsB,IAAhBplE,EAAMilM,IAAIvlM,GAAUymE,EAAG,MAAM,CAACo8E,EAAIn9E,GAAG,UAAUm9E,EAAIl9E,aAAa,GAAGk9E,EAAIn9E,GAAG,KAAKe,EAAG,MAAM,CAACyP,YAAY,UAAU,CAACzP,EAAG,YAAY,CAACrlE,MAAM,CAAC,eAAeyhJ,EAAIynN,WAAWlmK,WAAW,aAAa,CAACvhD,EAAIynN,WAAWjmK,WAAW,OAAS,0CAA0C,MAAQxhD,EAAIynN,WAAWt+O,QAAQpyG,GAAG,CAAC,iBAAiBipI,EAAI4+C,qBAAqB,IAAI,KACp9G,IDWpB,EACA,KACA,WACA,M,SEfiI,GCKpH,CACbzyM,KAAM,gBACNmuB,MAAO,CACLsvM,WAAY,CAAC15N,KAAMuL,OAAQ++L,UAAU,IAEvC1sH,WAAY,CACV26R,uBAAqBC,wBAAsBC,qBAC3CC,uBAEF13V,KATa,WAUX,MAAO,CACL9M,KAAMyyL,OAAOC,IAAIC,SAASC,MAC1B6xK,yBtBhBkC,gBsBiBlCC,yBtBfkC,gBsBgBlCx6J,MAAOiH,aAAap4M,GACpBytV,SAAU,GACVme,ctBpBkC,gBsBqBlCC,YAAY,EACZC,cAAe,CACZ,CAAE98W,KAAMiY,KAAKkkW,oCACZz7W,MAAOuX,KAAKkkW,oCACZY,QAAS,GACV,CAAE/8W,KAAMiY,KAAKghW,gCACZv4W,MAAOuX,KAAKghW,gCACZ8D,QAAS,GACV,CAAE/8W,KAAMiY,KAAKihW,iBACXx4W,MAAMuX,KAAKihW,iBACZ6D,QAAS,GACV,CAAE/8W,KAAMiY,KAAKohW,yCACZ34W,MAAOuX,KAAKohW,yCACZ0D,QAAS,GACV,CAAE/8W,KAAMiY,KAAKqhW,uCACZ54W,MAAOuX,KAAKqhW,uCACZyD,QAAS,GACV,CAAE/8W,KAAMiY,KAAKshW,0CACZ74W,MAAOuX,KAAKshW,0CACZwD,QAAS,IAEbC,cAAe,GACfC,mBAAoB,GACpBC,eAAgB,GAChBC,aAAc,GACdC,YAAa,KACbrF,gBAAiB,GACjBsF,mBAAoBplW,KAAKqlW,8BAA8B3xW,MAAM,OAAS,KAG1EioB,SAAU,CACR2pV,eADQ,WAGN,OADU/9V,EAAEkqC,UAAUlnD,KAAKw6W,iBAI/B/uU,QAAS,CAEP2xT,gBAFO,SAES76U,GAAM,WACpBviB,KAAKi8V,SAAW,GACb15U,GACDA,EAAK4oB,SAAQ,SAAAz7B,GACZ,EAAKusV,SAASz5V,KAAKkN,EAAGk2L,QAM3Bo1K,qBAZO,WAcL,GADAh7W,KAAKggV,YACuB,IAAzBhgV,KAAKi8V,SAASt6V,OAcjB3B,KAAKi7W,kBAAiB,OAdtB,CACE,IAAM9nT,EAAQnzD,KACd22M,OAAO8L,QAAQhtM,KAAKylW,aAAc,CAACzlW,KAAKqsM,GAAGrsM,KAAKq3F,SAC9C,WACE9sG,KAAKi9K,QACL9pH,EAAM8nT,kBAAiB,GACvB9nT,EAAMgoT,wBAER,WACEn7W,KAAKi9K,QACL9pH,EAAM0zJ,SAAS+B,QAAQnzM,KAAK2lW,2BAQpCC,cAhCO,SAgCO/uS,GACZtsE,KAAKggV,YACuB,IAAzBhgV,KAAKi8V,SAASt6V,QAIjB62E,QAAQkuI,cACRzmB,OAAOwC,KAAK,yCAA0C,CACpDkkB,eAAgB3mN,KAAK2/M,MACrBq2J,eAAgBh2W,KAAKi8V,SACrBoa,YAAa,CAAC,CACZJ,aAAc3pS,EAAA,QACdpuE,MAAOouE,EAAA,UAERloC,QAAQ,SAASy9B,GACfA,EAAIt/C,KACLviB,KAAK6mN,SAASziL,QAAQ3uB,KAAK4jW,0BAE3Br5W,KAAK6mN,SAAS+B,QAAQnzM,KAAK6jW,SAE7B76W,KAAKuB,OAAO6c,KAAK,SAASA,GAC1B7c,KAAK6mN,SAAS3+M,MAAM2U,EAAK1U,MACzB1J,KAAKuB,OAAOkyL,IAAI,WAChB15G,QAAQsuI,cACRroN,KAAKuB,QArBLA,KAAK6mN,SAAS3+M,MAAMuN,KAAK2lW,uBAyB7BE,cA5DO,SA4DOz2W,GACZ7E,KAAKggV,YACLhgV,KAAKo6W,cAAgBv1W,GAIvBo2W,iBAlEO,SAkEUh+V,GACfu7D,QAAQkuI,cACRzmB,OAAOwC,KAAK,6CAA8C,CACxDuzK,eAAgBh2W,KAAKi8V,WACpB73T,QAAQ,SAASy9B,GACfA,EAAIt/C,MAAQs/C,EAAIt/C,KAAK5gB,OAAS,IAC/B3B,KAAKw6W,cAAgB34S,EAAIt/C,OAE1B9jB,KAAKuB,OAAO6c,KAAK,SAASA,GACzB7c,KAAK6mN,SAAS3+M,MAAM2U,EAAK1U,MAC1B1J,KAAKuB,OAAOkyL,IAAI,WACf15G,QAAQsuI,aACR9mN,KAAK26W,aAAe36W,KAAKi8V,SACtBh/U,GACAjd,KAAK6mN,SAASziL,QAAQ3uB,KAAK8lW,cAE/B98W,KAAKuB,QAIVw7W,eAtFO,SAsFQr3W,GAAM,WACnBnE,KAAKy6W,mBAAqBt2W,EAC1BnE,KAAK26W,aAAe36W,KAAKi8V,SACzBj8V,KAAK06W,eAAiBjlW,KAAKtR,EAAKyvW,eAChC5zW,KAAKggV,YACLpgU,YAAW,WACT,EAAKy6V,YAAa,IACjB,KAILr6B,UAjGO,WAkGLhgV,KAAKq6W,YAAa,GAIpBc,mBAtGO,WAuGLl7K,OAAOwC,KAAK,wCAAyC,IAClDr+J,QAAQ,SAASy9B,GtBJO,IAACt/C,EsBKvBs/C,EAAIt/C,MAAQs/C,EAAIt/C,KAAK5gB,OAAS,IAC/B3B,KAAKu1W,kBtBNmBhzV,EsBMiBs/C,EAAIt/C,MtBLhD4oB,SAAQ,SAAAhnC,GAEXA,EAAK4zM,MAAQ5zM,EAAK3G,KAClB2G,EAAKjG,MAAQiG,EAAK3G,KAClB2G,EAAK8W,SAAW9W,EAAKs3W,UAElBt3W,EAAK8W,SAAStZ,OAAS,GACxBwC,EAAK8W,SAASkwB,SAAQ,SAAA67B,GACpBA,EAAM+wI,MAAQ/wI,EAAMxpE,KACpBwpE,EAAM9oE,MAAQ8oE,EAAMxpE,KACpBwpE,EAAM/rD,SAAW+rD,EAAM00S,SAEpB10S,EAAM/rD,SAAStZ,OAAS,GACzBqlE,EAAM/rD,SAASkwB,SAAQ,SAAAwwU,GACrBA,EAAW5jK,MAAQ4jK,EAAWC,YAC9BD,EAAWz9W,MAAQy9W,EAAWE,kBAMjCt5V,KsBdA9jB,KAAKuB,SAGZgjF,QApKa,WAqKXhjF,KAAKm7W,uBCvJM,I,OAXC,YACd,ICTW,WAAa,IAAI9pN,EAAIrxJ,KAASyyG,EAAG4+C,EAAIhgF,eAAmB4D,EAAGo8E,EAAI9wE,MAAMtL,IAAIw9B,EAAG,OAAOx9B,EAAG,MAAM,CAACyP,YAAY,kBAAkB,CAACzP,EAAG,uBAAuB,CAACphB,IAAI,eAAejkD,MAAM,CAAC,MAAQyhJ,EAAI4pE,WAAW,YAAc5pE,EAAI4sM,aAAa71U,GAAG,CAAC,iBAAmBipI,EAAI+rM,mBAAmB/rM,EAAIn9E,GAAG,KAAKe,EAAG,MAAM,CAACyP,YAAY,mBAAmB,CAACzP,EAAG,MAAM,CAACyP,YAAY,cAAc,CAACzP,EAAG,OAAO,CAACyP,YAAY,SAASjK,MAAM,CAACxkE,QAASo7I,EAAI+oN,gBAAkB/oN,EAAI6oN,0BAA0B9xV,GAAG,CAAC,MAAQ,SAASkqD,GAAQ,OAAO++E,EAAIiqN,cAAcjqN,EAAI6oN,6BAA6B,CAAC7oN,EAAIn9E,GAAGm9E,EAAI39E,GAAG29E,EAAI57I,KAAKqmW,8BAA8BzqN,EAAIn9E,GAAG,KAAKe,EAAG,OAAO,CAACyP,YAAY,SAASjK,MAAM,CAACxkE,QAASo7I,EAAI+oN,gBAAkB/oN,EAAI8oN,0BAA0B/xV,GAAG,CAAC,MAAQ,SAASkqD,GAAQ,OAAO++E,EAAIiqN,cAAcjqN,EAAI8oN,6BAA6B,CAAC9oN,EAAIn9E,GAAGm9E,EAAI39E,GAAG29E,EAAI57I,KAAKsmW,gCAAgC1qN,EAAIn9E,GAAG,KAAKe,EAAG,MAAM,CAACyP,YAAY,kBAAkB,CAACzP,EAAG,MAAM,CAACzK,WAAW,CAAC,CAAChtE,KAAK,OAAOoqF,QAAQ,SAAS1pF,MAAOmzJ,EAAI+oN,gBAAiB/oN,EAAI6oN,yBAA0Bp9R,WAAW,8CAA8C4H,YAAY,kBAAkB,CAACzP,EAAG,MAAM,CAACyP,YAAY,eAAe,CAACzP,EAAG,MAAM,CAACrlE,MAAM,CAAC,IAAM,kCAAkC,IAAM,IAAIwY,GAAG,CAAC,MAAQipI,EAAI2pN,0BAA0B3pN,EAAIn9E,GAAG,KAAKe,EAAG,UAAU,CAACrlE,MAAM,CAAC,KAAO,gBAAgB,CAACqlE,EAAG,cAAc,CAACrlE,MAAM,CAAC,MAAQyhJ,EAAI57I,KAAK4tN,uCAAuC,CAACpuJ,EAAG,MAAM,CAACyP,YAAY,eAAe2sE,EAAI19E,GAAI09E,EAAiB,eAAE,SAASltJ,GAAM,OAAO8wE,EAAG,MAAM,CAACz2E,IAAI2F,EAAK3G,KAAKknF,YAAY,kBAAkBpgE,MAAM,CAAE03V,KAAM73W,EAAKo2W,UAAY,CAAClpN,EAAIn9E,GAAG,qBAAqBm9E,EAAI39E,GAAGvvE,EAAKjG,OAAO,wBAAuB,GAAGmzJ,EAAIn9E,GAAG,KAAKe,EAAG,MAAM,CAACyP,YAAY,gBAAgB,CAAC2sE,EAAI19E,GAAI09E,EAAkB,gBAAE,SAAS4qN,GAAa,OAAOhnS,EAAG,MAAM,CAACz2E,IAAIy9W,EAAYztW,IAAI,CAACymE,EAAG,oBAAoB,CAACphB,IAAK,aAAgBooT,EAAc,GAAG91R,UAAS,EAAKv2E,MAAM,CAAC,OAASyhJ,EAAIspN,aAAa,YAAcsB,EAAY,gBAAkB5qN,EAAIkkN,iBAAiBntV,GAAG,CAAC,gBAAkBipI,EAAIgqN,cAAc,gBAAkBhqN,EAAImqN,kBAAkBnqN,EAAIn9E,GAAG,KAAM+nS,EAAoB,SAAEhnS,EAAG,MAAMo8E,EAAI19E,GAAIsoS,EAAoB,UAAE,SAASC,EAAah1W,GAAG,OAAO+tE,EAAG,MAAM,CAACz2E,IAAI0I,GAAG,CAAC+tE,EAAG,oBAAoB,CAACphB,IAAK,aAAgBqoT,EAAe,GAAG/1R,UAAS,EAAKv2E,MAAM,CAAC,OAASyhJ,EAAIspN,aAAa,YAAcuB,EAAa,gBAAkB7qN,EAAIkkN,iBAAiBntV,GAAG,CAAC,gBAAkBipI,EAAIgqN,cAAc,gBAAkBhqN,EAAImqN,mBAAmB,MAAK,GAAGnqN,EAAIl9E,MAAM,MAAKk9E,EAAIn9E,GAAG,KAAoC,IAA9Bm9E,EAAI0pN,eAAep5W,OAAcszE,EAAG,MAAM,CAACyP,YAAY,kBAAkB,CAACzP,EAAG,MAAM,CAACyP,YAAY,cAAc2sE,EAAI19E,GAAI09E,EAAsB,oBAAE,SAASltJ,EAAKlH,GAAG,OAAOg4E,EAAG,IAAI,CAACz2E,IAAIvB,GAAG,CAACo0J,EAAIn9E,GAAG,yBAAyBm9E,EAAI39E,GAAGvvE,GAAM,6BAA4B,KAAKktJ,EAAIl9E,MAAM,MAAM,IAAI,GAAGk9E,EAAIn9E,GAAG,KAAMm9E,EAAI+oN,gBAAkB/oN,EAAI8oN,yBAA0BllS,EAAG,MAAM,CAACyP,YAAY,kBAAkB,CAACzP,EAAG,UAAU,CAACrlE,MAAM,CAAC,KAAO,gBAAgB,CAACqlE,EAAG,cAAc,CAACrlE,MAAM,CAAC,MAAQyhJ,EAAI57I,KAAK4tN,uCAAuC,CAACpuJ,EAAG,uBAAuB,IAAI,IAAI,GAAGo8E,EAAIl9E,SAASk9E,EAAIn9E,GAAG,KAAKe,EAAG,sBAAsB,CAACrlE,MAAM,CAAC,UAAYyhJ,EAAIgpN,WAAW,YAAchpN,EAAIopN,mBAAmB,OAASppN,EAAIspN,aAAa,WAAatpN,EAAIqpN,eAAe,gBAAkBrpN,EAAIkkN,iBAAiBntV,GAAG,CAAC,iBAAmBipI,EAAI8qN,qBAAqB,KACnsG,IDWpB,EACA,KACA,WACA,M,SEbFC,GAAc34R,QAAU,SAASrE,GAC7BA,EAAIlG,UAAUkjS,GAAc5+W,KAAM4+W,KAGvBA,UCJfl9B,GAAgBz7P,QAAU,SAASrE,GAC/BA,EAAIlG,UAAUgmQ,GAAgB1hV,KAAM0hV,KAGzBA,UCJf5c,GAAiB7+O,QAAU,SAASrE,GAChCA,EAAIlG,UAAUopP,GAAiB9kU,KAAM8kU,KAG1BA,U,UCNgM,GCqB/M,CACE9kU,KAAM,sBACNmuB,MAAO,CACL0wV,YAAa,CACX96W,KAAM26D,OACN2P,QAAS,KAEXywS,aAAc,CACZ/6W,KAAM26D,OACN2P,QAAS,KAGbsT,WAAY,CACVo9R,W,QAAJ,GAEEh6V,KAfF,WAgBI,MAAO,CACL8O,MAAOrxB,KAAKq8W,YACZ5oV,OAAQ,GACRzuB,KAAMkjM,OAAOC,IAAIC,SAASC,MAAyB,kBACnDt5C,YAAam5C,OAAOC,IAAIC,SAASC,MAAiC,0BAClEr5C,WAAY,UACZC,cAAe,0BACfC,YAAa,0BACbG,UAAW,UACXmtN,UAAU,IAGd/wU,QAAS,CACPgxU,UADJ,WAEMz8W,KAAKw8W,UAAW,EAChBx8W,KAAKq7E,MAAM,eCjCF,I,OAXC,YACd,ICTW,WAAa,IAAIg2E,EAAIrxJ,KAASyyG,EAAG4+C,EAAIhgF,eAAmB4D,EAAGo8E,EAAI9wE,MAAMtL,IAAIw9B,EAAG,OAAOx9B,EAAG,MAAM,CAACyP,YAAY,yBAAyB,CAACzP,EAAG,cAAc,CAACphB,IAAI,aAAavvC,MAAM,CAAGkrI,aAAc,OAAS5/I,MAAM,CAAC,MAAQyhJ,EAAIhgI,MAAM,OAASggI,EAAI59H,OAAO,KAAO49H,EAAIrsJ,KAAK,eAAeqsJ,EAAItC,YAAY,WAAasC,EAAIrC,WAAW,kBAAkBqC,EAAIpC,cAAc,eAAeoC,EAAInC,YAAY,aAAamC,EAAIhC,WAAWjnI,GAAG,CAAC,aAAeipI,EAAIorN,cAAc,KACzb,IDWpB,EACA,KACA,WACA,M,SEbFC,GAAoBj5R,QAAU,SAAArE,GAC1BA,EAAIlG,UAAUwjS,GAAoBl/W,KAAMk/W,KAG7BA,I,GAAAA,M,yHCiDf,IAAMv9R,GAAa,CACfy/G,EACA65D,EAAO15D,aACP05D,EAAOz5D,kBACPgE,GACAE,GACAa,GACA0B,GACAmG,GACAurJ,GACArrJ,GACAE,GACHS,GACG29I,GACAsd,GACA36J,GACAiB,GACAkC,GACAQ,GAAUA,UACVA,GAAUC,cACVwmJ,GAAWA,WACXA,GAAWC,gBACXxiJ,GACAc,GACAa,GACAqC,GACA4I,GACAgE,GACAiW,GACAM,GACAM,GACAwC,GACAgD,GACAZ,GAAmBA,mBACnBA,GAAmBC,wBACnBD,GAAmBE,0BACnBa,GACA6+G,GACAmJ,GACA8U,GACAlU,GACAqD,GACAhC,GACAyN,GACAmJ,GACAtU,GACAO,GACA4L,GACAc,GACA4L,GACApC,GACAtE,GACA2H,GACAH,GACAsH,GACA6D,GACAzD,GACAwM,GACAl9B,GACA5c,GACAo6C,IASkB,oBAAXz5W,QAA0BA,OAAOm8E,KAN5C,SAAiBA,GACbD,GAAW54E,KAAI,SAAA2yE,GACXkG,EAAIlG,UAAUA,EAAU17E,KAAM07E,MAKlCuK,CAAQxgF,OAAOm8E,KAGnB,kBACIw/G,OACAG,aAAc05D,EAAO15D,aACrBC,kBAAmBy5D,EAAOz5D,kBAC1BgE,eACAE,gBACAa,sBACA0B,gBACAmG,YACAE,qBACAE,cACHS,uBACGi7J,iBACA36J,iBACAiB,qBACAkC,wBACAQ,UAAWA,GAAUA,UACrBC,cAAeD,GAAUC,cACzBwmJ,WAAWA,GAAWA,WACtBC,gBAAgBD,GAAWC,gBAC3BxiJ,oBACAc,kBACAa,wBACAqC,wBACA4I,uBACAgE,uBACAiW,yBACAM,aACAquH,gBACAsP,aACAr9H,mBACAwC,oBACAgD,oBACAZ,mBAAmBA,GAAmBA,mBACtCC,wBAAwBD,GAAmBC,wBAC3CC,0BAA0BF,GAAmBE,0BAC7Ca,kBACA6+G,sBACAmJ,mBACA8U,aAvCJ,aAwCI3H,IAxCJ,0BAyCIvM,IAzCJ,6BA0CIqD,IA1CJ,2BA2CIhC,IA3CJ,kBA4CIsC,IA5CJ,wBA6CIO,IA7CJ,4BA8CI4L,IA9CJ,sBA+CIc,IA/CJ,uBAgDIqH,IAhDJ,wBAiDIuE,IAjDJ,6BAkDIpC,IAlDJ,iBAmDItE,IAnDJ,mBAoDI2H,IApDJ,sBAqDIH,IArDJ,4BAsDIsH,IAtDJ,qBAuDI6D,IAvDJ,0BAwDIzD,IAxDJ,sBAyDIwM,IAzDJ,wBA0DIl9B,IA1DJ,yBA2DI5c,IA3DJ,4BA4DIo6C,IA5DJ","file":"goodwe.components.js","sourcesContent":[" \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 646);\n","/* globals __VUE_SSR_CONTEXT__ */\n\n// IMPORTANT: Do NOT use ES2015 features in this file (except for modules).\n// This module is a runtime utility for cleaner component module output and will\n// be included in the final webpack user bundle.\n\nexport default function normalizeComponent (\n scriptExports,\n render,\n staticRenderFns,\n functionalTemplate,\n injectStyles,\n scopeId,\n moduleIdentifier, /* server only */\n shadowMode /* vue-cli only */\n) {\n // Vue.extend constructor export interop\n var options = typeof scriptExports === 'function'\n ? scriptExports.options\n : scriptExports\n\n // render functions\n if (render) {\n options.render = render\n options.staticRenderFns = staticRenderFns\n options._compiled = true\n }\n\n // functional template\n if (functionalTemplate) {\n options.functional = true\n }\n\n // scopedId\n if (scopeId) {\n options._scopeId = 'data-v-' + scopeId\n }\n\n var hook\n if (moduleIdentifier) { // server build\n hook = function (context) {\n // 2.3 injection\n context =\n context || // cached call\n (this.$vnode && this.$vnode.ssrContext) || // stateful\n (this.parent && this.parent.$vnode && this.parent.$vnode.ssrContext) // functional\n // 2.2 with runInNewContext: true\n if (!context && typeof __VUE_SSR_CONTEXT__ !== 'undefined') {\n context = __VUE_SSR_CONTEXT__\n }\n // inject component styles\n if (injectStyles) {\n injectStyles.call(this, context)\n }\n // register component module identifier for async chunk inferrence\n if (context && context._registeredComponents) {\n context._registeredComponents.add(moduleIdentifier)\n }\n }\n // used by ssr in case component is cached and beforeCreate\n // never gets called\n options._ssrRegister = hook\n } else if (injectStyles) {\n hook = shadowMode\n ? function () {\n injectStyles.call(\n this,\n (options.functional ? this.parent : this).$root.$options.shadowRoot\n )\n }\n : injectStyles\n }\n\n if (hook) {\n if (options.functional) {\n // for template-only hot-reload because in that case the render fn doesn't\n // go through the normalizer\n options._injectStyles = hook\n // register for functional component in vue file\n var originalRender = options.render\n options.render = function renderWithStyleInjection (h, context) {\n hook.call(context)\n return originalRender(h, context)\n }\n } else {\n // inject component registration as beforeCreate hook\n var existing = options.beforeCreate\n options.beforeCreate = existing\n ? [].concat(existing, hook)\n : [hook]\n }\n }\n\n return {\n exports: scriptExports,\n options: options\n }\n}\n","import baseMatches from './_baseMatches.js';\nimport baseMatchesProperty from './_baseMatchesProperty.js';\nimport identity from './identity.js';\nimport isArray from './isArray.js';\nimport property from './property.js';\n\n/**\n * The base implementation of `_.iteratee`.\n *\n * @private\n * @param {*} [value=_.identity] The value to convert to an iteratee.\n * @returns {Function} Returns the iteratee.\n */\nfunction baseIteratee(value) {\n // Don't store the `typeof` result in a variable to avoid a JIT bug in Safari 9.\n // See https://bugs.webkit.org/show_bug.cgi?id=156034 for more details.\n if (typeof value == 'function') {\n return value;\n }\n if (value == null) {\n return identity;\n }\n if (typeof value == 'object') {\n return isArray(value)\n ? baseMatchesProperty(value[0], value[1])\n : baseMatches(value);\n }\n return property(value);\n}\n\nexport default baseIteratee;\n","/**\n * Checks if `value` is classified as an `Array` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array, else `false`.\n * @example\n *\n * _.isArray([1, 2, 3]);\n * // => true\n *\n * _.isArray(document.body.children);\n * // => false\n *\n * _.isArray('abc');\n * // => false\n *\n * _.isArray(_.noop);\n * // => false\n */\nvar isArray = Array.isArray;\n\nexport default isArray;\n","import toFinite from './toFinite.js';\n\n/**\n * Converts `value` to an integer.\n *\n * **Note:** This method is loosely based on\n * [`ToInteger`](http://www.ecma-international.org/ecma-262/7.0/#sec-tointeger).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {number} Returns the converted integer.\n * @example\n *\n * _.toInteger(3.2);\n * // => 3\n *\n * _.toInteger(Number.MIN_VALUE);\n * // => 0\n *\n * _.toInteger(Infinity);\n * // => 1.7976931348623157e+308\n *\n * _.toInteger('3.2');\n * // => 3\n */\nfunction toInteger(value) {\n var result = toFinite(value),\n remainder = result % 1;\n\n return result === result ? (remainder ? result - remainder : result) : 0;\n}\n\nexport default toInteger;\n","import identity from './identity.js';\nimport overRest from './_overRest.js';\nimport setToString from './_setToString.js';\n\n/**\n * The base implementation of `_.rest` which doesn't validate or coerce arguments.\n *\n * @private\n * @param {Function} func The function to apply a rest parameter to.\n * @param {number} [start=func.length-1] The start position of the rest parameter.\n * @returns {Function} Returns the new function.\n */\nfunction baseRest(func, start) {\n return setToString(overRest(func, start, identity), func + '');\n}\n\nexport default baseRest;\n","import baseToString from './_baseToString.js';\n\n/**\n * Converts `value` to a string. An empty string is returned for `null`\n * and `undefined` values. The sign of `-0` is preserved.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n * @example\n *\n * _.toString(null);\n * // => ''\n *\n * _.toString(-0);\n * // => '-0'\n *\n * _.toString([1, 2, 3]);\n * // => '1,2,3'\n */\nfunction toString(value) {\n return value == null ? '' : baseToString(value);\n}\n\nexport default toString;\n","/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n var type = typeof value;\n return value != null && (type == 'object' || type == 'function');\n}\n\nexport default isObject;\n","/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n return value != null && typeof value == 'object';\n}\n\nexport default isObjectLike;\n","/**\n * A specialized version of `_.map` for arrays without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the new mapped array.\n */\nfunction arrayMap(array, iteratee) {\n var index = -1,\n length = array == null ? 0 : array.length,\n result = Array(length);\n\n while (++index < length) {\n result[index] = iteratee(array[index], index, array);\n }\n return result;\n}\n\nexport default arrayMap;\n","import arrayLikeKeys from './_arrayLikeKeys.js';\nimport baseKeys from './_baseKeys.js';\nimport isArrayLike from './isArrayLike.js';\n\n/**\n * Creates an array of the own enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects. See the\n * [ES spec](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n * for more details.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keys(new Foo);\n * // => ['a', 'b'] (iteration order is not guaranteed)\n *\n * _.keys('hi');\n * // => ['0', '1']\n */\nfunction keys(object) {\n return isArrayLike(object) ? arrayLikeKeys(object) : baseKeys(object);\n}\n\nexport default keys;\n","import isArrayLike from './isArrayLike.js';\nimport isObjectLike from './isObjectLike.js';\n\n/**\n * This method is like `_.isArrayLike` except that it also checks if `value`\n * is an object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array-like object,\n * else `false`.\n * @example\n *\n * _.isArrayLikeObject([1, 2, 3]);\n * // => true\n *\n * _.isArrayLikeObject(document.body.children);\n * // => true\n *\n * _.isArrayLikeObject('abc');\n * // => false\n *\n * _.isArrayLikeObject(_.noop);\n * // => false\n */\nfunction isArrayLikeObject(value) {\n return isObjectLike(value) && isArrayLike(value);\n}\n\nexport default isArrayLikeObject;\n","import freeGlobal from './_freeGlobal.js';\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = freeGlobal || freeSelf || Function('return this')();\n\nexport default root;\n","import Symbol from './_Symbol.js';\nimport isArguments from './isArguments.js';\nimport isArray from './isArray.js';\n\n/** Built-in value references. */\nvar spreadableSymbol = Symbol ? Symbol.isConcatSpreadable : undefined;\n\n/**\n * Checks if `value` is a flattenable `arguments` object or array.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is flattenable, else `false`.\n */\nfunction isFlattenable(value) {\n return isArray(value) || isArguments(value) ||\n !!(spreadableSymbol && value && value[spreadableSymbol]);\n}\n\nexport default isFlattenable;\n","import arrayPush from './_arrayPush.js';\nimport isFlattenable from './_isFlattenable.js';\n\n/**\n * The base implementation of `_.flatten` with support for restricting flattening.\n *\n * @private\n * @param {Array} array The array to flatten.\n * @param {number} depth The maximum recursion depth.\n * @param {boolean} [predicate=isFlattenable] The function invoked per iteration.\n * @param {boolean} [isStrict] Restrict to values that pass `predicate` checks.\n * @param {Array} [result=[]] The initial result value.\n * @returns {Array} Returns the new flattened array.\n */\nfunction baseFlatten(array, depth, predicate, isStrict, result) {\n var index = -1,\n length = array.length;\n\n predicate || (predicate = isFlattenable);\n result || (result = []);\n\n while (++index < length) {\n var value = array[index];\n if (depth > 0 && predicate(value)) {\n if (depth > 1) {\n // Recursively flatten arrays (susceptible to call stack limits).\n baseFlatten(value, depth - 1, predicate, isStrict, result);\n } else {\n arrayPush(result, value);\n }\n } else if (!isStrict) {\n result[result.length] = value;\n }\n }\n return result;\n}\n\nexport default baseFlatten;\n","/**\n * This method returns the first argument it receives.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Util\n * @param {*} value Any value.\n * @returns {*} Returns `value`.\n * @example\n *\n * var object = { 'a': 1 };\n *\n * console.log(_.identity(object) === object);\n * // => true\n */\nfunction identity(value) {\n return value;\n}\n\nexport default identity;\n","import isFunction from './isFunction.js';\nimport isLength from './isLength.js';\n\n/**\n * Checks if `value` is array-like. A value is considered array-like if it's\n * not a function and has a `value.length` that's an integer greater than or\n * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is array-like, else `false`.\n * @example\n *\n * _.isArrayLike([1, 2, 3]);\n * // => true\n *\n * _.isArrayLike(document.body.children);\n * // => true\n *\n * _.isArrayLike('abc');\n * // => true\n *\n * _.isArrayLike(_.noop);\n * // => false\n */\nfunction isArrayLike(value) {\n return value != null && isLength(value.length) && !isFunction(value);\n}\n\nexport default isArrayLike;\n","/**\n * This function is like\n * [`Object.keys`](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n * except that it includes inherited enumerable properties.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction nativeKeysIn(object) {\n var result = [];\n if (object != null) {\n for (var key in Object(object)) {\n result.push(key);\n }\n }\n return result;\n}\n\nexport default nativeKeysIn;\n","import isObject from './isObject.js';\nimport isPrototype from './_isPrototype.js';\nimport nativeKeysIn from './_nativeKeysIn.js';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * The base implementation of `_.keysIn` which doesn't treat sparse arrays as dense.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction baseKeysIn(object) {\n if (!isObject(object)) {\n return nativeKeysIn(object);\n }\n var isProto = isPrototype(object),\n result = [];\n\n for (var key in object) {\n if (!(key == 'constructor' && (isProto || !hasOwnProperty.call(object, key)))) {\n result.push(key);\n }\n }\n return result;\n}\n\nexport default baseKeysIn;\n","import arrayLikeKeys from './_arrayLikeKeys.js';\nimport baseKeysIn from './_baseKeysIn.js';\nimport isArrayLike from './isArrayLike.js';\n\n/**\n * Creates an array of the own and inherited enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keysIn(new Foo);\n * // => ['a', 'b', 'c'] (iteration order is not guaranteed)\n */\nfunction keysIn(object) {\n return isArrayLike(object) ? arrayLikeKeys(object, true) : baseKeysIn(object);\n}\n\nexport default keysIn;\n","/*!\n * jQuery JavaScript Library v3.6.0\n * https://jquery.com/\n *\n * Includes Sizzle.js\n * https://sizzlejs.com/\n *\n * Copyright OpenJS Foundation and other contributors\n * Released under the MIT license\n * https://jquery.org/license\n *\n * Date: 2021-03-02T17:08Z\n */\n( function( global, factory ) {\n\n\t\"use strict\";\n\n\tif ( typeof module === \"object\" && typeof module.exports === \"object\" ) {\n\n\t\t// For CommonJS and CommonJS-like environments where a proper `window`\n\t\t// is present, execute the factory and get jQuery.\n\t\t// For environments that do not have a `window` with a `document`\n\t\t// (such as Node.js), expose a factory as module.exports.\n\t\t// This accentuates the need for the creation of a real `window`.\n\t\t// e.g. var jQuery = require(\"jquery\")(window);\n\t\t// See ticket #14549 for more info.\n\t\tmodule.exports = global.document ?\n\t\t\tfactory( global, true ) :\n\t\t\tfunction( w ) {\n\t\t\t\tif ( !w.document ) {\n\t\t\t\t\tthrow new Error( \"jQuery requires a window with a document\" );\n\t\t\t\t}\n\t\t\t\treturn factory( w );\n\t\t\t};\n\t} else {\n\t\tfactory( global );\n\t}\n\n// Pass this if window is not defined yet\n} )( typeof window !== \"undefined\" ? window : this, function( window, noGlobal ) {\n\n// Edge <= 12 - 13+, Firefox <=18 - 45+, IE 10 - 11, Safari 5.1 - 9+, iOS 6 - 9.1\n// throw exceptions when non-strict code (e.g., ASP.NET 4.5) accesses strict mode\n// arguments.callee.caller (trac-13335). But as of jQuery 3.0 (2016), strict mode should be common\n// enough that all such attempts are guarded in a try block.\n\"use strict\";\n\nvar arr = [];\n\nvar getProto = Object.getPrototypeOf;\n\nvar slice = arr.slice;\n\nvar flat = arr.flat ? function( array ) {\n\treturn arr.flat.call( array );\n} : function( array ) {\n\treturn arr.concat.apply( [], array );\n};\n\n\nvar push = arr.push;\n\nvar indexOf = arr.indexOf;\n\nvar class2type = {};\n\nvar toString = class2type.toString;\n\nvar hasOwn = class2type.hasOwnProperty;\n\nvar fnToString = hasOwn.toString;\n\nvar ObjectFunctionString = fnToString.call( Object );\n\nvar support = {};\n\nvar isFunction = function isFunction( obj ) {\n\n\t\t// Support: Chrome <=57, Firefox <=52\n\t\t// In some browsers, typeof returns \"function\" for HTML elements\n\t\t// (i.e., `typeof document.createElement( \"object\" ) === \"function\"`).\n\t\t// We don't want to classify *any* DOM node as a function.\n\t\t// Support: QtWeb <=3.8.5, WebKit <=534.34, wkhtmltopdf tool <=0.12.5\n\t\t// Plus for old WebKit, typeof returns \"function\" for HTML collections\n\t\t// (e.g., `typeof document.getElementsByTagName(\"div\") === \"function\"`). (gh-4756)\n\t\treturn typeof obj === \"function\" && typeof obj.nodeType !== \"number\" &&\n\t\t\ttypeof obj.item !== \"function\";\n\t};\n\n\nvar isWindow = function isWindow( obj ) {\n\t\treturn obj != null && obj === obj.window;\n\t};\n\n\nvar document = window.document;\n\n\n\n\tvar preservedScriptAttributes = {\n\t\ttype: true,\n\t\tsrc: true,\n\t\tnonce: true,\n\t\tnoModule: true\n\t};\n\n\tfunction DOMEval( code, node, doc ) {\n\t\tdoc = doc || document;\n\n\t\tvar i, val,\n\t\t\tscript = doc.createElement( \"script\" );\n\n\t\tscript.text = code;\n\t\tif ( node ) {\n\t\t\tfor ( i in preservedScriptAttributes ) {\n\n\t\t\t\t// Support: Firefox 64+, Edge 18+\n\t\t\t\t// Some browsers don't support the \"nonce\" property on scripts.\n\t\t\t\t// On the other hand, just using `getAttribute` is not enough as\n\t\t\t\t// the `nonce` attribute is reset to an empty string whenever it\n\t\t\t\t// becomes browsing-context connected.\n\t\t\t\t// See https://github.com/whatwg/html/issues/2369\n\t\t\t\t// See https://html.spec.whatwg.org/#nonce-attributes\n\t\t\t\t// The `node.getAttribute` check was added for the sake of\n\t\t\t\t// `jQuery.globalEval` so that it can fake a nonce-containing node\n\t\t\t\t// via an object.\n\t\t\t\tval = node[ i ] || node.getAttribute && node.getAttribute( i );\n\t\t\t\tif ( val ) {\n\t\t\t\t\tscript.setAttribute( i, val );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tdoc.head.appendChild( script ).parentNode.removeChild( script );\n\t}\n\n\nfunction toType( obj ) {\n\tif ( obj == null ) {\n\t\treturn obj + \"\";\n\t}\n\n\t// Support: Android <=2.3 only (functionish RegExp)\n\treturn typeof obj === \"object\" || typeof obj === \"function\" ?\n\t\tclass2type[ toString.call( obj ) ] || \"object\" :\n\t\ttypeof obj;\n}\n/* global Symbol */\n// Defining this global in .eslintrc.json would create a danger of using the global\n// unguarded in another place, it seems safer to define global only for this module\n\n\n\nvar\n\tversion = \"3.6.0\",\n\n\t// Define a local copy of jQuery\n\tjQuery = function( selector, context ) {\n\n\t\t// The jQuery object is actually just the init constructor 'enhanced'\n\t\t// Need init if jQuery is called (just allow error to be thrown if not included)\n\t\treturn new jQuery.fn.init( selector, context );\n\t};\n\njQuery.fn = jQuery.prototype = {\n\n\t// The current version of jQuery being used\n\tjquery: version,\n\n\tconstructor: jQuery,\n\n\t// The default length of a jQuery object is 0\n\tlength: 0,\n\n\ttoArray: function() {\n\t\treturn slice.call( this );\n\t},\n\n\t// Get the Nth element in the matched element set OR\n\t// Get the whole matched element set as a clean array\n\tget: function( num ) {\n\n\t\t// Return all the elements in a clean array\n\t\tif ( num == null ) {\n\t\t\treturn slice.call( this );\n\t\t}\n\n\t\t// Return just the one element from the set\n\t\treturn num < 0 ? this[ num + this.length ] : this[ num ];\n\t},\n\n\t// Take an array of elements and push it onto the stack\n\t// (returning the new matched element set)\n\tpushStack: function( elems ) {\n\n\t\t// Build a new jQuery matched element set\n\t\tvar ret = jQuery.merge( this.constructor(), elems );\n\n\t\t// Add the old object onto the stack (as a reference)\n\t\tret.prevObject = this;\n\n\t\t// Return the newly-formed element set\n\t\treturn ret;\n\t},\n\n\t// Execute a callback for every element in the matched set.\n\teach: function( callback ) {\n\t\treturn jQuery.each( this, callback );\n\t},\n\n\tmap: function( callback ) {\n\t\treturn this.pushStack( jQuery.map( this, function( elem, i ) {\n\t\t\treturn callback.call( elem, i, elem );\n\t\t} ) );\n\t},\n\n\tslice: function() {\n\t\treturn this.pushStack( slice.apply( this, arguments ) );\n\t},\n\n\tfirst: function() {\n\t\treturn this.eq( 0 );\n\t},\n\n\tlast: function() {\n\t\treturn this.eq( -1 );\n\t},\n\n\teven: function() {\n\t\treturn this.pushStack( jQuery.grep( this, function( _elem, i ) {\n\t\t\treturn ( i + 1 ) % 2;\n\t\t} ) );\n\t},\n\n\todd: function() {\n\t\treturn this.pushStack( jQuery.grep( this, function( _elem, i ) {\n\t\t\treturn i % 2;\n\t\t} ) );\n\t},\n\n\teq: function( i ) {\n\t\tvar len = this.length,\n\t\t\tj = +i + ( i < 0 ? len : 0 );\n\t\treturn this.pushStack( j >= 0 && j < len ? [ this[ j ] ] : [] );\n\t},\n\n\tend: function() {\n\t\treturn this.prevObject || this.constructor();\n\t},\n\n\t// For internal use only.\n\t// Behaves like an Array's method, not like a jQuery method.\n\tpush: push,\n\tsort: arr.sort,\n\tsplice: arr.splice\n};\n\njQuery.extend = jQuery.fn.extend = function() {\n\tvar options, name, src, copy, copyIsArray, clone,\n\t\ttarget = arguments[ 0 ] || {},\n\t\ti = 1,\n\t\tlength = arguments.length,\n\t\tdeep = false;\n\n\t// Handle a deep copy situation\n\tif ( typeof target === \"boolean\" ) {\n\t\tdeep = target;\n\n\t\t// Skip the boolean and the target\n\t\ttarget = arguments[ i ] || {};\n\t\ti++;\n\t}\n\n\t// Handle case when target is a string or something (possible in deep copy)\n\tif ( typeof target !== \"object\" && !isFunction( target ) ) {\n\t\ttarget = {};\n\t}\n\n\t// Extend jQuery itself if only one argument is passed\n\tif ( i === length ) {\n\t\ttarget = this;\n\t\ti--;\n\t}\n\n\tfor ( ; i < length; i++ ) {\n\n\t\t// Only deal with non-null/undefined values\n\t\tif ( ( options = arguments[ i ] ) != null ) {\n\n\t\t\t// Extend the base object\n\t\t\tfor ( name in options ) {\n\t\t\t\tcopy = options[ name ];\n\n\t\t\t\t// Prevent Object.prototype pollution\n\t\t\t\t// Prevent never-ending loop\n\t\t\t\tif ( name === \"__proto__\" || target === copy ) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\t// Recurse if we're merging plain objects or arrays\n\t\t\t\tif ( deep && copy && ( jQuery.isPlainObject( copy ) ||\n\t\t\t\t\t( copyIsArray = Array.isArray( copy ) ) ) ) {\n\t\t\t\t\tsrc = target[ name ];\n\n\t\t\t\t\t// Ensure proper type for the source value\n\t\t\t\t\tif ( copyIsArray && !Array.isArray( src ) ) {\n\t\t\t\t\t\tclone = [];\n\t\t\t\t\t} else if ( !copyIsArray && !jQuery.isPlainObject( src ) ) {\n\t\t\t\t\t\tclone = {};\n\t\t\t\t\t} else {\n\t\t\t\t\t\tclone = src;\n\t\t\t\t\t}\n\t\t\t\t\tcopyIsArray = false;\n\n\t\t\t\t\t// Never move original objects, clone them\n\t\t\t\t\ttarget[ name ] = jQuery.extend( deep, clone, copy );\n\n\t\t\t\t// Don't bring in undefined values\n\t\t\t\t} else if ( copy !== undefined ) {\n\t\t\t\t\ttarget[ name ] = copy;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// Return the modified object\n\treturn target;\n};\n\njQuery.extend( {\n\n\t// Unique for each copy of jQuery on the page\n\texpando: \"jQuery\" + ( version + Math.random() ).replace( /\\D/g, \"\" ),\n\n\t// Assume jQuery is ready without the ready module\n\tisReady: true,\n\n\terror: function( msg ) {\n\t\tthrow new Error( msg );\n\t},\n\n\tnoop: function() {},\n\n\tisPlainObject: function( obj ) {\n\t\tvar proto, Ctor;\n\n\t\t// Detect obvious negatives\n\t\t// Use toString instead of jQuery.type to catch host objects\n\t\tif ( !obj || toString.call( obj ) !== \"[object Object]\" ) {\n\t\t\treturn false;\n\t\t}\n\n\t\tproto = getProto( obj );\n\n\t\t// Objects with no prototype (e.g., `Object.create( null )`) are plain\n\t\tif ( !proto ) {\n\t\t\treturn true;\n\t\t}\n\n\t\t// Objects with prototype are plain iff they were constructed by a global Object function\n\t\tCtor = hasOwn.call( proto, \"constructor\" ) && proto.constructor;\n\t\treturn typeof Ctor === \"function\" && fnToString.call( Ctor ) === ObjectFunctionString;\n\t},\n\n\tisEmptyObject: function( obj ) {\n\t\tvar name;\n\n\t\tfor ( name in obj ) {\n\t\t\treturn false;\n\t\t}\n\t\treturn true;\n\t},\n\n\t// Evaluates a script in a provided context; falls back to the global one\n\t// if not specified.\n\tglobalEval: function( code, options, doc ) {\n\t\tDOMEval( code, { nonce: options && options.nonce }, doc );\n\t},\n\n\teach: function( obj, callback ) {\n\t\tvar length, i = 0;\n\n\t\tif ( isArrayLike( obj ) ) {\n\t\t\tlength = obj.length;\n\t\t\tfor ( ; i < length; i++ ) {\n\t\t\t\tif ( callback.call( obj[ i ], i, obj[ i ] ) === false ) {\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\tfor ( i in obj ) {\n\t\t\t\tif ( callback.call( obj[ i ], i, obj[ i ] ) === false ) {\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn obj;\n\t},\n\n\t// results is for internal usage only\n\tmakeArray: function( arr, results ) {\n\t\tvar ret = results || [];\n\n\t\tif ( arr != null ) {\n\t\t\tif ( isArrayLike( Object( arr ) ) ) {\n\t\t\t\tjQuery.merge( ret,\n\t\t\t\t\ttypeof arr === \"string\" ?\n\t\t\t\t\t\t[ arr ] : arr\n\t\t\t\t);\n\t\t\t} else {\n\t\t\t\tpush.call( ret, arr );\n\t\t\t}\n\t\t}\n\n\t\treturn ret;\n\t},\n\n\tinArray: function( elem, arr, i ) {\n\t\treturn arr == null ? -1 : indexOf.call( arr, elem, i );\n\t},\n\n\t// Support: Android <=4.0 only, PhantomJS 1 only\n\t// push.apply(_, arraylike) throws on ancient WebKit\n\tmerge: function( first, second ) {\n\t\tvar len = +second.length,\n\t\t\tj = 0,\n\t\t\ti = first.length;\n\n\t\tfor ( ; j < len; j++ ) {\n\t\t\tfirst[ i++ ] = second[ j ];\n\t\t}\n\n\t\tfirst.length = i;\n\n\t\treturn first;\n\t},\n\n\tgrep: function( elems, callback, invert ) {\n\t\tvar callbackInverse,\n\t\t\tmatches = [],\n\t\t\ti = 0,\n\t\t\tlength = elems.length,\n\t\t\tcallbackExpect = !invert;\n\n\t\t// Go through the array, only saving the items\n\t\t// that pass the validator function\n\t\tfor ( ; i < length; i++ ) {\n\t\t\tcallbackInverse = !callback( elems[ i ], i );\n\t\t\tif ( callbackInverse !== callbackExpect ) {\n\t\t\t\tmatches.push( elems[ i ] );\n\t\t\t}\n\t\t}\n\n\t\treturn matches;\n\t},\n\n\t// arg is for internal usage only\n\tmap: function( elems, callback, arg ) {\n\t\tvar length, value,\n\t\t\ti = 0,\n\t\t\tret = [];\n\n\t\t// Go through the array, translating each of the items to their new values\n\t\tif ( isArrayLike( elems ) ) {\n\t\t\tlength = elems.length;\n\t\t\tfor ( ; i < length; i++ ) {\n\t\t\t\tvalue = callback( elems[ i ], i, arg );\n\n\t\t\t\tif ( value != null ) {\n\t\t\t\t\tret.push( value );\n\t\t\t\t}\n\t\t\t}\n\n\t\t// Go through every key on the object,\n\t\t} else {\n\t\t\tfor ( i in elems ) {\n\t\t\t\tvalue = callback( elems[ i ], i, arg );\n\n\t\t\t\tif ( value != null ) {\n\t\t\t\t\tret.push( value );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Flatten any nested arrays\n\t\treturn flat( ret );\n\t},\n\n\t// A global GUID counter for objects\n\tguid: 1,\n\n\t// jQuery.support is not used in Core but other projects attach their\n\t// properties to it so it needs to exist.\n\tsupport: support\n} );\n\nif ( typeof Symbol === \"function\" ) {\n\tjQuery.fn[ Symbol.iterator ] = arr[ Symbol.iterator ];\n}\n\n// Populate the class2type map\njQuery.each( \"Boolean Number String Function Array Date RegExp Object Error Symbol\".split( \" \" ),\n\tfunction( _i, name ) {\n\t\tclass2type[ \"[object \" + name + \"]\" ] = name.toLowerCase();\n\t} );\n\nfunction isArrayLike( obj ) {\n\n\t// Support: real iOS 8.2 only (not reproducible in simulator)\n\t// `in` check used to prevent JIT error (gh-2145)\n\t// hasOwn isn't used here due to false negatives\n\t// regarding Nodelist length in IE\n\tvar length = !!obj && \"length\" in obj && obj.length,\n\t\ttype = toType( obj );\n\n\tif ( isFunction( obj ) || isWindow( obj ) ) {\n\t\treturn false;\n\t}\n\n\treturn type === \"array\" || length === 0 ||\n\t\ttypeof length === \"number\" && length > 0 && ( length - 1 ) in obj;\n}\nvar Sizzle =\n/*!\n * Sizzle CSS Selector Engine v2.3.6\n * https://sizzlejs.com/\n *\n * Copyright JS Foundation and other contributors\n * Released under the MIT license\n * https://js.foundation/\n *\n * Date: 2021-02-16\n */\n( function( window ) {\nvar i,\n\tsupport,\n\tExpr,\n\tgetText,\n\tisXML,\n\ttokenize,\n\tcompile,\n\tselect,\n\toutermostContext,\n\tsortInput,\n\thasDuplicate,\n\n\t// Local document vars\n\tsetDocument,\n\tdocument,\n\tdocElem,\n\tdocumentIsHTML,\n\trbuggyQSA,\n\trbuggyMatches,\n\tmatches,\n\tcontains,\n\n\t// Instance-specific data\n\texpando = \"sizzle\" + 1 * new Date(),\n\tpreferredDoc = window.document,\n\tdirruns = 0,\n\tdone = 0,\n\tclassCache = createCache(),\n\ttokenCache = createCache(),\n\tcompilerCache = createCache(),\n\tnonnativeSelectorCache = createCache(),\n\tsortOrder = function( a, b ) {\n\t\tif ( a === b ) {\n\t\t\thasDuplicate = true;\n\t\t}\n\t\treturn 0;\n\t},\n\n\t// Instance methods\n\thasOwn = ( {} ).hasOwnProperty,\n\tarr = [],\n\tpop = arr.pop,\n\tpushNative = arr.push,\n\tpush = arr.push,\n\tslice = arr.slice,\n\n\t// Use a stripped-down indexOf as it's faster than native\n\t// https://jsperf.com/thor-indexof-vs-for/5\n\tindexOf = function( list, elem ) {\n\t\tvar i = 0,\n\t\t\tlen = list.length;\n\t\tfor ( ; i < len; i++ ) {\n\t\t\tif ( list[ i ] === elem ) {\n\t\t\t\treturn i;\n\t\t\t}\n\t\t}\n\t\treturn -1;\n\t},\n\n\tbooleans = \"checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|\" +\n\t\t\"ismap|loop|multiple|open|readonly|required|scoped\",\n\n\t// Regular expressions\n\n\t// http://www.w3.org/TR/css3-selectors/#whitespace\n\twhitespace = \"[\\\\x20\\\\t\\\\r\\\\n\\\\f]\",\n\n\t// https://www.w3.org/TR/css-syntax-3/#ident-token-diagram\n\tidentifier = \"(?:\\\\\\\\[\\\\da-fA-F]{1,6}\" + whitespace +\n\t\t\"?|\\\\\\\\[^\\\\r\\\\n\\\\f]|[\\\\w-]|[^\\0-\\\\x7f])+\",\n\n\t// Attribute selectors: http://www.w3.org/TR/selectors/#attribute-selectors\n\tattributes = \"\\\\[\" + whitespace + \"*(\" + identifier + \")(?:\" + whitespace +\n\n\t\t// Operator (capture 2)\n\t\t\"*([*^$|!~]?=)\" + whitespace +\n\n\t\t// \"Attribute values must be CSS identifiers [capture 5]\n\t\t// or strings [capture 3 or capture 4]\"\n\t\t\"*(?:'((?:\\\\\\\\.|[^\\\\\\\\'])*)'|\\\"((?:\\\\\\\\.|[^\\\\\\\\\\\"])*)\\\"|(\" + identifier + \"))|)\" +\n\t\twhitespace + \"*\\\\]\",\n\n\tpseudos = \":(\" + identifier + \")(?:\\\\((\" +\n\n\t\t// To reduce the number of selectors needing tokenize in the preFilter, prefer arguments:\n\t\t// 1. quoted (capture 3; capture 4 or capture 5)\n\t\t\"('((?:\\\\\\\\.|[^\\\\\\\\'])*)'|\\\"((?:\\\\\\\\.|[^\\\\\\\\\\\"])*)\\\")|\" +\n\n\t\t// 2. simple (capture 6)\n\t\t\"((?:\\\\\\\\.|[^\\\\\\\\()[\\\\]]|\" + attributes + \")*)|\" +\n\n\t\t// 3. anything else (capture 2)\n\t\t\".*\" +\n\t\t\")\\\\)|)\",\n\n\t// Leading and non-escaped trailing whitespace, capturing some non-whitespace characters preceding the latter\n\trwhitespace = new RegExp( whitespace + \"+\", \"g\" ),\n\trtrim = new RegExp( \"^\" + whitespace + \"+|((?:^|[^\\\\\\\\])(?:\\\\\\\\.)*)\" +\n\t\twhitespace + \"+$\", \"g\" ),\n\n\trcomma = new RegExp( \"^\" + whitespace + \"*,\" + whitespace + \"*\" ),\n\trcombinators = new RegExp( \"^\" + whitespace + \"*([>+~]|\" + whitespace + \")\" + whitespace +\n\t\t\"*\" ),\n\trdescend = new RegExp( whitespace + \"|>\" ),\n\n\trpseudo = new RegExp( pseudos ),\n\tridentifier = new RegExp( \"^\" + identifier + \"$\" ),\n\n\tmatchExpr = {\n\t\t\"ID\": new RegExp( \"^#(\" + identifier + \")\" ),\n\t\t\"CLASS\": new RegExp( \"^\\\\.(\" + identifier + \")\" ),\n\t\t\"TAG\": new RegExp( \"^(\" + identifier + \"|[*])\" ),\n\t\t\"ATTR\": new RegExp( \"^\" + attributes ),\n\t\t\"PSEUDO\": new RegExp( \"^\" + pseudos ),\n\t\t\"CHILD\": new RegExp( \"^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\\\(\" +\n\t\t\twhitespace + \"*(even|odd|(([+-]|)(\\\\d*)n|)\" + whitespace + \"*(?:([+-]|)\" +\n\t\t\twhitespace + \"*(\\\\d+)|))\" + whitespace + \"*\\\\)|)\", \"i\" ),\n\t\t\"bool\": new RegExp( \"^(?:\" + booleans + \")$\", \"i\" ),\n\n\t\t// For use in libraries implementing .is()\n\t\t// We use this for POS matching in `select`\n\t\t\"needsContext\": new RegExp( \"^\" + whitespace +\n\t\t\t\"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\\\(\" + whitespace +\n\t\t\t\"*((?:-\\\\d)?\\\\d*)\" + whitespace + \"*\\\\)|)(?=[^-]|$)\", \"i\" )\n\t},\n\n\trhtml = /HTML$/i,\n\trinputs = /^(?:input|select|textarea|button)$/i,\n\trheader = /^h\\d$/i,\n\n\trnative = /^[^{]+\\{\\s*\\[native \\w/,\n\n\t// Easily-parseable/retrievable ID or TAG or CLASS selectors\n\trquickExpr = /^(?:#([\\w-]+)|(\\w+)|\\.([\\w-]+))$/,\n\n\trsibling = /[+~]/,\n\n\t// CSS escapes\n\t// http://www.w3.org/TR/CSS21/syndata.html#escaped-characters\n\trunescape = new RegExp( \"\\\\\\\\[\\\\da-fA-F]{1,6}\" + whitespace + \"?|\\\\\\\\([^\\\\r\\\\n\\\\f])\", \"g\" ),\n\tfunescape = function( escape, nonHex ) {\n\t\tvar high = \"0x\" + escape.slice( 1 ) - 0x10000;\n\n\t\treturn nonHex ?\n\n\t\t\t// Strip the backslash prefix from a non-hex escape sequence\n\t\t\tnonHex :\n\n\t\t\t// Replace a hexadecimal escape sequence with the encoded Unicode code point\n\t\t\t// Support: IE <=11+\n\t\t\t// For values outside the Basic Multilingual Plane (BMP), manually construct a\n\t\t\t// surrogate pair\n\t\t\thigh < 0 ?\n\t\t\t\tString.fromCharCode( high + 0x10000 ) :\n\t\t\t\tString.fromCharCode( high >> 10 | 0xD800, high & 0x3FF | 0xDC00 );\n\t},\n\n\t// CSS string/identifier serialization\n\t// https://drafts.csswg.org/cssom/#common-serializing-idioms\n\trcssescape = /([\\0-\\x1f\\x7f]|^-?\\d)|^-$|[^\\0-\\x1f\\x7f-\\uFFFF\\w-]/g,\n\tfcssescape = function( ch, asCodePoint ) {\n\t\tif ( asCodePoint ) {\n\n\t\t\t// U+0000 NULL becomes U+FFFD REPLACEMENT CHARACTER\n\t\t\tif ( ch === \"\\0\" ) {\n\t\t\t\treturn \"\\uFFFD\";\n\t\t\t}\n\n\t\t\t// Control characters and (dependent upon position) numbers get escaped as code points\n\t\t\treturn ch.slice( 0, -1 ) + \"\\\\\" +\n\t\t\t\tch.charCodeAt( ch.length - 1 ).toString( 16 ) + \" \";\n\t\t}\n\n\t\t// Other potentially-special ASCII characters get backslash-escaped\n\t\treturn \"\\\\\" + ch;\n\t},\n\n\t// Used for iframes\n\t// See setDocument()\n\t// Removing the function wrapper causes a \"Permission Denied\"\n\t// error in IE\n\tunloadHandler = function() {\n\t\tsetDocument();\n\t},\n\n\tinDisabledFieldset = addCombinator(\n\t\tfunction( elem ) {\n\t\t\treturn elem.disabled === true && elem.nodeName.toLowerCase() === \"fieldset\";\n\t\t},\n\t\t{ dir: \"parentNode\", next: \"legend\" }\n\t);\n\n// Optimize for push.apply( _, NodeList )\ntry {\n\tpush.apply(\n\t\t( arr = slice.call( preferredDoc.childNodes ) ),\n\t\tpreferredDoc.childNodes\n\t);\n\n\t// Support: Android<4.0\n\t// Detect silently failing push.apply\n\t// eslint-disable-next-line no-unused-expressions\n\tarr[ preferredDoc.childNodes.length ].nodeType;\n} catch ( e ) {\n\tpush = { apply: arr.length ?\n\n\t\t// Leverage slice if possible\n\t\tfunction( target, els ) {\n\t\t\tpushNative.apply( target, slice.call( els ) );\n\t\t} :\n\n\t\t// Support: IE<9\n\t\t// Otherwise append directly\n\t\tfunction( target, els ) {\n\t\t\tvar j = target.length,\n\t\t\t\ti = 0;\n\n\t\t\t// Can't trust NodeList.length\n\t\t\twhile ( ( target[ j++ ] = els[ i++ ] ) ) {}\n\t\t\ttarget.length = j - 1;\n\t\t}\n\t};\n}\n\nfunction Sizzle( selector, context, results, seed ) {\n\tvar m, i, elem, nid, match, groups, newSelector,\n\t\tnewContext = context && context.ownerDocument,\n\n\t\t// nodeType defaults to 9, since context defaults to document\n\t\tnodeType = context ? context.nodeType : 9;\n\n\tresults = results || [];\n\n\t// Return early from calls with invalid selector or context\n\tif ( typeof selector !== \"string\" || !selector ||\n\t\tnodeType !== 1 && nodeType !== 9 && nodeType !== 11 ) {\n\n\t\treturn results;\n\t}\n\n\t// Try to shortcut find operations (as opposed to filters) in HTML documents\n\tif ( !seed ) {\n\t\tsetDocument( context );\n\t\tcontext = context || document;\n\n\t\tif ( documentIsHTML ) {\n\n\t\t\t// If the selector is sufficiently simple, try using a \"get*By*\" DOM method\n\t\t\t// (excepting DocumentFragment context, where the methods don't exist)\n\t\t\tif ( nodeType !== 11 && ( match = rquickExpr.exec( selector ) ) ) {\n\n\t\t\t\t// ID selector\n\t\t\t\tif ( ( m = match[ 1 ] ) ) {\n\n\t\t\t\t\t// Document context\n\t\t\t\t\tif ( nodeType === 9 ) {\n\t\t\t\t\t\tif ( ( elem = context.getElementById( m ) ) ) {\n\n\t\t\t\t\t\t\t// Support: IE, Opera, Webkit\n\t\t\t\t\t\t\t// TODO: identify versions\n\t\t\t\t\t\t\t// getElementById can match elements by name instead of ID\n\t\t\t\t\t\t\tif ( elem.id === m ) {\n\t\t\t\t\t\t\t\tresults.push( elem );\n\t\t\t\t\t\t\t\treturn results;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\treturn results;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t// Element context\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\t// Support: IE, Opera, Webkit\n\t\t\t\t\t\t// TODO: identify versions\n\t\t\t\t\t\t// getElementById can match elements by name instead of ID\n\t\t\t\t\t\tif ( newContext && ( elem = newContext.getElementById( m ) ) &&\n\t\t\t\t\t\t\tcontains( context, elem ) &&\n\t\t\t\t\t\t\telem.id === m ) {\n\n\t\t\t\t\t\t\tresults.push( elem );\n\t\t\t\t\t\t\treturn results;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t// Type selector\n\t\t\t\t} else if ( match[ 2 ] ) {\n\t\t\t\t\tpush.apply( results, context.getElementsByTagName( selector ) );\n\t\t\t\t\treturn results;\n\n\t\t\t\t// Class selector\n\t\t\t\t} else if ( ( m = match[ 3 ] ) && support.getElementsByClassName &&\n\t\t\t\t\tcontext.getElementsByClassName ) {\n\n\t\t\t\t\tpush.apply( results, context.getElementsByClassName( m ) );\n\t\t\t\t\treturn results;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Take advantage of querySelectorAll\n\t\t\tif ( support.qsa &&\n\t\t\t\t!nonnativeSelectorCache[ selector + \" \" ] &&\n\t\t\t\t( !rbuggyQSA || !rbuggyQSA.test( selector ) ) &&\n\n\t\t\t\t// Support: IE 8 only\n\t\t\t\t// Exclude object elements\n\t\t\t\t( nodeType !== 1 || context.nodeName.toLowerCase() !== \"object\" ) ) {\n\n\t\t\t\tnewSelector = selector;\n\t\t\t\tnewContext = context;\n\n\t\t\t\t// qSA considers elements outside a scoping root when evaluating child or\n\t\t\t\t// descendant combinators, which is not what we want.\n\t\t\t\t// In such cases, we work around the behavior by prefixing every selector in the\n\t\t\t\t// list with an ID selector referencing the scope context.\n\t\t\t\t// The technique has to be used as well when a leading combinator is used\n\t\t\t\t// as such selectors are not recognized by querySelectorAll.\n\t\t\t\t// Thanks to Andrew Dupont for this technique.\n\t\t\t\tif ( nodeType === 1 &&\n\t\t\t\t\t( rdescend.test( selector ) || rcombinators.test( selector ) ) ) {\n\n\t\t\t\t\t// Expand context for sibling selectors\n\t\t\t\t\tnewContext = rsibling.test( selector ) && testContext( context.parentNode ) ||\n\t\t\t\t\t\tcontext;\n\n\t\t\t\t\t// We can use :scope instead of the ID hack if the browser\n\t\t\t\t\t// supports it & if we're not changing the context.\n\t\t\t\t\tif ( newContext !== context || !support.scope ) {\n\n\t\t\t\t\t\t// Capture the context ID, setting it first if necessary\n\t\t\t\t\t\tif ( ( nid = context.getAttribute( \"id\" ) ) ) {\n\t\t\t\t\t\t\tnid = nid.replace( rcssescape, fcssescape );\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tcontext.setAttribute( \"id\", ( nid = expando ) );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// Prefix every selector in the list\n\t\t\t\t\tgroups = tokenize( selector );\n\t\t\t\t\ti = groups.length;\n\t\t\t\t\twhile ( i-- ) {\n\t\t\t\t\t\tgroups[ i ] = ( nid ? \"#\" + nid : \":scope\" ) + \" \" +\n\t\t\t\t\t\t\ttoSelector( groups[ i ] );\n\t\t\t\t\t}\n\t\t\t\t\tnewSelector = groups.join( \",\" );\n\t\t\t\t}\n\n\t\t\t\ttry {\n\t\t\t\t\tpush.apply( results,\n\t\t\t\t\t\tnewContext.querySelectorAll( newSelector )\n\t\t\t\t\t);\n\t\t\t\t\treturn results;\n\t\t\t\t} catch ( qsaError ) {\n\t\t\t\t\tnonnativeSelectorCache( selector, true );\n\t\t\t\t} finally {\n\t\t\t\t\tif ( nid === expando ) {\n\t\t\t\t\t\tcontext.removeAttribute( \"id\" );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// All others\n\treturn select( selector.replace( rtrim, \"$1\" ), context, results, seed );\n}\n\n/**\n * Create key-value caches of limited size\n * @returns {function(string, object)} Returns the Object data after storing it on itself with\n *\tproperty name the (space-suffixed) string and (if the cache is larger than Expr.cacheLength)\n *\tdeleting the oldest entry\n */\nfunction createCache() {\n\tvar keys = [];\n\n\tfunction cache( key, value ) {\n\n\t\t// Use (key + \" \") to avoid collision with native prototype properties (see Issue #157)\n\t\tif ( keys.push( key + \" \" ) > Expr.cacheLength ) {\n\n\t\t\t// Only keep the most recent entries\n\t\t\tdelete cache[ keys.shift() ];\n\t\t}\n\t\treturn ( cache[ key + \" \" ] = value );\n\t}\n\treturn cache;\n}\n\n/**\n * Mark a function for special use by Sizzle\n * @param {Function} fn The function to mark\n */\nfunction markFunction( fn ) {\n\tfn[ expando ] = true;\n\treturn fn;\n}\n\n/**\n * Support testing using an element\n * @param {Function} fn Passed the created element and returns a boolean result\n */\nfunction assert( fn ) {\n\tvar el = document.createElement( \"fieldset\" );\n\n\ttry {\n\t\treturn !!fn( el );\n\t} catch ( e ) {\n\t\treturn false;\n\t} finally {\n\n\t\t// Remove from its parent by default\n\t\tif ( el.parentNode ) {\n\t\t\tel.parentNode.removeChild( el );\n\t\t}\n\n\t\t// release memory in IE\n\t\tel = null;\n\t}\n}\n\n/**\n * Adds the same handler for all of the specified attrs\n * @param {String} attrs Pipe-separated list of attributes\n * @param {Function} handler The method that will be applied\n */\nfunction addHandle( attrs, handler ) {\n\tvar arr = attrs.split( \"|\" ),\n\t\ti = arr.length;\n\n\twhile ( i-- ) {\n\t\tExpr.attrHandle[ arr[ i ] ] = handler;\n\t}\n}\n\n/**\n * Checks document order of two siblings\n * @param {Element} a\n * @param {Element} b\n * @returns {Number} Returns less than 0 if a precedes b, greater than 0 if a follows b\n */\nfunction siblingCheck( a, b ) {\n\tvar cur = b && a,\n\t\tdiff = cur && a.nodeType === 1 && b.nodeType === 1 &&\n\t\t\ta.sourceIndex - b.sourceIndex;\n\n\t// Use IE sourceIndex if available on both nodes\n\tif ( diff ) {\n\t\treturn diff;\n\t}\n\n\t// Check if b follows a\n\tif ( cur ) {\n\t\twhile ( ( cur = cur.nextSibling ) ) {\n\t\t\tif ( cur === b ) {\n\t\t\t\treturn -1;\n\t\t\t}\n\t\t}\n\t}\n\n\treturn a ? 1 : -1;\n}\n\n/**\n * Returns a function to use in pseudos for input types\n * @param {String} type\n */\nfunction createInputPseudo( type ) {\n\treturn function( elem ) {\n\t\tvar name = elem.nodeName.toLowerCase();\n\t\treturn name === \"input\" && elem.type === type;\n\t};\n}\n\n/**\n * Returns a function to use in pseudos for buttons\n * @param {String} type\n */\nfunction createButtonPseudo( type ) {\n\treturn function( elem ) {\n\t\tvar name = elem.nodeName.toLowerCase();\n\t\treturn ( name === \"input\" || name === \"button\" ) && elem.type === type;\n\t};\n}\n\n/**\n * Returns a function to use in pseudos for :enabled/:disabled\n * @param {Boolean} disabled true for :disabled; false for :enabled\n */\nfunction createDisabledPseudo( disabled ) {\n\n\t// Known :disabled false positives: fieldset[disabled] > legend:nth-of-type(n+2) :can-disable\n\treturn function( elem ) {\n\n\t\t// Only certain elements can match :enabled or :disabled\n\t\t// https://html.spec.whatwg.org/multipage/scripting.html#selector-enabled\n\t\t// https://html.spec.whatwg.org/multipage/scripting.html#selector-disabled\n\t\tif ( \"form\" in elem ) {\n\n\t\t\t// Check for inherited disabledness on relevant non-disabled elements:\n\t\t\t// * listed form-associated elements in a disabled fieldset\n\t\t\t// https://html.spec.whatwg.org/multipage/forms.html#category-listed\n\t\t\t// https://html.spec.whatwg.org/multipage/forms.html#concept-fe-disabled\n\t\t\t// * option elements in a disabled optgroup\n\t\t\t// https://html.spec.whatwg.org/multipage/forms.html#concept-option-disabled\n\t\t\t// All such elements have a \"form\" property.\n\t\t\tif ( elem.parentNode && elem.disabled === false ) {\n\n\t\t\t\t// Option elements defer to a parent optgroup if present\n\t\t\t\tif ( \"label\" in elem ) {\n\t\t\t\t\tif ( \"label\" in elem.parentNode ) {\n\t\t\t\t\t\treturn elem.parentNode.disabled === disabled;\n\t\t\t\t\t} else {\n\t\t\t\t\t\treturn elem.disabled === disabled;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// Support: IE 6 - 11\n\t\t\t\t// Use the isDisabled shortcut property to check for disabled fieldset ancestors\n\t\t\t\treturn elem.isDisabled === disabled ||\n\n\t\t\t\t\t// Where there is no isDisabled, check manually\n\t\t\t\t\t/* jshint -W018 */\n\t\t\t\t\telem.isDisabled !== !disabled &&\n\t\t\t\t\tinDisabledFieldset( elem ) === disabled;\n\t\t\t}\n\n\t\t\treturn elem.disabled === disabled;\n\n\t\t// Try to winnow out elements that can't be disabled before trusting the disabled property.\n\t\t// Some victims get caught in our net (label, legend, menu, track), but it shouldn't\n\t\t// even exist on them, let alone have a boolean value.\n\t\t} else if ( \"label\" in elem ) {\n\t\t\treturn elem.disabled === disabled;\n\t\t}\n\n\t\t// Remaining elements are neither :enabled nor :disabled\n\t\treturn false;\n\t};\n}\n\n/**\n * Returns a function to use in pseudos for positionals\n * @param {Function} fn\n */\nfunction createPositionalPseudo( fn ) {\n\treturn markFunction( function( argument ) {\n\t\targument = +argument;\n\t\treturn markFunction( function( seed, matches ) {\n\t\t\tvar j,\n\t\t\t\tmatchIndexes = fn( [], seed.length, argument ),\n\t\t\t\ti = matchIndexes.length;\n\n\t\t\t// Match elements found at the specified indexes\n\t\t\twhile ( i-- ) {\n\t\t\t\tif ( seed[ ( j = matchIndexes[ i ] ) ] ) {\n\t\t\t\t\tseed[ j ] = !( matches[ j ] = seed[ j ] );\n\t\t\t\t}\n\t\t\t}\n\t\t} );\n\t} );\n}\n\n/**\n * Checks a node for validity as a Sizzle context\n * @param {Element|Object=} context\n * @returns {Element|Object|Boolean} The input node if acceptable, otherwise a falsy value\n */\nfunction testContext( context ) {\n\treturn context && typeof context.getElementsByTagName !== \"undefined\" && context;\n}\n\n// Expose support vars for convenience\nsupport = Sizzle.support = {};\n\n/**\n * Detects XML nodes\n * @param {Element|Object} elem An element or a document\n * @returns {Boolean} True iff elem is a non-HTML XML node\n */\nisXML = Sizzle.isXML = function( elem ) {\n\tvar namespace = elem && elem.namespaceURI,\n\t\tdocElem = elem && ( elem.ownerDocument || elem ).documentElement;\n\n\t// Support: IE <=8\n\t// Assume HTML when documentElement doesn't yet exist, such as inside loading iframes\n\t// https://bugs.jquery.com/ticket/4833\n\treturn !rhtml.test( namespace || docElem && docElem.nodeName || \"HTML\" );\n};\n\n/**\n * Sets document-related variables once based on the current document\n * @param {Element|Object} [doc] An element or document object to use to set the document\n * @returns {Object} Returns the current document\n */\nsetDocument = Sizzle.setDocument = function( node ) {\n\tvar hasCompare, subWindow,\n\t\tdoc = node ? node.ownerDocument || node : preferredDoc;\n\n\t// Return early if doc is invalid or already selected\n\t// Support: IE 11+, Edge 17 - 18+\n\t// IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n\t// two documents; shallow comparisons work.\n\t// eslint-disable-next-line eqeqeq\n\tif ( doc == document || doc.nodeType !== 9 || !doc.documentElement ) {\n\t\treturn document;\n\t}\n\n\t// Update global variables\n\tdocument = doc;\n\tdocElem = document.documentElement;\n\tdocumentIsHTML = !isXML( document );\n\n\t// Support: IE 9 - 11+, Edge 12 - 18+\n\t// Accessing iframe documents after unload throws \"permission denied\" errors (jQuery #13936)\n\t// Support: IE 11+, Edge 17 - 18+\n\t// IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n\t// two documents; shallow comparisons work.\n\t// eslint-disable-next-line eqeqeq\n\tif ( preferredDoc != document &&\n\t\t( subWindow = document.defaultView ) && subWindow.top !== subWindow ) {\n\n\t\t// Support: IE 11, Edge\n\t\tif ( subWindow.addEventListener ) {\n\t\t\tsubWindow.addEventListener( \"unload\", unloadHandler, false );\n\n\t\t// Support: IE 9 - 10 only\n\t\t} else if ( subWindow.attachEvent ) {\n\t\t\tsubWindow.attachEvent( \"onunload\", unloadHandler );\n\t\t}\n\t}\n\n\t// Support: IE 8 - 11+, Edge 12 - 18+, Chrome <=16 - 25 only, Firefox <=3.6 - 31 only,\n\t// Safari 4 - 5 only, Opera <=11.6 - 12.x only\n\t// IE/Edge & older browsers don't support the :scope pseudo-class.\n\t// Support: Safari 6.0 only\n\t// Safari 6.0 supports :scope but it's an alias of :root there.\n\tsupport.scope = assert( function( el ) {\n\t\tdocElem.appendChild( el ).appendChild( document.createElement( \"div\" ) );\n\t\treturn typeof el.querySelectorAll !== \"undefined\" &&\n\t\t\t!el.querySelectorAll( \":scope fieldset div\" ).length;\n\t} );\n\n\t/* Attributes\n\t---------------------------------------------------------------------- */\n\n\t// Support: IE<8\n\t// Verify that getAttribute really returns attributes and not properties\n\t// (excepting IE8 booleans)\n\tsupport.attributes = assert( function( el ) {\n\t\tel.className = \"i\";\n\t\treturn !el.getAttribute( \"className\" );\n\t} );\n\n\t/* getElement(s)By*\n\t---------------------------------------------------------------------- */\n\n\t// Check if getElementsByTagName(\"*\") returns only elements\n\tsupport.getElementsByTagName = assert( function( el ) {\n\t\tel.appendChild( document.createComment( \"\" ) );\n\t\treturn !el.getElementsByTagName( \"*\" ).length;\n\t} );\n\n\t// Support: IE<9\n\tsupport.getElementsByClassName = rnative.test( document.getElementsByClassName );\n\n\t// Support: IE<10\n\t// Check if getElementById returns elements by name\n\t// The broken getElementById methods don't pick up programmatically-set names,\n\t// so use a roundabout getElementsByName test\n\tsupport.getById = assert( function( el ) {\n\t\tdocElem.appendChild( el ).id = expando;\n\t\treturn !document.getElementsByName || !document.getElementsByName( expando ).length;\n\t} );\n\n\t// ID filter and find\n\tif ( support.getById ) {\n\t\tExpr.filter[ \"ID\" ] = function( id ) {\n\t\t\tvar attrId = id.replace( runescape, funescape );\n\t\t\treturn function( elem ) {\n\t\t\t\treturn elem.getAttribute( \"id\" ) === attrId;\n\t\t\t};\n\t\t};\n\t\tExpr.find[ \"ID\" ] = function( id, context ) {\n\t\t\tif ( typeof context.getElementById !== \"undefined\" && documentIsHTML ) {\n\t\t\t\tvar elem = context.getElementById( id );\n\t\t\t\treturn elem ? [ elem ] : [];\n\t\t\t}\n\t\t};\n\t} else {\n\t\tExpr.filter[ \"ID\" ] = function( id ) {\n\t\t\tvar attrId = id.replace( runescape, funescape );\n\t\t\treturn function( elem ) {\n\t\t\t\tvar node = typeof elem.getAttributeNode !== \"undefined\" &&\n\t\t\t\t\telem.getAttributeNode( \"id\" );\n\t\t\t\treturn node && node.value === attrId;\n\t\t\t};\n\t\t};\n\n\t\t// Support: IE 6 - 7 only\n\t\t// getElementById is not reliable as a find shortcut\n\t\tExpr.find[ \"ID\" ] = function( id, context ) {\n\t\t\tif ( typeof context.getElementById !== \"undefined\" && documentIsHTML ) {\n\t\t\t\tvar node, i, elems,\n\t\t\t\t\telem = context.getElementById( id );\n\n\t\t\t\tif ( elem ) {\n\n\t\t\t\t\t// Verify the id attribute\n\t\t\t\t\tnode = elem.getAttributeNode( \"id\" );\n\t\t\t\t\tif ( node && node.value === id ) {\n\t\t\t\t\t\treturn [ elem ];\n\t\t\t\t\t}\n\n\t\t\t\t\t// Fall back on getElementsByName\n\t\t\t\t\telems = context.getElementsByName( id );\n\t\t\t\t\ti = 0;\n\t\t\t\t\twhile ( ( elem = elems[ i++ ] ) ) {\n\t\t\t\t\t\tnode = elem.getAttributeNode( \"id\" );\n\t\t\t\t\t\tif ( node && node.value === id ) {\n\t\t\t\t\t\t\treturn [ elem ];\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\treturn [];\n\t\t\t}\n\t\t};\n\t}\n\n\t// Tag\n\tExpr.find[ \"TAG\" ] = support.getElementsByTagName ?\n\t\tfunction( tag, context ) {\n\t\t\tif ( typeof context.getElementsByTagName !== \"undefined\" ) {\n\t\t\t\treturn context.getElementsByTagName( tag );\n\n\t\t\t// DocumentFragment nodes don't have gEBTN\n\t\t\t} else if ( support.qsa ) {\n\t\t\t\treturn context.querySelectorAll( tag );\n\t\t\t}\n\t\t} :\n\n\t\tfunction( tag, context ) {\n\t\t\tvar elem,\n\t\t\t\ttmp = [],\n\t\t\t\ti = 0,\n\n\t\t\t\t// By happy coincidence, a (broken) gEBTN appears on DocumentFragment nodes too\n\t\t\t\tresults = context.getElementsByTagName( tag );\n\n\t\t\t// Filter out possible comments\n\t\t\tif ( tag === \"*\" ) {\n\t\t\t\twhile ( ( elem = results[ i++ ] ) ) {\n\t\t\t\t\tif ( elem.nodeType === 1 ) {\n\t\t\t\t\t\ttmp.push( elem );\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\treturn tmp;\n\t\t\t}\n\t\t\treturn results;\n\t\t};\n\n\t// Class\n\tExpr.find[ \"CLASS\" ] = support.getElementsByClassName && function( className, context ) {\n\t\tif ( typeof context.getElementsByClassName !== \"undefined\" && documentIsHTML ) {\n\t\t\treturn context.getElementsByClassName( className );\n\t\t}\n\t};\n\n\t/* QSA/matchesSelector\n\t---------------------------------------------------------------------- */\n\n\t// QSA and matchesSelector support\n\n\t// matchesSelector(:active) reports false when true (IE9/Opera 11.5)\n\trbuggyMatches = [];\n\n\t// qSa(:focus) reports false when true (Chrome 21)\n\t// We allow this because of a bug in IE8/9 that throws an error\n\t// whenever `document.activeElement` is accessed on an iframe\n\t// So, we allow :focus to pass through QSA all the time to avoid the IE error\n\t// See https://bugs.jquery.com/ticket/13378\n\trbuggyQSA = [];\n\n\tif ( ( support.qsa = rnative.test( document.querySelectorAll ) ) ) {\n\n\t\t// Build QSA regex\n\t\t// Regex strategy adopted from Diego Perini\n\t\tassert( function( el ) {\n\n\t\t\tvar input;\n\n\t\t\t// Select is set to empty string on purpose\n\t\t\t// This is to test IE's treatment of not explicitly\n\t\t\t// setting a boolean content attribute,\n\t\t\t// since its presence should be enough\n\t\t\t// https://bugs.jquery.com/ticket/12359\n\t\t\tdocElem.appendChild( el ).innerHTML = \"\" +\n\t\t\t\t\"\";\n\n\t\t\t// Support: IE8, Opera 11-12.16\n\t\t\t// Nothing should be selected when empty strings follow ^= or $= or *=\n\t\t\t// The test attribute must be unknown in Opera but \"safe\" for WinRT\n\t\t\t// https://msdn.microsoft.com/en-us/library/ie/hh465388.aspx#attribute_section\n\t\t\tif ( el.querySelectorAll( \"[msallowcapture^='']\" ).length ) {\n\t\t\t\trbuggyQSA.push( \"[*^$]=\" + whitespace + \"*(?:''|\\\"\\\")\" );\n\t\t\t}\n\n\t\t\t// Support: IE8\n\t\t\t// Boolean attributes and \"value\" are not treated correctly\n\t\t\tif ( !el.querySelectorAll( \"[selected]\" ).length ) {\n\t\t\t\trbuggyQSA.push( \"\\\\[\" + whitespace + \"*(?:value|\" + booleans + \")\" );\n\t\t\t}\n\n\t\t\t// Support: Chrome<29, Android<4.4, Safari<7.0+, iOS<7.0+, PhantomJS<1.9.8+\n\t\t\tif ( !el.querySelectorAll( \"[id~=\" + expando + \"-]\" ).length ) {\n\t\t\t\trbuggyQSA.push( \"~=\" );\n\t\t\t}\n\n\t\t\t// Support: IE 11+, Edge 15 - 18+\n\t\t\t// IE 11/Edge don't find elements on a `[name='']` query in some cases.\n\t\t\t// Adding a temporary attribute to the document before the selection works\n\t\t\t// around the issue.\n\t\t\t// Interestingly, IE 10 & older don't seem to have the issue.\n\t\t\tinput = document.createElement( \"input\" );\n\t\t\tinput.setAttribute( \"name\", \"\" );\n\t\t\tel.appendChild( input );\n\t\t\tif ( !el.querySelectorAll( \"[name='']\" ).length ) {\n\t\t\t\trbuggyQSA.push( \"\\\\[\" + whitespace + \"*name\" + whitespace + \"*=\" +\n\t\t\t\t\twhitespace + \"*(?:''|\\\"\\\")\" );\n\t\t\t}\n\n\t\t\t// Webkit/Opera - :checked should return selected option elements\n\t\t\t// http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked\n\t\t\t// IE8 throws error here and will not see later tests\n\t\t\tif ( !el.querySelectorAll( \":checked\" ).length ) {\n\t\t\t\trbuggyQSA.push( \":checked\" );\n\t\t\t}\n\n\t\t\t// Support: Safari 8+, iOS 8+\n\t\t\t// https://bugs.webkit.org/show_bug.cgi?id=136851\n\t\t\t// In-page `selector#id sibling-combinator selector` fails\n\t\t\tif ( !el.querySelectorAll( \"a#\" + expando + \"+*\" ).length ) {\n\t\t\t\trbuggyQSA.push( \".#.+[+~]\" );\n\t\t\t}\n\n\t\t\t// Support: Firefox <=3.6 - 5 only\n\t\t\t// Old Firefox doesn't throw on a badly-escaped identifier.\n\t\t\tel.querySelectorAll( \"\\\\\\f\" );\n\t\t\trbuggyQSA.push( \"[\\\\r\\\\n\\\\f]\" );\n\t\t} );\n\n\t\tassert( function( el ) {\n\t\t\tel.innerHTML = \"\" +\n\t\t\t\t\"\";\n\n\t\t\t// Support: Windows 8 Native Apps\n\t\t\t// The type and name attributes are restricted during .innerHTML assignment\n\t\t\tvar input = document.createElement( \"input\" );\n\t\t\tinput.setAttribute( \"type\", \"hidden\" );\n\t\t\tel.appendChild( input ).setAttribute( \"name\", \"D\" );\n\n\t\t\t// Support: IE8\n\t\t\t// Enforce case-sensitivity of name attribute\n\t\t\tif ( el.querySelectorAll( \"[name=d]\" ).length ) {\n\t\t\t\trbuggyQSA.push( \"name\" + whitespace + \"*[*^$|!~]?=\" );\n\t\t\t}\n\n\t\t\t// FF 3.5 - :enabled/:disabled and hidden elements (hidden elements are still enabled)\n\t\t\t// IE8 throws error here and will not see later tests\n\t\t\tif ( el.querySelectorAll( \":enabled\" ).length !== 2 ) {\n\t\t\t\trbuggyQSA.push( \":enabled\", \":disabled\" );\n\t\t\t}\n\n\t\t\t// Support: IE9-11+\n\t\t\t// IE's :disabled selector does not pick up the children of disabled fieldsets\n\t\t\tdocElem.appendChild( el ).disabled = true;\n\t\t\tif ( el.querySelectorAll( \":disabled\" ).length !== 2 ) {\n\t\t\t\trbuggyQSA.push( \":enabled\", \":disabled\" );\n\t\t\t}\n\n\t\t\t// Support: Opera 10 - 11 only\n\t\t\t// Opera 10-11 does not throw on post-comma invalid pseudos\n\t\t\tel.querySelectorAll( \"*,:x\" );\n\t\t\trbuggyQSA.push( \",.*:\" );\n\t\t} );\n\t}\n\n\tif ( ( support.matchesSelector = rnative.test( ( matches = docElem.matches ||\n\t\tdocElem.webkitMatchesSelector ||\n\t\tdocElem.mozMatchesSelector ||\n\t\tdocElem.oMatchesSelector ||\n\t\tdocElem.msMatchesSelector ) ) ) ) {\n\n\t\tassert( function( el ) {\n\n\t\t\t// Check to see if it's possible to do matchesSelector\n\t\t\t// on a disconnected node (IE 9)\n\t\t\tsupport.disconnectedMatch = matches.call( el, \"*\" );\n\n\t\t\t// This should fail with an exception\n\t\t\t// Gecko does not error, returns false instead\n\t\t\tmatches.call( el, \"[s!='']:x\" );\n\t\t\trbuggyMatches.push( \"!=\", pseudos );\n\t\t} );\n\t}\n\n\trbuggyQSA = rbuggyQSA.length && new RegExp( rbuggyQSA.join( \"|\" ) );\n\trbuggyMatches = rbuggyMatches.length && new RegExp( rbuggyMatches.join( \"|\" ) );\n\n\t/* Contains\n\t---------------------------------------------------------------------- */\n\thasCompare = rnative.test( docElem.compareDocumentPosition );\n\n\t// Element contains another\n\t// Purposefully self-exclusive\n\t// As in, an element does not contain itself\n\tcontains = hasCompare || rnative.test( docElem.contains ) ?\n\t\tfunction( a, b ) {\n\t\t\tvar adown = a.nodeType === 9 ? a.documentElement : a,\n\t\t\t\tbup = b && b.parentNode;\n\t\t\treturn a === bup || !!( bup && bup.nodeType === 1 && (\n\t\t\t\tadown.contains ?\n\t\t\t\t\tadown.contains( bup ) :\n\t\t\t\t\ta.compareDocumentPosition && a.compareDocumentPosition( bup ) & 16\n\t\t\t) );\n\t\t} :\n\t\tfunction( a, b ) {\n\t\t\tif ( b ) {\n\t\t\t\twhile ( ( b = b.parentNode ) ) {\n\t\t\t\t\tif ( b === a ) {\n\t\t\t\t\t\treturn true;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn false;\n\t\t};\n\n\t/* Sorting\n\t---------------------------------------------------------------------- */\n\n\t// Document order sorting\n\tsortOrder = hasCompare ?\n\tfunction( a, b ) {\n\n\t\t// Flag for duplicate removal\n\t\tif ( a === b ) {\n\t\t\thasDuplicate = true;\n\t\t\treturn 0;\n\t\t}\n\n\t\t// Sort on method existence if only one input has compareDocumentPosition\n\t\tvar compare = !a.compareDocumentPosition - !b.compareDocumentPosition;\n\t\tif ( compare ) {\n\t\t\treturn compare;\n\t\t}\n\n\t\t// Calculate position if both inputs belong to the same document\n\t\t// Support: IE 11+, Edge 17 - 18+\n\t\t// IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n\t\t// two documents; shallow comparisons work.\n\t\t// eslint-disable-next-line eqeqeq\n\t\tcompare = ( a.ownerDocument || a ) == ( b.ownerDocument || b ) ?\n\t\t\ta.compareDocumentPosition( b ) :\n\n\t\t\t// Otherwise we know they are disconnected\n\t\t\t1;\n\n\t\t// Disconnected nodes\n\t\tif ( compare & 1 ||\n\t\t\t( !support.sortDetached && b.compareDocumentPosition( a ) === compare ) ) {\n\n\t\t\t// Choose the first element that is related to our preferred document\n\t\t\t// Support: IE 11+, Edge 17 - 18+\n\t\t\t// IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n\t\t\t// two documents; shallow comparisons work.\n\t\t\t// eslint-disable-next-line eqeqeq\n\t\t\tif ( a == document || a.ownerDocument == preferredDoc &&\n\t\t\t\tcontains( preferredDoc, a ) ) {\n\t\t\t\treturn -1;\n\t\t\t}\n\n\t\t\t// Support: IE 11+, Edge 17 - 18+\n\t\t\t// IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n\t\t\t// two documents; shallow comparisons work.\n\t\t\t// eslint-disable-next-line eqeqeq\n\t\t\tif ( b == document || b.ownerDocument == preferredDoc &&\n\t\t\t\tcontains( preferredDoc, b ) ) {\n\t\t\t\treturn 1;\n\t\t\t}\n\n\t\t\t// Maintain original order\n\t\t\treturn sortInput ?\n\t\t\t\t( indexOf( sortInput, a ) - indexOf( sortInput, b ) ) :\n\t\t\t\t0;\n\t\t}\n\n\t\treturn compare & 4 ? -1 : 1;\n\t} :\n\tfunction( a, b ) {\n\n\t\t// Exit early if the nodes are identical\n\t\tif ( a === b ) {\n\t\t\thasDuplicate = true;\n\t\t\treturn 0;\n\t\t}\n\n\t\tvar cur,\n\t\t\ti = 0,\n\t\t\taup = a.parentNode,\n\t\t\tbup = b.parentNode,\n\t\t\tap = [ a ],\n\t\t\tbp = [ b ];\n\n\t\t// Parentless nodes are either documents or disconnected\n\t\tif ( !aup || !bup ) {\n\n\t\t\t// Support: IE 11+, Edge 17 - 18+\n\t\t\t// IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n\t\t\t// two documents; shallow comparisons work.\n\t\t\t/* eslint-disable eqeqeq */\n\t\t\treturn a == document ? -1 :\n\t\t\t\tb == document ? 1 :\n\t\t\t\t/* eslint-enable eqeqeq */\n\t\t\t\taup ? -1 :\n\t\t\t\tbup ? 1 :\n\t\t\t\tsortInput ?\n\t\t\t\t( indexOf( sortInput, a ) - indexOf( sortInput, b ) ) :\n\t\t\t\t0;\n\n\t\t// If the nodes are siblings, we can do a quick check\n\t\t} else if ( aup === bup ) {\n\t\t\treturn siblingCheck( a, b );\n\t\t}\n\n\t\t// Otherwise we need full lists of their ancestors for comparison\n\t\tcur = a;\n\t\twhile ( ( cur = cur.parentNode ) ) {\n\t\t\tap.unshift( cur );\n\t\t}\n\t\tcur = b;\n\t\twhile ( ( cur = cur.parentNode ) ) {\n\t\t\tbp.unshift( cur );\n\t\t}\n\n\t\t// Walk down the tree looking for a discrepancy\n\t\twhile ( ap[ i ] === bp[ i ] ) {\n\t\t\ti++;\n\t\t}\n\n\t\treturn i ?\n\n\t\t\t// Do a sibling check if the nodes have a common ancestor\n\t\t\tsiblingCheck( ap[ i ], bp[ i ] ) :\n\n\t\t\t// Otherwise nodes in our document sort first\n\t\t\t// Support: IE 11+, Edge 17 - 18+\n\t\t\t// IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n\t\t\t// two documents; shallow comparisons work.\n\t\t\t/* eslint-disable eqeqeq */\n\t\t\tap[ i ] == preferredDoc ? -1 :\n\t\t\tbp[ i ] == preferredDoc ? 1 :\n\t\t\t/* eslint-enable eqeqeq */\n\t\t\t0;\n\t};\n\n\treturn document;\n};\n\nSizzle.matches = function( expr, elements ) {\n\treturn Sizzle( expr, null, null, elements );\n};\n\nSizzle.matchesSelector = function( elem, expr ) {\n\tsetDocument( elem );\n\n\tif ( support.matchesSelector && documentIsHTML &&\n\t\t!nonnativeSelectorCache[ expr + \" \" ] &&\n\t\t( !rbuggyMatches || !rbuggyMatches.test( expr ) ) &&\n\t\t( !rbuggyQSA || !rbuggyQSA.test( expr ) ) ) {\n\n\t\ttry {\n\t\t\tvar ret = matches.call( elem, expr );\n\n\t\t\t// IE 9's matchesSelector returns false on disconnected nodes\n\t\t\tif ( ret || support.disconnectedMatch ||\n\n\t\t\t\t// As well, disconnected nodes are said to be in a document\n\t\t\t\t// fragment in IE 9\n\t\t\t\telem.document && elem.document.nodeType !== 11 ) {\n\t\t\t\treturn ret;\n\t\t\t}\n\t\t} catch ( e ) {\n\t\t\tnonnativeSelectorCache( expr, true );\n\t\t}\n\t}\n\n\treturn Sizzle( expr, document, null, [ elem ] ).length > 0;\n};\n\nSizzle.contains = function( context, elem ) {\n\n\t// Set document vars if needed\n\t// Support: IE 11+, Edge 17 - 18+\n\t// IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n\t// two documents; shallow comparisons work.\n\t// eslint-disable-next-line eqeqeq\n\tif ( ( context.ownerDocument || context ) != document ) {\n\t\tsetDocument( context );\n\t}\n\treturn contains( context, elem );\n};\n\nSizzle.attr = function( elem, name ) {\n\n\t// Set document vars if needed\n\t// Support: IE 11+, Edge 17 - 18+\n\t// IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n\t// two documents; shallow comparisons work.\n\t// eslint-disable-next-line eqeqeq\n\tif ( ( elem.ownerDocument || elem ) != document ) {\n\t\tsetDocument( elem );\n\t}\n\n\tvar fn = Expr.attrHandle[ name.toLowerCase() ],\n\n\t\t// Don't get fooled by Object.prototype properties (jQuery #13807)\n\t\tval = fn && hasOwn.call( Expr.attrHandle, name.toLowerCase() ) ?\n\t\t\tfn( elem, name, !documentIsHTML ) :\n\t\t\tundefined;\n\n\treturn val !== undefined ?\n\t\tval :\n\t\tsupport.attributes || !documentIsHTML ?\n\t\t\telem.getAttribute( name ) :\n\t\t\t( val = elem.getAttributeNode( name ) ) && val.specified ?\n\t\t\t\tval.value :\n\t\t\t\tnull;\n};\n\nSizzle.escape = function( sel ) {\n\treturn ( sel + \"\" ).replace( rcssescape, fcssescape );\n};\n\nSizzle.error = function( msg ) {\n\tthrow new Error( \"Syntax error, unrecognized expression: \" + msg );\n};\n\n/**\n * Document sorting and removing duplicates\n * @param {ArrayLike} results\n */\nSizzle.uniqueSort = function( results ) {\n\tvar elem,\n\t\tduplicates = [],\n\t\tj = 0,\n\t\ti = 0;\n\n\t// Unless we *know* we can detect duplicates, assume their presence\n\thasDuplicate = !support.detectDuplicates;\n\tsortInput = !support.sortStable && results.slice( 0 );\n\tresults.sort( sortOrder );\n\n\tif ( hasDuplicate ) {\n\t\twhile ( ( elem = results[ i++ ] ) ) {\n\t\t\tif ( elem === results[ i ] ) {\n\t\t\t\tj = duplicates.push( i );\n\t\t\t}\n\t\t}\n\t\twhile ( j-- ) {\n\t\t\tresults.splice( duplicates[ j ], 1 );\n\t\t}\n\t}\n\n\t// Clear input after sorting to release objects\n\t// See https://github.com/jquery/sizzle/pull/225\n\tsortInput = null;\n\n\treturn results;\n};\n\n/**\n * Utility function for retrieving the text value of an array of DOM nodes\n * @param {Array|Element} elem\n */\ngetText = Sizzle.getText = function( elem ) {\n\tvar node,\n\t\tret = \"\",\n\t\ti = 0,\n\t\tnodeType = elem.nodeType;\n\n\tif ( !nodeType ) {\n\n\t\t// If no nodeType, this is expected to be an array\n\t\twhile ( ( node = elem[ i++ ] ) ) {\n\n\t\t\t// Do not traverse comment nodes\n\t\t\tret += getText( node );\n\t\t}\n\t} else if ( nodeType === 1 || nodeType === 9 || nodeType === 11 ) {\n\n\t\t// Use textContent for elements\n\t\t// innerText usage removed for consistency of new lines (jQuery #11153)\n\t\tif ( typeof elem.textContent === \"string\" ) {\n\t\t\treturn elem.textContent;\n\t\t} else {\n\n\t\t\t// Traverse its children\n\t\t\tfor ( elem = elem.firstChild; elem; elem = elem.nextSibling ) {\n\t\t\t\tret += getText( elem );\n\t\t\t}\n\t\t}\n\t} else if ( nodeType === 3 || nodeType === 4 ) {\n\t\treturn elem.nodeValue;\n\t}\n\n\t// Do not include comment or processing instruction nodes\n\n\treturn ret;\n};\n\nExpr = Sizzle.selectors = {\n\n\t// Can be adjusted by the user\n\tcacheLength: 50,\n\n\tcreatePseudo: markFunction,\n\n\tmatch: matchExpr,\n\n\tattrHandle: {},\n\n\tfind: {},\n\n\trelative: {\n\t\t\">\": { dir: \"parentNode\", first: true },\n\t\t\" \": { dir: \"parentNode\" },\n\t\t\"+\": { dir: \"previousSibling\", first: true },\n\t\t\"~\": { dir: \"previousSibling\" }\n\t},\n\n\tpreFilter: {\n\t\t\"ATTR\": function( match ) {\n\t\t\tmatch[ 1 ] = match[ 1 ].replace( runescape, funescape );\n\n\t\t\t// Move the given value to match[3] whether quoted or unquoted\n\t\t\tmatch[ 3 ] = ( match[ 3 ] || match[ 4 ] ||\n\t\t\t\tmatch[ 5 ] || \"\" ).replace( runescape, funescape );\n\n\t\t\tif ( match[ 2 ] === \"~=\" ) {\n\t\t\t\tmatch[ 3 ] = \" \" + match[ 3 ] + \" \";\n\t\t\t}\n\n\t\t\treturn match.slice( 0, 4 );\n\t\t},\n\n\t\t\"CHILD\": function( match ) {\n\n\t\t\t/* matches from matchExpr[\"CHILD\"]\n\t\t\t\t1 type (only|nth|...)\n\t\t\t\t2 what (child|of-type)\n\t\t\t\t3 argument (even|odd|\\d*|\\d*n([+-]\\d+)?|...)\n\t\t\t\t4 xn-component of xn+y argument ([+-]?\\d*n|)\n\t\t\t\t5 sign of xn-component\n\t\t\t\t6 x of xn-component\n\t\t\t\t7 sign of y-component\n\t\t\t\t8 y of y-component\n\t\t\t*/\n\t\t\tmatch[ 1 ] = match[ 1 ].toLowerCase();\n\n\t\t\tif ( match[ 1 ].slice( 0, 3 ) === \"nth\" ) {\n\n\t\t\t\t// nth-* requires argument\n\t\t\t\tif ( !match[ 3 ] ) {\n\t\t\t\t\tSizzle.error( match[ 0 ] );\n\t\t\t\t}\n\n\t\t\t\t// numeric x and y parameters for Expr.filter.CHILD\n\t\t\t\t// remember that false/true cast respectively to 0/1\n\t\t\t\tmatch[ 4 ] = +( match[ 4 ] ?\n\t\t\t\t\tmatch[ 5 ] + ( match[ 6 ] || 1 ) :\n\t\t\t\t\t2 * ( match[ 3 ] === \"even\" || match[ 3 ] === \"odd\" ) );\n\t\t\t\tmatch[ 5 ] = +( ( match[ 7 ] + match[ 8 ] ) || match[ 3 ] === \"odd\" );\n\n\t\t\t\t// other types prohibit arguments\n\t\t\t} else if ( match[ 3 ] ) {\n\t\t\t\tSizzle.error( match[ 0 ] );\n\t\t\t}\n\n\t\t\treturn match;\n\t\t},\n\n\t\t\"PSEUDO\": function( match ) {\n\t\t\tvar excess,\n\t\t\t\tunquoted = !match[ 6 ] && match[ 2 ];\n\n\t\t\tif ( matchExpr[ \"CHILD\" ].test( match[ 0 ] ) ) {\n\t\t\t\treturn null;\n\t\t\t}\n\n\t\t\t// Accept quoted arguments as-is\n\t\t\tif ( match[ 3 ] ) {\n\t\t\t\tmatch[ 2 ] = match[ 4 ] || match[ 5 ] || \"\";\n\n\t\t\t// Strip excess characters from unquoted arguments\n\t\t\t} else if ( unquoted && rpseudo.test( unquoted ) &&\n\n\t\t\t\t// Get excess from tokenize (recursively)\n\t\t\t\t( excess = tokenize( unquoted, true ) ) &&\n\n\t\t\t\t// advance to the next closing parenthesis\n\t\t\t\t( excess = unquoted.indexOf( \")\", unquoted.length - excess ) - unquoted.length ) ) {\n\n\t\t\t\t// excess is a negative index\n\t\t\t\tmatch[ 0 ] = match[ 0 ].slice( 0, excess );\n\t\t\t\tmatch[ 2 ] = unquoted.slice( 0, excess );\n\t\t\t}\n\n\t\t\t// Return only captures needed by the pseudo filter method (type and argument)\n\t\t\treturn match.slice( 0, 3 );\n\t\t}\n\t},\n\n\tfilter: {\n\n\t\t\"TAG\": function( nodeNameSelector ) {\n\t\t\tvar nodeName = nodeNameSelector.replace( runescape, funescape ).toLowerCase();\n\t\t\treturn nodeNameSelector === \"*\" ?\n\t\t\t\tfunction() {\n\t\t\t\t\treturn true;\n\t\t\t\t} :\n\t\t\t\tfunction( elem ) {\n\t\t\t\t\treturn elem.nodeName && elem.nodeName.toLowerCase() === nodeName;\n\t\t\t\t};\n\t\t},\n\n\t\t\"CLASS\": function( className ) {\n\t\t\tvar pattern = classCache[ className + \" \" ];\n\n\t\t\treturn pattern ||\n\t\t\t\t( pattern = new RegExp( \"(^|\" + whitespace +\n\t\t\t\t\t\")\" + className + \"(\" + whitespace + \"|$)\" ) ) && classCache(\n\t\t\t\t\t\tclassName, function( elem ) {\n\t\t\t\t\t\t\treturn pattern.test(\n\t\t\t\t\t\t\t\ttypeof elem.className === \"string\" && elem.className ||\n\t\t\t\t\t\t\t\ttypeof elem.getAttribute !== \"undefined\" &&\n\t\t\t\t\t\t\t\t\telem.getAttribute( \"class\" ) ||\n\t\t\t\t\t\t\t\t\"\"\n\t\t\t\t\t\t\t);\n\t\t\t\t} );\n\t\t},\n\n\t\t\"ATTR\": function( name, operator, check ) {\n\t\t\treturn function( elem ) {\n\t\t\t\tvar result = Sizzle.attr( elem, name );\n\n\t\t\t\tif ( result == null ) {\n\t\t\t\t\treturn operator === \"!=\";\n\t\t\t\t}\n\t\t\t\tif ( !operator ) {\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\n\t\t\t\tresult += \"\";\n\n\t\t\t\t/* eslint-disable max-len */\n\n\t\t\t\treturn operator === \"=\" ? result === check :\n\t\t\t\t\toperator === \"!=\" ? result !== check :\n\t\t\t\t\toperator === \"^=\" ? check && result.indexOf( check ) === 0 :\n\t\t\t\t\toperator === \"*=\" ? check && result.indexOf( check ) > -1 :\n\t\t\t\t\toperator === \"$=\" ? check && result.slice( -check.length ) === check :\n\t\t\t\t\toperator === \"~=\" ? ( \" \" + result.replace( rwhitespace, \" \" ) + \" \" ).indexOf( check ) > -1 :\n\t\t\t\t\toperator === \"|=\" ? result === check || result.slice( 0, check.length + 1 ) === check + \"-\" :\n\t\t\t\t\tfalse;\n\t\t\t\t/* eslint-enable max-len */\n\n\t\t\t};\n\t\t},\n\n\t\t\"CHILD\": function( type, what, _argument, first, last ) {\n\t\t\tvar simple = type.slice( 0, 3 ) !== \"nth\",\n\t\t\t\tforward = type.slice( -4 ) !== \"last\",\n\t\t\t\tofType = what === \"of-type\";\n\n\t\t\treturn first === 1 && last === 0 ?\n\n\t\t\t\t// Shortcut for :nth-*(n)\n\t\t\t\tfunction( elem ) {\n\t\t\t\t\treturn !!elem.parentNode;\n\t\t\t\t} :\n\n\t\t\t\tfunction( elem, _context, xml ) {\n\t\t\t\t\tvar cache, uniqueCache, outerCache, node, nodeIndex, start,\n\t\t\t\t\t\tdir = simple !== forward ? \"nextSibling\" : \"previousSibling\",\n\t\t\t\t\t\tparent = elem.parentNode,\n\t\t\t\t\t\tname = ofType && elem.nodeName.toLowerCase(),\n\t\t\t\t\t\tuseCache = !xml && !ofType,\n\t\t\t\t\t\tdiff = false;\n\n\t\t\t\t\tif ( parent ) {\n\n\t\t\t\t\t\t// :(first|last|only)-(child|of-type)\n\t\t\t\t\t\tif ( simple ) {\n\t\t\t\t\t\t\twhile ( dir ) {\n\t\t\t\t\t\t\t\tnode = elem;\n\t\t\t\t\t\t\t\twhile ( ( node = node[ dir ] ) ) {\n\t\t\t\t\t\t\t\t\tif ( ofType ?\n\t\t\t\t\t\t\t\t\t\tnode.nodeName.toLowerCase() === name :\n\t\t\t\t\t\t\t\t\t\tnode.nodeType === 1 ) {\n\n\t\t\t\t\t\t\t\t\t\treturn false;\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t// Reverse direction for :only-* (if we haven't yet done so)\n\t\t\t\t\t\t\t\tstart = dir = type === \"only\" && !start && \"nextSibling\";\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\treturn true;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tstart = [ forward ? parent.firstChild : parent.lastChild ];\n\n\t\t\t\t\t\t// non-xml :nth-child(...) stores cache data on `parent`\n\t\t\t\t\t\tif ( forward && useCache ) {\n\n\t\t\t\t\t\t\t// Seek `elem` from a previously-cached index\n\n\t\t\t\t\t\t\t// ...in a gzip-friendly way\n\t\t\t\t\t\t\tnode = parent;\n\t\t\t\t\t\t\touterCache = node[ expando ] || ( node[ expando ] = {} );\n\n\t\t\t\t\t\t\t// Support: IE <9 only\n\t\t\t\t\t\t\t// Defend against cloned attroperties (jQuery gh-1709)\n\t\t\t\t\t\t\tuniqueCache = outerCache[ node.uniqueID ] ||\n\t\t\t\t\t\t\t\t( outerCache[ node.uniqueID ] = {} );\n\n\t\t\t\t\t\t\tcache = uniqueCache[ type ] || [];\n\t\t\t\t\t\t\tnodeIndex = cache[ 0 ] === dirruns && cache[ 1 ];\n\t\t\t\t\t\t\tdiff = nodeIndex && cache[ 2 ];\n\t\t\t\t\t\t\tnode = nodeIndex && parent.childNodes[ nodeIndex ];\n\n\t\t\t\t\t\t\twhile ( ( node = ++nodeIndex && node && node[ dir ] ||\n\n\t\t\t\t\t\t\t\t// Fallback to seeking `elem` from the start\n\t\t\t\t\t\t\t\t( diff = nodeIndex = 0 ) || start.pop() ) ) {\n\n\t\t\t\t\t\t\t\t// When found, cache indexes on `parent` and break\n\t\t\t\t\t\t\t\tif ( node.nodeType === 1 && ++diff && node === elem ) {\n\t\t\t\t\t\t\t\t\tuniqueCache[ type ] = [ dirruns, nodeIndex, diff ];\n\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t// Use previously-cached element index if available\n\t\t\t\t\t\t\tif ( useCache ) {\n\n\t\t\t\t\t\t\t\t// ...in a gzip-friendly way\n\t\t\t\t\t\t\t\tnode = elem;\n\t\t\t\t\t\t\t\touterCache = node[ expando ] || ( node[ expando ] = {} );\n\n\t\t\t\t\t\t\t\t// Support: IE <9 only\n\t\t\t\t\t\t\t\t// Defend against cloned attroperties (jQuery gh-1709)\n\t\t\t\t\t\t\t\tuniqueCache = outerCache[ node.uniqueID ] ||\n\t\t\t\t\t\t\t\t\t( outerCache[ node.uniqueID ] = {} );\n\n\t\t\t\t\t\t\t\tcache = uniqueCache[ type ] || [];\n\t\t\t\t\t\t\t\tnodeIndex = cache[ 0 ] === dirruns && cache[ 1 ];\n\t\t\t\t\t\t\t\tdiff = nodeIndex;\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t// xml :nth-child(...)\n\t\t\t\t\t\t\t// or :nth-last-child(...) or :nth(-last)?-of-type(...)\n\t\t\t\t\t\t\tif ( diff === false ) {\n\n\t\t\t\t\t\t\t\t// Use the same loop as above to seek `elem` from the start\n\t\t\t\t\t\t\t\twhile ( ( node = ++nodeIndex && node && node[ dir ] ||\n\t\t\t\t\t\t\t\t\t( diff = nodeIndex = 0 ) || start.pop() ) ) {\n\n\t\t\t\t\t\t\t\t\tif ( ( ofType ?\n\t\t\t\t\t\t\t\t\t\tnode.nodeName.toLowerCase() === name :\n\t\t\t\t\t\t\t\t\t\tnode.nodeType === 1 ) &&\n\t\t\t\t\t\t\t\t\t\t++diff ) {\n\n\t\t\t\t\t\t\t\t\t\t// Cache the index of each encountered element\n\t\t\t\t\t\t\t\t\t\tif ( useCache ) {\n\t\t\t\t\t\t\t\t\t\t\touterCache = node[ expando ] ||\n\t\t\t\t\t\t\t\t\t\t\t\t( node[ expando ] = {} );\n\n\t\t\t\t\t\t\t\t\t\t\t// Support: IE <9 only\n\t\t\t\t\t\t\t\t\t\t\t// Defend against cloned attroperties (jQuery gh-1709)\n\t\t\t\t\t\t\t\t\t\t\tuniqueCache = outerCache[ node.uniqueID ] ||\n\t\t\t\t\t\t\t\t\t\t\t\t( outerCache[ node.uniqueID ] = {} );\n\n\t\t\t\t\t\t\t\t\t\t\tuniqueCache[ type ] = [ dirruns, diff ];\n\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\tif ( node === elem ) {\n\t\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Incorporate the offset, then check against cycle size\n\t\t\t\t\t\tdiff -= last;\n\t\t\t\t\t\treturn diff === first || ( diff % first === 0 && diff / first >= 0 );\n\t\t\t\t\t}\n\t\t\t\t};\n\t\t},\n\n\t\t\"PSEUDO\": function( pseudo, argument ) {\n\n\t\t\t// pseudo-class names are case-insensitive\n\t\t\t// http://www.w3.org/TR/selectors/#pseudo-classes\n\t\t\t// Prioritize by case sensitivity in case custom pseudos are added with uppercase letters\n\t\t\t// Remember that setFilters inherits from pseudos\n\t\t\tvar args,\n\t\t\t\tfn = Expr.pseudos[ pseudo ] || Expr.setFilters[ pseudo.toLowerCase() ] ||\n\t\t\t\t\tSizzle.error( \"unsupported pseudo: \" + pseudo );\n\n\t\t\t// The user may use createPseudo to indicate that\n\t\t\t// arguments are needed to create the filter function\n\t\t\t// just as Sizzle does\n\t\t\tif ( fn[ expando ] ) {\n\t\t\t\treturn fn( argument );\n\t\t\t}\n\n\t\t\t// But maintain support for old signatures\n\t\t\tif ( fn.length > 1 ) {\n\t\t\t\targs = [ pseudo, pseudo, \"\", argument ];\n\t\t\t\treturn Expr.setFilters.hasOwnProperty( pseudo.toLowerCase() ) ?\n\t\t\t\t\tmarkFunction( function( seed, matches ) {\n\t\t\t\t\t\tvar idx,\n\t\t\t\t\t\t\tmatched = fn( seed, argument ),\n\t\t\t\t\t\t\ti = matched.length;\n\t\t\t\t\t\twhile ( i-- ) {\n\t\t\t\t\t\t\tidx = indexOf( seed, matched[ i ] );\n\t\t\t\t\t\t\tseed[ idx ] = !( matches[ idx ] = matched[ i ] );\n\t\t\t\t\t\t}\n\t\t\t\t\t} ) :\n\t\t\t\t\tfunction( elem ) {\n\t\t\t\t\t\treturn fn( elem, 0, args );\n\t\t\t\t\t};\n\t\t\t}\n\n\t\t\treturn fn;\n\t\t}\n\t},\n\n\tpseudos: {\n\n\t\t// Potentially complex pseudos\n\t\t\"not\": markFunction( function( selector ) {\n\n\t\t\t// Trim the selector passed to compile\n\t\t\t// to avoid treating leading and trailing\n\t\t\t// spaces as combinators\n\t\t\tvar input = [],\n\t\t\t\tresults = [],\n\t\t\t\tmatcher = compile( selector.replace( rtrim, \"$1\" ) );\n\n\t\t\treturn matcher[ expando ] ?\n\t\t\t\tmarkFunction( function( seed, matches, _context, xml ) {\n\t\t\t\t\tvar elem,\n\t\t\t\t\t\tunmatched = matcher( seed, null, xml, [] ),\n\t\t\t\t\t\ti = seed.length;\n\n\t\t\t\t\t// Match elements unmatched by `matcher`\n\t\t\t\t\twhile ( i-- ) {\n\t\t\t\t\t\tif ( ( elem = unmatched[ i ] ) ) {\n\t\t\t\t\t\t\tseed[ i ] = !( matches[ i ] = elem );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t} ) :\n\t\t\t\tfunction( elem, _context, xml ) {\n\t\t\t\t\tinput[ 0 ] = elem;\n\t\t\t\t\tmatcher( input, null, xml, results );\n\n\t\t\t\t\t// Don't keep the element (issue #299)\n\t\t\t\t\tinput[ 0 ] = null;\n\t\t\t\t\treturn !results.pop();\n\t\t\t\t};\n\t\t} ),\n\n\t\t\"has\": markFunction( function( selector ) {\n\t\t\treturn function( elem ) {\n\t\t\t\treturn Sizzle( selector, elem ).length > 0;\n\t\t\t};\n\t\t} ),\n\n\t\t\"contains\": markFunction( function( text ) {\n\t\t\ttext = text.replace( runescape, funescape );\n\t\t\treturn function( elem ) {\n\t\t\t\treturn ( elem.textContent || getText( elem ) ).indexOf( text ) > -1;\n\t\t\t};\n\t\t} ),\n\n\t\t// \"Whether an element is represented by a :lang() selector\n\t\t// is based solely on the element's language value\n\t\t// being equal to the identifier C,\n\t\t// or beginning with the identifier C immediately followed by \"-\".\n\t\t// The matching of C against the element's language value is performed case-insensitively.\n\t\t// The identifier C does not have to be a valid language name.\"\n\t\t// http://www.w3.org/TR/selectors/#lang-pseudo\n\t\t\"lang\": markFunction( function( lang ) {\n\n\t\t\t// lang value must be a valid identifier\n\t\t\tif ( !ridentifier.test( lang || \"\" ) ) {\n\t\t\t\tSizzle.error( \"unsupported lang: \" + lang );\n\t\t\t}\n\t\t\tlang = lang.replace( runescape, funescape ).toLowerCase();\n\t\t\treturn function( elem ) {\n\t\t\t\tvar elemLang;\n\t\t\t\tdo {\n\t\t\t\t\tif ( ( elemLang = documentIsHTML ?\n\t\t\t\t\t\telem.lang :\n\t\t\t\t\t\telem.getAttribute( \"xml:lang\" ) || elem.getAttribute( \"lang\" ) ) ) {\n\n\t\t\t\t\t\telemLang = elemLang.toLowerCase();\n\t\t\t\t\t\treturn elemLang === lang || elemLang.indexOf( lang + \"-\" ) === 0;\n\t\t\t\t\t}\n\t\t\t\t} while ( ( elem = elem.parentNode ) && elem.nodeType === 1 );\n\t\t\t\treturn false;\n\t\t\t};\n\t\t} ),\n\n\t\t// Miscellaneous\n\t\t\"target\": function( elem ) {\n\t\t\tvar hash = window.location && window.location.hash;\n\t\t\treturn hash && hash.slice( 1 ) === elem.id;\n\t\t},\n\n\t\t\"root\": function( elem ) {\n\t\t\treturn elem === docElem;\n\t\t},\n\n\t\t\"focus\": function( elem ) {\n\t\t\treturn elem === document.activeElement &&\n\t\t\t\t( !document.hasFocus || document.hasFocus() ) &&\n\t\t\t\t!!( elem.type || elem.href || ~elem.tabIndex );\n\t\t},\n\n\t\t// Boolean properties\n\t\t\"enabled\": createDisabledPseudo( false ),\n\t\t\"disabled\": createDisabledPseudo( true ),\n\n\t\t\"checked\": function( elem ) {\n\n\t\t\t// In CSS3, :checked should return both checked and selected elements\n\t\t\t// http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked\n\t\t\tvar nodeName = elem.nodeName.toLowerCase();\n\t\t\treturn ( nodeName === \"input\" && !!elem.checked ) ||\n\t\t\t\t( nodeName === \"option\" && !!elem.selected );\n\t\t},\n\n\t\t\"selected\": function( elem ) {\n\n\t\t\t// Accessing this property makes selected-by-default\n\t\t\t// options in Safari work properly\n\t\t\tif ( elem.parentNode ) {\n\t\t\t\t// eslint-disable-next-line no-unused-expressions\n\t\t\t\telem.parentNode.selectedIndex;\n\t\t\t}\n\n\t\t\treturn elem.selected === true;\n\t\t},\n\n\t\t// Contents\n\t\t\"empty\": function( elem ) {\n\n\t\t\t// http://www.w3.org/TR/selectors/#empty-pseudo\n\t\t\t// :empty is negated by element (1) or content nodes (text: 3; cdata: 4; entity ref: 5),\n\t\t\t// but not by others (comment: 8; processing instruction: 7; etc.)\n\t\t\t// nodeType < 6 works because attributes (2) do not appear as children\n\t\t\tfor ( elem = elem.firstChild; elem; elem = elem.nextSibling ) {\n\t\t\t\tif ( elem.nodeType < 6 ) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn true;\n\t\t},\n\n\t\t\"parent\": function( elem ) {\n\t\t\treturn !Expr.pseudos[ \"empty\" ]( elem );\n\t\t},\n\n\t\t// Element/input types\n\t\t\"header\": function( elem ) {\n\t\t\treturn rheader.test( elem.nodeName );\n\t\t},\n\n\t\t\"input\": function( elem ) {\n\t\t\treturn rinputs.test( elem.nodeName );\n\t\t},\n\n\t\t\"button\": function( elem ) {\n\t\t\tvar name = elem.nodeName.toLowerCase();\n\t\t\treturn name === \"input\" && elem.type === \"button\" || name === \"button\";\n\t\t},\n\n\t\t\"text\": function( elem ) {\n\t\t\tvar attr;\n\t\t\treturn elem.nodeName.toLowerCase() === \"input\" &&\n\t\t\t\telem.type === \"text\" &&\n\n\t\t\t\t// Support: IE<8\n\t\t\t\t// New HTML5 attribute values (e.g., \"search\") appear with elem.type === \"text\"\n\t\t\t\t( ( attr = elem.getAttribute( \"type\" ) ) == null ||\n\t\t\t\t\tattr.toLowerCase() === \"text\" );\n\t\t},\n\n\t\t// Position-in-collection\n\t\t\"first\": createPositionalPseudo( function() {\n\t\t\treturn [ 0 ];\n\t\t} ),\n\n\t\t\"last\": createPositionalPseudo( function( _matchIndexes, length ) {\n\t\t\treturn [ length - 1 ];\n\t\t} ),\n\n\t\t\"eq\": createPositionalPseudo( function( _matchIndexes, length, argument ) {\n\t\t\treturn [ argument < 0 ? argument + length : argument ];\n\t\t} ),\n\n\t\t\"even\": createPositionalPseudo( function( matchIndexes, length ) {\n\t\t\tvar i = 0;\n\t\t\tfor ( ; i < length; i += 2 ) {\n\t\t\t\tmatchIndexes.push( i );\n\t\t\t}\n\t\t\treturn matchIndexes;\n\t\t} ),\n\n\t\t\"odd\": createPositionalPseudo( function( matchIndexes, length ) {\n\t\t\tvar i = 1;\n\t\t\tfor ( ; i < length; i += 2 ) {\n\t\t\t\tmatchIndexes.push( i );\n\t\t\t}\n\t\t\treturn matchIndexes;\n\t\t} ),\n\n\t\t\"lt\": createPositionalPseudo( function( matchIndexes, length, argument ) {\n\t\t\tvar i = argument < 0 ?\n\t\t\t\targument + length :\n\t\t\t\targument > length ?\n\t\t\t\t\tlength :\n\t\t\t\t\targument;\n\t\t\tfor ( ; --i >= 0; ) {\n\t\t\t\tmatchIndexes.push( i );\n\t\t\t}\n\t\t\treturn matchIndexes;\n\t\t} ),\n\n\t\t\"gt\": createPositionalPseudo( function( matchIndexes, length, argument ) {\n\t\t\tvar i = argument < 0 ? argument + length : argument;\n\t\t\tfor ( ; ++i < length; ) {\n\t\t\t\tmatchIndexes.push( i );\n\t\t\t}\n\t\t\treturn matchIndexes;\n\t\t} )\n\t}\n};\n\nExpr.pseudos[ \"nth\" ] = Expr.pseudos[ \"eq\" ];\n\n// Add button/input type pseudos\nfor ( i in { radio: true, checkbox: true, file: true, password: true, image: true } ) {\n\tExpr.pseudos[ i ] = createInputPseudo( i );\n}\nfor ( i in { submit: true, reset: true } ) {\n\tExpr.pseudos[ i ] = createButtonPseudo( i );\n}\n\n// Easy API for creating new setFilters\nfunction setFilters() {}\nsetFilters.prototype = Expr.filters = Expr.pseudos;\nExpr.setFilters = new setFilters();\n\ntokenize = Sizzle.tokenize = function( selector, parseOnly ) {\n\tvar matched, match, tokens, type,\n\t\tsoFar, groups, preFilters,\n\t\tcached = tokenCache[ selector + \" \" ];\n\n\tif ( cached ) {\n\t\treturn parseOnly ? 0 : cached.slice( 0 );\n\t}\n\n\tsoFar = selector;\n\tgroups = [];\n\tpreFilters = Expr.preFilter;\n\n\twhile ( soFar ) {\n\n\t\t// Comma and first run\n\t\tif ( !matched || ( match = rcomma.exec( soFar ) ) ) {\n\t\t\tif ( match ) {\n\n\t\t\t\t// Don't consume trailing commas as valid\n\t\t\t\tsoFar = soFar.slice( match[ 0 ].length ) || soFar;\n\t\t\t}\n\t\t\tgroups.push( ( tokens = [] ) );\n\t\t}\n\n\t\tmatched = false;\n\n\t\t// Combinators\n\t\tif ( ( match = rcombinators.exec( soFar ) ) ) {\n\t\t\tmatched = match.shift();\n\t\t\ttokens.push( {\n\t\t\t\tvalue: matched,\n\n\t\t\t\t// Cast descendant combinators to space\n\t\t\t\ttype: match[ 0 ].replace( rtrim, \" \" )\n\t\t\t} );\n\t\t\tsoFar = soFar.slice( matched.length );\n\t\t}\n\n\t\t// Filters\n\t\tfor ( type in Expr.filter ) {\n\t\t\tif ( ( match = matchExpr[ type ].exec( soFar ) ) && ( !preFilters[ type ] ||\n\t\t\t\t( match = preFilters[ type ]( match ) ) ) ) {\n\t\t\t\tmatched = match.shift();\n\t\t\t\ttokens.push( {\n\t\t\t\t\tvalue: matched,\n\t\t\t\t\ttype: type,\n\t\t\t\t\tmatches: match\n\t\t\t\t} );\n\t\t\t\tsoFar = soFar.slice( matched.length );\n\t\t\t}\n\t\t}\n\n\t\tif ( !matched ) {\n\t\t\tbreak;\n\t\t}\n\t}\n\n\t// Return the length of the invalid excess\n\t// if we're just parsing\n\t// Otherwise, throw an error or return tokens\n\treturn parseOnly ?\n\t\tsoFar.length :\n\t\tsoFar ?\n\t\t\tSizzle.error( selector ) :\n\n\t\t\t// Cache the tokens\n\t\t\ttokenCache( selector, groups ).slice( 0 );\n};\n\nfunction toSelector( tokens ) {\n\tvar i = 0,\n\t\tlen = tokens.length,\n\t\tselector = \"\";\n\tfor ( ; i < len; i++ ) {\n\t\tselector += tokens[ i ].value;\n\t}\n\treturn selector;\n}\n\nfunction addCombinator( matcher, combinator, base ) {\n\tvar dir = combinator.dir,\n\t\tskip = combinator.next,\n\t\tkey = skip || dir,\n\t\tcheckNonElements = base && key === \"parentNode\",\n\t\tdoneName = done++;\n\n\treturn combinator.first ?\n\n\t\t// Check against closest ancestor/preceding element\n\t\tfunction( elem, context, xml ) {\n\t\t\twhile ( ( elem = elem[ dir ] ) ) {\n\t\t\t\tif ( elem.nodeType === 1 || checkNonElements ) {\n\t\t\t\t\treturn matcher( elem, context, xml );\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn false;\n\t\t} :\n\n\t\t// Check against all ancestor/preceding elements\n\t\tfunction( elem, context, xml ) {\n\t\t\tvar oldCache, uniqueCache, outerCache,\n\t\t\t\tnewCache = [ dirruns, doneName ];\n\n\t\t\t// We can't set arbitrary data on XML nodes, so they don't benefit from combinator caching\n\t\t\tif ( xml ) {\n\t\t\t\twhile ( ( elem = elem[ dir ] ) ) {\n\t\t\t\t\tif ( elem.nodeType === 1 || checkNonElements ) {\n\t\t\t\t\t\tif ( matcher( elem, context, xml ) ) {\n\t\t\t\t\t\t\treturn true;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\twhile ( ( elem = elem[ dir ] ) ) {\n\t\t\t\t\tif ( elem.nodeType === 1 || checkNonElements ) {\n\t\t\t\t\t\touterCache = elem[ expando ] || ( elem[ expando ] = {} );\n\n\t\t\t\t\t\t// Support: IE <9 only\n\t\t\t\t\t\t// Defend against cloned attroperties (jQuery gh-1709)\n\t\t\t\t\t\tuniqueCache = outerCache[ elem.uniqueID ] ||\n\t\t\t\t\t\t\t( outerCache[ elem.uniqueID ] = {} );\n\n\t\t\t\t\t\tif ( skip && skip === elem.nodeName.toLowerCase() ) {\n\t\t\t\t\t\t\telem = elem[ dir ] || elem;\n\t\t\t\t\t\t} else if ( ( oldCache = uniqueCache[ key ] ) &&\n\t\t\t\t\t\t\toldCache[ 0 ] === dirruns && oldCache[ 1 ] === doneName ) {\n\n\t\t\t\t\t\t\t// Assign to newCache so results back-propagate to previous elements\n\t\t\t\t\t\t\treturn ( newCache[ 2 ] = oldCache[ 2 ] );\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t// Reuse newcache so results back-propagate to previous elements\n\t\t\t\t\t\t\tuniqueCache[ key ] = newCache;\n\n\t\t\t\t\t\t\t// A match means we're done; a fail means we have to keep checking\n\t\t\t\t\t\t\tif ( ( newCache[ 2 ] = matcher( elem, context, xml ) ) ) {\n\t\t\t\t\t\t\t\treturn true;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn false;\n\t\t};\n}\n\nfunction elementMatcher( matchers ) {\n\treturn matchers.length > 1 ?\n\t\tfunction( elem, context, xml ) {\n\t\t\tvar i = matchers.length;\n\t\t\twhile ( i-- ) {\n\t\t\t\tif ( !matchers[ i ]( elem, context, xml ) ) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn true;\n\t\t} :\n\t\tmatchers[ 0 ];\n}\n\nfunction multipleContexts( selector, contexts, results ) {\n\tvar i = 0,\n\t\tlen = contexts.length;\n\tfor ( ; i < len; i++ ) {\n\t\tSizzle( selector, contexts[ i ], results );\n\t}\n\treturn results;\n}\n\nfunction condense( unmatched, map, filter, context, xml ) {\n\tvar elem,\n\t\tnewUnmatched = [],\n\t\ti = 0,\n\t\tlen = unmatched.length,\n\t\tmapped = map != null;\n\n\tfor ( ; i < len; i++ ) {\n\t\tif ( ( elem = unmatched[ i ] ) ) {\n\t\t\tif ( !filter || filter( elem, context, xml ) ) {\n\t\t\t\tnewUnmatched.push( elem );\n\t\t\t\tif ( mapped ) {\n\t\t\t\t\tmap.push( i );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn newUnmatched;\n}\n\nfunction setMatcher( preFilter, selector, matcher, postFilter, postFinder, postSelector ) {\n\tif ( postFilter && !postFilter[ expando ] ) {\n\t\tpostFilter = setMatcher( postFilter );\n\t}\n\tif ( postFinder && !postFinder[ expando ] ) {\n\t\tpostFinder = setMatcher( postFinder, postSelector );\n\t}\n\treturn markFunction( function( seed, results, context, xml ) {\n\t\tvar temp, i, elem,\n\t\t\tpreMap = [],\n\t\t\tpostMap = [],\n\t\t\tpreexisting = results.length,\n\n\t\t\t// Get initial elements from seed or context\n\t\t\telems = seed || multipleContexts(\n\t\t\t\tselector || \"*\",\n\t\t\t\tcontext.nodeType ? [ context ] : context,\n\t\t\t\t[]\n\t\t\t),\n\n\t\t\t// Prefilter to get matcher input, preserving a map for seed-results synchronization\n\t\t\tmatcherIn = preFilter && ( seed || !selector ) ?\n\t\t\t\tcondense( elems, preMap, preFilter, context, xml ) :\n\t\t\t\telems,\n\n\t\t\tmatcherOut = matcher ?\n\n\t\t\t\t// If we have a postFinder, or filtered seed, or non-seed postFilter or preexisting results,\n\t\t\t\tpostFinder || ( seed ? preFilter : preexisting || postFilter ) ?\n\n\t\t\t\t\t// ...intermediate processing is necessary\n\t\t\t\t\t[] :\n\n\t\t\t\t\t// ...otherwise use results directly\n\t\t\t\t\tresults :\n\t\t\t\tmatcherIn;\n\n\t\t// Find primary matches\n\t\tif ( matcher ) {\n\t\t\tmatcher( matcherIn, matcherOut, context, xml );\n\t\t}\n\n\t\t// Apply postFilter\n\t\tif ( postFilter ) {\n\t\t\ttemp = condense( matcherOut, postMap );\n\t\t\tpostFilter( temp, [], context, xml );\n\n\t\t\t// Un-match failing elements by moving them back to matcherIn\n\t\t\ti = temp.length;\n\t\t\twhile ( i-- ) {\n\t\t\t\tif ( ( elem = temp[ i ] ) ) {\n\t\t\t\t\tmatcherOut[ postMap[ i ] ] = !( matcherIn[ postMap[ i ] ] = elem );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tif ( seed ) {\n\t\t\tif ( postFinder || preFilter ) {\n\t\t\t\tif ( postFinder ) {\n\n\t\t\t\t\t// Get the final matcherOut by condensing this intermediate into postFinder contexts\n\t\t\t\t\ttemp = [];\n\t\t\t\t\ti = matcherOut.length;\n\t\t\t\t\twhile ( i-- ) {\n\t\t\t\t\t\tif ( ( elem = matcherOut[ i ] ) ) {\n\n\t\t\t\t\t\t\t// Restore matcherIn since elem is not yet a final match\n\t\t\t\t\t\t\ttemp.push( ( matcherIn[ i ] = elem ) );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tpostFinder( null, ( matcherOut = [] ), temp, xml );\n\t\t\t\t}\n\n\t\t\t\t// Move matched elements from seed to results to keep them synchronized\n\t\t\t\ti = matcherOut.length;\n\t\t\t\twhile ( i-- ) {\n\t\t\t\t\tif ( ( elem = matcherOut[ i ] ) &&\n\t\t\t\t\t\t( temp = postFinder ? indexOf( seed, elem ) : preMap[ i ] ) > -1 ) {\n\n\t\t\t\t\t\tseed[ temp ] = !( results[ temp ] = elem );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t// Add elements to results, through postFinder if defined\n\t\t} else {\n\t\t\tmatcherOut = condense(\n\t\t\t\tmatcherOut === results ?\n\t\t\t\t\tmatcherOut.splice( preexisting, matcherOut.length ) :\n\t\t\t\t\tmatcherOut\n\t\t\t);\n\t\t\tif ( postFinder ) {\n\t\t\t\tpostFinder( null, results, matcherOut, xml );\n\t\t\t} else {\n\t\t\t\tpush.apply( results, matcherOut );\n\t\t\t}\n\t\t}\n\t} );\n}\n\nfunction matcherFromTokens( tokens ) {\n\tvar checkContext, matcher, j,\n\t\tlen = tokens.length,\n\t\tleadingRelative = Expr.relative[ tokens[ 0 ].type ],\n\t\timplicitRelative = leadingRelative || Expr.relative[ \" \" ],\n\t\ti = leadingRelative ? 1 : 0,\n\n\t\t// The foundational matcher ensures that elements are reachable from top-level context(s)\n\t\tmatchContext = addCombinator( function( elem ) {\n\t\t\treturn elem === checkContext;\n\t\t}, implicitRelative, true ),\n\t\tmatchAnyContext = addCombinator( function( elem ) {\n\t\t\treturn indexOf( checkContext, elem ) > -1;\n\t\t}, implicitRelative, true ),\n\t\tmatchers = [ function( elem, context, xml ) {\n\t\t\tvar ret = ( !leadingRelative && ( xml || context !== outermostContext ) ) || (\n\t\t\t\t( checkContext = context ).nodeType ?\n\t\t\t\t\tmatchContext( elem, context, xml ) :\n\t\t\t\t\tmatchAnyContext( elem, context, xml ) );\n\n\t\t\t// Avoid hanging onto element (issue #299)\n\t\t\tcheckContext = null;\n\t\t\treturn ret;\n\t\t} ];\n\n\tfor ( ; i < len; i++ ) {\n\t\tif ( ( matcher = Expr.relative[ tokens[ i ].type ] ) ) {\n\t\t\tmatchers = [ addCombinator( elementMatcher( matchers ), matcher ) ];\n\t\t} else {\n\t\t\tmatcher = Expr.filter[ tokens[ i ].type ].apply( null, tokens[ i ].matches );\n\n\t\t\t// Return special upon seeing a positional matcher\n\t\t\tif ( matcher[ expando ] ) {\n\n\t\t\t\t// Find the next relative operator (if any) for proper handling\n\t\t\t\tj = ++i;\n\t\t\t\tfor ( ; j < len; j++ ) {\n\t\t\t\t\tif ( Expr.relative[ tokens[ j ].type ] ) {\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn setMatcher(\n\t\t\t\t\ti > 1 && elementMatcher( matchers ),\n\t\t\t\t\ti > 1 && toSelector(\n\n\t\t\t\t\t// If the preceding token was a descendant combinator, insert an implicit any-element `*`\n\t\t\t\t\ttokens\n\t\t\t\t\t\t.slice( 0, i - 1 )\n\t\t\t\t\t\t.concat( { value: tokens[ i - 2 ].type === \" \" ? \"*\" : \"\" } )\n\t\t\t\t\t).replace( rtrim, \"$1\" ),\n\t\t\t\t\tmatcher,\n\t\t\t\t\ti < j && matcherFromTokens( tokens.slice( i, j ) ),\n\t\t\t\t\tj < len && matcherFromTokens( ( tokens = tokens.slice( j ) ) ),\n\t\t\t\t\tj < len && toSelector( tokens )\n\t\t\t\t);\n\t\t\t}\n\t\t\tmatchers.push( matcher );\n\t\t}\n\t}\n\n\treturn elementMatcher( matchers );\n}\n\nfunction matcherFromGroupMatchers( elementMatchers, setMatchers ) {\n\tvar bySet = setMatchers.length > 0,\n\t\tbyElement = elementMatchers.length > 0,\n\t\tsuperMatcher = function( seed, context, xml, results, outermost ) {\n\t\t\tvar elem, j, matcher,\n\t\t\t\tmatchedCount = 0,\n\t\t\t\ti = \"0\",\n\t\t\t\tunmatched = seed && [],\n\t\t\t\tsetMatched = [],\n\t\t\t\tcontextBackup = outermostContext,\n\n\t\t\t\t// We must always have either seed elements or outermost context\n\t\t\t\telems = seed || byElement && Expr.find[ \"TAG\" ]( \"*\", outermost ),\n\n\t\t\t\t// Use integer dirruns iff this is the outermost matcher\n\t\t\t\tdirrunsUnique = ( dirruns += contextBackup == null ? 1 : Math.random() || 0.1 ),\n\t\t\t\tlen = elems.length;\n\n\t\t\tif ( outermost ) {\n\n\t\t\t\t// Support: IE 11+, Edge 17 - 18+\n\t\t\t\t// IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n\t\t\t\t// two documents; shallow comparisons work.\n\t\t\t\t// eslint-disable-next-line eqeqeq\n\t\t\t\toutermostContext = context == document || context || outermost;\n\t\t\t}\n\n\t\t\t// Add elements passing elementMatchers directly to results\n\t\t\t// Support: IE<9, Safari\n\t\t\t// Tolerate NodeList properties (IE: \"length\"; Safari: ) matching elements by id\n\t\t\tfor ( ; i !== len && ( elem = elems[ i ] ) != null; i++ ) {\n\t\t\t\tif ( byElement && elem ) {\n\t\t\t\t\tj = 0;\n\n\t\t\t\t\t// Support: IE 11+, Edge 17 - 18+\n\t\t\t\t\t// IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n\t\t\t\t\t// two documents; shallow comparisons work.\n\t\t\t\t\t// eslint-disable-next-line eqeqeq\n\t\t\t\t\tif ( !context && elem.ownerDocument != document ) {\n\t\t\t\t\t\tsetDocument( elem );\n\t\t\t\t\t\txml = !documentIsHTML;\n\t\t\t\t\t}\n\t\t\t\t\twhile ( ( matcher = elementMatchers[ j++ ] ) ) {\n\t\t\t\t\t\tif ( matcher( elem, context || document, xml ) ) {\n\t\t\t\t\t\t\tresults.push( elem );\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tif ( outermost ) {\n\t\t\t\t\t\tdirruns = dirrunsUnique;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// Track unmatched elements for set filters\n\t\t\t\tif ( bySet ) {\n\n\t\t\t\t\t// They will have gone through all possible matchers\n\t\t\t\t\tif ( ( elem = !matcher && elem ) ) {\n\t\t\t\t\t\tmatchedCount--;\n\t\t\t\t\t}\n\n\t\t\t\t\t// Lengthen the array for every element, matched or not\n\t\t\t\t\tif ( seed ) {\n\t\t\t\t\t\tunmatched.push( elem );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// `i` is now the count of elements visited above, and adding it to `matchedCount`\n\t\t\t// makes the latter nonnegative.\n\t\t\tmatchedCount += i;\n\n\t\t\t// Apply set filters to unmatched elements\n\t\t\t// NOTE: This can be skipped if there are no unmatched elements (i.e., `matchedCount`\n\t\t\t// equals `i`), unless we didn't visit _any_ elements in the above loop because we have\n\t\t\t// no element matchers and no seed.\n\t\t\t// Incrementing an initially-string \"0\" `i` allows `i` to remain a string only in that\n\t\t\t// case, which will result in a \"00\" `matchedCount` that differs from `i` but is also\n\t\t\t// numerically zero.\n\t\t\tif ( bySet && i !== matchedCount ) {\n\t\t\t\tj = 0;\n\t\t\t\twhile ( ( matcher = setMatchers[ j++ ] ) ) {\n\t\t\t\t\tmatcher( unmatched, setMatched, context, xml );\n\t\t\t\t}\n\n\t\t\t\tif ( seed ) {\n\n\t\t\t\t\t// Reintegrate element matches to eliminate the need for sorting\n\t\t\t\t\tif ( matchedCount > 0 ) {\n\t\t\t\t\t\twhile ( i-- ) {\n\t\t\t\t\t\t\tif ( !( unmatched[ i ] || setMatched[ i ] ) ) {\n\t\t\t\t\t\t\t\tsetMatched[ i ] = pop.call( results );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// Discard index placeholder values to get only actual matches\n\t\t\t\t\tsetMatched = condense( setMatched );\n\t\t\t\t}\n\n\t\t\t\t// Add matches to results\n\t\t\t\tpush.apply( results, setMatched );\n\n\t\t\t\t// Seedless set matches succeeding multiple successful matchers stipulate sorting\n\t\t\t\tif ( outermost && !seed && setMatched.length > 0 &&\n\t\t\t\t\t( matchedCount + setMatchers.length ) > 1 ) {\n\n\t\t\t\t\tSizzle.uniqueSort( results );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Override manipulation of globals by nested matchers\n\t\t\tif ( outermost ) {\n\t\t\t\tdirruns = dirrunsUnique;\n\t\t\t\toutermostContext = contextBackup;\n\t\t\t}\n\n\t\t\treturn unmatched;\n\t\t};\n\n\treturn bySet ?\n\t\tmarkFunction( superMatcher ) :\n\t\tsuperMatcher;\n}\n\ncompile = Sizzle.compile = function( selector, match /* Internal Use Only */ ) {\n\tvar i,\n\t\tsetMatchers = [],\n\t\telementMatchers = [],\n\t\tcached = compilerCache[ selector + \" \" ];\n\n\tif ( !cached ) {\n\n\t\t// Generate a function of recursive functions that can be used to check each element\n\t\tif ( !match ) {\n\t\t\tmatch = tokenize( selector );\n\t\t}\n\t\ti = match.length;\n\t\twhile ( i-- ) {\n\t\t\tcached = matcherFromTokens( match[ i ] );\n\t\t\tif ( cached[ expando ] ) {\n\t\t\t\tsetMatchers.push( cached );\n\t\t\t} else {\n\t\t\t\telementMatchers.push( cached );\n\t\t\t}\n\t\t}\n\n\t\t// Cache the compiled function\n\t\tcached = compilerCache(\n\t\t\tselector,\n\t\t\tmatcherFromGroupMatchers( elementMatchers, setMatchers )\n\t\t);\n\n\t\t// Save selector and tokenization\n\t\tcached.selector = selector;\n\t}\n\treturn cached;\n};\n\n/**\n * A low-level selection function that works with Sizzle's compiled\n * selector functions\n * @param {String|Function} selector A selector or a pre-compiled\n * selector function built with Sizzle.compile\n * @param {Element} context\n * @param {Array} [results]\n * @param {Array} [seed] A set of elements to match against\n */\nselect = Sizzle.select = function( selector, context, results, seed ) {\n\tvar i, tokens, token, type, find,\n\t\tcompiled = typeof selector === \"function\" && selector,\n\t\tmatch = !seed && tokenize( ( selector = compiled.selector || selector ) );\n\n\tresults = results || [];\n\n\t// Try to minimize operations if there is only one selector in the list and no seed\n\t// (the latter of which guarantees us context)\n\tif ( match.length === 1 ) {\n\n\t\t// Reduce context if the leading compound selector is an ID\n\t\ttokens = match[ 0 ] = match[ 0 ].slice( 0 );\n\t\tif ( tokens.length > 2 && ( token = tokens[ 0 ] ).type === \"ID\" &&\n\t\t\tcontext.nodeType === 9 && documentIsHTML && Expr.relative[ tokens[ 1 ].type ] ) {\n\n\t\t\tcontext = ( Expr.find[ \"ID\" ]( token.matches[ 0 ]\n\t\t\t\t.replace( runescape, funescape ), context ) || [] )[ 0 ];\n\t\t\tif ( !context ) {\n\t\t\t\treturn results;\n\n\t\t\t// Precompiled matchers will still verify ancestry, so step up a level\n\t\t\t} else if ( compiled ) {\n\t\t\t\tcontext = context.parentNode;\n\t\t\t}\n\n\t\t\tselector = selector.slice( tokens.shift().value.length );\n\t\t}\n\n\t\t// Fetch a seed set for right-to-left matching\n\t\ti = matchExpr[ \"needsContext\" ].test( selector ) ? 0 : tokens.length;\n\t\twhile ( i-- ) {\n\t\t\ttoken = tokens[ i ];\n\n\t\t\t// Abort if we hit a combinator\n\t\t\tif ( Expr.relative[ ( type = token.type ) ] ) {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tif ( ( find = Expr.find[ type ] ) ) {\n\n\t\t\t\t// Search, expanding context for leading sibling combinators\n\t\t\t\tif ( ( seed = find(\n\t\t\t\t\ttoken.matches[ 0 ].replace( runescape, funescape ),\n\t\t\t\t\trsibling.test( tokens[ 0 ].type ) && testContext( context.parentNode ) ||\n\t\t\t\t\t\tcontext\n\t\t\t\t) ) ) {\n\n\t\t\t\t\t// If seed is empty or no tokens remain, we can return early\n\t\t\t\t\ttokens.splice( i, 1 );\n\t\t\t\t\tselector = seed.length && toSelector( tokens );\n\t\t\t\t\tif ( !selector ) {\n\t\t\t\t\t\tpush.apply( results, seed );\n\t\t\t\t\t\treturn results;\n\t\t\t\t\t}\n\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// Compile and execute a filtering function if one is not provided\n\t// Provide `match` to avoid retokenization if we modified the selector above\n\t( compiled || compile( selector, match ) )(\n\t\tseed,\n\t\tcontext,\n\t\t!documentIsHTML,\n\t\tresults,\n\t\t!context || rsibling.test( selector ) && testContext( context.parentNode ) || context\n\t);\n\treturn results;\n};\n\n// One-time assignments\n\n// Sort stability\nsupport.sortStable = expando.split( \"\" ).sort( sortOrder ).join( \"\" ) === expando;\n\n// Support: Chrome 14-35+\n// Always assume duplicates if they aren't passed to the comparison function\nsupport.detectDuplicates = !!hasDuplicate;\n\n// Initialize against the default document\nsetDocument();\n\n// Support: Webkit<537.32 - Safari 6.0.3/Chrome 25 (fixed in Chrome 27)\n// Detached nodes confoundingly follow *each other*\nsupport.sortDetached = assert( function( el ) {\n\n\t// Should return 1, but returns 4 (following)\n\treturn el.compareDocumentPosition( document.createElement( \"fieldset\" ) ) & 1;\n} );\n\n// Support: IE<8\n// Prevent attribute/property \"interpolation\"\n// https://msdn.microsoft.com/en-us/library/ms536429%28VS.85%29.aspx\nif ( !assert( function( el ) {\n\tel.innerHTML = \"\";\n\treturn el.firstChild.getAttribute( \"href\" ) === \"#\";\n} ) ) {\n\taddHandle( \"type|href|height|width\", function( elem, name, isXML ) {\n\t\tif ( !isXML ) {\n\t\t\treturn elem.getAttribute( name, name.toLowerCase() === \"type\" ? 1 : 2 );\n\t\t}\n\t} );\n}\n\n// Support: IE<9\n// Use defaultValue in place of getAttribute(\"value\")\nif ( !support.attributes || !assert( function( el ) {\n\tel.innerHTML = \"\";\n\tel.firstChild.setAttribute( \"value\", \"\" );\n\treturn el.firstChild.getAttribute( \"value\" ) === \"\";\n} ) ) {\n\taddHandle( \"value\", function( elem, _name, isXML ) {\n\t\tif ( !isXML && elem.nodeName.toLowerCase() === \"input\" ) {\n\t\t\treturn elem.defaultValue;\n\t\t}\n\t} );\n}\n\n// Support: IE<9\n// Use getAttributeNode to fetch booleans when getAttribute lies\nif ( !assert( function( el ) {\n\treturn el.getAttribute( \"disabled\" ) == null;\n} ) ) {\n\taddHandle( booleans, function( elem, name, isXML ) {\n\t\tvar val;\n\t\tif ( !isXML ) {\n\t\t\treturn elem[ name ] === true ? name.toLowerCase() :\n\t\t\t\t( val = elem.getAttributeNode( name ) ) && val.specified ?\n\t\t\t\t\tval.value :\n\t\t\t\t\tnull;\n\t\t}\n\t} );\n}\n\nreturn Sizzle;\n\n} )( window );\n\n\n\njQuery.find = Sizzle;\njQuery.expr = Sizzle.selectors;\n\n// Deprecated\njQuery.expr[ \":\" ] = jQuery.expr.pseudos;\njQuery.uniqueSort = jQuery.unique = Sizzle.uniqueSort;\njQuery.text = Sizzle.getText;\njQuery.isXMLDoc = Sizzle.isXML;\njQuery.contains = Sizzle.contains;\njQuery.escapeSelector = Sizzle.escape;\n\n\n\n\nvar dir = function( elem, dir, until ) {\n\tvar matched = [],\n\t\ttruncate = until !== undefined;\n\n\twhile ( ( elem = elem[ dir ] ) && elem.nodeType !== 9 ) {\n\t\tif ( elem.nodeType === 1 ) {\n\t\t\tif ( truncate && jQuery( elem ).is( until ) ) {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tmatched.push( elem );\n\t\t}\n\t}\n\treturn matched;\n};\n\n\nvar siblings = function( n, elem ) {\n\tvar matched = [];\n\n\tfor ( ; n; n = n.nextSibling ) {\n\t\tif ( n.nodeType === 1 && n !== elem ) {\n\t\t\tmatched.push( n );\n\t\t}\n\t}\n\n\treturn matched;\n};\n\n\nvar rneedsContext = jQuery.expr.match.needsContext;\n\n\n\nfunction nodeName( elem, name ) {\n\n\treturn elem.nodeName && elem.nodeName.toLowerCase() === name.toLowerCase();\n\n}\nvar rsingleTag = ( /^<([a-z][^\\/\\0>:\\x20\\t\\r\\n\\f]*)[\\x20\\t\\r\\n\\f]*\\/?>(?:<\\/\\1>|)$/i );\n\n\n\n// Implement the identical functionality for filter and not\nfunction winnow( elements, qualifier, not ) {\n\tif ( isFunction( qualifier ) ) {\n\t\treturn jQuery.grep( elements, function( elem, i ) {\n\t\t\treturn !!qualifier.call( elem, i, elem ) !== not;\n\t\t} );\n\t}\n\n\t// Single element\n\tif ( qualifier.nodeType ) {\n\t\treturn jQuery.grep( elements, function( elem ) {\n\t\t\treturn ( elem === qualifier ) !== not;\n\t\t} );\n\t}\n\n\t// Arraylike of elements (jQuery, arguments, Array)\n\tif ( typeof qualifier !== \"string\" ) {\n\t\treturn jQuery.grep( elements, function( elem ) {\n\t\t\treturn ( indexOf.call( qualifier, elem ) > -1 ) !== not;\n\t\t} );\n\t}\n\n\t// Filtered directly for both simple and complex selectors\n\treturn jQuery.filter( qualifier, elements, not );\n}\n\njQuery.filter = function( expr, elems, not ) {\n\tvar elem = elems[ 0 ];\n\n\tif ( not ) {\n\t\texpr = \":not(\" + expr + \")\";\n\t}\n\n\tif ( elems.length === 1 && elem.nodeType === 1 ) {\n\t\treturn jQuery.find.matchesSelector( elem, expr ) ? [ elem ] : [];\n\t}\n\n\treturn jQuery.find.matches( expr, jQuery.grep( elems, function( elem ) {\n\t\treturn elem.nodeType === 1;\n\t} ) );\n};\n\njQuery.fn.extend( {\n\tfind: function( selector ) {\n\t\tvar i, ret,\n\t\t\tlen = this.length,\n\t\t\tself = this;\n\n\t\tif ( typeof selector !== \"string\" ) {\n\t\t\treturn this.pushStack( jQuery( selector ).filter( function() {\n\t\t\t\tfor ( i = 0; i < len; i++ ) {\n\t\t\t\t\tif ( jQuery.contains( self[ i ], this ) ) {\n\t\t\t\t\t\treturn true;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} ) );\n\t\t}\n\n\t\tret = this.pushStack( [] );\n\n\t\tfor ( i = 0; i < len; i++ ) {\n\t\t\tjQuery.find( selector, self[ i ], ret );\n\t\t}\n\n\t\treturn len > 1 ? jQuery.uniqueSort( ret ) : ret;\n\t},\n\tfilter: function( selector ) {\n\t\treturn this.pushStack( winnow( this, selector || [], false ) );\n\t},\n\tnot: function( selector ) {\n\t\treturn this.pushStack( winnow( this, selector || [], true ) );\n\t},\n\tis: function( selector ) {\n\t\treturn !!winnow(\n\t\t\tthis,\n\n\t\t\t// If this is a positional/relative selector, check membership in the returned set\n\t\t\t// so $(\"p:first\").is(\"p:last\") won't return true for a doc with two \"p\".\n\t\t\ttypeof selector === \"string\" && rneedsContext.test( selector ) ?\n\t\t\t\tjQuery( selector ) :\n\t\t\t\tselector || [],\n\t\t\tfalse\n\t\t).length;\n\t}\n} );\n\n\n// Initialize a jQuery object\n\n\n// A central reference to the root jQuery(document)\nvar rootjQuery,\n\n\t// A simple way to check for HTML strings\n\t// Prioritize #id over to avoid XSS via location.hash (#9521)\n\t// Strict HTML recognition (#11290: must start with <)\n\t// Shortcut simple #id case for speed\n\trquickExpr = /^(?:\\s*(<[\\w\\W]+>)[^>]*|#([\\w-]+))$/,\n\n\tinit = jQuery.fn.init = function( selector, context, root ) {\n\t\tvar match, elem;\n\n\t\t// HANDLE: $(\"\"), $(null), $(undefined), $(false)\n\t\tif ( !selector ) {\n\t\t\treturn this;\n\t\t}\n\n\t\t// Method init() accepts an alternate rootjQuery\n\t\t// so migrate can support jQuery.sub (gh-2101)\n\t\troot = root || rootjQuery;\n\n\t\t// Handle HTML strings\n\t\tif ( typeof selector === \"string\" ) {\n\t\t\tif ( selector[ 0 ] === \"<\" &&\n\t\t\t\tselector[ selector.length - 1 ] === \">\" &&\n\t\t\t\tselector.length >= 3 ) {\n\n\t\t\t\t// Assume that strings that start and end with <> are HTML and skip the regex check\n\t\t\t\tmatch = [ null, selector, null ];\n\n\t\t\t} else {\n\t\t\t\tmatch = rquickExpr.exec( selector );\n\t\t\t}\n\n\t\t\t// Match html or make sure no context is specified for #id\n\t\t\tif ( match && ( match[ 1 ] || !context ) ) {\n\n\t\t\t\t// HANDLE: $(html) -> $(array)\n\t\t\t\tif ( match[ 1 ] ) {\n\t\t\t\t\tcontext = context instanceof jQuery ? context[ 0 ] : context;\n\n\t\t\t\t\t// Option to run scripts is true for back-compat\n\t\t\t\t\t// Intentionally let the error be thrown if parseHTML is not present\n\t\t\t\t\tjQuery.merge( this, jQuery.parseHTML(\n\t\t\t\t\t\tmatch[ 1 ],\n\t\t\t\t\t\tcontext && context.nodeType ? context.ownerDocument || context : document,\n\t\t\t\t\t\ttrue\n\t\t\t\t\t) );\n\n\t\t\t\t\t// HANDLE: $(html, props)\n\t\t\t\t\tif ( rsingleTag.test( match[ 1 ] ) && jQuery.isPlainObject( context ) ) {\n\t\t\t\t\t\tfor ( match in context ) {\n\n\t\t\t\t\t\t\t// Properties of context are called as methods if possible\n\t\t\t\t\t\t\tif ( isFunction( this[ match ] ) ) {\n\t\t\t\t\t\t\t\tthis[ match ]( context[ match ] );\n\n\t\t\t\t\t\t\t// ...and otherwise set as attributes\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tthis.attr( match, context[ match ] );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\treturn this;\n\n\t\t\t\t// HANDLE: $(#id)\n\t\t\t\t} else {\n\t\t\t\t\telem = document.getElementById( match[ 2 ] );\n\n\t\t\t\t\tif ( elem ) {\n\n\t\t\t\t\t\t// Inject the element directly into the jQuery object\n\t\t\t\t\t\tthis[ 0 ] = elem;\n\t\t\t\t\t\tthis.length = 1;\n\t\t\t\t\t}\n\t\t\t\t\treturn this;\n\t\t\t\t}\n\n\t\t\t// HANDLE: $(expr, $(...))\n\t\t\t} else if ( !context || context.jquery ) {\n\t\t\t\treturn ( context || root ).find( selector );\n\n\t\t\t// HANDLE: $(expr, context)\n\t\t\t// (which is just equivalent to: $(context).find(expr)\n\t\t\t} else {\n\t\t\t\treturn this.constructor( context ).find( selector );\n\t\t\t}\n\n\t\t// HANDLE: $(DOMElement)\n\t\t} else if ( selector.nodeType ) {\n\t\t\tthis[ 0 ] = selector;\n\t\t\tthis.length = 1;\n\t\t\treturn this;\n\n\t\t// HANDLE: $(function)\n\t\t// Shortcut for document ready\n\t\t} else if ( isFunction( selector ) ) {\n\t\t\treturn root.ready !== undefined ?\n\t\t\t\troot.ready( selector ) :\n\n\t\t\t\t// Execute immediately if ready is not present\n\t\t\t\tselector( jQuery );\n\t\t}\n\n\t\treturn jQuery.makeArray( selector, this );\n\t};\n\n// Give the init function the jQuery prototype for later instantiation\ninit.prototype = jQuery.fn;\n\n// Initialize central reference\nrootjQuery = jQuery( document );\n\n\nvar rparentsprev = /^(?:parents|prev(?:Until|All))/,\n\n\t// Methods guaranteed to produce a unique set when starting from a unique set\n\tguaranteedUnique = {\n\t\tchildren: true,\n\t\tcontents: true,\n\t\tnext: true,\n\t\tprev: true\n\t};\n\njQuery.fn.extend( {\n\thas: function( target ) {\n\t\tvar targets = jQuery( target, this ),\n\t\t\tl = targets.length;\n\n\t\treturn this.filter( function() {\n\t\t\tvar i = 0;\n\t\t\tfor ( ; i < l; i++ ) {\n\t\t\t\tif ( jQuery.contains( this, targets[ i ] ) ) {\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t}\n\t\t} );\n\t},\n\n\tclosest: function( selectors, context ) {\n\t\tvar cur,\n\t\t\ti = 0,\n\t\t\tl = this.length,\n\t\t\tmatched = [],\n\t\t\ttargets = typeof selectors !== \"string\" && jQuery( selectors );\n\n\t\t// Positional selectors never match, since there's no _selection_ context\n\t\tif ( !rneedsContext.test( selectors ) ) {\n\t\t\tfor ( ; i < l; i++ ) {\n\t\t\t\tfor ( cur = this[ i ]; cur && cur !== context; cur = cur.parentNode ) {\n\n\t\t\t\t\t// Always skip document fragments\n\t\t\t\t\tif ( cur.nodeType < 11 && ( targets ?\n\t\t\t\t\t\ttargets.index( cur ) > -1 :\n\n\t\t\t\t\t\t// Don't pass non-elements to Sizzle\n\t\t\t\t\t\tcur.nodeType === 1 &&\n\t\t\t\t\t\t\tjQuery.find.matchesSelector( cur, selectors ) ) ) {\n\n\t\t\t\t\t\tmatched.push( cur );\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn this.pushStack( matched.length > 1 ? jQuery.uniqueSort( matched ) : matched );\n\t},\n\n\t// Determine the position of an element within the set\n\tindex: function( elem ) {\n\n\t\t// No argument, return index in parent\n\t\tif ( !elem ) {\n\t\t\treturn ( this[ 0 ] && this[ 0 ].parentNode ) ? this.first().prevAll().length : -1;\n\t\t}\n\n\t\t// Index in selector\n\t\tif ( typeof elem === \"string\" ) {\n\t\t\treturn indexOf.call( jQuery( elem ), this[ 0 ] );\n\t\t}\n\n\t\t// Locate the position of the desired element\n\t\treturn indexOf.call( this,\n\n\t\t\t// If it receives a jQuery object, the first element is used\n\t\t\telem.jquery ? elem[ 0 ] : elem\n\t\t);\n\t},\n\n\tadd: function( selector, context ) {\n\t\treturn this.pushStack(\n\t\t\tjQuery.uniqueSort(\n\t\t\t\tjQuery.merge( this.get(), jQuery( selector, context ) )\n\t\t\t)\n\t\t);\n\t},\n\n\taddBack: function( selector ) {\n\t\treturn this.add( selector == null ?\n\t\t\tthis.prevObject : this.prevObject.filter( selector )\n\t\t);\n\t}\n} );\n\nfunction sibling( cur, dir ) {\n\twhile ( ( cur = cur[ dir ] ) && cur.nodeType !== 1 ) {}\n\treturn cur;\n}\n\njQuery.each( {\n\tparent: function( elem ) {\n\t\tvar parent = elem.parentNode;\n\t\treturn parent && parent.nodeType !== 11 ? parent : null;\n\t},\n\tparents: function( elem ) {\n\t\treturn dir( elem, \"parentNode\" );\n\t},\n\tparentsUntil: function( elem, _i, until ) {\n\t\treturn dir( elem, \"parentNode\", until );\n\t},\n\tnext: function( elem ) {\n\t\treturn sibling( elem, \"nextSibling\" );\n\t},\n\tprev: function( elem ) {\n\t\treturn sibling( elem, \"previousSibling\" );\n\t},\n\tnextAll: function( elem ) {\n\t\treturn dir( elem, \"nextSibling\" );\n\t},\n\tprevAll: function( elem ) {\n\t\treturn dir( elem, \"previousSibling\" );\n\t},\n\tnextUntil: function( elem, _i, until ) {\n\t\treturn dir( elem, \"nextSibling\", until );\n\t},\n\tprevUntil: function( elem, _i, until ) {\n\t\treturn dir( elem, \"previousSibling\", until );\n\t},\n\tsiblings: function( elem ) {\n\t\treturn siblings( ( elem.parentNode || {} ).firstChild, elem );\n\t},\n\tchildren: function( elem ) {\n\t\treturn siblings( elem.firstChild );\n\t},\n\tcontents: function( elem ) {\n\t\tif ( elem.contentDocument != null &&\n\n\t\t\t// Support: IE 11+\n\t\t\t// elements with no `data` attribute has an object\n\t\t\t// `contentDocument` with a `null` prototype.\n\t\t\tgetProto( elem.contentDocument ) ) {\n\n\t\t\treturn elem.contentDocument;\n\t\t}\n\n\t\t// Support: IE 9 - 11 only, iOS 7 only, Android Browser <=4.3 only\n\t\t// Treat the template element as a regular one in browsers that\n\t\t// don't support it.\n\t\tif ( nodeName( elem, \"template\" ) ) {\n\t\t\telem = elem.content || elem;\n\t\t}\n\n\t\treturn jQuery.merge( [], elem.childNodes );\n\t}\n}, function( name, fn ) {\n\tjQuery.fn[ name ] = function( until, selector ) {\n\t\tvar matched = jQuery.map( this, fn, until );\n\n\t\tif ( name.slice( -5 ) !== \"Until\" ) {\n\t\t\tselector = until;\n\t\t}\n\n\t\tif ( selector && typeof selector === \"string\" ) {\n\t\t\tmatched = jQuery.filter( selector, matched );\n\t\t}\n\n\t\tif ( this.length > 1 ) {\n\n\t\t\t// Remove duplicates\n\t\t\tif ( !guaranteedUnique[ name ] ) {\n\t\t\t\tjQuery.uniqueSort( matched );\n\t\t\t}\n\n\t\t\t// Reverse order for parents* and prev-derivatives\n\t\t\tif ( rparentsprev.test( name ) ) {\n\t\t\t\tmatched.reverse();\n\t\t\t}\n\t\t}\n\n\t\treturn this.pushStack( matched );\n\t};\n} );\nvar rnothtmlwhite = ( /[^\\x20\\t\\r\\n\\f]+/g );\n\n\n\n// Convert String-formatted options into Object-formatted ones\nfunction createOptions( options ) {\n\tvar object = {};\n\tjQuery.each( options.match( rnothtmlwhite ) || [], function( _, flag ) {\n\t\tobject[ flag ] = true;\n\t} );\n\treturn object;\n}\n\n/*\n * Create a callback list using the following parameters:\n *\n *\toptions: an optional list of space-separated options that will change how\n *\t\t\tthe callback list behaves or a more traditional option object\n *\n * By default a callback list will act like an event callback list and can be\n * \"fired\" multiple times.\n *\n * Possible options:\n *\n *\tonce:\t\t\twill ensure the callback list can only be fired once (like a Deferred)\n *\n *\tmemory:\t\t\twill keep track of previous values and will call any callback added\n *\t\t\t\t\tafter the list has been fired right away with the latest \"memorized\"\n *\t\t\t\t\tvalues (like a Deferred)\n *\n *\tunique:\t\t\twill ensure a callback can only be added once (no duplicate in the list)\n *\n *\tstopOnFalse:\tinterrupt callings when a callback returns false\n *\n */\njQuery.Callbacks = function( options ) {\n\n\t// Convert options from String-formatted to Object-formatted if needed\n\t// (we check in cache first)\n\toptions = typeof options === \"string\" ?\n\t\tcreateOptions( options ) :\n\t\tjQuery.extend( {}, options );\n\n\tvar // Flag to know if list is currently firing\n\t\tfiring,\n\n\t\t// Last fire value for non-forgettable lists\n\t\tmemory,\n\n\t\t// Flag to know if list was already fired\n\t\tfired,\n\n\t\t// Flag to prevent firing\n\t\tlocked,\n\n\t\t// Actual callback list\n\t\tlist = [],\n\n\t\t// Queue of execution data for repeatable lists\n\t\tqueue = [],\n\n\t\t// Index of currently firing callback (modified by add/remove as needed)\n\t\tfiringIndex = -1,\n\n\t\t// Fire callbacks\n\t\tfire = function() {\n\n\t\t\t// Enforce single-firing\n\t\t\tlocked = locked || options.once;\n\n\t\t\t// Execute callbacks for all pending executions,\n\t\t\t// respecting firingIndex overrides and runtime changes\n\t\t\tfired = firing = true;\n\t\t\tfor ( ; queue.length; firingIndex = -1 ) {\n\t\t\t\tmemory = queue.shift();\n\t\t\t\twhile ( ++firingIndex < list.length ) {\n\n\t\t\t\t\t// Run callback and check for early termination\n\t\t\t\t\tif ( list[ firingIndex ].apply( memory[ 0 ], memory[ 1 ] ) === false &&\n\t\t\t\t\t\toptions.stopOnFalse ) {\n\n\t\t\t\t\t\t// Jump to end and forget the data so .add doesn't re-fire\n\t\t\t\t\t\tfiringIndex = list.length;\n\t\t\t\t\t\tmemory = false;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Forget the data if we're done with it\n\t\t\tif ( !options.memory ) {\n\t\t\t\tmemory = false;\n\t\t\t}\n\n\t\t\tfiring = false;\n\n\t\t\t// Clean up if we're done firing for good\n\t\t\tif ( locked ) {\n\n\t\t\t\t// Keep an empty list if we have data for future add calls\n\t\t\t\tif ( memory ) {\n\t\t\t\t\tlist = [];\n\n\t\t\t\t// Otherwise, this object is spent\n\t\t\t\t} else {\n\t\t\t\t\tlist = \"\";\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\t\t// Actual Callbacks object\n\t\tself = {\n\n\t\t\t// Add a callback or a collection of callbacks to the list\n\t\t\tadd: function() {\n\t\t\t\tif ( list ) {\n\n\t\t\t\t\t// If we have memory from a past run, we should fire after adding\n\t\t\t\t\tif ( memory && !firing ) {\n\t\t\t\t\t\tfiringIndex = list.length - 1;\n\t\t\t\t\t\tqueue.push( memory );\n\t\t\t\t\t}\n\n\t\t\t\t\t( function add( args ) {\n\t\t\t\t\t\tjQuery.each( args, function( _, arg ) {\n\t\t\t\t\t\t\tif ( isFunction( arg ) ) {\n\t\t\t\t\t\t\t\tif ( !options.unique || !self.has( arg ) ) {\n\t\t\t\t\t\t\t\t\tlist.push( arg );\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t} else if ( arg && arg.length && toType( arg ) !== \"string\" ) {\n\n\t\t\t\t\t\t\t\t// Inspect recursively\n\t\t\t\t\t\t\t\tadd( arg );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} );\n\t\t\t\t\t} )( arguments );\n\n\t\t\t\t\tif ( memory && !firing ) {\n\t\t\t\t\t\tfire();\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t\t},\n\n\t\t\t// Remove a callback from the list\n\t\t\tremove: function() {\n\t\t\t\tjQuery.each( arguments, function( _, arg ) {\n\t\t\t\t\tvar index;\n\t\t\t\t\twhile ( ( index = jQuery.inArray( arg, list, index ) ) > -1 ) {\n\t\t\t\t\t\tlist.splice( index, 1 );\n\n\t\t\t\t\t\t// Handle firing indexes\n\t\t\t\t\t\tif ( index <= firingIndex ) {\n\t\t\t\t\t\t\tfiringIndex--;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t} );\n\t\t\t\treturn this;\n\t\t\t},\n\n\t\t\t// Check if a given callback is in the list.\n\t\t\t// If no argument is given, return whether or not list has callbacks attached.\n\t\t\thas: function( fn ) {\n\t\t\t\treturn fn ?\n\t\t\t\t\tjQuery.inArray( fn, list ) > -1 :\n\t\t\t\t\tlist.length > 0;\n\t\t\t},\n\n\t\t\t// Remove all callbacks from the list\n\t\t\tempty: function() {\n\t\t\t\tif ( list ) {\n\t\t\t\t\tlist = [];\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t\t},\n\n\t\t\t// Disable .fire and .add\n\t\t\t// Abort any current/pending executions\n\t\t\t// Clear all callbacks and values\n\t\t\tdisable: function() {\n\t\t\t\tlocked = queue = [];\n\t\t\t\tlist = memory = \"\";\n\t\t\t\treturn this;\n\t\t\t},\n\t\t\tdisabled: function() {\n\t\t\t\treturn !list;\n\t\t\t},\n\n\t\t\t// Disable .fire\n\t\t\t// Also disable .add unless we have memory (since it would have no effect)\n\t\t\t// Abort any pending executions\n\t\t\tlock: function() {\n\t\t\t\tlocked = queue = [];\n\t\t\t\tif ( !memory && !firing ) {\n\t\t\t\t\tlist = memory = \"\";\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t\t},\n\t\t\tlocked: function() {\n\t\t\t\treturn !!locked;\n\t\t\t},\n\n\t\t\t// Call all callbacks with the given context and arguments\n\t\t\tfireWith: function( context, args ) {\n\t\t\t\tif ( !locked ) {\n\t\t\t\t\targs = args || [];\n\t\t\t\t\targs = [ context, args.slice ? args.slice() : args ];\n\t\t\t\t\tqueue.push( args );\n\t\t\t\t\tif ( !firing ) {\n\t\t\t\t\t\tfire();\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t\t},\n\n\t\t\t// Call all the callbacks with the given arguments\n\t\t\tfire: function() {\n\t\t\t\tself.fireWith( this, arguments );\n\t\t\t\treturn this;\n\t\t\t},\n\n\t\t\t// To know if the callbacks have already been called at least once\n\t\t\tfired: function() {\n\t\t\t\treturn !!fired;\n\t\t\t}\n\t\t};\n\n\treturn self;\n};\n\n\nfunction Identity( v ) {\n\treturn v;\n}\nfunction Thrower( ex ) {\n\tthrow ex;\n}\n\nfunction adoptValue( value, resolve, reject, noValue ) {\n\tvar method;\n\n\ttry {\n\n\t\t// Check for promise aspect first to privilege synchronous behavior\n\t\tif ( value && isFunction( ( method = value.promise ) ) ) {\n\t\t\tmethod.call( value ).done( resolve ).fail( reject );\n\n\t\t// Other thenables\n\t\t} else if ( value && isFunction( ( method = value.then ) ) ) {\n\t\t\tmethod.call( value, resolve, reject );\n\n\t\t// Other non-thenables\n\t\t} else {\n\n\t\t\t// Control `resolve` arguments by letting Array#slice cast boolean `noValue` to integer:\n\t\t\t// * false: [ value ].slice( 0 ) => resolve( value )\n\t\t\t// * true: [ value ].slice( 1 ) => resolve()\n\t\t\tresolve.apply( undefined, [ value ].slice( noValue ) );\n\t\t}\n\n\t// For Promises/A+, convert exceptions into rejections\n\t// Since jQuery.when doesn't unwrap thenables, we can skip the extra checks appearing in\n\t// Deferred#then to conditionally suppress rejection.\n\t} catch ( value ) {\n\n\t\t// Support: Android 4.0 only\n\t\t// Strict mode functions invoked without .call/.apply get global-object context\n\t\treject.apply( undefined, [ value ] );\n\t}\n}\n\njQuery.extend( {\n\n\tDeferred: function( func ) {\n\t\tvar tuples = [\n\n\t\t\t\t// action, add listener, callbacks,\n\t\t\t\t// ... .then handlers, argument index, [final state]\n\t\t\t\t[ \"notify\", \"progress\", jQuery.Callbacks( \"memory\" ),\n\t\t\t\t\tjQuery.Callbacks( \"memory\" ), 2 ],\n\t\t\t\t[ \"resolve\", \"done\", jQuery.Callbacks( \"once memory\" ),\n\t\t\t\t\tjQuery.Callbacks( \"once memory\" ), 0, \"resolved\" ],\n\t\t\t\t[ \"reject\", \"fail\", jQuery.Callbacks( \"once memory\" ),\n\t\t\t\t\tjQuery.Callbacks( \"once memory\" ), 1, \"rejected\" ]\n\t\t\t],\n\t\t\tstate = \"pending\",\n\t\t\tpromise = {\n\t\t\t\tstate: function() {\n\t\t\t\t\treturn state;\n\t\t\t\t},\n\t\t\t\talways: function() {\n\t\t\t\t\tdeferred.done( arguments ).fail( arguments );\n\t\t\t\t\treturn this;\n\t\t\t\t},\n\t\t\t\t\"catch\": function( fn ) {\n\t\t\t\t\treturn promise.then( null, fn );\n\t\t\t\t},\n\n\t\t\t\t// Keep pipe for back-compat\n\t\t\t\tpipe: function( /* fnDone, fnFail, fnProgress */ ) {\n\t\t\t\t\tvar fns = arguments;\n\n\t\t\t\t\treturn jQuery.Deferred( function( newDefer ) {\n\t\t\t\t\t\tjQuery.each( tuples, function( _i, tuple ) {\n\n\t\t\t\t\t\t\t// Map tuples (progress, done, fail) to arguments (done, fail, progress)\n\t\t\t\t\t\t\tvar fn = isFunction( fns[ tuple[ 4 ] ] ) && fns[ tuple[ 4 ] ];\n\n\t\t\t\t\t\t\t// deferred.progress(function() { bind to newDefer or newDefer.notify })\n\t\t\t\t\t\t\t// deferred.done(function() { bind to newDefer or newDefer.resolve })\n\t\t\t\t\t\t\t// deferred.fail(function() { bind to newDefer or newDefer.reject })\n\t\t\t\t\t\t\tdeferred[ tuple[ 1 ] ]( function() {\n\t\t\t\t\t\t\t\tvar returned = fn && fn.apply( this, arguments );\n\t\t\t\t\t\t\t\tif ( returned && isFunction( returned.promise ) ) {\n\t\t\t\t\t\t\t\t\treturned.promise()\n\t\t\t\t\t\t\t\t\t\t.progress( newDefer.notify )\n\t\t\t\t\t\t\t\t\t\t.done( newDefer.resolve )\n\t\t\t\t\t\t\t\t\t\t.fail( newDefer.reject );\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\tnewDefer[ tuple[ 0 ] + \"With\" ](\n\t\t\t\t\t\t\t\t\t\tthis,\n\t\t\t\t\t\t\t\t\t\tfn ? [ returned ] : arguments\n\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t} );\n\t\t\t\t\t\t} );\n\t\t\t\t\t\tfns = null;\n\t\t\t\t\t} ).promise();\n\t\t\t\t},\n\t\t\t\tthen: function( onFulfilled, onRejected, onProgress ) {\n\t\t\t\t\tvar maxDepth = 0;\n\t\t\t\t\tfunction resolve( depth, deferred, handler, special ) {\n\t\t\t\t\t\treturn function() {\n\t\t\t\t\t\t\tvar that = this,\n\t\t\t\t\t\t\t\targs = arguments,\n\t\t\t\t\t\t\t\tmightThrow = function() {\n\t\t\t\t\t\t\t\t\tvar returned, then;\n\n\t\t\t\t\t\t\t\t\t// Support: Promises/A+ section 2.3.3.3.3\n\t\t\t\t\t\t\t\t\t// https://promisesaplus.com/#point-59\n\t\t\t\t\t\t\t\t\t// Ignore double-resolution attempts\n\t\t\t\t\t\t\t\t\tif ( depth < maxDepth ) {\n\t\t\t\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\treturned = handler.apply( that, args );\n\n\t\t\t\t\t\t\t\t\t// Support: Promises/A+ section 2.3.1\n\t\t\t\t\t\t\t\t\t// https://promisesaplus.com/#point-48\n\t\t\t\t\t\t\t\t\tif ( returned === deferred.promise() ) {\n\t\t\t\t\t\t\t\t\t\tthrow new TypeError( \"Thenable self-resolution\" );\n\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t// Support: Promises/A+ sections 2.3.3.1, 3.5\n\t\t\t\t\t\t\t\t\t// https://promisesaplus.com/#point-54\n\t\t\t\t\t\t\t\t\t// https://promisesaplus.com/#point-75\n\t\t\t\t\t\t\t\t\t// Retrieve `then` only once\n\t\t\t\t\t\t\t\t\tthen = returned &&\n\n\t\t\t\t\t\t\t\t\t\t// Support: Promises/A+ section 2.3.4\n\t\t\t\t\t\t\t\t\t\t// https://promisesaplus.com/#point-64\n\t\t\t\t\t\t\t\t\t\t// Only check objects and functions for thenability\n\t\t\t\t\t\t\t\t\t\t( typeof returned === \"object\" ||\n\t\t\t\t\t\t\t\t\t\t\ttypeof returned === \"function\" ) &&\n\t\t\t\t\t\t\t\t\t\treturned.then;\n\n\t\t\t\t\t\t\t\t\t// Handle a returned thenable\n\t\t\t\t\t\t\t\t\tif ( isFunction( then ) ) {\n\n\t\t\t\t\t\t\t\t\t\t// Special processors (notify) just wait for resolution\n\t\t\t\t\t\t\t\t\t\tif ( special ) {\n\t\t\t\t\t\t\t\t\t\t\tthen.call(\n\t\t\t\t\t\t\t\t\t\t\t\treturned,\n\t\t\t\t\t\t\t\t\t\t\t\tresolve( maxDepth, deferred, Identity, special ),\n\t\t\t\t\t\t\t\t\t\t\t\tresolve( maxDepth, deferred, Thrower, special )\n\t\t\t\t\t\t\t\t\t\t\t);\n\n\t\t\t\t\t\t\t\t\t\t// Normal processors (resolve) also hook into progress\n\t\t\t\t\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t\t\t\t\t// ...and disregard older resolution values\n\t\t\t\t\t\t\t\t\t\t\tmaxDepth++;\n\n\t\t\t\t\t\t\t\t\t\t\tthen.call(\n\t\t\t\t\t\t\t\t\t\t\t\treturned,\n\t\t\t\t\t\t\t\t\t\t\t\tresolve( maxDepth, deferred, Identity, special ),\n\t\t\t\t\t\t\t\t\t\t\t\tresolve( maxDepth, deferred, Thrower, special ),\n\t\t\t\t\t\t\t\t\t\t\t\tresolve( maxDepth, deferred, Identity,\n\t\t\t\t\t\t\t\t\t\t\t\t\tdeferred.notifyWith )\n\t\t\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t// Handle all other returned values\n\t\t\t\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t\t\t\t// Only substitute handlers pass on context\n\t\t\t\t\t\t\t\t\t\t// and multiple values (non-spec behavior)\n\t\t\t\t\t\t\t\t\t\tif ( handler !== Identity ) {\n\t\t\t\t\t\t\t\t\t\t\tthat = undefined;\n\t\t\t\t\t\t\t\t\t\t\targs = [ returned ];\n\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\t// Process the value(s)\n\t\t\t\t\t\t\t\t\t\t// Default process is resolve\n\t\t\t\t\t\t\t\t\t\t( special || deferred.resolveWith )( that, args );\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t},\n\n\t\t\t\t\t\t\t\t// Only normal processors (resolve) catch and reject exceptions\n\t\t\t\t\t\t\t\tprocess = special ?\n\t\t\t\t\t\t\t\t\tmightThrow :\n\t\t\t\t\t\t\t\t\tfunction() {\n\t\t\t\t\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\t\t\t\t\tmightThrow();\n\t\t\t\t\t\t\t\t\t\t} catch ( e ) {\n\n\t\t\t\t\t\t\t\t\t\t\tif ( jQuery.Deferred.exceptionHook ) {\n\t\t\t\t\t\t\t\t\t\t\t\tjQuery.Deferred.exceptionHook( e,\n\t\t\t\t\t\t\t\t\t\t\t\t\tprocess.stackTrace );\n\t\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\t\t// Support: Promises/A+ section 2.3.3.3.4.1\n\t\t\t\t\t\t\t\t\t\t\t// https://promisesaplus.com/#point-61\n\t\t\t\t\t\t\t\t\t\t\t// Ignore post-resolution exceptions\n\t\t\t\t\t\t\t\t\t\t\tif ( depth + 1 >= maxDepth ) {\n\n\t\t\t\t\t\t\t\t\t\t\t\t// Only substitute handlers pass on context\n\t\t\t\t\t\t\t\t\t\t\t\t// and multiple values (non-spec behavior)\n\t\t\t\t\t\t\t\t\t\t\t\tif ( handler !== Thrower ) {\n\t\t\t\t\t\t\t\t\t\t\t\t\tthat = undefined;\n\t\t\t\t\t\t\t\t\t\t\t\t\targs = [ e ];\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\t\t\tdeferred.rejectWith( that, args );\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t};\n\n\t\t\t\t\t\t\t// Support: Promises/A+ section 2.3.3.3.1\n\t\t\t\t\t\t\t// https://promisesaplus.com/#point-57\n\t\t\t\t\t\t\t// Re-resolve promises immediately to dodge false rejection from\n\t\t\t\t\t\t\t// subsequent errors\n\t\t\t\t\t\t\tif ( depth ) {\n\t\t\t\t\t\t\t\tprocess();\n\t\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t\t// Call an optional hook to record the stack, in case of exception\n\t\t\t\t\t\t\t\t// since it's otherwise lost when execution goes async\n\t\t\t\t\t\t\t\tif ( jQuery.Deferred.getStackHook ) {\n\t\t\t\t\t\t\t\t\tprocess.stackTrace = jQuery.Deferred.getStackHook();\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\twindow.setTimeout( process );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t};\n\t\t\t\t\t}\n\n\t\t\t\t\treturn jQuery.Deferred( function( newDefer ) {\n\n\t\t\t\t\t\t// progress_handlers.add( ... )\n\t\t\t\t\t\ttuples[ 0 ][ 3 ].add(\n\t\t\t\t\t\t\tresolve(\n\t\t\t\t\t\t\t\t0,\n\t\t\t\t\t\t\t\tnewDefer,\n\t\t\t\t\t\t\t\tisFunction( onProgress ) ?\n\t\t\t\t\t\t\t\t\tonProgress :\n\t\t\t\t\t\t\t\t\tIdentity,\n\t\t\t\t\t\t\t\tnewDefer.notifyWith\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\t// fulfilled_handlers.add( ... )\n\t\t\t\t\t\ttuples[ 1 ][ 3 ].add(\n\t\t\t\t\t\t\tresolve(\n\t\t\t\t\t\t\t\t0,\n\t\t\t\t\t\t\t\tnewDefer,\n\t\t\t\t\t\t\t\tisFunction( onFulfilled ) ?\n\t\t\t\t\t\t\t\t\tonFulfilled :\n\t\t\t\t\t\t\t\t\tIdentity\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\t// rejected_handlers.add( ... )\n\t\t\t\t\t\ttuples[ 2 ][ 3 ].add(\n\t\t\t\t\t\t\tresolve(\n\t\t\t\t\t\t\t\t0,\n\t\t\t\t\t\t\t\tnewDefer,\n\t\t\t\t\t\t\t\tisFunction( onRejected ) ?\n\t\t\t\t\t\t\t\t\tonRejected :\n\t\t\t\t\t\t\t\t\tThrower\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t);\n\t\t\t\t\t} ).promise();\n\t\t\t\t},\n\n\t\t\t\t// Get a promise for this deferred\n\t\t\t\t// If obj is provided, the promise aspect is added to the object\n\t\t\t\tpromise: function( obj ) {\n\t\t\t\t\treturn obj != null ? jQuery.extend( obj, promise ) : promise;\n\t\t\t\t}\n\t\t\t},\n\t\t\tdeferred = {};\n\n\t\t// Add list-specific methods\n\t\tjQuery.each( tuples, function( i, tuple ) {\n\t\t\tvar list = tuple[ 2 ],\n\t\t\t\tstateString = tuple[ 5 ];\n\n\t\t\t// promise.progress = list.add\n\t\t\t// promise.done = list.add\n\t\t\t// promise.fail = list.add\n\t\t\tpromise[ tuple[ 1 ] ] = list.add;\n\n\t\t\t// Handle state\n\t\t\tif ( stateString ) {\n\t\t\t\tlist.add(\n\t\t\t\t\tfunction() {\n\n\t\t\t\t\t\t// state = \"resolved\" (i.e., fulfilled)\n\t\t\t\t\t\t// state = \"rejected\"\n\t\t\t\t\t\tstate = stateString;\n\t\t\t\t\t},\n\n\t\t\t\t\t// rejected_callbacks.disable\n\t\t\t\t\t// fulfilled_callbacks.disable\n\t\t\t\t\ttuples[ 3 - i ][ 2 ].disable,\n\n\t\t\t\t\t// rejected_handlers.disable\n\t\t\t\t\t// fulfilled_handlers.disable\n\t\t\t\t\ttuples[ 3 - i ][ 3 ].disable,\n\n\t\t\t\t\t// progress_callbacks.lock\n\t\t\t\t\ttuples[ 0 ][ 2 ].lock,\n\n\t\t\t\t\t// progress_handlers.lock\n\t\t\t\t\ttuples[ 0 ][ 3 ].lock\n\t\t\t\t);\n\t\t\t}\n\n\t\t\t// progress_handlers.fire\n\t\t\t// fulfilled_handlers.fire\n\t\t\t// rejected_handlers.fire\n\t\t\tlist.add( tuple[ 3 ].fire );\n\n\t\t\t// deferred.notify = function() { deferred.notifyWith(...) }\n\t\t\t// deferred.resolve = function() { deferred.resolveWith(...) }\n\t\t\t// deferred.reject = function() { deferred.rejectWith(...) }\n\t\t\tdeferred[ tuple[ 0 ] ] = function() {\n\t\t\t\tdeferred[ tuple[ 0 ] + \"With\" ]( this === deferred ? undefined : this, arguments );\n\t\t\t\treturn this;\n\t\t\t};\n\n\t\t\t// deferred.notifyWith = list.fireWith\n\t\t\t// deferred.resolveWith = list.fireWith\n\t\t\t// deferred.rejectWith = list.fireWith\n\t\t\tdeferred[ tuple[ 0 ] + \"With\" ] = list.fireWith;\n\t\t} );\n\n\t\t// Make the deferred a promise\n\t\tpromise.promise( deferred );\n\n\t\t// Call given func if any\n\t\tif ( func ) {\n\t\t\tfunc.call( deferred, deferred );\n\t\t}\n\n\t\t// All done!\n\t\treturn deferred;\n\t},\n\n\t// Deferred helper\n\twhen: function( singleValue ) {\n\t\tvar\n\n\t\t\t// count of uncompleted subordinates\n\t\t\tremaining = arguments.length,\n\n\t\t\t// count of unprocessed arguments\n\t\t\ti = remaining,\n\n\t\t\t// subordinate fulfillment data\n\t\t\tresolveContexts = Array( i ),\n\t\t\tresolveValues = slice.call( arguments ),\n\n\t\t\t// the primary Deferred\n\t\t\tprimary = jQuery.Deferred(),\n\n\t\t\t// subordinate callback factory\n\t\t\tupdateFunc = function( i ) {\n\t\t\t\treturn function( value ) {\n\t\t\t\t\tresolveContexts[ i ] = this;\n\t\t\t\t\tresolveValues[ i ] = arguments.length > 1 ? slice.call( arguments ) : value;\n\t\t\t\t\tif ( !( --remaining ) ) {\n\t\t\t\t\t\tprimary.resolveWith( resolveContexts, resolveValues );\n\t\t\t\t\t}\n\t\t\t\t};\n\t\t\t};\n\n\t\t// Single- and empty arguments are adopted like Promise.resolve\n\t\tif ( remaining <= 1 ) {\n\t\t\tadoptValue( singleValue, primary.done( updateFunc( i ) ).resolve, primary.reject,\n\t\t\t\t!remaining );\n\n\t\t\t// Use .then() to unwrap secondary thenables (cf. gh-3000)\n\t\t\tif ( primary.state() === \"pending\" ||\n\t\t\t\tisFunction( resolveValues[ i ] && resolveValues[ i ].then ) ) {\n\n\t\t\t\treturn primary.then();\n\t\t\t}\n\t\t}\n\n\t\t// Multiple arguments are aggregated like Promise.all array elements\n\t\twhile ( i-- ) {\n\t\t\tadoptValue( resolveValues[ i ], updateFunc( i ), primary.reject );\n\t\t}\n\n\t\treturn primary.promise();\n\t}\n} );\n\n\n// These usually indicate a programmer mistake during development,\n// warn about them ASAP rather than swallowing them by default.\nvar rerrorNames = /^(Eval|Internal|Range|Reference|Syntax|Type|URI)Error$/;\n\njQuery.Deferred.exceptionHook = function( error, stack ) {\n\n\t// Support: IE 8 - 9 only\n\t// Console exists when dev tools are open, which can happen at any time\n\tif ( window.console && window.console.warn && error && rerrorNames.test( error.name ) ) {\n\t\twindow.console.warn( \"jQuery.Deferred exception: \" + error.message, error.stack, stack );\n\t}\n};\n\n\n\n\njQuery.readyException = function( error ) {\n\twindow.setTimeout( function() {\n\t\tthrow error;\n\t} );\n};\n\n\n\n\n// The deferred used on DOM ready\nvar readyList = jQuery.Deferred();\n\njQuery.fn.ready = function( fn ) {\n\n\treadyList\n\t\t.then( fn )\n\n\t\t// Wrap jQuery.readyException in a function so that the lookup\n\t\t// happens at the time of error handling instead of callback\n\t\t// registration.\n\t\t.catch( function( error ) {\n\t\t\tjQuery.readyException( error );\n\t\t} );\n\n\treturn this;\n};\n\njQuery.extend( {\n\n\t// Is the DOM ready to be used? Set to true once it occurs.\n\tisReady: false,\n\n\t// A counter to track how many items to wait for before\n\t// the ready event fires. See #6781\n\treadyWait: 1,\n\n\t// Handle when the DOM is ready\n\tready: function( wait ) {\n\n\t\t// Abort if there are pending holds or we're already ready\n\t\tif ( wait === true ? --jQuery.readyWait : jQuery.isReady ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Remember that the DOM is ready\n\t\tjQuery.isReady = true;\n\n\t\t// If a normal DOM Ready event fired, decrement, and wait if need be\n\t\tif ( wait !== true && --jQuery.readyWait > 0 ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// If there are functions bound, to execute\n\t\treadyList.resolveWith( document, [ jQuery ] );\n\t}\n} );\n\njQuery.ready.then = readyList.then;\n\n// The ready event handler and self cleanup method\nfunction completed() {\n\tdocument.removeEventListener( \"DOMContentLoaded\", completed );\n\twindow.removeEventListener( \"load\", completed );\n\tjQuery.ready();\n}\n\n// Catch cases where $(document).ready() is called\n// after the browser event has already occurred.\n// Support: IE <=9 - 10 only\n// Older IE sometimes signals \"interactive\" too soon\nif ( document.readyState === \"complete\" ||\n\t( document.readyState !== \"loading\" && !document.documentElement.doScroll ) ) {\n\n\t// Handle it asynchronously to allow scripts the opportunity to delay ready\n\twindow.setTimeout( jQuery.ready );\n\n} else {\n\n\t// Use the handy event callback\n\tdocument.addEventListener( \"DOMContentLoaded\", completed );\n\n\t// A fallback to window.onload, that will always work\n\twindow.addEventListener( \"load\", completed );\n}\n\n\n\n\n// Multifunctional method to get and set values of a collection\n// The value/s can optionally be executed if it's a function\nvar access = function( elems, fn, key, value, chainable, emptyGet, raw ) {\n\tvar i = 0,\n\t\tlen = elems.length,\n\t\tbulk = key == null;\n\n\t// Sets many values\n\tif ( toType( key ) === \"object\" ) {\n\t\tchainable = true;\n\t\tfor ( i in key ) {\n\t\t\taccess( elems, fn, i, key[ i ], true, emptyGet, raw );\n\t\t}\n\n\t// Sets one value\n\t} else if ( value !== undefined ) {\n\t\tchainable = true;\n\n\t\tif ( !isFunction( value ) ) {\n\t\t\traw = true;\n\t\t}\n\n\t\tif ( bulk ) {\n\n\t\t\t// Bulk operations run against the entire set\n\t\t\tif ( raw ) {\n\t\t\t\tfn.call( elems, value );\n\t\t\t\tfn = null;\n\n\t\t\t// ...except when executing function values\n\t\t\t} else {\n\t\t\t\tbulk = fn;\n\t\t\t\tfn = function( elem, _key, value ) {\n\t\t\t\t\treturn bulk.call( jQuery( elem ), value );\n\t\t\t\t};\n\t\t\t}\n\t\t}\n\n\t\tif ( fn ) {\n\t\t\tfor ( ; i < len; i++ ) {\n\t\t\t\tfn(\n\t\t\t\t\telems[ i ], key, raw ?\n\t\t\t\t\t\tvalue :\n\t\t\t\t\t\tvalue.call( elems[ i ], i, fn( elems[ i ], key ) )\n\t\t\t\t);\n\t\t\t}\n\t\t}\n\t}\n\n\tif ( chainable ) {\n\t\treturn elems;\n\t}\n\n\t// Gets\n\tif ( bulk ) {\n\t\treturn fn.call( elems );\n\t}\n\n\treturn len ? fn( elems[ 0 ], key ) : emptyGet;\n};\n\n\n// Matches dashed string for camelizing\nvar rmsPrefix = /^-ms-/,\n\trdashAlpha = /-([a-z])/g;\n\n// Used by camelCase as callback to replace()\nfunction fcamelCase( _all, letter ) {\n\treturn letter.toUpperCase();\n}\n\n// Convert dashed to camelCase; used by the css and data modules\n// Support: IE <=9 - 11, Edge 12 - 15\n// Microsoft forgot to hump their vendor prefix (#9572)\nfunction camelCase( string ) {\n\treturn string.replace( rmsPrefix, \"ms-\" ).replace( rdashAlpha, fcamelCase );\n}\nvar acceptData = function( owner ) {\n\n\t// Accepts only:\n\t// - Node\n\t// - Node.ELEMENT_NODE\n\t// - Node.DOCUMENT_NODE\n\t// - Object\n\t// - Any\n\treturn owner.nodeType === 1 || owner.nodeType === 9 || !( +owner.nodeType );\n};\n\n\n\n\nfunction Data() {\n\tthis.expando = jQuery.expando + Data.uid++;\n}\n\nData.uid = 1;\n\nData.prototype = {\n\n\tcache: function( owner ) {\n\n\t\t// Check if the owner object already has a cache\n\t\tvar value = owner[ this.expando ];\n\n\t\t// If not, create one\n\t\tif ( !value ) {\n\t\t\tvalue = {};\n\n\t\t\t// We can accept data for non-element nodes in modern browsers,\n\t\t\t// but we should not, see #8335.\n\t\t\t// Always return an empty object.\n\t\t\tif ( acceptData( owner ) ) {\n\n\t\t\t\t// If it is a node unlikely to be stringify-ed or looped over\n\t\t\t\t// use plain assignment\n\t\t\t\tif ( owner.nodeType ) {\n\t\t\t\t\towner[ this.expando ] = value;\n\n\t\t\t\t// Otherwise secure it in a non-enumerable property\n\t\t\t\t// configurable must be true to allow the property to be\n\t\t\t\t// deleted when data is removed\n\t\t\t\t} else {\n\t\t\t\t\tObject.defineProperty( owner, this.expando, {\n\t\t\t\t\t\tvalue: value,\n\t\t\t\t\t\tconfigurable: true\n\t\t\t\t\t} );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn value;\n\t},\n\tset: function( owner, data, value ) {\n\t\tvar prop,\n\t\t\tcache = this.cache( owner );\n\n\t\t// Handle: [ owner, key, value ] args\n\t\t// Always use camelCase key (gh-2257)\n\t\tif ( typeof data === \"string\" ) {\n\t\t\tcache[ camelCase( data ) ] = value;\n\n\t\t// Handle: [ owner, { properties } ] args\n\t\t} else {\n\n\t\t\t// Copy the properties one-by-one to the cache object\n\t\t\tfor ( prop in data ) {\n\t\t\t\tcache[ camelCase( prop ) ] = data[ prop ];\n\t\t\t}\n\t\t}\n\t\treturn cache;\n\t},\n\tget: function( owner, key ) {\n\t\treturn key === undefined ?\n\t\t\tthis.cache( owner ) :\n\n\t\t\t// Always use camelCase key (gh-2257)\n\t\t\towner[ this.expando ] && owner[ this.expando ][ camelCase( key ) ];\n\t},\n\taccess: function( owner, key, value ) {\n\n\t\t// In cases where either:\n\t\t//\n\t\t// 1. No key was specified\n\t\t// 2. A string key was specified, but no value provided\n\t\t//\n\t\t// Take the \"read\" path and allow the get method to determine\n\t\t// which value to return, respectively either:\n\t\t//\n\t\t// 1. The entire cache object\n\t\t// 2. The data stored at the key\n\t\t//\n\t\tif ( key === undefined ||\n\t\t\t\t( ( key && typeof key === \"string\" ) && value === undefined ) ) {\n\n\t\t\treturn this.get( owner, key );\n\t\t}\n\n\t\t// When the key is not a string, or both a key and value\n\t\t// are specified, set or extend (existing objects) with either:\n\t\t//\n\t\t// 1. An object of properties\n\t\t// 2. A key and value\n\t\t//\n\t\tthis.set( owner, key, value );\n\n\t\t// Since the \"set\" path can have two possible entry points\n\t\t// return the expected data based on which path was taken[*]\n\t\treturn value !== undefined ? value : key;\n\t},\n\tremove: function( owner, key ) {\n\t\tvar i,\n\t\t\tcache = owner[ this.expando ];\n\n\t\tif ( cache === undefined ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( key !== undefined ) {\n\n\t\t\t// Support array or space separated string of keys\n\t\t\tif ( Array.isArray( key ) ) {\n\n\t\t\t\t// If key is an array of keys...\n\t\t\t\t// We always set camelCase keys, so remove that.\n\t\t\t\tkey = key.map( camelCase );\n\t\t\t} else {\n\t\t\t\tkey = camelCase( key );\n\n\t\t\t\t// If a key with the spaces exists, use it.\n\t\t\t\t// Otherwise, create an array by matching non-whitespace\n\t\t\t\tkey = key in cache ?\n\t\t\t\t\t[ key ] :\n\t\t\t\t\t( key.match( rnothtmlwhite ) || [] );\n\t\t\t}\n\n\t\t\ti = key.length;\n\n\t\t\twhile ( i-- ) {\n\t\t\t\tdelete cache[ key[ i ] ];\n\t\t\t}\n\t\t}\n\n\t\t// Remove the expando if there's no more data\n\t\tif ( key === undefined || jQuery.isEmptyObject( cache ) ) {\n\n\t\t\t// Support: Chrome <=35 - 45\n\t\t\t// Webkit & Blink performance suffers when deleting properties\n\t\t\t// from DOM nodes, so set to undefined instead\n\t\t\t// https://bugs.chromium.org/p/chromium/issues/detail?id=378607 (bug restricted)\n\t\t\tif ( owner.nodeType ) {\n\t\t\t\towner[ this.expando ] = undefined;\n\t\t\t} else {\n\t\t\t\tdelete owner[ this.expando ];\n\t\t\t}\n\t\t}\n\t},\n\thasData: function( owner ) {\n\t\tvar cache = owner[ this.expando ];\n\t\treturn cache !== undefined && !jQuery.isEmptyObject( cache );\n\t}\n};\nvar dataPriv = new Data();\n\nvar dataUser = new Data();\n\n\n\n//\tImplementation Summary\n//\n//\t1. Enforce API surface and semantic compatibility with 1.9.x branch\n//\t2. Improve the module's maintainability by reducing the storage\n//\t\tpaths to a single mechanism.\n//\t3. Use the same single mechanism to support \"private\" and \"user\" data.\n//\t4. _Never_ expose \"private\" data to user code (TODO: Drop _data, _removeData)\n//\t5. Avoid exposing implementation details on user objects (eg. expando properties)\n//\t6. Provide a clear path for implementation upgrade to WeakMap in 2014\n\nvar rbrace = /^(?:\\{[\\w\\W]*\\}|\\[[\\w\\W]*\\])$/,\n\trmultiDash = /[A-Z]/g;\n\nfunction getData( data ) {\n\tif ( data === \"true\" ) {\n\t\treturn true;\n\t}\n\n\tif ( data === \"false\" ) {\n\t\treturn false;\n\t}\n\n\tif ( data === \"null\" ) {\n\t\treturn null;\n\t}\n\n\t// Only convert to a number if it doesn't change the string\n\tif ( data === +data + \"\" ) {\n\t\treturn +data;\n\t}\n\n\tif ( rbrace.test( data ) ) {\n\t\treturn JSON.parse( data );\n\t}\n\n\treturn data;\n}\n\nfunction dataAttr( elem, key, data ) {\n\tvar name;\n\n\t// If nothing was found internally, try to fetch any\n\t// data from the HTML5 data-* attribute\n\tif ( data === undefined && elem.nodeType === 1 ) {\n\t\tname = \"data-\" + key.replace( rmultiDash, \"-$&\" ).toLowerCase();\n\t\tdata = elem.getAttribute( name );\n\n\t\tif ( typeof data === \"string\" ) {\n\t\t\ttry {\n\t\t\t\tdata = getData( data );\n\t\t\t} catch ( e ) {}\n\n\t\t\t// Make sure we set the data so it isn't changed later\n\t\t\tdataUser.set( elem, key, data );\n\t\t} else {\n\t\t\tdata = undefined;\n\t\t}\n\t}\n\treturn data;\n}\n\njQuery.extend( {\n\thasData: function( elem ) {\n\t\treturn dataUser.hasData( elem ) || dataPriv.hasData( elem );\n\t},\n\n\tdata: function( elem, name, data ) {\n\t\treturn dataUser.access( elem, name, data );\n\t},\n\n\tremoveData: function( elem, name ) {\n\t\tdataUser.remove( elem, name );\n\t},\n\n\t// TODO: Now that all calls to _data and _removeData have been replaced\n\t// with direct calls to dataPriv methods, these can be deprecated.\n\t_data: function( elem, name, data ) {\n\t\treturn dataPriv.access( elem, name, data );\n\t},\n\n\t_removeData: function( elem, name ) {\n\t\tdataPriv.remove( elem, name );\n\t}\n} );\n\njQuery.fn.extend( {\n\tdata: function( key, value ) {\n\t\tvar i, name, data,\n\t\t\telem = this[ 0 ],\n\t\t\tattrs = elem && elem.attributes;\n\n\t\t// Gets all values\n\t\tif ( key === undefined ) {\n\t\t\tif ( this.length ) {\n\t\t\t\tdata = dataUser.get( elem );\n\n\t\t\t\tif ( elem.nodeType === 1 && !dataPriv.get( elem, \"hasDataAttrs\" ) ) {\n\t\t\t\t\ti = attrs.length;\n\t\t\t\t\twhile ( i-- ) {\n\n\t\t\t\t\t\t// Support: IE 11 only\n\t\t\t\t\t\t// The attrs elements can be null (#14894)\n\t\t\t\t\t\tif ( attrs[ i ] ) {\n\t\t\t\t\t\t\tname = attrs[ i ].name;\n\t\t\t\t\t\t\tif ( name.indexOf( \"data-\" ) === 0 ) {\n\t\t\t\t\t\t\t\tname = camelCase( name.slice( 5 ) );\n\t\t\t\t\t\t\t\tdataAttr( elem, name, data[ name ] );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tdataPriv.set( elem, \"hasDataAttrs\", true );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn data;\n\t\t}\n\n\t\t// Sets multiple values\n\t\tif ( typeof key === \"object\" ) {\n\t\t\treturn this.each( function() {\n\t\t\t\tdataUser.set( this, key );\n\t\t\t} );\n\t\t}\n\n\t\treturn access( this, function( value ) {\n\t\t\tvar data;\n\n\t\t\t// The calling jQuery object (element matches) is not empty\n\t\t\t// (and therefore has an element appears at this[ 0 ]) and the\n\t\t\t// `value` parameter was not undefined. An empty jQuery object\n\t\t\t// will result in `undefined` for elem = this[ 0 ] which will\n\t\t\t// throw an exception if an attempt to read a data cache is made.\n\t\t\tif ( elem && value === undefined ) {\n\n\t\t\t\t// Attempt to get data from the cache\n\t\t\t\t// The key will always be camelCased in Data\n\t\t\t\tdata = dataUser.get( elem, key );\n\t\t\t\tif ( data !== undefined ) {\n\t\t\t\t\treturn data;\n\t\t\t\t}\n\n\t\t\t\t// Attempt to \"discover\" the data in\n\t\t\t\t// HTML5 custom data-* attrs\n\t\t\t\tdata = dataAttr( elem, key );\n\t\t\t\tif ( data !== undefined ) {\n\t\t\t\t\treturn data;\n\t\t\t\t}\n\n\t\t\t\t// We tried really hard, but the data doesn't exist.\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// Set the data...\n\t\t\tthis.each( function() {\n\n\t\t\t\t// We always store the camelCased key\n\t\t\t\tdataUser.set( this, key, value );\n\t\t\t} );\n\t\t}, null, value, arguments.length > 1, null, true );\n\t},\n\n\tremoveData: function( key ) {\n\t\treturn this.each( function() {\n\t\t\tdataUser.remove( this, key );\n\t\t} );\n\t}\n} );\n\n\njQuery.extend( {\n\tqueue: function( elem, type, data ) {\n\t\tvar queue;\n\n\t\tif ( elem ) {\n\t\t\ttype = ( type || \"fx\" ) + \"queue\";\n\t\t\tqueue = dataPriv.get( elem, type );\n\n\t\t\t// Speed up dequeue by getting out quickly if this is just a lookup\n\t\t\tif ( data ) {\n\t\t\t\tif ( !queue || Array.isArray( data ) ) {\n\t\t\t\t\tqueue = dataPriv.access( elem, type, jQuery.makeArray( data ) );\n\t\t\t\t} else {\n\t\t\t\t\tqueue.push( data );\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn queue || [];\n\t\t}\n\t},\n\n\tdequeue: function( elem, type ) {\n\t\ttype = type || \"fx\";\n\n\t\tvar queue = jQuery.queue( elem, type ),\n\t\t\tstartLength = queue.length,\n\t\t\tfn = queue.shift(),\n\t\t\thooks = jQuery._queueHooks( elem, type ),\n\t\t\tnext = function() {\n\t\t\t\tjQuery.dequeue( elem, type );\n\t\t\t};\n\n\t\t// If the fx queue is dequeued, always remove the progress sentinel\n\t\tif ( fn === \"inprogress\" ) {\n\t\t\tfn = queue.shift();\n\t\t\tstartLength--;\n\t\t}\n\n\t\tif ( fn ) {\n\n\t\t\t// Add a progress sentinel to prevent the fx queue from being\n\t\t\t// automatically dequeued\n\t\t\tif ( type === \"fx\" ) {\n\t\t\t\tqueue.unshift( \"inprogress\" );\n\t\t\t}\n\n\t\t\t// Clear up the last queue stop function\n\t\t\tdelete hooks.stop;\n\t\t\tfn.call( elem, next, hooks );\n\t\t}\n\n\t\tif ( !startLength && hooks ) {\n\t\t\thooks.empty.fire();\n\t\t}\n\t},\n\n\t// Not public - generate a queueHooks object, or return the current one\n\t_queueHooks: function( elem, type ) {\n\t\tvar key = type + \"queueHooks\";\n\t\treturn dataPriv.get( elem, key ) || dataPriv.access( elem, key, {\n\t\t\tempty: jQuery.Callbacks( \"once memory\" ).add( function() {\n\t\t\t\tdataPriv.remove( elem, [ type + \"queue\", key ] );\n\t\t\t} )\n\t\t} );\n\t}\n} );\n\njQuery.fn.extend( {\n\tqueue: function( type, data ) {\n\t\tvar setter = 2;\n\n\t\tif ( typeof type !== \"string\" ) {\n\t\t\tdata = type;\n\t\t\ttype = \"fx\";\n\t\t\tsetter--;\n\t\t}\n\n\t\tif ( arguments.length < setter ) {\n\t\t\treturn jQuery.queue( this[ 0 ], type );\n\t\t}\n\n\t\treturn data === undefined ?\n\t\t\tthis :\n\t\t\tthis.each( function() {\n\t\t\t\tvar queue = jQuery.queue( this, type, data );\n\n\t\t\t\t// Ensure a hooks for this queue\n\t\t\t\tjQuery._queueHooks( this, type );\n\n\t\t\t\tif ( type === \"fx\" && queue[ 0 ] !== \"inprogress\" ) {\n\t\t\t\t\tjQuery.dequeue( this, type );\n\t\t\t\t}\n\t\t\t} );\n\t},\n\tdequeue: function( type ) {\n\t\treturn this.each( function() {\n\t\t\tjQuery.dequeue( this, type );\n\t\t} );\n\t},\n\tclearQueue: function( type ) {\n\t\treturn this.queue( type || \"fx\", [] );\n\t},\n\n\t// Get a promise resolved when queues of a certain type\n\t// are emptied (fx is the type by default)\n\tpromise: function( type, obj ) {\n\t\tvar tmp,\n\t\t\tcount = 1,\n\t\t\tdefer = jQuery.Deferred(),\n\t\t\telements = this,\n\t\t\ti = this.length,\n\t\t\tresolve = function() {\n\t\t\t\tif ( !( --count ) ) {\n\t\t\t\t\tdefer.resolveWith( elements, [ elements ] );\n\t\t\t\t}\n\t\t\t};\n\n\t\tif ( typeof type !== \"string\" ) {\n\t\t\tobj = type;\n\t\t\ttype = undefined;\n\t\t}\n\t\ttype = type || \"fx\";\n\n\t\twhile ( i-- ) {\n\t\t\ttmp = dataPriv.get( elements[ i ], type + \"queueHooks\" );\n\t\t\tif ( tmp && tmp.empty ) {\n\t\t\t\tcount++;\n\t\t\t\ttmp.empty.add( resolve );\n\t\t\t}\n\t\t}\n\t\tresolve();\n\t\treturn defer.promise( obj );\n\t}\n} );\nvar pnum = ( /[+-]?(?:\\d*\\.|)\\d+(?:[eE][+-]?\\d+|)/ ).source;\n\nvar rcssNum = new RegExp( \"^(?:([+-])=|)(\" + pnum + \")([a-z%]*)$\", \"i\" );\n\n\nvar cssExpand = [ \"Top\", \"Right\", \"Bottom\", \"Left\" ];\n\nvar documentElement = document.documentElement;\n\n\n\n\tvar isAttached = function( elem ) {\n\t\t\treturn jQuery.contains( elem.ownerDocument, elem );\n\t\t},\n\t\tcomposed = { composed: true };\n\n\t// Support: IE 9 - 11+, Edge 12 - 18+, iOS 10.0 - 10.2 only\n\t// Check attachment across shadow DOM boundaries when possible (gh-3504)\n\t// Support: iOS 10.0-10.2 only\n\t// Early iOS 10 versions support `attachShadow` but not `getRootNode`,\n\t// leading to errors. We need to check for `getRootNode`.\n\tif ( documentElement.getRootNode ) {\n\t\tisAttached = function( elem ) {\n\t\t\treturn jQuery.contains( elem.ownerDocument, elem ) ||\n\t\t\t\telem.getRootNode( composed ) === elem.ownerDocument;\n\t\t};\n\t}\nvar isHiddenWithinTree = function( elem, el ) {\n\n\t\t// isHiddenWithinTree might be called from jQuery#filter function;\n\t\t// in that case, element will be second argument\n\t\telem = el || elem;\n\n\t\t// Inline style trumps all\n\t\treturn elem.style.display === \"none\" ||\n\t\t\telem.style.display === \"\" &&\n\n\t\t\t// Otherwise, check computed style\n\t\t\t// Support: Firefox <=43 - 45\n\t\t\t// Disconnected elements can have computed display: none, so first confirm that elem is\n\t\t\t// in the document.\n\t\t\tisAttached( elem ) &&\n\n\t\t\tjQuery.css( elem, \"display\" ) === \"none\";\n\t};\n\n\n\nfunction adjustCSS( elem, prop, valueParts, tween ) {\n\tvar adjusted, scale,\n\t\tmaxIterations = 20,\n\t\tcurrentValue = tween ?\n\t\t\tfunction() {\n\t\t\t\treturn tween.cur();\n\t\t\t} :\n\t\t\tfunction() {\n\t\t\t\treturn jQuery.css( elem, prop, \"\" );\n\t\t\t},\n\t\tinitial = currentValue(),\n\t\tunit = valueParts && valueParts[ 3 ] || ( jQuery.cssNumber[ prop ] ? \"\" : \"px\" ),\n\n\t\t// Starting value computation is required for potential unit mismatches\n\t\tinitialInUnit = elem.nodeType &&\n\t\t\t( jQuery.cssNumber[ prop ] || unit !== \"px\" && +initial ) &&\n\t\t\trcssNum.exec( jQuery.css( elem, prop ) );\n\n\tif ( initialInUnit && initialInUnit[ 3 ] !== unit ) {\n\n\t\t// Support: Firefox <=54\n\t\t// Halve the iteration target value to prevent interference from CSS upper bounds (gh-2144)\n\t\tinitial = initial / 2;\n\n\t\t// Trust units reported by jQuery.css\n\t\tunit = unit || initialInUnit[ 3 ];\n\n\t\t// Iteratively approximate from a nonzero starting point\n\t\tinitialInUnit = +initial || 1;\n\n\t\twhile ( maxIterations-- ) {\n\n\t\t\t// Evaluate and update our best guess (doubling guesses that zero out).\n\t\t\t// Finish if the scale equals or crosses 1 (making the old*new product non-positive).\n\t\t\tjQuery.style( elem, prop, initialInUnit + unit );\n\t\t\tif ( ( 1 - scale ) * ( 1 - ( scale = currentValue() / initial || 0.5 ) ) <= 0 ) {\n\t\t\t\tmaxIterations = 0;\n\t\t\t}\n\t\t\tinitialInUnit = initialInUnit / scale;\n\n\t\t}\n\n\t\tinitialInUnit = initialInUnit * 2;\n\t\tjQuery.style( elem, prop, initialInUnit + unit );\n\n\t\t// Make sure we update the tween properties later on\n\t\tvalueParts = valueParts || [];\n\t}\n\n\tif ( valueParts ) {\n\t\tinitialInUnit = +initialInUnit || +initial || 0;\n\n\t\t// Apply relative offset (+=/-=) if specified\n\t\tadjusted = valueParts[ 1 ] ?\n\t\t\tinitialInUnit + ( valueParts[ 1 ] + 1 ) * valueParts[ 2 ] :\n\t\t\t+valueParts[ 2 ];\n\t\tif ( tween ) {\n\t\t\ttween.unit = unit;\n\t\t\ttween.start = initialInUnit;\n\t\t\ttween.end = adjusted;\n\t\t}\n\t}\n\treturn adjusted;\n}\n\n\nvar defaultDisplayMap = {};\n\nfunction getDefaultDisplay( elem ) {\n\tvar temp,\n\t\tdoc = elem.ownerDocument,\n\t\tnodeName = elem.nodeName,\n\t\tdisplay = defaultDisplayMap[ nodeName ];\n\n\tif ( display ) {\n\t\treturn display;\n\t}\n\n\ttemp = doc.body.appendChild( doc.createElement( nodeName ) );\n\tdisplay = jQuery.css( temp, \"display\" );\n\n\ttemp.parentNode.removeChild( temp );\n\n\tif ( display === \"none\" ) {\n\t\tdisplay = \"block\";\n\t}\n\tdefaultDisplayMap[ nodeName ] = display;\n\n\treturn display;\n}\n\nfunction showHide( elements, show ) {\n\tvar display, elem,\n\t\tvalues = [],\n\t\tindex = 0,\n\t\tlength = elements.length;\n\n\t// Determine new display value for elements that need to change\n\tfor ( ; index < length; index++ ) {\n\t\telem = elements[ index ];\n\t\tif ( !elem.style ) {\n\t\t\tcontinue;\n\t\t}\n\n\t\tdisplay = elem.style.display;\n\t\tif ( show ) {\n\n\t\t\t// Since we force visibility upon cascade-hidden elements, an immediate (and slow)\n\t\t\t// check is required in this first loop unless we have a nonempty display value (either\n\t\t\t// inline or about-to-be-restored)\n\t\t\tif ( display === \"none\" ) {\n\t\t\t\tvalues[ index ] = dataPriv.get( elem, \"display\" ) || null;\n\t\t\t\tif ( !values[ index ] ) {\n\t\t\t\t\telem.style.display = \"\";\n\t\t\t\t}\n\t\t\t}\n\t\t\tif ( elem.style.display === \"\" && isHiddenWithinTree( elem ) ) {\n\t\t\t\tvalues[ index ] = getDefaultDisplay( elem );\n\t\t\t}\n\t\t} else {\n\t\t\tif ( display !== \"none\" ) {\n\t\t\t\tvalues[ index ] = \"none\";\n\n\t\t\t\t// Remember what we're overwriting\n\t\t\t\tdataPriv.set( elem, \"display\", display );\n\t\t\t}\n\t\t}\n\t}\n\n\t// Set the display of the elements in a second loop to avoid constant reflow\n\tfor ( index = 0; index < length; index++ ) {\n\t\tif ( values[ index ] != null ) {\n\t\t\telements[ index ].style.display = values[ index ];\n\t\t}\n\t}\n\n\treturn elements;\n}\n\njQuery.fn.extend( {\n\tshow: function() {\n\t\treturn showHide( this, true );\n\t},\n\thide: function() {\n\t\treturn showHide( this );\n\t},\n\ttoggle: function( state ) {\n\t\tif ( typeof state === \"boolean\" ) {\n\t\t\treturn state ? this.show() : this.hide();\n\t\t}\n\n\t\treturn this.each( function() {\n\t\t\tif ( isHiddenWithinTree( this ) ) {\n\t\t\t\tjQuery( this ).show();\n\t\t\t} else {\n\t\t\t\tjQuery( this ).hide();\n\t\t\t}\n\t\t} );\n\t}\n} );\nvar rcheckableType = ( /^(?:checkbox|radio)$/i );\n\nvar rtagName = ( /<([a-z][^\\/\\0>\\x20\\t\\r\\n\\f]*)/i );\n\nvar rscriptType = ( /^$|^module$|\\/(?:java|ecma)script/i );\n\n\n\n( function() {\n\tvar fragment = document.createDocumentFragment(),\n\t\tdiv = fragment.appendChild( document.createElement( \"div\" ) ),\n\t\tinput = document.createElement( \"input\" );\n\n\t// Support: Android 4.0 - 4.3 only\n\t// Check state lost if the name is set (#11217)\n\t// Support: Windows Web Apps (WWA)\n\t// `name` and `type` must use .setAttribute for WWA (#14901)\n\tinput.setAttribute( \"type\", \"radio\" );\n\tinput.setAttribute( \"checked\", \"checked\" );\n\tinput.setAttribute( \"name\", \"t\" );\n\n\tdiv.appendChild( input );\n\n\t// Support: Android <=4.1 only\n\t// Older WebKit doesn't clone checked state correctly in fragments\n\tsupport.checkClone = div.cloneNode( true ).cloneNode( true ).lastChild.checked;\n\n\t// Support: IE <=11 only\n\t// Make sure textarea (and checkbox) defaultValue is properly cloned\n\tdiv.innerHTML = \"\";\n\tsupport.noCloneChecked = !!div.cloneNode( true ).lastChild.defaultValue;\n\n\t// Support: IE <=9 only\n\t// IE <=9 replaces \";\n\tsupport.option = !!div.lastChild;\n} )();\n\n\n// We have to close these tags to support XHTML (#13200)\nvar wrapMap = {\n\n\t// XHTML parsers do not magically insert elements in the\n\t// same way that tag soup parsers do. So we cannot shorten\n\t// this by omitting or other required elements.\n\tthead: [ 1, \"\", \"
\" ],\n\tcol: [ 2, \"\", \"
\" ],\n\ttr: [ 2, \"\", \"
\" ],\n\ttd: [ 3, \"\", \"
\" ],\n\n\t_default: [ 0, \"\", \"\" ]\n};\n\nwrapMap.tbody = wrapMap.tfoot = wrapMap.colgroup = wrapMap.caption = wrapMap.thead;\nwrapMap.th = wrapMap.td;\n\n// Support: IE <=9 only\nif ( !support.option ) {\n\twrapMap.optgroup = wrapMap.option = [ 1, \"\" ];\n}\n\n\nfunction getAll( context, tag ) {\n\n\t// Support: IE <=9 - 11 only\n\t// Use typeof to avoid zero-argument method invocation on host objects (#15151)\n\tvar ret;\n\n\tif ( typeof context.getElementsByTagName !== \"undefined\" ) {\n\t\tret = context.getElementsByTagName( tag || \"*\" );\n\n\t} else if ( typeof context.querySelectorAll !== \"undefined\" ) {\n\t\tret = context.querySelectorAll( tag || \"*\" );\n\n\t} else {\n\t\tret = [];\n\t}\n\n\tif ( tag === undefined || tag && nodeName( context, tag ) ) {\n\t\treturn jQuery.merge( [ context ], ret );\n\t}\n\n\treturn ret;\n}\n\n\n// Mark scripts as having already been evaluated\nfunction setGlobalEval( elems, refElements ) {\n\tvar i = 0,\n\t\tl = elems.length;\n\n\tfor ( ; i < l; i++ ) {\n\t\tdataPriv.set(\n\t\t\telems[ i ],\n\t\t\t\"globalEval\",\n\t\t\t!refElements || dataPriv.get( refElements[ i ], \"globalEval\" )\n\t\t);\n\t}\n}\n\n\nvar rhtml = /<|&#?\\w+;/;\n\nfunction buildFragment( elems, context, scripts, selection, ignored ) {\n\tvar elem, tmp, tag, wrap, attached, j,\n\t\tfragment = context.createDocumentFragment(),\n\t\tnodes = [],\n\t\ti = 0,\n\t\tl = elems.length;\n\n\tfor ( ; i < l; i++ ) {\n\t\telem = elems[ i ];\n\n\t\tif ( elem || elem === 0 ) {\n\n\t\t\t// Add nodes directly\n\t\t\tif ( toType( elem ) === \"object\" ) {\n\n\t\t\t\t// Support: Android <=4.0 only, PhantomJS 1 only\n\t\t\t\t// push.apply(_, arraylike) throws on ancient WebKit\n\t\t\t\tjQuery.merge( nodes, elem.nodeType ? [ elem ] : elem );\n\n\t\t\t// Convert non-html into a text node\n\t\t\t} else if ( !rhtml.test( elem ) ) {\n\t\t\t\tnodes.push( context.createTextNode( elem ) );\n\n\t\t\t// Convert html into DOM nodes\n\t\t\t} else {\n\t\t\t\ttmp = tmp || fragment.appendChild( context.createElement( \"div\" ) );\n\n\t\t\t\t// Deserialize a standard representation\n\t\t\t\ttag = ( rtagName.exec( elem ) || [ \"\", \"\" ] )[ 1 ].toLowerCase();\n\t\t\t\twrap = wrapMap[ tag ] || wrapMap._default;\n\t\t\t\ttmp.innerHTML = wrap[ 1 ] + jQuery.htmlPrefilter( elem ) + wrap[ 2 ];\n\n\t\t\t\t// Descend through wrappers to the right content\n\t\t\t\tj = wrap[ 0 ];\n\t\t\t\twhile ( j-- ) {\n\t\t\t\t\ttmp = tmp.lastChild;\n\t\t\t\t}\n\n\t\t\t\t// Support: Android <=4.0 only, PhantomJS 1 only\n\t\t\t\t// push.apply(_, arraylike) throws on ancient WebKit\n\t\t\t\tjQuery.merge( nodes, tmp.childNodes );\n\n\t\t\t\t// Remember the top-level container\n\t\t\t\ttmp = fragment.firstChild;\n\n\t\t\t\t// Ensure the created nodes are orphaned (#12392)\n\t\t\t\ttmp.textContent = \"\";\n\t\t\t}\n\t\t}\n\t}\n\n\t// Remove wrapper from fragment\n\tfragment.textContent = \"\";\n\n\ti = 0;\n\twhile ( ( elem = nodes[ i++ ] ) ) {\n\n\t\t// Skip elements already in the context collection (trac-4087)\n\t\tif ( selection && jQuery.inArray( elem, selection ) > -1 ) {\n\t\t\tif ( ignored ) {\n\t\t\t\tignored.push( elem );\n\t\t\t}\n\t\t\tcontinue;\n\t\t}\n\n\t\tattached = isAttached( elem );\n\n\t\t// Append to fragment\n\t\ttmp = getAll( fragment.appendChild( elem ), \"script\" );\n\n\t\t// Preserve script evaluation history\n\t\tif ( attached ) {\n\t\t\tsetGlobalEval( tmp );\n\t\t}\n\n\t\t// Capture executables\n\t\tif ( scripts ) {\n\t\t\tj = 0;\n\t\t\twhile ( ( elem = tmp[ j++ ] ) ) {\n\t\t\t\tif ( rscriptType.test( elem.type || \"\" ) ) {\n\t\t\t\t\tscripts.push( elem );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn fragment;\n}\n\n\nvar rtypenamespace = /^([^.]*)(?:\\.(.+)|)/;\n\nfunction returnTrue() {\n\treturn true;\n}\n\nfunction returnFalse() {\n\treturn false;\n}\n\n// Support: IE <=9 - 11+\n// focus() and blur() are asynchronous, except when they are no-op.\n// So expect focus to be synchronous when the element is already active,\n// and blur to be synchronous when the element is not already active.\n// (focus and blur are always synchronous in other supported browsers,\n// this just defines when we can count on it).\nfunction expectSync( elem, type ) {\n\treturn ( elem === safeActiveElement() ) === ( type === \"focus\" );\n}\n\n// Support: IE <=9 only\n// Accessing document.activeElement can throw unexpectedly\n// https://bugs.jquery.com/ticket/13393\nfunction safeActiveElement() {\n\ttry {\n\t\treturn document.activeElement;\n\t} catch ( err ) { }\n}\n\nfunction on( elem, types, selector, data, fn, one ) {\n\tvar origFn, type;\n\n\t// Types can be a map of types/handlers\n\tif ( typeof types === \"object\" ) {\n\n\t\t// ( types-Object, selector, data )\n\t\tif ( typeof selector !== \"string\" ) {\n\n\t\t\t// ( types-Object, data )\n\t\t\tdata = data || selector;\n\t\t\tselector = undefined;\n\t\t}\n\t\tfor ( type in types ) {\n\t\t\ton( elem, type, selector, data, types[ type ], one );\n\t\t}\n\t\treturn elem;\n\t}\n\n\tif ( data == null && fn == null ) {\n\n\t\t// ( types, fn )\n\t\tfn = selector;\n\t\tdata = selector = undefined;\n\t} else if ( fn == null ) {\n\t\tif ( typeof selector === \"string\" ) {\n\n\t\t\t// ( types, selector, fn )\n\t\t\tfn = data;\n\t\t\tdata = undefined;\n\t\t} else {\n\n\t\t\t// ( types, data, fn )\n\t\t\tfn = data;\n\t\t\tdata = selector;\n\t\t\tselector = undefined;\n\t\t}\n\t}\n\tif ( fn === false ) {\n\t\tfn = returnFalse;\n\t} else if ( !fn ) {\n\t\treturn elem;\n\t}\n\n\tif ( one === 1 ) {\n\t\torigFn = fn;\n\t\tfn = function( event ) {\n\n\t\t\t// Can use an empty set, since event contains the info\n\t\t\tjQuery().off( event );\n\t\t\treturn origFn.apply( this, arguments );\n\t\t};\n\n\t\t// Use same guid so caller can remove using origFn\n\t\tfn.guid = origFn.guid || ( origFn.guid = jQuery.guid++ );\n\t}\n\treturn elem.each( function() {\n\t\tjQuery.event.add( this, types, fn, data, selector );\n\t} );\n}\n\n/*\n * Helper functions for managing events -- not part of the public interface.\n * Props to Dean Edwards' addEvent library for many of the ideas.\n */\njQuery.event = {\n\n\tglobal: {},\n\n\tadd: function( elem, types, handler, data, selector ) {\n\n\t\tvar handleObjIn, eventHandle, tmp,\n\t\t\tevents, t, handleObj,\n\t\t\tspecial, handlers, type, namespaces, origType,\n\t\t\telemData = dataPriv.get( elem );\n\n\t\t// Only attach events to objects that accept data\n\t\tif ( !acceptData( elem ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Caller can pass in an object of custom data in lieu of the handler\n\t\tif ( handler.handler ) {\n\t\t\thandleObjIn = handler;\n\t\t\thandler = handleObjIn.handler;\n\t\t\tselector = handleObjIn.selector;\n\t\t}\n\n\t\t// Ensure that invalid selectors throw exceptions at attach time\n\t\t// Evaluate against documentElement in case elem is a non-element node (e.g., document)\n\t\tif ( selector ) {\n\t\t\tjQuery.find.matchesSelector( documentElement, selector );\n\t\t}\n\n\t\t// Make sure that the handler has a unique ID, used to find/remove it later\n\t\tif ( !handler.guid ) {\n\t\t\thandler.guid = jQuery.guid++;\n\t\t}\n\n\t\t// Init the element's event structure and main handler, if this is the first\n\t\tif ( !( events = elemData.events ) ) {\n\t\t\tevents = elemData.events = Object.create( null );\n\t\t}\n\t\tif ( !( eventHandle = elemData.handle ) ) {\n\t\t\teventHandle = elemData.handle = function( e ) {\n\n\t\t\t\t// Discard the second event of a jQuery.event.trigger() and\n\t\t\t\t// when an event is called after a page has unloaded\n\t\t\t\treturn typeof jQuery !== \"undefined\" && jQuery.event.triggered !== e.type ?\n\t\t\t\t\tjQuery.event.dispatch.apply( elem, arguments ) : undefined;\n\t\t\t};\n\t\t}\n\n\t\t// Handle multiple events separated by a space\n\t\ttypes = ( types || \"\" ).match( rnothtmlwhite ) || [ \"\" ];\n\t\tt = types.length;\n\t\twhile ( t-- ) {\n\t\t\ttmp = rtypenamespace.exec( types[ t ] ) || [];\n\t\t\ttype = origType = tmp[ 1 ];\n\t\t\tnamespaces = ( tmp[ 2 ] || \"\" ).split( \".\" ).sort();\n\n\t\t\t// There *must* be a type, no attaching namespace-only handlers\n\t\t\tif ( !type ) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\t// If event changes its type, use the special event handlers for the changed type\n\t\t\tspecial = jQuery.event.special[ type ] || {};\n\n\t\t\t// If selector defined, determine special event api type, otherwise given type\n\t\t\ttype = ( selector ? special.delegateType : special.bindType ) || type;\n\n\t\t\t// Update special based on newly reset type\n\t\t\tspecial = jQuery.event.special[ type ] || {};\n\n\t\t\t// handleObj is passed to all event handlers\n\t\t\thandleObj = jQuery.extend( {\n\t\t\t\ttype: type,\n\t\t\t\torigType: origType,\n\t\t\t\tdata: data,\n\t\t\t\thandler: handler,\n\t\t\t\tguid: handler.guid,\n\t\t\t\tselector: selector,\n\t\t\t\tneedsContext: selector && jQuery.expr.match.needsContext.test( selector ),\n\t\t\t\tnamespace: namespaces.join( \".\" )\n\t\t\t}, handleObjIn );\n\n\t\t\t// Init the event handler queue if we're the first\n\t\t\tif ( !( handlers = events[ type ] ) ) {\n\t\t\t\thandlers = events[ type ] = [];\n\t\t\t\thandlers.delegateCount = 0;\n\n\t\t\t\t// Only use addEventListener if the special events handler returns false\n\t\t\t\tif ( !special.setup ||\n\t\t\t\t\tspecial.setup.call( elem, data, namespaces, eventHandle ) === false ) {\n\n\t\t\t\t\tif ( elem.addEventListener ) {\n\t\t\t\t\t\telem.addEventListener( type, eventHandle );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif ( special.add ) {\n\t\t\t\tspecial.add.call( elem, handleObj );\n\n\t\t\t\tif ( !handleObj.handler.guid ) {\n\t\t\t\t\thandleObj.handler.guid = handler.guid;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Add to the element's handler list, delegates in front\n\t\t\tif ( selector ) {\n\t\t\t\thandlers.splice( handlers.delegateCount++, 0, handleObj );\n\t\t\t} else {\n\t\t\t\thandlers.push( handleObj );\n\t\t\t}\n\n\t\t\t// Keep track of which events have ever been used, for event optimization\n\t\t\tjQuery.event.global[ type ] = true;\n\t\t}\n\n\t},\n\n\t// Detach an event or set of events from an element\n\tremove: function( elem, types, handler, selector, mappedTypes ) {\n\n\t\tvar j, origCount, tmp,\n\t\t\tevents, t, handleObj,\n\t\t\tspecial, handlers, type, namespaces, origType,\n\t\t\telemData = dataPriv.hasData( elem ) && dataPriv.get( elem );\n\n\t\tif ( !elemData || !( events = elemData.events ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Once for each type.namespace in types; type may be omitted\n\t\ttypes = ( types || \"\" ).match( rnothtmlwhite ) || [ \"\" ];\n\t\tt = types.length;\n\t\twhile ( t-- ) {\n\t\t\ttmp = rtypenamespace.exec( types[ t ] ) || [];\n\t\t\ttype = origType = tmp[ 1 ];\n\t\t\tnamespaces = ( tmp[ 2 ] || \"\" ).split( \".\" ).sort();\n\n\t\t\t// Unbind all events (on this namespace, if provided) for the element\n\t\t\tif ( !type ) {\n\t\t\t\tfor ( type in events ) {\n\t\t\t\t\tjQuery.event.remove( elem, type + types[ t ], handler, selector, true );\n\t\t\t\t}\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tspecial = jQuery.event.special[ type ] || {};\n\t\t\ttype = ( selector ? special.delegateType : special.bindType ) || type;\n\t\t\thandlers = events[ type ] || [];\n\t\t\ttmp = tmp[ 2 ] &&\n\t\t\t\tnew RegExp( \"(^|\\\\.)\" + namespaces.join( \"\\\\.(?:.*\\\\.|)\" ) + \"(\\\\.|$)\" );\n\n\t\t\t// Remove matching events\n\t\t\torigCount = j = handlers.length;\n\t\t\twhile ( j-- ) {\n\t\t\t\thandleObj = handlers[ j ];\n\n\t\t\t\tif ( ( mappedTypes || origType === handleObj.origType ) &&\n\t\t\t\t\t( !handler || handler.guid === handleObj.guid ) &&\n\t\t\t\t\t( !tmp || tmp.test( handleObj.namespace ) ) &&\n\t\t\t\t\t( !selector || selector === handleObj.selector ||\n\t\t\t\t\t\tselector === \"**\" && handleObj.selector ) ) {\n\t\t\t\t\thandlers.splice( j, 1 );\n\n\t\t\t\t\tif ( handleObj.selector ) {\n\t\t\t\t\t\thandlers.delegateCount--;\n\t\t\t\t\t}\n\t\t\t\t\tif ( special.remove ) {\n\t\t\t\t\t\tspecial.remove.call( elem, handleObj );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Remove generic event handler if we removed something and no more handlers exist\n\t\t\t// (avoids potential for endless recursion during removal of special event handlers)\n\t\t\tif ( origCount && !handlers.length ) {\n\t\t\t\tif ( !special.teardown ||\n\t\t\t\t\tspecial.teardown.call( elem, namespaces, elemData.handle ) === false ) {\n\n\t\t\t\t\tjQuery.removeEvent( elem, type, elemData.handle );\n\t\t\t\t}\n\n\t\t\t\tdelete events[ type ];\n\t\t\t}\n\t\t}\n\n\t\t// Remove data and the expando if it's no longer used\n\t\tif ( jQuery.isEmptyObject( events ) ) {\n\t\t\tdataPriv.remove( elem, \"handle events\" );\n\t\t}\n\t},\n\n\tdispatch: function( nativeEvent ) {\n\n\t\tvar i, j, ret, matched, handleObj, handlerQueue,\n\t\t\targs = new Array( arguments.length ),\n\n\t\t\t// Make a writable jQuery.Event from the native event object\n\t\t\tevent = jQuery.event.fix( nativeEvent ),\n\n\t\t\thandlers = (\n\t\t\t\tdataPriv.get( this, \"events\" ) || Object.create( null )\n\t\t\t)[ event.type ] || [],\n\t\t\tspecial = jQuery.event.special[ event.type ] || {};\n\n\t\t// Use the fix-ed jQuery.Event rather than the (read-only) native event\n\t\targs[ 0 ] = event;\n\n\t\tfor ( i = 1; i < arguments.length; i++ ) {\n\t\t\targs[ i ] = arguments[ i ];\n\t\t}\n\n\t\tevent.delegateTarget = this;\n\n\t\t// Call the preDispatch hook for the mapped type, and let it bail if desired\n\t\tif ( special.preDispatch && special.preDispatch.call( this, event ) === false ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Determine handlers\n\t\thandlerQueue = jQuery.event.handlers.call( this, event, handlers );\n\n\t\t// Run delegates first; they may want to stop propagation beneath us\n\t\ti = 0;\n\t\twhile ( ( matched = handlerQueue[ i++ ] ) && !event.isPropagationStopped() ) {\n\t\t\tevent.currentTarget = matched.elem;\n\n\t\t\tj = 0;\n\t\t\twhile ( ( handleObj = matched.handlers[ j++ ] ) &&\n\t\t\t\t!event.isImmediatePropagationStopped() ) {\n\n\t\t\t\t// If the event is namespaced, then each handler is only invoked if it is\n\t\t\t\t// specially universal or its namespaces are a superset of the event's.\n\t\t\t\tif ( !event.rnamespace || handleObj.namespace === false ||\n\t\t\t\t\tevent.rnamespace.test( handleObj.namespace ) ) {\n\n\t\t\t\t\tevent.handleObj = handleObj;\n\t\t\t\t\tevent.data = handleObj.data;\n\n\t\t\t\t\tret = ( ( jQuery.event.special[ handleObj.origType ] || {} ).handle ||\n\t\t\t\t\t\thandleObj.handler ).apply( matched.elem, args );\n\n\t\t\t\t\tif ( ret !== undefined ) {\n\t\t\t\t\t\tif ( ( event.result = ret ) === false ) {\n\t\t\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\t\t\tevent.stopPropagation();\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Call the postDispatch hook for the mapped type\n\t\tif ( special.postDispatch ) {\n\t\t\tspecial.postDispatch.call( this, event );\n\t\t}\n\n\t\treturn event.result;\n\t},\n\n\thandlers: function( event, handlers ) {\n\t\tvar i, handleObj, sel, matchedHandlers, matchedSelectors,\n\t\t\thandlerQueue = [],\n\t\t\tdelegateCount = handlers.delegateCount,\n\t\t\tcur = event.target;\n\n\t\t// Find delegate handlers\n\t\tif ( delegateCount &&\n\n\t\t\t// Support: IE <=9\n\t\t\t// Black-hole SVG instance trees (trac-13180)\n\t\t\tcur.nodeType &&\n\n\t\t\t// Support: Firefox <=42\n\t\t\t// Suppress spec-violating clicks indicating a non-primary pointer button (trac-3861)\n\t\t\t// https://www.w3.org/TR/DOM-Level-3-Events/#event-type-click\n\t\t\t// Support: IE 11 only\n\t\t\t// ...but not arrow key \"clicks\" of radio inputs, which can have `button` -1 (gh-2343)\n\t\t\t!( event.type === \"click\" && event.button >= 1 ) ) {\n\n\t\t\tfor ( ; cur !== this; cur = cur.parentNode || this ) {\n\n\t\t\t\t// Don't check non-elements (#13208)\n\t\t\t\t// Don't process clicks on disabled elements (#6911, #8165, #11382, #11764)\n\t\t\t\tif ( cur.nodeType === 1 && !( event.type === \"click\" && cur.disabled === true ) ) {\n\t\t\t\t\tmatchedHandlers = [];\n\t\t\t\t\tmatchedSelectors = {};\n\t\t\t\t\tfor ( i = 0; i < delegateCount; i++ ) {\n\t\t\t\t\t\thandleObj = handlers[ i ];\n\n\t\t\t\t\t\t// Don't conflict with Object.prototype properties (#13203)\n\t\t\t\t\t\tsel = handleObj.selector + \" \";\n\n\t\t\t\t\t\tif ( matchedSelectors[ sel ] === undefined ) {\n\t\t\t\t\t\t\tmatchedSelectors[ sel ] = handleObj.needsContext ?\n\t\t\t\t\t\t\t\tjQuery( sel, this ).index( cur ) > -1 :\n\t\t\t\t\t\t\t\tjQuery.find( sel, this, null, [ cur ] ).length;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif ( matchedSelectors[ sel ] ) {\n\t\t\t\t\t\t\tmatchedHandlers.push( handleObj );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tif ( matchedHandlers.length ) {\n\t\t\t\t\t\thandlerQueue.push( { elem: cur, handlers: matchedHandlers } );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Add the remaining (directly-bound) handlers\n\t\tcur = this;\n\t\tif ( delegateCount < handlers.length ) {\n\t\t\thandlerQueue.push( { elem: cur, handlers: handlers.slice( delegateCount ) } );\n\t\t}\n\n\t\treturn handlerQueue;\n\t},\n\n\taddProp: function( name, hook ) {\n\t\tObject.defineProperty( jQuery.Event.prototype, name, {\n\t\t\tenumerable: true,\n\t\t\tconfigurable: true,\n\n\t\t\tget: isFunction( hook ) ?\n\t\t\t\tfunction() {\n\t\t\t\t\tif ( this.originalEvent ) {\n\t\t\t\t\t\treturn hook( this.originalEvent );\n\t\t\t\t\t}\n\t\t\t\t} :\n\t\t\t\tfunction() {\n\t\t\t\t\tif ( this.originalEvent ) {\n\t\t\t\t\t\treturn this.originalEvent[ name ];\n\t\t\t\t\t}\n\t\t\t\t},\n\n\t\t\tset: function( value ) {\n\t\t\t\tObject.defineProperty( this, name, {\n\t\t\t\t\tenumerable: true,\n\t\t\t\t\tconfigurable: true,\n\t\t\t\t\twritable: true,\n\t\t\t\t\tvalue: value\n\t\t\t\t} );\n\t\t\t}\n\t\t} );\n\t},\n\n\tfix: function( originalEvent ) {\n\t\treturn originalEvent[ jQuery.expando ] ?\n\t\t\toriginalEvent :\n\t\t\tnew jQuery.Event( originalEvent );\n\t},\n\n\tspecial: {\n\t\tload: {\n\n\t\t\t// Prevent triggered image.load events from bubbling to window.load\n\t\t\tnoBubble: true\n\t\t},\n\t\tclick: {\n\n\t\t\t// Utilize native event to ensure correct state for checkable inputs\n\t\t\tsetup: function( data ) {\n\n\t\t\t\t// For mutual compressibility with _default, replace `this` access with a local var.\n\t\t\t\t// `|| data` is dead code meant only to preserve the variable through minification.\n\t\t\t\tvar el = this || data;\n\n\t\t\t\t// Claim the first handler\n\t\t\t\tif ( rcheckableType.test( el.type ) &&\n\t\t\t\t\tel.click && nodeName( el, \"input\" ) ) {\n\n\t\t\t\t\t// dataPriv.set( el, \"click\", ... )\n\t\t\t\t\tleverageNative( el, \"click\", returnTrue );\n\t\t\t\t}\n\n\t\t\t\t// Return false to allow normal processing in the caller\n\t\t\t\treturn false;\n\t\t\t},\n\t\t\ttrigger: function( data ) {\n\n\t\t\t\t// For mutual compressibility with _default, replace `this` access with a local var.\n\t\t\t\t// `|| data` is dead code meant only to preserve the variable through minification.\n\t\t\t\tvar el = this || data;\n\n\t\t\t\t// Force setup before triggering a click\n\t\t\t\tif ( rcheckableType.test( el.type ) &&\n\t\t\t\t\tel.click && nodeName( el, \"input\" ) ) {\n\n\t\t\t\t\tleverageNative( el, \"click\" );\n\t\t\t\t}\n\n\t\t\t\t// Return non-false to allow normal event-path propagation\n\t\t\t\treturn true;\n\t\t\t},\n\n\t\t\t// For cross-browser consistency, suppress native .click() on links\n\t\t\t// Also prevent it if we're currently inside a leveraged native-event stack\n\t\t\t_default: function( event ) {\n\t\t\t\tvar target = event.target;\n\t\t\t\treturn rcheckableType.test( target.type ) &&\n\t\t\t\t\ttarget.click && nodeName( target, \"input\" ) &&\n\t\t\t\t\tdataPriv.get( target, \"click\" ) ||\n\t\t\t\t\tnodeName( target, \"a\" );\n\t\t\t}\n\t\t},\n\n\t\tbeforeunload: {\n\t\t\tpostDispatch: function( event ) {\n\n\t\t\t\t// Support: Firefox 20+\n\t\t\t\t// Firefox doesn't alert if the returnValue field is not set.\n\t\t\t\tif ( event.result !== undefined && event.originalEvent ) {\n\t\t\t\t\tevent.originalEvent.returnValue = event.result;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n};\n\n// Ensure the presence of an event listener that handles manually-triggered\n// synthetic events by interrupting progress until reinvoked in response to\n// *native* events that it fires directly, ensuring that state changes have\n// already occurred before other listeners are invoked.\nfunction leverageNative( el, type, expectSync ) {\n\n\t// Missing expectSync indicates a trigger call, which must force setup through jQuery.event.add\n\tif ( !expectSync ) {\n\t\tif ( dataPriv.get( el, type ) === undefined ) {\n\t\t\tjQuery.event.add( el, type, returnTrue );\n\t\t}\n\t\treturn;\n\t}\n\n\t// Register the controller as a special universal handler for all event namespaces\n\tdataPriv.set( el, type, false );\n\tjQuery.event.add( el, type, {\n\t\tnamespace: false,\n\t\thandler: function( event ) {\n\t\t\tvar notAsync, result,\n\t\t\t\tsaved = dataPriv.get( this, type );\n\n\t\t\tif ( ( event.isTrigger & 1 ) && this[ type ] ) {\n\n\t\t\t\t// Interrupt processing of the outer synthetic .trigger()ed event\n\t\t\t\t// Saved data should be false in such cases, but might be a leftover capture object\n\t\t\t\t// from an async native handler (gh-4350)\n\t\t\t\tif ( !saved.length ) {\n\n\t\t\t\t\t// Store arguments for use when handling the inner native event\n\t\t\t\t\t// There will always be at least one argument (an event object), so this array\n\t\t\t\t\t// will not be confused with a leftover capture object.\n\t\t\t\t\tsaved = slice.call( arguments );\n\t\t\t\t\tdataPriv.set( this, type, saved );\n\n\t\t\t\t\t// Trigger the native event and capture its result\n\t\t\t\t\t// Support: IE <=9 - 11+\n\t\t\t\t\t// focus() and blur() are asynchronous\n\t\t\t\t\tnotAsync = expectSync( this, type );\n\t\t\t\t\tthis[ type ]();\n\t\t\t\t\tresult = dataPriv.get( this, type );\n\t\t\t\t\tif ( saved !== result || notAsync ) {\n\t\t\t\t\t\tdataPriv.set( this, type, false );\n\t\t\t\t\t} else {\n\t\t\t\t\t\tresult = {};\n\t\t\t\t\t}\n\t\t\t\t\tif ( saved !== result ) {\n\n\t\t\t\t\t\t// Cancel the outer synthetic event\n\t\t\t\t\t\tevent.stopImmediatePropagation();\n\t\t\t\t\t\tevent.preventDefault();\n\n\t\t\t\t\t\t// Support: Chrome 86+\n\t\t\t\t\t\t// In Chrome, if an element having a focusout handler is blurred by\n\t\t\t\t\t\t// clicking outside of it, it invokes the handler synchronously. If\n\t\t\t\t\t\t// that handler calls `.remove()` on the element, the data is cleared,\n\t\t\t\t\t\t// leaving `result` undefined. We need to guard against this.\n\t\t\t\t\t\treturn result && result.value;\n\t\t\t\t\t}\n\n\t\t\t\t// If this is an inner synthetic event for an event with a bubbling surrogate\n\t\t\t\t// (focus or blur), assume that the surrogate already propagated from triggering the\n\t\t\t\t// native event and prevent that from happening again here.\n\t\t\t\t// This technically gets the ordering wrong w.r.t. to `.trigger()` (in which the\n\t\t\t\t// bubbling surrogate propagates *after* the non-bubbling base), but that seems\n\t\t\t\t// less bad than duplication.\n\t\t\t\t} else if ( ( jQuery.event.special[ type ] || {} ).delegateType ) {\n\t\t\t\t\tevent.stopPropagation();\n\t\t\t\t}\n\n\t\t\t// If this is a native event triggered above, everything is now in order\n\t\t\t// Fire an inner synthetic event with the original arguments\n\t\t\t} else if ( saved.length ) {\n\n\t\t\t\t// ...and capture the result\n\t\t\t\tdataPriv.set( this, type, {\n\t\t\t\t\tvalue: jQuery.event.trigger(\n\n\t\t\t\t\t\t// Support: IE <=9 - 11+\n\t\t\t\t\t\t// Extend with the prototype to reset the above stopImmediatePropagation()\n\t\t\t\t\t\tjQuery.extend( saved[ 0 ], jQuery.Event.prototype ),\n\t\t\t\t\t\tsaved.slice( 1 ),\n\t\t\t\t\t\tthis\n\t\t\t\t\t)\n\t\t\t\t} );\n\n\t\t\t\t// Abort handling of the native event\n\t\t\t\tevent.stopImmediatePropagation();\n\t\t\t}\n\t\t}\n\t} );\n}\n\njQuery.removeEvent = function( elem, type, handle ) {\n\n\t// This \"if\" is needed for plain objects\n\tif ( elem.removeEventListener ) {\n\t\telem.removeEventListener( type, handle );\n\t}\n};\n\njQuery.Event = function( src, props ) {\n\n\t// Allow instantiation without the 'new' keyword\n\tif ( !( this instanceof jQuery.Event ) ) {\n\t\treturn new jQuery.Event( src, props );\n\t}\n\n\t// Event object\n\tif ( src && src.type ) {\n\t\tthis.originalEvent = src;\n\t\tthis.type = src.type;\n\n\t\t// Events bubbling up the document may have been marked as prevented\n\t\t// by a handler lower down the tree; reflect the correct value.\n\t\tthis.isDefaultPrevented = src.defaultPrevented ||\n\t\t\t\tsrc.defaultPrevented === undefined &&\n\n\t\t\t\t// Support: Android <=2.3 only\n\t\t\t\tsrc.returnValue === false ?\n\t\t\treturnTrue :\n\t\t\treturnFalse;\n\n\t\t// Create target properties\n\t\t// Support: Safari <=6 - 7 only\n\t\t// Target should not be a text node (#504, #13143)\n\t\tthis.target = ( src.target && src.target.nodeType === 3 ) ?\n\t\t\tsrc.target.parentNode :\n\t\t\tsrc.target;\n\n\t\tthis.currentTarget = src.currentTarget;\n\t\tthis.relatedTarget = src.relatedTarget;\n\n\t// Event type\n\t} else {\n\t\tthis.type = src;\n\t}\n\n\t// Put explicitly provided properties onto the event object\n\tif ( props ) {\n\t\tjQuery.extend( this, props );\n\t}\n\n\t// Create a timestamp if incoming event doesn't have one\n\tthis.timeStamp = src && src.timeStamp || Date.now();\n\n\t// Mark it as fixed\n\tthis[ jQuery.expando ] = true;\n};\n\n// jQuery.Event is based on DOM3 Events as specified by the ECMAScript Language Binding\n// https://www.w3.org/TR/2003/WD-DOM-Level-3-Events-20030331/ecma-script-binding.html\njQuery.Event.prototype = {\n\tconstructor: jQuery.Event,\n\tisDefaultPrevented: returnFalse,\n\tisPropagationStopped: returnFalse,\n\tisImmediatePropagationStopped: returnFalse,\n\tisSimulated: false,\n\n\tpreventDefault: function() {\n\t\tvar e = this.originalEvent;\n\n\t\tthis.isDefaultPrevented = returnTrue;\n\n\t\tif ( e && !this.isSimulated ) {\n\t\t\te.preventDefault();\n\t\t}\n\t},\n\tstopPropagation: function() {\n\t\tvar e = this.originalEvent;\n\n\t\tthis.isPropagationStopped = returnTrue;\n\n\t\tif ( e && !this.isSimulated ) {\n\t\t\te.stopPropagation();\n\t\t}\n\t},\n\tstopImmediatePropagation: function() {\n\t\tvar e = this.originalEvent;\n\n\t\tthis.isImmediatePropagationStopped = returnTrue;\n\n\t\tif ( e && !this.isSimulated ) {\n\t\t\te.stopImmediatePropagation();\n\t\t}\n\n\t\tthis.stopPropagation();\n\t}\n};\n\n// Includes all common event props including KeyEvent and MouseEvent specific props\njQuery.each( {\n\taltKey: true,\n\tbubbles: true,\n\tcancelable: true,\n\tchangedTouches: true,\n\tctrlKey: true,\n\tdetail: true,\n\teventPhase: true,\n\tmetaKey: true,\n\tpageX: true,\n\tpageY: true,\n\tshiftKey: true,\n\tview: true,\n\t\"char\": true,\n\tcode: true,\n\tcharCode: true,\n\tkey: true,\n\tkeyCode: true,\n\tbutton: true,\n\tbuttons: true,\n\tclientX: true,\n\tclientY: true,\n\toffsetX: true,\n\toffsetY: true,\n\tpointerId: true,\n\tpointerType: true,\n\tscreenX: true,\n\tscreenY: true,\n\ttargetTouches: true,\n\ttoElement: true,\n\ttouches: true,\n\twhich: true\n}, jQuery.event.addProp );\n\njQuery.each( { focus: \"focusin\", blur: \"focusout\" }, function( type, delegateType ) {\n\tjQuery.event.special[ type ] = {\n\n\t\t// Utilize native event if possible so blur/focus sequence is correct\n\t\tsetup: function() {\n\n\t\t\t// Claim the first handler\n\t\t\t// dataPriv.set( this, \"focus\", ... )\n\t\t\t// dataPriv.set( this, \"blur\", ... )\n\t\t\tleverageNative( this, type, expectSync );\n\n\t\t\t// Return false to allow normal processing in the caller\n\t\t\treturn false;\n\t\t},\n\t\ttrigger: function() {\n\n\t\t\t// Force setup before trigger\n\t\t\tleverageNative( this, type );\n\n\t\t\t// Return non-false to allow normal event-path propagation\n\t\t\treturn true;\n\t\t},\n\n\t\t// Suppress native focus or blur as it's already being fired\n\t\t// in leverageNative.\n\t\t_default: function() {\n\t\t\treturn true;\n\t\t},\n\n\t\tdelegateType: delegateType\n\t};\n} );\n\n// Create mouseenter/leave events using mouseover/out and event-time checks\n// so that event delegation works in jQuery.\n// Do the same for pointerenter/pointerleave and pointerover/pointerout\n//\n// Support: Safari 7 only\n// Safari sends mouseenter too often; see:\n// https://bugs.chromium.org/p/chromium/issues/detail?id=470258\n// for the description of the bug (it existed in older Chrome versions as well).\njQuery.each( {\n\tmouseenter: \"mouseover\",\n\tmouseleave: \"mouseout\",\n\tpointerenter: \"pointerover\",\n\tpointerleave: \"pointerout\"\n}, function( orig, fix ) {\n\tjQuery.event.special[ orig ] = {\n\t\tdelegateType: fix,\n\t\tbindType: fix,\n\n\t\thandle: function( event ) {\n\t\t\tvar ret,\n\t\t\t\ttarget = this,\n\t\t\t\trelated = event.relatedTarget,\n\t\t\t\thandleObj = event.handleObj;\n\n\t\t\t// For mouseenter/leave call the handler if related is outside the target.\n\t\t\t// NB: No relatedTarget if the mouse left/entered the browser window\n\t\t\tif ( !related || ( related !== target && !jQuery.contains( target, related ) ) ) {\n\t\t\t\tevent.type = handleObj.origType;\n\t\t\t\tret = handleObj.handler.apply( this, arguments );\n\t\t\t\tevent.type = fix;\n\t\t\t}\n\t\t\treturn ret;\n\t\t}\n\t};\n} );\n\njQuery.fn.extend( {\n\n\ton: function( types, selector, data, fn ) {\n\t\treturn on( this, types, selector, data, fn );\n\t},\n\tone: function( types, selector, data, fn ) {\n\t\treturn on( this, types, selector, data, fn, 1 );\n\t},\n\toff: function( types, selector, fn ) {\n\t\tvar handleObj, type;\n\t\tif ( types && types.preventDefault && types.handleObj ) {\n\n\t\t\t// ( event ) dispatched jQuery.Event\n\t\t\thandleObj = types.handleObj;\n\t\t\tjQuery( types.delegateTarget ).off(\n\t\t\t\thandleObj.namespace ?\n\t\t\t\t\thandleObj.origType + \".\" + handleObj.namespace :\n\t\t\t\t\thandleObj.origType,\n\t\t\t\thandleObj.selector,\n\t\t\t\thandleObj.handler\n\t\t\t);\n\t\t\treturn this;\n\t\t}\n\t\tif ( typeof types === \"object\" ) {\n\n\t\t\t// ( types-object [, selector] )\n\t\t\tfor ( type in types ) {\n\t\t\t\tthis.off( type, selector, types[ type ] );\n\t\t\t}\n\t\t\treturn this;\n\t\t}\n\t\tif ( selector === false || typeof selector === \"function\" ) {\n\n\t\t\t// ( types [, fn] )\n\t\t\tfn = selector;\n\t\t\tselector = undefined;\n\t\t}\n\t\tif ( fn === false ) {\n\t\t\tfn = returnFalse;\n\t\t}\n\t\treturn this.each( function() {\n\t\t\tjQuery.event.remove( this, types, fn, selector );\n\t\t} );\n\t}\n} );\n\n\nvar\n\n\t// Support: IE <=10 - 11, Edge 12 - 13 only\n\t// In IE/Edge using regex groups here causes severe slowdowns.\n\t// See https://connect.microsoft.com/IE/feedback/details/1736512/\n\trnoInnerhtml = /\\s*$/g;\n\n// Prefer a tbody over its parent table for containing new rows\nfunction manipulationTarget( elem, content ) {\n\tif ( nodeName( elem, \"table\" ) &&\n\t\tnodeName( content.nodeType !== 11 ? content : content.firstChild, \"tr\" ) ) {\n\n\t\treturn jQuery( elem ).children( \"tbody\" )[ 0 ] || elem;\n\t}\n\n\treturn elem;\n}\n\n// Replace/restore the type attribute of script elements for safe DOM manipulation\nfunction disableScript( elem ) {\n\telem.type = ( elem.getAttribute( \"type\" ) !== null ) + \"/\" + elem.type;\n\treturn elem;\n}\nfunction restoreScript( elem ) {\n\tif ( ( elem.type || \"\" ).slice( 0, 5 ) === \"true/\" ) {\n\t\telem.type = elem.type.slice( 5 );\n\t} else {\n\t\telem.removeAttribute( \"type\" );\n\t}\n\n\treturn elem;\n}\n\nfunction cloneCopyEvent( src, dest ) {\n\tvar i, l, type, pdataOld, udataOld, udataCur, events;\n\n\tif ( dest.nodeType !== 1 ) {\n\t\treturn;\n\t}\n\n\t// 1. Copy private data: events, handlers, etc.\n\tif ( dataPriv.hasData( src ) ) {\n\t\tpdataOld = dataPriv.get( src );\n\t\tevents = pdataOld.events;\n\n\t\tif ( events ) {\n\t\t\tdataPriv.remove( dest, \"handle events\" );\n\n\t\t\tfor ( type in events ) {\n\t\t\t\tfor ( i = 0, l = events[ type ].length; i < l; i++ ) {\n\t\t\t\t\tjQuery.event.add( dest, type, events[ type ][ i ] );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// 2. Copy user data\n\tif ( dataUser.hasData( src ) ) {\n\t\tudataOld = dataUser.access( src );\n\t\tudataCur = jQuery.extend( {}, udataOld );\n\n\t\tdataUser.set( dest, udataCur );\n\t}\n}\n\n// Fix IE bugs, see support tests\nfunction fixInput( src, dest ) {\n\tvar nodeName = dest.nodeName.toLowerCase();\n\n\t// Fails to persist the checked state of a cloned checkbox or radio button.\n\tif ( nodeName === \"input\" && rcheckableType.test( src.type ) ) {\n\t\tdest.checked = src.checked;\n\n\t// Fails to return the selected option to the default selected state when cloning options\n\t} else if ( nodeName === \"input\" || nodeName === \"textarea\" ) {\n\t\tdest.defaultValue = src.defaultValue;\n\t}\n}\n\nfunction domManip( collection, args, callback, ignored ) {\n\n\t// Flatten any nested arrays\n\targs = flat( args );\n\n\tvar fragment, first, scripts, hasScripts, node, doc,\n\t\ti = 0,\n\t\tl = collection.length,\n\t\tiNoClone = l - 1,\n\t\tvalue = args[ 0 ],\n\t\tvalueIsFunction = isFunction( value );\n\n\t// We can't cloneNode fragments that contain checked, in WebKit\n\tif ( valueIsFunction ||\n\t\t\t( l > 1 && typeof value === \"string\" &&\n\t\t\t\t!support.checkClone && rchecked.test( value ) ) ) {\n\t\treturn collection.each( function( index ) {\n\t\t\tvar self = collection.eq( index );\n\t\t\tif ( valueIsFunction ) {\n\t\t\t\targs[ 0 ] = value.call( this, index, self.html() );\n\t\t\t}\n\t\t\tdomManip( self, args, callback, ignored );\n\t\t} );\n\t}\n\n\tif ( l ) {\n\t\tfragment = buildFragment( args, collection[ 0 ].ownerDocument, false, collection, ignored );\n\t\tfirst = fragment.firstChild;\n\n\t\tif ( fragment.childNodes.length === 1 ) {\n\t\t\tfragment = first;\n\t\t}\n\n\t\t// Require either new content or an interest in ignored elements to invoke the callback\n\t\tif ( first || ignored ) {\n\t\t\tscripts = jQuery.map( getAll( fragment, \"script\" ), disableScript );\n\t\t\thasScripts = scripts.length;\n\n\t\t\t// Use the original fragment for the last item\n\t\t\t// instead of the first because it can end up\n\t\t\t// being emptied incorrectly in certain situations (#8070).\n\t\t\tfor ( ; i < l; i++ ) {\n\t\t\t\tnode = fragment;\n\n\t\t\t\tif ( i !== iNoClone ) {\n\t\t\t\t\tnode = jQuery.clone( node, true, true );\n\n\t\t\t\t\t// Keep references to cloned scripts for later restoration\n\t\t\t\t\tif ( hasScripts ) {\n\n\t\t\t\t\t\t// Support: Android <=4.0 only, PhantomJS 1 only\n\t\t\t\t\t\t// push.apply(_, arraylike) throws on ancient WebKit\n\t\t\t\t\t\tjQuery.merge( scripts, getAll( node, \"script\" ) );\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tcallback.call( collection[ i ], node, i );\n\t\t\t}\n\n\t\t\tif ( hasScripts ) {\n\t\t\t\tdoc = scripts[ scripts.length - 1 ].ownerDocument;\n\n\t\t\t\t// Reenable scripts\n\t\t\t\tjQuery.map( scripts, restoreScript );\n\n\t\t\t\t// Evaluate executable scripts on first document insertion\n\t\t\t\tfor ( i = 0; i < hasScripts; i++ ) {\n\t\t\t\t\tnode = scripts[ i ];\n\t\t\t\t\tif ( rscriptType.test( node.type || \"\" ) &&\n\t\t\t\t\t\t!dataPriv.access( node, \"globalEval\" ) &&\n\t\t\t\t\t\tjQuery.contains( doc, node ) ) {\n\n\t\t\t\t\t\tif ( node.src && ( node.type || \"\" ).toLowerCase() !== \"module\" ) {\n\n\t\t\t\t\t\t\t// Optional AJAX dependency, but won't run scripts if not present\n\t\t\t\t\t\t\tif ( jQuery._evalUrl && !node.noModule ) {\n\t\t\t\t\t\t\t\tjQuery._evalUrl( node.src, {\n\t\t\t\t\t\t\t\t\tnonce: node.nonce || node.getAttribute( \"nonce\" )\n\t\t\t\t\t\t\t\t}, doc );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tDOMEval( node.textContent.replace( rcleanScript, \"\" ), node, doc );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn collection;\n}\n\nfunction remove( elem, selector, keepData ) {\n\tvar node,\n\t\tnodes = selector ? jQuery.filter( selector, elem ) : elem,\n\t\ti = 0;\n\n\tfor ( ; ( node = nodes[ i ] ) != null; i++ ) {\n\t\tif ( !keepData && node.nodeType === 1 ) {\n\t\t\tjQuery.cleanData( getAll( node ) );\n\t\t}\n\n\t\tif ( node.parentNode ) {\n\t\t\tif ( keepData && isAttached( node ) ) {\n\t\t\t\tsetGlobalEval( getAll( node, \"script\" ) );\n\t\t\t}\n\t\t\tnode.parentNode.removeChild( node );\n\t\t}\n\t}\n\n\treturn elem;\n}\n\njQuery.extend( {\n\thtmlPrefilter: function( html ) {\n\t\treturn html;\n\t},\n\n\tclone: function( elem, dataAndEvents, deepDataAndEvents ) {\n\t\tvar i, l, srcElements, destElements,\n\t\t\tclone = elem.cloneNode( true ),\n\t\t\tinPage = isAttached( elem );\n\n\t\t// Fix IE cloning issues\n\t\tif ( !support.noCloneChecked && ( elem.nodeType === 1 || elem.nodeType === 11 ) &&\n\t\t\t\t!jQuery.isXMLDoc( elem ) ) {\n\n\t\t\t// We eschew Sizzle here for performance reasons: https://jsperf.com/getall-vs-sizzle/2\n\t\t\tdestElements = getAll( clone );\n\t\t\tsrcElements = getAll( elem );\n\n\t\t\tfor ( i = 0, l = srcElements.length; i < l; i++ ) {\n\t\t\t\tfixInput( srcElements[ i ], destElements[ i ] );\n\t\t\t}\n\t\t}\n\n\t\t// Copy the events from the original to the clone\n\t\tif ( dataAndEvents ) {\n\t\t\tif ( deepDataAndEvents ) {\n\t\t\t\tsrcElements = srcElements || getAll( elem );\n\t\t\t\tdestElements = destElements || getAll( clone );\n\n\t\t\t\tfor ( i = 0, l = srcElements.length; i < l; i++ ) {\n\t\t\t\t\tcloneCopyEvent( srcElements[ i ], destElements[ i ] );\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tcloneCopyEvent( elem, clone );\n\t\t\t}\n\t\t}\n\n\t\t// Preserve script evaluation history\n\t\tdestElements = getAll( clone, \"script\" );\n\t\tif ( destElements.length > 0 ) {\n\t\t\tsetGlobalEval( destElements, !inPage && getAll( elem, \"script\" ) );\n\t\t}\n\n\t\t// Return the cloned set\n\t\treturn clone;\n\t},\n\n\tcleanData: function( elems ) {\n\t\tvar data, elem, type,\n\t\t\tspecial = jQuery.event.special,\n\t\t\ti = 0;\n\n\t\tfor ( ; ( elem = elems[ i ] ) !== undefined; i++ ) {\n\t\t\tif ( acceptData( elem ) ) {\n\t\t\t\tif ( ( data = elem[ dataPriv.expando ] ) ) {\n\t\t\t\t\tif ( data.events ) {\n\t\t\t\t\t\tfor ( type in data.events ) {\n\t\t\t\t\t\t\tif ( special[ type ] ) {\n\t\t\t\t\t\t\t\tjQuery.event.remove( elem, type );\n\n\t\t\t\t\t\t\t// This is a shortcut to avoid jQuery.event.remove's overhead\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tjQuery.removeEvent( elem, type, data.handle );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// Support: Chrome <=35 - 45+\n\t\t\t\t\t// Assign undefined instead of using delete, see Data#remove\n\t\t\t\t\telem[ dataPriv.expando ] = undefined;\n\t\t\t\t}\n\t\t\t\tif ( elem[ dataUser.expando ] ) {\n\n\t\t\t\t\t// Support: Chrome <=35 - 45+\n\t\t\t\t\t// Assign undefined instead of using delete, see Data#remove\n\t\t\t\t\telem[ dataUser.expando ] = undefined;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n} );\n\njQuery.fn.extend( {\n\tdetach: function( selector ) {\n\t\treturn remove( this, selector, true );\n\t},\n\n\tremove: function( selector ) {\n\t\treturn remove( this, selector );\n\t},\n\n\ttext: function( value ) {\n\t\treturn access( this, function( value ) {\n\t\t\treturn value === undefined ?\n\t\t\t\tjQuery.text( this ) :\n\t\t\t\tthis.empty().each( function() {\n\t\t\t\t\tif ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) {\n\t\t\t\t\t\tthis.textContent = value;\n\t\t\t\t\t}\n\t\t\t\t} );\n\t\t}, null, value, arguments.length );\n\t},\n\n\tappend: function() {\n\t\treturn domManip( this, arguments, function( elem ) {\n\t\t\tif ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) {\n\t\t\t\tvar target = manipulationTarget( this, elem );\n\t\t\t\ttarget.appendChild( elem );\n\t\t\t}\n\t\t} );\n\t},\n\n\tprepend: function() {\n\t\treturn domManip( this, arguments, function( elem ) {\n\t\t\tif ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) {\n\t\t\t\tvar target = manipulationTarget( this, elem );\n\t\t\t\ttarget.insertBefore( elem, target.firstChild );\n\t\t\t}\n\t\t} );\n\t},\n\n\tbefore: function() {\n\t\treturn domManip( this, arguments, function( elem ) {\n\t\t\tif ( this.parentNode ) {\n\t\t\t\tthis.parentNode.insertBefore( elem, this );\n\t\t\t}\n\t\t} );\n\t},\n\n\tafter: function() {\n\t\treturn domManip( this, arguments, function( elem ) {\n\t\t\tif ( this.parentNode ) {\n\t\t\t\tthis.parentNode.insertBefore( elem, this.nextSibling );\n\t\t\t}\n\t\t} );\n\t},\n\n\tempty: function() {\n\t\tvar elem,\n\t\t\ti = 0;\n\n\t\tfor ( ; ( elem = this[ i ] ) != null; i++ ) {\n\t\t\tif ( elem.nodeType === 1 ) {\n\n\t\t\t\t// Prevent memory leaks\n\t\t\t\tjQuery.cleanData( getAll( elem, false ) );\n\n\t\t\t\t// Remove any remaining nodes\n\t\t\t\telem.textContent = \"\";\n\t\t\t}\n\t\t}\n\n\t\treturn this;\n\t},\n\n\tclone: function( dataAndEvents, deepDataAndEvents ) {\n\t\tdataAndEvents = dataAndEvents == null ? false : dataAndEvents;\n\t\tdeepDataAndEvents = deepDataAndEvents == null ? dataAndEvents : deepDataAndEvents;\n\n\t\treturn this.map( function() {\n\t\t\treturn jQuery.clone( this, dataAndEvents, deepDataAndEvents );\n\t\t} );\n\t},\n\n\thtml: function( value ) {\n\t\treturn access( this, function( value ) {\n\t\t\tvar elem = this[ 0 ] || {},\n\t\t\t\ti = 0,\n\t\t\t\tl = this.length;\n\n\t\t\tif ( value === undefined && elem.nodeType === 1 ) {\n\t\t\t\treturn elem.innerHTML;\n\t\t\t}\n\n\t\t\t// See if we can take a shortcut and just use innerHTML\n\t\t\tif ( typeof value === \"string\" && !rnoInnerhtml.test( value ) &&\n\t\t\t\t!wrapMap[ ( rtagName.exec( value ) || [ \"\", \"\" ] )[ 1 ].toLowerCase() ] ) {\n\n\t\t\t\tvalue = jQuery.htmlPrefilter( value );\n\n\t\t\t\ttry {\n\t\t\t\t\tfor ( ; i < l; i++ ) {\n\t\t\t\t\t\telem = this[ i ] || {};\n\n\t\t\t\t\t\t// Remove element nodes and prevent memory leaks\n\t\t\t\t\t\tif ( elem.nodeType === 1 ) {\n\t\t\t\t\t\t\tjQuery.cleanData( getAll( elem, false ) );\n\t\t\t\t\t\t\telem.innerHTML = value;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\telem = 0;\n\n\t\t\t\t// If using innerHTML throws an exception, use the fallback method\n\t\t\t\t} catch ( e ) {}\n\t\t\t}\n\n\t\t\tif ( elem ) {\n\t\t\t\tthis.empty().append( value );\n\t\t\t}\n\t\t}, null, value, arguments.length );\n\t},\n\n\treplaceWith: function() {\n\t\tvar ignored = [];\n\n\t\t// Make the changes, replacing each non-ignored context element with the new content\n\t\treturn domManip( this, arguments, function( elem ) {\n\t\t\tvar parent = this.parentNode;\n\n\t\t\tif ( jQuery.inArray( this, ignored ) < 0 ) {\n\t\t\t\tjQuery.cleanData( getAll( this ) );\n\t\t\t\tif ( parent ) {\n\t\t\t\t\tparent.replaceChild( elem, this );\n\t\t\t\t}\n\t\t\t}\n\n\t\t// Force callback invocation\n\t\t}, ignored );\n\t}\n} );\n\njQuery.each( {\n\tappendTo: \"append\",\n\tprependTo: \"prepend\",\n\tinsertBefore: \"before\",\n\tinsertAfter: \"after\",\n\treplaceAll: \"replaceWith\"\n}, function( name, original ) {\n\tjQuery.fn[ name ] = function( selector ) {\n\t\tvar elems,\n\t\t\tret = [],\n\t\t\tinsert = jQuery( selector ),\n\t\t\tlast = insert.length - 1,\n\t\t\ti = 0;\n\n\t\tfor ( ; i <= last; i++ ) {\n\t\t\telems = i === last ? this : this.clone( true );\n\t\t\tjQuery( insert[ i ] )[ original ]( elems );\n\n\t\t\t// Support: Android <=4.0 only, PhantomJS 1 only\n\t\t\t// .get() because push.apply(_, arraylike) throws on ancient WebKit\n\t\t\tpush.apply( ret, elems.get() );\n\t\t}\n\n\t\treturn this.pushStack( ret );\n\t};\n} );\nvar rnumnonpx = new RegExp( \"^(\" + pnum + \")(?!px)[a-z%]+$\", \"i\" );\n\nvar getStyles = function( elem ) {\n\n\t\t// Support: IE <=11 only, Firefox <=30 (#15098, #14150)\n\t\t// IE throws on elements created in popups\n\t\t// FF meanwhile throws on frame elements through \"defaultView.getComputedStyle\"\n\t\tvar view = elem.ownerDocument.defaultView;\n\n\t\tif ( !view || !view.opener ) {\n\t\t\tview = window;\n\t\t}\n\n\t\treturn view.getComputedStyle( elem );\n\t};\n\nvar swap = function( elem, options, callback ) {\n\tvar ret, name,\n\t\told = {};\n\n\t// Remember the old values, and insert the new ones\n\tfor ( name in options ) {\n\t\told[ name ] = elem.style[ name ];\n\t\telem.style[ name ] = options[ name ];\n\t}\n\n\tret = callback.call( elem );\n\n\t// Revert the old values\n\tfor ( name in options ) {\n\t\telem.style[ name ] = old[ name ];\n\t}\n\n\treturn ret;\n};\n\n\nvar rboxStyle = new RegExp( cssExpand.join( \"|\" ), \"i\" );\n\n\n\n( function() {\n\n\t// Executing both pixelPosition & boxSizingReliable tests require only one layout\n\t// so they're executed at the same time to save the second computation.\n\tfunction computeStyleTests() {\n\n\t\t// This is a singleton, we need to execute it only once\n\t\tif ( !div ) {\n\t\t\treturn;\n\t\t}\n\n\t\tcontainer.style.cssText = \"position:absolute;left:-11111px;width:60px;\" +\n\t\t\t\"margin-top:1px;padding:0;border:0\";\n\t\tdiv.style.cssText =\n\t\t\t\"position:relative;display:block;box-sizing:border-box;overflow:scroll;\" +\n\t\t\t\"margin:auto;border:1px;padding:1px;\" +\n\t\t\t\"width:60%;top:1%\";\n\t\tdocumentElement.appendChild( container ).appendChild( div );\n\n\t\tvar divStyle = window.getComputedStyle( div );\n\t\tpixelPositionVal = divStyle.top !== \"1%\";\n\n\t\t// Support: Android 4.0 - 4.3 only, Firefox <=3 - 44\n\t\treliableMarginLeftVal = roundPixelMeasures( divStyle.marginLeft ) === 12;\n\n\t\t// Support: Android 4.0 - 4.3 only, Safari <=9.1 - 10.1, iOS <=7.0 - 9.3\n\t\t// Some styles come back with percentage values, even though they shouldn't\n\t\tdiv.style.right = \"60%\";\n\t\tpixelBoxStylesVal = roundPixelMeasures( divStyle.right ) === 36;\n\n\t\t// Support: IE 9 - 11 only\n\t\t// Detect misreporting of content dimensions for box-sizing:border-box elements\n\t\tboxSizingReliableVal = roundPixelMeasures( divStyle.width ) === 36;\n\n\t\t// Support: IE 9 only\n\t\t// Detect overflow:scroll screwiness (gh-3699)\n\t\t// Support: Chrome <=64\n\t\t// Don't get tricked when zoom affects offsetWidth (gh-4029)\n\t\tdiv.style.position = \"absolute\";\n\t\tscrollboxSizeVal = roundPixelMeasures( div.offsetWidth / 3 ) === 12;\n\n\t\tdocumentElement.removeChild( container );\n\n\t\t// Nullify the div so it wouldn't be stored in the memory and\n\t\t// it will also be a sign that checks already performed\n\t\tdiv = null;\n\t}\n\n\tfunction roundPixelMeasures( measure ) {\n\t\treturn Math.round( parseFloat( measure ) );\n\t}\n\n\tvar pixelPositionVal, boxSizingReliableVal, scrollboxSizeVal, pixelBoxStylesVal,\n\t\treliableTrDimensionsVal, reliableMarginLeftVal,\n\t\tcontainer = document.createElement( \"div\" ),\n\t\tdiv = document.createElement( \"div\" );\n\n\t// Finish early in limited (non-browser) environments\n\tif ( !div.style ) {\n\t\treturn;\n\t}\n\n\t// Support: IE <=9 - 11 only\n\t// Style of cloned element affects source element cloned (#8908)\n\tdiv.style.backgroundClip = \"content-box\";\n\tdiv.cloneNode( true ).style.backgroundClip = \"\";\n\tsupport.clearCloneStyle = div.style.backgroundClip === \"content-box\";\n\n\tjQuery.extend( support, {\n\t\tboxSizingReliable: function() {\n\t\t\tcomputeStyleTests();\n\t\t\treturn boxSizingReliableVal;\n\t\t},\n\t\tpixelBoxStyles: function() {\n\t\t\tcomputeStyleTests();\n\t\t\treturn pixelBoxStylesVal;\n\t\t},\n\t\tpixelPosition: function() {\n\t\t\tcomputeStyleTests();\n\t\t\treturn pixelPositionVal;\n\t\t},\n\t\treliableMarginLeft: function() {\n\t\t\tcomputeStyleTests();\n\t\t\treturn reliableMarginLeftVal;\n\t\t},\n\t\tscrollboxSize: function() {\n\t\t\tcomputeStyleTests();\n\t\t\treturn scrollboxSizeVal;\n\t\t},\n\n\t\t// Support: IE 9 - 11+, Edge 15 - 18+\n\t\t// IE/Edge misreport `getComputedStyle` of table rows with width/height\n\t\t// set in CSS while `offset*` properties report correct values.\n\t\t// Behavior in IE 9 is more subtle than in newer versions & it passes\n\t\t// some versions of this test; make sure not to make it pass there!\n\t\t//\n\t\t// Support: Firefox 70+\n\t\t// Only Firefox includes border widths\n\t\t// in computed dimensions. (gh-4529)\n\t\treliableTrDimensions: function() {\n\t\t\tvar table, tr, trChild, trStyle;\n\t\t\tif ( reliableTrDimensionsVal == null ) {\n\t\t\t\ttable = document.createElement( \"table\" );\n\t\t\t\ttr = document.createElement( \"tr\" );\n\t\t\t\ttrChild = document.createElement( \"div\" );\n\n\t\t\t\ttable.style.cssText = \"position:absolute;left:-11111px;border-collapse:separate\";\n\t\t\t\ttr.style.cssText = \"border:1px solid\";\n\n\t\t\t\t// Support: Chrome 86+\n\t\t\t\t// Height set through cssText does not get applied.\n\t\t\t\t// Computed height then comes back as 0.\n\t\t\t\ttr.style.height = \"1px\";\n\t\t\t\ttrChild.style.height = \"9px\";\n\n\t\t\t\t// Support: Android 8 Chrome 86+\n\t\t\t\t// In our bodyBackground.html iframe,\n\t\t\t\t// display for all div elements is set to \"inline\",\n\t\t\t\t// which causes a problem only in Android 8 Chrome 86.\n\t\t\t\t// Ensuring the div is display: block\n\t\t\t\t// gets around this issue.\n\t\t\t\ttrChild.style.display = \"block\";\n\n\t\t\t\tdocumentElement\n\t\t\t\t\t.appendChild( table )\n\t\t\t\t\t.appendChild( tr )\n\t\t\t\t\t.appendChild( trChild );\n\n\t\t\t\ttrStyle = window.getComputedStyle( tr );\n\t\t\t\treliableTrDimensionsVal = ( parseInt( trStyle.height, 10 ) +\n\t\t\t\t\tparseInt( trStyle.borderTopWidth, 10 ) +\n\t\t\t\t\tparseInt( trStyle.borderBottomWidth, 10 ) ) === tr.offsetHeight;\n\n\t\t\t\tdocumentElement.removeChild( table );\n\t\t\t}\n\t\t\treturn reliableTrDimensionsVal;\n\t\t}\n\t} );\n} )();\n\n\nfunction curCSS( elem, name, computed ) {\n\tvar width, minWidth, maxWidth, ret,\n\n\t\t// Support: Firefox 51+\n\t\t// Retrieving style before computed somehow\n\t\t// fixes an issue with getting wrong values\n\t\t// on detached elements\n\t\tstyle = elem.style;\n\n\tcomputed = computed || getStyles( elem );\n\n\t// getPropertyValue is needed for:\n\t// .css('filter') (IE 9 only, #12537)\n\t// .css('--customProperty) (#3144)\n\tif ( computed ) {\n\t\tret = computed.getPropertyValue( name ) || computed[ name ];\n\n\t\tif ( ret === \"\" && !isAttached( elem ) ) {\n\t\t\tret = jQuery.style( elem, name );\n\t\t}\n\n\t\t// A tribute to the \"awesome hack by Dean Edwards\"\n\t\t// Android Browser returns percentage for some values,\n\t\t// but width seems to be reliably pixels.\n\t\t// This is against the CSSOM draft spec:\n\t\t// https://drafts.csswg.org/cssom/#resolved-values\n\t\tif ( !support.pixelBoxStyles() && rnumnonpx.test( ret ) && rboxStyle.test( name ) ) {\n\n\t\t\t// Remember the original values\n\t\t\twidth = style.width;\n\t\t\tminWidth = style.minWidth;\n\t\t\tmaxWidth = style.maxWidth;\n\n\t\t\t// Put in the new values to get a computed value out\n\t\t\tstyle.minWidth = style.maxWidth = style.width = ret;\n\t\t\tret = computed.width;\n\n\t\t\t// Revert the changed values\n\t\t\tstyle.width = width;\n\t\t\tstyle.minWidth = minWidth;\n\t\t\tstyle.maxWidth = maxWidth;\n\t\t}\n\t}\n\n\treturn ret !== undefined ?\n\n\t\t// Support: IE <=9 - 11 only\n\t\t// IE returns zIndex value as an integer.\n\t\tret + \"\" :\n\t\tret;\n}\n\n\nfunction addGetHookIf( conditionFn, hookFn ) {\n\n\t// Define the hook, we'll check on the first run if it's really needed.\n\treturn {\n\t\tget: function() {\n\t\t\tif ( conditionFn() ) {\n\n\t\t\t\t// Hook not needed (or it's not possible to use it due\n\t\t\t\t// to missing dependency), remove it.\n\t\t\t\tdelete this.get;\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// Hook needed; redefine it so that the support test is not executed again.\n\t\t\treturn ( this.get = hookFn ).apply( this, arguments );\n\t\t}\n\t};\n}\n\n\nvar cssPrefixes = [ \"Webkit\", \"Moz\", \"ms\" ],\n\temptyStyle = document.createElement( \"div\" ).style,\n\tvendorProps = {};\n\n// Return a vendor-prefixed property or undefined\nfunction vendorPropName( name ) {\n\n\t// Check for vendor prefixed names\n\tvar capName = name[ 0 ].toUpperCase() + name.slice( 1 ),\n\t\ti = cssPrefixes.length;\n\n\twhile ( i-- ) {\n\t\tname = cssPrefixes[ i ] + capName;\n\t\tif ( name in emptyStyle ) {\n\t\t\treturn name;\n\t\t}\n\t}\n}\n\n// Return a potentially-mapped jQuery.cssProps or vendor prefixed property\nfunction finalPropName( name ) {\n\tvar final = jQuery.cssProps[ name ] || vendorProps[ name ];\n\n\tif ( final ) {\n\t\treturn final;\n\t}\n\tif ( name in emptyStyle ) {\n\t\treturn name;\n\t}\n\treturn vendorProps[ name ] = vendorPropName( name ) || name;\n}\n\n\nvar\n\n\t// Swappable if display is none or starts with table\n\t// except \"table\", \"table-cell\", or \"table-caption\"\n\t// See here for display values: https://developer.mozilla.org/en-US/docs/CSS/display\n\trdisplayswap = /^(none|table(?!-c[ea]).+)/,\n\trcustomProp = /^--/,\n\tcssShow = { position: \"absolute\", visibility: \"hidden\", display: \"block\" },\n\tcssNormalTransform = {\n\t\tletterSpacing: \"0\",\n\t\tfontWeight: \"400\"\n\t};\n\nfunction setPositiveNumber( _elem, value, subtract ) {\n\n\t// Any relative (+/-) values have already been\n\t// normalized at this point\n\tvar matches = rcssNum.exec( value );\n\treturn matches ?\n\n\t\t// Guard against undefined \"subtract\", e.g., when used as in cssHooks\n\t\tMath.max( 0, matches[ 2 ] - ( subtract || 0 ) ) + ( matches[ 3 ] || \"px\" ) :\n\t\tvalue;\n}\n\nfunction boxModelAdjustment( elem, dimension, box, isBorderBox, styles, computedVal ) {\n\tvar i = dimension === \"width\" ? 1 : 0,\n\t\textra = 0,\n\t\tdelta = 0;\n\n\t// Adjustment may not be necessary\n\tif ( box === ( isBorderBox ? \"border\" : \"content\" ) ) {\n\t\treturn 0;\n\t}\n\n\tfor ( ; i < 4; i += 2 ) {\n\n\t\t// Both box models exclude margin\n\t\tif ( box === \"margin\" ) {\n\t\t\tdelta += jQuery.css( elem, box + cssExpand[ i ], true, styles );\n\t\t}\n\n\t\t// If we get here with a content-box, we're seeking \"padding\" or \"border\" or \"margin\"\n\t\tif ( !isBorderBox ) {\n\n\t\t\t// Add padding\n\t\t\tdelta += jQuery.css( elem, \"padding\" + cssExpand[ i ], true, styles );\n\n\t\t\t// For \"border\" or \"margin\", add border\n\t\t\tif ( box !== \"padding\" ) {\n\t\t\t\tdelta += jQuery.css( elem, \"border\" + cssExpand[ i ] + \"Width\", true, styles );\n\n\t\t\t// But still keep track of it otherwise\n\t\t\t} else {\n\t\t\t\textra += jQuery.css( elem, \"border\" + cssExpand[ i ] + \"Width\", true, styles );\n\t\t\t}\n\n\t\t// If we get here with a border-box (content + padding + border), we're seeking \"content\" or\n\t\t// \"padding\" or \"margin\"\n\t\t} else {\n\n\t\t\t// For \"content\", subtract padding\n\t\t\tif ( box === \"content\" ) {\n\t\t\t\tdelta -= jQuery.css( elem, \"padding\" + cssExpand[ i ], true, styles );\n\t\t\t}\n\n\t\t\t// For \"content\" or \"padding\", subtract border\n\t\t\tif ( box !== \"margin\" ) {\n\t\t\t\tdelta -= jQuery.css( elem, \"border\" + cssExpand[ i ] + \"Width\", true, styles );\n\t\t\t}\n\t\t}\n\t}\n\n\t// Account for positive content-box scroll gutter when requested by providing computedVal\n\tif ( !isBorderBox && computedVal >= 0 ) {\n\n\t\t// offsetWidth/offsetHeight is a rounded sum of content, padding, scroll gutter, and border\n\t\t// Assuming integer scroll gutter, subtract the rest and round down\n\t\tdelta += Math.max( 0, Math.ceil(\n\t\t\telem[ \"offset\" + dimension[ 0 ].toUpperCase() + dimension.slice( 1 ) ] -\n\t\t\tcomputedVal -\n\t\t\tdelta -\n\t\t\textra -\n\t\t\t0.5\n\n\t\t// If offsetWidth/offsetHeight is unknown, then we can't determine content-box scroll gutter\n\t\t// Use an explicit zero to avoid NaN (gh-3964)\n\t\t) ) || 0;\n\t}\n\n\treturn delta;\n}\n\nfunction getWidthOrHeight( elem, dimension, extra ) {\n\n\t// Start with computed style\n\tvar styles = getStyles( elem ),\n\n\t\t// To avoid forcing a reflow, only fetch boxSizing if we need it (gh-4322).\n\t\t// Fake content-box until we know it's needed to know the true value.\n\t\tboxSizingNeeded = !support.boxSizingReliable() || extra,\n\t\tisBorderBox = boxSizingNeeded &&\n\t\t\tjQuery.css( elem, \"boxSizing\", false, styles ) === \"border-box\",\n\t\tvalueIsBorderBox = isBorderBox,\n\n\t\tval = curCSS( elem, dimension, styles ),\n\t\toffsetProp = \"offset\" + dimension[ 0 ].toUpperCase() + dimension.slice( 1 );\n\n\t// Support: Firefox <=54\n\t// Return a confounding non-pixel value or feign ignorance, as appropriate.\n\tif ( rnumnonpx.test( val ) ) {\n\t\tif ( !extra ) {\n\t\t\treturn val;\n\t\t}\n\t\tval = \"auto\";\n\t}\n\n\n\t// Support: IE 9 - 11 only\n\t// Use offsetWidth/offsetHeight for when box sizing is unreliable.\n\t// In those cases, the computed value can be trusted to be border-box.\n\tif ( ( !support.boxSizingReliable() && isBorderBox ||\n\n\t\t// Support: IE 10 - 11+, Edge 15 - 18+\n\t\t// IE/Edge misreport `getComputedStyle` of table rows with width/height\n\t\t// set in CSS while `offset*` properties report correct values.\n\t\t// Interestingly, in some cases IE 9 doesn't suffer from this issue.\n\t\t!support.reliableTrDimensions() && nodeName( elem, \"tr\" ) ||\n\n\t\t// Fall back to offsetWidth/offsetHeight when value is \"auto\"\n\t\t// This happens for inline elements with no explicit setting (gh-3571)\n\t\tval === \"auto\" ||\n\n\t\t// Support: Android <=4.1 - 4.3 only\n\t\t// Also use offsetWidth/offsetHeight for misreported inline dimensions (gh-3602)\n\t\t!parseFloat( val ) && jQuery.css( elem, \"display\", false, styles ) === \"inline\" ) &&\n\n\t\t// Make sure the element is visible & connected\n\t\telem.getClientRects().length ) {\n\n\t\tisBorderBox = jQuery.css( elem, \"boxSizing\", false, styles ) === \"border-box\";\n\n\t\t// Where available, offsetWidth/offsetHeight approximate border box dimensions.\n\t\t// Where not available (e.g., SVG), assume unreliable box-sizing and interpret the\n\t\t// retrieved value as a content box dimension.\n\t\tvalueIsBorderBox = offsetProp in elem;\n\t\tif ( valueIsBorderBox ) {\n\t\t\tval = elem[ offsetProp ];\n\t\t}\n\t}\n\n\t// Normalize \"\" and auto\n\tval = parseFloat( val ) || 0;\n\n\t// Adjust for the element's box model\n\treturn ( val +\n\t\tboxModelAdjustment(\n\t\t\telem,\n\t\t\tdimension,\n\t\t\textra || ( isBorderBox ? \"border\" : \"content\" ),\n\t\t\tvalueIsBorderBox,\n\t\t\tstyles,\n\n\t\t\t// Provide the current computed size to request scroll gutter calculation (gh-3589)\n\t\t\tval\n\t\t)\n\t) + \"px\";\n}\n\njQuery.extend( {\n\n\t// Add in style property hooks for overriding the default\n\t// behavior of getting and setting a style property\n\tcssHooks: {\n\t\topacity: {\n\t\t\tget: function( elem, computed ) {\n\t\t\t\tif ( computed ) {\n\n\t\t\t\t\t// We should always get a number back from opacity\n\t\t\t\t\tvar ret = curCSS( elem, \"opacity\" );\n\t\t\t\t\treturn ret === \"\" ? \"1\" : ret;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t},\n\n\t// Don't automatically add \"px\" to these possibly-unitless properties\n\tcssNumber: {\n\t\t\"animationIterationCount\": true,\n\t\t\"columnCount\": true,\n\t\t\"fillOpacity\": true,\n\t\t\"flexGrow\": true,\n\t\t\"flexShrink\": true,\n\t\t\"fontWeight\": true,\n\t\t\"gridArea\": true,\n\t\t\"gridColumn\": true,\n\t\t\"gridColumnEnd\": true,\n\t\t\"gridColumnStart\": true,\n\t\t\"gridRow\": true,\n\t\t\"gridRowEnd\": true,\n\t\t\"gridRowStart\": true,\n\t\t\"lineHeight\": true,\n\t\t\"opacity\": true,\n\t\t\"order\": true,\n\t\t\"orphans\": true,\n\t\t\"widows\": true,\n\t\t\"zIndex\": true,\n\t\t\"zoom\": true\n\t},\n\n\t// Add in properties whose names you wish to fix before\n\t// setting or getting the value\n\tcssProps: {},\n\n\t// Get and set the style property on a DOM Node\n\tstyle: function( elem, name, value, extra ) {\n\n\t\t// Don't set styles on text and comment nodes\n\t\tif ( !elem || elem.nodeType === 3 || elem.nodeType === 8 || !elem.style ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Make sure that we're working with the right name\n\t\tvar ret, type, hooks,\n\t\t\torigName = camelCase( name ),\n\t\t\tisCustomProp = rcustomProp.test( name ),\n\t\t\tstyle = elem.style;\n\n\t\t// Make sure that we're working with the right name. We don't\n\t\t// want to query the value if it is a CSS custom property\n\t\t// since they are user-defined.\n\t\tif ( !isCustomProp ) {\n\t\t\tname = finalPropName( origName );\n\t\t}\n\n\t\t// Gets hook for the prefixed version, then unprefixed version\n\t\thooks = jQuery.cssHooks[ name ] || jQuery.cssHooks[ origName ];\n\n\t\t// Check if we're setting a value\n\t\tif ( value !== undefined ) {\n\t\t\ttype = typeof value;\n\n\t\t\t// Convert \"+=\" or \"-=\" to relative numbers (#7345)\n\t\t\tif ( type === \"string\" && ( ret = rcssNum.exec( value ) ) && ret[ 1 ] ) {\n\t\t\t\tvalue = adjustCSS( elem, name, ret );\n\n\t\t\t\t// Fixes bug #9237\n\t\t\t\ttype = \"number\";\n\t\t\t}\n\n\t\t\t// Make sure that null and NaN values aren't set (#7116)\n\t\t\tif ( value == null || value !== value ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// If a number was passed in, add the unit (except for certain CSS properties)\n\t\t\t// The isCustomProp check can be removed in jQuery 4.0 when we only auto-append\n\t\t\t// \"px\" to a few hardcoded values.\n\t\t\tif ( type === \"number\" && !isCustomProp ) {\n\t\t\t\tvalue += ret && ret[ 3 ] || ( jQuery.cssNumber[ origName ] ? \"\" : \"px\" );\n\t\t\t}\n\n\t\t\t// background-* props affect original clone's values\n\t\t\tif ( !support.clearCloneStyle && value === \"\" && name.indexOf( \"background\" ) === 0 ) {\n\t\t\t\tstyle[ name ] = \"inherit\";\n\t\t\t}\n\n\t\t\t// If a hook was provided, use that value, otherwise just set the specified value\n\t\t\tif ( !hooks || !( \"set\" in hooks ) ||\n\t\t\t\t( value = hooks.set( elem, value, extra ) ) !== undefined ) {\n\n\t\t\t\tif ( isCustomProp ) {\n\t\t\t\t\tstyle.setProperty( name, value );\n\t\t\t\t} else {\n\t\t\t\t\tstyle[ name ] = value;\n\t\t\t\t}\n\t\t\t}\n\n\t\t} else {\n\n\t\t\t// If a hook was provided get the non-computed value from there\n\t\t\tif ( hooks && \"get\" in hooks &&\n\t\t\t\t( ret = hooks.get( elem, false, extra ) ) !== undefined ) {\n\n\t\t\t\treturn ret;\n\t\t\t}\n\n\t\t\t// Otherwise just get the value from the style object\n\t\t\treturn style[ name ];\n\t\t}\n\t},\n\n\tcss: function( elem, name, extra, styles ) {\n\t\tvar val, num, hooks,\n\t\t\torigName = camelCase( name ),\n\t\t\tisCustomProp = rcustomProp.test( name );\n\n\t\t// Make sure that we're working with the right name. We don't\n\t\t// want to modify the value if it is a CSS custom property\n\t\t// since they are user-defined.\n\t\tif ( !isCustomProp ) {\n\t\t\tname = finalPropName( origName );\n\t\t}\n\n\t\t// Try prefixed name followed by the unprefixed name\n\t\thooks = jQuery.cssHooks[ name ] || jQuery.cssHooks[ origName ];\n\n\t\t// If a hook was provided get the computed value from there\n\t\tif ( hooks && \"get\" in hooks ) {\n\t\t\tval = hooks.get( elem, true, extra );\n\t\t}\n\n\t\t// Otherwise, if a way to get the computed value exists, use that\n\t\tif ( val === undefined ) {\n\t\t\tval = curCSS( elem, name, styles );\n\t\t}\n\n\t\t// Convert \"normal\" to computed value\n\t\tif ( val === \"normal\" && name in cssNormalTransform ) {\n\t\t\tval = cssNormalTransform[ name ];\n\t\t}\n\n\t\t// Make numeric if forced or a qualifier was provided and val looks numeric\n\t\tif ( extra === \"\" || extra ) {\n\t\t\tnum = parseFloat( val );\n\t\t\treturn extra === true || isFinite( num ) ? num || 0 : val;\n\t\t}\n\n\t\treturn val;\n\t}\n} );\n\njQuery.each( [ \"height\", \"width\" ], function( _i, dimension ) {\n\tjQuery.cssHooks[ dimension ] = {\n\t\tget: function( elem, computed, extra ) {\n\t\t\tif ( computed ) {\n\n\t\t\t\t// Certain elements can have dimension info if we invisibly show them\n\t\t\t\t// but it must have a current display style that would benefit\n\t\t\t\treturn rdisplayswap.test( jQuery.css( elem, \"display\" ) ) &&\n\n\t\t\t\t\t// Support: Safari 8+\n\t\t\t\t\t// Table columns in Safari have non-zero offsetWidth & zero\n\t\t\t\t\t// getBoundingClientRect().width unless display is changed.\n\t\t\t\t\t// Support: IE <=11 only\n\t\t\t\t\t// Running getBoundingClientRect on a disconnected node\n\t\t\t\t\t// in IE throws an error.\n\t\t\t\t\t( !elem.getClientRects().length || !elem.getBoundingClientRect().width ) ?\n\t\t\t\t\tswap( elem, cssShow, function() {\n\t\t\t\t\t\treturn getWidthOrHeight( elem, dimension, extra );\n\t\t\t\t\t} ) :\n\t\t\t\t\tgetWidthOrHeight( elem, dimension, extra );\n\t\t\t}\n\t\t},\n\n\t\tset: function( elem, value, extra ) {\n\t\t\tvar matches,\n\t\t\t\tstyles = getStyles( elem ),\n\n\t\t\t\t// Only read styles.position if the test has a chance to fail\n\t\t\t\t// to avoid forcing a reflow.\n\t\t\t\tscrollboxSizeBuggy = !support.scrollboxSize() &&\n\t\t\t\t\tstyles.position === \"absolute\",\n\n\t\t\t\t// To avoid forcing a reflow, only fetch boxSizing if we need it (gh-3991)\n\t\t\t\tboxSizingNeeded = scrollboxSizeBuggy || extra,\n\t\t\t\tisBorderBox = boxSizingNeeded &&\n\t\t\t\t\tjQuery.css( elem, \"boxSizing\", false, styles ) === \"border-box\",\n\t\t\t\tsubtract = extra ?\n\t\t\t\t\tboxModelAdjustment(\n\t\t\t\t\t\telem,\n\t\t\t\t\t\tdimension,\n\t\t\t\t\t\textra,\n\t\t\t\t\t\tisBorderBox,\n\t\t\t\t\t\tstyles\n\t\t\t\t\t) :\n\t\t\t\t\t0;\n\n\t\t\t// Account for unreliable border-box dimensions by comparing offset* to computed and\n\t\t\t// faking a content-box to get border and padding (gh-3699)\n\t\t\tif ( isBorderBox && scrollboxSizeBuggy ) {\n\t\t\t\tsubtract -= Math.ceil(\n\t\t\t\t\telem[ \"offset\" + dimension[ 0 ].toUpperCase() + dimension.slice( 1 ) ] -\n\t\t\t\t\tparseFloat( styles[ dimension ] ) -\n\t\t\t\t\tboxModelAdjustment( elem, dimension, \"border\", false, styles ) -\n\t\t\t\t\t0.5\n\t\t\t\t);\n\t\t\t}\n\n\t\t\t// Convert to pixels if value adjustment is needed\n\t\t\tif ( subtract && ( matches = rcssNum.exec( value ) ) &&\n\t\t\t\t( matches[ 3 ] || \"px\" ) !== \"px\" ) {\n\n\t\t\t\telem.style[ dimension ] = value;\n\t\t\t\tvalue = jQuery.css( elem, dimension );\n\t\t\t}\n\n\t\t\treturn setPositiveNumber( elem, value, subtract );\n\t\t}\n\t};\n} );\n\njQuery.cssHooks.marginLeft = addGetHookIf( support.reliableMarginLeft,\n\tfunction( elem, computed ) {\n\t\tif ( computed ) {\n\t\t\treturn ( parseFloat( curCSS( elem, \"marginLeft\" ) ) ||\n\t\t\t\telem.getBoundingClientRect().left -\n\t\t\t\t\tswap( elem, { marginLeft: 0 }, function() {\n\t\t\t\t\t\treturn elem.getBoundingClientRect().left;\n\t\t\t\t\t} )\n\t\t\t) + \"px\";\n\t\t}\n\t}\n);\n\n// These hooks are used by animate to expand properties\njQuery.each( {\n\tmargin: \"\",\n\tpadding: \"\",\n\tborder: \"Width\"\n}, function( prefix, suffix ) {\n\tjQuery.cssHooks[ prefix + suffix ] = {\n\t\texpand: function( value ) {\n\t\t\tvar i = 0,\n\t\t\t\texpanded = {},\n\n\t\t\t\t// Assumes a single number if not a string\n\t\t\t\tparts = typeof value === \"string\" ? value.split( \" \" ) : [ value ];\n\n\t\t\tfor ( ; i < 4; i++ ) {\n\t\t\t\texpanded[ prefix + cssExpand[ i ] + suffix ] =\n\t\t\t\t\tparts[ i ] || parts[ i - 2 ] || parts[ 0 ];\n\t\t\t}\n\n\t\t\treturn expanded;\n\t\t}\n\t};\n\n\tif ( prefix !== \"margin\" ) {\n\t\tjQuery.cssHooks[ prefix + suffix ].set = setPositiveNumber;\n\t}\n} );\n\njQuery.fn.extend( {\n\tcss: function( name, value ) {\n\t\treturn access( this, function( elem, name, value ) {\n\t\t\tvar styles, len,\n\t\t\t\tmap = {},\n\t\t\t\ti = 0;\n\n\t\t\tif ( Array.isArray( name ) ) {\n\t\t\t\tstyles = getStyles( elem );\n\t\t\t\tlen = name.length;\n\n\t\t\t\tfor ( ; i < len; i++ ) {\n\t\t\t\t\tmap[ name[ i ] ] = jQuery.css( elem, name[ i ], false, styles );\n\t\t\t\t}\n\n\t\t\t\treturn map;\n\t\t\t}\n\n\t\t\treturn value !== undefined ?\n\t\t\t\tjQuery.style( elem, name, value ) :\n\t\t\t\tjQuery.css( elem, name );\n\t\t}, name, value, arguments.length > 1 );\n\t}\n} );\n\n\nfunction Tween( elem, options, prop, end, easing ) {\n\treturn new Tween.prototype.init( elem, options, prop, end, easing );\n}\njQuery.Tween = Tween;\n\nTween.prototype = {\n\tconstructor: Tween,\n\tinit: function( elem, options, prop, end, easing, unit ) {\n\t\tthis.elem = elem;\n\t\tthis.prop = prop;\n\t\tthis.easing = easing || jQuery.easing._default;\n\t\tthis.options = options;\n\t\tthis.start = this.now = this.cur();\n\t\tthis.end = end;\n\t\tthis.unit = unit || ( jQuery.cssNumber[ prop ] ? \"\" : \"px\" );\n\t},\n\tcur: function() {\n\t\tvar hooks = Tween.propHooks[ this.prop ];\n\n\t\treturn hooks && hooks.get ?\n\t\t\thooks.get( this ) :\n\t\t\tTween.propHooks._default.get( this );\n\t},\n\trun: function( percent ) {\n\t\tvar eased,\n\t\t\thooks = Tween.propHooks[ this.prop ];\n\n\t\tif ( this.options.duration ) {\n\t\t\tthis.pos = eased = jQuery.easing[ this.easing ](\n\t\t\t\tpercent, this.options.duration * percent, 0, 1, this.options.duration\n\t\t\t);\n\t\t} else {\n\t\t\tthis.pos = eased = percent;\n\t\t}\n\t\tthis.now = ( this.end - this.start ) * eased + this.start;\n\n\t\tif ( this.options.step ) {\n\t\t\tthis.options.step.call( this.elem, this.now, this );\n\t\t}\n\n\t\tif ( hooks && hooks.set ) {\n\t\t\thooks.set( this );\n\t\t} else {\n\t\t\tTween.propHooks._default.set( this );\n\t\t}\n\t\treturn this;\n\t}\n};\n\nTween.prototype.init.prototype = Tween.prototype;\n\nTween.propHooks = {\n\t_default: {\n\t\tget: function( tween ) {\n\t\t\tvar result;\n\n\t\t\t// Use a property on the element directly when it is not a DOM element,\n\t\t\t// or when there is no matching style property that exists.\n\t\t\tif ( tween.elem.nodeType !== 1 ||\n\t\t\t\ttween.elem[ tween.prop ] != null && tween.elem.style[ tween.prop ] == null ) {\n\t\t\t\treturn tween.elem[ tween.prop ];\n\t\t\t}\n\n\t\t\t// Passing an empty string as a 3rd parameter to .css will automatically\n\t\t\t// attempt a parseFloat and fallback to a string if the parse fails.\n\t\t\t// Simple values such as \"10px\" are parsed to Float;\n\t\t\t// complex values such as \"rotate(1rad)\" are returned as-is.\n\t\t\tresult = jQuery.css( tween.elem, tween.prop, \"\" );\n\n\t\t\t// Empty strings, null, undefined and \"auto\" are converted to 0.\n\t\t\treturn !result || result === \"auto\" ? 0 : result;\n\t\t},\n\t\tset: function( tween ) {\n\n\t\t\t// Use step hook for back compat.\n\t\t\t// Use cssHook if its there.\n\t\t\t// Use .style if available and use plain properties where available.\n\t\t\tif ( jQuery.fx.step[ tween.prop ] ) {\n\t\t\t\tjQuery.fx.step[ tween.prop ]( tween );\n\t\t\t} else if ( tween.elem.nodeType === 1 && (\n\t\t\t\tjQuery.cssHooks[ tween.prop ] ||\n\t\t\t\t\ttween.elem.style[ finalPropName( tween.prop ) ] != null ) ) {\n\t\t\t\tjQuery.style( tween.elem, tween.prop, tween.now + tween.unit );\n\t\t\t} else {\n\t\t\t\ttween.elem[ tween.prop ] = tween.now;\n\t\t\t}\n\t\t}\n\t}\n};\n\n// Support: IE <=9 only\n// Panic based approach to setting things on disconnected nodes\nTween.propHooks.scrollTop = Tween.propHooks.scrollLeft = {\n\tset: function( tween ) {\n\t\tif ( tween.elem.nodeType && tween.elem.parentNode ) {\n\t\t\ttween.elem[ tween.prop ] = tween.now;\n\t\t}\n\t}\n};\n\njQuery.easing = {\n\tlinear: function( p ) {\n\t\treturn p;\n\t},\n\tswing: function( p ) {\n\t\treturn 0.5 - Math.cos( p * Math.PI ) / 2;\n\t},\n\t_default: \"swing\"\n};\n\njQuery.fx = Tween.prototype.init;\n\n// Back compat <1.8 extension point\njQuery.fx.step = {};\n\n\n\n\nvar\n\tfxNow, inProgress,\n\trfxtypes = /^(?:toggle|show|hide)$/,\n\trrun = /queueHooks$/;\n\nfunction schedule() {\n\tif ( inProgress ) {\n\t\tif ( document.hidden === false && window.requestAnimationFrame ) {\n\t\t\twindow.requestAnimationFrame( schedule );\n\t\t} else {\n\t\t\twindow.setTimeout( schedule, jQuery.fx.interval );\n\t\t}\n\n\t\tjQuery.fx.tick();\n\t}\n}\n\n// Animations created synchronously will run synchronously\nfunction createFxNow() {\n\twindow.setTimeout( function() {\n\t\tfxNow = undefined;\n\t} );\n\treturn ( fxNow = Date.now() );\n}\n\n// Generate parameters to create a standard animation\nfunction genFx( type, includeWidth ) {\n\tvar which,\n\t\ti = 0,\n\t\tattrs = { height: type };\n\n\t// If we include width, step value is 1 to do all cssExpand values,\n\t// otherwise step value is 2 to skip over Left and Right\n\tincludeWidth = includeWidth ? 1 : 0;\n\tfor ( ; i < 4; i += 2 - includeWidth ) {\n\t\twhich = cssExpand[ i ];\n\t\tattrs[ \"margin\" + which ] = attrs[ \"padding\" + which ] = type;\n\t}\n\n\tif ( includeWidth ) {\n\t\tattrs.opacity = attrs.width = type;\n\t}\n\n\treturn attrs;\n}\n\nfunction createTween( value, prop, animation ) {\n\tvar tween,\n\t\tcollection = ( Animation.tweeners[ prop ] || [] ).concat( Animation.tweeners[ \"*\" ] ),\n\t\tindex = 0,\n\t\tlength = collection.length;\n\tfor ( ; index < length; index++ ) {\n\t\tif ( ( tween = collection[ index ].call( animation, prop, value ) ) ) {\n\n\t\t\t// We're done with this property\n\t\t\treturn tween;\n\t\t}\n\t}\n}\n\nfunction defaultPrefilter( elem, props, opts ) {\n\tvar prop, value, toggle, hooks, oldfire, propTween, restoreDisplay, display,\n\t\tisBox = \"width\" in props || \"height\" in props,\n\t\tanim = this,\n\t\torig = {},\n\t\tstyle = elem.style,\n\t\thidden = elem.nodeType && isHiddenWithinTree( elem ),\n\t\tdataShow = dataPriv.get( elem, \"fxshow\" );\n\n\t// Queue-skipping animations hijack the fx hooks\n\tif ( !opts.queue ) {\n\t\thooks = jQuery._queueHooks( elem, \"fx\" );\n\t\tif ( hooks.unqueued == null ) {\n\t\t\thooks.unqueued = 0;\n\t\t\toldfire = hooks.empty.fire;\n\t\t\thooks.empty.fire = function() {\n\t\t\t\tif ( !hooks.unqueued ) {\n\t\t\t\t\toldfire();\n\t\t\t\t}\n\t\t\t};\n\t\t}\n\t\thooks.unqueued++;\n\n\t\tanim.always( function() {\n\n\t\t\t// Ensure the complete handler is called before this completes\n\t\t\tanim.always( function() {\n\t\t\t\thooks.unqueued--;\n\t\t\t\tif ( !jQuery.queue( elem, \"fx\" ).length ) {\n\t\t\t\t\thooks.empty.fire();\n\t\t\t\t}\n\t\t\t} );\n\t\t} );\n\t}\n\n\t// Detect show/hide animations\n\tfor ( prop in props ) {\n\t\tvalue = props[ prop ];\n\t\tif ( rfxtypes.test( value ) ) {\n\t\t\tdelete props[ prop ];\n\t\t\ttoggle = toggle || value === \"toggle\";\n\t\t\tif ( value === ( hidden ? \"hide\" : \"show\" ) ) {\n\n\t\t\t\t// Pretend to be hidden if this is a \"show\" and\n\t\t\t\t// there is still data from a stopped show/hide\n\t\t\t\tif ( value === \"show\" && dataShow && dataShow[ prop ] !== undefined ) {\n\t\t\t\t\thidden = true;\n\n\t\t\t\t// Ignore all other no-op show/hide data\n\t\t\t\t} else {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t}\n\t\t\torig[ prop ] = dataShow && dataShow[ prop ] || jQuery.style( elem, prop );\n\t\t}\n\t}\n\n\t// Bail out if this is a no-op like .hide().hide()\n\tpropTween = !jQuery.isEmptyObject( props );\n\tif ( !propTween && jQuery.isEmptyObject( orig ) ) {\n\t\treturn;\n\t}\n\n\t// Restrict \"overflow\" and \"display\" styles during box animations\n\tif ( isBox && elem.nodeType === 1 ) {\n\n\t\t// Support: IE <=9 - 11, Edge 12 - 15\n\t\t// Record all 3 overflow attributes because IE does not infer the shorthand\n\t\t// from identically-valued overflowX and overflowY and Edge just mirrors\n\t\t// the overflowX value there.\n\t\topts.overflow = [ style.overflow, style.overflowX, style.overflowY ];\n\n\t\t// Identify a display type, preferring old show/hide data over the CSS cascade\n\t\trestoreDisplay = dataShow && dataShow.display;\n\t\tif ( restoreDisplay == null ) {\n\t\t\trestoreDisplay = dataPriv.get( elem, \"display\" );\n\t\t}\n\t\tdisplay = jQuery.css( elem, \"display\" );\n\t\tif ( display === \"none\" ) {\n\t\t\tif ( restoreDisplay ) {\n\t\t\t\tdisplay = restoreDisplay;\n\t\t\t} else {\n\n\t\t\t\t// Get nonempty value(s) by temporarily forcing visibility\n\t\t\t\tshowHide( [ elem ], true );\n\t\t\t\trestoreDisplay = elem.style.display || restoreDisplay;\n\t\t\t\tdisplay = jQuery.css( elem, \"display\" );\n\t\t\t\tshowHide( [ elem ] );\n\t\t\t}\n\t\t}\n\n\t\t// Animate inline elements as inline-block\n\t\tif ( display === \"inline\" || display === \"inline-block\" && restoreDisplay != null ) {\n\t\t\tif ( jQuery.css( elem, \"float\" ) === \"none\" ) {\n\n\t\t\t\t// Restore the original display value at the end of pure show/hide animations\n\t\t\t\tif ( !propTween ) {\n\t\t\t\t\tanim.done( function() {\n\t\t\t\t\t\tstyle.display = restoreDisplay;\n\t\t\t\t\t} );\n\t\t\t\t\tif ( restoreDisplay == null ) {\n\t\t\t\t\t\tdisplay = style.display;\n\t\t\t\t\t\trestoreDisplay = display === \"none\" ? \"\" : display;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tstyle.display = \"inline-block\";\n\t\t\t}\n\t\t}\n\t}\n\n\tif ( opts.overflow ) {\n\t\tstyle.overflow = \"hidden\";\n\t\tanim.always( function() {\n\t\t\tstyle.overflow = opts.overflow[ 0 ];\n\t\t\tstyle.overflowX = opts.overflow[ 1 ];\n\t\t\tstyle.overflowY = opts.overflow[ 2 ];\n\t\t} );\n\t}\n\n\t// Implement show/hide animations\n\tpropTween = false;\n\tfor ( prop in orig ) {\n\n\t\t// General show/hide setup for this element animation\n\t\tif ( !propTween ) {\n\t\t\tif ( dataShow ) {\n\t\t\t\tif ( \"hidden\" in dataShow ) {\n\t\t\t\t\thidden = dataShow.hidden;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tdataShow = dataPriv.access( elem, \"fxshow\", { display: restoreDisplay } );\n\t\t\t}\n\n\t\t\t// Store hidden/visible for toggle so `.stop().toggle()` \"reverses\"\n\t\t\tif ( toggle ) {\n\t\t\t\tdataShow.hidden = !hidden;\n\t\t\t}\n\n\t\t\t// Show elements before animating them\n\t\t\tif ( hidden ) {\n\t\t\t\tshowHide( [ elem ], true );\n\t\t\t}\n\n\t\t\t/* eslint-disable no-loop-func */\n\n\t\t\tanim.done( function() {\n\n\t\t\t\t/* eslint-enable no-loop-func */\n\n\t\t\t\t// The final step of a \"hide\" animation is actually hiding the element\n\t\t\t\tif ( !hidden ) {\n\t\t\t\t\tshowHide( [ elem ] );\n\t\t\t\t}\n\t\t\t\tdataPriv.remove( elem, \"fxshow\" );\n\t\t\t\tfor ( prop in orig ) {\n\t\t\t\t\tjQuery.style( elem, prop, orig[ prop ] );\n\t\t\t\t}\n\t\t\t} );\n\t\t}\n\n\t\t// Per-property setup\n\t\tpropTween = createTween( hidden ? dataShow[ prop ] : 0, prop, anim );\n\t\tif ( !( prop in dataShow ) ) {\n\t\t\tdataShow[ prop ] = propTween.start;\n\t\t\tif ( hidden ) {\n\t\t\t\tpropTween.end = propTween.start;\n\t\t\t\tpropTween.start = 0;\n\t\t\t}\n\t\t}\n\t}\n}\n\nfunction propFilter( props, specialEasing ) {\n\tvar index, name, easing, value, hooks;\n\n\t// camelCase, specialEasing and expand cssHook pass\n\tfor ( index in props ) {\n\t\tname = camelCase( index );\n\t\teasing = specialEasing[ name ];\n\t\tvalue = props[ index ];\n\t\tif ( Array.isArray( value ) ) {\n\t\t\teasing = value[ 1 ];\n\t\t\tvalue = props[ index ] = value[ 0 ];\n\t\t}\n\n\t\tif ( index !== name ) {\n\t\t\tprops[ name ] = value;\n\t\t\tdelete props[ index ];\n\t\t}\n\n\t\thooks = jQuery.cssHooks[ name ];\n\t\tif ( hooks && \"expand\" in hooks ) {\n\t\t\tvalue = hooks.expand( value );\n\t\t\tdelete props[ name ];\n\n\t\t\t// Not quite $.extend, this won't overwrite existing keys.\n\t\t\t// Reusing 'index' because we have the correct \"name\"\n\t\t\tfor ( index in value ) {\n\t\t\t\tif ( !( index in props ) ) {\n\t\t\t\t\tprops[ index ] = value[ index ];\n\t\t\t\t\tspecialEasing[ index ] = easing;\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\tspecialEasing[ name ] = easing;\n\t\t}\n\t}\n}\n\nfunction Animation( elem, properties, options ) {\n\tvar result,\n\t\tstopped,\n\t\tindex = 0,\n\t\tlength = Animation.prefilters.length,\n\t\tdeferred = jQuery.Deferred().always( function() {\n\n\t\t\t// Don't match elem in the :animated selector\n\t\t\tdelete tick.elem;\n\t\t} ),\n\t\ttick = function() {\n\t\t\tif ( stopped ) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\tvar currentTime = fxNow || createFxNow(),\n\t\t\t\tremaining = Math.max( 0, animation.startTime + animation.duration - currentTime ),\n\n\t\t\t\t// Support: Android 2.3 only\n\t\t\t\t// Archaic crash bug won't allow us to use `1 - ( 0.5 || 0 )` (#12497)\n\t\t\t\ttemp = remaining / animation.duration || 0,\n\t\t\t\tpercent = 1 - temp,\n\t\t\t\tindex = 0,\n\t\t\t\tlength = animation.tweens.length;\n\n\t\t\tfor ( ; index < length; index++ ) {\n\t\t\t\tanimation.tweens[ index ].run( percent );\n\t\t\t}\n\n\t\t\tdeferred.notifyWith( elem, [ animation, percent, remaining ] );\n\n\t\t\t// If there's more to do, yield\n\t\t\tif ( percent < 1 && length ) {\n\t\t\t\treturn remaining;\n\t\t\t}\n\n\t\t\t// If this was an empty animation, synthesize a final progress notification\n\t\t\tif ( !length ) {\n\t\t\t\tdeferred.notifyWith( elem, [ animation, 1, 0 ] );\n\t\t\t}\n\n\t\t\t// Resolve the animation and report its conclusion\n\t\t\tdeferred.resolveWith( elem, [ animation ] );\n\t\t\treturn false;\n\t\t},\n\t\tanimation = deferred.promise( {\n\t\t\telem: elem,\n\t\t\tprops: jQuery.extend( {}, properties ),\n\t\t\topts: jQuery.extend( true, {\n\t\t\t\tspecialEasing: {},\n\t\t\t\teasing: jQuery.easing._default\n\t\t\t}, options ),\n\t\t\toriginalProperties: properties,\n\t\t\toriginalOptions: options,\n\t\t\tstartTime: fxNow || createFxNow(),\n\t\t\tduration: options.duration,\n\t\t\ttweens: [],\n\t\t\tcreateTween: function( prop, end ) {\n\t\t\t\tvar tween = jQuery.Tween( elem, animation.opts, prop, end,\n\t\t\t\t\tanimation.opts.specialEasing[ prop ] || animation.opts.easing );\n\t\t\t\tanimation.tweens.push( tween );\n\t\t\t\treturn tween;\n\t\t\t},\n\t\t\tstop: function( gotoEnd ) {\n\t\t\t\tvar index = 0,\n\n\t\t\t\t\t// If we are going to the end, we want to run all the tweens\n\t\t\t\t\t// otherwise we skip this part\n\t\t\t\t\tlength = gotoEnd ? animation.tweens.length : 0;\n\t\t\t\tif ( stopped ) {\n\t\t\t\t\treturn this;\n\t\t\t\t}\n\t\t\t\tstopped = true;\n\t\t\t\tfor ( ; index < length; index++ ) {\n\t\t\t\t\tanimation.tweens[ index ].run( 1 );\n\t\t\t\t}\n\n\t\t\t\t// Resolve when we played the last frame; otherwise, reject\n\t\t\t\tif ( gotoEnd ) {\n\t\t\t\t\tdeferred.notifyWith( elem, [ animation, 1, 0 ] );\n\t\t\t\t\tdeferred.resolveWith( elem, [ animation, gotoEnd ] );\n\t\t\t\t} else {\n\t\t\t\t\tdeferred.rejectWith( elem, [ animation, gotoEnd ] );\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t\t}\n\t\t} ),\n\t\tprops = animation.props;\n\n\tpropFilter( props, animation.opts.specialEasing );\n\n\tfor ( ; index < length; index++ ) {\n\t\tresult = Animation.prefilters[ index ].call( animation, elem, props, animation.opts );\n\t\tif ( result ) {\n\t\t\tif ( isFunction( result.stop ) ) {\n\t\t\t\tjQuery._queueHooks( animation.elem, animation.opts.queue ).stop =\n\t\t\t\t\tresult.stop.bind( result );\n\t\t\t}\n\t\t\treturn result;\n\t\t}\n\t}\n\n\tjQuery.map( props, createTween, animation );\n\n\tif ( isFunction( animation.opts.start ) ) {\n\t\tanimation.opts.start.call( elem, animation );\n\t}\n\n\t// Attach callbacks from options\n\tanimation\n\t\t.progress( animation.opts.progress )\n\t\t.done( animation.opts.done, animation.opts.complete )\n\t\t.fail( animation.opts.fail )\n\t\t.always( animation.opts.always );\n\n\tjQuery.fx.timer(\n\t\tjQuery.extend( tick, {\n\t\t\telem: elem,\n\t\t\tanim: animation,\n\t\t\tqueue: animation.opts.queue\n\t\t} )\n\t);\n\n\treturn animation;\n}\n\njQuery.Animation = jQuery.extend( Animation, {\n\n\ttweeners: {\n\t\t\"*\": [ function( prop, value ) {\n\t\t\tvar tween = this.createTween( prop, value );\n\t\t\tadjustCSS( tween.elem, prop, rcssNum.exec( value ), tween );\n\t\t\treturn tween;\n\t\t} ]\n\t},\n\n\ttweener: function( props, callback ) {\n\t\tif ( isFunction( props ) ) {\n\t\t\tcallback = props;\n\t\t\tprops = [ \"*\" ];\n\t\t} else {\n\t\t\tprops = props.match( rnothtmlwhite );\n\t\t}\n\n\t\tvar prop,\n\t\t\tindex = 0,\n\t\t\tlength = props.length;\n\n\t\tfor ( ; index < length; index++ ) {\n\t\t\tprop = props[ index ];\n\t\t\tAnimation.tweeners[ prop ] = Animation.tweeners[ prop ] || [];\n\t\t\tAnimation.tweeners[ prop ].unshift( callback );\n\t\t}\n\t},\n\n\tprefilters: [ defaultPrefilter ],\n\n\tprefilter: function( callback, prepend ) {\n\t\tif ( prepend ) {\n\t\t\tAnimation.prefilters.unshift( callback );\n\t\t} else {\n\t\t\tAnimation.prefilters.push( callback );\n\t\t}\n\t}\n} );\n\njQuery.speed = function( speed, easing, fn ) {\n\tvar opt = speed && typeof speed === \"object\" ? jQuery.extend( {}, speed ) : {\n\t\tcomplete: fn || !fn && easing ||\n\t\t\tisFunction( speed ) && speed,\n\t\tduration: speed,\n\t\teasing: fn && easing || easing && !isFunction( easing ) && easing\n\t};\n\n\t// Go to the end state if fx are off\n\tif ( jQuery.fx.off ) {\n\t\topt.duration = 0;\n\n\t} else {\n\t\tif ( typeof opt.duration !== \"number\" ) {\n\t\t\tif ( opt.duration in jQuery.fx.speeds ) {\n\t\t\t\topt.duration = jQuery.fx.speeds[ opt.duration ];\n\n\t\t\t} else {\n\t\t\t\topt.duration = jQuery.fx.speeds._default;\n\t\t\t}\n\t\t}\n\t}\n\n\t// Normalize opt.queue - true/undefined/null -> \"fx\"\n\tif ( opt.queue == null || opt.queue === true ) {\n\t\topt.queue = \"fx\";\n\t}\n\n\t// Queueing\n\topt.old = opt.complete;\n\n\topt.complete = function() {\n\t\tif ( isFunction( opt.old ) ) {\n\t\t\topt.old.call( this );\n\t\t}\n\n\t\tif ( opt.queue ) {\n\t\t\tjQuery.dequeue( this, opt.queue );\n\t\t}\n\t};\n\n\treturn opt;\n};\n\njQuery.fn.extend( {\n\tfadeTo: function( speed, to, easing, callback ) {\n\n\t\t// Show any hidden elements after setting opacity to 0\n\t\treturn this.filter( isHiddenWithinTree ).css( \"opacity\", 0 ).show()\n\n\t\t\t// Animate to the value specified\n\t\t\t.end().animate( { opacity: to }, speed, easing, callback );\n\t},\n\tanimate: function( prop, speed, easing, callback ) {\n\t\tvar empty = jQuery.isEmptyObject( prop ),\n\t\t\toptall = jQuery.speed( speed, easing, callback ),\n\t\t\tdoAnimation = function() {\n\n\t\t\t\t// Operate on a copy of prop so per-property easing won't be lost\n\t\t\t\tvar anim = Animation( this, jQuery.extend( {}, prop ), optall );\n\n\t\t\t\t// Empty animations, or finishing resolves immediately\n\t\t\t\tif ( empty || dataPriv.get( this, \"finish\" ) ) {\n\t\t\t\t\tanim.stop( true );\n\t\t\t\t}\n\t\t\t};\n\n\t\tdoAnimation.finish = doAnimation;\n\n\t\treturn empty || optall.queue === false ?\n\t\t\tthis.each( doAnimation ) :\n\t\t\tthis.queue( optall.queue, doAnimation );\n\t},\n\tstop: function( type, clearQueue, gotoEnd ) {\n\t\tvar stopQueue = function( hooks ) {\n\t\t\tvar stop = hooks.stop;\n\t\t\tdelete hooks.stop;\n\t\t\tstop( gotoEnd );\n\t\t};\n\n\t\tif ( typeof type !== \"string\" ) {\n\t\t\tgotoEnd = clearQueue;\n\t\t\tclearQueue = type;\n\t\t\ttype = undefined;\n\t\t}\n\t\tif ( clearQueue ) {\n\t\t\tthis.queue( type || \"fx\", [] );\n\t\t}\n\n\t\treturn this.each( function() {\n\t\t\tvar dequeue = true,\n\t\t\t\tindex = type != null && type + \"queueHooks\",\n\t\t\t\ttimers = jQuery.timers,\n\t\t\t\tdata = dataPriv.get( this );\n\n\t\t\tif ( index ) {\n\t\t\t\tif ( data[ index ] && data[ index ].stop ) {\n\t\t\t\t\tstopQueue( data[ index ] );\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tfor ( index in data ) {\n\t\t\t\t\tif ( data[ index ] && data[ index ].stop && rrun.test( index ) ) {\n\t\t\t\t\t\tstopQueue( data[ index ] );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tfor ( index = timers.length; index--; ) {\n\t\t\t\tif ( timers[ index ].elem === this &&\n\t\t\t\t\t( type == null || timers[ index ].queue === type ) ) {\n\n\t\t\t\t\ttimers[ index ].anim.stop( gotoEnd );\n\t\t\t\t\tdequeue = false;\n\t\t\t\t\ttimers.splice( index, 1 );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Start the next in the queue if the last step wasn't forced.\n\t\t\t// Timers currently will call their complete callbacks, which\n\t\t\t// will dequeue but only if they were gotoEnd.\n\t\t\tif ( dequeue || !gotoEnd ) {\n\t\t\t\tjQuery.dequeue( this, type );\n\t\t\t}\n\t\t} );\n\t},\n\tfinish: function( type ) {\n\t\tif ( type !== false ) {\n\t\t\ttype = type || \"fx\";\n\t\t}\n\t\treturn this.each( function() {\n\t\t\tvar index,\n\t\t\t\tdata = dataPriv.get( this ),\n\t\t\t\tqueue = data[ type + \"queue\" ],\n\t\t\t\thooks = data[ type + \"queueHooks\" ],\n\t\t\t\ttimers = jQuery.timers,\n\t\t\t\tlength = queue ? queue.length : 0;\n\n\t\t\t// Enable finishing flag on private data\n\t\t\tdata.finish = true;\n\n\t\t\t// Empty the queue first\n\t\t\tjQuery.queue( this, type, [] );\n\n\t\t\tif ( hooks && hooks.stop ) {\n\t\t\t\thooks.stop.call( this, true );\n\t\t\t}\n\n\t\t\t// Look for any active animations, and finish them\n\t\t\tfor ( index = timers.length; index--; ) {\n\t\t\t\tif ( timers[ index ].elem === this && timers[ index ].queue === type ) {\n\t\t\t\t\ttimers[ index ].anim.stop( true );\n\t\t\t\t\ttimers.splice( index, 1 );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Look for any animations in the old queue and finish them\n\t\t\tfor ( index = 0; index < length; index++ ) {\n\t\t\t\tif ( queue[ index ] && queue[ index ].finish ) {\n\t\t\t\t\tqueue[ index ].finish.call( this );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Turn off finishing flag\n\t\t\tdelete data.finish;\n\t\t} );\n\t}\n} );\n\njQuery.each( [ \"toggle\", \"show\", \"hide\" ], function( _i, name ) {\n\tvar cssFn = jQuery.fn[ name ];\n\tjQuery.fn[ name ] = function( speed, easing, callback ) {\n\t\treturn speed == null || typeof speed === \"boolean\" ?\n\t\t\tcssFn.apply( this, arguments ) :\n\t\t\tthis.animate( genFx( name, true ), speed, easing, callback );\n\t};\n} );\n\n// Generate shortcuts for custom animations\njQuery.each( {\n\tslideDown: genFx( \"show\" ),\n\tslideUp: genFx( \"hide\" ),\n\tslideToggle: genFx( \"toggle\" ),\n\tfadeIn: { opacity: \"show\" },\n\tfadeOut: { opacity: \"hide\" },\n\tfadeToggle: { opacity: \"toggle\" }\n}, function( name, props ) {\n\tjQuery.fn[ name ] = function( speed, easing, callback ) {\n\t\treturn this.animate( props, speed, easing, callback );\n\t};\n} );\n\njQuery.timers = [];\njQuery.fx.tick = function() {\n\tvar timer,\n\t\ti = 0,\n\t\ttimers = jQuery.timers;\n\n\tfxNow = Date.now();\n\n\tfor ( ; i < timers.length; i++ ) {\n\t\ttimer = timers[ i ];\n\n\t\t// Run the timer and safely remove it when done (allowing for external removal)\n\t\tif ( !timer() && timers[ i ] === timer ) {\n\t\t\ttimers.splice( i--, 1 );\n\t\t}\n\t}\n\n\tif ( !timers.length ) {\n\t\tjQuery.fx.stop();\n\t}\n\tfxNow = undefined;\n};\n\njQuery.fx.timer = function( timer ) {\n\tjQuery.timers.push( timer );\n\tjQuery.fx.start();\n};\n\njQuery.fx.interval = 13;\njQuery.fx.start = function() {\n\tif ( inProgress ) {\n\t\treturn;\n\t}\n\n\tinProgress = true;\n\tschedule();\n};\n\njQuery.fx.stop = function() {\n\tinProgress = null;\n};\n\njQuery.fx.speeds = {\n\tslow: 600,\n\tfast: 200,\n\n\t// Default speed\n\t_default: 400\n};\n\n\n// Based off of the plugin by Clint Helfers, with permission.\n// https://web.archive.org/web/20100324014747/http://blindsignals.com/index.php/2009/07/jquery-delay/\njQuery.fn.delay = function( time, type ) {\n\ttime = jQuery.fx ? jQuery.fx.speeds[ time ] || time : time;\n\ttype = type || \"fx\";\n\n\treturn this.queue( type, function( next, hooks ) {\n\t\tvar timeout = window.setTimeout( next, time );\n\t\thooks.stop = function() {\n\t\t\twindow.clearTimeout( timeout );\n\t\t};\n\t} );\n};\n\n\n( function() {\n\tvar input = document.createElement( \"input\" ),\n\t\tselect = document.createElement( \"select\" ),\n\t\topt = select.appendChild( document.createElement( \"option\" ) );\n\n\tinput.type = \"checkbox\";\n\n\t// Support: Android <=4.3 only\n\t// Default value for a checkbox should be \"on\"\n\tsupport.checkOn = input.value !== \"\";\n\n\t// Support: IE <=11 only\n\t// Must access selectedIndex to make default options select\n\tsupport.optSelected = opt.selected;\n\n\t// Support: IE <=11 only\n\t// An input loses its value after becoming a radio\n\tinput = document.createElement( \"input\" );\n\tinput.value = \"t\";\n\tinput.type = \"radio\";\n\tsupport.radioValue = input.value === \"t\";\n} )();\n\n\nvar boolHook,\n\tattrHandle = jQuery.expr.attrHandle;\n\njQuery.fn.extend( {\n\tattr: function( name, value ) {\n\t\treturn access( this, jQuery.attr, name, value, arguments.length > 1 );\n\t},\n\n\tremoveAttr: function( name ) {\n\t\treturn this.each( function() {\n\t\t\tjQuery.removeAttr( this, name );\n\t\t} );\n\t}\n} );\n\njQuery.extend( {\n\tattr: function( elem, name, value ) {\n\t\tvar ret, hooks,\n\t\t\tnType = elem.nodeType;\n\n\t\t// Don't get/set attributes on text, comment and attribute nodes\n\t\tif ( nType === 3 || nType === 8 || nType === 2 ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Fallback to prop when attributes are not supported\n\t\tif ( typeof elem.getAttribute === \"undefined\" ) {\n\t\t\treturn jQuery.prop( elem, name, value );\n\t\t}\n\n\t\t// Attribute hooks are determined by the lowercase version\n\t\t// Grab necessary hook if one is defined\n\t\tif ( nType !== 1 || !jQuery.isXMLDoc( elem ) ) {\n\t\t\thooks = jQuery.attrHooks[ name.toLowerCase() ] ||\n\t\t\t\t( jQuery.expr.match.bool.test( name ) ? boolHook : undefined );\n\t\t}\n\n\t\tif ( value !== undefined ) {\n\t\t\tif ( value === null ) {\n\t\t\t\tjQuery.removeAttr( elem, name );\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif ( hooks && \"set\" in hooks &&\n\t\t\t\t( ret = hooks.set( elem, value, name ) ) !== undefined ) {\n\t\t\t\treturn ret;\n\t\t\t}\n\n\t\t\telem.setAttribute( name, value + \"\" );\n\t\t\treturn value;\n\t\t}\n\n\t\tif ( hooks && \"get\" in hooks && ( ret = hooks.get( elem, name ) ) !== null ) {\n\t\t\treturn ret;\n\t\t}\n\n\t\tret = jQuery.find.attr( elem, name );\n\n\t\t// Non-existent attributes return null, we normalize to undefined\n\t\treturn ret == null ? undefined : ret;\n\t},\n\n\tattrHooks: {\n\t\ttype: {\n\t\t\tset: function( elem, value ) {\n\t\t\t\tif ( !support.radioValue && value === \"radio\" &&\n\t\t\t\t\tnodeName( elem, \"input\" ) ) {\n\t\t\t\t\tvar val = elem.value;\n\t\t\t\t\telem.setAttribute( \"type\", value );\n\t\t\t\t\tif ( val ) {\n\t\t\t\t\t\telem.value = val;\n\t\t\t\t\t}\n\t\t\t\t\treturn value;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t},\n\n\tremoveAttr: function( elem, value ) {\n\t\tvar name,\n\t\t\ti = 0,\n\n\t\t\t// Attribute names can contain non-HTML whitespace characters\n\t\t\t// https://html.spec.whatwg.org/multipage/syntax.html#attributes-2\n\t\t\tattrNames = value && value.match( rnothtmlwhite );\n\n\t\tif ( attrNames && elem.nodeType === 1 ) {\n\t\t\twhile ( ( name = attrNames[ i++ ] ) ) {\n\t\t\t\telem.removeAttribute( name );\n\t\t\t}\n\t\t}\n\t}\n} );\n\n// Hooks for boolean attributes\nboolHook = {\n\tset: function( elem, value, name ) {\n\t\tif ( value === false ) {\n\n\t\t\t// Remove boolean attributes when set to false\n\t\t\tjQuery.removeAttr( elem, name );\n\t\t} else {\n\t\t\telem.setAttribute( name, name );\n\t\t}\n\t\treturn name;\n\t}\n};\n\njQuery.each( jQuery.expr.match.bool.source.match( /\\w+/g ), function( _i, name ) {\n\tvar getter = attrHandle[ name ] || jQuery.find.attr;\n\n\tattrHandle[ name ] = function( elem, name, isXML ) {\n\t\tvar ret, handle,\n\t\t\tlowercaseName = name.toLowerCase();\n\n\t\tif ( !isXML ) {\n\n\t\t\t// Avoid an infinite loop by temporarily removing this function from the getter\n\t\t\thandle = attrHandle[ lowercaseName ];\n\t\t\tattrHandle[ lowercaseName ] = ret;\n\t\t\tret = getter( elem, name, isXML ) != null ?\n\t\t\t\tlowercaseName :\n\t\t\t\tnull;\n\t\t\tattrHandle[ lowercaseName ] = handle;\n\t\t}\n\t\treturn ret;\n\t};\n} );\n\n\n\n\nvar rfocusable = /^(?:input|select|textarea|button)$/i,\n\trclickable = /^(?:a|area)$/i;\n\njQuery.fn.extend( {\n\tprop: function( name, value ) {\n\t\treturn access( this, jQuery.prop, name, value, arguments.length > 1 );\n\t},\n\n\tremoveProp: function( name ) {\n\t\treturn this.each( function() {\n\t\t\tdelete this[ jQuery.propFix[ name ] || name ];\n\t\t} );\n\t}\n} );\n\njQuery.extend( {\n\tprop: function( elem, name, value ) {\n\t\tvar ret, hooks,\n\t\t\tnType = elem.nodeType;\n\n\t\t// Don't get/set properties on text, comment and attribute nodes\n\t\tif ( nType === 3 || nType === 8 || nType === 2 ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( nType !== 1 || !jQuery.isXMLDoc( elem ) ) {\n\n\t\t\t// Fix name and attach hooks\n\t\t\tname = jQuery.propFix[ name ] || name;\n\t\t\thooks = jQuery.propHooks[ name ];\n\t\t}\n\n\t\tif ( value !== undefined ) {\n\t\t\tif ( hooks && \"set\" in hooks &&\n\t\t\t\t( ret = hooks.set( elem, value, name ) ) !== undefined ) {\n\t\t\t\treturn ret;\n\t\t\t}\n\n\t\t\treturn ( elem[ name ] = value );\n\t\t}\n\n\t\tif ( hooks && \"get\" in hooks && ( ret = hooks.get( elem, name ) ) !== null ) {\n\t\t\treturn ret;\n\t\t}\n\n\t\treturn elem[ name ];\n\t},\n\n\tpropHooks: {\n\t\ttabIndex: {\n\t\t\tget: function( elem ) {\n\n\t\t\t\t// Support: IE <=9 - 11 only\n\t\t\t\t// elem.tabIndex doesn't always return the\n\t\t\t\t// correct value when it hasn't been explicitly set\n\t\t\t\t// https://web.archive.org/web/20141116233347/http://fluidproject.org/blog/2008/01/09/getting-setting-and-removing-tabindex-values-with-javascript/\n\t\t\t\t// Use proper attribute retrieval(#12072)\n\t\t\t\tvar tabindex = jQuery.find.attr( elem, \"tabindex\" );\n\n\t\t\t\tif ( tabindex ) {\n\t\t\t\t\treturn parseInt( tabindex, 10 );\n\t\t\t\t}\n\n\t\t\t\tif (\n\t\t\t\t\trfocusable.test( elem.nodeName ) ||\n\t\t\t\t\trclickable.test( elem.nodeName ) &&\n\t\t\t\t\telem.href\n\t\t\t\t) {\n\t\t\t\t\treturn 0;\n\t\t\t\t}\n\n\t\t\t\treturn -1;\n\t\t\t}\n\t\t}\n\t},\n\n\tpropFix: {\n\t\t\"for\": \"htmlFor\",\n\t\t\"class\": \"className\"\n\t}\n} );\n\n// Support: IE <=11 only\n// Accessing the selectedIndex property\n// forces the browser to respect setting selected\n// on the option\n// The getter ensures a default option is selected\n// when in an optgroup\n// eslint rule \"no-unused-expressions\" is disabled for this code\n// since it considers such accessions noop\nif ( !support.optSelected ) {\n\tjQuery.propHooks.selected = {\n\t\tget: function( elem ) {\n\n\t\t\t/* eslint no-unused-expressions: \"off\" */\n\n\t\t\tvar parent = elem.parentNode;\n\t\t\tif ( parent && parent.parentNode ) {\n\t\t\t\tparent.parentNode.selectedIndex;\n\t\t\t}\n\t\t\treturn null;\n\t\t},\n\t\tset: function( elem ) {\n\n\t\t\t/* eslint no-unused-expressions: \"off\" */\n\n\t\t\tvar parent = elem.parentNode;\n\t\t\tif ( parent ) {\n\t\t\t\tparent.selectedIndex;\n\n\t\t\t\tif ( parent.parentNode ) {\n\t\t\t\t\tparent.parentNode.selectedIndex;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t};\n}\n\njQuery.each( [\n\t\"tabIndex\",\n\t\"readOnly\",\n\t\"maxLength\",\n\t\"cellSpacing\",\n\t\"cellPadding\",\n\t\"rowSpan\",\n\t\"colSpan\",\n\t\"useMap\",\n\t\"frameBorder\",\n\t\"contentEditable\"\n], function() {\n\tjQuery.propFix[ this.toLowerCase() ] = this;\n} );\n\n\n\n\n\t// Strip and collapse whitespace according to HTML spec\n\t// https://infra.spec.whatwg.org/#strip-and-collapse-ascii-whitespace\n\tfunction stripAndCollapse( value ) {\n\t\tvar tokens = value.match( rnothtmlwhite ) || [];\n\t\treturn tokens.join( \" \" );\n\t}\n\n\nfunction getClass( elem ) {\n\treturn elem.getAttribute && elem.getAttribute( \"class\" ) || \"\";\n}\n\nfunction classesToArray( value ) {\n\tif ( Array.isArray( value ) ) {\n\t\treturn value;\n\t}\n\tif ( typeof value === \"string\" ) {\n\t\treturn value.match( rnothtmlwhite ) || [];\n\t}\n\treturn [];\n}\n\njQuery.fn.extend( {\n\taddClass: function( value ) {\n\t\tvar classes, elem, cur, curValue, clazz, j, finalValue,\n\t\t\ti = 0;\n\n\t\tif ( isFunction( value ) ) {\n\t\t\treturn this.each( function( j ) {\n\t\t\t\tjQuery( this ).addClass( value.call( this, j, getClass( this ) ) );\n\t\t\t} );\n\t\t}\n\n\t\tclasses = classesToArray( value );\n\n\t\tif ( classes.length ) {\n\t\t\twhile ( ( elem = this[ i++ ] ) ) {\n\t\t\t\tcurValue = getClass( elem );\n\t\t\t\tcur = elem.nodeType === 1 && ( \" \" + stripAndCollapse( curValue ) + \" \" );\n\n\t\t\t\tif ( cur ) {\n\t\t\t\t\tj = 0;\n\t\t\t\t\twhile ( ( clazz = classes[ j++ ] ) ) {\n\t\t\t\t\t\tif ( cur.indexOf( \" \" + clazz + \" \" ) < 0 ) {\n\t\t\t\t\t\t\tcur += clazz + \" \";\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// Only assign if different to avoid unneeded rendering.\n\t\t\t\t\tfinalValue = stripAndCollapse( cur );\n\t\t\t\t\tif ( curValue !== finalValue ) {\n\t\t\t\t\t\telem.setAttribute( \"class\", finalValue );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn this;\n\t},\n\n\tremoveClass: function( value ) {\n\t\tvar classes, elem, cur, curValue, clazz, j, finalValue,\n\t\t\ti = 0;\n\n\t\tif ( isFunction( value ) ) {\n\t\t\treturn this.each( function( j ) {\n\t\t\t\tjQuery( this ).removeClass( value.call( this, j, getClass( this ) ) );\n\t\t\t} );\n\t\t}\n\n\t\tif ( !arguments.length ) {\n\t\t\treturn this.attr( \"class\", \"\" );\n\t\t}\n\n\t\tclasses = classesToArray( value );\n\n\t\tif ( classes.length ) {\n\t\t\twhile ( ( elem = this[ i++ ] ) ) {\n\t\t\t\tcurValue = getClass( elem );\n\n\t\t\t\t// This expression is here for better compressibility (see addClass)\n\t\t\t\tcur = elem.nodeType === 1 && ( \" \" + stripAndCollapse( curValue ) + \" \" );\n\n\t\t\t\tif ( cur ) {\n\t\t\t\t\tj = 0;\n\t\t\t\t\twhile ( ( clazz = classes[ j++ ] ) ) {\n\n\t\t\t\t\t\t// Remove *all* instances\n\t\t\t\t\t\twhile ( cur.indexOf( \" \" + clazz + \" \" ) > -1 ) {\n\t\t\t\t\t\t\tcur = cur.replace( \" \" + clazz + \" \", \" \" );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// Only assign if different to avoid unneeded rendering.\n\t\t\t\t\tfinalValue = stripAndCollapse( cur );\n\t\t\t\t\tif ( curValue !== finalValue ) {\n\t\t\t\t\t\telem.setAttribute( \"class\", finalValue );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn this;\n\t},\n\n\ttoggleClass: function( value, stateVal ) {\n\t\tvar type = typeof value,\n\t\t\tisValidValue = type === \"string\" || Array.isArray( value );\n\n\t\tif ( typeof stateVal === \"boolean\" && isValidValue ) {\n\t\t\treturn stateVal ? this.addClass( value ) : this.removeClass( value );\n\t\t}\n\n\t\tif ( isFunction( value ) ) {\n\t\t\treturn this.each( function( i ) {\n\t\t\t\tjQuery( this ).toggleClass(\n\t\t\t\t\tvalue.call( this, i, getClass( this ), stateVal ),\n\t\t\t\t\tstateVal\n\t\t\t\t);\n\t\t\t} );\n\t\t}\n\n\t\treturn this.each( function() {\n\t\t\tvar className, i, self, classNames;\n\n\t\t\tif ( isValidValue ) {\n\n\t\t\t\t// Toggle individual class names\n\t\t\t\ti = 0;\n\t\t\t\tself = jQuery( this );\n\t\t\t\tclassNames = classesToArray( value );\n\n\t\t\t\twhile ( ( className = classNames[ i++ ] ) ) {\n\n\t\t\t\t\t// Check each className given, space separated list\n\t\t\t\t\tif ( self.hasClass( className ) ) {\n\t\t\t\t\t\tself.removeClass( className );\n\t\t\t\t\t} else {\n\t\t\t\t\t\tself.addClass( className );\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t// Toggle whole class name\n\t\t\t} else if ( value === undefined || type === \"boolean\" ) {\n\t\t\t\tclassName = getClass( this );\n\t\t\t\tif ( className ) {\n\n\t\t\t\t\t// Store className if set\n\t\t\t\t\tdataPriv.set( this, \"__className__\", className );\n\t\t\t\t}\n\n\t\t\t\t// If the element has a class name or if we're passed `false`,\n\t\t\t\t// then remove the whole classname (if there was one, the above saved it).\n\t\t\t\t// Otherwise bring back whatever was previously saved (if anything),\n\t\t\t\t// falling back to the empty string if nothing was stored.\n\t\t\t\tif ( this.setAttribute ) {\n\t\t\t\t\tthis.setAttribute( \"class\",\n\t\t\t\t\t\tclassName || value === false ?\n\t\t\t\t\t\t\t\"\" :\n\t\t\t\t\t\t\tdataPriv.get( this, \"__className__\" ) || \"\"\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t}\n\t\t} );\n\t},\n\n\thasClass: function( selector ) {\n\t\tvar className, elem,\n\t\t\ti = 0;\n\n\t\tclassName = \" \" + selector + \" \";\n\t\twhile ( ( elem = this[ i++ ] ) ) {\n\t\t\tif ( elem.nodeType === 1 &&\n\t\t\t\t( \" \" + stripAndCollapse( getClass( elem ) ) + \" \" ).indexOf( className ) > -1 ) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\n\t\treturn false;\n\t}\n} );\n\n\n\n\nvar rreturn = /\\r/g;\n\njQuery.fn.extend( {\n\tval: function( value ) {\n\t\tvar hooks, ret, valueIsFunction,\n\t\t\telem = this[ 0 ];\n\n\t\tif ( !arguments.length ) {\n\t\t\tif ( elem ) {\n\t\t\t\thooks = jQuery.valHooks[ elem.type ] ||\n\t\t\t\t\tjQuery.valHooks[ elem.nodeName.toLowerCase() ];\n\n\t\t\t\tif ( hooks &&\n\t\t\t\t\t\"get\" in hooks &&\n\t\t\t\t\t( ret = hooks.get( elem, \"value\" ) ) !== undefined\n\t\t\t\t) {\n\t\t\t\t\treturn ret;\n\t\t\t\t}\n\n\t\t\t\tret = elem.value;\n\n\t\t\t\t// Handle most common string cases\n\t\t\t\tif ( typeof ret === \"string\" ) {\n\t\t\t\t\treturn ret.replace( rreturn, \"\" );\n\t\t\t\t}\n\n\t\t\t\t// Handle cases where value is null/undef or number\n\t\t\t\treturn ret == null ? \"\" : ret;\n\t\t\t}\n\n\t\t\treturn;\n\t\t}\n\n\t\tvalueIsFunction = isFunction( value );\n\n\t\treturn this.each( function( i ) {\n\t\t\tvar val;\n\n\t\t\tif ( this.nodeType !== 1 ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif ( valueIsFunction ) {\n\t\t\t\tval = value.call( this, i, jQuery( this ).val() );\n\t\t\t} else {\n\t\t\t\tval = value;\n\t\t\t}\n\n\t\t\t// Treat null/undefined as \"\"; convert numbers to string\n\t\t\tif ( val == null ) {\n\t\t\t\tval = \"\";\n\n\t\t\t} else if ( typeof val === \"number\" ) {\n\t\t\t\tval += \"\";\n\n\t\t\t} else if ( Array.isArray( val ) ) {\n\t\t\t\tval = jQuery.map( val, function( value ) {\n\t\t\t\t\treturn value == null ? \"\" : value + \"\";\n\t\t\t\t} );\n\t\t\t}\n\n\t\t\thooks = jQuery.valHooks[ this.type ] || jQuery.valHooks[ this.nodeName.toLowerCase() ];\n\n\t\t\t// If set returns undefined, fall back to normal setting\n\t\t\tif ( !hooks || !( \"set\" in hooks ) || hooks.set( this, val, \"value\" ) === undefined ) {\n\t\t\t\tthis.value = val;\n\t\t\t}\n\t\t} );\n\t}\n} );\n\njQuery.extend( {\n\tvalHooks: {\n\t\toption: {\n\t\t\tget: function( elem ) {\n\n\t\t\t\tvar val = jQuery.find.attr( elem, \"value\" );\n\t\t\t\treturn val != null ?\n\t\t\t\t\tval :\n\n\t\t\t\t\t// Support: IE <=10 - 11 only\n\t\t\t\t\t// option.text throws exceptions (#14686, #14858)\n\t\t\t\t\t// Strip and collapse whitespace\n\t\t\t\t\t// https://html.spec.whatwg.org/#strip-and-collapse-whitespace\n\t\t\t\t\tstripAndCollapse( jQuery.text( elem ) );\n\t\t\t}\n\t\t},\n\t\tselect: {\n\t\t\tget: function( elem ) {\n\t\t\t\tvar value, option, i,\n\t\t\t\t\toptions = elem.options,\n\t\t\t\t\tindex = elem.selectedIndex,\n\t\t\t\t\tone = elem.type === \"select-one\",\n\t\t\t\t\tvalues = one ? null : [],\n\t\t\t\t\tmax = one ? index + 1 : options.length;\n\n\t\t\t\tif ( index < 0 ) {\n\t\t\t\t\ti = max;\n\n\t\t\t\t} else {\n\t\t\t\t\ti = one ? index : 0;\n\t\t\t\t}\n\n\t\t\t\t// Loop through all the selected options\n\t\t\t\tfor ( ; i < max; i++ ) {\n\t\t\t\t\toption = options[ i ];\n\n\t\t\t\t\t// Support: IE <=9 only\n\t\t\t\t\t// IE8-9 doesn't update selected after form reset (#2551)\n\t\t\t\t\tif ( ( option.selected || i === index ) &&\n\n\t\t\t\t\t\t\t// Don't return options that are disabled or in a disabled optgroup\n\t\t\t\t\t\t\t!option.disabled &&\n\t\t\t\t\t\t\t( !option.parentNode.disabled ||\n\t\t\t\t\t\t\t\t!nodeName( option.parentNode, \"optgroup\" ) ) ) {\n\n\t\t\t\t\t\t// Get the specific value for the option\n\t\t\t\t\t\tvalue = jQuery( option ).val();\n\n\t\t\t\t\t\t// We don't need an array for one selects\n\t\t\t\t\t\tif ( one ) {\n\t\t\t\t\t\t\treturn value;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Multi-Selects return an array\n\t\t\t\t\t\tvalues.push( value );\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\treturn values;\n\t\t\t},\n\n\t\t\tset: function( elem, value ) {\n\t\t\t\tvar optionSet, option,\n\t\t\t\t\toptions = elem.options,\n\t\t\t\t\tvalues = jQuery.makeArray( value ),\n\t\t\t\t\ti = options.length;\n\n\t\t\t\twhile ( i-- ) {\n\t\t\t\t\toption = options[ i ];\n\n\t\t\t\t\t/* eslint-disable no-cond-assign */\n\n\t\t\t\t\tif ( option.selected =\n\t\t\t\t\t\tjQuery.inArray( jQuery.valHooks.option.get( option ), values ) > -1\n\t\t\t\t\t) {\n\t\t\t\t\t\toptionSet = true;\n\t\t\t\t\t}\n\n\t\t\t\t\t/* eslint-enable no-cond-assign */\n\t\t\t\t}\n\n\t\t\t\t// Force browsers to behave consistently when non-matching value is set\n\t\t\t\tif ( !optionSet ) {\n\t\t\t\t\telem.selectedIndex = -1;\n\t\t\t\t}\n\t\t\t\treturn values;\n\t\t\t}\n\t\t}\n\t}\n} );\n\n// Radios and checkboxes getter/setter\njQuery.each( [ \"radio\", \"checkbox\" ], function() {\n\tjQuery.valHooks[ this ] = {\n\t\tset: function( elem, value ) {\n\t\t\tif ( Array.isArray( value ) ) {\n\t\t\t\treturn ( elem.checked = jQuery.inArray( jQuery( elem ).val(), value ) > -1 );\n\t\t\t}\n\t\t}\n\t};\n\tif ( !support.checkOn ) {\n\t\tjQuery.valHooks[ this ].get = function( elem ) {\n\t\t\treturn elem.getAttribute( \"value\" ) === null ? \"on\" : elem.value;\n\t\t};\n\t}\n} );\n\n\n\n\n// Return jQuery for attributes-only inclusion\n\n\nsupport.focusin = \"onfocusin\" in window;\n\n\nvar rfocusMorph = /^(?:focusinfocus|focusoutblur)$/,\n\tstopPropagationCallback = function( e ) {\n\t\te.stopPropagation();\n\t};\n\njQuery.extend( jQuery.event, {\n\n\ttrigger: function( event, data, elem, onlyHandlers ) {\n\n\t\tvar i, cur, tmp, bubbleType, ontype, handle, special, lastElement,\n\t\t\teventPath = [ elem || document ],\n\t\t\ttype = hasOwn.call( event, \"type\" ) ? event.type : event,\n\t\t\tnamespaces = hasOwn.call( event, \"namespace\" ) ? event.namespace.split( \".\" ) : [];\n\n\t\tcur = lastElement = tmp = elem = elem || document;\n\n\t\t// Don't do events on text and comment nodes\n\t\tif ( elem.nodeType === 3 || elem.nodeType === 8 ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// focus/blur morphs to focusin/out; ensure we're not firing them right now\n\t\tif ( rfocusMorph.test( type + jQuery.event.triggered ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( type.indexOf( \".\" ) > -1 ) {\n\n\t\t\t// Namespaced trigger; create a regexp to match event type in handle()\n\t\t\tnamespaces = type.split( \".\" );\n\t\t\ttype = namespaces.shift();\n\t\t\tnamespaces.sort();\n\t\t}\n\t\tontype = type.indexOf( \":\" ) < 0 && \"on\" + type;\n\n\t\t// Caller can pass in a jQuery.Event object, Object, or just an event type string\n\t\tevent = event[ jQuery.expando ] ?\n\t\t\tevent :\n\t\t\tnew jQuery.Event( type, typeof event === \"object\" && event );\n\n\t\t// Trigger bitmask: & 1 for native handlers; & 2 for jQuery (always true)\n\t\tevent.isTrigger = onlyHandlers ? 2 : 3;\n\t\tevent.namespace = namespaces.join( \".\" );\n\t\tevent.rnamespace = event.namespace ?\n\t\t\tnew RegExp( \"(^|\\\\.)\" + namespaces.join( \"\\\\.(?:.*\\\\.|)\" ) + \"(\\\\.|$)\" ) :\n\t\t\tnull;\n\n\t\t// Clean up the event in case it is being reused\n\t\tevent.result = undefined;\n\t\tif ( !event.target ) {\n\t\t\tevent.target = elem;\n\t\t}\n\n\t\t// Clone any incoming data and prepend the event, creating the handler arg list\n\t\tdata = data == null ?\n\t\t\t[ event ] :\n\t\t\tjQuery.makeArray( data, [ event ] );\n\n\t\t// Allow special events to draw outside the lines\n\t\tspecial = jQuery.event.special[ type ] || {};\n\t\tif ( !onlyHandlers && special.trigger && special.trigger.apply( elem, data ) === false ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Determine event propagation path in advance, per W3C events spec (#9951)\n\t\t// Bubble up to document, then to window; watch for a global ownerDocument var (#9724)\n\t\tif ( !onlyHandlers && !special.noBubble && !isWindow( elem ) ) {\n\n\t\t\tbubbleType = special.delegateType || type;\n\t\t\tif ( !rfocusMorph.test( bubbleType + type ) ) {\n\t\t\t\tcur = cur.parentNode;\n\t\t\t}\n\t\t\tfor ( ; cur; cur = cur.parentNode ) {\n\t\t\t\teventPath.push( cur );\n\t\t\t\ttmp = cur;\n\t\t\t}\n\n\t\t\t// Only add window if we got to document (e.g., not plain obj or detached DOM)\n\t\t\tif ( tmp === ( elem.ownerDocument || document ) ) {\n\t\t\t\teventPath.push( tmp.defaultView || tmp.parentWindow || window );\n\t\t\t}\n\t\t}\n\n\t\t// Fire handlers on the event path\n\t\ti = 0;\n\t\twhile ( ( cur = eventPath[ i++ ] ) && !event.isPropagationStopped() ) {\n\t\t\tlastElement = cur;\n\t\t\tevent.type = i > 1 ?\n\t\t\t\tbubbleType :\n\t\t\t\tspecial.bindType || type;\n\n\t\t\t// jQuery handler\n\t\t\thandle = ( dataPriv.get( cur, \"events\" ) || Object.create( null ) )[ event.type ] &&\n\t\t\t\tdataPriv.get( cur, \"handle\" );\n\t\t\tif ( handle ) {\n\t\t\t\thandle.apply( cur, data );\n\t\t\t}\n\n\t\t\t// Native handler\n\t\t\thandle = ontype && cur[ ontype ];\n\t\t\tif ( handle && handle.apply && acceptData( cur ) ) {\n\t\t\t\tevent.result = handle.apply( cur, data );\n\t\t\t\tif ( event.result === false ) {\n\t\t\t\t\tevent.preventDefault();\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tevent.type = type;\n\n\t\t// If nobody prevented the default action, do it now\n\t\tif ( !onlyHandlers && !event.isDefaultPrevented() ) {\n\n\t\t\tif ( ( !special._default ||\n\t\t\t\tspecial._default.apply( eventPath.pop(), data ) === false ) &&\n\t\t\t\tacceptData( elem ) ) {\n\n\t\t\t\t// Call a native DOM method on the target with the same name as the event.\n\t\t\t\t// Don't do default actions on window, that's where global variables be (#6170)\n\t\t\t\tif ( ontype && isFunction( elem[ type ] ) && !isWindow( elem ) ) {\n\n\t\t\t\t\t// Don't re-trigger an onFOO event when we call its FOO() method\n\t\t\t\t\ttmp = elem[ ontype ];\n\n\t\t\t\t\tif ( tmp ) {\n\t\t\t\t\t\telem[ ontype ] = null;\n\t\t\t\t\t}\n\n\t\t\t\t\t// Prevent re-triggering of the same event, since we already bubbled it above\n\t\t\t\t\tjQuery.event.triggered = type;\n\n\t\t\t\t\tif ( event.isPropagationStopped() ) {\n\t\t\t\t\t\tlastElement.addEventListener( type, stopPropagationCallback );\n\t\t\t\t\t}\n\n\t\t\t\t\telem[ type ]();\n\n\t\t\t\t\tif ( event.isPropagationStopped() ) {\n\t\t\t\t\t\tlastElement.removeEventListener( type, stopPropagationCallback );\n\t\t\t\t\t}\n\n\t\t\t\t\tjQuery.event.triggered = undefined;\n\n\t\t\t\t\tif ( tmp ) {\n\t\t\t\t\t\telem[ ontype ] = tmp;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn event.result;\n\t},\n\n\t// Piggyback on a donor event to simulate a different one\n\t// Used only for `focus(in | out)` events\n\tsimulate: function( type, elem, event ) {\n\t\tvar e = jQuery.extend(\n\t\t\tnew jQuery.Event(),\n\t\t\tevent,\n\t\t\t{\n\t\t\t\ttype: type,\n\t\t\t\tisSimulated: true\n\t\t\t}\n\t\t);\n\n\t\tjQuery.event.trigger( e, null, elem );\n\t}\n\n} );\n\njQuery.fn.extend( {\n\n\ttrigger: function( type, data ) {\n\t\treturn this.each( function() {\n\t\t\tjQuery.event.trigger( type, data, this );\n\t\t} );\n\t},\n\ttriggerHandler: function( type, data ) {\n\t\tvar elem = this[ 0 ];\n\t\tif ( elem ) {\n\t\t\treturn jQuery.event.trigger( type, data, elem, true );\n\t\t}\n\t}\n} );\n\n\n// Support: Firefox <=44\n// Firefox doesn't have focus(in | out) events\n// Related ticket - https://bugzilla.mozilla.org/show_bug.cgi?id=687787\n//\n// Support: Chrome <=48 - 49, Safari <=9.0 - 9.1\n// focus(in | out) events fire after focus & blur events,\n// which is spec violation - http://www.w3.org/TR/DOM-Level-3-Events/#events-focusevent-event-order\n// Related ticket - https://bugs.chromium.org/p/chromium/issues/detail?id=449857\nif ( !support.focusin ) {\n\tjQuery.each( { focus: \"focusin\", blur: \"focusout\" }, function( orig, fix ) {\n\n\t\t// Attach a single capturing handler on the document while someone wants focusin/focusout\n\t\tvar handler = function( event ) {\n\t\t\tjQuery.event.simulate( fix, event.target, jQuery.event.fix( event ) );\n\t\t};\n\n\t\tjQuery.event.special[ fix ] = {\n\t\t\tsetup: function() {\n\n\t\t\t\t// Handle: regular nodes (via `this.ownerDocument`), window\n\t\t\t\t// (via `this.document`) & document (via `this`).\n\t\t\t\tvar doc = this.ownerDocument || this.document || this,\n\t\t\t\t\tattaches = dataPriv.access( doc, fix );\n\n\t\t\t\tif ( !attaches ) {\n\t\t\t\t\tdoc.addEventListener( orig, handler, true );\n\t\t\t\t}\n\t\t\t\tdataPriv.access( doc, fix, ( attaches || 0 ) + 1 );\n\t\t\t},\n\t\t\tteardown: function() {\n\t\t\t\tvar doc = this.ownerDocument || this.document || this,\n\t\t\t\t\tattaches = dataPriv.access( doc, fix ) - 1;\n\n\t\t\t\tif ( !attaches ) {\n\t\t\t\t\tdoc.removeEventListener( orig, handler, true );\n\t\t\t\t\tdataPriv.remove( doc, fix );\n\n\t\t\t\t} else {\n\t\t\t\t\tdataPriv.access( doc, fix, attaches );\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\t} );\n}\nvar location = window.location;\n\nvar nonce = { guid: Date.now() };\n\nvar rquery = ( /\\?/ );\n\n\n\n// Cross-browser xml parsing\njQuery.parseXML = function( data ) {\n\tvar xml, parserErrorElem;\n\tif ( !data || typeof data !== \"string\" ) {\n\t\treturn null;\n\t}\n\n\t// Support: IE 9 - 11 only\n\t// IE throws on parseFromString with invalid input.\n\ttry {\n\t\txml = ( new window.DOMParser() ).parseFromString( data, \"text/xml\" );\n\t} catch ( e ) {}\n\n\tparserErrorElem = xml && xml.getElementsByTagName( \"parsererror\" )[ 0 ];\n\tif ( !xml || parserErrorElem ) {\n\t\tjQuery.error( \"Invalid XML: \" + (\n\t\t\tparserErrorElem ?\n\t\t\t\tjQuery.map( parserErrorElem.childNodes, function( el ) {\n\t\t\t\t\treturn el.textContent;\n\t\t\t\t} ).join( \"\\n\" ) :\n\t\t\t\tdata\n\t\t) );\n\t}\n\treturn xml;\n};\n\n\nvar\n\trbracket = /\\[\\]$/,\n\trCRLF = /\\r?\\n/g,\n\trsubmitterTypes = /^(?:submit|button|image|reset|file)$/i,\n\trsubmittable = /^(?:input|select|textarea|keygen)/i;\n\nfunction buildParams( prefix, obj, traditional, add ) {\n\tvar name;\n\n\tif ( Array.isArray( obj ) ) {\n\n\t\t// Serialize array item.\n\t\tjQuery.each( obj, function( i, v ) {\n\t\t\tif ( traditional || rbracket.test( prefix ) ) {\n\n\t\t\t\t// Treat each array item as a scalar.\n\t\t\t\tadd( prefix, v );\n\n\t\t\t} else {\n\n\t\t\t\t// Item is non-scalar (array or object), encode its numeric index.\n\t\t\t\tbuildParams(\n\t\t\t\t\tprefix + \"[\" + ( typeof v === \"object\" && v != null ? i : \"\" ) + \"]\",\n\t\t\t\t\tv,\n\t\t\t\t\ttraditional,\n\t\t\t\t\tadd\n\t\t\t\t);\n\t\t\t}\n\t\t} );\n\n\t} else if ( !traditional && toType( obj ) === \"object\" ) {\n\n\t\t// Serialize object item.\n\t\tfor ( name in obj ) {\n\t\t\tbuildParams( prefix + \"[\" + name + \"]\", obj[ name ], traditional, add );\n\t\t}\n\n\t} else {\n\n\t\t// Serialize scalar item.\n\t\tadd( prefix, obj );\n\t}\n}\n\n// Serialize an array of form elements or a set of\n// key/values into a query string\njQuery.param = function( a, traditional ) {\n\tvar prefix,\n\t\ts = [],\n\t\tadd = function( key, valueOrFunction ) {\n\n\t\t\t// If value is a function, invoke it and use its return value\n\t\t\tvar value = isFunction( valueOrFunction ) ?\n\t\t\t\tvalueOrFunction() :\n\t\t\t\tvalueOrFunction;\n\n\t\t\ts[ s.length ] = encodeURIComponent( key ) + \"=\" +\n\t\t\t\tencodeURIComponent( value == null ? \"\" : value );\n\t\t};\n\n\tif ( a == null ) {\n\t\treturn \"\";\n\t}\n\n\t// If an array was passed in, assume that it is an array of form elements.\n\tif ( Array.isArray( a ) || ( a.jquery && !jQuery.isPlainObject( a ) ) ) {\n\n\t\t// Serialize the form elements\n\t\tjQuery.each( a, function() {\n\t\t\tadd( this.name, this.value );\n\t\t} );\n\n\t} else {\n\n\t\t// If traditional, encode the \"old\" way (the way 1.3.2 or older\n\t\t// did it), otherwise encode params recursively.\n\t\tfor ( prefix in a ) {\n\t\t\tbuildParams( prefix, a[ prefix ], traditional, add );\n\t\t}\n\t}\n\n\t// Return the resulting serialization\n\treturn s.join( \"&\" );\n};\n\njQuery.fn.extend( {\n\tserialize: function() {\n\t\treturn jQuery.param( this.serializeArray() );\n\t},\n\tserializeArray: function() {\n\t\treturn this.map( function() {\n\n\t\t\t// Can add propHook for \"elements\" to filter or add form elements\n\t\t\tvar elements = jQuery.prop( this, \"elements\" );\n\t\t\treturn elements ? jQuery.makeArray( elements ) : this;\n\t\t} ).filter( function() {\n\t\t\tvar type = this.type;\n\n\t\t\t// Use .is( \":disabled\" ) so that fieldset[disabled] works\n\t\t\treturn this.name && !jQuery( this ).is( \":disabled\" ) &&\n\t\t\t\trsubmittable.test( this.nodeName ) && !rsubmitterTypes.test( type ) &&\n\t\t\t\t( this.checked || !rcheckableType.test( type ) );\n\t\t} ).map( function( _i, elem ) {\n\t\t\tvar val = jQuery( this ).val();\n\n\t\t\tif ( val == null ) {\n\t\t\t\treturn null;\n\t\t\t}\n\n\t\t\tif ( Array.isArray( val ) ) {\n\t\t\t\treturn jQuery.map( val, function( val ) {\n\t\t\t\t\treturn { name: elem.name, value: val.replace( rCRLF, \"\\r\\n\" ) };\n\t\t\t\t} );\n\t\t\t}\n\n\t\t\treturn { name: elem.name, value: val.replace( rCRLF, \"\\r\\n\" ) };\n\t\t} ).get();\n\t}\n} );\n\n\nvar\n\tr20 = /%20/g,\n\trhash = /#.*$/,\n\trantiCache = /([?&])_=[^&]*/,\n\trheaders = /^(.*?):[ \\t]*([^\\r\\n]*)$/mg,\n\n\t// #7653, #8125, #8152: local protocol detection\n\trlocalProtocol = /^(?:about|app|app-storage|.+-extension|file|res|widget):$/,\n\trnoContent = /^(?:GET|HEAD)$/,\n\trprotocol = /^\\/\\//,\n\n\t/* Prefilters\n\t * 1) They are useful to introduce custom dataTypes (see ajax/jsonp.js for an example)\n\t * 2) These are called:\n\t * - BEFORE asking for a transport\n\t * - AFTER param serialization (s.data is a string if s.processData is true)\n\t * 3) key is the dataType\n\t * 4) the catchall symbol \"*\" can be used\n\t * 5) execution will start with transport dataType and THEN continue down to \"*\" if needed\n\t */\n\tprefilters = {},\n\n\t/* Transports bindings\n\t * 1) key is the dataType\n\t * 2) the catchall symbol \"*\" can be used\n\t * 3) selection will start with transport dataType and THEN go to \"*\" if needed\n\t */\n\ttransports = {},\n\n\t// Avoid comment-prolog char sequence (#10098); must appease lint and evade compression\n\tallTypes = \"*/\".concat( \"*\" ),\n\n\t// Anchor tag for parsing the document origin\n\toriginAnchor = document.createElement( \"a\" );\n\noriginAnchor.href = location.href;\n\n// Base \"constructor\" for jQuery.ajaxPrefilter and jQuery.ajaxTransport\nfunction addToPrefiltersOrTransports( structure ) {\n\n\t// dataTypeExpression is optional and defaults to \"*\"\n\treturn function( dataTypeExpression, func ) {\n\n\t\tif ( typeof dataTypeExpression !== \"string\" ) {\n\t\t\tfunc = dataTypeExpression;\n\t\t\tdataTypeExpression = \"*\";\n\t\t}\n\n\t\tvar dataType,\n\t\t\ti = 0,\n\t\t\tdataTypes = dataTypeExpression.toLowerCase().match( rnothtmlwhite ) || [];\n\n\t\tif ( isFunction( func ) ) {\n\n\t\t\t// For each dataType in the dataTypeExpression\n\t\t\twhile ( ( dataType = dataTypes[ i++ ] ) ) {\n\n\t\t\t\t// Prepend if requested\n\t\t\t\tif ( dataType[ 0 ] === \"+\" ) {\n\t\t\t\t\tdataType = dataType.slice( 1 ) || \"*\";\n\t\t\t\t\t( structure[ dataType ] = structure[ dataType ] || [] ).unshift( func );\n\n\t\t\t\t// Otherwise append\n\t\t\t\t} else {\n\t\t\t\t\t( structure[ dataType ] = structure[ dataType ] || [] ).push( func );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t};\n}\n\n// Base inspection function for prefilters and transports\nfunction inspectPrefiltersOrTransports( structure, options, originalOptions, jqXHR ) {\n\n\tvar inspected = {},\n\t\tseekingTransport = ( structure === transports );\n\n\tfunction inspect( dataType ) {\n\t\tvar selected;\n\t\tinspected[ dataType ] = true;\n\t\tjQuery.each( structure[ dataType ] || [], function( _, prefilterOrFactory ) {\n\t\t\tvar dataTypeOrTransport = prefilterOrFactory( options, originalOptions, jqXHR );\n\t\t\tif ( typeof dataTypeOrTransport === \"string\" &&\n\t\t\t\t!seekingTransport && !inspected[ dataTypeOrTransport ] ) {\n\n\t\t\t\toptions.dataTypes.unshift( dataTypeOrTransport );\n\t\t\t\tinspect( dataTypeOrTransport );\n\t\t\t\treturn false;\n\t\t\t} else if ( seekingTransport ) {\n\t\t\t\treturn !( selected = dataTypeOrTransport );\n\t\t\t}\n\t\t} );\n\t\treturn selected;\n\t}\n\n\treturn inspect( options.dataTypes[ 0 ] ) || !inspected[ \"*\" ] && inspect( \"*\" );\n}\n\n// A special extend for ajax options\n// that takes \"flat\" options (not to be deep extended)\n// Fixes #9887\nfunction ajaxExtend( target, src ) {\n\tvar key, deep,\n\t\tflatOptions = jQuery.ajaxSettings.flatOptions || {};\n\n\tfor ( key in src ) {\n\t\tif ( src[ key ] !== undefined ) {\n\t\t\t( flatOptions[ key ] ? target : ( deep || ( deep = {} ) ) )[ key ] = src[ key ];\n\t\t}\n\t}\n\tif ( deep ) {\n\t\tjQuery.extend( true, target, deep );\n\t}\n\n\treturn target;\n}\n\n/* Handles responses to an ajax request:\n * - finds the right dataType (mediates between content-type and expected dataType)\n * - returns the corresponding response\n */\nfunction ajaxHandleResponses( s, jqXHR, responses ) {\n\n\tvar ct, type, finalDataType, firstDataType,\n\t\tcontents = s.contents,\n\t\tdataTypes = s.dataTypes;\n\n\t// Remove auto dataType and get content-type in the process\n\twhile ( dataTypes[ 0 ] === \"*\" ) {\n\t\tdataTypes.shift();\n\t\tif ( ct === undefined ) {\n\t\t\tct = s.mimeType || jqXHR.getResponseHeader( \"Content-Type\" );\n\t\t}\n\t}\n\n\t// Check if we're dealing with a known content-type\n\tif ( ct ) {\n\t\tfor ( type in contents ) {\n\t\t\tif ( contents[ type ] && contents[ type ].test( ct ) ) {\n\t\t\t\tdataTypes.unshift( type );\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t}\n\n\t// Check to see if we have a response for the expected dataType\n\tif ( dataTypes[ 0 ] in responses ) {\n\t\tfinalDataType = dataTypes[ 0 ];\n\t} else {\n\n\t\t// Try convertible dataTypes\n\t\tfor ( type in responses ) {\n\t\t\tif ( !dataTypes[ 0 ] || s.converters[ type + \" \" + dataTypes[ 0 ] ] ) {\n\t\t\t\tfinalDataType = type;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tif ( !firstDataType ) {\n\t\t\t\tfirstDataType = type;\n\t\t\t}\n\t\t}\n\n\t\t// Or just use first one\n\t\tfinalDataType = finalDataType || firstDataType;\n\t}\n\n\t// If we found a dataType\n\t// We add the dataType to the list if needed\n\t// and return the corresponding response\n\tif ( finalDataType ) {\n\t\tif ( finalDataType !== dataTypes[ 0 ] ) {\n\t\t\tdataTypes.unshift( finalDataType );\n\t\t}\n\t\treturn responses[ finalDataType ];\n\t}\n}\n\n/* Chain conversions given the request and the original response\n * Also sets the responseXXX fields on the jqXHR instance\n */\nfunction ajaxConvert( s, response, jqXHR, isSuccess ) {\n\tvar conv2, current, conv, tmp, prev,\n\t\tconverters = {},\n\n\t\t// Work with a copy of dataTypes in case we need to modify it for conversion\n\t\tdataTypes = s.dataTypes.slice();\n\n\t// Create converters map with lowercased keys\n\tif ( dataTypes[ 1 ] ) {\n\t\tfor ( conv in s.converters ) {\n\t\t\tconverters[ conv.toLowerCase() ] = s.converters[ conv ];\n\t\t}\n\t}\n\n\tcurrent = dataTypes.shift();\n\n\t// Convert to each sequential dataType\n\twhile ( current ) {\n\n\t\tif ( s.responseFields[ current ] ) {\n\t\t\tjqXHR[ s.responseFields[ current ] ] = response;\n\t\t}\n\n\t\t// Apply the dataFilter if provided\n\t\tif ( !prev && isSuccess && s.dataFilter ) {\n\t\t\tresponse = s.dataFilter( response, s.dataType );\n\t\t}\n\n\t\tprev = current;\n\t\tcurrent = dataTypes.shift();\n\n\t\tif ( current ) {\n\n\t\t\t// There's only work to do if current dataType is non-auto\n\t\t\tif ( current === \"*\" ) {\n\n\t\t\t\tcurrent = prev;\n\n\t\t\t// Convert response if prev dataType is non-auto and differs from current\n\t\t\t} else if ( prev !== \"*\" && prev !== current ) {\n\n\t\t\t\t// Seek a direct converter\n\t\t\t\tconv = converters[ prev + \" \" + current ] || converters[ \"* \" + current ];\n\n\t\t\t\t// If none found, seek a pair\n\t\t\t\tif ( !conv ) {\n\t\t\t\t\tfor ( conv2 in converters ) {\n\n\t\t\t\t\t\t// If conv2 outputs current\n\t\t\t\t\t\ttmp = conv2.split( \" \" );\n\t\t\t\t\t\tif ( tmp[ 1 ] === current ) {\n\n\t\t\t\t\t\t\t// If prev can be converted to accepted input\n\t\t\t\t\t\t\tconv = converters[ prev + \" \" + tmp[ 0 ] ] ||\n\t\t\t\t\t\t\t\tconverters[ \"* \" + tmp[ 0 ] ];\n\t\t\t\t\t\t\tif ( conv ) {\n\n\t\t\t\t\t\t\t\t// Condense equivalence converters\n\t\t\t\t\t\t\t\tif ( conv === true ) {\n\t\t\t\t\t\t\t\t\tconv = converters[ conv2 ];\n\n\t\t\t\t\t\t\t\t// Otherwise, insert the intermediate dataType\n\t\t\t\t\t\t\t\t} else if ( converters[ conv2 ] !== true ) {\n\t\t\t\t\t\t\t\t\tcurrent = tmp[ 0 ];\n\t\t\t\t\t\t\t\t\tdataTypes.unshift( tmp[ 1 ] );\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// Apply converter (if not an equivalence)\n\t\t\t\tif ( conv !== true ) {\n\n\t\t\t\t\t// Unless errors are allowed to bubble, catch and return them\n\t\t\t\t\tif ( conv && s.throws ) {\n\t\t\t\t\t\tresponse = conv( response );\n\t\t\t\t\t} else {\n\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\tresponse = conv( response );\n\t\t\t\t\t\t} catch ( e ) {\n\t\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\t\tstate: \"parsererror\",\n\t\t\t\t\t\t\t\terror: conv ? e : \"No conversion from \" + prev + \" to \" + current\n\t\t\t\t\t\t\t};\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn { state: \"success\", data: response };\n}\n\njQuery.extend( {\n\n\t// Counter for holding the number of active queries\n\tactive: 0,\n\n\t// Last-Modified header cache for next request\n\tlastModified: {},\n\tetag: {},\n\n\tajaxSettings: {\n\t\turl: location.href,\n\t\ttype: \"GET\",\n\t\tisLocal: rlocalProtocol.test( location.protocol ),\n\t\tglobal: true,\n\t\tprocessData: true,\n\t\tasync: true,\n\t\tcontentType: \"application/x-www-form-urlencoded; charset=UTF-8\",\n\n\t\t/*\n\t\ttimeout: 0,\n\t\tdata: null,\n\t\tdataType: null,\n\t\tusername: null,\n\t\tpassword: null,\n\t\tcache: null,\n\t\tthrows: false,\n\t\ttraditional: false,\n\t\theaders: {},\n\t\t*/\n\n\t\taccepts: {\n\t\t\t\"*\": allTypes,\n\t\t\ttext: \"text/plain\",\n\t\t\thtml: \"text/html\",\n\t\t\txml: \"application/xml, text/xml\",\n\t\t\tjson: \"application/json, text/javascript\"\n\t\t},\n\n\t\tcontents: {\n\t\t\txml: /\\bxml\\b/,\n\t\t\thtml: /\\bhtml/,\n\t\t\tjson: /\\bjson\\b/\n\t\t},\n\n\t\tresponseFields: {\n\t\t\txml: \"responseXML\",\n\t\t\ttext: \"responseText\",\n\t\t\tjson: \"responseJSON\"\n\t\t},\n\n\t\t// Data converters\n\t\t// Keys separate source (or catchall \"*\") and destination types with a single space\n\t\tconverters: {\n\n\t\t\t// Convert anything to text\n\t\t\t\"* text\": String,\n\n\t\t\t// Text to html (true = no transformation)\n\t\t\t\"text html\": true,\n\n\t\t\t// Evaluate text as a json expression\n\t\t\t\"text json\": JSON.parse,\n\n\t\t\t// Parse text as xml\n\t\t\t\"text xml\": jQuery.parseXML\n\t\t},\n\n\t\t// For options that shouldn't be deep extended:\n\t\t// you can add your own custom options here if\n\t\t// and when you create one that shouldn't be\n\t\t// deep extended (see ajaxExtend)\n\t\tflatOptions: {\n\t\t\turl: true,\n\t\t\tcontext: true\n\t\t}\n\t},\n\n\t// Creates a full fledged settings object into target\n\t// with both ajaxSettings and settings fields.\n\t// If target is omitted, writes into ajaxSettings.\n\tajaxSetup: function( target, settings ) {\n\t\treturn settings ?\n\n\t\t\t// Building a settings object\n\t\t\tajaxExtend( ajaxExtend( target, jQuery.ajaxSettings ), settings ) :\n\n\t\t\t// Extending ajaxSettings\n\t\t\tajaxExtend( jQuery.ajaxSettings, target );\n\t},\n\n\tajaxPrefilter: addToPrefiltersOrTransports( prefilters ),\n\tajaxTransport: addToPrefiltersOrTransports( transports ),\n\n\t// Main method\n\tajax: function( url, options ) {\n\n\t\t// If url is an object, simulate pre-1.5 signature\n\t\tif ( typeof url === \"object\" ) {\n\t\t\toptions = url;\n\t\t\turl = undefined;\n\t\t}\n\n\t\t// Force options to be an object\n\t\toptions = options || {};\n\n\t\tvar transport,\n\n\t\t\t// URL without anti-cache param\n\t\t\tcacheURL,\n\n\t\t\t// Response headers\n\t\t\tresponseHeadersString,\n\t\t\tresponseHeaders,\n\n\t\t\t// timeout handle\n\t\t\ttimeoutTimer,\n\n\t\t\t// Url cleanup var\n\t\t\turlAnchor,\n\n\t\t\t// Request state (becomes false upon send and true upon completion)\n\t\t\tcompleted,\n\n\t\t\t// To know if global events are to be dispatched\n\t\t\tfireGlobals,\n\n\t\t\t// Loop variable\n\t\t\ti,\n\n\t\t\t// uncached part of the url\n\t\t\tuncached,\n\n\t\t\t// Create the final options object\n\t\t\ts = jQuery.ajaxSetup( {}, options ),\n\n\t\t\t// Callbacks context\n\t\t\tcallbackContext = s.context || s,\n\n\t\t\t// Context for global events is callbackContext if it is a DOM node or jQuery collection\n\t\t\tglobalEventContext = s.context &&\n\t\t\t\t( callbackContext.nodeType || callbackContext.jquery ) ?\n\t\t\t\tjQuery( callbackContext ) :\n\t\t\t\tjQuery.event,\n\n\t\t\t// Deferreds\n\t\t\tdeferred = jQuery.Deferred(),\n\t\t\tcompleteDeferred = jQuery.Callbacks( \"once memory\" ),\n\n\t\t\t// Status-dependent callbacks\n\t\t\tstatusCode = s.statusCode || {},\n\n\t\t\t// Headers (they are sent all at once)\n\t\t\trequestHeaders = {},\n\t\t\trequestHeadersNames = {},\n\n\t\t\t// Default abort message\n\t\t\tstrAbort = \"canceled\",\n\n\t\t\t// Fake xhr\n\t\t\tjqXHR = {\n\t\t\t\treadyState: 0,\n\n\t\t\t\t// Builds headers hashtable if needed\n\t\t\t\tgetResponseHeader: function( key ) {\n\t\t\t\t\tvar match;\n\t\t\t\t\tif ( completed ) {\n\t\t\t\t\t\tif ( !responseHeaders ) {\n\t\t\t\t\t\t\tresponseHeaders = {};\n\t\t\t\t\t\t\twhile ( ( match = rheaders.exec( responseHeadersString ) ) ) {\n\t\t\t\t\t\t\t\tresponseHeaders[ match[ 1 ].toLowerCase() + \" \" ] =\n\t\t\t\t\t\t\t\t\t( responseHeaders[ match[ 1 ].toLowerCase() + \" \" ] || [] )\n\t\t\t\t\t\t\t\t\t\t.concat( match[ 2 ] );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tmatch = responseHeaders[ key.toLowerCase() + \" \" ];\n\t\t\t\t\t}\n\t\t\t\t\treturn match == null ? null : match.join( \", \" );\n\t\t\t\t},\n\n\t\t\t\t// Raw string\n\t\t\t\tgetAllResponseHeaders: function() {\n\t\t\t\t\treturn completed ? responseHeadersString : null;\n\t\t\t\t},\n\n\t\t\t\t// Caches the header\n\t\t\t\tsetRequestHeader: function( name, value ) {\n\t\t\t\t\tif ( completed == null ) {\n\t\t\t\t\t\tname = requestHeadersNames[ name.toLowerCase() ] =\n\t\t\t\t\t\t\trequestHeadersNames[ name.toLowerCase() ] || name;\n\t\t\t\t\t\trequestHeaders[ name ] = value;\n\t\t\t\t\t}\n\t\t\t\t\treturn this;\n\t\t\t\t},\n\n\t\t\t\t// Overrides response content-type header\n\t\t\t\toverrideMimeType: function( type ) {\n\t\t\t\t\tif ( completed == null ) {\n\t\t\t\t\t\ts.mimeType = type;\n\t\t\t\t\t}\n\t\t\t\t\treturn this;\n\t\t\t\t},\n\n\t\t\t\t// Status-dependent callbacks\n\t\t\t\tstatusCode: function( map ) {\n\t\t\t\t\tvar code;\n\t\t\t\t\tif ( map ) {\n\t\t\t\t\t\tif ( completed ) {\n\n\t\t\t\t\t\t\t// Execute the appropriate callbacks\n\t\t\t\t\t\t\tjqXHR.always( map[ jqXHR.status ] );\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t// Lazy-add the new callbacks in a way that preserves old ones\n\t\t\t\t\t\t\tfor ( code in map ) {\n\t\t\t\t\t\t\t\tstatusCode[ code ] = [ statusCode[ code ], map[ code ] ];\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\treturn this;\n\t\t\t\t},\n\n\t\t\t\t// Cancel the request\n\t\t\t\tabort: function( statusText ) {\n\t\t\t\t\tvar finalText = statusText || strAbort;\n\t\t\t\t\tif ( transport ) {\n\t\t\t\t\t\ttransport.abort( finalText );\n\t\t\t\t\t}\n\t\t\t\t\tdone( 0, finalText );\n\t\t\t\t\treturn this;\n\t\t\t\t}\n\t\t\t};\n\n\t\t// Attach deferreds\n\t\tdeferred.promise( jqXHR );\n\n\t\t// Add protocol if not provided (prefilters might expect it)\n\t\t// Handle falsy url in the settings object (#10093: consistency with old signature)\n\t\t// We also use the url parameter if available\n\t\ts.url = ( ( url || s.url || location.href ) + \"\" )\n\t\t\t.replace( rprotocol, location.protocol + \"//\" );\n\n\t\t// Alias method option to type as per ticket #12004\n\t\ts.type = options.method || options.type || s.method || s.type;\n\n\t\t// Extract dataTypes list\n\t\ts.dataTypes = ( s.dataType || \"*\" ).toLowerCase().match( rnothtmlwhite ) || [ \"\" ];\n\n\t\t// A cross-domain request is in order when the origin doesn't match the current origin.\n\t\tif ( s.crossDomain == null ) {\n\t\t\turlAnchor = document.createElement( \"a\" );\n\n\t\t\t// Support: IE <=8 - 11, Edge 12 - 15\n\t\t\t// IE throws exception on accessing the href property if url is malformed,\n\t\t\t// e.g. http://example.com:80x/\n\t\t\ttry {\n\t\t\t\turlAnchor.href = s.url;\n\n\t\t\t\t// Support: IE <=8 - 11 only\n\t\t\t\t// Anchor's host property isn't correctly set when s.url is relative\n\t\t\t\turlAnchor.href = urlAnchor.href;\n\t\t\t\ts.crossDomain = originAnchor.protocol + \"//\" + originAnchor.host !==\n\t\t\t\t\turlAnchor.protocol + \"//\" + urlAnchor.host;\n\t\t\t} catch ( e ) {\n\n\t\t\t\t// If there is an error parsing the URL, assume it is crossDomain,\n\t\t\t\t// it can be rejected by the transport if it is invalid\n\t\t\t\ts.crossDomain = true;\n\t\t\t}\n\t\t}\n\n\t\t// Convert data if not already a string\n\t\tif ( s.data && s.processData && typeof s.data !== \"string\" ) {\n\t\t\ts.data = jQuery.param( s.data, s.traditional );\n\t\t}\n\n\t\t// Apply prefilters\n\t\tinspectPrefiltersOrTransports( prefilters, s, options, jqXHR );\n\n\t\t// If request was aborted inside a prefilter, stop there\n\t\tif ( completed ) {\n\t\t\treturn jqXHR;\n\t\t}\n\n\t\t// We can fire global events as of now if asked to\n\t\t// Don't fire events if jQuery.event is undefined in an AMD-usage scenario (#15118)\n\t\tfireGlobals = jQuery.event && s.global;\n\n\t\t// Watch for a new set of requests\n\t\tif ( fireGlobals && jQuery.active++ === 0 ) {\n\t\t\tjQuery.event.trigger( \"ajaxStart\" );\n\t\t}\n\n\t\t// Uppercase the type\n\t\ts.type = s.type.toUpperCase();\n\n\t\t// Determine if request has content\n\t\ts.hasContent = !rnoContent.test( s.type );\n\n\t\t// Save the URL in case we're toying with the If-Modified-Since\n\t\t// and/or If-None-Match header later on\n\t\t// Remove hash to simplify url manipulation\n\t\tcacheURL = s.url.replace( rhash, \"\" );\n\n\t\t// More options handling for requests with no content\n\t\tif ( !s.hasContent ) {\n\n\t\t\t// Remember the hash so we can put it back\n\t\t\tuncached = s.url.slice( cacheURL.length );\n\n\t\t\t// If data is available and should be processed, append data to url\n\t\t\tif ( s.data && ( s.processData || typeof s.data === \"string\" ) ) {\n\t\t\t\tcacheURL += ( rquery.test( cacheURL ) ? \"&\" : \"?\" ) + s.data;\n\n\t\t\t\t// #9682: remove data so that it's not used in an eventual retry\n\t\t\t\tdelete s.data;\n\t\t\t}\n\n\t\t\t// Add or update anti-cache param if needed\n\t\t\tif ( s.cache === false ) {\n\t\t\t\tcacheURL = cacheURL.replace( rantiCache, \"$1\" );\n\t\t\t\tuncached = ( rquery.test( cacheURL ) ? \"&\" : \"?\" ) + \"_=\" + ( nonce.guid++ ) +\n\t\t\t\t\tuncached;\n\t\t\t}\n\n\t\t\t// Put hash and anti-cache on the URL that will be requested (gh-1732)\n\t\t\ts.url = cacheURL + uncached;\n\n\t\t// Change '%20' to '+' if this is encoded form body content (gh-2658)\n\t\t} else if ( s.data && s.processData &&\n\t\t\t( s.contentType || \"\" ).indexOf( \"application/x-www-form-urlencoded\" ) === 0 ) {\n\t\t\ts.data = s.data.replace( r20, \"+\" );\n\t\t}\n\n\t\t// Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode.\n\t\tif ( s.ifModified ) {\n\t\t\tif ( jQuery.lastModified[ cacheURL ] ) {\n\t\t\t\tjqXHR.setRequestHeader( \"If-Modified-Since\", jQuery.lastModified[ cacheURL ] );\n\t\t\t}\n\t\t\tif ( jQuery.etag[ cacheURL ] ) {\n\t\t\t\tjqXHR.setRequestHeader( \"If-None-Match\", jQuery.etag[ cacheURL ] );\n\t\t\t}\n\t\t}\n\n\t\t// Set the correct header, if data is being sent\n\t\tif ( s.data && s.hasContent && s.contentType !== false || options.contentType ) {\n\t\t\tjqXHR.setRequestHeader( \"Content-Type\", s.contentType );\n\t\t}\n\n\t\t// Set the Accepts header for the server, depending on the dataType\n\t\tjqXHR.setRequestHeader(\n\t\t\t\"Accept\",\n\t\t\ts.dataTypes[ 0 ] && s.accepts[ s.dataTypes[ 0 ] ] ?\n\t\t\t\ts.accepts[ s.dataTypes[ 0 ] ] +\n\t\t\t\t\t( s.dataTypes[ 0 ] !== \"*\" ? \", \" + allTypes + \"; q=0.01\" : \"\" ) :\n\t\t\t\ts.accepts[ \"*\" ]\n\t\t);\n\n\t\t// Check for headers option\n\t\tfor ( i in s.headers ) {\n\t\t\tjqXHR.setRequestHeader( i, s.headers[ i ] );\n\t\t}\n\n\t\t// Allow custom headers/mimetypes and early abort\n\t\tif ( s.beforeSend &&\n\t\t\t( s.beforeSend.call( callbackContext, jqXHR, s ) === false || completed ) ) {\n\n\t\t\t// Abort if not done already and return\n\t\t\treturn jqXHR.abort();\n\t\t}\n\n\t\t// Aborting is no longer a cancellation\n\t\tstrAbort = \"abort\";\n\n\t\t// Install callbacks on deferreds\n\t\tcompleteDeferred.add( s.complete );\n\t\tjqXHR.done( s.success );\n\t\tjqXHR.fail( s.error );\n\n\t\t// Get transport\n\t\ttransport = inspectPrefiltersOrTransports( transports, s, options, jqXHR );\n\n\t\t// If no transport, we auto-abort\n\t\tif ( !transport ) {\n\t\t\tdone( -1, \"No Transport\" );\n\t\t} else {\n\t\t\tjqXHR.readyState = 1;\n\n\t\t\t// Send global event\n\t\t\tif ( fireGlobals ) {\n\t\t\t\tglobalEventContext.trigger( \"ajaxSend\", [ jqXHR, s ] );\n\t\t\t}\n\n\t\t\t// If request was aborted inside ajaxSend, stop there\n\t\t\tif ( completed ) {\n\t\t\t\treturn jqXHR;\n\t\t\t}\n\n\t\t\t// Timeout\n\t\t\tif ( s.async && s.timeout > 0 ) {\n\t\t\t\ttimeoutTimer = window.setTimeout( function() {\n\t\t\t\t\tjqXHR.abort( \"timeout\" );\n\t\t\t\t}, s.timeout );\n\t\t\t}\n\n\t\t\ttry {\n\t\t\t\tcompleted = false;\n\t\t\t\ttransport.send( requestHeaders, done );\n\t\t\t} catch ( e ) {\n\n\t\t\t\t// Rethrow post-completion exceptions\n\t\t\t\tif ( completed ) {\n\t\t\t\t\tthrow e;\n\t\t\t\t}\n\n\t\t\t\t// Propagate others as results\n\t\t\t\tdone( -1, e );\n\t\t\t}\n\t\t}\n\n\t\t// Callback for when everything is done\n\t\tfunction done( status, nativeStatusText, responses, headers ) {\n\t\t\tvar isSuccess, success, error, response, modified,\n\t\t\t\tstatusText = nativeStatusText;\n\n\t\t\t// Ignore repeat invocations\n\t\t\tif ( completed ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tcompleted = true;\n\n\t\t\t// Clear timeout if it exists\n\t\t\tif ( timeoutTimer ) {\n\t\t\t\twindow.clearTimeout( timeoutTimer );\n\t\t\t}\n\n\t\t\t// Dereference transport for early garbage collection\n\t\t\t// (no matter how long the jqXHR object will be used)\n\t\t\ttransport = undefined;\n\n\t\t\t// Cache response headers\n\t\t\tresponseHeadersString = headers || \"\";\n\n\t\t\t// Set readyState\n\t\t\tjqXHR.readyState = status > 0 ? 4 : 0;\n\n\t\t\t// Determine if successful\n\t\t\tisSuccess = status >= 200 && status < 300 || status === 304;\n\n\t\t\t// Get response data\n\t\t\tif ( responses ) {\n\t\t\t\tresponse = ajaxHandleResponses( s, jqXHR, responses );\n\t\t\t}\n\n\t\t\t// Use a noop converter for missing script but not if jsonp\n\t\t\tif ( !isSuccess &&\n\t\t\t\tjQuery.inArray( \"script\", s.dataTypes ) > -1 &&\n\t\t\t\tjQuery.inArray( \"json\", s.dataTypes ) < 0 ) {\n\t\t\t\ts.converters[ \"text script\" ] = function() {};\n\t\t\t}\n\n\t\t\t// Convert no matter what (that way responseXXX fields are always set)\n\t\t\tresponse = ajaxConvert( s, response, jqXHR, isSuccess );\n\n\t\t\t// If successful, handle type chaining\n\t\t\tif ( isSuccess ) {\n\n\t\t\t\t// Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode.\n\t\t\t\tif ( s.ifModified ) {\n\t\t\t\t\tmodified = jqXHR.getResponseHeader( \"Last-Modified\" );\n\t\t\t\t\tif ( modified ) {\n\t\t\t\t\t\tjQuery.lastModified[ cacheURL ] = modified;\n\t\t\t\t\t}\n\t\t\t\t\tmodified = jqXHR.getResponseHeader( \"etag\" );\n\t\t\t\t\tif ( modified ) {\n\t\t\t\t\t\tjQuery.etag[ cacheURL ] = modified;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// if no content\n\t\t\t\tif ( status === 204 || s.type === \"HEAD\" ) {\n\t\t\t\t\tstatusText = \"nocontent\";\n\n\t\t\t\t// if not modified\n\t\t\t\t} else if ( status === 304 ) {\n\t\t\t\t\tstatusText = \"notmodified\";\n\n\t\t\t\t// If we have data, let's convert it\n\t\t\t\t} else {\n\t\t\t\t\tstatusText = response.state;\n\t\t\t\t\tsuccess = response.data;\n\t\t\t\t\terror = response.error;\n\t\t\t\t\tisSuccess = !error;\n\t\t\t\t}\n\t\t\t} else {\n\n\t\t\t\t// Extract error from statusText and normalize for non-aborts\n\t\t\t\terror = statusText;\n\t\t\t\tif ( status || !statusText ) {\n\t\t\t\t\tstatusText = \"error\";\n\t\t\t\t\tif ( status < 0 ) {\n\t\t\t\t\t\tstatus = 0;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Set data for the fake xhr object\n\t\t\tjqXHR.status = status;\n\t\t\tjqXHR.statusText = ( nativeStatusText || statusText ) + \"\";\n\n\t\t\t// Success/Error\n\t\t\tif ( isSuccess ) {\n\t\t\t\tdeferred.resolveWith( callbackContext, [ success, statusText, jqXHR ] );\n\t\t\t} else {\n\t\t\t\tdeferred.rejectWith( callbackContext, [ jqXHR, statusText, error ] );\n\t\t\t}\n\n\t\t\t// Status-dependent callbacks\n\t\t\tjqXHR.statusCode( statusCode );\n\t\t\tstatusCode = undefined;\n\n\t\t\tif ( fireGlobals ) {\n\t\t\t\tglobalEventContext.trigger( isSuccess ? \"ajaxSuccess\" : \"ajaxError\",\n\t\t\t\t\t[ jqXHR, s, isSuccess ? success : error ] );\n\t\t\t}\n\n\t\t\t// Complete\n\t\t\tcompleteDeferred.fireWith( callbackContext, [ jqXHR, statusText ] );\n\n\t\t\tif ( fireGlobals ) {\n\t\t\t\tglobalEventContext.trigger( \"ajaxComplete\", [ jqXHR, s ] );\n\n\t\t\t\t// Handle the global AJAX counter\n\t\t\t\tif ( !( --jQuery.active ) ) {\n\t\t\t\t\tjQuery.event.trigger( \"ajaxStop\" );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn jqXHR;\n\t},\n\n\tgetJSON: function( url, data, callback ) {\n\t\treturn jQuery.get( url, data, callback, \"json\" );\n\t},\n\n\tgetScript: function( url, callback ) {\n\t\treturn jQuery.get( url, undefined, callback, \"script\" );\n\t}\n} );\n\njQuery.each( [ \"get\", \"post\" ], function( _i, method ) {\n\tjQuery[ method ] = function( url, data, callback, type ) {\n\n\t\t// Shift arguments if data argument was omitted\n\t\tif ( isFunction( data ) ) {\n\t\t\ttype = type || callback;\n\t\t\tcallback = data;\n\t\t\tdata = undefined;\n\t\t}\n\n\t\t// The url can be an options object (which then must have .url)\n\t\treturn jQuery.ajax( jQuery.extend( {\n\t\t\turl: url,\n\t\t\ttype: method,\n\t\t\tdataType: type,\n\t\t\tdata: data,\n\t\t\tsuccess: callback\n\t\t}, jQuery.isPlainObject( url ) && url ) );\n\t};\n} );\n\njQuery.ajaxPrefilter( function( s ) {\n\tvar i;\n\tfor ( i in s.headers ) {\n\t\tif ( i.toLowerCase() === \"content-type\" ) {\n\t\t\ts.contentType = s.headers[ i ] || \"\";\n\t\t}\n\t}\n} );\n\n\njQuery._evalUrl = function( url, options, doc ) {\n\treturn jQuery.ajax( {\n\t\turl: url,\n\n\t\t// Make this explicit, since user can override this through ajaxSetup (#11264)\n\t\ttype: \"GET\",\n\t\tdataType: \"script\",\n\t\tcache: true,\n\t\tasync: false,\n\t\tglobal: false,\n\n\t\t// Only evaluate the response if it is successful (gh-4126)\n\t\t// dataFilter is not invoked for failure responses, so using it instead\n\t\t// of the default converter is kludgy but it works.\n\t\tconverters: {\n\t\t\t\"text script\": function() {}\n\t\t},\n\t\tdataFilter: function( response ) {\n\t\t\tjQuery.globalEval( response, options, doc );\n\t\t}\n\t} );\n};\n\n\njQuery.fn.extend( {\n\twrapAll: function( html ) {\n\t\tvar wrap;\n\n\t\tif ( this[ 0 ] ) {\n\t\t\tif ( isFunction( html ) ) {\n\t\t\t\thtml = html.call( this[ 0 ] );\n\t\t\t}\n\n\t\t\t// The elements to wrap the target around\n\t\t\twrap = jQuery( html, this[ 0 ].ownerDocument ).eq( 0 ).clone( true );\n\n\t\t\tif ( this[ 0 ].parentNode ) {\n\t\t\t\twrap.insertBefore( this[ 0 ] );\n\t\t\t}\n\n\t\t\twrap.map( function() {\n\t\t\t\tvar elem = this;\n\n\t\t\t\twhile ( elem.firstElementChild ) {\n\t\t\t\t\telem = elem.firstElementChild;\n\t\t\t\t}\n\n\t\t\t\treturn elem;\n\t\t\t} ).append( this );\n\t\t}\n\n\t\treturn this;\n\t},\n\n\twrapInner: function( html ) {\n\t\tif ( isFunction( html ) ) {\n\t\t\treturn this.each( function( i ) {\n\t\t\t\tjQuery( this ).wrapInner( html.call( this, i ) );\n\t\t\t} );\n\t\t}\n\n\t\treturn this.each( function() {\n\t\t\tvar self = jQuery( this ),\n\t\t\t\tcontents = self.contents();\n\n\t\t\tif ( contents.length ) {\n\t\t\t\tcontents.wrapAll( html );\n\n\t\t\t} else {\n\t\t\t\tself.append( html );\n\t\t\t}\n\t\t} );\n\t},\n\n\twrap: function( html ) {\n\t\tvar htmlIsFunction = isFunction( html );\n\n\t\treturn this.each( function( i ) {\n\t\t\tjQuery( this ).wrapAll( htmlIsFunction ? html.call( this, i ) : html );\n\t\t} );\n\t},\n\n\tunwrap: function( selector ) {\n\t\tthis.parent( selector ).not( \"body\" ).each( function() {\n\t\t\tjQuery( this ).replaceWith( this.childNodes );\n\t\t} );\n\t\treturn this;\n\t}\n} );\n\n\njQuery.expr.pseudos.hidden = function( elem ) {\n\treturn !jQuery.expr.pseudos.visible( elem );\n};\njQuery.expr.pseudos.visible = function( elem ) {\n\treturn !!( elem.offsetWidth || elem.offsetHeight || elem.getClientRects().length );\n};\n\n\n\n\njQuery.ajaxSettings.xhr = function() {\n\ttry {\n\t\treturn new window.XMLHttpRequest();\n\t} catch ( e ) {}\n};\n\nvar xhrSuccessStatus = {\n\n\t\t// File protocol always yields status code 0, assume 200\n\t\t0: 200,\n\n\t\t// Support: IE <=9 only\n\t\t// #1450: sometimes IE returns 1223 when it should be 204\n\t\t1223: 204\n\t},\n\txhrSupported = jQuery.ajaxSettings.xhr();\n\nsupport.cors = !!xhrSupported && ( \"withCredentials\" in xhrSupported );\nsupport.ajax = xhrSupported = !!xhrSupported;\n\njQuery.ajaxTransport( function( options ) {\n\tvar callback, errorCallback;\n\n\t// Cross domain only allowed if supported through XMLHttpRequest\n\tif ( support.cors || xhrSupported && !options.crossDomain ) {\n\t\treturn {\n\t\t\tsend: function( headers, complete ) {\n\t\t\t\tvar i,\n\t\t\t\t\txhr = options.xhr();\n\n\t\t\t\txhr.open(\n\t\t\t\t\toptions.type,\n\t\t\t\t\toptions.url,\n\t\t\t\t\toptions.async,\n\t\t\t\t\toptions.username,\n\t\t\t\t\toptions.password\n\t\t\t\t);\n\n\t\t\t\t// Apply custom fields if provided\n\t\t\t\tif ( options.xhrFields ) {\n\t\t\t\t\tfor ( i in options.xhrFields ) {\n\t\t\t\t\t\txhr[ i ] = options.xhrFields[ i ];\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// Override mime type if needed\n\t\t\t\tif ( options.mimeType && xhr.overrideMimeType ) {\n\t\t\t\t\txhr.overrideMimeType( options.mimeType );\n\t\t\t\t}\n\n\t\t\t\t// X-Requested-With header\n\t\t\t\t// For cross-domain requests, seeing as conditions for a preflight are\n\t\t\t\t// akin to a jigsaw puzzle, we simply never set it to be sure.\n\t\t\t\t// (it can always be set on a per-request basis or even using ajaxSetup)\n\t\t\t\t// For same-domain requests, won't change header if already provided.\n\t\t\t\tif ( !options.crossDomain && !headers[ \"X-Requested-With\" ] ) {\n\t\t\t\t\theaders[ \"X-Requested-With\" ] = \"XMLHttpRequest\";\n\t\t\t\t}\n\n\t\t\t\t// Set headers\n\t\t\t\tfor ( i in headers ) {\n\t\t\t\t\txhr.setRequestHeader( i, headers[ i ] );\n\t\t\t\t}\n\n\t\t\t\t// Callback\n\t\t\t\tcallback = function( type ) {\n\t\t\t\t\treturn function() {\n\t\t\t\t\t\tif ( callback ) {\n\t\t\t\t\t\t\tcallback = errorCallback = xhr.onload =\n\t\t\t\t\t\t\t\txhr.onerror = xhr.onabort = xhr.ontimeout =\n\t\t\t\t\t\t\t\t\txhr.onreadystatechange = null;\n\n\t\t\t\t\t\t\tif ( type === \"abort\" ) {\n\t\t\t\t\t\t\t\txhr.abort();\n\t\t\t\t\t\t\t} else if ( type === \"error\" ) {\n\n\t\t\t\t\t\t\t\t// Support: IE <=9 only\n\t\t\t\t\t\t\t\t// On a manual native abort, IE9 throws\n\t\t\t\t\t\t\t\t// errors on any property access that is not readyState\n\t\t\t\t\t\t\t\tif ( typeof xhr.status !== \"number\" ) {\n\t\t\t\t\t\t\t\t\tcomplete( 0, \"error\" );\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\tcomplete(\n\n\t\t\t\t\t\t\t\t\t\t// File: protocol always yields status 0; see #8605, #14207\n\t\t\t\t\t\t\t\t\t\txhr.status,\n\t\t\t\t\t\t\t\t\t\txhr.statusText\n\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tcomplete(\n\t\t\t\t\t\t\t\t\txhrSuccessStatus[ xhr.status ] || xhr.status,\n\t\t\t\t\t\t\t\t\txhr.statusText,\n\n\t\t\t\t\t\t\t\t\t// Support: IE <=9 only\n\t\t\t\t\t\t\t\t\t// IE9 has no XHR2 but throws on binary (trac-11426)\n\t\t\t\t\t\t\t\t\t// For XHR2 non-text, let the caller handle it (gh-2498)\n\t\t\t\t\t\t\t\t\t( xhr.responseType || \"text\" ) !== \"text\" ||\n\t\t\t\t\t\t\t\t\ttypeof xhr.responseText !== \"string\" ?\n\t\t\t\t\t\t\t\t\t\t{ binary: xhr.response } :\n\t\t\t\t\t\t\t\t\t\t{ text: xhr.responseText },\n\t\t\t\t\t\t\t\t\txhr.getAllResponseHeaders()\n\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\t\t\t\t};\n\n\t\t\t\t// Listen to events\n\t\t\t\txhr.onload = callback();\n\t\t\t\terrorCallback = xhr.onerror = xhr.ontimeout = callback( \"error\" );\n\n\t\t\t\t// Support: IE 9 only\n\t\t\t\t// Use onreadystatechange to replace onabort\n\t\t\t\t// to handle uncaught aborts\n\t\t\t\tif ( xhr.onabort !== undefined ) {\n\t\t\t\t\txhr.onabort = errorCallback;\n\t\t\t\t} else {\n\t\t\t\t\txhr.onreadystatechange = function() {\n\n\t\t\t\t\t\t// Check readyState before timeout as it changes\n\t\t\t\t\t\tif ( xhr.readyState === 4 ) {\n\n\t\t\t\t\t\t\t// Allow onerror to be called first,\n\t\t\t\t\t\t\t// but that will not handle a native abort\n\t\t\t\t\t\t\t// Also, save errorCallback to a variable\n\t\t\t\t\t\t\t// as xhr.onerror cannot be accessed\n\t\t\t\t\t\t\twindow.setTimeout( function() {\n\t\t\t\t\t\t\t\tif ( callback ) {\n\t\t\t\t\t\t\t\t\terrorCallback();\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t} );\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\t\t\t\t}\n\n\t\t\t\t// Create the abort callback\n\t\t\t\tcallback = callback( \"abort\" );\n\n\t\t\t\ttry {\n\n\t\t\t\t\t// Do send the request (this may raise an exception)\n\t\t\t\t\txhr.send( options.hasContent && options.data || null );\n\t\t\t\t} catch ( e ) {\n\n\t\t\t\t\t// #14683: Only rethrow if this hasn't been notified as an error yet\n\t\t\t\t\tif ( callback ) {\n\t\t\t\t\t\tthrow e;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t},\n\n\t\t\tabort: function() {\n\t\t\t\tif ( callback ) {\n\t\t\t\t\tcallback();\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\t}\n} );\n\n\n\n\n// Prevent auto-execution of scripts when no explicit dataType was provided (See gh-2432)\njQuery.ajaxPrefilter( function( s ) {\n\tif ( s.crossDomain ) {\n\t\ts.contents.script = false;\n\t}\n} );\n\n// Install script dataType\njQuery.ajaxSetup( {\n\taccepts: {\n\t\tscript: \"text/javascript, application/javascript, \" +\n\t\t\t\"application/ecmascript, application/x-ecmascript\"\n\t},\n\tcontents: {\n\t\tscript: /\\b(?:java|ecma)script\\b/\n\t},\n\tconverters: {\n\t\t\"text script\": function( text ) {\n\t\t\tjQuery.globalEval( text );\n\t\t\treturn text;\n\t\t}\n\t}\n} );\n\n// Handle cache's special case and crossDomain\njQuery.ajaxPrefilter( \"script\", function( s ) {\n\tif ( s.cache === undefined ) {\n\t\ts.cache = false;\n\t}\n\tif ( s.crossDomain ) {\n\t\ts.type = \"GET\";\n\t}\n} );\n\n// Bind script tag hack transport\njQuery.ajaxTransport( \"script\", function( s ) {\n\n\t// This transport only deals with cross domain or forced-by-attrs requests\n\tif ( s.crossDomain || s.scriptAttrs ) {\n\t\tvar script, callback;\n\t\treturn {\n\t\t\tsend: function( _, complete ) {\n\t\t\t\tscript = jQuery( \"\r\n","import { render, staticRenderFns } from \"./orgtreenode.vue?vue&type=template&id=2db704ad&\"\nimport script from \"./orgtreenode.vue?vue&type=script&lang=js&\"\nexport * from \"./orgtreenode.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../../node_modules/css-loader/index.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./GoodweButton.vue?vue&type=style&index=0&lang=scss&\"","export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../../node_modules/css-loader/index.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./GoodweButtonGroup.vue?vue&type=style&index=0&lang=scss&\"","export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../../node_modules/css-loader/index.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./orgselector.vue?vue&type=style&index=0&lang=scss&\"","export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../../node_modules/css-loader/index.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./GoodweSwitch.vue?vue&type=style&index=0&lang=scss&\"","export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../../node_modules/css-loader/index.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./GoodweSearchCenter.vue?vue&type=style&index=0&lang=scss&\"","export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../../node_modules/css-loader/index.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./autoComplete.vue?vue&type=style&index=0&lang=scss&\"","export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../../node_modules/css-loader/index.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./GoodweStatusLight.vue?vue&type=style&index=0&lang=scss&\"","export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../../node_modules/css-loader/index.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./GoodweCard.vue?vue&type=style&index=0&lang=scss&\"","export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../../node_modules/css-loader/index.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./GoodweEditableLabel.vue?vue&type=style&index=0&lang=scss&\"","export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../../node_modules/css-loader/index.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./GoodweBattery.vue?vue&type=style&index=0&lang=scss&\"","export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../../node_modules/css-loader/index.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./GoodweBatteryInfo.vue?vue&type=style&index=0&id=2a24e17c&lang=scss&scoped=true&\"","export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../../node_modules/css-loader/index.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./GoodweBatteryCluster.vue?vue&type=style&index=0&id=2314cbf9&lang=scss&scoped=true&\"","export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../../node_modules/css-loader/index.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./GoodweTab.vue?vue&type=style&index=0&lang=scss&\"","var util = require(\"./core/util\");\n\nvar vec2 = require(\"./core/vector\");\n\nvar Draggable = require(\"./mixin/Draggable\");\n\nvar Eventful = require(\"./mixin/Eventful\");\n\nvar eventTool = require(\"./core/event\");\n\nvar GestureMgr = require(\"./core/GestureMgr\");\n\n/**\n * [The interface between `Handler` and `HandlerProxy`]:\n *\n * The default `HandlerProxy` only support the common standard web environment\n * (e.g., standalone browser, headless browser, embed browser in mobild APP, ...).\n * But `HandlerProxy` can be replaced to support more non-standard environment\n * (e.g., mini app), or to support more feature that the default `HandlerProxy`\n * not provided (like echarts-gl did).\n * So the interface between `Handler` and `HandlerProxy` should be stable. Do not\n * make break changes util inevitable. The interface include the public methods\n * of `Handler` and the events listed in `handlerNames` below, by which `HandlerProxy`\n * drives `Handler`.\n */\n\n/**\n * [Drag outside]:\n *\n * That is, triggering `mousemove` and `mouseup` event when the pointer is out of the\n * zrender area when dragging. That is important for the improvement of the user experience\n * when dragging something near the boundary without being terminated unexpectedly.\n *\n * We originally consider to introduce new events like `pagemovemove` and `pagemouseup`\n * to resolve this issue. But some drawbacks of it is described in\n * https://github.com/ecomfe/zrender/pull/536#issuecomment-560286899\n *\n * Instead, we referenced the specifications:\n * https://www.w3.org/TR/touch-events/#the-touchmove-event\n * https://www.w3.org/TR/2014/WD-DOM-Level-3-Events-20140925/#event-type-mousemove\n * where the the mousemove/touchmove can be continue to fire if the user began a drag\n * operation and the pointer has left the boundary. (for the mouse event, browsers\n * only do it on `document` and when the pointer has left the boundary of the browser.)\n *\n * So the default `HandlerProxy` supports this feature similarly: if it is in the dragging\n * state (see `pointerCapture` in `HandlerProxy`), the `mousemove` and `mouseup` continue\n * to fire until release the pointer. That is implemented by listen to those event on\n * `document`.\n * If we implement some other `HandlerProxy` only for touch device, that would be easier.\n * The touch event support this feature by default.\n *\n * Note:\n * There might be some cases that the mouse event can not be\n * received on `document`. For example,\n * (A) `useCapture` is not supported and some user defined event listeners on the ancestor\n * of zr dom throw Error .\n * (B) `useCapture` is not supported Some user defined event listeners on the ancestor of\n * zr dom call `stopPropagation`.\n * In these cases, the `mousemove` event might be keep triggered event\n * if the mouse is released. We try to reduce the side-effect in those cases.\n * That is, do nothing (especially, `findHover`) in those cases. See `isOutsideBoundary`.\n *\n * Note:\n * If `HandlerProxy` listens to `document` with `useCapture`, `HandlerProxy` needs to\n * make sure `stopPropagation` and `preventDefault` doing nothing if and only if the event\n * target is not zrender dom. Becuase it is dangerous to enable users to call them in\n * `document` capture phase to prevent the propagation to any listener of the webpage.\n * But they are needed to work when the pointer inside the zrender dom.\n */\nvar SILENT = 'silent';\n\nfunction makeEventPacket(eveType, targetInfo, event) {\n return {\n type: eveType,\n event: event,\n // target can only be an element that is not silent.\n target: targetInfo.target,\n // topTarget can be a silent element.\n topTarget: targetInfo.topTarget,\n cancelBubble: false,\n offsetX: event.zrX,\n offsetY: event.zrY,\n gestureEvent: event.gestureEvent,\n pinchX: event.pinchX,\n pinchY: event.pinchY,\n pinchScale: event.pinchScale,\n wheelDelta: event.zrDelta,\n zrByTouch: event.zrByTouch,\n which: event.which,\n stop: stopEvent\n };\n}\n\nfunction stopEvent() {\n eventTool.stop(this.event);\n}\n\nfunction EmptyProxy() {}\n\nEmptyProxy.prototype.dispose = function () {};\n\nvar handlerNames = ['click', 'dblclick', 'mousewheel', 'mouseout', 'mouseup', 'mousedown', 'mousemove', 'contextmenu'];\n/**\n * @alias module:zrender/Handler\n * @constructor\n * @extends module:zrender/mixin/Eventful\n * @param {module:zrender/Storage} storage Storage instance.\n * @param {module:zrender/Painter} painter Painter instance.\n * @param {module:zrender/dom/HandlerProxy} proxy HandlerProxy instance.\n * @param {HTMLElement} painterRoot painter.root (not painter.getViewportRoot()).\n */\n\nvar Handler = function (storage, painter, proxy, painterRoot) {\n Eventful.call(this);\n this.storage = storage;\n this.painter = painter;\n this.painterRoot = painterRoot;\n proxy = proxy || new EmptyProxy();\n /**\n * Proxy of event. can be Dom, WebGLSurface, etc.\n */\n\n this.proxy = null;\n /**\n * {target, topTarget, x, y}\n * @private\n * @type {Object}\n */\n\n this._hovered = {};\n /**\n * @private\n * @type {Date}\n */\n\n this._lastTouchMoment;\n /**\n * @private\n * @type {number}\n */\n\n this._lastX;\n /**\n * @private\n * @type {number}\n */\n\n this._lastY;\n /**\n * @private\n * @type {module:zrender/core/GestureMgr}\n */\n\n this._gestureMgr;\n Draggable.call(this);\n this.setHandlerProxy(proxy);\n};\n\nHandler.prototype = {\n constructor: Handler,\n setHandlerProxy: function (proxy) {\n if (this.proxy) {\n this.proxy.dispose();\n }\n\n if (proxy) {\n util.each(handlerNames, function (name) {\n proxy.on && proxy.on(name, this[name], this);\n }, this); // Attach handler\n\n proxy.handler = this;\n }\n\n this.proxy = proxy;\n },\n mousemove: function (event) {\n var x = event.zrX;\n var y = event.zrY;\n var isOutside = isOutsideBoundary(this, x, y);\n var lastHovered = this._hovered;\n var lastHoveredTarget = lastHovered.target; // If lastHoveredTarget is removed from zr (detected by '__zr') by some API call\n // (like 'setOption' or 'dispatchAction') in event handlers, we should find\n // lastHovered again here. Otherwise 'mouseout' can not be triggered normally.\n // See #6198.\n\n if (lastHoveredTarget && !lastHoveredTarget.__zr) {\n lastHovered = this.findHover(lastHovered.x, lastHovered.y);\n lastHoveredTarget = lastHovered.target;\n }\n\n var hovered = this._hovered = isOutside ? {\n x: x,\n y: y\n } : this.findHover(x, y);\n var hoveredTarget = hovered.target;\n var proxy = this.proxy;\n proxy.setCursor && proxy.setCursor(hoveredTarget ? hoveredTarget.cursor : 'default'); // Mouse out on previous hovered element\n\n if (lastHoveredTarget && hoveredTarget !== lastHoveredTarget) {\n this.dispatchToElement(lastHovered, 'mouseout', event);\n } // Mouse moving on one element\n\n\n this.dispatchToElement(hovered, 'mousemove', event); // Mouse over on a new element\n\n if (hoveredTarget && hoveredTarget !== lastHoveredTarget) {\n this.dispatchToElement(hovered, 'mouseover', event);\n }\n },\n mouseout: function (event) {\n var eventControl = event.zrEventControl;\n var zrIsToLocalDOM = event.zrIsToLocalDOM;\n\n if (eventControl !== 'only_globalout') {\n this.dispatchToElement(this._hovered, 'mouseout', event);\n }\n\n if (eventControl !== 'no_globalout') {\n // FIXME: if the pointer moving from the extra doms to realy \"outside\",\n // the `globalout` should have been triggered. But currently not.\n !zrIsToLocalDOM && this.trigger('globalout', {\n type: 'globalout',\n event: event\n });\n }\n },\n\n /**\n * Resize\n */\n resize: function (event) {\n this._hovered = {};\n },\n\n /**\n * Dispatch event\n * @param {string} eventName\n * @param {event=} eventArgs\n */\n dispatch: function (eventName, eventArgs) {\n var handler = this[eventName];\n handler && handler.call(this, eventArgs);\n },\n\n /**\n * Dispose\n */\n dispose: function () {\n this.proxy.dispose();\n this.storage = this.proxy = this.painter = null;\n },\n\n /**\n * 设置默认的cursor style\n * @param {string} [cursorStyle='default'] 例如 crosshair\n */\n setCursorStyle: function (cursorStyle) {\n var proxy = this.proxy;\n proxy.setCursor && proxy.setCursor(cursorStyle);\n },\n\n /**\n * 事件分发代理\n *\n * @private\n * @param {Object} targetInfo {target, topTarget} 目标图形元素\n * @param {string} eventName 事件名称\n * @param {Object} event 事件对象\n */\n dispatchToElement: function (targetInfo, eventName, event) {\n targetInfo = targetInfo || {};\n var el = targetInfo.target;\n\n if (el && el.silent) {\n return;\n }\n\n var eventHandler = 'on' + eventName;\n var eventPacket = makeEventPacket(eventName, targetInfo, event);\n\n while (el) {\n el[eventHandler] && (eventPacket.cancelBubble = el[eventHandler].call(el, eventPacket));\n el.trigger(eventName, eventPacket);\n el = el.parent;\n\n if (eventPacket.cancelBubble) {\n break;\n }\n }\n\n if (!eventPacket.cancelBubble) {\n // 冒泡到顶级 zrender 对象\n this.trigger(eventName, eventPacket); // 分发事件到用户自定义层\n // 用户有可能在全局 click 事件中 dispose,所以需要判断下 painter 是否存在\n\n this.painter && this.painter.eachOtherLayer(function (layer) {\n if (typeof layer[eventHandler] === 'function') {\n layer[eventHandler].call(layer, eventPacket);\n }\n\n if (layer.trigger) {\n layer.trigger(eventName, eventPacket);\n }\n });\n }\n },\n\n /**\n * @private\n * @param {number} x\n * @param {number} y\n * @param {module:zrender/graphic/Displayable} exclude\n * @return {model:zrender/Element}\n * @method\n */\n findHover: function (x, y, exclude) {\n var list = this.storage.getDisplayList();\n var out = {\n x: x,\n y: y\n };\n\n for (var i = list.length - 1; i >= 0; i--) {\n var hoverCheckResult;\n\n if (list[i] !== exclude // getDisplayList may include ignored item in VML mode\n && !list[i].ignore && (hoverCheckResult = isHover(list[i], x, y))) {\n !out.topTarget && (out.topTarget = list[i]);\n\n if (hoverCheckResult !== SILENT) {\n out.target = list[i];\n break;\n }\n }\n }\n\n return out;\n },\n processGesture: function (event, stage) {\n if (!this._gestureMgr) {\n this._gestureMgr = new GestureMgr();\n }\n\n var gestureMgr = this._gestureMgr;\n stage === 'start' && gestureMgr.clear();\n var gestureInfo = gestureMgr.recognize(event, this.findHover(event.zrX, event.zrY, null).target, this.proxy.dom);\n stage === 'end' && gestureMgr.clear(); // Do not do any preventDefault here. Upper application do that if necessary.\n\n if (gestureInfo) {\n var type = gestureInfo.type;\n event.gestureEvent = type;\n this.dispatchToElement({\n target: gestureInfo.target\n }, type, gestureInfo.event);\n }\n }\n}; // Common handlers\n\nutil.each(['click', 'mousedown', 'mouseup', 'mousewheel', 'dblclick', 'contextmenu'], function (name) {\n Handler.prototype[name] = function (event) {\n var x = event.zrX;\n var y = event.zrY;\n var isOutside = isOutsideBoundary(this, x, y);\n var hovered;\n var hoveredTarget;\n\n if (name !== 'mouseup' || !isOutside) {\n // Find hover again to avoid click event is dispatched manually. Or click is triggered without mouseover\n hovered = this.findHover(x, y);\n hoveredTarget = hovered.target;\n }\n\n if (name === 'mousedown') {\n this._downEl = hoveredTarget;\n this._downPoint = [event.zrX, event.zrY]; // In case click triggered before mouseup\n\n this._upEl = hoveredTarget;\n } else if (name === 'mouseup') {\n this._upEl = hoveredTarget;\n } else if (name === 'click') {\n if (this._downEl !== this._upEl // Original click event is triggered on the whole canvas element,\n // including the case that `mousedown` - `mousemove` - `mouseup`,\n // which should be filtered, otherwise it will bring trouble to\n // pan and zoom.\n || !this._downPoint // Arbitrary value\n || vec2.dist(this._downPoint, [event.zrX, event.zrY]) > 4) {\n return;\n }\n\n this._downPoint = null;\n }\n\n this.dispatchToElement(hovered, name, event);\n };\n});\n\nfunction isHover(displayable, x, y) {\n if (displayable[displayable.rectHover ? 'rectContain' : 'contain'](x, y)) {\n var el = displayable;\n var isSilent;\n\n while (el) {\n // If clipped by ancestor.\n // FIXME: If clipPath has neither stroke nor fill,\n // el.clipPath.contain(x, y) will always return false.\n if (el.clipPath && !el.clipPath.contain(x, y)) {\n return false;\n }\n\n if (el.silent) {\n isSilent = true;\n }\n\n el = el.parent;\n }\n\n return isSilent ? SILENT : true;\n }\n\n return false;\n}\n/**\n * See [Drag outside].\n */\n\n\nfunction isOutsideBoundary(handlerInstance, x, y) {\n var painter = handlerInstance.painter;\n return x < 0 || x > painter.getWidth() || y < 0 || y > painter.getHeight();\n}\n\nutil.mixin(Handler, Eventful);\nutil.mixin(Handler, Draggable);\nvar _default = Handler;\nmodule.exports = _default;","// TODO Draggable for group\n// FIXME Draggable on element which has parent rotation or scale\nfunction Draggable() {\n this.on('mousedown', this._dragStart, this);\n this.on('mousemove', this._drag, this);\n this.on('mouseup', this._dragEnd, this); // `mosuemove` and `mouseup` can be continue to fire when dragging.\n // See [Drag outside] in `Handler.js`. So we do not need to trigger\n // `_dragEnd` when globalout. That would brings better user experience.\n // this.on('globalout', this._dragEnd, this);\n // this._dropTarget = null;\n // this._draggingTarget = null;\n // this._x = 0;\n // this._y = 0;\n}\n\nDraggable.prototype = {\n constructor: Draggable,\n _dragStart: function (e) {\n var draggingTarget = e.target; // Find if there is draggable in the ancestor\n\n while (draggingTarget && !draggingTarget.draggable) {\n draggingTarget = draggingTarget.parent;\n }\n\n if (draggingTarget) {\n this._draggingTarget = draggingTarget;\n draggingTarget.dragging = true;\n this._x = e.offsetX;\n this._y = e.offsetY;\n this.dispatchToElement(param(draggingTarget, e), 'dragstart', e.event);\n }\n },\n _drag: function (e) {\n var draggingTarget = this._draggingTarget;\n\n if (draggingTarget) {\n var x = e.offsetX;\n var y = e.offsetY;\n var dx = x - this._x;\n var dy = y - this._y;\n this._x = x;\n this._y = y;\n draggingTarget.drift(dx, dy, e);\n this.dispatchToElement(param(draggingTarget, e), 'drag', e.event);\n var dropTarget = this.findHover(x, y, draggingTarget).target;\n var lastDropTarget = this._dropTarget;\n this._dropTarget = dropTarget;\n\n if (draggingTarget !== dropTarget) {\n if (lastDropTarget && dropTarget !== lastDropTarget) {\n this.dispatchToElement(param(lastDropTarget, e), 'dragleave', e.event);\n }\n\n if (dropTarget && dropTarget !== lastDropTarget) {\n this.dispatchToElement(param(dropTarget, e), 'dragenter', e.event);\n }\n }\n }\n },\n _dragEnd: function (e) {\n var draggingTarget = this._draggingTarget;\n\n if (draggingTarget) {\n draggingTarget.dragging = false;\n }\n\n this.dispatchToElement(param(draggingTarget, e), 'dragend', e.event);\n\n if (this._dropTarget) {\n this.dispatchToElement(param(this._dropTarget, e), 'drop', e.event);\n }\n\n this._draggingTarget = null;\n this._dropTarget = null;\n }\n};\n\nfunction param(target, e) {\n return {\n target: target,\n topTarget: e && e.topTarget\n };\n}\n\nvar _default = Draggable;\nmodule.exports = _default;","var env = require(\"./env\");\n\nvar _fourPointsTransform = require(\"./fourPointsTransform\");\n\nvar buildTransformer = _fourPointsTransform.buildTransformer;\nvar EVENT_SAVED_PROP = '___zrEVENTSAVED';\nvar _calcOut = [];\n/**\n * Transform \"local coord\" from `elFrom` to `elTarget`.\n * \"local coord\": the coord based on the input `el`. The origin point is at\n * the position of \"left: 0; top: 0;\" in the `el`.\n *\n * Support when CSS transform is used.\n *\n * Having the `out` (that is, `[outX, outY]`), we can create an DOM element\n * and set the CSS style as \"left: outX; top: outY;\" and append it to `elTarge`\n * to locate the element.\n *\n * For example, this code below positions a child of `document.body` on the event\n * point, no matter whether `body` has `margin`/`paddin`/`transfrom`/... :\n * ```js\n * transformLocalCoord(out, container, document.body, event.offsetX, event.offsetY);\n * if (!eqNaN(out[0])) {\n * // Then locate the tip element on the event point.\n * var tipEl = document.createElement('div');\n * tipEl.style.cssText = 'position: absolute; left:' + out[0] + ';top:' + out[1] + ';';\n * document.body.appendChild(tipEl);\n * }\n * ```\n *\n * Notice: In some env this method is not supported. If called, `out` will be `[NaN, NaN]`.\n *\n * @param {Array.} out [inX: number, inY: number] The output..\n * If can not transform, `out` will not be modified but return `false`.\n * @param {HTMLElement} elFrom The `[inX, inY]` is based on elFrom.\n * @param {HTMLElement} elTarget The `out` is based on elTarget.\n * @param {number} inX\n * @param {number} inY\n * @return {boolean} Whether transform successfully.\n */\n\nfunction transformLocalCoord(out, elFrom, elTarget, inX, inY) {\n return transformCoordWithViewport(_calcOut, elFrom, inX, inY, true) && transformCoordWithViewport(out, elTarget, _calcOut[0], _calcOut[1]);\n}\n/**\n * Transform between a \"viewport coord\" and a \"local coord\".\n * \"viewport coord\": the coord based on the left-top corner of the viewport\n * of the browser.\n * \"local coord\": the coord based on the input `el`. The origin point is at\n * the position of \"left: 0; top: 0;\" in the `el`.\n *\n * Support the case when CSS transform is used on el.\n *\n * @param {Array.} out [inX: number, inY: number] The output. If `inverse: false`,\n * it represents \"local coord\", otherwise \"vireport coord\".\n * If can not transform, `out` will not be modified but return `false`.\n * @param {HTMLElement} el The \"local coord\" is based on the `el`, see comment above.\n * @param {number} inX If `inverse: false`,\n * it represents \"vireport coord\", otherwise \"local coord\".\n * @param {number} inY If `inverse: false`,\n * it represents \"vireport coord\", otherwise \"local coord\".\n * @param {boolean} [inverse=false]\n * `true`: from \"viewport coord\" to \"local coord\".\n * `false`: from \"local coord\" to \"viewport coord\".\n * @return {boolean} Whether transform successfully.\n */\n\n\nfunction transformCoordWithViewport(out, el, inX, inY, inverse) {\n if (el.getBoundingClientRect && env.domSupported && !isCanvasEl(el)) {\n var saved = el[EVENT_SAVED_PROP] || (el[EVENT_SAVED_PROP] = {});\n var markers = prepareCoordMarkers(el, saved);\n var transformer = preparePointerTransformer(markers, saved, inverse);\n\n if (transformer) {\n transformer(out, inX, inY);\n return true;\n }\n }\n\n return false;\n}\n\nfunction prepareCoordMarkers(el, saved) {\n var markers = saved.markers;\n\n if (markers) {\n return markers;\n }\n\n markers = saved.markers = [];\n var propLR = ['left', 'right'];\n var propTB = ['top', 'bottom'];\n\n for (var i = 0; i < 4; i++) {\n var marker = document.createElement('div');\n var stl = marker.style;\n var idxLR = i % 2;\n var idxTB = (i >> 1) % 2;\n stl.cssText = ['position: absolute', 'visibility: hidden', 'padding: 0', 'margin: 0', 'border-width: 0', 'user-select: none', 'width:0', 'height:0', // 'width: 5px',\n // 'height: 5px',\n propLR[idxLR] + ':0', propTB[idxTB] + ':0', propLR[1 - idxLR] + ':auto', propTB[1 - idxTB] + ':auto', ''].join('!important;');\n el.appendChild(marker);\n markers.push(marker);\n }\n\n return markers;\n}\n\nfunction preparePointerTransformer(markers, saved, inverse) {\n var transformerName = inverse ? 'invTrans' : 'trans';\n var transformer = saved[transformerName];\n var oldSrcCoords = saved.srcCoords;\n var oldCoordTheSame = true;\n var srcCoords = [];\n var destCoords = [];\n\n for (var i = 0; i < 4; i++) {\n var rect = markers[i].getBoundingClientRect();\n var ii = 2 * i;\n var x = rect.left;\n var y = rect.top;\n srcCoords.push(x, y);\n oldCoordTheSame = oldCoordTheSame && oldSrcCoords && x === oldSrcCoords[ii] && y === oldSrcCoords[ii + 1];\n destCoords.push(markers[i].offsetLeft, markers[i].offsetTop);\n } // Cache to avoid time consuming of `buildTransformer`.\n\n\n return oldCoordTheSame && transformer ? transformer : (saved.srcCoords = srcCoords, saved[transformerName] = inverse ? buildTransformer(destCoords, srcCoords) : buildTransformer(srcCoords, destCoords));\n}\n\nfunction isCanvasEl(el) {\n return el.nodeName.toUpperCase() === 'CANVAS';\n}\n\nexports.transformLocalCoord = transformLocalCoord;\nexports.transformCoordWithViewport = transformCoordWithViewport;\nexports.isCanvasEl = isCanvasEl;","/**\n * The algoritm is learnt from\n * https://franklinta.com/2014/09/08/computing-css-matrix3d-transforms/\n * And we made some optimization for matrix inversion.\n * Other similar approaches:\n * \"cv::getPerspectiveTransform\", \"Direct Linear Transformation\".\n */\nvar LN2 = Math.log(2);\n\nfunction determinant(rows, rank, rowStart, rowMask, colMask, detCache) {\n var cacheKey = rowMask + '-' + colMask;\n var fullRank = rows.length;\n\n if (detCache.hasOwnProperty(cacheKey)) {\n return detCache[cacheKey];\n }\n\n if (rank === 1) {\n // In this case the colMask must be like: `11101111`. We can find the place of `0`.\n var colStart = Math.round(Math.log((1 << fullRank) - 1 & ~colMask) / LN2);\n return rows[rowStart][colStart];\n }\n\n var subRowMask = rowMask | 1 << rowStart;\n var subRowStart = rowStart + 1;\n\n while (rowMask & 1 << subRowStart) {\n subRowStart++;\n }\n\n var sum = 0;\n\n for (var j = 0, colLocalIdx = 0; j < fullRank; j++) {\n var colTag = 1 << j;\n\n if (!(colTag & colMask)) {\n sum += (colLocalIdx % 2 ? -1 : 1) * rows[rowStart][j] // det(subMatrix(0, j))\n * determinant(rows, rank - 1, subRowStart, subRowMask, colMask | colTag, detCache);\n colLocalIdx++;\n }\n }\n\n detCache[cacheKey] = sum;\n return sum;\n}\n/**\n * Usage:\n * ```js\n * var transformer = buildTransformer(\n * [10, 44, 100, 44, 100, 300, 10, 300],\n * [50, 54, 130, 14, 140, 330, 14, 220]\n * );\n * var out = [];\n * transformer && transformer([11, 33], out);\n * ```\n *\n * Notice: `buildTransformer` may take more than 10ms in some Android device.\n *\n * @param {Array.} src source four points, [x0, y0, x1, y1, x2, y2, x3, y3]\n * @param {Array.} dest destination four points, [x0, y0, x1, y1, x2, y2, x3, y3]\n * @return {Function} transformer If fail, return null/undefined.\n */\n\n\nfunction buildTransformer(src, dest) {\n var mA = [[src[0], src[1], 1, 0, 0, 0, -dest[0] * src[0], -dest[0] * src[1]], [0, 0, 0, src[0], src[1], 1, -dest[1] * src[0], -dest[1] * src[1]], [src[2], src[3], 1, 0, 0, 0, -dest[2] * src[2], -dest[2] * src[3]], [0, 0, 0, src[2], src[3], 1, -dest[3] * src[2], -dest[3] * src[3]], [src[4], src[5], 1, 0, 0, 0, -dest[4] * src[4], -dest[4] * src[5]], [0, 0, 0, src[4], src[5], 1, -dest[5] * src[4], -dest[5] * src[5]], [src[6], src[7], 1, 0, 0, 0, -dest[6] * src[6], -dest[6] * src[7]], [0, 0, 0, src[6], src[7], 1, -dest[7] * src[6], -dest[7] * src[7]]];\n var detCache = {};\n var det = determinant(mA, 8, 0, 0, 0, detCache);\n\n if (det === 0) {\n // can not make transformer when and only when\n // any three of the markers are collinear.\n return;\n } // `invert(mA) * dest`, that is, `adj(mA) / det * dest`.\n\n\n var vh = [];\n\n for (var i = 0; i < 8; i++) {\n for (var j = 0; j < 8; j++) {\n vh[j] == null && (vh[j] = 0);\n vh[j] += ((i + j) % 2 ? -1 : 1) * // det(subMatrix(i, j))\n determinant(mA, 7, i === 0 ? 1 : 0, 1 << i, 1 << j, detCache) / det * dest[i];\n }\n }\n\n return function (out, srcPointX, srcPointY) {\n var pk = srcPointX * vh[6] + srcPointY * vh[7] + 1;\n out[0] = (srcPointX * vh[0] + srcPointY * vh[1] + vh[2]) / pk;\n out[1] = (srcPointX * vh[3] + srcPointY * vh[4] + vh[5]) / pk;\n };\n}\n\nexports.buildTransformer = buildTransformer;","var eventUtil = require(\"./event\");\n\n/**\n * Only implements needed gestures for mobile.\n */\nvar GestureMgr = function () {\n /**\n * @private\n * @type {Array.}\n */\n this._track = [];\n};\n\nGestureMgr.prototype = {\n constructor: GestureMgr,\n recognize: function (event, target, root) {\n this._doTrack(event, target, root);\n\n return this._recognize(event);\n },\n clear: function () {\n this._track.length = 0;\n return this;\n },\n _doTrack: function (event, target, root) {\n var touches = event.touches;\n\n if (!touches) {\n return;\n }\n\n var trackItem = {\n points: [],\n touches: [],\n target: target,\n event: event\n };\n\n for (var i = 0, len = touches.length; i < len; i++) {\n var touch = touches[i];\n var pos = eventUtil.clientToLocal(root, touch, {});\n trackItem.points.push([pos.zrX, pos.zrY]);\n trackItem.touches.push(touch);\n }\n\n this._track.push(trackItem);\n },\n _recognize: function (event) {\n for (var eventName in recognizers) {\n if (recognizers.hasOwnProperty(eventName)) {\n var gestureInfo = recognizers[eventName](this._track, event);\n\n if (gestureInfo) {\n return gestureInfo;\n }\n }\n }\n }\n};\n\nfunction dist(pointPair) {\n var dx = pointPair[1][0] - pointPair[0][0];\n var dy = pointPair[1][1] - pointPair[0][1];\n return Math.sqrt(dx * dx + dy * dy);\n}\n\nfunction center(pointPair) {\n return [(pointPair[0][0] + pointPair[1][0]) / 2, (pointPair[0][1] + pointPair[1][1]) / 2];\n}\n\nvar recognizers = {\n pinch: function (track, event) {\n var trackLen = track.length;\n\n if (!trackLen) {\n return;\n }\n\n var pinchEnd = (track[trackLen - 1] || {}).points;\n var pinchPre = (track[trackLen - 2] || {}).points || pinchEnd;\n\n if (pinchPre && pinchPre.length > 1 && pinchEnd && pinchEnd.length > 1) {\n var pinchScale = dist(pinchEnd) / dist(pinchPre);\n !isFinite(pinchScale) && (pinchScale = 1);\n event.pinchScale = pinchScale;\n var pinchCenter = center(pinchEnd);\n event.pinchX = pinchCenter[0];\n event.pinchY = pinchCenter[1];\n return {\n type: 'pinch',\n target: track[0].target,\n event: event\n };\n }\n } // Only pinch currently.\n\n};\nvar _default = GestureMgr;\nmodule.exports = _default;","var util = require(\"./core/util\");\n\nvar env = require(\"./core/env\");\n\nvar Group = require(\"./container/Group\");\n\nvar timsort = require(\"./core/timsort\");\n\n// Use timsort because in most case elements are partially sorted\n// https://jsfiddle.net/pissang/jr4x7mdm/8/\nfunction shapeCompareFunc(a, b) {\n if (a.zlevel === b.zlevel) {\n if (a.z === b.z) {\n // if (a.z2 === b.z2) {\n // // FIXME Slow has renderidx compare\n // // http://stackoverflow.com/questions/20883421/sorting-in-javascript-should-every-compare-function-have-a-return-0-statement\n // // https://github.com/v8/v8/blob/47cce544a31ed5577ffe2963f67acb4144ee0232/src/js/array.js#L1012\n // return a.__renderidx - b.__renderidx;\n // }\n return a.z2 - b.z2;\n }\n\n return a.z - b.z;\n }\n\n return a.zlevel - b.zlevel;\n}\n/**\n * 内容仓库 (M)\n * @alias module:zrender/Storage\n * @constructor\n */\n\n\nvar Storage = function () {\n // jshint ignore:line\n this._roots = [];\n this._displayList = [];\n this._displayListLen = 0;\n};\n\nStorage.prototype = {\n constructor: Storage,\n\n /**\n * @param {Function} cb\n *\n */\n traverse: function (cb, context) {\n for (var i = 0; i < this._roots.length; i++) {\n this._roots[i].traverse(cb, context);\n }\n },\n\n /**\n * 返回所有图形的绘制队列\n * @param {boolean} [update=false] 是否在返回前更新该数组\n * @param {boolean} [includeIgnore=false] 是否包含 ignore 的数组, 在 update 为 true 的时候有效\n *\n * 详见{@link module:zrender/graphic/Displayable.prototype.updateDisplayList}\n * @return {Array.}\n */\n getDisplayList: function (update, includeIgnore) {\n includeIgnore = includeIgnore || false;\n\n if (update) {\n this.updateDisplayList(includeIgnore);\n }\n\n return this._displayList;\n },\n\n /**\n * 更新图形的绘制队列。\n * 每次绘制前都会调用,该方法会先深度优先遍历整个树,更新所有Group和Shape的变换并且把所有可见的Shape保存到数组中,\n * 最后根据绘制的优先级(zlevel > z > 插入顺序)排序得到绘制队列\n * @param {boolean} [includeIgnore=false] 是否包含 ignore 的数组\n */\n updateDisplayList: function (includeIgnore) {\n this._displayListLen = 0;\n var roots = this._roots;\n var displayList = this._displayList;\n\n for (var i = 0, len = roots.length; i < len; i++) {\n this._updateAndAddDisplayable(roots[i], null, includeIgnore);\n }\n\n displayList.length = this._displayListLen;\n env.canvasSupported && timsort(displayList, shapeCompareFunc);\n },\n _updateAndAddDisplayable: function (el, clipPaths, includeIgnore) {\n if (el.ignore && !includeIgnore) {\n return;\n }\n\n el.beforeUpdate();\n\n if (el.__dirty) {\n el.update();\n }\n\n el.afterUpdate();\n var userSetClipPath = el.clipPath;\n\n if (userSetClipPath) {\n // FIXME 效率影响\n if (clipPaths) {\n clipPaths = clipPaths.slice();\n } else {\n clipPaths = [];\n }\n\n var currentClipPath = userSetClipPath;\n var parentClipPath = el; // Recursively add clip path\n\n while (currentClipPath) {\n // clipPath 的变换是基于使用这个 clipPath 的元素\n currentClipPath.parent = parentClipPath;\n currentClipPath.updateTransform();\n clipPaths.push(currentClipPath);\n parentClipPath = currentClipPath;\n currentClipPath = currentClipPath.clipPath;\n }\n }\n\n if (el.isGroup) {\n var children = el._children;\n\n for (var i = 0; i < children.length; i++) {\n var child = children[i]; // Force to mark as dirty if group is dirty\n // FIXME __dirtyPath ?\n\n if (el.__dirty) {\n child.__dirty = true;\n }\n\n this._updateAndAddDisplayable(child, clipPaths, includeIgnore);\n } // Mark group clean here\n\n\n el.__dirty = false;\n } else {\n el.__clipPaths = clipPaths;\n this._displayList[this._displayListLen++] = el;\n }\n },\n\n /**\n * 添加图形(Shape)或者组(Group)到根节点\n * @param {module:zrender/Element} el\n */\n addRoot: function (el) {\n if (el.__storage === this) {\n return;\n }\n\n if (el instanceof Group) {\n el.addChildrenToStorage(this);\n }\n\n this.addToStorage(el);\n\n this._roots.push(el);\n },\n\n /**\n * 删除指定的图形(Shape)或者组(Group)\n * @param {string|Array.} [el] 如果为空清空整个Storage\n */\n delRoot: function (el) {\n if (el == null) {\n // 不指定el清空\n for (var i = 0; i < this._roots.length; i++) {\n var root = this._roots[i];\n\n if (root instanceof Group) {\n root.delChildrenFromStorage(this);\n }\n }\n\n this._roots = [];\n this._displayList = [];\n this._displayListLen = 0;\n return;\n }\n\n if (el instanceof Array) {\n for (var i = 0, l = el.length; i < l; i++) {\n this.delRoot(el[i]);\n }\n\n return;\n }\n\n var idx = util.indexOf(this._roots, el);\n\n if (idx >= 0) {\n this.delFromStorage(el);\n\n this._roots.splice(idx, 1);\n\n if (el instanceof Group) {\n el.delChildrenFromStorage(this);\n }\n }\n },\n addToStorage: function (el) {\n if (el) {\n el.__storage = this;\n el.dirty(false);\n }\n\n return this;\n },\n delFromStorage: function (el) {\n if (el) {\n el.__storage = null;\n }\n\n return this;\n },\n\n /**\n * 清空并且释放Storage\n */\n dispose: function () {\n this._renderList = this._roots = null;\n },\n displayableSortFunc: shapeCompareFunc\n};\nvar _default = Storage;\nmodule.exports = _default;","var matrix = require(\"../core/matrix\");\n\nvar vector = require(\"../core/vector\");\n\n/**\n * 提供变换扩展\n * @module zrender/mixin/Transformable\n * @author pissang (https://www.github.com/pissang)\n */\nvar mIdentity = matrix.identity;\nvar EPSILON = 5e-5;\n\nfunction isNotAroundZero(val) {\n return val > EPSILON || val < -EPSILON;\n}\n/**\n * @alias module:zrender/mixin/Transformable\n * @constructor\n */\n\n\nvar Transformable = function (opts) {\n opts = opts || {}; // If there are no given position, rotation, scale\n\n if (!opts.position) {\n /**\n * 平移\n * @type {Array.}\n * @default [0, 0]\n */\n this.position = [0, 0];\n }\n\n if (opts.rotation == null) {\n /**\n * 旋转\n * @type {Array.}\n * @default 0\n */\n this.rotation = 0;\n }\n\n if (!opts.scale) {\n /**\n * 缩放\n * @type {Array.}\n * @default [1, 1]\n */\n this.scale = [1, 1];\n }\n /**\n * 旋转和缩放的原点\n * @type {Array.}\n * @default null\n */\n\n\n this.origin = this.origin || null;\n};\n\nvar transformableProto = Transformable.prototype;\ntransformableProto.transform = null;\n/**\n * 判断是否需要有坐标变换\n * 如果有坐标变换, 则从position, rotation, scale以及父节点的transform计算出自身的transform矩阵\n */\n\ntransformableProto.needLocalTransform = function () {\n return isNotAroundZero(this.rotation) || isNotAroundZero(this.position[0]) || isNotAroundZero(this.position[1]) || isNotAroundZero(this.scale[0] - 1) || isNotAroundZero(this.scale[1] - 1);\n};\n\nvar scaleTmp = [];\n\ntransformableProto.updateTransform = function () {\n var parent = this.parent;\n var parentHasTransform = parent && parent.transform;\n var needLocalTransform = this.needLocalTransform();\n var m = this.transform;\n\n if (!(needLocalTransform || parentHasTransform)) {\n m && mIdentity(m);\n return;\n }\n\n m = m || matrix.create();\n\n if (needLocalTransform) {\n this.getLocalTransform(m);\n } else {\n mIdentity(m);\n } // 应用父节点变换\n\n\n if (parentHasTransform) {\n if (needLocalTransform) {\n matrix.mul(m, parent.transform, m);\n } else {\n matrix.copy(m, parent.transform);\n }\n } // 保存这个变换矩阵\n\n\n this.transform = m;\n var globalScaleRatio = this.globalScaleRatio;\n\n if (globalScaleRatio != null && globalScaleRatio !== 1) {\n this.getGlobalScale(scaleTmp);\n var relX = scaleTmp[0] < 0 ? -1 : 1;\n var relY = scaleTmp[1] < 0 ? -1 : 1;\n var sx = ((scaleTmp[0] - relX) * globalScaleRatio + relX) / scaleTmp[0] || 0;\n var sy = ((scaleTmp[1] - relY) * globalScaleRatio + relY) / scaleTmp[1] || 0;\n m[0] *= sx;\n m[1] *= sx;\n m[2] *= sy;\n m[3] *= sy;\n }\n\n this.invTransform = this.invTransform || matrix.create();\n matrix.invert(this.invTransform, m);\n};\n\ntransformableProto.getLocalTransform = function (m) {\n return Transformable.getLocalTransform(this, m);\n};\n/**\n * 将自己的transform应用到context上\n * @param {CanvasRenderingContext2D} ctx\n */\n\n\ntransformableProto.setTransform = function (ctx) {\n var m = this.transform;\n var dpr = ctx.dpr || 1;\n\n if (m) {\n ctx.setTransform(dpr * m[0], dpr * m[1], dpr * m[2], dpr * m[3], dpr * m[4], dpr * m[5]);\n } else {\n ctx.setTransform(dpr, 0, 0, dpr, 0, 0);\n }\n};\n\ntransformableProto.restoreTransform = function (ctx) {\n var dpr = ctx.dpr || 1;\n ctx.setTransform(dpr, 0, 0, dpr, 0, 0);\n};\n\nvar tmpTransform = [];\nvar originTransform = matrix.create();\n\ntransformableProto.setLocalTransform = function (m) {\n if (!m) {\n // TODO return or set identity?\n return;\n }\n\n var sx = m[0] * m[0] + m[1] * m[1];\n var sy = m[2] * m[2] + m[3] * m[3];\n var position = this.position;\n var scale = this.scale;\n\n if (isNotAroundZero(sx - 1)) {\n sx = Math.sqrt(sx);\n }\n\n if (isNotAroundZero(sy - 1)) {\n sy = Math.sqrt(sy);\n }\n\n if (m[0] < 0) {\n sx = -sx;\n }\n\n if (m[3] < 0) {\n sy = -sy;\n }\n\n position[0] = m[4];\n position[1] = m[5];\n scale[0] = sx;\n scale[1] = sy;\n this.rotation = Math.atan2(-m[1] / sy, m[0] / sx);\n};\n/**\n * 分解`transform`矩阵到`position`, `rotation`, `scale`\n */\n\n\ntransformableProto.decomposeTransform = function () {\n if (!this.transform) {\n return;\n }\n\n var parent = this.parent;\n var m = this.transform;\n\n if (parent && parent.transform) {\n // Get local transform and decompose them to position, scale, rotation\n matrix.mul(tmpTransform, parent.invTransform, m);\n m = tmpTransform;\n }\n\n var origin = this.origin;\n\n if (origin && (origin[0] || origin[1])) {\n originTransform[4] = origin[0];\n originTransform[5] = origin[1];\n matrix.mul(tmpTransform, m, originTransform);\n tmpTransform[4] -= origin[0];\n tmpTransform[5] -= origin[1];\n m = tmpTransform;\n }\n\n this.setLocalTransform(m);\n};\n/**\n * Get global scale\n * @return {Array.}\n */\n\n\ntransformableProto.getGlobalScale = function (out) {\n var m = this.transform;\n out = out || [];\n\n if (!m) {\n out[0] = 1;\n out[1] = 1;\n return out;\n }\n\n out[0] = Math.sqrt(m[0] * m[0] + m[1] * m[1]);\n out[1] = Math.sqrt(m[2] * m[2] + m[3] * m[3]);\n\n if (m[0] < 0) {\n out[0] = -out[0];\n }\n\n if (m[3] < 0) {\n out[1] = -out[1];\n }\n\n return out;\n};\n/**\n * 变换坐标位置到 shape 的局部坐标空间\n * @method\n * @param {number} x\n * @param {number} y\n * @return {Array.}\n */\n\n\ntransformableProto.transformCoordToLocal = function (x, y) {\n var v2 = [x, y];\n var invTransform = this.invTransform;\n\n if (invTransform) {\n vector.applyTransform(v2, v2, invTransform);\n }\n\n return v2;\n};\n/**\n * 变换局部坐标位置到全局坐标空间\n * @method\n * @param {number} x\n * @param {number} y\n * @return {Array.}\n */\n\n\ntransformableProto.transformCoordToGlobal = function (x, y) {\n var v2 = [x, y];\n var transform = this.transform;\n\n if (transform) {\n vector.applyTransform(v2, v2, transform);\n }\n\n return v2;\n};\n/**\n * @static\n * @param {Object} target\n * @param {Array.} target.origin\n * @param {number} target.rotation\n * @param {Array.} target.position\n * @param {Array.} [m]\n */\n\n\nTransformable.getLocalTransform = function (target, m) {\n m = m || [];\n mIdentity(m);\n var origin = target.origin;\n var scale = target.scale || [1, 1];\n var rotation = target.rotation || 0;\n var position = target.position || [0, 0];\n\n if (origin) {\n // Translate to origin\n m[4] -= origin[0];\n m[5] -= origin[1];\n }\n\n matrix.scale(m, m, scale);\n\n if (rotation) {\n matrix.rotate(m, m, rotation);\n }\n\n if (origin) {\n // Translate back from origin\n m[4] += origin[0];\n m[5] += origin[1];\n }\n\n m[4] += position[0];\n m[5] += position[1];\n return m;\n};\n\nvar _default = Transformable;\nmodule.exports = _default;","var Animator = require(\"../animation/Animator\");\n\nvar logError = require(\"../core/log\");\n\nvar _util = require(\"../core/util\");\n\nvar isString = _util.isString;\nvar isFunction = _util.isFunction;\nvar isObject = _util.isObject;\nvar isArrayLike = _util.isArrayLike;\nvar indexOf = _util.indexOf;\n\n/**\n * @alias module:zrender/mixin/Animatable\n * @constructor\n */\nvar Animatable = function () {\n /**\n * @type {Array.}\n * @readOnly\n */\n this.animators = [];\n};\n\nAnimatable.prototype = {\n constructor: Animatable,\n\n /**\n * 动画\n *\n * @param {string} path The path to fetch value from object, like 'a.b.c'.\n * @param {boolean} [loop] Whether to loop animation.\n * @return {module:zrender/animation/Animator}\n * @example:\n * el.animate('style', false)\n * .when(1000, {x: 10} )\n * .done(function(){ // Animation done })\n * .start()\n */\n animate: function (path, loop) {\n var target;\n var animatingShape = false;\n var el = this;\n var zr = this.__zr;\n\n if (path) {\n var pathSplitted = path.split('.');\n var prop = el; // If animating shape\n\n animatingShape = pathSplitted[0] === 'shape';\n\n for (var i = 0, l = pathSplitted.length; i < l; i++) {\n if (!prop) {\n continue;\n }\n\n prop = prop[pathSplitted[i]];\n }\n\n if (prop) {\n target = prop;\n }\n } else {\n target = el;\n }\n\n if (!target) {\n logError('Property \"' + path + '\" is not existed in element ' + el.id);\n return;\n }\n\n var animators = el.animators;\n var animator = new Animator(target, loop);\n animator.during(function (target) {\n el.dirty(animatingShape);\n }).done(function () {\n // FIXME Animator will not be removed if use `Animator#stop` to stop animation\n animators.splice(indexOf(animators, animator), 1);\n });\n animators.push(animator); // If animate after added to the zrender\n\n if (zr) {\n zr.animation.addAnimator(animator);\n }\n\n return animator;\n },\n\n /**\n * 停止动画\n * @param {boolean} forwardToLast If move to last frame before stop\n */\n stopAnimation: function (forwardToLast) {\n var animators = this.animators;\n var len = animators.length;\n\n for (var i = 0; i < len; i++) {\n animators[i].stop(forwardToLast);\n }\n\n animators.length = 0;\n return this;\n },\n\n /**\n * Caution: this method will stop previous animation.\n * So do not use this method to one element twice before\n * animation starts, unless you know what you are doing.\n * @param {Object} target\n * @param {number} [time=500] Time in ms\n * @param {string} [easing='linear']\n * @param {number} [delay=0]\n * @param {Function} [callback]\n * @param {Function} [forceAnimate] Prevent stop animation and callback\n * immediently when target values are the same as current values.\n *\n * @example\n * // Animate position\n * el.animateTo({\n * position: [10, 10]\n * }, function () { // done })\n *\n * // Animate shape, style and position in 100ms, delayed 100ms, with cubicOut easing\n * el.animateTo({\n * shape: {\n * width: 500\n * },\n * style: {\n * fill: 'red'\n * }\n * position: [10, 10]\n * }, 100, 100, 'cubicOut', function () { // done })\n */\n // TODO Return animation key\n animateTo: function (target, time, delay, easing, callback, forceAnimate) {\n animateTo(this, target, time, delay, easing, callback, forceAnimate);\n },\n\n /**\n * Animate from the target state to current state.\n * The params and the return value are the same as `this.animateTo`.\n */\n animateFrom: function (target, time, delay, easing, callback, forceAnimate) {\n animateTo(this, target, time, delay, easing, callback, forceAnimate, true);\n }\n};\n\nfunction animateTo(animatable, target, time, delay, easing, callback, forceAnimate, reverse) {\n // animateTo(target, time, easing, callback);\n if (isString(delay)) {\n callback = easing;\n easing = delay;\n delay = 0;\n } // animateTo(target, time, delay, callback);\n else if (isFunction(easing)) {\n callback = easing;\n easing = 'linear';\n delay = 0;\n } // animateTo(target, time, callback);\n else if (isFunction(delay)) {\n callback = delay;\n delay = 0;\n } // animateTo(target, callback)\n else if (isFunction(time)) {\n callback = time;\n time = 500;\n } // animateTo(target)\n else if (!time) {\n time = 500;\n } // Stop all previous animations\n\n\n animatable.stopAnimation();\n animateToShallow(animatable, '', animatable, target, time, delay, reverse); // Animators may be removed immediately after start\n // if there is nothing to animate\n\n var animators = animatable.animators.slice();\n var count = animators.length;\n\n function done() {\n count--;\n\n if (!count) {\n callback && callback();\n }\n } // No animators. This should be checked before animators[i].start(),\n // because 'done' may be executed immediately if no need to animate.\n\n\n if (!count) {\n callback && callback();\n } // Start after all animators created\n // Incase any animator is done immediately when all animation properties are not changed\n\n\n for (var i = 0; i < animators.length; i++) {\n animators[i].done(done).start(easing, forceAnimate);\n }\n}\n/**\n * @param {string} path=''\n * @param {Object} source=animatable\n * @param {Object} target\n * @param {number} [time=500]\n * @param {number} [delay=0]\n * @param {boolean} [reverse] If `true`, animate\n * from the `target` to current state.\n *\n * @example\n * // Animate position\n * el._animateToShallow({\n * position: [10, 10]\n * })\n *\n * // Animate shape, style and position in 100ms, delayed 100ms\n * el._animateToShallow({\n * shape: {\n * width: 500\n * },\n * style: {\n * fill: 'red'\n * }\n * position: [10, 10]\n * }, 100, 100)\n */\n\n\nfunction animateToShallow(animatable, path, source, target, time, delay, reverse) {\n var objShallow = {};\n var propertyCount = 0;\n\n for (var name in target) {\n if (!target.hasOwnProperty(name)) {\n continue;\n }\n\n if (source[name] != null) {\n if (isObject(target[name]) && !isArrayLike(target[name])) {\n animateToShallow(animatable, path ? path + '.' + name : name, source[name], target[name], time, delay, reverse);\n } else {\n if (reverse) {\n objShallow[name] = source[name];\n setAttrByPath(animatable, path, name, target[name]);\n } else {\n objShallow[name] = target[name];\n }\n\n propertyCount++;\n }\n } else if (target[name] != null && !reverse) {\n setAttrByPath(animatable, path, name, target[name]);\n }\n }\n\n if (propertyCount > 0) {\n animatable.animate(path, false).when(time == null ? 500 : time, objShallow).delay(delay || 0);\n }\n}\n\nfunction setAttrByPath(el, path, name, value) {\n // Attr directly if not has property\n // FIXME, if some property not needed for element ?\n if (!path) {\n el.attr(name, value);\n } else {\n // Only support set shape or style\n var props = {};\n props[path] = {};\n props[path][name] = value;\n el.attr(props);\n }\n}\n\nvar _default = Animatable;\nmodule.exports = _default;","var easingFuncs = require(\"./easing\");\n\n/**\n * 动画主控制器\n * @config target 动画对象,可以是数组,如果是数组的话会批量分发onframe等事件\n * @config life(1000) 动画时长\n * @config delay(0) 动画延迟时间\n * @config loop(true)\n * @config gap(0) 循环的间隔时间\n * @config onframe\n * @config easing(optional)\n * @config ondestroy(optional)\n * @config onrestart(optional)\n *\n * TODO pause\n */\nfunction Clip(options) {\n this._target = options.target; // 生命周期\n\n this._life = options.life || 1000; // 延时\n\n this._delay = options.delay || 0; // 开始时间\n // this._startTime = new Date().getTime() + this._delay;// 单位毫秒\n\n this._initialized = false; // 是否循环\n\n this.loop = options.loop == null ? false : options.loop;\n this.gap = options.gap || 0;\n this.easing = options.easing || 'Linear';\n this.onframe = options.onframe;\n this.ondestroy = options.ondestroy;\n this.onrestart = options.onrestart;\n this._pausedTime = 0;\n this._paused = false;\n}\n\nClip.prototype = {\n constructor: Clip,\n step: function (globalTime, deltaTime) {\n // Set startTime on first step, or _startTime may has milleseconds different between clips\n // PENDING\n if (!this._initialized) {\n this._startTime = globalTime + this._delay;\n this._initialized = true;\n }\n\n if (this._paused) {\n this._pausedTime += deltaTime;\n return;\n }\n\n var percent = (globalTime - this._startTime - this._pausedTime) / this._life; // 还没开始\n\n if (percent < 0) {\n return;\n }\n\n percent = Math.min(percent, 1);\n var easing = this.easing;\n var easingFunc = typeof easing === 'string' ? easingFuncs[easing] : easing;\n var schedule = typeof easingFunc === 'function' ? easingFunc(percent) : percent;\n this.fire('frame', schedule); // 结束\n\n if (percent === 1) {\n if (this.loop) {\n this.restart(globalTime); // 重新开始周期\n // 抛出而不是直接调用事件直到 stage.update 后再统一调用这些事件\n\n return 'restart';\n } // 动画完成将这个控制器标识为待删除\n // 在Animation.update中进行批量删除\n\n\n this._needsRemove = true;\n return 'destroy';\n }\n\n return null;\n },\n restart: function (globalTime) {\n var remainder = (globalTime - this._startTime - this._pausedTime) % this._life;\n this._startTime = globalTime - remainder + this.gap;\n this._pausedTime = 0;\n this._needsRemove = false;\n },\n fire: function (eventType, arg) {\n eventType = 'on' + eventType;\n\n if (this[eventType]) {\n this[eventType](this._target, arg);\n }\n },\n pause: function () {\n this._paused = true;\n },\n resume: function () {\n this._paused = false;\n }\n};\nvar _default = Clip;\nmodule.exports = _default;","/**\n * 缓动代码来自 https://github.com/sole/tween.js/blob/master/src/Tween.js\n * @see http://sole.github.io/tween.js/examples/03_graphs.html\n * @exports zrender/animation/easing\n */\nvar easing = {\n /**\n * @param {number} k\n * @return {number}\n */\n linear: function (k) {\n return k;\n },\n\n /**\n * @param {number} k\n * @return {number}\n */\n quadraticIn: function (k) {\n return k * k;\n },\n\n /**\n * @param {number} k\n * @return {number}\n */\n quadraticOut: function (k) {\n return k * (2 - k);\n },\n\n /**\n * @param {number} k\n * @return {number}\n */\n quadraticInOut: function (k) {\n if ((k *= 2) < 1) {\n return 0.5 * k * k;\n }\n\n return -0.5 * (--k * (k - 2) - 1);\n },\n // 三次方的缓动(t^3)\n\n /**\n * @param {number} k\n * @return {number}\n */\n cubicIn: function (k) {\n return k * k * k;\n },\n\n /**\n * @param {number} k\n * @return {number}\n */\n cubicOut: function (k) {\n return --k * k * k + 1;\n },\n\n /**\n * @param {number} k\n * @return {number}\n */\n cubicInOut: function (k) {\n if ((k *= 2) < 1) {\n return 0.5 * k * k * k;\n }\n\n return 0.5 * ((k -= 2) * k * k + 2);\n },\n // 四次方的缓动(t^4)\n\n /**\n * @param {number} k\n * @return {number}\n */\n quarticIn: function (k) {\n return k * k * k * k;\n },\n\n /**\n * @param {number} k\n * @return {number}\n */\n quarticOut: function (k) {\n return 1 - --k * k * k * k;\n },\n\n /**\n * @param {number} k\n * @return {number}\n */\n quarticInOut: function (k) {\n if ((k *= 2) < 1) {\n return 0.5 * k * k * k * k;\n }\n\n return -0.5 * ((k -= 2) * k * k * k - 2);\n },\n // 五次方的缓动(t^5)\n\n /**\n * @param {number} k\n * @return {number}\n */\n quinticIn: function (k) {\n return k * k * k * k * k;\n },\n\n /**\n * @param {number} k\n * @return {number}\n */\n quinticOut: function (k) {\n return --k * k * k * k * k + 1;\n },\n\n /**\n * @param {number} k\n * @return {number}\n */\n quinticInOut: function (k) {\n if ((k *= 2) < 1) {\n return 0.5 * k * k * k * k * k;\n }\n\n return 0.5 * ((k -= 2) * k * k * k * k + 2);\n },\n // 正弦曲线的缓动(sin(t))\n\n /**\n * @param {number} k\n * @return {number}\n */\n sinusoidalIn: function (k) {\n return 1 - Math.cos(k * Math.PI / 2);\n },\n\n /**\n * @param {number} k\n * @return {number}\n */\n sinusoidalOut: function (k) {\n return Math.sin(k * Math.PI / 2);\n },\n\n /**\n * @param {number} k\n * @return {number}\n */\n sinusoidalInOut: function (k) {\n return 0.5 * (1 - Math.cos(Math.PI * k));\n },\n // 指数曲线的缓动(2^t)\n\n /**\n * @param {number} k\n * @return {number}\n */\n exponentialIn: function (k) {\n return k === 0 ? 0 : Math.pow(1024, k - 1);\n },\n\n /**\n * @param {number} k\n * @return {number}\n */\n exponentialOut: function (k) {\n return k === 1 ? 1 : 1 - Math.pow(2, -10 * k);\n },\n\n /**\n * @param {number} k\n * @return {number}\n */\n exponentialInOut: function (k) {\n if (k === 0) {\n return 0;\n }\n\n if (k === 1) {\n return 1;\n }\n\n if ((k *= 2) < 1) {\n return 0.5 * Math.pow(1024, k - 1);\n }\n\n return 0.5 * (-Math.pow(2, -10 * (k - 1)) + 2);\n },\n // 圆形曲线的缓动(sqrt(1-t^2))\n\n /**\n * @param {number} k\n * @return {number}\n */\n circularIn: function (k) {\n return 1 - Math.sqrt(1 - k * k);\n },\n\n /**\n * @param {number} k\n * @return {number}\n */\n circularOut: function (k) {\n return Math.sqrt(1 - --k * k);\n },\n\n /**\n * @param {number} k\n * @return {number}\n */\n circularInOut: function (k) {\n if ((k *= 2) < 1) {\n return -0.5 * (Math.sqrt(1 - k * k) - 1);\n }\n\n return 0.5 * (Math.sqrt(1 - (k -= 2) * k) + 1);\n },\n // 创建类似于弹簧在停止前来回振荡的动画\n\n /**\n * @param {number} k\n * @return {number}\n */\n elasticIn: function (k) {\n var s;\n var a = 0.1;\n var p = 0.4;\n\n if (k === 0) {\n return 0;\n }\n\n if (k === 1) {\n return 1;\n }\n\n if (!a || a < 1) {\n a = 1;\n s = p / 4;\n } else {\n s = p * Math.asin(1 / a) / (2 * Math.PI);\n }\n\n return -(a * Math.pow(2, 10 * (k -= 1)) * Math.sin((k - s) * (2 * Math.PI) / p));\n },\n\n /**\n * @param {number} k\n * @return {number}\n */\n elasticOut: function (k) {\n var s;\n var a = 0.1;\n var p = 0.4;\n\n if (k === 0) {\n return 0;\n }\n\n if (k === 1) {\n return 1;\n }\n\n if (!a || a < 1) {\n a = 1;\n s = p / 4;\n } else {\n s = p * Math.asin(1 / a) / (2 * Math.PI);\n }\n\n return a * Math.pow(2, -10 * k) * Math.sin((k - s) * (2 * Math.PI) / p) + 1;\n },\n\n /**\n * @param {number} k\n * @return {number}\n */\n elasticInOut: function (k) {\n var s;\n var a = 0.1;\n var p = 0.4;\n\n if (k === 0) {\n return 0;\n }\n\n if (k === 1) {\n return 1;\n }\n\n if (!a || a < 1) {\n a = 1;\n s = p / 4;\n } else {\n s = p * Math.asin(1 / a) / (2 * Math.PI);\n }\n\n if ((k *= 2) < 1) {\n return -0.5 * (a * Math.pow(2, 10 * (k -= 1)) * Math.sin((k - s) * (2 * Math.PI) / p));\n }\n\n return a * Math.pow(2, -10 * (k -= 1)) * Math.sin((k - s) * (2 * Math.PI) / p) * 0.5 + 1;\n },\n // 在某一动画开始沿指示的路径进行动画处理前稍稍收回该动画的移动\n\n /**\n * @param {number} k\n * @return {number}\n */\n backIn: function (k) {\n var s = 1.70158;\n return k * k * ((s + 1) * k - s);\n },\n\n /**\n * @param {number} k\n * @return {number}\n */\n backOut: function (k) {\n var s = 1.70158;\n return --k * k * ((s + 1) * k + s) + 1;\n },\n\n /**\n * @param {number} k\n * @return {number}\n */\n backInOut: function (k) {\n var s = 1.70158 * 1.525;\n\n if ((k *= 2) < 1) {\n return 0.5 * (k * k * ((s + 1) * k - s));\n }\n\n return 0.5 * ((k -= 2) * k * ((s + 1) * k + s) + 2);\n },\n // 创建弹跳效果\n\n /**\n * @param {number} k\n * @return {number}\n */\n bounceIn: function (k) {\n return 1 - easing.bounceOut(1 - k);\n },\n\n /**\n * @param {number} k\n * @return {number}\n */\n bounceOut: function (k) {\n if (k < 1 / 2.75) {\n return 7.5625 * k * k;\n } else if (k < 2 / 2.75) {\n return 7.5625 * (k -= 1.5 / 2.75) * k + 0.75;\n } else if (k < 2.5 / 2.75) {\n return 7.5625 * (k -= 2.25 / 2.75) * k + 0.9375;\n } else {\n return 7.5625 * (k -= 2.625 / 2.75) * k + 0.984375;\n }\n },\n\n /**\n * @param {number} k\n * @return {number}\n */\n bounceInOut: function (k) {\n if (k < 0.5) {\n return easing.bounceIn(k * 2) * 0.5;\n }\n\n return easing.bounceOut(k * 2 - 1) * 0.5 + 0.5;\n }\n};\nvar _default = easing;\nmodule.exports = _default;","var _config = require(\"./config\");\n\nvar devicePixelRatio = _config.devicePixelRatio;\n\nvar util = require(\"./core/util\");\n\nvar logError = require(\"./core/log\");\n\nvar BoundingRect = require(\"./core/BoundingRect\");\n\nvar timsort = require(\"./core/timsort\");\n\nvar Layer = require(\"./Layer\");\n\nvar requestAnimationFrame = require(\"./animation/requestAnimationFrame\");\n\nvar Image = require(\"./graphic/Image\");\n\nvar env = require(\"./core/env\");\n\nvar HOVER_LAYER_ZLEVEL = 1e5;\nvar CANVAS_ZLEVEL = 314159;\nvar EL_AFTER_INCREMENTAL_INC = 0.01;\nvar INCREMENTAL_INC = 0.001;\n\nfunction parseInt10(val) {\n return parseInt(val, 10);\n}\n\nfunction isLayerValid(layer) {\n if (!layer) {\n return false;\n }\n\n if (layer.__builtin__) {\n return true;\n }\n\n if (typeof layer.resize !== 'function' || typeof layer.refresh !== 'function') {\n return false;\n }\n\n return true;\n}\n\nvar tmpRect = new BoundingRect(0, 0, 0, 0);\nvar viewRect = new BoundingRect(0, 0, 0, 0);\n\nfunction isDisplayableCulled(el, width, height) {\n tmpRect.copy(el.getBoundingRect());\n\n if (el.transform) {\n tmpRect.applyTransform(el.transform);\n }\n\n viewRect.width = width;\n viewRect.height = height;\n return !tmpRect.intersect(viewRect);\n}\n\nfunction isClipPathChanged(clipPaths, prevClipPaths) {\n // displayable.__clipPaths can only be `null`/`undefined` or an non-empty array.\n if (clipPaths === prevClipPaths) {\n return false;\n }\n\n if (!clipPaths || !prevClipPaths || clipPaths.length !== prevClipPaths.length) {\n return true;\n }\n\n for (var i = 0; i < clipPaths.length; i++) {\n if (clipPaths[i] !== prevClipPaths[i]) {\n return true;\n }\n }\n\n return false;\n}\n\nfunction doClip(clipPaths, ctx) {\n for (var i = 0; i < clipPaths.length; i++) {\n var clipPath = clipPaths[i];\n clipPath.setTransform(ctx);\n ctx.beginPath();\n clipPath.buildPath(ctx, clipPath.shape);\n ctx.clip(); // Transform back\n\n clipPath.restoreTransform(ctx);\n }\n}\n\nfunction createRoot(width, height) {\n var domRoot = document.createElement('div'); // domRoot.onselectstart = returnFalse; // Avoid page selected\n\n domRoot.style.cssText = ['position:relative', // IOS13 safari probably has a compositing bug (z order of the canvas and the consequent\n // dom does not act as expected) when some of the parent dom has\n // `-webkit-overflow-scrolling: touch;` and the webpage is longer than one screen and\n // the canvas is not at the top part of the page.\n // Check `https://bugs.webkit.org/show_bug.cgi?id=203681` for more details. We remove\n // this `overflow:hidden` to avoid the bug.\n // 'overflow:hidden',\n 'width:' + width + 'px', 'height:' + height + 'px', 'padding:0', 'margin:0', 'border-width:0'].join(';') + ';';\n return domRoot;\n}\n/**\n * @alias module:zrender/Painter\n * @constructor\n * @param {HTMLElement} root 绘图容器\n * @param {module:zrender/Storage} storage\n * @param {Object} opts\n */\n\n\nvar Painter = function (root, storage, opts) {\n this.type = 'canvas'; // In node environment using node-canvas\n\n var singleCanvas = !root.nodeName // In node ?\n || root.nodeName.toUpperCase() === 'CANVAS';\n this._opts = opts = util.extend({}, opts || {});\n /**\n * @type {number}\n */\n\n this.dpr = opts.devicePixelRatio || devicePixelRatio;\n /**\n * @type {boolean}\n * @private\n */\n\n this._singleCanvas = singleCanvas;\n /**\n * 绘图容器\n * @type {HTMLElement}\n */\n\n this.root = root;\n var rootStyle = root.style;\n\n if (rootStyle) {\n rootStyle['-webkit-tap-highlight-color'] = 'transparent';\n rootStyle['-webkit-user-select'] = rootStyle['user-select'] = rootStyle['-webkit-touch-callout'] = 'none';\n root.innerHTML = '';\n }\n /**\n * @type {module:zrender/Storage}\n */\n\n\n this.storage = storage;\n /**\n * @type {Array.}\n * @private\n */\n\n var zlevelList = this._zlevelList = [];\n /**\n * @type {Object.}\n * @private\n */\n\n var layers = this._layers = {};\n /**\n * @type {Object.}\n * @private\n */\n\n this._layerConfig = {};\n /**\n * zrender will do compositing when root is a canvas and have multiple zlevels.\n */\n\n this._needsManuallyCompositing = false;\n\n if (!singleCanvas) {\n this._width = this._getSize(0);\n this._height = this._getSize(1);\n var domRoot = this._domRoot = createRoot(this._width, this._height);\n root.appendChild(domRoot);\n } else {\n var width = root.width;\n var height = root.height;\n\n if (opts.width != null) {\n width = opts.width;\n }\n\n if (opts.height != null) {\n height = opts.height;\n }\n\n this.dpr = opts.devicePixelRatio || 1; // Use canvas width and height directly\n\n root.width = width * this.dpr;\n root.height = height * this.dpr;\n this._width = width;\n this._height = height; // Create layer if only one given canvas\n // Device can be specified to create a high dpi image.\n\n var mainLayer = new Layer(root, this, this.dpr);\n mainLayer.__builtin__ = true;\n mainLayer.initContext(); // FIXME Use canvas width and height\n // mainLayer.resize(width, height);\n\n layers[CANVAS_ZLEVEL] = mainLayer;\n mainLayer.zlevel = CANVAS_ZLEVEL; // Not use common zlevel.\n\n zlevelList.push(CANVAS_ZLEVEL);\n this._domRoot = root;\n }\n /**\n * @type {module:zrender/Layer}\n * @private\n */\n\n\n this._hoverlayer = null;\n this._hoverElements = [];\n};\n\nPainter.prototype = {\n constructor: Painter,\n getType: function () {\n return 'canvas';\n },\n\n /**\n * If painter use a single canvas\n * @return {boolean}\n */\n isSingleCanvas: function () {\n return this._singleCanvas;\n },\n\n /**\n * @return {HTMLDivElement}\n */\n getViewportRoot: function () {\n return this._domRoot;\n },\n getViewportRootOffset: function () {\n var viewportRoot = this.getViewportRoot();\n\n if (viewportRoot) {\n return {\n offsetLeft: viewportRoot.offsetLeft || 0,\n offsetTop: viewportRoot.offsetTop || 0\n };\n }\n },\n\n /**\n * 刷新\n * @param {boolean} [paintAll=false] 强制绘制所有displayable\n */\n refresh: function (paintAll) {\n var list = this.storage.getDisplayList(true);\n var zlevelList = this._zlevelList;\n this._redrawId = Math.random();\n\n this._paintList(list, paintAll, this._redrawId); // Paint custum layers\n\n\n for (var i = 0; i < zlevelList.length; i++) {\n var z = zlevelList[i];\n var layer = this._layers[z];\n\n if (!layer.__builtin__ && layer.refresh) {\n var clearColor = i === 0 ? this._backgroundColor : null;\n layer.refresh(clearColor);\n }\n }\n\n this.refreshHover();\n return this;\n },\n addHover: function (el, hoverStyle) {\n if (el.__hoverMir) {\n return;\n }\n\n var elMirror = new el.constructor({\n style: el.style,\n shape: el.shape,\n z: el.z,\n z2: el.z2,\n silent: el.silent\n });\n elMirror.__from = el;\n el.__hoverMir = elMirror;\n hoverStyle && elMirror.setStyle(hoverStyle);\n\n this._hoverElements.push(elMirror);\n\n return elMirror;\n },\n removeHover: function (el) {\n var elMirror = el.__hoverMir;\n var hoverElements = this._hoverElements;\n var idx = util.indexOf(hoverElements, elMirror);\n\n if (idx >= 0) {\n hoverElements.splice(idx, 1);\n }\n\n el.__hoverMir = null;\n },\n clearHover: function (el) {\n var hoverElements = this._hoverElements;\n\n for (var i = 0; i < hoverElements.length; i++) {\n var from = hoverElements[i].__from;\n\n if (from) {\n from.__hoverMir = null;\n }\n }\n\n hoverElements.length = 0;\n },\n refreshHover: function () {\n var hoverElements = this._hoverElements;\n var len = hoverElements.length;\n var hoverLayer = this._hoverlayer;\n hoverLayer && hoverLayer.clear();\n\n if (!len) {\n return;\n }\n\n timsort(hoverElements, this.storage.displayableSortFunc); // Use a extream large zlevel\n // FIXME?\n\n if (!hoverLayer) {\n hoverLayer = this._hoverlayer = this.getLayer(HOVER_LAYER_ZLEVEL);\n }\n\n var scope = {};\n hoverLayer.ctx.save();\n\n for (var i = 0; i < len;) {\n var el = hoverElements[i];\n var originalEl = el.__from; // Original el is removed\n // PENDING\n\n if (!(originalEl && originalEl.__zr)) {\n hoverElements.splice(i, 1);\n originalEl.__hoverMir = null;\n len--;\n continue;\n }\n\n i++; // Use transform\n // FIXME style and shape ?\n\n if (!originalEl.invisible) {\n el.transform = originalEl.transform;\n el.invTransform = originalEl.invTransform;\n el.__clipPaths = originalEl.__clipPaths; // el.\n\n this._doPaintEl(el, hoverLayer, true, scope);\n }\n }\n\n hoverLayer.ctx.restore();\n },\n getHoverLayer: function () {\n return this.getLayer(HOVER_LAYER_ZLEVEL);\n },\n _paintList: function (list, paintAll, redrawId) {\n if (this._redrawId !== redrawId) {\n return;\n }\n\n paintAll = paintAll || false;\n\n this._updateLayerStatus(list);\n\n var finished = this._doPaintList(list, paintAll);\n\n if (this._needsManuallyCompositing) {\n this._compositeManually();\n }\n\n if (!finished) {\n var self = this;\n requestAnimationFrame(function () {\n self._paintList(list, paintAll, redrawId);\n });\n }\n },\n _compositeManually: function () {\n var ctx = this.getLayer(CANVAS_ZLEVEL).ctx;\n var width = this._domRoot.width;\n var height = this._domRoot.height;\n ctx.clearRect(0, 0, width, height); // PENDING, If only builtin layer?\n\n this.eachBuiltinLayer(function (layer) {\n if (layer.virtual) {\n ctx.drawImage(layer.dom, 0, 0, width, height);\n }\n });\n },\n _doPaintList: function (list, paintAll) {\n var layerList = [];\n\n for (var zi = 0; zi < this._zlevelList.length; zi++) {\n var zlevel = this._zlevelList[zi];\n var layer = this._layers[zlevel];\n\n if (layer.__builtin__ && layer !== this._hoverlayer && (layer.__dirty || paintAll)) {\n layerList.push(layer);\n }\n }\n\n var finished = true;\n\n for (var k = 0; k < layerList.length; k++) {\n var layer = layerList[k];\n var ctx = layer.ctx;\n var scope = {};\n ctx.save();\n var start = paintAll ? layer.__startIndex : layer.__drawIndex;\n var useTimer = !paintAll && layer.incremental && Date.now;\n var startTime = useTimer && Date.now();\n var clearColor = layer.zlevel === this._zlevelList[0] ? this._backgroundColor : null; // All elements in this layer are cleared.\n\n if (layer.__startIndex === layer.__endIndex) {\n layer.clear(false, clearColor);\n } else if (start === layer.__startIndex) {\n var firstEl = list[start];\n\n if (!firstEl.incremental || !firstEl.notClear || paintAll) {\n layer.clear(false, clearColor);\n }\n }\n\n if (start === -1) {\n console.error('For some unknown reason. drawIndex is -1');\n start = layer.__startIndex;\n }\n\n for (var i = start; i < layer.__endIndex; i++) {\n var el = list[i];\n\n this._doPaintEl(el, layer, paintAll, scope);\n\n el.__dirty = el.__dirtyText = false;\n\n if (useTimer) {\n // Date.now can be executed in 13,025,305 ops/second.\n var dTime = Date.now() - startTime; // Give 15 millisecond to draw.\n // The rest elements will be drawn in the next frame.\n\n if (dTime > 15) {\n break;\n }\n }\n }\n\n layer.__drawIndex = i;\n\n if (layer.__drawIndex < layer.__endIndex) {\n finished = false;\n }\n\n if (scope.prevElClipPaths) {\n // Needs restore the state. If last drawn element is in the clipping area.\n ctx.restore();\n }\n\n ctx.restore();\n }\n\n if (env.wxa) {\n // Flush for weixin application\n util.each(this._layers, function (layer) {\n if (layer && layer.ctx && layer.ctx.draw) {\n layer.ctx.draw();\n }\n });\n }\n\n return finished;\n },\n _doPaintEl: function (el, currentLayer, forcePaint, scope) {\n var ctx = currentLayer.ctx;\n var m = el.transform;\n\n if ((currentLayer.__dirty || forcePaint) && // Ignore invisible element\n !el.invisible // Ignore transparent element\n && el.style.opacity !== 0 // Ignore scale 0 element, in some environment like node-canvas\n // Draw a scale 0 element can cause all following draw wrong\n // And setTransform with scale 0 will cause set back transform failed.\n && !(m && !m[0] && !m[3]) // Ignore culled element\n && !(el.culling && isDisplayableCulled(el, this._width, this._height))) {\n var clipPaths = el.__clipPaths;\n var prevElClipPaths = scope.prevElClipPaths; // Optimize when clipping on group with several elements\n\n if (!prevElClipPaths || isClipPathChanged(clipPaths, prevElClipPaths)) {\n // If has previous clipping state, restore from it\n if (prevElClipPaths) {\n ctx.restore();\n scope.prevElClipPaths = null; // Reset prevEl since context has been restored\n\n scope.prevEl = null;\n } // New clipping state\n\n\n if (clipPaths) {\n ctx.save();\n doClip(clipPaths, ctx);\n scope.prevElClipPaths = clipPaths;\n }\n }\n\n el.beforeBrush && el.beforeBrush(ctx);\n el.brush(ctx, scope.prevEl || null);\n scope.prevEl = el;\n el.afterBrush && el.afterBrush(ctx);\n }\n },\n\n /**\n * 获取 zlevel 所在层,如果不存在则会创建一个新的层\n * @param {number} zlevel\n * @param {boolean} virtual Virtual layer will not be inserted into dom.\n * @return {module:zrender/Layer}\n */\n getLayer: function (zlevel, virtual) {\n if (this._singleCanvas && !this._needsManuallyCompositing) {\n zlevel = CANVAS_ZLEVEL;\n }\n\n var layer = this._layers[zlevel];\n\n if (!layer) {\n // Create a new layer\n layer = new Layer('zr_' + zlevel, this, this.dpr);\n layer.zlevel = zlevel;\n layer.__builtin__ = true;\n\n if (this._layerConfig[zlevel]) {\n util.merge(layer, this._layerConfig[zlevel], true);\n } // TODO Remove EL_AFTER_INCREMENTAL_INC magic number\n else if (this._layerConfig[zlevel - EL_AFTER_INCREMENTAL_INC]) {\n util.merge(layer, this._layerConfig[zlevel - EL_AFTER_INCREMENTAL_INC], true);\n }\n\n if (virtual) {\n layer.virtual = virtual;\n }\n\n this.insertLayer(zlevel, layer); // Context is created after dom inserted to document\n // Or excanvas will get 0px clientWidth and clientHeight\n\n layer.initContext();\n }\n\n return layer;\n },\n insertLayer: function (zlevel, layer) {\n var layersMap = this._layers;\n var zlevelList = this._zlevelList;\n var len = zlevelList.length;\n var prevLayer = null;\n var i = -1;\n var domRoot = this._domRoot;\n\n if (layersMap[zlevel]) {\n logError('ZLevel ' + zlevel + ' has been used already');\n return;\n } // Check if is a valid layer\n\n\n if (!isLayerValid(layer)) {\n logError('Layer of zlevel ' + zlevel + ' is not valid');\n return;\n }\n\n if (len > 0 && zlevel > zlevelList[0]) {\n for (i = 0; i < len - 1; i++) {\n if (zlevelList[i] < zlevel && zlevelList[i + 1] > zlevel) {\n break;\n }\n }\n\n prevLayer = layersMap[zlevelList[i]];\n }\n\n zlevelList.splice(i + 1, 0, zlevel);\n layersMap[zlevel] = layer; // Vitual layer will not directly show on the screen.\n // (It can be a WebGL layer and assigned to a ZImage element)\n // But it still under management of zrender.\n\n if (!layer.virtual) {\n if (prevLayer) {\n var prevDom = prevLayer.dom;\n\n if (prevDom.nextSibling) {\n domRoot.insertBefore(layer.dom, prevDom.nextSibling);\n } else {\n domRoot.appendChild(layer.dom);\n }\n } else {\n if (domRoot.firstChild) {\n domRoot.insertBefore(layer.dom, domRoot.firstChild);\n } else {\n domRoot.appendChild(layer.dom);\n }\n }\n }\n },\n // Iterate each layer\n eachLayer: function (cb, context) {\n var zlevelList = this._zlevelList;\n var z;\n var i;\n\n for (i = 0; i < zlevelList.length; i++) {\n z = zlevelList[i];\n cb.call(context, this._layers[z], z);\n }\n },\n // Iterate each buildin layer\n eachBuiltinLayer: function (cb, context) {\n var zlevelList = this._zlevelList;\n var layer;\n var z;\n var i;\n\n for (i = 0; i < zlevelList.length; i++) {\n z = zlevelList[i];\n layer = this._layers[z];\n\n if (layer.__builtin__) {\n cb.call(context, layer, z);\n }\n }\n },\n // Iterate each other layer except buildin layer\n eachOtherLayer: function (cb, context) {\n var zlevelList = this._zlevelList;\n var layer;\n var z;\n var i;\n\n for (i = 0; i < zlevelList.length; i++) {\n z = zlevelList[i];\n layer = this._layers[z];\n\n if (!layer.__builtin__) {\n cb.call(context, layer, z);\n }\n }\n },\n\n /**\n * 获取所有已创建的层\n * @param {Array.} [prevLayer]\n */\n getLayers: function () {\n return this._layers;\n },\n _updateLayerStatus: function (list) {\n this.eachBuiltinLayer(function (layer, z) {\n layer.__dirty = layer.__used = false;\n });\n\n function updatePrevLayer(idx) {\n if (prevLayer) {\n if (prevLayer.__endIndex !== idx) {\n prevLayer.__dirty = true;\n }\n\n prevLayer.__endIndex = idx;\n }\n }\n\n if (this._singleCanvas) {\n for (var i = 1; i < list.length; i++) {\n var el = list[i];\n\n if (el.zlevel !== list[i - 1].zlevel || el.incremental) {\n this._needsManuallyCompositing = true;\n break;\n }\n }\n }\n\n var prevLayer = null;\n var incrementalLayerCount = 0;\n var prevZlevel;\n\n for (var i = 0; i < list.length; i++) {\n var el = list[i];\n var zlevel = el.zlevel;\n var layer;\n\n if (prevZlevel !== zlevel) {\n prevZlevel = zlevel;\n incrementalLayerCount = 0;\n } // TODO Not use magic number on zlevel.\n // Each layer with increment element can be separated to 3 layers.\n // (Other Element drawn after incremental element)\n // -----------------zlevel + EL_AFTER_INCREMENTAL_INC--------------------\n // (Incremental element)\n // ----------------------zlevel + INCREMENTAL_INC------------------------\n // (Element drawn before incremental element)\n // --------------------------------zlevel--------------------------------\n\n\n if (el.incremental) {\n layer = this.getLayer(zlevel + INCREMENTAL_INC, this._needsManuallyCompositing);\n layer.incremental = true;\n incrementalLayerCount = 1;\n } else {\n layer = this.getLayer(zlevel + (incrementalLayerCount > 0 ? EL_AFTER_INCREMENTAL_INC : 0), this._needsManuallyCompositing);\n }\n\n if (!layer.__builtin__) {\n logError('ZLevel ' + zlevel + ' has been used by unkown layer ' + layer.id);\n }\n\n if (layer !== prevLayer) {\n layer.__used = true;\n\n if (layer.__startIndex !== i) {\n layer.__dirty = true;\n }\n\n layer.__startIndex = i;\n\n if (!layer.incremental) {\n layer.__drawIndex = i;\n } else {\n // Mark layer draw index needs to update.\n layer.__drawIndex = -1;\n }\n\n updatePrevLayer(i);\n prevLayer = layer;\n }\n\n if (el.__dirty) {\n layer.__dirty = true;\n\n if (layer.incremental && layer.__drawIndex < 0) {\n // Start draw from the first dirty element.\n layer.__drawIndex = i;\n }\n }\n }\n\n updatePrevLayer(i);\n this.eachBuiltinLayer(function (layer, z) {\n // Used in last frame but not in this frame. Needs clear\n if (!layer.__used && layer.getElementCount() > 0) {\n layer.__dirty = true;\n layer.__startIndex = layer.__endIndex = layer.__drawIndex = 0;\n } // For incremental layer. In case start index changed and no elements are dirty.\n\n\n if (layer.__dirty && layer.__drawIndex < 0) {\n layer.__drawIndex = layer.__startIndex;\n }\n });\n },\n\n /**\n * 清除hover层外所有内容\n */\n clear: function () {\n this.eachBuiltinLayer(this._clearLayer);\n return this;\n },\n _clearLayer: function (layer) {\n layer.clear();\n },\n setBackgroundColor: function (backgroundColor) {\n this._backgroundColor = backgroundColor;\n },\n\n /**\n * 修改指定zlevel的绘制参数\n *\n * @param {string} zlevel\n * @param {Object} config 配置对象\n * @param {string} [config.clearColor=0] 每次清空画布的颜色\n * @param {string} [config.motionBlur=false] 是否开启动态模糊\n * @param {number} [config.lastFrameAlpha=0.7]\n * 在开启动态模糊的时候使用,与上一帧混合的alpha值,值越大尾迹越明显\n */\n configLayer: function (zlevel, config) {\n if (config) {\n var layerConfig = this._layerConfig;\n\n if (!layerConfig[zlevel]) {\n layerConfig[zlevel] = config;\n } else {\n util.merge(layerConfig[zlevel], config, true);\n }\n\n for (var i = 0; i < this._zlevelList.length; i++) {\n var _zlevel = this._zlevelList[i]; // TODO Remove EL_AFTER_INCREMENTAL_INC magic number\n\n if (_zlevel === zlevel || _zlevel === zlevel + EL_AFTER_INCREMENTAL_INC) {\n var layer = this._layers[_zlevel];\n util.merge(layer, layerConfig[zlevel], true);\n }\n }\n }\n },\n\n /**\n * 删除指定层\n * @param {number} zlevel 层所在的zlevel\n */\n delLayer: function (zlevel) {\n var layers = this._layers;\n var zlevelList = this._zlevelList;\n var layer = layers[zlevel];\n\n if (!layer) {\n return;\n }\n\n layer.dom.parentNode.removeChild(layer.dom);\n delete layers[zlevel];\n zlevelList.splice(util.indexOf(zlevelList, zlevel), 1);\n },\n\n /**\n * 区域大小变化后重绘\n */\n resize: function (width, height) {\n if (!this._domRoot.style) {\n // Maybe in node or worker\n if (width == null || height == null) {\n return;\n }\n\n this._width = width;\n this._height = height;\n this.getLayer(CANVAS_ZLEVEL).resize(width, height);\n } else {\n var domRoot = this._domRoot; // FIXME Why ?\n\n domRoot.style.display = 'none'; // Save input w/h\n\n var opts = this._opts;\n width != null && (opts.width = width);\n height != null && (opts.height = height);\n width = this._getSize(0);\n height = this._getSize(1);\n domRoot.style.display = ''; // 优化没有实际改变的resize\n\n if (this._width !== width || height !== this._height) {\n domRoot.style.width = width + 'px';\n domRoot.style.height = height + 'px';\n\n for (var id in this._layers) {\n if (this._layers.hasOwnProperty(id)) {\n this._layers[id].resize(width, height);\n }\n }\n\n util.each(this._progressiveLayers, function (layer) {\n layer.resize(width, height);\n });\n this.refresh(true);\n }\n\n this._width = width;\n this._height = height;\n }\n\n return this;\n },\n\n /**\n * 清除单独的一个层\n * @param {number} zlevel\n */\n clearLayer: function (zlevel) {\n var layer = this._layers[zlevel];\n\n if (layer) {\n layer.clear();\n }\n },\n\n /**\n * 释放\n */\n dispose: function () {\n this.root.innerHTML = '';\n this.root = this.storage = this._domRoot = this._layers = null;\n },\n\n /**\n * Get canvas which has all thing rendered\n * @param {Object} opts\n * @param {string} [opts.backgroundColor]\n * @param {number} [opts.pixelRatio]\n */\n getRenderedCanvas: function (opts) {\n opts = opts || {};\n\n if (this._singleCanvas && !this._compositeManually) {\n return this._layers[CANVAS_ZLEVEL].dom;\n }\n\n var imageLayer = new Layer('image', this, opts.pixelRatio || this.dpr);\n imageLayer.initContext();\n imageLayer.clear(false, opts.backgroundColor || this._backgroundColor);\n\n if (opts.pixelRatio <= this.dpr) {\n this.refresh();\n var width = imageLayer.dom.width;\n var height = imageLayer.dom.height;\n var ctx = imageLayer.ctx;\n this.eachLayer(function (layer) {\n if (layer.__builtin__) {\n ctx.drawImage(layer.dom, 0, 0, width, height);\n } else if (layer.renderToCanvas) {\n imageLayer.ctx.save();\n layer.renderToCanvas(imageLayer.ctx);\n imageLayer.ctx.restore();\n }\n });\n } else {\n // PENDING, echarts-gl and incremental rendering.\n var scope = {};\n var displayList = this.storage.getDisplayList(true);\n\n for (var i = 0; i < displayList.length; i++) {\n var el = displayList[i];\n\n this._doPaintEl(el, imageLayer, true, scope);\n }\n }\n\n return imageLayer.dom;\n },\n\n /**\n * 获取绘图区域宽度\n */\n getWidth: function () {\n return this._width;\n },\n\n /**\n * 获取绘图区域高度\n */\n getHeight: function () {\n return this._height;\n },\n _getSize: function (whIdx) {\n var opts = this._opts;\n var wh = ['width', 'height'][whIdx];\n var cwh = ['clientWidth', 'clientHeight'][whIdx];\n var plt = ['paddingLeft', 'paddingTop'][whIdx];\n var prb = ['paddingRight', 'paddingBottom'][whIdx];\n\n if (opts[wh] != null && opts[wh] !== 'auto') {\n return parseFloat(opts[wh]);\n }\n\n var root = this.root; // IE8 does not support getComputedStyle, but it use VML.\n\n var stl = document.defaultView.getComputedStyle(root);\n return (root[cwh] || parseInt10(stl[wh]) || parseInt10(root.style[wh])) - (parseInt10(stl[plt]) || 0) - (parseInt10(stl[prb]) || 0) | 0;\n },\n pathToImage: function (path, dpr) {\n dpr = dpr || this.dpr;\n var canvas = document.createElement('canvas');\n var ctx = canvas.getContext('2d');\n var rect = path.getBoundingRect();\n var style = path.style;\n var shadowBlurSize = style.shadowBlur * dpr;\n var shadowOffsetX = style.shadowOffsetX * dpr;\n var shadowOffsetY = style.shadowOffsetY * dpr;\n var lineWidth = style.hasStroke() ? style.lineWidth : 0;\n var leftMargin = Math.max(lineWidth / 2, -shadowOffsetX + shadowBlurSize);\n var rightMargin = Math.max(lineWidth / 2, shadowOffsetX + shadowBlurSize);\n var topMargin = Math.max(lineWidth / 2, -shadowOffsetY + shadowBlurSize);\n var bottomMargin = Math.max(lineWidth / 2, shadowOffsetY + shadowBlurSize);\n var width = rect.width + leftMargin + rightMargin;\n var height = rect.height + topMargin + bottomMargin;\n canvas.width = width * dpr;\n canvas.height = height * dpr;\n ctx.scale(dpr, dpr);\n ctx.clearRect(0, 0, width, height);\n ctx.dpr = dpr;\n var pathTransform = {\n position: path.position,\n rotation: path.rotation,\n scale: path.scale\n };\n path.position = [leftMargin - rect.x, topMargin - rect.y];\n path.rotation = 0;\n path.scale = [1, 1];\n path.updateTransform();\n\n if (path) {\n path.brush(ctx);\n }\n\n var ImageShape = Image;\n var imgShape = new ImageShape({\n style: {\n x: 0,\n y: 0,\n image: canvas\n }\n });\n\n if (pathTransform.position != null) {\n imgShape.position = path.position = pathTransform.position;\n }\n\n if (pathTransform.rotation != null) {\n imgShape.rotation = path.rotation = pathTransform.rotation;\n }\n\n if (pathTransform.scale != null) {\n imgShape.scale = path.scale = pathTransform.scale;\n }\n\n return imgShape;\n }\n};\nvar _default = Painter;\nmodule.exports = _default;","var util = require(\"./core/util\");\n\nvar _config = require(\"./config\");\n\nvar devicePixelRatio = _config.devicePixelRatio;\n\nvar Style = require(\"./graphic/Style\");\n\nvar Pattern = require(\"./graphic/Pattern\");\n\n/**\n * @module zrender/Layer\n * @author pissang(https://www.github.com/pissang)\n */\nfunction returnFalse() {\n return false;\n}\n/**\n * 创建dom\n *\n * @inner\n * @param {string} id dom id 待用\n * @param {Painter} painter painter instance\n * @param {number} number\n */\n\n\nfunction createDom(id, painter, dpr) {\n var newDom = util.createCanvas();\n var width = painter.getWidth();\n var height = painter.getHeight();\n var newDomStyle = newDom.style;\n\n if (newDomStyle) {\n // In node or some other non-browser environment\n newDomStyle.position = 'absolute';\n newDomStyle.left = 0;\n newDomStyle.top = 0;\n newDomStyle.width = width + 'px';\n newDomStyle.height = height + 'px';\n newDom.setAttribute('data-zr-dom-id', id);\n }\n\n newDom.width = width * dpr;\n newDom.height = height * dpr;\n return newDom;\n}\n/**\n * @alias module:zrender/Layer\n * @constructor\n * @extends module:zrender/mixin/Transformable\n * @param {string} id\n * @param {module:zrender/Painter} painter\n * @param {number} [dpr]\n */\n\n\nvar Layer = function (id, painter, dpr) {\n var dom;\n dpr = dpr || devicePixelRatio;\n\n if (typeof id === 'string') {\n dom = createDom(id, painter, dpr);\n } // Not using isDom because in node it will return false\n else if (util.isObject(id)) {\n dom = id;\n id = dom.id;\n }\n\n this.id = id;\n this.dom = dom;\n var domStyle = dom.style;\n\n if (domStyle) {\n // Not in node\n dom.onselectstart = returnFalse; // 避免页面选中的尴尬\n\n domStyle['-webkit-user-select'] = 'none';\n domStyle['user-select'] = 'none';\n domStyle['-webkit-touch-callout'] = 'none';\n domStyle['-webkit-tap-highlight-color'] = 'rgba(0,0,0,0)';\n domStyle['padding'] = 0; // eslint-disable-line dot-notation\n\n domStyle['margin'] = 0; // eslint-disable-line dot-notation\n\n domStyle['border-width'] = 0;\n }\n\n this.domBack = null;\n this.ctxBack = null;\n this.painter = painter;\n this.config = null; // Configs\n\n /**\n * 每次清空画布的颜色\n * @type {string}\n * @default 0\n */\n\n this.clearColor = 0;\n /**\n * 是否开启动态模糊\n * @type {boolean}\n * @default false\n */\n\n this.motionBlur = false;\n /**\n * 在开启动态模糊的时候使用,与上一帧混合的alpha值,值越大尾迹越明显\n * @type {number}\n * @default 0.7\n */\n\n this.lastFrameAlpha = 0.7;\n /**\n * Layer dpr\n * @type {number}\n */\n\n this.dpr = dpr;\n};\n\nLayer.prototype = {\n constructor: Layer,\n __dirty: true,\n __used: false,\n __drawIndex: 0,\n __startIndex: 0,\n __endIndex: 0,\n incremental: false,\n getElementCount: function () {\n return this.__endIndex - this.__startIndex;\n },\n initContext: function () {\n this.ctx = this.dom.getContext('2d');\n this.ctx.dpr = this.dpr;\n },\n createBackBuffer: function () {\n var dpr = this.dpr;\n this.domBack = createDom('back-' + this.id, this.painter, dpr);\n this.ctxBack = this.domBack.getContext('2d');\n\n if (dpr !== 1) {\n this.ctxBack.scale(dpr, dpr);\n }\n },\n\n /**\n * @param {number} width\n * @param {number} height\n */\n resize: function (width, height) {\n var dpr = this.dpr;\n var dom = this.dom;\n var domStyle = dom.style;\n var domBack = this.domBack;\n\n if (domStyle) {\n domStyle.width = width + 'px';\n domStyle.height = height + 'px';\n }\n\n dom.width = width * dpr;\n dom.height = height * dpr;\n\n if (domBack) {\n domBack.width = width * dpr;\n domBack.height = height * dpr;\n\n if (dpr !== 1) {\n this.ctxBack.scale(dpr, dpr);\n }\n }\n },\n\n /**\n * 清空该层画布\n * @param {boolean} [clearAll]=false Clear all with out motion blur\n * @param {Color} [clearColor]\n */\n clear: function (clearAll, clearColor) {\n var dom = this.dom;\n var ctx = this.ctx;\n var width = dom.width;\n var height = dom.height;\n var clearColor = clearColor || this.clearColor;\n var haveMotionBLur = this.motionBlur && !clearAll;\n var lastFrameAlpha = this.lastFrameAlpha;\n var dpr = this.dpr;\n\n if (haveMotionBLur) {\n if (!this.domBack) {\n this.createBackBuffer();\n }\n\n this.ctxBack.globalCompositeOperation = 'copy';\n this.ctxBack.drawImage(dom, 0, 0, width / dpr, height / dpr);\n }\n\n ctx.clearRect(0, 0, width, height);\n\n if (clearColor && clearColor !== 'transparent') {\n var clearColorGradientOrPattern; // Gradient\n\n if (clearColor.colorStops) {\n // Cache canvas gradient\n clearColorGradientOrPattern = clearColor.__canvasGradient || Style.getGradient(ctx, clearColor, {\n x: 0,\n y: 0,\n width: width,\n height: height\n });\n clearColor.__canvasGradient = clearColorGradientOrPattern;\n } // Pattern\n else if (clearColor.image) {\n clearColorGradientOrPattern = Pattern.prototype.getCanvasPattern.call(clearColor, ctx);\n }\n\n ctx.save();\n ctx.fillStyle = clearColorGradientOrPattern || clearColor;\n ctx.fillRect(0, 0, width, height);\n ctx.restore();\n }\n\n if (haveMotionBLur) {\n var domBack = this.domBack;\n ctx.save();\n ctx.globalAlpha = lastFrameAlpha;\n ctx.drawImage(domBack, 0, 0, width, height);\n ctx.restore();\n }\n }\n};\nvar _default = Layer;\nmodule.exports = _default;","var util = require(\"../core/util\");\n\nvar _event = require(\"../core/event\");\n\nvar Dispatcher = _event.Dispatcher;\n\nvar requestAnimationFrame = require(\"./requestAnimationFrame\");\n\nvar Animator = require(\"./Animator\");\n\n/**\n * Animation main class, dispatch and manage all animation controllers\n *\n * @module zrender/animation/Animation\n * @author pissang(https://github.com/pissang)\n */\n// TODO Additive animation\n// http://iosoteric.com/additive-animations-animatewithduration-in-ios-8/\n// https://developer.apple.com/videos/wwdc2014/#236\n\n/**\n * @typedef {Object} IZRenderStage\n * @property {Function} update\n */\n\n/**\n * @alias module:zrender/animation/Animation\n * @constructor\n * @param {Object} [options]\n * @param {Function} [options.onframe]\n * @param {IZRenderStage} [options.stage]\n * @example\n * var animation = new Animation();\n * var obj = {\n * x: 100,\n * y: 100\n * };\n * animation.animate(node.position)\n * .when(1000, {\n * x: 500,\n * y: 500\n * })\n * .when(2000, {\n * x: 100,\n * y: 100\n * })\n * .start('spline');\n */\nvar Animation = function (options) {\n options = options || {};\n this.stage = options.stage || {};\n\n this.onframe = options.onframe || function () {}; // private properties\n\n\n this._clips = [];\n this._running = false;\n this._time;\n this._pausedTime;\n this._pauseStart;\n this._paused = false;\n Dispatcher.call(this);\n};\n\nAnimation.prototype = {\n constructor: Animation,\n\n /**\n * Add clip\n * @param {module:zrender/animation/Clip} clip\n */\n addClip: function (clip) {\n this._clips.push(clip);\n },\n\n /**\n * Add animator\n * @param {module:zrender/animation/Animator} animator\n */\n addAnimator: function (animator) {\n animator.animation = this;\n var clips = animator.getClips();\n\n for (var i = 0; i < clips.length; i++) {\n this.addClip(clips[i]);\n }\n },\n\n /**\n * Delete animation clip\n * @param {module:zrender/animation/Clip} clip\n */\n removeClip: function (clip) {\n var idx = util.indexOf(this._clips, clip);\n\n if (idx >= 0) {\n this._clips.splice(idx, 1);\n }\n },\n\n /**\n * Delete animation clip\n * @param {module:zrender/animation/Animator} animator\n */\n removeAnimator: function (animator) {\n var clips = animator.getClips();\n\n for (var i = 0; i < clips.length; i++) {\n this.removeClip(clips[i]);\n }\n\n animator.animation = null;\n },\n _update: function () {\n var time = new Date().getTime() - this._pausedTime;\n\n var delta = time - this._time;\n var clips = this._clips;\n var len = clips.length;\n var deferredEvents = [];\n var deferredClips = [];\n\n for (var i = 0; i < len; i++) {\n var clip = clips[i];\n var e = clip.step(time, delta); // Throw out the events need to be called after\n // stage.update, like destroy\n\n if (e) {\n deferredEvents.push(e);\n deferredClips.push(clip);\n }\n } // Remove the finished clip\n\n\n for (var i = 0; i < len;) {\n if (clips[i]._needsRemove) {\n clips[i] = clips[len - 1];\n clips.pop();\n len--;\n } else {\n i++;\n }\n }\n\n len = deferredEvents.length;\n\n for (var i = 0; i < len; i++) {\n deferredClips[i].fire(deferredEvents[i]);\n }\n\n this._time = time;\n this.onframe(delta); // 'frame' should be triggered before stage, because upper application\n // depends on the sequence (e.g., echarts-stream and finish\n // event judge)\n\n this.trigger('frame', delta);\n\n if (this.stage.update) {\n this.stage.update();\n }\n },\n _startLoop: function () {\n var self = this;\n this._running = true;\n\n function step() {\n if (self._running) {\n requestAnimationFrame(step);\n !self._paused && self._update();\n }\n }\n\n requestAnimationFrame(step);\n },\n\n /**\n * Start animation.\n */\n start: function () {\n this._time = new Date().getTime();\n this._pausedTime = 0;\n\n this._startLoop();\n },\n\n /**\n * Stop animation.\n */\n stop: function () {\n this._running = false;\n },\n\n /**\n * Pause animation.\n */\n pause: function () {\n if (!this._paused) {\n this._pauseStart = new Date().getTime();\n this._paused = true;\n }\n },\n\n /**\n * Resume animation.\n */\n resume: function () {\n if (this._paused) {\n this._pausedTime += new Date().getTime() - this._pauseStart;\n this._paused = false;\n }\n },\n\n /**\n * Clear animation.\n */\n clear: function () {\n this._clips = [];\n },\n\n /**\n * Whether animation finished.\n */\n isFinished: function () {\n return !this._clips.length;\n },\n\n /**\n * Creat animator for a target, whose props can be animated.\n *\n * @param {Object} target\n * @param {Object} options\n * @param {boolean} [options.loop=false] Whether loop animation.\n * @param {Function} [options.getter=null] Get value from target.\n * @param {Function} [options.setter=null] Set value to target.\n * @return {module:zrender/animation/Animation~Animator}\n */\n // TODO Gap\n animate: function (target, options) {\n options = options || {};\n var animator = new Animator(target, options.loop, options.getter, options.setter);\n this.addAnimator(animator);\n return animator;\n }\n};\nutil.mixin(Animation, Dispatcher);\nvar _default = Animation;\nmodule.exports = _default;","var _event = require(\"../core/event\");\n\nvar addEventListener = _event.addEventListener;\nvar removeEventListener = _event.removeEventListener;\nvar normalizeEvent = _event.normalizeEvent;\nvar getNativeEvent = _event.getNativeEvent;\n\nvar zrUtil = require(\"../core/util\");\n\nvar Eventful = require(\"../mixin/Eventful\");\n\nvar env = require(\"../core/env\");\n\n/* global document */\nvar TOUCH_CLICK_DELAY = 300;\nvar globalEventSupported = env.domSupported;\n\nvar localNativeListenerNames = function () {\n var mouseHandlerNames = ['click', 'dblclick', 'mousewheel', 'mouseout', 'mouseup', 'mousedown', 'mousemove', 'contextmenu'];\n var touchHandlerNames = ['touchstart', 'touchend', 'touchmove'];\n var pointerEventNameMap = {\n pointerdown: 1,\n pointerup: 1,\n pointermove: 1,\n pointerout: 1\n };\n var pointerHandlerNames = zrUtil.map(mouseHandlerNames, function (name) {\n var nm = name.replace('mouse', 'pointer');\n return pointerEventNameMap.hasOwnProperty(nm) ? nm : name;\n });\n return {\n mouse: mouseHandlerNames,\n touch: touchHandlerNames,\n pointer: pointerHandlerNames\n };\n}();\n\nvar globalNativeListenerNames = {\n mouse: ['mousemove', 'mouseup'],\n pointer: ['pointermove', 'pointerup']\n};\n\nfunction eventNameFix(name) {\n return name === 'mousewheel' && env.browser.firefox ? 'DOMMouseScroll' : name;\n}\n\nfunction isPointerFromTouch(event) {\n var pointerType = event.pointerType;\n return pointerType === 'pen' || pointerType === 'touch';\n} // function useMSGuesture(handlerProxy, event) {\n// return isPointerFromTouch(event) && !!handlerProxy._msGesture;\n// }\n// function onMSGestureChange(proxy, event) {\n// if (event.translationX || event.translationY) {\n// // mousemove is carried by MSGesture to reduce the sensitivity.\n// proxy.handler.dispatchToElement(event.target, 'mousemove', event);\n// }\n// if (event.scale !== 1) {\n// event.pinchX = event.offsetX;\n// event.pinchY = event.offsetY;\n// event.pinchScale = event.scale;\n// proxy.handler.dispatchToElement(event.target, 'pinch', event);\n// }\n// }\n\n/**\n * Prevent mouse event from being dispatched after Touch Events action\n * @see \n * 1. Mobile browsers dispatch mouse events 300ms after touchend.\n * 2. Chrome for Android dispatch mousedown for long-touch about 650ms\n * Result: Blocking Mouse Events for 700ms.\n *\n * @param {DOMHandlerScope} scope\n */\n\n\nfunction setTouchTimer(scope) {\n scope.touching = true;\n\n if (scope.touchTimer != null) {\n clearTimeout(scope.touchTimer);\n scope.touchTimer = null;\n }\n\n scope.touchTimer = setTimeout(function () {\n scope.touching = false;\n scope.touchTimer = null;\n }, 700);\n} // Mark touch, which is useful in distinguish touch and\n// mouse event in upper applicatoin.\n\n\nfunction markTouch(event) {\n event && (event.zrByTouch = true);\n} // function markTriggeredFromLocal(event) {\n// event && (event.__zrIsFromLocal = true);\n// }\n// function isTriggeredFromLocal(instance, event) {\n// return !!(event && event.__zrIsFromLocal);\n// }\n\n\nfunction normalizeGlobalEvent(instance, event) {\n // offsetX, offsetY still need to be calculated. They are necessary in the event\n // handlers of the upper applications. Set `true` to force calculate them.\n return normalizeEvent(instance.dom, new FakeGlobalEvent(instance, event), true);\n}\n/**\n * Detect whether the given el is in `painterRoot`.\n */\n\n\nfunction isLocalEl(instance, el) {\n var elTmp = el;\n var isLocal = false;\n\n while (elTmp && elTmp.nodeType !== 9 && !(isLocal = elTmp.domBelongToZr || elTmp !== el && elTmp === instance.painterRoot)) {\n elTmp = elTmp.parentNode;\n }\n\n return isLocal;\n}\n/**\n * Make a fake event but not change the original event,\n * becuase the global event probably be used by other\n * listeners not belonging to zrender.\n * @class\n */\n\n\nfunction FakeGlobalEvent(instance, event) {\n this.type = event.type;\n this.target = this.currentTarget = instance.dom;\n this.pointerType = event.pointerType; // Necessray for the force calculation of zrX, zrY\n\n this.clientX = event.clientX;\n this.clientY = event.clientY; // Because we do not mount global listeners to touch events,\n // we do not copy `targetTouches` and `changedTouches` here.\n}\n\nvar fakeGlobalEventProto = FakeGlobalEvent.prototype; // we make the default methods on the event do nothing,\n// otherwise it is dangerous. See more details in\n// [Drag outside] in `Handler.js`.\n\nfakeGlobalEventProto.stopPropagation = fakeGlobalEventProto.stopImmediatePropagation = fakeGlobalEventProto.preventDefault = zrUtil.noop;\n/**\n * Local DOM Handlers\n * @this {HandlerProxy}\n */\n\nvar localDOMHandlers = {\n mousedown: function (event) {\n event = normalizeEvent(this.dom, event);\n this._mayPointerCapture = [event.zrX, event.zrY];\n this.trigger('mousedown', event);\n },\n mousemove: function (event) {\n event = normalizeEvent(this.dom, event);\n var downPoint = this._mayPointerCapture;\n\n if (downPoint && (event.zrX !== downPoint[0] || event.zrY !== downPoint[1])) {\n togglePointerCapture(this, true);\n }\n\n this.trigger('mousemove', event);\n },\n mouseup: function (event) {\n event = normalizeEvent(this.dom, event);\n togglePointerCapture(this, false);\n this.trigger('mouseup', event);\n },\n mouseout: function (event) {\n event = normalizeEvent(this.dom, event); // Similarly to the browser did on `document` and touch event,\n // `globalout` will be delayed to final pointer cature release.\n\n if (this._pointerCapturing) {\n event.zrEventControl = 'no_globalout';\n } // There might be some doms created by upper layer application\n // at the same level of painter.getViewportRoot() (e.g., tooltip\n // dom created by echarts), where 'globalout' event should not\n // be triggered when mouse enters these doms. (But 'mouseout'\n // should be triggered at the original hovered element as usual).\n\n\n var element = event.toElement || event.relatedTarget;\n event.zrIsToLocalDOM = isLocalEl(this, element);\n this.trigger('mouseout', event);\n },\n touchstart: function (event) {\n // Default mouse behaviour should not be disabled here.\n // For example, page may needs to be slided.\n event = normalizeEvent(this.dom, event);\n markTouch(event);\n this._lastTouchMoment = new Date();\n this.handler.processGesture(event, 'start'); // For consistent event listener for both touch device and mouse device,\n // we simulate \"mouseover-->mousedown\" in touch device. So we trigger\n // `mousemove` here (to trigger `mouseover` inside), and then trigger\n // `mousedown`.\n\n localDOMHandlers.mousemove.call(this, event);\n localDOMHandlers.mousedown.call(this, event);\n },\n touchmove: function (event) {\n event = normalizeEvent(this.dom, event);\n markTouch(event);\n this.handler.processGesture(event, 'change'); // Mouse move should always be triggered no matter whether\n // there is gestrue event, because mouse move and pinch may\n // be used at the same time.\n\n localDOMHandlers.mousemove.call(this, event);\n },\n touchend: function (event) {\n event = normalizeEvent(this.dom, event);\n markTouch(event);\n this.handler.processGesture(event, 'end');\n localDOMHandlers.mouseup.call(this, event); // Do not trigger `mouseout` here, in spite of `mousemove`(`mouseover`) is\n // triggered in `touchstart`. This seems to be illogical, but by this mechanism,\n // we can conveniently implement \"hover style\" in both PC and touch device just\n // by listening to `mouseover` to add \"hover style\" and listening to `mouseout`\n // to remove \"hover style\" on an element, without any additional code for\n // compatibility. (`mouseout` will not be triggered in `touchend`, so \"hover\n // style\" will remain for user view)\n // click event should always be triggered no matter whether\n // there is gestrue event. System click can not be prevented.\n\n if (+new Date() - this._lastTouchMoment < TOUCH_CLICK_DELAY) {\n localDOMHandlers.click.call(this, event);\n }\n },\n pointerdown: function (event) {\n localDOMHandlers.mousedown.call(this, event); // if (useMSGuesture(this, event)) {\n // this._msGesture.addPointer(event.pointerId);\n // }\n },\n pointermove: function (event) {\n // FIXME\n // pointermove is so sensitive that it always triggered when\n // tap(click) on touch screen, which affect some judgement in\n // upper application. So, we dont support mousemove on MS touch\n // device yet.\n if (!isPointerFromTouch(event)) {\n localDOMHandlers.mousemove.call(this, event);\n }\n },\n pointerup: function (event) {\n localDOMHandlers.mouseup.call(this, event);\n },\n pointerout: function (event) {\n // pointerout will be triggered when tap on touch screen\n // (IE11+/Edge on MS Surface) after click event triggered,\n // which is inconsistent with the mousout behavior we defined\n // in touchend. So we unify them.\n // (check localDOMHandlers.touchend for detailed explanation)\n if (!isPointerFromTouch(event)) {\n localDOMHandlers.mouseout.call(this, event);\n }\n }\n};\n/**\n * Othere DOM UI Event handlers for zr dom.\n * @this {HandlerProxy}\n */\n\nzrUtil.each(['click', 'mousewheel', 'dblclick', 'contextmenu'], function (name) {\n localDOMHandlers[name] = function (event) {\n event = normalizeEvent(this.dom, event);\n this.trigger(name, event);\n };\n});\n/**\n * DOM UI Event handlers for global page.\n *\n * [Caution]:\n * those handlers should both support in capture phase and bubble phase!\n *\n * @this {HandlerProxy}\n */\n\nvar globalDOMHandlers = {\n pointermove: function (event) {\n // FIXME\n // pointermove is so sensitive that it always triggered when\n // tap(click) on touch screen, which affect some judgement in\n // upper application. So, we dont support mousemove on MS touch\n // device yet.\n if (!isPointerFromTouch(event)) {\n globalDOMHandlers.mousemove.call(this, event);\n }\n },\n pointerup: function (event) {\n globalDOMHandlers.mouseup.call(this, event);\n },\n mousemove: function (event) {\n this.trigger('mousemove', event);\n },\n mouseup: function (event) {\n var pointerCaptureReleasing = this._pointerCapturing;\n togglePointerCapture(this, false);\n this.trigger('mouseup', event);\n\n if (pointerCaptureReleasing) {\n event.zrEventControl = 'only_globalout';\n this.trigger('mouseout', event);\n }\n }\n};\n/**\n * @param {HandlerProxy} instance\n * @param {DOMHandlerScope} scope\n */\n\nfunction mountLocalDOMEventListeners(instance, scope) {\n var domHandlers = scope.domHandlers;\n\n if (env.pointerEventsSupported) {\n // Only IE11+/Edge\n // 1. On devices that both enable touch and mouse (e.g., MS Surface and lenovo X240),\n // IE11+/Edge do not trigger touch event, but trigger pointer event and mouse event\n // at the same time.\n // 2. On MS Surface, it probablely only trigger mousedown but no mouseup when tap on\n // screen, which do not occurs in pointer event.\n // So we use pointer event to both detect touch gesture and mouse behavior.\n zrUtil.each(localNativeListenerNames.pointer, function (nativeEventName) {\n mountSingleDOMEventListener(scope, nativeEventName, function (event) {\n // markTriggeredFromLocal(event);\n domHandlers[nativeEventName].call(instance, event);\n });\n }); // FIXME\n // Note: MS Gesture require CSS touch-action set. But touch-action is not reliable,\n // which does not prevent defuault behavior occasionally (which may cause view port\n // zoomed in but use can not zoom it back). And event.preventDefault() does not work.\n // So we have to not to use MSGesture and not to support touchmove and pinch on MS\n // touch screen. And we only support click behavior on MS touch screen now.\n // MS Gesture Event is only supported on IE11+/Edge and on Windows 8+.\n // We dont support touch on IE on win7.\n // See \n // if (typeof MSGesture === 'function') {\n // (this._msGesture = new MSGesture()).target = dom; // jshint ignore:line\n // dom.addEventListener('MSGestureChange', onMSGestureChange);\n // }\n } else {\n if (env.touchEventsSupported) {\n zrUtil.each(localNativeListenerNames.touch, function (nativeEventName) {\n mountSingleDOMEventListener(scope, nativeEventName, function (event) {\n // markTriggeredFromLocal(event);\n domHandlers[nativeEventName].call(instance, event);\n setTouchTimer(scope);\n });\n }); // Handler of 'mouseout' event is needed in touch mode, which will be mounted below.\n // addEventListener(root, 'mouseout', this._mouseoutHandler);\n } // 1. Considering some devices that both enable touch and mouse event (like on MS Surface\n // and lenovo X240, @see #2350), we make mouse event be always listened, otherwise\n // mouse event can not be handle in those devices.\n // 2. On MS Surface, Chrome will trigger both touch event and mouse event. How to prevent\n // mouseevent after touch event triggered, see `setTouchTimer`.\n\n\n zrUtil.each(localNativeListenerNames.mouse, function (nativeEventName) {\n mountSingleDOMEventListener(scope, nativeEventName, function (event) {\n event = getNativeEvent(event);\n\n if (!scope.touching) {\n // markTriggeredFromLocal(event);\n domHandlers[nativeEventName].call(instance, event);\n }\n });\n });\n }\n}\n/**\n * @param {HandlerProxy} instance\n * @param {DOMHandlerScope} scope\n */\n\n\nfunction mountGlobalDOMEventListeners(instance, scope) {\n // Only IE11+/Edge. See the comment in `mountLocalDOMEventListeners`.\n if (env.pointerEventsSupported) {\n zrUtil.each(globalNativeListenerNames.pointer, mount);\n } // Touch event has implemented \"drag outside\" so we do not mount global listener for touch event.\n // (see https://www.w3.org/TR/touch-events/#the-touchmove-event)\n // We do not consider \"both-support-touch-and-mouse device\" for this feature (see the comment of\n // `mountLocalDOMEventListeners`) to avoid bugs util some requirements come.\n else if (!env.touchEventsSupported) {\n zrUtil.each(globalNativeListenerNames.mouse, mount);\n }\n\n function mount(nativeEventName) {\n function nativeEventListener(event) {\n event = getNativeEvent(event); // See the reason in [Drag outside] in `Handler.js`\n // This checking supports both `useCapture` or not.\n // PENDING: if there is performance issue in some devices,\n // we probably can not use `useCapture` and change a easier\n // to judes whether local (mark).\n\n if (!isLocalEl(instance, event.target)) {\n event = normalizeGlobalEvent(instance, event);\n scope.domHandlers[nativeEventName].call(instance, event);\n }\n }\n\n mountSingleDOMEventListener(scope, nativeEventName, nativeEventListener, {\n capture: true\n } // See [Drag Outside] in `Handler.js`\n );\n }\n}\n\nfunction mountSingleDOMEventListener(scope, nativeEventName, listener, opt) {\n scope.mounted[nativeEventName] = listener;\n scope.listenerOpts[nativeEventName] = opt;\n addEventListener(scope.domTarget, eventNameFix(nativeEventName), listener, opt);\n}\n\nfunction unmountDOMEventListeners(scope) {\n var mounted = scope.mounted;\n\n for (var nativeEventName in mounted) {\n if (mounted.hasOwnProperty(nativeEventName)) {\n removeEventListener(scope.domTarget, eventNameFix(nativeEventName), mounted[nativeEventName], scope.listenerOpts[nativeEventName]);\n }\n }\n\n scope.mounted = {};\n}\n/**\n * See [Drag Outside] in `Handler.js`.\n * @implement\n * @param {boolean} isPointerCapturing Should never be `null`/`undefined`.\n * `true`: start to capture pointer if it is not capturing.\n * `false`: end the capture if it is capturing.\n */\n\n\nfunction togglePointerCapture(instance, isPointerCapturing) {\n instance._mayPointerCapture = null;\n\n if (globalEventSupported && instance._pointerCapturing ^ isPointerCapturing) {\n instance._pointerCapturing = isPointerCapturing;\n var globalHandlerScope = instance._globalHandlerScope;\n isPointerCapturing ? mountGlobalDOMEventListeners(instance, globalHandlerScope) : unmountDOMEventListeners(globalHandlerScope);\n }\n}\n/**\n * @inner\n * @class\n */\n\n\nfunction DOMHandlerScope(domTarget, domHandlers) {\n this.domTarget = domTarget;\n this.domHandlers = domHandlers; // Key: eventName, value: mounted handler funcitons.\n // Used for unmount.\n\n this.mounted = {};\n this.listenerOpts = {};\n this.touchTimer = null;\n this.touching = false;\n}\n/**\n * @public\n * @class\n */\n\n\nfunction HandlerDomProxy(dom, painterRoot) {\n Eventful.call(this);\n this.dom = dom;\n this.painterRoot = painterRoot;\n this._localHandlerScope = new DOMHandlerScope(dom, localDOMHandlers);\n\n if (globalEventSupported) {\n this._globalHandlerScope = new DOMHandlerScope(document, globalDOMHandlers);\n }\n /**\n * @type {boolean}\n */\n\n\n this._pointerCapturing = false;\n /**\n * @type {Array.} [x, y] or null.\n */\n\n this._mayPointerCapture = null;\n mountLocalDOMEventListeners(this, this._localHandlerScope);\n}\n\nvar handlerDomProxyProto = HandlerDomProxy.prototype;\n\nhandlerDomProxyProto.dispose = function () {\n unmountDOMEventListeners(this._localHandlerScope);\n\n if (globalEventSupported) {\n unmountDOMEventListeners(this._globalHandlerScope);\n }\n};\n\nhandlerDomProxyProto.setCursor = function (cursorStyle) {\n this.dom.style && (this.dom.style.cursor = cursorStyle || 'default');\n};\n\nzrUtil.mixin(HandlerDomProxy, Eventful);\nvar _default = HandlerDomProxy;\nmodule.exports = _default;","var zrUtil = require(\"./core/util\");\n\nexports.util = zrUtil;\n\nvar matrix = require(\"./core/matrix\");\n\nexports.matrix = matrix;\n\nvar vector = require(\"./core/vector\");\n\nexports.vector = vector;\n\nvar colorTool = require(\"./tool/color\");\n\nexports.color = colorTool;\n\nvar pathTool = require(\"./tool/path\");\n\nexports.path = pathTool;\n\nvar _parseSVG = require(\"./tool/parseSVG\");\n\nvar parseSVG = _parseSVG.parseSVG;\nexports.parseSVG = _parseSVG.parseSVG;\n\nvar _Group = require(\"./container/Group\");\n\nexports.Group = _Group;\n\nvar _Path = require(\"./graphic/Path\");\n\nexports.Path = _Path;\n\nvar _Image = require(\"./graphic/Image\");\n\nexports.Image = _Image;\n\nvar _CompoundPath = require(\"./graphic/CompoundPath\");\n\nexports.CompoundPath = _CompoundPath;\n\nvar _Text = require(\"./graphic/Text\");\n\nexports.Text = _Text;\n\nvar _IncrementalDisplayable = require(\"./graphic/IncrementalDisplayable\");\n\nexports.IncrementalDisplayable = _IncrementalDisplayable;\n\nvar _Arc = require(\"./graphic/shape/Arc\");\n\nexports.Arc = _Arc;\n\nvar _BezierCurve = require(\"./graphic/shape/BezierCurve\");\n\nexports.BezierCurve = _BezierCurve;\n\nvar _Circle = require(\"./graphic/shape/Circle\");\n\nexports.Circle = _Circle;\n\nvar _Droplet = require(\"./graphic/shape/Droplet\");\n\nexports.Droplet = _Droplet;\n\nvar _Ellipse = require(\"./graphic/shape/Ellipse\");\n\nexports.Ellipse = _Ellipse;\n\nvar _Heart = require(\"./graphic/shape/Heart\");\n\nexports.Heart = _Heart;\n\nvar _Isogon = require(\"./graphic/shape/Isogon\");\n\nexports.Isogon = _Isogon;\n\nvar _Line = require(\"./graphic/shape/Line\");\n\nexports.Line = _Line;\n\nvar _Polygon = require(\"./graphic/shape/Polygon\");\n\nexports.Polygon = _Polygon;\n\nvar _Polyline = require(\"./graphic/shape/Polyline\");\n\nexports.Polyline = _Polyline;\n\nvar _Rect = require(\"./graphic/shape/Rect\");\n\nexports.Rect = _Rect;\n\nvar _Ring = require(\"./graphic/shape/Ring\");\n\nexports.Ring = _Ring;\n\nvar _Rose = require(\"./graphic/shape/Rose\");\n\nexports.Rose = _Rose;\n\nvar _Sector = require(\"./graphic/shape/Sector\");\n\nexports.Sector = _Sector;\n\nvar _Star = require(\"./graphic/shape/Star\");\n\nexports.Star = _Star;\n\nvar _Trochoid = require(\"./graphic/shape/Trochoid\");\n\nexports.Trochoid = _Trochoid;\n\nvar _LinearGradient = require(\"./graphic/LinearGradient\");\n\nexports.LinearGradient = _LinearGradient;\n\nvar _RadialGradient = require(\"./graphic/RadialGradient\");\n\nexports.RadialGradient = _RadialGradient;\n\nvar _Pattern = require(\"./graphic/Pattern\");\n\nexports.Pattern = _Pattern;\n\nvar _BoundingRect = require(\"./core/BoundingRect\");\n\nexports.BoundingRect = _BoundingRect;","var vec2 = require(\"./vector\");\n\nvar curve = require(\"./curve\");\n\n/**\n * @author Yi Shen(https://github.com/pissang)\n */\nvar mathMin = Math.min;\nvar mathMax = Math.max;\nvar mathSin = Math.sin;\nvar mathCos = Math.cos;\nvar PI2 = Math.PI * 2;\nvar start = vec2.create();\nvar end = vec2.create();\nvar extremity = vec2.create();\n/**\n * 从顶点数组中计算出最小包围盒,写入`min`和`max`中\n * @module zrender/core/bbox\n * @param {Array} points 顶点数组\n * @param {number} min\n * @param {number} max\n */\n\nfunction fromPoints(points, min, max) {\n if (points.length === 0) {\n return;\n }\n\n var p = points[0];\n var left = p[0];\n var right = p[0];\n var top = p[1];\n var bottom = p[1];\n var i;\n\n for (i = 1; i < points.length; i++) {\n p = points[i];\n left = mathMin(left, p[0]);\n right = mathMax(right, p[0]);\n top = mathMin(top, p[1]);\n bottom = mathMax(bottom, p[1]);\n }\n\n min[0] = left;\n min[1] = top;\n max[0] = right;\n max[1] = bottom;\n}\n/**\n * @memberOf module:zrender/core/bbox\n * @param {number} x0\n * @param {number} y0\n * @param {number} x1\n * @param {number} y1\n * @param {Array.} min\n * @param {Array.} max\n */\n\n\nfunction fromLine(x0, y0, x1, y1, min, max) {\n min[0] = mathMin(x0, x1);\n min[1] = mathMin(y0, y1);\n max[0] = mathMax(x0, x1);\n max[1] = mathMax(y0, y1);\n}\n\nvar xDim = [];\nvar yDim = [];\n/**\n * 从三阶贝塞尔曲线(p0, p1, p2, p3)中计算出最小包围盒,写入`min`和`max`中\n * @memberOf module:zrender/core/bbox\n * @param {number} x0\n * @param {number} y0\n * @param {number} x1\n * @param {number} y1\n * @param {number} x2\n * @param {number} y2\n * @param {number} x3\n * @param {number} y3\n * @param {Array.} min\n * @param {Array.} max\n */\n\nfunction fromCubic(x0, y0, x1, y1, x2, y2, x3, y3, min, max) {\n var cubicExtrema = curve.cubicExtrema;\n var cubicAt = curve.cubicAt;\n var i;\n var n = cubicExtrema(x0, x1, x2, x3, xDim);\n min[0] = Infinity;\n min[1] = Infinity;\n max[0] = -Infinity;\n max[1] = -Infinity;\n\n for (i = 0; i < n; i++) {\n var x = cubicAt(x0, x1, x2, x3, xDim[i]);\n min[0] = mathMin(x, min[0]);\n max[0] = mathMax(x, max[0]);\n }\n\n n = cubicExtrema(y0, y1, y2, y3, yDim);\n\n for (i = 0; i < n; i++) {\n var y = cubicAt(y0, y1, y2, y3, yDim[i]);\n min[1] = mathMin(y, min[1]);\n max[1] = mathMax(y, max[1]);\n }\n\n min[0] = mathMin(x0, min[0]);\n max[0] = mathMax(x0, max[0]);\n min[0] = mathMin(x3, min[0]);\n max[0] = mathMax(x3, max[0]);\n min[1] = mathMin(y0, min[1]);\n max[1] = mathMax(y0, max[1]);\n min[1] = mathMin(y3, min[1]);\n max[1] = mathMax(y3, max[1]);\n}\n/**\n * 从二阶贝塞尔曲线(p0, p1, p2)中计算出最小包围盒,写入`min`和`max`中\n * @memberOf module:zrender/core/bbox\n * @param {number} x0\n * @param {number} y0\n * @param {number} x1\n * @param {number} y1\n * @param {number} x2\n * @param {number} y2\n * @param {Array.} min\n * @param {Array.} max\n */\n\n\nfunction fromQuadratic(x0, y0, x1, y1, x2, y2, min, max) {\n var quadraticExtremum = curve.quadraticExtremum;\n var quadraticAt = curve.quadraticAt; // Find extremities, where derivative in x dim or y dim is zero\n\n var tx = mathMax(mathMin(quadraticExtremum(x0, x1, x2), 1), 0);\n var ty = mathMax(mathMin(quadraticExtremum(y0, y1, y2), 1), 0);\n var x = quadraticAt(x0, x1, x2, tx);\n var y = quadraticAt(y0, y1, y2, ty);\n min[0] = mathMin(x0, x2, x);\n min[1] = mathMin(y0, y2, y);\n max[0] = mathMax(x0, x2, x);\n max[1] = mathMax(y0, y2, y);\n}\n/**\n * 从圆弧中计算出最小包围盒,写入`min`和`max`中\n * @method\n * @memberOf module:zrender/core/bbox\n * @param {number} x\n * @param {number} y\n * @param {number} rx\n * @param {number} ry\n * @param {number} startAngle\n * @param {number} endAngle\n * @param {number} anticlockwise\n * @param {Array.} min\n * @param {Array.} max\n */\n\n\nfunction fromArc(x, y, rx, ry, startAngle, endAngle, anticlockwise, min, max) {\n var vec2Min = vec2.min;\n var vec2Max = vec2.max;\n var diff = Math.abs(startAngle - endAngle);\n\n if (diff % PI2 < 1e-4 && diff > 1e-4) {\n // Is a circle\n min[0] = x - rx;\n min[1] = y - ry;\n max[0] = x + rx;\n max[1] = y + ry;\n return;\n }\n\n start[0] = mathCos(startAngle) * rx + x;\n start[1] = mathSin(startAngle) * ry + y;\n end[0] = mathCos(endAngle) * rx + x;\n end[1] = mathSin(endAngle) * ry + y;\n vec2Min(min, start, end);\n vec2Max(max, start, end); // Thresh to [0, Math.PI * 2]\n\n startAngle = startAngle % PI2;\n\n if (startAngle < 0) {\n startAngle = startAngle + PI2;\n }\n\n endAngle = endAngle % PI2;\n\n if (endAngle < 0) {\n endAngle = endAngle + PI2;\n }\n\n if (startAngle > endAngle && !anticlockwise) {\n endAngle += PI2;\n } else if (startAngle < endAngle && anticlockwise) {\n startAngle += PI2;\n }\n\n if (anticlockwise) {\n var tmp = endAngle;\n endAngle = startAngle;\n startAngle = tmp;\n } // var number = 0;\n // var step = (anticlockwise ? -Math.PI : Math.PI) / 2;\n\n\n for (var angle = 0; angle < endAngle; angle += Math.PI / 2) {\n if (angle > startAngle) {\n extremity[0] = mathCos(angle) * rx + x;\n extremity[1] = mathSin(angle) * ry + y;\n vec2Min(min, extremity, min);\n vec2Max(max, extremity, max);\n }\n }\n}\n\nexports.fromPoints = fromPoints;\nexports.fromLine = fromLine;\nexports.fromCubic = fromCubic;\nexports.fromQuadratic = fromQuadratic;\nexports.fromArc = fromArc;","var PathProxy = require(\"../core/PathProxy\");\n\nvar line = require(\"./line\");\n\nvar cubic = require(\"./cubic\");\n\nvar quadratic = require(\"./quadratic\");\n\nvar arc = require(\"./arc\");\n\nvar _util = require(\"./util\");\n\nvar normalizeRadian = _util.normalizeRadian;\n\nvar curve = require(\"../core/curve\");\n\nvar windingLine = require(\"./windingLine\");\n\nvar CMD = PathProxy.CMD;\nvar PI2 = Math.PI * 2;\nvar EPSILON = 1e-4;\n\nfunction isAroundEqual(a, b) {\n return Math.abs(a - b) < EPSILON;\n} // 临时数组\n\n\nvar roots = [-1, -1, -1];\nvar extrema = [-1, -1];\n\nfunction swapExtrema() {\n var tmp = extrema[0];\n extrema[0] = extrema[1];\n extrema[1] = tmp;\n}\n\nfunction windingCubic(x0, y0, x1, y1, x2, y2, x3, y3, x, y) {\n // Quick reject\n if (y > y0 && y > y1 && y > y2 && y > y3 || y < y0 && y < y1 && y < y2 && y < y3) {\n return 0;\n }\n\n var nRoots = curve.cubicRootAt(y0, y1, y2, y3, y, roots);\n\n if (nRoots === 0) {\n return 0;\n } else {\n var w = 0;\n var nExtrema = -1;\n var y0_;\n var y1_;\n\n for (var i = 0; i < nRoots; i++) {\n var t = roots[i]; // Avoid winding error when intersection point is the connect point of two line of polygon\n\n var unit = t === 0 || t === 1 ? 0.5 : 1;\n var x_ = curve.cubicAt(x0, x1, x2, x3, t);\n\n if (x_ < x) {\n // Quick reject\n continue;\n }\n\n if (nExtrema < 0) {\n nExtrema = curve.cubicExtrema(y0, y1, y2, y3, extrema);\n\n if (extrema[1] < extrema[0] && nExtrema > 1) {\n swapExtrema();\n }\n\n y0_ = curve.cubicAt(y0, y1, y2, y3, extrema[0]);\n\n if (nExtrema > 1) {\n y1_ = curve.cubicAt(y0, y1, y2, y3, extrema[1]);\n }\n }\n\n if (nExtrema === 2) {\n // 分成三段单调函数\n if (t < extrema[0]) {\n w += y0_ < y0 ? unit : -unit;\n } else if (t < extrema[1]) {\n w += y1_ < y0_ ? unit : -unit;\n } else {\n w += y3 < y1_ ? unit : -unit;\n }\n } else {\n // 分成两段单调函数\n if (t < extrema[0]) {\n w += y0_ < y0 ? unit : -unit;\n } else {\n w += y3 < y0_ ? unit : -unit;\n }\n }\n }\n\n return w;\n }\n}\n\nfunction windingQuadratic(x0, y0, x1, y1, x2, y2, x, y) {\n // Quick reject\n if (y > y0 && y > y1 && y > y2 || y < y0 && y < y1 && y < y2) {\n return 0;\n }\n\n var nRoots = curve.quadraticRootAt(y0, y1, y2, y, roots);\n\n if (nRoots === 0) {\n return 0;\n } else {\n var t = curve.quadraticExtremum(y0, y1, y2);\n\n if (t >= 0 && t <= 1) {\n var w = 0;\n var y_ = curve.quadraticAt(y0, y1, y2, t);\n\n for (var i = 0; i < nRoots; i++) {\n // Remove one endpoint.\n var unit = roots[i] === 0 || roots[i] === 1 ? 0.5 : 1;\n var x_ = curve.quadraticAt(x0, x1, x2, roots[i]);\n\n if (x_ < x) {\n // Quick reject\n continue;\n }\n\n if (roots[i] < t) {\n w += y_ < y0 ? unit : -unit;\n } else {\n w += y2 < y_ ? unit : -unit;\n }\n }\n\n return w;\n } else {\n // Remove one endpoint.\n var unit = roots[0] === 0 || roots[0] === 1 ? 0.5 : 1;\n var x_ = curve.quadraticAt(x0, x1, x2, roots[0]);\n\n if (x_ < x) {\n // Quick reject\n return 0;\n }\n\n return y2 < y0 ? unit : -unit;\n }\n }\n} // TODO\n// Arc 旋转\n\n\nfunction windingArc(cx, cy, r, startAngle, endAngle, anticlockwise, x, y) {\n y -= cy;\n\n if (y > r || y < -r) {\n return 0;\n }\n\n var tmp = Math.sqrt(r * r - y * y);\n roots[0] = -tmp;\n roots[1] = tmp;\n var diff = Math.abs(startAngle - endAngle);\n\n if (diff < 1e-4) {\n return 0;\n }\n\n if (diff % PI2 < 1e-4) {\n // Is a circle\n startAngle = 0;\n endAngle = PI2;\n var dir = anticlockwise ? 1 : -1;\n\n if (x >= roots[0] + cx && x <= roots[1] + cx) {\n return dir;\n } else {\n return 0;\n }\n }\n\n if (anticlockwise) {\n var tmp = startAngle;\n startAngle = normalizeRadian(endAngle);\n endAngle = normalizeRadian(tmp);\n } else {\n startAngle = normalizeRadian(startAngle);\n endAngle = normalizeRadian(endAngle);\n }\n\n if (startAngle > endAngle) {\n endAngle += PI2;\n }\n\n var w = 0;\n\n for (var i = 0; i < 2; i++) {\n var x_ = roots[i];\n\n if (x_ + cx > x) {\n var angle = Math.atan2(y, x_);\n var dir = anticlockwise ? 1 : -1;\n\n if (angle < 0) {\n angle = PI2 + angle;\n }\n\n if (angle >= startAngle && angle <= endAngle || angle + PI2 >= startAngle && angle + PI2 <= endAngle) {\n if (angle > Math.PI / 2 && angle < Math.PI * 1.5) {\n dir = -dir;\n }\n\n w += dir;\n }\n }\n }\n\n return w;\n}\n\nfunction containPath(data, lineWidth, isStroke, x, y) {\n var w = 0;\n var xi = 0;\n var yi = 0;\n var x0 = 0;\n var y0 = 0;\n\n for (var i = 0; i < data.length;) {\n var cmd = data[i++]; // Begin a new subpath\n\n if (cmd === CMD.M && i > 1) {\n // Close previous subpath\n if (!isStroke) {\n w += windingLine(xi, yi, x0, y0, x, y);\n } // 如果被任何一个 subpath 包含\n // if (w !== 0) {\n // return true;\n // }\n\n }\n\n if (i === 1) {\n // 如果第一个命令是 L, C, Q\n // 则 previous point 同绘制命令的第一个 point\n //\n // 第一个命令为 Arc 的情况下会在后面特殊处理\n xi = data[i];\n yi = data[i + 1];\n x0 = xi;\n y0 = yi;\n }\n\n switch (cmd) {\n case CMD.M:\n // moveTo 命令重新创建一个新的 subpath, 并且更新新的起点\n // 在 closePath 的时候使用\n x0 = data[i++];\n y0 = data[i++];\n xi = x0;\n yi = y0;\n break;\n\n case CMD.L:\n if (isStroke) {\n if (line.containStroke(xi, yi, data[i], data[i + 1], lineWidth, x, y)) {\n return true;\n }\n } else {\n // NOTE 在第一个命令为 L, C, Q 的时候会计算出 NaN\n w += windingLine(xi, yi, data[i], data[i + 1], x, y) || 0;\n }\n\n xi = data[i++];\n yi = data[i++];\n break;\n\n case CMD.C:\n if (isStroke) {\n if (cubic.containStroke(xi, yi, data[i++], data[i++], data[i++], data[i++], data[i], data[i + 1], lineWidth, x, y)) {\n return true;\n }\n } else {\n w += windingCubic(xi, yi, data[i++], data[i++], data[i++], data[i++], data[i], data[i + 1], x, y) || 0;\n }\n\n xi = data[i++];\n yi = data[i++];\n break;\n\n case CMD.Q:\n if (isStroke) {\n if (quadratic.containStroke(xi, yi, data[i++], data[i++], data[i], data[i + 1], lineWidth, x, y)) {\n return true;\n }\n } else {\n w += windingQuadratic(xi, yi, data[i++], data[i++], data[i], data[i + 1], x, y) || 0;\n }\n\n xi = data[i++];\n yi = data[i++];\n break;\n\n case CMD.A:\n // TODO Arc 判断的开销比较大\n var cx = data[i++];\n var cy = data[i++];\n var rx = data[i++];\n var ry = data[i++];\n var theta = data[i++];\n var dTheta = data[i++]; // TODO Arc 旋转\n\n i += 1;\n var anticlockwise = 1 - data[i++];\n var x1 = Math.cos(theta) * rx + cx;\n var y1 = Math.sin(theta) * ry + cy; // 不是直接使用 arc 命令\n\n if (i > 1) {\n w += windingLine(xi, yi, x1, y1, x, y);\n } else {\n // 第一个命令起点还未定义\n x0 = x1;\n y0 = y1;\n } // zr 使用scale来模拟椭圆, 这里也对x做一定的缩放\n\n\n var _x = (x - cx) * ry / rx + cx;\n\n if (isStroke) {\n if (arc.containStroke(cx, cy, ry, theta, theta + dTheta, anticlockwise, lineWidth, _x, y)) {\n return true;\n }\n } else {\n w += windingArc(cx, cy, ry, theta, theta + dTheta, anticlockwise, _x, y);\n }\n\n xi = Math.cos(theta + dTheta) * rx + cx;\n yi = Math.sin(theta + dTheta) * ry + cy;\n break;\n\n case CMD.R:\n x0 = xi = data[i++];\n y0 = yi = data[i++];\n var width = data[i++];\n var height = data[i++];\n var x1 = x0 + width;\n var y1 = y0 + height;\n\n if (isStroke) {\n if (line.containStroke(x0, y0, x1, y0, lineWidth, x, y) || line.containStroke(x1, y0, x1, y1, lineWidth, x, y) || line.containStroke(x1, y1, x0, y1, lineWidth, x, y) || line.containStroke(x0, y1, x0, y0, lineWidth, x, y)) {\n return true;\n }\n } else {\n // FIXME Clockwise ?\n w += windingLine(x1, y0, x1, y1, x, y);\n w += windingLine(x0, y1, x0, y0, x, y);\n }\n\n break;\n\n case CMD.Z:\n if (isStroke) {\n if (line.containStroke(xi, yi, x0, y0, lineWidth, x, y)) {\n return true;\n }\n } else {\n // Close a subpath\n w += windingLine(xi, yi, x0, y0, x, y); // 如果被任何一个 subpath 包含\n // FIXME subpaths may overlap\n // if (w !== 0) {\n // return true;\n // }\n }\n\n xi = x0;\n yi = y0;\n break;\n }\n }\n\n if (!isStroke && !isAroundEqual(yi, y0)) {\n w += windingLine(xi, yi, x0, y0, x, y) || 0;\n }\n\n return w !== 0;\n}\n\nfunction contain(pathData, x, y) {\n return containPath(pathData, 0, false, x, y);\n}\n\nfunction containStroke(pathData, lineWidth, x, y) {\n return containPath(pathData, lineWidth, true, x, y);\n}\n\nexports.contain = contain;\nexports.containStroke = containStroke;","/**\n * 线段包含判断\n * @param {number} x0\n * @param {number} y0\n * @param {number} x1\n * @param {number} y1\n * @param {number} lineWidth\n * @param {number} x\n * @param {number} y\n * @return {boolean}\n */\nfunction containStroke(x0, y0, x1, y1, lineWidth, x, y) {\n if (lineWidth === 0) {\n return false;\n }\n\n var _l = lineWidth;\n var _a = 0;\n var _b = x0; // Quick reject\n\n if (y > y0 + _l && y > y1 + _l || y < y0 - _l && y < y1 - _l || x > x0 + _l && x > x1 + _l || x < x0 - _l && x < x1 - _l) {\n return false;\n }\n\n if (x0 !== x1) {\n _a = (y0 - y1) / (x0 - x1);\n _b = (x0 * y1 - x1 * y0) / (x0 - x1);\n } else {\n return Math.abs(x - x0) <= _l / 2;\n }\n\n var tmp = _a * x - y + _b;\n\n var _s = tmp * tmp / (_a * _a + 1);\n\n return _s <= _l / 2 * _l / 2;\n}\n\nexports.containStroke = containStroke;","var curve = require(\"../core/curve\");\n\n/**\n * 三次贝塞尔曲线描边包含判断\n * @param {number} x0\n * @param {number} y0\n * @param {number} x1\n * @param {number} y1\n * @param {number} x2\n * @param {number} y2\n * @param {number} x3\n * @param {number} y3\n * @param {number} lineWidth\n * @param {number} x\n * @param {number} y\n * @return {boolean}\n */\nfunction containStroke(x0, y0, x1, y1, x2, y2, x3, y3, lineWidth, x, y) {\n if (lineWidth === 0) {\n return false;\n }\n\n var _l = lineWidth; // Quick reject\n\n if (y > y0 + _l && y > y1 + _l && y > y2 + _l && y > y3 + _l || y < y0 - _l && y < y1 - _l && y < y2 - _l && y < y3 - _l || x > x0 + _l && x > x1 + _l && x > x2 + _l && x > x3 + _l || x < x0 - _l && x < x1 - _l && x < x2 - _l && x < x3 - _l) {\n return false;\n }\n\n var d = curve.cubicProjectPoint(x0, y0, x1, y1, x2, y2, x3, y3, x, y, null);\n return d <= _l / 2;\n}\n\nexports.containStroke = containStroke;","var _curve = require(\"../core/curve\");\n\nvar quadraticProjectPoint = _curve.quadraticProjectPoint;\n\n/**\n * 二次贝塞尔曲线描边包含判断\n * @param {number} x0\n * @param {number} y0\n * @param {number} x1\n * @param {number} y1\n * @param {number} x2\n * @param {number} y2\n * @param {number} lineWidth\n * @param {number} x\n * @param {number} y\n * @return {boolean}\n */\nfunction containStroke(x0, y0, x1, y1, x2, y2, lineWidth, x, y) {\n if (lineWidth === 0) {\n return false;\n }\n\n var _l = lineWidth; // Quick reject\n\n if (y > y0 + _l && y > y1 + _l && y > y2 + _l || y < y0 - _l && y < y1 - _l && y < y2 - _l || x > x0 + _l && x > x1 + _l && x > x2 + _l || x < x0 - _l && x < x1 - _l && x < x2 - _l) {\n return false;\n }\n\n var d = quadraticProjectPoint(x0, y0, x1, y1, x2, y2, x, y, null);\n return d <= _l / 2;\n}\n\nexports.containStroke = containStroke;","var _util = require(\"./util\");\n\nvar normalizeRadian = _util.normalizeRadian;\nvar PI2 = Math.PI * 2;\n/**\n * 圆弧描边包含判断\n * @param {number} cx\n * @param {number} cy\n * @param {number} r\n * @param {number} startAngle\n * @param {number} endAngle\n * @param {boolean} anticlockwise\n * @param {number} lineWidth\n * @param {number} x\n * @param {number} y\n * @return {Boolean}\n */\n\nfunction containStroke(cx, cy, r, startAngle, endAngle, anticlockwise, lineWidth, x, y) {\n if (lineWidth === 0) {\n return false;\n }\n\n var _l = lineWidth;\n x -= cx;\n y -= cy;\n var d = Math.sqrt(x * x + y * y);\n\n if (d - _l > r || d + _l < r) {\n return false;\n }\n\n if (Math.abs(startAngle - endAngle) % PI2 < 1e-4) {\n // Is a circle\n return true;\n }\n\n if (anticlockwise) {\n var tmp = startAngle;\n startAngle = normalizeRadian(endAngle);\n endAngle = normalizeRadian(tmp);\n } else {\n startAngle = normalizeRadian(startAngle);\n endAngle = normalizeRadian(endAngle);\n }\n\n if (startAngle > endAngle) {\n endAngle += PI2;\n }\n\n var angle = Math.atan2(y, x);\n\n if (angle < 0) {\n angle += PI2;\n }\n\n return angle >= startAngle && angle <= endAngle || angle + PI2 >= startAngle && angle + PI2 <= endAngle;\n}\n\nexports.containStroke = containStroke;","function windingLine(x0, y0, x1, y1, x, y) {\n if (y > y0 && y > y1 || y < y0 && y < y1) {\n return 0;\n } // Ignore horizontal line\n\n\n if (y1 === y0) {\n return 0;\n }\n\n var dir = y1 < y0 ? 1 : -1;\n var t = (y - y0) / (y1 - y0); // Avoid winding error when intersection point is the connect point of two line of polygon\n\n if (t === 1 || t === 0) {\n dir = y1 < y0 ? 0.5 : -0.5;\n }\n\n var x_ = t * (x1 - x0) + x0; // If (x, y) on the line, considered as \"contain\".\n\n return x_ === x ? Infinity : x_ > x ? dir : 0;\n}\n\nmodule.exports = windingLine;","var PathProxy = require(\"../core/PathProxy\");\n\nvar _vector = require(\"../core/vector\");\n\nvar v2ApplyTransform = _vector.applyTransform;\nvar CMD = PathProxy.CMD;\nvar points = [[], [], []];\nvar mathSqrt = Math.sqrt;\nvar mathAtan2 = Math.atan2;\n\nfunction _default(path, m) {\n var data = path.data;\n var cmd;\n var nPoint;\n var i;\n var j;\n var k;\n var p;\n var M = CMD.M;\n var C = CMD.C;\n var L = CMD.L;\n var R = CMD.R;\n var A = CMD.A;\n var Q = CMD.Q;\n\n for (i = 0, j = 0; i < data.length;) {\n cmd = data[i++];\n j = i;\n nPoint = 0;\n\n switch (cmd) {\n case M:\n nPoint = 1;\n break;\n\n case L:\n nPoint = 1;\n break;\n\n case C:\n nPoint = 3;\n break;\n\n case Q:\n nPoint = 2;\n break;\n\n case A:\n var x = m[4];\n var y = m[5];\n var sx = mathSqrt(m[0] * m[0] + m[1] * m[1]);\n var sy = mathSqrt(m[2] * m[2] + m[3] * m[3]);\n var angle = mathAtan2(-m[1] / sy, m[0] / sx); // cx\n\n data[i] *= sx;\n data[i++] += x; // cy\n\n data[i] *= sy;\n data[i++] += y; // Scale rx and ry\n // FIXME Assume psi is 0 here\n\n data[i++] *= sx;\n data[i++] *= sy; // Start angle\n\n data[i++] += angle; // end angle\n\n data[i++] += angle; // FIXME psi\n\n i += 2;\n j = i;\n break;\n\n case R:\n // x0, y0\n p[0] = data[i++];\n p[1] = data[i++];\n v2ApplyTransform(p, p, m);\n data[j++] = p[0];\n data[j++] = p[1]; // x1, y1\n\n p[0] += data[i++];\n p[1] += data[i++];\n v2ApplyTransform(p, p, m);\n data[j++] = p[0];\n data[j++] = p[1];\n }\n\n for (k = 0; k < nPoint; k++) {\n var p = points[k];\n p[0] = data[i++];\n p[1] = data[i++];\n v2ApplyTransform(p, p, m); // Write back\n\n data[j++] = p[0];\n data[j++] = p[1];\n }\n }\n}\n\nmodule.exports = _default;","var Group = require(\"../container/Group\");\n\nvar ZImage = require(\"../graphic/Image\");\n\nvar Text = require(\"../graphic/Text\");\n\nvar Circle = require(\"../graphic/shape/Circle\");\n\nvar Rect = require(\"../graphic/shape/Rect\");\n\nvar Ellipse = require(\"../graphic/shape/Ellipse\");\n\nvar Line = require(\"../graphic/shape/Line\");\n\nvar Path = require(\"../graphic/Path\");\n\nvar Polygon = require(\"../graphic/shape/Polygon\");\n\nvar Polyline = require(\"../graphic/shape/Polyline\");\n\nvar LinearGradient = require(\"../graphic/LinearGradient\");\n\nvar Style = require(\"../graphic/Style\");\n\nvar matrix = require(\"../core/matrix\");\n\nvar _path = require(\"./path\");\n\nvar createFromString = _path.createFromString;\n\nvar _util = require(\"../core/util\");\n\nvar isString = _util.isString;\nvar extend = _util.extend;\nvar defaults = _util.defaults;\nvar trim = _util.trim;\nvar each = _util.each;\n// import RadialGradient from '../graphic/RadialGradient';\n// import Pattern from '../graphic/Pattern';\n// import * as vector from '../core/vector';\n// Most of the values can be separated by comma and/or white space.\nvar DILIMITER_REG = /[\\s,]+/;\n/**\n * For big svg string, this method might be time consuming.\n *\n * @param {string} svg xml string\n * @return {Object} xml root.\n */\n\nfunction parseXML(svg) {\n if (isString(svg)) {\n var parser = new DOMParser();\n svg = parser.parseFromString(svg, 'text/xml');\n } // Document node. If using $.get, doc node may be input.\n\n\n if (svg.nodeType === 9) {\n svg = svg.firstChild;\n } // nodeName of is also 'svg'.\n\n\n while (svg.nodeName.toLowerCase() !== 'svg' || svg.nodeType !== 1) {\n svg = svg.nextSibling;\n }\n\n return svg;\n}\n\nfunction SVGParser() {\n this._defs = {};\n this._root = null;\n this._isDefine = false;\n this._isText = false;\n}\n\nSVGParser.prototype.parse = function (xml, opt) {\n opt = opt || {};\n var svg = parseXML(xml);\n\n if (!svg) {\n throw new Error('Illegal svg');\n }\n\n var root = new Group();\n this._root = root; // parse view port\n\n var viewBox = svg.getAttribute('viewBox') || ''; // If width/height not specified, means \"100%\" of `opt.width/height`.\n // TODO: Other percent value not supported yet.\n\n var width = parseFloat(svg.getAttribute('width') || opt.width);\n var height = parseFloat(svg.getAttribute('height') || opt.height); // If width/height not specified, set as null for output.\n\n isNaN(width) && (width = null);\n isNaN(height) && (height = null); // Apply inline style on svg element.\n\n parseAttributes(svg, root, null, true);\n var child = svg.firstChild;\n\n while (child) {\n this._parseNode(child, root);\n\n child = child.nextSibling;\n }\n\n var viewBoxRect;\n var viewBoxTransform;\n\n if (viewBox) {\n var viewBoxArr = trim(viewBox).split(DILIMITER_REG); // Some invalid case like viewBox: 'none'.\n\n if (viewBoxArr.length >= 4) {\n viewBoxRect = {\n x: parseFloat(viewBoxArr[0] || 0),\n y: parseFloat(viewBoxArr[1] || 0),\n width: parseFloat(viewBoxArr[2]),\n height: parseFloat(viewBoxArr[3])\n };\n }\n }\n\n if (viewBoxRect && width != null && height != null) {\n viewBoxTransform = makeViewBoxTransform(viewBoxRect, width, height);\n\n if (!opt.ignoreViewBox) {\n // If set transform on the output group, it probably bring trouble when\n // some users only intend to show the clipped content inside the viewBox,\n // but not intend to transform the output group. So we keep the output\n // group no transform. If the user intend to use the viewBox as a\n // camera, just set `opt.ignoreViewBox` as `true` and set transfrom\n // manually according to the viewBox info in the output of this method.\n var elRoot = root;\n root = new Group();\n root.add(elRoot);\n elRoot.scale = viewBoxTransform.scale.slice();\n elRoot.position = viewBoxTransform.position.slice();\n }\n } // Some shapes might be overflow the viewport, which should be\n // clipped despite whether the viewBox is used, as the SVG does.\n\n\n if (!opt.ignoreRootClip && width != null && height != null) {\n root.setClipPath(new Rect({\n shape: {\n x: 0,\n y: 0,\n width: width,\n height: height\n }\n }));\n } // Set width/height on group just for output the viewport size.\n\n\n return {\n root: root,\n width: width,\n height: height,\n viewBoxRect: viewBoxRect,\n viewBoxTransform: viewBoxTransform\n };\n};\n\nSVGParser.prototype._parseNode = function (xmlNode, parentGroup) {\n var nodeName = xmlNode.nodeName.toLowerCase(); // TODO\n // support in svg, where nodeName is 'style',\n // CSS classes is defined globally wherever the style tags are declared.\n\n if (nodeName === 'defs') {\n // define flag\n this._isDefine = true;\n } else if (nodeName === 'text') {\n this._isText = true;\n }\n\n var el;\n\n if (this._isDefine) {\n var parser = defineParsers[nodeName];\n\n if (parser) {\n var def = parser.call(this, xmlNode);\n var id = xmlNode.getAttribute('id');\n\n if (id) {\n this._defs[id] = def;\n }\n }\n } else {\n var parser = nodeParsers[nodeName];\n\n if (parser) {\n el = parser.call(this, xmlNode, parentGroup);\n parentGroup.add(el);\n }\n }\n\n var child = xmlNode.firstChild;\n\n while (child) {\n if (child.nodeType === 1) {\n this._parseNode(child, el);\n } // Is text\n\n\n if (child.nodeType === 3 && this._isText) {\n this._parseText(child, el);\n }\n\n child = child.nextSibling;\n } // Quit define\n\n\n if (nodeName === 'defs') {\n this._isDefine = false;\n } else if (nodeName === 'text') {\n this._isText = false;\n }\n};\n\nSVGParser.prototype._parseText = function (xmlNode, parentGroup) {\n if (xmlNode.nodeType === 1) {\n var dx = xmlNode.getAttribute('dx') || 0;\n var dy = xmlNode.getAttribute('dy') || 0;\n this._textX += parseFloat(dx);\n this._textY += parseFloat(dy);\n }\n\n var text = new Text({\n style: {\n text: xmlNode.textContent,\n transformText: true\n },\n position: [this._textX || 0, this._textY || 0]\n });\n inheritStyle(parentGroup, text);\n parseAttributes(xmlNode, text, this._defs);\n var fontSize = text.style.fontSize;\n\n if (fontSize && fontSize < 9) {\n // PENDING\n text.style.fontSize = 9;\n text.scale = text.scale || [1, 1];\n text.scale[0] *= fontSize / 9;\n text.scale[1] *= fontSize / 9;\n }\n\n var rect = text.getBoundingRect();\n this._textX += rect.width;\n parentGroup.add(text);\n return text;\n};\n\nvar nodeParsers = {\n 'g': function (xmlNode, parentGroup) {\n var g = new Group();\n inheritStyle(parentGroup, g);\n parseAttributes(xmlNode, g, this._defs);\n return g;\n },\n 'rect': function (xmlNode, parentGroup) {\n var rect = new Rect();\n inheritStyle(parentGroup, rect);\n parseAttributes(xmlNode, rect, this._defs);\n rect.setShape({\n x: parseFloat(xmlNode.getAttribute('x') || 0),\n y: parseFloat(xmlNode.getAttribute('y') || 0),\n width: parseFloat(xmlNode.getAttribute('width') || 0),\n height: parseFloat(xmlNode.getAttribute('height') || 0)\n }); // console.log(xmlNode.getAttribute('transform'));\n // console.log(rect.transform);\n\n return rect;\n },\n 'circle': function (xmlNode, parentGroup) {\n var circle = new Circle();\n inheritStyle(parentGroup, circle);\n parseAttributes(xmlNode, circle, this._defs);\n circle.setShape({\n cx: parseFloat(xmlNode.getAttribute('cx') || 0),\n cy: parseFloat(xmlNode.getAttribute('cy') || 0),\n r: parseFloat(xmlNode.getAttribute('r') || 0)\n });\n return circle;\n },\n 'line': function (xmlNode, parentGroup) {\n var line = new Line();\n inheritStyle(parentGroup, line);\n parseAttributes(xmlNode, line, this._defs);\n line.setShape({\n x1: parseFloat(xmlNode.getAttribute('x1') || 0),\n y1: parseFloat(xmlNode.getAttribute('y1') || 0),\n x2: parseFloat(xmlNode.getAttribute('x2') || 0),\n y2: parseFloat(xmlNode.getAttribute('y2') || 0)\n });\n return line;\n },\n 'ellipse': function (xmlNode, parentGroup) {\n var ellipse = new Ellipse();\n inheritStyle(parentGroup, ellipse);\n parseAttributes(xmlNode, ellipse, this._defs);\n ellipse.setShape({\n cx: parseFloat(xmlNode.getAttribute('cx') || 0),\n cy: parseFloat(xmlNode.getAttribute('cy') || 0),\n rx: parseFloat(xmlNode.getAttribute('rx') || 0),\n ry: parseFloat(xmlNode.getAttribute('ry') || 0)\n });\n return ellipse;\n },\n 'polygon': function (xmlNode, parentGroup) {\n var points = xmlNode.getAttribute('points');\n\n if (points) {\n points = parsePoints(points);\n }\n\n var polygon = new Polygon({\n shape: {\n points: points || []\n }\n });\n inheritStyle(parentGroup, polygon);\n parseAttributes(xmlNode, polygon, this._defs);\n return polygon;\n },\n 'polyline': function (xmlNode, parentGroup) {\n var path = new Path();\n inheritStyle(parentGroup, path);\n parseAttributes(xmlNode, path, this._defs);\n var points = xmlNode.getAttribute('points');\n\n if (points) {\n points = parsePoints(points);\n }\n\n var polyline = new Polyline({\n shape: {\n points: points || []\n }\n });\n return polyline;\n },\n 'image': function (xmlNode, parentGroup) {\n var img = new ZImage();\n inheritStyle(parentGroup, img);\n parseAttributes(xmlNode, img, this._defs);\n img.setStyle({\n image: xmlNode.getAttribute('xlink:href'),\n x: xmlNode.getAttribute('x'),\n y: xmlNode.getAttribute('y'),\n width: xmlNode.getAttribute('width'),\n height: xmlNode.getAttribute('height')\n });\n return img;\n },\n 'text': function (xmlNode, parentGroup) {\n var x = xmlNode.getAttribute('x') || 0;\n var y = xmlNode.getAttribute('y') || 0;\n var dx = xmlNode.getAttribute('dx') || 0;\n var dy = xmlNode.getAttribute('dy') || 0;\n this._textX = parseFloat(x) + parseFloat(dx);\n this._textY = parseFloat(y) + parseFloat(dy);\n var g = new Group();\n inheritStyle(parentGroup, g);\n parseAttributes(xmlNode, g, this._defs);\n return g;\n },\n 'tspan': function (xmlNode, parentGroup) {\n var x = xmlNode.getAttribute('x');\n var y = xmlNode.getAttribute('y');\n\n if (x != null) {\n // new offset x\n this._textX = parseFloat(x);\n }\n\n if (y != null) {\n // new offset y\n this._textY = parseFloat(y);\n }\n\n var dx = xmlNode.getAttribute('dx') || 0;\n var dy = xmlNode.getAttribute('dy') || 0;\n var g = new Group();\n inheritStyle(parentGroup, g);\n parseAttributes(xmlNode, g, this._defs);\n this._textX += dx;\n this._textY += dy;\n return g;\n },\n 'path': function (xmlNode, parentGroup) {\n // TODO svg fill rule\n // https://developer.mozilla.org/en-US/docs/Web/SVG/Attribute/fill-rule\n // path.style.globalCompositeOperation = 'xor';\n var d = xmlNode.getAttribute('d') || ''; // Performance sensitive.\n\n var path = createFromString(d);\n inheritStyle(parentGroup, path);\n parseAttributes(xmlNode, path, this._defs);\n return path;\n }\n};\nvar defineParsers = {\n 'lineargradient': function (xmlNode) {\n var x1 = parseInt(xmlNode.getAttribute('x1') || 0, 10);\n var y1 = parseInt(xmlNode.getAttribute('y1') || 0, 10);\n var x2 = parseInt(xmlNode.getAttribute('x2') || 10, 10);\n var y2 = parseInt(xmlNode.getAttribute('y2') || 0, 10);\n var gradient = new LinearGradient(x1, y1, x2, y2);\n\n _parseGradientColorStops(xmlNode, gradient);\n\n return gradient;\n },\n 'radialgradient': function (xmlNode) {}\n};\n\nfunction _parseGradientColorStops(xmlNode, gradient) {\n var stop = xmlNode.firstChild;\n\n while (stop) {\n if (stop.nodeType === 1) {\n var offset = stop.getAttribute('offset');\n\n if (offset.indexOf('%') > 0) {\n // percentage\n offset = parseInt(offset, 10) / 100;\n } else if (offset) {\n // number from 0 to 1\n offset = parseFloat(offset);\n } else {\n offset = 0;\n }\n\n var stopColor = stop.getAttribute('stop-color') || '#000000';\n gradient.addColorStop(offset, stopColor);\n }\n\n stop = stop.nextSibling;\n }\n}\n\nfunction inheritStyle(parent, child) {\n if (parent && parent.__inheritedStyle) {\n if (!child.__inheritedStyle) {\n child.__inheritedStyle = {};\n }\n\n defaults(child.__inheritedStyle, parent.__inheritedStyle);\n }\n}\n\nfunction parsePoints(pointsString) {\n var list = trim(pointsString).split(DILIMITER_REG);\n var points = [];\n\n for (var i = 0; i < list.length; i += 2) {\n var x = parseFloat(list[i]);\n var y = parseFloat(list[i + 1]);\n points.push([x, y]);\n }\n\n return points;\n}\n\nvar attributesMap = {\n 'fill': 'fill',\n 'stroke': 'stroke',\n 'stroke-width': 'lineWidth',\n 'opacity': 'opacity',\n 'fill-opacity': 'fillOpacity',\n 'stroke-opacity': 'strokeOpacity',\n 'stroke-dasharray': 'lineDash',\n 'stroke-dashoffset': 'lineDashOffset',\n 'stroke-linecap': 'lineCap',\n 'stroke-linejoin': 'lineJoin',\n 'stroke-miterlimit': 'miterLimit',\n 'font-family': 'fontFamily',\n 'font-size': 'fontSize',\n 'font-style': 'fontStyle',\n 'font-weight': 'fontWeight',\n 'text-align': 'textAlign',\n 'alignment-baseline': 'textBaseline'\n};\n\nfunction parseAttributes(xmlNode, el, defs, onlyInlineStyle) {\n var zrStyle = el.__inheritedStyle || {};\n var isTextEl = el.type === 'text'; // TODO Shadow\n\n if (xmlNode.nodeType === 1) {\n parseTransformAttribute(xmlNode, el);\n extend(zrStyle, parseStyleAttribute(xmlNode));\n\n if (!onlyInlineStyle) {\n for (var svgAttrName in attributesMap) {\n if (attributesMap.hasOwnProperty(svgAttrName)) {\n var attrValue = xmlNode.getAttribute(svgAttrName);\n\n if (attrValue != null) {\n zrStyle[attributesMap[svgAttrName]] = attrValue;\n }\n }\n }\n }\n }\n\n var elFillProp = isTextEl ? 'textFill' : 'fill';\n var elStrokeProp = isTextEl ? 'textStroke' : 'stroke';\n el.style = el.style || new Style();\n var elStyle = el.style;\n zrStyle.fill != null && elStyle.set(elFillProp, getPaint(zrStyle.fill, defs));\n zrStyle.stroke != null && elStyle.set(elStrokeProp, getPaint(zrStyle.stroke, defs));\n each(['lineWidth', 'opacity', 'fillOpacity', 'strokeOpacity', 'miterLimit', 'fontSize'], function (propName) {\n var elPropName = propName === 'lineWidth' && isTextEl ? 'textStrokeWidth' : propName;\n zrStyle[propName] != null && elStyle.set(elPropName, parseFloat(zrStyle[propName]));\n });\n\n if (!zrStyle.textBaseline || zrStyle.textBaseline === 'auto') {\n zrStyle.textBaseline = 'alphabetic';\n }\n\n if (zrStyle.textBaseline === 'alphabetic') {\n zrStyle.textBaseline = 'bottom';\n }\n\n if (zrStyle.textAlign === 'start') {\n zrStyle.textAlign = 'left';\n }\n\n if (zrStyle.textAlign === 'end') {\n zrStyle.textAlign = 'right';\n }\n\n each(['lineDashOffset', 'lineCap', 'lineJoin', 'fontWeight', 'fontFamily', 'fontStyle', 'textAlign', 'textBaseline'], function (propName) {\n zrStyle[propName] != null && elStyle.set(propName, zrStyle[propName]);\n });\n\n if (zrStyle.lineDash) {\n el.style.lineDash = trim(zrStyle.lineDash).split(DILIMITER_REG);\n }\n\n if (elStyle[elStrokeProp] && elStyle[elStrokeProp] !== 'none') {\n // enable stroke\n el[elStrokeProp] = true;\n }\n\n el.__inheritedStyle = zrStyle;\n}\n\nvar urlRegex = /url\\(\\s*#(.*?)\\)/;\n\nfunction getPaint(str, defs) {\n // if (str === 'none') {\n // return;\n // }\n var urlMatch = defs && str && str.match(urlRegex);\n\n if (urlMatch) {\n var url = trim(urlMatch[1]);\n var def = defs[url];\n return def;\n }\n\n return str;\n}\n\nvar transformRegex = /(translate|scale|rotate|skewX|skewY|matrix)\\(([\\-\\s0-9\\.e,]*)\\)/g;\n\nfunction parseTransformAttribute(xmlNode, node) {\n var transform = xmlNode.getAttribute('transform');\n\n if (transform) {\n transform = transform.replace(/,/g, ' ');\n var m = null;\n var transformOps = [];\n transform.replace(transformRegex, function (str, type, value) {\n transformOps.push(type, value);\n });\n\n for (var i = transformOps.length - 1; i > 0; i -= 2) {\n var value = transformOps[i];\n var type = transformOps[i - 1];\n m = m || matrix.create();\n\n switch (type) {\n case 'translate':\n value = trim(value).split(DILIMITER_REG);\n matrix.translate(m, m, [parseFloat(value[0]), parseFloat(value[1] || 0)]);\n break;\n\n case 'scale':\n value = trim(value).split(DILIMITER_REG);\n matrix.scale(m, m, [parseFloat(value[0]), parseFloat(value[1] || value[0])]);\n break;\n\n case 'rotate':\n value = trim(value).split(DILIMITER_REG);\n matrix.rotate(m, m, parseFloat(value[0]));\n break;\n\n case 'skew':\n value = trim(value).split(DILIMITER_REG);\n console.warn('Skew transform is not supported yet');\n break;\n\n case 'matrix':\n var value = trim(value).split(DILIMITER_REG);\n m[0] = parseFloat(value[0]);\n m[1] = parseFloat(value[1]);\n m[2] = parseFloat(value[2]);\n m[3] = parseFloat(value[3]);\n m[4] = parseFloat(value[4]);\n m[5] = parseFloat(value[5]);\n break;\n }\n }\n\n node.setLocalTransform(m);\n }\n} // Value may contain space.\n\n\nvar styleRegex = /([^\\s:;]+)\\s*:\\s*([^:;]+)/g;\n\nfunction parseStyleAttribute(xmlNode) {\n var style = xmlNode.getAttribute('style');\n var result = {};\n\n if (!style) {\n return result;\n }\n\n var styleList = {};\n styleRegex.lastIndex = 0;\n var styleRegResult;\n\n while ((styleRegResult = styleRegex.exec(style)) != null) {\n styleList[styleRegResult[1]] = styleRegResult[2];\n }\n\n for (var svgAttrName in attributesMap) {\n if (attributesMap.hasOwnProperty(svgAttrName) && styleList[svgAttrName] != null) {\n result[attributesMap[svgAttrName]] = styleList[svgAttrName];\n }\n }\n\n return result;\n}\n/**\n * @param {Array.} viewBoxRect\n * @param {number} width\n * @param {number} height\n * @return {Object} {scale, position}\n */\n\n\nfunction makeViewBoxTransform(viewBoxRect, width, height) {\n var scaleX = width / viewBoxRect.width;\n var scaleY = height / viewBoxRect.height;\n var scale = Math.min(scaleX, scaleY); // preserveAspectRatio 'xMidYMid'\n\n var viewBoxScale = [scale, scale];\n var viewBoxPosition = [-(viewBoxRect.x + viewBoxRect.width / 2) * scale + width / 2, -(viewBoxRect.y + viewBoxRect.height / 2) * scale + height / 2];\n return {\n scale: viewBoxScale,\n position: viewBoxPosition\n };\n}\n/**\n * @param {string|XMLElement} xml\n * @param {Object} [opt]\n * @param {number} [opt.width] Default width if svg width not specified or is a percent value.\n * @param {number} [opt.height] Default height if svg height not specified or is a percent value.\n * @param {boolean} [opt.ignoreViewBox]\n * @param {boolean} [opt.ignoreRootClip]\n * @return {Object} result:\n * {\n * root: Group, The root of the the result tree of zrender shapes,\n * width: number, the viewport width of the SVG,\n * height: number, the viewport height of the SVG,\n * viewBoxRect: {x, y, width, height}, the declared viewBox rect of the SVG, if exists,\n * viewBoxTransform: the {scale, position} calculated by viewBox and viewport, is exists.\n * }\n */\n\n\nfunction parseSVG(xml, opt) {\n var parser = new SVGParser();\n return parser.parse(xml, opt);\n}\n\nexports.parseXML = parseXML;\nexports.makeViewBoxTransform = makeViewBoxTransform;\nexports.parseSVG = parseSVG;","var _vector = require(\"../../core/vector\");\n\nvar v2Distance = _vector.distance;\n\n/**\n * Catmull-Rom spline 插值折线\n * @module zrender/shape/util/smoothSpline\n * @author pissang (https://www.github.com/pissang)\n * Kener (@Kener-林峰, kener.linfeng@gmail.com)\n * errorrik (errorrik@gmail.com)\n */\n\n/**\n * @inner\n */\nfunction interpolate(p0, p1, p2, p3, t, t2, t3) {\n var v0 = (p2 - p0) * 0.5;\n var v1 = (p3 - p1) * 0.5;\n return (2 * (p1 - p2) + v0 + v1) * t3 + (-3 * (p1 - p2) - 2 * v0 - v1) * t2 + v0 * t + p1;\n}\n/**\n * @alias module:zrender/shape/util/smoothSpline\n * @param {Array} points 线段顶点数组\n * @param {boolean} isLoop\n * @return {Array}\n */\n\n\nfunction _default(points, isLoop) {\n var len = points.length;\n var ret = [];\n var distance = 0;\n\n for (var i = 1; i < len; i++) {\n distance += v2Distance(points[i - 1], points[i]);\n }\n\n var segs = distance / 2;\n segs = segs < len ? len : segs;\n\n for (var i = 0; i < segs; i++) {\n var pos = i / (segs - 1) * (isLoop ? len : len - 1);\n var idx = Math.floor(pos);\n var w = pos - idx;\n var p0;\n var p1 = points[idx % len];\n var p2;\n var p3;\n\n if (!isLoop) {\n p0 = points[idx === 0 ? idx : idx - 1];\n p2 = points[idx > len - 2 ? len - 1 : idx + 1];\n p3 = points[idx > len - 3 ? len - 1 : idx + 2];\n } else {\n p0 = points[(idx - 1 + len) % len];\n p2 = points[(idx + 1) % len];\n p3 = points[(idx + 2) % len];\n }\n\n var w2 = w * w;\n var w3 = w * w2;\n ret.push([interpolate(p0[0], p1[0], p2[0], p3[0], w, w2, w3), interpolate(p0[1], p1[1], p2[1], p3[1], w, w2, w3)]);\n }\n\n return ret;\n}\n\nmodule.exports = _default;","var _vector = require(\"../../core/vector\");\n\nvar v2Min = _vector.min;\nvar v2Max = _vector.max;\nvar v2Scale = _vector.scale;\nvar v2Distance = _vector.distance;\nvar v2Add = _vector.add;\nvar v2Clone = _vector.clone;\nvar v2Sub = _vector.sub;\n\n/**\n * 贝塞尔平滑曲线\n * @module zrender/shape/util/smoothBezier\n * @author pissang (https://www.github.com/pissang)\n * Kener (@Kener-林峰, kener.linfeng@gmail.com)\n * errorrik (errorrik@gmail.com)\n */\n\n/**\n * 贝塞尔平滑曲线\n * @alias module:zrender/shape/util/smoothBezier\n * @param {Array} points 线段顶点数组\n * @param {number} smooth 平滑等级, 0-1\n * @param {boolean} isLoop\n * @param {Array} constraint 将计算出来的控制点约束在一个包围盒内\n * 比如 [[0, 0], [100, 100]], 这个包围盒会与\n * 整个折线的包围盒做一个并集用来约束控制点。\n * @param {Array} 计算出来的控制点数组\n */\nfunction _default(points, smooth, isLoop, constraint) {\n var cps = [];\n var v = [];\n var v1 = [];\n var v2 = [];\n var prevPoint;\n var nextPoint;\n var min;\n var max;\n\n if (constraint) {\n min = [Infinity, Infinity];\n max = [-Infinity, -Infinity];\n\n for (var i = 0, len = points.length; i < len; i++) {\n v2Min(min, min, points[i]);\n v2Max(max, max, points[i]);\n } // 与指定的包围盒做并集\n\n\n v2Min(min, min, constraint[0]);\n v2Max(max, max, constraint[1]);\n }\n\n for (var i = 0, len = points.length; i < len; i++) {\n var point = points[i];\n\n if (isLoop) {\n prevPoint = points[i ? i - 1 : len - 1];\n nextPoint = points[(i + 1) % len];\n } else {\n if (i === 0 || i === len - 1) {\n cps.push(v2Clone(points[i]));\n continue;\n } else {\n prevPoint = points[i - 1];\n nextPoint = points[i + 1];\n }\n }\n\n v2Sub(v, nextPoint, prevPoint); // use degree to scale the handle length\n\n v2Scale(v, v, smooth);\n var d0 = v2Distance(point, prevPoint);\n var d1 = v2Distance(point, nextPoint);\n var sum = d0 + d1;\n\n if (sum !== 0) {\n d0 /= sum;\n d1 /= sum;\n }\n\n v2Scale(v1, v, -d0);\n v2Scale(v2, v, d1);\n var cp0 = v2Add([], point, v1);\n var cp1 = v2Add([], point, v2);\n\n if (constraint) {\n v2Max(cp0, cp0, min);\n v2Min(cp0, cp0, max);\n v2Max(cp1, cp1, min);\n v2Min(cp1, cp1, max);\n }\n\n cps.push(cp0);\n cps.push(cp1);\n }\n\n if (isLoop) {\n cps.push(cps.shift());\n }\n\n return cps;\n}\n\nmodule.exports = _default;","var Path = require(\"./Path\");\n\n// CompoundPath to improve performance\nvar _default = Path.extend({\n type: 'compound',\n shape: {\n paths: null\n },\n _updatePathDirty: function () {\n var dirtyPath = this.__dirtyPath;\n var paths = this.shape.paths;\n\n for (var i = 0; i < paths.length; i++) {\n // Mark as dirty if any subpath is dirty\n dirtyPath = dirtyPath || paths[i].__dirtyPath;\n }\n\n this.__dirtyPath = dirtyPath;\n this.__dirty = this.__dirty || dirtyPath;\n },\n beforeBrush: function () {\n this._updatePathDirty();\n\n var paths = this.shape.paths || [];\n var scale = this.getGlobalScale(); // Update path scale\n\n for (var i = 0; i < paths.length; i++) {\n if (!paths[i].path) {\n paths[i].createPathProxy();\n }\n\n paths[i].path.setScale(scale[0], scale[1], paths[i].segmentIgnoreThreshold);\n }\n },\n buildPath: function (ctx, shape) {\n var paths = shape.paths || [];\n\n for (var i = 0; i < paths.length; i++) {\n paths[i].buildPath(ctx, paths[i].shape, true);\n }\n },\n afterBrush: function () {\n var paths = this.shape.paths || [];\n\n for (var i = 0; i < paths.length; i++) {\n paths[i].__dirtyPath = false;\n }\n },\n getBoundingRect: function () {\n this._updatePathDirty();\n\n return Path.prototype.getBoundingRect.call(this);\n }\n});\n\nmodule.exports = _default;","var _util = require(\"../core/util\");\n\nvar inherits = _util.inherits;\n\nvar Displayble = require(\"./Displayable\");\n\nvar BoundingRect = require(\"../core/BoundingRect\");\n\n/**\n * Displayable for incremental rendering. It will be rendered in a separate layer\n * IncrementalDisplay have two main methods. `clearDisplayables` and `addDisplayables`\n * addDisplayables will render the added displayables incremetally.\n *\n * It use a not clearFlag to tell the painter don't clear the layer if it's the first element.\n */\n// TODO Style override ?\nfunction IncrementalDisplayble(opts) {\n Displayble.call(this, opts);\n this._displayables = [];\n this._temporaryDisplayables = [];\n this._cursor = 0;\n this.notClear = true;\n}\n\nIncrementalDisplayble.prototype.incremental = true;\n\nIncrementalDisplayble.prototype.clearDisplaybles = function () {\n this._displayables = [];\n this._temporaryDisplayables = [];\n this._cursor = 0;\n this.dirty();\n this.notClear = false;\n};\n\nIncrementalDisplayble.prototype.addDisplayable = function (displayable, notPersistent) {\n if (notPersistent) {\n this._temporaryDisplayables.push(displayable);\n } else {\n this._displayables.push(displayable);\n }\n\n this.dirty();\n};\n\nIncrementalDisplayble.prototype.addDisplayables = function (displayables, notPersistent) {\n notPersistent = notPersistent || false;\n\n for (var i = 0; i < displayables.length; i++) {\n this.addDisplayable(displayables[i], notPersistent);\n }\n};\n\nIncrementalDisplayble.prototype.eachPendingDisplayable = function (cb) {\n for (var i = this._cursor; i < this._displayables.length; i++) {\n cb && cb(this._displayables[i]);\n }\n\n for (var i = 0; i < this._temporaryDisplayables.length; i++) {\n cb && cb(this._temporaryDisplayables[i]);\n }\n};\n\nIncrementalDisplayble.prototype.update = function () {\n this.updateTransform();\n\n for (var i = this._cursor; i < this._displayables.length; i++) {\n var displayable = this._displayables[i]; // PENDING\n\n displayable.parent = this;\n displayable.update();\n displayable.parent = null;\n }\n\n for (var i = 0; i < this._temporaryDisplayables.length; i++) {\n var displayable = this._temporaryDisplayables[i]; // PENDING\n\n displayable.parent = this;\n displayable.update();\n displayable.parent = null;\n }\n};\n\nIncrementalDisplayble.prototype.brush = function (ctx, prevEl) {\n // Render persistant displayables.\n for (var i = this._cursor; i < this._displayables.length; i++) {\n var displayable = this._displayables[i];\n displayable.beforeBrush && displayable.beforeBrush(ctx);\n displayable.brush(ctx, i === this._cursor ? null : this._displayables[i - 1]);\n displayable.afterBrush && displayable.afterBrush(ctx);\n }\n\n this._cursor = i; // Render temporary displayables.\n\n for (var i = 0; i < this._temporaryDisplayables.length; i++) {\n var displayable = this._temporaryDisplayables[i];\n displayable.beforeBrush && displayable.beforeBrush(ctx);\n displayable.brush(ctx, i === 0 ? null : this._temporaryDisplayables[i - 1]);\n displayable.afterBrush && displayable.afterBrush(ctx);\n }\n\n this._temporaryDisplayables = [];\n this.notClear = true;\n};\n\nvar m = [];\n\nIncrementalDisplayble.prototype.getBoundingRect = function () {\n if (!this._rect) {\n var rect = new BoundingRect(Infinity, Infinity, -Infinity, -Infinity);\n\n for (var i = 0; i < this._displayables.length; i++) {\n var displayable = this._displayables[i];\n var childRect = displayable.getBoundingRect().clone();\n\n if (displayable.needLocalTransform()) {\n childRect.applyTransform(displayable.getLocalTransform(m));\n }\n\n rect.union(childRect);\n }\n\n this._rect = rect;\n }\n\n return this._rect;\n};\n\nIncrementalDisplayble.prototype.contain = function (x, y) {\n var localPos = this.transformCoordToLocal(x, y);\n var rect = this.getBoundingRect();\n\n if (rect.contain(localPos[0], localPos[1])) {\n for (var i = 0; i < this._displayables.length; i++) {\n var displayable = this._displayables[i];\n\n if (displayable.contain(x, y)) {\n return true;\n }\n }\n }\n\n return false;\n};\n\ninherits(IncrementalDisplayble, Displayble);\nvar _default = IncrementalDisplayble;\nmodule.exports = _default;","var Path = require(\"../Path\");\n\n/**\n * 圆弧\n * @module zrender/graphic/shape/Arc\n */\nvar _default = Path.extend({\n type: 'arc',\n shape: {\n cx: 0,\n cy: 0,\n r: 0,\n startAngle: 0,\n endAngle: Math.PI * 2,\n clockwise: true\n },\n style: {\n stroke: '#000',\n fill: null\n },\n buildPath: function (ctx, shape) {\n var x = shape.cx;\n var y = shape.cy;\n var r = Math.max(shape.r, 0);\n var startAngle = shape.startAngle;\n var endAngle = shape.endAngle;\n var clockwise = shape.clockwise;\n var unitX = Math.cos(startAngle);\n var unitY = Math.sin(startAngle);\n ctx.moveTo(unitX * r + x, unitY * r + y);\n ctx.arc(x, y, r, startAngle, endAngle, !clockwise);\n }\n});\n\nmodule.exports = _default;","var Path = require(\"../Path\");\n\nvar vec2 = require(\"../../core/vector\");\n\nvar _curve = require(\"../../core/curve\");\n\nvar quadraticSubdivide = _curve.quadraticSubdivide;\nvar cubicSubdivide = _curve.cubicSubdivide;\nvar quadraticAt = _curve.quadraticAt;\nvar cubicAt = _curve.cubicAt;\nvar quadraticDerivativeAt = _curve.quadraticDerivativeAt;\nvar cubicDerivativeAt = _curve.cubicDerivativeAt;\n\n/**\n * 贝塞尔曲线\n * @module zrender/shape/BezierCurve\n */\nvar out = [];\n\nfunction someVectorAt(shape, t, isTangent) {\n var cpx2 = shape.cpx2;\n var cpy2 = shape.cpy2;\n\n if (cpx2 === null || cpy2 === null) {\n return [(isTangent ? cubicDerivativeAt : cubicAt)(shape.x1, shape.cpx1, shape.cpx2, shape.x2, t), (isTangent ? cubicDerivativeAt : cubicAt)(shape.y1, shape.cpy1, shape.cpy2, shape.y2, t)];\n } else {\n return [(isTangent ? quadraticDerivativeAt : quadraticAt)(shape.x1, shape.cpx1, shape.x2, t), (isTangent ? quadraticDerivativeAt : quadraticAt)(shape.y1, shape.cpy1, shape.y2, t)];\n }\n}\n\nvar _default = Path.extend({\n type: 'bezier-curve',\n shape: {\n x1: 0,\n y1: 0,\n x2: 0,\n y2: 0,\n cpx1: 0,\n cpy1: 0,\n // cpx2: 0,\n // cpy2: 0\n // Curve show percent, for animating\n percent: 1\n },\n style: {\n stroke: '#000',\n fill: null\n },\n buildPath: function (ctx, shape) {\n var x1 = shape.x1;\n var y1 = shape.y1;\n var x2 = shape.x2;\n var y2 = shape.y2;\n var cpx1 = shape.cpx1;\n var cpy1 = shape.cpy1;\n var cpx2 = shape.cpx2;\n var cpy2 = shape.cpy2;\n var percent = shape.percent;\n\n if (percent === 0) {\n return;\n }\n\n ctx.moveTo(x1, y1);\n\n if (cpx2 == null || cpy2 == null) {\n if (percent < 1) {\n quadraticSubdivide(x1, cpx1, x2, percent, out);\n cpx1 = out[1];\n x2 = out[2];\n quadraticSubdivide(y1, cpy1, y2, percent, out);\n cpy1 = out[1];\n y2 = out[2];\n }\n\n ctx.quadraticCurveTo(cpx1, cpy1, x2, y2);\n } else {\n if (percent < 1) {\n cubicSubdivide(x1, cpx1, cpx2, x2, percent, out);\n cpx1 = out[1];\n cpx2 = out[2];\n x2 = out[3];\n cubicSubdivide(y1, cpy1, cpy2, y2, percent, out);\n cpy1 = out[1];\n cpy2 = out[2];\n y2 = out[3];\n }\n\n ctx.bezierCurveTo(cpx1, cpy1, cpx2, cpy2, x2, y2);\n }\n },\n\n /**\n * Get point at percent\n * @param {number} t\n * @return {Array.}\n */\n pointAt: function (t) {\n return someVectorAt(this.shape, t, false);\n },\n\n /**\n * Get tangent at percent\n * @param {number} t\n * @return {Array.}\n */\n tangentAt: function (t) {\n var p = someVectorAt(this.shape, t, true);\n return vec2.normalize(p, p);\n }\n});\n\nmodule.exports = _default;","var Path = require(\"../Path\");\n\n/**\n * 水滴形状\n * @module zrender/graphic/shape/Droplet\n */\nvar _default = Path.extend({\n type: 'droplet',\n shape: {\n cx: 0,\n cy: 0,\n width: 0,\n height: 0\n },\n buildPath: function (ctx, shape) {\n var x = shape.cx;\n var y = shape.cy;\n var a = shape.width;\n var b = shape.height;\n ctx.moveTo(x, y + a);\n ctx.bezierCurveTo(x + a, y + a, x + a * 3 / 2, y - a / 3, x, y - b);\n ctx.bezierCurveTo(x - a * 3 / 2, y - a / 3, x - a, y + a, x, y + a);\n ctx.closePath();\n }\n});\n\nmodule.exports = _default;","var Path = require(\"../Path\");\n\n/**\n * 心形\n * @module zrender/graphic/shape/Heart\n */\nvar _default = Path.extend({\n type: 'heart',\n shape: {\n cx: 0,\n cy: 0,\n width: 0,\n height: 0\n },\n buildPath: function (ctx, shape) {\n var x = shape.cx;\n var y = shape.cy;\n var a = shape.width;\n var b = shape.height;\n ctx.moveTo(x, y);\n ctx.bezierCurveTo(x + a / 2, y - b * 2 / 3, x + a * 2, y + b / 3, x, y + b);\n ctx.bezierCurveTo(x - a * 2, y + b / 3, x - a / 2, y - b * 2 / 3, x, y);\n }\n});\n\nmodule.exports = _default;","var Path = require(\"../Path\");\n\n/**\n * 正多边形\n * @module zrender/shape/Isogon\n */\nvar PI = Math.PI;\nvar sin = Math.sin;\nvar cos = Math.cos;\n\nvar _default = Path.extend({\n type: 'isogon',\n shape: {\n x: 0,\n y: 0,\n r: 0,\n n: 0\n },\n buildPath: function (ctx, shape) {\n var n = shape.n;\n\n if (!n || n < 2) {\n return;\n }\n\n var x = shape.x;\n var y = shape.y;\n var r = shape.r;\n var dStep = 2 * PI / n;\n var deg = -PI / 2;\n ctx.moveTo(x + r * cos(deg), y + r * sin(deg));\n\n for (var i = 0, end = n - 1; i < end; i++) {\n deg += dStep;\n ctx.lineTo(x + r * cos(deg), y + r * sin(deg));\n }\n\n ctx.closePath();\n return;\n }\n});\n\nmodule.exports = _default;","var Path = require(\"../Path\");\n\n/**\n * 圆环\n * @module zrender/graphic/shape/Ring\n */\nvar _default = Path.extend({\n type: 'ring',\n shape: {\n cx: 0,\n cy: 0,\n r: 0,\n r0: 0\n },\n buildPath: function (ctx, shape) {\n var x = shape.cx;\n var y = shape.cy;\n var PI2 = Math.PI * 2;\n ctx.moveTo(x + shape.r, y);\n ctx.arc(x, y, shape.r, 0, PI2, false);\n ctx.moveTo(x + shape.r0, y);\n ctx.arc(x, y, shape.r0, 0, PI2, true);\n }\n});\n\nmodule.exports = _default;","var Path = require(\"../Path\");\n\n/**\n * 玫瑰线\n * @module zrender/graphic/shape/Rose\n */\nvar sin = Math.sin;\nvar cos = Math.cos;\nvar radian = Math.PI / 180;\n\nvar _default = Path.extend({\n type: 'rose',\n shape: {\n cx: 0,\n cy: 0,\n r: [],\n k: 0,\n n: 1\n },\n style: {\n stroke: '#000',\n fill: null\n },\n buildPath: function (ctx, shape) {\n var x;\n var y;\n var R = shape.r;\n var r;\n var k = shape.k;\n var n = shape.n;\n var x0 = shape.cx;\n var y0 = shape.cy;\n ctx.moveTo(x0, y0);\n\n for (var i = 0, len = R.length; i < len; i++) {\n r = R[i];\n\n for (var j = 0; j <= 360 * n; j++) {\n x = r * sin(k / n * j % 360 * radian) * cos(j * radian) + x0;\n y = r * sin(k / n * j % 360 * radian) * sin(j * radian) + y0;\n ctx.lineTo(x, y);\n }\n }\n }\n});\n\nmodule.exports = _default;","var Path = require(\"../Path\");\n\nvar fixClipWithShadow = require(\"../helper/fixClipWithShadow\");\n\n/**\n * 扇形\n * @module zrender/graphic/shape/Sector\n */\nvar _default = Path.extend({\n type: 'sector',\n shape: {\n cx: 0,\n cy: 0,\n r0: 0,\n r: 0,\n startAngle: 0,\n endAngle: Math.PI * 2,\n clockwise: true\n },\n brush: fixClipWithShadow(Path.prototype.brush),\n buildPath: function (ctx, shape) {\n var x = shape.cx;\n var y = shape.cy;\n var r0 = Math.max(shape.r0 || 0, 0);\n var r = Math.max(shape.r, 0);\n var startAngle = shape.startAngle;\n var endAngle = shape.endAngle;\n var clockwise = shape.clockwise;\n var unitX = Math.cos(startAngle);\n var unitY = Math.sin(startAngle);\n ctx.moveTo(unitX * r0 + x, unitY * r0 + y);\n ctx.lineTo(unitX * r + x, unitY * r + y);\n ctx.arc(x, y, r, startAngle, endAngle, !clockwise);\n ctx.lineTo(Math.cos(endAngle) * r0 + x, Math.sin(endAngle) * r0 + y);\n\n if (r0 !== 0) {\n ctx.arc(x, y, r0, endAngle, startAngle, clockwise);\n }\n\n ctx.closePath();\n }\n});\n\nmodule.exports = _default;","var env = require(\"../../core/env\");\n\n// Fix weird bug in some version of IE11 (like 11.0.9600.178**),\n// where exception \"unexpected call to method or property access\"\n// might be thrown when calling ctx.fill or ctx.stroke after a path\n// whose area size is zero is drawn and ctx.clip() is called and\n// shadowBlur is set. See #4572, #3112, #5777.\n// (e.g.,\n// ctx.moveTo(10, 10);\n// ctx.lineTo(20, 10);\n// ctx.closePath();\n// ctx.clip();\n// ctx.shadowBlur = 10;\n// ...\n// ctx.fill();\n// )\nvar shadowTemp = [['shadowBlur', 0], ['shadowColor', '#000'], ['shadowOffsetX', 0], ['shadowOffsetY', 0]];\n\nfunction _default(orignalBrush) {\n // version string can be: '11.0'\n return env.browser.ie && env.browser.version >= 11 ? function () {\n var clipPaths = this.__clipPaths;\n var style = this.style;\n var modified;\n\n if (clipPaths) {\n for (var i = 0; i < clipPaths.length; i++) {\n var clipPath = clipPaths[i];\n var shape = clipPath && clipPath.shape;\n var type = clipPath && clipPath.type;\n\n if (shape && (type === 'sector' && shape.startAngle === shape.endAngle || type === 'rect' && (!shape.width || !shape.height))) {\n for (var j = 0; j < shadowTemp.length; j++) {\n // It is save to put shadowTemp static, because shadowTemp\n // will be all modified each item brush called.\n shadowTemp[j][2] = style[shadowTemp[j][0]];\n style[shadowTemp[j][0]] = shadowTemp[j][1];\n }\n\n modified = true;\n break;\n }\n }\n }\n\n orignalBrush.apply(this, arguments);\n\n if (modified) {\n for (var j = 0; j < shadowTemp.length; j++) {\n style[shadowTemp[j][0]] = shadowTemp[j][2];\n }\n }\n } : orignalBrush;\n}\n\nmodule.exports = _default;","var Path = require(\"../Path\");\n\n/**\n * n角星(n>3)\n * @module zrender/graphic/shape/Star\n */\nvar PI = Math.PI;\nvar cos = Math.cos;\nvar sin = Math.sin;\n\nvar _default = Path.extend({\n type: 'star',\n shape: {\n cx: 0,\n cy: 0,\n n: 3,\n r0: null,\n r: 0\n },\n buildPath: function (ctx, shape) {\n var n = shape.n;\n\n if (!n || n < 2) {\n return;\n }\n\n var x = shape.cx;\n var y = shape.cy;\n var r = shape.r;\n var r0 = shape.r0; // 如果未指定内部顶点外接圆半径,则自动计算\n\n if (r0 == null) {\n r0 = n > 4 // 相隔的外部顶点的连线的交点,\n // 被取为内部交点,以此计算r0\n ? r * cos(2 * PI / n) / cos(PI / n) // 二三四角星的特殊处理\n : r / 3;\n }\n\n var dStep = PI / n;\n var deg = -PI / 2;\n var xStart = x + r * cos(deg);\n var yStart = y + r * sin(deg);\n deg += dStep; // 记录边界点,用于判断inside\n\n ctx.moveTo(xStart, yStart);\n\n for (var i = 0, end = n * 2 - 1, ri; i < end; i++) {\n ri = i % 2 === 0 ? r0 : r;\n ctx.lineTo(x + ri * cos(deg), y + ri * sin(deg));\n deg += dStep;\n }\n\n ctx.closePath();\n }\n});\n\nmodule.exports = _default;","var Path = require(\"../Path\");\n\n/**\n * 内外旋轮曲线\n * @module zrender/graphic/shape/Trochold\n */\nvar cos = Math.cos;\nvar sin = Math.sin;\n\nvar _default = Path.extend({\n type: 'trochoid',\n shape: {\n cx: 0,\n cy: 0,\n r: 0,\n r0: 0,\n d: 0,\n location: 'out'\n },\n style: {\n stroke: '#000',\n fill: null\n },\n buildPath: function (ctx, shape) {\n var x1;\n var y1;\n var x2;\n var y2;\n var R = shape.r;\n var r = shape.r0;\n var d = shape.d;\n var offsetX = shape.cx;\n var offsetY = shape.cy;\n var delta = shape.location === 'out' ? 1 : -1;\n\n if (shape.location && R <= r) {\n return;\n }\n\n var num = 0;\n var i = 1;\n var theta;\n x1 = (R + delta * r) * cos(0) - delta * d * cos(0) + offsetX;\n y1 = (R + delta * r) * sin(0) - d * sin(0) + offsetY;\n ctx.moveTo(x1, y1); // 计算结束时的i\n\n do {\n num++;\n } while (r * num % (R + delta * r) !== 0);\n\n do {\n theta = Math.PI / 180 * i;\n x2 = (R + delta * r) * cos(theta) - delta * d * cos((R / r + delta) * theta) + offsetX;\n y2 = (R + delta * r) * sin(theta) - d * sin((R / r + delta) * theta) + offsetY;\n ctx.lineTo(x2, y2);\n i++;\n } while (i <= r * num / (R + delta * r) * 360);\n }\n});\n\nmodule.exports = _default;","var zrUtil = require(\"../core/util\");\n\nvar Gradient = require(\"./Gradient\");\n\n/**\n * x, y, r are all percent from 0 to 1\n * @param {number} [x=0.5]\n * @param {number} [y=0.5]\n * @param {number} [r=0.5]\n * @param {Array.} [colorStops]\n * @param {boolean} [globalCoord=false]\n */\nvar RadialGradient = function (x, y, r, colorStops, globalCoord) {\n // Should do nothing more in this constructor. Because gradient can be\n // declard by `color: {type: 'radial', colorStops: ...}`, where\n // this constructor will not be called.\n this.x = x == null ? 0.5 : x;\n this.y = y == null ? 0.5 : y;\n this.r = r == null ? 0.5 : r; // Can be cloned\n\n this.type = 'radial'; // If use global coord\n\n this.global = globalCoord || false;\n Gradient.call(this, colorStops);\n};\n\nRadialGradient.prototype = {\n constructor: RadialGradient\n};\nzrUtil.inherits(RadialGradient, Gradient);\nvar _default = RadialGradient;\nmodule.exports = _default;","require(\"./graphic\");\n\nvar _zrender = require(\"../zrender\");\n\nvar registerPainter = _zrender.registerPainter;\n\nvar Painter = require(\"./Painter\");\n\nregisterPainter('svg', Painter);","var _core = require(\"./core\");\n\nvar createElement = _core.createElement;\n\nvar util = require(\"../core/util\");\n\nvar logError = require(\"../core/log\");\n\nvar Path = require(\"../graphic/Path\");\n\nvar ZImage = require(\"../graphic/Image\");\n\nvar ZText = require(\"../graphic/Text\");\n\nvar arrayDiff = require(\"../core/arrayDiff2\");\n\nvar GradientManager = require(\"./helper/GradientManager\");\n\nvar ClippathManager = require(\"./helper/ClippathManager\");\n\nvar ShadowManager = require(\"./helper/ShadowManager\");\n\nvar _graphic = require(\"./graphic\");\n\nvar svgPath = _graphic.path;\nvar svgImage = _graphic.image;\nvar svgText = _graphic.text;\n\n/**\n * SVG Painter\n * @module zrender/svg/Painter\n */\nfunction parseInt10(val) {\n return parseInt(val, 10);\n}\n\nfunction getSvgProxy(el) {\n if (el instanceof Path) {\n return svgPath;\n } else if (el instanceof ZImage) {\n return svgImage;\n } else if (el instanceof ZText) {\n return svgText;\n } else {\n return svgPath;\n }\n}\n\nfunction checkParentAvailable(parent, child) {\n return child && parent && child.parentNode !== parent;\n}\n\nfunction insertAfter(parent, child, prevSibling) {\n if (checkParentAvailable(parent, child) && prevSibling) {\n var nextSibling = prevSibling.nextSibling;\n nextSibling ? parent.insertBefore(child, nextSibling) : parent.appendChild(child);\n }\n}\n\nfunction prepend(parent, child) {\n if (checkParentAvailable(parent, child)) {\n var firstChild = parent.firstChild;\n firstChild ? parent.insertBefore(child, firstChild) : parent.appendChild(child);\n }\n} // function append(parent, child) {\n// if (checkParentAvailable(parent, child)) {\n// parent.appendChild(child);\n// }\n// }\n\n\nfunction remove(parent, child) {\n if (child && parent && child.parentNode === parent) {\n parent.removeChild(child);\n }\n}\n\nfunction getTextSvgElement(displayable) {\n return displayable.__textSvgEl;\n}\n\nfunction getSvgElement(displayable) {\n return displayable.__svgEl;\n}\n/**\n * @alias module:zrender/svg/Painter\n * @constructor\n * @param {HTMLElement} root 绘图容器\n * @param {module:zrender/Storage} storage\n * @param {Object} opts\n */\n\n\nvar SVGPainter = function (root, storage, opts, zrId) {\n this.root = root;\n this.storage = storage;\n this._opts = opts = util.extend({}, opts || {});\n var svgDom = createElement('svg');\n svgDom.setAttribute('xmlns', 'http://www.w3.org/2000/svg');\n svgDom.setAttribute('version', '1.1');\n svgDom.setAttribute('baseProfile', 'full');\n svgDom.style.cssText = 'user-select:none;position:absolute;left:0;top:0;';\n var bgRoot = createElement('g');\n svgDom.appendChild(bgRoot);\n var svgRoot = createElement('g');\n svgDom.appendChild(svgRoot);\n this.gradientManager = new GradientManager(zrId, svgRoot);\n this.clipPathManager = new ClippathManager(zrId, svgRoot);\n this.shadowManager = new ShadowManager(zrId, svgRoot);\n var viewport = document.createElement('div');\n viewport.style.cssText = 'overflow:hidden;position:relative';\n this._svgDom = svgDom;\n this._svgRoot = svgRoot;\n this._backgroundRoot = bgRoot;\n this._viewport = viewport;\n root.appendChild(viewport);\n viewport.appendChild(svgDom);\n this.resize(opts.width, opts.height);\n this._visibleList = [];\n};\n\nSVGPainter.prototype = {\n constructor: SVGPainter,\n getType: function () {\n return 'svg';\n },\n getViewportRoot: function () {\n return this._viewport;\n },\n getSvgDom: function () {\n return this._svgDom;\n },\n getSvgRoot: function () {\n return this._svgRoot;\n },\n getViewportRootOffset: function () {\n var viewportRoot = this.getViewportRoot();\n\n if (viewportRoot) {\n return {\n offsetLeft: viewportRoot.offsetLeft || 0,\n offsetTop: viewportRoot.offsetTop || 0\n };\n }\n },\n refresh: function () {\n var list = this.storage.getDisplayList(true);\n\n this._paintList(list);\n },\n setBackgroundColor: function (backgroundColor) {\n // TODO gradient\n // Insert a bg rect instead of setting background to viewport.\n // Otherwise, the exported SVG don't have background.\n if (this._backgroundRoot && this._backgroundNode) {\n this._backgroundRoot.removeChild(this._backgroundNode);\n }\n\n var bgNode = createElement('rect');\n bgNode.setAttribute('width', this.getWidth());\n bgNode.setAttribute('height', this.getHeight());\n bgNode.setAttribute('x', 0);\n bgNode.setAttribute('y', 0);\n bgNode.setAttribute('id', 0);\n bgNode.style.fill = backgroundColor;\n\n this._backgroundRoot.appendChild(bgNode);\n\n this._backgroundNode = bgNode;\n },\n _paintList: function (list) {\n this.gradientManager.markAllUnused();\n this.clipPathManager.markAllUnused();\n this.shadowManager.markAllUnused();\n var svgRoot = this._svgRoot;\n var visibleList = this._visibleList;\n var listLen = list.length;\n var newVisibleList = [];\n var i;\n\n for (i = 0; i < listLen; i++) {\n var displayable = list[i];\n var svgProxy = getSvgProxy(displayable);\n var svgElement = getSvgElement(displayable) || getTextSvgElement(displayable);\n\n if (!displayable.invisible) {\n if (displayable.__dirty) {\n svgProxy && svgProxy.brush(displayable); // Update clipPath\n\n this.clipPathManager.update(displayable); // Update gradient and shadow\n\n if (displayable.style) {\n this.gradientManager.update(displayable.style.fill);\n this.gradientManager.update(displayable.style.stroke);\n this.shadowManager.update(svgElement, displayable);\n }\n\n displayable.__dirty = false;\n }\n\n newVisibleList.push(displayable);\n }\n }\n\n var diff = arrayDiff(visibleList, newVisibleList);\n var prevSvgElement; // First do remove, in case element moved to the head and do remove\n // after add\n\n for (i = 0; i < diff.length; i++) {\n var item = diff[i];\n\n if (item.removed) {\n for (var k = 0; k < item.count; k++) {\n var displayable = visibleList[item.indices[k]];\n var svgElement = getSvgElement(displayable);\n var textSvgElement = getTextSvgElement(displayable);\n remove(svgRoot, svgElement);\n remove(svgRoot, textSvgElement);\n }\n }\n }\n\n for (i = 0; i < diff.length; i++) {\n var item = diff[i];\n\n if (item.added) {\n for (var k = 0; k < item.count; k++) {\n var displayable = newVisibleList[item.indices[k]];\n var svgElement = getSvgElement(displayable);\n var textSvgElement = getTextSvgElement(displayable);\n prevSvgElement ? insertAfter(svgRoot, svgElement, prevSvgElement) : prepend(svgRoot, svgElement);\n\n if (svgElement) {\n insertAfter(svgRoot, textSvgElement, svgElement);\n } else if (prevSvgElement) {\n insertAfter(svgRoot, textSvgElement, prevSvgElement);\n } else {\n prepend(svgRoot, textSvgElement);\n } // Insert text\n\n\n insertAfter(svgRoot, textSvgElement, svgElement);\n prevSvgElement = textSvgElement || svgElement || prevSvgElement; // zrender.Text only create textSvgElement.\n\n this.gradientManager.addWithoutUpdate(svgElement || textSvgElement, displayable);\n this.shadowManager.addWithoutUpdate(svgElement || textSvgElement, displayable);\n this.clipPathManager.markUsed(displayable);\n }\n } else if (!item.removed) {\n for (var k = 0; k < item.count; k++) {\n var displayable = newVisibleList[item.indices[k]];\n var svgElement = getSvgElement(displayable);\n var textSvgElement = getTextSvgElement(displayable);\n var svgElement = getSvgElement(displayable);\n var textSvgElement = getTextSvgElement(displayable);\n this.gradientManager.markUsed(displayable);\n this.gradientManager.addWithoutUpdate(svgElement || textSvgElement, displayable);\n this.shadowManager.markUsed(displayable);\n this.shadowManager.addWithoutUpdate(svgElement || textSvgElement, displayable);\n this.clipPathManager.markUsed(displayable);\n\n if (textSvgElement) {\n // Insert text.\n insertAfter(svgRoot, textSvgElement, svgElement);\n }\n\n prevSvgElement = svgElement || textSvgElement || prevSvgElement;\n }\n }\n }\n\n this.gradientManager.removeUnused();\n this.clipPathManager.removeUnused();\n this.shadowManager.removeUnused();\n this._visibleList = newVisibleList;\n },\n _getDefs: function (isForceCreating) {\n var svgRoot = this._svgDom;\n var defs = svgRoot.getElementsByTagName('defs');\n\n if (defs.length === 0) {\n // Not exist\n if (isForceCreating) {\n var defs = svgRoot.insertBefore(createElement('defs'), // Create new tag\n svgRoot.firstChild // Insert in the front of svg\n );\n\n if (!defs.contains) {\n // IE doesn't support contains method\n defs.contains = function (el) {\n var children = defs.children;\n\n if (!children) {\n return false;\n }\n\n for (var i = children.length - 1; i >= 0; --i) {\n if (children[i] === el) {\n return true;\n }\n }\n\n return false;\n };\n }\n\n return defs;\n } else {\n return null;\n }\n } else {\n return defs[0];\n }\n },\n resize: function (width, height) {\n var viewport = this._viewport; // FIXME Why ?\n\n viewport.style.display = 'none'; // Save input w/h\n\n var opts = this._opts;\n width != null && (opts.width = width);\n height != null && (opts.height = height);\n width = this._getSize(0);\n height = this._getSize(1);\n viewport.style.display = '';\n\n if (this._width !== width || this._height !== height) {\n this._width = width;\n this._height = height;\n var viewportStyle = viewport.style;\n viewportStyle.width = width + 'px';\n viewportStyle.height = height + 'px';\n var svgRoot = this._svgDom; // Set width by 'svgRoot.width = width' is invalid\n\n svgRoot.setAttribute('width', width);\n svgRoot.setAttribute('height', height);\n }\n\n if (this._backgroundNode) {\n this._backgroundNode.setAttribute('width', width);\n\n this._backgroundNode.setAttribute('height', height);\n }\n },\n\n /**\n * 获取绘图区域宽度\n */\n getWidth: function () {\n return this._width;\n },\n\n /**\n * 获取绘图区域高度\n */\n getHeight: function () {\n return this._height;\n },\n _getSize: function (whIdx) {\n var opts = this._opts;\n var wh = ['width', 'height'][whIdx];\n var cwh = ['clientWidth', 'clientHeight'][whIdx];\n var plt = ['paddingLeft', 'paddingTop'][whIdx];\n var prb = ['paddingRight', 'paddingBottom'][whIdx];\n\n if (opts[wh] != null && opts[wh] !== 'auto') {\n return parseFloat(opts[wh]);\n }\n\n var root = this.root; // IE8 does not support getComputedStyle, but it use VML.\n\n var stl = document.defaultView.getComputedStyle(root);\n return (root[cwh] || parseInt10(stl[wh]) || parseInt10(root.style[wh])) - (parseInt10(stl[plt]) || 0) - (parseInt10(stl[prb]) || 0) | 0;\n },\n dispose: function () {\n this.root.innerHTML = '';\n this._svgRoot = this._backgroundRoot = this._svgDom = this._backgroundNode = this._viewport = this.storage = null;\n },\n clear: function () {\n if (this._viewport) {\n this.root.removeChild(this._viewport);\n }\n },\n toDataURL: function () {\n this.refresh();\n var html = encodeURIComponent(this._svgDom.outerHTML.replace(/>\\n\\r<'));\n return 'data:image/svg+xml;charset=UTF-8,' + html;\n }\n}; // Not supported methods\n\nfunction createMethodNotSupport(method) {\n return function () {\n logError('In SVG mode painter not support method \"' + method + '\"');\n };\n} // Unsuppoted methods\n\n\nutil.each(['getLayer', 'insertLayer', 'eachLayer', 'eachBuiltinLayer', 'eachOtherLayer', 'getLayers', 'modLayer', 'delLayer', 'clearLayer', 'pathToImage'], function (name) {\n SVGPainter.prototype[name] = createMethodNotSupport(name);\n});\nvar _default = SVGPainter;\nmodule.exports = _default;","// Myers' Diff Algorithm\n// Modified from https://github.com/kpdecker/jsdiff/blob/master/src/diff/base.js\nfunction Diff() {}\n\nDiff.prototype = {\n diff: function (oldArr, newArr, equals) {\n if (!equals) {\n equals = function (a, b) {\n return a === b;\n };\n }\n\n this.equals = equals;\n var self = this;\n oldArr = oldArr.slice();\n newArr = newArr.slice(); // Allow subclasses to massage the input prior to running\n\n var newLen = newArr.length;\n var oldLen = oldArr.length;\n var editLength = 1;\n var maxEditLength = newLen + oldLen;\n var bestPath = [{\n newPos: -1,\n components: []\n }]; // Seed editLength = 0, i.e. the content starts with the same values\n\n var oldPos = this.extractCommon(bestPath[0], newArr, oldArr, 0);\n\n if (bestPath[0].newPos + 1 >= newLen && oldPos + 1 >= oldLen) {\n var indices = [];\n\n for (var i = 0; i < newArr.length; i++) {\n indices.push(i);\n } // Identity per the equality and tokenizer\n\n\n return [{\n indices: indices,\n count: newArr.length\n }];\n } // Main worker method. checks all permutations of a given edit length for acceptance.\n\n\n function execEditLength() {\n for (var diagonalPath = -1 * editLength; diagonalPath <= editLength; diagonalPath += 2) {\n var basePath;\n var addPath = bestPath[diagonalPath - 1];\n var removePath = bestPath[diagonalPath + 1];\n var oldPos = (removePath ? removePath.newPos : 0) - diagonalPath;\n\n if (addPath) {\n // No one else is going to attempt to use this value, clear it\n bestPath[diagonalPath - 1] = undefined;\n }\n\n var canAdd = addPath && addPath.newPos + 1 < newLen;\n var canRemove = removePath && 0 <= oldPos && oldPos < oldLen;\n\n if (!canAdd && !canRemove) {\n // If this path is a terminal then prune\n bestPath[diagonalPath] = undefined;\n continue;\n } // Select the diagonal that we want to branch from. We select the prior\n // path whose position in the new string is the farthest from the origin\n // and does not pass the bounds of the diff graph\n\n\n if (!canAdd || canRemove && addPath.newPos < removePath.newPos) {\n basePath = clonePath(removePath);\n self.pushComponent(basePath.components, undefined, true);\n } else {\n basePath = addPath; // No need to clone, we've pulled it from the list\n\n basePath.newPos++;\n self.pushComponent(basePath.components, true, undefined);\n }\n\n oldPos = self.extractCommon(basePath, newArr, oldArr, diagonalPath); // If we have hit the end of both strings, then we are done\n\n if (basePath.newPos + 1 >= newLen && oldPos + 1 >= oldLen) {\n return buildValues(self, basePath.components, newArr, oldArr);\n } else {\n // Otherwise track this path as a potential candidate and continue.\n bestPath[diagonalPath] = basePath;\n }\n }\n\n editLength++;\n }\n\n while (editLength <= maxEditLength) {\n var ret = execEditLength();\n\n if (ret) {\n return ret;\n }\n }\n },\n pushComponent: function (components, added, removed) {\n var last = components[components.length - 1];\n\n if (last && last.added === added && last.removed === removed) {\n // We need to clone here as the component clone operation is just\n // as shallow array clone\n components[components.length - 1] = {\n count: last.count + 1,\n added: added,\n removed: removed\n };\n } else {\n components.push({\n count: 1,\n added: added,\n removed: removed\n });\n }\n },\n extractCommon: function (basePath, newArr, oldArr, diagonalPath) {\n var newLen = newArr.length;\n var oldLen = oldArr.length;\n var newPos = basePath.newPos;\n var oldPos = newPos - diagonalPath;\n var commonCount = 0;\n\n while (newPos + 1 < newLen && oldPos + 1 < oldLen && this.equals(newArr[newPos + 1], oldArr[oldPos + 1])) {\n newPos++;\n oldPos++;\n commonCount++;\n }\n\n if (commonCount) {\n basePath.components.push({\n count: commonCount\n });\n }\n\n basePath.newPos = newPos;\n return oldPos;\n },\n tokenize: function (value) {\n return value.slice();\n },\n join: function (value) {\n return value.slice();\n }\n};\n\nfunction buildValues(diff, components, newArr, oldArr) {\n var componentPos = 0;\n var componentLen = components.length;\n var newPos = 0;\n var oldPos = 0;\n\n for (; componentPos < componentLen; componentPos++) {\n var component = components[componentPos];\n\n if (!component.removed) {\n var indices = [];\n\n for (var i = newPos; i < newPos + component.count; i++) {\n indices.push(i);\n }\n\n component.indices = indices;\n newPos += component.count; // Common case\n\n if (!component.added) {\n oldPos += component.count;\n }\n } else {\n var indices = [];\n\n for (var i = oldPos; i < oldPos + component.count; i++) {\n indices.push(i);\n }\n\n component.indices = indices;\n oldPos += component.count;\n }\n }\n\n return components;\n}\n\nfunction clonePath(path) {\n return {\n newPos: path.newPos,\n components: path.components.slice(0)\n };\n}\n\nvar arrayDiff = new Diff();\n\nfunction _default(oldArr, newArr, callback) {\n return arrayDiff.diff(oldArr, newArr, callback);\n}\n\nmodule.exports = _default;","var Definable = require(\"./Definable\");\n\nvar zrUtil = require(\"../../core/util\");\n\nvar logError = require(\"../../core/log\");\n\nvar colorTool = require(\"../../tool/color\");\n\n/**\n * @file Manages SVG gradient elements.\n * @author Zhang Wenli\n */\n\n/**\n * Manages SVG gradient elements.\n *\n * @class\n * @extends Definable\n * @param {number} zrId zrender instance id\n * @param {SVGElement} svgRoot root of SVG document\n */\nfunction GradientManager(zrId, svgRoot) {\n Definable.call(this, zrId, svgRoot, ['linearGradient', 'radialGradient'], '__gradient_in_use__');\n}\n\nzrUtil.inherits(GradientManager, Definable);\n/**\n * Create new gradient DOM for fill or stroke if not exist,\n * but will not update gradient if exists.\n *\n * @param {SvgElement} svgElement SVG element to paint\n * @param {Displayable} displayable zrender displayable element\n */\n\nGradientManager.prototype.addWithoutUpdate = function (svgElement, displayable) {\n if (displayable && displayable.style) {\n var that = this;\n zrUtil.each(['fill', 'stroke'], function (fillOrStroke) {\n if (displayable.style[fillOrStroke] && (displayable.style[fillOrStroke].type === 'linear' || displayable.style[fillOrStroke].type === 'radial')) {\n var gradient = displayable.style[fillOrStroke];\n var defs = that.getDefs(true); // Create dom in if not exists\n\n var dom;\n\n if (gradient._dom) {\n // Gradient exists\n dom = gradient._dom;\n\n if (!defs.contains(gradient._dom)) {\n // _dom is no longer in defs, recreate\n that.addDom(dom);\n }\n } else {\n // New dom\n dom = that.add(gradient);\n }\n\n that.markUsed(displayable);\n var id = dom.getAttribute('id');\n svgElement.setAttribute(fillOrStroke, 'url(#' + id + ')');\n }\n });\n }\n};\n/**\n * Add a new gradient tag in \n *\n * @param {Gradient} gradient zr gradient instance\n * @return {SVGLinearGradientElement | SVGRadialGradientElement}\n * created DOM\n */\n\n\nGradientManager.prototype.add = function (gradient) {\n var dom;\n\n if (gradient.type === 'linear') {\n dom = this.createElement('linearGradient');\n } else if (gradient.type === 'radial') {\n dom = this.createElement('radialGradient');\n } else {\n logError('Illegal gradient type.');\n return null;\n } // Set dom id with gradient id, since each gradient instance\n // will have no more than one dom element.\n // id may exists before for those dirty elements, in which case\n // id should remain the same, and other attributes should be\n // updated.\n\n\n gradient.id = gradient.id || this.nextId++;\n dom.setAttribute('id', 'zr' + this._zrId + '-gradient-' + gradient.id);\n this.updateDom(gradient, dom);\n this.addDom(dom);\n return dom;\n};\n/**\n * Update gradient.\n *\n * @param {Gradient} gradient zr gradient instance\n */\n\n\nGradientManager.prototype.update = function (gradient) {\n var that = this;\n Definable.prototype.update.call(this, gradient, function () {\n var type = gradient.type;\n var tagName = gradient._dom.tagName;\n\n if (type === 'linear' && tagName === 'linearGradient' || type === 'radial' && tagName === 'radialGradient') {\n // Gradient type is not changed, update gradient\n that.updateDom(gradient, gradient._dom);\n } else {\n // Remove and re-create if type is changed\n that.removeDom(gradient);\n that.add(gradient);\n }\n });\n};\n/**\n * Update gradient dom\n *\n * @param {Gradient} gradient zr gradient instance\n * @param {SVGLinearGradientElement | SVGRadialGradientElement} dom\n * DOM to update\n */\n\n\nGradientManager.prototype.updateDom = function (gradient, dom) {\n if (gradient.type === 'linear') {\n dom.setAttribute('x1', gradient.x);\n dom.setAttribute('y1', gradient.y);\n dom.setAttribute('x2', gradient.x2);\n dom.setAttribute('y2', gradient.y2);\n } else if (gradient.type === 'radial') {\n dom.setAttribute('cx', gradient.x);\n dom.setAttribute('cy', gradient.y);\n dom.setAttribute('r', gradient.r);\n } else {\n logError('Illegal gradient type.');\n return;\n }\n\n if (gradient.global) {\n // x1, x2, y1, y2 in range of 0 to canvas width or height\n dom.setAttribute('gradientUnits', 'userSpaceOnUse');\n } else {\n // x1, x2, y1, y2 in range of 0 to 1\n dom.setAttribute('gradientUnits', 'objectBoundingBox');\n } // Remove color stops if exists\n\n\n dom.innerHTML = ''; // Add color stops\n\n var colors = gradient.colorStops;\n\n for (var i = 0, len = colors.length; i < len; ++i) {\n var stop = this.createElement('stop');\n stop.setAttribute('offset', colors[i].offset * 100 + '%');\n var color = colors[i].color;\n\n if (color.indexOf('rgba') > -1) {\n // Fix Safari bug that stop-color not recognizing alpha #9014\n var opacity = colorTool.parse(color)[3];\n var hex = colorTool.toHex(color); // stop-color cannot be color, since:\n // The opacity value used for the gradient calculation is the\n // *product* of the value of stop-opacity and the opacity of the\n // value of stop-color.\n // See https://www.w3.org/TR/SVG2/pservers.html#StopOpacityProperty\n\n stop.setAttribute('stop-color', '#' + hex);\n stop.setAttribute('stop-opacity', opacity);\n } else {\n stop.setAttribute('stop-color', colors[i].color);\n }\n\n dom.appendChild(stop);\n } // Store dom element in gradient, to avoid creating multiple\n // dom instances for the same gradient element\n\n\n gradient._dom = dom;\n};\n/**\n * Mark a single gradient to be used\n *\n * @param {Displayable} displayable displayable element\n */\n\n\nGradientManager.prototype.markUsed = function (displayable) {\n if (displayable.style) {\n var gradient = displayable.style.fill;\n\n if (gradient && gradient._dom) {\n Definable.prototype.markUsed.call(this, gradient._dom);\n }\n\n gradient = displayable.style.stroke;\n\n if (gradient && gradient._dom) {\n Definable.prototype.markUsed.call(this, gradient._dom);\n }\n }\n};\n\nvar _default = GradientManager;\nmodule.exports = _default;","var Definable = require(\"./Definable\");\n\nvar zrUtil = require(\"../../core/util\");\n\nvar matrix = require(\"../../core/matrix\");\n\n/**\n * @file Manages SVG clipPath elements.\n * @author Zhang Wenli\n */\n\n/**\n * Manages SVG clipPath elements.\n *\n * @class\n * @extends Definable\n * @param {number} zrId zrender instance id\n * @param {SVGElement} svgRoot root of SVG document\n */\nfunction ClippathManager(zrId, svgRoot) {\n Definable.call(this, zrId, svgRoot, 'clipPath', '__clippath_in_use__');\n}\n\nzrUtil.inherits(ClippathManager, Definable);\n/**\n * Update clipPath.\n *\n * @param {Displayable} displayable displayable element\n */\n\nClippathManager.prototype.update = function (displayable) {\n var svgEl = this.getSvgElement(displayable);\n\n if (svgEl) {\n this.updateDom(svgEl, displayable.__clipPaths, false);\n }\n\n var textEl = this.getTextSvgElement(displayable);\n\n if (textEl) {\n // Make another clipPath for text, since it's transform\n // matrix is not the same with svgElement\n this.updateDom(textEl, displayable.__clipPaths, true);\n }\n\n this.markUsed(displayable);\n};\n/**\n * Create an SVGElement of displayable and create a of its\n * clipPath\n *\n * @param {Displayable} parentEl parent element\n * @param {ClipPath[]} clipPaths clipPaths of parent element\n * @param {boolean} isText if parent element is Text\n */\n\n\nClippathManager.prototype.updateDom = function (parentEl, clipPaths, isText) {\n if (clipPaths && clipPaths.length > 0) {\n // Has clipPath, create with the first clipPath\n var defs = this.getDefs(true);\n var clipPath = clipPaths[0];\n var clipPathEl;\n var id;\n var dom = isText ? '_textDom' : '_dom';\n\n if (clipPath[dom]) {\n // Use a dom that is already in \n id = clipPath[dom].getAttribute('id');\n clipPathEl = clipPath[dom]; // Use a dom that is already in \n\n if (!defs.contains(clipPathEl)) {\n // This happens when set old clipPath that has\n // been previously removed\n defs.appendChild(clipPathEl);\n }\n } else {\n // New \n id = 'zr' + this._zrId + '-clip-' + this.nextId;\n ++this.nextId;\n clipPathEl = this.createElement('clipPath');\n clipPathEl.setAttribute('id', id);\n defs.appendChild(clipPathEl);\n clipPath[dom] = clipPathEl;\n } // Build path and add to \n\n\n var svgProxy = this.getSvgProxy(clipPath);\n\n if (clipPath.transform && clipPath.parent.invTransform && !isText) {\n /**\n * If a clipPath has a parent with transform, the transform\n * of parent should not be considered when setting transform\n * of clipPath. So we need to transform back from parent's\n * transform, which is done by multiplying parent's inverse\n * transform.\n */\n // Store old transform\n var transform = Array.prototype.slice.call(clipPath.transform); // Transform back from parent, and brush path\n\n matrix.mul(clipPath.transform, clipPath.parent.invTransform, clipPath.transform);\n svgProxy.brush(clipPath); // Set back transform of clipPath\n\n clipPath.transform = transform;\n } else {\n svgProxy.brush(clipPath);\n }\n\n var pathEl = this.getSvgElement(clipPath);\n clipPathEl.innerHTML = '';\n /**\n * Use `cloneNode()` here to appendChild to multiple parents,\n * which may happend when Text and other shapes are using the same\n * clipPath. Since Text will create an extra clipPath DOM due to\n * different transform rules.\n */\n\n clipPathEl.appendChild(pathEl.cloneNode());\n parentEl.setAttribute('clip-path', 'url(#' + id + ')');\n\n if (clipPaths.length > 1) {\n // Make the other clipPaths recursively\n this.updateDom(clipPathEl, clipPaths.slice(1), isText);\n }\n } else {\n // No clipPath\n if (parentEl) {\n parentEl.setAttribute('clip-path', 'none');\n }\n }\n};\n/**\n * Mark a single clipPath to be used\n *\n * @param {Displayable} displayable displayable element\n */\n\n\nClippathManager.prototype.markUsed = function (displayable) {\n var that = this; // displayable.__clipPaths can only be `null`/`undefined` or an non-empty array.\n\n if (displayable.__clipPaths) {\n zrUtil.each(displayable.__clipPaths, function (clipPath) {\n if (clipPath._dom) {\n Definable.prototype.markUsed.call(that, clipPath._dom);\n }\n\n if (clipPath._textDom) {\n Definable.prototype.markUsed.call(that, clipPath._textDom);\n }\n });\n }\n};\n\nvar _default = ClippathManager;\nmodule.exports = _default;","var Definable = require(\"./Definable\");\n\nvar zrUtil = require(\"../../core/util\");\n\n/**\n * @file Manages SVG shadow elements.\n * @author Zhang Wenli\n */\n\n/**\n * Manages SVG shadow elements.\n *\n * @class\n * @extends Definable\n * @param {number} zrId zrender instance id\n * @param {SVGElement} svgRoot root of SVG document\n */\nfunction ShadowManager(zrId, svgRoot) {\n Definable.call(this, zrId, svgRoot, ['filter'], '__filter_in_use__', '_shadowDom');\n}\n\nzrUtil.inherits(ShadowManager, Definable);\n/**\n * Create new shadow DOM for fill or stroke if not exist,\n * but will not update shadow if exists.\n *\n * @param {SvgElement} svgElement SVG element to paint\n * @param {Displayable} displayable zrender displayable element\n */\n\nShadowManager.prototype.addWithoutUpdate = function (svgElement, displayable) {\n if (displayable && hasShadow(displayable.style)) {\n // Create dom in if not exists\n var dom;\n\n if (displayable._shadowDom) {\n // Gradient exists\n dom = displayable._shadowDom;\n var defs = this.getDefs(true);\n\n if (!defs.contains(displayable._shadowDom)) {\n // _shadowDom is no longer in defs, recreate\n this.addDom(dom);\n }\n } else {\n // New dom\n dom = this.add(displayable);\n }\n\n this.markUsed(displayable);\n var id = dom.getAttribute('id');\n svgElement.style.filter = 'url(#' + id + ')';\n }\n};\n/**\n * Add a new shadow tag in \n *\n * @param {Displayable} displayable zrender displayable element\n * @return {SVGFilterElement} created DOM\n */\n\n\nShadowManager.prototype.add = function (displayable) {\n var dom = this.createElement('filter'); // Set dom id with shadow id, since each shadow instance\n // will have no more than one dom element.\n // id may exists before for those dirty elements, in which case\n // id should remain the same, and other attributes should be\n // updated.\n\n displayable._shadowDomId = displayable._shadowDomId || this.nextId++;\n dom.setAttribute('id', 'zr' + this._zrId + '-shadow-' + displayable._shadowDomId);\n this.updateDom(displayable, dom);\n this.addDom(dom);\n return dom;\n};\n/**\n * Update shadow.\n *\n * @param {Displayable} displayable zrender displayable element\n */\n\n\nShadowManager.prototype.update = function (svgElement, displayable) {\n var style = displayable.style;\n\n if (hasShadow(style)) {\n var that = this;\n Definable.prototype.update.call(this, displayable, function () {\n that.updateDom(displayable, displayable._shadowDom);\n });\n } else {\n // Remove shadow\n this.remove(svgElement, displayable);\n }\n};\n/**\n * Remove DOM and clear parent filter\n */\n\n\nShadowManager.prototype.remove = function (svgElement, displayable) {\n if (displayable._shadowDomId != null) {\n this.removeDom(svgElement);\n svgElement.style.filter = '';\n }\n};\n/**\n * Update shadow dom\n *\n * @param {Displayable} displayable zrender displayable element\n * @param {SVGFilterElement} dom DOM to update\n */\n\n\nShadowManager.prototype.updateDom = function (displayable, dom) {\n var domChild = dom.getElementsByTagName('feDropShadow');\n\n if (domChild.length === 0) {\n domChild = this.createElement('feDropShadow');\n } else {\n domChild = domChild[0];\n }\n\n var style = displayable.style;\n var scaleX = displayable.scale ? displayable.scale[0] || 1 : 1;\n var scaleY = displayable.scale ? displayable.scale[1] || 1 : 1; // TODO: textBoxShadowBlur is not supported yet\n\n var offsetX;\n var offsetY;\n var blur;\n var color;\n\n if (style.shadowBlur || style.shadowOffsetX || style.shadowOffsetY) {\n offsetX = style.shadowOffsetX || 0;\n offsetY = style.shadowOffsetY || 0;\n blur = style.shadowBlur;\n color = style.shadowColor;\n } else if (style.textShadowBlur) {\n offsetX = style.textShadowOffsetX || 0;\n offsetY = style.textShadowOffsetY || 0;\n blur = style.textShadowBlur;\n color = style.textShadowColor;\n } else {\n // Remove shadow\n this.removeDom(dom, style);\n return;\n }\n\n domChild.setAttribute('dx', offsetX / scaleX);\n domChild.setAttribute('dy', offsetY / scaleY);\n domChild.setAttribute('flood-color', color); // Divide by two here so that it looks the same as in canvas\n // See: https://html.spec.whatwg.org/multipage/canvas.html#dom-context-2d-shadowblur\n\n var stdDx = blur / 2 / scaleX;\n var stdDy = blur / 2 / scaleY;\n var stdDeviation = stdDx + ' ' + stdDy;\n domChild.setAttribute('stdDeviation', stdDeviation); // Fix filter clipping problem\n\n dom.setAttribute('x', '-100%');\n dom.setAttribute('y', '-100%');\n dom.setAttribute('width', Math.ceil(blur / 2 * 200) + '%');\n dom.setAttribute('height', Math.ceil(blur / 2 * 200) + '%');\n dom.appendChild(domChild); // Store dom element in shadow, to avoid creating multiple\n // dom instances for the same shadow element\n\n displayable._shadowDom = dom;\n};\n/**\n * Mark a single shadow to be used\n *\n * @param {Displayable} displayable displayable element\n */\n\n\nShadowManager.prototype.markUsed = function (displayable) {\n if (displayable._shadowDom) {\n Definable.prototype.markUsed.call(this, displayable._shadowDom);\n }\n};\n\nfunction hasShadow(style) {\n // TODO: textBoxShadowBlur is not supported yet\n return style && (style.shadowBlur || style.shadowOffsetX || style.shadowOffsetY || style.textShadowBlur || style.textShadowOffsetX || style.textShadowOffsetY);\n}\n\nvar _default = ShadowManager;\nmodule.exports = _default;","require(\"./graphic\");\n\nvar _zrender = require(\"../zrender\");\n\nvar registerPainter = _zrender.registerPainter;\n\nvar Painter = require(\"./Painter\");\n\nregisterPainter('vml', Painter);","var env = require(\"../core/env\");\n\nvar _vector = require(\"../core/vector\");\n\nvar applyTransform = _vector.applyTransform;\n\nvar BoundingRect = require(\"../core/BoundingRect\");\n\nvar colorTool = require(\"../tool/color\");\n\nvar textContain = require(\"../contain/text\");\n\nvar textHelper = require(\"../graphic/helper/text\");\n\nvar RectText = require(\"../graphic/mixin/RectText\");\n\nvar Displayable = require(\"../graphic/Displayable\");\n\nvar ZImage = require(\"../graphic/Image\");\n\nvar Text = require(\"../graphic/Text\");\n\nvar Path = require(\"../graphic/Path\");\n\nvar PathProxy = require(\"../core/PathProxy\");\n\nvar Gradient = require(\"../graphic/Gradient\");\n\nvar vmlCore = require(\"./core\");\n\n// http://www.w3.org/TR/NOTE-VML\n// TODO Use proxy like svg instead of overwrite brush methods\nvar CMD = PathProxy.CMD;\nvar round = Math.round;\nvar sqrt = Math.sqrt;\nvar abs = Math.abs;\nvar cos = Math.cos;\nvar sin = Math.sin;\nvar mathMax = Math.max;\n\nif (!env.canvasSupported) {\n var comma = ',';\n var imageTransformPrefix = 'progid:DXImageTransform.Microsoft';\n var Z = 21600;\n var Z2 = Z / 2;\n var ZLEVEL_BASE = 100000;\n var Z_BASE = 1000;\n\n var initRootElStyle = function (el) {\n el.style.cssText = 'position:absolute;left:0;top:0;width:1px;height:1px;';\n el.coordsize = Z + ',' + Z;\n el.coordorigin = '0,0';\n };\n\n var encodeHtmlAttribute = function (s) {\n return String(s).replace(/&/g, '&').replace(/\"/g, '"');\n };\n\n var rgb2Str = function (r, g, b) {\n return 'rgb(' + [r, g, b].join(',') + ')';\n };\n\n var append = function (parent, child) {\n if (child && parent && child.parentNode !== parent) {\n parent.appendChild(child);\n }\n };\n\n var remove = function (parent, child) {\n if (child && parent && child.parentNode === parent) {\n parent.removeChild(child);\n }\n };\n\n var getZIndex = function (zlevel, z, z2) {\n // z 的取值范围为 [0, 1000]\n return (parseFloat(zlevel) || 0) * ZLEVEL_BASE + (parseFloat(z) || 0) * Z_BASE + z2;\n };\n\n var parsePercent = textHelper.parsePercent;\n /***************************************************\n * PATH\n **************************************************/\n\n var setColorAndOpacity = function (el, color, opacity) {\n var colorArr = colorTool.parse(color);\n opacity = +opacity;\n\n if (isNaN(opacity)) {\n opacity = 1;\n }\n\n if (colorArr) {\n el.color = rgb2Str(colorArr[0], colorArr[1], colorArr[2]);\n el.opacity = opacity * colorArr[3];\n }\n };\n\n var getColorAndAlpha = function (color) {\n var colorArr = colorTool.parse(color);\n return [rgb2Str(colorArr[0], colorArr[1], colorArr[2]), colorArr[3]];\n };\n\n var updateFillNode = function (el, style, zrEl) {\n // TODO pattern\n var fill = style.fill;\n\n if (fill != null) {\n // Modified from excanvas\n if (fill instanceof Gradient) {\n var gradientType;\n var angle = 0;\n var focus = [0, 0]; // additional offset\n\n var shift = 0; // scale factor for offset\n\n var expansion = 1;\n var rect = zrEl.getBoundingRect();\n var rectWidth = rect.width;\n var rectHeight = rect.height;\n\n if (fill.type === 'linear') {\n gradientType = 'gradient';\n var transform = zrEl.transform;\n var p0 = [fill.x * rectWidth, fill.y * rectHeight];\n var p1 = [fill.x2 * rectWidth, fill.y2 * rectHeight];\n\n if (transform) {\n applyTransform(p0, p0, transform);\n applyTransform(p1, p1, transform);\n }\n\n var dx = p1[0] - p0[0];\n var dy = p1[1] - p0[1];\n angle = Math.atan2(dx, dy) * 180 / Math.PI; // The angle should be a non-negative number.\n\n if (angle < 0) {\n angle += 360;\n } // Very small angles produce an unexpected result because they are\n // converted to a scientific notation string.\n\n\n if (angle < 1e-6) {\n angle = 0;\n }\n } else {\n gradientType = 'gradientradial';\n var p0 = [fill.x * rectWidth, fill.y * rectHeight];\n var transform = zrEl.transform;\n var scale = zrEl.scale;\n var width = rectWidth;\n var height = rectHeight;\n focus = [// Percent in bounding rect\n (p0[0] - rect.x) / width, (p0[1] - rect.y) / height];\n\n if (transform) {\n applyTransform(p0, p0, transform);\n }\n\n width /= scale[0] * Z;\n height /= scale[1] * Z;\n var dimension = mathMax(width, height);\n shift = 2 * 0 / dimension;\n expansion = 2 * fill.r / dimension - shift;\n } // We need to sort the color stops in ascending order by offset,\n // otherwise IE won't interpret it correctly.\n\n\n var stops = fill.colorStops.slice();\n stops.sort(function (cs1, cs2) {\n return cs1.offset - cs2.offset;\n });\n var length = stops.length; // Color and alpha list of first and last stop\n\n var colorAndAlphaList = [];\n var colors = [];\n\n for (var i = 0; i < length; i++) {\n var stop = stops[i];\n var colorAndAlpha = getColorAndAlpha(stop.color);\n colors.push(stop.offset * expansion + shift + ' ' + colorAndAlpha[0]);\n\n if (i === 0 || i === length - 1) {\n colorAndAlphaList.push(colorAndAlpha);\n }\n }\n\n if (length >= 2) {\n var color1 = colorAndAlphaList[0][0];\n var color2 = colorAndAlphaList[1][0];\n var opacity1 = colorAndAlphaList[0][1] * style.opacity;\n var opacity2 = colorAndAlphaList[1][1] * style.opacity;\n el.type = gradientType;\n el.method = 'none';\n el.focus = '100%';\n el.angle = angle;\n el.color = color1;\n el.color2 = color2;\n el.colors = colors.join(','); // When colors attribute is used, the meanings of opacity and o:opacity2\n // are reversed.\n\n el.opacity = opacity2; // FIXME g_o_:opacity ?\n\n el.opacity2 = opacity1;\n }\n\n if (gradientType === 'radial') {\n el.focusposition = focus.join(',');\n }\n } else {\n // FIXME Change from Gradient fill to color fill\n setColorAndOpacity(el, fill, style.opacity);\n }\n }\n };\n\n var updateStrokeNode = function (el, style) {\n // if (style.lineJoin != null) {\n // el.joinstyle = style.lineJoin;\n // }\n // if (style.miterLimit != null) {\n // el.miterlimit = style.miterLimit * Z;\n // }\n // if (style.lineCap != null) {\n // el.endcap = style.lineCap;\n // }\n if (style.lineDash) {\n el.dashstyle = style.lineDash.join(' ');\n }\n\n if (style.stroke != null && !(style.stroke instanceof Gradient)) {\n setColorAndOpacity(el, style.stroke, style.opacity);\n }\n };\n\n var updateFillAndStroke = function (vmlEl, type, style, zrEl) {\n var isFill = type === 'fill';\n var el = vmlEl.getElementsByTagName(type)[0]; // Stroke must have lineWidth\n\n if (style[type] != null && style[type] !== 'none' && (isFill || !isFill && style.lineWidth)) {\n vmlEl[isFill ? 'filled' : 'stroked'] = 'true'; // FIXME Remove before updating, or set `colors` will throw error\n\n if (style[type] instanceof Gradient) {\n remove(vmlEl, el);\n }\n\n if (!el) {\n el = vmlCore.createNode(type);\n }\n\n isFill ? updateFillNode(el, style, zrEl) : updateStrokeNode(el, style);\n append(vmlEl, el);\n } else {\n vmlEl[isFill ? 'filled' : 'stroked'] = 'false';\n remove(vmlEl, el);\n }\n };\n\n var points = [[], [], []];\n\n var pathDataToString = function (path, m) {\n var M = CMD.M;\n var C = CMD.C;\n var L = CMD.L;\n var A = CMD.A;\n var Q = CMD.Q;\n var str = [];\n var nPoint;\n var cmdStr;\n var cmd;\n var i;\n var xi;\n var yi;\n var data = path.data;\n var dataLength = path.len();\n\n for (i = 0; i < dataLength;) {\n cmd = data[i++];\n cmdStr = '';\n nPoint = 0;\n\n switch (cmd) {\n case M:\n cmdStr = ' m ';\n nPoint = 1;\n xi = data[i++];\n yi = data[i++];\n points[0][0] = xi;\n points[0][1] = yi;\n break;\n\n case L:\n cmdStr = ' l ';\n nPoint = 1;\n xi = data[i++];\n yi = data[i++];\n points[0][0] = xi;\n points[0][1] = yi;\n break;\n\n case Q:\n case C:\n cmdStr = ' c ';\n nPoint = 3;\n var x1 = data[i++];\n var y1 = data[i++];\n var x2 = data[i++];\n var y2 = data[i++];\n var x3;\n var y3;\n\n if (cmd === Q) {\n // Convert quadratic to cubic using degree elevation\n x3 = x2;\n y3 = y2;\n x2 = (x2 + 2 * x1) / 3;\n y2 = (y2 + 2 * y1) / 3;\n x1 = (xi + 2 * x1) / 3;\n y1 = (yi + 2 * y1) / 3;\n } else {\n x3 = data[i++];\n y3 = data[i++];\n }\n\n points[0][0] = x1;\n points[0][1] = y1;\n points[1][0] = x2;\n points[1][1] = y2;\n points[2][0] = x3;\n points[2][1] = y3;\n xi = x3;\n yi = y3;\n break;\n\n case A:\n var x = 0;\n var y = 0;\n var sx = 1;\n var sy = 1;\n var angle = 0;\n\n if (m) {\n // Extract SRT from matrix\n x = m[4];\n y = m[5];\n sx = sqrt(m[0] * m[0] + m[1] * m[1]);\n sy = sqrt(m[2] * m[2] + m[3] * m[3]);\n angle = Math.atan2(-m[1] / sy, m[0] / sx);\n }\n\n var cx = data[i++];\n var cy = data[i++];\n var rx = data[i++];\n var ry = data[i++];\n var startAngle = data[i++] + angle;\n var endAngle = data[i++] + startAngle + angle; // FIXME\n // var psi = data[i++];\n\n i++;\n var clockwise = data[i++];\n var x0 = cx + cos(startAngle) * rx;\n var y0 = cy + sin(startAngle) * ry;\n var x1 = cx + cos(endAngle) * rx;\n var y1 = cy + sin(endAngle) * ry;\n var type = clockwise ? ' wa ' : ' at ';\n\n if (Math.abs(x0 - x1) < 1e-4) {\n // IE won't render arches drawn counter clockwise if x0 == x1.\n if (Math.abs(endAngle - startAngle) > 1e-2) {\n // Offset x0 by 1/80 of a pixel. Use something\n // that can be represented in binary\n if (clockwise) {\n x0 += 270 / Z;\n }\n } else {\n // Avoid case draw full circle\n if (Math.abs(y0 - cy) < 1e-4) {\n if (clockwise && x0 < cx || !clockwise && x0 > cx) {\n y1 -= 270 / Z;\n } else {\n y1 += 270 / Z;\n }\n } else if (clockwise && y0 < cy || !clockwise && y0 > cy) {\n x1 += 270 / Z;\n } else {\n x1 -= 270 / Z;\n }\n }\n }\n\n str.push(type, round(((cx - rx) * sx + x) * Z - Z2), comma, round(((cy - ry) * sy + y) * Z - Z2), comma, round(((cx + rx) * sx + x) * Z - Z2), comma, round(((cy + ry) * sy + y) * Z - Z2), comma, round((x0 * sx + x) * Z - Z2), comma, round((y0 * sy + y) * Z - Z2), comma, round((x1 * sx + x) * Z - Z2), comma, round((y1 * sy + y) * Z - Z2));\n xi = x1;\n yi = y1;\n break;\n\n case CMD.R:\n var p0 = points[0];\n var p1 = points[1]; // x0, y0\n\n p0[0] = data[i++];\n p0[1] = data[i++]; // x1, y1\n\n p1[0] = p0[0] + data[i++];\n p1[1] = p0[1] + data[i++];\n\n if (m) {\n applyTransform(p0, p0, m);\n applyTransform(p1, p1, m);\n }\n\n p0[0] = round(p0[0] * Z - Z2);\n p1[0] = round(p1[0] * Z - Z2);\n p0[1] = round(p0[1] * Z - Z2);\n p1[1] = round(p1[1] * Z - Z2);\n str.push( // x0, y0\n ' m ', p0[0], comma, p0[1], // x1, y0\n ' l ', p1[0], comma, p0[1], // x1, y1\n ' l ', p1[0], comma, p1[1], // x0, y1\n ' l ', p0[0], comma, p1[1]);\n break;\n\n case CMD.Z:\n // FIXME Update xi, yi\n str.push(' x ');\n }\n\n if (nPoint > 0) {\n str.push(cmdStr);\n\n for (var k = 0; k < nPoint; k++) {\n var p = points[k];\n m && applyTransform(p, p, m); // 不 round 会非常慢\n\n str.push(round(p[0] * Z - Z2), comma, round(p[1] * Z - Z2), k < nPoint - 1 ? comma : '');\n }\n }\n }\n\n return str.join('');\n }; // Rewrite the original path method\n\n\n Path.prototype.brushVML = function (vmlRoot) {\n var style = this.style;\n var vmlEl = this._vmlEl;\n\n if (!vmlEl) {\n vmlEl = vmlCore.createNode('shape');\n initRootElStyle(vmlEl);\n this._vmlEl = vmlEl;\n }\n\n updateFillAndStroke(vmlEl, 'fill', style, this);\n updateFillAndStroke(vmlEl, 'stroke', style, this);\n var m = this.transform;\n var needTransform = m != null;\n var strokeEl = vmlEl.getElementsByTagName('stroke')[0];\n\n if (strokeEl) {\n var lineWidth = style.lineWidth; // Get the line scale.\n // Determinant of this.m_ means how much the area is enlarged by the\n // transformation. So its square root can be used as a scale factor\n // for width.\n\n if (needTransform && !style.strokeNoScale) {\n var det = m[0] * m[3] - m[1] * m[2];\n lineWidth *= sqrt(abs(det));\n }\n\n strokeEl.weight = lineWidth + 'px';\n }\n\n var path = this.path || (this.path = new PathProxy());\n\n if (this.__dirtyPath) {\n path.beginPath();\n path.subPixelOptimize = false;\n this.buildPath(path, this.shape);\n path.toStatic();\n this.__dirtyPath = false;\n }\n\n vmlEl.path = pathDataToString(path, this.transform);\n vmlEl.style.zIndex = getZIndex(this.zlevel, this.z, this.z2); // Append to root\n\n append(vmlRoot, vmlEl); // Text\n\n if (style.text != null) {\n this.drawRectText(vmlRoot, this.getBoundingRect());\n } else {\n this.removeRectText(vmlRoot);\n }\n };\n\n Path.prototype.onRemove = function (vmlRoot) {\n remove(vmlRoot, this._vmlEl);\n this.removeRectText(vmlRoot);\n };\n\n Path.prototype.onAdd = function (vmlRoot) {\n append(vmlRoot, this._vmlEl);\n this.appendRectText(vmlRoot);\n };\n /***************************************************\n * IMAGE\n **************************************************/\n\n\n var isImage = function (img) {\n // FIXME img instanceof Image 如果 img 是一个字符串的时候,IE8 下会报错\n return typeof img === 'object' && img.tagName && img.tagName.toUpperCase() === 'IMG'; // return img instanceof Image;\n }; // Rewrite the original path method\n\n\n ZImage.prototype.brushVML = function (vmlRoot) {\n var style = this.style;\n var image = style.image; // Image original width, height\n\n var ow;\n var oh;\n\n if (isImage(image)) {\n var src = image.src;\n\n if (src === this._imageSrc) {\n ow = this._imageWidth;\n oh = this._imageHeight;\n } else {\n var imageRuntimeStyle = image.runtimeStyle;\n var oldRuntimeWidth = imageRuntimeStyle.width;\n var oldRuntimeHeight = imageRuntimeStyle.height;\n imageRuntimeStyle.width = 'auto';\n imageRuntimeStyle.height = 'auto'; // get the original size\n\n ow = image.width;\n oh = image.height; // and remove overides\n\n imageRuntimeStyle.width = oldRuntimeWidth;\n imageRuntimeStyle.height = oldRuntimeHeight; // Caching image original width, height and src\n\n this._imageSrc = src;\n this._imageWidth = ow;\n this._imageHeight = oh;\n }\n\n image = src;\n } else {\n if (image === this._imageSrc) {\n ow = this._imageWidth;\n oh = this._imageHeight;\n }\n }\n\n if (!image) {\n return;\n }\n\n var x = style.x || 0;\n var y = style.y || 0;\n var dw = style.width;\n var dh = style.height;\n var sw = style.sWidth;\n var sh = style.sHeight;\n var sx = style.sx || 0;\n var sy = style.sy || 0;\n var hasCrop = sw && sh;\n var vmlEl = this._vmlEl;\n\n if (!vmlEl) {\n // FIXME 使用 group 在 left, top 都不是 0 的时候就无法显示了。\n // vmlEl = vmlCore.createNode('group');\n vmlEl = vmlCore.doc.createElement('div');\n initRootElStyle(vmlEl);\n this._vmlEl = vmlEl;\n }\n\n var vmlElStyle = vmlEl.style;\n var hasRotation = false;\n var m;\n var scaleX = 1;\n var scaleY = 1;\n\n if (this.transform) {\n m = this.transform;\n scaleX = sqrt(m[0] * m[0] + m[1] * m[1]);\n scaleY = sqrt(m[2] * m[2] + m[3] * m[3]);\n hasRotation = m[1] || m[2];\n }\n\n if (hasRotation) {\n // If filters are necessary (rotation exists), create them\n // filters are bog-slow, so only create them if abbsolutely necessary\n // The following check doesn't account for skews (which don't exist\n // in the canvas spec (yet) anyway.\n // From excanvas\n var p0 = [x, y];\n var p1 = [x + dw, y];\n var p2 = [x, y + dh];\n var p3 = [x + dw, y + dh];\n applyTransform(p0, p0, m);\n applyTransform(p1, p1, m);\n applyTransform(p2, p2, m);\n applyTransform(p3, p3, m);\n var maxX = mathMax(p0[0], p1[0], p2[0], p3[0]);\n var maxY = mathMax(p0[1], p1[1], p2[1], p3[1]);\n var transformFilter = [];\n transformFilter.push('M11=', m[0] / scaleX, comma, 'M12=', m[2] / scaleY, comma, 'M21=', m[1] / scaleX, comma, 'M22=', m[3] / scaleY, comma, 'Dx=', round(x * scaleX + m[4]), comma, 'Dy=', round(y * scaleY + m[5]));\n vmlElStyle.padding = '0 ' + round(maxX) + 'px ' + round(maxY) + 'px 0'; // FIXME DXImageTransform 在 IE11 的兼容模式下不起作用\n\n vmlElStyle.filter = imageTransformPrefix + '.Matrix(' + transformFilter.join('') + ', SizingMethod=clip)';\n } else {\n if (m) {\n x = x * scaleX + m[4];\n y = y * scaleY + m[5];\n }\n\n vmlElStyle.filter = '';\n vmlElStyle.left = round(x) + 'px';\n vmlElStyle.top = round(y) + 'px';\n }\n\n var imageEl = this._imageEl;\n var cropEl = this._cropEl;\n\n if (!imageEl) {\n imageEl = vmlCore.doc.createElement('div');\n this._imageEl = imageEl;\n }\n\n var imageELStyle = imageEl.style;\n\n if (hasCrop) {\n // Needs know image original width and height\n if (!(ow && oh)) {\n var tmpImage = new Image();\n var self = this;\n\n tmpImage.onload = function () {\n tmpImage.onload = null;\n ow = tmpImage.width;\n oh = tmpImage.height; // Adjust image width and height to fit the ratio destinationSize / sourceSize\n\n imageELStyle.width = round(scaleX * ow * dw / sw) + 'px';\n imageELStyle.height = round(scaleY * oh * dh / sh) + 'px'; // Caching image original width, height and src\n\n self._imageWidth = ow;\n self._imageHeight = oh;\n self._imageSrc = image;\n };\n\n tmpImage.src = image;\n } else {\n imageELStyle.width = round(scaleX * ow * dw / sw) + 'px';\n imageELStyle.height = round(scaleY * oh * dh / sh) + 'px';\n }\n\n if (!cropEl) {\n cropEl = vmlCore.doc.createElement('div');\n cropEl.style.overflow = 'hidden';\n this._cropEl = cropEl;\n }\n\n var cropElStyle = cropEl.style;\n cropElStyle.width = round((dw + sx * dw / sw) * scaleX);\n cropElStyle.height = round((dh + sy * dh / sh) * scaleY);\n cropElStyle.filter = imageTransformPrefix + '.Matrix(Dx=' + -sx * dw / sw * scaleX + ',Dy=' + -sy * dh / sh * scaleY + ')';\n\n if (!cropEl.parentNode) {\n vmlEl.appendChild(cropEl);\n }\n\n if (imageEl.parentNode !== cropEl) {\n cropEl.appendChild(imageEl);\n }\n } else {\n imageELStyle.width = round(scaleX * dw) + 'px';\n imageELStyle.height = round(scaleY * dh) + 'px';\n vmlEl.appendChild(imageEl);\n\n if (cropEl && cropEl.parentNode) {\n vmlEl.removeChild(cropEl);\n this._cropEl = null;\n }\n }\n\n var filterStr = '';\n var alpha = style.opacity;\n\n if (alpha < 1) {\n filterStr += '.Alpha(opacity=' + round(alpha * 100) + ') ';\n }\n\n filterStr += imageTransformPrefix + '.AlphaImageLoader(src=' + image + ', SizingMethod=scale)';\n imageELStyle.filter = filterStr;\n vmlEl.style.zIndex = getZIndex(this.zlevel, this.z, this.z2); // Append to root\n\n append(vmlRoot, vmlEl); // Text\n\n if (style.text != null) {\n this.drawRectText(vmlRoot, this.getBoundingRect());\n }\n };\n\n ZImage.prototype.onRemove = function (vmlRoot) {\n remove(vmlRoot, this._vmlEl);\n this._vmlEl = null;\n this._cropEl = null;\n this._imageEl = null;\n this.removeRectText(vmlRoot);\n };\n\n ZImage.prototype.onAdd = function (vmlRoot) {\n append(vmlRoot, this._vmlEl);\n this.appendRectText(vmlRoot);\n };\n /***************************************************\n * TEXT\n **************************************************/\n\n\n var DEFAULT_STYLE_NORMAL = 'normal';\n var fontStyleCache = {};\n var fontStyleCacheCount = 0;\n var MAX_FONT_CACHE_SIZE = 100;\n var fontEl = document.createElement('div');\n\n var getFontStyle = function (fontString) {\n var fontStyle = fontStyleCache[fontString];\n\n if (!fontStyle) {\n // Clear cache\n if (fontStyleCacheCount > MAX_FONT_CACHE_SIZE) {\n fontStyleCacheCount = 0;\n fontStyleCache = {};\n }\n\n var style = fontEl.style;\n var fontFamily;\n\n try {\n style.font = fontString;\n fontFamily = style.fontFamily.split(',')[0];\n } catch (e) {}\n\n fontStyle = {\n style: style.fontStyle || DEFAULT_STYLE_NORMAL,\n variant: style.fontVariant || DEFAULT_STYLE_NORMAL,\n weight: style.fontWeight || DEFAULT_STYLE_NORMAL,\n size: parseFloat(style.fontSize || 12) | 0,\n family: fontFamily || 'Microsoft YaHei'\n };\n fontStyleCache[fontString] = fontStyle;\n fontStyleCacheCount++;\n }\n\n return fontStyle;\n };\n\n var textMeasureEl; // Overwrite measure text method\n\n textContain.$override('measureText', function (text, textFont) {\n var doc = vmlCore.doc;\n\n if (!textMeasureEl) {\n textMeasureEl = doc.createElement('div');\n textMeasureEl.style.cssText = 'position:absolute;top:-20000px;left:0;' + 'padding:0;margin:0;border:none;white-space:pre;';\n vmlCore.doc.body.appendChild(textMeasureEl);\n }\n\n try {\n textMeasureEl.style.font = textFont;\n } catch (ex) {// Ignore failures to set to invalid font.\n }\n\n textMeasureEl.innerHTML = ''; // Don't use innerHTML or innerText because they allow markup/whitespace.\n\n textMeasureEl.appendChild(doc.createTextNode(text));\n return {\n width: textMeasureEl.offsetWidth\n };\n });\n var tmpRect = new BoundingRect();\n\n var drawRectText = function (vmlRoot, rect, textRect, fromTextEl) {\n var style = this.style; // Optimize, avoid normalize every time.\n\n this.__dirty && textHelper.normalizeTextStyle(style, true);\n var text = style.text; // Convert to string\n\n text != null && (text += '');\n\n if (!text) {\n return;\n } // Convert rich text to plain text. Rich text is not supported in\n // IE8-, but tags in rich text template will be removed.\n\n\n if (style.rich) {\n var contentBlock = textContain.parseRichText(text, style);\n text = [];\n\n for (var i = 0; i < contentBlock.lines.length; i++) {\n var tokens = contentBlock.lines[i].tokens;\n var textLine = [];\n\n for (var j = 0; j < tokens.length; j++) {\n textLine.push(tokens[j].text);\n }\n\n text.push(textLine.join(''));\n }\n\n text = text.join('\\n');\n }\n\n var x;\n var y;\n var align = style.textAlign;\n var verticalAlign = style.textVerticalAlign;\n var fontStyle = getFontStyle(style.font); // FIXME encodeHtmlAttribute ?\n\n var font = fontStyle.style + ' ' + fontStyle.variant + ' ' + fontStyle.weight + ' ' + fontStyle.size + 'px \"' + fontStyle.family + '\"';\n textRect = textRect || textContain.getBoundingRect(text, font, align, verticalAlign, style.textPadding, style.textLineHeight); // Transform rect to view space\n\n var m = this.transform; // Ignore transform for text in other element\n\n if (m && !fromTextEl) {\n tmpRect.copy(rect);\n tmpRect.applyTransform(m);\n rect = tmpRect;\n }\n\n if (!fromTextEl) {\n var textPosition = style.textPosition; // Text position represented by coord\n\n if (textPosition instanceof Array) {\n x = rect.x + parsePercent(textPosition[0], rect.width);\n y = rect.y + parsePercent(textPosition[1], rect.height);\n align = align || 'left';\n } else {\n var res = this.calculateTextPosition ? this.calculateTextPosition({}, style, rect) : textContain.calculateTextPosition({}, style, rect);\n x = res.x;\n y = res.y; // Default align and baseline when has textPosition\n\n align = align || res.textAlign;\n verticalAlign = verticalAlign || res.textVerticalAlign;\n }\n } else {\n x = rect.x;\n y = rect.y;\n }\n\n x = textContain.adjustTextX(x, textRect.width, align);\n y = textContain.adjustTextY(y, textRect.height, verticalAlign); // Force baseline 'middle'\n\n y += textRect.height / 2; // var fontSize = fontStyle.size;\n // 1.75 is an arbitrary number, as there is no info about the text baseline\n // switch (baseline) {\n // case 'hanging':\n // case 'top':\n // y += fontSize / 1.75;\n // break;\n // case 'middle':\n // break;\n // default:\n // // case null:\n // // case 'alphabetic':\n // // case 'ideographic':\n // // case 'bottom':\n // y -= fontSize / 2.25;\n // break;\n // }\n // switch (align) {\n // case 'left':\n // break;\n // case 'center':\n // x -= textRect.width / 2;\n // break;\n // case 'right':\n // x -= textRect.width;\n // break;\n // case 'end':\n // align = elementStyle.direction == 'ltr' ? 'right' : 'left';\n // break;\n // case 'start':\n // align = elementStyle.direction == 'rtl' ? 'right' : 'left';\n // break;\n // default:\n // align = 'left';\n // }\n\n var createNode = vmlCore.createNode;\n var textVmlEl = this._textVmlEl;\n var pathEl;\n var textPathEl;\n var skewEl;\n\n if (!textVmlEl) {\n textVmlEl = createNode('line');\n pathEl = createNode('path');\n textPathEl = createNode('textpath');\n skewEl = createNode('skew'); // FIXME Why here is not cammel case\n // Align 'center' seems wrong\n\n textPathEl.style['v-text-align'] = 'left';\n initRootElStyle(textVmlEl);\n pathEl.textpathok = true;\n textPathEl.on = true;\n textVmlEl.from = '0 0';\n textVmlEl.to = '1000 0.05';\n append(textVmlEl, skewEl);\n append(textVmlEl, pathEl);\n append(textVmlEl, textPathEl);\n this._textVmlEl = textVmlEl;\n } else {\n // 这里是在前面 appendChild 保证顺序的前提下\n skewEl = textVmlEl.firstChild;\n pathEl = skewEl.nextSibling;\n textPathEl = pathEl.nextSibling;\n }\n\n var coords = [x, y];\n var textVmlElStyle = textVmlEl.style; // Ignore transform for text in other element\n\n if (m && fromTextEl) {\n applyTransform(coords, coords, m);\n skewEl.on = true;\n skewEl.matrix = m[0].toFixed(3) + comma + m[2].toFixed(3) + comma + m[1].toFixed(3) + comma + m[3].toFixed(3) + ',0,0'; // Text position\n\n skewEl.offset = (round(coords[0]) || 0) + ',' + (round(coords[1]) || 0); // Left top point as origin\n\n skewEl.origin = '0 0';\n textVmlElStyle.left = '0px';\n textVmlElStyle.top = '0px';\n } else {\n skewEl.on = false;\n textVmlElStyle.left = round(x) + 'px';\n textVmlElStyle.top = round(y) + 'px';\n }\n\n textPathEl.string = encodeHtmlAttribute(text); // TODO\n\n try {\n textPathEl.style.font = font;\n } // Error font format\n catch (e) {}\n\n updateFillAndStroke(textVmlEl, 'fill', {\n fill: style.textFill,\n opacity: style.opacity\n }, this);\n updateFillAndStroke(textVmlEl, 'stroke', {\n stroke: style.textStroke,\n opacity: style.opacity,\n lineDash: style.lineDash || null // style.lineDash can be `false`.\n\n }, this);\n textVmlEl.style.zIndex = getZIndex(this.zlevel, this.z, this.z2); // Attached to root\n\n append(vmlRoot, textVmlEl);\n };\n\n var removeRectText = function (vmlRoot) {\n remove(vmlRoot, this._textVmlEl);\n this._textVmlEl = null;\n };\n\n var appendRectText = function (vmlRoot) {\n append(vmlRoot, this._textVmlEl);\n };\n\n var list = [RectText, Displayable, ZImage, Path, Text]; // In case Displayable has been mixed in RectText\n\n for (var i = 0; i < list.length; i++) {\n var proto = list[i].prototype;\n proto.drawRectText = drawRectText;\n proto.removeRectText = removeRectText;\n proto.appendRectText = appendRectText;\n }\n\n Text.prototype.brushVML = function (vmlRoot) {\n var style = this.style;\n\n if (style.text != null) {\n this.drawRectText(vmlRoot, {\n x: style.x || 0,\n y: style.y || 0,\n width: 0,\n height: 0\n }, this.getBoundingRect(), true);\n } else {\n this.removeRectText(vmlRoot);\n }\n };\n\n Text.prototype.onRemove = function (vmlRoot) {\n this.removeRectText(vmlRoot);\n };\n\n Text.prototype.onAdd = function (vmlRoot) {\n this.appendRectText(vmlRoot);\n };\n}","var logError = require(\"../core/log\");\n\nvar vmlCore = require(\"./core\");\n\nvar _util = require(\"../core/util\");\n\nvar each = _util.each;\n\n/**\n * VML Painter.\n *\n * @module zrender/vml/Painter\n */\nfunction parseInt10(val) {\n return parseInt(val, 10);\n}\n/**\n * @alias module:zrender/vml/Painter\n */\n\n\nfunction VMLPainter(root, storage) {\n vmlCore.initVML();\n this.root = root;\n this.storage = storage;\n var vmlViewport = document.createElement('div');\n var vmlRoot = document.createElement('div');\n vmlViewport.style.cssText = 'display:inline-block;overflow:hidden;position:relative;width:300px;height:150px;';\n vmlRoot.style.cssText = 'position:absolute;left:0;top:0;';\n root.appendChild(vmlViewport);\n this._vmlRoot = vmlRoot;\n this._vmlViewport = vmlViewport;\n this.resize(); // Modify storage\n\n var oldDelFromStorage = storage.delFromStorage;\n var oldAddToStorage = storage.addToStorage;\n\n storage.delFromStorage = function (el) {\n oldDelFromStorage.call(storage, el);\n\n if (el) {\n el.onRemove && el.onRemove(vmlRoot);\n }\n };\n\n storage.addToStorage = function (el) {\n // Displayable already has a vml node\n el.onAdd && el.onAdd(vmlRoot);\n oldAddToStorage.call(storage, el);\n };\n\n this._firstPaint = true;\n}\n\nVMLPainter.prototype = {\n constructor: VMLPainter,\n getType: function () {\n return 'vml';\n },\n\n /**\n * @return {HTMLDivElement}\n */\n getViewportRoot: function () {\n return this._vmlViewport;\n },\n getViewportRootOffset: function () {\n var viewportRoot = this.getViewportRoot();\n\n if (viewportRoot) {\n return {\n offsetLeft: viewportRoot.offsetLeft || 0,\n offsetTop: viewportRoot.offsetTop || 0\n };\n }\n },\n\n /**\n * 刷新\n */\n refresh: function () {\n var list = this.storage.getDisplayList(true, true);\n\n this._paintList(list);\n },\n _paintList: function (list) {\n var vmlRoot = this._vmlRoot;\n\n for (var i = 0; i < list.length; i++) {\n var el = list[i];\n\n if (el.invisible || el.ignore) {\n if (!el.__alreadyNotVisible) {\n el.onRemove(vmlRoot);\n } // Set as already invisible\n\n\n el.__alreadyNotVisible = true;\n } else {\n if (el.__alreadyNotVisible) {\n el.onAdd(vmlRoot);\n }\n\n el.__alreadyNotVisible = false;\n\n if (el.__dirty) {\n el.beforeBrush && el.beforeBrush();\n (el.brushVML || el.brush).call(el, vmlRoot);\n el.afterBrush && el.afterBrush();\n }\n }\n\n el.__dirty = false;\n }\n\n if (this._firstPaint) {\n // Detached from document at first time\n // to avoid page refreshing too many times\n // FIXME 如果每次都先 removeChild 可能会导致一些填充和描边的效果改变\n this._vmlViewport.appendChild(vmlRoot);\n\n this._firstPaint = false;\n }\n },\n resize: function (width, height) {\n var width = width == null ? this._getWidth() : width;\n var height = height == null ? this._getHeight() : height;\n\n if (this._width !== width || this._height !== height) {\n this._width = width;\n this._height = height;\n var vmlViewportStyle = this._vmlViewport.style;\n vmlViewportStyle.width = width + 'px';\n vmlViewportStyle.height = height + 'px';\n }\n },\n dispose: function () {\n this.root.innerHTML = '';\n this._vmlRoot = this._vmlViewport = this.storage = null;\n },\n getWidth: function () {\n return this._width;\n },\n getHeight: function () {\n return this._height;\n },\n clear: function () {\n if (this._vmlViewport) {\n this.root.removeChild(this._vmlViewport);\n }\n },\n _getWidth: function () {\n var root = this.root;\n var stl = root.currentStyle;\n return (root.clientWidth || parseInt10(stl.width)) - parseInt10(stl.paddingLeft) - parseInt10(stl.paddingRight) | 0;\n },\n _getHeight: function () {\n var root = this.root;\n var stl = root.currentStyle;\n return (root.clientHeight || parseInt10(stl.height)) - parseInt10(stl.paddingTop) - parseInt10(stl.paddingBottom) | 0;\n }\n}; // Not supported methods\n\nfunction createMethodNotSupport(method) {\n return function () {\n logError('In IE8.0 VML mode painter not support method \"' + method + '\"');\n };\n} // Unsupported methods\n\n\neach(['getLayer', 'insertLayer', 'eachLayer', 'eachBuiltinLayer', 'eachOtherLayer', 'getLayers', 'modLayer', 'delLayer', 'clearLayer', 'toDataURL', 'pathToImage'], function (name) {\n VMLPainter.prototype[name] = createMethodNotSupport(name);\n});\nvar _default = VMLPainter;\nmodule.exports = _default;","export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../../node_modules/css-loader/index.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./GoodweDeviceArea.vue?vue&type=style&index=0&lang=scss&\"","export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../../node_modules/css-loader/index.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./GoodweHtDetail.vue?vue&type=style&index=0&lang=scss&\"","export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../../node_modules/css-loader/index.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ParallelSystemDetail.vue?vue&type=style&index=0&id=84a1802c&lang=scss&scoped=true&\"","export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../../node_modules/css-loader/index.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./GoodweInverterCharts.vue?vue&type=style&index=0&lang=scss&\"","export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../../node_modules/css-loader/index.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!./GoodweStationCharts.scss?vue&type=style&index=0&lang=scss&\"","export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../../node_modules/css-loader/index.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./statement.vue?vue&type=style&index=0&lang=scss&\"","export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../../node_modules/css-loader/index.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./control.vue?vue&type=style&index=0&lang=scss&\"","export * from \"-!../../../../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../../../../node_modules/css-loader/index.js!../../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../../node_modules/sass-loader/dist/cjs.js!./EvChargerAlarm.scss?vue&type=style&index=0&id=7360cc12&lang=scss&scoped=true&\"","export * from \"-!../../../../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../../../../node_modules/css-loader/index.js!../../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../../node_modules/sass-loader/dist/cjs.js!./EvChargerRecord.scss?vue&type=style&index=0&id=48912e2f&lang=scss&scoped=true&\"","export * from \"-!../../../../../../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../../../../../../node_modules/css-loader/index.js!../../../../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../../../../node_modules/sass-loader/dist/cjs.js!../../../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ChargingGraph.vue?vue&type=style&index=0&id=b3d299da&lang=scss&scoped=true&\"","export * from \"-!../../../../../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../../../../../node_modules/css-loader/index.js!../../../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../../../node_modules/sass-loader/dist/cjs.js!./EvChargerOverView.scss?vue&type=style&index=0&id=cd12dc4e&lang=scss&scoped=true&\"","export * from \"-!../../../../../../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../../../../../../node_modules/css-loader/index.js!../../../../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../../../../node_modules/sass-loader/dist/cjs.js!../../../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ChargingHistory.vue?vue&type=style&index=0&id=12b8012d&lang=scss&scoped=true&\"","export * from \"-!../../../../../../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../../../../../../node_modules/css-loader/index.js!../../../../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../../../../node_modules/sass-loader/dist/cjs.js!../../../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ChargingPower.vue?vue&type=style&index=0&id=330c0039&lang=scss&scoped=true&\"","export * from \"-!../../../../../../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../../../../../../node_modules/css-loader/index.js!../../../../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../../../../node_modules/sass-loader/dist/cjs.js!../../../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./MoreSettings.vue?vue&type=style&index=0&id=34366227&lang=scss&scoped=true&\"","export * from \"-!../../../../../../../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../../../../../../../node_modules/css-loader/index.js!../../../../../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../../../../../node_modules/sass-loader/dist/cjs.js!./ChargingMode.scss?vue&type=style&index=0&id=651159da&lang=scss&scoped=true&\"","export * from \"-!../../../../../../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../../../../../../node_modules/css-loader/index.js!../../../../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../../../../node_modules/sass-loader/dist/cjs.js!../../../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ModeSettings.vue?vue&type=style&index=0&id=2a72f989&lang=scss&scoped=true&\"","export * from \"-!../../../../../../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../../../../../../node_modules/css-loader/index.js!../../../../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../../../../node_modules/sass-loader/dist/cjs.js!../../../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ScheduledSettings.vue?vue&type=style&index=0&id=0d05f7d4&lang=scss&scoped=true&\"","export * from \"-!../../../../../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../../../../../node_modules/css-loader/index.js!../../../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../../../node_modules/sass-loader/dist/cjs.js!./EvChargerCurrent.scss?vue&type=style&index=0&id=7e6ae5c4&lang=scss&scoped=true&\"","export * from \"-!../../../../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../../../../node_modules/css-loader/index.js!../../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../../node_modules/sass-loader/dist/cjs.js!./EvChargerMonitor.scss?vue&type=style&index=0&id=6eafe86d&lang=scss&scoped=true&\"","export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../../node_modules/css-loader/index.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./GoodweEvChargerDetail.vue?vue&type=style&index=0&id=e3e63782&lang=scss&scoped=true&\"","export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../../node_modules/css-loader/index.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./GoodweEMI.vue?vue&type=style&index=0&lang=scss&\"","export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../../node_modules/css-loader/index.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./GoodweChartsTabItem.vue?vue&type=style&index=0&lang=scss&\"","export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../../node_modules/css-loader/index.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./GoodweChartsTabItemGroup.vue?vue&type=style&index=0&lang=scss&\"","export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../../node_modules/css-loader/index.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./GoodweChartsTab.vue?vue&type=style&index=0&lang=scss&\"","export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../../node_modules/css-loader/index.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./GoodweStringInfo.vue?vue&type=style&index=0&lang=scss&\"","export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../../node_modules/css-loader/index.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./GoodweShadowDetect.vue?vue&type=style&index=0&lang=scss&\"","export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../../node_modules/css-loader/index.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./GoodweShadowDetectChart.vue?vue&type=style&index=0&lang=scss&\"","module.exports = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA8AAAAPCAYAAAA71pVKAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyhpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNi1jMTQ1IDc5LjE2MzQ5OSwgMjAxOC8wOC8xMy0xNjo0MDoyMiAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENDIDIwMTkgKE1hY2ludG9zaCkiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6MjRBRTA1ODMwRkMxMTFFOTlBMjFEM0RDNzg5OTYyRTIiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6MjRBRTA1ODQwRkMxMTFFOTlBMjFEM0RDNzg5OTYyRTIiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDoyNEFFMDU4MTBGQzExMUU5OUEyMUQzREM3ODk5NjJFMiIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDoyNEFFMDU4MjBGQzExMUU5OUEyMUQzREM3ODk5NjJFMiIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/PmpjHhcAAACYSURBVHjajJExDoAgDEU5giy4Ouni3fSU6uCgg6cxiv0REyQtlOTHUP97QzHe+5GyU2qKUcSF/ojL4t9zKAQu9HBmDCxlVQhiEH37/UgFrgRiHhckAQumMCfoJZCDkSoS3BIowUhLuQKIb8f1Sls9M0s0pedocq+QAytmBz9BCTQ5gQYUBRhuCpATbBgMlEkBxgL0h0eAAQDXXumizWGDfQAAAABJRU5ErkJggg==\"","export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../../node_modules/css-loader/index.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./GoodweShadowDetectHistory.vue?vue&type=style&index=0&id=24518f7c&lang=scss&scoped=true&\"","export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../../node_modules/css-loader/index.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./GoodweProcessBar.vue?vue&type=style&index=0&id=b10e7ef4&lang=scss&scoped=true&\"","export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../../node_modules/css-loader/index.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./GoodweProgress.vue?vue&type=style&index=0&lang=scss&\"","export * from \"-!../../../../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../../../../node_modules/css-loader/index.js!../../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../../node_modules/sass-loader/dist/cjs.js!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./UpdateDeviceModal.vue?vue&type=style&index=0&id=47ec66ce&lang=scss&scoped=true&\"","export * from \"-!../../../../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../../../../node_modules/css-loader/index.js!../../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../../node_modules/sass-loader/dist/cjs.js!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ChangeDeviceModal.vue?vue&type=style&index=0&id=55b3c01a&lang=scss&scoped=true&\"","export * from \"-!../../../../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../../../../node_modules/css-loader/index.js!../../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../../node_modules/sass-loader/dist/cjs.js!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./DeleteDeviceModal.vue?vue&type=style&index=0&id=bcc019d2&lang=scss&scoped=true&\"","export * from \"-!../../../../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../../../../node_modules/css-loader/index.js!../../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../../node_modules/sass-loader/dist/cjs.js!./InverterList.scss?vue&type=style&index=0&id=5eeef71c&lang=scss&scoped=true&\"","export * from \"-!../../../../../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../../../../../node_modules/css-loader/index.js!../../../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../../../node_modules/sass-loader/dist/cjs.js!../../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ViewPvPanelsDialog.vue?vue&type=style&index=0&id=7cd202fb&lang=scss&scoped=true&\"","var scope = (typeof global !== \"undefined\" && global) ||\n (typeof self !== \"undefined\" && self) ||\n window;\nvar apply = Function.prototype.apply;\n\n// DOM APIs, for completeness\n\nexports.setTimeout = function() {\n return new Timeout(apply.call(setTimeout, scope, arguments), clearTimeout);\n};\nexports.setInterval = function() {\n return new Timeout(apply.call(setInterval, scope, arguments), clearInterval);\n};\nexports.clearTimeout =\nexports.clearInterval = function(timeout) {\n if (timeout) {\n timeout.close();\n }\n};\n\nfunction Timeout(id, clearFn) {\n this._id = id;\n this._clearFn = clearFn;\n}\nTimeout.prototype.unref = Timeout.prototype.ref = function() {};\nTimeout.prototype.close = function() {\n this._clearFn.call(scope, this._id);\n};\n\n// Does not start the time, just sets up the members needed.\nexports.enroll = function(item, msecs) {\n clearTimeout(item._idleTimeoutId);\n item._idleTimeout = msecs;\n};\n\nexports.unenroll = function(item) {\n clearTimeout(item._idleTimeoutId);\n item._idleTimeout = -1;\n};\n\nexports._unrefActive = exports.active = function(item) {\n clearTimeout(item._idleTimeoutId);\n\n var msecs = item._idleTimeout;\n if (msecs >= 0) {\n item._idleTimeoutId = setTimeout(function onTimeout() {\n if (item._onTimeout)\n item._onTimeout();\n }, msecs);\n }\n};\n\n// setimmediate attaches itself to the global object\nrequire(\"setimmediate\");\n// On some exotic environments, it's not clear which object `setimmediate` was\n// able to install onto. Search each possibility in the same order as the\n// `setimmediate` library.\nexports.setImmediate = (typeof self !== \"undefined\" && self.setImmediate) ||\n (typeof global !== \"undefined\" && global.setImmediate) ||\n (this && this.setImmediate);\nexports.clearImmediate = (typeof self !== \"undefined\" && self.clearImmediate) ||\n (typeof global !== \"undefined\" && global.clearImmediate) ||\n (this && this.clearImmediate);\n","(function (global, undefined) {\n \"use strict\";\n\n if (global.setImmediate) {\n return;\n }\n\n var nextHandle = 1; // Spec says greater than zero\n var tasksByHandle = {};\n var currentlyRunningATask = false;\n var doc = global.document;\n var registerImmediate;\n\n function setImmediate(callback) {\n // Callback can either be a function or a string\n if (typeof callback !== \"function\") {\n callback = new Function(\"\" + callback);\n }\n // Copy function arguments\n var args = new Array(arguments.length - 1);\n for (var i = 0; i < args.length; i++) {\n args[i] = arguments[i + 1];\n }\n // Store and register the task\n var task = { callback: callback, args: args };\n tasksByHandle[nextHandle] = task;\n registerImmediate(nextHandle);\n return nextHandle++;\n }\n\n function clearImmediate(handle) {\n delete tasksByHandle[handle];\n }\n\n function run(task) {\n var callback = task.callback;\n var args = task.args;\n switch (args.length) {\n case 0:\n callback();\n break;\n case 1:\n callback(args[0]);\n break;\n case 2:\n callback(args[0], args[1]);\n break;\n case 3:\n callback(args[0], args[1], args[2]);\n break;\n default:\n callback.apply(undefined, args);\n break;\n }\n }\n\n function runIfPresent(handle) {\n // From the spec: \"Wait until any invocations of this algorithm started before this one have completed.\"\n // So if we're currently running a task, we'll need to delay this invocation.\n if (currentlyRunningATask) {\n // Delay by doing a setTimeout. setImmediate was tried instead, but in Firefox 7 it generated a\n // \"too much recursion\" error.\n setTimeout(runIfPresent, 0, handle);\n } else {\n var task = tasksByHandle[handle];\n if (task) {\n currentlyRunningATask = true;\n try {\n run(task);\n } finally {\n clearImmediate(handle);\n currentlyRunningATask = false;\n }\n }\n }\n }\n\n function installNextTickImplementation() {\n registerImmediate = function(handle) {\n process.nextTick(function () { runIfPresent(handle); });\n };\n }\n\n function canUsePostMessage() {\n // The test against `importScripts` prevents this implementation from being installed inside a web worker,\n // where `global.postMessage` means something completely different and can't be used for this purpose.\n if (global.postMessage && !global.importScripts) {\n var postMessageIsAsynchronous = true;\n var oldOnMessage = global.onmessage;\n global.onmessage = function() {\n postMessageIsAsynchronous = false;\n };\n global.postMessage(\"\", \"*\");\n global.onmessage = oldOnMessage;\n return postMessageIsAsynchronous;\n }\n }\n\n function installPostMessageImplementation() {\n // Installs an event handler on `global` for the `message` event: see\n // * https://developer.mozilla.org/en/DOM/window.postMessage\n // * http://www.whatwg.org/specs/web-apps/current-work/multipage/comms.html#crossDocumentMessages\n\n var messagePrefix = \"setImmediate$\" + Math.random() + \"$\";\n var onGlobalMessage = function(event) {\n if (event.source === global &&\n typeof event.data === \"string\" &&\n event.data.indexOf(messagePrefix) === 0) {\n runIfPresent(+event.data.slice(messagePrefix.length));\n }\n };\n\n if (global.addEventListener) {\n global.addEventListener(\"message\", onGlobalMessage, false);\n } else {\n global.attachEvent(\"onmessage\", onGlobalMessage);\n }\n\n registerImmediate = function(handle) {\n global.postMessage(messagePrefix + handle, \"*\");\n };\n }\n\n function installMessageChannelImplementation() {\n var channel = new MessageChannel();\n channel.port1.onmessage = function(event) {\n var handle = event.data;\n runIfPresent(handle);\n };\n\n registerImmediate = function(handle) {\n channel.port2.postMessage(handle);\n };\n }\n\n function installReadyStateChangeImplementation() {\n var html = doc.documentElement;\n registerImmediate = function(handle) {\n // Create a \r\n\r\n","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./demo.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./demo.vue?vue&type=script&lang=js&\"","var render, staticRenderFns\nimport script from \"./demo.vue?vue&type=script&lang=js&\"\nexport * from \"./demo.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","import Demo from './src/demo.vue';\r\n\r\nDemo.install = function(Vue) {\r\n Vue.component(Demo.name, Demo);\r\n}\r\n\r\nexport default Demo;","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./GoodweButton.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./GoodweButton.vue?vue&type=script&lang=js&\"","\r\n\r\n\r\n","var render, staticRenderFns\nimport script from \"./GoodweButton.vue?vue&type=script&lang=js&\"\nexport * from \"./GoodweButton.vue?vue&type=script&lang=js&\"\nimport style0 from \"./GoodweButton.vue?vue&type=style&index=0&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./GoodweButtonGroup.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./GoodweButtonGroup.vue?vue&type=script&lang=js&\"","\r\n\r\n\r\n\r\n","var render, staticRenderFns\nimport script from \"./GoodweButtonGroup.vue?vue&type=script&lang=js&\"\nexport * from \"./GoodweButtonGroup.vue?vue&type=script&lang=js&\"\nimport style0 from \"./GoodweButtonGroup.vue?vue&type=style&index=0&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","import GoodweButton from './src/GoodweButton.vue';\r\nimport GoodweButtonGroup from './src/GoodweButtonGroup.vue';\r\n\r\n[GoodweButton, GoodweButtonGroup].forEach(item => {\r\n item.install = Vue => {\r\n Vue.component(item.name, item);\r\n }\r\n});\r\n\r\nexport default {\r\n GoodweButton,\r\n GoodweButtonGroup\r\n};","import Popper from \"popper.js\";\r\n\r\nexport default {\r\n data() {\r\n return {\r\n popperJs: null,\r\n popperElement:null,\r\n referenceElement:null\r\n }\r\n },\r\n methods: {\r\n createPopper() {\r\n var popper = this.popperElement;\r\n var reference = this.referenceElement;\r\n if (this.popperJs) {\r\n this.popperJs.destroy();\r\n }\r\n this.popperJs = new Popper(reference, popper, {\r\n placement: \"bottom-start\",\r\n onCreate: (popperObj) => {\r\n this.popperCreate(popperObj);\r\n },\r\n onUpdate:(popperObj)=> {\r\n this.popperUpdate(popperObj);\r\n }\r\n });\r\n },\r\n destroyPopper() {\r\n if (this.popperJs) {\r\n this.popperJs.destroy();\r\n }\r\n },\r\n popperCreate() {\r\n \r\n },\r\n popperUpdate() {\r\n }\r\n },\r\n beforeDestroy() {\r\n this.destroyPopper();\r\n }\r\n}","/**\r\n * Custom directive for out-of-control click event capture\r\n */\r\n\r\n\r\nlet downEvent;\r\nlet nodeList = [];\r\nlet idSeed = 0;\r\nconst context = \"@@outsideContext\";\r\n\r\ndocument.addEventListener(\"mousedown\", e => { downEvent = e });\r\ndocument.addEventListener(\"mouseup\", e => {\r\n nodeList.forEach(node => {\r\n node[context].mouseupHandle(e, downEvent);\r\n });\r\n})\r\n\r\n/**\r\n * Create a method to handle mouseup events, locking in custom directive hook function parameters\r\n * @param {Object} el The element bound by the directive\r\n * @param {Object} binding The properties and methods contained in the directive\r\n * @param {Object} vnode Vue virtual node\r\n */\r\nfunction createHandle(el, binding, vnode) {\r\n return function handle(mouseup = {}, mousedown = {}) {\r\n // Basic verification\r\n if (!vnode ||\r\n !mouseup.target ||\r\n !mousedown.target ||\r\n el.contains(mousedown.target) ||\r\n el.contains(mouseup.target) ||\r\n el === mouseup.target\r\n ) return;\r\n\r\n // Click on popper\r\n if (vnode.context.popperElement &&\r\n (vnode.context.popperElement.contains(mousedown.target) ||\r\n vnode.context.popperElement.contains(mouseup.target))\r\n ) return;\r\n\r\n // Call the method in directive\r\n if (el[context].expression && vnode.context[el[context].expression]) {\r\n vnode.context[el[context].expression](mouseup, mousedown);\r\n } else {\r\n el[context].value && el[context].value(mouseup, mousedown);\r\n }\r\n }\r\n}\r\n\r\n\r\nexport default {\r\n bind(el, binding, vnode) {\r\n nodeList.push(el);\r\n const id = idSeed++;\r\n el[context] = {\r\n id,\r\n mouseupHandle: createHandle(el, binding, vnode),\r\n expression: binding.expression,\r\n value: binding.value\r\n }\r\n },\r\n\r\n update(el, binding, vnode) {\r\n el[context].mouseupHandle = createHandle(el, binding, vnode);\r\n el[context].expression = binding.expression;\r\n el[context].value = binding.value;\r\n },\r\n\r\n unbind(el) {\r\n nodeList.forEach(function (node, i) {\r\n if (node.id === el[context].id) {\r\n nodeList.splice(i, 1);\r\n return false;\r\n }\r\n });\r\n }\r\n}","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./orgtree.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./orgtree.vue?vue&type=script&lang=js&\"","\r\n","var render, staticRenderFns\nimport script from \"./orgtree.vue?vue&type=script&lang=js&\"\nexport * from \"./orgtree.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","\r\n\r\n","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./orgdropdown.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./orgdropdown.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./orgdropdown.vue?vue&type=template&id=105b520a&\"\nimport script from \"./orgdropdown.vue?vue&type=script&lang=js&\"\nexport * from \"./orgdropdown.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.visible),expression:\"visible\"}],staticClass:\"goodwe01-org-selector__dropdown\",class:[_vm.dropdownClass],style:({height:_vm.height +'px'})},[_c('div',{staticClass:\"goodwe01-org-selector__list\"},[_c('div',{staticClass:\"goodwe01-org-selector__list--container\"},[_c('div',{staticClass:\"goodwe-org-search\"},[_c('div',{staticClass:\"goodwe-org-search-input\"},[_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.orgSearchKey),expression:\"orgSearchKey\"}],attrs:{\"type\":\"text\",\"placeholder\":\"请输入组织名称或代码进行搜索\"},domProps:{\"value\":(_vm.orgSearchKey)},on:{\"focus\":function($event){_vm.orgSearchULShow=true},\"input\":function($event){if($event.target.composing){ return; }_vm.orgSearchKey=$event.target.value}}}),_vm._v(\" \"),_c('a',{on:{\"click\":_vm.searchKeyClick}}),_vm._v(\" \"),_c('ul',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.orgSearchULShow && _vm.orgSearchList.length > 0),expression:\"orgSearchULShow && orgSearchList.length > 0\"}],staticClass:\"goodwe-org-search-result\"},_vm._l((_vm.orgSearchList),function(item){return _c('li',{key:item.id,domProps:{\"innerHTML\":_vm._s(_vm.keywordHighlighting(item))},on:{\"click\":function($event){return _vm.orgSearchKeyClick(item)}}})}),0),_vm._v(\" \"),(_vm.searchMode)?_c('em',{on:{\"click\":_vm.exitOrgSearch}}):_vm._e()])]),_vm._v(\" \"),_c('div',{staticClass:\"goodwe01-org-tree-container\"},[_c('gdw-scroll',{on:{\"inside-changed\":_vm.insideChanged}},[_c('div',{staticClass:\"goodwe01-org-tree-container__root\"},[_c('label',{attrs:{\"onselectstart\":\"return false\"},on:{\"click\":_vm.rootOpenClick}},[(_vm.rootOpen)?[_vm._v(\"-\")]:[_vm._v(\"+\")]],2),_vm._v(\" \"),_c('span',{class:{selected:_vm.rootSelected},on:{\"click\":_vm.rootNodeClick}},[_vm._v(_vm._s(_vm.rootNode && _vm.rootNode.org_name))])]),_vm._v(\" \"),_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.rootOpen),expression:\"rootOpen\"}],staticClass:\"goodwe01-org-tree-container__wrap\",attrs:{\"onselectstart\":\"return false\"}},[_c('org-tree',{ref:\"orgTree\",attrs:{\"model\":_vm.treeList},on:{\"item-selected\":_vm.orgItemSelectedNotRoot}})],1)])],1)])]),_vm._v(\" \"),_c('i',{staticClass:\"goodwe01-org-selector__dropdown--arrow\",attrs:{\"x-arrow\":\"\"}})])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./orgselector.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./orgselector.vue?vue&type=script&lang=js&\"","\r\n\r\n","import { render, staticRenderFns } from \"./orgselector.vue?vue&type=template&id=7e684bde&\"\nimport script from \"./orgselector.vue?vue&type=script&lang=js&\"\nexport * from \"./orgselector.vue?vue&type=script&lang=js&\"\nimport style0 from \"./orgselector.vue?vue&type=style&index=0&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{directives:[{name:\"outsideclick\",rawName:\"v-outsideclick\",value:(_vm.outsideClick),expression:\"outsideClick\"}],staticClass:\"goodwe01-org-selector\"},[_c('div',{staticClass:\"goodwe01-org-selector__form\",on:{\"click\":function($event){_vm.visible = !_vm.visible}}},[_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.showValue),expression:\"showValue\"}],attrs:{\"org-input\":\"\",\"type\":\"text\",\"placeholder\":_vm.placeholder,\"readonly\":\"\"},domProps:{\"value\":(_vm.showValue)},on:{\"input\":function($event){if($event.target.composing){ return; }_vm.showValue=$event.target.value}}}),_vm._v(\" \"),_c('i',{staticClass:\"goodwe01-org-selector__form--icon\",class:[_vm.iconClass]})]),_vm._v(\" \"),_c('org-dropdown',{attrs:{\"visible\":_vm.visible}})],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import OrgSelector from './src/orgselector.vue';\r\n\r\nOrgSelector.install = function(Vue) {\r\n Vue.component(OrgSelector.name, OrgSelector);\r\n}\r\n\r\nexport default OrgSelector;","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./GoodweSwitch.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./GoodweSwitch.vue?vue&type=script&lang=js&\"","\r\n\r\n\r\n","var render, staticRenderFns\nimport script from \"./GoodweSwitch.vue?vue&type=script&lang=js&\"\nexport * from \"./GoodweSwitch.vue?vue&type=script&lang=js&\"\nimport style0 from \"./GoodweSwitch.vue?vue&type=style&index=0&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","import GoodweSwitch from './src/GoodweSwitch.vue';\r\n\r\nGoodweSwitch.install = Vue => {\r\n Vue.component(GoodweSwitch.name, GoodweSwitch);\r\n}\r\n\r\nexport default GoodweSwitch;","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./GoodweSearchCenter.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./GoodweSearchCenter.vue?vue&type=script&lang=js&\"","\r\n\r\n\r\n\r\n\r\n","import { render, staticRenderFns } from \"./GoodweSearchCenter.vue?vue&type=template&id=4b2bb3f1&\"\nimport script from \"./GoodweSearchCenter.vue?vue&type=script&lang=js&\"\nexport * from \"./GoodweSearchCenter.vue?vue&type=script&lang=js&\"\nimport style0 from \"./GoodweSearchCenter.vue?vue&type=style&index=0&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"goodwe-search-center clearfix\"},[_c('gdw-select',{staticClass:\"goodwe-search-center__select\",model:{value:(_vm.qry_type),callback:function ($$v) {_vm.qry_type=$$v},expression:\"qry_type\"}},[_c('gdw-option',{attrs:{\"label\":\"自有电站\",\"value\":3}}),_vm._v(\" \"),_c('gdw-option',{attrs:{\"label\":\"所有电站\",\"value\":1}})],1),_vm._v(\" \"),_c('button',{staticClass:\"goodwe-search-center__button--ps\",class:{act: _vm.search_type === 'ps'},on:{\"click\":function($event){return _vm.changeSearchType('ps')}}},[_vm._v(\"电 站\")]),_vm._v(\" \"),_c('button',{staticClass:\"goodwe-search-center__button--sn\",class:{act: _vm.search_type === 'sn'},on:{\"click\":function($event){return _vm.changeSearchType('sn')}}},[_vm._v(\"S N\")]),_vm._v(\" \"),_c('button',{staticClass:\"goodwe-search-center__button--area\",class:{act: _vm.search_type === 'area'},on:{\"click\":function($event){return _vm.changeSearchType('area')}}},[_vm._v(\"地 区\")]),_vm._v(\" \"),(_vm.showOrg)?_c('button',{staticClass:\"goodwe-search-center__button--org\",class:{act: _vm.search_type === 'org'},on:{\"click\":function($event){return _vm.changeSearchType('org')}}},[_vm._v(\"组 织\")]):_vm._e(),_vm._v(\" \"),_c('div',{staticClass:\"goodwe-search-center__input\"},[(_vm.search_type == 'ps' || _vm.search_type == 'sn')?_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.search_key),expression:\"search_key\"}],attrs:{\"type\":\"text\",\"placeholder\":_vm.search_type == 'ps' ? '请输入电站名称' : '请输入电站sn'},domProps:{\"value\":(_vm.search_key)},on:{\"input\":function($event){if($event.target.composing){ return; }_vm.search_key=$event.target.value}}}):_vm._e(),_vm._v(\" \"),((_vm.search_type === 'ps' || _vm.search_type === 'sn') && _vm.search_key.length > 0)?_c('div',{staticClass:\"goodwe-search-center__input--clear\",on:{\"click\":_vm.clear}}):_vm._e()]),_vm._v(\" \"),(_vm.search_type == 'area')?_c('gdw-area',{ref:\"area\",staticClass:\"goodwe-search-center__area\",attrs:{\"qry-type\":_vm.qry_type,\"for-power-station\":true,\"type\":1,\"input-class\":\"goodwe-search-center-input-custom\"},on:{\"change\":_vm.handleAdcodeChange}}):_vm._e(),_vm._v(\" \"),(_vm.showOrg && _vm.search_type == 'org')?_c('goodwe-org-selector',{staticClass:\"goodwe-search-center__org\",on:{\"org-node-click\":_vm.handleOrgChange}}):_vm._e(),_vm._v(\" \"),_c('div',{staticClass:\"goodwe-search-center__clearbtn\"}),_vm._v(\" \"),_c('button',{staticClass:\"goodwe-search-center__button--search\",on:{\"click\":_vm.search}},[_vm._v(\"搜 索\")])],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import GoodweSearchCenter from './src/GoodweSearchCenter.vue';\r\n\r\nGoodweSearchCenter.install = Vue => {\r\n Vue.component(GoodweSearchCenter.name, GoodweSearchCenter);\r\n}\r\n\r\nexport default GoodweSearchCenter;","import ResizeObserver from 'resize-observer-polyfill';\r\n\r\nconst isServer = typeof window === 'undefined';\r\n\r\n/* istanbul ignore next */\r\nconst resizeHandler = function(entries) {\r\n for (let entry of entries) {\r\n const listeners = entry.target.__resizeListeners__ || [];\r\n if (listeners.length) {\r\n listeners.forEach(fn => {\r\n fn();\r\n });\r\n }\r\n }\r\n};\r\n\r\n/* istanbul ignore next */\r\nexport const addResizeListener = function(element, fn) {\r\n if (isServer) return;\r\n if (!element.__resizeListeners__) {\r\n element.__resizeListeners__ = [];\r\n element.__ro__ = new ResizeObserver(resizeHandler);\r\n element.__ro__.observe(element);\r\n }\r\n element.__resizeListeners__.push(fn);\r\n};\r\n\r\n/* istanbul ignore next */\r\nexport const removeResizeListener = function(element, fn) {\r\n if (!element || !element.__resizeListeners__) return;\r\n element.__resizeListeners__.splice(element.__resizeListeners__.indexOf(fn), 1);\r\n if (!element.__resizeListeners__.length) {\r\n element.__ro__.disconnect();\r\n }\r\n};\r\n","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./autoComplete.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./autoComplete.vue?vue&type=script&lang=js&\"","\r\n\r\n\r\n\r\n","export default {\r\n data() {\r\n return {\r\n isOnComposition: false\r\n };\r\n },\r\n methods: {\r\n compositionHandle(e) {\r\n if (e.type === \"compositionend\") {\r\n this.isOnComposition = false;\r\n this.inputHandle(e)\r\n } else {\r\n this.isOnComposition = true;\r\n }\r\n },\r\n inputFilterHandle(e) {\r\n if (this.isOnComposition) return;\r\n this.inputHandle(e);\r\n },\r\n inputHandle(e) {\r\n // TODO: override this method\r\n }\r\n }\r\n}","import { render, staticRenderFns } from \"./autoComplete.vue?vue&type=template&id=fd929eca&\"\nimport script from \"./autoComplete.vue?vue&type=script&lang=js&\"\nexport * from \"./autoComplete.vue?vue&type=script&lang=js&\"\nimport style0 from \"./autoComplete.vue?vue&type=style&index=0&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{directives:[{name:\"outsideclick\",rawName:\"v-outsideclick\",value:(_vm.outsideClick),expression:\"outsideClick\"}],staticClass:\"goodwe-auto-complete\"},[_c('div',{ref:\"input\",staticClass:\"goodwe-auto-complete__input\"},[_c('input',_vm._b({directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.innerValue),expression:\"innerValue\"}],attrs:{\"type\":\"text\"},domProps:{\"value\":(_vm.innerValue)},on:{\"focus\":_vm.inputClick,\"keydown\":[function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"down\",40,$event.key,[\"Down\",\"ArrowDown\"])){ return null; }$event.stopPropagation();$event.preventDefault();return _vm.moveToOptions('next')},function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"up\",38,$event.key,[\"Up\",\"ArrowUp\"])){ return null; }$event.stopPropagation();$event.preventDefault();return _vm.moveToOptions('prev')},function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"enter\",13,$event.key,\"Enter\")){ return null; }$event.preventDefault();return _vm.selectOptionByMove.apply(null, arguments)},function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"esc\",27,$event.key,[\"Esc\",\"Escape\"])){ return null; }$event.stopPropagation();$event.preventDefault();_vm.visible = false},function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"tab\",9,$event.key,\"Tab\")){ return null; }_vm.visible = false}],\"compositionstart\":_vm.compositionHandle,\"compositionend\":_vm.compositionHandle,\"compositionupdate\":_vm.compositionHandle,\"input\":[function($event){if($event.target.composing){ return; }_vm.innerValue=$event.target.value},_vm.inputFilterHandle]}},'input',_vm.$attrs,false)),_vm._v(\" \"),_vm._t(\"icon\",function(){return [_c('i',{class:[_vm.iconClass]})]}),_vm._v(\" \"),_vm._t(\"clear\",function(){return [(_vm.isShowClear)?_c('a',{on:{\"click\":_vm.clearAutoComplete}}):_vm._e()]})],2),_vm._v(\" \"),_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.visible),expression:\"visible\"}],ref:\"dropdown\",staticClass:\"goodwe-auto-complete__dropdown\",class:[_vm.dropDownClass]},[_c('ul',_vm._l((_vm.innerList),function(item,index){return _c('li',{key:item,class:{'goodwe-auto-complete__li--selected':_vm.hoverIndex==index},domProps:{\"innerHTML\":_vm._s(_vm.highLight(item))},on:{\"mouseenter\":function($event){_vm.hoverIndex=index},\"click\":function($event){return _vm.itemClick(index)}}})}),0)])])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import AutoComplete from './src/autoComplete.vue';\r\n\r\nAutoComplete.install = function(Vue) {\r\n Vue.component(AutoComplete.name, AutoComplete);\r\n}\r\n\r\nexport default AutoComplete;","// 逆变器\r\n\r\n/**\r\n * 获取有效值\r\n * @param {Object} v 要获取的值 \r\n */\r\nvar g = function getEffectiveValue(v) {\r\n if (v == null || typeof (v) === \"undefined\") {\r\n return \"--\";\r\n }\r\n return v;\r\n}\r\n\r\n/**\r\n * 判断是否空对象或者不存在\r\n * @param {Object} o 要判断的对象\r\n */\r\nvar isNullOrEmptyObject = function (o) {\r\n if (o == null || typeof (o) === \"undefined\") {\r\n return true;\r\n }\r\n for (var k in o) {\r\n if (o.hasOwnProperty(k)) {\r\n return false;\r\n }\r\n }\r\n return true;\r\n}\r\n\r\n/**\r\n * 根据SN号获取是否三相电\r\n * @param {string} sn 逆变器SN号 \r\n */\r\nfunction isThreePhase(sn) {\r\n return sn.charAt(6).toLowerCase() === \"t\";\r\n}\r\n\r\n/**\r\n * \r\n * @param {string} str 要保留小数的字符串\r\n * @param {number} num 要保留的小数\r\n */\r\nfunction fixNumber(str, num = 0) {\r\n str += \"\";\r\n var r = new RegExp(\"^(\\\\d+)\\\\.(\\\\d{\" + num + \"})\\\\d+$\");\r\n return str.replace(r, (a, b, c) => {\r\n return b + \".\" + c;\r\n })\r\n}\r\n\r\n/**\r\n * 获取交流输出数据{v, i, f} 电压, 电流, 频率\r\n * @param {string} sn 逆变器SN号 \r\n * @param {Object} data 设备数据\r\n */\r\nfunction getACInfo(sn, data) {\r\n // 异常的数据\r\n if (isNullOrEmptyObject(data.d)) {\r\n return {\r\n v: \"--\",\r\n i: \"--\",\r\n f: \"--\"\r\n }\r\n }\r\n // 三相电\r\n if (isThreePhase(sn)) {\r\n var r = {\r\n v: [data.d.vac1, data.d.vac2, data.d.vac3],\r\n i: [data.d.iac1, data.d.iac2, data.d.iac3],\r\n f: [data.d.fac1, data.d.fac2, data.d.fac3]\r\n }\r\n // 如果d中不存在字段(undefined)或字段的值为空(null)\r\n for (var k in r) {\r\n for (var i = 0; i < r[k].length; i++) {\r\n if (/undefined|null/.test(r[k][i])) {\r\n r[k][i] = \"--\";\r\n }\r\n }\r\n r[k] = r[k].join(\"/\")\r\n }\r\n return r;\r\n }\r\n // 单相电\r\n return {\r\n v: g(data.d.vac1),\r\n i: g(data.d.iac1),\r\n f: g(data.d.fac1)\r\n }\r\n}\r\n\r\n/**\r\n * 获取直流输入数据\r\n * @param {string} sn 逆变器SN号\r\n * @param {Object} data 设备数据\r\n */\r\nfunction getDCInfo(sn, data) {\r\n //假数据\r\n // for(var i=1;i<5;i++){\r\n // data.d['vpv'+i]='vpv'+i;\r\n // data.d['ipv'+i]='ipv'+i;\r\n // }\r\n //\r\n if (isNullOrEmptyObject(data.d)) {\r\n return new Array(4).fill(\"--\");\r\n }\r\n var r;\r\n // 按照原有的逻辑做吧,sn 的第 6 位单表 MPPT 路数 s 单路, d 双路, m 多路。\r\n const c=sn.substr(2, 5).toLowerCase();\r\n const b=sn.substr(5, 3).toLowerCase();\r\n\r\n if (sn.charAt(5).toLowerCase() == \"s\"||b=='nsu') {\r\n var vi = g(data.d.vpv1) + \"/\" + g(data.d.ipv1);\r\n r = [vi, ...new Array(3).fill(\"--\")];\r\n } else if (sn.charAt(5).toLowerCase() == \"d\") {\r\n var vi = [\r\n g(data.d.vpv1) + \"/\" + g(data.d.ipv1),\r\n g(data.d.vpv2) + \"/\" + g(data.d.ipv2)\r\n ];\r\n r = [...vi, ...new Array(2).fill(\"--\")];\r\n } else {\r\n if(c==\"25kmt\"||c==\"30kmt\"||c==\"36kmt\"||b=='msu'){\r\n r = [\r\n g(data.d.vpv1) + \"/\" + g(data.d.ipv1),\r\n g(data.d.vpv2) + \"/\" + g(data.d.ipv2),\r\n g(data.d.vpv3) + \"/\" + g(data.d.ipv3)\r\n ]\r\n r = [...r, ...new Array(1).fill(\"--\")];\r\n }else{\r\n r = [\r\n g(data.d.vpv1) + \"/\" + g(data.d.ipv1),\r\n g(data.d.vpv2) + \"/\" + g(data.d.ipv2),\r\n g(data.d.vpv3) + \"/\" + g(data.d.ipv3),\r\n g(data.d.vpv4) + \"/\" + g(data.d.ipv4)\r\n ]\r\n }\r\n \r\n }\r\n return r.map(function(v) {\r\n if(/-\\//.test(v)) {\r\n return \"--\";\r\n }\r\n return v;\r\n });\r\n}\r\n\r\n/**\r\n * 获取组串电流\r\n * @param {string} sn 逆变器SN号\r\n * @param {Object} data 设备数据\r\n */\r\nfunction getIStr(sn, data) {\r\n //假数据\r\n // for(var i=1;i<17;i++){\r\n // data.d['istr'+i]='istr'+i;\r\n // }\r\n var r;\r\n // 目前只有50,60,65,70,75会上次 MPPT 数据, 新增25,30,36 shimiao.chen 2019/5/15\r\n const c = sn.substr(2, 6).toLowerCase();\r\n if (isNullOrEmptyObject(data.d) || !/^.{2}(25|30|35|36|50|60|65|70|75|80)kmt.+$/i.test(sn)) {\r\n if(c==\"17kdts\"||c==\"20kdts\"){\r\n return r=[\r\n [g(data.d.istr1), g(data.d.istr2)].join(\"/\"),\r\n [g(data.d.istr3), g(data.d.istr4)].join(\"/\")\r\n ].concat(new Array(2).fill(\"--\"));\r\n }else{\r\n return new Array(4).fill(\"--\");\r\n }\r\n }\r\n if(c.indexOf(\"25kmt\")>=0||c.indexOf(\"30kmt\")>=0||c.indexOf(\"36kmt\")>=0){\r\n return r=[\r\n [g(data.d.istr1), g(data.d.istr2)].join(\"/\"),\r\n [g(data.d.istr3), g(data.d.istr4)].join(\"/\"),\r\n [g(data.d.istr5), g(data.d.istr6)].join(\"/\")\r\n ].concat(new Array(1).fill(\"--\"));;\r\n }\r\n if(c.indexOf(\"35kmt\")>=0){\r\n return r=[\r\n [g(data.d.istr1), g(data.d.istr2),g(data.d.istr3)].join(\"/\"),\r\n [g(data.d.istr4), g(data.d.istr5),g(data.d.istr6)].join(\"/\"),\r\n [g(data.d.istr7), g(data.d.istr8),g(data.d.istr9)].join(\"/\"),\r\n [g(data.d.istr10), g(data.d.istr11),g(data.d.istr12)].join(\"/\")\r\n ].concat(new Array(1).fill(\"--\"));;\r\n }\r\n switch (c) {\r\n case \"50kmtb\":\r\n case \"60kmtb\":\r\n return r=[\r\n [g(data.d.istr1), g(data.d.istr2)].join(\"/\"),\r\n [g(data.d.istr3), g(data.d.istr4)].join(\"/\"),\r\n [g(data.d.istr5), g(data.d.istr6)].join(\"/\"),\r\n [g(data.d.istr7), g(data.d.istr8)].join(\"/\")\r\n ]\r\n case \"50kmtu\":\r\n case \"50kmts\":\r\n case \"50kmtn\":\r\n return r=[\r\n [g(data.d.istr1), g(data.d.istr2),g(data.d.istr3)].join(\"/\"),\r\n [g(data.d.istr4), g(data.d.istr5),g(data.d.istr6)].join(\"/\"),\r\n [g(data.d.istr7), g(data.d.istr8)].join(\"/\"),\r\n [g(data.d.istr10), g(data.d.istr11)].join(\"/\"),\r\n ]\r\n case \"60kmtu\":\r\n case \"60kmts\":\r\n case \"60kmtn\":\r\n case \"65kmtu\":\r\n case \"70kmts\":\r\n case \"80kmtb\":\r\n case \"80kmtd\":\r\n return r=[\r\n [g(data.d.istr1), g(data.d.istr2),g(data.d.istr3)].join(\"/\"),\r\n [g(data.d.istr4), g(data.d.istr5),g(data.d.istr6)].join(\"/\"),\r\n [g(data.d.istr7), g(data.d.istr8),g(data.d.istr9)].join(\"/\"),\r\n [g(data.d.istr10), g(data.d.istr11),g(data.d.istr12)].join(\"/\")\r\n ]\r\n case \"70kmtu\":\r\n case \"75kmtu\":\r\n return r=[\r\n [g(data.d.istr1), g(data.d.istr2),g(data.d.istr3)].join(\"/\"),\r\n [g(data.d.istr4), g(data.d.istr5),g(data.d.istr6)].join(\"/\"),\r\n [g(data.d.istr7), g(data.d.istr8),g(data.d.istr9)].join(\"/\"),\r\n [g(data.d.istr10), g(data.d.istr11),g(data.d.istr12),g(data.d.istr13)].join(\"/\")\r\n ]\r\n case \"80kmts\":\r\n case \"80kmtn\":\r\n case \"80kmtu\":\r\n return r=[\r\n [g(data.d.istr1), g(data.d.istr2),g(data.d.istr3),g(data.d.istr4)].join(\"/\"),\r\n [g(data.d.istr5), g(data.d.istr6),g(data.d.istr7),g(data.d.istr8)].join(\"/\"),\r\n [g(data.d.istr9), g(data.d.istr10),g(data.d.istr11),g(data.d.istr12)].join(\"/\"),\r\n [g(data.d.istr13), g(data.d.istr14),g(data.d.istr15),g(data.d.istr16)].join(\"/\"),\r\n ]\r\n default:\r\n if(sn.substr(2, 5).toLowerCase()==\"65kmt\"||sn.substr(2, 5).toLowerCase()==\"60kmt\"){\r\n return r=[\r\n [g(data.d.istr1), g(data.d.istr2),g(data.d.istr3)].join(\"/\"),\r\n [g(data.d.istr4), g(data.d.istr5),g(data.d.istr6)].join(\"/\"),\r\n [g(data.d.istr7), g(data.d.istr8),g(data.d.istr9)].join(\"/\"),\r\n [g(data.d.istr10), g(data.d.istr11),g(data.d.istr12)].join(\"/\")\r\n ]\r\n }\r\n if(sn.substr(2, 5).toLowerCase()==\"50kmt\"){\r\n return r=[\r\n [g(data.d.istr1), g(data.d.istr2),g(data.d.istr3)].join(\"/\"),\r\n [g(data.d.istr4), g(data.d.istr5),g(data.d.istr6)].join(\"/\"),\r\n [g(data.d.istr7), g(data.d.istr8)].join(\"/\"),\r\n [g(data.d.istr10), g(data.d.istr11)].join(\"/\"),\r\n ]\r\n }\r\n return new Array(4).fill(\"--\");\r\n }\r\n}\r\n\r\n\r\n/**\r\n * 通过逆变器SN号获取逆变器信息\r\n * @param {string} sn 逆变器SN号 \r\n * @param {Object} data 设备数据\r\n */\r\nexport default function (sn, data) {\r\n return {\r\n ac: getACInfo(sn, data),\r\n dc: getDCInfo(sn, data),\r\n istr: getIStr(sn, data)\r\n }\r\n}","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./inverter.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./inverter.vue?vue&type=script&lang=js&\"","\r\n\r\n","export default {\r\n props: {\r\n model: {\r\n type: Object,\r\n default: {}\r\n }\r\n },\r\n data() {\r\n return {\r\n lang: Goodwe.Ops.Resouces.Front\r\n };\r\n },\r\n filters: {\r\n formatDate(date) {\r\n if (date == \"-\" || date == \"\") {\r\n return \"--\";\r\n }\r\n if (typeof (date) == \"undefined\" || null == date) {\r\n return \"--\";\r\n }\r\n date = new Date(date);\r\n var month = (date.getMonth() + 1) >= 10 ? (date.getMonth() + 1) : '0' + (date.getMonth() + 1);\r\n var day = date.getDate() >= 10 ? (date.getDate()) : ('0' + date.getDate());\r\n return month + '/' + day + '/' + date.getFullYear();\r\n },\r\n tempperatureFilter(v) {\r\n if (!v || v == \"-\") {\r\n return \"--\";\r\n }\r\n return v;\r\n },\r\n status2str(v) {\r\n return (\r\n {\r\n \"-1\": Goodwe.Ops.Resouces.Front.offline,\r\n \"0\": Goodwe.Ops.Resouces.Front.pssmAwaiting,\r\n \"1\": Goodwe.Ops.Resouces.Front.pssmGenerating,\r\n \"2\": Goodwe.Ops.Resouces.Front.pssmHalting\r\n }[v] || v\r\n );\r\n },\r\n formatTurnonTime(str) {\r\n if (!str || str == \"-\") {\r\n return \"--/--/-- --:--:--\";\r\n }\r\n str = str.split(\":\");\r\n str.pop();\r\n return str.join(\":\");\r\n },\r\n pacConvert: function (v) {\r\n if (!v || v == \"-\") {\r\n return \"--\";\r\n }\r\n return (v / 1000).toFixed(2);\r\n },\r\n \r\n pacConvert2: function (v) {\r\n if (!v || v == \"-\") {\r\n return \"--\";\r\n }\r\n return v.toFixed(1);\r\n },\r\n translate: function (v) {\r\n if (v == \"Discharging\") {\r\n return Goodwe.Ops.Resouces.Front.discharge\r\n } else if(v == \"Charging\"){\r\n return Goodwe.Ops.Resouces.Front.charge\r\n } else if (v == \"No battery\") {\r\n return Goodwe.Ops.Resouces.Front.no_battery\r\n }else if (v == \"Standby\") {\r\n return Goodwe.Ops.Resouces.Front.standby\r\n }\r\n }\r\n },\r\n methods: {\r\n //去除后台返回的单位\r\n removeUnit: function (str) {\r\n if (str == \"--\" || str == \"\" || str == null) {\r\n return [\"--\", \"\"];\r\n }\r\n var arr = str.toString().split('/');\r\n var changeArr = [];\r\n var beforeArr = [];\r\n var afterArr = [];\r\n for (var i = 0; i < arr.length; i++) {\r\n var beforeStr = parseFloat(arr[i]);\r\n if (isNaN(beforeStr)) {\r\n beforeStr = \"--\";\r\n }\r\n var afterStr = arr[i].replace(/[0-9.-]+/, \"\");\r\n beforeArr.push(beforeStr);\r\n afterArr.push(afterStr);\r\n\r\n }\r\n return [beforeArr.join('/'), afterArr.join('/')];\r\n },\r\n //设置电池宽度\r\n setSocWidth: function (v) {\r\n var v = v.split(\"%\")[0];\r\n if (v == undefined) {\r\n v = 0;\r\n }\r\n return v / 100 * 29 + \"px\"\r\n },\r\n }\r\n}","import { render, staticRenderFns } from \"./inverter.vue?vue&type=template&id=4173903c&\"\nimport script from \"./inverter.vue?vue&type=script&lang=js&\"\nexport * from \"./inverter.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[_c('input',{staticClass:\"device_detail_sn_hidden_input\",attrs:{\"type\":\"hidden\",\"name\":\"current_index\"},domProps:{\"value\":_vm.model.sn}}),_vm._v(\" \"),_c('div',{staticClass:\"device-item\",staticStyle:{\"height\":\"320px\"}},[_c('div',{staticClass:\"device-detail-name\",class:{'device-detail-spanner': _vm.model.it_change_flag}},[_vm._v(_vm._s(_vm.model.name))]),_vm._v(\" \"),_c('ul',{staticClass:\"table-list left-list\"},[_c('li',[_c('label',[_vm._v(_vm._s(_vm.lang.pssmInverterType))]),_vm._v(\" \"),_c('span',[_vm._v(_vm._s(_vm._f(\"tempperatureFilter\")(_vm.model.type)))])]),_vm._v(\" \"),_c('li',[_c('label',[_vm._v(_vm._s(_vm.lang.pssmInverterSN_1))]),_vm._v(\" \"),_c('span',[_vm._v(_vm._s(_vm._f(\"tempperatureFilter\")(_vm.model.sn)))])]),_vm._v(\" \"),_c('li',[_c('label',[_vm._v(\"Checkcode\")]),_vm._v(\" \"),_c('span',[_vm._v(_vm._s(_vm._f(\"tempperatureFilter\")(_vm.model.check_code)))])]),_vm._v(\" \"),_c('li',[_c('label',[_vm._v(_vm._s(_vm.lang.pssmCapacity))]),_vm._v(\" \"),_c('span',[_vm._v(_vm._s(_vm._f(\"pacConvert2\")(_vm.model.capacity)))]),_vm._v(\" \"),_c('em',[_vm._v(\"kW\")])]),_vm._v(\" \"),_c('li',[_c('label',[_vm._v(_vm._s(_vm.lang.scTurnonPs))]),_vm._v(\" \"),_c('span',[_vm._v(_vm._s(_vm._f(\"formatDate\")(_vm.model.turnon_time)))])]),_vm._v(\" \"),_c('li',[_c('label',[_vm._v(_vm._s(_vm.lang.pssmGeneratePower))]),_vm._v(\" \"),_c('span',[_vm._v(_vm._s(_vm._f(\"pacConvert\")(_vm.model.out_pac)))]),_vm._v(\" \"),_c('em',[_vm._v(\"kW\")])]),_vm._v(\" \"),_c('li',[_c('label',[_vm._v(_vm._s(_vm.lang.pssmAlternatingVoltage))]),_vm._v(\" \"),_c('span',[_vm._v(_vm._s(_vm.sn.ac.v))]),_vm._v(\" \"),_c('em',[_vm._v(\"V\")])]),_vm._v(\" \"),_c('li',[_c('label',[_vm._v(_vm._s(_vm.lang.pssmAlternatingCurrent))]),_vm._v(\" \"),_c('span',[_vm._v(_vm._s(_vm.sn.ac.i))]),_vm._v(\" \"),_c('em',[_vm._v(\"A\")])]),_vm._v(\" \"),_c('li',[_c('label',[_vm._v(_vm._s(_vm.lang.pssmAlternatingFrequency))]),_vm._v(\" \"),_c('span',[_vm._v(_vm._s(_vm.sn.ac.f))]),_vm._v(\" \"),_c('em',[_vm._v(\"Hz\")])])]),_vm._v(\" \"),_c('ul',{staticClass:\"table-list right-list\"},[_c('li',[_c('label',[_vm._v(_vm._s(_vm.lang.temperature))]),_vm._v(\" \"),_c('span',[_vm._v(_vm._s(_vm._f(\"tempperatureFilter\")(_vm.model.tempperature)))]),_vm._v(\" \"),_c('em',[_vm._v(\"°C\")])]),_vm._v(\" \"),_vm._l((4),function(k,i){return _c('li',{key:i},[_c('label',[_vm._v(_vm._s(_vm.lang.pssmDirectVoltageCurrent)+_vm._s(k))]),_vm._v(\" \"),_c('span',[_vm._v(_vm._s(_vm.sn.dc[i]))]),_vm._v(\" \"),_c('em',[_vm._v(\"V/A\")])])}),_vm._v(\" \"),_vm._l((4),function(k,i){return _c('li',{key:i+4},[_c('label',[_vm._v(_vm._s(_vm.lang.pssmStringCurrent)+_vm._s(k))]),_vm._v(\" \"),_c('span',[_vm._v(_vm._s(_vm.sn.istr[i]))]),_vm._v(\" \"),_c('em',[_vm._v(\"A\")])])})],2),_vm._v(\" \"),_c('div',{staticClass:\"today-power-center\"},[_c('p',[_vm._v(_vm._s(_vm.d.eDay || 0))]),_vm._v(\" \"),_c('span',[_vm._v(\"kWh\")]),_vm._v(\" \"),_c('span',[_vm._v(_vm._s(_vm.lang.pssmGenerateTodayAmount))])]),_vm._v(\" \"),_c('div',{staticClass:\"total-list left-total-list\"},[_c('h4',[_vm._v(_vm._s(_vm.lang.pssmGenerateTotal))]),_vm._v(\" \"),_c('p',[_vm._v(_vm._s(_vm.d.eTotal || 0)+\"kWh\")])]),_vm._v(\" \"),_c('div',{staticClass:\"total-list right-total-list\"},[_c('h4',[_vm._v(_vm._s(_vm.lang.pssmGenerateTotalHour))]),_vm._v(\" \"),_c('p',[_vm._v(_vm._s(_vm.d.hTotal || 0)+_vm._s(_vm.lang.pssmUnitHour))])]),_vm._v(\" \"),_c('div',{staticClass:\"device-status-w\"},[_c('div',{staticClass:\"device-status\",attrs:{\"data-status\":_vm.model.status}},[_vm._v(_vm._s(_vm._f(\"status2str\")(_vm.model.status)))]),_vm._v(\" \"),(_vm.model.status == -1 && !_vm.d.fade)?_c('div',{staticClass:\"creation-date\"},[_vm._v(_vm._s(_vm.lang.pssmLastUpdateTime)+\": \"+_vm._s(_vm._f(\"formatTurnonTime\")(_vm.d.last_refresh_time)))]):_vm._e(),_vm._v(\" \"),(_vm.model.status != -1)?_c('div',{staticClass:\"creation-date\"},[_vm._v(_vm._s(_vm.model.fault_message))]):_vm._e()])])])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import Inverter from './src/inverter.vue';\r\n\r\nInverter.install = function(Vue) {\r\n Vue.component(Inverter.name, Inverter);\r\n}\r\n\r\nexport default Inverter;","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./GoodweStatusLight.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./GoodweStatusLight.vue?vue&type=script&lang=js&\"","\r\n\r\n\r\n","var render, staticRenderFns\nimport script from \"./GoodweStatusLight.vue?vue&type=script&lang=js&\"\nexport * from \"./GoodweStatusLight.vue?vue&type=script&lang=js&\"\nimport style0 from \"./GoodweStatusLight.vue?vue&type=style&index=0&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","import GoodweStatusLight from './src/GoodweStatusLight.vue';\r\n\r\nGoodweStatusLight.install = Vue => {\r\n Vue.component(GoodweStatusLight.name, GoodweStatusLight);\r\n}\r\n\r\nexport default GoodweStatusLight;","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./GoodweCard.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./GoodweCard.vue?vue&type=script&lang=js&\"","\n\n\n","var render, staticRenderFns\nimport script from \"./GoodweCard.vue?vue&type=script&lang=js&\"\nexport * from \"./GoodweCard.vue?vue&type=script&lang=js&\"\nimport style0 from \"./GoodweCard.vue?vue&type=style&index=0&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","import GoodweCard from './src/GoodweCard.vue';\r\n\r\nGoodweCard.install = Vue => {\r\n Vue.component(GoodweCard.name, GoodweCard);\r\n}\r\n\r\nexport default GoodweCard;","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./GoodweEditableLabel.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./GoodweEditableLabel.vue?vue&type=script&lang=js&\"","\r\n\r\n\r\n","var render, staticRenderFns\nimport script from \"./GoodweEditableLabel.vue?vue&type=script&lang=js&\"\nexport * from \"./GoodweEditableLabel.vue?vue&type=script&lang=js&\"\nimport style0 from \"./GoodweEditableLabel.vue?vue&type=style&index=0&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","import GoodweEditableLabel from './src/GoodweEditableLabel.vue';\r\n\r\nGoodweEditableLabel.install = Vue => {\r\n Vue.component(GoodweEditableLabel.name, GoodweEditableLabel);\r\n}\r\n\r\nexport default GoodweEditableLabel;","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./GoodweBattery.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./GoodweBattery.vue?vue&type=script&lang=js&\"","\n\n\n\n\n","import { render, staticRenderFns } from \"./GoodweBattery.vue?vue&type=template&id=0c4f8471&\"\nimport script from \"./GoodweBattery.vue?vue&type=script&lang=js&\"\nexport * from \"./GoodweBattery.vue?vue&type=script&lang=js&\"\nimport style0 from \"./GoodweBattery.vue?vue&type=style&index=0&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"goodwe-battery\",class:'goodwe-battery-'+_vm.length},[_vm._l((4),function(index){return _c('div',{key:index,staticClass:\"goodwe-battery__item\",class:{ 'goodwe-battery__item--hide': index > _vm.amount}})}),_vm._v(\" \"),(_vm.showSoc)?_c('div',{staticClass:\"show_soc\",class:_vm.status !== 0 ? 'soc-online' : 'soc-offline'},[_vm._v(\"\\n \"+_vm._s(_vm.soc + (_vm.soc !== '--' ? '%': ''))+\"\\n \")]):_vm._e()],2)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import GoodweBattery from './src/GoodweBattery.vue';\r\n\r\nGoodweBattery.install = Vue => {\r\n Vue.component(GoodweBattery.name, GoodweBattery);\r\n}\r\n\r\nexport default GoodweBattery;","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./GoodweBatteryInfo.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./GoodweBatteryInfo.vue?vue&type=script&lang=js&\"","\r\n\r\n\r\n\r\n\r\n","import { render, staticRenderFns } from \"./GoodweBatteryInfo.vue?vue&type=template&id=2a24e17c&scoped=true&\"\nimport script from \"./GoodweBatteryInfo.vue?vue&type=script&lang=js&\"\nexport * from \"./GoodweBatteryInfo.vue?vue&type=script&lang=js&\"\nimport style0 from \"./GoodweBatteryInfo.vue?vue&type=style&index=0&id=2a24e17c&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"2a24e17c\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"goodwe-battery-info\"},[_c('div',{staticClass:\"ps-battery\"},[_c('div',{staticClass:\"fl battery-image\"},[_c('div',{staticClass:\"bms-sub-tilte\"},[_vm._v(_vm._s(_vm.lang.Rack_Battery_System)+\" \\n \"),(_vm.batteryList && _vm.batteryList.length > 1)?_c('span',[_vm._v(_vm._s(_vm.psCureActiveIndex+1))]):_vm._e()]),_vm._v(\" \"),_c('div',{staticClass:\"ps-battery-cure\",class:{'charge':_vm.statusMap[_vm.currentBattery.status]=='charge',\n 'discharge':_vm.statusMap[_vm.currentBattery.status]=='discharge',\n 'standby':_vm.statusMap[_vm.currentBattery.status]=='standby'}}),_vm._v(\" \"),_c('div',{staticClass:\"soc-text\"},[_vm._v(_vm._s(((_vm.currentBattery.power || 0) + \"%\")))]),_vm._v(\" \"),_c('div',{staticClass:\"discribe\"},[_vm._v(_vm._s(_vm.statusObj[(\"status\" + (_vm.currentBattery.status))]))]),_vm._v(\" \"),_c('div',{staticClass:\"discribe\",attrs:{\"title\":_vm.currentBattery['warning_bms'] ? _vm.lang[_vm.currentBattery.warning_bms]:''}},[_vm._v(\"\\n \"+_vm._s(_vm.currentBattery['warning_bms'] ? _vm.lang[_vm.currentBattery.warning_bms]:\"\")+\"\\n \")])]),_vm._v(\" \"),_c('div',{staticClass:\"goodwe-ps-cure-inverter\"},[_c('el-scrollbar',{staticStyle:{\"width\":\"100%\",\"height\":\"320px\"},attrs:{\"wrap-class\":'el-gw-scroll'}},[(_vm.currentBatteryMonitor.length > 0)?_c('ul',{staticClass:\"table-list\"},_vm._l((_vm.currentBatteryMonitor),function(item){return _c('li',{key:item.key,class:{'no-border-bottom': ((_vm.clusterRespCount > 6 && !_vm.showBatteryList) || _vm.clusterRespCount == 0)\n && _vm.needExpandKeys.includes(item.key) },attrs:{\"id\":item.key}},[(item.key !== 'Battery')?_c('div',[_c('label',{attrs:{\"title\":_vm.lang[item.key] || item.key}},[_vm._v(\"\\n \"+_vm._s(_vm.lang[item.key] || item.key)+\"\\n \")]),_vm._v(\" \"),(_vm.needExpandKeys.includes(item.key) && _vm.clusterRespCount > 6)?_c('div',{staticClass:\"img-icon\",on:{\"click\":function($event){_vm.showBatteryList = !_vm.showBatteryList}}},[_c('img',{attrs:{\"src\":\"/Images/icon/icon_down_w.png\",\"id\":\"imgIcon\"}})]):_vm._e(),_vm._v(\" \"),_c('div',{staticClass:\"value_list\"},_vm._l((item.value),function(val){return _c('p',{key:val,attrs:{\"title\":val['isTranslate'] ? (\"\" + (_vm.lang[val.values]) + (val.unit)) : (\"\" + (val.values) + (val.unit))}},[_vm._v(\"\\n \"+_vm._s(val['isTranslate'] ? (\"\" + (_vm.lang[val.values]) + (val.unit)) : (\"\" + (val.values) + (val.unit)))+\"\\n \")])}),0)]):_vm._e(),_vm._v(\" \"),(item.key === 'Battery' && (_vm.clusterRespCount <= 6 || _vm.showBatteryList))?_c('div',{staticStyle:{\"margin-left\":\"8px\"}},_vm._l((item.value),function(child,i){return _c('div',{key:i},[_c('label',{staticClass:\"battery-item\",staticStyle:{\"padding-left\":\"32px\"}},[_vm._v(\"\\n \"+_vm._s(((_vm.lang.Rack_Battery_RACK) + \" \" + (i+1)))+\"\\n \")]),_vm._v(\" \"),_c('div',{staticClass:\"value_list battery-item\",staticStyle:{\"padding-left\":\"4px\"}},[_c('p',{staticClass:\"battery-cluster\",class:{'battery-cluster-hover': _vm.clusterSNArr.includes(child.values)},style:({color: _vm.warnClusterList.includes(child.values) ? '#f65b12':'#fff'}),on:{\"click\":function($event){return _vm.showCluster(child.values)}}},[_vm._v(\"\\n \"+_vm._s(child.values || '--')+\"\\n \")])])])}),0):_vm._e()])}),0):_vm._e()])],1),_vm._v(\" \"),_c('div',{staticClass:\"fl\",attrs:{\"id\":\"batteryChart\"}})]),_vm._v(\" \"),(_vm.batteryList && _vm.batteryList.length > 1)?_c('ul',{staticClass:\"goodwe-ps-pager\"},_vm._l((_vm.batteryList),function(item,index){return _c('li',{key:item,class:{'active-li':index == _vm.psCureActiveIndex},on:{\"click\":function($event){return _vm.changePsCure(item,index)}}},[_vm._v(_vm._s(index+1)+\"\\n \")])}),0):_vm._e()])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import GoodweBatteryInfo from './src/GoodweBatteryInfo.vue';\r\n\r\nGoodweBatteryInfo.install = Vue => {\r\n Vue.component(GoodweBatteryInfo.name, GoodweBatteryInfo);\r\n}\r\n\r\nexport default GoodweBatteryInfo;","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./GoodweBatteryCluster.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./GoodweBatteryCluster.vue?vue&type=script&lang=js&\"","\r\n\r\n\r\n\r\n\r\n","import { render, staticRenderFns } from \"./GoodweBatteryCluster.vue?vue&type=template&id=2314cbf9&scoped=true&\"\nimport script from \"./GoodweBatteryCluster.vue?vue&type=script&lang=js&\"\nexport * from \"./GoodweBatteryCluster.vue?vue&type=script&lang=js&\"\nimport style0 from \"./GoodweBatteryCluster.vue?vue&type=style&index=0&id=2314cbf9&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"2314cbf9\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"goodwe-battery-cluster\"},[_c('div',{staticClass:\"battery-cluster\"},[(_vm.curBatClusterInfo)?_c('div',{staticClass:\"goodwe-cluster\"},[_c('el-scrollbar',{staticStyle:{\"width\":\"100%\",\"height\":\"390px\"},attrs:{\"wrap-class\":'el-gw-scroll'}},[_c('div',{staticClass:\"cluster-item\",style:({height: _vm.itemHeigth, lineHeight: _vm.itemHeigth})},[_c('div',{staticClass:\"cluster-item-label\"},[_vm._v(_vm._s(_vm.lang.Rack_Battery_Model))]),_vm._v(\" \"),_c('div',{staticClass:\"cluster-item-value\"},[_vm._v(_vm._s(_vm.curBatClusterInfo.batteryModel || '--'))])]),_vm._v(\" \"),_c('div',{staticClass:\"cluster-item\",style:({height: _vm.itemHeigth, lineHeight: _vm.itemHeigth})},[_c('div',{staticClass:\"cluster-item-label\"},[_vm._v(_vm._s(_vm.lang.SN))]),_vm._v(\" \"),_c('div',{staticClass:\"cluster-item-value\"},[_vm._v(_vm._s(_vm.curBatClusterInfo.batSN || '--'))])]),_vm._v(\" \"),_c('div',{staticClass:\"cluster-item\",style:({height: _vm.itemHeigth, lineHeight: _vm.itemHeigth})},[_c('div',{staticClass:\"item-flex-p\"},[_vm._v(_vm._s(_vm.lang.batteryV))]),_vm._v(\" \"),_c('div',{staticClass:\"item-flex-v\"},[_vm._v(_vm._s(_vm.curBatClusterInfo.voltage || 0)+\"V\")]),_vm._v(\" \"),_c('div',{staticClass:\"item-flex-p\"},[_vm._v(_vm._s(_vm.lang.SOC))]),_vm._v(\" \"),_c('div',{staticClass:\"item-flex-v\"},[_vm._v(_vm._s(_vm.curBatClusterInfo.soc || 0)+\"%\")])]),_vm._v(\" \"),_c('div',{staticClass:\"cluster-item\",style:({height: _vm.itemHeigth, lineHeight: _vm.itemHeigth})},[_c('div',{staticClass:\"item-flex-p\"},[_vm._v(_vm._s(_vm.lang.Common_Current))]),_vm._v(\" \"),_c('div',{staticClass:\"item-flex-v\"},[_vm._v(_vm._s(_vm.curBatClusterInfo.current || 0)+\"A\")]),_vm._v(\" \"),_c('div',{staticClass:\"item-flex-p\"},[_vm._v(_vm._s(_vm.lang.verBMS))]),_vm._v(\" \"),_c('div',{staticClass:\"item-flex-v\"},[_vm._v(_vm._s(_vm.versionJudge(_vm.curBatClusterInfo.majorMcuVersion)))])]),_vm._v(\" \"),_c('div',{staticClass:\"cluster-item\",style:({height: _vm.itemHeigth, lineHeight: _vm.itemHeigth})},[_c('div',{staticClass:\"item-flex-p\",attrs:{\"title\":_vm.Rack_Charge_Current_Limit}},[_vm._v(_vm._s(_vm.lang.Rack_Charge_Current_Limit))]),_vm._v(\" \"),_c('div',{staticClass:\"item-flex-v\"},[_vm._v(_vm._s(_vm.curBatClusterInfo.maxChargeLimitCurrent || 0)+\"A\")]),_vm._v(\" \"),_c('div',{staticClass:\"item-flex-p\",attrs:{\"title\":_vm.Common_Running_Status}},[_vm._v(_vm._s(_vm.lang.Common_Running_Status))]),_vm._v(\" \"),_c('div',{staticClass:\"item-flex-v\"},[_vm._v(_vm._s(_vm.lang[_vm.curBatClusterInfo.independentOperateState] || '--'))])]),_vm._v(\" \"),_c('div',{staticClass:\"cluster-item\",style:({height: _vm.itemHeigth, lineHeight: _vm.itemHeigth})},[_c('div',{staticClass:\"item-flex-p\",attrs:{\"title\":_vm.Rack_Discharge_Current_Limit}},[_vm._v(_vm._s(_vm.lang.Rack_Discharge_Current_Limit))]),_vm._v(\" \"),_c('div',{staticClass:\"item-flex-v\"},[_vm._v(_vm._s(_vm.curBatClusterInfo.maxDischargeLimitCurrent || 0)+\"A\")]),_vm._v(\" \"),_c('div',{staticClass:\"item-flex-p\",attrs:{\"title\":_vm.lang.Rack_Pack_Num}},[_vm._v(_vm._s(_vm.lang.Rack_Pack_Num))]),_vm._v(\" \"),_c('div',{staticClass:\"item-flex-v\"},[_vm._v(_vm._s(_vm.curBatClusterInfo.seriesCount || 0))])]),_vm._v(\" \"),(_vm.curBatClusterInfo.airShow)?_c('div',[_c('div',{staticClass:\"cluster-item-title\"},[_vm._v(\"DCDC\")]),_vm._v(\" \"),_c('div',{staticClass:\"cluster-item\"},[_c('div',{staticClass:\"item-flex-p\",attrs:{\"title\":_vm.DeviceParameter_DCDCFWVersion}},[_vm._v(_vm._s(_vm.lang.DeviceParameter_DCDCFWVersion))]),_vm._v(\" \"),_c('div',{staticClass:\"item-flex-v\"},[_vm._v(_vm._s(_vm.versionJudge(_vm.curBatClusterInfo.minorMcuVersion)))]),_vm._v(\" \"),_c('div',{staticClass:\"item-flex-p\",attrs:{\"title\":_vm.lang.Rack_DCDC_Status}},[_vm._v(_vm._s(_vm.lang.Rack_DCDC_Status))]),_vm._v(\" \"),_c('div',{staticClass:\"item-flex-v\",attrs:{\"title\":_vm.lang[_vm.curBatClusterInfo.dcdcStatus]}},[_vm._v(_vm._s(_vm.lang[_vm.curBatClusterInfo.dcdcStatus] || '--'))])]),_vm._v(\" \"),_c('div',{staticClass:\"cluster-item-title\"},[_vm._v(_vm._s(_vm.lang.Rack_Air_Conditioner))]),_vm._v(\" \"),_c('div',{staticClass:\"cluster-item\"},[_c('div',{staticClass:\"item-flex-p\",attrs:{\"title\":_vm.lang.Rack_Battery_Cabinet_Temperature}},[_vm._v(_vm._s(_vm.lang.Rack_Battery_Cabinet_Temperature))]),_vm._v(\" \"),_c('div',{staticClass:\"item-flex-v\"},[_vm._v(_vm._s(_vm.curBatClusterInfo.cabinetTemperature || 0)+\"℃\")]),_vm._v(\" \"),_c('div',{staticClass:\"item-flex-p\",attrs:{\"title\":_vm.lang.Rack_Battery_Cabinet_Humidity}},[_vm._v(_vm._s(_vm.lang.Rack_Battery_Cabinet_Humidity))]),_vm._v(\" \"),_c('div',{staticClass:\"item-flex-v\"},[_vm._v(_vm._s(_vm.curBatClusterInfo.cabinetHumidity || 0)+\"%\")])]),_vm._v(\" \"),_c('div',{staticClass:\"cluster-item\"},[_c('div',{staticClass:\"cluster-item-label\",attrs:{\"title\":_vm.lang.Rack_Battery_Air_Conditioner_Running_Status}},[_vm._v(\"\\n \"+_vm._s(_vm.lang.Rack_Battery_Air_Conditioner_Running_Status || '--'))]),_vm._v(\" \"),_c('div',{staticClass:\"cluster-item-value\",attrs:{\"title\":_vm.lang[_vm.curBatClusterInfo.airConditioningSts]}},[_vm._v(\"\\n \"+_vm._s(_vm.lang[_vm.curBatClusterInfo.airConditioningSts] || '--'))])])]):_vm._e()])],1):_vm._e(),_vm._v(\" \"),(_vm.curBatClusterInfo)?_c('div',{staticClass:\"battery-image\"},[_c('div',{staticClass:\"battery-cluster-cure standby\"}),_vm._v(\" \"),_c('div',{staticClass:\"soc-text\"},[_vm._v(_vm._s(((_vm.curBatClusterInfo.soc || 0) + \"%\")))]),_vm._v(\" \"),_c('div',{staticClass:\"discribe\",attrs:{\"title\":_vm.lang[_vm.curBatClusterInfo.independentOperateState]}},[_vm._v(\"\\n \"+_vm._s(_vm.lang[_vm.curBatClusterInfo.independentOperateState])+\"\\n \")]),_vm._v(\" \"),_c('el-tooltip',{attrs:{\"placement\":\"left\",\"effect\":\"light\"}},[_c('div',{staticClass:\"discribe\",staticStyle:{\"color\":\"rgb(246, 91, 18)\",\"cursor\":\"pointer\"}},[_vm._v(\"\\n \"+_vm._s(_vm.curBatClusterInfo['warnName'])+\"\\n \")]),_vm._v(\" \"),_c('div',{staticClass:\"explain-info\",attrs:{\"slot\":\"content\"},slot:\"content\"},[_c('div',[_vm._v(_vm._s(_vm.curBatClusterInfo['warnName']))])])])],1):_vm._e()]),_vm._v(\" \"),(_vm.page.record > 1)?_c('gdw-pager',{staticStyle:{\"margin\":\"18px 16px 0\",\"text-align\":\"center\"},attrs:{\"page-sizes\":[1],\"current-page\":_vm.page.index,\"total\":_vm.page.record,\"layout\":\"pager, sizes, total\"},on:{\"current-change\":_vm.handlePageChange}}):_vm._e()],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import GoodweBatteryCluster from './src/GoodweBatteryCluster.vue';\r\n\r\nGoodweBatteryCluster.install = Vue => {\r\n Vue.component(GoodweBatteryCluster.name, GoodweBatteryCluster);\r\n}\r\n\r\nexport default GoodweBatteryCluster;","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./GoodweTab.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./GoodweTab.vue?vue&type=script&lang=js&\"","\r\n\r\n\r\n\r\n","import { render, staticRenderFns } from \"./GoodweTab.vue?vue&type=template&id=6d32a890&\"\nimport script from \"./GoodweTab.vue?vue&type=script&lang=js&\"\nexport * from \"./GoodweTab.vue?vue&type=script&lang=js&\"\nimport style0 from \"./GoodweTab.vue?vue&type=style&index=0&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"goodwe-tab clearfix\"},_vm._l((_vm.options),function(item,index){return _c('goodwe-tab-item',{key:index,attrs:{\"option\":item}})}),1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./GoodweTabItem.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./GoodweTabItem.vue?vue&type=script&lang=js&\"","","var render, staticRenderFns\nimport script from \"./GoodweTabItem.vue?vue&type=script&lang=js&\"\nexport * from \"./GoodweTabItem.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","import GoodweTab from './src/GoodweTab.vue';\r\nimport GoodweTabItem from './src/GoodweTabItem.vue';\r\n\r\n[GoodweTab, GoodweTabItem].forEach(item => {\r\n item.install = Vue => {\r\n Vue.component(item.name, item);\r\n }\r\n});\r\n\r\nexport default {\r\n GoodweTab,\r\n GoodweTabItem\r\n};","import zrender from 'zrender';\r\n\r\nvar PowerFlow = function(interval, param) {\r\n //自定义线\r\n this.opt;\r\n this.interval = interval;\r\n this.param = param;\r\n this._pv = zrender.Path.extend({\r\n type: 'pin',\r\n buildPath: function(path, shape) {\r\n path.moveTo(205, 140);\r\n path.lineTo(455, 140);\r\n path.arc(455, 160, 20, Math.PI * 1.5, 0);\r\n path.arc(495, 230, 20, Math.PI * 1, Math.PI * 0.5, true);\r\n },\r\n cursor: 'default'\r\n });\r\n this._battery = zrender.Path.extend({\r\n type: 'battery',\r\n buildPath: function(path, shape) {\r\n path.moveTo(205, 360);\r\n path.lineTo(455, 360);\r\n path.arc(455, 340, 20, Math.PI * 0.5, 0, true);\r\n path.arc(495, 270, 20, Math.PI * 1, Math.PI * 1.5);\r\n }\r\n });\r\n this.zr = zrender.init(document.getElementById('energy'), {\r\n width: 1100,\r\n height: 500,\r\n cursor: 'default'\r\n });\r\n this.toLoad;\r\n this.pv;\r\n this.battery;\r\n this.toGrid;\r\n this.dataFromServer();\r\n};\r\n//画电池\r\nPowerFlow.prototype.createBatteryIcon = function(w) {\r\n var createBatteryIcon = new zrender.Rect({\r\n shape: {\r\n x: 126,\r\n y: 344,\r\n width: w,\r\n height: 31\r\n },\r\n style: {\r\n fill: '#03BBD6'\r\n }\r\n });\r\n this.zr.add(createBatteryIcon);\r\n};\r\n//新建文字\r\nPowerFlow.prototype.createText = function(text, color, x, y, fontsize) {\r\n var content = new zrender.Text({\r\n style: {\r\n text: text,\r\n textFill: color,\r\n textAlign: 'center',\r\n x: x,\r\n y: y,\r\n fontSize: fontsize\r\n }\r\n });\r\n this.zr.add(content);\r\n};\r\n//新建图标\r\nPowerFlow.prototype.createImg = function(src, x, y, w) {\r\n var img = new zrender.Image({\r\n style: {\r\n image: src,\r\n x: x,\r\n y: y,\r\n width: w,\r\n height: w\r\n },\r\n cursor: 'default'\r\n });\r\n this.zr.add(img);\r\n};\r\n//初始化\r\nPowerFlow.prototype.init = function() {\r\n this.toLoad = new zrender.Line({\r\n shape: {\r\n x1: 495,\r\n y1: 250,\r\n x2: 596,\r\n y2: 250\r\n },\r\n style: {\r\n stroke: '#03BBD6'\r\n },\r\n cursor: 'default'\r\n });\r\n this.pv = new this._pv({\r\n style: {\r\n stroke: '#03BBD6',\r\n fill: null\r\n },\r\n cursor: 'default'\r\n });\r\n this.battery = new this._battery({\r\n style: {\r\n stroke: '#03BBD6',\r\n fill: null\r\n },\r\n cursor: 'default'\r\n });\r\n\r\n this.toGrid = new zrender.Line({\r\n shape: {\r\n x1: 700,\r\n y1: 250,\r\n x2: 895,\r\n y2: 250\r\n },\r\n style: {\r\n stroke: '#03BBD6'\r\n },\r\n cursor: 'default'\r\n });\r\n};\r\n//渲染\r\nPowerFlow.prototype.render = function() {\r\n //pv设备是否存在\r\n if (this.opt.hasEquipment) {\r\n this.createImg('../../../Images/bigscreen/pv.png', 100, 88, 105);\r\n this.zr.add(this.pv);\r\n } else if (this.opt.hasEquipment == false) {\r\n this.createImg('../../../Images/bigscreen/pv_none.png', 100, 88, 105);\r\n this.pv.style.stroke = '#ababab';\r\n this.zr.add(this.pv);\r\n }\r\n\r\n //去除负号\r\n this.opt.pv = this.opt.pv.replace('-', '');\r\n this.opt.bettery = this.opt.bettery.replace('-', '');\r\n this.opt.grid = this.opt.grid.replace('-', '');\r\n this.opt.load = this.opt.load.replace('-', '');\r\n //电池宽度\r\n var wid;\r\n this.opt.soc = this.opt.socText;\r\n wid = this.opt.soc.replace('%', '');\r\n this.createBatteryIcon((wid / 100) * 46);\r\n //pv指标\r\n if (this.opt.pvStatus == -1) {\r\n this.createImg('../../../Images/bigscreen/arrow_1.png', 320, 133, 14);\r\n } else if (this.opt.pvStatus == 1) {\r\n this.createImg('../../../Images/bigscreen/arrow_2.png', 320, 133, 14);\r\n }\r\n this.createText(this.opt.pv, '#03BBD6', 330, 110, 17);\r\n //battery指标\r\n if (this.opt.betteryStatus == -1) {\r\n this.createImg('../../../Images/bigscreen/arrow_1.png', 320, 353, 14);\r\n } else if (this.opt.betteryStatus == 1) {\r\n this.createImg('../../../Images/bigscreen/arrow_2.png', 320, 353, 14);\r\n }\r\n this.createText(this.opt.bettery, '#03BBD6', 330, 380, 17);\r\n //Load指标\r\n if (this.opt.loadStatus == -1) {\r\n this.createImg('../../../Images/bigscreen/arrow_1.png', 790, 243, 14);\r\n } else if (this.opt.loadStatus == 1) {\r\n this.createImg('../../../Images/bigscreen/arrow_2.png', 790, 243, 14);\r\n }\r\n this.createText(this.opt.grid, '#03BBD6', 800, 220, 17);\r\n \r\n //Load功率\r\n if (this.opt.gridStatus) {\r\n this.createText(this.opt.load, '#03BBD6', 650, 170, 17);\r\n }\r\n\r\n this.zr.add(this.battery);\r\n this.zr.add(this.toLoad);\r\n this.zr.add(this.toGrid);\r\n //添加小图标\r\n this.createImg('../../../Images/bigscreen/battery.png', 100, 306, 105);\r\n this.createImg('../../../Images/bigscreen/load.png', 596, 197, 105);\r\n this.createImg('../../../Images/bigscreen/grid.png', 896, 197, 105);\r\n //添加文字,字去掉\r\n //this.createText(Goodwe.Ops.Resouces.Front.pv, \"#fff\", 153, 206,17);\r\n //this.createText(Goodwe.Ops.Resouces.Front.battery, \"#fff\", 153, 420,17);\r\n //this.createText(Goodwe.Ops.Resouces.Front.load, \"#fff\", 650, 320,17);\r\n //this.createText(Goodwe.Ops.Resouces.Front.grid, \"#fff\", 950, 320,17);\r\n //添加电池\r\n this.createText(this.opt.soc, '#03BBD6', 150, 280, 18);\r\n};\r\n//自动刷新\r\nPowerFlow.prototype.autoPlay = function() {\r\n //自动刷新去掉了\r\n this.dataFromServer();\r\n //this.timer = setInterval(function () {\r\n // this.dataFromServer();\r\n //}.bind(this), this.interval)\r\n};\r\n\r\nPowerFlow.prototype.dataFromServer = function() {\r\n var that = this;\r\n\r\n //// TODO: 服务器请求数据\r\n common.post('v2/PowerStation/GetPowerflow', that.param, function(res) {\r\n that.zr.clear();\r\n that.opt = res.data;\r\n that.init();\r\n that.render();\r\n });\r\n};\r\n\r\nexport default PowerFlow;\r\n","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./GoodweDeviceArea.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./GoodweDeviceArea.vue?vue&type=script&lang=js&\"","\r\n\r\n\r\n\r\n\r\n","import { render, staticRenderFns } from \"./GoodweDeviceArea.vue?vue&type=template&id=b1e62f70&\"\nimport script from \"./GoodweDeviceArea.vue?vue&type=script&lang=js&\"\nexport * from \"./GoodweDeviceArea.vue?vue&type=script&lang=js&\"\nimport style0 from \"./GoodweDeviceArea.vue?vue&type=style&index=0&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"goodwe-device-area\",class:{'is-stored': _vm.isStored}},[_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.isStored),expression:\"isStored\"}],staticClass:\"goodwe-device-area__tab\"},[_c('div',{class:{act: _vm.show !== 'energy'},on:{\"click\":function($event){return _vm.changeTab('device')}}},[_vm._v(\"设备指标\")]),_vm._v(\" \"),_c('div',{class:{act: _vm.show === 'energy'},on:{\"click\":function($event){return _vm.changeTab('energy')}}},[_vm._v(\"能量流图\")])]),_vm._v(\" \"),_c('ul',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.show !== 'energy' && _vm.emiList.length > 0),expression:\"show !== 'energy' && emiList.length > 0\"}],staticClass:\"goodwe-device-area__emi\"},[_c('li',{class:{ act: _vm.show !== 'emi'},on:{\"click\":function($event){return _vm.changeDeviceType('device')}}},[_vm._v(\"逆变器\")]),_vm._v(\" \"),_c('li',{class:{ act: _vm.show === 'emi'},on:{\"click\":function($event){return _vm.changeDeviceType('emi')}}},[_vm._v(\"环境监测仪\")])]),_vm._v(\" \"),_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.show === 'energy'),expression:\"show === 'energy'\"}],staticClass:\"goodwe-device-area__energy\"},[_c('div',{attrs:{\"id\":\"energy\"}})]),_vm._v(\" \"),_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.show === 'device'),expression:\"show === 'device'\"}],staticClass:\"goodwe-device-area__device\"},[(_vm.deviceList.length > _vm.list.page_size)?_c('div',{key:\"list\",staticClass:\"goodwe-device-area__list\",class:{hasemi: _vm.emiList.length > 0}},[_c('div',{staticClass:\"goodwe-device-area__list--legend\"},[_c('goodwe-status-light',{staticStyle:{\"margin-right\":\"5px\"},attrs:{\"size\":\"small\",\"status\":\"1\"}},[_vm._v(\"发电中\")]),_vm._v(\" \"),_c('goodwe-status-light',{staticStyle:{\"margin-right\":\"5px\"},attrs:{\"size\":\"small\",\"status\":\"0\"}},[_vm._v(\"待机中\")]),_vm._v(\" \"),_c('goodwe-status-light',{staticStyle:{\"margin-right\":\"5px\"},attrs:{\"size\":\"small\",\"status\":\"2\"}},[_vm._v(\"停机中\")]),_vm._v(\" \"),_c('goodwe-status-light',{staticStyle:{\"margin-right\":\"5px\"},attrs:{\"size\":\"small\",\"status\":\"-1\"}},[_vm._v(\"离线中\")])],1),_vm._v(\" \"),_c('div',{staticClass:\"goodwe-device-area__list--wrap\"},[_c('div',{staticClass:\"goodwe-device-area__list--thead clearfix\"},[_c('el-table',{staticStyle:{\"width\":\"100%\"},attrs:{\"data\":_vm.deviceListPage,\"size\":\"small\",\"stripe\":\"\",\"header-cell-style\":{backgroundColor: '#38474E', color: '#fff', fontSize: '15px'}},on:{\"sort-change\":_vm.listSortChange}},[_c('el-table-column',{attrs:{\"label\":\"\",\"width\":\"50\"},scopedSlots:_vm._u([{key:\"default\",fn:function(scope){return [_c('goodwe-status-light',{attrs:{\"status\":scope.row.status}})]}}],null,false,3150455538)}),_vm._v(\" \"),_c('el-table-column',{attrs:{\"label\":\"逆变器\",\"prop\":\"name\"}}),_vm._v(\" \"),_c('el-table-column',{attrs:{\"label\":\"S/N\",\"prop\":\"sn\",\"width\":\"250\"}}),_vm._v(\" \"),_c('el-table-column',{attrs:{\"label\":\"功率\",\"width\":\"200\",\"sortable\":\"custom\"},scopedSlots:_vm._u([{key:\"default\",fn:function(scope){return [_vm._v(_vm._s((scope.row.out_pac / 1000).toFixed(2))+\"千瓦\")]}}],null,false,485254991)}),_vm._v(\" \"),_c('el-table-column',{attrs:{\"label\":\"日发电量\",\"width\":\"200\",\"sortable\":\"custom\"},scopedSlots:_vm._u([{key:\"default\",fn:function(scope){return [_vm._v(_vm._s(scope.row.d.eDay.toFixed(2))+\"度\")]}}],null,false,3346992883)}),_vm._v(\" \"),_c('el-table-column',{attrs:{\"label\":\"月发电量\",\"width\":\"200\",\"sortable\":\"custom\"},scopedSlots:_vm._u([{key:\"default\",fn:function(scope){return [_vm._v(_vm._s(scope.row.emonth.toFixed(2))+\"度\")]}}],null,false,3613648597)}),_vm._v(\" \"),_c('el-table-column',{attrs:{\"label\":\"总发电量\",\"width\":\"200\",\"sortable\":\"custom\"},scopedSlots:_vm._u([{key:\"default\",fn:function(scope){return [_vm._v(_vm._s(scope.row.d.eTotal.toFixed(2))+\"度\")]}}],null,false,4191442765)})],1)],1),_vm._v(\" \"),_c('div',{staticClass:\"goodwe-device-area__list--body\"},[_c('div',{staticClass:\"goodwe-device-area__list--viewport\",on:{\"mouseenter\":_vm.handleMouseEnterList,\"mouseleave\":_vm.handleMouseLeaveList}},[_c('div',{staticClass:\"goodwe-device-area__list--ctrl\"},[_c('el-table',{staticStyle:{\"width\":\"100%\"},attrs:{\"data\":_vm.deviceListPage,\"size\":\"small\",\"show-header\":false,\"row-style\":{cursor: 'pointer'}},on:{\"row-click\":_vm.handleListRowClick}},[_c('el-table-column',{attrs:{\"label\":\"\",\"width\":\"50\"},scopedSlots:_vm._u([{key:\"default\",fn:function(scope){return [_c('goodwe-status-light',{attrs:{\"status\":scope.row.status}})]}}],null,false,3150455538)}),_vm._v(\" \"),_c('el-table-column',{attrs:{\"label\":\"逆变器\",\"prop\":\"name\",\"show-overflow-tooltip\":\"\"}}),_vm._v(\" \"),_c('el-table-column',{attrs:{\"label\":\"S/N\",\"prop\":\"sn\",\"width\":\"250\",\"show-overflow-tooltip\":\"\"}}),_vm._v(\" \"),_c('el-table-column',{attrs:{\"label\":\"功率\",\"width\":\"200\",\"show-overflow-tooltip\":\"\"},scopedSlots:_vm._u([{key:\"default\",fn:function(scope){return [_vm._v(_vm._s((scope.row.out_pac / 1000).toFixed(2))+\"千瓦\")]}}],null,false,485254991)}),_vm._v(\" \"),_c('el-table-column',{attrs:{\"label\":\"日发电量\",\"width\":\"200\",\"show-overflow-tooltip\":\"\"},scopedSlots:_vm._u([{key:\"default\",fn:function(scope){return [_vm._v(_vm._s(scope.row.d.eDay.toFixed(2))+\"度\")]}}],null,false,3346992883)}),_vm._v(\" \"),_c('el-table-column',{attrs:{\"label\":\"月发电量\",\"width\":\"200\",\"show-overflow-tooltip\":\"\"},scopedSlots:_vm._u([{key:\"default\",fn:function(scope){return [_vm._v(_vm._s(scope.row.emonth.toFixed(2))+\"度\")]}}],null,false,3613648597)}),_vm._v(\" \"),_c('el-table-column',{attrs:{\"label\":\"总发电量\",\"width\":\"200\",\"show-overflow-tooltip\":\"\"},scopedSlots:_vm._u([{key:\"default\",fn:function(scope){return [_vm._v(_vm._s(scope.row.d.eTotal.toFixed(2))+\"度\")]}}],null,false,4191442765)})],1)],1)]),_vm._v(\" \"),_c('div',{staticClass:\"goodwe-device-area__list--footer\"},[_c('gdw-pager',{staticStyle:{\"float\":\"right\",\"margin\":\"30px 15px 0 0\"},attrs:{\"page-sizes\":[_vm.list.page_size],\"current-page\":_vm.list.page_index,\"layout\":\"prev, pager, next, sizes, total, jumper\",\"total\":_vm.list.record,\"disabled\":_vm.list.carousel},on:{\"current-change\":_vm.handleListPageChange}}),_vm._v(\" \"),_c('goodwe-button',{staticStyle:{\"float\":\"right\",\"margin\":\"26px 15px 0 0\"},on:{\"click\":_vm.handleRollupBtn}},[_vm._v(\"\\n \"+_vm._s(_vm.list.carousel ? '停 止' : '播 放')+\"\\n \")])],1)])])]):_vm._e(),_vm._v(\" \"),(_vm.deviceList.length <= _vm.list.page_size)?_c('div',{key:\"carousel\",staticClass:\"goodwe-device-area__carousel\",staticStyle:{\"position\":\"relative\"}},[_c('el-carousel',{class:{'one-device': _vm.deviceList.length <= 1},attrs:{\"trigger\":\"click\",\"autoplay\":false,\"height\":\"410px\"},on:{\"change\":_vm.carouselIndexChange}},_vm._l((_vm.deviceList),function(item){return _c('el-carousel-item',{key:item.sn},[_c('goodwe-inverter-dashboard',{key:item.sn,attrs:{\"remote-type\":_vm.remoteType,\"third-dealertype\":_vm.thirdDealertype,\"model\":item,\"device-indicators\":_vm.deviceIndicators}})],1)}),1),_vm._v(\" \"),_c('div',{staticClass:\"goodwe-device-area__btn--curve\",on:{\"click\":_vm.jump2curve}},[_vm._v(\"曲线\"),_c('i',{staticClass:\"el-icon-arrow-right\"})])],1):_vm._e()]),_vm._v(\" \"),(_vm.deviceList.length > _vm.list.page_size)?_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.show === 'inverter'),expression:\"show === 'inverter'\"}],staticClass:\"goodwe-device-area__inverter\"},[_c('goodwe-inverter-dashboard',{key:\"forList\",attrs:{\"device-list\":_vm.deviceList,\"remote-type\":_vm.remoteType,\"third-dealertype\":_vm.thirdDealertype,\"device-indicators\":_vm.deviceIndicators,\"model\":_vm.current_inverter}}),_vm._v(\" \"),_c('div',{staticClass:\"goodwe-device-area__btn--curve\",on:{\"click\":_vm.jump2curve}},[_vm._v(\"曲线\"),_c('i',{staticClass:\"el-icon-arrow-right\"})])],1):_vm._e(),_vm._v(\" \"),_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.show === 'curve'),expression:\"show === 'curve'\"}],staticClass:\"goodwe-device-area__curve\"},[_c('goodwe-inverter-charts',{ref:\"deviceChart\",attrs:{\"remote-type\":_vm.remoteType,\"third-dealertype\":_vm.thirdDealertype,\"sn\":_vm.current_inverter.sn === undefined ? '' : _vm.current_inverter.sn,\"name\":_vm.current_inverter.name === undefined ? '' : _vm.current_inverter.name,\"brand\":_vm.current_inverter.brand === undefined ? '' : _vm.current_inverter.brand,\"is-stored\":_vm.current_inverter.is_stored === undefined ? false : _vm.current_inverter.is_stored,\"show-iv\":_vm.current_inverter.canStartIV === undefined ? false : _vm.current_inverter.canStartIV}}),_vm._v(\" \"),_c('div',{staticClass:\"goodwe-device-area__btn--data\",on:{\"click\":_vm.jump2data}},[_c('i',{staticClass:\"el-icon-arrow-left\"}),_vm._v(\"数据\")])],1),_vm._v(\" \"),_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.show === 'emi'),expression:\"show === 'emi'\"}],staticStyle:{\"height\":\"100%\"}},[_c('goodwe-e-m-i',{attrs:{\"emi-list\":_vm.emiList}})],1),_vm._v(\" \"),(_vm.show==='shadow')?_c('div',{staticStyle:{\"height\":\"100%\"}},[_c('goodwe-shadow-detect',{class:{'emi-active':_vm.emiList.length > 0},attrs:{\"sn\":_vm.current_inverter.sn === undefined ? '' : _vm.current_inverter.sn}})],1):_vm._e()])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import GoodweDeviceArea from './src/GoodweDeviceArea.vue';\r\n\r\nGoodweDeviceArea.install = Vue => {\r\n Vue.component(GoodweDeviceArea.name, GoodweDeviceArea);\r\n}\r\n\r\nexport default GoodweDeviceArea;","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./GoodweHtDetail.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./GoodweHtDetail.vue?vue&type=script&lang=js&\"","\r\n\r\n\r\n\r\n\r\n","import { render, staticRenderFns } from \"./GoodweHtDetail.vue?vue&type=template&id=e9c97b08&\"\nimport script from \"./GoodweHtDetail.vue?vue&type=script&lang=js&\"\nexport * from \"./GoodweHtDetail.vue?vue&type=script&lang=js&\"\nimport style0 from \"./GoodweHtDetail.vue?vue&type=style&index=0&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"goodwe-ht-detail ht-dashboard\"},[_c('div',{staticClass:\"goodwe-inverter-dashboard__title\"},[_c('span',[_vm._v(_vm._s(_vm.model.sn))])]),_vm._v(\" \"),_c('div',{staticClass:\"back-btn\",on:{\"click\":_vm.backDeviceDashboard}},[_c('i',{staticClass:\"el-icon-arrow-left\"}),_vm._v(_vm._s(_vm.lang.pssmBack))]),_vm._v(\" \"),_c('div',{staticClass:\"goodwe-inverter-dashboard__param goodwe-inverter-dashboard__left\",staticStyle:{\"color\":\"#ffffff\"}},[_c('table',{staticStyle:{\"width\":\"100%\"}},_vm._l((_vm.leftTable),function(item,index){return _c('tr',{key:index,staticStyle:{\"height\":\"30px\",\"border-bottom\":\"1px solid #838383\",\"font-size\":\"12px\",\"color\":\"#FFF\"}},[_c('td',{staticClass:\"table-label\"},[_vm._v(_vm._s(item.left.key))]),_vm._v(\" \"),_c('td',{attrs:{\"width\":\"320px\"}},[_vm._v(_vm._s(item.left.value))]),_vm._v(\" \"),_c('td',{staticClass:\"table-label\",staticStyle:{\"text-align\":\"left\"}},[_vm._v(_vm._s(item.right.key))]),_vm._v(\" \"),_c('td',{staticStyle:{\"padding-left\":\"15px\"}},[_vm._v(_vm._s(item.right.value))])])}),0)]),_vm._v(\" \"),_c('div',{staticClass:\"goodwe-inverter-dashboard__param goodwe-inverter-dashboard__right\"},[_c('table',{staticStyle:{\"width\":\"100%\"}},_vm._l((_vm.rightTable),function(item,index){return _c('tr',{key:index,staticStyle:{\"height\":\"30px\",\"border-bottom\":\"1px solid #838383\",\"font-size\":\"12px\",\"color\":\"#FFF\"}},[_c('td',{staticClass:\"table-label\"},[_vm._v(_vm._s(item.left.key))]),_vm._v(\" \"),_c('td',{attrs:{\"width\":\"320px\"}},[_vm._v(_vm._s(item.left.value))]),_vm._v(\" \"),_c('td',{staticClass:\"table-label\",staticStyle:{\"text-align\":\"left\"}},[_vm._v(_vm._s(item.right.key))]),_vm._v(\" \"),_c('td',{staticStyle:{\"padding-left\":\"15px\"}},[_vm._v(_vm._s(item.right.value))])])}),0)])])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import GoodweHtDetail from './src/GoodweHtDetail.vue';\r\n\r\nGoodweHtDetail.install = Vue => {\r\n Vue.component(GoodweHtDetail.name, GoodweHtDetail);\r\n}\r\n\r\nexport default GoodweHtDetail;","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ParallelSystemDetail.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ParallelSystemDetail.vue?vue&type=script&lang=js&\"","\n\n","import { render, staticRenderFns } from \"./ParallelSystemDetail.vue?vue&type=template&id=84a1802c&scoped=true&\"\nimport script from \"./ParallelSystemDetail.vue?vue&type=script&lang=js&\"\nexport * from \"./ParallelSystemDetail.vue?vue&type=script&lang=js&\"\nimport style0 from \"./ParallelSystemDetail.vue?vue&type=style&index=0&id=84a1802c&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"84a1802c\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"parallel-con\"},[(!_vm.noTitle)?_c('div',{staticClass:\"detail-title\"},[_vm._v(_vm._s(_vm.lang.Parallel_System_Details))]):_vm._e(),_vm._v(\" \"),_c('div',{staticClass:\"detail-main-con\"},[_c('div',{staticClass:\"detail-describe\"},[_c('p',[_vm._v(_vm._s(_vm.lang.Parallel_System_Master)+\": \"+_vm._s(_vm.parallel_name)+\" \\n (\"+_vm._s(_vm.lang.SN)+\": \"+_vm._s(_vm.masterSn)+\")\\n \")]),_vm._v(\" \"),_c('p',[_vm._v(_vm._s(_vm.lang.Parallel_System_data_logger_web)+\": \"+_vm._s(_vm.parallel_code))])]),_vm._v(\" \"),_c('div',{staticClass:\"table-con\"},[_c('div',{staticStyle:{\"margin\":\"4px 0\"}},[_vm._v(_vm._s(_vm.lang.Parallel_System_Slaves)+\": \"+_vm._s(_vm.tableData.length))]),_vm._v(\" \"),_c('el-table',{directives:[{name:\"loading\",rawName:\"v-loading\",value:(_vm.isLoading),expression:\"isLoading\"}],staticStyle:{\"width\":\"100%\"},attrs:{\"stripe\":\"\",\"height\":\"280\",\"data\":_vm.tableData,\"header-cell-style\":{ height: '42px', background: '#38474E', color: '#fff'}}},[_c('el-table-column',{attrs:{\"label\":_vm.lang.fcNo,\"prop\":\"num\",\"width\":80}}),_vm._v(\" \"),_c('el-table-column',{attrs:{\"label\":_vm.lang.DeviceInfo_Name,\"prop\":\"name\"}}),_vm._v(\" \"),_c('el-table-column',{attrs:{\"label\":_vm.lang.DeviceInfo_SNNo1,\"prop\":\"sn\"}})],1),_vm._v(\" \"),_c('div',{staticStyle:{\"height\":\"16px\"}})],1)])])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import ParallelSystemDetail from './src/ParallelSystemDetail.vue';\n\nParallelSystemDetail.install = function(Vue) {\n Vue.component(ParallelSystemDetail.name, ParallelSystemDetail);\n}\n\nexport default ParallelSystemDetail;","export function formatDate(date) {\n return common.date2str(date, 'yyyy-MM-dd');\n}\nexport function exportFile(file_id) {\n common.post('v1/ReportData/GetStationPowerDataFilePath', {\n id: file_id,\n }).success(res => {\n if (!res.data.file_path) {\n goodwe.alert(Goodwe.Ops.Resouces.Front.export_fail);\n return;\n }\n window.open(res.data.file_path, '_blank');\n }).fail(res => {\n goodwe.alert(res.msg);\n });\n}\nexport function notify(msg, isSuccess) {\n $.pushCheckTip(msg, isSuccess ? 'success' : 'error');\n setTimeout(() => {\n $.popCheckTip();\n }, 3000);\n}\n\n// 获取图片真实宽高\nexport function checkImgWidth(fileUrl) {\n return new Promise((resolve, reject) => {\n let img = new Image();\n let res = {};\n\n img.onload = function() {\n res = {\n width: this.width,\n height: this.height,\n };\n resolve(res);\n };\n img.src = fileUrl;\n });\n}\n\n /** 提示文字 */\nexport function notifyTip(msg, second, type) {\n $.popCheckTip();\n $.pushCheckTip(msg, type === 'success' ? 'success' : '');\n setTimeout(function () {\n $.popCheckTip();\n }, second * 1000);\n }\n\n //是否禁用今天以后的日期\nexport function isRightBtnDisabled(date) {\n // 逻辑同上\n if (dayjs(date).year() > dayjs().year()) {\n return true;\n } else if (dayjs(date).year() < dayjs().year()) {\n return false;\n } else {\n if (dayjs(date).month() > dayjs().month()) {\n return true;\n } else if (dayjs(date).month() < dayjs().month()) {\n return false;\n } else {\n return dayjs(date).date() >= dayjs().date();\n }\n }\n}","\r\n\r\n\r\n\r\n\r\n","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./GoodweInverterCharts.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./GoodweInverterCharts.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./GoodweInverterCharts.vue?vue&type=template&id=294d51fd&\"\nimport script from \"./GoodweInverterCharts.vue?vue&type=script&lang=js&\"\nexport * from \"./GoodweInverterCharts.vue?vue&type=script&lang=js&\"\nimport style0 from \"./GoodweInverterCharts.vue?vue&type=style&index=0&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"goodwe-inverter-charts\"},[_c('div',{staticClass:\"goodwe-inverter-charts__title\"},[_c('span',[_vm._v(_vm._s(_vm.name || _vm.sn))]),_vm._v(\" \"),(_vm.brand && _vm.brand !== '固德威')?_c('span',{staticClass:\"device_brand\"},[_vm._v(_vm._s(_vm.brand))]):_vm._e(),_vm._v(\" \"),(_vm.deviceArea.deviceList.length > _vm.deviceArea.list.page_size)?_c('div',{staticClass:\"back\",on:{\"click\":_vm.backToList}},[_vm._v(\"返回\")]):_vm._e()]),_vm._v(\" \"),(_vm.remoteType != null && !_vm.thirdDealertype && !_vm.isStored)?_c('goodwe-button',{staticStyle:{\"float\":\"right\",\"position\":\"relative\",\"top\":\"-61px\",\"margin-right\":\"60px\"},on:{\"click\":_vm.clickRemoteControl}},[_vm._v(\"\\n 远程控制\\n \")]):_vm._e(),_vm._v(\" \"),(_vm.deviceArea.show !== 'energy'&& _vm.showIv)?_c('goodwe-button',{staticStyle:{\"float\":\"right\",\"margin-right\":\"20px\",\"position\":\"relative\",\"top\":\"-61px\"},on:{\"click\":_vm.showShadow}},[_vm._v(\"\\n 阴影检测\\n \")]):_vm._e(),_vm._v(\" \"),_c('div',{staticClass:\"goodwe-inverter-charts__header clearfix\"},[_c('goodwe-tab',{ref:\"tab\",staticClass:\"fl\",attrs:{\"options\":_vm.tab_options},on:{\"change\":_vm.tabChange},model:{value:(_vm.tab_value),callback:function ($$v) {_vm.tab_value=$$v},expression:\"tab_value\"}}),_vm._v(\" \"),_c('div',{staticClass:\"goodwe-inverter-charts__export fr\",on:{\"click\":_vm.handleExport}}),_vm._v(\" \"),_c('el-date-picker',{staticClass:\"fr\",staticStyle:{\"margin-right\":\"20px\"},attrs:{\"type\":_vm.date_type,\"size\":\"small\"},on:{\"change\":_vm.dateChange},model:{value:(_vm.date),callback:function ($$v) {_vm.date=$$v},expression:\"date\"}}),_vm._v(\" \"),(_vm.tab_value == 'Generation&Income' || _vm.tab_value == 'System Output')?_c('ul',{staticClass:\"goodwe-inverter-charts__tab--date clearfix fr\"},[_c('li',{class:{ act: _vm.date_type === 'date' },on:{\"click\":function($event){return _vm.changeDateTypeTab('date')}}},[_vm._v(\"日\")]),_vm._v(\" \"),_c('li',{class:{ act: _vm.date_type === 'month' },on:{\"click\":function($event){return _vm.changeDateTypeTab('month')}}},[_vm._v(\"月\")]),_vm._v(\" \"),_c('li',{class:{ act: _vm.date_type === 'year' },on:{\"click\":function($event){return _vm.changeDateTypeTab('year')}}},[_vm._v(\"年\")])]):_vm._e()],1),_vm._v(\" \"),_vm._m(0)],1)}\nvar staticRenderFns = [function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"goodwe-inverter-charts__chart\"},[_c('div',{attrs:{\"id\":\"goodwe-inverter-charts__chart\"}})])}]\n\nexport { render, staticRenderFns }","import GoodweInverterCharts from './src/GoodweInverterCharts.vue';\r\n\r\nGoodweInverterCharts.install = Vue => {\r\n Vue.component(GoodweInverterCharts.name, GoodweInverterCharts);\r\n}\r\n\r\nexport default GoodweInverterCharts;","import { formatDate } from \"./common.js\";\nconst showMarkerPoint = false;\n\n// 图表公共样式参数\nconst baseOption = {\n color: [\"#4A3CE8\", \"#882CA4\", \"#E88EA6\", \"#C29B96\", \"#CC902E\"],\n colorObject: {\n PVPower: \"#03bbd6\",\n RadiationIntensity: \"#DEB261\",\n BatteryPower: \"#a387e2\",\n MeterPower: \"#fbb03b\",\n LoadPower: \"#9b4c9a\",\n BatteryLevel: \"#8cc44d\",\n MeterPowerPhase1: \"#4CC7B3\",\n MeterPowerPhase2: \"#5786e7\",\n MeterPowerPhase3: \"#fe5e39\",\n LoadPowerPhase1: \"#f8ea2d\",\n LoadPowerPhase2: \"#de6182\",\n LoadPowerPhase3: \"#29976f\",\n },\n grid: {\n bottom: 40,\n left: 70,\n right: 70,\n },\n tooltip: {\n trigger: \"axis\",\n confine: true,\n formatter: function(param) {\n if (/^\\d{4}$/.test(param[0].axisValueLabel)) {\n var value = param[0].axisValueLabel + \"-1\" + \"-1\";\n var html = `

${dayjs(value).format(dateFormatReplace(\"year\"))}

`;\n } else if (/^\\d{4}-\\d{2}$/.test(param[0].axisValueLabel)) {\n var html = `

${dayjs(param[0].axisValueLabel).format(\n dateFormatReplace(\"month\")\n )}

`;\n } else if (/^\\d{4}-\\d{1,2}-\\d{1,2}$/.test(param[0].axisValueLabel)) {\n var html = `

${dayjs(param[0].axisValueLabel).format(\n dateFormatSems\n )}

`;\n } else {\n var html = `

${param[0].axisValueLabel}

`;\n }\n for (var i = 0; i < param.length; i++) {\n if (param[i].seriesName == Goodwe.Ops.Resouces.Front[\"PCurve_Power_Battery\"]) {\n if (param[i].value < 0) {\n param[i].seriesName += `(${Goodwe.Ops.Resouces.Front._charge})`;\n } else {\n param[i].seriesName += `(${Goodwe.Ops.Resouces.Front._discharge})`;\n }\n }\n if (param[i].seriesName == Goodwe.Ops.Resouces.Front[\"PCurve_Power_Meter\"]) {\n if (param[i].value < 0) {\n param[i].seriesName += `(${Goodwe.Ops.Resouces.Front.buy})`;\n } else {\n param[i].seriesName += `(${Goodwe.Ops.Resouces.Front.sell})`;\n }\n }\n html += `
\n \n ${param[i].seriesName} :\n ${param[i].value}\n
`;\n }\n return html;\n },\n },\n dataZoom: [\n {\n type: \"inside\",\n },\n ],\n};\n// 电站图表公共样式\nconst baseOption4plant = {\n ...baseOption,\n backgroundColor: \"#fff\",\n};\nconst axisLine4plant = {\n lineStyle: {\n color: \"#ced3dd\",\n },\n};\nconst splitLine4plant = {\n show: true,\n lineStyle: {\n type: \"dashed\",\n color: \"#ced3dd\",\n },\n};\n// 图表接口改造重构\nexport function paintStationCharts(\n stationId,\n chartId,\n date,\n dateType,\n ctx,\n batteryStatus,\n showFullScreen,\n invertersnum,\n gensetStatus,\n) {\n const isDetailFull = !showFullScreen ? true : '';\n if(chartId != 1){\n common.post(\"v2/Charts/GetChartByPlant\", {\n id: stationId,\n date: formatDate(date),\n range: dateType,\n chartIndexId: chartId,\n isDetailFull: isDetailFull,\n }).success((res) => {\n if (chartId == 7) {\n const modelData = res.data.modelData;\n batteryStatus.hasCharge = modelData.hasCharge;\n batteryStatus.charge = modelData.charge;\n batteryStatus.disCharge = modelData.disCharge;\n batteryStatus.isStored = modelData.isStored;\n batteryStatus.showTitle = true; // 展示饼图标题\n showPieCharts(res.data, ctx, batteryStatus.hasCharge, gensetStatus, isDetailFull, modelData.isStored);\n } else {\n batteryStatus.showTitle = false; // 不展示饼图标题\n showLineCharts(res.data, ctx, isDetailFull);\n }\n }).fail(() => {\n ctx.clear();\n }).all(() => {\n if (chartId != 7) {\n batteryStatus.hasCharge = false; // 不展示电池kwh\n batteryStatus.showTitle = false; // 不展示饼图标题\n }\n });\n }\n if(chartId == 1){\n common.post(\"/v2/Charts/GetPlantPowerChart\", {\n id: stationId,\n date: formatDate(date),\n full_script: isDetailFull?true:false,\n }).success((res)=>{\n var units = Array.from(new Set(res.data.lines.map(item=>{\n item.label = Goodwe.Ops.Resouces.Front[item.key]\n return item.unit\n })))\n if(res.data.generateData&&res.data.generateData.length>0){\n var arr = []\n res.data.generateData.forEach(item=>{\n arr.push({\n label:`${item.key}: ${!item.value&&item.value!==0?\"\":item.value.toFixed(2)} ${item.unit_Key}`,\n })\n })\n res.data.leftLabels = arr;\n }else{\n res.data.leftLabels = [\n {label:\"\"}\n ]\n }\n res.data.axis =units.map((item,index)=>({\n axisId: index,\n unit:item\n }))\n res.data.nestedGraph={\n useNested:false,\n }\n showLineCharts(res.data, ctx, isDetailFull);\n }).all(function() {\n batteryStatus.hasCharge = false; // 不展示电池kwh\n batteryStatus.showTitle = false; // 不展示饼图标题\n })\n }\n}\n\nexport function showLineCharts(data, ctx, isFull) {\n if (!data.lines || data.lines.length === 0) {\n ctx.clear();\n return;\n }\n ctx.clear();\n // 如果线图和饼图都有, 把线图放到最后\n if (_.uniq(data.lines.map((item) => item.type)).length > 1) {\n data.lines.forEach((item) => {\n if (item.type === \"2\") {\n item.sort = 100;\n }\n });\n data.lines.sort((a, b) => a.sort - b.sort);\n }\n // 统计 \n const title = {\n text: data.leftLabels.map((item) => item.label).join(\" \"),\n textStyle: {\n color: \"#ced3dd\",\n fontSize: 14,\n fontWeight: 400,\n },\n };\n \n // x轴\n const xAxis = {\n type: \"category\",\n data: data.lines[0].xy.map((item) => item.x),\n axisLine: axisLine4plant,\n };\n if (/^\\d{2}:\\d{2}$/.test(xAxis.data[0])) {\n xAxis.axisLabel = {\n interval(i) {\n //间隔调大一点\n if (\n xAxis.data[i].split(\":\")[1] == \"00\" &&\n xAxis.data[i].split(\":\")[0] % 2 == 0\n ) {\n var d = xAxis.data[i];\n }\n if (!d) return false;\n const [, s] = d.split(\":\");\n return s == \"00\";\n },\n };\n } else {\n xAxis.axisLabel = {\n formatter: function(value, index) {\n if (/^\\d{4}$/.test(value)) {\n value = value + \"-1\" + \"-1\";\n return dayjs(value).format(dateFormatReplace(\"year\"));\n } else if (/^\\d{4}-\\d{2}$/.test(value)) {\n value = value + \"-1\";\n return dayjs(value).format(dateFormatReplace(\"month\"));\n } else if (/^\\d{4}-\\d{1,2}-\\d{1,2}$/.test(value)) {\n return dayjs(value).format(dateFormatSems);\n }\n },\n };\n }\n // y轴\n const yAxis = data.axis.map((item) => ({\n name: item.unit,\n splitLine: splitLine4plant,\n axisLine: axisLine4plant,\n }));\n // 图例\n const selected = {};\n const legend = {\n width: !isFull ? 650 : 966,\n data: data.lines.map((item) => {\n if(item.label === Goodwe.Ops.Resouces.Front.income) {\n item.label = `${Goodwe.Ops.Resouces.Front.income} (${item.unit})`;\n }\n selected[`${item.label}`] = item.isActive;\n return `${item.label}`;\n }),\n right: 10,\n selected,\n };\n function renderItem(params, api) {\n if (!Object.entries)\n Object.entries = function(obj) {\n var ownProps = Object.keys(obj),\n i = ownProps.length,\n resArray = new Array(i); // preallocate the Array\n while (i--) resArray[i] = [ownProps[i], obj[ownProps[i]]];\n\n return resArray;\n };\n let unselected = Object.entries(ctx.getOption().legend[0].selected)\n .filter((item) => !item[1])\n .map((item) => item[0]);\n // 这里算出占位置的柱状图的个数, 所以上面关掉的不能算, 线图不能算, 还有自己(自定义的这个)不能算\n const normalDataCount =\n data.lines\n .filter((item) => !unselected.includes(`${item.label}`))\n .filter((item) => item.type != \"2\").length - 1;\n const xValue = api.value(0);\n const yValue = api.value(1);\n const point = api.coord([xValue, yValue]);\n const barLayout = api.barLayout({\n count: normalDataCount,\n barMaxWidth: 12,\n });\n var width = barLayout[0] ? barLayout[0].width : 12;\n var x = barLayout[0]\n ? point[0] + barLayout[0].offsetCenter - width / 2\n : point[0];\n if (\n unselected.includes(Goodwe.Ops.Resouces.Front.pv_generation + \"(kWh)\")\n ) {\n x -= width * 0.8;\n }\n return {\n type: \"rect\",\n shape: echarts.graphic.clipRectByRect(\n {\n x: x,\n y: point[1],\n width: width * 0.6, // 比一般的宽度要窄一点\n height: api.size([0, yValue])[1],\n },\n {\n x: params.coordSys.x,\n y: params.coordSys.y,\n width: params.coordSys.width,\n height: params.coordSys.height,\n }\n ),\n style: api.style(),\n };\n }\n // 数据\n const series = data.lines.map((item) => {\n if(item.name === \"BatteryLevel\"){\n item.xy.forEach(_item=>{\n if(_item.y>100){\n _item.y = 100\n }else if(_item.y<0){\n _item.y = 0\n }\n })\n }\n return {\n type:\n data.nestedGraph.useNested &&\n item.label === Goodwe.Ops.Resouces.Front.selfuse_pv\n ? \"custom\"\n : { \"1\": \"bar\", \"2\": \"line\" }[item.type],\n barMaxWidth: 12,\n smooth: true,\n name: `${item.label}`,\n data: item.xy.map((item) => item.y),\n yAxisIndex: item.axis,\n symbol: \"none\",\n z:\n data.nestedGraph.useNested &&\n item.label === Goodwe.Ops.Resouces.Front.selfuse_pv\n ? 1000\n : 2,\n itemStyle: {\n normal: {\n color: item.frontColor,\n },\n },\n // 区域上色\n // areaStyle: (chartId == 1 || chartId == 2) ? {\n // normal: {\n // color: item.frontColor,\n // opacity: .2,\n // }\n // } : null,\n };\n });\n if(isFull) {\n baseOption4plant.grid = {\n bottom:40,\n left: 70,\n right: 70,\n top: 110\n }\n }\n const option = {\n title,\n xAxis,\n yAxis,\n legend,\n series,\n renderItem,\n ...baseOption4plant,\n };\n ctx.setOption(option, true);\n}\nexport function showLineChartsHomekit(data, ctx) {\n if (!data.lines || data.lines.length === 0) {\n ctx.clear();\n return;\n }\n // 如果线图和饼图都有, 把线图放到最后\n if (_.uniq(data.lines.map((item) => item.type)).length > 1) {\n data.lines.forEach((item) => {\n if (item.type === \"2\") {\n item.sort = 100;\n }\n });\n data.lines.sort((a, b) => a.sort - b.sort);\n }\n // 统计\n const title = {\n text: data.leftLabels.map((item) => item.label).join(\" \"),\n textStyle: {\n color: \"#ced3dd\",\n fontSize: 14,\n fontWeight: 400,\n },\n };\n // x轴\n const xAxis = {\n type: \"category\",\n data: data.lines[0].xy.map((item) => item.x),\n axisLine: axisLine4plant,\n interval: 3600 * 2 * 1000,\n };\n if (/^\\d{2}:\\d{2}$/.test(xAxis.data[0])) {\n xAxis.axisLabel = {\n interval(i) {\n //homekit图太小了,所以间隔调成3个小时\n if (\n xAxis.data[i].split(\":\")[1] == \"00\" &&\n xAxis.data[i].split(\":\")[0] % 3 == 0\n ) {\n var d = xAxis.data[i];\n }\n if (!d) return false;\n const [, s] = d.split(\":\");\n return s == \"00\";\n },\n };\n }\n // y轴 \n const yAxis = data.axis.map((item) => ({\n name: item.unit,\n splitLine: splitLine4plant,\n axisLine: axisLine4plant,\n }));\n // 图例\n const selected = {};\n const legend = {\n width: 650,\n data: data.lines.map((item) => {\n selected[`${item.label}`] = item.isActive;\n return `${item.label}`;\n }),\n right: 10,\n selected,\n };\n function renderItem(params, api) {\n if (!Object.entries)\n Object.entries = function(obj) {\n var ownProps = Object.keys(obj),\n i = ownProps.length,\n resArray = new Array(i); // preallocate the Array\n while (i--) resArray[i] = [ownProps[i], obj[ownProps[i]]];\n\n return resArray;\n };\n let unselected = Object.entries(ctx.getOption().legend[0].selected)\n .filter((item) => !item[1])\n .map((item) => item[0]);\n // 这里算出占位置的柱状图的个数, 所以上面关掉的不能算, 线图不能算, 还有自己(自定义的这个)不能算\n const normalDataCount =\n data.lines\n .filter((item) => !unselected.includes(`${item.label}`))\n .filter((item) => item.type != \"2\").length - 1;\n const xValue = api.value(0);\n const yValue = api.value(1);\n const point = api.coord([xValue, yValue]);\n const barLayout = api.barLayout({\n count: normalDataCount,\n barMaxWidth: 12,\n });\n var width = barLayout[0] ? barLayout[0].width : 12;\n var x = barLayout[0]\n ? point[0] + barLayout[0].offsetCenter - width / 2\n : point[0];\n if (\n unselected.includes(Goodwe.Ops.Resouces.Front.pv_generation + \"(kWh)\")\n ) {\n x -= width * 0.8;\n }\n return {\n type: \"rect\",\n shape: echarts.graphic.clipRectByRect(\n {\n x: x,\n y: point[1],\n width: width * 0.6, // 比一般的宽度要窄一点\n height: api.size([0, yValue])[1],\n },\n {\n x: params.coordSys.x,\n y: params.coordSys.y,\n width: params.coordSys.width,\n height: params.coordSys.height,\n }\n ),\n style: api.style(),\n };\n }\n // 数据\n const series = data.lines.map((item) => {\n if(item.name === \"BatteryLevel\"){\n item.xy.forEach(_item=>{\n if(_item.y>100){\n _item.y = 100\n }else if(_item.y<0){\n _item.y = 0\n }\n })\n }\n return {\n type:\n data.nestedGraph.useNested &&\n item.label === Goodwe.Ops.Resouces.Front.selfuse_pv\n ? \"custom\"\n : { \"1\": \"bar\", \"2\": \"line\" }[item.type],\n barMaxWidth: 12,\n smooth: true,\n name: `${item.label}`,\n data: item.xy.map((item) => item.y),\n yAxisIndex: item.axis,\n symbol: \"none\",\n z:\n data.nestedGraph.useNested &&\n item.label === Goodwe.Ops.Resouces.Front.selfuse_pv\n ? 1000\n : 2,\n itemStyle: {\n normal: {\n color: item.frontColor,\n },\n },\n // 区域上色\n // areaStyle: (chartId == 1 || chartId == 2) ? {\n // normal: {\n // color: item.frontColor,\n // opacity: .2,\n // }\n // } : null,\n };\n });\n\n const option = {\n title,\n xAxis,\n yAxis,\n legend,\n series,\n renderItem,\n ...baseOption4plant,\n };\n ctx.setOption(option, true);\n}\n\n/** 绘制电站饼图 */\nexport function showPieCharts(data, ctx, hasCharge, gensetStatus, isFull, isStored) {\n if (!data) {\n ctx.clear();\n return;\n }\n if (isFull) {\n var option = pieChart(data.modelData, ctx, hasCharge, gensetStatus, isFull, isStored);\n option.series.forEach((item) => {\n item.left += 180;\n item.top += 100;\n });\n option.graphic.elements.forEach((item) => {\n item.left += 180;\n if (item.type == \"circle\") {\n item.top += 160;\n }\n if (item.type == \"text\") {\n item.bottom += 100;\n }\n });\n option.legend.left += 200;\n option.legend.bottom += 50;\n ctx.setOption(option, true);\n } else {\n var option = pieChart(data.modelData, ctx, hasCharge, gensetStatus, isFull, isStored);\n ctx.setOption(option, true);\n }\n}\n","import { paintStationCharts } from \"../../../utils/stationdetail.util.js\";\r\nimport { formatDate, exportFile } from \"../../../utils/common.js\";\r\nlet myChart = null;\r\nlet dateStack = { date: null, month: null, year: null, };\r\nexport default {\r\n name: \"GoodweStationCharts\",\r\n props: {\r\n name: { type: String, required: true, },\r\n id: { type: String, required: true, },\r\n isStored: { type: Boolean, default: false, },\r\n showFullScreen: { type: Boolean, default: true, },\r\n invertersnum: { type: Number, default: 0, },\r\n chartsTypesByPlant: {\r\n default: { chartIndices: [ { chartIndexId: 1, }, ],\r\n },\r\n },\r\n isGenset: { type: Boolean, default: false },\r\n localDate: { type: Date, default: new Date()},\r\n },\r\n data() {\r\n return {\r\n lang: Goodwe.Ops.Resouces.Front,\r\n dateFormat: dateFormatSems.replace(/Y/g, \"y\").replace(/D/g, \"d\"),\r\n tab_options: [],\r\n tab_value: \"\",\r\n date_options: [],\r\n date_type: \"date\",\r\n date_type_api: 2,\r\n date: dateStack.date == null ? this.localDate : dateStack.date,\r\n userDate: this.localDate.getTime(), // 用户本机时间\r\n /* 禁用本机时间之后的日期,不包括本机时间,只有选择发电量图表才限制 */\r\n pickerOptions: {\r\n disabledDate: this.handleDisabledDate,\r\n },\r\n showDatePick: true,\r\n batteryStatus: {\r\n hasCharge: false,\r\n charge: 0,\r\n disCharge: 0,\r\n showTitle: false,\r\n isStored: false,\r\n },\r\n };\r\n },\r\n mounted() {\r\n myChart = echarts.init(\r\n document.getElementById(\"goodwe-station-charts__chart\")\r\n );\r\n this.getTab();\r\n this.autoFresh();\r\n this.autoGetPcTime();\r\n },\r\n methods: {\r\n /** 禁用本机之后日期 */\r\n handleDisabledDate(time) {\r\n return time.getTime() > this.localDate.getTime();\r\n },\r\n //上一个周期\r\n prevCycleChart: function () {\r\n if (this.date_type == \"date\") {\r\n this.date_type_api = 2;\r\n this.date = new Date(this.date.getTime() - 24 * 3600 * 1000);\r\n }\r\n if (this.date_type == \"month\") {\r\n this.date_type_api = 3;\r\n var y;\r\n var m;\r\n //如果月份为0,就返回上一年的12月\r\n if (this.date.getMonth() + 1 - 1 == 0) {\r\n y = this.date.getFullYear() - 1;\r\n m = 12;\r\n } else {\r\n y = this.date.getFullYear();\r\n m = this.date.getMonth() + 1 - 1;\r\n }\r\n this.date = new Date(y + \"/\" + m);\r\n this.userDate = new Date(\r\n this.userDate.getFullYear() + \"/\" + (this.userDate.getMonth() + 1)\r\n );\r\n }\r\n if (this.date_type == \"year\") {\r\n this.date_type_api = 4;\r\n this.date = new Date(this.date.getFullYear() - 1 + \"\");\r\n this.userDate = new Date(this.userDate.getFullYear() + \"\");\r\n }\r\n this.paint();\r\n },\r\n //下一个周期\r\n nextCycleChart: function () {\r\n if (this.date_type == \"date\") {\r\n this.date_type_api = 2;\r\n this.date = new Date(this.date.getTime() + 24 * 60 * 60 * 1000);\r\n }\r\n if (this.date_type == \"month\") {\r\n this.date_type_api = 3;\r\n var y;\r\n var m;\r\n //如果月份为0,就返回上一年的12月\r\n if (this.date.getMonth() + 1 + 1 == 13) {\r\n y = this.date.getFullYear() + 1;\r\n m = 1;\r\n } else {\r\n y = this.date.getFullYear();\r\n m = this.date.getMonth() + 1 + 1;\r\n }\r\n this.date = new Date(y + \"/\" + m);\r\n this.userDate = new Date(\r\n this.userDate.getFullYear() + \"/\" + (this.userDate.getMonth() + 1)\r\n );\r\n }\r\n if (this.date_type == \"year\") {\r\n this.date_type_api = 4;\r\n this.date = new Date(this.date.getFullYear() + 1 + \"\");\r\n this.userDate = new Date(this.userDate.getFullYear() + \"\");\r\n }\r\n this.paint();\r\n },\r\n //自动刷新\r\n autoFresh() {\r\n setTimeout(\r\n function () {\r\n this.paint();\r\n this.autoFresh();\r\n }.bind(this),\r\n 420000\r\n );\r\n },\r\n doGetTime() {\r\n var now = new Date(dayjs(Date.now()).format(\"YYYY-MM-DD\")).getTime();\r\n var localTime = new Date(this.userDate).getTime();\r\n if (now > localTime) {\r\n this.userDate = new Date(now);\r\n this.showDatePick = false;\r\n this.$nextTick(() => {\r\n this.showDatePick = true;\r\n });\r\n }\r\n },\r\n //2s钟获取电脑时间\r\n autoGetPcTime() {\r\n this.doGetTime();\r\n setTimeout(() => {\r\n this.autoGetPcTime();\r\n }, 2000);\r\n },\r\n // 获取 tab 选项\r\n getTab() {\r\n // if (!this.chartsTypesByPlant||this.chartsTypesByPlant.length === 0) return;\r\n this.tab_options = this.chartsTypesByPlant;\r\n // this.tab_value = this.chartsTypesByPlant[0].chartIndices[0].chartIndexId;\r\n this.tab_value = 1;\r\n this.paintChart()\r\n },\r\n tabChange(v) {\r\n if (v.value == 1) {\r\n this.$parent.showAbnormalCurve = true;\r\n } else {\r\n this.$parent.showAbnormalCurve = false;\r\n }\r\n this.date_options = v.date;\r\n this.date_type = \"date\";\r\n this.date_type_api = 2;\r\n dateStack = { date: null, month: null, year: null, };\r\n if (v.value == 3 || v.value == 5 || v.value == 6 || v.value == 4) {\r\n this.date = dateStack[this.date_type] == null ? this.localDate : dateStack[this.date_type];\r\n this.userDate = dateStack[this.date_type] == null ? this.localDate : dateStack[this.date_type];\r\n } else {\r\n this.date = dateStack[this.date_type] == null ? this.localDate : dateStack[this.date_type];\r\n this.userDate = dateStack[this.date_type] == null ? this.localDate : dateStack[this.date_type];\r\n }\r\n this.paint();\r\n },\r\n changeDateTypeTab(type, datePickerType) {\r\n if (this.date_type === datePickerType) return;\r\n this.date_type = datePickerType;\r\n this.date_type_api = type;\r\n if (\r\n this.tab_value == 3 ||\r\n this.tab_value == 5 ||\r\n this.tab_value == 6 ||\r\n this.tab_value == 4\r\n ) {\r\n this.date =\r\n dateStack[this.date_type] == null\r\n ? new Date(new Date().getTime())\r\n : dateStack[this.date_type];\r\n this.userDate =\r\n dateStack[this.date_type] == null\r\n ? new Date(new Date().getTime())\r\n : dateStack[this.date_type];\r\n } else {\r\n this.date =\r\n dateStack[this.date_type] == null\r\n ? new Date()\r\n : dateStack[this.date_type];\r\n this.userDate =\r\n dateStack[this.date_type] == null\r\n ? new Date()\r\n : dateStack[this.date_type];\r\n }\r\n this.paint();\r\n },\r\n dateChange(date) {\r\n dateStack[this.date_type] = date;\r\n this.paint();\r\n },\r\n paintChart:function(){\r\n paintStationCharts(\r\n this.id,\r\n this.tab_value,\r\n this.date,\r\n this.date_type_api,\r\n myChart,\r\n this.batteryStatus,\r\n this.showFullScreen,\r\n this.invertersnum,\r\n this.isGenset?'1':'0',\r\n );\r\n },\r\n paint: _.debounce(function () {\r\n this.paintChart()\r\n }, 400),\r\n showHdChart() {\r\n const param = {\r\n id: this.id,\r\n isStored: this.isStored,\r\n invertersnum: this.invertersnum,\r\n chartsTypesByPlant: JSON.stringify(this.chartsTypesByPlant),\r\n isGenset: this.isGenset,\r\n localDate: this.localDate,\r\n };\r\n window.localStorage.setItem(\r\n \"stationdetailchartparam\",\r\n JSON.stringify(param)\r\n );\r\n window.open(\"/powerstation/stationdetailfull\");\r\n },\r\n handleExport() {\r\n console.log(!this.showFullScreen);\r\n if (this.tab_value == \"1\" || this.tab_value == \"2\") {\r\n if (this.invertersnum > 1) {\r\n var is_removesoc = 1;\r\n } else {\r\n var is_removesoc = 0;\r\n }\r\n // 导出功率\r\n common\r\n .post(\"v1/PowerStation/ExportPowerstationPac\", {\r\n date: formatDate(this.date),\r\n pw_id: this.id,\r\n img_base64: myChart.getDataURL().split(\",\")[1],\r\n img_width: myChart.getWidth(),\r\n img_height: myChart.getHeight(),\r\n is_removesoc,\r\n full_script: !this.showFullScreen\r\n })\r\n .success((res) => {\r\n exportFile(res.data);\r\n })\r\n .fail((res) => {\r\n goodwe.alert(res.msg);\r\n });\r\n } else {\r\n if (this.date_type == \"date\" || this.date_type == \"month\") {\r\n // 跳转\r\n window.localStorage.setItem(\r\n \"stationDataFromStationDetail\",\r\n JSON.stringify({\r\n name: this.name,\r\n id: this.id,\r\n date_type: this.date_type,\r\n date: formatDate(this.date),\r\n })\r\n );\r\n location.href = `/Statement/Report/${\r\n this.date_type == \"date\" ? \"month\" : \"year\"\r\n }`;\r\n } else if (this.date_type == \"year\") {\r\n // 导出\r\n let type;\r\n if (this.isStored) {\r\n type = this.tab_value == \"Self-use Ratio\" ? 1 : 2;\r\n } else {\r\n type = 2;\r\n }\r\n common\r\n .post(\"v1/PowerStation/ExportPowerStaionPowerAndIncome\", {\r\n date: formatDate(this.date),/* */\r\n type,\r\n chartIndexId: this.tab_value,\r\n pw_id: this.id,\r\n img_base64: myChart.getDataURL().split(\",\")[1],\r\n img_width: myChart.getWidth(),\r\n img_height: myChart.getHeight(),\r\n })\r\n .success((res) => {\r\n exportFile(res.data);\r\n })\r\n .fail((res) => {\r\n goodwe.alert(res.msg);\r\n });\r\n }\r\n }\r\n },\r\n },\r\n watch: {\r\n date_type_api(n) {\r\n if (n == 2) {\r\n this.dateFormat = dateFormatSems.replace(/Y/g, \"y\").replace(/D/g, \"d\");\r\n }\r\n if (n == 3) {\r\n this.dateFormat = dateFormatReplace(\"month\")\r\n .replace(/Y/g, \"y\")\r\n .replace(/D/g, \"d\");\r\n }\r\n if (n == 4) {\r\n this.dateFormat = dateFormatReplace(\"year\")\r\n .replace(/Y/g, \"y\")\r\n .replace(/D/g, \"d\");\r\n }\r\n },\r\n chartsTypesByPlant(v) {\r\n v.forEach((item) => {\r\n item.typeName = item.typeName ? this.lang[item.typeName] : \"\";\r\n if (item.chartIndices && item.chartIndices.length > 0) {\r\n item.chartIndices.forEach((_item) => {\r\n _item.indexLabel = this.lang[_item.indexLabel];\r\n });\r\n }\r\n });\r\n\r\n this.tab_options = v;\r\n \r\n },\r\n },\r\n computed: {\r\n canNext: function () {\r\n if (this.date_type == \"date\") {\r\n return new Date(this.date).getTime() <\r\n new Date(`${this.localDate.getFullYear()}/${this.localDate.getMonth() + 1}/${this.localDate.getDate()}`).getTime();\r\n } else if (this.date_type == \"month\") {\r\n return new Date(this.date).getTime() < new Date(this.localDate.getFullYear() + \"/\" + (this.localDate.getMonth() + 1)).getTime();\r\n } else if (this.date_type == \"year\") {\r\n return new Date(this.date).getTime() < new Date(this.localDate.getFullYear() + \"\").getTime();\r\n }\r\n },\r\n /** 饼图标题自定义 */\r\n pieSelfAdaption() {\r\n const hasBattery = this.batteryStatus.hasCharge;\r\n let selfAdaption = {\r\n titleWidth: '1040px',\r\n titleMarginL: '0%',\r\n firstWidth: '45%',\r\n firstMarginR: '0%',\r\n }\r\n if(!this.showFullScreen) { // 如果是全屏状态下\r\n selfAdaption.titleWidth = hasBattery ? '950px': '1113px';\r\n selfAdaption.titleMarginL = hasBattery ? '13%' : '12%';\r\n selfAdaption.firstMarginR = hasBattery ? '0%' : '7%';\r\n selfAdaption.firstWidth = hasBattery ? '45%' : '40%';\r\n } else {\r\n selfAdaption.titleWidth = hasBattery ? '886px': '1070px';\r\n selfAdaption.firstWidth = hasBattery ? '49%' : '39%';\r\n selfAdaption.firstMarginR = hasBattery ? '4%': '9%';\r\n }\r\n return selfAdaption\r\n },\r\n /** 饼图标题内容 */\r\n pieTitleMap() {\r\n let titleMap = [\r\n {label: lang.PlantGraph_AC_Output, \r\n tolTipText: this.batteryStatus.isStored ? lang.PlantGraph_AC_Output_tipB:lang.PlantGraph_AC_Output_tipI},\r\n {label: lang.PlantGraph_Load_Consumption, \r\n tolTipText: this.batteryStatus.isStored ? lang.PlantGraph_Load_Consumption_tipB:lang.PlantGraph_Load_Consumption_tipI,\r\n gensetTip: '
' + lang.PlantGraph_Load_Consumption_Generator + ': ' + lang.PlantGraph_Load_Consumption_Generator1\r\n }\r\n ];\r\n titleMap.forEach(element => {\r\n element.tolTipText = element.tolTipText.replace(/\\n/g, '
');\r\n if(element.gensetTip && this.isGenset) {\r\n element.tolTipText += element.gensetTip;\r\n }\r\n });\r\n return titleMap\r\n }\r\n },\r\n};\r\n","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!./GoodweStationCharts.js?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!./GoodweStationCharts.js?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./GoodweStationCharts.vue?vue&type=template&id=5b4c850d&\"\nimport script from \"./GoodweStationCharts.js?vue&type=script&lang=js&\"\nexport * from \"./GoodweStationCharts.js?vue&type=script&lang=js&\"\nimport style0 from \"./GoodweStationCharts.scss?vue&type=style&index=0&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"goodwe-station-charts\"},[_c('div',{staticClass:\"goodwe-station-charts__header clearfix\"},[(_vm.showFullScreen)?_c('div',{staticClass:\"goodwe-station-charts__fullscreen fl\",on:{\"click\":_vm.showHdChart}},[_c('i',{staticClass:\"el-icon-rank\"})]):_vm._e(),_vm._v(\" \"),_c('goodwe-charts-tab',{staticClass:\"fl\",attrs:{\"model\":_vm.tab_options},on:{\"change\":_vm.tabChange},model:{value:(_vm.tab_value),callback:function ($$v) {_vm.tab_value=$$v},expression:\"tab_value\"}}),_vm._v(\" \"),(_vm.tab_value !== '7')?_c('div',{staticClass:\"goodwe-station-charts__export fr\",on:{\"click\":_vm.handleExport}}):_vm._e(),_vm._v(\" \"),_c('div',{staticClass:\"station-date-picker_con\"},[_c('button',{staticClass:\"station-date-picker_left\",on:{\"click\":_vm.prevCycleChart}}),_vm._v(\" \"),(_vm.showDatePick)?_c('el-date-picker',{staticStyle:{\"width\":\"153px\"},attrs:{\"format\":_vm.dateFormat,\"type\":_vm.date_type,\"size\":\"small\",\"picker-options\":_vm.pickerOptions},on:{\"change\":_vm.dateChange},model:{value:(_vm.date),callback:function ($$v) {_vm.date=$$v},expression:\"date\"}}):_vm._e(),_vm._v(\" \"),_c('button',{staticClass:\"station-date-picker_right\",attrs:{\"disabled\":!_vm.canNext},on:{\"click\":_vm.nextCycleChart}})],1),_vm._v(\" \"),(_vm.date_options.length > 1)?_c('ul',{staticClass:\"goodwe-station-charts__tab--date clearfix fr\",staticStyle:{\"margin-right\":\"246px\"}},_vm._l((_vm.date_options),function(item){return _c('li',{key:item.type,class:{ act: item.datePickerType === _vm.date_type },on:{\"click\":function($event){return _vm.changeDateTypeTab(item.type, item.datePickerType)}}},[_vm._v(\"\\n \"+_vm._s(item.label)+\"\\n \")])}),0):_vm._e()],1),_vm._v(\" \"),_c('div',{staticClass:\"goodwe-station-charts__chart\"},[_c('div',{attrs:{\"id\":\"goodwe-station-charts__chart\"}}),_vm._v(\" \"),(_vm.batteryStatus.hasCharge)?_c('div',{staticClass:\"battery-statistics\",style:({top: !this.showFullScreen ? '30%': '13%'})},[_c('div',{staticClass:\"bat-type-status\"},[_c('div',{staticClass:\"bat-status-img\"},[_c('el-tooltip',{staticClass:\"item\",attrs:{\"effect\":\"light\",\"placement\":\"bottom\"}},[_c('div',{attrs:{\"slot\":\"content\"},slot:\"content\"},[_vm._v(_vm._s(_vm.lang.PlantGraph_Battery_Charge1))]),_vm._v(\" \"),_c('img',{attrs:{\"src\":\"/Images/power_status_sn_min/bat_charger.png\",\"alt\":\"\"}})])],1),_vm._v(\" \"),_c('div',{staticClass:\"bat-status-text\"},[_c('p',[_vm._v(_vm._s(_vm.lang.PlantGraph_Battery_Charge))]),_vm._v(\" \"),_c('p',{attrs:{\"title\":((_vm.batteryStatus.charge) + \" \" + (_vm.lang.kwh))}},[_vm._v(\"\\n \"+_vm._s(_vm.batteryStatus.charge)+\" \"+_vm._s(_vm.lang.kwh)+\"\\n \")])])]),_vm._v(\" \"),_c('div',{staticClass:\"bat-type-status\"},[_c('div',{staticClass:\"bat-status-img\"},[_c('el-tooltip',{staticClass:\"item\",attrs:{\"effect\":\"light\",\"placement\":\"bottom\"}},[_c('div',{attrs:{\"slot\":\"content\"},slot:\"content\"},[_vm._v(_vm._s(_vm.lang.PlantGraph_Battery_Discharge1))]),_vm._v(\" \"),_c('img',{attrs:{\"src\":\"/Images/power_status_sn_min/bat_discharger.png\",\"alt\":\"\"}})])],1),_vm._v(\" \"),_c('div',{staticClass:\"bat-status-text\"},[_c('p',[_vm._v(_vm._s(_vm.lang.PlantGraph_Battery_Discharge))]),_vm._v(\" \"),_c('p',{attrs:{\"title\":((_vm.batteryStatus.disCharge) + \" \" + (_vm.lang.kwh))}},[_vm._v(\"\\n \"+_vm._s(_vm.batteryStatus.disCharge)+\" \"+_vm._s(_vm.lang.kwh)+\"\\n \")])])]),_vm._v(\" \"),_c('div',{staticClass:\"battery_label\"},[_vm._v(\" \"+_vm._s(_vm.lang.battery)+\"\\n \"),_c('el-tooltip',{staticClass:\"item\",attrs:{\"effect\":\"light\",\"content\":_vm.lang.PlantGraph_Battery_tip,\"placement\":\"bottom\"}},[_c('img',{attrs:{\"src\":\"/Images/common/icon_distance.png\",\"alt\":\"\"}})])],1)]):_vm._e(),_vm._v(\" \"),(_vm.batteryStatus.showTitle)?_c('div',{staticClass:\"pie-title\",style:({width: _vm.pieSelfAdaption.titleWidth, \n marginLeft: _vm.pieSelfAdaption.titleMarginL})},[_c('div',{staticClass:\"pie-item\",style:({width: _vm.pieSelfAdaption.firstWidth, \n marginRight: _vm.pieSelfAdaption.firstMarginR})},[_vm._v(\"\\n \"+_vm._s(_vm.pieTitleMap[0]['label'])+\"\\n \"),_c('el-tooltip',{staticClass:\"item\",attrs:{\"effect\":\"light\",\"placement\":\"bottom\"}},[_c('div',{attrs:{\"slot\":\"content\"},domProps:{\"innerHTML\":_vm._s(_vm.pieTitleMap[0]['tolTipText'])},slot:\"content\"}),_vm._v(\" \"),_c('img',{attrs:{\"src\":\"/Images/common/icon_distance.png\",\"alt\":\"\"}})])],1),_vm._v(\" \"),_c('div',{staticClass:\"pie-item\"},[_vm._v(\"\\n \"+_vm._s(_vm.pieTitleMap[1]['label'])+\"\\n \"),_c('el-tooltip',{staticClass:\"item\",attrs:{\"effect\":\"light\",\"placement\":\"bottom\"}},[_c('div',{attrs:{\"slot\":\"content\"},domProps:{\"innerHTML\":_vm._s(_vm.pieTitleMap[1]['tolTipText'])},slot:\"content\"}),_vm._v(\" \"),_c('img',{attrs:{\"src\":\"/Images/common/icon_distance.png\",\"alt\":\"\"}})])],1)]):_vm._e()])])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import GoodweStationCharts from './src/GoodweStationCharts.vue';\r\n\r\nGoodweStationCharts.install = Vue => {\r\n Vue.component(GoodweStationCharts.name, GoodweStationCharts);\r\n}\r\n\r\nexport default GoodweStationCharts;","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./statement.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./statement.vue?vue&type=script&lang=js&\"","\r\n\r\n","import { render, staticRenderFns } from \"./statement.vue?vue&type=template&id=5ca026cb&\"\nimport script from \"./statement.vue?vue&type=script&lang=js&\"\nexport * from \"./statement.vue?vue&type=script&lang=js&\"\nimport style0 from \"./statement.vue?vue&type=style&index=0&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('gdw-dialog',{attrs:{\"title\":_vm.title,\"width\":450,\"show\":_vm.isShow}},[_c('div',{staticClass:\"goodwe-remote-statement\"},[_c('div',{staticClass:\"goodwe-remote-statement__view\"},[_c('gdw-scroll',{},[_c('div',{staticClass:\"goodwe-remote-statement__view--inner\"},[_vm._v(\"\\n \"+_vm._s(_vm.disclaimer_content)+\"\\n \")])])],1)]),_vm._v(\" \"),_c('div',{staticClass:\"goodwe-remote-statement__agreement\",attrs:{\"onselectstart\":\"return false\"}},[_c('span',{class:{checked:_vm.isAgree},on:{\"click\":_vm.agree}}),_vm._v(\" \"),_c('strong',{on:{\"click\":_vm.agree}},[_vm._v(\"已阅读并同意免责声明\")])]),_vm._v(\" \"),_c('div',{staticClass:\"goodwe-remote-statement__buttons\",attrs:{\"slot\":\"button\"},slot:\"button\"},[_c('button',{staticClass:\"btn-primary\",staticStyle:{\"margin-right\":\"15px\"},on:{\"click\":_vm.cancel}},[_vm._v(\"取消\")]),_vm._v(\" \"),_c('button',{staticClass:\"btn-primary\",attrs:{\"disabled\":!_vm.isAgree},on:{\"click\":_vm.ok}},[_vm._v(\"确定\")])])])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\n\r\n\r\n","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./control.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./control.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./control.vue?vue&type=template&id=1a5e8456&\"\nimport script from \"./control.vue?vue&type=script&lang=js&\"\nexport * from \"./control.vue?vue&type=script&lang=js&\"\nimport style0 from \"./control.vue?vue&type=style&index=0&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('gdw-dialog',{attrs:{\"width\":680,\"show\":_vm.isShow}},[_c('div',{staticClass:\"gdw-message-box-header goodwe-remote-control__header\",attrs:{\"slot\":\"header\"},slot:\"header\"},[_c('button',{staticClass:\"btn-primary\",class:{'gmbh-selected-tags':_vm.isParam},on:{\"click\":function($event){_vm.isParam = true}}},[_vm._v(\"参数控制\")]),_vm._v(\" \"),_c('button',{staticClass:\"btn-primary\",class:{'gmbh-selected-tags':!_vm.isParam},on:{\"click\":function($event){_vm.isParam = false}}},[_vm._v(\"启停机控制\")])]),_vm._v(\" \"),_c('div',{staticClass:\"goodwe-remote-control__buttons\",class:{h:!_vm.isParam},attrs:{\"slot\":\"button\"},slot:\"button\"},[_c('button',{staticClass:\"btn-primary\",on:{\"click\":_vm.cancel}},[_vm._v(\"取消\")]),_vm._v(\" \"),(_vm.isShowNextPre)?_c('button',{staticClass:\"btn-primary\",on:{\"click\":_vm.changePage}},[_vm._v(_vm._s(_vm.page==1 ? \"下一页\":\"上一页\"))]):_vm._e()]),_vm._v(\" \"),_c('div',{staticClass:\"goodwe-remote-control__body\"},[_c('div',{staticClass:\"goodwe-remote-control__body--range\"},[_c('h2',[_vm._v(\"远程控制说明\")]),_vm._v(\" \"),_c('div',[_c('el-radio',{attrs:{\"label\":true},model:{value:(_vm.isCurrentInverter),callback:function ($$v) {_vm.isCurrentInverter=$$v},expression:\"isCurrentInverter\"}},[_vm._v(\"对本设备生效\")]),_vm._v(\" \"),_c('el-radio',{attrs:{\"label\":false},model:{value:(_vm.isCurrentInverter),callback:function ($$v) {_vm.isCurrentInverter=$$v},expression:\"isCurrentInverter\"}},[_vm._v(\"对本站所有设备生效\")])],1),_vm._v(\" \"),_c('p',[_vm._v(\"本功能用于对逆变器进行远程的控制和参数设置,请慎重使用\")])]),_vm._v(\" \"),_c('div',{staticClass:\"goodwe-remote-control__body--operate\",class:{small:_vm.isSmall}},[(_vm.isParam)?_c('table',[_c('thead',[_c('tr',[_c('th',[_vm._v(\"参数名称\")]),_vm._v(\" \"),_c('th',[_vm._v(\"当前值\"),_c('a',{class:{'refresh-a':_vm.isRefresh},attrs:{\"href\":\"javascript:void(0);\"},on:{\"click\":_vm.refreshData}})]),_vm._v(\" \"),_c('th',[_vm._v(\"设置值\")]),_vm._v(\" \"),_c('th',[_vm._v(\"操作\")])])]),_vm._v(\" \"),(_vm.goodwePageOne)?_c('tbody',[_c('tr',[_c('td',[_c('div',{staticStyle:{\"padding-left\":\"10px\",\"text-align\":\"left\"}},[_vm._v(\"安规\")])]),_vm._v(\" \"),_c('td',[_vm._v(_vm._s(_vm._f(\"num2saftyCountry\")(_vm.queryObject.saftyCountry1)))]),_vm._v(\" \"),_c('td',[_c('el-select',{staticClass:\"select-form\",attrs:{\"placeholder\":\"\",\"popper-class\":\"goodwe-remote-control__dropdown\"},model:{value:(_vm.submitObject.saftyCountry),callback:function ($$v) {_vm.$set(_vm.submitObject, \"saftyCountry\", $$v)},expression:\"submitObject.saftyCountry\"}},_vm._l((_vm.allSaftyCountry),function(item){return _c('el-option',{key:item.value,attrs:{\"label\":item.text,\"value\":item.value}})}),1)],1),_vm._v(\" \"),_c('td',[_c('a',{attrs:{\"href\":\"javascript:void(0);\",\"data-name\":\"saftyCountry\",\"data-siblings\":\"\",\"data-mark\":\"saftyCountrySettingMark\"},on:{\"click\":_vm.submitForm}},[_vm._v(\"提交\")])])]),_vm._v(\" \"),_c('tr',[_c('td',[_c('div',{staticStyle:{\"padding-left\":\"10px\",\"text-align\":\"left\"}},[_vm._v(\"PV启动电压(V)\")])]),_vm._v(\" \"),_c('td',[_vm._v(_vm._s(_vm.queryObject.pvStartVoltage1))]),_vm._v(\" \"),_c('td',[_c('el-input',{staticClass:\"input-form\",model:{value:(_vm.submitObject.pvStartVoltage),callback:function ($$v) {_vm.$set(_vm.submitObject, \"pvStartVoltage\", $$v)},expression:\"submitObject.pvStartVoltage\"}})],1),_vm._v(\" \"),_c('td',[_c('a',{attrs:{\"href\":\"javascript:void(0);\",\"data-name\":\"pvStartVoltage\",\"data-siblings\":\"\",\"data-mark\":\"pvStartVoltageSettingMark\"},on:{\"click\":_vm.submitForm}},[_vm._v(\"提交\")])])]),_vm._v(\" \"),_c('tr',[_c('td',[_c('div',{staticStyle:{\"padding-left\":\"10px\",\"text-align\":\"left\"}},[_vm._v(\"连接时间(S)\")])]),_vm._v(\" \"),_c('td',[_vm._v(_vm._s(_vm.queryObject.reConnectTime1))]),_vm._v(\" \"),_c('td',[_c('el-input',{staticClass:\"input-form\",model:{value:(_vm.submitObject.reConnectTime),callback:function ($$v) {_vm.$set(_vm.submitObject, \"reConnectTime\", $$v)},expression:\"submitObject.reConnectTime\"}})],1),_vm._v(\" \"),_c('td',[_c('a',{attrs:{\"href\":\"javascript:void(0);\",\"data-name\":\"reConnectTime\",\"data-siblings\":\"\",\"data-mark\":\"reConnectTimeSettingMark\"},on:{\"click\":_vm.submitForm}},[_vm._v(\"提交\")])])]),_vm._v(\" \"),_c('tr',[_c('td',[_c('div',{staticStyle:{\"padding-left\":\"10px\",\"text-align\":\"left\"}},[_vm._v(\"并网电压最小值(V)\")])]),_vm._v(\" \"),_c('td',[_vm._v(_vm._s(_vm.queryObject.gridVoltageMin1))]),_vm._v(\" \"),_c('td',[_c('el-input',{staticClass:\"input-form\",model:{value:(_vm.submitObject.gridVoltageMin),callback:function ($$v) {_vm.$set(_vm.submitObject, \"gridVoltageMin\", $$v)},expression:\"submitObject.gridVoltageMin\"}})],1),_vm._v(\" \"),_c('td',[_c('a',{attrs:{\"href\":\"javascript:void(0);\",\"data-name\":\"gridVoltageMin\",\"data-siblings\":\"gridVoltageMax\",\"data-mark\":\"gridVoltageSettingMark\"},on:{\"click\":_vm.submitForm}},[_vm._v(\"提交\")])])]),_vm._v(\" \"),_c('tr',[_c('td',[_c('div',{staticStyle:{\"padding-left\":\"10px\",\"text-align\":\"left\"}},[_vm._v(\"并网电压最大值(V)\")])]),_vm._v(\" \"),_c('td',[_vm._v(_vm._s(_vm.queryObject.gridVoltageMax1))]),_vm._v(\" \"),_c('td',[_c('el-input',{staticClass:\"input-form\",model:{value:(_vm.submitObject.gridVoltageMax),callback:function ($$v) {_vm.$set(_vm.submitObject, \"gridVoltageMax\", $$v)},expression:\"submitObject.gridVoltageMax\"}})],1),_vm._v(\" \"),_c('td',[_c('a',{attrs:{\"href\":\"javascript:void(0);\",\"data-name\":\"gridVoltageMax\",\"data-siblings\":\"gridVoltageMin\",\"data-mark\":\"gridVoltageSettingMark\"},on:{\"click\":_vm.submitForm}},[_vm._v(\"提交\")])])]),_vm._v(\" \"),_c('tr',[_c('td',[_c('div',{staticStyle:{\"padding-left\":\"10px\",\"text-align\":\"left\"}},[_vm._v(\"并网频率最小值(HZ)\")])]),_vm._v(\" \"),_c('td',[_vm._v(_vm._s(_vm.queryObject.gridFrequencyMin1))]),_vm._v(\" \"),_c('td',[_c('el-input',{staticClass:\"input-form\",model:{value:(_vm.submitObject.gridFrequencyMin),callback:function ($$v) {_vm.$set(_vm.submitObject, \"gridFrequencyMin\", $$v)},expression:\"submitObject.gridFrequencyMin\"}})],1),_vm._v(\" \"),_c('td',[_c('a',{attrs:{\"href\":\"javascript:void(0);\",\"data-name\":\"gridFrequencyMin\",\"data-siblings\":\"gridFrequencyMax\",\"data-mark\":\"gridFrequencySettingMark\"},on:{\"click\":_vm.submitForm}},[_vm._v(\"提交\")])])]),_vm._v(\" \"),_c('tr',[_c('td',[_c('div',{staticStyle:{\"padding-left\":\"10px\",\"text-align\":\"left\"}},[_vm._v(\"并网频率最大值(HZ)\")])]),_vm._v(\" \"),_c('td',[_vm._v(_vm._s(_vm.queryObject.gridFrequencyMax1))]),_vm._v(\" \"),_c('td',[_c('el-input',{staticClass:\"input-form\",model:{value:(_vm.submitObject.gridFrequencyMax),callback:function ($$v) {_vm.$set(_vm.submitObject, \"gridFrequencyMax\", $$v)},expression:\"submitObject.gridFrequencyMax\"}})],1),_vm._v(\" \"),_c('td',[_c('a',{attrs:{\"href\":\"javascript:void(0);\",\"data-name\":\"gridFrequencyMax\",\"data-siblings\":\"gridFrequencyMin\",\"data-mark\":\"gridFrequencySettingMark\"},on:{\"click\":_vm.submitForm}},[_vm._v(\"提交\")])])]),_vm._v(\" \"),_c('tr',[_c('td',[_c('div',{staticStyle:{\"padding-left\":\"10px\",\"text-align\":\"left\"}},[_vm._v(\"过频降载点(Hz)\")])]),_vm._v(\" \"),_c('td',[_vm._v(_vm._s(_vm.queryObject.overFrequencyReducedLoadPoint1))]),_vm._v(\" \"),_c('td',[_c('el-input',{staticClass:\"input-form\",model:{value:(_vm.submitObject.overFrequencyReducedLoadPoint),callback:function ($$v) {_vm.$set(_vm.submitObject, \"overFrequencyReducedLoadPoint\", $$v)},expression:\"submitObject.overFrequencyReducedLoadPoint\"}})],1),_vm._v(\" \"),_c('td',[_c('a',{attrs:{\"href\":\"javascript:void(0);\",\"data-name\":\"overFrequencyReducedLoadPoint\",\"data-siblings\":\"overFrequencyReducedLoadSlope,lessFrequencyReducedLoadPoint,lessFrequencyReducedLoadSlope\",\"data-mark\":\"reducedLoadParamSettingMark\"},on:{\"click\":_vm.submitForm}},[_vm._v(\"提交\")])])]),_vm._v(\" \"),_c('tr',[_c('td',[_c('div',{staticStyle:{\"padding-left\":\"10px\",\"text-align\":\"left\"}},[_vm._v(\"过频降载斜率(%Pn/Hz)\")])]),_vm._v(\" \"),_c('td',[_vm._v(_vm._s(_vm.queryObject.overFrequencyReducedLoadSlope1))]),_vm._v(\" \"),_c('td',[_c('el-input',{staticClass:\"input-form\",model:{value:(_vm.submitObject.overFrequencyReducedLoadSlope),callback:function ($$v) {_vm.$set(_vm.submitObject, \"overFrequencyReducedLoadSlope\", $$v)},expression:\"submitObject.overFrequencyReducedLoadSlope\"}})],1),_vm._v(\" \"),_c('td',[_c('a',{attrs:{\"href\":\"javascript:void(0);\",\"data-name\":\"overFrequencyReducedLoadSlope\",\"data-siblings\":\"overFrequencyReducedLoadPoint,lessFrequencyReducedLoadPoint,lessFrequencyReducedLoadSlope\",\"data-mark\":\"reducedLoadParamSettingMark\"},on:{\"click\":_vm.submitForm}},[_vm._v(\"提交\")])])])]):_vm._e(),_vm._v(\" \"),(_vm.goodwePageTwo)?_c('tbody',[_c('tr',[_c('td',[_c('div',{staticStyle:{\"padding-left\":\"10px\",\"text-align\":\"left\"}},[_vm._v(\"欠频降载点(Hz)\")])]),_vm._v(\" \"),_c('td',[_vm._v(_vm._s(_vm.queryObject.lessFrequencyReducedLoadPoint1))]),_vm._v(\" \"),_c('td',[_c('el-input',{staticClass:\"input-form\",model:{value:(_vm.submitObject.lessFrequencyReducedLoadPoint),callback:function ($$v) {_vm.$set(_vm.submitObject, \"lessFrequencyReducedLoadPoint\", $$v)},expression:\"submitObject.lessFrequencyReducedLoadPoint\"}})],1),_vm._v(\" \"),_c('td',[_c('a',{attrs:{\"href\":\"javascript:void(0);\",\"data-name\":\"lessFrequencyReducedLoadPoint\",\"data-siblings\":\"overFrequencyReducedLoadPoint,overFrequencyReducedLoadSlope,lessFrequencyReducedLoadSlope\",\"data-mark\":\"reducedLoadParamSettingMark\"},on:{\"click\":_vm.submitForm}},[_vm._v(\"提交\")])])]),_vm._v(\" \"),_c('tr',[_c('td',[_c('div',{staticStyle:{\"padding-left\":\"10px\",\"text-align\":\"left\"}},[_vm._v(\"欠频降载斜率(%Pn/Hz)\")])]),_vm._v(\" \"),_c('td',[_vm._v(_vm._s(_vm.queryObject.lessFrequencyReducedLoadSlope1))]),_vm._v(\" \"),_c('td',[_c('el-input',{staticClass:\"input-form\",model:{value:(_vm.submitObject.lessFrequencyReducedLoadSlope),callback:function ($$v) {_vm.$set(_vm.submitObject, \"lessFrequencyReducedLoadSlope\", $$v)},expression:\"submitObject.lessFrequencyReducedLoadSlope\"}})],1),_vm._v(\" \"),_c('td',[_c('a',{attrs:{\"href\":\"javascript:void(0);\",\"data-name\":\"lessFrequencyReducedLoadSlope\",\"data-siblings\":\"overFrequencyReducedLoadPoint,overFrequencyReducedLoadSlope,lessFrequencyReducedLoadPoint\",\"data-mark\":\"reducedLoadParamSettingMark\"},on:{\"click\":_vm.submitForm}},[_vm._v(\"提交\")])])]),_vm._v(\" \"),_c('tr',[_c('td',[_c('div',{staticStyle:{\"padding-left\":\"10px\",\"text-align\":\"left\"}},[_vm._v(\"无功输出(%)\")])]),_vm._v(\" \"),_c('td',[_vm._v(_vm._s(_vm.queryObject.reactivePower1))]),_vm._v(\" \"),_c('td',[_c('el-input',{staticClass:\"input-form\",model:{value:(_vm.submitObject.reactivePower),callback:function ($$v) {_vm.$set(_vm.submitObject, \"reactivePower\", $$v)},expression:\"submitObject.reactivePower\"}})],1),_vm._v(\" \"),_c('td',[_c('a',{attrs:{\"href\":\"javascript:void(0);\",\"data-name\":\"reactivePower\",\"data-siblings\":\"\",\"data-mark\":\"reactivePowerSettingMark\"},on:{\"click\":_vm.submitForm}},[_vm._v(\"提交\")])])]),_vm._v(\" \"),_c('tr',[_c('td',[_c('div',{staticStyle:{\"padding-left\":\"10px\",\"text-align\":\"left\"}},[_vm._v(\"输出功率(%)\")])]),_vm._v(\" \"),_c('td',[_vm._v(_vm._s(_vm.queryObject.activePowerLimit1))]),_vm._v(\" \"),_c('td',[_c('el-input',{staticClass:\"input-form\",model:{value:(_vm.submitObject.activePowerLimit),callback:function ($$v) {_vm.$set(_vm.submitObject, \"activePowerLimit\", $$v)},expression:\"submitObject.activePowerLimit\"}})],1),_vm._v(\" \"),_c('td',[_c('a',{attrs:{\"href\":\"javascript:void(0);\",\"data-name\":\"activePowerLimit\",\"data-siblings\":\"\",\"data-mark\":\"activePowerLimitSettingMark\"},on:{\"click\":_vm.submitForm}},[_vm._v(\"提交\")])])]),_vm._v(\" \"),_c('tr',[_c('td',[_c('div',{staticStyle:{\"padding-left\":\"10px\",\"text-align\":\"left\"}},[_vm._v(\"功率因素\")])]),_vm._v(\" \"),_c('td',[_vm._v(_vm._s(_vm.queryObject.powerFactor1))]),_vm._v(\" \"),_c('td',[_c('el-input',{staticClass:\"input-form\",model:{value:(_vm.submitObject.powerFactor),callback:function ($$v) {_vm.$set(_vm.submitObject, \"powerFactor\", $$v)},expression:\"submitObject.powerFactor\"}})],1),_vm._v(\" \"),_c('td',[_c('a',{attrs:{\"href\":\"javascript:void(0);\",\"data-name\":\"powerFactor\",\"data-siblings\":\"\",\"data-mark\":\"powerFactorSettingMark\"},on:{\"click\":_vm.submitForm}},[_vm._v(\"提交\")])])]),_vm._v(\" \"),_c('tr',[_c('td',[_c('div',{staticStyle:{\"padding-left\":\"10px\",\"text-align\":\"left\"}},[_vm._v(\"无功曲线设置\")])]),_vm._v(\" \"),_c('td',[_vm._v(_vm._s(_vm._f(\"num2switchcure\")(_vm.queryObject.standardReactivePowerCurve1)))]),_vm._v(\" \"),_c('td',[_c('el-select',{staticClass:\"select-form\",attrs:{\"placeholder\":\"\",\"popper-class\":\"goodwe-remote-control__dropdown\"},model:{value:(_vm.submitObject.standardReactivePowerCurve),callback:function ($$v) {_vm.$set(_vm.submitObject, \"standardReactivePowerCurve\", $$v)},expression:\"submitObject.standardReactivePowerCurve\"}},_vm._l((_vm.allReactivePowerCurve),function(item){return _c('el-option',{key:item.value,attrs:{\"label\":item.text,\"value\":item.value}})}),1)],1),_vm._v(\" \"),_c('td',[_c('a',{attrs:{\"href\":\"javascript:void(0);\",\"data-name\":\"standardReactivePowerCurve\",\"data-siblings\":\"\",\"data-mark\":\"standardReactivePowerCurveSettingMark\"},on:{\"click\":_vm.submitForm}},[_vm._v(\"提交\")])])]),_vm._v(\" \"),_c('tr',[_c('td',[_c('div',{staticStyle:{\"padding-left\":\"10px\",\"text-align\":\"left\"}},[_vm._v(\"阴影扫描设置\")])]),_vm._v(\" \"),_c('td',[_vm._v(_vm._s(_vm._f(\"num2switch\")(_vm.queryObject.shadowScan1)))]),_vm._v(\" \"),_c('td',[_c('el-select',{staticClass:\"select-form\",attrs:{\"placeholder\":\"\",\"popper-class\":\"goodwe-remote-control__dropdown\"},model:{value:(_vm.submitObject.shadowScan),callback:function ($$v) {_vm.$set(_vm.submitObject, \"shadowScan\", $$v)},expression:\"submitObject.shadowScan\"}},_vm._l((_vm.allShadowScan),function(item){return _c('el-option',{key:item.value,attrs:{\"label\":item.text,\"value\":item.value}})}),1)],1),_vm._v(\" \"),_c('td',[_c('a',{attrs:{\"href\":\"javascript:void(0);\",\"data-name\":\"shadowScan\",\"data-siblings\":\"\",\"data-mark\":\"shadowScanSettingMark\"},on:{\"click\":_vm.submitForm}},[_vm._v(\"提交\")])])]),_vm._v(\" \"),_c('tr',[_c('td',[_c('div',{staticStyle:{\"padding-left\":\"10px\",\"text-align\":\"left\"}},[_vm._v(\"ISO(kΩ)\")])]),_vm._v(\" \"),_c('td',[_vm._v(_vm._s(_vm.queryObject.isoLimit1))]),_vm._v(\" \"),_c('td',[_c('el-input',{staticClass:\"input-form\",model:{value:(_vm.submitObject.isoLimit),callback:function ($$v) {_vm.$set(_vm.submitObject, \"isoLimit\", $$v)},expression:\"submitObject.isoLimit\"}})],1),_vm._v(\" \"),_c('td',[_c('a',{attrs:{\"href\":\"javascript:void(0);\",\"data-name\":\"isoLimit\",\"data-siblings\":\"\",\"data-mark\":\"isoLimitSettingMark\"},on:{\"click\":_vm.submitForm}},[_vm._v(\"提交\")])])])]):_vm._e(),_vm._v(\" \"),(_vm.isNotGoodwe)?_c('tbody',[_c('tr',[_c('td',[_c('div',{staticStyle:{\"padding-left\":\"10px\",\"text-align\":\"left\"}},[_vm._v(\"安规设置\")])]),_vm._v(\" \"),_c('td',[_vm._v(_vm._s(_vm._f(\"num2saftyCountry\")(_vm.queryObject.saftyCountry1)))]),_vm._v(\" \"),_c('td',[_c('el-select',{staticClass:\"select-form\",attrs:{\"placeholder\":\"\",\"popper-class\":\"goodwe-remote-control__dropdown\"},model:{value:(_vm.submitObject.saftyCountry),callback:function ($$v) {_vm.$set(_vm.submitObject, \"saftyCountry\", $$v)},expression:\"submitObject.saftyCountry\"}},_vm._l((_vm.allSaftyCountry),function(item){return _c('el-option',{key:item.value,attrs:{\"label\":item.text,\"value\":item.value}})}),1)],1),_vm._v(\" \"),_c('td',[_c('a',{attrs:{\"href\":\"javascript:void(0);\",\"data-name\":\"saftyCountry\",\"data-siblings\":\"\",\"data-mark\":\"saftyCountrySettingMark\"},on:{\"click\":_vm.submitForm}},[_vm._v(\"提交\")])])]),_vm._v(\" \"),_c('tr',[_c('td',[_c('div',{staticStyle:{\"padding-left\":\"10px\",\"text-align\":\"left\"}},[_vm._v(\"无功功率(%)\"),_c('span',{staticClass:\"tips\"},[_vm._v(\"[-60,60]\")])])]),_vm._v(\" \"),_c('td',[_vm._v(_vm._s(_vm.queryObject.reactivePower1))]),_vm._v(\" \"),_c('td',[_c('el-input',{staticClass:\"input-form\",model:{value:(_vm.submitObject.reactivePower),callback:function ($$v) {_vm.$set(_vm.submitObject, \"reactivePower\", $$v)},expression:\"submitObject.reactivePower\"}})],1),_vm._v(\" \"),_c('td',[_c('a',{attrs:{\"href\":\"javascript:void(0);\",\"data-name\":\"reactivePower\",\"data-siblings\":\"\",\"data-mark\":\"reactivePowerSettingMark\"},on:{\"click\":_vm.submitForm}},[_vm._v(\"提交\")])])]),_vm._v(\" \"),_c('tr',[_c('td',[_c('div',{staticStyle:{\"padding-left\":\"10px\",\"text-align\":\"left\"}},[_vm._v(\"有功功率(%)\"),_c('span',{staticClass:\"tips\"},[_vm._v(\"[0,100]\")])])]),_vm._v(\" \"),_c('td',[_vm._v(_vm._s(_vm.queryObject.activePowerLimit1))]),_vm._v(\" \"),_c('td',[_c('el-input',{staticClass:\"input-form\",model:{value:(_vm.submitObject.activePowerLimit),callback:function ($$v) {_vm.$set(_vm.submitObject, \"activePowerLimit\", $$v)},expression:\"submitObject.activePowerLimit\"}})],1),_vm._v(\" \"),_c('td',[_c('a',{attrs:{\"href\":\"javascript:void(0);\",\"data-name\":\"activePowerLimit\",\"data-siblings\":\"\",\"data-mark\":\"activePowerLimitSettingMark\"},on:{\"click\":_vm.submitForm}},[_vm._v(\"提交\")])])]),_vm._v(\" \"),_c('tr',[_c('td',[_c('div',{staticStyle:{\"padding-left\":\"10px\",\"text-align\":\"left\"}},[_vm._v(\"功率因素\"),_c('span',{staticClass:\"tips\"},[_vm._v(\"[-0.99, -0.80] or [0.80, 1]\")])])]),_vm._v(\" \"),_c('td',[_vm._v(_vm._s(_vm.queryObject.powerFactor1))]),_vm._v(\" \"),_c('td',[_c('el-input',{staticClass:\"input-form\",model:{value:(_vm.submitObject.powerFactor),callback:function ($$v) {_vm.$set(_vm.submitObject, \"powerFactor\", $$v)},expression:\"submitObject.powerFactor\"}})],1),_vm._v(\" \"),_c('td',[_c('a',{attrs:{\"href\":\"javascript:void(0);\",\"data-name\":\"powerFactor\",\"data-siblings\":\"\",\"data-mark\":\"powerFactorSettingMark\"},on:{\"click\":_vm.submitForm}},[_vm._v(\"提交\")])])]),_vm._v(\" \"),_c('tr',[_c('td',[_c('div',{staticStyle:{\"padding-left\":\"10px\",\"text-align\":\"left\"}},[_vm._v(\"绝缘阻抗阈值(万欧)\"),_c('span',{staticClass:\"tips\"},[_vm._v(\"[1, 30]\")])])]),_vm._v(\" \"),_c('td',[_vm._v(_vm._s(_vm.queryObject.isoLimit1))]),_vm._v(\" \"),_c('td',[_c('el-input',{staticClass:\"input-form\",model:{value:(_vm.submitObject.isoLimit),callback:function ($$v) {_vm.$set(_vm.submitObject, \"isoLimit\", $$v)},expression:\"submitObject.isoLimit\"}})],1),_vm._v(\" \"),_c('td',[_c('a',{attrs:{\"href\":\"javascript:void(0);\",\"data-name\":\"isoLimit\",\"data-siblings\":\"\",\"data-mark\":\"isoLimitSettingMark\"},on:{\"click\":_vm.submitForm}},[_vm._v(\"提交\")])])])]):_vm._e()]):_c('div',{staticClass:\"goodwe-remote-control__body--start\"},[_c('p',[_c('label',[_vm._v(\"逆变器开始发电\")]),_vm._v(\" \"),_c('button',{staticClass:\"btn-primary\",on:{\"click\":function($event){return _vm.startStop(1)}}},[_vm._v(\"启动\")])]),_vm._v(\" \"),_c('p',[_c('label',[_vm._v(\"逆变器停止发电\")]),_vm._v(\" \"),_c('button',{staticClass:\"btn-primary\",on:{\"click\":function($event){return _vm.startStop(0)}}},[_vm._v(\"停机\")])])])])])])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./GoodweRemoteControl.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./GoodweRemoteControl.vue?vue&type=script&lang=js&\"","\r\n\r\n","import { render, staticRenderFns } from \"./GoodweRemoteControl.vue?vue&type=template&id=feb7a7ce&\"\nimport script from \"./GoodweRemoteControl.vue?vue&type=script&lang=js&\"\nexport * from \"./GoodweRemoteControl.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"goodwe-remote-control\"},[(_vm.showStatement)?_c('statement'):_vm._e(),_vm._v(\" \"),(_vm.showControl)?_c('control'):_vm._e()],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import GoodweRemoteControl from './src/GoodweRemoteControl.vue';\r\n\r\nGoodweRemoteControl.install = function(Vue) {\r\n Vue.component(GoodweRemoteControl.name, GoodweRemoteControl);\r\n}\r\n\r\nexport default GoodweRemoteControl;","import mod from \"-!../../../../../../node_modules/babel-loader/lib/index.js!./EvChargerAlarm.js?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../../node_modules/babel-loader/lib/index.js!./EvChargerAlarm.js?vue&type=script&lang=js&\"","export default {\r\n name: 'EvChargerAlarm',\r\n data(){\r\n return {\r\n lang: Goodwe.Ops.Resouces.Front, // 语言包\r\n snOptions: [], // 充电桩选择集合\r\n optionsStatus: [ // 告警状态下拉集\r\n {label: lang.status_options_all, value: '3'},\r\n {label: lang.status_options_happen, value: '2'},\r\n {label: lang.status_options_recover, value: '1'},\r\n ],\r\n evSns: [], // 选择充电桩\r\n statusVal: '3', // 选择的状态(默认All)\r\n tableData: [], // 告警列表集合\r\n dialogVisible: false, // 告警框显隐\r\n currentPage: 1, // 当前页码数\r\n totalCount: 0, // 告警总数\r\n warningStatus: { // 告警状态\r\n \"1\": lang.status_options_recover,\r\n \"0\": lang.status_options_happen\r\n },\r\n warningDetail: {\r\n reason: '--',\r\n suggestion: '--'\r\n }\r\n }\r\n },\r\n filters: {\r\n formatDate(v){\r\n if (!v && v != \"0\") {\r\n return \"--\"\r\n } else {\r\n return dayjs(v).format(`${dateFormatSems} HH:mm:ss`)\r\n }\r\n },\r\n },\r\n methods: {\r\n /** 告警原因 */\r\n replaceReason(reason) {\r\n if(reason === '--') { return '--' }\r\n return reason.replace(/\\|/g, \"
\");\r\n },\r\n /** 页码改变 */\r\n handleCurrentChange(page) {\r\n this.currentPage = page;\r\n this.searchHandle();\r\n },\r\n /** 重置点击 */\r\n resetHandle() {\r\n this.evSns = [];\r\n this.statusVal = '3';\r\n this.handleCurrentChange(1);\r\n },\r\n /** 点击查询 */\r\n searchHandle() {\r\n loading.showLoading();\r\n common.post('/v4/EvCharger/GetWariningBySnOrStatus',{\r\n sn: this.evSns.join(','),\r\n powerStationId: GetRequest().id,\r\n status: this.statusVal,\r\n page_index: this.currentPage,\r\n page_size: 12\r\n }).success(function(res){\r\n if(res.data) {\r\n this.tableData = res.data.list || [];\r\n this.totalCount = res.data.record || 0;\r\n }\r\n }.bind(this)).fail(function(fail){\r\n if(fail && fail.msg) {\r\n this.$message.error(lang[fail.msg]);\r\n }\r\n }.bind(this)).all(function(){\r\n loading.disLoading();\r\n }.bind(this))\r\n },\r\n /** 展示告警详情 */\r\n showAlarmDetail(row) {\r\n loading.showLoading();\r\n common.post('/MessageCenter/GetWariningDetailByID',{\r\n id: row.warningId,\r\n }).success(function(res){\r\n if(res.data) {\r\n this.warningDetail['reason'] = res.data['reason'] || '--';\r\n this.warningDetail['suggestion'] = res.data['suggestion'] || '--';\r\n this.dialogVisible = true;\r\n }\r\n }.bind(this)).fail(function(fail){\r\n if(fail && fail.msg) {\r\n this.$message.error(lang[fail.msg]);\r\n }\r\n }.bind(this)).all(function(){\r\n loading.disLoading();\r\n }.bind(this))\r\n },\r\n },\r\n mounted() {\r\n this.searchHandle();\r\n common.post('/v4/EvCharger/GetEvChargerMoreView',\r\n { powerStationId: GetRequest().id}).success(function(res){\r\n if(res.data && res.data.length > 0) {\r\n res.data.forEach(item=> {\r\n this.snOptions.push({ label: item.name, value: item.sn })\r\n })\r\n }\r\n }.bind(this))\r\n }\r\n}","import { render, staticRenderFns } from \"./EvChargerAlarm.vue?vue&type=template&id=7360cc12&scoped=true&\"\nimport script from \"./EvChargerAlarm.js?vue&type=script&lang=js&\"\nexport * from \"./EvChargerAlarm.js?vue&type=script&lang=js&\"\nimport style0 from \"./EvChargerAlarm.scss?vue&type=style&index=0&id=7360cc12&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"7360cc12\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"cont-alarm\"},[_c('div',{staticClass:\"search-area\"},[_c('div',{staticClass:\"form-label\"},[_vm._v(_vm._s(_vm.lang.devicetype_EVCharge)+\":\")]),_vm._v(\" \"),_c('el-select',{staticStyle:{\"width\":\"263px\"},attrs:{\"multiple\":\"\",\"collapse-tags\":\"\",\"size\":\"medium\",\"placeholder\":_vm.lang.pssmPleaseSelect},model:{value:(_vm.evSns),callback:function ($$v) {_vm.evSns=$$v},expression:\"evSns\"}},_vm._l((_vm.snOptions),function(item){return _c('el-option',{key:item.value,staticStyle:{\"max-width\":\"263px\"},attrs:{\"label\":item.label,\"value\":item.value}})}),1),_vm._v(\" \"),_c('div',{staticClass:\"form-label\",staticStyle:{\"margin-left\":\"16px\"}},[_vm._v(_vm._s(_vm.lang.oStatus)+\":\")]),_vm._v(\" \"),_c('el-select',{staticStyle:{\"width\":\"193px\"},attrs:{\"placeholder\":_vm.lang.pssmPleaseSelect,\"size\":\"medium\"},model:{value:(_vm.statusVal),callback:function ($$v) {_vm.statusVal=$$v},expression:\"statusVal\"}},_vm._l((_vm.optionsStatus),function(item){return _c('el-option',{key:item.value,staticStyle:{\"max-width\":\"193px\"},attrs:{\"label\":item.label,\"value\":item.value}})}),1),_vm._v(\" \"),_c('div',{staticClass:\"operate-btns\"},[_c('el-button',{attrs:{\"size\":\"medium\"},on:{\"click\":_vm.resetHandle}},[_vm._v(_vm._s(_vm.lang.scReset))]),_vm._v(\" \"),_c('el-button',{attrs:{\"size\":\"medium\",\"type\":\"primary\"},on:{\"click\":_vm.searchHandle}},[_vm._v(_vm._s(_vm.lang.ohSearch))])],1)],1),_vm._v(\" \"),_c('div',{staticClass:\"alarm-main\"},[_c('el-table',{staticClass:\"centered-table\",staticStyle:{\"width\":\"100%\"},attrs:{\"data\":_vm.tableData,\"empty-text\":_vm.lang.siNoDataNow,\"header-cell-class-name\":'custom-header-bg'}},[_c('el-table-column',{attrs:{\"prop\":\"deviceName\",\"label\":_vm.lang.devicetype_EVCharge,\"align\":\"center\",\"show-overflow-tooltip\":\"\"}}),_vm._v(\" \"),_c('el-table-column',{attrs:{\"prop\":\"deviceSn\",\"label\":_vm.lang.EVCharger_Info_SN,\"width\":\"180\",\"align\":\"center\",\"show-overflow-tooltip\":\"\"}}),_vm._v(\" \"),_c('el-table-column',{attrs:{\"prop\":\"status\",\"label\":_vm.lang.oStatus,\"width\":\"180\",\"align\":\"center\"},scopedSlots:_vm._u([{key:\"default\",fn:function(scope){return [_c('div',[_vm._v(_vm._s(_vm.warningStatus[scope.row.status]))])]}}])}),_vm._v(\" \"),_c('el-table-column',{attrs:{\"prop\":\"recoveryTime\",\"label\":((_vm.lang.rmHappenTime) + \" \" + (_vm.lang.time)),\"align\":\"center\"},scopedSlots:_vm._u([{key:\"default\",fn:function(scope){return [_c('div',[_vm._v(_vm._s(_vm._f(\"formatDate\")(scope.row.recoveryTime)))])]}}])}),_vm._v(\" \"),_c('el-table-column',{attrs:{\"prop\":\"warningCode\",\"label\":_vm.lang.alaMes,\"width\":\"380\",\"align\":\"center\",\"show-overflow-tooltip\":\"\"},scopedSlots:_vm._u([{key:\"default\",fn:function(scope){return [_c('div',[_vm._v(_vm._s(_vm.lang[((scope.row.warningCode) + \"_warning\")]))])]}}])}),_vm._v(\" \"),_c('el-table-column',{attrs:{\"prop\":\"warningId\",\"label\":_vm.lang.rmDetailInfo,\"width\":\"180\",\"align\":\"center\"},scopedSlots:_vm._u([{key:\"default\",fn:function(scope){return [(scope.row.warningId!='')?_c('div',{staticClass:\"see-btn\",on:{\"click\":function($event){return _vm.showAlarmDetail(scope.row)}}},[_vm._v(\"\\n ...\\n \")]):_vm._e()]}}])})],1),_vm._v(\" \"),_c('el-pagination',{attrs:{\"current-page\":_vm.currentPage,\"page-size\":12,\"total\":_vm.totalCount,\"hide-on-single-page\":\"\",\"background\":\"\",\"layout\":\"total, prev, pager, next, jumper\"},on:{\"current-change\":_vm.handleCurrentChange}})],1),_vm._v(\" \"),_c('el-dialog',{attrs:{\"title\":_vm.lang.alarmDetails,\"visible\":_vm.dialogVisible,\"width\":\"720px\"},on:{\"update:visible\":function($event){_vm.dialogVisible=$event}}},[_c('el-scrollbar',{staticStyle:{\"height\":\"300px\",\"width\":\"100%\"},attrs:{\"wrap-class\":'el-gw-scroll'}},[_c('div',{staticClass:\"detail-item\"},[_c('div',{staticClass:\"alarm-title\"},[_vm._v(_vm._s(_vm.lang.rmReason)+\":\")]),_vm._v(\" \"),_c('div',{staticClass:\"alarm-reasons\",domProps:{\"innerHTML\":_vm._s(_vm.replaceReason(_vm.lang[_vm.warningDetail.reason]))}})]),_vm._v(\" \"),_c('div',{staticClass:\"setting-line\"}),_vm._v(\" \"),_c('div',{staticClass:\"detail-item\"},[_c('div',{staticClass:\"alarm-title\"},[_vm._v(_vm._s(_vm.lang.EVDetail_Alarm_Troubleshooting)+\":\")]),_vm._v(\" \"),_c('div',{staticClass:\"alarm-reasons\",domProps:{\"innerHTML\":_vm._s(_vm.replaceReason(_vm.lang[_vm.warningDetail.suggestion]))}})])])],1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../../../node_modules/babel-loader/lib/index.js!./EvChargerRecord.js?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../../node_modules/babel-loader/lib/index.js!./EvChargerRecord.js?vue&type=script&lang=js&\"","import { exportFile } from \"../../../../../utils/common.js\";\r\nexport default {\r\n name: 'EvChargerRecord',\r\n props: {\r\n localDate: { type: String, required: true }, // 本地时间\r\n },\r\n data(){\r\n return {\r\n lang:Goodwe.Ops.Resouces.Front, // 语言包\r\n dateFormat: dateFormatSems.replace(/Y/g, \"y\").replace(/D/g, \"d\"),\r\n snOptions: [], // 充电桩选项\r\n cardOptions: [], // RFID卡集合\r\n evSns: [], // 选择的充电桩\r\n cardSelected: '', // 当前选择的卡\r\n dateRange: [], // 选择的时间\r\n tableData: [], // 充电记录\r\n currentPage: 1, // 当前页码数\r\n totalCount: 0, // 告警总数\r\n /* 禁用本机时间之后的日期*/\r\n pickerOptions: {\r\n disabledDate: this.handleDisabledDate,\r\n },\r\n }\r\n },\r\n filters: {\r\n formatDate(v){\r\n if (!v && v != \"0\") {\r\n return \"--\"\r\n } else {\r\n return dayjs(v).format(`${dateFormatSems} HH:mm:ss`)\r\n }\r\n },\r\n },\r\n methods: {\r\n /** 禁用本机之后日期和两个月之前的日期 */\r\n handleDisabledDate(time) {\r\n const currentTimeStamp = new Date(this.localDate).getTime();\r\n const currentDate = new Date(currentTimeStamp);\r\n currentDate.setMonth(currentDate.getMonth() - 2);\r\n const newTimeStamp = currentDate.getTime();\r\n return time.getTime() > currentTimeStamp || time.getTime() < newTimeStamp\r\n },\r\n /** 切换页码 */\r\n handleCurrentChange(page) {\r\n this.currentPage = page;\r\n this.getEvChargerHistory();\r\n },\r\n /** 获取充电桩历史充电记录 */\r\n getEvChargerHistory() {\r\n loading.showLoading();\r\n common.post('/v4/EvCharger/GetEvChargeHistory',\r\n { powerstationid: GetRequest().id,\r\n sn: this.evSns.join(','),\r\n start: this.dateRange[0] ? dayjs(this.dateRange[0]).format('YYYY-MM-DD'):'',\r\n end: this.dateRange[1] ? dayjs(this.dateRange[1]).format('YYYY-MM-DD'):'',\r\n card: this.cardSelected,\r\n pageindex: this.currentPage,\r\n pagesize: 12,\r\n }).success(function(res){\r\n if(res.data) {\r\n this.tableData = res.data.list || [];\r\n this.totalCount = res.data.record || 0;\r\n }\r\n }.bind(this)).fail(function(fail){\r\n if(fail && fail.msg) {\r\n this.$message.error(lang[fail.msg]);\r\n }\r\n }.bind(this)).all(function(){\r\n loading.disLoading();\r\n }.bind(this))\r\n },\r\n /** 时间范围更改后 */\r\n handleChangeDateRange(time) {\r\n const diffInMonths = dayjs(time[1]).diff(dayjs(time[0]), 'day');\r\n if(diffInMonths > 30) {\r\n this.handleDateRange(time[1]);\r\n this.$message.warning(lang.EVDetail_daterange);\r\n }\r\n },\r\n /** 时间范围固定范围 */\r\n handleDateRange(current) {\r\n this.dateRange = [\r\n new Date(dayjs(current).subtract(1, 'month')),\r\n new Date(current),\r\n ];\r\n },\r\n /** 初始化数据 */\r\n initData() {\r\n this.snOptions = [];\r\n common.post('/v4/EvCharger/GetEvChargerMoreView',\r\n { powerStationId: GetRequest().id}).success(function(res){\r\n if(res.data && res.data.length > 0) {\r\n res.data.forEach(item=> {\r\n this.snOptions.push({ label: item.name, value: item.sn })\r\n })\r\n }\r\n }.bind(this));\r\n common.post('/v4/EvCharger/GetEvChargerHistorySNAndCard',\r\n { powerStationId: GetRequest().id}).success(function(res){\r\n if(res.data) {\r\n this.cardOptions = res.data['cardList'] || [{label: lang.empty_data, value: 'null', disabled: true }];\r\n }\r\n }.bind(this));\r\n },\r\n /** 点击重置 */\r\n handleReset() {\r\n this.evSns = [];\r\n this.dateRange = [];\r\n this.snOptions = [];\r\n this.cardSelected = '';\r\n this.currentPage = 1;\r\n this.totalCount = 0;\r\n this.initData();\r\n this.handleDateRange(this.localDate);\r\n this.getEvChargerHistory();\r\n },\r\n /** 点击导出充电记录 */\r\n exportRecord() {\r\n loading.showLoading();\r\n common.post('/v4/EvCharger/ExportChargeReportPdf',\r\n { powerstationid: GetRequest().id,\r\n sn: this.evSns.join(','),\r\n start: this.dateRange[0] ? dayjs(this.dateRange[0]).format('YYYY-MM-DD'):'',\r\n end: this.dateRange[1] ? dayjs(this.dateRange[1]).format('YYYY-MM-DD'):'',\r\n card: this.cardSelected,\r\n pageindex: 1,\r\n pagesize: 99999,\r\n }).success(function(res){\r\n if(res.data) {\r\n exportFile(res.data);\r\n } else {\r\n this.$message.error(lang['parErr']);\r\n }\r\n }.bind(this)).fail(function(fail){\r\n if(fail && fail.msg) {\r\n this.$message.error(lang[fail.msg]);\r\n }\r\n }.bind(this)).all(function(){\r\n loading.disLoading();\r\n }.bind(this))\r\n \r\n }\r\n },\r\n mounted() {\r\n this.initData();\r\n this.handleDateRange(this.localDate);\r\n this.getEvChargerHistory();\r\n }\r\n}","import { render, staticRenderFns } from \"./EvChargerRecord.vue?vue&type=template&id=48912e2f&scoped=true&\"\nimport script from \"./EvChargerRecord.js?vue&type=script&lang=js&\"\nexport * from \"./EvChargerRecord.js?vue&type=script&lang=js&\"\nimport style0 from \"./EvChargerRecord.scss?vue&type=style&index=0&id=48912e2f&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"48912e2f\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"cont-record\"},[_c('div',{staticClass:\"search-area\"},[_c('div',{staticClass:\"form-label\",staticStyle:{\"margin-left\":\"0\"}},[_vm._v(\"\\n \"+_vm._s(_vm.lang.devicetype_EVCharge)+\":\")]),_vm._v(\" \"),_c('el-select',{staticStyle:{\"width\":\"263px\"},attrs:{\"multiple\":\"\",\"collapse-tags\":\"\",\"size\":\"medium\",\"placeholder\":_vm.lang.pssmPleaseSelect},model:{value:(_vm.evSns),callback:function ($$v) {_vm.evSns=$$v},expression:\"evSns\"}},_vm._l((_vm.snOptions),function(item){return _c('el-option',{key:item.value,staticStyle:{\"max-width\":\"263px\"},attrs:{\"label\":item.label,\"value\":item.value}})}),1),_vm._v(\" \"),_c('div',{staticClass:\"form-label\"},[_vm._v(_vm._s(_vm.lang.txtDate)+\" \"+_vm._s(_vm.lang.PushSetting_Range)+\":\")]),_vm._v(\" \"),_c('el-date-picker',{attrs:{\"type\":\"daterange\",\"format\":_vm.dateFormat,\"size\":\"medium\",\"range-separator\":\"—\",\"picker-options\":_vm.pickerOptions,\"start-placeholder\":_vm.lang.EVDetail_Record_StartTime,\"end-placeholder\":_vm.lang.EVDetail_Record_EndTime},on:{\"change\":_vm.handleChangeDateRange},model:{value:(_vm.dateRange),callback:function ($$v) {_vm.dateRange=$$v},expression:\"dateRange\"}}),_vm._v(\" \"),_c('div',{staticClass:\"form-label\"},[_vm._v(_vm._s(_vm.lang.EVDetail_Card_Name)+\":\")]),_vm._v(\" \"),_c('el-select',{staticStyle:{\"width\":\"223px\"},attrs:{\"size\":\"medium\",\"placeholder\":_vm.lang.pssmPleaseSelect},model:{value:(_vm.cardSelected),callback:function ($$v) {_vm.cardSelected=$$v},expression:\"cardSelected\"}},_vm._l((_vm.cardOptions),function(item){return _c('el-option',{key:item.value,staticStyle:{\"max-width\":\"223px\"},attrs:{\"label\":item.label,\"value\":item.value}})}),1),_vm._v(\" \"),_c('div',{staticClass:\"operate-btns\"},[_c('el-button',{attrs:{\"size\":\"medium\"},on:{\"click\":_vm.handleReset}},[_vm._v(_vm._s(_vm.lang.scReset))]),_vm._v(\" \"),_c('el-button',{attrs:{\"size\":\"medium\",\"type\":\"primary\"},on:{\"click\":function($event){return _vm.handleCurrentChange(1)}}},[_vm._v(\"\\n \"+_vm._s(_vm.lang.ohSearch)+\"\\n \")]),_vm._v(\" \"),_c('el-button',{attrs:{\"size\":\"medium\",\"type\":\"primary\",\"disabled\":_vm.tableData.length === 0},on:{\"click\":function($event){return _vm.exportRecord()}}},[_vm._v(_vm._s(_vm.lang.export)+\"\\n \")])],1)],1),_vm._v(\" \"),_c('div',{staticClass:\"alarm-main\"},[_c('el-table',{staticClass:\"centered-table\",staticStyle:{\"width\":\"100%\"},attrs:{\"data\":_vm.tableData,\"header-cell-class-name\":'custom-header-bg',\"empty-text\":_vm.lang.siNoDataNow}},[_c('el-table-column',{attrs:{\"prop\":\"evChargerName\",\"label\":_vm.lang.EVDetail_EVname,\"fixed\":\"left\",\"width\":\"180\",\"align\":\"center\",\"show-overflow-tooltip\":\"\"}}),_vm._v(\" \"),_c('el-table-column',{attrs:{\"prop\":\"sn\",\"label\":_vm.lang.EVCharger_Info_SN,\"fixed\":\"left\",\"width\":\"200\",\"align\":\"center\",\"show-overflow-tooltip\":\"\"}}),_vm._v(\" \"),_c('el-table-column',{attrs:{\"label\":_vm.lang.EVDetail_Card_newCard_CardName,\"fixed\":\"left\",\"width\":\"200\",\"align\":\"center\",\"show-overflow-tooltip\":\"\"},scopedSlots:_vm._u([{key:\"default\",fn:function(scope){return [_c('div',{staticClass:\"card-name\"},[_vm._v(_vm._s(scope.row.cardName)+\" \")])]}}])}),_vm._v(\" \"),_c('el-table-column',{attrs:{\"prop\":\"cardNo\",\"label\":_vm.lang.EVDetail_Card_newCard_CardNo,\"fixed\":\"left\",\"width\":\"200\",\"align\":\"center\",\"show-overflow-tooltip\":\"\"}}),_vm._v(\" \"),_c('el-table-column',{attrs:{\"prop\":\"startTime\",\"label\":_vm.lang.EVDetail_Record_StartTime,\"width\":\"200\",\"align\":\"center\"},scopedSlots:_vm._u([{key:\"default\",fn:function(scope){return [_c('div',[_vm._v(_vm._s(_vm._f(\"formatDate\")(scope.row.startTime)))])]}}])}),_vm._v(\" \"),_c('el-table-column',{attrs:{\"prop\":\"endTime\",\"label\":_vm.lang.EVDetail_Record_EndTime,\"width\":\"200\",\"align\":\"center\",\"show-overflow-tooltip\":\"\"},scopedSlots:_vm._u([{key:\"default\",fn:function(scope){return [_c('div',[_vm._v(_vm._s(_vm._f(\"formatDate\")(scope.row.endTime)))])]}}])}),_vm._v(\" \"),_c('el-table-column',{attrs:{\"prop\":\"duration\",\"label\":_vm.lang.EVDetail_Record_duration,\"width\":\"110\",\"align\":\"center\"}}),_vm._v(\" \"),_c('el-table-column',{attrs:{\"prop\":\"addedEnergy\",\"label\":_vm.lang.EVDetail_Record_Energy + \"(\" + (_vm.lang.kwh) + \")\",\"width\":\"220\",\"align\":\"center\"}}),_vm._v(\" \"),_c('el-table-column',{attrs:{\"prop\":\"greenEnergy\",\"label\":_vm.lang.EVDetail_Record_greenEnergy + \"(\" + (_vm.lang.kwh) + \")\",\"width\":\"220\",\"align\":\"center\"}}),_vm._v(\" \"),_c('el-table-column',{attrs:{\"prop\":\"buyEnergy\",\"label\":_vm.lang.EVDetail_Record_buyEnergy + \"(\" + (_vm.lang.kwh) + \")\",\"width\":\"220\",\"align\":\"center\"}}),_vm._v(\" \"),_c('el-table-column',{attrs:{\"prop\":\"endCause\",\"label\":_vm.lang.EVDetail_Record_EndReason,\"width\":\"240\",\"align\":\"center\",\"show-overflow-tooltip\":\"\"}})],1),_vm._v(\" \"),_c('el-pagination',{attrs:{\"current-page\":_vm.currentPage,\"page-size\":12,\"total\":_vm.totalCount,\"hide-on-single-page\":\"\",\"background\":\"\",\"layout\":\"total, prev, pager, next, jumper\"},on:{\"current-change\":_vm.handleCurrentChange}})],1)])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","// 充电模式 0:快速充电 1:pv充电 2:pv+电池混合充电 \r\nexport const CHARGE_MODE_FAST = 0;\r\nexport const CHARGE_MODE_PV = 1;\r\nexport const CHARGE_MODE_PV_BAT = 2;\r\n\r\n// 预约充电模式\r\nexport const SCHEDULE_MODE_MAP = {\r\n 0: 'EVDetail_Status_NotSet',\r\n 1: 'EVDetail_Schedule_Radio_Single',\r\n 2: 'EVDetail_Schedule_Radio_Loop'\r\n}\r\n\r\n// state 车连接状态编码0:断开 1:半连接 2:连接\r\nexport const CAR_CONNECT_STATE_DISCONNECT = 0\r\nexport const CAR_CONNECT_STATE_HALF_CONNECT = 1\r\nexport const CAR_CONNECT_STATE_CONNECTED = 2\r\n\r\n// status\r\n// 空闲 状态 EVDetail_Status_Title_Fault,EVDetail_Status_Title_Offline,EVDetail_Status_Title_Idel,EVDetail_Status_Title_Connect,EVDetail_Status_Title_ToStart\r\nexport const CONNECT_STATUS_IDEL = 'EVDetail_Status_Title_Idel'\r\n// 半连接 桩插枪中\r\nexport const CONNECT_STATUS_CONNECTING = 'EVDetail_Status_Title_Connect'\r\n// 连接 桩插枪中可充电\r\nexport const CONNECT_STATUS_TO_START = 'EVDetail_Status_Title_ToStart'\r\n// 故障 空闲/插枪→跳故障\r\nexport const CONNECT_STATUS_FAULT = 'EVDetail_Status_Title_Fault'\r\nexport const CONNECT_STATUS_OFFLINE = 'EVDetail_Status_Title_Offline'\r\n\r\nexport const CONNECT_STATUS_INFO_MAP = {\r\n [CONNECT_STATUS_IDEL]: {\r\n transKey: 'EVDetail_Status_Title_Idel',\r\n bgColor: '#4EC430',\r\n startBtnDisable: true, // Start置灰,不可点\r\n },\r\n [CONNECT_STATUS_CONNECTING]: {\r\n transKey: 'EVDetail_Status_Title_Connect',\r\n bgColor: '#3874CE',\r\n startBtnDisable: true,\r\n },\r\n [CONNECT_STATUS_TO_START]: {\r\n transKey: 'EVDetail_Status_Title_ToStart',\r\n bgColor: '#03BBD6',\r\n startBtnDisable: false, // Start高亮,可点\r\n },\r\n [CONNECT_STATUS_FAULT]: {\r\n transKey: 'EVDetail_Status_Title_Fault',\r\n bgColor: '#F83B3B',\r\n startBtnDisable: true,\r\n },\r\n [CONNECT_STATUS_OFFLINE]: {\r\n transKey: 'EVDetail_Status_Title_Offline',\r\n bgColor: '#557289',\r\n startBtnDisable: true,\r\n },\r\n}\r\n\r\nexport const STATUS_INFO_MAP = {\r\n // 桩空闲中\r\n '00': {\r\n value: 'Unplugged',\r\n transKey: 'EVDetail_Status_Idel_Stat00',\r\n connectStatus: CONNECT_STATUS_IDEL,\r\n },\r\n '05': {\r\n value: 'Scheduled',\r\n transKey: 'EVDetail_Status_Idel_Stat05',\r\n connectStatus: CONNECT_STATUS_IDEL,\r\n },\r\n '07': {\r\n value: 'Scheduled',\r\n transKey: 'EVDetail_Status_Idel_Stat05',\r\n connectStatus: CONNECT_STATUS_IDEL,\r\n },\r\n '08': {\r\n value: 'In maintenance',\r\n transKey: 'EVDetail_Status_Idel_Stat08',\r\n connectStatus: CONNECT_STATUS_IDEL,\r\n },\r\n '09': {\r\n value: 'Upgrading',\r\n transKey: 'EVDetail_Status_Idel_Stat09',\r\n connectStatus: CONNECT_STATUS_IDEL,\r\n },\r\n\r\n // 桩插枪中\r\n 11: {\r\n value: 'Preparing',\r\n transKey: 'EVDetail_Status_Connect_Stat11',\r\n connectStatus: CONNECT_STATUS_CONNECTING,\r\n },\r\n 12: {\r\n value: 'Charging',\r\n transKey: 'EVDetail_Status_Connect_Stat12',\r\n connectStatus: CONNECT_STATUS_CONNECTING,\r\n },\r\n 18: {\r\n value: 'In maintenance',\r\n transKey: 'EVDetail_Status_Connect_Stat18',\r\n connectStatus: CONNECT_STATUS_CONNECTING,\r\n },\r\n 19: {\r\n value: 'Upgrading',\r\n transKey: 'EVDetail_Status_Connect_Stat19',\r\n connectStatus: CONNECT_STATUS_CONNECTING,\r\n },\r\n\r\n // 桩插枪中可充电\r\n 20: {\r\n value: 'Plugged',\r\n transKey: 'EVDetail_Status_ToStart_Stat10',\r\n connectStatus: CONNECT_STATUS_TO_START,\r\n },\r\n 25: {\r\n value: 'Scheduled',\r\n transKey: 'EVDetail_Status_Connect_Stat15',\r\n connectStatus: CONNECT_STATUS_TO_START,\r\n },\r\n 27: {\r\n value: 'Scheduled',\r\n transKey: 'EVDetail_Status_Connect_Stat15',\r\n connectStatus: CONNECT_STATUS_TO_START,\r\n },\r\n 23: {\r\n value: 'Upgrading',\r\n transKey: 'EVDetail_Status_Connect_Stat13',\r\n connectStatus: CONNECT_STATUS_TO_START,\r\n },\r\n}\r\n\r\n// 抽屉标题\r\nexport const DRAWER_TITLE_MORE = Goodwe.Ops.Resouces.Front['EVDetail_moreSettings'];\r\nexport const DRAWER_TITLE_MODE = Goodwe.Ops.Resouces.Front['EVDetail_ChargeMode_Settings'];\r\nexport const DRAWER_TITLE_SCHEDULED = Goodwe.Ops.Resouces.Front['EVDetail_Schedule_Title'];\r\n\r\n/** unitType设置枚举类 */\r\nexport const UNIT_TYPE_MAP = {\r\n 0: Goodwe.Ops.Resouces.Front['EVDetail_Set_DistanceManage_Unit_km'], // 单位 km\r\n 1: Goodwe.Ops.Resouces.Front['EVDetail_Set_DistanceManage_Unit_miles'] // 单位 miles\r\n}\r\n\r\n/** 限制 Input 输入范围和小数位数\r\n * @param {Object} that 组件实例\r\n * @param {Object} event 事件对象\r\n * @param {Number} digitNum 小数位数\r\n * @param {String} range 范围,格式:min,max\r\n * @param {Number} defaultVal 默认值\r\n * @param {Boolean} canEmpty 可为空\r\n */\r\nexport const validateInput = (that, event, digitNum, range, defaultVal, canEmpty) => {\r\n if(event.target.value === '' && !event.target.validity.valid) { // 如果输入e\r\n event.target.value = null;\r\n return (defaultVal !== undefined && !canEmpty) ? defaultVal : null;\r\n }\r\n if(event.target.value === '') { // 如果输入框为空\r\n event.target.value = null;\r\n return (defaultVal !== undefined && !canEmpty) ? defaultVal : null;\r\n }\r\n let inputVal = event.target.value;\r\n // 清除非数字和小数点之外的字符\r\n inputVal = inputVal.replace(/[^\\d.]/gi, '');\r\n // 将字符串转换为浮点数\r\n let number = parseFloat(inputVal);\r\n // 如果输入的值不是数字或者是 NaN,则返回默认值或空字符串\r\n if(isNaN(number)) {\r\n return (defaultVal !== undefined && !canEmpty) ? defaultVal : null;\r\n }\r\n // 限制小数位数\r\n if(digitNum !== undefined) {\r\n number = parseFloat(number.toFixed(digitNum));\r\n }\r\n // 处理范围限制\r\n if(range !== undefined) {\r\n const [lowerBound, upperBound] = range.split(',').map(parseFloat);\r\n if([lowerBound, upperBound].includes(defaultVal) && number == lowerBound) {\r\n return number.toString();\r\n }\r\n if(number < lowerBound || number > upperBound ||\r\n (number == lowerBound && defaultVal !== lowerBound)\r\n ){\r\n that.$message.error(`${lang.range} [${range}]`);\r\n return (defaultVal !== undefined && !canEmpty) ? defaultVal : null;\r\n }\r\n }\r\n // 返回处理后的值\r\n return number.toString();\r\n}\r\n\r\n/** 单三相切换涉及的SN规格 */\r\nexport const PHASE_SN_CODE = ['011KHPA','022KHPA','011KHSA','022KHSA'];\r\n\r\n","import mod from \"-!../../../../../../../../node_modules/babel-loader/lib/index.js!../../../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ChargingGraph.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../../../../node_modules/babel-loader/lib/index.js!../../../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ChargingGraph.vue?vue&type=script&lang=js&\"","\r\n\r\n","import { render, staticRenderFns } from \"./ChargingGraph.vue?vue&type=template&id=b3d299da&scoped=true&\"\nimport script from \"./ChargingGraph.vue?vue&type=script&lang=js&\"\nexport * from \"./ChargingGraph.vue?vue&type=script&lang=js&\"\nimport style0 from \"./ChargingGraph.vue?vue&type=style&index=0&id=b3d299da&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"b3d299da\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"charging-graph\",style:({backgroundImage:'url('+\"/Images/ev_charger/img_mode_\" + (_vm.graph.chargeMode) + \".png\" +')'})},[([1,2].includes(_vm.graph.state))?_c('img',{staticClass:\"ev-car\",attrs:{\"src\":\"/Images/ev_charger/img_car.png\"}}):_vm._e(),_vm._v(\" \"),_c('div',{staticClass:\"status-wrap\",style:({background: ((_vm.CONNECT_STATUS_INFO_MAP[_vm.graph.status]['bgColor']) + \"26\")})},[_c('div',{staticClass:\"yuan\",style:({background: (\"\" + (_vm.CONNECT_STATUS_INFO_MAP[_vm.graph.status]['bgColor']))})})]),_vm._v(\" \"),(_vm.hasEvName && _vm.graph.name.length > 15)?_c('el-tooltip',{attrs:{\"popper-class\":\"custom-tooltip\",\"effect\":\"light\",\"placement\":\"top\",\"content\":_vm.graph.name}},[(_vm.hasEvName)?_c('div',{staticClass:\"ev-name\",on:{\"click\":function($event){return _vm.goCurrentEvView()}}},[_vm._v(\"\\n \"+_vm._s(_vm.ellipsisName(_vm.graph.name, 15))+\"\\n \")]):_vm._e()]):_vm._e(),_vm._v(\" \"),(_vm.hasEvName && _vm.graph.name.length <= 15)?_c('div',{staticClass:\"ev-name\",on:{\"click\":function($event){return _vm.goCurrentEvView()}}},[_vm._v(\"\\n \"+_vm._s(_vm.graph.name)+\"\\n \")]):_vm._e(),_vm._v(\" \"),_c('el-tooltip',{attrs:{\"popper-class\":\"custom-tooltip\",\"effect\":\"light\",\"placement\":\"left\"}},[_c('div',{staticClass:\"tooltip-ref\"}),_vm._v(\" \"),_c('div',{staticStyle:{\"max-width\":\"300px !important\"},attrs:{\"slot\":\"content\"},slot:\"content\"},[_c('div',{staticClass:\"tool-item\"},[_vm._v(_vm._s(_vm.lang.oName)+\": \"),_c('span',[_vm._v(_vm._s(_vm.graph.name))])]),_vm._v(\" \"),_c('div',{staticClass:\"tool-item\"},[_vm._v(_vm._s(_vm.lang.rmDeviceSn)+\": \"),_c('span',[_vm._v(_vm._s(_vm.graph.sn))])]),_vm._v(\" \"),_c('div',{staticClass:\"tool-item\"},[_vm._v(_vm._s(_vm.lang.pssmInverterStatus)+\":\\n \"),_c('span',{style:({color: (\"\" + (_vm.CONNECT_STATUS_INFO_MAP[_vm.graph.status]['bgColor']))})},[_vm._v(\"\\n \"+_vm._s(_vm.graph.status ? _vm.lang[_vm.graph.status] : '--')+\"\\n \")])]),_vm._v(\" \"),_c('div',{staticClass:\"tool-item\"},[_vm._v(_vm._s(_vm.lang.EVDetail_workstatus)+\":\\n \"),_c('span',{style:({color: (\"\" + (_vm.CONNECT_STATUS_INFO_MAP[_vm.graph.status]['bgColor']))})},[_vm._v(\"\\n \"+_vm._s(_vm.graph.workstatus ? _vm.lang[_vm.graph.workstatus] : '--')+\"\\n \")])]),_vm._v(\" \"),(_vm.graph.status === _vm.CONNECT_STATUS_FAULT)?_c('div',{staticClass:\"tool-item\"},[_vm._v(\"\\n \"+_vm._s(_vm.lang.warning)+\":\\n \"),_c('span',{style:({color: (\"\" + (_vm.CONNECT_STATUS_INFO_MAP[_vm.graph.status]['bgColor']))})},[_vm._v(\"\\n \"+_vm._s(_vm.faultMess)+\"\\n \")])]):_vm._e(),_vm._v(\" \"),_c('div',{staticClass:\"tool-item\"},[_vm._v(_vm._s(_vm.lang.lastUpdate)+\" \\n \"),_c('span',[_vm._v(_vm._s(_vm._f(\"formatDate\")(_vm.graph.lastUpdate)))])])])])],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../../../../node_modules/babel-loader/lib/index.js!./EvChargerOverView.js?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../../../node_modules/babel-loader/lib/index.js!./EvChargerOverView.js?vue&type=script&lang=js&\"","import ChargingGraph from '../EvChargerCurrent/components/ChargingGraph.vue';\r\nexport default {\r\n name: 'EvChargerOverView',\r\n props: {\r\n evList: { type: Array, required: true, },\r\n },\r\n components: {ChargingGraph},\r\n data(){\r\n return {\r\n lang:Goodwe.Ops.Resouces.Front, // 语言包\r\n }\r\n },\r\n methods: {\r\n /** 布局自定义样式 */\r\n computedStyle(n) {\r\n if([1,2].includes(this.evList.length)) {\r\n if(n===1) { return { cTop: 86, cLeft: 460 }}\r\n if(n===2) { return { cTop: 306, cLeft: 180 } }\r\n } else if([3,4].includes(this.evList.length)) {\r\n if(n===1) { return { cTop: 45, cLeft: 407 }}\r\n if(n===2) { return { cTop: 230, cLeft: 180 } }\r\n if(n===3) { return { cTop: 156, cLeft: 644 }}\r\n if(n===4) { return { cTop: 341, cLeft: 417 } }\r\n } else {\r\n if(n===1) { return { cTop: 5, cLeft: 307 }}\r\n if(n===2) { return { cTop: 190, cLeft: 80 } }\r\n if(n % 2 !== 0) {\r\n return {\r\n cTop: 111 * Math.floor(n/2) + 5,\r\n cLeft: 237 * Math.floor(n/2) + 307\r\n }\r\n } else {\r\n return {\r\n cTop: 111 * (n/2 - 1) + 190,\r\n cLeft: 237 *(n/2 - 1) + 80\r\n }\r\n }\r\n }\r\n },\r\n goEvChargerCurrent(ev) {\r\n this.$emit('goEvChargerCurrent', ev);\r\n }\r\n }\r\n}","import { render, staticRenderFns } from \"./EvChargerOverView.vue?vue&type=template&id=cd12dc4e&scoped=true&\"\nimport script from \"./EvChargerOverView.js?vue&type=script&lang=js&\"\nexport * from \"./EvChargerOverView.js?vue&type=script&lang=js&\"\nimport style0 from \"./EvChargerOverView.scss?vue&type=style&index=0&id=cd12dc4e&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"cd12dc4e\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"ev-overview\"},_vm._l((_vm.evList),function(item,index){return _c('div',{key:index,staticClass:\"ev-wrap\",style:({\n top: _vm.computedStyle(index+1)['cTop'] + 'px', \n left: _vm.computedStyle(index+1)['cLeft'] + 'px'\n })},[_c('ChargingGraph',{attrs:{\"has-ev-name\":\"\",\"graph\":item},on:{\"viewEvCharger\":_vm.goEvChargerCurrent}})],1)}),0)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../../../../../node_modules/babel-loader/lib/index.js!../../../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ChargingHistory.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../../../../node_modules/babel-loader/lib/index.js!../../../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ChargingHistory.vue?vue&type=script&lang=js&\"","\r\n\r\n","import { render, staticRenderFns } from \"./ChargingHistory.vue?vue&type=template&id=12b8012d&scoped=true&\"\nimport script from \"./ChargingHistory.vue?vue&type=script&lang=js&\"\nexport * from \"./ChargingHistory.vue?vue&type=script&lang=js&\"\nimport style0 from \"./ChargingHistory.vue?vue&type=style&index=0&id=12b8012d&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"12b8012d\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{directives:[{name:\"loading\",rawName:\"v-loading\",value:(_vm.isLoading),expression:\"isLoading\"}],staticClass:\"charging-history\"},[_c('div',{staticClass:\"charging-chart-title\"},[_vm._v(_vm._s(_vm.lang.EVDetail_histrory_Title))]),_vm._v(\" \"),_c('div',{staticClass:\"date-picker\"},[_c('el-date-picker',{attrs:{\"type\":\"date\",\"size\":\"small\",\"placeholder\":_vm.lang.date,\"format\":_vm.dateFormat,\"editable\":false,\"clearable\":false,\"picker-options\":_vm.pickerOptions},on:{\"change\":function($event){return _vm.getChartData(true)}},model:{value:(_vm.dateVal),callback:function ($$v) {_vm.dateVal=$$v},expression:\"dateVal\"}})],1),_vm._v(\" \"),_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(!_vm.noDataNow),expression:\"!noDataNow\"}],staticClass:\"charging-chart-graph\",style:({width: _vm.onlyOneEv? '656px': '516px'}),attrs:{\"id\":\"historyChart\"}}),_vm._v(\" \"),_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.noDataNow),expression:\"noDataNow\"}],staticClass:\"chart-nodata\"},[_c('img',{attrs:{\"src\":\"/Images/ev_charger/no-data.png\"}})])])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../../../../../node_modules/babel-loader/lib/index.js!../../../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ChargingPower.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../../../../node_modules/babel-loader/lib/index.js!../../../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ChargingPower.vue?vue&type=script&lang=js&\"","\r\n\r\n","import { render, staticRenderFns } from \"./ChargingPower.vue?vue&type=template&id=330c0039&scoped=true&\"\nimport script from \"./ChargingPower.vue?vue&type=script&lang=js&\"\nexport * from \"./ChargingPower.vue?vue&type=script&lang=js&\"\nimport style0 from \"./ChargingPower.vue?vue&type=style&index=0&id=330c0039&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"330c0039\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{directives:[{name:\"loading\",rawName:\"v-loading\",value:(_vm.isLoading),expression:\"isLoading\"}],staticClass:\"charging-power\"},[_c('div',{staticClass:\"charging-chart-title\"},[_vm._v(_vm._s(_vm.lang.EVDetail_EVPower_Title))]),_vm._v(\" \"),_c('div',{staticClass:\"date-picker\"},[_c('el-date-picker',{attrs:{\"type\":\"date\",\"size\":\"small\",\"placeholder\":_vm.lang.date,\"format\":_vm.dateFormat,\"editable\":false,\"clearable\":false,\"picker-options\":_vm.pickerOptions},on:{\"change\":function($event){return _vm.getChartData(true)}},model:{value:(_vm.dateVal),callback:function ($$v) {_vm.dateVal=$$v},expression:\"dateVal\"}})],1),_vm._v(\" \"),_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(!_vm.noDataNow),expression:\"!noDataNow\"}],staticClass:\"charging-chart-graph\",style:({width: _vm.onlyOneEv? '656px': '516px'}),attrs:{\"id\":\"powerChart\"}}),_vm._v(\" \"),_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.noDataNow),expression:\"noDataNow\"}],staticClass:\"chart-nodata\"},[_c('img',{attrs:{\"src\":\"/Images/ev_charger/no-data.png\"}})])])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../../../../../node_modules/babel-loader/lib/index.js!../../../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./MoreSettings.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../../../../node_modules/babel-loader/lib/index.js!../../../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./MoreSettings.vue?vue&type=script&lang=js&\"","\r\n\r\n","import { render, staticRenderFns } from \"./MoreSettings.vue?vue&type=template&id=34366227&scoped=true&\"\nimport script from \"./MoreSettings.vue?vue&type=script&lang=js&\"\nexport * from \"./MoreSettings.vue?vue&type=script&lang=js&\"\nimport style0 from \"./MoreSettings.vue?vue&type=style&index=0&id=34366227&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"34366227\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"drawer-more-settings\"},[_c('div',{staticClass:\"settings-item\"},[_c('span',[_vm._v(_vm._s(_vm.lang.EVDetail_Settings_DLM))]),_vm._v(\" \"),_c('el-tooltip',{attrs:{\"popper-class\":\"custom-wrap-tooltip\",\"effect\":\"dark\",\"placement\":\"top\",\"content\":_vm.lang.EVDetail_Settings_DLM_Tips}},[_c('img',{attrs:{\"src\":\"/Images/ev_charger/icon_yiwen.png\"}})])],1),_vm._v(\" \"),_c('div',{staticClass:\"settings-con\"},[_c('div',{staticClass:\"settings-item\"},[_c('span',[_vm._v(_vm._s(_vm.lang.EVDetail_Settings_DLM))]),_vm._v(\" \"),_c('el-switch',{attrs:{\"active-color\":\"#3874CE\",\"inactive-color\":\"#CCD5E0\"},on:{\"change\":function (val){\n _vm.postApiToSet({dynamicLoad: val ? 1:0 }) \n }},model:{value:(_vm.nowEvInfo.dynamicLoad),callback:function ($$v) {_vm.$set(_vm.nowEvInfo, \"dynamicLoad\", $$v)},expression:\"nowEvInfo.dynamicLoad\"}})],1),_vm._v(\" \"),_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.nowEvInfo.dynamicLoad),expression:\"nowEvInfo.dynamicLoad\"}],staticClass:\"settings-input\"},[_c('p',[_vm._v(_vm._s(_vm.lang.EVDetail_Settings_DLM_Current))]),_vm._v(\" \"),_c('el-input',{attrs:{\"type\":\"number\",\"placeholder\":_vm.lang.siEnter},on:{\"blur\":_vm.handeChangeLimit},model:{value:(_vm.nowEvInfo.currentLimit),callback:function ($$v) {_vm.$set(_vm.nowEvInfo, \"currentLimit\", $$v)},expression:\"nowEvInfo.currentLimit\"}},[_c('template',{slot:\"append\"},[_vm._v(_vm._s(_vm.lang.Current_unit))])],2),_vm._v(\" \"),_c('el-button',{attrs:{\"type\":\"primary\"},on:{\"click\":function($event){return _vm.postApiToSet({currentLimit: _vm.nowEvInfo.currentLimit})}}},[_vm._v(\"\\n \"+_vm._s(_vm.lang.set)+\"\\n \")])],1)]),_vm._v(\" \"),_c('div',{staticClass:\"setting-line\"}),_vm._v(\" \"),_c('div',{staticClass:\"settings-item\"},[_c('span',[_vm._v(_vm._s(_vm.lang.EVDetail_Settings_miniPower))]),_vm._v(\" \"),_c('el-tooltip',{attrs:{\"popper-class\":\"custom-wrap-tooltip\",\"effect\":\"dark\",\"placement\":\"top\",\"content\":_vm.nowEvInfo.ensureMinimumChargingPower ? _vm.lang.EVDetail_Settings_miniPower_Tips1 : _vm.lang.EVDetail_Setting_miniPower_Tips2}},[_c('img',{attrs:{\"src\":\"/Images/ev_charger/icon_yiwen.png\"}})]),_vm._v(\" \"),_c('el-switch',{attrs:{\"active-color\":\"#3874CE\",\"inactive-color\":\"#CCD5E0\"},on:{\"change\":function (val){ \n _vm.postApiToSet({ensureMinimumChargingPower: val ? 1:0}) \n }},model:{value:(_vm.nowEvInfo.ensureMinimumChargingPower),callback:function ($$v) {_vm.$set(_vm.nowEvInfo, \"ensureMinimumChargingPower\", $$v)},expression:\"nowEvInfo.ensureMinimumChargingPower\"}})],1),_vm._v(\" \"),_c('div',{staticClass:\"setting-line\"}),_vm._v(\" \"),(_vm.codeAnalysis(_vm.nowEvInfo.sn, 'Triple Code') === 'HSA')?_c('div',[_c('div',{staticClass:\"settings-item\"},[_c('span',[_vm._v(_vm._s(_vm.lang.EVDetail_Settings_LockCharger))]),_vm._v(\" \"),_c('el-tooltip',{attrs:{\"popper-class\":\"custom-wrap-tooltip\",\"effect\":\"dark\",\"placement\":\"top\",\"content\":_vm.nowEvInfo.lockChargingPlug ? _vm.lang.EVDetail_Settings_LockCharge_Tips1 : _vm.lang.EVDetail_Settings_LockCharge_Tips2}},[_c('img',{attrs:{\"src\":\"/Images/ev_charger/icon_yiwen.png\"}})]),_vm._v(\" \"),_c('el-switch',{attrs:{\"active-color\":\"#3874CE\",\"inactive-color\":\"#CCD5E0\"},on:{\"change\":function (val){ \n _vm.postApiToSet({lockChargingPlug: val ? 1:0}) \n }},model:{value:(_vm.nowEvInfo.lockChargingPlug),callback:function ($$v) {_vm.$set(_vm.nowEvInfo, \"lockChargingPlug\", $$v)},expression:\"nowEvInfo.lockChargingPlug\"}})],1),_vm._v(\" \"),_c('div',{staticClass:\"setting-line\"})]):_vm._e(),_vm._v(\" \"),(_vm.PHASE_SN_CODE.includes(_vm.codeAnalysis(_vm.nowEvInfo.sn, 'Phase Switch')))?_c('div',[_c('div',{staticClass:\"settings-item\"},[_c('span',[_vm._v(_vm._s(_vm.lang.EVDetail_Settings_PhaseSwitch))]),_vm._v(\" \"),_c('el-tooltip',{attrs:{\"popper-class\":\"custom-wrap-tooltip\",\"effect\":\"dark\",\"placement\":\"top\",\"content\":_vm.nowEvInfo.phaseSwitch ? _vm.lang.EVDetail_Settings_PhaseSwitch_Tips1 : _vm.lang.EVDetail_Settings_PhaseSwitch_Tips2}},[_c('img',{attrs:{\"src\":\"/Images/ev_charger/icon_yiwen.png\"}})]),_vm._v(\" \"),_c('el-switch',{attrs:{\"active-color\":\"#3874CE\",\"inactive-color\":\"#CCD5E0\"},on:{\"change\":function (val){\n _vm.postApiToSet({phaseSwitch: val ? 1 : 0}) \n }},model:{value:(_vm.nowEvInfo.phaseSwitch),callback:function ($$v) {_vm.$set(_vm.nowEvInfo, \"phaseSwitch\", $$v)},expression:\"nowEvInfo.phaseSwitch\"}})],1),_vm._v(\" \"),_c('div',{staticClass:\"setting-line\"})]):_vm._e(),_vm._v(\" \"),_c('div',{staticClass:\"settings-item\"},[_c('span',[_vm._v(_vm._s(_vm.lang.EVDetail_Set_DistanceManage))]),_vm._v(\" \"),_c('el-tooltip',{attrs:{\"popper-class\":\"custom-wrap-tooltip\",\"effect\":\"dark\",\"placement\":\"top\",\"content\":_vm.lang.EVDetail_Settings_Tips_DistancekWh}},[_c('img',{attrs:{\"src\":\"/Images/ev_charger/icon_yiwen.png\"}})])],1),_vm._v(\" \"),_c('div',{staticClass:\"settings-con\"},[_c('div',{staticClass:\"settings-input\"},[_c('p',[_vm._v(_vm._s(_vm.lang.EVDetail_Set_DistanceManage_Unit))]),_vm._v(\" \"),_c('el-select',{attrs:{\"placeholder\":_vm.lang.EVDetail_Set_DistanceManage_Msg},model:{value:(_vm.nowEvInfo.unitType),callback:function ($$v) {_vm.$set(_vm.nowEvInfo, \"unitType\", $$v)},expression:\"nowEvInfo.unitType\"}},_vm._l((_vm.options),function(item){return _c('el-option',{key:item.value,attrs:{\"label\":item.label,\"value\":item.value}})}),1)],1),_vm._v(\" \"),_c('div',{staticClass:\"settings-input\"},[_c('p',[_vm._v(_vm._s(_vm.lang.EVDetail_Set_DistanceManage_title))]),_vm._v(\" \"),_c('el-input',{attrs:{\"type\":\"number\",\"placeholder\":_vm.lang.siEnter},on:{\"blur\":_vm.handleFactorChange},model:{value:(_vm.nowEvInfo.factor),callback:function ($$v) {_vm.$set(_vm.nowEvInfo, \"factor\", $$v)},expression:\"nowEvInfo.factor\"}},[_c('template',{slot:\"append\"},[_vm._v(_vm._s(_vm.lang.EVDetail_Set_DistanceManage_perkWh))])],2),_vm._v(\" \"),_c('el-button',{attrs:{\"type\":\"primary\"},on:{\"click\":_vm.postApiDistance}},[_vm._v(\"\\n \"+_vm._s(_vm.lang.set)+\"\\n \")])],1)])])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../../../../../../node_modules/babel-loader/lib/index.js!./ChargingMode.js?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../../../../../node_modules/babel-loader/lib/index.js!./ChargingMode.js?vue&type=script&lang=js&\"","import {CHARGE_MODE_FAST, CHARGE_MODE_PV, CHARGE_MODE_PV_BAT, UNIT_TYPE_MAP, validateInput} from '../../../../../GoodweEvChargerCommon';\r\nexport default {\r\n name: 'ChargingMode',\r\n props: {\r\n currentMode: { type: String, required: false }, // 当前的选中的模式\r\n evInfo: { type: Object, required: true }, // 当前充电桩数据\r\n emitEvent: { type: String, required: false }, // 点击\">\"触发的事件\r\n itemWidth: {type: Number, required: true }, // 充电按钮模式的宽度\r\n panelActive: {type: Boolean, required: false}, // 折叠面板是否展开\r\n panelExpandDisabled: {type: Boolean, required: false}, // 不可点击折叠面板\r\n isScheduled: {type: Boolean, required: false}, // 是否是预约模式设置\r\n },\r\n watch: {\r\n currentMode(val) {\r\n this.nowMode = val;\r\n return val\r\n },\r\n evInfo(info) {\r\n this.nowEvInfo = _.cloneDeep(info);\r\n this.initData();\r\n return info\r\n },\r\n },\r\n data() {\r\n return {\r\n lang:Goodwe.Ops.Resouces.Front, // 语言包\r\n CHARGE_MODE_FAST, CHARGE_MODE_PV, CHARGE_MODE_PV_BAT, UNIT_TYPE_MAP,\r\n chargerModeList: [{\r\n name: lang.EVDetail_ChargeMode_Mode0, val: CHARGE_MODE_FAST, \r\n imgUrl: '/Images/ev_charger/fast.png', imgActive: '/Images/ev_charger/fast_over.png'\r\n },{\r\n name: lang.EVDetail_ChargeMode_Mode1, val: CHARGE_MODE_PV,\r\n imgUrl: '/Images/ev_charger/mode_pv.png', imgActive: '/Images/ev_charger/mode_pv_over.png'\r\n },{\r\n name: lang.EVDetail_ChargeMode_Mode2, val: CHARGE_MODE_PV_BAT, \r\n imgUrl: '/Images/ev_charger/pv_bat.png', imgActive: '/Images/ev_charger/pv_bat_over.png'\r\n }],\r\n nowMode: this.currentMode || CHARGE_MODE_FAST, // 当前充电桩模式(默认Fast)\r\n nowPanelActive: this.panelActive, // 当前是否展开\r\n nowEvInfo: {}, // 当前的配置信息\r\n finishOptions: [\r\n {label: lang.EVDetail_ChargeMode_Finishat_asap, value: 0},\r\n {label: `1 ${lang.EVDetail_unit_hour}`, value: 1},\r\n {label: `2 ${lang.pssmUnitHour}`, value: 2},\r\n {label: `3 ${lang.pssmUnitHour}`, value: 3},\r\n {label: `4 ${lang.pssmUnitHour}`, value: 4},\r\n {label: `5 ${lang.pssmUnitHour}`, value: 5},\r\n {label: `6 ${lang.pssmUnitHour}`, value: 6},\r\n ]\r\n }\r\n },\r\n methods: {\r\n /** 触发点击事件 */\r\n handleEvent() {\r\n switch (this.emitEvent) {\r\n case 'Open_Drawer': { // 打开mode设置抽屉\r\n this.$emit('handleEmit', 'Open_Drawer');\r\n break;\r\n }\r\n case 'Expand_Panel': { // 展开折叠面板\r\n if(this.panelExpandDisabled) return;\r\n this.nowPanelActive = !this.nowPanelActive;\r\n const image = document.querySelector('#Expand_Panel');\r\n image.style.transform = `rotate(${this.nowPanelActive ? '90deg' : '0deg'})`;\r\n const panelDiv = document.querySelector('.panel-item');\r\n panelDiv.style.display = this.nowPanelActive ? 'block':'none';\r\n break;\r\n }\r\n default:\r\n break;\r\n }\r\n },\r\n /** 切换模式 */\r\n changeNowMode(mode) {\r\n this.nowMode = mode;\r\n if(this.nowEvInfo) {\r\n const setKey = !this.isScheduled ? 'chargeMode' : 'schedule_charge_mode';\r\n this.nowEvInfo[setKey] = mode;\r\n }\r\n this.$emit('changeMode', mode);\r\n },\r\n /** 向上提供所有设置数据 */\r\n sendSettingsUp() {\r\n // 如果最小功率大于最大功率,则提示报错\r\n if(!this.isScheduled &&\r\n this.nowMode !== CHARGE_MODE_FAST &&\r\n this.nowEvInfo['minEnergy'] !== null &&\r\n this.nowEvInfo['maxEnergy'] !== null &&\r\n Number(this.nowEvInfo['minEnergy']) > Number(this.nowEvInfo['maxEnergy']))\r\n {\r\n this.$message.error(lang.EVDetail_ChargeMode_MaxEnergy_Msg);\r\n return null\r\n }\r\n // 如果预约最小功率大于最大功率,则提示报错\r\n if(this.isScheduled &&\r\n this.nowMode !== CHARGE_MODE_FAST &&\r\n this.nowEvInfo['scheduleMinEnergy'] !== null &&\r\n this.nowEvInfo['scheduleMaxEnergy'] !== null &&\r\n Number(this.nowEvInfo['scheduleMinEnergy']) > Number(this.nowEvInfo['scheduleMaxEnergy']))\r\n {\r\n this.$message.error(lang.EVDetail_ChargeMode_MaxEnergy_Msg);\r\n return null\r\n }\r\n return this.nowEvInfo\r\n },\r\n /** 计算实时Distances */\r\n calculateDistance(val) {\r\n if(!val) val = 0;\r\n return `${(val*this.nowEvInfo.factor).toFixed(1)} ${UNIT_TYPE_MAP[this.nowEvInfo.unitType]}` \r\n },\r\n /** 当Charging Power输入框失去焦点后 */\r\n handleInputChange(event) {\r\n const setKey = !this.isScheduled ? 'set_charge_power' : 'schedule_charge_power_setted';\r\n this.nowEvInfo[setKey] = validateInput(\r\n this, event, 1,\r\n `${this.nowEvInfo.min_charge_power},${this.nowEvInfo.max_charge_power}`,\r\n this.nowEvInfo.max_charge_power,\r\n );\r\n },\r\n /** 当SOC失去焦点时 */\r\n handleBlurSoc(event) {\r\n const setKey = !this.isScheduled ? 'soc' : 'scheduleSOC';\r\n this.nowEvInfo[setKey] = validateInput(this, event, 0, `0,100`, 0);\r\n },\r\n /** 当Max Energy失去焦点时 */\r\n handeChangeMax(event) {\r\n const setKey = !this.isScheduled ? 'maxEnergy' : 'scheduleMaxEnergy';\r\n this.nowEvInfo[setKey] = validateInput(this, event, 1, `0,10000`, 0, true);\r\n },\r\n /** 当Min Energy失去焦点时 */\r\n handeChangeMin(event) {\r\n const setKey = !this.isScheduled ? 'minEnergy' : 'scheduleMinEnergy';\r\n this.nowEvInfo[setKey] = validateInput(this, event, 1, `0,10000`, 0, true);\r\n },\r\n /** 初始化数据 */\r\n initData() {\r\n this.nowEvInfo = _.cloneDeep(this.evInfo);\r\n if(this.nowEvInfo) {\r\n this.nowMode = this.nowEvInfo['chargeMode'];\r\n if(this.isScheduled && this.nowEvInfo['scheduleMode'] !== '') {\r\n this.nowMode = this.nowEvInfo['schedule_charge_mode'];\r\n }\r\n if(!this.isScheduled && !this.nowEvInfo['set_charge_power']) {\r\n this.nowEvInfo['set_charge_power'] = this.nowEvInfo['max_charge_power'];\r\n }\r\n if(this.isScheduled && !this.nowEvInfo['schedule_charge_power_setted']) {\r\n this.nowEvInfo['schedule_charge_power_setted'] = this.nowEvInfo['max_charge_power'];\r\n }\r\n }\r\n },\r\n },\r\n mounted() {\r\n if(this.panelActive) {\r\n const image = document.querySelector('#Expand_Panel');\r\n image.style.transform = 'rotate(90deg)';\r\n const panelDiv = document.querySelector('.panel-item');\r\n panelDiv.style.display = 'block';\r\n }\r\n this.initData();\r\n }\r\n} ","import { render, staticRenderFns } from \"./ChargingMode.vue?vue&type=template&id=651159da&scoped=true&\"\nimport script from \"./ChargingMode.js?vue&type=script&lang=js&\"\nexport * from \"./ChargingMode.js?vue&type=script&lang=js&\"\nimport style0 from \"./ChargingMode.scss?vue&type=style&index=0&id=651159da&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"651159da\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"charge-mode\"},[_c('div',{staticClass:\"mode-title\",on:{\"click\":_vm.handleEvent}},[_vm._v(\"\\n \"+_vm._s(_vm.isScheduled ? _vm.lang.EVDetail_ChargeMode_Title : _vm.lang.EVCharger_Info_Mode)+\"\\n \"),_c('el-tooltip',{attrs:{\"popper-class\":\"custom-wrap-tooltip\",\"effect\":\"dark\",\"placement\":\"right\",\"content\":_vm.lang.EVDetail_workmode_tip}},[_c('img',{staticClass:\"yiwen-tip\",attrs:{\"src\":\"/Images/ev_charger/icon_yiwen.png\"}})]),_vm._v(\" \"),_c('img',{directives:[{name:\"show\",rawName:\"v-show\",value:(!_vm.panelExpandDisabled),expression:\"!panelExpandDisabled\"}],staticClass:\"next-arrow\",attrs:{\"id\":_vm.emitEvent,\"src\":\"/Images/ev_charger/next_arrow.png\"}})],1),_vm._v(\" \"),_c('div',{staticClass:\"mode-list\"},_vm._l((_vm.chargerModeList),function(mode){return _c('div',{key:mode.val,staticClass:\"mode-item\",class:{'mode-item_active': _vm.nowMode === mode.val},style:({width: (_vm.itemWidth + \"px\")}),on:{\"click\":function($event){return _vm.changeNowMode(mode.val)}}},[_c('div',[_c('img',{attrs:{\"src\":_vm.nowMode === mode.val ? mode.imgActive: mode.imgUrl}})]),_vm._v(\" \"),_c('div',{staticClass:\"mode-text\",style:({color: _vm.nowMode === mode.val ? '#3874CE':'#AAACB7'})},[_vm._v(\"\\n \"+_vm._s(mode.name)+\"\\n \")])])}),0),_vm._v(\" \"),(_vm.emitEvent !== 'Open_Drawer' && _vm.nowPanelActive)?_c('div',{staticClass:\"setting-line\"}):_vm._e(),_vm._v(\" \"),(_vm.emitEvent !== 'Open_Drawer')?_c('div',{staticClass:\"panel-content\"},[_c('div',{staticClass:\"panel-item\"},[(_vm.nowMode === _vm.CHARGE_MODE_FAST)?_c('div',{staticClass:\"input-item\"},[_c('div',{staticClass:\"settings-item\"},[_c('span',[_vm._v(_vm._s(_vm.lang.EVDetail_ChargeMode_Label_ChargPower))]),_vm._v(\" \"),_c('el-tooltip',{attrs:{\"popper-class\":\"custom-wrap-tooltip\",\"effect\":\"dark\",\"placement\":\"right\",\"content\":_vm.lang.EVDetail_ChargeMode_Tip_ChargPower}},[_c('img',{attrs:{\"src\":\"/Images/ev_charger/icon_yiwen.png\"}})])],1),_vm._v(\" \"),(!_vm.isScheduled)?_c('el-input',{attrs:{\"type\":\"number\",\"placeholder\":_vm.lang.siEnter},on:{\"blur\":_vm.handleInputChange},model:{value:(_vm.nowEvInfo.set_charge_power),callback:function ($$v) {_vm.$set(_vm.nowEvInfo, \"set_charge_power\", $$v)},expression:\"nowEvInfo.set_charge_power\"}},[_c('template',{slot:\"append\"},[_vm._v(\"kW\")])],2):_vm._e(),_vm._v(\" \"),(_vm.isScheduled)?_c('el-input',{attrs:{\"type\":\"number\",\"placeholder\":_vm.lang.siEnter},on:{\"blur\":_vm.handleInputChange},model:{value:(_vm.nowEvInfo.schedule_charge_power_setted),callback:function ($$v) {_vm.$set(_vm.nowEvInfo, \"schedule_charge_power_setted\", $$v)},expression:\"nowEvInfo.schedule_charge_power_setted\"}},[_c('template',{slot:\"append\"},[_vm._v(\"kW\")])],2):_vm._e()],1):_vm._e(),_vm._v(\" \"),(_vm.nowMode !== _vm.CHARGE_MODE_PV)?_c('div',{staticClass:\"input-item\"},[_c('div',{staticClass:\"settings-item\"},[_c('span',[_vm._v(_vm._s(_vm.lang.EVDetail_ChargeMode_Label_SOC))]),_vm._v(\" \"),_c('el-tooltip',{attrs:{\"popper-class\":\"custom-wrap-tooltip\",\"effect\":\"dark\",\"placement\":\"right\",\"content\":_vm.nowMode === _vm.CHARGE_MODE_FAST ? _vm.lang.EVDetail_ChargeMode_Tip_SOC1: _vm.lang.EVDetail_ChargeMode_Tip_SOC2}},[_c('img',{attrs:{\"src\":\"/Images/ev_charger/icon_yiwen.png\"}})])],1),_vm._v(\" \"),(!_vm.isScheduled)?_c('el-input',{attrs:{\"type\":\"number\",\"placeholder\":_vm.lang.siEnter},on:{\"blur\":_vm.handleBlurSoc},model:{value:(_vm.nowEvInfo.soc),callback:function ($$v) {_vm.$set(_vm.nowEvInfo, \"soc\", $$v)},expression:\"nowEvInfo.soc\"}},[_c('template',{slot:\"append\"},[_vm._v(\"%\")])],2):_vm._e(),_vm._v(\" \"),(_vm.isScheduled)?_c('el-input',{attrs:{\"type\":\"number\",\"placeholder\":_vm.lang.siEnter},on:{\"blur\":_vm.handleBlurSoc},model:{value:(_vm.nowEvInfo.scheduleSOC),callback:function ($$v) {_vm.$set(_vm.nowEvInfo, \"scheduleSOC\", $$v)},expression:\"nowEvInfo.scheduleSOC\"}},[_c('template',{slot:\"append\"},[_vm._v(\"%\")])],2):_vm._e()],1):_vm._e(),_vm._v(\" \"),(_vm.nowMode !== _vm.CHARGE_MODE_FAST)?_c('div',{staticClass:\"input-item\",staticStyle:{\"margin-bottom\":\"24px\"}},[_c('div',{staticClass:\"settings-item\"},[_c('span',[_vm._v(_vm._s(_vm.lang.EVDetail_ChargeMode_Label_MinEnergy))]),_vm._v(\" \"),_c('el-tooltip',{attrs:{\"popper-class\":\"custom-wrap-tooltip\",\"effect\":\"dark\",\"placement\":\"right\",\"content\":_vm.lang.EVDetail_ChargeMode_Tip_MinEnergy}},[_c('img',{attrs:{\"src\":\"/Images/ev_charger/icon_yiwen.png\"}})])],1),_vm._v(\" \"),(!_vm.isScheduled)?_c('el-input',{attrs:{\"type\":\"number\",\"placeholder\":_vm.lang.siEnter},on:{\"blur\":_vm.handeChangeMin},model:{value:(_vm.nowEvInfo.minEnergy),callback:function ($$v) {_vm.$set(_vm.nowEvInfo, \"minEnergy\", $$v)},expression:\"nowEvInfo.minEnergy\"}},[_c('template',{slot:\"append\"},[_vm._v(\"kWh\")])],2):_vm._e(),_vm._v(\" \"),(_vm.isScheduled)?_c('el-input',{attrs:{\"type\":\"number\",\"placeholder\":_vm.lang.siEnter},on:{\"blur\":_vm.handeChangeMin},model:{value:(_vm.nowEvInfo.scheduleMinEnergy),callback:function ($$v) {_vm.$set(_vm.nowEvInfo, \"scheduleMinEnergy\", $$v)},expression:\"nowEvInfo.scheduleMinEnergy\"}},[_c('template',{slot:\"append\"},[_vm._v(\"kWh\")])],2):_vm._e(),_vm._v(\" \"),_c('div',{staticClass:\"distance-driving\"},[_c('img',{attrs:{\"src\":\"/Images/ev_charger/img_juli.png\"}}),_vm._v(\"\\n \"+_vm._s(_vm.lang.EVDetail_ChargeMode_Description_Energy)+\"\\n \"+_vm._s(_vm.calculateDistance(!_vm.isScheduled ? _vm.nowEvInfo.minEnergy : _vm.nowEvInfo.scheduleMinEnergy))+\"\\n \")]),_vm._v(\" \"),((!_vm.isScheduled && _vm.nowEvInfo.minEnergy !== '' && _vm.nowEvInfo.minEnergy !== null) \n || (_vm.isScheduled && _vm.nowEvInfo.scheduleMinEnergy !== '' && _vm.nowEvInfo.scheduleMinEnergy !== null))?_c('div',{staticClass:\"finished-at-select\"},[_c('div',{staticClass:\"settings-item\",staticStyle:{\"margin-top\":\"0\"}},[_c('span',[_vm._v(_vm._s(_vm.lang.EVDetail_ChargeMode_Label_Finish))])]),_vm._v(\" \"),(!_vm.isScheduled)?_c('el-select',{attrs:{\"placeholder\":_vm.lang.pssmPleaseSelect},model:{value:(_vm.nowEvInfo.finishTime),callback:function ($$v) {_vm.$set(_vm.nowEvInfo, \"finishTime\", $$v)},expression:\"nowEvInfo.finishTime\"}},_vm._l((_vm.finishOptions),function(item){return _c('el-option',{key:item.value,attrs:{\"label\":item.label,\"value\":item.value}})}),1):_vm._e(),_vm._v(\" \"),(_vm.isScheduled)?_c('el-select',{attrs:{\"placeholder\":_vm.lang.pssmPleaseSelect},model:{value:(_vm.nowEvInfo.scheduleFinishTime),callback:function ($$v) {_vm.$set(_vm.nowEvInfo, \"scheduleFinishTime\", $$v)},expression:\"nowEvInfo.scheduleFinishTime\"}},_vm._l((_vm.finishOptions),function(item){return _c('el-option',{key:item.value,attrs:{\"label\":item.label,\"value\":item.value}})}),1):_vm._e()],1):_vm._e()],1):_vm._e(),_vm._v(\" \"),_c('div',{staticClass:\"input-item\"},[_c('div',{staticClass:\"settings-item\"},[_c('span',[_vm._v(_vm._s(_vm.lang.EVDetail_ChargeMode_Label_MaxEnergy))]),_vm._v(\" \"),_c('el-tooltip',{attrs:{\"popper-class\":\"custom-wrap-tooltip\",\"effect\":\"dark\",\"placement\":\"right\",\"content\":_vm.lang.EVDetail_ChargeMode_Tip_MaxEnergy}},[_c('img',{attrs:{\"src\":\"/Images/ev_charger/icon_yiwen.png\"}})])],1),_vm._v(\" \"),(!_vm.isScheduled)?_c('el-input',{attrs:{\"type\":\"number\",\"placeholder\":_vm.lang.siEnter},on:{\"blur\":_vm.handeChangeMax},model:{value:(_vm.nowEvInfo.maxEnergy),callback:function ($$v) {_vm.$set(_vm.nowEvInfo, \"maxEnergy\", $$v)},expression:\"nowEvInfo.maxEnergy\"}},[_c('template',{slot:\"append\"},[_vm._v(\"kWh\")])],2):_vm._e(),_vm._v(\" \"),(_vm.isScheduled)?_c('el-input',{attrs:{\"type\":\"number\",\"placeholder\":_vm.lang.siEnter},on:{\"blur\":_vm.handeChangeMax},model:{value:(_vm.nowEvInfo.scheduleMaxEnergy),callback:function ($$v) {_vm.$set(_vm.nowEvInfo, \"scheduleMaxEnergy\", $$v)},expression:\"nowEvInfo.scheduleMaxEnergy\"}},[_c('template',{slot:\"append\"},[_vm._v(\"kWh\")])],2):_vm._e(),_vm._v(\" \"),_c('div',{staticClass:\"distance-driving\"},[_c('img',{attrs:{\"src\":\"/Images/ev_charger/img_juli.png\"}}),_vm._v(\" \\n \"+_vm._s(_vm.lang.EVDetail_ChargeMode_Description_Energy)+\"\\n \"+_vm._s(_vm.calculateDistance(!_vm.isScheduled ? _vm.nowEvInfo.maxEnergy : _vm.nowEvInfo.scheduleMaxEnergy))+\"\\n \")])],1)])]):_vm._e()])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../../../../../node_modules/babel-loader/lib/index.js!../../../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ModeSettings.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../../../../node_modules/babel-loader/lib/index.js!../../../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ModeSettings.vue?vue&type=script&lang=js&\"","\r\n\r\n","import { render, staticRenderFns } from \"./ModeSettings.vue?vue&type=template&id=2a72f989&scoped=true&\"\nimport script from \"./ModeSettings.vue?vue&type=script&lang=js&\"\nexport * from \"./ModeSettings.vue?vue&type=script&lang=js&\"\nimport style0 from \"./ModeSettings.vue?vue&type=style&index=0&id=2a72f989&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"2a72f989\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"drawer-mode-settings\"},[_c('ChargingMode',{ref:\"chargingModeRef\",attrs:{\"itemWidth\":150,\"panel-active\":\"\",\"panel-expand-disabled\":\"\",\"currentMode\":_vm.currentMode,\"evInfo\":_vm.nowEvInfo,\"emitEvent\":'Expand_Panel'},on:{\"changeMode\":_vm.handleChangeMode}})],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../../../../../node_modules/babel-loader/lib/index.js!../../../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ScheduledSettings.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../../../../node_modules/babel-loader/lib/index.js!../../../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ScheduledSettings.vue?vue&type=script&lang=js&\"","\r\n\r\n","import { render, staticRenderFns } from \"./ScheduledSettings.vue?vue&type=template&id=0d05f7d4&scoped=true&\"\nimport script from \"./ScheduledSettings.vue?vue&type=script&lang=js&\"\nexport * from \"./ScheduledSettings.vue?vue&type=script&lang=js&\"\nimport style0 from \"./ScheduledSettings.vue?vue&type=style&index=0&id=0d05f7d4&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"0d05f7d4\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"drawer-scheduled-settings\"},[_c('el-scrollbar',{staticStyle:{\"height\":\"calc(100% - 60px)\",\"width\":\"100%\"},attrs:{\"wrap-class\":'el-gw-scroll'}},[_c('div',{staticClass:\"settings-item\",staticStyle:{\"margin-top\":\"0\"}},[_vm._v(_vm._s(_vm.lang.selectTime))]),_vm._v(\" \"),_c('el-time-picker',{attrs:{\"format\":\"HH:mm\",\"placeholder\":_vm.lang.EVDetail_Scheduled_Label_Start},on:{\"change\":_vm.changeTimeStart},model:{value:(_vm.timeVal[0]),callback:function ($$v) {_vm.$set(_vm.timeVal, 0, $$v)},expression:\"timeVal[0]\"}}),_vm._v(\" \"),_c('span',{staticStyle:{\"margin\":\"0 9px\"}},[_vm._v(\" - \")]),_vm._v(\" \"),_c('el-time-picker',{attrs:{\"format\":\"HH:mm\",\"placeholder\":_vm.lang.EVDetail_Scheduled_Label_End},on:{\"change\":_vm.changeTimeEnd},model:{value:(_vm.timeVal[1]),callback:function ($$v) {_vm.$set(_vm.timeVal, 1, $$v)},expression:\"timeVal[1]\"}}),_vm._v(\" \"),_c('div',{staticClass:\"setting-line\"}),_vm._v(\" \"),_c('div',{staticClass:\"settings-item\"},[_vm._v(_vm._s(_vm.lang.repeat))]),_vm._v(\" \"),_c('div',{staticClass:\"repeat-mode\"},_vm._l((_vm.repeatMode),function(item){return _c('div',{key:item.value,staticClass:\"repeat-item\",class:{ 'repeat-item-active': _vm.deepEvInfo.scheduleMode === item.value },on:{\"click\":function($event){_vm.deepEvInfo.scheduleMode = item.value}}},[_vm._v(\"\\n \"+_vm._s(item.label)+\"\\n \")])}),0),_vm._v(\" \"),_c('div',{staticClass:\"setting-line\"}),_vm._v(\" \"),_c('ChargingMode',{ref:\"chargingModeRef\",attrs:{\"itemWidth\":150,\"evInfo\":_vm.deepEvInfo,\"is-scheduled\":\"\",\"currentMode\":_vm.currentMode,\"emitEvent\":'Expand_Panel'}}),_vm._v(\" \"),_c('div',{staticClass:\"setting-line\"})],1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../../../../node_modules/babel-loader/lib/index.js!./EvChargerCurrent.js?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../../../node_modules/babel-loader/lib/index.js!./EvChargerCurrent.js?vue&type=script&lang=js&\"","import ChargingHistory from './components/ChargingHistory.vue';\r\nimport ChargingPower from './components/ChargingPower.vue';\r\nimport ChargingGraph from './components/ChargingGraph.vue';\r\nimport MoreSettings from './drawer_parts/MoreSettings.vue';\r\nimport ModeSettings from './drawer_parts/ModeSettings.vue';\r\nimport ScheduledSettings from './drawer_parts/ScheduledSettings.vue';\r\nimport ChargingMode from './components/ChargingMode/ChargingMode.vue';\r\nimport {CHARGE_MODE_FAST, CHARGE_MODE_PV, CHARGE_MODE_PV_BAT,\r\n CONNECT_STATUS_INFO_MAP, SCHEDULE_MODE_MAP,\r\n DRAWER_TITLE_MORE, DRAWER_TITLE_MODE, DRAWER_TITLE_SCHEDULED,\r\n CONNECT_STATUS_FAULT,CONNECT_STATUS_CONNECTING,\r\n CONNECT_STATUS_TO_START\r\n} from '../../../GoodweEvChargerCommon';\r\nexport default {\r\n name: 'EvChargerCurrent',\r\n props: {\r\n evCharger: { type: String, required: true, }, // 传来的充电桩信息\r\n onlyOneEv: { type: Boolean, required: true, }, // 是否只有一个充电桩\r\n localDate: { type: String, required: true }, // 本地时间\r\n },\r\n components: {\r\n ChargingHistory, ChargingPower, ChargingGraph, ChargingMode,\r\n MoreSettings, ModeSettings, ScheduledSettings\r\n },\r\n watch:{\r\n evCharger(info) {\r\n this.getEVChargerDataBySN(info.sn);\r\n this.mqttEnableSubscribe();\r\n return info\r\n }\r\n },\r\n data(){\r\n return {\r\n lang:Goodwe.Ops.Resouces.Front, // 语言包\r\n currentEvInfo: this.evCharger, // 当前充电桩信息\r\n CHARGE_MODE_FAST, CHARGE_MODE_PV, CHARGE_MODE_PV_BAT,\r\n CONNECT_STATUS_INFO_MAP, SCHEDULE_MODE_MAP,\r\n DRAWER_TITLE_MORE, DRAWER_TITLE_MODE, DRAWER_TITLE_SCHEDULED,\r\n chargerInfo: [\r\n {name: lang.EVCharger_Stat_CurrentPower, val: '--', unit: 'kW', \r\n imgUrl: '/Images/ev_charger/img_Chargepower.png'},\r\n {name: lang.EVCharger_Stat_ChargeCurrent, val: '--', unit: 'A', \r\n imgUrl: '/Images/ev_charger/img_Chargecurrent.png'},\r\n {name: lang.EVDetail_Record_Energy, val: '--', unit: 'kWh', \r\n imgUrl: '/Images/ev_charger/img_Chargeenergy.png'},\r\n {name: `${lang._charge} ${lang.time}`, val: '--', unit: 'min', \r\n imgUrl: '/Images/ev_charger/img_Chargetime.png'},\r\n {name: lang.EVDetail_Import_Power, val: '--', unit: 'kW',\r\n imgUrl: '/Images/ev_charger/img_Chargelimit.png'}\r\n ],\r\n currentMode: CHARGE_MODE_FAST, // 当前充电桩模式(默认Fast)\r\n drawer: false, // 抽屉显示、隐藏\r\n drawerTitle: '', // 抽屉标题\r\n isDrawerLoading: false, // 是否抽屉正在加载数据\r\n mqttClient: null // MQTT 客户端实例\r\n }\r\n },\r\n computed: {\r\n /** 是否正在充电 */\r\n isCharging() {\r\n return [2,3,10].includes(this.currentEvInfo['workstate'])\r\n },\r\n /** 是否禁用开始充电按钮 */\r\n chargingDisible() {\r\n if(!this.isCharging && this.currentEvInfo['chargedNow']) {\r\n return true\r\n }\r\n if(this.currentEvInfo['status'] === CONNECT_STATUS_FAULT) {\r\n return ![4, 10].includes(this.currentEvInfo['workstate'])\r\n }\r\n if(this.currentEvInfo['status'] === CONNECT_STATUS_CONNECTING) {\r\n return ![2].includes(this.currentEvInfo['workstate'])\r\n }\r\n // if(this.currentEvInfo['status'] === CONNECT_STATUS_TO_START) {\r\n // return ![3].includes(this.currentEvInfo['workstate'])\r\n // }\r\n return CONNECT_STATUS_INFO_MAP[this.currentEvInfo.status]['startBtnDisable']\r\n },\r\n },\r\n filters: {\r\n formatDate(v){\r\n if (!v && v != \"0\") {\r\n return \"--\"\r\n } else {\r\n return dayjs(v).format(`${dateFormatSems} HH:mm:ss`)\r\n }\r\n },\r\n formatVersion(s) {\r\n if(!s) { return '--' }\r\n const str = s.split(\"\");\r\n if (str.length <= 2) {\r\n return \"v\" + s;\r\n } else {\r\n str.splice(1, 0, \".\");\r\n str.splice(3, 0, \".\");\r\n return \"v\" + str.join(\"\");\r\n }\r\n },\r\n foramtStatus(v) {\r\n return v ? lang.EVCharger_Status_Connected : lang.EVCharger_Status_Disconnected\r\n }\r\n },\r\n methods: {\r\n /** 响应点击事件 */\r\n responseEvent(event) {\r\n if(event === 'Open_Drawer') {\r\n this.openDraw('Mode');\r\n }\r\n },\r\n /** 打开抽屉 */\r\n openDraw(type) {\r\n this.drawer = true;\r\n this.mqttEndSubscribe(); // 打开抽屉时关闭mqtt订阅\r\n switch (type) {\r\n case 'More': {\r\n this.drawerTitle = DRAWER_TITLE_MORE;\r\n break;\r\n }\r\n case 'Mode': {\r\n this.drawerTitle = DRAWER_TITLE_MODE;\r\n break;\r\n }\r\n case 'Scheduled': {\r\n this.drawerTitle = DRAWER_TITLE_SCHEDULED;\r\n break;\r\n }\r\n default:\r\n break;\r\n }\r\n },\r\n /** 改变模式 */\r\n handleChangeMode(mode) {\r\n this.currentMode = mode;\r\n },\r\n /** 关闭抽屉 */\r\n closeDrawer() {\r\n this.$refs.myDrawer.closeDrawer();\r\n },\r\n /** 保存然后关闭抽屉 */\r\n saveAndSubmit() {\r\n switch(this.drawerTitle) {\r\n case DRAWER_TITLE_MODE:{\r\n this.$refs.modeSetRef.handleSubmit();\r\n break;\r\n }\r\n case DRAWER_TITLE_SCHEDULED:{\r\n this.$refs.scheduledSetRef.handleSubmit();\r\n break;\r\n }\r\n }\r\n },\r\n /** 启停充电桩 */\r\n handleEvBtn() {\r\n this.setSpecialPost({\r\n needClose: true,\r\n apiUrl: this.isCharging ? 'v4/EvCharger/StopCharging':'v4/EvCharger/StartCharging',\r\n param: {sn: this.currentEvInfo['sn'], mode: this.currentMode}\r\n })\r\n },\r\n /** 即插即用开关设置 */\r\n changeChargeNow(val){\r\n this.setEvChargerData({chargedNow: val ? 1 : 0});\r\n },\r\n /** 单桩设置 */\r\n setEvChargerData(param) {\r\n if(this.drawer) this.isDrawerLoading = true;\r\n if(!this.drawer) loading.showLoading();\r\n common.post('/v4/EvCharger/SetChargeConfig', \r\n {sn: this.currentEvInfo['sn'], ...param}).success(function(res){\r\n if(res.data) {\r\n this.$message({ message: lang.operate_succss, type: 'success'});\r\n }\r\n }.bind(this)).fail(function(fail){\r\n this.$message.error(lang[fail.msg]);\r\n }.bind(this)).all(function(){\r\n loading.disLoading();\r\n this.isDrawerLoading = false;\r\n this.$emit('setHandleSucces', {\r\n flag: true, // 设置结束标识\r\n curSn: this.currentEvInfo['sn'], // 当前设置的充电桩SN\r\n isDrawer: this.drawer, // 是否是抽屉里的设置\r\n });\r\n }.bind(this));\r\n },\r\n /** 指定设置单桩接口通用调用 \r\n * @param {Boolean} needClose 此时抽屉是否需要关闭\r\n * @param {String} apiUrl 指定调用的接口api地址\r\n * @param {Object} param 指定调用的接口所需参数\r\n */\r\n setSpecialPost(val) {\r\n if(!val.needClose) this.isDrawerLoading = true;\r\n if(val.needClose) loading.showLoading();\r\n if(val.needClose && this.drawer) this.closeDrawer();\r\n common.post(val.apiUrl, val.param).success(function(res){\r\n if(res.data) {\r\n this.$message({ message: lang.operate_succss, type: 'success'});\r\n }\r\n }.bind(this)).fail(function(fail){\r\n this.$message.error(lang[fail.msg]);\r\n }.bind(this)).all(function(){\r\n loading.disLoading();\r\n this.isDrawerLoading = false;\r\n this.$emit('setHandleSucces', {\r\n flag: true, // 设置结束标识\r\n curSn: this.currentEvInfo['sn'], // 当前设置的充电桩SN\r\n isDrawer: this.drawer, // 是否是抽屉里的设置\r\n });\r\n }.bind(this));\r\n },\r\n /** 清除预约充电 */\r\n cleanSchedule() {\r\n this.$confirm(lang.EVDetail_Msg_ClearContent, lang.EVDetail_Msg_Clear, {\r\n confirmButtonText: lang.cpt_confirm,\r\n cancelButtonText: lang.pssmCancel,\r\n type: 'warning'\r\n }).then(() => {\r\n this.setSpecialPost({\r\n needClose: true,\r\n apiUrl: 'v4/EvCharger/CancelScheduledCharge', // 清除预约充电接口\r\n param: {sn: this.currentEvInfo['sn']}\r\n });\r\n }).catch(() => {\r\n });\r\n },\r\n /** 根据SN查询充电桩数据 */\r\n getEVChargerDataBySN(evSn, flag) {\r\n flag && loading.showLoading();\r\n common.post('/v4/EvCharger/GetEvChargerAloneViewBySn',\r\n { sn: evSn }).success(function(res){\r\n if(res.data) {\r\n console.log(res.data);\r\n this.currentEvInfo = _.cloneDeep(res.data);\r\n this.chargerInfo[0]['val'] = res.data['power'] || '0'; // 充电功率\r\n this.chargerInfo[1]['val'] = res.data['current'] || '0'; // 充电电流\r\n this.chargerInfo[2]['val'] = res.data['chargeEnergy'] || '0'; // 充电能量\r\n this.chargerInfo[3]['val'] = (res.data['time'] !== '0' && res.data['time'])\r\n ? (Math.round(res.data['time'] / 60 * 100) / 100).toFixed(2): '0'; // 充电时间\r\n this.chargerInfo[4]['val'] = res.data['importPowerLimit'] || '0'; // 导入功率限制\r\n this.currentMode = res.data['chargeMode']; // 充电模式\r\n this.localDate = res.data['local_date']; // 本机时间\r\n this.currentEvInfo['chargedNow'] = Boolean(this.currentEvInfo['chargedNow']);\r\n this.currentEvInfo['alwaysReInitiate'] = Boolean(this.currentEvInfo['alwaysReInitiate']);\r\n }\r\n }.bind(this)).fail(function(fail){\r\n this.$message.error(fail.msg);\r\n }.bind(this)).all(function(){\r\n loading.disLoading();\r\n }.bind(this))\r\n },\r\n /** 根据小时分钟拆成时间范围 */\r\n formatTimeRange(startHour, startMinute, interval) {\r\n // 计算结束时间的小时和分钟\r\n let endTotalMinutes = (startHour * 60 + startMinute + interval) % 1440; // 转换为总分钟数并取余\r\n let endHour = Math.floor(endTotalMinutes / 60); // 计算小时\r\n let endMinute = endTotalMinutes % 60; // 计算分钟\r\n // 格式化起始时间和结束时间\r\n const formattedStartTime = `${String(startHour).padStart(2, '0')}:${String(startMinute).padStart(2, '0')}`;\r\n const formattedEndTime = `${String(endHour).padStart(2, '0')}:${String(endMinute).padStart(2, '0')}`;\r\n // 构建最终结果字符串\r\n return `${formattedStartTime} - ${formattedEndTime}`;\r\n },\r\n /** 启用mqtt订阅 */\r\n mqttEnableSubscribe() {\r\n this.mqttEndSubscribe();\r\n const options = {\r\n username: \"goodwe\", // 用户名\r\n password: \"goodwe123\", // 密码\r\n protocol: mqttUrl.includes(\"wss\") ? 'wss':'ws',\r\n reconnectPeriod: 1500 // 自动重连的时间间隔(毫秒)\r\n };\r\n // 创建 MQTT 客户端实例\r\n this.mqttClient = mqtt.connect(mqttUrl, options);\r\n // 连接成功时的回调函数\r\n this.mqttClient.on('connect', () => {\r\n console.log('MQTT 连接已建立, 当前订阅的SN:' + this.evCharger['sn']);\r\n // 订阅主题\r\n this.mqttClient.subscribe(`/sems/event/chargingPile/${this.evCharger['sn']}`);\r\n });\r\n // 接收到消息时的回调函数\r\n this.mqttClient.on('message', (topic, message) => {\r\n console.log('接收到MQTT消息,准备刷新' + this.evCharger['sn'] + '桩的数据');\r\n this.getEVChargerDataBySN(this.evCharger['sn']);\r\n });\r\n },\r\n /** 停止mqtt订阅 */\r\n mqttEndSubscribe() {\r\n if(this.mqttClient) {\r\n this.mqttClient.end();\r\n this.mqttClient = null;\r\n console.log('MQTT 连接已关闭');\r\n }\r\n },\r\n /** 抽屉弹框关闭后重启mqtt订阅 */\r\n drawerClosed() {\r\n this.mqttEnableSubscribe();\r\n },\r\n },\r\n mounted() {\r\n this.getEVChargerDataBySN(this.evCharger['sn'],true);\r\n },\r\n created() {\r\n this.mqttEnableSubscribe();\r\n },\r\n beforeDestroy() {\r\n this.mqttEndSubscribe();\r\n }\r\n}","import { render, staticRenderFns } from \"./EvChargerCurrent.vue?vue&type=template&id=7e6ae5c4&scoped=true&\"\nimport script from \"./EvChargerCurrent.js?vue&type=script&lang=js&\"\nexport * from \"./EvChargerCurrent.js?vue&type=script&lang=js&\"\nimport style0 from \"./EvChargerCurrent.scss?vue&type=style&index=0&id=7e6ae5c4&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"7e6ae5c4\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"ev-current\"},[_c('div',{staticClass:\"ev-current-baseInfo\"},[_c('div',{staticClass:\"baseInfo-name\"},[_c('img',{attrs:{\"src\":\"/Images/ev_charger/img_evcharger.png\"}}),_vm._v(\"\\n \"+_vm._s(_vm.currentEvInfo.name)+\"\\n \")]),_vm._v(\" \"),_c('div',{staticClass:\"baseInfo-detail\"},[_c('div',{staticClass:\"detail-item\",staticStyle:{\"width\":\"20%\"}},[_c('span',[_vm._v(_vm._s(_vm.lang.DeviceList_EV_Status_Title))]),_vm._v(\" \"),_c('span',{style:({color: _vm.CONNECT_STATUS_INFO_MAP[_vm.currentEvInfo.status]['bgColor']})},[_vm._v(\"\\n \"+_vm._s((\"\" + (_vm.lang[_vm.currentEvInfo.status])))+\"\\n \"+_vm._s(_vm.currentEvInfo.workstatus ? (\"(\" + (_vm.lang[_vm.currentEvInfo.workstatus]) + \")\"):'')+\"\\n \")])]),_vm._v(\" \"),_c('div',{staticClass:\"detail-item\",staticStyle:{\"width\":\"22%\"}},[_c('span',[_vm._v(_vm._s(_vm.lang.DeviceList_EV_SN_Title)+\": \")]),_vm._v(_vm._s(_vm.currentEvInfo.sn)+\"\\n \")]),_vm._v(\" \"),_c('div',{staticClass:\"detail-item\",staticStyle:{\"width\":\"15%\",\"text-align\":\"center\"}},[_c('span',[_vm._v(_vm._s(_vm.lang.DeviceList_EV_Model_Title)+\": \")]),_vm._v(_vm._s(_vm.currentEvInfo.model || '--')+\"\\n \")]),_vm._v(\" \"),_c('div',{staticClass:\"detail-item\",staticStyle:{\"width\":\"18%\",\"text-align\":\"center\"}},[_c('span',[_vm._v(_vm._s(_vm.lang.DeviceList_EV_Firmware_Title)+\": \")]),_vm._v(_vm._s(_vm._f(\"formatVersion\")(_vm.currentEvInfo.fireware))+\"\\n \")]),_vm._v(\" \"),_c('div',{staticClass:\"detail-item\",staticStyle:{\"width\":\"25%\",\"text-align\":\"center\"}},[_c('span',[_vm._v(_vm._s(_vm.lang.DeviceList_EV_LastUpdate_Title)+\": \")]),_vm._v(_vm._s(_vm._f(\"formatDate\")(_vm.currentEvInfo.lastUpdate))+\"\\n \")]),_vm._v(\" \"),_c('div',{staticClass:\"detail-item\",staticStyle:{\"width\":\"20%\",\"margin-top\":\"8px\"}},[_c('span',[_vm._v(_vm._s(_vm.lang.EVCharger_Inverter)+\": \")]),_vm._v(\" \"),_c('span',{style:({color: _vm.currentEvInfo.inverterConnectionStatus ? '#3874CE':'#557289'})},[_vm._v(\"\\n \"+_vm._s(_vm._f(\"foramtStatus\")(_vm.currentEvInfo.inverterConnectionStatus))+\"\\n \")])]),_vm._v(\" \"),_c('div',{staticClass:\"detail-item\",staticStyle:{\"width\":\"32%\",\"margin-top\":\"8px\"}},[_c('span',[_vm._v(_vm._s(_vm.lang.EVCharger_MID)+\": \")]),_vm._v(\" \"),_c('span',{style:({color: _vm.currentEvInfo.midConnectionStatus ? '#3874CE':'#557289'})},[_vm._v(\"\\n \"+_vm._s(_vm._f(\"foramtStatus\")(_vm.currentEvInfo.midConnectionStatus))+\"\\n \")])])])]),_vm._v(\" \"),_c('div',{staticClass:\"ev-between\"}),_vm._v(\" \"),_c('div',{staticClass:\"ev-main-con\"},[_c('div',{staticClass:\"main-con-left\",style:({ width: _vm.onlyOneEv ? '750px' : '624px' })},[_c('div',{staticClass:\"charge-settings\"},[_c('div',{staticClass:\"setting-target\"},[_c('div',{staticClass:\"four-box\"},_vm._l((_vm.chargerInfo),function(item){return _c('div',{key:item.name,staticClass:\"box-item\"},[_c('div',{staticClass:\"target-value\"},[_vm._v(\"\\n \"+_vm._s(item.val)+\" \\n \"),_c('span',[_vm._v(_vm._s(item.unit))])]),_vm._v(\" \"),_c('div',{staticClass:\"target-name\"},[_vm._v(_vm._s(item.name))]),_vm._v(\" \"),_c('img',{attrs:{\"src\":item.imgUrl,\"alt\":\"\"}})])}),0),_vm._v(\" \"),_c('div',{staticClass:\"more-setting\",on:{\"click\":function($event){return _vm.openDraw('More')}}},[_c('img',{attrs:{\"src\":\"/Images/ev_charger/icon_settings.png\",\"alt\":\"\"}}),_vm._v(\"\\n \"+_vm._s(_vm.lang.EVDetail_moreSettings)+\"\\n \")]),_vm._v(\" \"),_c('div',{staticClass:\"charger-now\"},[_c('div',{staticClass:\"charger-now-title\"},[_vm._v(_vm._s(_vm.lang.EVDetail_ChargeSettings_Title))]),_vm._v(\" \"),_c('div',{staticClass:\"charger-now-switch\"},[_c('div',{staticClass:\"now-charge\"},[_vm._v(\"\\n \"+_vm._s(_vm.lang.EVDetail_ChargePlug_Title)+\"\\n \"),_c('el-tooltip',{attrs:{\"popper-class\":\"custom-wrap-tooltip\",\"effect\":\"dark\",\"placement\":\"right\",\"content\":_vm.lang.EVDetail_autostart_tip}},[_c('img',{attrs:{\"src\":\"/Images/ev_charger/icon_yiwen.png\"}})])],1),_vm._v(\" \"),_c('el-switch',{attrs:{\"active-color\":\"#3874CE\",\"inactive-color\":\"#CCD5E0\"},on:{\"change\":_vm.changeChargeNow},model:{value:(_vm.currentEvInfo.chargedNow),callback:function ($$v) {_vm.$set(_vm.currentEvInfo, \"chargedNow\", $$v)},expression:\"currentEvInfo.chargedNow\"}})],1)])]),_vm._v(\" \"),_c('div',{staticClass:\"setting-status\",style:({marginLeft: _vm.onlyOneEv ? '73px':'16px'})},[_c('div',{staticClass:\"status-img\"},[_c('ChargingGraph',{attrs:{\"graph\":_vm.currentEvInfo}})],1),_vm._v(\" \"),_c('el-button',{staticClass:\"status-btn\",class:{\n 'btn-start': !_vm.isCharging,\n 'btn-stop': _vm.isCharging,\n 'btn-disabled': _vm.chargingDisible\n },attrs:{\"type\":\"button\",\"disabled\":_vm.chargingDisible},on:{\"click\":_vm.handleEvBtn}},[_c('span',[_vm._v(_vm._s(!_vm.isCharging ? _vm.lang.EVDetail_Btn_Start : _vm.lang.EVDetail_Btn_Stop))])])],1)]),_vm._v(\" \"),_c('ChargingMode',{attrs:{\"currentMode\":_vm.currentMode,\"emitEvent\":'Open_Drawer',\"itemWidth\":_vm.onlyOneEv ? 208 : 168},on:{\"handleEmit\":_vm.responseEvent,\"changeMode\":_vm.handleChangeMode}}),_vm._v(\" \"),_c('div',{staticClass:\"charge-scheduled\"},[_c('div',{staticClass:\"scheduled-title\",on:{\"click\":function($event){return _vm.openDraw('Scheduled')}}},[_vm._v(\"\\n \"+_vm._s(_vm.lang.EVDetail_Schedule_Title)+\"\\n \"),_c('img',{staticClass:\"next-arrow\",attrs:{\"src\":\"/Images/ev_charger/next_arrow.png\"}})]),_vm._v(\" \"),(_vm.currentEvInfo.scheduleMode)?_c('img',{staticClass:\"clean-schedule\",attrs:{\"src\":\"/Images/ev_charger/icon_clear.png\"},on:{\"click\":_vm.cleanSchedule}}):_vm._e(),_vm._v(\" \"),(_vm.currentEvInfo.scheduleMode)?_c('div',[_c('div',{staticClass:\"scheduled-time\"},[_vm._v(\"\\n \"+_vm._s(_vm.formatTimeRange(\n _vm.currentEvInfo.schedule_hour,\n _vm.currentEvInfo.schedule_minute,\n _vm.currentEvInfo.schedule_total_minute))+\"\\n \"),_c('span',[_vm._v(_vm._s(_vm.lang[_vm.SCHEDULE_MODE_MAP[_vm.currentEvInfo.scheduleMode]]))])]),_vm._v(\" \"),_c('div',{staticClass:\"scheduled-now\"},[_c('div',{staticClass:\"now-item\"},[_vm._v(_vm._s(_vm.lang.EVDetail_ChargeMode_Title)+\": \\n \"),_c('span',[_vm._v(_vm._s(_vm.lang[(\"EVDetail_ChargeMode_Mode\" + (_vm.currentEvInfo.schedule_charge_mode))]))])])])]):_vm._e(),_vm._v(\" \"),(!_vm.currentEvInfo.scheduleMode)?_c('div',{staticClass:\"no-scheduled-set\"},[_vm._v(\"\\n \"+_vm._s(_vm.lang[_vm.SCHEDULE_MODE_MAP[_vm.currentEvInfo.scheduleMode]])+\"\\n \")]):_vm._e()]),_vm._v(\" \"),_c('el-drawer',{ref:\"myDrawer\",attrs:{\"visible\":_vm.drawer,\"destroy-on-close\":\"\",\"title\":_vm.drawerTitle,\"direction\":'rtl'},on:{\"update:visible\":function($event){_vm.drawer=$event},\"closed\":_vm.drawerClosed}},[_c('div',{directives:[{name:\"loading\",rawName:\"v-loading\",value:(_vm.isDrawerLoading),expression:\"isDrawerLoading\"}],staticClass:\"drawer-parts\"},[(_vm.drawer && _vm.drawerTitle === _vm.DRAWER_TITLE_MORE)?_c('MoreSettings',{attrs:{\"evInfo\":_vm.currentEvInfo},on:{\"postApiToSet\":_vm.setEvChargerData,\"postSpecialCall\":_vm.setSpecialPost}}):_vm._e(),_vm._v(\" \"),(_vm.drawer && _vm.drawerTitle === _vm.DRAWER_TITLE_MODE)?_c('ModeSettings',{ref:\"modeSetRef\",attrs:{\"evInfo\":_vm.currentEvInfo,\"currentMode\":_vm.currentMode},on:{\"postSpecialCall\":_vm.setSpecialPost}}):_vm._e(),_vm._v(\" \"),(_vm.drawer && _vm.drawerTitle === _vm.DRAWER_TITLE_SCHEDULED)?_c('ScheduledSettings',{ref:\"scheduledSetRef\",attrs:{\"evInfo\":_vm.currentEvInfo,\"currentMode\":_vm.currentEvInfo.schedule_charge_mode},on:{\"postSpecialCall\":_vm.setSpecialPost}}):_vm._e(),_vm._v(\" \"),(_vm.drawerTitle !== _vm.DRAWER_TITLE_MORE)?_c('div',{staticClass:\"save-btn-groups\"},[_c('el-button',{on:{\"click\":_vm.closeDrawer}},[_vm._v(_vm._s(_vm.lang.pssmCancel))]),_vm._v(\" \"),_c('el-button',{attrs:{\"type\":\"primary\"},on:{\"click\":_vm.saveAndSubmit}},[_vm._v(_vm._s(_vm.lang.pssmBeSure))])],1):_vm._e()],1)])],1),_vm._v(\" \"),_c('div',{staticClass:\"main-con-right\"},[_c('div',{staticClass:\"con-chart\"},[_c('ChargingHistory',{attrs:{\"only-one-ev\":_vm.onlyOneEv,\"localDate\":_vm.localDate,\"info\":_vm.currentEvInfo}})],1),_vm._v(\" \"),_c('div',{staticClass:\"con-chart\"},[_c('ChargingPower',{attrs:{\"only-one-ev\":_vm.onlyOneEv,\"localDate\":_vm.localDate,\"info\":_vm.currentEvInfo}})],1)])])])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../../../node_modules/babel-loader/lib/index.js!./EvChargerMonitor.js?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../../node_modules/babel-loader/lib/index.js!./EvChargerMonitor.js?vue&type=script&lang=js&\"","import EvChargerOverView from './EvChargerOverView/EvChargerOverView.vue';\r\nimport EvChargerCurrent from './EvChargerCurrent/EvChargerCurrent.vue';\r\nexport default {\r\n name: 'EvChargerMonitor',\r\n props: {\r\n localDate: { type: String, required: true }, // 本地时间\r\n },\r\n components: { EvChargerOverView, EvChargerCurrent },\r\n data(){\r\n return {\r\n lang: Goodwe.Ops.Resouces.Front, // 语言包\r\n pw_id: GetRequest().id, // 电站Id\r\n evList: [], // 充电桩数据集合\r\n currentEvCharger: null, // 当前展示的充电桩\r\n currentEvSn: 'Overview', // 当前展示的充电桩SN\r\n lastRefreshTime: '--', // 最近一次刷新时间\r\n }\r\n },\r\n filters: {\r\n formatDate(v){\r\n if (!v && v != \"0\") {\r\n return \"--\"\r\n } else {\r\n return dayjs(v).format(`${dateFormatSems} HH:mm:ss`)\r\n }\r\n },\r\n },\r\n methods: {\r\n /** 裁剪过长的名称 */\r\n ellipsisName(name,count) {\r\n if(name.length <= count) { return name }\r\n if(name.length > count) {\r\n return name.substring(0,5) + '...' + name.substring(name.length - (count-10))\r\n }\r\n },\r\n /** 切换充电桩 */\r\n chooseEvCharger(ev) {\r\n this.currentEvCharger = ev;\r\n this.currentEvSn = ev.sn;\r\n },\r\n /** 展示showOverView */\r\n showOverView() {\r\n this.currentEvCharger = null;\r\n this.currentEvSn = 'Overview';\r\n this.getAllEvChargerData();\r\n },\r\n /** 获取总充电桩数据 */\r\n getAllEvChargerData() {\r\n loading.showLoading();\r\n common.post('/v4/EvCharger/GetEvChargerMoreView',\r\n { powerStationId: this.pw_id}).success(function(res){\r\n if(res.data && res.data.length > 0) {\r\n this.evList = res.data || [];\r\n if(this.evList.length === 1) {\r\n this.currentEvCharger = this.evList[0];\r\n this.currentEvSn = this.evList[0]['sn'];\r\n this.lastRefreshTime = this.evList[0]['lastUpdate'] || '--';\r\n } else {\r\n this.calculateLastTime(); // 计算最后刷新时间\r\n }\r\n }\r\n }.bind(this)).fail(function(fail){\r\n this.$message.error(fail.msg);\r\n }.bind(this)).all(function(){\r\n loading.disLoading();\r\n }.bind(this))\r\n },\r\n /** 单桩设置成功后刷新列表 */\r\n setHandleSucces(res) {\r\n if(res.flag) {\r\n this.currentEvSn = res.curSn; // 当前设置的充电桩SN\r\n this.currentEvCharger = this.evList.find(el=> {return el.sn === res.curSn});\r\n setTimeout(() => {\r\n this.$refs.curEvChargerRef.getEVChargerDataBySN(res.curSn);\r\n }, 10);\r\n }\r\n },\r\n /** 计算最后刷新时间 */\r\n calculateLastTime() {\r\n let refreshTimeArr = [];\r\n let maxDate = null;\r\n this.evList.forEach(element => {\r\n element.lastUpdate && refreshTimeArr.push(element.lastUpdate);\r\n });\r\n refreshTimeArr.forEach(date => {\r\n const currentDate = dayjs(date);\r\n if (!maxDate || currentDate.isAfter(maxDate)) {\r\n maxDate = currentDate;\r\n }\r\n });\r\n this.lastRefreshTime = maxDate;\r\n },\r\n },\r\n mounted() {\r\n this.getAllEvChargerData();\r\n }\r\n \r\n}","import { render, staticRenderFns } from \"./EvChargerMonitor.vue?vue&type=template&id=6eafe86d&scoped=true&\"\nimport script from \"./EvChargerMonitor.js?vue&type=script&lang=js&\"\nexport * from \"./EvChargerMonitor.js?vue&type=script&lang=js&\"\nimport style0 from \"./EvChargerMonitor.scss?vue&type=style&index=0&id=6eafe86d&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"6eafe86d\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"cont-monitor\"},[_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.evList.length > 1),expression:\"evList.length > 1\"}],staticClass:\"pane-left\"},[_c('div',{staticClass:\"ev-overview\",class:{'ev-chosed-bg': _vm.currentEvSn === 'Overview' },on:{\"click\":_vm.showOverView}},[(_vm.currentEvSn === 'Overview')?_c('div',{staticClass:\"ev-chosed-icon\"}):_vm._e(),_vm._v(\" \"),_c('img',{attrs:{\"src\":\"/Images/ev_charger/img_overview.png\"}}),_vm._v(\"\\n \"+_vm._s(_vm.lang.EVDetail_menu_overview)+\"\\n \")]),_vm._v(\" \"),_c('div',{staticClass:\"ev-list\"},[_c('el-scrollbar',{staticStyle:{\"height\":\"758px\",\"width\":\"100%\"},attrs:{\"wrap-class\":'el-gw-scroll'}},_vm._l((_vm.evList),function(item){return _c('div',{key:item.name,staticClass:\"ev-item\",class:{'ev-chosed-bg': _vm.currentEvSn === item.sn },on:{\"click\":function($event){return _vm.chooseEvCharger(item)}}},[(_vm.currentEvSn === item.sn)?_c('div',{staticClass:\"ev-chosed-icon\"}):_vm._e(),_vm._v(\" \"),_c('img',{attrs:{\"src\":\"/Images/ev_charger/img_evcharger.png\",\"alt\":\"\"}}),_vm._v(\" \"),(item.name.length > 20)?_c('el-tooltip',{attrs:{\"popper-class\":\"custom-tooltip\",\"effect\":\"light\",\"placement\":\"right\",\"content\":item.name}},[_c('div',[_vm._v(_vm._s(_vm.ellipsisName(item.name, 20)))])]):_vm._e(),_vm._v(\" \"),(item.name.length <= 20)?_c('div',[_vm._v(_vm._s(item.name))]):_vm._e()],1)}),0)],1)]),_vm._v(\" \"),_c('div',{staticClass:\"pane-right\",style:({marginLeft: _vm.evList.length > 1 ? '0' : '16px'})},[(_vm.currentEvSn === 'Overview')?_c('EvChargerOverView',{attrs:{\"evList\":_vm.evList},on:{\"goEvChargerCurrent\":_vm.chooseEvCharger}}):_vm._e(),_vm._v(\" \"),(_vm.currentEvSn !== 'Overview')?_c('EvChargerCurrent',{ref:\"curEvChargerRef\",attrs:{\"evCharger\":_vm.currentEvCharger,\"only-one-ev\":_vm.evList.length === 1,\"localDate\":_vm.localDate},on:{\"setHandleSucces\":_vm.setHandleSucces}}):_vm._e(),_vm._v(\" \"),(_vm.currentEvSn === 'Overview')?_c('div',{staticClass:\"refresh-time\"},[_vm._v(\" \\n \"+_vm._s(_vm.lang.pssmLastUpdateTime)+\": \"+_vm._s(_vm._f(\"formatDate\")(_vm.lastRefreshTime))+\"\\n \")]):_vm._e(),_vm._v(\" \"),(_vm.currentEvSn === 'Overview')?_c('div',{staticClass:\"refresh_btn\"},[_c('img',{attrs:{\"src\":\"/Images/ev_charger/icon_refresh.png\"},on:{\"click\":_vm.showOverView}})]):_vm._e()],1)])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./GoodweEvChargerDetail.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./GoodweEvChargerDetail.vue?vue&type=script&lang=js&\"","\r\n\r\n","import { render, staticRenderFns } from \"./GoodweEvChargerDetail.vue?vue&type=template&id=e3e63782&scoped=true&\"\nimport script from \"./GoodweEvChargerDetail.vue?vue&type=script&lang=js&\"\nexport * from \"./GoodweEvChargerDetail.vue?vue&type=script&lang=js&\"\nimport style0 from \"./GoodweEvChargerDetail.vue?vue&type=style&index=0&id=e3e63782&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"e3e63782\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"gdw-ev-charger\"},[_c('el-tabs',{attrs:{\"type\":\"border-card\"},on:{\"tab-click\":_vm.handleTabClick},model:{value:(_vm.activeTab),callback:function ($$v) {_vm.activeTab=$$v},expression:\"activeTab\"}},[_c('el-tab-pane',{attrs:{\"label\":_vm.lang.EVDetail_ChargeMonitor_Title,\"name\":\"Monitor\"}},[_c('div',{staticClass:\"pane-content\"},[(_vm.activeTab === 'Monitor')?_c('EvChargerMonitor',{ref:\"EvChargerMonitor\",attrs:{\"localDate\":_vm.local_date}}):_vm._e()],1)]),_vm._v(\" \"),_c('el-tab-pane',{attrs:{\"label\":_vm.lang.EV_PlantDetails_Alarm,\"name\":\"Alarm\"}},[_c('div',{staticClass:\"pane-content\"},[(_vm.activeTab === 'Alarm')?_c('EvChargerAlarm',{ref:\"EvChargerAlarm\"}):_vm._e()],1)]),_vm._v(\" \"),_c('el-tab-pane',{attrs:{\"label\":_vm.lang.EVDetail_Record_Title,\"name\":\"Record\"}},[_c('div',{staticClass:\"pane-content\"},[(_vm.activeTab === 'Record')?_c('EvChargerRecord',{ref:\"EvChargerRecord\",attrs:{\"localDate\":_vm.local_date}}):_vm._e()],1)])],1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import GoodweEvChargerDetail from './src/GoodweEvChargerDetail.vue';\r\n\r\nGoodweEvChargerDetail.install = function(Vue) {\r\n Vue.component(GoodweEvChargerDetail.name, GoodweEvChargerDetail);\r\n}\r\n\r\nexport default GoodweEvChargerDetail;","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./GoodweEMI.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./GoodweEMI.vue?vue&type=script&lang=js&\"","\r\n\r\n\r\n\r\n\r\n","import { render, staticRenderFns } from \"./GoodweEMI.vue?vue&type=template&id=69dbb3c8&\"\nimport script from \"./GoodweEMI.vue?vue&type=script&lang=js&\"\nexport * from \"./GoodweEMI.vue?vue&type=script&lang=js&\"\nimport style0 from \"./GoodweEMI.vue?vue&type=style&index=0&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"goodwe-e-m-i\",class:{'single-emi': _vm.emiList.length <= 1}},[_c('el-carousel',{attrs:{\"height\":\"440px\",\"autoplay\":false,\"trigger\":\"click\"}},_vm._l((_vm.emiList),function(item,index){return _c('el-carousel-item',{key:index},[_c('div',{staticClass:\"goodwe-e-m-i__title\"},[_vm._v(_vm._s(item.name))]),_vm._v(\" \"),_c('ul',{staticClass:\"goodwe-e-m-i__indicator clearfix\"},_vm._l((_vm.indicatorLabel),function(_item,_index){return _c('li',{key:_item},[_c('div',{staticClass:\"goodwe-e-m-i__indicator--icon\",style:({background: (\"url(\" + (_vm.indicatorImage[_index]) + \") no-repeat\")})}),_vm._v(\" \"),_c('div',{staticClass:\"goodwe-e-m-i__indicator--label\"},[_vm._v(_vm._s(_item))]),_vm._v(\" \"),_c('div',{staticClass:\"goodwe-e-m-i__indicator--value\"},[_vm._v(_vm._s(item[_vm.indicatorKey[_index]]))])])}),0),_vm._v(\" \"),_c('div',{staticClass:\"goodwe-e-m-i__status\",class:{status1: item.status == 1}},[_vm._v(_vm._s(item.status == 1 ? _vm.lang.Online:_vm.lang.offline))]),_vm._v(\" \"),(item.status != 1)?_c('div',{staticClass:\"goodwe-e-m-i__lastrefresh\"},[_vm._v(_vm._s(_vm.lang.pssmLastUpdateTime)+\": \"+_vm._s(item.lastRefreshTime))]):_vm._e()])}),1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import GoodweEMI from './src/GoodweEMI.vue';\r\n\r\nGoodweEMI.install = Vue => {\r\n Vue.component(GoodweEMI.name, GoodweEMI);\r\n}\r\n\r\nexport default GoodweEMI;","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./GoodweChartsTabItem.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./GoodweChartsTabItem.vue?vue&type=script&lang=js&\"","\r\n\r\n\r\n\r\n\r\n","import { render, staticRenderFns } from \"./GoodweChartsTabItem.vue?vue&type=template&id=03a2a46d&\"\nimport script from \"./GoodweChartsTabItem.vue?vue&type=script&lang=js&\"\nexport * from \"./GoodweChartsTabItem.vue?vue&type=script&lang=js&\"\nimport style0 from \"./GoodweChartsTabItem.vue?vue&type=style&index=0&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"goodwe-charts-tab-item goodwe-charts-tab__item\",class:{ act: Number(_vm.goodweChartsTab.value)=== Number(_vm.model.chartIndexId) },on:{\"click\":_vm.clickItem}},[_vm._v(\"\\n \"+_vm._s(_vm.model.indexLabel)+\"\\n\")])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./GoodweChartsTabItemGroup.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./GoodweChartsTabItemGroup.vue?vue&type=script&lang=js&\"","\r\n\r\n\r\n\r\n\r\n","import { render, staticRenderFns } from \"./GoodweChartsTabItemGroup.vue?vue&type=template&id=7f7c5c59&\"\nimport script from \"./GoodweChartsTabItemGroup.vue?vue&type=script&lang=js&\"\nexport * from \"./GoodweChartsTabItemGroup.vue?vue&type=script&lang=js&\"\nimport style0 from \"./GoodweChartsTabItemGroup.vue?vue&type=style&index=0&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"goodwe-charts-tab-item-group goodwe-charts-tab__item clearfix\"},[_c('div',{staticClass:\"goodwe-charts-tab-item-group__cover fl\",class:{ act: _vm.model.some(function (item) { return item.chartIndexId === _vm.goodweChartsTab.value; }) },on:{\"click\":_vm.clickCover}},[_vm._v(\"\\n \"+_vm._s(_vm.cover.indexLabel)+\"\\n \"),_c('div',{staticClass:\"goodwe-charts-tab-item-group__cover--arrowarea\",on:{\"click\":function($event){$event.stopPropagation();return _vm.clickArrow.apply(null, arguments)}}},[_vm._m(0)])]),_vm._v(\" \"),_c('ul',{staticClass:\"goodwe-charts-tab-item-group__dropdown\",class:{show: _vm.showDropDown}},_vm._l((_vm.model),function(item){return _c('li',{key:item.chartIndexId,class:{ act: item.chartIndexId === _vm.goodweChartsTab.value },on:{\"click\":function($event){return _vm.clickOption(item)}}},[_vm._v(\"\\n \"+_vm._s(item.indexLabel)+\"\\n \")])}),0)])}\nvar staticRenderFns = [function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"goodwe-charts-tab-item-group__cover--arrow\"},[_c('i',{staticClass:\"el-icon-arrow-down\"})])}]\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./GoodweChartsTab.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./GoodweChartsTab.vue?vue&type=script&lang=js&\"","\r\n\r\n\r\n","var render, staticRenderFns\nimport script from \"./GoodweChartsTab.vue?vue&type=script&lang=js&\"\nexport * from \"./GoodweChartsTab.vue?vue&type=script&lang=js&\"\nimport style0 from \"./GoodweChartsTab.vue?vue&type=style&index=0&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","import GoodweChartsTab from './src/GoodweChartsTab.vue';\r\n\r\nGoodweChartsTab.install = Vue => {\r\n Vue.component(GoodweChartsTab.name, GoodweChartsTab);\r\n}\r\n\r\nexport default GoodweChartsTab;","\r\n\r\n\r\n\r\n\r\n","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./GoodweStringInfo.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./GoodweStringInfo.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./GoodweStringInfo.vue?vue&type=template&id=618cab3c&\"\nimport script from \"./GoodweStringInfo.vue?vue&type=script&lang=js&\"\nexport * from \"./GoodweStringInfo.vue?vue&type=script&lang=js&\"\nimport style0 from \"./GoodweStringInfo.vue?vue&type=style&index=0&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"goodwe-string-info clearfix\"},[_c('div',{staticClass:\"goodwe-string-info__col\"},[_c('div',{staticClass:\"clearfix\"},[_c('div',{staticClass:\"fl goodwe-string-info__col--label\"},[_vm._v(\"第\"+_vm._s(_vm.model.route)+\"路-\"+_vm._s(_vm.model.strand)+\"串\")]),_vm._v(\" \"),_c('div',{staticClass:\"fr goodwe-string-info__col--unit\"}),_vm._v(\" \"),_c('div',{staticClass:\"goodwe-string-info__col--input\"},[_c('el-select',{attrs:{\"disabled\":_vm.disabled,\"size\":\"small\",\"placeholder\":\"请选择\"},model:{value:(_vm.params.status),callback:function ($$v) {_vm.$set(_vm.params, \"status\", $$v)},expression:\"params.status\"}},[_c('el-option',{attrs:{\"label\":\"已接入\",\"value\":1}}),_vm._v(\" \"),_c('el-option',{attrs:{\"label\":\"未接入\",\"value\":2}})],1)],1)]),_vm._v(\" \"),_c('div',{staticClass:\"clearfix\"},[_c('div',{staticClass:\"fl goodwe-string-info__col--label\"},[_vm._v(\"MPP电流\")]),_vm._v(\" \"),_c('div',{staticClass:\"fr goodwe-string-info__col--unit\"},[_vm._v(\"A\")]),_vm._v(\" \"),_c('div',{staticClass:\"goodwe-string-info__col--input\"},[_c('el-input',{ref:\"mppCurrent\",attrs:{\"disabled\":_vm.disabled,\"size\":\"small\"},on:{\"blur\":function($event){return _vm.verify($event, 'mppCurrent')}},model:{value:(_vm.params.mppCurrent),callback:function ($$v) {_vm.$set(_vm.params, \"mppCurrent\", _vm._n($$v))},expression:\"params.mppCurrent\"}})],1)]),_vm._v(\" \"),_c('div',{staticClass:\"clearfix\"},[_c('div',{staticClass:\"fl goodwe-string-info__col--label\"},[_vm._v(\"MPP电压\")]),_vm._v(\" \"),_c('div',{staticClass:\"fr goodwe-string-info__col--unit\"},[_vm._v(\"V\")]),_vm._v(\" \"),_c('div',{staticClass:\"goodwe-string-info__col--input\"},[_c('el-input',{ref:\"mppVoltage\",attrs:{\"disabled\":_vm.disabled,\"size\":\"small\"},on:{\"blur\":function($event){return _vm.verify($event, 'mppVoltage')}},model:{value:(_vm.params.mppVoltage),callback:function ($$v) {_vm.$set(_vm.params, \"mppVoltage\", $$v)},expression:\"params.mppVoltage\"}})],1)])]),_vm._v(\" \"),_c('div',{staticClass:\"goodwe-string-info__col\"},[_c('div',{staticClass:\"clearfix\"},[_c('div',{staticClass:\"fl goodwe-string-info__col--label\"},[_vm._v(\"厂家\")]),_vm._v(\" \"),_c('div',{staticClass:\"fr goodwe-string-info__col--unit\"}),_vm._v(\" \"),_c('div',{staticClass:\"goodwe-string-info__col--input\"},[_c('el-select',{attrs:{\"disabled\":_vm.disabled,\"size\":\"small\",\"placeholder\":\"请选择厂家\"},on:{\"change\":_vm.selectManuFactor},model:{value:(_vm.params.manufactorId),callback:function ($$v) {_vm.$set(_vm.params, \"manufactorId\", $$v)},expression:\"params.manufactorId\"}},[_c('el-option',{staticClass:\"goodwe-string-info__addmanufactor\",attrs:{\"value\":\"新增厂家\"}},[_c('i',{staticClass:\"el-icon-circle-plus-outline\"}),_vm._v(\"\\n 新增厂家\\n \")]),_vm._v(\" \"),_vm._l((_vm.manuFactor),function(item){return _c('el-option',{key:item.manufactorId,attrs:{\"label\":item.manufactorName,\"value\":item.manufactorId}},[_c('div',{staticClass:\"goodwe-string-info__autocomplete--name\",attrs:{\"title\":item.manufactorName}},[_vm._v(\"\\n \"+_vm._s(item.manufactorName)+\"\\n \")]),_vm._v(\" \"),(!item.readonly)?_c('i',{staticClass:\"el-icon-delete\",on:{\"click\":function($event){$event.stopPropagation();return _vm.deleteManuFactor(item)}}}):_vm._e(),_vm._v(\" \"),(!item.readonly)?_c('i',{staticClass:\"el-icon-edit\",staticStyle:{\"margin-left\":\"10px\"},on:{\"click\":function($event){$event.stopPropagation();return _vm.editManuFactor(item)}}}):_vm._e()])}),_vm._v(\" \"),_c('el-option',{directives:[{name:\"show\",rawName:\"v-show\",value:(false),expression:\"false\"}],staticClass:\"goodwe-string-info__addmanufactor\",attrs:{\"value\":_vm.data4deleted.manufactorId,\"label\":_vm.data4deleted.manufactorName}})],2)],1)]),_vm._v(\" \"),_c('div',{staticClass:\"clearfix\"},[_c('div',{staticClass:\"fl goodwe-string-info__col--label\"},[_vm._v(\"短路电流\")]),_vm._v(\" \"),_c('div',{staticClass:\"fr goodwe-string-info__col--unit\"},[_vm._v(\"A\")]),_vm._v(\" \"),_c('div',{staticClass:\"goodwe-string-info__col--input\"},[_c('el-input',{ref:\"shortCircuitCurrent\",attrs:{\"disabled\":_vm.disabled,\"size\":\"small\"},on:{\"blur\":function($event){return _vm.verify($event, 'shortCircuitCurrent')}},model:{value:(_vm.params.shortCircuitCurrent),callback:function ($$v) {_vm.$set(_vm.params, \"shortCircuitCurrent\", $$v)},expression:\"params.shortCircuitCurrent\"}})],1)]),_vm._v(\" \"),_c('div',{staticClass:\"clearfix\"},[_c('div',{staticClass:\"fl goodwe-string-info__col--label\"},[_vm._v(\"开路电压\")]),_vm._v(\" \"),_c('div',{staticClass:\"fr goodwe-string-info__col--unit\"},[_vm._v(\"V\")]),_vm._v(\" \"),_c('div',{staticClass:\"goodwe-string-info__col--input\"},[_c('el-input',{ref:\"openCircuitVoltage\",attrs:{\"disabled\":_vm.disabled,\"size\":\"small\"},on:{\"blur\":function($event){return _vm.verify($event, 'openCircuitVoltage')}},model:{value:(_vm.params.openCircuitVoltage),callback:function ($$v) {_vm.$set(_vm.params, \"openCircuitVoltage\", $$v)},expression:\"params.openCircuitVoltage\"}})],1)])]),_vm._v(\" \"),_c('div',{staticClass:\"goodwe-string-info__col\"},[_c('div',{staticClass:\"clearfix\"},[_c('div',{staticClass:\"fl goodwe-string-info__col--label\"},[_vm._v(\"型号\")]),_vm._v(\" \"),_c('div',{staticClass:\"fr goodwe-string-info__col--unit\"}),_vm._v(\" \"),_c('div',{staticClass:\"goodwe-string-info__col--input\"},[_c('el-select',{attrs:{\"size\":\"small\",\"placeholder\":\"请选择型号\",\"disabled\":_vm.disabled || !_vm.params.manufactorId || !_vm.params.manufactorValid},on:{\"change\":_vm.selectModule},model:{value:(_vm.params.moduleId),callback:function ($$v) {_vm.$set(_vm.params, \"moduleId\", $$v)},expression:\"params.moduleId\"}},[_c('el-option',{staticClass:\"goodwe-string-info__addmanufactor\",attrs:{\"value\":\"新增型号\"}},[_c('i',{staticClass:\"el-icon-circle-plus-outline\"}),_vm._v(\"\\n 新增型号\\n \")]),_vm._v(\" \"),_vm._l((_vm.module),function(item){return _c('el-option',{key:item.moduleId,attrs:{\"label\":item.moduleName,\"value\":item.moduleId}},[_c('div',{staticClass:\"goodwe-string-info__autocomplete--name\",attrs:{\"title\":item.moduleName}},[_vm._v(\"\\n \"+_vm._s(item.moduleName)+\"\\n \")]),_vm._v(\" \"),(!item.readonly)?_c('i',{staticClass:\"el-icon-delete\",on:{\"click\":function($event){$event.stopPropagation();return _vm.deleteModule(item)}}}):_vm._e(),_vm._v(\" \"),(!item.readonly)?_c('i',{staticClass:\"el-icon-edit\",staticStyle:{\"margin-left\":\"10px\"},on:{\"click\":function($event){$event.stopPropagation();return _vm.editModule(item)}}}):_vm._e()])}),_vm._v(\" \"),_c('el-option',{directives:[{name:\"show\",rawName:\"v-show\",value:(false),expression:\"false\"}],staticClass:\"goodwe-string-info__addmanufactor\",attrs:{\"value\":_vm.data4deleted.moduleId,\"label\":_vm.data4deleted.moduleName}})],2)],1)]),_vm._v(\" \"),_c('div',{staticClass:\"clearfix\"},[_c('div',{staticClass:\"fl goodwe-string-info__col--label\"},[_vm._v(\"开路电压温度系数\")]),_vm._v(\" \"),_c('div',{staticClass:\"fr goodwe-string-info__col--unit\"},[_vm._v(\"%/℃\")]),_vm._v(\" \"),_c('div',{staticClass:\"goodwe-string-info__col--input\"},[_c('el-input',{ref:\"tempOfVocTKVoc\",attrs:{\"disabled\":_vm.disabled,\"size\":\"small\"},on:{\"blur\":function($event){return _vm.verify($event, 'tempOfVocTKVoc')}},model:{value:(_vm.params.tempOfVocTKVoc),callback:function ($$v) {_vm.$set(_vm.params, \"tempOfVocTKVoc\", $$v)},expression:\"params.tempOfVocTKVoc\"}},[_c('span',{staticStyle:{\"line-height\":\"32px\",\"color\":\"#8a8a8a\"},attrs:{\"slot\":\"prefix\"},slot:\"prefix\"},[_vm._v(\"-\")])])],1)]),_vm._v(\" \"),_c('div',{staticClass:\"clearfix\"},[_c('div',{staticClass:\"fl goodwe-string-info__col--label\"},[_vm._v(\"短路电流温度系数\")]),_vm._v(\" \"),_c('div',{staticClass:\"fr goodwe-string-info__col--unit\"},[_vm._v(\"%/℃\")]),_vm._v(\" \"),_c('div',{staticClass:\"goodwe-string-info__col--input\"},[_c('el-input',{ref:\"tempOfIsc\",attrs:{\"disabled\":_vm.disabled,\"size\":\"small\"},on:{\"blur\":function($event){return _vm.verify($event, 'tempOfIsc')}},model:{value:(_vm.params.tempOfIsc),callback:function ($$v) {_vm.$set(_vm.params, \"tempOfIsc\", $$v)},expression:\"params.tempOfIsc\"}},[_c('span',{staticStyle:{\"line-height\":\"32px\",\"color\":\"#8a8a8a\"},attrs:{\"slot\":\"prefix\"},slot:\"prefix\"},[_vm._v(\"+\")])])],1)])]),_vm._v(\" \"),_c('div',{staticClass:\"goodwe-string-info__col\"},[_c('div',{staticClass:\"clearfix\"},[_c('div',{staticClass:\"fl goodwe-string-info__col--label\"},[_vm._v(\"电池片数量\")]),_vm._v(\" \"),_c('div',{staticClass:\"fr goodwe-string-info__col--unit\"}),_vm._v(\" \"),_c('div',{staticClass:\"goodwe-string-info__col--input\"},[_c('el-input',{ref:\"solarCellQuantity\",attrs:{\"disabled\":_vm.disabled,\"size\":\"small\"},on:{\"blur\":function($event){return _vm.verify($event, 'solarCellQuantity')}},model:{value:(_vm.params.solarCellQuantity),callback:function ($$v) {_vm.$set(_vm.params, \"solarCellQuantity\", $$v)},expression:\"params.solarCellQuantity\"}})],1)]),_vm._v(\" \"),_c('div',{staticClass:\"clearfix\"},[_c('div',{staticClass:\"fl goodwe-string-info__col--label\"},[_vm._v(\"温度@STC\")]),_vm._v(\" \"),_c('div',{staticClass:\"fr goodwe-string-info__col--unit\"},[_vm._v(\"℃\")]),_vm._v(\" \"),_c('div',{staticClass:\"goodwe-string-info__col--input\"},[_c('el-input',{ref:\"temperatureStc\",attrs:{\"disabled\":_vm.disabled,\"size\":\"small\"},on:{\"blur\":function($event){return _vm.verify($event, 'temperatureStc')}},model:{value:(_vm.params.temperatureStc),callback:function ($$v) {_vm.$set(_vm.params, \"temperatureStc\", $$v)},expression:\"params.temperatureStc\"}})],1)]),_vm._v(\" \"),_c('div',{staticClass:\"clearfix\"},[_c('div',{staticClass:\"fl goodwe-string-info__col--label\"},[_vm._v(\"辐照度@STC\")]),_vm._v(\" \"),_c('div',{staticClass:\"fr goodwe-string-info__col--unit\"},[_vm._v(\"W/m²\")]),_vm._v(\" \"),_c('div',{staticClass:\"goodwe-string-info__col--input\"},[_c('el-input',{ref:\"irradianceStc\",attrs:{\"disabled\":_vm.disabled,\"size\":\"small\"},on:{\"blur\":function($event){return _vm.verify($event, 'irradianceStc')}},model:{value:(_vm.params.irradianceStc),callback:function ($$v) {_vm.$set(_vm.params, \"irradianceStc\", $$v)},expression:\"params.irradianceStc\"}})],1)])]),_vm._v(\" \"),_c('div',{staticClass:\"goodwe-string-info__col\"},[_c('div',{staticClass:\"clearfix\"},[_c('div',{staticClass:\"fl goodwe-string-info__col--label\"},[_vm._v(\"旁路二极管数量\")]),_vm._v(\" \"),_c('div',{staticClass:\"goodwe-string-info__col--input\"},[_c('el-input',{ref:\"numberOfByPassDiodes\",attrs:{\"disabled\":_vm.disabled,\"size\":\"small\"},on:{\"blur\":function($event){return _vm.verify($event, 'numberOfByPassDiodes')}},model:{value:(_vm.params.numberOfByPassDiodes),callback:function ($$v) {_vm.$set(_vm.params, \"numberOfByPassDiodes\", $$v)},expression:\"params.numberOfByPassDiodes\"}})],1)]),_vm._v(\" \"),_c('div',{staticClass:\"clearfix\"},[_c('div',{staticClass:\"fl goodwe-string-info__col--label\"},[_vm._v(\"组件数量\")]),_vm._v(\" \"),_c('div',{staticClass:\"goodwe-string-info__col--input\"},[_c('el-input',{ref:\"numberOfcomponents\",attrs:{\"disabled\":_vm.disabled,\"size\":\"small\"},on:{\"blur\":function($event){return _vm.verify($event, 'numberOfcomponents')}},model:{value:(_vm.params.numberOfcomponents),callback:function ($$v) {_vm.$set(_vm.params, \"numberOfcomponents\", $$v)},expression:\"params.numberOfcomponents\"}})],1)]),_vm._v(\" \"),(!_vm.disabled)?_c('div',{staticClass:\"clearfix\"},[_c('div',{staticClass:\"fl goodwe-string-info__col--label\"}),_vm._v(\" \"),_c('div',{staticClass:\"goodwe-string-info__col--input\"},[_c('div',{staticClass:\"goodwe-string-info__col--2other\",class:{disabled: _vm.isFillAllDisabled},on:{\"click\":function($event){return _vm.fillAll($event)}}},[_vm._v(\"应用到其他组件\")])])]):_vm._e()])])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import GoodweStringInfo from './src/GoodweStringInfo.vue';\r\n\r\nGoodweStringInfo.install = Vue => {\r\n Vue.component(GoodweStringInfo.name, GoodweStringInfo);\r\n}\r\n\r\nexport default GoodweStringInfo;","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./GoodweShadowDetect.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./GoodweShadowDetect.vue?vue&type=script&lang=js&\"","\r\n\r\n\r\n\r\n\r\n","import { render, staticRenderFns } from \"./GoodweShadowDetect.vue?vue&type=template&id=08596dd7&\"\nimport script from \"./GoodweShadowDetect.vue?vue&type=script&lang=js&\"\nexport * from \"./GoodweShadowDetect.vue?vue&type=script&lang=js&\"\nimport style0 from \"./GoodweShadowDetect.vue?vue&type=style&index=0&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"goodwe-shadow-detect\"},[_c('div',{staticClass:\"goodwe-device-area__btn--return\",on:{\"click\":_vm.closeShadowDetect}},[_vm._v(\"返回\")]),_vm._v(\" \"),_c('div',{staticClass:\"goodwe-device-area__title\"},[_c('div',{staticClass:\"goodwe-device-area__title--sn\"},[_vm._v(_vm._s(_vm.sn))]),_vm._v(\" \"),_c('goodwe-tab',{staticClass:\"goodwe-device-area__title--tab\",staticStyle:{\"margin\":\"auto\"},attrs:{\"options\":_vm.tab_options},model:{value:(_vm.tab_value),callback:function ($$v) {_vm.tab_value=$$v},expression:\"tab_value\"}}),_vm._v(\" \"),_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.tab_value==1),expression:\"tab_value==1\"}],staticClass:\"goodwe-device-area__title--time\"},[_vm._v(\"上一次检测: \"+_vm._s(_vm.resData.ivCurveDate))]),_vm._v(\" \"),(!_vm.showProcess)?_c('goodwe-button',{staticClass:\"detect-button\",on:{\"click\":_vm.startDetection}},[_vm._v(\"检测\")]):_vm._e(),_vm._v(\" \"),(_vm.showProcess)?_c('goodwe-button',{staticClass:\"detect-button\",attrs:{\"disabled\":true}},[_vm._v(\"检测中\")]):_vm._e()],1),_vm._v(\" \"),_c('div',{staticClass:\"goodwe-device-area__con\"},[(JSON.stringify(this.resData) != '{}'&&_vm.tab_value==1&&_vm.reloadFlag)?_c('goodwe-shadow-detect-chart',{ref:\"goodweShadowDetectChart\",attrs:{\"sn\":_vm.sn,\"chartData\":_vm.resData.charts}}):_vm._e(),_vm._v(\" \"),(_vm.tab_value==2)?_c('goodwe-shadow-detect-history'):_vm._e()],1),_vm._v(\" \"),(_vm.showProcess)?_c('div',{staticClass:\"process-container\"},[_c('goodwe-process-bar',{attrs:{\"width\":'500px',\"innerWid\":_vm.innerWid,\"postParam\":_vm.postParam},on:{\"textFromProcessBar\":_vm.showTextFormBar}})],1):_vm._e()])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./GoodweShadowDetectChart.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./GoodweShadowDetectChart.vue?vue&type=script&lang=js&\"","\r\n\r\n\r\n\r\n","import { render, staticRenderFns } from \"./GoodweShadowDetectChart.vue?vue&type=template&id=08724fb4&\"\nimport script from \"./GoodweShadowDetectChart.vue?vue&type=script&lang=js&\"\nexport * from \"./GoodweShadowDetectChart.vue?vue&type=script&lang=js&\"\nimport style0 from \"./GoodweShadowDetectChart.vue?vue&type=style&index=0&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"goodwe-shadow-detect-chart\"},[_c('ul',{staticClass:\"route-list\"},_vm._l((_vm.routeList),function(item,index){return _c('li',{class:{'item-active':index==_vm.currentTab},on:{\"click\":function($event){return _vm.changeCharts(index)}}},[_vm._v(_vm._s(item))])}),0),_vm._v(\" \"),(_vm.chartData.length>0)?_c('div',{staticClass:\"goodwe-shadow-detect-chart__chart\",attrs:{\"id\":\"main\"}}):_vm._e(),_vm._v(\" \"),(_vm.chartData.length==0)?_c('div',{staticClass:\"chart-no-data\"}):_vm._e()])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./GoodweShadowDetectHistory.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./GoodweShadowDetectHistory.vue?vue&type=script&lang=js&\"","\r\n\r\n\r\n\r\n","import { render, staticRenderFns } from \"./GoodweShadowDetectHistory.vue?vue&type=template&id=24518f7c&scoped=true&\"\nimport script from \"./GoodweShadowDetectHistory.vue?vue&type=script&lang=js&\"\nexport * from \"./GoodweShadowDetectHistory.vue?vue&type=script&lang=js&\"\nimport style0 from \"./GoodweShadowDetectHistory.vue?vue&type=style&index=0&id=24518f7c&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"24518f7c\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[_c('div',{staticClass:\"goodwe-shadow-detect-history\"},[_c('el-table',{directives:[{name:\"loading\",rawName:\"v-loading\",value:(_vm.historyLoading),expression:\"historyLoading\"}],staticStyle:{\"min-height\":\"calc(410px - 46px - 56px - 8px - 46px)\"},attrs:{\"data\":_vm.historyData,\"header-cell-style\":_vm.headerStyle,\"cell-style\":_vm.cellStyle,\"size\":\"small\",\"stripe\":\"\"}},[_c('el-table-column',{attrs:{\"fixed\":\"\",\"label\":\"检测时间\",\"width\":\"300\",\"prop\":\"ivTime\"}}),_vm._v(\" \"),_c('el-table-column',{attrs:{\"fixed\":\"\",\"label\":\"检测位置\",\"prop\":\"position\"}}),_vm._v(\" \"),_c('el-table-column',{attrs:{\"fixed\":\"\",\"prop\":\"errorName\",\"label\":\"阴影遮挡\",\"width\":\"350\"}}),_vm._v(\" \"),_c('el-table-column',{attrs:{\"prop\":\"id\",\"label\":\"操作\",\"width\":\"200\"},scopedSlots:_vm._u([{key:\"default\",fn:function(scope){return [(scope.row.id!='')?_c('div',[_c('el-button',{staticStyle:{\"color\":\"#373438\",\"text-decoration\":\"underline\"},attrs:{\"size\":\"mini\",\"type\":\"text\"},on:{\"click\":function($event){return _vm.getGroupInfo(scope.row)}}},[_vm._v(\"查看组串\")])],1):_vm._e()]}}])})],1),_vm._v(\" \"),_c('div',{staticClass:\"goodwe-shadow-detect-history__pager\"},[_c('gdw-pager',{attrs:{\"current-page\":_vm.pager.page_index,\"page-sizes\":[_vm.pager.page_size],\"layout\":\"prev, pager, next, sizes, total, jumper\",\"total\":_vm.pager.record},on:{\"current-change\":_vm.handlePageChange}})],1)],1),_vm._v(\" \"),(_vm.showGroup&&_vm.stringInfoList.length>0)?_c('div',{staticClass:\"goodwe-shadow-detect-group\"},[_c('div',{staticClass:\"goodwe-shadow-detect-group__con\"},[_c('div',{staticClass:\"group-title\",staticStyle:{\"padding\":\"0 20px\"}},[_vm._v(\"组串信息\\n \"),_c('img',{attrs:{\"src\":require(\"../../../../../Images/icon-new/ic_close.png\")},on:{\"click\":function($event){_vm.showGroup=false}}})]),_vm._v(\" \"),_vm._l((_vm.stringInfoList),function(stringInfo){return _c('ul',{staticClass:\"clearfix\"},[_c('li',[_vm._v(\"第\"+_vm._s(stringInfo.route)+\"路-\"+_vm._s(stringInfo.strand)+\"串 : \"+_vm._s(stringInfo.status===1?\"已接入\":\"未接入\"))]),_vm._v(\" \"),_c('li',[_vm._v(\"厂家 : \"+_vm._s(stringInfo.manufactorName))]),_vm._v(\" \"),_c('li',[_vm._v(\"型号 : \"+_vm._s(stringInfo.moduleName))]),_vm._v(\" \"),_c('li',[_vm._v(\"电池片数量 : \"+_vm._s(stringInfo.solarCellQuantity))]),_vm._v(\" \"),_c('li',[_vm._v(\"旁路二极管数量 : \"+_vm._s(stringInfo.numberOfByPassDiodes))]),_vm._v(\" \"),_c('li',[_vm._v(\"MPP电流: \"+_vm._s(stringInfo.mppCurrent)+\"A\")]),_vm._v(\" \"),_c('li',[_vm._v(\"短路电流 : \"+_vm._s(stringInfo.shortCircuitCurrent)+\"A\")]),_vm._v(\" \"),_c('li',[_vm._v(\"开路电压温度系数 : \"+_vm._s(stringInfo.tempOfVocTKVoc)+\"%/℃\")]),_vm._v(\" \"),_c('li',[_vm._v(\"温度@STC : \"+_vm._s(stringInfo.temperatureStc)+\"℃\")]),_vm._v(\" \"),_c('li',[_vm._v(\"组件数量 : \"+_vm._s(stringInfo.numberOfcomponents))]),_vm._v(\" \"),_c('li',[_vm._v(\"MPP电压: \"+_vm._s(stringInfo.mppVoltage)+\"V\")]),_vm._v(\" \"),_c('li',[_vm._v(\"开路电压 : \"+_vm._s(stringInfo.openCircuitVoltage)+\"V\")]),_vm._v(\" \"),_c('li',[_vm._v(\"短路电流温度系数 : +\"+_vm._s(stringInfo.openCircuitVoltage)+\"%/℃\")]),_vm._v(\" \"),_c('li',[_vm._v(\"辐照度@STC : \"+_vm._s(stringInfo.irradianceStc)+\"W/m2\")])])})],2)]):_vm._e()])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import GoodweShadowDetect from './src/GoodweShadowDetect.vue';\r\nimport GoodweShadowDetectChart from './src/GoodweShadowDetectChart.vue';\r\nimport GoodweShadowDetectHistory from './src/GoodweShadowDetectHistory.vue';\r\n\r\n[GoodweShadowDetect, GoodweShadowDetectChart,GoodweShadowDetectHistory].forEach(item => {\r\n item.install = Vue => {\r\n Vue.component(item.name, item);\r\n }\r\n});\r\n\r\nexport default {\r\n GoodweShadowDetect,\r\n GoodweShadowDetectChart,\r\n GoodweShadowDetectHistory\r\n};","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./GoodweProcessBar.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./GoodweProcessBar.vue?vue&type=script&lang=js&\"","\r\n\r\n\r\n\r\n\r\n","import { render, staticRenderFns } from \"./GoodweProcessBar.vue?vue&type=template&id=b10e7ef4&scoped=true&\"\nimport script from \"./GoodweProcessBar.vue?vue&type=script&lang=js&\"\nexport * from \"./GoodweProcessBar.vue?vue&type=script&lang=js&\"\nimport style0 from \"./GoodweProcessBar.vue?vue&type=style&index=0&id=b10e7ef4&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"b10e7ef4\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"goodwe-process-bar\",style:(_vm.containerStyle)},[_c('div',{staticClass:\"goodwe-process-bar__gone\",style:('background-color:'+_vm.innerBg+';width:'+_vm.processGoneBarWid+'%')}),_vm._v(\" \"),_c('div',{staticClass:\"process-text\",style:('color:'+_vm.textColor)},[_vm._v(_vm._s(_vm.processText))])])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import GoodweProcessBar from './src/GoodweProcessBar.vue';\r\n\r\nGoodweProcessBar.install = Vue => {\r\n Vue.component(GoodweProcessBar.name, GoodweProcessBar);\r\n}\r\n\r\nexport default GoodweProcessBar;","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./GoodweProgress.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./GoodweProgress.vue?vue&type=script&lang=js&\"","\r\n\r\n\r\n\r\n\r\n","import { render, staticRenderFns } from \"./GoodweProgress.vue?vue&type=template&id=632ec036&\"\nimport script from \"./GoodweProgress.vue?vue&type=script&lang=js&\"\nexport * from \"./GoodweProgress.vue?vue&type=script&lang=js&\"\nimport style0 from \"./GoodweProgress.vue?vue&type=style&index=0&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"goodwe-progress\",style:({\n width: this.width + 'px',\n height: this.height + 'px',\n backgroundColor: this.backgroundColor\n })},[_c('div',{staticClass:\"goodwe-progress__inner\",style:({\n width: this.percent + '%',\n backgroundColor: this.frontColor,\n transition: 'width ' + this.spend + 's linear',\n })}),_vm._v(\" \"),_c('div',{staticClass:\"goodwe-progress__num\",style:({ lineHeight: this.height + 'px', color: this.color })},[_vm._v(\"\\n \"+_vm._s(this.currentPercent + \"%\")+\"\\n \")])])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import GoodweProgress from './src/GoodweProgress.vue';\r\n\r\nGoodweProgress.install = function(Vue) {\r\n Vue.component(GoodweProgress.name, GoodweProgress);\r\n}\r\n\r\nexport default GoodweProgress;","/** 返回表头宽度 */\r\nexport const titleWidthHandle = () => {\r\n let listTitleWidth = {};\r\n //不是电站管理页面\r\n if(window.location.href.indexOf(\"devicemanager\")<0){\r\n listTitleWidth = {\r\n \"en\":{\r\n inverterWidth:[140,200,260,150,100,150,230,200],\r\n ezWidth:[180,300,350,250,150,200],\r\n arcbWidth:[180,200,250,250,200,150,200],\r\n },\r\n \"es-es\":{\r\n inverterWidth:[150,200,260,100,100,200,200,220],\r\n ezWidth:[180,300,350,250,150,200],\r\n arcbWidth:[180,200,250,230,200,150,220],\r\n },\r\n \"pt-pt\":{\r\n inverterWidth:[130,200,250,140,110,150,250,200],\r\n ezWidth:[180,300,350,250,150,200],\r\n arcbWidth:[180,200,250,250,200,150,200],\r\n },\r\n \"cs-cz\":{\r\n inverterWidth:[150,180,250,140,110,150,250,200],\r\n ezWidth:[180,300,350,250,150,200],\r\n arcbWidth:[180,200,250,250,200,150,200],\r\n },\r\n \"tr-tr\":{\r\n inverterWidth:[130,200,250,150,100,150,250,200],\r\n ezWidth:[180,300,350,250,150,200],\r\n arcbWidth:[180,200,250,250,200,150,200],\r\n },\r\n \"ko-kr\":{\r\n inverterWidth:[130,200,250,150,100,150,250,200],\r\n ezWidth:[180,300,350,250,150,200],\r\n arcbWidth:[180,200,250,250,200,150,200],\r\n },\r\n \"nl-nl\":{\r\n inverterWidth:[110,200,250,120,100,150,250,250],\r\n ezWidth:[180,300,300,250,150,250],\r\n arcbWidth:[180,200,250,200,200,150,250],\r\n },\r\n \"it-it\":{\r\n inverterWidth:[130,200,250,120,100,160,250,220],\r\n ezWidth:[180,300,340,240,150,220],\r\n arcbWidth:[160,200,250,250,200,150,220],\r\n },\r\n \"ja-ja\":{\r\n inverterWidth:[140,200,220,150,160,150,230,180],\r\n ezWidth:[180,300,350,250,150,200],\r\n arcbWidth:[80,230,250,169,110,130,200]\r\n }\r\n }\r\n }else{\r\n listTitleWidth = {\r\n \"en\":{\r\n inverterWidth:[80,180,220,100,100,130,159,200],\r\n ezWidth:[180,200,250,200,139,200],\r\n arcbWidth:[80,230,250,169,110,130,200]\r\n },\r\n \"es-es\":{\r\n inverterWidth:[110,140,160,90,100,150,199,220],\r\n ezWidth:[160,190,239,180,180,220],\r\n arcbWidth:[110,180,230,169,100,160,220]\r\n },\r\n \"pt-pt\":{\r\n inverterWidth:[100,170,180,90,110,150,149,220],\r\n ezWidth:[180,200,250,169,150,220],\r\n arcbWidth:[120,210,230,129,110,150,220]\r\n },\r\n \"cs-cz\":{\r\n inverterWidth:[120,150,200,90,110,150,149,200],\r\n ezWidth:[180,200,270,169,150,200],\r\n arcbWidth:[120,210,250,129,110,150,200]\r\n },\r\n \"tr-tr\":{\r\n inverterWidth:[100,150,200,90,110,150,149,220],\r\n ezWidth:[180,200,250,169,150,220],\r\n arcbWidth:[120,200,240,129,110,150,220]\r\n },\r\n \"ko-kr\":{\r\n inverterWidth:[80,190,200,90,110,150,149,200],\r\n ezWidth:[180,220,250,169,150,200],\r\n arcbWidth:[120,230,250,129,110,130,200]\r\n },\r\n \"nl-nl\":{\r\n inverterWidth:[120,150,180,80,100,140,149,250],\r\n ezWidth:[180,220,250,119,150,250],\r\n arcbWidth:[120,180,230,129,110,150,250]\r\n },\r\n \"it-it\":{\r\n inverterWidth:[100,170,200,90,90,150,149,220],\r\n ezWidth:[180,200,250,169,150,220],\r\n arcbWidth:[120,190,250,129,110,150,220]\r\n },\r\n \"ja-ja\":{\r\n inverterWidth:[80,180,170,100,150,130,159,200],\r\n ezWidth:[180,200,250,200,139,200],\r\n arcbWidth:[80,230,250,169,110,130,200]\r\n },\r\n }\r\n }\r\n // 如果增加语言时忘了增加表头的适配,就采用默认的英文表头适配,以免报错导致页面打不开\r\n if(listTitleWidth[getCookie(\"language\")]){\r\n listTitleWidth = listTitleWidth[getCookie(\"language\")];\r\n }else{\r\n listTitleWidth = listTitleWidth[\"en\"]\r\n }\r\n return listTitleWidth\r\n}\r\n\r\n/** 提示文字 */\r\nexport const notify = (msg, second, type) => {\r\n $.popCheckTip();\r\n $.pushCheckTip(msg, type === 'success' ? 'success' : '');\r\n setTimeout(function () {\r\n $.popCheckTip();\r\n }, second * 1000);\r\n}\r\n\r\n/** 电池Module Qty的检验规则(0-17) */\r\nexport const validBatteryModuleNum = (rule, value, callback) => {\r\n if (isNaN(value)) {\r\n return callback(new Error(LANG_FRONT.input_number));\r\n }\r\n if (!Number.isInteger(Number(value))) {\r\n return callback(new Error(LANG_FRONT.input_uint));\r\n }\r\n if (Number(value) < 0 || Number(value) > 17) {\r\n return callback(new Error(lang.code_100106));\r\n }\r\n callback();\r\n}\r\n\r\n/** 电池箱SN校验规则 */\r\nexport const validBatteryPackageSN = (rule, value, callback) => {\r\n if(!/^[A-Z0-9]{18}$/.test(value) && !/^[A-Z0-9]{16}$/.test(value)) {\r\n return callback(new Error(lang.Batteryinfo_SN_format_WRONG)); // SN格式有误,请核实\r\n }\r\n}\r\n\r\n/** 电池模组SN校验规则 */\r\nexport const validBatteryModuleSN = (rule, value, callback) => {\r\n if(!/^[A-Z0-9]{18}$/.test(value)) {\r\n return callback(new Error(lang.Batteryinfo_SN_format_WRONG)); // SN格式有误,请核实\r\n }\r\n}\r\n\r\n/** 电池容量校验 */\r\nexport const validBatteryCapacity = (rule, value, callback) => {\r\n if (value.length <= 0) return callback(new Error(LANG_FRONT.battery_capicity_empty));\r\n if (isNaN(value)) return callback(new Error(LANG_FRONT.input_number));\r\n if (+value < 0 || +value > 10000000000) return callback(new Error(LANG_FRONT.battery_capacity_range));\r\n if (/\\.\\d{2}/.test(value)) return callback(new Error(LANG_FRONT.battery_capacity_range_decimal));\r\n}\r\n\r\n/** 充电桩校验 */\r\nexport const validEvCharger = (rule, value, callback) => {\r\n if(value.length === 0) return callback(new Error(LANG_FRONT.EVDetail_Msg_1association));\r\n}\r\n/** 充电桩RFID卡校验 */\r\nexport const validCardNo = (rule, value, callback) => {\r\n if(!/^[A-F0-9]{14}$/.test(value)) { // RFID card No. must be 14 digits and uppercase letters A-F\r\n return callback(new Error(LANG_FRONT.EVDetail_card_validation))\r\n }\r\n if(value.startsWith('00')) { // RFID card NO. cannot start with \"00\"\r\n return callback(new Error(LANG_FRONT.EVDetail_card_checkzero))\r\n }\r\n}\r\n\r\n/** 数据采集器设备 */\r\nexport const DEVICE_TYPE_DATALOGGER = '1';\r\n/** 防逆流设备 */\r\nexport const DEVICE_TYPE_ARCB = '2';\r\n/** 普通逆变器设备 */\r\nexport const DEVICE_TYPE_INVERTER = '5';\r\n/** 微逆设备 */\r\nexport const DEVICE_TYPE_MICROINVERTER = '6';\r\n/** 固德威电池、电池包 */\r\nexport const DEVICE_TPYE_BATTERY = '7';\r\n/** 固德威电池模组 */\r\nexport const DEVICE_TPYE_BATTERY_MODULE = '9';\r\n/** 充电桩EVcharger */\r\nexport const DEVICE_TYPE_EVCHARGER = '8';\r\n\r\n/** 翻译库 */\r\nexport const LANG_FRONT = Goodwe.Ops.Resouces.Front;\r\n\r\n/** 设备类型Tab集合 */\r\nexport const DEVICE_TYPE_TABS = [\r\n {\r\n label: lang.SelectdeviceType_Popup_Inverter,\r\n name: lang.SelectdeviceType_Popup_Inverter,\r\n value: lang.SelectdeviceType_Popup_Inverter\r\n },\r\n { \r\n label: lang.SelectdeviceType_Popup_MicroInverter,\r\n name: lang.SelectdeviceType_Popup_MicroInverter,\r\n value: lang.SelectdeviceType_Popup_MicroInverter\r\n },\r\n { \r\n label: lang.DataLogger,\r\n name: lang.DataLogger,\r\n value: lang.DataLogger\r\n },\r\n { \r\n label: lang.devicetype_EVCharge,\r\n name: lang.devicetype_EVCharge,\r\n value: lang.devicetype_EVCharge\r\n }\r\n]\r\n\r\n/** 设备类型集合 */\r\nexport const DEVICE_TYPE_LIST = [\r\n {label: LANG_FRONT.SelectdeviceType_Popup_Inverter, val: DEVICE_TYPE_INVERTER, // 普通逆变器\r\n imgUrl: '/Images/add_device/icon_inverter@2x.png', activeUrl: '/Images/add_device/icon_inverterover@2x.png'}, \r\n {label: LANG_FRONT.SelectdeviceType_Popup_MicroInverter, val: DEVICE_TYPE_MICROINVERTER, // 微逆\r\n imgUrl: '/Images/add_device/icon_microinverter@2x.png', activeUrl: '/Images/add_device/icon_microinverterover@2x.png'},\r\n {label: LANG_FRONT.SelectdeviceType_Popup_Dataloger, val: DEVICE_TYPE_DATALOGGER, // 数据采集器\r\n imgUrl: '/Images/add_device/icon_datalogger@2x.png', activeUrl: '/Images/add_device/icon_dataloggerover@2x.png'},\r\n {label: LANG_FRONT.devicetype_EVCharge, val: DEVICE_TYPE_EVCHARGER, // 充电桩 \r\n imgUrl: '/Images/add_device/icon_evcharger.png', activeUrl: '/Images/add_device/icon_evchargerover.png'},\r\n]\r\n\r\n/** 错误信息提示 */\r\nexport const errorMsgNotify = (fail) => {\r\n if(fail && fail.code) {\r\n switch(Number(fail.code)){\r\n case 100083: {\r\n goodwe._alert({\r\n title: LANG_FRONT.operationFailed,\r\n template:\"

\"+ LANG_FRONT.code_100083+\"

\",\r\n buttons:[\"OK\"],\r\n ok:function(){\r\n this.close()\r\n },\r\n })\r\n break;\r\n }\r\n case 100084: {\r\n goodwe._alert({\r\n title: LANG_FRONT.operationFailed,\r\n template:\"

\"+ LANG_FRONT.code_100084+\"

\",\r\n buttons:[\"OK\"],\r\n ok:function(){\r\n this.close()\r\n },\r\n })\r\n break;\r\n }\r\n case 100094: {\r\n goodwe._alert({\r\n title: LANG_FRONT.operationFailed,\r\n template:\"

\"+ LANG_FRONT.code_100094+\"

\",\r\n buttons:[\"OK\"],\r\n ok:function(){\r\n this.close()\r\n },\r\n })\r\n break\r\n }\r\n case 100095: {\r\n goodwe._alert({\r\n title: LANG_FRONT.operationFailed,\r\n template:\"

\"+fail.msg+\"

\",\r\n buttons:[\"OK\"],\r\n ok:function(){\r\n this.close()\r\n },\r\n })\r\n break;\r\n }\r\n case 100153: { // 当前只支持上传微逆设备的二维码\r\n goodwe._alert({\r\n title: LANG_FRONT.operationFailed,\r\n template:\"

\" + LANG_FRONT.Micro_UploadImage_Tips13 + \"

\",\r\n buttons:[\"OK\"],\r\n ok:function(){\r\n this.close()\r\n },\r\n })\r\n break;\r\n }\r\n case 100000: {\r\n notify(LANG_FRONT.operationFailed, 3); // 操作失败\r\n break;\r\n }\r\n case 100004: {\r\n notify(LANG_FRONT.operationFailed, 3); // 参数错误\r\n break;\r\n }\r\n case 100105: {\r\n notify(LANG_FRONT.code_100105, 3); // 此名称已被使用,请核实\r\n break; \r\n }\r\n case 100108: {\r\n notify(LANG_FRONT.code_100108, 3); // 此SN已被使用,请核实。如有疑问,请与我们联系\r\n break;\r\n }\r\n case 100109: {\r\n notify(LANG_FRONT.code_100109, 3); // 此SN错误,请核实。如有疑问,请与我们联系\r\n break;\r\n }\r\n case 100111: {\r\n notify(LANG_FRONT.code_100111, 3); // Module NUM不能小于已经添加的电池模组数量\r\n break;\r\n }\r\n default: {\r\n notify(LANG_FRONT[fail.msg], 3); // 特定的一些错误\r\n break;\r\n }\r\n }\r\n } else {\r\n notify(LANG_FRONT.operationFailed, 3);\r\n }\r\n}","\r\n\r\n\r\n","import mod from \"-!../../../../../../node_modules/babel-loader/lib/index.js!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./UpdateDeviceModal.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../../node_modules/babel-loader/lib/index.js!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./UpdateDeviceModal.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./UpdateDeviceModal.vue?vue&type=template&id=47ec66ce&scoped=true&\"\nimport script from \"./UpdateDeviceModal.vue?vue&type=script&lang=js&\"\nexport * from \"./UpdateDeviceModal.vue?vue&type=script&lang=js&\"\nimport style0 from \"./UpdateDeviceModal.vue?vue&type=style&index=0&id=47ec66ce&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"47ec66ce\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('gdw-dialog',{attrs:{\"show\":_vm.showModal,\"width\":540,\"arrow\":\"\"}},[_c('h2',{attrs:{\"slot\":\"header\"},slot:\"header\"},[_vm._v(_vm._s(_vm.modalTitleMap[_vm.changingDeviceType]))]),_vm._v(\" \"),_c('div',{staticClass:\"changeInverterNotice\",staticStyle:{\"padding\":\"10px 15px\",\"border-bottom\":\"1px solid #d3d8e1\",\"border-top\":\"1px solid #fff\"}},[_c('el-form',{ref:\"updateDeviceDialog\",staticClass:\"updateDeviceDialog\",attrs:{\"model\":_vm.changeInfo,\"rules\":_vm.deviceRules,\"label-width\":'140px'}},[_c('el-form-item',{attrs:{\"label\":_vm.lang.template_name,\"prop\":\"name\"}},[_c('el-input',{staticStyle:{\"width\":\"293px\"},attrs:{\"maxlength\":30,\"placeholder\":_vm.lang.enterdevicenametip},model:{value:(_vm.changeInfo.name),callback:function ($$v) {_vm.$set(_vm.changeInfo, \"name\", $$v)},expression:\"changeInfo.name\"}})],1),_vm._v(\" \"),_c('el-form-item',{attrs:{\"label\":\"SN\",\"prop\":\"sn\"}},[_c('el-input',{staticStyle:{\"width\":\"293px\"},attrs:{\"maxlength\":30,\"disabled\":\"\",\"placeholder\":_vm.lang.add_dev_sn},model:{value:(_vm.changeInfo.sn),callback:function ($$v) {_vm.$set(_vm.changeInfo, \"sn\", $$v)},expression:\"changeInfo.sn\"}})],1)],1)],1),_vm._v(\" \"),_c('gdw-dialog-button-group',{attrs:{\"slot\":\"button\"},slot:\"button\"},[_c('goodwe-button',{on:{\"click\":_vm.cancleUpdateInverterInput}},[_vm._v(_vm._s(_vm.lang.cancel))]),_vm._v(\" \"),_c('goodwe-button',{on:{\"click\":_vm.submitUpdateDevice}},[_vm._v(_vm._s(_vm.lang.amBeSure))])],1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../../../node_modules/babel-loader/lib/index.js!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ChangeDeviceModal.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../../node_modules/babel-loader/lib/index.js!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ChangeDeviceModal.vue?vue&type=script&lang=js&\"","\r\n\r\n","import { render, staticRenderFns } from \"./ChangeDeviceModal.vue?vue&type=template&id=55b3c01a&scoped=true&\"\nimport script from \"./ChangeDeviceModal.vue?vue&type=script&lang=js&\"\nexport * from \"./ChangeDeviceModal.vue?vue&type=script&lang=js&\"\nimport style0 from \"./ChangeDeviceModal.vue?vue&type=style&index=0&id=55b3c01a&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"55b3c01a\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[_c('gdw-dialog',{attrs:{\"show\":_vm.showChangeDeviceNotice,\"arrow\":\"\"}},[_c('h2',{attrs:{\"slot\":\"header\"},slot:\"header\"},[_vm._v(_vm._s(_vm.lang.rmTip))]),_vm._v(\" \"),([_vm.DEVICE_TYPE_INVERTER,_vm.DEVICE_TYPE_MICROINVERTER].includes(_vm.changingDeviceType))?_c('div',{staticClass:\"changeInverterNotice\",staticStyle:{\"padding\":\"10px 15px\",\"border-bottom\":\"1px solid #d3d8e1\",\"border-top\":\"1px solid #fff\"}},[_c('p',{staticStyle:{\"white-space\":\"pre-line\"}},[_vm._v(_vm._s(_vm.lang.AlertView_changeDeviceNotice))])]):_vm._e(),_vm._v(\" \"),([_vm.DEVICE_TYPE_DATALOGGER,_vm.DEVICE_TYPE_ARCB,_vm.DEVICE_TYPE_EVCHARGER].includes(_vm.changingDeviceType))?_c('div',{staticClass:\"changeInverterNotice\",staticStyle:{\"padding\":\"10px 15px\",\"border-bottom\":\"1px solid #d3d8e1\",\"border-top\":\"1px solid #fff\"}},[_c('p',{staticStyle:{\"white-space\":\"pre-line\"}},[_vm._v(_vm._s(_vm.lang.changeDeviceNotice))])]):_vm._e(),_vm._v(\" \"),_c('gdw-dialog-button-group',{attrs:{\"slot\":\"button\"},slot:\"button\"},[_c('goodwe-button',{on:{\"click\":function($event){_vm.showChangeDeviceNotice=false}}},[_vm._v(_vm._s(_vm.lang.cancel))]),_vm._v(\" \"),_c('goodwe-button',{on:{\"click\":_vm.sureChangeDevice}},[_vm._v(_vm._s(_vm.lang.amBeSure))])],1)],1),_vm._v(\" \"),_c('gdw-dialog',{attrs:{\"show\":_vm.showChangeDeviceInput,\"width\":540,\"arrow\":\"\"}},[_c('h2',{attrs:{\"slot\":\"header\"},slot:\"header\"},[_vm._v(_vm._s(_vm.lang.replaceDevice))]),_vm._v(\" \"),_c('div',{staticClass:\"changeInverterNotice\",staticStyle:{\"padding\":\"10px 15px\",\"border-bottom\":\"1px solid #d3d8e1\",\"border-top\":\"1px solid #fff\"}},[_c('div',{staticClass:\"detail-container\"},[_c('div',{staticClass:\"detail-title\"},[_vm._v(_vm._s(_vm.lang.oldDevice))]),_vm._v(\" \"),_c('div',{staticClass:\"original-inventer\"},[_c('span',[_vm._v(_vm._s(_vm.lang.template_name)+\":\")]),_vm._v(\" \"),_c('span',{attrs:{\"title\":_vm.changingDeviceInfo.name||_vm.changingDeviceInfo.sn}},[_vm._v(\"\\n \"+_vm._s(_vm.changingDeviceInfo.name||_vm.changingDeviceInfo.sn)+\"\\n \")])]),_vm._v(\" \"),_c('div',{staticClass:\"original-inventer\",staticStyle:{\"margin-bottom\":\"12px\"}},[_c('span',[_vm._v(\"SN:\")]),_vm._v(\" \"),_c('span',[_vm._v(_vm._s(_vm.changingDeviceInfo.sn))])])]),_vm._v(\" \"),_c('div',{staticClass:\"detail-title\",staticStyle:{\"height\":\"48px\",\"line-height\":\"48px\",\"clear\":\"both\"}},[_vm._v(_vm._s(_vm.lang.newDevice))]),_vm._v(\" \"),_c('el-form',{ref:\"changeDeviceDialog\",staticClass:\"changeDeviceDialog\",attrs:{\"model\":_vm.newDevice,\"rules\":_vm.deviceRules,\"label-width\":_vm.label_width}},[_c('el-form-item',{attrs:{\"label\":_vm.lang.template_name,\"prop\":\"name\"}},[_c('el-input',{staticStyle:{\"width\":\"330px !important\"},attrs:{\"maxlength\":30,\"placeholder\":_vm.lang.enterdevicenametip},model:{value:(_vm.newDevice.name),callback:function ($$v) {_vm.$set(_vm.newDevice, \"name\", $$v)},expression:\"newDevice.name\"}})],1),_vm._v(\" \"),_c('el-form-item',{attrs:{\"label\":\"SN\",\"prop\":\"sn\"}},[_c('el-input',{staticStyle:{\"width\":\"330px !important\"},attrs:{\"maxlength\":30,\"placeholder\":_vm.lang.add_dev_sn},on:{\"input\":function($event){return _vm.isStorage(_vm.newDevice.sn)}},model:{value:(_vm.newDevice.sn),callback:function ($$v) {_vm.$set(_vm.newDevice, \"sn\", $$v)},expression:\"newDevice.sn\"}})],1),_vm._v(\" \"),_c('el-form-item',{attrs:{\"label\":\"CheckCode\",\"prop\":\"checkcode\"}},[_c('el-input',{staticStyle:{\"width\":\"330px !important\"},attrs:{\"maxlength\":30,\"placeholder\":_vm.lang.add_dev_code},model:{value:(_vm.newDevice.checkcode),callback:function ($$v) {_vm.$set(_vm.newDevice, \"checkcode\", $$v)},expression:\"newDevice.checkcode\"}})],1),_vm._v(\" \"),(_vm.battery_capacity_show)?_c('el-form-item',{attrs:{\"label\":_vm.lang.soc_device_Input_title,\"prop\":\"battery_capacity\"}},[_c('el-input',{staticStyle:{\"width\":\"330px !important\"},attrs:{\"placeholder\":_vm.lang.soc_device_Input_title},model:{value:(_vm.newDevice.battery_capacity),callback:function ($$v) {_vm.$set(_vm.newDevice, \"battery_capacity\", $$v)},expression:\"newDevice.battery_capacity\"}},[_c('i',{attrs:{\"slot\":\"suffix\"},slot:\"suffix\"},[_vm._v(\"kWh\")])])],1):_vm._e(),_vm._v(\" \"),_c('el-form-item',{attrs:{\"label\":_vm.lang.uppcase_note,\"prop\":\"memo\"}},[_c('el-input',{staticStyle:{\"width\":\"330px !important\"},attrs:{\"maxlength\":30,\"placeholder\":_vm.lang.dmEnterRemark},model:{value:(_vm.newDevice.memo),callback:function ($$v) {_vm.$set(_vm.newDevice, \"memo\", $$v)},expression:\"newDevice.memo\"}})],1)],1)],1),_vm._v(\" \"),_c('gdw-dialog-button-group',{attrs:{\"slot\":\"button\"},slot:\"button\"},[_c('goodwe-button',{on:{\"click\":_vm.cancleChangeInverterInput}},[_vm._v(_vm._s(_vm.lang.cancel))]),_vm._v(\" \"),_c('goodwe-button',{on:{\"click\":_vm.submitChangeDevice}},[_vm._v(_vm._s(_vm.lang.amBeSure))])],1)],1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\n\r\n","import mod from \"-!../../../../../../node_modules/babel-loader/lib/index.js!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./DeleteDeviceModal.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../../node_modules/babel-loader/lib/index.js!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./DeleteDeviceModal.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./DeleteDeviceModal.vue?vue&type=template&id=bcc019d2&scoped=true&\"\nimport script from \"./DeleteDeviceModal.vue?vue&type=script&lang=js&\"\nexport * from \"./DeleteDeviceModal.vue?vue&type=script&lang=js&\"\nimport style0 from \"./DeleteDeviceModal.vue?vue&type=style&index=0&id=bcc019d2&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"bcc019d2\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('gdw-dialog',{attrs:{\"show\":_vm.showDeleteDeviceNotice,\"arrow\":\"\"}},[_c('h2',{attrs:{\"slot\":\"header\"},slot:\"header\"},[_vm._v(_vm._s(_vm.lang.hint))]),_vm._v(\" \"),_c('div',[_c('h3',{staticClass:\"delete_device_title\"},[_vm._v(_vm._s(_vm.lang.dmDeleteDeviceWarning))]),_vm._v(\" \"),_c('p',{staticClass:\"delete_device_content\"},[_vm._v(_vm._s(_vm.lang.dmHandleResultWarning))])]),_vm._v(\" \"),_c('div',{staticClass:\"changeInverterNotice\",staticStyle:{\"padding\":\"10px 15px\",\"border-bottom\":\"1px solid #d3d8e1\",\"border-top\":\"1px solid #fff\"}},[_c('div',{staticClass:\"detail-container\"},[_c('div',{staticClass:\"remove-original-inventer\"},[_c('label',{staticStyle:{\"width\":\"140px\",\"display\":\"inline-block\",\"text-align\":\"right\"}},[_vm._v(_vm._s(_vm.lang.DeviceType)+\":\")]),_vm._v(\" \"),_c('span',[_vm._v(_vm._s(_vm._f(\"formatDeviceType\")(_vm.changingDeviceType)))])]),_vm._v(\" \"),(_vm.isHistoryRecord)?_c('div',[_c('div',{staticClass:\"remove-original-inventer\",attrs:{\"title\":_vm.changingDeviceInfo.oldName||_vm.changingDeviceInfo.oldSn}},[_c('label',{staticStyle:{\"width\":\"140px\",\"display\":\"inline-block\",\"text-align\":\"right\"}},[_vm._v(_vm._s(_vm.lang.template_name)+\":\")]),_vm._v(\" \"),_c('span',[_vm._v(_vm._s(_vm.changingDeviceInfo.oldName || _vm.changingDeviceInfo.oldSn))])])]):_vm._e(),_vm._v(\" \"),(!_vm.isHistoryRecord)?_c('div',[_c('div',{staticClass:\"remove-original-inventer\",attrs:{\"title\":_vm.changingDeviceInfo.name||_vm.changingDeviceInfo.sn}},[_c('label',{staticStyle:{\"width\":\"140px\",\"display\":\"inline-block\",\"text-align\":\"right\"}},[_vm._v(_vm._s(_vm.lang.template_name)+\":\")]),_vm._v(\" \"),_c('span',[_vm._v(_vm._s(_vm.changingDeviceInfo.name || _vm.changingDeviceInfo.sn))])])]):_vm._e(),_vm._v(\" \"),_c('div',{staticClass:\"remove-original-inventer\"},[_c('label',{staticStyle:{\"width\":\"140px\",\"display\":\"inline-block\",\"text-align\":\"right\"}},[_vm._v(_vm._s(_vm.lang.rmDeviceSn)+\":\")]),_vm._v(\" \"),_c('span',[_vm._v(_vm._s(_vm.isHistoryRecord ? _vm.changingDeviceInfo.oldSn : _vm.changingDeviceInfo.sn))])])])]),_vm._v(\" \"),_c('gdw-dialog-button-group',{attrs:{\"slot\":\"button\"},slot:\"button\"},[_c('goodwe-button',{on:{\"click\":_vm.cancelDeleteDevice}},[_vm._v(_vm._s(_vm.lang.cancel))]),_vm._v(\" \"),_c('goodwe-button',{on:{\"click\":_vm.beforeDeleteDevice}},[_vm._v(_vm._s(_vm.lang.amBeSure))])],1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../../../node_modules/babel-loader/lib/index.js!./InverterList.js?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../../node_modules/babel-loader/lib/index.js!./InverterList.js?vue&type=script&lang=js&\"","import UpdateDeviceModal from '../../dialogs/components/UpdateDeviceModal.vue';\r\nimport ChangeDeviceModal from '../../dialogs/components/ChangeDeviceModal.vue';\r\nimport DeleteDeviceModal from '../../dialogs/components/DeleteDeviceModal.vue';\r\nimport ParallelSystemDetail from '../../../../ParallelSystemDetail/src/ParallelSystemDetail.vue';\r\nimport {DEVICE_TYPE_INVERTER} from '../../relativeFunUtl';\r\nexport default {\r\n name: 'InverterList',\r\n props: {\r\n stationId:{ type: String, required: true }, // 电站ID\r\n is_stored:{ type: Boolean, required: true }, // 是否是储能电站\r\n listTitleWidth: { type: Object, required: true }, // 列表table 标题宽度\r\n labelWidth: { type: String, required: true }, // form表单label宽度\r\n },\r\n components: { UpdateDeviceModal, ChangeDeviceModal, DeleteDeviceModal, ParallelSystemDetail },\r\n data: function() {\r\n return {\r\n lang: Goodwe.Ops.Resouces.Front,\r\n canUpdate: canUpdate, // 是否有修改权限\r\n canDelete: canDelete, // 是否有删除权限\r\n pw_id: this.stationId, // 电站ID\r\n is_stored: this.is_stored, // 是否是储能电站\r\n labelWidth: this.labelWidth, // form表单label宽度\r\n inverterData: [], // 逆变器列表信息\r\n inverterHistory: [], // 更换设备历史记录信息\r\n InverterPage: { page_index: 1, page_size: 6, record: 0 }, // 分页\r\n showInverterList: true, // 是否展示逆变器列表\r\n showUpdateModal: false, // 修改设备模态框\r\n showChangeModal: false, // 更换设备模态框\r\n showDeleteModal: false, // 删除设备模态框\r\n changingDeviceType: DEVICE_TYPE_INVERTER, // 设备类型\r\n changingDevice:'', // 设备信息\r\n isHistoryRecord: false, // 是否删除历史记录设备\r\n showParallelDetail: false,// 是否展示并机详情弹出框\r\n initParallelRef: false, // 是否渲染并机组件\r\n currentMainSn: '', // 当前需要展示的主机SN\r\n }\r\n },\r\n watch: {\r\n stationId:function(){\r\n this.pw_id = this.stationId;\r\n this.getInverterData();\r\n },\r\n },\r\n filters: {\r\n formatData: function (v) {\r\n if (!v && v != \"0\") {\r\n return \"-\"\r\n } else {\r\n return v\r\n }\r\n },\r\n formatDate:function(v){\r\n if (!v && v != \"0\") {\r\n return \"-\"\r\n } else {\r\n return dayjs(v).format(dateFormatReplace(\"day\"))\r\n }\r\n },\r\n },\r\n computed: {\r\n /** 处理后的逆变器数据 */\r\n computedInverterData: function () {\r\n var d = _.cloneDeep(this.inverterData);\r\n if (!d) d = [];\r\n var data = [];\r\n d.forEach(function (item) {\r\n data.push({\r\n status: item.status,\r\n name: item.it_name,\r\n sn: item.it_sn,\r\n type: item.it_type,\r\n master: item.master,\r\n capacity: item.it_capacity,\r\n createTime: item.conn_date,\r\n collectType: item.con_equipmentmodel,\r\n collectSn: item.con_equipment_sn,\r\n id: item.id,\r\n })\r\n });\r\n return data\r\n },\r\n /** 处理后的逆变器历史数据 */\r\n computedInverterHistory: function () {\r\n var d = _.cloneDeep(this.inverterHistory);\r\n if (!d) d = [];\r\n var data = [];\r\n d.forEach(function (item) {\r\n data.push({\r\n id:item.id,\r\n num: item.ch_no,\r\n oldName: item.it_name_old,\r\n oldSn: item.it_sn_old,\r\n newName: item.it_name_new,\r\n newSn: item.it_sn_new,\r\n changeDate: item.change_date,\r\n memo: item.memo,\r\n })\r\n });\r\n return data\r\n },\r\n },\r\n methods: {\r\n /** 切换到逆变器列表 */\r\n tabInverterList() {\r\n this.resetHandleListModal();\r\n if (!this.showInverterList) {\r\n this.resetInverterPage();\r\n this.getInverterData();\r\n this.showInverterList = true;\r\n }\r\n },\r\n /** 切换到逆变器操作记录 */\r\n tabInverterHistory() {\r\n this.resetHandleListModal();\r\n if (this.showInverterList) {\r\n this.resetInverterPage();\r\n this.getInverterHistory();\r\n this.showInverterList = false;\r\n }\r\n },\r\n /** 切换逆变器页码 */\r\n handleInverterPageChange(page) {\r\n this.resetHandleListModal();\r\n this.InverterPage.page_index = page;\r\n if (this.showInverterList) {\r\n this.getInverterData();\r\n } else {\r\n this.getInverterHistory();\r\n }\r\n },\r\n /** 重置逆变器页码 */\r\n resetInverterPage() {\r\n this.InverterPage.page_size = 6;\r\n this.InverterPage.page_index = 1;\r\n },\r\n /** 点击展示并机详情 */\r\n alertParallelDetail(sn) {\r\n this.currentMainSn = sn;\r\n this.showParallelDetail = true;\r\n this.initParallelRef = true;\r\n },\r\n /** 关闭并机详情 */\r\n closeModal() {\r\n this.showParallelDetail = false;\r\n this.resetModalInfo();\r\n setTimeout(() => {\r\n this.initParallelRef = false;\r\n }, 500);\r\n },\r\n /** 获取逆变器列表信息 */\r\n getInverterData() {\r\n loading.showLoading();\r\n common.post(\"/PwInventers/QueryInventers\", \r\n { pw_id: this.pw_id, \r\n page_index: this.InverterPage.page_index, \r\n page_size: this.InverterPage.page_size,\r\n type: 0, // 0-代表非微逆\r\n }).success(function (res) {\r\n this.inverterData = res.data.list;\r\n this.InverterPage.record = res.data.record;\r\n }.bind(this)).all(function () {\r\n loading.disLoading();\r\n }.bind(this))\r\n },\r\n /** 获取逆变器历史记录 */\r\n getInverterHistory() {\r\n loading.showLoading();\r\n common.post(\"/PwInventers/QueryInventersChangeHistory\", \r\n { pw_id: this.pw_id, \r\n page_index: this.InverterPage.page_index, \r\n page_size: this.InverterPage.page_size,\r\n equipment_type: DEVICE_TYPE_INVERTER,\r\n type: 0, // 0-代表非微逆\r\n }).success(function (res) {\r\n this.inverterHistory = res.data.list\r\n this.InverterPage.record = res.data.record;\r\n }.bind(this)).all(function () {\r\n loading.disLoading();\r\n }.bind(this))\r\n },\r\n /** 处理列表信息 */\r\n handleDevice(row, type) {\r\n this.resetModalInfo();\r\n setTimeout(() => {\r\n this.changingDeviceType = DEVICE_TYPE_INVERTER; // 默认 5--逆变器\r\n this.changingDevice = row;\r\n switch (type) {\r\n case 'update':{ // 更新设备按钮点击\r\n this.showUpdateModal = true;\r\n break;\r\n }\r\n case 'change':{ // 更换设备按钮点击\r\n this.showChangeModal = true;\r\n break;\r\n }\r\n case 'deleteList':{ // 删除设备按钮点击\r\n this.isHistoryRecord = false;\r\n this.showDeleteModal = true;\r\n break;\r\n }\r\n case 'deleteHistory':{// 删除历史记录按钮点击\r\n this.isHistoryRecord = true;\r\n this.showDeleteModal = true;\r\n break;\r\n }\r\n default:\r\n break;\r\n }\r\n }, 30);\r\n },\r\n /** 更新/更换设备成功后 */\r\n modifyHandle(flag) {\r\n this.resetModalInfo();\r\n if(flag) {\r\n this.getInverterData();\r\n this.$emit('queryBindParallel', true); // 查询是否是储能并机\r\n }\r\n },\r\n /** 删除设备信息成功后 */\r\n initListHandle(flag) {\r\n this.resetModalInfo();\r\n if(flag) {\r\n if(this.showInverterList) {\r\n this.getInverterData();\r\n } else {\r\n this.getInverterHistory();\r\n }\r\n }\r\n },\r\n /** 重置弹出框信息 */\r\n resetModalInfo() {\r\n this.showUpdateModal = false;\r\n this.showChangeModal = false;\r\n this.showDeleteModal = false;\r\n this.isHistoryRecord = false;\r\n this.showParallelDetail = false;\r\n },\r\n /** 操作列表弹框重置 */\r\n resetHandleListModal() {\r\n this.showUpdateModal = false;\r\n this.showChangeModal = false;\r\n this.showDeleteModal = false;\r\n this.showParallelDetail = false;\r\n this.initParallelRef = false;\r\n },\r\n },\r\n created: function() {\r\n this.getInverterData();\r\n },\r\n mounted: function() {\r\n }\r\n}","import { render, staticRenderFns } from \"./InverterList.vue?vue&type=template&id=5eeef71c&scoped=true&\"\nimport script from \"./InverterList.js?vue&type=script&lang=js&\"\nexport * from \"./InverterList.js?vue&type=script&lang=js&\"\nimport style0 from \"./InverterList.scss?vue&type=style&index=0&id=5eeef71c&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"5eeef71c\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[_c('div',{staticClass:\"inverter-operate clearfix\"},[_c('button',{staticClass:\"btn_primary l\",class:{'btn-inactive':!_vm.showInverterList},on:{\"click\":_vm.tabInverterList}},[_vm._v(\"\\n \"+_vm._s(_vm.lang.SelectdeviceType_Popup_Inverter))]),_vm._v(\" \"),_c('button',{staticClass:\"btn_primary l\",class:{'btn-inactive':_vm.showInverterList},on:{\"click\":_vm.tabInverterHistory}},[_vm._v(\"\\n \"+_vm._s(_vm.lang.changeHistory))])]),_vm._v(\" \"),_c('div',{staticClass:\"inverter-detail body-contain\"},[_c('el-table',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.showInverterList),expression:\"showInverterList\"}],staticStyle:{\"width\":\"100%\"},attrs:{\"header-cell-style\":{height:'42px',background:'#38474E',color:'#fff'},\"stripe\":\"\",\"data\":_vm.computedInverterData}},[_c('el-table-column',{staticClass:\"pl20\",attrs:{\"prop\":\"status\",\"label\":_vm.lang.oStatus,\"width\":_vm.listTitleWidth.inverterWidth[0]},scopedSlots:_vm._u([{key:\"default\",fn:function(scope){return [_c('div',{style:({color: scope.row.status =='-1' ? '#557289': '#86bd4d'})},[_vm._v(\"\\n \"+_vm._s(scope.row.status==\"-1\"?_vm.lang.offline:_vm.lang.Online)+\"\\n \")])]}}])}),_vm._v(\" \"),_c('el-table-column',{attrs:{\"prop\":\"name\",\"label\":_vm.lang.template_name,\"width\":_vm.listTitleWidth.inverterWidth[1],\"show-overflow-tooltip\":\"\"},scopedSlots:_vm._u([{key:\"default\",fn:function(scope){return [_vm._v(\"\\n \"+_vm._s(scope.row.name || scope.row.sn || '-')+\"\\n \")]}}])}),_vm._v(\" \"),_c('el-table-column',{attrs:{\"prop\":\"sn\",\"label\":\"SN\",\"show-overflow-tooltip\":\"\",\"width\":_vm.listTitleWidth.inverterWidth[2]},scopedSlots:_vm._u([{key:\"default\",fn:function(scope){return [_vm._v(\"\\n \"+_vm._s(_vm._f(\"formatData\")(scope.row.sn))+\"\\n \"),(scope.row['master'] === 1)?_c('img',{staticStyle:{\"cursor\":\"pointer\",\"margin\":\"0 0 2px 2px\"},attrs:{\"src\":\"/Images/add_device/img_master.png\",\"title\":_vm.lang.Parallel_System_View_Slaves},on:{\"click\":function($event){return _vm.alertParallelDetail(scope.row['sn'])}}}):_vm._e()]}}])}),_vm._v(\" \"),_c('el-table-column',{attrs:{\"prop\":\"type\",\"label\":_vm.lang.pssmInverterType,\"width\":_vm.listTitleWidth.inverterWidth[3],\"show-overflow-tooltip\":\"\"},scopedSlots:_vm._u([{key:\"default\",fn:function(scope){return [_vm._v(\"\\n \"+_vm._s(_vm._f(\"formatData\")(scope.row.type))+\"\\n \")]}}])}),_vm._v(\" \"),_c('el-table-column',{attrs:{\"prop\":\"capacity\",\"label\":_vm.lang.CapacityOfDevice,\"width\":_vm.listTitleWidth.inverterWidth[4],\"show-overflow-tooltip\":\"\"},scopedSlots:_vm._u([{key:\"default\",fn:function(scope){return [_vm._v(\"\\n \"+_vm._s(_vm._f(\"formatData\")(scope.row.capacity))+\"\\n \")]}}])}),_vm._v(\" \"),_c('el-table-column',{attrs:{\"prop\":\"createTime\",\"label\":_vm.lang.pssmTurnonTime,\"width\":_vm.listTitleWidth.inverterWidth[5],\"show-overflow-tooltip\":\"\"},scopedSlots:_vm._u([{key:\"default\",fn:function(scope){return [_vm._v(\"\\n \"+_vm._s(_vm._f(\"formatDate\")(scope.row.createTime))+\"\\n \")]}}])}),_vm._v(\" \"),_c('el-table-column',{attrs:{\"prop\":\"collectSn\",\"label\":_vm.lang.DataLogger,\"width\":_vm.listTitleWidth.inverterWidth[6],\"show-overflow-tooltip\":\"\"},scopedSlots:_vm._u([{key:\"default\",fn:function(scope){return [_vm._v(\"\\n \"+_vm._s(scope.row.collectSn || '-')+\"\\n \")]}}])}),_vm._v(\" \"),_c('el-table-column',{attrs:{\"prop\":\"id\",\"label\":_vm.lang.pssmHandle,\"width\":_vm.listTitleWidth.inverterWidth[7]},scopedSlots:_vm._u([{key:\"default\",fn:function(scope){return [(scope.row.id!='')?_c('div',[(_vm.canUpdate)?_c('el-button',{staticClass:\"update-btn\",attrs:{\"type\":\"text\",\"size\":\"small\"},on:{\"click\":function($event){return _vm.handleDevice(scope.row, 'update')}}},[_vm._v(\"\\n \"+_vm._s(_vm.lang.Modify)+\"\\n \")]):_vm._e(),_vm._v(\" \"),(_vm.canUpdate)?_c('el-button',{staticClass:\"change-btn\",attrs:{\"size\":\"mini\",\"type\":\"text\"},on:{\"click\":function($event){return _vm.handleDevice(scope.row, 'change')}}},[_vm._v(\"\\n \"+_vm._s(_vm.lang.Replace)+\"\\n \")]):_vm._e(),_vm._v(\" \"),(_vm.canDelete)?_c('el-button',{staticClass:\"delete-btn\",attrs:{\"size\":\"mini\",\"type\":\"text\"},on:{\"click\":function($event){return _vm.handleDevice(scope.row, 'deleteList')}}},[_vm._v(\"\\n \"+_vm._s(_vm.lang.Delete)+\"\\n \")]):_vm._e()],1):_vm._e(),_vm._v(\" \"),(scope.row.id=='' || (!_vm.canUpdate && !_vm.canDelete))?_c('div',[_vm._v(\" -- \")]):_vm._e()]}}])})],1),_vm._v(\" \"),_c('el-table',{directives:[{name:\"show\",rawName:\"v-show\",value:(!_vm.showInverterList),expression:\"!showInverterList\"}],attrs:{\"header-cell-style\":{height:'42px',background:'#38474E',color:'#fff'},\"stripe\":\"\",\"data\":_vm.computedInverterHistory}},[_c('el-table-column',{attrs:{\"prop\":\"num\",\"label\":_vm.lang.replace_history_number,\"show-overflow-tooltip\":\"\",\"width\":\"90px\"},scopedSlots:_vm._u([{key:\"default\",fn:function(scope){return [_vm._v(\"\\n \"+_vm._s(scope.row.num)+\"\\n \")]}}])}),_vm._v(\" \"),_c('el-table-column',{attrs:{\"prop\":\"oldName\",\"label\":_vm.lang.original_devic,\"show-overflow-tooltip\":\"\"},scopedSlots:_vm._u([{key:\"default\",fn:function(scope){return [_vm._v(\"\\n \"+_vm._s(scope.row.oldName || scope.row.oldSn || '-')+\"\\n \")]}}])}),_vm._v(\" \"),_c('el-table-column',{attrs:{\"prop\":\"oldSn\",\"label\":_vm.lang.dmOriginDevice+' S/N',\"show-overflow-tooltip\":\"\"},scopedSlots:_vm._u([{key:\"default\",fn:function(scope){return [_vm._v(\"\\n \"+_vm._s(scope.row.oldSn)+\"\\n \")]}}])}),_vm._v(\" \"),_c('el-table-column',{attrs:{\"prop\":\"newName\",\"label\":_vm.lang.new_divice,\"show-overflow-tooltip\":\"\"},scopedSlots:_vm._u([{key:\"default\",fn:function(scope){return [_vm._v(\"\\n \"+_vm._s(scope.row.newName || scope.row.newSn || '-')+\"\\n \")]}}])}),_vm._v(\" \"),_c('el-table-column',{attrs:{\"prop\":\"newSn\",\"label\":_vm.lang.new_devic_sn,\"show-overflow-tooltip\":\"\"},scopedSlots:_vm._u([{key:\"default\",fn:function(scope){return [_vm._v(\"\\n \"+_vm._s(scope.row.newSn)+\"\\n \")]}}])}),_vm._v(\" \"),_c('el-table-column',{attrs:{\"prop\":\"changeDate\",\"label\":_vm.lang.replace_time,\"show-overflow-tooltip\":\"\"},scopedSlots:_vm._u([{key:\"default\",fn:function(scope){return [_vm._v(\"\\n \"+_vm._s(_vm._f(\"formatDate\")(scope.row.changeDate.toString().split(' ')[0]))+\"\\n \")]}}])}),_vm._v(\" \"),_c('el-table-column',{attrs:{\"prop\":\"id\",\"label\":_vm.lang.pssmHandle,\"width\":\"110px\"},scopedSlots:_vm._u([{key:\"default\",fn:function(scope){return [(scope.row.id!='')?_c('div',[(_vm.canDelete)?_c('el-button',{staticClass:\"delete-btn\",staticStyle:{\"color\":\"red\"},attrs:{\"size\":\"mini\",\"type\":\"text\"},on:{\"click\":function($event){return _vm.handleDevice(scope.row, 'deleteHistory')}}},[_vm._v(\"\\n \"+_vm._s(_vm.lang.Delete)+\"\\n \")]):_vm._e()],1):_vm._e(),_vm._v(\" \"),(scope.row.id=='' || !_vm.canDelete)?_c('div',[_vm._v(\" -- \")]):_vm._e()]}}])})],1),_vm._v(\" \"),_c('div',{staticClass:\"paging\"},[_c('gdw-pager',{attrs:{\"current-page\":_vm.InverterPage.page_index,\"page-sizes\":[_vm.InverterPage.page_size],\"layout\":\"prev, pager, next, sizes, total, jumper\",\"total\":_vm.InverterPage.record},on:{\"current-change\":_vm.handleInverterPageChange}})],1)],1),_vm._v(\" \"),_c('UpdateDeviceModal',{attrs:{\"showModal\":_vm.showUpdateModal,\"changingDeviceType\":_vm.changingDeviceType,\"changingDeviceInfo\":_vm.changingDevice,\"stationId\":_vm.pw_id,\"label_width\":_vm.labelWidth},on:{\"modify_success\":_vm.modifyHandle}}),_vm._v(\" \"),_c('ChangeDeviceModal',{attrs:{\"showModal\":_vm.showChangeModal,\"changingDeviceType\":_vm.changingDeviceType,\"changingDeviceInfo\":_vm.changingDevice,\"stationId\":_vm.pw_id,\"is_stored\":_vm.is_stored,\"label_width\":_vm.labelWidth},on:{\"change_success\":_vm.modifyHandle}}),_vm._v(\" \"),_c('DeleteDeviceModal',{attrs:{\"showModal\":_vm.showDeleteModal,\"isHistoryRecord\":_vm.isHistoryRecord,\"changingDeviceType\":_vm.changingDeviceType,\"changingDeviceInfo\":_vm.changingDevice},on:{\"delete_success\":_vm.initListHandle}}),_vm._v(\" \"),_c('gdw-dialog',{attrs:{\"show\":_vm.showParallelDetail,\"width\":600,\"arrow\":\"\"}},[_c('h2',{attrs:{\"slot\":\"header\"},slot:\"header\"},[_vm._v(_vm._s(_vm.lang.Parallel_System_Details))]),_vm._v(\" \"),_c('div',{staticClass:\"changeInverterNotice\",staticStyle:{\"border-top\":\"1px solid #fff\"}},[(_vm.initParallelRef)?_c('ParallelSystemDetail',{attrs:{\"sn\":_vm.currentMainSn,\"pwId\":_vm.pw_id,\"noTitle\":true}}):_vm._e()],1),_vm._v(\" \"),_c('img',{staticClass:\"close-img\",attrs:{\"src\":\"/Images/add_device/dialog_close.png\"},on:{\"click\":_vm.closeModal}}),_vm._v(\" \"),_c('gdw-dialog-button-group',{staticStyle:{\"display\":\"none\"},attrs:{\"slot\":\"button\"},slot:\"button\"},[_c('goodwe-button',[_vm._v(_vm._s(_vm.lang.cancel))])],1)],1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../../../../node_modules/babel-loader/lib/index.js!../../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ViewPvPanelsDialog.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../../../node_modules/babel-loader/lib/index.js!../../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ViewPvPanelsDialog.vue?vue&type=script&lang=js&\"","\r\n\r\n","import { render, staticRenderFns } from \"./ViewPvPanelsDialog.vue?vue&type=template&id=7cd202fb&scoped=true&\"\nimport script from \"./ViewPvPanelsDialog.vue?vue&type=script&lang=js&\"\nexport * from \"./ViewPvPanelsDialog.vue?vue&type=script&lang=js&\"\nimport style0 from \"./ViewPvPanelsDialog.vue?vue&type=style&index=0&id=7cd202fb&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"7cd202fb\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('gdw-dialog',{staticClass:\"dialog-operate\",attrs:{\"width\":800,\"title\":_vm.lang.Layout_PanelDetails_Title,\"show\":_vm.showModal}},[_c('img',{staticClass:\"close-img\",attrs:{\"src\":\"/Images/add_device/dialog_close.png\"},on:{\"click\":function($event){_vm.showModal = false}}}),_vm._v(\" \"),_c('div',{staticClass:\"table-con\"},[_c('el-table',{staticStyle:{\"width\":\"100%\"},attrs:{\"stripe\":\"\",\"height\":\"400\",\"data\":_vm.computedPanelTableData,\"header-cell-style\":{ height: '42px', background: '#38474E', color: '#fff'}}},[_c('el-table-column',{attrs:{\"label\":_vm.lang.Layout_PanelDetails_No,\"width\":\"100\"},scopedSlots:_vm._u([{key:\"default\",fn:function(scope){return [_c('span',[_vm._v(_vm._s(scope.row.no))])]}}])}),_vm._v(\" \"),_c('el-table-column',{attrs:{\"label\":_vm.lang.Layout_PanelDetails_DeviceSn,\"width\":\"240\"},scopedSlots:_vm._u([{key:\"default\",fn:function(scope){return [_c('span',[_vm._v(_vm._s(scope.row.inverterSn))])]}}])}),_vm._v(\" \"),_c('el-table-column',{attrs:{\"label\":_vm.lang.Layout_PanelDetails_Model},scopedSlots:_vm._u([{key:\"default\",fn:function(scope){return [_c('span',[_vm._v(_vm._s(scope.row.model))])]}}])}),_vm._v(\" \"),_c('el-table-column',{attrs:{\"label\":_vm.lang.Layout_PanelDetails_Panelname},scopedSlots:_vm._u([{key:\"default\",fn:function(scope){return [_c('span',[_vm._v(_vm._s(scope.row.name))])]}}])})],1),_vm._v(\" \"),_c('gdw-pager',{staticStyle:{\"margin\":\"20px 0\",\"text-align\":\"right\"},attrs:{\"current-page\":_vm.panelTablePage.pageIndex,\"page-sizes\":[_vm.panelTablePage.pageSize],\"layout\":\"prev, pager, next, sizes,total, jumper\",\"total\":_vm.panelTablePage.record},on:{\"current-change\":_vm.handlePageChange}})],1),_vm._v(\" \"),_c('gdw-dialog-button-group',{staticStyle:{\"display\":\"none\"},attrs:{\"slot\":\"button\",\"line\":\"true\"},slot:\"button\"},[_c('button',[_vm._v(_vm._s(_vm.lang.oCancel))])])],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","const ua = navigator.userAgent;\nexport var Platform;\n(function (Platform) {\n Platform.IS_MAC = navigator.appVersion.indexOf('Mac') > 0;\n Platform.IS_IOS = !!ua.match(/(iPad|iPhone|iPod)/g);\n Platform.IS_WINDOWS = navigator.appVersion.indexOf('Win') > 0;\n Platform.IS_IE = ua.indexOf('MSIE') >= 0;\n Platform.IS_IE11 = !!ua.match(/Trident\\/7\\./);\n Platform.IS_EDGE = !!ua.match(/Edge\\//);\n /**\n * A flag indicating whether the browser is Netscape (including Firefox).\n */\n Platform.IS_NETSCAPE = ua.indexOf('Mozilla/') >= 0 &&\n ua.indexOf('MSIE') < 0 &&\n ua.indexOf('Edge/') < 0;\n /**\n * A flag indicating whether the the this is running inside a Chrome App.\n */\n Platform.IS_CHROME_APP = window.chrome != null &&\n window.chrome.app != null &&\n window.chrome.app.runtime != null;\n Platform.IS_CHROME = ua.indexOf('Chrome/') >= 0 && ua.indexOf('Edge/') < 0;\n Platform.IS_OPERA = ua.indexOf('Opera/') >= 0 || ua.indexOf('OPR/') >= 0;\n Platform.IS_FIREFOX = ua.indexOf('Firefox/') >= 0;\n Platform.IS_SAFARI = ua.indexOf('AppleWebKit/') >= 0 &&\n ua.indexOf('Chrome/') < 0 &&\n ua.indexOf('Edge/') < 0;\n /**\n * A flag indicating whether this device supports touchstart/-move/-end\n * events (Apple iOS, Android, Chromebook and Chrome Browser on touch-enabled\n * devices).\n */\n Platform.SUPPORT_TOUCH = 'ontouchstart' in document.documentElement;\n /**\n * A flag indicating whether this device supports Microsoft pointer events.\n */\n Platform.SUPPORT_POINTER = window.PointerEvent != null && !Platform.IS_MAC;\n Platform.SUPPORT_PASSIVE = false; // eslint-disable-line import/no-mutable-exports\n try {\n const options = Object.defineProperty({}, 'passive', {\n get() {\n Platform.SUPPORT_PASSIVE = true;\n },\n });\n const div = document.createElement('div');\n if (div.addEventListener) {\n div.addEventListener('click', () => { }, options);\n }\n }\n catch (err) {\n // pass\n }\n /**\n * A flag indicating whether foreignObject support is not available. This\n * is the case for Opera, older SVG-based browsers and all versions of IE.\n */\n Platform.NO_FOREIGNOBJECT = !document.createElementNS ||\n `${document.createElementNS('http://www.w3.org/2000/svg', 'foreignObject')}` !== '[object SVGForeignObjectElement]' ||\n ua.indexOf('Opera/') >= 0;\n Platform.SUPPORT_FOREIGNOBJECT = !Platform.NO_FOREIGNOBJECT;\n})(Platform || (Platform = {}));\n(function (Platform) {\n function getHMRStatus() {\n const mod = window.module;\n if (mod != null && mod.hot != null && mod.hot.status != null) {\n return mod.hot.status();\n }\n return 'unkonwn';\n }\n Platform.getHMRStatus = getHMRStatus;\n function isApplyingHMR() {\n return getHMRStatus() === 'apply';\n }\n Platform.isApplyingHMR = isApplyingHMR;\n // This function checks if the specified event is supported by the browser.\n // Source: http://perfectionkills.com/detecting-event-support-without-browser-sniffing/\n const TAGNAMES = {\n select: 'input',\n change: 'input',\n submit: 'form',\n reset: 'form',\n error: 'img',\n load: 'img',\n abort: 'img',\n };\n function isEventSupported(event) {\n const elem = document.createElement(TAGNAMES[event] || 'div');\n const eventName = `on${event}`;\n let isSupported = eventName in elem;\n if (!isSupported) {\n elem.setAttribute(eventName, 'return;');\n isSupported = typeof elem[eventName] === 'function';\n }\n return isSupported;\n }\n Platform.isEventSupported = isEventSupported;\n})(Platform || (Platform = {}));\n//# sourceMappingURL=index.js.map","import JQuery from 'jquery';\nimport 'jquery-mousewheel';\nimport { Platform } from '../platform';\nif (Platform.SUPPORT_PASSIVE) {\n JQuery.event.special.touchstart = {\n setup(data, ns, handle) {\n if (!this.addEventListener) {\n return false;\n }\n this.addEventListener('touchstart', handle, {\n passive: true,\n });\n },\n };\n const hook = JQuery.event.special.mousewheel;\n if (hook) {\n const setup = hook.setup;\n hook.setup = function () {\n const addEventListener = this.addEventListener;\n if (!addEventListener) {\n return false;\n }\n this.addEventListener = (name, handler) => {\n addEventListener.call(this, name, handler, { passive: true });\n };\n setup.call(this);\n this.addEventListener = addEventListener;\n };\n }\n}\n// compatible with NodeList.prototype.forEach() before chrome 51\n// https://developer.mozilla.org/en-US/docs/Web/API/NodeList/forEach\nif (window.NodeList && !NodeList.prototype.forEach) {\n NodeList.prototype.forEach = Array.prototype.forEach;\n}\n// compatible with ParentNode.append() before chrome 54\n// https://github.com/jserz/js_piece/blob/master/DOM/ParentNode/append()/append().md\n;\n(function (arr) {\n arr.forEach((item) => {\n if (Object.prototype.hasOwnProperty.call(item, 'append')) {\n return;\n }\n Object.defineProperty(item, 'append', {\n configurable: true,\n enumerable: true,\n writable: true,\n value(...args) {\n const docFrag = document.createDocumentFragment();\n args.forEach((arg) => {\n const isNode = arg instanceof Node;\n docFrag.appendChild(isNode ? arg : document.createTextNode(String(arg)));\n });\n this.appendChild(docFrag);\n },\n });\n });\n})([Element.prototype, Document.prototype, DocumentFragment.prototype]);\n//# sourceMappingURL=index.js.map","export { isNull, isNil, isUndefined, isString, isNumber, isBoolean, isObject, isArray, isArrayLike, isFunction, } from 'lodash-es';\nexport const isWindow = (value) => value && value === value.window;\nexport const isNumeric = (value) => !Array.isArray(value) && value - parseFloat(value) + 1 >= 0;\n//# sourceMappingURL=lang.js.map","export function diff(oldList, newList, key) {\n const oldMap = makeKeyIndexAndFree(oldList, key);\n const newMap = makeKeyIndexAndFree(newList, key);\n const newFree = newMap.free;\n const oldKeyIndex = oldMap.keyIndex;\n const newKeyIndex = newMap.keyIndex;\n const moves = [];\n const children = [];\n let i = 0;\n let item;\n let itemKey;\n let freeIndex = 0;\n while (i < oldList.length) {\n item = oldList[i];\n itemKey = item[key];\n if (itemKey) {\n // eslint-disable-next-line\n if (!newKeyIndex.hasOwnProperty(itemKey)) {\n children.push(null);\n }\n else {\n const newItemIndex = newKeyIndex[itemKey];\n children.push(newList[newItemIndex]);\n }\n }\n else {\n freeIndex += 1;\n const freeItem = newFree[freeIndex];\n children.push(freeItem || null);\n }\n i += 1;\n }\n const simulateList = children.slice(0);\n i = 0;\n while (i < simulateList.length) {\n if (simulateList[i] === null) {\n remove(i);\n removeSimulate(i);\n }\n else {\n i += 1;\n }\n }\n let j = (i = 0);\n while (i < newList.length) {\n item = newList[i];\n itemKey = item[key];\n const simulateItem = simulateList[j];\n if (simulateItem) {\n const simulateItemKey = simulateItem[key];\n if (itemKey === simulateItemKey) {\n j += 1;\n }\n else {\n // eslint-disable-next-line\n if (!oldKeyIndex.hasOwnProperty(itemKey)) {\n insert(i, item);\n }\n else {\n const nextSimulateItem = simulateList[j + 1];\n if (nextSimulateItem) {\n const nextItemKey = nextSimulateItem[key];\n if (nextItemKey === itemKey) {\n remove(i);\n removeSimulate(j);\n j += 1;\n }\n else {\n insert(i, item);\n }\n }\n }\n }\n }\n else {\n insert(i, item);\n }\n i += 1;\n }\n let k = simulateList.length - j;\n while ((j += 1) < simulateList.length) {\n k -= 1;\n remove(k + i);\n }\n function remove(index) {\n const move = { index, type: 0, item: null };\n moves.push(move);\n }\n function insert(index, item) {\n const move = { index, item, type: 1 };\n moves.push(move);\n }\n function removeSimulate(index) {\n simulateList.splice(index, 1);\n }\n return {\n moves,\n };\n}\nfunction makeKeyIndexAndFree(list, key) {\n const keyIndex = {};\n const free = [];\n for (let i = 0, len = list.length; i < len; i += 1) {\n const item = list[i];\n const itemKey = item[key];\n if (itemKey) {\n keyIndex[itemKey] = i;\n }\n else {\n free.push(item);\n }\n }\n return {\n keyIndex,\n free,\n };\n}\n//# sourceMappingURL=diff.js.map","/**\n * @see https://www.typescriptlang.org/docs/handbook/mixins.html\n */\nexport function applyMixins(derivedCtor, ...baseCtors) {\n baseCtors.forEach((baseCtor) => {\n Object.getOwnPropertyNames(baseCtor.prototype).forEach((name) => {\n if (name !== 'constructor') {\n Object.defineProperty(derivedCtor.prototype, name, Object.getOwnPropertyDescriptor(baseCtor.prototype, name));\n }\n });\n });\n}\n//# sourceMappingURL=mixins.js.map","const extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array &&\n function (d, b) {\n d.__proto__ = b; // eslint-disable-line no-proto\n }) ||\n function (d, b) {\n // eslint-disable-next-line no-restricted-syntax\n for (const p in b) {\n if (Object.prototype.hasOwnProperty.call(b, p)) {\n d[p] = b[p];\n }\n }\n };\n/**\n * @see https://github.com/microsoft/TypeScript/blob/5c85febb0ce9d6088cbe9b09cb42f73f9ee8ea05/src/compiler/transformers/es2015.ts#L4309\n */\n// eslint-disable-next-line\nexport function inherit(cls, base) {\n extendStatics(cls, base);\n function tmp() {\n this.constructor = cls;\n }\n cls.prototype =\n base === null\n ? Object.create(base)\n : ((tmp.prototype = base.prototype), new tmp());\n}\nclass A {\n}\nconst isNativeClass = /^\\s*class\\s+/.test(`${A}`) || /^\\s*class\\s*\\{/.test(`${class {\n}}`);\n/**\n * Extends class with specified class name.\n */\nexport function createClass(className, base) {\n let cls;\n if (isNativeClass) {\n cls = class extends base {\n };\n }\n else {\n cls = function () {\n return base.apply(this, arguments); // eslint-disable-line\n };\n inherit(cls, base);\n }\n Object.defineProperty(cls, 'name', { value: className });\n return cls;\n}\n//# sourceMappingURL=inherit.js.map","export { has, pick, forIn, merge, extend, isEqual, isEmpty, isObject, isPlainObject, clone, cloneDeep, defaults, defaultsDeep, } from 'lodash-es';\nexport * from './mixins';\nexport * from './inherit';\nexport function ensure(value, defaultValue) {\n return value != null ? value : defaultValue;\n}\nexport function getValue(obj, key, defaultValue) {\n const value = obj != null ? obj[key] : null;\n return defaultValue !== undefined ? ensure(value, defaultValue) : value;\n}\nexport function getNumber(obj, key, defaultValue) {\n let value = obj != null ? obj[key] : null;\n if (value == null) {\n return defaultValue;\n }\n value = +value;\n if (Number.isNaN(value) || !Number.isFinite(value)) {\n return defaultValue;\n }\n return value;\n}\nexport function getBoolean(obj, key, defaultValue) {\n const value = obj != null ? obj[key] : null;\n if (value == null) {\n return defaultValue;\n }\n return !!value;\n}\nexport function isMaliciousProp(prop) {\n return prop === '__proto__';\n}\nexport function getByPath(obj, path, delimiter = '/') {\n let ret;\n const keys = Array.isArray(path) ? path : path.split(delimiter);\n if (keys.length) {\n ret = obj;\n while (keys.length) {\n const key = keys.shift();\n if (Object(ret) === ret && key && key in ret) {\n ret = ret[key];\n }\n else {\n return undefined;\n }\n }\n }\n return ret;\n}\nexport function setByPath(obj, path, value, delimiter = '/') {\n const keys = Array.isArray(path) ? path : path.split(delimiter);\n const lastKey = keys.pop();\n if (lastKey && !isMaliciousProp(lastKey)) {\n let diver = obj;\n keys.forEach((key) => {\n if (!isMaliciousProp(key)) {\n if (diver[key] == null) {\n diver[key] = {};\n }\n diver = diver[key];\n }\n });\n diver[lastKey] = value;\n }\n return obj;\n}\nexport function unsetByPath(obj, path, delimiter = '/') {\n const keys = Array.isArray(path) ? path.slice() : path.split(delimiter);\n const propertyToRemove = keys.pop();\n if (propertyToRemove) {\n if (keys.length > 0) {\n const parent = getByPath(obj, keys);\n if (parent) {\n delete parent[propertyToRemove];\n }\n }\n else {\n delete obj[propertyToRemove];\n }\n }\n return obj;\n}\nexport function flatten(obj, delim = '/', stop) {\n const ret = {};\n Object.keys(obj).forEach((key) => {\n const val = obj[key];\n let deep = typeof val === 'object' || Array.isArray(val);\n if (deep && stop && stop(val)) {\n deep = false;\n }\n if (deep) {\n const flatObject = flatten(val, delim, stop);\n Object.keys(flatObject).forEach((flatKey) => {\n ret[key + delim + flatKey] = flatObject[flatKey];\n });\n }\n else {\n ret[key] = val;\n }\n });\n // eslint-disable-next-line no-restricted-syntax\n for (const key in obj) {\n if (!Object.prototype.hasOwnProperty.call(obj, key)) {\n continue;\n }\n }\n return ret;\n}\n//# sourceMappingURL=object.js.map","export function exec(exp) {\n let result = null;\n try {\n result = window.eval(exp); // eslint-disable-line\n }\n catch (e) {\n // pass\n }\n return result;\n}\n//# sourceMappingURL=eval.js.map","import { camelCase, startCase, upperCase, lowerCase, upperFirst, } from 'lodash-es';\nexport { \n// kebabCase,\n// startCase,\n// snakeCase,\n// lowerCase,\n// upperCase,\n// capitalize,\nlowerFirst, upperFirst, camelCase, } from 'lodash-es';\n// @see: https://medium.com/@robertsavian/javascript-case-converters-using-lodash-4f2f964091cc\nconst cacheStringFunction = (fn) => {\n const cache = Object.create(null);\n return ((str) => {\n const hit = cache[str];\n return hit || (cache[str] = fn(str));\n });\n};\nexport const kebabCase = cacheStringFunction((s) => s.replace(/\\B([A-Z])/g, '-$1').toLowerCase());\nexport const pascalCase = cacheStringFunction((s) => startCase(camelCase(s)).replace(/ /g, ''));\nexport const constantCase = cacheStringFunction((s) => upperCase(s).replace(/ /g, '_'));\nexport const dotCase = cacheStringFunction((s) => lowerCase(s).replace(/ /g, '.'));\nexport const pathCase = cacheStringFunction((s) => lowerCase(s).replace(/ /g, '/'));\nexport const sentenceCase = cacheStringFunction((s) => upperFirst(lowerCase(s)));\nexport const titleCase = cacheStringFunction((s) => startCase(camelCase(s)));\n//# sourceMappingURL=format.js.map","/* eslint-disable no-bitwise */\n/**\n * Return a simple hash code from a string.\n * Source from: https://github.com/sindresorhus/fnv1a/blob/master/index.js#L25\n */\nexport function hashcode(str) {\n let hash = 2166136261;\n let isUnicoded = false;\n let string = str;\n for (let i = 0, ii = string.length; i < ii; i += 1) {\n let characterCode = string.charCodeAt(i);\n // Non-ASCII characters trigger the Unicode escape logic\n if (characterCode > 0x7f && !isUnicoded) {\n string = unescape(encodeURIComponent(string));\n characterCode = string.charCodeAt(i);\n isUnicoded = true;\n }\n hash ^= characterCode;\n hash += (hash << 1) + (hash << 4) + (hash << 7) + (hash << 8) + (hash << 24);\n }\n return hash >>> 0;\n}\n//# sourceMappingURL=hashcode.js.map","/* eslint-disable no-bitwise */\nexport function uuid() {\n // credit: http://stackoverflow.com/posts/2117523/revisions\n // return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, (c) => {\n // const r = (Math.random() * 16) | 0\n // const v = c === 'x' ? r : (r & 0x3) | 0x8\n // return v.toString(16)\n // })\n let res = '';\n const template = 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx';\n for (let i = 0, len = template.length; i < len; i += 1) {\n const s = template[i];\n const r = (Math.random() * 16) | 0;\n const v = s === 'x' ? r : s === 'y' ? (r & 0x3) | 0x8 : s;\n res += v.toString(16);\n }\n return res;\n}\n//# sourceMappingURL=uuid.js.map","import JQuery from 'jquery';\nexport function sanitizeHTML(html, options = {}) {\n // If documentContext (second parameter) is not specified or given as\n // `null` or `undefined`, a new document is used. Inline events will not\n // execute when the HTML is parsed; this includes, for example, sending\n // GET requests for images.\n // If keepScripts (last parameter) is `false`, scripts are not executed.\n const nodes = JQuery.parseHTML(html, null, false);\n nodes.forEach((node) => {\n const elem = node;\n if (elem) {\n const attrs = elem.attributes;\n if (attrs) {\n for (let i = 0, ii = attrs.length; i < ii; i += 1) {\n const attr = attrs.item(i);\n if (attr) {\n const val = attr.value.toLowerCase();\n const name = attr.name.toLowerCase();\n // Removes attribute name starts with \"on\" (e.g. onload,\n // onerror...).\n // Removes attribute value starts with \"javascript:\" pseudo\n // protocol (e.g. `href=\"javascript:alert(1)\"`).\n if (name.startsWith('on') ||\n val.startsWith('javascript:') || // eslint-disable-line no-script-url\n // ref: https://lgtm.com/rules/1510852698359/\n val.startsWith('data:') ||\n val.startsWith('vbscript:')) {\n elem.removeAttribute(name);\n }\n }\n }\n }\n }\n });\n if (options.raw) {\n return nodes;\n }\n return JQuery('
').append(nodes).html();\n}\n//# sourceMappingURL=html.js.map","// @see: https://github.com/microsoft/TypeScript/blob/master/src/compiler/checker.ts\n/**\n * Given a name and a list of names that are not equal to the name, return a\n * spelling suggestion if there is one that is close enough. Names less than\n * length 3 only check for case-insensitive equality, not Levenshtein distance.\n *\n * - If there is a candidate that's the same except for case, return that.\n * - If there is a candidate that's within one edit of the name, return that.\n * - Otherwise, return the candidate with the smallest Levenshtein distance,\n * except for candidates:\n * * With no name\n * * Whose length differs from the target name by more than 0.34 of the\n * length of the name.\n * * Whose levenshtein distance is more than 0.4 of the length of the\n * name (0.4 allows 1 substitution/transposition for every 5 characters,\n * and 1 insertion/deletion at 3 characters)\n */\nexport function getSpellingSuggestion(name, candidates, getName) {\n const maximumLengthDifference = Math.min(2, Math.floor(name.length * 0.34));\n // If the best result isn't better than this, don't bother.\n let bestDistance = Math.floor(name.length * 0.4) + 1;\n let bestCandidate;\n let justCheckExactMatches = false;\n const nameLowerCase = name.toLowerCase();\n // eslint-disable-next-line\n for (const candidate of candidates) {\n const candidateName = getName(candidate);\n if (candidateName !== undefined &&\n Math.abs(candidateName.length - nameLowerCase.length) <=\n maximumLengthDifference) {\n const candidateNameLowerCase = candidateName.toLowerCase();\n if (candidateNameLowerCase === nameLowerCase) {\n if (candidateName === name) {\n continue;\n }\n return candidate;\n }\n if (justCheckExactMatches) {\n continue;\n }\n if (candidateName.length < 3) {\n // Don't bother, user would have noticed a\n // 2-character name having an extra character.\n continue;\n }\n // Only care about a result better than the best so far.\n const distance = levenshteinWithMax(nameLowerCase, candidateNameLowerCase, bestDistance - 1);\n if (distance === undefined) {\n continue;\n }\n if (distance < 3) {\n justCheckExactMatches = true;\n bestCandidate = candidate;\n }\n else {\n // Debug.assert(distance < bestDistance)\n bestDistance = distance;\n bestCandidate = candidate;\n }\n }\n }\n return bestCandidate;\n}\nfunction levenshteinWithMax(s1, s2, max) {\n let previous = new Array(s2.length + 1); // eslint-disable-line\n let current = new Array(s2.length + 1); // eslint-disable-line\n /** Represents any value > max. We don't care about the particular value. */\n const big = max + 1;\n for (let i = 0; i <= s2.length; i += 1) {\n previous[i] = i;\n }\n for (let i = 1; i <= s1.length; i += 1) {\n const c1 = s1.charCodeAt(i - 1);\n const minJ = i > max ? i - max : 1;\n const maxJ = s2.length > max + i ? max + i : s2.length;\n current[0] = i;\n /** Smallest value of the matrix in the ith column. */\n let colMin = i;\n for (let j = 1; j < minJ; j += 1) {\n current[j] = big;\n }\n for (let j = minJ; j <= maxJ; j += 1) {\n const dist = c1 === s2.charCodeAt(j - 1)\n ? previous[j - 1]\n : Math.min(\n /* delete */ previous[j] + 1, \n /* insert */ current[j - 1] + 1, \n /* substitute */ previous[j - 1] + 2);\n current[j] = dist;\n colMin = Math.min(colMin, dist);\n }\n for (let j = maxJ + 1; j <= s2.length; j += 1) {\n current[j] = big;\n }\n if (colMin > max) {\n // Give up -- everything in this column is > max\n // and it can't get better in future columns.\n return undefined;\n }\n const temp = previous;\n previous = current;\n current = temp;\n }\n const res = previous[s2.length];\n return res > max ? undefined : res;\n}\n//# sourceMappingURL=suggestion.js.map","export { isNaN, isNumber, isFinite, isInteger, isSafeInteger, clamp, inRange, toFinite, toNumber, toInteger, toSafeInteger, parseInt, } from 'lodash-es';\nexport { isNumeric } from '../lang/lang';\n/**\n * Returns the remainder of division of `n` by `m`. You should use this\n * instead of the built-in operation as the built-in operation does not\n * properly handle negative numbers.\n */\nexport function mod(n, m) {\n return ((n % m) + m) % m;\n}\nexport function random(lower, upper) {\n if (upper == null) {\n upper = lower == null ? 1 : lower; // eslint-disable-line\n lower = 0; // eslint-disable-line\n }\n else if (upper < lower) {\n const tmp = lower;\n lower = upper; // eslint-disable-line\n upper = tmp; // eslint-disable-line\n }\n return Math.floor(Math.random() * (upper - lower + 1) + lower);\n}\nexport function isPercentage(val) {\n return typeof val === 'string' && val.slice(-1) === '%';\n}\nexport function normalizePercentage(num, ref) {\n if (num == null) {\n return 0;\n }\n let raw;\n if (typeof num === 'string') {\n raw = parseFloat(num);\n if (isPercentage(num)) {\n raw /= 100;\n if (Number.isFinite(raw)) {\n return raw * ref;\n }\n }\n }\n else {\n raw = num;\n }\n if (!Number.isFinite(raw)) {\n return 0;\n }\n if (raw > 0 && raw < 1) {\n return raw * ref;\n }\n return raw;\n}\nexport function parseCssNumeric(val, units) {\n function getUnit(regexp) {\n const matches = new RegExp(`(?:\\\\d+(?:\\\\.\\\\d+)*)(${regexp})$`).exec(val);\n if (!matches) {\n return null;\n }\n return matches[1];\n }\n const number = parseFloat(val);\n if (Number.isNaN(number)) {\n return null;\n }\n // determine the unit\n let regexp;\n if (units == null) {\n // accept any unit, as well as no unit\n regexp = '[A-Za-z]*';\n }\n else if (Array.isArray(units)) {\n if (units.length === 0) {\n return null;\n }\n regexp = units.join('|');\n }\n else if (typeof units === 'string') {\n regexp = units;\n }\n const unit = getUnit(regexp);\n if (unit === null) {\n return null;\n }\n return {\n unit,\n value: number,\n };\n}\nexport function normalizeSides(box) {\n if (typeof box === 'object') {\n let left = 0;\n let top = 0;\n let right = 0;\n let bottom = 0;\n if (box.vertical != null && Number.isFinite(box.vertical)) {\n top = bottom = box.vertical;\n }\n if (box.horizontal != null && Number.isFinite(box.horizontal)) {\n right = left = box.horizontal;\n }\n if (box.left != null && Number.isFinite(box.left))\n left = box.left;\n if (box.top != null && Number.isFinite(box.top))\n top = box.top;\n if (box.right != null && Number.isFinite(box.right))\n right = box.right;\n if (box.bottom != null && Number.isFinite(box.bottom))\n bottom = box.bottom;\n return { top, right, bottom, left };\n }\n let val = 0;\n if (box != null && Number.isFinite(box)) {\n val = box;\n }\n return { top: val, right: val, bottom: val, left: val };\n}\n//# sourceMappingURL=number.js.map","export { isFunction, once, noop, debounce, defer } from 'lodash-es';\nexport function apply(fn, ctx, args) {\n if (args) {\n switch (args.length) {\n case 0:\n return fn.call(ctx);\n case 1:\n return fn.call(ctx, args[0]);\n case 2:\n return fn.call(ctx, args[0], args[1]);\n case 3:\n return fn.call(ctx, args[0], args[1], args[2]);\n case 4:\n return fn.call(ctx, args[0], args[1], args[2], args[3]);\n case 5:\n return fn.call(ctx, args[0], args[1], args[2], args[3], args[4]);\n case 6:\n return fn.call(ctx, args[0], args[1], args[2], args[3], args[4], args[5]);\n default:\n return fn.apply(ctx, args);\n }\n }\n return fn.call(ctx);\n}\nexport function call(fn, ctx, ...args) {\n return apply(fn, ctx, args);\n}\nfunction repush(array, item) {\n for (let i = 0, ii = array.length; i < ii; i += 1) {\n if (array[i] === item) {\n return array.push(array.splice(i, 1)[0]);\n }\n }\n}\nexport function cacher(fn, ctx, postProcessor) {\n const keys = [];\n const cache = {};\n const f = (...args) => {\n let hasCache = false;\n const key = args.join('\\u2400');\n if (key in cache) {\n hasCache = true;\n repush(keys, key);\n }\n else {\n if (keys.length >= 1000) {\n delete cache[keys.shift()];\n }\n keys.push(key);\n cache[key] = apply(fn, ctx || null, args);\n }\n return postProcessor ? postProcessor(cache[key], hasCache) : cache[key];\n };\n return f;\n}\n//# sourceMappingURL=function.js.map","export function isAsyncLike(obj) {\n return typeof obj === 'object' && obj.then && typeof obj.then === 'function';\n}\nexport function isAsync(obj) {\n return obj != null && (obj instanceof Promise || isAsyncLike(obj));\n}\nexport function toAsyncBoolean(...inputs) {\n const results = [];\n inputs.forEach((arg) => {\n if (Array.isArray(arg)) {\n results.push(...arg);\n }\n else {\n results.push(arg);\n }\n });\n const hasAsync = results.some((res) => isAsync(res));\n if (hasAsync) {\n const deferres = results.map((res) => isAsync(res) ? res : Promise.resolve(res !== false));\n return Promise.all(deferres).then((arr) => arr.reduce((memo, item) => item !== false && memo, true));\n }\n return results.every((res) => res !== false);\n}\nexport function toDeferredBoolean(...inputs) {\n const ret = toAsyncBoolean(inputs);\n return typeof ret === 'boolean' ? Promise.resolve(ret) : ret;\n}\n//# sourceMappingURL=async.js.map","const rclass = /[\\t\\r\\n\\f]/g;\nconst rnotwhite = /\\S+/g;\nconst fillSpaces = (str) => ` ${str} `;\nexport function getClass(elem) {\n return (elem && elem.getAttribute && elem.getAttribute('class')) || '';\n}\nexport function hasClass(elem, selector) {\n if (elem == null || selector == null) {\n return false;\n }\n const classNames = fillSpaces(getClass(elem));\n const className = fillSpaces(selector);\n return elem.nodeType === 1\n ? classNames.replace(rclass, ' ').includes(className)\n : false;\n}\nexport function addClass(elem, selector) {\n if (elem == null || selector == null) {\n return;\n }\n if (typeof selector === 'function') {\n return addClass(elem, selector(getClass(elem)));\n }\n if (typeof selector === 'string' && elem.nodeType === 1) {\n const classes = selector.match(rnotwhite) || [];\n const oldValue = fillSpaces(getClass(elem)).replace(rclass, ' ');\n let newValue = classes.reduce((memo, cls) => {\n if (memo.indexOf(fillSpaces(cls)) < 0) {\n return `${memo}${cls} `;\n }\n return memo;\n }, oldValue);\n newValue = newValue.trim();\n if (oldValue !== newValue) {\n elem.setAttribute('class', newValue);\n }\n }\n}\nexport function removeClass(elem, selector) {\n if (elem == null) {\n return;\n }\n if (typeof selector === 'function') {\n return removeClass(elem, selector(getClass(elem)));\n }\n if ((!selector || typeof selector === 'string') && elem.nodeType === 1) {\n const classes = (selector || '').match(rnotwhite) || [];\n const oldValue = fillSpaces(getClass(elem)).replace(rclass, ' ');\n let newValue = classes.reduce((memo, cls) => {\n const className = fillSpaces(cls);\n if (memo.indexOf(className) > -1) {\n return memo.replace(className, ' ');\n }\n return memo;\n }, oldValue);\n newValue = selector ? newValue.trim() : '';\n if (oldValue !== newValue) {\n elem.setAttribute('class', newValue);\n }\n }\n}\nexport function toggleClass(elem, selector, stateVal) {\n if (elem == null || selector == null) {\n return;\n }\n if (stateVal != null && typeof selector === 'string') {\n stateVal ? addClass(elem, selector) : removeClass(elem, selector);\n return;\n }\n if (typeof selector === 'function') {\n return toggleClass(elem, selector(getClass(elem), stateVal), stateVal);\n }\n if (typeof selector === 'string') {\n const metches = selector.match(rnotwhite) || [];\n metches.forEach((cls) => {\n hasClass(elem, cls) ? removeClass(elem, cls) : addClass(elem, cls);\n });\n }\n}\n//# sourceMappingURL=class.js.map","import { hasClass } from './class';\nlet idCounter = 0;\nexport function uniqueId() {\n idCounter += 1;\n return `v${idCounter}`;\n}\nexport function ensureId(elem) {\n if (elem.id == null || elem.id === '') {\n elem.id = uniqueId();\n }\n return elem.id;\n}\n/**\n * Returns true if object is an instance of SVGGraphicsElement.\n * @see https://developer.mozilla.org/en-US/docs/Web/API/SVGGraphicsElement\n */\nexport function isSVGGraphicsElement(elem) {\n if (elem == null) {\n return false;\n }\n return typeof elem.getScreenCTM === 'function' && elem instanceof SVGElement;\n}\nexport const ns = {\n svg: 'http://www.w3.org/2000/svg',\n xmlns: 'http://www.w3.org/2000/xmlns/',\n xml: 'http://www.w3.org/XML/1998/namespace',\n xlink: 'http://www.w3.org/1999/xlink',\n xhtml: 'http://www.w3.org/1999/xhtml',\n};\nexport const svgVersion = '1.1';\nexport function createElement(tagName, doc = document) {\n return doc.createElement(tagName);\n}\nexport function createElementNS(tagName, namespaceURI = ns.xhtml, doc = document) {\n return doc.createElementNS(namespaceURI, tagName);\n}\nexport function createSvgElement(tagName, doc = document) {\n return createElementNS(tagName, ns.svg, doc);\n}\nexport function createSvgDocument(content) {\n if (content) {\n const xml = `${content}`; // lgtm[js/html-constructed-from-input]\n const { documentElement } = parseXML(xml, { async: false });\n return documentElement;\n }\n const svg = document.createElementNS(ns.svg, 'svg');\n svg.setAttributeNS(ns.xmlns, 'xmlns:xlink', ns.xlink);\n svg.setAttribute('version', svgVersion);\n return svg;\n}\nexport function parseXML(data, options = {}) {\n let xml;\n try {\n const parser = new DOMParser();\n if (options.async != null) {\n const instance = parser;\n instance.async = options.async;\n }\n xml = parser.parseFromString(data, options.mimeType || 'text/xml');\n }\n catch (error) {\n xml = undefined;\n }\n if (!xml || xml.getElementsByTagName('parsererror').length) {\n throw new Error(`Invalid XML: ${data}`);\n }\n return xml;\n}\nexport function tagName(node, lowercase = true) {\n const nodeName = node.nodeName;\n return lowercase ? nodeName.toLowerCase() : nodeName.toUpperCase();\n}\nexport function index(elem) {\n let index = 0;\n let node = elem.previousSibling;\n while (node) {\n if (node.nodeType === 1) {\n index += 1;\n }\n node = node.previousSibling;\n }\n return index;\n}\nexport function find(elem, selector) {\n return elem.querySelectorAll(selector);\n}\nexport function findOne(elem, selector) {\n return elem.querySelector(selector);\n}\nexport function findParentByClass(elem, className, terminator) {\n const ownerSVGElement = elem.ownerSVGElement;\n let node = elem.parentNode;\n while (node && node !== terminator && node !== ownerSVGElement) {\n if (hasClass(node, className)) {\n return node;\n }\n node = node.parentNode;\n }\n return null;\n}\nexport function contains(parent, child) {\n const bup = child && child.parentNode;\n return (parent === bup ||\n !!(bup && bup.nodeType === 1 && parent.compareDocumentPosition(bup) & 16) // eslint-disable-line no-bitwise\n );\n}\nexport function remove(elem) {\n if (elem.parentNode) {\n elem.parentNode.removeChild(elem);\n }\n}\nexport function empty(elem) {\n while (elem.firstChild) {\n elem.removeChild(elem.firstChild);\n }\n}\nexport function append(elem, elems) {\n const arr = Array.isArray(elems) ? elems : [elems];\n arr.forEach((child) => {\n if (child != null) {\n elem.appendChild(child);\n }\n });\n}\nexport function prepend(elem, elems) {\n const child = elem.firstChild;\n return child ? before(child, elems) : append(elem, elems);\n}\nexport function before(elem, elems) {\n const parent = elem.parentNode;\n if (parent) {\n const arr = Array.isArray(elems) ? elems : [elems];\n arr.forEach((child) => {\n if (child != null) {\n parent.insertBefore(child, elem);\n }\n });\n }\n}\nexport function appendTo(elem, target) {\n if (target != null) {\n target.appendChild(elem);\n }\n}\n// Determines whether a node is an HTML node\nexport function isHTMLElement(elem) {\n try {\n // Using W3 DOM2 (works for FF, Opera and Chrome)\n return elem instanceof HTMLElement;\n }\n catch (e) {\n // Browsers not supporting W3 DOM2 don't have HTMLElement and\n // an exception is thrown and we end up here. Testing some\n // properties that all elements have (works on IE7)\n return (typeof elem === 'object' &&\n elem.nodeType === 1 &&\n typeof elem.style === 'object' &&\n typeof elem.ownerDocument === 'object');\n }\n}\n//# sourceMappingURL=elem.js.map","import { ns } from './elem';\nimport { kebabCase } from '../string/format';\nconst CASE_SENSITIVE_ATTR = ['viewBox'];\nexport function getAttribute(elem, name) {\n return elem.getAttribute(name);\n}\nexport function removeAttribute(elem, name) {\n const qualified = qualifyAttr(name);\n if (qualified.ns) {\n if (elem.hasAttributeNS(qualified.ns, qualified.local)) {\n elem.removeAttributeNS(qualified.ns, qualified.local);\n }\n }\n else if (elem.hasAttribute(name)) {\n elem.removeAttribute(name);\n }\n}\nexport function setAttribute(elem, name, value) {\n if (value == null) {\n return removeAttribute(elem, name);\n }\n const qualified = qualifyAttr(name);\n if (qualified.ns && typeof value === 'string') {\n elem.setAttributeNS(qualified.ns, name, value);\n }\n else if (name === 'id') {\n elem.id = `${value}`;\n }\n else {\n elem.setAttribute(name, `${value}`);\n }\n}\nexport function setAttributes(elem, attrs) {\n Object.keys(attrs).forEach((name) => {\n setAttribute(elem, name, attrs[name]);\n });\n}\nexport function attr(elem, name, value) {\n if (name == null) {\n const attrs = elem.attributes;\n const ret = {};\n for (let i = 0; i < attrs.length; i += 1) {\n ret[attrs[i].name] = attrs[i].value;\n }\n return ret;\n }\n if (typeof name === 'string' && value === undefined) {\n return elem.getAttribute(name);\n }\n if (typeof name === 'object') {\n setAttributes(elem, name);\n }\n else {\n setAttribute(elem, name, value);\n }\n}\nexport function qualifyAttr(name) {\n if (name.indexOf(':') !== -1) {\n const combinedKey = name.split(':');\n return {\n ns: ns[combinedKey[0]],\n local: combinedKey[1],\n };\n }\n return {\n ns: null,\n local: name,\n };\n}\nexport function kebablizeAttrs(attrs) {\n const result = {};\n Object.keys(attrs).forEach((key) => {\n const name = CASE_SENSITIVE_ATTR.includes(key) ? key : kebabCase(key);\n result[name] = attrs[key];\n });\n return result;\n}\nexport function styleToObject(styleString) {\n const ret = {};\n const styles = styleString.split(';');\n styles.forEach((item) => {\n const section = item.trim();\n if (section) {\n const pair = section.split('=');\n if (pair.length) {\n ret[pair[0].trim()] = pair[1] ? pair[1].trim() : '';\n }\n }\n });\n return ret;\n}\nexport function mergeAttrs(target, source) {\n Object.keys(source).forEach((attr) => {\n if (attr === 'class') {\n target[attr] = target[attr]\n ? `${target[attr]} ${source[attr]}`\n : source[attr];\n }\n else if (attr === 'style') {\n const to = typeof target[attr] === 'object';\n const so = typeof source[attr] === 'object';\n let tt;\n let ss;\n if (to && so) {\n tt = target[attr];\n ss = source[attr];\n }\n else if (to) {\n tt = target[attr];\n ss = styleToObject(source[attr]);\n }\n else if (so) {\n tt = styleToObject(target[attr]);\n ss = source[attr];\n }\n else {\n tt = styleToObject(target[attr]);\n ss = styleToObject(source[attr]);\n }\n target[attr] = mergeAttrs(tt, ss);\n }\n else {\n target[attr] = source[attr];\n }\n });\n return target;\n}\n//# sourceMappingURL=attr.js.map","import { ObjectExt } from '../object';\nimport { mergeAttrs } from '../dom/attr';\nexport function annotate(t, annotations, opt = {}) {\n const offset = opt.offset || 0;\n const compacted = [];\n const ret = [];\n let curr;\n let prev;\n let batch = null;\n for (let i = 0; i < t.length; i += 1) {\n curr = ret[i] = t[i];\n for (let j = 0, jj = annotations.length; j < jj; j += 1) {\n const annotation = annotations[j];\n const start = annotation.start + offset;\n const end = annotation.end + offset;\n if (i >= start && i < end) {\n if (typeof curr === 'string') {\n curr = ret[i] = {\n t: t[i],\n attrs: annotation.attrs,\n };\n }\n else {\n curr.attrs = mergeAttrs(mergeAttrs({}, curr.attrs), annotation.attrs);\n }\n if (opt.includeAnnotationIndices) {\n if (curr.annotations == null) {\n curr.annotations = [];\n }\n curr.annotations.push(j);\n }\n }\n }\n prev = ret[i - 1];\n if (!prev) {\n batch = curr;\n }\n else if (ObjectExt.isObject(curr) && ObjectExt.isObject(prev)) {\n batch = batch;\n // Both previous item and the current one are annotations.\n // If the attributes didn't change, merge the text.\n if (JSON.stringify(curr.attrs) === JSON.stringify(prev.attrs)) {\n batch.t += curr.t;\n }\n else {\n compacted.push(batch);\n batch = curr;\n }\n }\n else if (ObjectExt.isObject(curr)) {\n // Previous item was a string, current item is an annotation.\n batch = batch;\n compacted.push(batch);\n batch = curr;\n }\n else if (ObjectExt.isObject(prev)) {\n // Previous item was an annotation, current item is a string.\n batch = batch;\n compacted.push(batch);\n batch = curr;\n }\n else {\n // Both previous and current item are strings.\n batch = (batch || '') + curr;\n }\n }\n if (batch != null) {\n compacted.push(batch);\n }\n return compacted;\n}\nexport function findAnnotationsAtIndex(annotations, index) {\n return annotations\n ? annotations.filter((a) => a.start < index && index <= a.end)\n : [];\n}\nexport function findAnnotationsBetweenIndexes(annotations, start, end) {\n return annotations\n ? annotations.filter((a) => (start >= a.start && start < a.end) ||\n (end > a.start && end <= a.end) ||\n (a.start >= start && a.end < end))\n : [];\n}\nexport function shiftAnnotations(annotations, index, offset) {\n if (annotations) {\n annotations.forEach((a) => {\n if (a.start < index && a.end >= index) {\n a.end += offset;\n }\n else if (a.start >= index) {\n a.start += offset;\n a.end += offset;\n }\n });\n }\n return annotations;\n}\n//# sourceMappingURL=annotate.js.map","/**\n * Replaces all spaces with the Unicode No-break space.\n * ref: http://www.fileformat.info/info/unicode/char/a0/index.htm\n *\n * IE would otherwise collapse all spaces into one. This is useful\n * e.g. in tests when you want to compare the actual DOM text content\n * without having to add the unicode character in the place of all spaces.\n */\nexport function sanitize(text) {\n return text.replace(/ /g, '\\u00A0');\n}\n//# sourceMappingURL=sanitize.js.map","/**\n * The namespace for JSON-specific functions.\n */\nexport var JSONExt;\n(function (JSONExt) {\n /**\n * A shared frozen empty JSONObject\n */\n JSONExt.emptyObject = Object.freeze({});\n /**\n * A shared frozen empty JSONArray\n */\n JSONExt.emptyArray = Object.freeze([]);\n /**\n * Test whether a JSON value is a primitive.\n *\n * @param value - The JSON value of interest.\n *\n * @returns `true` if the value is a primitive,`false` otherwise.\n */\n function isPrimitive(value) {\n return (value === null ||\n value === undefined ||\n typeof value === 'boolean' ||\n typeof value === 'number' ||\n typeof value === 'string');\n }\n JSONExt.isPrimitive = isPrimitive;\n function isArray(value) {\n return Array.isArray(value);\n }\n JSONExt.isArray = isArray;\n function isObject(value) {\n return !isPrimitive(value) && !isArray(value);\n }\n JSONExt.isObject = isObject;\n /**\n * Compare two JSON values for deep equality.\n *\n * @param first - The first JSON value of interest.\n *\n * @param second - The second JSON value of interest.\n *\n * @returns `true` if the values are equivalent, `false` otherwise.\n */\n function deepEqual(first, second) {\n // Check referential and primitive equality first.\n if (first === second) {\n return true;\n }\n // If one is a primitive, the `===` check ruled out the other.\n if (isPrimitive(first) || isPrimitive(second)) {\n return false;\n }\n // Test whether they are arrays.\n const a1 = isArray(first);\n const a2 = isArray(second);\n // Bail if the types are different.\n if (a1 !== a2) {\n return false;\n }\n // If they are both arrays, compare them.\n if (a1 && a2) {\n return deepArrayEqual(first, second);\n }\n // At this point, they must both be objects.\n return deepObjectEqual(first, second);\n }\n JSONExt.deepEqual = deepEqual;\n /**\n * Create a deep copy of a JSON value.\n *\n * @param value - The JSON value to copy.\n *\n * @returns A deep copy of the given JSON value.\n */\n function deepCopy(value) {\n // Do nothing for primitive values.\n if (isPrimitive(value)) {\n return value;\n }\n // Deep copy an array.\n if (isArray(value)) {\n return deepArrayCopy(value);\n }\n // Deep copy an object.\n return deepObjectCopy(value);\n }\n JSONExt.deepCopy = deepCopy;\n /**\n * Compare two JSON arrays for deep equality.\n */\n function deepArrayEqual(first, second) {\n // Check referential equality first.\n if (first === second) {\n return true;\n }\n // Test the arrays for equal length.\n if (first.length !== second.length) {\n return false;\n }\n // Compare the values for equality.\n for (let i = 0, n = first.length; i < n; i += 1) {\n if (!deepEqual(first[i], second[i])) {\n return false;\n }\n }\n // At this point, the arrays are equal.\n return true;\n }\n /**\n * Compare two JSON objects for deep equality.\n */\n function deepObjectEqual(first, second) {\n // Check referential equality first.\n if (first === second) {\n return true;\n }\n // Check for the first object's keys in the second object.\n // eslint-disable-next-line\n for (const key in first) {\n if (!(key in second)) {\n return false;\n }\n }\n // Check for the second object's keys in the first object.\n // eslint-disable-next-line\n for (const key in second) {\n if (!(key in first)) {\n return false;\n }\n }\n // Compare the values for equality.\n // eslint-disable-next-line\n for (const key in first) {\n if (!deepEqual(first[key], second[key])) {\n return false;\n }\n }\n // At this point, the objects are equal.\n return true;\n }\n /**\n * Create a deep copy of a JSON array.\n */\n function deepArrayCopy(value) {\n const result = new Array(value.length); // eslint-disable-line\n for (let i = 0, n = value.length; i < n; i += 1) {\n result[i] = deepCopy(value[i]);\n }\n return result;\n }\n /**\n * Create a deep copy of a JSON object.\n */\n function deepObjectCopy(value) {\n const result = {};\n Object.keys(value).forEach((key) => {\n result[key] = deepCopy(value[key]);\n });\n return result;\n }\n})(JSONExt || (JSONExt = {}));\n//# sourceMappingURL=index.js.map","export var DataUri;\n(function (DataUri) {\n function isDataUrl(url) {\n const prefix = 'data:';\n return url.substr(0, prefix.length) === prefix;\n }\n DataUri.isDataUrl = isDataUrl;\n /**\n * Converts an image at `url` to base64-encoded data uri.\n * The mime type of the image is inferred from the `url` file extension.\n */\n function imageToDataUri(url, callback) {\n // No need to convert to data uri if it is already in data uri.\n if (!url || isDataUrl(url)) {\n // Keep the async nature of the function.\n setTimeout(() => callback(null, url));\n return;\n }\n const onError = () => {\n callback(new Error(`Failed to load image: ${url}`));\n };\n const onLoad = window.FileReader\n ? // chrome, IE10+\n (xhr) => {\n if (xhr.status === 200) {\n const reader = new FileReader();\n reader.onload = (evt) => {\n const dataUri = evt.target.result;\n callback(null, dataUri);\n };\n reader.onerror = onError;\n reader.readAsDataURL(xhr.response);\n }\n else {\n onError();\n }\n }\n : (xhr) => {\n const toString = (u8a) => {\n const CHUNK_SZ = 0x8000;\n const c = [];\n for (let i = 0; i < u8a.length; i += CHUNK_SZ) {\n c.push(String.fromCharCode.apply(null, u8a.subarray(i, i + CHUNK_SZ)));\n }\n return c.join('');\n };\n if (xhr.status === 200) {\n let suffix = url.split('.').pop() || 'png';\n if (suffix === 'svg') {\n suffix = 'svg+xml';\n }\n const meta = `data:image/${suffix};base64,`;\n const bytes = new Uint8Array(xhr.response);\n const base64 = meta + btoa(toString(bytes));\n callback(null, base64);\n }\n else {\n onError();\n }\n };\n const xhr = new XMLHttpRequest();\n xhr.responseType = window.FileReader ? 'blob' : 'arraybuffer';\n xhr.open('GET', url, true);\n xhr.addEventListener('error', onError);\n xhr.addEventListener('load', () => onLoad(xhr));\n xhr.send();\n }\n DataUri.imageToDataUri = imageToDataUri;\n function dataUriToBlob(dataUrl) {\n let uri = dataUrl.replace(/\\s/g, '');\n uri = decodeURIComponent(uri);\n const index = uri.indexOf(',');\n const dataType = uri.slice(0, index); // e.g. 'data:image/jpeg;base64'\n const mime = dataType.split(':')[1].split(';')[0]; // e.g. 'image/jpeg'\n const data = uri.slice(index + 1);\n let decodedString;\n if (dataType.indexOf('base64') >= 0) {\n // data may be encoded in base64\n decodedString = atob(data);\n }\n else {\n // convert the decoded string to UTF-8\n decodedString = unescape(encodeURIComponent(data));\n }\n // write the bytes of the string to a typed array\n const ia = new Uint8Array(decodedString.length);\n for (let i = 0; i < decodedString.length; i += 1) {\n ia[i] = decodedString.charCodeAt(i);\n }\n return new Blob([ia], { type: mime });\n }\n DataUri.dataUriToBlob = dataUriToBlob;\n function downloadBlob(blob, fileName) {\n const msSaveBlob = window.navigator.msSaveBlob;\n if (msSaveBlob) {\n // requires IE 10+\n // pulls up a save dialog\n msSaveBlob(blob, fileName);\n }\n else {\n // other browsers\n // downloads directly in Chrome and Safari\n // presents a save/open dialog in Firefox\n // Firefox bug: `from` field in save dialog always shows `from:blob:`\n // https://bugzilla.mozilla.org/show_bug.cgi?id=1053327\n const url = window.URL.createObjectURL(blob);\n const link = document.createElement('a');\n link.href = url;\n link.download = fileName;\n document.body.appendChild(link);\n link.click();\n document.body.removeChild(link);\n // mark the url for garbage collection\n window.URL.revokeObjectURL(url);\n }\n }\n DataUri.downloadBlob = downloadBlob;\n function downloadDataUri(dataUrl, fileName) {\n const blob = dataUriToBlob(dataUrl);\n downloadBlob(blob, fileName);\n }\n DataUri.downloadDataUri = downloadDataUri;\n function parseViewBox(svg) {\n const matches = svg.match(/]*viewBox\\s*=\\s*([\"']?)(.+?)\\1[^>]*>/i);\n if (matches && matches[2]) {\n return matches[2].replace(/\\s+/, ' ').split(' ');\n }\n return null;\n }\n function getNumber(str) {\n const ret = parseFloat(str);\n return Number.isNaN(ret) ? null : ret;\n }\n function svgToDataUrl(svg, options = {}) {\n let viewBox = null;\n const getNumberFromViewBox = (index) => {\n if (viewBox == null) {\n viewBox = parseViewBox(svg);\n }\n if (viewBox != null) {\n return getNumber(viewBox[index]);\n }\n return null;\n };\n const getNumberFromMatches = (reg) => {\n const matches = svg.match(reg);\n if (matches && matches[2]) {\n return getNumber(matches[2]);\n }\n return null;\n };\n let w = options.width;\n if (w == null) {\n w = getNumberFromMatches(/]*width\\s*=\\s*([\"']?)(.+?)\\1[^>]*>/i);\n }\n if (w == null) {\n w = getNumberFromViewBox(2);\n }\n if (w == null) {\n throw new Error('Can not parse width from svg string');\n }\n let h = options.height;\n if (h == null) {\n h = getNumberFromMatches(/]*height\\s*=\\s*([\"']?)(.+?)\\1[^>]*>/i);\n }\n if (h == null) {\n h = getNumberFromViewBox(3);\n }\n if (h == null) {\n throw new Error('Can not parse height from svg string');\n }\n const decoded = encodeURIComponent(svg)\n .replace(/'/g, '%27')\n .replace(/\"/g, '%22');\n const header = 'data:image/svg+xml';\n const dataUrl = `${header},${decoded}`;\n return dataUrl;\n }\n DataUri.svgToDataUrl = svgToDataUrl;\n})(DataUri || (DataUri = {}));\n//# sourceMappingURL=index.js.map","import jQuery from 'jquery';\nlet millimeterSize;\nconst supportedUnits = {\n px(val) {\n return val;\n },\n mm(val) {\n return millimeterSize * val;\n },\n cm(val) {\n return millimeterSize * val * 10;\n },\n in(val) {\n return millimeterSize * val * 25.4;\n },\n pt(val) {\n return millimeterSize * ((25.4 * val) / 72);\n },\n pc(val) {\n return millimeterSize * ((25.4 * val) / 6);\n },\n};\n// eslint-disable-next-line\nexport var Unit;\n(function (Unit) {\n function measure(cssWidth, cssHeight, unit) {\n const div = jQuery('
')\n .css({\n display: 'inline-block',\n position: 'absolute',\n left: -15000,\n top: -15000,\n width: cssWidth + (unit || ''),\n height: cssHeight + (unit || ''),\n })\n .appendTo(document.body);\n const size = {\n width: div.width() || 0,\n height: div.height() || 0,\n };\n div.remove();\n return size;\n }\n Unit.measure = measure;\n function toPx(val, unit) {\n if (millimeterSize == null) {\n millimeterSize = measure(`1`, `1`, 'mm').width;\n }\n const convert = unit ? supportedUnits[unit] : null;\n if (convert) {\n return convert(val);\n }\n return val;\n }\n Unit.toPx = toPx;\n})(Unit || (Unit = {}));\n//# sourceMappingURL=index.js.map","export const requestAnimationFrame = (function () {\n let raf;\n const win = window;\n if (win != null) {\n raf =\n win.requestAnimationFrame ||\n win.webkitRequestAnimationFrame ||\n win.mozRequestAnimationFrame ||\n win.oRequestAnimationFrame ||\n win.msRequestAnimationFrame;\n if (raf != null) {\n raf = raf.bind(win);\n }\n }\n if (raf == null) {\n let lastTime = 0;\n raf = (callback) => {\n const currTime = new Date().getTime();\n const timeToCall = Math.max(0, 16 - (currTime - lastTime));\n const id = setTimeout(() => {\n callback(currTime + timeToCall);\n }, timeToCall);\n lastTime = currTime + timeToCall;\n return id;\n };\n }\n return raf;\n})();\nexport const cancelAnimationFrame = (function () {\n let caf;\n const win = window;\n if (win != null) {\n caf =\n win.cancelAnimationFrame ||\n win.webkitCancelAnimationFrame ||\n win.webkitCancelRequestAnimationFrame ||\n win.msCancelAnimationFrame ||\n win.msCancelRequestAnimationFrame ||\n win.oCancelAnimationFrame ||\n win.oCancelRequestAnimationFrame ||\n win.mozCancelAnimationFrame ||\n win.mozCancelRequestAnimationFrame;\n if (caf) {\n caf = caf.bind(win);\n }\n }\n if (caf == null) {\n caf = clearTimeout;\n }\n return caf;\n})();\n//# sourceMappingURL=af.js.map","const hyphenPattern = /-(.)/g;\nfunction camelize(str) {\n return str.replace(hyphenPattern, (_, char) => char.toUpperCase());\n}\nconst memoized = {};\nconst prefixes = ['Webkit', 'ms', 'Moz', 'O'];\nconst testStyle = document ? document.createElement('div').style : {};\nfunction getWithPrefix(name) {\n for (let i = 0; i < prefixes.length; i += 1) {\n const prefixedName = prefixes[i] + name;\n if (prefixedName in testStyle) {\n return prefixedName;\n }\n }\n return null;\n}\nexport function getVendorPrefixedName(property) {\n const name = camelize(property);\n if (memoized[name] == null) {\n const capitalizedName = name.charAt(0).toUpperCase() + name.slice(1);\n memoized[name] = name in testStyle ? name : getWithPrefix(capitalizedName);\n }\n return memoized[name];\n}\n//# sourceMappingURL=prefix.js.map","import { getVendorPrefixedName } from './prefix';\nexport function setPrefixedStyle(style, name, value) {\n const vendor = getVendorPrefixedName(name);\n if (vendor != null) {\n style[vendor] = value;\n }\n style[name] = value;\n}\nexport function getComputedStyle(elem, name) {\n // IE9+\n const computed = elem.ownerDocument &&\n elem.ownerDocument.defaultView &&\n elem.ownerDocument.defaultView.opener\n ? elem.ownerDocument.defaultView.getComputedStyle(elem, null)\n : window.getComputedStyle(elem, null);\n if (computed && name) {\n return computed.getPropertyValue(name) || computed[name];\n }\n return computed;\n}\nexport function hasScrollbars(container) {\n const style = getComputedStyle(container);\n return (style != null && (style.overflow === 'scroll' || style.overflow === 'auto'));\n}\n//# sourceMappingURL=style.js.map","export const clearSelection = (function () {\n const doc = document;\n if (doc.selection) {\n return function () {\n doc.selection.empty();\n };\n }\n if (window.getSelection) {\n return function () {\n const selection = window.getSelection();\n if (selection) {\n if (selection.empty) {\n selection.empty();\n }\n else if (selection.removeAllRanges) {\n selection.removeAllRanges();\n }\n }\n };\n }\n return function () { };\n})();\n//# sourceMappingURL=selection.js.map","export var Angle;\n(function (Angle) {\n /**\n * Converts radian angle to degree angle.\n * @param rad The radians to convert.\n */\n function toDeg(rad) {\n return ((180 * rad) / Math.PI) % 360;\n }\n Angle.toDeg = toDeg;\n /**\n * Converts degree angle to radian angle.\n * @param deg The degree angle to convert.\n * @param over360\n */\n Angle.toRad = function (deg, over360 = false) {\n const d = over360 ? deg : deg % 360;\n return (d * Math.PI) / 180;\n };\n /**\n * Returns the angle in degrees and clamps its value between `0` and `360`.\n */\n function normalize(angle) {\n return (angle % 360) + (angle < 0 ? 360 : 0);\n }\n Angle.normalize = normalize;\n})(Angle || (Angle = {}));\n//# sourceMappingURL=angle.js.map","import * as util from './util';\nimport { Angle } from './angle';\nimport { Geometry } from './geometry';\nexport class Point extends Geometry {\n constructor(x, y) {\n super();\n this.x = x == null ? 0 : x;\n this.y = y == null ? 0 : y;\n }\n get [Symbol.toStringTag]() {\n return Point.toStringTag;\n }\n /**\n * Rounds the point to the given precision.\n */\n round(precision = 0) {\n this.x = util.round(this.x, precision);\n this.y = util.round(this.y, precision);\n return this;\n }\n add(x, y) {\n const p = Point.create(x, y);\n this.x += p.x;\n this.y += p.y;\n return this;\n }\n update(x, y) {\n const p = Point.create(x, y);\n this.x = p.x;\n this.y = p.y;\n return this;\n }\n translate(dx, dy) {\n const t = Point.create(dx, dy);\n this.x += t.x;\n this.y += t.y;\n return this;\n }\n /**\n * Rotate the point by `degree` around `center`.\n */\n rotate(degree, center) {\n const p = Point.rotate(this, degree, center);\n this.x = p.x;\n this.y = p.y;\n return this;\n }\n /**\n * Scale point by `sx` and `sy` around the given `origin`. If origin is not\n * specified, the point is scaled around `0,0`.\n */\n scale(sx, sy, origin = new Point()) {\n const ref = Point.create(origin);\n this.x = ref.x + sx * (this.x - ref.x);\n this.y = ref.y + sy * (this.y - ref.y);\n return this;\n }\n /**\n * Chooses the point closest to this point from among `points`. If `points`\n * is an empty array, `null` is returned.\n */\n closest(points) {\n if (points.length === 1) {\n return Point.create(points[0]);\n }\n let ret = null;\n let min = Infinity;\n points.forEach((p) => {\n const dist = this.squaredDistance(p);\n if (dist < min) {\n ret = p;\n min = dist;\n }\n });\n return ret ? Point.create(ret) : null;\n }\n /**\n * Returns the distance between the point and another point `p`.\n */\n distance(p) {\n return Math.sqrt(this.squaredDistance(p));\n }\n /**\n * Returns the squared distance between the point and another point `p`.\n *\n * Useful for distance comparisons in which real distance is not necessary\n * (saves one `Math.sqrt()` operation).\n */\n squaredDistance(p) {\n const ref = Point.create(p);\n const dx = this.x - ref.x;\n const dy = this.y - ref.y;\n return dx * dx + dy * dy;\n }\n manhattanDistance(p) {\n const ref = Point.create(p);\n return Math.abs(ref.x - this.x) + Math.abs(ref.y - this.y);\n }\n /**\n * Returns the magnitude of the point vector.\n *\n * @see http://en.wikipedia.org/wiki/Magnitude_(mathematics)\n */\n magnitude() {\n return Math.sqrt(this.x * this.x + this.y * this.y) || 0.01;\n }\n /**\n * Returns the angle(in degrees) between vector from this point to `p` and\n * the x-axis.\n */\n theta(p = new Point()) {\n const ref = Point.create(p);\n const y = -(ref.y - this.y); // invert the y-axis.\n const x = ref.x - this.x;\n let rad = Math.atan2(y, x);\n // Correction for III. and IV. quadrant.\n if (rad < 0) {\n rad = 2 * Math.PI + rad;\n }\n return (180 * rad) / Math.PI;\n }\n /**\n * Returns the angle(in degrees) between vector from this point to `p1` and\n * the vector from this point to `p2`.\n *\n * The ordering of points `p1` and `p2` is important.\n *\n * The function returns a value between `0` and `180` when the angle (in the\n * direction from `p1` to `p2`) is clockwise, and a value between `180` and\n * `360` when the angle is counterclockwise.\n *\n * Returns `NaN` if either of the points `p1` and `p2` is equal with this point.\n */\n angleBetween(p1, p2) {\n if (this.equals(p1) || this.equals(p2)) {\n return NaN;\n }\n let angle = this.theta(p2) - this.theta(p1);\n if (angle < 0) {\n angle += 360;\n }\n return angle;\n }\n /**\n * Returns the angle(in degrees) between the line from `(0,0)` and this point\n * and the line from `(0,0)` to `p`.\n *\n * The function returns a value between `0` and `180` when the angle (in the\n * direction from this point to `p`) is clockwise, and a value between `180`\n * and `360` when the angle is counterclockwise. Returns `NaN` if called from\n * point `(0,0)` or if `p` is `(0,0)`.\n */\n vectorAngle(p) {\n const zero = new Point(0, 0);\n return zero.angleBetween(this, p);\n }\n /**\n * Converts rectangular to polar coordinates.\n */\n toPolar(origin) {\n this.update(Point.toPolar(this, origin));\n return this;\n }\n /**\n * Returns the change in angle(in degrees) that is the result of moving the\n * point from its previous position to its current position.\n *\n * More specifically, this function computes the angle between the line from\n * the ref point to the previous position of this point(i.e. current position\n * `-dx`, `-dy`) and the line from the `ref` point to the current position of\n * this point.\n *\n * The function returns a positive value between `0` and `180` when the angle\n * (in the direction from previous position of this point to its current\n * position) is clockwise, and a negative value between `0` and `-180` when\n * the angle is counterclockwise.\n *\n * The function returns `0` if the previous and current positions of this\n * point are the same (i.e. both `dx` and `dy` are `0`).\n */\n changeInAngle(dx, dy, ref = new Point()) {\n // Revert the translation and measure the change in angle around x-axis.\n return this.clone().translate(-dx, -dy).theta(ref) - this.theta(ref);\n }\n /**\n * If the point lies outside the rectangle `rect`, adjust the point so that\n * it becomes the nearest point on the boundary of `rect`.\n */\n adhereToRect(rect) {\n if (!util.containsPoint(rect, this)) {\n this.x = Math.min(Math.max(this.x, rect.x), rect.x + rect.width);\n this.y = Math.min(Math.max(this.y, rect.y), rect.y + rect.height);\n }\n return this;\n }\n /**\n * Returns the bearing(cardinal direction) between me and the given point.\n *\n * @see https://en.wikipedia.org/wiki/Cardinal_direction\n */\n bearing(p) {\n const ref = Point.create(p);\n const lat1 = Angle.toRad(this.y);\n const lat2 = Angle.toRad(ref.y);\n const lon1 = this.x;\n const lon2 = ref.x;\n const dLon = Angle.toRad(lon2 - lon1);\n const y = Math.sin(dLon) * Math.cos(lat2);\n const x = Math.cos(lat1) * Math.sin(lat2) -\n Math.sin(lat1) * Math.cos(lat2) * Math.cos(dLon);\n const brng = Angle.toDeg(Math.atan2(y, x));\n const bearings = ['NE', 'E', 'SE', 'S', 'SW', 'W', 'NW', 'N'];\n let index = brng - 22.5;\n if (index < 0) {\n index += 360;\n }\n index = parseInt((index / 45), 10);\n return bearings[index];\n }\n /**\n * Returns the cross product of the vector from me to `p1` and the vector\n * from me to `p2`.\n *\n * The left-hand rule is used because the coordinate system is left-handed.\n */\n cross(p1, p2) {\n if (p1 != null && p2 != null) {\n const a = Point.create(p1);\n const b = Point.create(p2);\n return (b.x - this.x) * (a.y - this.y) - (b.y - this.y) * (a.x - this.x);\n }\n return NaN;\n }\n /**\n * Returns the dot product of this point with given other point.\n */\n dot(p) {\n const ref = Point.create(p);\n return this.x * ref.x + this.y * ref.y;\n }\n diff(dx, dy) {\n if (typeof dx === 'number') {\n return new Point(this.x - dx, this.y - dy);\n }\n const p = Point.create(dx);\n return new Point(this.x - p.x, this.y - p.y);\n }\n /**\n * Returns an interpolation between me and point `p` for a parametert in\n * the closed interval `[0, 1]`.\n */\n lerp(p, t) {\n const ref = Point.create(p);\n return new Point((1 - t) * this.x + t * ref.x, (1 - t) * this.y + t * ref.y);\n }\n /**\n * Normalize the point vector, scale the line segment between `(0, 0)`\n * and the point in order for it to have the given length. If length is\n * not specified, it is considered to be `1`; in that case, a unit vector\n * is computed.\n */\n normalize(length = 1) {\n const scale = length / this.magnitude();\n return this.scale(scale, scale);\n }\n /**\n * Moves this point along the line starting from `ref` to this point by a\n * certain `distance`.\n */\n move(ref, distance) {\n const p = Point.create(ref);\n const rad = Angle.toRad(p.theta(this));\n return this.translate(Math.cos(rad) * distance, -Math.sin(rad) * distance);\n }\n /**\n * Returns a point that is the reflection of me with the center of inversion\n * in `ref` point.\n */\n reflection(ref) {\n return Point.create(ref).move(this, this.distance(ref));\n }\n snapToGrid(gx, gy) {\n this.x = util.snapToGrid(this.x, gx);\n this.y = util.snapToGrid(this.y, gy == null ? gx : gy);\n return this;\n }\n equals(p) {\n const ref = Point.create(p);\n return ref != null && ref.x === this.x && ref.y === this.y;\n }\n clone() {\n return Point.clone(this);\n }\n /**\n * Returns the point as a simple JSON object. For example: `{ x: 0, y: 0 }`.\n */\n toJSON() {\n return Point.toJSON(this);\n }\n serialize() {\n return `${this.x} ${this.y}`;\n }\n}\n(function (Point) {\n Point.toStringTag = `X6.Geometry.${Point.name}`;\n function isPoint(instance) {\n if (instance == null) {\n return false;\n }\n if (instance instanceof Point) {\n return true;\n }\n const tag = instance[Symbol.toStringTag];\n const point = instance;\n if ((tag == null || tag === Point.toStringTag) &&\n typeof point.x === 'number' &&\n typeof point.y === 'number' &&\n typeof point.toPolar === 'function') {\n return true;\n }\n return false;\n }\n Point.isPoint = isPoint;\n})(Point || (Point = {}));\n(function (Point) {\n function isPointLike(p) {\n return (p != null &&\n typeof p === 'object' &&\n typeof p.x === 'number' &&\n typeof p.y === 'number');\n }\n Point.isPointLike = isPointLike;\n function isPointData(p) {\n return (p != null &&\n Array.isArray(p) &&\n p.length === 2 &&\n typeof p[0] === 'number' &&\n typeof p[1] === 'number');\n }\n Point.isPointData = isPointData;\n})(Point || (Point = {}));\n(function (Point) {\n function create(x, y) {\n if (x == null || typeof x === 'number') {\n return new Point(x, y);\n }\n return clone(x);\n }\n Point.create = create;\n function clone(p) {\n if (Point.isPoint(p)) {\n return new Point(p.x, p.y);\n }\n if (Array.isArray(p)) {\n return new Point(p[0], p[1]);\n }\n return new Point(p.x, p.y);\n }\n Point.clone = clone;\n function toJSON(p) {\n if (Point.isPoint(p)) {\n return { x: p.x, y: p.y };\n }\n if (Array.isArray(p)) {\n return { x: p[0], y: p[1] };\n }\n return { x: p.x, y: p.y };\n }\n Point.toJSON = toJSON;\n /**\n * Returns a new Point object from the given polar coordinates.\n * @see http://en.wikipedia.org/wiki/Polar_coordinate_system\n */\n function fromPolar(r, rad, origin = new Point()) {\n let x = Math.abs(r * Math.cos(rad));\n let y = Math.abs(r * Math.sin(rad));\n const org = clone(origin);\n const deg = Angle.normalize(Angle.toDeg(rad));\n if (deg < 90) {\n y = -y;\n }\n else if (deg < 180) {\n x = -x;\n y = -y;\n }\n else if (deg < 270) {\n x = -x;\n }\n return new Point(org.x + x, org.y + y);\n }\n Point.fromPolar = fromPolar;\n /**\n * Converts rectangular to polar coordinates.\n */\n function toPolar(point, origin = new Point()) {\n const p = clone(point);\n const o = clone(origin);\n const dx = p.x - o.x;\n const dy = p.y - o.y;\n return new Point(Math.sqrt(dx * dx + dy * dy), // r\n Angle.toRad(o.theta(p)));\n }\n Point.toPolar = toPolar;\n function equals(p1, p2) {\n if (p1 === p2) {\n return true;\n }\n if (p1 != null && p2 != null) {\n return p1.x === p2.x && p1.y === p2.y;\n }\n return false;\n }\n Point.equals = equals;\n function equalPoints(p1, p2) {\n if ((p1 == null && p2 != null) ||\n (p1 != null && p2 == null) ||\n (p1 != null && p2 != null && p1.length !== p2.length)) {\n return false;\n }\n if (p1 != null && p2 != null) {\n for (let i = 0, ii = p1.length; i < ii; i += 1) {\n if (!equals(p1[i], p2[i])) {\n return false;\n }\n }\n }\n return true;\n }\n Point.equalPoints = equalPoints;\n /**\n * Returns a point with random coordinates that fall within the range\n * `[x1, x2]` and `[y1, y2]`.\n */\n function random(x1, x2, y1, y2) {\n return new Point(util.random(x1, x2), util.random(y1, y2));\n }\n Point.random = random;\n function rotate(point, angle, center) {\n const rad = Angle.toRad(Angle.normalize(-angle));\n const sin = Math.sin(rad);\n const cos = Math.cos(rad);\n return rotateEx(point, cos, sin, center);\n }\n Point.rotate = rotate;\n function rotateEx(point, cos, sin, center = new Point()) {\n const source = clone(point);\n const origin = clone(center);\n const dx = source.x - origin.x;\n const dy = source.y - origin.y;\n const x1 = dx * cos - dy * sin;\n const y1 = dy * cos + dx * sin;\n return new Point(x1 + origin.x, y1 + origin.y);\n }\n Point.rotateEx = rotateEx;\n})(Point || (Point = {}));\n//# sourceMappingURL=point.js.map","import * as util from './util';\nimport { Angle } from './angle';\nimport { Line } from './line';\nimport { Point } from './point';\nimport { Geometry } from './geometry';\nexport class Rectangle extends Geometry {\n constructor(x, y, width, height) {\n super();\n this.x = x == null ? 0 : x;\n this.y = y == null ? 0 : y;\n this.width = width == null ? 0 : width;\n this.height = height == null ? 0 : height;\n }\n get [Symbol.toStringTag]() {\n return Rectangle.toStringTag;\n }\n get left() {\n return this.x;\n }\n get top() {\n return this.y;\n }\n get right() {\n return this.x + this.width;\n }\n get bottom() {\n return this.y + this.height;\n }\n get origin() {\n return new Point(this.x, this.y);\n }\n get topLeft() {\n return new Point(this.x, this.y);\n }\n get topCenter() {\n return new Point(this.x + this.width / 2, this.y);\n }\n get topRight() {\n return new Point(this.x + this.width, this.y);\n }\n get center() {\n return new Point(this.x + this.width / 2, this.y + this.height / 2);\n }\n get bottomLeft() {\n return new Point(this.x, this.y + this.height);\n }\n get bottomCenter() {\n return new Point(this.x + this.width / 2, this.y + this.height);\n }\n get bottomRight() {\n return new Point(this.x + this.width, this.y + this.height);\n }\n get corner() {\n return new Point(this.x + this.width, this.y + this.height);\n }\n get rightMiddle() {\n return new Point(this.x + this.width, this.y + this.height / 2);\n }\n get leftMiddle() {\n return new Point(this.x, this.y + this.height / 2);\n }\n get topLine() {\n return new Line(this.topLeft, this.topRight);\n }\n get rightLine() {\n return new Line(this.topRight, this.bottomRight);\n }\n get bottomLine() {\n return new Line(this.bottomLeft, this.bottomRight);\n }\n get leftLine() {\n return new Line(this.topLeft, this.bottomLeft);\n }\n getOrigin() {\n return this.origin;\n }\n getTopLeft() {\n return this.topLeft;\n }\n getTopCenter() {\n return this.topCenter;\n }\n getTopRight() {\n return this.topRight;\n }\n getCenter() {\n return this.center;\n }\n getCenterX() {\n return this.x + this.width / 2;\n }\n getCenterY() {\n return this.y + this.height / 2;\n }\n getBottomLeft() {\n return this.bottomLeft;\n }\n getBottomCenter() {\n return this.bottomCenter;\n }\n getBottomRight() {\n return this.bottomRight;\n }\n getCorner() {\n return this.corner;\n }\n getRightMiddle() {\n return this.rightMiddle;\n }\n getLeftMiddle() {\n return this.leftMiddle;\n }\n getTopLine() {\n return this.topLine;\n }\n getRightLine() {\n return this.rightLine;\n }\n getBottomLine() {\n return this.bottomLine;\n }\n getLeftLine() {\n return this.leftLine;\n }\n /**\n * Returns a rectangle that is the bounding box of the rectangle.\n *\n * If `angle` is specified, the bounding box calculation will take into\n * account the rotation of the rectangle by angle degrees around its center.\n */\n bbox(angle) {\n if (!angle) {\n return this.clone();\n }\n const rad = Angle.toRad(angle);\n const st = Math.abs(Math.sin(rad));\n const ct = Math.abs(Math.cos(rad));\n const w = this.width * ct + this.height * st;\n const h = this.width * st + this.height * ct;\n return new Rectangle(this.x + (this.width - w) / 2, this.y + (this.height - h) / 2, w, h);\n }\n round(precision = 0) {\n this.x = util.round(this.x, precision);\n this.y = util.round(this.y, precision);\n this.width = util.round(this.width, precision);\n this.height = util.round(this.height, precision);\n return this;\n }\n add(x, y, width, height) {\n const rect = Rectangle.create(x, y, width, height);\n const minX = Math.min(this.x, rect.x);\n const minY = Math.min(this.y, rect.y);\n const maxX = Math.max(this.x + this.width, rect.x + rect.width);\n const maxY = Math.max(this.y + this.height, rect.y + rect.height);\n this.x = minX;\n this.y = minY;\n this.width = maxX - minX;\n this.height = maxY - minY;\n return this;\n }\n update(x, y, width, height) {\n const rect = Rectangle.create(x, y, width, height);\n this.x = rect.x;\n this.y = rect.y;\n this.width = rect.width;\n this.height = rect.height;\n return this;\n }\n inflate(dx, dy) {\n const w = dx;\n const h = dy != null ? dy : dx;\n this.x -= w;\n this.y -= h;\n this.width += 2 * w;\n this.height += 2 * h;\n return this;\n }\n snapToGrid(gx, gy) {\n const origin = this.origin.snapToGrid(gx, gy);\n const corner = this.corner.snapToGrid(gx, gy);\n this.x = origin.x;\n this.y = origin.y;\n this.width = corner.x - origin.x;\n this.height = corner.y - origin.y;\n return this;\n }\n translate(tx, ty) {\n const p = Point.create(tx, ty);\n this.x += p.x;\n this.y += p.y;\n return this;\n }\n scale(sx, sy, origin = new Point()) {\n const pos = this.origin.scale(sx, sy, origin);\n this.x = pos.x;\n this.y = pos.y;\n this.width *= sx;\n this.height *= sy;\n return this;\n }\n rotate(degree, center = this.getCenter()) {\n if (degree !== 0) {\n const rad = Angle.toRad(degree);\n const cos = Math.cos(rad);\n const sin = Math.sin(rad);\n let p1 = this.getOrigin();\n let p2 = this.getTopRight();\n let p3 = this.getBottomRight();\n let p4 = this.getBottomLeft();\n p1 = Point.rotateEx(p1, cos, sin, center);\n p2 = Point.rotateEx(p2, cos, sin, center);\n p3 = Point.rotateEx(p3, cos, sin, center);\n p4 = Point.rotateEx(p4, cos, sin, center);\n const rect = new Rectangle(p1.x, p1.y, 0, 0);\n rect.add(p2.x, p2.y, 0, 0);\n rect.add(p3.x, p3.y, 0, 0);\n rect.add(p4.x, p4.y, 0, 0);\n this.update(rect);\n }\n return this;\n }\n rotate90() {\n const t = (this.width - this.height) / 2;\n this.x += t;\n this.y -= t;\n const tmp = this.width;\n this.width = this.height;\n this.height = tmp;\n return this;\n }\n /**\n * Translates the rectangle by `rect.x` and `rect.y` and expand it by\n * `rect.width` and `rect.height`.\n */\n moveAndExpand(rect) {\n const ref = Rectangle.clone(rect);\n this.x += ref.x || 0;\n this.y += ref.y || 0;\n this.width += ref.width || 0;\n this.height += ref.height || 0;\n return this;\n }\n /**\n * Returns an object where `sx` and `sy` give the maximum scaling that can be\n * applied to the rectangle so that it would still fit into `limit`. If\n * `origin` is specified, the rectangle is scaled around it; otherwise, it is\n * scaled around its center.\n */\n getMaxScaleToFit(limit, origin = this.center) {\n const rect = Rectangle.clone(limit);\n const ox = origin.x;\n const oy = origin.y;\n // Find the maximal possible scale for all corners, so when the scale\n // is applied the point is still inside the rectangle.\n let sx1 = Infinity;\n let sx2 = Infinity;\n let sx3 = Infinity;\n let sx4 = Infinity;\n let sy1 = Infinity;\n let sy2 = Infinity;\n let sy3 = Infinity;\n let sy4 = Infinity;\n // Top Left\n const p1 = rect.topLeft;\n if (p1.x < ox) {\n sx1 = (this.x - ox) / (p1.x - ox);\n }\n if (p1.y < oy) {\n sy1 = (this.y - oy) / (p1.y - oy);\n }\n // Bottom Right\n const p2 = rect.bottomRight;\n if (p2.x > ox) {\n sx2 = (this.x + this.width - ox) / (p2.x - ox);\n }\n if (p2.y > oy) {\n sy2 = (this.y + this.height - oy) / (p2.y - oy);\n }\n // Top Right\n const p3 = rect.topRight;\n if (p3.x > ox) {\n sx3 = (this.x + this.width - ox) / (p3.x - ox);\n }\n if (p3.y < oy) {\n sy3 = (this.y - oy) / (p3.y - oy);\n }\n // Bottom Left\n const p4 = rect.bottomLeft;\n if (p4.x < ox) {\n sx4 = (this.x - ox) / (p4.x - ox);\n }\n if (p4.y > oy) {\n sy4 = (this.y + this.height - oy) / (p4.y - oy);\n }\n return {\n sx: Math.min(sx1, sx2, sx3, sx4),\n sy: Math.min(sy1, sy2, sy3, sy4),\n };\n }\n /**\n * Returns a number that specifies the maximum scaling that can be applied to\n * the rectangle along both axes so that it would still fit into `limit`. If\n * `origin` is specified, the rectangle is scaled around it; otherwise, it is\n * scaled around its center.\n */\n getMaxUniformScaleToFit(limit, origin = this.center) {\n const scale = this.getMaxScaleToFit(limit, origin);\n return Math.min(scale.sx, scale.sy);\n }\n containsPoint(x, y) {\n return util.containsPoint(this, Point.create(x, y));\n }\n containsRect(x, y, width, height) {\n const b = Rectangle.create(x, y, width, height);\n const x1 = this.x;\n const y1 = this.y;\n const w1 = this.width;\n const h1 = this.height;\n const x2 = b.x;\n const y2 = b.y;\n const w2 = b.width;\n const h2 = b.height;\n // one of the dimensions is 0\n if (w1 === 0 || h1 === 0 || w2 === 0 || h2 === 0) {\n return false;\n }\n return x2 >= x1 && y2 >= y1 && x2 + w2 <= x1 + w1 && y2 + h2 <= y1 + h1;\n }\n /**\n * Returns an array of the intersection points of the rectangle and the line.\n * Return `null` if no intersection exists.\n */\n intersectsWithLine(line) {\n const rectLines = [\n this.topLine,\n this.rightLine,\n this.bottomLine,\n this.leftLine,\n ];\n const points = [];\n const dedupeArr = [];\n rectLines.forEach((l) => {\n const p = line.intersectsWithLine(l);\n if (p !== null && dedupeArr.indexOf(p.toString()) < 0) {\n points.push(p);\n dedupeArr.push(p.toString());\n }\n });\n return points.length > 0 ? points : null;\n }\n /**\n * Returns the point on the boundary of the rectangle that is the intersection\n * of the rectangle with a line starting in the center the rectangle ending in\n * the point `p`.\n *\n * If `angle` is specified, the intersection will take into account the\n * rotation of the rectangle by `angle` degrees around its center.\n */\n intersectsWithLineFromCenterToPoint(p, angle) {\n const ref = Point.clone(p);\n const center = this.center;\n let result = null;\n if (angle != null && angle !== 0) {\n ref.rotate(angle, center);\n }\n const sides = [this.topLine, this.rightLine, this.bottomLine, this.leftLine];\n const connector = new Line(center, ref);\n for (let i = sides.length - 1; i >= 0; i -= 1) {\n const intersection = sides[i].intersectsWithLine(connector);\n if (intersection !== null) {\n result = intersection;\n break;\n }\n }\n if (result && angle != null && angle !== 0) {\n result.rotate(-angle, center);\n }\n return result;\n }\n intersectsWithRect(x, y, width, height) {\n const ref = Rectangle.create(x, y, width, height);\n // no intersection\n if (!this.isIntersectWithRect(ref)) {\n return null;\n }\n const myOrigin = this.origin;\n const myCorner = this.corner;\n const rOrigin = ref.origin;\n const rCorner = ref.corner;\n const xx = Math.max(myOrigin.x, rOrigin.x);\n const yy = Math.max(myOrigin.y, rOrigin.y);\n return new Rectangle(xx, yy, Math.min(myCorner.x, rCorner.x) - xx, Math.min(myCorner.y, rCorner.y) - yy);\n }\n isIntersectWithRect(x, y, width, height) {\n const ref = Rectangle.create(x, y, width, height);\n const myOrigin = this.origin;\n const myCorner = this.corner;\n const rOrigin = ref.origin;\n const rCorner = ref.corner;\n if (rCorner.x <= myOrigin.x ||\n rCorner.y <= myOrigin.y ||\n rOrigin.x >= myCorner.x ||\n rOrigin.y >= myCorner.y) {\n return false;\n }\n return true;\n }\n /**\n * Normalize the rectangle, i.e. make it so that it has non-negative\n * width and height. If width is less than `0`, the function swaps left and\n * right corners and if height is less than `0`, the top and bottom corners\n * are swapped.\n */\n normalize() {\n let newx = this.x;\n let newy = this.y;\n let newwidth = this.width;\n let newheight = this.height;\n if (this.width < 0) {\n newx = this.x + this.width;\n newwidth = -this.width;\n }\n if (this.height < 0) {\n newy = this.y + this.height;\n newheight = -this.height;\n }\n this.x = newx;\n this.y = newy;\n this.width = newwidth;\n this.height = newheight;\n return this;\n }\n /**\n * Returns a rectangle that is a union of this rectangle and rectangle `rect`.\n */\n union(rect) {\n const ref = Rectangle.clone(rect);\n const myOrigin = this.origin;\n const myCorner = this.corner;\n const rOrigin = ref.origin;\n const rCorner = ref.corner;\n const originX = Math.min(myOrigin.x, rOrigin.x);\n const originY = Math.min(myOrigin.y, rOrigin.y);\n const cornerX = Math.max(myCorner.x, rCorner.x);\n const cornerY = Math.max(myCorner.y, rCorner.y);\n return new Rectangle(originX, originY, cornerX - originX, cornerY - originY);\n }\n /**\n * Returns a string (\"top\", \"left\", \"right\" or \"bottom\") denoting the side of\n * the rectangle which is nearest to the point `p`.\n */\n getNearestSideToPoint(p) {\n const ref = Point.clone(p);\n const distLeft = ref.x - this.x;\n const distRight = this.x + this.width - ref.x;\n const distTop = ref.y - this.y;\n const distBottom = this.y + this.height - ref.y;\n let closest = distLeft;\n let side = 'left';\n if (distRight < closest) {\n closest = distRight;\n side = 'right';\n }\n if (distTop < closest) {\n closest = distTop;\n side = 'top';\n }\n if (distBottom < closest) {\n side = 'bottom';\n }\n return side;\n }\n /**\n * Returns a point on the boundary of the rectangle nearest to the point `p`.\n */\n getNearestPointToPoint(p) {\n const ref = Point.clone(p);\n if (this.containsPoint(ref)) {\n const side = this.getNearestSideToPoint(ref);\n switch (side) {\n case 'right':\n return new Point(this.x + this.width, ref.y);\n case 'left':\n return new Point(this.x, ref.y);\n case 'bottom':\n return new Point(ref.x, this.y + this.height);\n case 'top':\n return new Point(ref.x, this.y);\n default:\n break;\n }\n }\n return ref.adhereToRect(this);\n }\n equals(rect) {\n return (rect != null &&\n rect.x === this.x &&\n rect.y === this.y &&\n rect.width === this.width &&\n rect.height === this.height);\n }\n clone() {\n return new Rectangle(this.x, this.y, this.width, this.height);\n }\n toJSON() {\n return { x: this.x, y: this.y, width: this.width, height: this.height };\n }\n serialize() {\n return `${this.x} ${this.y} ${this.width} ${this.height}`;\n }\n}\n(function (Rectangle) {\n Rectangle.toStringTag = `X6.Geometry.${Rectangle.name}`;\n function isRectangle(instance) {\n if (instance == null) {\n return false;\n }\n if (instance instanceof Rectangle) {\n return true;\n }\n const tag = instance[Symbol.toStringTag];\n const rect = instance;\n if ((tag == null || tag === Rectangle.toStringTag) &&\n typeof rect.x === 'number' &&\n typeof rect.y === 'number' &&\n typeof rect.width === 'number' &&\n typeof rect.height === 'number' &&\n typeof rect.inflate === 'function' &&\n typeof rect.moveAndExpand === 'function') {\n return true;\n }\n return false;\n }\n Rectangle.isRectangle = isRectangle;\n})(Rectangle || (Rectangle = {}));\n(function (Rectangle) {\n function isRectangleLike(o) {\n return (o != null &&\n typeof o === 'object' &&\n typeof o.x === 'number' &&\n typeof o.y === 'number' &&\n typeof o.width === 'number' &&\n typeof o.height === 'number');\n }\n Rectangle.isRectangleLike = isRectangleLike;\n})(Rectangle || (Rectangle = {}));\n(function (Rectangle) {\n function create(x, y, width, height) {\n if (x == null || typeof x === 'number') {\n return new Rectangle(x, y, width, height);\n }\n return clone(x);\n }\n Rectangle.create = create;\n function clone(rect) {\n if (Rectangle.isRectangle(rect)) {\n return rect.clone();\n }\n if (Array.isArray(rect)) {\n return new Rectangle(rect[0], rect[1], rect[2], rect[3]);\n }\n return new Rectangle(rect.x, rect.y, rect.width, rect.height);\n }\n Rectangle.clone = clone;\n function fromSize(size) {\n return new Rectangle(0, 0, size.width, size.height);\n }\n Rectangle.fromSize = fromSize;\n function fromPositionAndSize(pos, size) {\n return new Rectangle(pos.x, pos.y, size.width, size.height);\n }\n Rectangle.fromPositionAndSize = fromPositionAndSize;\n /**\n * Returns a new rectangle from the given ellipse.\n */\n function fromEllipse(ellipse) {\n return new Rectangle(ellipse.x - ellipse.a, ellipse.y - ellipse.b, 2 * ellipse.a, 2 * ellipse.b);\n }\n Rectangle.fromEllipse = fromEllipse;\n})(Rectangle || (Rectangle = {}));\n//# sourceMappingURL=rectangle.js.map","import { Point } from './point';\nimport { Geometry } from './geometry';\nimport { Rectangle } from './rectangle';\nexport class Line extends Geometry {\n constructor(x1, y1, x2, y2) {\n super();\n if (typeof x1 === 'number' && typeof y1 === 'number') {\n this.start = new Point(x1, y1);\n this.end = new Point(x2, y2);\n }\n else {\n this.start = Point.create(x1);\n this.end = Point.create(y1);\n }\n }\n get [Symbol.toStringTag]() {\n return Line.toStringTag;\n }\n get center() {\n return new Point((this.start.x + this.end.x) / 2, (this.start.y + this.end.y) / 2);\n }\n getCenter() {\n return this.center;\n }\n /**\n * Rounds the line to the given `precision`.\n */\n round(precision = 0) {\n this.start.round(precision);\n this.end.round(precision);\n return this;\n }\n translate(tx, ty) {\n if (typeof tx === 'number') {\n this.start.translate(tx, ty);\n this.end.translate(tx, ty);\n }\n else {\n this.start.translate(tx);\n this.end.translate(tx);\n }\n return this;\n }\n /**\n * Rotate the line by `angle` around `origin`.\n */\n rotate(angle, origin) {\n this.start.rotate(angle, origin);\n this.end.rotate(angle, origin);\n return this;\n }\n /**\n * Scale the line by `sx` and `sy` about the given `origin`. If origin is not\n * specified, the line is scaled around `0,0`.\n */\n scale(sx, sy, origin) {\n this.start.scale(sx, sy, origin);\n this.end.scale(sx, sy, origin);\n return this;\n }\n /**\n * Returns the length of the line.\n */\n length() {\n return Math.sqrt(this.squaredLength());\n }\n /**\n * Useful for distance comparisons in which real length is not necessary\n * (saves one `Math.sqrt()` operation).\n */\n squaredLength() {\n const dx = this.start.x - this.end.x;\n const dy = this.start.y - this.end.y;\n return dx * dx + dy * dy;\n }\n /**\n * Scale the line so that it has the requested length. The start point of\n * the line is preserved.\n */\n setLength(length) {\n const total = this.length();\n if (!total) {\n return this;\n }\n const scale = length / total;\n return this.scale(scale, scale, this.start);\n }\n parallel(distance) {\n const line = this.clone();\n if (!line.isDifferentiable()) {\n return line;\n }\n const { start, end } = line;\n const eRef = start.clone().rotate(270, end);\n const sRef = end.clone().rotate(90, start);\n start.move(sRef, distance);\n end.move(eRef, distance);\n return line;\n }\n /**\n * Returns the vector of the line with length equal to length of the line.\n */\n vector() {\n return new Point(this.end.x - this.start.x, this.end.y - this.start.y);\n }\n /**\n * Returns the angle of incline of the line.\n *\n * The function returns `NaN` if the start and end endpoints of the line\n * both lie at the same coordinates(it is impossible to determine the angle\n * of incline of a line that appears to be a point). The\n * `line.isDifferentiable()` function may be used in advance to determine\n * whether the angle of incline can be computed for a given line.\n */\n angle() {\n const horizontal = new Point(this.start.x + 1, this.start.y);\n return this.start.angleBetween(this.end, horizontal);\n }\n /**\n * Returns a rectangle that is the bounding box of the line.\n */\n bbox() {\n const left = Math.min(this.start.x, this.end.x);\n const top = Math.min(this.start.y, this.end.y);\n const right = Math.max(this.start.x, this.end.x);\n const bottom = Math.max(this.start.y, this.end.y);\n return new Rectangle(left, top, right - left, bottom - top);\n }\n /**\n * Returns the bearing (cardinal direction) of the line.\n *\n * The return value is one of the following strings:\n * 'NE', 'E', 'SE', 'S', 'SW', 'W', 'NW' and 'N'.\n *\n * The function returns 'N' if the two endpoints of the line are coincident.\n */\n bearing() {\n return this.start.bearing(this.end);\n }\n /**\n * Returns the point on the line that lies closest to point `p`.\n */\n closestPoint(p) {\n return this.pointAt(this.closestPointNormalizedLength(p));\n }\n /**\n * Returns the length of the line up to the point that lies closest to point `p`.\n */\n closestPointLength(p) {\n return this.closestPointNormalizedLength(p) * this.length();\n }\n /**\n * Returns a line that is tangent to the line at the point that lies closest\n * to point `p`.\n */\n closestPointTangent(p) {\n return this.tangentAt(this.closestPointNormalizedLength(p));\n }\n /**\n * Returns the normalized length (distance from the start of the line / total\n * line length) of the line up to the point that lies closest to point.\n */\n closestPointNormalizedLength(p) {\n const product = this.vector().dot(new Line(this.start, p).vector());\n const normalized = Math.min(1, Math.max(0, product / this.squaredLength()));\n // normalized returns `NaN` if this line has zero length\n if (Number.isNaN(normalized)) {\n return 0;\n }\n return normalized;\n }\n /**\n * Returns a point on the line that lies `rate` (normalized length) away from\n * the beginning of the line.\n */\n pointAt(ratio) {\n const start = this.start;\n const end = this.end;\n if (ratio <= 0) {\n return start.clone();\n }\n if (ratio >= 1) {\n return end.clone();\n }\n return start.lerp(end, ratio);\n }\n /**\n * Returns a point on the line that lies length away from the beginning of\n * the line.\n */\n pointAtLength(length) {\n const start = this.start;\n const end = this.end;\n let fromStart = true;\n if (length < 0) {\n fromStart = false; // start calculation from end point\n length = -length; // eslint-disable-line\n }\n const total = this.length();\n if (length >= total) {\n return fromStart ? end.clone() : start.clone();\n }\n const rate = (fromStart ? length : total - length) / total;\n return this.pointAt(rate);\n }\n /**\n * Divides the line into two lines at the point that lies `rate` (normalized\n * length) away from the beginning of the line.\n */\n divideAt(ratio) {\n const dividerPoint = this.pointAt(ratio);\n return [\n new Line(this.start, dividerPoint),\n new Line(dividerPoint, this.end),\n ];\n }\n /**\n * Divides the line into two lines at the point that lies length away from\n * the beginning of the line.\n */\n divideAtLength(length) {\n const dividerPoint = this.pointAtLength(length);\n return [\n new Line(this.start, dividerPoint),\n new Line(dividerPoint, this.end),\n ];\n }\n /**\n * Returns `true` if the point `p` lies on the line. Return `false` otherwise.\n */\n containsPoint(p) {\n const start = this.start;\n const end = this.end;\n // cross product of 0 indicates that this line and\n // the vector to `p` are collinear.\n if (start.cross(p, end) !== 0) {\n return false;\n }\n const length = this.length();\n if (new Line(start, p).length() > length) {\n return false;\n }\n if (new Line(p, end).length() > length) {\n return false;\n }\n return true;\n }\n intersect(shape, options) {\n const ret = shape.intersectsWithLine(this, options);\n if (ret) {\n return Array.isArray(ret) ? ret : [ret];\n }\n return null;\n }\n /**\n * Returns the intersection point of the line with another line. Returns\n * `null` if no intersection exists.\n */\n intersectsWithLine(line) {\n const pt1Dir = new Point(this.end.x - this.start.x, this.end.y - this.start.y);\n const pt2Dir = new Point(line.end.x - line.start.x, line.end.y - line.start.y);\n const det = pt1Dir.x * pt2Dir.y - pt1Dir.y * pt2Dir.x;\n const deltaPt = new Point(line.start.x - this.start.x, line.start.y - this.start.y);\n const alpha = deltaPt.x * pt2Dir.y - deltaPt.y * pt2Dir.x;\n const beta = deltaPt.x * pt1Dir.y - deltaPt.y * pt1Dir.x;\n if (det === 0 || alpha * det < 0 || beta * det < 0) {\n return null;\n }\n if (det > 0) {\n if (alpha > det || beta > det) {\n return null;\n }\n }\n else if (alpha < det || beta < det) {\n return null;\n }\n return new Point(this.start.x + (alpha * pt1Dir.x) / det, this.start.y + (alpha * pt1Dir.y) / det);\n }\n /**\n * Returns `true` if a tangent line can be found for the line.\n *\n * Tangents cannot be found if both of the line endpoints are coincident\n * (the line appears to be a point).\n */\n isDifferentiable() {\n return !this.start.equals(this.end);\n }\n /**\n * Returns the perpendicular distance between the line and point. The\n * distance is positive if the point lies to the right of the line, negative\n * if the point lies to the left of the line, and `0` if the point lies on\n * the line.\n */\n pointOffset(p) {\n const ref = Point.clone(p);\n const start = this.start;\n const end = this.end;\n const determinant = (end.x - start.x) * (ref.y - start.y) -\n (end.y - start.y) * (ref.x - start.x);\n return determinant / this.length();\n }\n pointSquaredDistance(x, y) {\n const p = Point.create(x, y);\n return this.closestPoint(p).squaredDistance(p);\n }\n pointDistance(x, y) {\n const p = Point.create(x, y);\n return this.closestPoint(p).distance(p);\n }\n /**\n * Returns a line tangent to the line at point that lies `rate` (normalized\n * length) away from the beginning of the line.\n */\n tangentAt(ratio) {\n if (!this.isDifferentiable()) {\n return null;\n }\n const start = this.start;\n const end = this.end;\n const tangentStart = this.pointAt(ratio);\n const tangentLine = new Line(start, end);\n tangentLine.translate(tangentStart.x - start.x, tangentStart.y - start.y);\n return tangentLine;\n }\n /**\n * Returns a line tangent to the line at point that lies `length` away from\n * the beginning of the line.\n */\n tangentAtLength(length) {\n if (!this.isDifferentiable()) {\n return null;\n }\n const start = this.start;\n const end = this.end;\n const tangentStart = this.pointAtLength(length);\n const tangentLine = new Line(start, end);\n tangentLine.translate(tangentStart.x - start.x, tangentStart.y - start.y);\n return tangentLine;\n }\n relativeCcw(x, y) {\n const ref = Point.create(x, y);\n let dx1 = ref.x - this.start.x;\n let dy1 = ref.y - this.start.y;\n const dx2 = this.end.x - this.start.x;\n const dy2 = this.end.y - this.start.y;\n let ccw = dx1 * dy2 - dy1 * dx2;\n if (ccw === 0) {\n ccw = dx1 * dx2 + dy1 * dy2;\n if (ccw > 0.0) {\n dx1 -= dx2;\n dy1 -= dy2;\n ccw = dx1 * dx2 + dy1 * dy2;\n if (ccw < 0.0) {\n ccw = 0.0;\n }\n }\n }\n return ccw < 0.0 ? -1 : ccw > 0.0 ? 1 : 0;\n }\n /**\n * Return `true` if the line equals the other line.\n */\n equals(l) {\n return (l != null &&\n this.start.x === l.start.x &&\n this.start.y === l.start.y &&\n this.end.x === l.end.x &&\n this.end.y === l.end.y);\n }\n /**\n * Returns another line which is a clone of the line.\n */\n clone() {\n return new Line(this.start, this.end);\n }\n toJSON() {\n return { start: this.start.toJSON(), end: this.end.toJSON() };\n }\n serialize() {\n return [this.start.serialize(), this.end.serialize()].join(' ');\n }\n}\n(function (Line) {\n Line.toStringTag = `X6.Geometry.${Line.name}`;\n function isLine(instance) {\n if (instance == null) {\n return false;\n }\n if (instance instanceof Line) {\n return true;\n }\n const tag = instance[Symbol.toStringTag];\n const line = instance;\n try {\n if ((tag == null || tag === Line.toStringTag) &&\n Point.isPoint(line.start) &&\n Point.isPoint(line.end) &&\n typeof line.vector === 'function' &&\n typeof line.bearing === 'function' &&\n typeof line.parallel === 'function' &&\n typeof line.intersect === 'function') {\n return true;\n }\n }\n catch (e) {\n return false;\n }\n return false;\n }\n Line.isLine = isLine;\n})(Line || (Line = {}));\n//# sourceMappingURL=line.js.map","import { Point } from './point';\nimport { Rectangle } from './rectangle';\nimport { Geometry } from './geometry';\nexport class Ellipse extends Geometry {\n constructor(x, y, a, b) {\n super();\n this.x = x == null ? 0 : x;\n this.y = y == null ? 0 : y;\n this.a = a == null ? 0 : a;\n this.b = b == null ? 0 : b;\n }\n get [Symbol.toStringTag]() {\n return Ellipse.toStringTag;\n }\n get center() {\n return new Point(this.x, this.y);\n }\n /**\n * Returns a rectangle that is the bounding box of the ellipse.\n */\n bbox() {\n return Rectangle.fromEllipse(this);\n }\n /**\n * Returns a point that is the center of the ellipse.\n */\n getCenter() {\n return this.center;\n }\n inflate(dx, dy) {\n const w = dx;\n const h = dy != null ? dy : dx;\n this.a += 2 * w;\n this.b += 2 * h;\n return this;\n }\n normalizedDistance(x, y) {\n const ref = Point.create(x, y);\n const dx = ref.x - this.x;\n const dy = ref.y - this.y;\n const a = this.a;\n const b = this.b;\n return (dx * dx) / (a * a) + (dy * dy) / (b * b);\n }\n containsPoint(x, y) {\n return this.normalizedDistance(x, y) <= 1;\n }\n /**\n * Returns an array of the intersection points of the ellipse and the line.\n * Returns `null` if no intersection exists.\n */\n intersectsWithLine(line) {\n const intersections = [];\n const rx = this.a;\n const ry = this.b;\n const a1 = line.start;\n const a2 = line.end;\n const dir = line.vector();\n const diff = a1.diff(new Point(this.x, this.y));\n const mDir = new Point(dir.x / (rx * rx), dir.y / (ry * ry));\n const mDiff = new Point(diff.x / (rx * rx), diff.y / (ry * ry));\n const a = dir.dot(mDir);\n const b = dir.dot(mDiff);\n const c = diff.dot(mDiff) - 1.0;\n const d = b * b - a * c;\n if (d < 0) {\n return null;\n }\n if (d > 0) {\n const root = Math.sqrt(d);\n const ta = (-b - root) / a;\n const tb = (-b + root) / a;\n if ((ta < 0 || ta > 1) && (tb < 0 || tb > 1)) {\n // outside\n return null;\n }\n if (ta >= 0 && ta <= 1) {\n intersections.push(a1.lerp(a2, ta));\n }\n if (tb >= 0 && tb <= 1) {\n intersections.push(a1.lerp(a2, tb));\n }\n }\n else {\n const t = -b / a;\n if (t >= 0 && t <= 1) {\n intersections.push(a1.lerp(a2, t));\n }\n else {\n // outside\n return null;\n }\n }\n return intersections;\n }\n /**\n * Returns the point on the boundary of the ellipse that is the\n * intersection of the ellipse with a line starting in the center\n * of the ellipse ending in the point `p`.\n *\n * If angle is specified, the intersection will take into account\n * the rotation of the ellipse by angle degrees around its center.\n */\n intersectsWithLineFromCenterToPoint(p, angle = 0) {\n const ref = Point.clone(p);\n if (angle) {\n ref.rotate(angle, this.getCenter());\n }\n const dx = ref.x - this.x;\n const dy = ref.y - this.y;\n let result;\n if (dx === 0) {\n result = this.bbox().getNearestPointToPoint(ref);\n if (angle) {\n return result.rotate(-angle, this.getCenter());\n }\n return result;\n }\n const m = dy / dx;\n const mSquared = m * m;\n const aSquared = this.a * this.a;\n const bSquared = this.b * this.b;\n let x = Math.sqrt(1 / (1 / aSquared + mSquared / bSquared));\n x = dx < 0 ? -x : x;\n const y = m * x;\n result = new Point(this.x + x, this.y + y);\n if (angle) {\n return result.rotate(-angle, this.getCenter());\n }\n return result;\n }\n /**\n * Returns the angle between the x-axis and the tangent from a point. It is\n * valid for points lying on the ellipse boundary only.\n */\n tangentTheta(p) {\n const ref = Point.clone(p);\n const x0 = ref.x;\n const y0 = ref.y;\n const a = this.a;\n const b = this.b;\n const center = this.bbox().center;\n const cx = center.x;\n const cy = center.y;\n const refPointDelta = 30;\n const q1 = x0 > center.x + a / 2;\n const q3 = x0 < center.x - a / 2;\n let x;\n let y;\n if (q1 || q3) {\n y = x0 > center.x ? y0 - refPointDelta : y0 + refPointDelta;\n x =\n (a * a) / (x0 - cx) -\n (a * a * (y0 - cy) * (y - cy)) / (b * b * (x0 - cx)) +\n cx;\n }\n else {\n x = y0 > center.y ? x0 + refPointDelta : x0 - refPointDelta;\n y =\n (b * b) / (y0 - cy) -\n (b * b * (x0 - cx) * (x - cx)) / (a * a * (y0 - cy)) +\n cy;\n }\n return new Point(x, y).theta(ref);\n }\n scale(sx, sy) {\n this.a *= sx;\n this.b *= sy;\n return this;\n }\n rotate(angle, origin) {\n const rect = Rectangle.fromEllipse(this);\n rect.rotate(angle, origin);\n const ellipse = Ellipse.fromRect(rect);\n this.a = ellipse.a;\n this.b = ellipse.b;\n this.x = ellipse.x;\n this.y = ellipse.y;\n return this;\n }\n translate(dx, dy) {\n const p = Point.create(dx, dy);\n this.x += p.x;\n this.y += p.y;\n return this;\n }\n equals(ellipse) {\n return (ellipse != null &&\n ellipse.x === this.x &&\n ellipse.y === this.y &&\n ellipse.a === this.a &&\n ellipse.b === this.b);\n }\n clone() {\n return new Ellipse(this.x, this.y, this.a, this.b);\n }\n toJSON() {\n return { x: this.x, y: this.y, a: this.a, b: this.b };\n }\n serialize() {\n return `${this.x} ${this.y} ${this.a} ${this.b}`;\n }\n}\n(function (Ellipse) {\n Ellipse.toStringTag = `X6.Geometry.${Ellipse.name}`;\n function isEllipse(instance) {\n if (instance == null) {\n return false;\n }\n if (instance instanceof Ellipse) {\n return true;\n }\n const tag = instance[Symbol.toStringTag];\n const ellipse = instance;\n if ((tag == null || tag === Ellipse.toStringTag) &&\n typeof ellipse.x === 'number' &&\n typeof ellipse.y === 'number' &&\n typeof ellipse.a === 'number' &&\n typeof ellipse.b === 'number' &&\n typeof ellipse.inflate === 'function' &&\n typeof ellipse.normalizedDistance === 'function') {\n return true;\n }\n return false;\n }\n Ellipse.isEllipse = isEllipse;\n})(Ellipse || (Ellipse = {}));\n(function (Ellipse) {\n function create(x, y, a, b) {\n if (x == null || typeof x === 'number') {\n return new Ellipse(x, y, a, b);\n }\n return parse(x);\n }\n Ellipse.create = create;\n function parse(e) {\n if (Ellipse.isEllipse(e)) {\n return e.clone();\n }\n if (Array.isArray(e)) {\n return new Ellipse(e[0], e[1], e[2], e[3]);\n }\n return new Ellipse(e.x, e.y, e.a, e.b);\n }\n Ellipse.parse = parse;\n function fromRect(rect) {\n const center = rect.center;\n return new Ellipse(center.x, center.y, rect.width / 2, rect.height / 2);\n }\n Ellipse.fromRect = fromRect;\n})(Ellipse || (Ellipse = {}));\n//# sourceMappingURL=ellipse.js.map","import { Point } from './point';\nimport { Rectangle } from './rectangle';\nimport { Line } from './line';\nimport { Geometry } from './geometry';\nexport class Polyline extends Geometry {\n constructor(points) {\n super();\n if (points != null) {\n if (typeof points === 'string') {\n return Polyline.parse(points);\n }\n this.points = points.map((p) => Point.create(p));\n }\n else {\n this.points = [];\n }\n }\n get [Symbol.toStringTag]() {\n return Polyline.toStringTag;\n }\n get start() {\n if (this.points.length === 0) {\n return null;\n }\n return this.points[0];\n }\n get end() {\n if (this.points.length === 0) {\n return null;\n }\n return this.points[this.points.length - 1];\n }\n scale(sx, sy, origin = new Point()) {\n this.points.forEach((p) => p.scale(sx, sy, origin));\n return this;\n }\n rotate(angle, origin) {\n this.points.forEach((p) => p.rotate(angle, origin));\n return this;\n }\n translate(dx, dy) {\n const t = Point.create(dx, dy);\n this.points.forEach((p) => p.translate(t.x, t.y));\n return this;\n }\n bbox() {\n if (this.points.length === 0) {\n return new Rectangle();\n }\n let x1 = Infinity;\n let x2 = -Infinity;\n let y1 = Infinity;\n let y2 = -Infinity;\n const points = this.points;\n for (let i = 0, ii = points.length; i < ii; i += 1) {\n const point = points[i];\n const x = point.x;\n const y = point.y;\n if (x < x1)\n x1 = x;\n if (x > x2)\n x2 = x;\n if (y < y1)\n y1 = y;\n if (y > y2)\n y2 = y;\n }\n return new Rectangle(x1, y1, x2 - x1, y2 - y1);\n }\n closestPoint(p) {\n const cpLength = this.closestPointLength(p);\n return this.pointAtLength(cpLength);\n }\n closestPointLength(p) {\n const points = this.points;\n const count = points.length;\n if (count === 0 || count === 1) {\n return 0;\n }\n let length = 0;\n let cpLength = 0;\n let minSqrDistance = Infinity;\n for (let i = 0, ii = count - 1; i < ii; i += 1) {\n const line = new Line(points[i], points[i + 1]);\n const lineLength = line.length();\n const cpNormalizedLength = line.closestPointNormalizedLength(p);\n const cp = line.pointAt(cpNormalizedLength);\n const sqrDistance = cp.squaredDistance(p);\n if (sqrDistance < minSqrDistance) {\n minSqrDistance = sqrDistance;\n cpLength = length + cpNormalizedLength * lineLength;\n }\n length += lineLength;\n }\n return cpLength;\n }\n closestPointNormalizedLength(p) {\n const cpLength = this.closestPointLength(p);\n if (cpLength === 0) {\n return 0;\n }\n const length = this.length();\n if (length === 0) {\n return 0;\n }\n return cpLength / length;\n }\n closestPointTangent(p) {\n const cpLength = this.closestPointLength(p);\n return this.tangentAtLength(cpLength);\n }\n containsPoint(p) {\n if (this.points.length === 0) {\n return false;\n }\n const ref = Point.clone(p);\n const x = ref.x;\n const y = ref.y;\n const points = this.points;\n const count = points.length;\n let startIndex = count - 1;\n let intersectionCount = 0;\n for (let endIndex = 0; endIndex < count; endIndex += 1) {\n const start = points[startIndex];\n const end = points[endIndex];\n if (ref.equals(start)) {\n return true;\n }\n const segment = new Line(start, end);\n if (segment.containsPoint(p)) {\n return true;\n }\n // do we have an intersection?\n if ((y <= start.y && y > end.y) || (y > start.y && y <= end.y)) {\n // this conditional branch IS NOT entered when `segment` is collinear/coincident with `ray`\n // (when `y === start.y === end.y`)\n // this conditional branch IS entered when `segment` touches `ray` at only one point\n // (e.g. when `y === start.y !== end.y`)\n // since this branch is entered again for the following segment, the two touches cancel out\n const xDifference = start.x - x > end.x - x ? start.x - x : end.x - x;\n if (xDifference >= 0) {\n // segment lies at least partially to the right of `p`\n const rayEnd = new Point(x + xDifference, y); // right\n const ray = new Line(p, rayEnd);\n if (segment.intersectsWithLine(ray)) {\n // an intersection was detected to the right of `p`\n intersectionCount += 1;\n }\n } // else: `segment` lies completely to the left of `p` (i.e. no intersection to the right)\n }\n // move to check the next polyline segment\n startIndex = endIndex;\n }\n // returns `true` for odd numbers of intersections (even-odd algorithm)\n return intersectionCount % 2 === 1;\n }\n intersectsWithLine(line) {\n const intersections = [];\n for (let i = 0, n = this.points.length - 1; i < n; i += 1) {\n const a = this.points[i];\n const b = this.points[i + 1];\n const int = line.intersectsWithLine(new Line(a, b));\n if (int) {\n intersections.push(int);\n }\n }\n return intersections.length > 0 ? intersections : null;\n }\n isDifferentiable() {\n for (let i = 0, ii = this.points.length - 1; i < ii; i += 1) {\n const a = this.points[i];\n const b = this.points[i + 1];\n const line = new Line(a, b);\n if (line.isDifferentiable()) {\n return true;\n }\n }\n return false;\n }\n length() {\n let len = 0;\n for (let i = 0, ii = this.points.length - 1; i < ii; i += 1) {\n const a = this.points[i];\n const b = this.points[i + 1];\n len += a.distance(b);\n }\n return len;\n }\n pointAt(ratio) {\n const points = this.points;\n const count = points.length;\n if (count === 0) {\n return null;\n }\n if (count === 1) {\n return points[0].clone();\n }\n if (ratio <= 0) {\n return points[0].clone();\n }\n if (ratio >= 1) {\n return points[count - 1].clone();\n }\n const total = this.length();\n const length = total * ratio;\n return this.pointAtLength(length);\n }\n pointAtLength(length) {\n const points = this.points;\n const count = points.length;\n if (count === 0) {\n return null;\n }\n if (count === 1) {\n return points[0].clone();\n }\n let fromStart = true;\n if (length < 0) {\n fromStart = false;\n length = -length; // eslint-disable-line\n }\n let tmp = 0;\n for (let i = 0, ii = count - 1; i < ii; i += 1) {\n const index = fromStart ? i : ii - 1 - i;\n const a = points[index];\n const b = points[index + 1];\n const l = new Line(a, b);\n const d = a.distance(b);\n if (length <= tmp + d) {\n return l.pointAtLength((fromStart ? 1 : -1) * (length - tmp));\n }\n tmp += d;\n }\n const lastPoint = fromStart ? points[count - 1] : points[0];\n return lastPoint.clone();\n }\n tangentAt(ratio) {\n const points = this.points;\n const count = points.length;\n if (count === 0 || count === 1) {\n return null;\n }\n if (ratio < 0) {\n ratio = 0; // eslint-disable-line\n }\n if (ratio > 1) {\n ratio = 1; // eslint-disable-line\n }\n const total = this.length();\n const length = total * ratio;\n return this.tangentAtLength(length);\n }\n tangentAtLength(length) {\n const points = this.points;\n const count = points.length;\n if (count === 0 || count === 1) {\n return null;\n }\n let fromStart = true;\n if (length < 0) {\n fromStart = false;\n length = -length; // eslint-disable-line\n }\n let lastValidLine;\n let tmp = 0;\n for (let i = 0, ii = count - 1; i < ii; i += 1) {\n const index = fromStart ? i : ii - 1 - i;\n const a = points[index];\n const b = points[index + 1];\n const l = new Line(a, b);\n const d = a.distance(b);\n if (l.isDifferentiable()) {\n // has a tangent line (line length is not 0)\n if (length <= tmp + d) {\n return l.tangentAtLength((fromStart ? 1 : -1) * (length - tmp));\n }\n lastValidLine = l;\n }\n tmp += d;\n }\n if (lastValidLine) {\n const ratio = fromStart ? 1 : 0;\n return lastValidLine.tangentAt(ratio);\n }\n return null;\n }\n simplify(\n // TODO: Accept startIndex and endIndex to specify where to start and end simplification\n options = {}) {\n const points = this.points;\n // we need at least 3 points\n if (points.length < 3) {\n return this;\n }\n const threshold = options.threshold || 0;\n // start at the beginning of the polyline and go forward\n let currentIndex = 0;\n // we need at least one intermediate point (3 points) in every iteration\n // as soon as that stops being true, we know we reached the end of the polyline\n while (points[currentIndex + 2]) {\n const firstIndex = currentIndex;\n const middleIndex = currentIndex + 1;\n const lastIndex = currentIndex + 2;\n const firstPoint = points[firstIndex];\n const middlePoint = points[middleIndex];\n const lastPoint = points[lastIndex];\n const chord = new Line(firstPoint, lastPoint); // = connection between first and last point\n const closestPoint = chord.closestPoint(middlePoint); // = closest point on chord from middle point\n const closestPointDistance = closestPoint.distance(middlePoint);\n if (closestPointDistance <= threshold) {\n // middle point is close enough to the chord = simplify\n // 1) remove middle point:\n points.splice(middleIndex, 1);\n // 2) in next iteration, investigate the newly-created triplet of points\n // - do not change `currentIndex`\n // = (first point stays, point after removed point becomes middle point)\n }\n else {\n // middle point is far from the chord\n // 1) preserve middle point\n // 2) in next iteration, move `currentIndex` by one step:\n currentIndex += 1;\n // = (point after first point becomes first point)\n }\n }\n // `points` array was modified in-place\n return this;\n }\n toHull() {\n const points = this.points;\n const count = points.length;\n if (count === 0) {\n return new Polyline();\n }\n // Step 1: find the starting point -- point with\n // the lowest y (if equality, highest x).\n let startPoint = points[0];\n for (let i = 1; i < count; i += 1) {\n if (points[i].y < startPoint.y) {\n startPoint = points[i];\n }\n else if (points[i].y === startPoint.y && points[i].x > startPoint.x) {\n startPoint = points[i];\n }\n }\n // Step 2: sort the list of points by angle between line\n // from start point to current point and the x-axis (theta).\n // Step 2a: create the point records = [point, originalIndex, angle]\n const sortedRecords = [];\n for (let i = 0; i < count; i += 1) {\n let angle = startPoint.theta(points[i]);\n if (angle === 0) {\n // Give highest angle to start point.\n // The start point will end up at end of sorted list.\n // The start point will end up at beginning of hull points list.\n angle = 360;\n }\n sortedRecords.push([points[i], i, angle]);\n }\n // Step 2b: sort the list in place\n sortedRecords.sort((record1, record2) => {\n let ret = record1[2] - record2[2];\n if (ret === 0) {\n ret = record2[1] - record1[1];\n }\n return ret;\n });\n // Step 2c: duplicate start record from the top of\n // the stack to the bottom of the stack.\n if (sortedRecords.length > 2) {\n const startPoint = sortedRecords[sortedRecords.length - 1];\n sortedRecords.unshift(startPoint);\n }\n // Step 3\n // ------\n // Step 3a: go through sorted points in order and find those with\n // right turns, and we want to get our results in clockwise order.\n // Dictionary of points with left turns - cannot be on the hull.\n const insidePoints = {};\n // Stack of records with right turns - hull point candidates.\n const hullRecords = [];\n const getKey = (record) => `${record[0].toString()}@${record[1]}`;\n while (sortedRecords.length !== 0) {\n const currentRecord = sortedRecords.pop();\n const currentPoint = currentRecord[0];\n // Check if point has already been discarded.\n if (insidePoints[getKey(currentRecord)]) {\n continue;\n }\n let correctTurnFound = false;\n while (!correctTurnFound) {\n if (hullRecords.length < 2) {\n // Not enough points for comparison, just add current point.\n hullRecords.push(currentRecord);\n correctTurnFound = true;\n }\n else {\n const lastHullRecord = hullRecords.pop();\n const lastHullPoint = lastHullRecord[0];\n const secondLastHullRecord = hullRecords.pop();\n const secondLastHullPoint = secondLastHullRecord[0];\n const crossProduct = secondLastHullPoint.cross(lastHullPoint, currentPoint);\n if (crossProduct < 0) {\n // Found a right turn.\n hullRecords.push(secondLastHullRecord);\n hullRecords.push(lastHullRecord);\n hullRecords.push(currentRecord);\n correctTurnFound = true;\n }\n else if (crossProduct === 0) {\n // the three points are collinear\n // three options:\n // there may be a 180 or 0 degree angle at lastHullPoint\n // or two of the three points are coincident\n // we have to take rounding errors into account\n const THRESHOLD = 1e-10;\n const angleBetween = lastHullPoint.angleBetween(secondLastHullPoint, currentPoint);\n if (Math.abs(angleBetween - 180) < THRESHOLD) {\n // rouding around 180 to 180\n // if the cross product is 0 because the angle is 180 degrees\n // discard last hull point (add to insidePoints)\n // insidePoints.unshift(lastHullPoint);\n insidePoints[getKey(lastHullRecord)] = lastHullPoint;\n // reenter second-to-last hull point (will be last at next iter)\n hullRecords.push(secondLastHullRecord);\n // do not do anything with current point\n // correct turn not found\n }\n else if (lastHullPoint.equals(currentPoint) ||\n secondLastHullPoint.equals(lastHullPoint)) {\n // if the cross product is 0 because two points are the same\n // discard last hull point (add to insidePoints)\n // insidePoints.unshift(lastHullPoint);\n insidePoints[getKey(lastHullRecord)] = lastHullPoint;\n // reenter second-to-last hull point (will be last at next iter)\n hullRecords.push(secondLastHullRecord);\n // do not do anything with current point\n // correct turn not found\n }\n else if (Math.abs(((angleBetween + 1) % 360) - 1) < THRESHOLD) {\n // rounding around 0 and 360 to 0\n // if the cross product is 0 because the angle is 0 degrees\n // remove last hull point from hull BUT do not discard it\n // reenter second-to-last hull point (will be last at next iter)\n hullRecords.push(secondLastHullRecord);\n // put last hull point back into the sorted point records list\n sortedRecords.push(lastHullRecord);\n // we are switching the order of the 0deg and 180deg points\n // correct turn not found\n }\n }\n else {\n // found a left turn\n // discard last hull point (add to insidePoints)\n // insidePoints.unshift(lastHullPoint);\n insidePoints[getKey(lastHullRecord)] = lastHullPoint;\n // reenter second-to-last hull point (will be last at next iter of loop)\n hullRecords.push(secondLastHullRecord);\n // do not do anything with current point\n // correct turn not found\n }\n }\n }\n }\n // At this point, hullPointRecords contains the output points in clockwise order\n // the points start with lowest-y,highest-x startPoint, and end at the same point\n // Step 3b: remove duplicated startPointRecord from the end of the array\n if (hullRecords.length > 2) {\n hullRecords.pop();\n }\n // Step 4: find the lowest originalIndex record and put it at the beginning of hull\n let lowestHullIndex; // the lowest originalIndex on the hull\n let indexOfLowestHullIndexRecord = -1; // the index of the record with lowestHullIndex\n for (let i = 0, n = hullRecords.length; i < n; i += 1) {\n const currentHullIndex = hullRecords[i][1];\n if (lowestHullIndex === undefined || currentHullIndex < lowestHullIndex) {\n lowestHullIndex = currentHullIndex;\n indexOfLowestHullIndexRecord = i;\n }\n }\n let hullPointRecordsReordered = [];\n if (indexOfLowestHullIndexRecord > 0) {\n const newFirstChunk = hullRecords.slice(indexOfLowestHullIndexRecord);\n const newSecondChunk = hullRecords.slice(0, indexOfLowestHullIndexRecord);\n hullPointRecordsReordered = newFirstChunk.concat(newSecondChunk);\n }\n else {\n hullPointRecordsReordered = hullRecords;\n }\n const hullPoints = [];\n for (let i = 0, n = hullPointRecordsReordered.length; i < n; i += 1) {\n hullPoints.push(hullPointRecordsReordered[i][0]);\n }\n return new Polyline(hullPoints);\n }\n equals(p) {\n if (p == null) {\n return false;\n }\n if (p.points.length !== this.points.length) {\n return false;\n }\n return p.points.every((a, i) => a.equals(this.points[i]));\n }\n clone() {\n return new Polyline(this.points.map((p) => p.clone()));\n }\n toJSON() {\n return this.points.map((p) => p.toJSON());\n }\n serialize() {\n return this.points.map((p) => `${p.x}, ${p.y}`).join(' ');\n }\n}\n(function (Polyline) {\n Polyline.toStringTag = `X6.Geometry.${Polyline.name}`;\n function isPolyline(instance) {\n if (instance == null) {\n return false;\n }\n if (instance instanceof Polyline) {\n return true;\n }\n const tag = instance[Symbol.toStringTag];\n const polyline = instance;\n if ((tag == null || tag === Polyline.toStringTag) &&\n typeof polyline.toHull === 'function' &&\n typeof polyline.simplify === 'function') {\n return true;\n }\n return false;\n }\n Polyline.isPolyline = isPolyline;\n})(Polyline || (Polyline = {}));\n(function (Polyline) {\n function parse(svgString) {\n const str = svgString.trim();\n if (str === '') {\n return new Polyline();\n }\n const points = [];\n const coords = str.split(/\\s*,\\s*|\\s+/);\n for (let i = 0, ii = coords.length; i < ii; i += 2) {\n points.push({ x: +coords[i], y: +coords[i + 1] });\n }\n return new Polyline(points);\n }\n Polyline.parse = parse;\n})(Polyline || (Polyline = {}));\n//# sourceMappingURL=polyline.js.map","import { Point } from './point';\nimport { Line } from './line';\nimport { Rectangle } from './rectangle';\nimport { Polyline } from './polyline';\nimport { Geometry } from './geometry';\nexport class Curve extends Geometry {\n constructor(start, controlPoint1, controlPoint2, end) {\n super();\n this.PRECISION = 3;\n this.start = Point.create(start);\n this.controlPoint1 = Point.create(controlPoint1);\n this.controlPoint2 = Point.create(controlPoint2);\n this.end = Point.create(end);\n }\n get [Symbol.toStringTag]() {\n return Curve.toStringTag;\n }\n bbox() {\n const start = this.start;\n const controlPoint1 = this.controlPoint1;\n const controlPoint2 = this.controlPoint2;\n const end = this.end;\n const x0 = start.x;\n const y0 = start.y;\n const x1 = controlPoint1.x;\n const y1 = controlPoint1.y;\n const x2 = controlPoint2.x;\n const y2 = controlPoint2.y;\n const x3 = end.x;\n const y3 = end.y;\n const points = []; // local extremes\n const tvalues = []; // t values of local extremes\n const bounds = [[], []];\n let a;\n let b;\n let c;\n let t;\n let t1;\n let t2;\n let b2ac;\n let sqrtb2ac;\n for (let i = 0; i < 2; i += 1) {\n if (i === 0) {\n b = 6 * x0 - 12 * x1 + 6 * x2;\n a = -3 * x0 + 9 * x1 - 9 * x2 + 3 * x3;\n c = 3 * x1 - 3 * x0;\n }\n else {\n b = 6 * y0 - 12 * y1 + 6 * y2;\n a = -3 * y0 + 9 * y1 - 9 * y2 + 3 * y3;\n c = 3 * y1 - 3 * y0;\n }\n if (Math.abs(a) < 1e-12) {\n if (Math.abs(b) < 1e-12) {\n continue;\n }\n t = -c / b;\n if (t > 0 && t < 1)\n tvalues.push(t);\n continue;\n }\n b2ac = b * b - 4 * c * a;\n sqrtb2ac = Math.sqrt(b2ac);\n if (b2ac < 0)\n continue;\n t1 = (-b + sqrtb2ac) / (2 * a);\n if (t1 > 0 && t1 < 1)\n tvalues.push(t1);\n t2 = (-b - sqrtb2ac) / (2 * a);\n if (t2 > 0 && t2 < 1)\n tvalues.push(t2);\n }\n let x;\n let y;\n let mt;\n let j = tvalues.length;\n const jlen = j;\n while (j) {\n j -= 1;\n t = tvalues[j];\n mt = 1 - t;\n x =\n mt * mt * mt * x0 +\n 3 * mt * mt * t * x1 +\n 3 * mt * t * t * x2 +\n t * t * t * x3;\n bounds[0][j] = x;\n y =\n mt * mt * mt * y0 +\n 3 * mt * mt * t * y1 +\n 3 * mt * t * t * y2 +\n t * t * t * y3;\n bounds[1][j] = y;\n points[j] = { X: x, Y: y };\n }\n tvalues[jlen] = 0;\n tvalues[jlen + 1] = 1;\n points[jlen] = { X: x0, Y: y0 };\n points[jlen + 1] = { X: x3, Y: y3 };\n bounds[0][jlen] = x0;\n bounds[1][jlen] = y0;\n bounds[0][jlen + 1] = x3;\n bounds[1][jlen + 1] = y3;\n tvalues.length = jlen + 2;\n bounds[0].length = jlen + 2;\n bounds[1].length = jlen + 2;\n points.length = jlen + 2;\n const left = Math.min.apply(null, bounds[0]);\n const top = Math.min.apply(null, bounds[1]);\n const right = Math.max.apply(null, bounds[0]);\n const bottom = Math.max.apply(null, bounds[1]);\n return new Rectangle(left, top, right - left, bottom - top);\n }\n closestPoint(p, options = {}) {\n return this.pointAtT(this.closestPointT(p, options));\n }\n closestPointLength(p, options = {}) {\n const opts = this.getOptions(options);\n return this.lengthAtT(this.closestPointT(p, opts), opts);\n }\n closestPointNormalizedLength(p, options = {}) {\n const opts = this.getOptions(options);\n const cpLength = this.closestPointLength(p, opts);\n if (!cpLength) {\n return 0;\n }\n const length = this.length(opts);\n if (length === 0) {\n return 0;\n }\n return cpLength / length;\n }\n closestPointT(p, options = {}) {\n const precision = this.getPrecision(options);\n const subdivisions = this.getDivisions(options);\n const precisionRatio = Math.pow(10, -precision); // eslint-disable-line\n let investigatedSubdivision = null;\n let investigatedSubdivisionStartT = 0;\n let investigatedSubdivisionEndT = 0;\n let distFromStart = 0;\n let distFromEnd = 0;\n let chordLength = 0;\n let minSumDist = null;\n const count = subdivisions.length;\n let piece = count > 0 ? 1 / count : 0;\n subdivisions.forEach((division, i) => {\n const startDist = division.start.distance(p);\n const endDist = division.end.distance(p);\n const sumDist = startDist + endDist;\n if (minSumDist == null || sumDist < minSumDist) {\n investigatedSubdivision = division;\n investigatedSubdivisionStartT = i * piece;\n investigatedSubdivisionEndT = (i + 1) * piece;\n distFromStart = startDist;\n distFromEnd = endDist;\n minSumDist = sumDist;\n chordLength = division.endpointDistance();\n }\n });\n // Recursively divide investigated subdivision, until distance between\n // baselinePoint and closest path endpoint is within `10^(-precision)`,\n // then return the closest endpoint of that final subdivision.\n // eslint-disable-next-line\n while (true) {\n // check if we have reached at least one required observed precision\n // - calculated as: the difference in distances from point to start and end divided by the distance\n // - note that this function is not monotonic = it doesn't converge stably but has \"teeth\"\n // - the function decreases while one of the endpoints is fixed but \"jumps\" whenever we switch\n // - this criterion works well for points lying far away from the curve\n const startPrecisionRatio = distFromStart\n ? Math.abs(distFromStart - distFromEnd) / distFromStart\n : 0;\n const endPrecisionRatio = distFromEnd != null\n ? Math.abs(distFromStart - distFromEnd) / distFromEnd\n : 0;\n const hasRequiredPrecision = startPrecisionRatio < precisionRatio ||\n endPrecisionRatio < precisionRatio;\n // check if we have reached at least one required minimal distance\n // - calculated as: the subdivision chord length multiplied by precisionRatio\n // - calculation is relative so it will work for arbitrarily large/small curves and their subdivisions\n // - this is a backup criterion that works well for points lying \"almost at\" the curve\n const hasMiniStartDistance = distFromStart\n ? distFromStart < chordLength * precisionRatio\n : true;\n const hasMiniEndDistance = distFromEnd\n ? distFromEnd < chordLength * precisionRatio\n : true;\n const hasMiniDistance = hasMiniStartDistance || hasMiniEndDistance;\n if (hasRequiredPrecision || hasMiniDistance) {\n return distFromStart <= distFromEnd\n ? investigatedSubdivisionStartT\n : investigatedSubdivisionEndT;\n }\n // otherwise, set up for next iteration\n const divided = investigatedSubdivision.divide(0.5);\n piece /= 2;\n const startDist1 = divided[0].start.distance(p);\n const endDist1 = divided[0].end.distance(p);\n const sumDist1 = startDist1 + endDist1;\n const startDist2 = divided[1].start.distance(p);\n const endDist2 = divided[1].end.distance(p);\n const sumDist2 = startDist2 + endDist2;\n if (sumDist1 <= sumDist2) {\n investigatedSubdivision = divided[0];\n investigatedSubdivisionEndT -= piece;\n distFromStart = startDist1;\n distFromEnd = endDist1;\n }\n else {\n investigatedSubdivision = divided[1];\n investigatedSubdivisionStartT += piece;\n distFromStart = startDist2;\n distFromEnd = endDist2;\n }\n }\n }\n closestPointTangent(p, options = {}) {\n return this.tangentAtT(this.closestPointT(p, options));\n }\n containsPoint(p, options = {}) {\n const polyline = this.toPolyline(options);\n return polyline.containsPoint(p);\n }\n divideAt(ratio, options = {}) {\n if (ratio <= 0) {\n return this.divideAtT(0);\n }\n if (ratio >= 1) {\n return this.divideAtT(1);\n }\n const t = this.tAt(ratio, options);\n return this.divideAtT(t);\n }\n divideAtLength(length, options = {}) {\n const t = this.tAtLength(length, options);\n return this.divideAtT(t);\n }\n divide(t) {\n return this.divideAtT(t);\n }\n divideAtT(t) {\n const start = this.start;\n const controlPoint1 = this.controlPoint1;\n const controlPoint2 = this.controlPoint2;\n const end = this.end;\n if (t <= 0) {\n return [\n new Curve(start, start, start, start),\n new Curve(start, controlPoint1, controlPoint2, end),\n ];\n }\n if (t >= 1) {\n return [\n new Curve(start, controlPoint1, controlPoint2, end),\n new Curve(end, end, end, end),\n ];\n }\n const dividerPoints = this.getSkeletonPoints(t);\n const startControl1 = dividerPoints.startControlPoint1;\n const startControl2 = dividerPoints.startControlPoint2;\n const divider = dividerPoints.divider;\n const dividerControl1 = dividerPoints.dividerControlPoint1;\n const dividerControl2 = dividerPoints.dividerControlPoint2;\n return [\n new Curve(start, startControl1, startControl2, divider),\n new Curve(divider, dividerControl1, dividerControl2, end),\n ];\n }\n endpointDistance() {\n return this.start.distance(this.end);\n }\n getSkeletonPoints(t) {\n const start = this.start;\n const control1 = this.controlPoint1;\n const control2 = this.controlPoint2;\n const end = this.end;\n // shortcuts for `t` values that are out of range\n if (t <= 0) {\n return {\n startControlPoint1: start.clone(),\n startControlPoint2: start.clone(),\n divider: start.clone(),\n dividerControlPoint1: control1.clone(),\n dividerControlPoint2: control2.clone(),\n };\n }\n if (t >= 1) {\n return {\n startControlPoint1: control1.clone(),\n startControlPoint2: control2.clone(),\n divider: end.clone(),\n dividerControlPoint1: end.clone(),\n dividerControlPoint2: end.clone(),\n };\n }\n const midpoint1 = new Line(start, control1).pointAt(t);\n const midpoint2 = new Line(control1, control2).pointAt(t);\n const midpoint3 = new Line(control2, end).pointAt(t);\n const subControl1 = new Line(midpoint1, midpoint2).pointAt(t);\n const subControl2 = new Line(midpoint2, midpoint3).pointAt(t);\n const divideLine = new Line(subControl1, subControl2).pointAt(t);\n return {\n startControlPoint1: midpoint1,\n startControlPoint2: subControl1,\n divider: divideLine,\n dividerControlPoint1: subControl2,\n dividerControlPoint2: midpoint3,\n };\n }\n getSubdivisions(options = {}) {\n const precision = this.getPrecision(options);\n let subdivisions = [\n new Curve(this.start, this.controlPoint1, this.controlPoint2, this.end),\n ];\n if (precision === 0) {\n return subdivisions;\n }\n let previousLength = this.endpointDistance();\n const precisionRatio = Math.pow(10, -precision); // eslint-disable-line\n // Recursively divide curve at `t = 0.5`, until the difference between\n // observed length at subsequent iterations is lower than precision.\n let iteration = 0;\n // eslint-disable-next-line\n while (true) {\n iteration += 1;\n const divisions = [];\n subdivisions.forEach((c) => {\n // dividing at t = 0.5 (not at middle length!)\n const divided = c.divide(0.5);\n divisions.push(divided[0], divided[1]);\n });\n // measure new length\n const length = divisions.reduce((memo, c) => memo + c.endpointDistance(), 0);\n // check if we have reached required observed precision\n // sine-like curves may have the same observed length in iteration 0 and 1 - skip iteration 1\n // not a problem for further iterations because cubic curves cannot have more than two local extrema\n // (i.e. cubic curves cannot intersect the baseline more than once)\n // therefore two subsequent iterations cannot produce sampling with equal length\n const ratio = length !== 0 ? (length - previousLength) / length : 0;\n if (iteration > 1 && ratio < precisionRatio) {\n return divisions;\n }\n subdivisions = divisions;\n previousLength = length;\n }\n }\n length(options = {}) {\n const divisions = this.getDivisions(options);\n return divisions.reduce((memo, c) => {\n return memo + c.endpointDistance();\n }, 0);\n }\n lengthAtT(t, options = {}) {\n if (t <= 0) {\n return 0;\n }\n const precision = options.precision === undefined ? this.PRECISION : options.precision;\n const subCurve = this.divide(t)[0];\n return subCurve.length({ precision });\n }\n pointAt(ratio, options = {}) {\n if (ratio <= 0) {\n return this.start.clone();\n }\n if (ratio >= 1) {\n return this.end.clone();\n }\n const t = this.tAt(ratio, options);\n return this.pointAtT(t);\n }\n pointAtLength(length, options = {}) {\n const t = this.tAtLength(length, options);\n return this.pointAtT(t);\n }\n pointAtT(t) {\n if (t <= 0) {\n return this.start.clone();\n }\n if (t >= 1) {\n return this.end.clone();\n }\n return this.getSkeletonPoints(t).divider;\n }\n isDifferentiable() {\n const start = this.start;\n const control1 = this.controlPoint1;\n const control2 = this.controlPoint2;\n const end = this.end;\n return !(start.equals(control1) &&\n control1.equals(control2) &&\n control2.equals(end));\n }\n tangentAt(ratio, options = {}) {\n if (!this.isDifferentiable())\n return null;\n if (ratio < 0) {\n ratio = 0; // eslint-disable-line\n }\n else if (ratio > 1) {\n ratio = 1; // eslint-disable-line\n }\n const t = this.tAt(ratio, options);\n return this.tangentAtT(t);\n }\n tangentAtLength(length, options = {}) {\n if (!this.isDifferentiable()) {\n return null;\n }\n const t = this.tAtLength(length, options);\n return this.tangentAtT(t);\n }\n tangentAtT(t) {\n if (!this.isDifferentiable()) {\n return null;\n }\n if (t < 0) {\n t = 0; // eslint-disable-line\n }\n if (t > 1) {\n t = 1; // eslint-disable-line\n }\n const skeletonPoints = this.getSkeletonPoints(t);\n const p1 = skeletonPoints.startControlPoint2;\n const p2 = skeletonPoints.dividerControlPoint1;\n const tangentStart = skeletonPoints.divider;\n const tangentLine = new Line(p1, p2);\n // move so that tangent line starts at the point requested\n tangentLine.translate(tangentStart.x - p1.x, tangentStart.y - p1.y);\n return tangentLine;\n }\n getPrecision(options = {}) {\n return options.precision == null ? this.PRECISION : options.precision;\n }\n getDivisions(options = {}) {\n if (options.subdivisions != null) {\n return options.subdivisions;\n }\n const precision = this.getPrecision(options);\n return this.getSubdivisions({ precision });\n }\n getOptions(options = {}) {\n const precision = this.getPrecision(options);\n const subdivisions = this.getDivisions(options);\n return { precision, subdivisions };\n }\n tAt(ratio, options = {}) {\n if (ratio <= 0) {\n return 0;\n }\n if (ratio >= 1) {\n return 1;\n }\n const opts = this.getOptions(options);\n const total = this.length(opts);\n const length = total * ratio;\n return this.tAtLength(length, opts);\n }\n tAtLength(length, options = {}) {\n let fromStart = true;\n if (length < 0) {\n fromStart = false;\n length = -length; // eslint-disable-line\n }\n const precision = this.getPrecision(options);\n const subdivisions = this.getDivisions(options);\n const opts = { precision, subdivisions };\n let investigatedSubdivision = null;\n let investigatedSubdivisionStartT;\n let investigatedSubdivisionEndT;\n let baselinePointDistFromStart = 0;\n let baselinePointDistFromEnd = 0;\n let memo = 0;\n const count = subdivisions.length;\n let piece = count > 0 ? 1 / count : 0;\n for (let i = 0; i < count; i += 1) {\n const index = fromStart ? i : count - 1 - i;\n const division = subdivisions[i];\n const dist = division.endpointDistance();\n if (length <= memo + dist) {\n investigatedSubdivision = division;\n investigatedSubdivisionStartT = index * piece;\n investigatedSubdivisionEndT = (index + 1) * piece;\n baselinePointDistFromStart = fromStart\n ? length - memo\n : dist + memo - length;\n baselinePointDistFromEnd = fromStart\n ? dist + memo - length\n : length - memo;\n break;\n }\n memo += dist;\n }\n if (investigatedSubdivision == null) {\n return fromStart ? 1 : 0;\n }\n // note that precision affects what length is recorded\n // (imprecise measurements underestimate length by up to 10^(-precision) of the precise length)\n // e.g. at precision 1, the length may be underestimated by up to 10% and cause this function to return 1\n const total = this.length(opts);\n const precisionRatio = Math.pow(10, -precision); // eslint-disable-line\n // recursively divide investigated subdivision:\n // until distance between baselinePoint and closest path endpoint is within 10^(-precision)\n // then return the closest endpoint of that final subdivision\n // eslint-disable-next-line\n while (true) {\n let ratio;\n ratio = total !== 0 ? baselinePointDistFromStart / total : 0;\n if (ratio < precisionRatio) {\n return investigatedSubdivisionStartT;\n }\n ratio = total !== 0 ? baselinePointDistFromEnd / total : 0;\n if (ratio < precisionRatio) {\n return investigatedSubdivisionEndT;\n }\n // otherwise, set up for next iteration\n let newBaselinePointDistFromStart;\n let newBaselinePointDistFromEnd;\n const divided = investigatedSubdivision.divide(0.5);\n piece /= 2;\n const baseline1Length = divided[0].endpointDistance();\n const baseline2Length = divided[1].endpointDistance();\n if (baselinePointDistFromStart <= baseline1Length) {\n investigatedSubdivision = divided[0];\n investigatedSubdivisionEndT -= piece;\n newBaselinePointDistFromStart = baselinePointDistFromStart;\n newBaselinePointDistFromEnd =\n baseline1Length - newBaselinePointDistFromStart;\n }\n else {\n investigatedSubdivision = divided[1];\n investigatedSubdivisionStartT += piece;\n newBaselinePointDistFromStart =\n baselinePointDistFromStart - baseline1Length;\n newBaselinePointDistFromEnd =\n baseline2Length - newBaselinePointDistFromStart;\n }\n baselinePointDistFromStart = newBaselinePointDistFromStart;\n baselinePointDistFromEnd = newBaselinePointDistFromEnd;\n }\n }\n toPoints(options = {}) {\n const subdivisions = this.getDivisions(options);\n const points = [subdivisions[0].start.clone()];\n subdivisions.forEach((c) => points.push(c.end.clone()));\n return points;\n }\n toPolyline(options = {}) {\n return new Polyline(this.toPoints(options));\n }\n scale(sx, sy, origin) {\n this.start.scale(sx, sy, origin);\n this.controlPoint1.scale(sx, sy, origin);\n this.controlPoint2.scale(sx, sy, origin);\n this.end.scale(sx, sy, origin);\n return this;\n }\n rotate(angle, origin) {\n this.start.rotate(angle, origin);\n this.controlPoint1.rotate(angle, origin);\n this.controlPoint2.rotate(angle, origin);\n this.end.rotate(angle, origin);\n return this;\n }\n translate(tx, ty) {\n if (typeof tx === 'number') {\n this.start.translate(tx, ty);\n this.controlPoint1.translate(tx, ty);\n this.controlPoint2.translate(tx, ty);\n this.end.translate(tx, ty);\n }\n else {\n this.start.translate(tx);\n this.controlPoint1.translate(tx);\n this.controlPoint2.translate(tx);\n this.end.translate(tx);\n }\n return this;\n }\n equals(c) {\n return (c != null &&\n this.start.equals(c.start) &&\n this.controlPoint1.equals(c.controlPoint1) &&\n this.controlPoint2.equals(c.controlPoint2) &&\n this.end.equals(c.end));\n }\n clone() {\n return new Curve(this.start, this.controlPoint1, this.controlPoint2, this.end);\n }\n toJSON() {\n return {\n start: this.start.toJSON(),\n controlPoint1: this.controlPoint1.toJSON(),\n controlPoint2: this.controlPoint2.toJSON(),\n end: this.end.toJSON(),\n };\n }\n serialize() {\n return [\n this.start.serialize(),\n this.controlPoint1.serialize(),\n this.controlPoint2.serialize(),\n this.end.serialize(),\n ].join(' ');\n }\n}\n(function (Curve) {\n Curve.toStringTag = `X6.Geometry.${Curve.name}`;\n function isCurve(instance) {\n if (instance == null) {\n return false;\n }\n if (instance instanceof Curve) {\n return true;\n }\n const tag = instance[Symbol.toStringTag];\n const curve = instance;\n try {\n if ((tag == null || tag === Curve.toStringTag) &&\n Point.isPoint(curve.start) &&\n Point.isPoint(curve.controlPoint1) &&\n Point.isPoint(curve.controlPoint2) &&\n Point.isPoint(curve.end) &&\n typeof curve.toPoints === 'function' &&\n typeof curve.toPolyline === 'function') {\n return true;\n }\n }\n catch (e) {\n return false;\n }\n return false;\n }\n Curve.isCurve = isCurve;\n})(Curve || (Curve = {}));\n(function (Curve) {\n function getFirstControlPoints(rhs) {\n const n = rhs.length;\n const x = []; // `x` is a solution vector.\n const tmp = [];\n let b = 2.0;\n x[0] = rhs[0] / b;\n // Decomposition and forward substitution.\n for (let i = 1; i < n; i += 1) {\n tmp[i] = 1 / b;\n b = (i < n - 1 ? 4.0 : 3.5) - tmp[i];\n x[i] = (rhs[i] - x[i - 1]) / b;\n }\n for (let i = 1; i < n; i += 1) {\n // Backsubstitution.\n x[n - i - 1] -= tmp[n - i] * x[n - i];\n }\n return x;\n }\n function getCurveControlPoints(points) {\n const knots = points.map((p) => Point.clone(p));\n const firstControlPoints = [];\n const secondControlPoints = [];\n const n = knots.length - 1;\n // Special case: Bezier curve should be a straight line.\n if (n === 1) {\n // 3P1 = 2P0 + P3\n firstControlPoints[0] = new Point((2 * knots[0].x + knots[1].x) / 3, (2 * knots[0].y + knots[1].y) / 3);\n // P2 = 2P1 – P0\n secondControlPoints[0] = new Point(2 * firstControlPoints[0].x - knots[0].x, 2 * firstControlPoints[0].y - knots[0].y);\n return [firstControlPoints, secondControlPoints];\n }\n // Calculate first Bezier control points.\n // Right hand side vector.\n const rhs = [];\n // Set right hand side X values.\n for (let i = 1; i < n - 1; i += 1) {\n rhs[i] = 4 * knots[i].x + 2 * knots[i + 1].x;\n }\n rhs[0] = knots[0].x + 2 * knots[1].x;\n rhs[n - 1] = (8 * knots[n - 1].x + knots[n].x) / 2.0;\n // Get first control points X-values.\n const x = getFirstControlPoints(rhs);\n // Set right hand side Y values.\n for (let i = 1; i < n - 1; i += 1) {\n rhs[i] = 4 * knots[i].y + 2 * knots[i + 1].y;\n }\n rhs[0] = knots[0].y + 2 * knots[1].y;\n rhs[n - 1] = (8 * knots[n - 1].y + knots[n].y) / 2.0;\n // Get first control points Y-values.\n const y = getFirstControlPoints(rhs);\n // Fill output arrays.\n for (let i = 0; i < n; i += 1) {\n // First control point.\n firstControlPoints.push(new Point(x[i], y[i]));\n // Second control point.\n if (i < n - 1) {\n secondControlPoints.push(new Point(2 * knots[i + 1].x - x[i + 1], 2 * knots[i + 1].y - y[i + 1]));\n }\n else {\n secondControlPoints.push(new Point((knots[n].x + x[n - 1]) / 2, (knots[n].y + y[n - 1]) / 2));\n }\n }\n return [firstControlPoints, secondControlPoints];\n }\n function throughPoints(points) {\n if (points == null || (Array.isArray(points) && points.length < 2)) {\n throw new Error('At least 2 points are required');\n }\n const controlPoints = getCurveControlPoints(points);\n const curves = [];\n for (let i = 0, ii = controlPoints[0].length; i < ii; i += 1) {\n const controlPoint1 = new Point(controlPoints[0][i].x, controlPoints[0][i].y);\n const controlPoint2 = new Point(controlPoints[1][i].x, controlPoints[1][i].y);\n curves.push(new Curve(points[i], controlPoint1, controlPoint2, points[i + 1]));\n }\n return curves;\n }\n Curve.throughPoints = throughPoints;\n})(Curve || (Curve = {}));\n//# sourceMappingURL=curve.js.map","import { Line } from '../line';\nimport { Point } from '../point';\nimport { Segment } from './segment';\nexport class LineTo extends Segment {\n constructor(x, y) {\n super();\n if (Line.isLine(x)) {\n this.endPoint = x.end.clone().round(2);\n }\n else {\n this.endPoint = Point.create(x, y).round(2);\n }\n }\n get type() {\n return 'L';\n }\n get line() {\n return new Line(this.start, this.end);\n }\n bbox() {\n return this.line.bbox();\n }\n closestPoint(p) {\n return this.line.closestPoint(p);\n }\n closestPointLength(p) {\n return this.line.closestPointLength(p);\n }\n closestPointNormalizedLength(p) {\n return this.line.closestPointNormalizedLength(p);\n }\n closestPointTangent(p) {\n return this.line.closestPointTangent(p);\n }\n length() {\n return this.line.length();\n }\n divideAt(ratio) {\n const divided = this.line.divideAt(ratio);\n return [new LineTo(divided[0]), new LineTo(divided[1])];\n }\n divideAtLength(length) {\n const divided = this.line.divideAtLength(length);\n return [new LineTo(divided[0]), new LineTo(divided[1])];\n }\n getSubdivisions() {\n return [];\n }\n pointAt(ratio) {\n return this.line.pointAt(ratio);\n }\n pointAtLength(length) {\n return this.line.pointAtLength(length);\n }\n tangentAt(ratio) {\n return this.line.tangentAt(ratio);\n }\n tangentAtLength(length) {\n return this.line.tangentAtLength(length);\n }\n isDifferentiable() {\n if (this.previousSegment == null) {\n return false;\n }\n return !this.start.equals(this.end);\n }\n clone() {\n return new LineTo(this.end);\n }\n scale(sx, sy, origin) {\n this.end.scale(sx, sy, origin);\n return this;\n }\n rotate(angle, origin) {\n this.end.rotate(angle, origin);\n return this;\n }\n translate(tx, ty) {\n if (typeof tx === 'number') {\n this.end.translate(tx, ty);\n }\n else {\n this.end.translate(tx);\n }\n return this;\n }\n equals(s) {\n return (this.type === s.type &&\n this.start.equals(s.start) &&\n this.end.equals(s.end));\n }\n toJSON() {\n return {\n type: this.type,\n start: this.start.toJSON(),\n end: this.end.toJSON(),\n };\n }\n serialize() {\n const end = this.end;\n return `${this.type} ${end.x} ${end.y}`;\n }\n}\n(function (LineTo) {\n function create(...args) {\n const len = args.length;\n const arg0 = args[0];\n // line provided\n if (Line.isLine(arg0)) {\n return new LineTo(arg0);\n }\n // points provided\n if (Point.isPointLike(arg0)) {\n if (len === 1) {\n return new LineTo(arg0);\n }\n // poly-line segment\n return args.map((arg) => new LineTo(arg));\n }\n // coordinates provided\n if (len === 2) {\n return new LineTo(+args[0], +args[1]);\n }\n // poly-line segment\n const segments = [];\n for (let i = 0; i < len; i += 2) {\n const x = +args[i];\n const y = +args[i + 1];\n segments.push(new LineTo(x, y));\n }\n return segments;\n }\n LineTo.create = create;\n})(LineTo || (LineTo = {}));\n//# sourceMappingURL=lineto.js.map","import { Line } from '../line';\nimport { LineTo } from './lineto';\nimport { Segment } from './segment';\nexport class Close extends Segment {\n get end() {\n if (!this.subpathStartSegment) {\n throw new Error('Missing subpath start segment. (This segment needs a subpath ' +\n 'start segment (e.g. MoveTo), or segment has not yet been added' +\n ' to a path.)');\n }\n return this.subpathStartSegment.end;\n }\n get type() {\n return 'Z';\n }\n get line() {\n return new Line(this.start, this.end);\n }\n bbox() {\n return this.line.bbox();\n }\n closestPoint(p) {\n return this.line.closestPoint(p);\n }\n closestPointLength(p) {\n return this.line.closestPointLength(p);\n }\n closestPointNormalizedLength(p) {\n return this.line.closestPointNormalizedLength(p);\n }\n closestPointTangent(p) {\n return this.line.closestPointTangent(p);\n }\n length() {\n return this.line.length();\n }\n divideAt(ratio) {\n const divided = this.line.divideAt(ratio);\n return [\n // do not actually cut into the segment, first divided part can stay as Z\n divided[1].isDifferentiable() ? new LineTo(divided[0]) : this.clone(),\n new LineTo(divided[1]),\n ];\n }\n divideAtLength(length) {\n const divided = this.line.divideAtLength(length);\n return [\n divided[1].isDifferentiable() ? new LineTo(divided[0]) : this.clone(),\n new LineTo(divided[1]),\n ];\n }\n getSubdivisions() {\n return [];\n }\n pointAt(ratio) {\n return this.line.pointAt(ratio);\n }\n pointAtLength(length) {\n return this.line.pointAtLength(length);\n }\n tangentAt(ratio) {\n return this.line.tangentAt(ratio);\n }\n tangentAtLength(length) {\n return this.line.tangentAtLength(length);\n }\n isDifferentiable() {\n if (!this.previousSegment || !this.subpathStartSegment) {\n return false;\n }\n return !this.start.equals(this.end);\n }\n scale() {\n return this;\n }\n rotate() {\n return this;\n }\n translate() {\n return this;\n }\n equals(s) {\n return (this.type === s.type &&\n this.start.equals(s.start) &&\n this.end.equals(s.end));\n }\n clone() {\n return new Close();\n }\n toJSON() {\n return {\n type: this.type,\n start: this.start.toJSON(),\n end: this.end.toJSON(),\n };\n }\n serialize() {\n return this.type;\n }\n}\n(function (Close) {\n function create() {\n return new Close();\n }\n Close.create = create;\n})(Close || (Close = {}));\n//# sourceMappingURL=close.js.map","import { Line } from '../line';\nimport { Curve } from '../curve';\nimport { Point } from '../point';\nimport { LineTo } from './lineto';\nimport { Segment } from './segment';\nexport class MoveTo extends Segment {\n constructor(x, y) {\n super();\n this.isVisible = false;\n this.isSubpathStart = true;\n if (Line.isLine(x) || Curve.isCurve(x)) {\n this.endPoint = x.end.clone().round(2);\n }\n else {\n this.endPoint = Point.create(x, y).round(2);\n }\n }\n get start() {\n throw new Error('Illegal access. Moveto segments should not need a start property.');\n }\n get type() {\n return 'M';\n }\n bbox() {\n return null;\n }\n closestPoint() {\n return this.end.clone();\n }\n closestPointLength() {\n return 0;\n }\n closestPointNormalizedLength() {\n return 0;\n }\n closestPointT() {\n return 1;\n }\n closestPointTangent() {\n return null;\n }\n length() {\n return 0;\n }\n lengthAtT() {\n return 0;\n }\n divideAt() {\n return [this.clone(), this.clone()];\n }\n divideAtLength() {\n return [this.clone(), this.clone()];\n }\n getSubdivisions() {\n return [];\n }\n pointAt() {\n return this.end.clone();\n }\n pointAtLength() {\n return this.end.clone();\n }\n pointAtT() {\n return this.end.clone();\n }\n tangentAt() {\n return null;\n }\n tangentAtLength() {\n return null;\n }\n tangentAtT() {\n return null;\n }\n isDifferentiable() {\n return false;\n }\n scale(sx, sy, origin) {\n this.end.scale(sx, sy, origin);\n return this;\n }\n rotate(angle, origin) {\n this.end.rotate(angle, origin);\n return this;\n }\n translate(tx, ty) {\n if (typeof tx === 'number') {\n this.end.translate(tx, ty);\n }\n else {\n this.end.translate(tx);\n }\n return this;\n }\n clone() {\n return new MoveTo(this.end);\n }\n equals(s) {\n return this.type === s.type && this.end.equals(s.end);\n }\n toJSON() {\n return {\n type: this.type,\n end: this.end.toJSON(),\n };\n }\n serialize() {\n const end = this.end;\n return `${this.type} ${end.x} ${end.y}`;\n }\n}\n(function (MoveTo) {\n function create(...args) {\n const len = args.length;\n const arg0 = args[0];\n // line provided\n if (Line.isLine(arg0)) {\n return new MoveTo(arg0);\n }\n // curve provided\n if (Curve.isCurve(arg0)) {\n return new MoveTo(arg0);\n }\n // points provided\n if (Point.isPointLike(arg0)) {\n if (len === 1) {\n return new MoveTo(arg0);\n }\n // this is a moveto-with-subsequent-poly-line segment\n const segments = [];\n // points come one by one\n for (let i = 0; i < len; i += 1) {\n if (i === 0) {\n segments.push(new MoveTo(args[i]));\n }\n else {\n segments.push(new LineTo(args[i]));\n }\n }\n return segments;\n }\n // coordinates provided\n if (len === 2) {\n return new MoveTo(+args[0], +args[1]);\n }\n // this is a moveto-with-subsequent-poly-line segment\n const segments = [];\n for (let i = 0; i < len; i += 2) {\n const x = +args[i];\n const y = +args[i + 1];\n if (i === 0) {\n segments.push(new MoveTo(x, y));\n }\n else {\n segments.push(new LineTo(x, y));\n }\n }\n return segments;\n }\n MoveTo.create = create;\n})(MoveTo || (MoveTo = {}));\n//# sourceMappingURL=moveto.js.map","import { Curve } from '../curve';\nimport { Point } from '../point';\nimport { Segment } from './segment';\nexport class CurveTo extends Segment {\n constructor(arg0, arg1, arg2, arg3, arg4, arg5) {\n super();\n if (Curve.isCurve(arg0)) {\n this.controlPoint1 = arg0.controlPoint1.clone().round(2);\n this.controlPoint2 = arg0.controlPoint2.clone().round(2);\n this.endPoint = arg0.end.clone().round(2);\n }\n else if (typeof arg0 === 'number') {\n this.controlPoint1 = new Point(arg0, arg1).round(2);\n this.controlPoint2 = new Point(arg2, arg3).round(2);\n this.endPoint = new Point(arg4, arg5).round(2);\n }\n else {\n this.controlPoint1 = Point.create(arg0).round(2);\n this.controlPoint2 = Point.create(arg1).round(2);\n this.endPoint = Point.create(arg2).round(2);\n }\n }\n get type() {\n return 'C';\n }\n get curve() {\n return new Curve(this.start, this.controlPoint1, this.controlPoint2, this.end);\n }\n bbox() {\n return this.curve.bbox();\n }\n closestPoint(p) {\n return this.curve.closestPoint(p);\n }\n closestPointLength(p) {\n return this.curve.closestPointLength(p);\n }\n closestPointNormalizedLength(p) {\n return this.curve.closestPointNormalizedLength(p);\n }\n closestPointTangent(p) {\n return this.curve.closestPointTangent(p);\n }\n length() {\n return this.curve.length();\n }\n divideAt(ratio, options = {}) {\n // TODO: fix options\n const divided = this.curve.divideAt(ratio, options);\n return [new CurveTo(divided[0]), new CurveTo(divided[1])];\n }\n divideAtLength(length, options = {}) {\n // TODO: fix options\n const divided = this.curve.divideAtLength(length, options);\n return [new CurveTo(divided[0]), new CurveTo(divided[1])];\n }\n divideAtT(t) {\n const divided = this.curve.divideAtT(t);\n return [new CurveTo(divided[0]), new CurveTo(divided[1])];\n }\n getSubdivisions() {\n return [];\n }\n pointAt(ratio) {\n return this.curve.pointAt(ratio);\n }\n pointAtLength(length) {\n return this.curve.pointAtLength(length);\n }\n tangentAt(ratio) {\n return this.curve.tangentAt(ratio);\n }\n tangentAtLength(length) {\n return this.curve.tangentAtLength(length);\n }\n isDifferentiable() {\n if (!this.previousSegment) {\n return false;\n }\n const start = this.start;\n const control1 = this.controlPoint1;\n const control2 = this.controlPoint2;\n const end = this.end;\n return !(start.equals(control1) &&\n control1.equals(control2) &&\n control2.equals(end));\n }\n scale(sx, sy, origin) {\n this.controlPoint1.scale(sx, sy, origin);\n this.controlPoint2.scale(sx, sy, origin);\n this.end.scale(sx, sy, origin);\n return this;\n }\n rotate(angle, origin) {\n this.controlPoint1.rotate(angle, origin);\n this.controlPoint2.rotate(angle, origin);\n this.end.rotate(angle, origin);\n return this;\n }\n translate(tx, ty) {\n if (typeof tx === 'number') {\n this.controlPoint1.translate(tx, ty);\n this.controlPoint2.translate(tx, ty);\n this.end.translate(tx, ty);\n }\n else {\n this.controlPoint1.translate(tx);\n this.controlPoint2.translate(tx);\n this.end.translate(tx);\n }\n return this;\n }\n equals(s) {\n return (this.start.equals(s.start) &&\n this.end.equals(s.end) &&\n this.controlPoint1.equals(s.controlPoint1) &&\n this.controlPoint2.equals(s.controlPoint2));\n }\n clone() {\n return new CurveTo(this.controlPoint1, this.controlPoint2, this.end);\n }\n toJSON() {\n return {\n type: this.type,\n start: this.start.toJSON(),\n controlPoint1: this.controlPoint1.toJSON(),\n controlPoint2: this.controlPoint2.toJSON(),\n end: this.end.toJSON(),\n };\n }\n serialize() {\n const c1 = this.controlPoint1;\n const c2 = this.controlPoint2;\n const end = this.end;\n return [this.type, c1.x, c1.y, c2.x, c2.y, end.x, end.y].join(' ');\n }\n}\n(function (CurveTo) {\n function create(...args) {\n const len = args.length;\n const arg0 = args[0];\n // curve provided\n if (Curve.isCurve(arg0)) {\n return new CurveTo(arg0);\n }\n // points provided\n if (Point.isPointLike(arg0)) {\n if (len === 3) {\n return new CurveTo(args[0], args[1], args[2]);\n }\n // this is a poly-bezier segment\n const segments = [];\n for (let i = 0; i < len; i += 3) {\n segments.push(new CurveTo(args[i], args[i + 1], args[i + 2]));\n }\n return segments;\n }\n // coordinates provided\n if (len === 6) {\n return new CurveTo(args[0], args[1], args[2], args[3], args[4], args[5]);\n }\n // this is a poly-bezier segment\n const segments = [];\n for (let i = 0; i < len; i += 6) {\n segments.push(new CurveTo(args[i], args[i + 1], args[i + 2], args[i + 3], args[i + 4], args[i + 5]));\n }\n return segments;\n }\n CurveTo.create = create;\n})(CurveTo || (CurveTo = {}));\n//# sourceMappingURL=curveto.js.map","export function round(num, precision = 0) {\n return Number.isInteger(num) ? num : +num.toFixed(precision);\n}\nexport function random(min, max) {\n let mmin;\n let mmax;\n if (max == null) {\n mmax = min == null ? 1 : min;\n mmin = 0;\n }\n else {\n mmax = max;\n mmin = min == null ? 0 : min;\n }\n if (mmax < mmin) {\n const temp = mmin;\n mmin = mmax;\n mmax = temp;\n }\n return Math.floor(Math.random() * (mmax - mmin + 1) + mmin);\n}\nexport function clamp(value, min, max) {\n if (Number.isNaN(value)) {\n return NaN;\n }\n if (Number.isNaN(min) || Number.isNaN(max)) {\n return 0;\n }\n return min < max\n ? value < min\n ? min\n : value > max\n ? max\n : value\n : value < max\n ? max\n : value > min\n ? min\n : value;\n}\nexport function snapToGrid(value, gridSize) {\n return gridSize * Math.round(value / gridSize);\n}\nexport function containsPoint(rect, point) {\n return (point != null &&\n rect != null &&\n point.x >= rect.x &&\n point.x <= rect.x + rect.width &&\n point.y >= rect.y &&\n point.y <= rect.y + rect.height);\n}\nexport function squaredLength(p1, p2) {\n const dx = p1.x - p2.x;\n const dy = p1.y - p2.y;\n return dx * dx + dy * dy;\n}\n//# sourceMappingURL=util.js.map","export class Geometry {\n valueOf() {\n return this.toJSON();\n }\n toString() {\n return JSON.stringify(this.toJSON());\n }\n}\n//# sourceMappingURL=geometry.js.map","import { Geometry } from '../geometry';\nexport class Segment extends Geometry {\n constructor() {\n super(...arguments);\n this.isVisible = true;\n this.isSegment = true;\n this.isSubpathStart = false;\n }\n get end() {\n return this.endPoint;\n }\n get start() {\n if (this.previousSegment == null) {\n throw new Error('Missing previous segment. (This segment cannot be the ' +\n 'first segment of a path, or segment has not yet been ' +\n 'added to a path.)');\n }\n return this.previousSegment.end;\n }\n closestPointT(p, options) {\n if (this.closestPointNormalizedLength) {\n return this.closestPointNormalizedLength(p);\n }\n throw new Error('Neither `closestPointT` nor `closestPointNormalizedLength` method is implemented.');\n }\n // eslint-disable-next-line\n lengthAtT(t, options) {\n if (t <= 0) {\n return 0;\n }\n const length = this.length();\n if (t >= 1) {\n return length;\n }\n return length * t;\n }\n divideAtT(t) {\n if (this.divideAt) {\n return this.divideAt(t);\n }\n throw new Error('Neither `divideAtT` nor `divideAt` method is implemented.');\n }\n pointAtT(t) {\n if (this.pointAt) {\n return this.pointAt(t);\n }\n throw new Error('Neither `pointAtT` nor `pointAt` method is implemented.');\n }\n tangentAtT(t) {\n if (this.tangentAt) {\n return this.tangentAt(t);\n }\n throw new Error('Neither `tangentAtT` nor `tangentAt` method is implemented.');\n }\n}\n//# sourceMappingURL=segment.js.map","import { round } from '../util';\nfunction rotate(x, y, rad) {\n return {\n x: x * Math.cos(rad) - y * Math.sin(rad),\n y: x * Math.sin(rad) + y * Math.cos(rad),\n };\n}\nfunction q2c(x1, y1, ax, ay, x2, y2) {\n const v13 = 1 / 3;\n const v23 = 2 / 3;\n return [\n v13 * x1 + v23 * ax,\n v13 * y1 + v23 * ay,\n v13 * x2 + v23 * ax,\n v13 * y2 + v23 * ay,\n x2,\n y2,\n ];\n}\nfunction a2c(x1, y1, rx, ry, angle, largeArcFlag, sweepFlag, x2, y2, recursive) {\n // for more information of where this math came from visit:\n // http://www.w3.org/TR/SVG11/implnote.html#ArcImplementationNotes\n const v120 = (Math.PI * 120) / 180;\n const rad = (Math.PI / 180) * (+angle || 0);\n let res = [];\n let xy;\n let f1;\n let f2;\n let cx;\n let cy;\n if (!recursive) {\n xy = rotate(x1, y1, -rad);\n x1 = xy.x; // eslint-disable-line\n y1 = xy.y; // eslint-disable-line\n xy = rotate(x2, y2, -rad);\n x2 = xy.x; // eslint-disable-line\n y2 = xy.y; // eslint-disable-line\n const x = (x1 - x2) / 2;\n const y = (y1 - y2) / 2;\n let h = (x * x) / (rx * rx) + (y * y) / (ry * ry);\n if (h > 1) {\n h = Math.sqrt(h);\n rx = h * rx; // eslint-disable-line\n ry = h * ry; // eslint-disable-line\n }\n const rx2 = rx * rx;\n const ry2 = ry * ry;\n const k = (largeArcFlag === sweepFlag ? -1 : 1) *\n Math.sqrt(Math.abs((rx2 * ry2 - rx2 * y * y - ry2 * x * x) / (rx2 * y * y + ry2 * x * x)));\n cx = (k * rx * y) / ry + (x1 + x2) / 2;\n cy = (k * -ry * x) / rx + (y1 + y2) / 2;\n f1 = Math.asin((y1 - cy) / ry);\n f2 = Math.asin((y2 - cy) / ry);\n f1 = x1 < cx ? Math.PI - f1 : f1;\n f2 = x2 < cx ? Math.PI - f2 : f2;\n if (f1 < 0) {\n f1 = Math.PI * 2 + f1;\n }\n if (f2 < 0) {\n f2 = Math.PI * 2 + f2;\n }\n if (sweepFlag && f1 > f2) {\n f1 -= Math.PI * 2;\n }\n if (!sweepFlag && f2 > f1) {\n f2 -= Math.PI * 2;\n }\n }\n else {\n f1 = recursive[0];\n f2 = recursive[1];\n cx = recursive[2];\n cy = recursive[3];\n }\n let df = f2 - f1;\n if (Math.abs(df) > v120) {\n const f2old = f2;\n const x2old = x2;\n const y2old = y2;\n f2 = f1 + v120 * (sweepFlag && f2 > f1 ? 1 : -1);\n x2 = cx + rx * Math.cos(f2); // eslint-disable-line\n y2 = cy + ry * Math.sin(f2); // eslint-disable-line\n res = a2c(x2, y2, rx, ry, angle, 0, sweepFlag, x2old, y2old, [\n f2,\n f2old,\n cx,\n cy,\n ]);\n }\n df = f2 - f1;\n const c1 = Math.cos(f1);\n const s1 = Math.sin(f1);\n const c2 = Math.cos(f2);\n const s2 = Math.sin(f2);\n const t = Math.tan(df / 4);\n const hx = (4 / 3) * (rx * t);\n const hy = (4 / 3) * (ry * t);\n const m1 = [x1, y1];\n const m2 = [x1 + hx * s1, y1 - hy * c1];\n const m3 = [x2 + hx * s2, y2 - hy * c2];\n const m4 = [x2, y2];\n m2[0] = 2 * m1[0] - m2[0];\n m2[1] = 2 * m1[1] - m2[1];\n if (recursive) {\n return [m2, m3, m4].concat(res);\n }\n {\n res = [m2, m3, m4].concat(res).join().split(',');\n const newres = [];\n const ii = res.length;\n for (let i = 0; i < ii; i += 1) {\n newres[i] =\n i % 2\n ? rotate(+res[i - 1], +res[i], rad).y\n : rotate(+res[i], +res[i + 1], rad).x;\n }\n return newres;\n }\n}\nfunction parse(pathData) {\n if (!pathData) {\n return null;\n }\n const spaces = '\\x09\\x0a\\x0b\\x0c\\x0d\\x20\\xa0\\u1680\\u180e\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200a\\u202f\\u205f\\u3000\\u2028\\u2029';\n // https://regexper.com/#%28%5Ba-z%5D%29%5B%5Cs%2C%5D*%28%28-%3F%5Cd*%5C.%3F%5C%5Cd*%28%3F%3Ae%5B%5C-%2B%5D%3F%5Cd%2B%29%3F%5B%5Cs%5D*%2C%3F%5B%5Cs%5D*%29%2B%29\n const segmentReg = new RegExp(`([a-z])[${spaces},]*((-?\\\\d*\\\\.?\\\\d*(?:e[\\\\-+]?\\\\d+)?[${spaces}]*,?[${spaces}]*)+)`, // eslint-disable-line\n 'ig');\n // https://regexper.com/#%28-%3F%5Cd*%5C.%3F%5Cd*%28%3F%3Ae%5B%5C-%2B%5D%3F%5Cd%2B%29%3F%29%5B%5Cs%5D*%2C%3F%5B%5Cs%5D*\n const commandParamReg = new RegExp(\n // eslint-disable-next-line\n `(-?\\\\d*\\\\.?\\\\d*(?:e[\\\\-+]?\\\\d+)?)[${spaces}]*,?[${spaces}]*`, 'ig');\n const paramsCount = {\n a: 7,\n c: 6,\n h: 1,\n l: 2,\n m: 2,\n q: 4,\n s: 4,\n t: 2,\n v: 1,\n z: 0,\n };\n const segmetns = [];\n pathData.replace(segmentReg, (input, cmd, args) => {\n const params = [];\n let command = cmd.toLowerCase();\n args.replace(commandParamReg, (a, b) => {\n if (b) {\n params.push(+b);\n }\n return a;\n });\n if (command === 'm' && params.length > 2) {\n segmetns.push([cmd, ...params.splice(0, 2)]);\n command = 'l';\n cmd = cmd === 'm' ? 'l' : 'L'; // eslint-disable-line\n }\n const count = paramsCount[command];\n while (params.length >= count) {\n segmetns.push([cmd, ...params.splice(0, count)]);\n if (!count) {\n break;\n }\n }\n return input;\n });\n return segmetns;\n}\nfunction abs(pathString) {\n const pathArray = parse(pathString);\n // if invalid string, return 'M 0 0'\n if (!pathArray || !pathArray.length) {\n return [['M', 0, 0]];\n }\n let x = 0;\n let y = 0;\n let mx = 0;\n let my = 0;\n const segments = [];\n for (let i = 0, ii = pathArray.length; i < ii; i += 1) {\n const r = [];\n segments.push(r);\n const segment = pathArray[i];\n const command = segment[0];\n if (command !== command.toUpperCase()) {\n r[0] = command.toUpperCase();\n switch (r[0]) {\n case 'A':\n r[1] = segment[1];\n r[2] = segment[2];\n r[3] = segment[3];\n r[4] = segment[4];\n r[5] = segment[5];\n r[6] = +segment[6] + x;\n r[7] = +segment[7] + y;\n break;\n case 'V':\n r[1] = +segment[1] + y;\n break;\n case 'H':\n r[1] = +segment[1] + x;\n break;\n case 'M':\n mx = +segment[1] + x;\n my = +segment[2] + y;\n for (let j = 1, jj = segment.length; j < jj; j += 1) {\n r[j] = +segment[j] + (j % 2 ? x : y);\n }\n break;\n default:\n for (let j = 1, jj = segment.length; j < jj; j += 1) {\n r[j] = +segment[j] + (j % 2 ? x : y);\n }\n break;\n }\n }\n else {\n for (let j = 0, jj = segment.length; j < jj; j += 1) {\n r[j] = segment[j];\n }\n }\n switch (r[0]) {\n case 'Z':\n x = +mx;\n y = +my;\n break;\n case 'H':\n x = r[1];\n break;\n case 'V':\n y = r[1];\n break;\n case 'M':\n mx = r[r.length - 2];\n my = r[r.length - 1];\n x = r[r.length - 2];\n y = r[r.length - 1];\n break;\n default:\n x = r[r.length - 2];\n y = r[r.length - 1];\n break;\n }\n }\n return segments;\n}\nfunction normalize(path) {\n const pathArray = abs(path);\n const attrs = { x: 0, y: 0, bx: 0, by: 0, X: 0, Y: 0, qx: null, qy: null };\n function processPath(path, d, pcom) {\n let nx;\n let ny;\n if (!path) {\n return ['C', d.x, d.y, d.x, d.y, d.x, d.y];\n }\n if (!(path[0] in { T: 1, Q: 1 })) {\n d.qx = null;\n d.qy = null;\n }\n switch (path[0]) {\n case 'M':\n d.X = path[1];\n d.Y = path[2];\n break;\n case 'A':\n if (parseFloat(path[1]) === 0 || parseFloat(path[2]) === 0) {\n // https://www.w3.org/TR/SVG/paths.html#ArcOutOfRangeParameters\n // \"If either rx or ry is 0, then this arc is treated as a\n // straight line segment (a \"lineto\") joining the endpoints.\"\n return ['L', path[6], path[7]];\n }\n return ['C'].concat(a2c.apply(0, [d.x, d.y].concat(path.slice(1))));\n case 'S':\n if (pcom === 'C' || pcom === 'S') {\n // In 'S' case we have to take into account, if the previous command is C/S.\n nx = d.x * 2 - d.bx; // And reflect the previous\n ny = d.y * 2 - d.by; // command's control point relative to the current point.\n }\n else {\n // or some else or nothing\n nx = d.x;\n ny = d.y;\n }\n return ['C', nx, ny].concat(path.slice(1));\n case 'T':\n if (pcom === 'Q' || pcom === 'T') {\n // In 'T' case we have to take into account, if the previous command is Q/T.\n d.qx = d.x * 2 - d.qx; // And make a reflection similar\n d.qy = d.y * 2 - d.qy; // to case 'S'.\n }\n else {\n // or something else or nothing\n d.qx = d.x;\n d.qy = d.y;\n }\n return ['C'].concat(q2c(d.x, d.y, d.qx, d.qy, path[1], path[2]));\n case 'Q':\n d.qx = path[1];\n d.qy = path[2];\n return ['C'].concat(q2c(d.x, d.y, path[1], path[2], path[3], path[4]));\n case 'H':\n return ['L'].concat(path[1], d.y);\n case 'V':\n return ['L'].concat(d.x, path[1]);\n case 'L':\n break;\n case 'Z':\n break;\n default:\n break;\n }\n return path;\n }\n function fixArc(pp, i) {\n if (pp[i].length > 7) {\n pp[i].shift();\n const pi = pp[i];\n while (pi.length) {\n // if created multiple 'C's, their original seg is saved\n commands[i] = 'A';\n i += 1; // eslint-disable-line\n pp.splice(i, 0, ['C'].concat(pi.splice(0, 6)));\n }\n pp.splice(i, 1);\n ii = pathArray.length;\n }\n }\n const commands = []; // path commands of original path p\n let prevCommand = ''; // holder for previous path command of original path\n let ii = pathArray.length;\n for (let i = 0; i < ii; i += 1) {\n let command = ''; // temporary holder for original path command\n if (pathArray[i]) {\n command = pathArray[i][0]; // save current path command\n }\n if (command !== 'C') {\n // C is not saved yet, because it may be result of conversion\n commands[i] = command; // Save current path command\n if (i > 0) {\n prevCommand = commands[i - 1]; // Get previous path command pcom\n }\n }\n // Previous path command is inputted to processPath\n pathArray[i] = processPath(pathArray[i], attrs, prevCommand);\n if (commands[i] !== 'A' && command === 'C') {\n commands[i] = 'C'; // 'A' is the only command\n }\n // which may produce multiple 'C's\n // so we have to make sure that 'C' is also 'C' in original path\n fixArc(pathArray, i); // fixArc adds also the right amount of 'A's to pcoms\n const seg = pathArray[i];\n const seglen = seg.length;\n attrs.x = seg[seglen - 2];\n attrs.y = seg[seglen - 1];\n attrs.bx = parseFloat(seg[seglen - 4]) || attrs.x;\n attrs.by = parseFloat(seg[seglen - 3]) || attrs.y;\n }\n // make sure normalized path data string starts with an M segment\n if (!pathArray[0][0] || pathArray[0][0] !== 'M') {\n pathArray.unshift(['M', 0, 0]);\n }\n return pathArray;\n}\n/**\n * Converts provided SVG path data string into a normalized path data string.\n *\n * The normalization uses a restricted subset of path commands; all segments\n * are translated into lineto, curveto, moveto, and closepath segments.\n *\n * Relative path commands are changed into their absolute counterparts,\n * and chaining of coordinates is disallowed.\n *\n * The function will always return a valid path data string; if an input\n * string cannot be normalized, 'M 0 0' is returned.\n */\nexport function normalizePathData(pathData) {\n return normalize(pathData)\n .map((segment) => segment.map((item) => (typeof item === 'string' ? item : round(item, 2))))\n .join(',')\n .split(',')\n .join(' ');\n}\n//# sourceMappingURL=normalize.js.map","import { Point } from '../point';\nconst regexSupportedData = new RegExp(`^[\\\\s\\\\dLMCZz,.]*$`);\nexport function isValid(data) {\n if (typeof data !== 'string') {\n return false;\n }\n return regexSupportedData.test(data);\n}\n/**\n * Returns the remainder of division of `n` by `m`. You should use this\n * instead of the built-in operation as the built-in operation does not\n * properly handle negative numbers.\n */\nfunction mod(n, m) {\n return ((n % m) + m) % m;\n}\nfunction draw(points, round, initialMove, close, exclude) {\n const data = [];\n const end = points[points.length - 1];\n const rounded = round != null && round > 0;\n const arcSize = round || 0;\n // Adds virtual waypoint in the center between start and end point\n if (close && rounded) {\n points = points.slice(); // eslint-disable-line\n const p0 = points[0];\n const wp = new Point(end.x + (p0.x - end.x) / 2, end.y + (p0.y - end.y) / 2);\n points.splice(0, 0, wp);\n }\n let pt = points[0];\n let i = 1;\n // Draws the line segments\n if (initialMove) {\n data.push('M', pt.x, pt.y);\n }\n else {\n data.push('L', pt.x, pt.y);\n }\n while (i < (close ? points.length : points.length - 1)) {\n let tmp = points[mod(i, points.length)];\n let dx = pt.x - tmp.x;\n let dy = pt.y - tmp.y;\n if (rounded &&\n (dx !== 0 || dy !== 0) &&\n (exclude == null || exclude.indexOf(i - 1) < 0)) {\n // Draws a line from the last point to the current\n // point with a spacing of size off the current point\n // into direction of the last point\n let dist = Math.sqrt(dx * dx + dy * dy);\n const nx1 = (dx * Math.min(arcSize, dist / 2)) / dist;\n const ny1 = (dy * Math.min(arcSize, dist / 2)) / dist;\n const x1 = tmp.x + nx1;\n const y1 = tmp.y + ny1;\n data.push('L', x1, y1);\n // Draws a curve from the last point to the current\n // point with a spacing of size off the current point\n // into direction of the next point\n let next = points[mod(i + 1, points.length)];\n // Uses next non-overlapping point\n while (i < points.length - 2 &&\n Math.round(next.x - tmp.x) === 0 &&\n Math.round(next.y - tmp.y) === 0) {\n next = points[mod(i + 2, points.length)];\n i += 1;\n }\n dx = next.x - tmp.x;\n dy = next.y - tmp.y;\n dist = Math.max(1, Math.sqrt(dx * dx + dy * dy));\n const nx2 = (dx * Math.min(arcSize, dist / 2)) / dist;\n const ny2 = (dy * Math.min(arcSize, dist / 2)) / dist;\n const x2 = tmp.x + nx2;\n const y2 = tmp.y + ny2;\n data.push('Q', tmp.x, tmp.y, x2, y2);\n tmp = new Point(x2, y2);\n }\n else {\n data.push('L', tmp.x, tmp.y);\n }\n pt = tmp;\n i += 1;\n }\n if (close) {\n data.push('Z');\n }\n else {\n data.push('L', end.x, end.y);\n }\n return data.map((v) => (typeof v === 'string' ? v : +v.toFixed(3))).join(' ');\n}\nexport function drawPoints(points, options = {}) {\n const pts = [];\n if (points && points.length) {\n points.forEach((p) => {\n if (Array.isArray(p)) {\n pts.push({ x: p[0], y: p[1] });\n }\n else {\n pts.push({ x: p.x, y: p.y });\n }\n });\n }\n return draw(pts, options.round, options.initialMove == null || options.initialMove, options.close, options.exclude);\n}\n/**\n * Converts the given arc to a series of curves.\n */\nexport function arcToCurves(x0, y0, r1, r2, angle = 0, largeArcFlag = 0, sweepFlag = 0, x, y) {\n if (r1 === 0 || r2 === 0) {\n return [];\n }\n x -= x0; // eslint-disable-line\n y -= y0; // eslint-disable-line\n r1 = Math.abs(r1); // eslint-disable-line\n r2 = Math.abs(r2); // eslint-disable-line\n const ctx = -x / 2;\n const cty = -y / 2;\n const cpsi = Math.cos((angle * Math.PI) / 180);\n const spsi = Math.sin((angle * Math.PI) / 180);\n const rxd = cpsi * ctx + spsi * cty;\n const ryd = -1 * spsi * ctx + cpsi * cty;\n const rxdd = rxd * rxd;\n const rydd = ryd * ryd;\n const r1x = r1 * r1;\n const r2y = r2 * r2;\n const lamda = rxdd / r1x + rydd / r2y;\n let sds;\n if (lamda > 1) {\n r1 = Math.sqrt(lamda) * r1; // eslint-disable-line\n r2 = Math.sqrt(lamda) * r2; // eslint-disable-line\n sds = 0;\n }\n else {\n let seif = 1;\n if (largeArcFlag === sweepFlag) {\n seif = -1;\n }\n sds =\n seif *\n Math.sqrt((r1x * r2y - r1x * rydd - r2y * rxdd) / (r1x * rydd + r2y * rxdd));\n }\n const txd = (sds * r1 * ryd) / r2;\n const tyd = (-1 * sds * r2 * rxd) / r1;\n const tx = cpsi * txd - spsi * tyd + x / 2;\n const ty = spsi * txd + cpsi * tyd + y / 2;\n let rad = Math.atan2((ryd - tyd) / r2, (rxd - txd) / r1) - Math.atan2(0, 1);\n let s1 = rad >= 0 ? rad : 2 * Math.PI + rad;\n rad =\n Math.atan2((-ryd - tyd) / r2, (-rxd - txd) / r1) -\n Math.atan2((ryd - tyd) / r2, (rxd - txd) / r1);\n let dr = rad >= 0 ? rad : 2 * Math.PI + rad;\n if (sweepFlag === 0 && dr > 0) {\n dr -= 2 * Math.PI;\n }\n else if (sweepFlag !== 0 && dr < 0) {\n dr += 2 * Math.PI;\n }\n const sse = (dr * 2) / Math.PI;\n const seg = Math.ceil(sse < 0 ? -1 * sse : sse);\n const segr = dr / seg;\n const t = ((8 / 3) * Math.sin(segr / 4) * Math.sin(segr / 4)) / Math.sin(segr / 2);\n const cpsir1 = cpsi * r1;\n const cpsir2 = cpsi * r2;\n const spsir1 = spsi * r1;\n const spsir2 = spsi * r2;\n let mc = Math.cos(s1);\n let ms = Math.sin(s1);\n let x2 = -t * (cpsir1 * ms + spsir2 * mc);\n let y2 = -t * (spsir1 * ms - cpsir2 * mc);\n let x3 = 0;\n let y3 = 0;\n const result = [];\n for (let n = 0; n < seg; n += 1) {\n s1 += segr;\n mc = Math.cos(s1);\n ms = Math.sin(s1);\n x3 = cpsir1 * mc - spsir2 * ms + tx;\n y3 = spsir1 * mc + cpsir2 * ms + ty;\n const dx = -t * (cpsir1 * ms + spsir2 * mc);\n const dy = -t * (spsir1 * ms - cpsir2 * mc);\n // CurveTo updates x0, y0 so need to restore it\n const index = n * 6;\n result[index] = Number(x2 + x0);\n result[index + 1] = Number(y2 + y0);\n result[index + 2] = Number(x3 - dx + x0);\n result[index + 3] = Number(y3 - dy + y0);\n result[index + 4] = Number(x3 + x0);\n result[index + 5] = Number(y3 + y0);\n x2 = x3 + dx;\n y2 = y3 + dy;\n }\n return result.map((num) => +num.toFixed(2));\n}\nexport function drawArc(startX, startY, rx, ry, xAxisRotation = 0, largeArcFlag = 0, sweepFlag = 0, stopX, stopY) {\n const data = [];\n const points = arcToCurves(startX, startY, rx, ry, xAxisRotation, largeArcFlag, sweepFlag, stopX, stopY);\n if (points != null) {\n for (let i = 0, ii = points.length; i < ii; i += 6) {\n data.push('C', points[i], points[i + 1], points[i + 2], points[i + 3], points[i + 4], points[i + 5]);\n }\n }\n return data.join(' ');\n}\n//# sourceMappingURL=util.js.map","import { clamp, squaredLength } from '../util';\nimport { Line } from '../line';\nimport { Point } from '../point';\nimport { Curve } from '../curve';\nimport { Polyline } from '../polyline';\nimport { Rectangle } from '../rectangle';\nimport { Geometry } from '../geometry';\nimport { Close } from './close';\nimport { LineTo } from './lineto';\nimport { MoveTo } from './moveto';\nimport { CurveTo } from './curveto';\nimport { normalizePathData } from './normalize';\nimport * as Util from './util';\nexport class Path extends Geometry {\n constructor(args) {\n super();\n this.PRECISION = 3;\n this.segments = [];\n if (Array.isArray(args)) {\n if (Line.isLine(args[0]) || Curve.isCurve(args[0])) {\n let previousObj = null;\n const arr = args;\n arr.forEach((o, i) => {\n if (i === 0) {\n this.appendSegment(Path.createSegment('M', o.start));\n }\n if (previousObj != null && !previousObj.end.equals(o.start)) {\n this.appendSegment(Path.createSegment('M', o.start));\n }\n if (Line.isLine(o)) {\n this.appendSegment(Path.createSegment('L', o.end));\n }\n else if (Curve.isCurve(o)) {\n this.appendSegment(Path.createSegment('C', o.controlPoint1, o.controlPoint2, o.end));\n }\n previousObj = o;\n });\n }\n else {\n const arr = args;\n arr.forEach((s) => {\n if (s.isSegment) {\n this.appendSegment(s);\n }\n });\n }\n }\n else if (args != null) {\n if (Line.isLine(args)) {\n this.appendSegment(Path.createSegment('M', args.start));\n this.appendSegment(Path.createSegment('L', args.end));\n }\n else if (Curve.isCurve(args)) {\n this.appendSegment(Path.createSegment('M', args.start));\n this.appendSegment(Path.createSegment('C', args.controlPoint1, args.controlPoint2, args.end));\n }\n else if (Polyline.isPolyline(args)) {\n if (args.points && args.points.length) {\n args.points.forEach((point, index) => {\n const segment = index === 0\n ? Path.createSegment('M', point)\n : Path.createSegment('L', point);\n this.appendSegment(segment);\n });\n }\n }\n else if (args.isSegment) {\n this.appendSegment(args);\n }\n }\n }\n get [Symbol.toStringTag]() {\n return Path.toStringTag;\n }\n get start() {\n const segments = this.segments;\n const count = segments.length;\n if (count === 0) {\n return null;\n }\n for (let i = 0; i < count; i += 1) {\n const segment = segments[i];\n if (segment.isVisible) {\n return segment.start;\n }\n }\n // if no visible segment, return last segment end point\n return segments[count - 1].end;\n }\n get end() {\n const segments = this.segments;\n const count = segments.length;\n if (count === 0) {\n return null;\n }\n for (let i = count - 1; i >= 0; i -= 1) {\n const segment = segments[i];\n if (segment.isVisible) {\n return segment.end;\n }\n }\n // if no visible segment, return last segment end point\n return segments[count - 1].end;\n }\n moveTo(...args) {\n return this.appendSegment(MoveTo.create.call(null, ...args));\n }\n lineTo(...args) {\n return this.appendSegment(LineTo.create.call(null, ...args));\n }\n curveTo(...args) {\n return this.appendSegment(CurveTo.create.call(null, ...args));\n }\n arcTo(rx, ry, xAxisRotation, largeArcFlag, sweepFlag, endX, endY) {\n const start = this.end || new Point();\n const points = typeof endX === 'number'\n ? Util.arcToCurves(start.x, start.y, rx, ry, xAxisRotation, largeArcFlag, sweepFlag, endX, endY)\n : Util.arcToCurves(start.x, start.y, rx, ry, xAxisRotation, largeArcFlag, sweepFlag, endX.x, endX.y);\n if (points != null) {\n for (let i = 0, ii = points.length; i < ii; i += 6) {\n this.curveTo(points[i], points[i + 1], points[i + 2], points[i + 3], points[i + 4], points[i + 5]);\n }\n }\n return this;\n }\n quadTo(x1, y1, x, y) {\n const start = this.end || new Point();\n const data = ['M', start.x, start.y];\n if (typeof x1 === 'number') {\n data.push('Q', x1, y1, x, y);\n }\n else {\n const p = y1;\n data.push(`Q`, x1.x, x1.y, p.x, p.y);\n }\n const path = Path.parse(data.join(' '));\n this.appendSegment(path.segments.slice(1));\n return this;\n }\n close() {\n return this.appendSegment(Close.create());\n }\n drawPoints(points, options = {}) {\n const raw = Util.drawPoints(points, options);\n const sub = Path.parse(raw);\n if (sub && sub.segments) {\n this.appendSegment(sub.segments);\n }\n }\n bbox() {\n const segments = this.segments;\n const count = segments.length;\n if (count === 0) {\n return null;\n }\n let bbox;\n for (let i = 0; i < count; i += 1) {\n const segment = segments[i];\n if (segment.isVisible) {\n const segmentBBox = segment.bbox();\n if (segmentBBox != null) {\n bbox = bbox ? bbox.union(segmentBBox) : segmentBBox;\n }\n }\n }\n if (bbox != null) {\n return bbox;\n }\n // if the path has only invisible elements, return end point of last segment\n const lastSegment = segments[count - 1];\n return new Rectangle(lastSegment.end.x, lastSegment.end.y, 0, 0);\n }\n appendSegment(seg) {\n const count = this.segments.length;\n let previousSegment = count !== 0 ? this.segments[count - 1] : null;\n let currentSegment;\n const nextSegment = null;\n if (Array.isArray(seg)) {\n for (let i = 0, ii = seg.length; i < ii; i += 1) {\n const segment = seg[i];\n currentSegment = this.prepareSegment(segment, previousSegment, nextSegment);\n this.segments.push(currentSegment);\n previousSegment = currentSegment;\n }\n }\n else if (seg != null && seg.isSegment) {\n currentSegment = this.prepareSegment(seg, previousSegment, nextSegment);\n this.segments.push(currentSegment);\n }\n return this;\n }\n insertSegment(index, seg) {\n const count = this.segments.length;\n if (index < 0) {\n index = count + index + 1; // eslint-disable-line\n }\n if (index > count || index < 0) {\n throw new Error('Index out of range.');\n }\n let currentSegment;\n let previousSegment = null;\n let nextSegment = null;\n if (count !== 0) {\n if (index >= 1) {\n previousSegment = this.segments[index - 1];\n nextSegment = previousSegment.nextSegment;\n }\n else {\n previousSegment = null;\n nextSegment = this.segments[0];\n }\n }\n if (!Array.isArray(seg)) {\n currentSegment = this.prepareSegment(seg, previousSegment, nextSegment);\n this.segments.splice(index, 0, currentSegment);\n }\n else {\n for (let i = 0, ii = seg.length; i < ii; i += 1) {\n const segment = seg[i];\n currentSegment = this.prepareSegment(segment, previousSegment, nextSegment);\n this.segments.splice(index + i, 0, currentSegment);\n previousSegment = currentSegment;\n }\n }\n return this;\n }\n removeSegment(index) {\n const idx = this.fixIndex(index);\n const removedSegment = this.segments.splice(idx, 1)[0];\n const previousSegment = removedSegment.previousSegment;\n const nextSegment = removedSegment.nextSegment;\n // link the previous and next segments together (if present)\n if (previousSegment) {\n previousSegment.nextSegment = nextSegment;\n }\n if (nextSegment) {\n nextSegment.previousSegment = previousSegment;\n }\n if (removedSegment.isSubpathStart && nextSegment) {\n this.updateSubpathStartSegment(nextSegment);\n }\n return removedSegment;\n }\n replaceSegment(index, seg) {\n const idx = this.fixIndex(index);\n let currentSegment;\n const replacedSegment = this.segments[idx];\n let previousSegment = replacedSegment.previousSegment;\n const nextSegment = replacedSegment.nextSegment;\n let updateSubpathStart = replacedSegment.isSubpathStart;\n if (!Array.isArray(seg)) {\n currentSegment = this.prepareSegment(seg, previousSegment, nextSegment);\n this.segments.splice(idx, 1, currentSegment);\n if (updateSubpathStart && currentSegment.isSubpathStart) {\n // already updated by `prepareSegment`\n updateSubpathStart = false;\n }\n }\n else {\n this.segments.splice(index, 1);\n for (let i = 0, ii = seg.length; i < ii; i += 1) {\n const segment = seg[i];\n currentSegment = this.prepareSegment(segment, previousSegment, nextSegment);\n this.segments.splice(index + i, 0, currentSegment);\n previousSegment = currentSegment;\n if (updateSubpathStart && currentSegment.isSubpathStart) {\n updateSubpathStart = false;\n }\n }\n }\n if (updateSubpathStart && nextSegment) {\n this.updateSubpathStartSegment(nextSegment);\n }\n }\n getSegment(index) {\n const idx = this.fixIndex(index);\n return this.segments[idx];\n }\n fixIndex(index) {\n const length = this.segments.length;\n if (length === 0) {\n throw new Error('Path has no segments.');\n }\n let i = index;\n while (i < 0) {\n i = length + i;\n }\n if (i >= length || i < 0) {\n throw new Error('Index out of range.');\n }\n return i;\n }\n segmentAt(ratio, options = {}) {\n const index = this.segmentIndexAt(ratio, options);\n if (!index) {\n return null;\n }\n return this.getSegment(index);\n }\n segmentAtLength(length, options = {}) {\n const index = this.segmentIndexAtLength(length, options);\n if (!index)\n return null;\n return this.getSegment(index);\n }\n segmentIndexAt(ratio, options = {}) {\n if (this.segments.length === 0) {\n return null;\n }\n const rate = clamp(ratio, 0, 1);\n const opt = this.getOptions(options);\n const len = this.length(opt);\n const length = len * rate;\n return this.segmentIndexAtLength(length, opt);\n }\n segmentIndexAtLength(length, options = {}) {\n const count = this.segments.length;\n if (count === 0) {\n return null;\n }\n let fromStart = true;\n if (length < 0) {\n fromStart = false;\n length = -length; // eslint-disable-line\n }\n const precision = this.getPrecision(options);\n const segmentSubdivisions = this.getSubdivisions(options);\n let memo = 0;\n let lastVisibleIndex = null;\n for (let i = 0; i < count; i += 1) {\n const index = fromStart ? i : count - 1 - i;\n const segment = this.segments[index];\n const subdivisions = segmentSubdivisions[index];\n const len = segment.length({ precision, subdivisions });\n if (segment.isVisible) {\n if (length <= memo + len) {\n return index;\n }\n lastVisibleIndex = index;\n }\n memo += len;\n }\n // If length requested is higher than the length of the path, return\n // last visible segment index. If no visible segment, return null.\n return lastVisibleIndex;\n }\n getSegmentSubdivisions(options = {}) {\n const precision = this.getPrecision(options);\n const segmentSubdivisions = [];\n for (let i = 0, ii = this.segments.length; i < ii; i += 1) {\n const segment = this.segments[i];\n const subdivisions = segment.getSubdivisions({ precision });\n segmentSubdivisions.push(subdivisions);\n }\n return segmentSubdivisions;\n }\n updateSubpathStartSegment(segment) {\n let previous = segment.previousSegment;\n let current = segment;\n while (current && !current.isSubpathStart) {\n // assign previous segment's subpath start segment to this segment\n if (previous != null) {\n current.subpathStartSegment = previous.subpathStartSegment;\n }\n else {\n current.subpathStartSegment = null;\n }\n previous = current;\n current = current.nextSegment;\n }\n }\n prepareSegment(segment, previousSegment, nextSegment) {\n segment.previousSegment = previousSegment;\n segment.nextSegment = nextSegment;\n if (previousSegment != null) {\n previousSegment.nextSegment = segment;\n }\n if (nextSegment != null) {\n nextSegment.previousSegment = segment;\n }\n let updateSubpathStart = segment;\n if (segment.isSubpathStart) {\n // move to\n segment.subpathStartSegment = segment;\n updateSubpathStart = nextSegment;\n }\n // assign previous segment's subpath start (or self if it is a subpath start) to subsequent segments\n if (updateSubpathStart != null) {\n this.updateSubpathStartSegment(updateSubpathStart);\n }\n return segment;\n }\n closestPoint(p, options = {}) {\n const t = this.closestPointT(p, options);\n if (!t) {\n return null;\n }\n return this.pointAtT(t);\n }\n closestPointLength(p, options = {}) {\n const opts = this.getOptions(options);\n const t = this.closestPointT(p, opts);\n if (!t) {\n return 0;\n }\n return this.lengthAtT(t, opts);\n }\n closestPointNormalizedLength(p, options = {}) {\n const opts = this.getOptions(options);\n const cpLength = this.closestPointLength(p, opts);\n if (cpLength === 0) {\n return 0;\n }\n const length = this.length(opts);\n if (length === 0) {\n return 0;\n }\n return cpLength / length;\n }\n closestPointT(p, options = {}) {\n if (this.segments.length === 0) {\n return null;\n }\n const precision = this.getPrecision(options);\n const segmentSubdivisions = this.getSubdivisions(options);\n let closestPointT;\n let minSquaredDistance = Infinity;\n for (let i = 0, ii = this.segments.length; i < ii; i += 1) {\n const segment = this.segments[i];\n const subdivisions = segmentSubdivisions[i];\n if (segment.isVisible) {\n const segmentClosestPointT = segment.closestPointT(p, {\n precision,\n subdivisions,\n });\n const segmentClosestPoint = segment.pointAtT(segmentClosestPointT);\n const squaredDistance = squaredLength(segmentClosestPoint, p);\n if (squaredDistance < minSquaredDistance) {\n closestPointT = { segmentIndex: i, value: segmentClosestPointT };\n minSquaredDistance = squaredDistance;\n }\n }\n }\n if (closestPointT) {\n return closestPointT;\n }\n return { segmentIndex: this.segments.length - 1, value: 1 };\n }\n closestPointTangent(p, options = {}) {\n if (this.segments.length === 0) {\n return null;\n }\n const precision = this.getPrecision(options);\n const segmentSubdivisions = this.getSubdivisions(options);\n let closestPointTangent;\n let minSquaredDistance = Infinity;\n for (let i = 0, ii = this.segments.length; i < ii; i += 1) {\n const segment = this.segments[i];\n const subdivisions = segmentSubdivisions[i];\n if (segment.isDifferentiable()) {\n const segmentClosestPointT = segment.closestPointT(p, {\n precision,\n subdivisions,\n });\n const segmentClosestPoint = segment.pointAtT(segmentClosestPointT);\n const squaredDistance = squaredLength(segmentClosestPoint, p);\n if (squaredDistance < minSquaredDistance) {\n closestPointTangent = segment.tangentAtT(segmentClosestPointT);\n minSquaredDistance = squaredDistance;\n }\n }\n }\n if (closestPointTangent) {\n return closestPointTangent;\n }\n return null;\n }\n containsPoint(p, options = {}) {\n const polylines = this.toPolylines(options);\n if (!polylines) {\n return false;\n }\n let numIntersections = 0;\n for (let i = 0, ii = polylines.length; i < ii; i += 1) {\n const polyline = polylines[i];\n if (polyline.containsPoint(p)) {\n numIntersections += 1;\n }\n }\n // returns `true` for odd numbers of intersections (even-odd algorithm)\n return numIntersections % 2 === 1;\n }\n pointAt(ratio, options = {}) {\n if (this.segments.length === 0) {\n return null;\n }\n if (ratio <= 0) {\n return this.start.clone();\n }\n if (ratio >= 1) {\n return this.end.clone();\n }\n const opts = this.getOptions(options);\n const pathLength = this.length(opts);\n const length = pathLength * ratio;\n return this.pointAtLength(length, opts);\n }\n pointAtLength(length, options = {}) {\n if (this.segments.length === 0) {\n return null;\n }\n if (length === 0) {\n return this.start.clone();\n }\n let fromStart = true;\n if (length < 0) {\n fromStart = false;\n length = -length; // eslint-disable-line\n }\n const precision = this.getPrecision(options);\n const segmentSubdivisions = this.getSubdivisions(options);\n let lastVisibleSegment;\n let memo = 0;\n for (let i = 0, ii = this.segments.length; i < ii; i += 1) {\n const index = fromStart ? i : ii - 1 - i;\n const segment = this.segments[index];\n const subdivisions = segmentSubdivisions[index];\n const d = segment.length({\n precision,\n subdivisions,\n });\n if (segment.isVisible) {\n if (length <= memo + d) {\n return segment.pointAtLength((fromStart ? 1 : -1) * (length - memo), {\n precision,\n subdivisions,\n });\n }\n lastVisibleSegment = segment;\n }\n memo += d;\n }\n // if length requested is higher than the length of the path,\n // return last visible segment endpoint\n if (lastVisibleSegment) {\n return fromStart ? lastVisibleSegment.end : lastVisibleSegment.start;\n }\n // if no visible segment, return last segment end point\n const lastSegment = this.segments[this.segments.length - 1];\n return lastSegment.end.clone();\n }\n pointAtT(t) {\n const segments = this.segments;\n const numSegments = segments.length;\n if (numSegments === 0)\n return null; // if segments is an empty array\n const segmentIndex = t.segmentIndex;\n if (segmentIndex < 0)\n return segments[0].pointAtT(0);\n if (segmentIndex >= numSegments) {\n return segments[numSegments - 1].pointAtT(1);\n }\n const tValue = clamp(t.value, 0, 1);\n return segments[segmentIndex].pointAtT(tValue);\n }\n divideAt(ratio, options = {}) {\n if (this.segments.length === 0) {\n return null;\n }\n const rate = clamp(ratio, 0, 1);\n const opts = this.getOptions(options);\n const len = this.length(opts);\n const length = len * rate;\n return this.divideAtLength(length, opts);\n }\n divideAtLength(length, options = {}) {\n if (this.segments.length === 0) {\n return null;\n }\n let fromStart = true;\n if (length < 0) {\n fromStart = false;\n length = -length; // eslint-disable-line\n }\n const precision = this.getPrecision(options);\n const segmentSubdivisions = this.getSubdivisions(options);\n let memo = 0;\n let divided;\n let dividedSegmentIndex;\n let lastValidSegment;\n let lastValidSegmentIndex;\n let t;\n for (let i = 0, ii = this.segments.length; i < ii; i += 1) {\n const index = fromStart ? i : ii - 1 - i;\n const segment = this.getSegment(index);\n const subdivisions = segmentSubdivisions[index];\n const opts = { precision, subdivisions };\n const len = segment.length(opts);\n if (segment.isDifferentiable()) {\n lastValidSegment = segment;\n lastValidSegmentIndex = index;\n if (length <= memo + len) {\n dividedSegmentIndex = index;\n divided = segment.divideAtLength((fromStart ? 1 : -1) * (length - memo), opts);\n break;\n }\n }\n memo += len;\n }\n if (!lastValidSegment) {\n return null;\n }\n if (!divided) {\n dividedSegmentIndex = lastValidSegmentIndex;\n t = fromStart ? 1 : 0;\n divided = lastValidSegment.divideAtT(t);\n }\n // create a copy of this path and replace the identified segment with its two divided parts:\n const pathCopy = this.clone();\n const index = dividedSegmentIndex;\n pathCopy.replaceSegment(index, divided);\n const divisionStartIndex = index;\n let divisionMidIndex = index + 1;\n let divisionEndIndex = index + 2;\n // do not insert the part if it looks like a point\n if (!divided[0].isDifferentiable()) {\n pathCopy.removeSegment(divisionStartIndex);\n divisionMidIndex -= 1;\n divisionEndIndex -= 1;\n }\n // insert a Moveto segment to ensure secondPath will be valid:\n const movetoEnd = pathCopy.getSegment(divisionMidIndex).start;\n pathCopy.insertSegment(divisionMidIndex, Path.createSegment('M', movetoEnd));\n divisionEndIndex += 1;\n // do not insert the part if it looks like a point\n if (!divided[1].isDifferentiable()) {\n pathCopy.removeSegment(divisionEndIndex - 1);\n divisionEndIndex -= 1;\n }\n // ensure that Closepath segments in secondPath will be assigned correct subpathStartSegment:\n const secondPathSegmentIndexConversion = divisionEndIndex - divisionStartIndex - 1;\n for (let i = divisionEndIndex, ii = pathCopy.segments.length; i < ii; i += 1) {\n const originalSegment = this.getSegment(i - secondPathSegmentIndexConversion);\n const segment = pathCopy.getSegment(i);\n if (segment.type === 'Z' &&\n !originalSegment.subpathStartSegment.end.equals(segment.subpathStartSegment.end)) {\n // pathCopy segment's subpathStartSegment is different from original segment's one\n // convert this Closepath segment to a Lineto and replace it in pathCopy\n const convertedSegment = Path.createSegment('L', originalSegment.end);\n pathCopy.replaceSegment(i, convertedSegment);\n }\n }\n // distribute pathCopy segments into two paths and return those:\n const firstPath = new Path(pathCopy.segments.slice(0, divisionMidIndex));\n const secondPath = new Path(pathCopy.segments.slice(divisionMidIndex));\n return [firstPath, secondPath];\n }\n intersectsWithLine(line, options = {}) {\n const polylines = this.toPolylines(options);\n if (polylines == null) {\n return null;\n }\n let intersections = null;\n for (let i = 0, ii = polylines.length; i < ii; i += 1) {\n const polyline = polylines[i];\n const intersection = line.intersect(polyline);\n if (intersection) {\n if (intersections == null) {\n intersections = [];\n }\n if (Array.isArray(intersection)) {\n intersections.push(...intersection);\n }\n else {\n intersections.push(intersection);\n }\n }\n }\n return intersections;\n }\n isDifferentiable() {\n for (let i = 0, ii = this.segments.length; i < ii; i += 1) {\n const segment = this.segments[i];\n if (segment.isDifferentiable()) {\n return true;\n }\n }\n return false;\n }\n isValid() {\n const segments = this.segments;\n const isValid = segments.length === 0 || segments[0].type === 'M';\n return isValid;\n }\n length(options = {}) {\n if (this.segments.length === 0) {\n return 0;\n }\n const segmentSubdivisions = this.getSubdivisions(options);\n let length = 0;\n for (let i = 0, ii = this.segments.length; i < ii; i += 1) {\n const segment = this.segments[i];\n const subdivisions = segmentSubdivisions[i];\n length += segment.length({ subdivisions });\n }\n return length;\n }\n lengthAtT(t, options = {}) {\n const count = this.segments.length;\n if (count === 0) {\n return 0;\n }\n let segmentIndex = t.segmentIndex;\n if (segmentIndex < 0) {\n return 0;\n }\n let tValue = clamp(t.value, 0, 1);\n if (segmentIndex >= count) {\n segmentIndex = count - 1;\n tValue = 1;\n }\n const precision = this.getPrecision(options);\n const segmentSubdivisions = this.getSubdivisions(options);\n let length = 0;\n for (let i = 0; i < segmentIndex; i += 1) {\n const segment = this.segments[i];\n const subdivisions = segmentSubdivisions[i];\n length += segment.length({ precision, subdivisions });\n }\n const segment = this.segments[segmentIndex];\n const subdivisions = segmentSubdivisions[segmentIndex];\n length += segment.lengthAtT(tValue, { precision, subdivisions });\n return length;\n }\n tangentAt(ratio, options = {}) {\n if (this.segments.length === 0) {\n return null;\n }\n const rate = clamp(ratio, 0, 1);\n const opts = this.getOptions(options);\n const len = this.length(opts);\n const length = len * rate;\n return this.tangentAtLength(length, opts);\n }\n tangentAtLength(length, options = {}) {\n if (this.segments.length === 0) {\n return null;\n }\n let fromStart = true;\n if (length < 0) {\n fromStart = false;\n length = -length; // eslint-disable-line\n }\n const precision = this.getPrecision(options);\n const segmentSubdivisions = this.getSubdivisions(options);\n let lastValidSegment;\n let memo = 0;\n for (let i = 0, ii = this.segments.length; i < ii; i += 1) {\n const index = fromStart ? i : ii - 1 - i;\n const segment = this.segments[index];\n const subdivisions = segmentSubdivisions[index];\n const len = segment.length({ precision, subdivisions });\n if (segment.isDifferentiable()) {\n if (length <= memo + len) {\n return segment.tangentAtLength((fromStart ? 1 : -1) * (length - memo), {\n precision,\n subdivisions,\n });\n }\n lastValidSegment = segment;\n }\n memo += len;\n }\n // if length requested is higher than the length of the path, return tangent of endpoint of last valid segment\n if (lastValidSegment) {\n const t = fromStart ? 1 : 0;\n return lastValidSegment.tangentAtT(t);\n }\n // if no valid segment, return null\n return null;\n }\n tangentAtT(t) {\n const count = this.segments.length;\n if (count === 0) {\n return null;\n }\n const segmentIndex = t.segmentIndex;\n if (segmentIndex < 0) {\n return this.segments[0].tangentAtT(0);\n }\n if (segmentIndex >= count) {\n return this.segments[count - 1].tangentAtT(1);\n }\n const tValue = clamp(t.value, 0, 1);\n return this.segments[segmentIndex].tangentAtT(tValue);\n }\n getPrecision(options = {}) {\n return options.precision == null ? this.PRECISION : options.precision;\n }\n getSubdivisions(options = {}) {\n if (options.segmentSubdivisions == null) {\n const precision = this.getPrecision(options);\n return this.getSegmentSubdivisions({ precision });\n }\n return options.segmentSubdivisions;\n }\n getOptions(options = {}) {\n const precision = this.getPrecision(options);\n const segmentSubdivisions = this.getSubdivisions(options);\n return { precision, segmentSubdivisions };\n }\n toPoints(options = {}) {\n const segments = this.segments;\n const count = segments.length;\n if (count === 0) {\n return null;\n }\n const segmentSubdivisions = this.getSubdivisions(options);\n const points = [];\n let partialPoints = [];\n for (let i = 0; i < count; i += 1) {\n const segment = segments[i];\n if (segment.isVisible) {\n const divisions = segmentSubdivisions[i];\n if (divisions.length > 0) {\n // eslint-disable-next-line no-loop-func\n divisions.forEach((c) => partialPoints.push(c.start));\n }\n else {\n partialPoints.push(segment.start);\n }\n }\n else if (partialPoints.length > 0) {\n partialPoints.push(segments[i - 1].end);\n points.push(partialPoints);\n partialPoints = [];\n }\n }\n if (partialPoints.length > 0) {\n partialPoints.push(this.end);\n points.push(partialPoints);\n }\n return points;\n }\n toPolylines(options = {}) {\n const points = this.toPoints(options);\n if (!points) {\n return null;\n }\n return points.map((arr) => new Polyline(arr));\n }\n scale(sx, sy, origin) {\n this.segments.forEach((s) => s.scale(sx, sy, origin));\n return this;\n }\n rotate(angle, origin) {\n this.segments.forEach((segment) => segment.rotate(angle, origin));\n return this;\n }\n translate(tx, ty) {\n if (typeof tx === 'number') {\n this.segments.forEach((s) => s.translate(tx, ty));\n }\n else {\n this.segments.forEach((s) => s.translate(tx));\n }\n return this;\n }\n clone() {\n const path = new Path();\n this.segments.forEach((s) => path.appendSegment(s.clone()));\n return path;\n }\n equals(p) {\n if (p == null) {\n return false;\n }\n const segments = this.segments;\n const otherSegments = p.segments;\n const count = segments.length;\n if (otherSegments.length !== count) {\n return false;\n }\n for (let i = 0; i < count; i += 1) {\n const a = segments[i];\n const b = otherSegments[i];\n if (a.type !== b.type || !a.equals(b)) {\n return false;\n }\n }\n return true;\n }\n toJSON() {\n return this.segments.map((s) => s.toJSON());\n }\n serialize() {\n if (!this.isValid()) {\n throw new Error('Invalid path segments.');\n }\n return this.segments.map((s) => s.serialize()).join(' ');\n }\n toString() {\n return this.serialize();\n }\n}\n(function (Path) {\n Path.toStringTag = `X6.Geometry.${Path.name}`;\n function isPath(instance) {\n if (instance == null) {\n return false;\n }\n if (instance instanceof Path) {\n return true;\n }\n const tag = instance[Symbol.toStringTag];\n const path = instance;\n if ((tag == null || tag === Path.toStringTag) &&\n Array.isArray(path.segments) &&\n typeof path.moveTo === 'function' &&\n typeof path.lineTo === 'function' &&\n typeof path.curveTo === 'function') {\n return true;\n }\n return false;\n }\n Path.isPath = isPath;\n})(Path || (Path = {}));\n(function (Path) {\n function parse(pathData) {\n if (!pathData) {\n return new Path();\n }\n const path = new Path();\n const commandRe = /(?:[a-zA-Z] *)(?:(?:-?\\d+(?:\\.\\d+)?(?:e[-+]?\\d+)? *,? *)|(?:-?\\.\\d+ *,? *))+|(?:[a-zA-Z] *)(?! |\\d|-|\\.)/g;\n const commands = Path.normalize(pathData).match(commandRe);\n if (commands != null) {\n for (let i = 0, ii = commands.length; i < ii; i += 1) {\n const command = commands[i];\n const argRe = /(?:[a-zA-Z])|(?:(?:-?\\d+(?:\\.\\d+)?(?:e[-+]?\\d+)?))|(?:(?:-?\\.\\d+))/g;\n // args = [type, coordinate1, coordinate2...]\n const args = command.match(argRe);\n if (args != null) {\n const type = args[0];\n const coords = args.slice(1).map((a) => +a);\n const segment = createSegment.call(null, type, ...coords);\n path.appendSegment(segment);\n }\n }\n }\n return path;\n }\n Path.parse = parse;\n function createSegment(type, ...args) {\n if (type === 'M') {\n return MoveTo.create.call(null, ...args);\n }\n if (type === 'L') {\n return LineTo.create.call(null, ...args);\n }\n if (type === 'C') {\n return CurveTo.create.call(null, ...args);\n }\n if (type === 'z' || type === 'Z') {\n return Close.create();\n }\n throw new Error(`Invalid path segment type \"${type}\"`);\n }\n Path.createSegment = createSegment;\n})(Path || (Path = {}));\n(function (Path) {\n Path.normalize = normalizePathData;\n Path.isValid = Util.isValid;\n Path.drawArc = Util.drawArc;\n Path.drawPoints = Util.drawPoints;\n Path.arcToCurves = Util.arcToCurves;\n})(Path || (Path = {}));\n//# sourceMappingURL=path.js.map","import { Path } from '../../geometry';\nimport * as Dom from '../dom/core';\nexport class Vector {\n constructor(elem, attrs, children) {\n if (!elem) {\n throw new TypeError('Invalid element to create vector');\n }\n let node;\n if (Vector.isVector(elem)) {\n node = elem.node;\n }\n else if (typeof elem === 'string') {\n if (elem.toLowerCase() === 'svg') {\n node = Dom.createSvgDocument();\n }\n else if (elem[0] === '<') {\n const doc = Dom.createSvgDocument(elem);\n // only import the first child\n node = document.importNode(doc.firstChild, true);\n }\n else {\n node = document.createElementNS(Dom.ns.svg, elem);\n }\n }\n else {\n node = elem;\n }\n this.node = node;\n if (attrs) {\n this.setAttributes(attrs);\n }\n if (children) {\n this.append(children);\n }\n }\n get [Symbol.toStringTag]() {\n return Vector.toStringTag;\n }\n get type() {\n return this.node.nodeName;\n }\n get id() {\n return this.node.id;\n }\n set id(id) {\n this.node.id = id;\n }\n transform(matrix, options) {\n if (matrix == null) {\n return Dom.transform(this.node);\n }\n Dom.transform(this.node, matrix, options);\n return this;\n }\n translate(tx, ty = 0, options = {}) {\n if (tx == null) {\n return Dom.translate(this.node);\n }\n Dom.translate(this.node, tx, ty, options);\n return this;\n }\n rotate(angle, cx, cy, options = {}) {\n if (angle == null) {\n return Dom.rotate(this.node);\n }\n Dom.rotate(this.node, angle, cx, cy, options);\n return this;\n }\n scale(sx, sy) {\n if (sx == null) {\n return Dom.scale(this.node);\n }\n Dom.scale(this.node, sx, sy);\n return this;\n }\n /**\n * Returns an SVGMatrix that specifies the transformation necessary\n * to convert this coordinate system into `target` coordinate system.\n */\n getTransformToElement(target) {\n const ref = Vector.toNode(target);\n return Dom.getTransformToElement(this.node, ref);\n }\n removeAttribute(name) {\n Dom.removeAttribute(this.node, name);\n return this;\n }\n getAttribute(name) {\n return Dom.getAttribute(this.node, name);\n }\n setAttribute(name, value) {\n Dom.setAttribute(this.node, name, value);\n return this;\n }\n setAttributes(attrs) {\n Dom.setAttributes(this.node, attrs);\n return this;\n }\n attr(name, value) {\n if (name == null) {\n return Dom.attr(this.node);\n }\n if (typeof name === 'string' && value === undefined) {\n return Dom.attr(this.node, name);\n }\n if (typeof name === 'object') {\n Dom.attr(this.node, name);\n }\n else {\n Dom.attr(this.node, name, value);\n }\n return this;\n }\n svg() {\n return this.node instanceof SVGSVGElement\n ? this\n : Vector.create(this.node.ownerSVGElement);\n }\n defs() {\n const context = this.svg() || this;\n const defsNode = context.node.getElementsByTagName('defs')[0];\n if (defsNode) {\n return Vector.create(defsNode);\n }\n return Vector.create('defs').appendTo(context);\n }\n text(content, options = {}) {\n Dom.text(this.node, content, options);\n return this;\n }\n tagName() {\n return Dom.tagName(this.node);\n }\n clone() {\n return Vector.create(this.node.cloneNode(true));\n }\n remove() {\n Dom.remove(this.node);\n return this;\n }\n empty() {\n Dom.empty(this.node);\n return this;\n }\n append(elems) {\n Dom.append(this.node, Vector.toNodes(elems));\n return this;\n }\n appendTo(target) {\n Dom.appendTo(this.node, Vector.isVector(target) ? target.node : target);\n return this;\n }\n prepend(elems) {\n Dom.prepend(this.node, Vector.toNodes(elems));\n return this;\n }\n before(elems) {\n Dom.before(this.node, Vector.toNodes(elems));\n return this;\n }\n replace(elem) {\n if (this.node.parentNode) {\n this.node.parentNode.replaceChild(Vector.toNode(elem), this.node);\n }\n return Vector.create(elem);\n }\n first() {\n return this.node.firstChild\n ? Vector.create(this.node.firstChild)\n : null;\n }\n last() {\n return this.node.lastChild\n ? Vector.create(this.node.lastChild)\n : null;\n }\n get(index) {\n const child = this.node.childNodes[index];\n return child ? Vector.create(child) : null;\n }\n indexOf(elem) {\n const children = Array.prototype.slice.call(this.node.childNodes);\n return children.indexOf(Vector.toNode(elem));\n }\n find(selector) {\n const vels = [];\n const nodes = Dom.find(this.node, selector);\n if (nodes) {\n for (let i = 0, ii = nodes.length; i < ii; i += 1) {\n vels.push(Vector.create(nodes[i]));\n }\n }\n return vels;\n }\n findOne(selector) {\n const found = Dom.findOne(this.node, selector);\n return found ? Vector.create(found) : null;\n }\n findParentByClass(className, terminator) {\n const node = Dom.findParentByClass(this.node, className, terminator);\n return node ? Vector.create(node) : null;\n }\n matches(selector) {\n const node = this.node;\n const matches = this.node.matches;\n const matcher = node.matches ||\n node.matchesSelector ||\n node.msMatchesSelector ||\n node.mozMatchesSelector ||\n node.webkitMatchesSelector ||\n node.oMatchesSelector ||\n null;\n return matcher && matcher.call(node, selector);\n }\n contains(child) {\n return Dom.contains(this.node, Vector.isVector(child) ? child.node : child);\n }\n wrap(node) {\n const vel = Vector.create(node);\n const parentNode = this.node.parentNode;\n if (parentNode != null) {\n parentNode.insertBefore(vel.node, this.node);\n }\n return vel.append(this);\n }\n parent(type) {\n let parent = this; // eslint-disable-line @typescript-eslint/no-this-alias\n // check for parent\n if (parent.node.parentNode == null) {\n return null;\n }\n // get parent element\n parent = Vector.create(parent.node.parentNode);\n if (type == null) {\n return parent;\n }\n // loop trough ancestors if type is given\n do {\n if (typeof type === 'string' ? parent.matches(type) : parent instanceof type) {\n return parent;\n }\n } while ((parent = Vector.create(parent.node.parentNode)));\n return parent;\n }\n children() {\n const children = this.node.childNodes;\n const vels = [];\n for (let i = 0; i < children.length; i += 1) {\n const currentChild = children[i];\n if (currentChild.nodeType === 1) {\n vels.push(Vector.create(children[i]));\n }\n }\n return vels;\n }\n eachChild(fn, deep) {\n const children = this.children();\n for (let i = 0, l = children.length; i < l; i += 1) {\n fn.call(children[i], children[i], i, children);\n if (deep) {\n children[i].eachChild(fn, deep);\n }\n }\n return this;\n }\n index() {\n return Dom.index(this.node);\n }\n hasClass(className) {\n return Dom.hasClass(this.node, className);\n }\n addClass(className) {\n Dom.addClass(this.node, className);\n return this;\n }\n removeClass(className) {\n Dom.removeClass(this.node, className);\n return this;\n }\n toggleClass(className, stateVal) {\n Dom.toggleClass(this.node, className, stateVal);\n return this;\n }\n toLocalPoint(x, y) {\n return Dom.toLocalPoint(this.node, x, y);\n }\n toGeometryShape() {\n return Dom.toGeometryShape(this.node);\n }\n translateCenterToPoint(p) {\n const bbox = this.getBBox({ target: this.svg() });\n const center = bbox.getCenter();\n this.translate(p.x - center.x, p.y - center.y);\n return this;\n }\n translateAndAutoOrient(position, reference, target) {\n Dom.translateAndAutoOrient(this.node, position, reference, target);\n return this;\n }\n animate(options) {\n return Dom.animate(this.node, options);\n }\n animateTransform(options) {\n return Dom.animateTransform(this.node, options);\n }\n animateAlongPath(options, path) {\n return Dom.animateAlongPath(this.node, options, path);\n }\n /**\n * Normalize this element's d attribute. SVGPathElements without\n * a path data attribute obtain a value of 'M 0 0'.\n */\n normalizePath() {\n const tagName = this.tagName();\n if (tagName === 'path') {\n this.attr('d', Path.normalize(this.attr('d')));\n }\n return this;\n }\n /**\n * Returns the bounding box of the element after transformations are applied.\n * If `withoutTransformations` is `true`, transformations of the element\n * will not be considered when computing the bounding box. If `target` is\n * specified, bounding box will be computed relatively to the target element.\n */\n bbox(withoutTransformations, target) {\n return Dom.bbox(this.node, withoutTransformations, target);\n }\n getBBox(options = {}) {\n return Dom.getBBox(this.node, {\n recursive: options.recursive,\n target: options.target ? Vector.toNode(options.target) : null,\n });\n }\n /**\n * Samples the underlying SVG element (it currently works only on\n * paths - where it is most useful anyway). Returns an array of objects\n * of the form `{ x: Number, y: Number, distance: Number }`. Each of these\n * objects represent a point on the path. This basically creates a discrete\n * representation of the path (which is possible a curve). The sampling\n * interval defines the accuracy of the sampling. In other words, we travel\n * from the beginning of the path to the end by interval distance (on the\n * path, not between the resulting points) and collect the discrete points\n * on the path. This is very useful in many situations. For example, SVG\n * does not provide a built-in mechanism to find intersections between two\n * paths. Using sampling, we can just generate bunch of points for each of\n * the path and find the closest ones from each set.\n */\n sample(interval = 1) {\n if (this.node instanceof SVGPathElement) {\n return Dom.sample(this.node, interval);\n }\n return [];\n }\n toPath() {\n return Vector.create(Dom.toPath(this.node));\n }\n toPathData() {\n return Dom.toPathData(this.node);\n }\n}\n(function (Vector) {\n Vector.toStringTag = `X6.${Vector.name}`;\n function isVector(instance) {\n if (instance == null) {\n return false;\n }\n if (instance instanceof Vector) {\n return true;\n }\n const tag = instance[Symbol.toStringTag];\n const vector = instance;\n if ((tag == null || tag === Vector.toStringTag) &&\n vector.node instanceof SVGElement &&\n typeof vector.animate === 'function' &&\n typeof vector.sample === 'function' &&\n typeof vector.normalizePath === 'function' &&\n typeof vector.toPath === 'function') {\n return true;\n }\n return false;\n }\n Vector.isVector = isVector;\n function create(elem, attrs, children) {\n return new Vector(elem, attrs, children);\n }\n Vector.create = create;\n function createVectors(markup) {\n if (markup[0] === '<') {\n const svgDoc = Dom.createSvgDocument(markup);\n const vels = [];\n for (let i = 0, ii = svgDoc.childNodes.length; i < ii; i += 1) {\n const childNode = svgDoc.childNodes[i];\n vels.push(create(document.importNode(childNode, true)));\n }\n return vels;\n }\n return [create(markup)];\n }\n Vector.createVectors = createVectors;\n function toNode(elem) {\n if (isVector(elem)) {\n return elem.node;\n }\n return elem;\n }\n Vector.toNode = toNode;\n function toNodes(elems) {\n if (Array.isArray(elems)) {\n return elems.map((elem) => toNode(elem));\n }\n return [toNode(elems)];\n }\n Vector.toNodes = toNodes;\n})(Vector || (Vector = {}));\n//# sourceMappingURL=index.js.map","/* eslint-disable no-control-regex */\nimport { NumberExt } from '../number';\nimport { Text } from '../text';\nimport { attr } from './attr';\nimport { Vector } from '../vector';\nimport { createSvgElement, empty, remove } from './elem';\nimport { Platform } from '../platform';\nfunction createTextPathNode(attrs, elem) {\n const vel = Vector.create(elem);\n const textPath = Vector.create('textPath');\n const d = attrs.d;\n if (d && attrs['xlink:href'] === undefined) {\n const path = Vector.create('path').attr('d', d).appendTo(vel.defs());\n textPath.attr('xlink:href', `#${path.id}`);\n }\n if (typeof attrs === 'object') {\n textPath.attr(attrs);\n }\n return textPath.node;\n}\nfunction annotateTextLine(lineNode, lineAnnotations, options) {\n const eol = options.eol;\n const baseSize = options.baseSize;\n const lineHeight = options.lineHeight;\n let maxFontSize = 0;\n let tspanNode;\n const fontMetrics = {};\n const lastJ = lineAnnotations.length - 1;\n for (let j = 0; j <= lastJ; j += 1) {\n let annotation = lineAnnotations[j];\n let fontSize = null;\n if (typeof annotation === 'object') {\n const annotationAttrs = annotation.attrs;\n const vTSpan = Vector.create('tspan', annotationAttrs);\n tspanNode = vTSpan.node;\n let t = annotation.t;\n if (eol && j === lastJ) {\n t += eol;\n }\n tspanNode.textContent = t;\n // Per annotation className\n const annotationClass = annotationAttrs.class;\n if (annotationClass) {\n vTSpan.addClass(annotationClass);\n }\n // set the list of indices of all the applied annotations\n // in the `annotations` attribute. This list is a comma\n // separated list of indices.\n if (options.includeAnnotationIndices) {\n vTSpan.attr('annotations', annotation.annotations.join(','));\n }\n // Check for max font size\n fontSize = parseFloat(annotationAttrs['font-size']);\n if (fontSize === undefined)\n fontSize = baseSize;\n if (fontSize && fontSize > maxFontSize)\n maxFontSize = fontSize;\n }\n else {\n if (eol && j === lastJ) {\n annotation += eol;\n }\n tspanNode = document.createTextNode(annotation || ' ');\n if (baseSize && baseSize > maxFontSize) {\n maxFontSize = baseSize;\n }\n }\n lineNode.appendChild(tspanNode);\n }\n if (maxFontSize) {\n fontMetrics.maxFontSize = maxFontSize;\n }\n if (lineHeight) {\n fontMetrics.lineHeight = lineHeight;\n }\n else if (maxFontSize) {\n fontMetrics.lineHeight = maxFontSize * 1.2;\n }\n return fontMetrics;\n}\nconst emRegex = /em$/;\nfunction emToPx(em, fontSize) {\n const numerical = parseFloat(em);\n if (emRegex.test(em)) {\n return numerical * fontSize;\n }\n return numerical;\n}\nfunction calculateDY(alignment, linesMetrics, baseSizePx, lineHeight) {\n if (!Array.isArray(linesMetrics)) {\n return 0;\n }\n const n = linesMetrics.length;\n if (!n)\n return 0;\n let lineMetrics = linesMetrics[0];\n const flMaxFont = emToPx(lineMetrics.maxFontSize, baseSizePx) || baseSizePx;\n let rLineHeights = 0;\n const lineHeightPx = emToPx(lineHeight, baseSizePx);\n for (let i = 1; i < n; i += 1) {\n lineMetrics = linesMetrics[i];\n const iLineHeight = emToPx(lineMetrics.lineHeight, baseSizePx) || lineHeightPx;\n rLineHeights += iLineHeight;\n }\n const llMaxFont = emToPx(lineMetrics.maxFontSize, baseSizePx) || baseSizePx;\n let dy;\n switch (alignment) {\n case 'middle':\n dy = flMaxFont / 2 - 0.15 * llMaxFont - rLineHeights / 2;\n break;\n case 'bottom':\n dy = -(0.25 * llMaxFont) - rLineHeights;\n break;\n default:\n case 'top':\n dy = 0.8 * flMaxFont;\n break;\n }\n return dy;\n}\nexport function text(elem, content, options = {}) {\n content = Text.sanitize(content); // eslint-disable-line\n const eol = options.eol;\n let textPath = options.textPath;\n const verticalAnchor = options.textVerticalAnchor;\n const namedVerticalAnchor = verticalAnchor === 'middle' ||\n verticalAnchor === 'bottom' ||\n verticalAnchor === 'top';\n // Horizontal shift applied to all the lines but the first.\n let x = options.x;\n if (x === undefined) {\n x = elem.getAttribute('x') || 0;\n }\n // Annotations\n const iai = options.includeAnnotationIndices;\n let annotations = options.annotations;\n if (annotations && !Array.isArray(annotations)) {\n annotations = [annotations];\n }\n // Shift all the but first by one line (`1em`)\n const defaultLineHeight = options.lineHeight;\n const autoLineHeight = defaultLineHeight === 'auto';\n const lineHeight = autoLineHeight ? '1.5em' : defaultLineHeight || '1em';\n empty(elem);\n attr(elem, {\n // Preserve spaces, do not consecutive spaces to get collapsed to one.\n 'xml:space': 'preserve',\n // An empty text gets rendered into the DOM in webkit-based browsers.\n // In order to unify this behaviour across all browsers\n // we rather hide the text element when it's empty.\n display: content || options.displayEmpty ? null : 'none',\n });\n // Set default font-size if none\n const strFontSize = attr(elem, 'font-size');\n let fontSize = parseFloat(strFontSize);\n if (!fontSize) {\n fontSize = 16;\n if ((namedVerticalAnchor || annotations) && !strFontSize) {\n attr(elem, 'font-size', `${fontSize}`);\n }\n }\n let containerNode;\n if (textPath) {\n // Now all the ``s will be inside the ``.\n if (typeof textPath === 'string') {\n textPath = { d: textPath };\n }\n containerNode = createTextPathNode(textPath, elem);\n }\n else {\n containerNode = document.createDocumentFragment();\n }\n let dy;\n let offset = 0;\n let annotatedY;\n const lines = content.split('\\n');\n const linesMetrics = [];\n const lastI = lines.length - 1;\n for (let i = 0; i <= lastI; i += 1) {\n dy = lineHeight;\n let lineClassName = 'v-line';\n const lineNode = createSvgElement('tspan');\n let lineMetrics;\n let line = lines[i];\n if (line) {\n if (annotations) {\n // Find the *compacted* annotations for this line.\n const lineAnnotations = Text.annotate(line, annotations, {\n offset: -offset,\n includeAnnotationIndices: iai,\n });\n lineMetrics = annotateTextLine(lineNode, lineAnnotations, {\n eol: i !== lastI && eol,\n baseSize: fontSize,\n lineHeight: autoLineHeight ? null : lineHeight,\n includeAnnotationIndices: iai,\n });\n // Get the line height based on the biggest font size\n // in the annotations for this line.\n const iLineHeight = lineMetrics.lineHeight;\n if (iLineHeight && autoLineHeight && i !== 0) {\n dy = iLineHeight;\n }\n if (i === 0) {\n annotatedY = lineMetrics.maxFontSize * 0.8;\n }\n }\n else {\n if (eol && i !== lastI) {\n line += eol;\n }\n lineNode.textContent = line;\n }\n }\n else {\n // Make sure the textContent is never empty. If it is, add a dummy\n // character and make it invisible, making the following lines correctly\n // relatively positioned. `dy=1em` won't work with empty lines otherwise.\n lineNode.textContent = '-';\n lineClassName += ' v-empty-line';\n const lineNodeStyle = lineNode.style;\n lineNodeStyle.fillOpacity = 0;\n lineNodeStyle.strokeOpacity = 0;\n if (annotations) {\n lineMetrics = {};\n }\n }\n if (lineMetrics) {\n linesMetrics.push(lineMetrics);\n }\n if (i > 0) {\n lineNode.setAttribute('dy', dy);\n }\n // Firefox requires 'x' to be set on the first line\n if (i > 0 || textPath) {\n lineNode.setAttribute('x', x);\n }\n lineNode.className.baseVal = lineClassName;\n containerNode.appendChild(lineNode);\n offset += line.length + 1; // + 1 = newline character.\n }\n // Y Alignment calculation\n if (namedVerticalAnchor) {\n if (annotations) {\n dy = calculateDY(verticalAnchor, linesMetrics, fontSize, lineHeight);\n }\n else if (verticalAnchor === 'top') {\n // A shortcut for top alignment. It does not depend on font-size nor line-height\n dy = '0.8em';\n }\n else {\n let rh; // remaining height\n if (lastI > 0) {\n rh = parseFloat(lineHeight) || 1;\n rh *= lastI;\n if (!emRegex.test(lineHeight))\n rh /= fontSize;\n }\n else {\n // Single-line text\n rh = 0;\n }\n switch (verticalAnchor) {\n case 'middle':\n dy = `${0.3 - rh / 2}em`;\n break;\n case 'bottom':\n dy = `${-rh - 0.3}em`;\n break;\n default:\n break;\n }\n }\n }\n else if (verticalAnchor === 0) {\n dy = '0em';\n }\n else if (verticalAnchor) {\n dy = verticalAnchor;\n }\n else {\n // No vertical anchor is defined\n dy = 0;\n // Backwards compatibility - we change the `y` attribute instead of `dy`.\n if (elem.getAttribute('y') == null) {\n elem.setAttribute('y', `${annotatedY || '0.8em'}`);\n }\n }\n const firstLine = containerNode.firstChild;\n firstLine.setAttribute('dy', dy);\n elem.appendChild(containerNode);\n}\nfunction splitText(text, separator, eol, hyphen) {\n const words = [];\n const separators = [];\n if (separator != null) {\n const parts = text.split(separator);\n words.push(...parts);\n if (typeof separator === 'string') {\n for (let i = 0, l = parts.length - 1; i < l; i += 1) {\n separators.push(separator);\n }\n }\n else {\n const seps = text.match(new RegExp(separator, 'g'));\n for (let i = 0, l = parts.length - 1; i < l; i += 1) {\n separators.push(seps ? seps[i] : '');\n }\n }\n }\n else {\n let word = '';\n for (let i = 0, l = text.length; i < l; i += 1) {\n const char = text[i];\n if (char === ' ') {\n words.push(word);\n separators.push(' ');\n word = '';\n }\n else if (char.match(/[^\\x00-\\xff]/)) {\n // split double byte character\n if (word.length) {\n words.push(word);\n separators.push('');\n }\n words.push(char);\n separators.push('');\n word = '';\n }\n else {\n word += char;\n }\n }\n if (word.length) {\n words.push(word);\n }\n }\n // end-of-line\n for (let i = 0; i < words.length; i += 1) {\n const word = words[i];\n if (word.indexOf(eol) >= 0 && word.length > 1) {\n const parts = word.split(eol);\n for (let j = 0, k = parts.length - 1; j < k; j += 1) {\n parts.splice(2 * j + 1, 0, eol);\n }\n const valids = parts.filter((part) => part !== '');\n words.splice(i, 1, ...valids);\n const seps = valids.map(() => '');\n seps.pop();\n separators.splice(i, 0, ...seps);\n }\n }\n // hyphen\n for (let i = 0; i < words.length; i += 1) {\n const word = words[i];\n const index = word.search(hyphen);\n if (index > 0 && index < word.length - 1) {\n words.splice(i, 1, word.substring(0, index + 1), word.substring(index + 1));\n separators.splice(i, 0, '');\n }\n }\n return { words, separators };\n}\nexport function breakText(text, size, styles = {}, options = {}) {\n const width = size.width;\n const height = size.height;\n const svgDocument = options.svgDocument || createSvgElement('svg');\n const telem = createSvgElement('text');\n const tspan = createSvgElement('tspan');\n const tnode = document.createTextNode('');\n attr(telem, styles);\n telem.appendChild(tspan);\n // Prevent flickering\n telem.style.opacity = '0';\n // Prevent FF from throwing an uncaught exception when `getBBox()`\n // called on element that is not in the render tree (is not measurable).\n // .getComputedTextLength() returns always 0 in this case.\n // Note that the `textElement` resp. `textSpan` can become hidden\n // when it's appended to the DOM and a `display: none` CSS stylesheet\n // rule gets applied.\n telem.style.display = 'block';\n tspan.style.display = 'block';\n tspan.appendChild(tnode);\n svgDocument.appendChild(telem);\n const shouldAppend = svgDocument.parentNode == null;\n if (shouldAppend) {\n document.body.appendChild(svgDocument);\n }\n const eol = options.eol || '\\n';\n const separator = options.separator || ' ';\n const hyphen = options.hyphen ? new RegExp(options.hyphen) : /[^\\w\\d]/;\n const breakWord = options.breakWord !== false;\n const full = [];\n const lineSeprators = {};\n let lines = [];\n let partIndex;\n // let hyphenIndex\n let lineHeight;\n let currentSeparator;\n const { words, separators } = splitText(text, options.separator, eol, hyphen);\n for (let wordIndex = 0, lineIndex = 0, wordCount = words.length; wordIndex < wordCount; wordIndex += 1) {\n const word = words[wordIndex];\n // empty word\n if (!word) {\n continue;\n }\n // end of line\n if (word === eol) {\n full[lineIndex] = true;\n // start a new line\n lineIndex += 1;\n lines[lineIndex] = '';\n continue;\n }\n if (lines[lineIndex] != null) {\n currentSeparator = separators[wordIndex - 1] || '';\n tnode.data = `${lines[lineIndex]}${currentSeparator}${word}`;\n }\n else {\n tnode.data = word;\n }\n if (tspan.getComputedTextLength() <= width) {\n // update line\n lines[lineIndex] = tnode.data;\n lineSeprators[lineIndex] = separators[wordIndex];\n // when is partitioning, put rest of the word onto next line\n if (partIndex) {\n full[lineIndex] = true;\n lineIndex += 1;\n partIndex = 0;\n }\n }\n else {\n if (breakWord) {\n // word is too long to put in one line or is partitioning\n if (!lines[lineIndex] || partIndex) {\n const isPartition = !!partIndex;\n const isCharacter = word.length === 1;\n partIndex = word.length - 1;\n if (isPartition || isCharacter) {\n // word has only one character.\n if (isCharacter) {\n if (!lines[lineIndex]) {\n // can't fit this text within our rect\n lines = [];\n break;\n }\n // partitioning didn't help on the non-empty line\n // try again, but this time start with a new line\n // cancel partitions created\n words.splice(wordIndex, 2, word + words[wordIndex + 1]);\n separators.splice(wordIndex + 1, 1);\n full[lineIndex] = true;\n lineIndex += 1;\n wordCount -= 1;\n wordIndex -= 1;\n continue;\n }\n // update the partitioning words\n words[wordIndex] = word.substring(0, partIndex);\n words[wordIndex + 1] =\n word.substring(partIndex) + words[wordIndex + 1];\n }\n else {\n // partitioning the long word into two words\n words.splice(wordIndex, 1, word.substring(0, partIndex), word.substring(partIndex));\n separators.splice(wordIndex, 0, '');\n wordCount += 1;\n // if the previous line is not full\n if (lineIndex && !full[lineIndex - 1]) {\n lineIndex -= 1;\n }\n }\n wordIndex -= 1;\n continue;\n }\n }\n else if (!lines[lineIndex]) {\n lines[lineIndex] = word;\n full[lineIndex] = true;\n lineIndex += 1;\n continue;\n }\n lineIndex += 1;\n wordIndex -= 1;\n }\n // check whether the height of the entire text exceeds the rect height\n if (height != null) {\n // ensure line height\n if (lineHeight == null) {\n let heightValue;\n // use the same defaults as in V.prototype.text\n if (styles.lineHeight === 'auto') {\n heightValue = { value: 1.5, unit: 'em' };\n }\n else {\n heightValue = NumberExt.parseCssNumeric(styles.lineHeight, [\n 'em',\n ]) || {\n value: 1,\n unit: 'em',\n };\n }\n lineHeight = heightValue.value;\n if (heightValue.unit === 'em') {\n if (Platform.IS_FIREFOX) {\n lineHeight *= tspan.getBBox().height;\n }\n else {\n lineHeight *= telem.getBBox().height;\n }\n }\n }\n if (lineHeight * lines.length > height) {\n // remove overflowing lines\n const lastLineIndex = Math.floor(height / lineHeight) - 1;\n const lastLine = lines[lastLineIndex];\n const overflowLine = lines[lastLineIndex + 1];\n lines.splice(lastLineIndex + 1);\n if (lastLine == null) {\n break;\n }\n // add ellipsis\n let ellipsis = options.ellipsis;\n if (!ellipsis) {\n break;\n }\n if (typeof ellipsis !== 'string') {\n ellipsis = '\\u2026';\n }\n let fullLastLine = lastLine;\n if (overflowLine && breakWord) {\n fullLastLine += currentSeparator + overflowLine;\n }\n let lastCharIndex = fullLastLine.length;\n let fixedLastLine;\n let lastChar;\n do {\n lastChar = fullLastLine[lastCharIndex];\n fixedLastLine = fullLastLine.substring(0, lastCharIndex);\n if (!lastChar) {\n fixedLastLine += lineSeprators[lastLineIndex];\n }\n else if (lastChar.match(separator)) {\n fixedLastLine += lastChar;\n }\n fixedLastLine += ellipsis;\n tnode.data = fixedLastLine;\n if (tspan.getComputedTextLength() <= width) {\n lines[lastLineIndex] = fixedLastLine;\n break;\n }\n lastCharIndex -= 1;\n } while (lastCharIndex >= 0);\n break;\n }\n }\n }\n if (shouldAppend) {\n remove(svgDocument);\n }\n else {\n remove(telem);\n }\n return lines.join(eol);\n}\n//# sourceMappingURL=text.js.map","import { attr } from './attr';\nimport { createSvgElement } from './elem';\nexport const KAPPA = 0.551784;\nfunction getNumbericAttribute(elem, attr, defaultValue = NaN) {\n const v = elem.getAttribute(attr);\n if (v == null) {\n return defaultValue;\n }\n const n = parseFloat(v);\n return Number.isNaN(n) ? defaultValue : n;\n}\nexport function sample(elem, interval = 1) {\n const length = elem.getTotalLength();\n const samples = [];\n let distance = 0;\n let sample;\n while (distance < length) {\n sample = elem.getPointAtLength(distance);\n samples.push({ distance, x: sample.x, y: sample.y });\n distance += interval;\n }\n return samples;\n}\nexport function lineToPathData(line) {\n return [\n 'M',\n getNumbericAttribute(line, 'x1'),\n getNumbericAttribute(line, 'y1'),\n 'L',\n getNumbericAttribute(line, 'x2'),\n getNumbericAttribute(line, 'y2'),\n ].join(' ');\n}\nexport function polygonToPathData(polygon) {\n const points = getPointsFromSvgElement(polygon);\n if (points.length === 0) {\n return null;\n }\n return `${svgPointsToPath(points)} Z`;\n}\nexport function polylineToPathData(polyline) {\n const points = getPointsFromSvgElement(polyline);\n if (points.length === 0) {\n return null;\n }\n return svgPointsToPath(points);\n}\nfunction svgPointsToPath(points) {\n const arr = points.map((p) => `${p.x} ${p.y}`);\n return `M ${arr.join(' L')}`;\n}\nexport function getPointsFromSvgElement(elem) {\n const points = [];\n const nodePoints = elem.points;\n if (nodePoints) {\n for (let i = 0, ii = nodePoints.numberOfItems; i < ii; i += 1) {\n points.push(nodePoints.getItem(i));\n }\n }\n return points;\n}\nexport function circleToPathData(circle) {\n const cx = getNumbericAttribute(circle, 'cx', 0);\n const cy = getNumbericAttribute(circle, 'cy', 0);\n const r = getNumbericAttribute(circle, 'r');\n const cd = r * KAPPA; // Control distance.\n return [\n 'M',\n cx,\n cy - r,\n 'C',\n cx + cd,\n cy - r,\n cx + r,\n cy - cd,\n cx + r,\n cy,\n 'C',\n cx + r,\n cy + cd,\n cx + cd,\n cy + r,\n cx,\n cy + r,\n 'C',\n cx - cd,\n cy + r,\n cx - r,\n cy + cd,\n cx - r,\n cy,\n 'C',\n cx - r,\n cy - cd,\n cx - cd,\n cy - r,\n cx,\n cy - r,\n 'Z',\n ].join(' ');\n}\nexport function ellipseToPathData(ellipse) {\n const cx = getNumbericAttribute(ellipse, 'cx', 0);\n const cy = getNumbericAttribute(ellipse, 'cy', 0);\n const rx = getNumbericAttribute(ellipse, 'rx');\n const ry = getNumbericAttribute(ellipse, 'ry') || rx;\n const cdx = rx * KAPPA; // Control distance x.\n const cdy = ry * KAPPA; // Control distance y.\n const d = [\n 'M',\n cx,\n cy - ry,\n 'C',\n cx + cdx,\n cy - ry,\n cx + rx,\n cy - cdy,\n cx + rx,\n cy,\n 'C',\n cx + rx,\n cy + cdy,\n cx + cdx,\n cy + ry,\n cx,\n cy + ry,\n 'C',\n cx - cdx,\n cy + ry,\n cx - rx,\n cy + cdy,\n cx - rx,\n cy,\n 'C',\n cx - rx,\n cy - cdy,\n cx - cdx,\n cy - ry,\n cx,\n cy - ry,\n 'Z',\n ].join(' ');\n return d;\n}\nexport function rectangleToPathData(rect) {\n return rectToPathData({\n x: getNumbericAttribute(rect, 'x', 0),\n y: getNumbericAttribute(rect, 'y', 0),\n width: getNumbericAttribute(rect, 'width', 0),\n height: getNumbericAttribute(rect, 'height', 0),\n rx: getNumbericAttribute(rect, 'rx', 0),\n ry: getNumbericAttribute(rect, 'ry', 0),\n });\n}\nexport function rectToPathData(r) {\n let d;\n const x = r.x;\n const y = r.y;\n const width = r.width;\n const height = r.height;\n const topRx = Math.min(r.rx || r['top-rx'] || 0, width / 2);\n const bottomRx = Math.min(r.rx || r['bottom-rx'] || 0, width / 2);\n const topRy = Math.min(r.ry || r['top-ry'] || 0, height / 2);\n const bottomRy = Math.min(r.ry || r['bottom-ry'] || 0, height / 2);\n if (topRx || bottomRx || topRy || bottomRy) {\n d = [\n 'M',\n x,\n y + topRy,\n 'v',\n height - topRy - bottomRy,\n 'a',\n bottomRx,\n bottomRy,\n 0,\n 0,\n 0,\n bottomRx,\n bottomRy,\n 'h',\n width - 2 * bottomRx,\n 'a',\n bottomRx,\n bottomRy,\n 0,\n 0,\n 0,\n bottomRx,\n -bottomRy,\n 'v',\n -(height - bottomRy - topRy),\n 'a',\n topRx,\n topRy,\n 0,\n 0,\n 0,\n -topRx,\n -topRy,\n 'h',\n -(width - 2 * topRx),\n 'a',\n topRx,\n topRy,\n 0,\n 0,\n 0,\n -topRx,\n topRy,\n 'Z',\n ];\n }\n else {\n d = ['M', x, y, 'H', x + width, 'V', y + height, 'H', x, 'V', y, 'Z'];\n }\n return d.join(' ');\n}\nexport function toPath(elem) {\n const path = createSvgElement('path');\n attr(path, attr(elem));\n const d = toPathData(elem);\n if (d) {\n path.setAttribute('d', d);\n }\n return path;\n}\nexport function toPathData(elem) {\n const tagName = elem.tagName.toLowerCase();\n switch (tagName) {\n case 'path':\n return elem.getAttribute('d');\n case 'line':\n return lineToPathData(elem);\n case 'polygon':\n return polygonToPathData(elem);\n case 'polyline':\n return polylineToPathData(elem);\n case 'ellipse':\n return ellipseToPathData(elem);\n case 'circle':\n return circleToPathData(elem);\n case 'rect':\n return rectangleToPathData(elem);\n default:\n break;\n }\n throw new Error(`\"${tagName}\" cannot be converted to svg path element.`);\n}\n// Inspired by d3.js https://github.com/mbostock/d3/blob/master/src/svg/arc.js\nexport function createSlicePathData(innerRadius, outerRadius, startAngle, endAngle) {\n const svgArcMax = 2 * Math.PI - 1e-6;\n const r0 = innerRadius;\n const r1 = outerRadius;\n let a0 = startAngle;\n let a1 = endAngle;\n if (a1 < a0) {\n const tmp = a0;\n a0 = a1;\n a1 = tmp;\n }\n const da = a1 - a0;\n const df = da < Math.PI ? '0' : '1';\n const c0 = Math.cos(a0);\n const s0 = Math.sin(a0);\n const c1 = Math.cos(a1);\n const s1 = Math.sin(a1);\n return da >= svgArcMax\n ? r0\n ? // eslint-disable-next-line\n `M0,${r1}A${r1},${r1} 0 1,1 0,${-r1}A${r1},${r1} 0 1,1 0,${r1}M0,${r0}A${r0},${r0} 0 1,0 0,${-r0}A${r0},${r0} 0 1,0 0,${r0}Z`\n : // eslint-disable-next-line\n `M0,${r1}A${r1},${r1} 0 1,1 0,${-r1}A${r1},${r1} 0 1,1 0,${r1}Z`\n : r0\n ? // eslint-disable-next-line\n `M${r1 * c0},${r1 * s0}A${r1},${r1} 0 ${df},1 ${r1 * c1},${r1 * s1}L${r0 * c1},${r0 * s1}A${r0},${r0} 0 ${df},0 ${r0 * c0},${r0 * s0}Z`\n : // eslint-disable-next-line\n `M${r1 * c0},${r1 * s0}A${r1},${r1} 0 ${df},1 ${r1 * c1},${r1 * s1}L0,0` +\n `Z`;\n}\n//# sourceMappingURL=path.js.map","import { Angle, Point, Line, Rectangle, Polyline } from '../../geometry';\nimport { createSvgElement } from './elem';\nconst svgDocument = createSvgElement('svg');\nconst transformRegex = /(\\w+)\\(([^,)]+),?([^)]+)?\\)/gi;\nconst transformSeparatorRegex = /[ ,]+/;\nconst transformationListRegex = /^(\\w+)\\((.*)\\)/;\n/**\n * Returns a SVG point object initialized with the `x` and `y` coordinates.\n * @see https://developer.mozilla.org/en/docs/Web/API/SVGPoint\n */\nexport function createSVGPoint(x, y) {\n const p = svgDocument.createSVGPoint();\n p.x = x;\n p.y = y;\n return p;\n}\n/**\n * Returns the SVG transformation matrix initialized with the given matrix.\n *\n * The given matrix is an object of the form:\n * {\n * a: number\n * b: number\n * c: number\n * d: number\n * e: number\n * f: number\n * }\n *\n * @see https://developer.mozilla.org/en/docs/Web/API/SVGMatrix\n */\nexport function createSVGMatrix(matrix) {\n const mat = svgDocument.createSVGMatrix();\n if (matrix != null) {\n const source = matrix;\n const target = mat;\n // eslint-disable-next-line\n for (const key in source) {\n target[key] = source[key];\n }\n }\n return mat;\n}\n/**\n * Returns a SVG transform object.\n * @see https://developer.mozilla.org/en/docs/Web/API/SVGTransform\n */\nexport function createSVGTransform(matrix) {\n if (matrix != null) {\n if (!(matrix instanceof DOMMatrix)) {\n matrix = createSVGMatrix(matrix); // eslint-disable-line\n }\n return svgDocument.createSVGTransformFromMatrix(matrix);\n }\n return svgDocument.createSVGTransform();\n}\n/**\n * Returns the SVG transformation matrix built from the `transformString`.\n *\n * E.g. 'translate(10,10) scale(2,2)' will result in matrix:\n * `{ a: 2, b: 0, c: 0, d: 2, e: 10, f: 10}`\n */\nexport function transformStringToMatrix(transform) {\n let mat = createSVGMatrix();\n const matches = transform != null && transform.match(transformRegex);\n if (!matches) {\n return mat;\n }\n for (let i = 0, n = matches.length; i < n; i += 1) {\n const transformationString = matches[i];\n const transformationMatch = transformationString.match(transformationListRegex);\n if (transformationMatch) {\n let sx;\n let sy;\n let tx;\n let ty;\n let angle;\n let ctm = createSVGMatrix();\n const args = transformationMatch[2].split(transformSeparatorRegex);\n switch (transformationMatch[1].toLowerCase()) {\n case 'scale':\n sx = parseFloat(args[0]);\n sy = args[1] === undefined ? sx : parseFloat(args[1]);\n ctm = ctm.scaleNonUniform(sx, sy);\n break;\n case 'translate':\n tx = parseFloat(args[0]);\n ty = parseFloat(args[1]);\n ctm = ctm.translate(tx, ty);\n break;\n case 'rotate':\n angle = parseFloat(args[0]);\n tx = parseFloat(args[1]) || 0;\n ty = parseFloat(args[2]) || 0;\n if (tx !== 0 || ty !== 0) {\n ctm = ctm.translate(tx, ty).rotate(angle).translate(-tx, -ty);\n }\n else {\n ctm = ctm.rotate(angle);\n }\n break;\n case 'skewx':\n angle = parseFloat(args[0]);\n ctm = ctm.skewX(angle);\n break;\n case 'skewy':\n angle = parseFloat(args[0]);\n ctm = ctm.skewY(angle);\n break;\n case 'matrix':\n ctm.a = parseFloat(args[0]);\n ctm.b = parseFloat(args[1]);\n ctm.c = parseFloat(args[2]);\n ctm.d = parseFloat(args[3]);\n ctm.e = parseFloat(args[4]);\n ctm.f = parseFloat(args[5]);\n break;\n default:\n continue;\n }\n mat = mat.multiply(ctm);\n }\n }\n return mat;\n}\nexport function matrixToTransformString(matrix) {\n const m = matrix || {};\n const a = m.a != null ? m.a : 1;\n const b = m.b != null ? m.b : 0;\n const c = m.c != null ? m.c : 0;\n const d = m.d != null ? m.d : 1;\n const e = m.e != null ? m.e : 0;\n const f = m.f != null ? m.f : 0;\n return `matrix(${a},${b},${c},${d},${e},${f})`;\n}\nexport function parseTransformString(transform) {\n let translation;\n let rotation;\n let scale;\n if (transform) {\n const separator = transformSeparatorRegex;\n // Allow reading transform string with a single matrix\n if (transform.trim().indexOf('matrix') >= 0) {\n const matrix = transformStringToMatrix(transform);\n const decomposedMatrix = decomposeMatrix(matrix);\n translation = [decomposedMatrix.translateX, decomposedMatrix.translateY];\n rotation = [decomposedMatrix.rotation];\n scale = [decomposedMatrix.scaleX, decomposedMatrix.scaleY];\n const transformations = [];\n if (translation[0] !== 0 || translation[1] !== 0) {\n transformations.push(`translate(${translation.join(',')})`);\n }\n if (scale[0] !== 1 || scale[1] !== 1) {\n transformations.push(`scale(${scale.join(',')})`);\n }\n if (rotation[0] !== 0) {\n transformations.push(`rotate(${rotation[0]})`);\n }\n transform = transformations.join(' '); // eslint-disable-line\n }\n else {\n const translateMatch = transform.match(/translate\\((.*?)\\)/);\n if (translateMatch) {\n translation = translateMatch[1].split(separator);\n }\n const rotateMatch = transform.match(/rotate\\((.*?)\\)/);\n if (rotateMatch) {\n rotation = rotateMatch[1].split(separator);\n }\n const scaleMatch = transform.match(/scale\\((.*?)\\)/);\n if (scaleMatch) {\n scale = scaleMatch[1].split(separator);\n }\n }\n }\n const sx = scale && scale[0] ? parseFloat(scale[0]) : 1;\n return {\n raw: transform || '',\n translation: {\n tx: translation && translation[0]\n ? parseInt(translation[0], 10)\n : 0,\n ty: translation && translation[1]\n ? parseInt(translation[1], 10)\n : 0,\n },\n rotation: {\n angle: rotation && rotation[0] ? parseInt(rotation[0], 10) : 0,\n cx: rotation && rotation[1]\n ? parseInt(rotation[1], 10)\n : undefined,\n cy: rotation && rotation[2]\n ? parseInt(rotation[2], 10)\n : undefined,\n },\n scale: {\n sx,\n sy: scale && scale[1] ? parseFloat(scale[1]) : sx,\n },\n };\n}\nfunction deltaTransformPoint(matrix, point) {\n const dx = point.x * matrix.a + point.y * matrix.c + 0;\n const dy = point.x * matrix.b + point.y * matrix.d + 0;\n return { x: dx, y: dy };\n}\n/**\n * Decomposes the SVG transformation matrix into separate transformations.\n *\n * Returns an object of the form:\n * {\n * translateX: number\n * translateY: number\n * scaleX: number\n * scaleY: number\n * skewX: number\n * skewY: number\n * rotation: number\n * }\n *\n * @see https://developer.mozilla.org/en/docs/Web/API/SVGMatrix\n */\nexport function decomposeMatrix(matrix) {\n // @see https://gist.github.com/2052247\n const px = deltaTransformPoint(matrix, { x: 0, y: 1 });\n const py = deltaTransformPoint(matrix, { x: 1, y: 0 });\n const skewX = (180 / Math.PI) * Math.atan2(px.y, px.x) - 90;\n const skewY = (180 / Math.PI) * Math.atan2(py.y, py.x);\n return {\n skewX,\n skewY,\n translateX: matrix.e,\n translateY: matrix.f,\n scaleX: Math.sqrt(matrix.a * matrix.a + matrix.b * matrix.b),\n scaleY: Math.sqrt(matrix.c * matrix.c + matrix.d * matrix.d),\n rotation: skewX,\n };\n}\nexport function matrixToScale(matrix) {\n let a;\n let b;\n let c;\n let d;\n if (matrix) {\n a = matrix.a == null ? 1 : matrix.a;\n d = matrix.d == null ? 1 : matrix.d;\n b = matrix.b;\n c = matrix.c;\n }\n else {\n a = d = 1;\n }\n return {\n sx: b ? Math.sqrt(a * a + b * b) : a,\n sy: c ? Math.sqrt(c * c + d * d) : d,\n };\n}\nexport function matrixToRotation(matrix) {\n let p = { x: 0, y: 1 };\n if (matrix) {\n p = deltaTransformPoint(matrix, p);\n }\n return {\n angle: Angle.normalize(Angle.toDeg(Math.atan2(p.y, p.x)) - 90),\n };\n}\nexport function matrixToTranslation(matrix) {\n return {\n tx: (matrix && matrix.e) || 0,\n ty: (matrix && matrix.f) || 0,\n };\n}\n/**\n * Transforms point by an SVG transformation represented by `matrix`.\n */\nexport function transformPoint(point, matrix) {\n const ret = createSVGPoint(point.x, point.y).matrixTransform(matrix);\n return new Point(ret.x, ret.y);\n}\n/**\n * Transforms line by an SVG transformation represented by `matrix`.\n */\nexport function transformLine(line, matrix) {\n return new Line(transformPoint(line.start, matrix), transformPoint(line.end, matrix));\n}\n/**\n * Transforms polyline by an SVG transformation represented by `matrix`.\n */\nexport function transformPolyline(polyline, matrix) {\n let points = polyline instanceof Polyline ? polyline.points : polyline;\n if (!Array.isArray(points)) {\n points = [];\n }\n return new Polyline(points.map((p) => transformPoint(p, matrix)));\n}\nexport function transformRectangle(rect, matrix) {\n const p = svgDocument.createSVGPoint();\n p.x = rect.x;\n p.y = rect.y;\n const corner1 = p.matrixTransform(matrix);\n p.x = rect.x + rect.width;\n p.y = rect.y;\n const corner2 = p.matrixTransform(matrix);\n p.x = rect.x + rect.width;\n p.y = rect.y + rect.height;\n const corner3 = p.matrixTransform(matrix);\n p.x = rect.x;\n p.y = rect.y + rect.height;\n const corner4 = p.matrixTransform(matrix);\n const minX = Math.min(corner1.x, corner2.x, corner3.x, corner4.x);\n const maxX = Math.max(corner1.x, corner2.x, corner3.x, corner4.x);\n const minY = Math.min(corner1.y, corner2.y, corner3.y, corner4.y);\n const maxY = Math.max(corner1.y, corner2.y, corner3.y, corner4.y);\n return new Rectangle(minX, minY, maxX - minX, maxY - minY);\n}\n//# sourceMappingURL=matrix.js.map","var __rest = (this && this.__rest) || function (s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n t[p[i]] = s[p[i]];\n }\n return t;\n};\nimport { Point, Line, Rectangle, Polyline, Ellipse, Path } from '../../geometry';\nimport { attr } from './attr';\nimport { sample, toPath, getPointsFromSvgElement } from './path';\nimport { ensureId, isSVGGraphicsElement, createSvgElement, isHTMLElement, } from './elem';\nimport { getComputedStyle } from './style';\nimport { createSVGPoint, createSVGMatrix, decomposeMatrix, transformRectangle, transformStringToMatrix, } from './matrix';\n/**\n * Returns the bounding box of the element after transformations are\n * applied. If `withoutTransformations` is `true`, transformations of\n * the element will not be considered when computing the bounding box.\n * If `target` is specified, bounding box will be computed relatively\n * to the `target` element.\n */\nexport function bbox(elem, withoutTransformations, target) {\n let box;\n const ownerSVGElement = elem.ownerSVGElement;\n // If the element is not in the live DOM, it does not have a bounding\n // box defined and so fall back to 'zero' dimension element.\n if (!ownerSVGElement) {\n return new Rectangle(0, 0, 0, 0);\n }\n try {\n box = elem.getBBox();\n }\n catch (e) {\n // Fallback for IE.\n box = {\n x: elem.clientLeft,\n y: elem.clientTop,\n width: elem.clientWidth,\n height: elem.clientHeight,\n };\n }\n if (withoutTransformations) {\n return Rectangle.create(box);\n }\n const matrix = getTransformToElement(elem, target || ownerSVGElement);\n return transformRectangle(box, matrix);\n}\n/**\n * Returns the bounding box of the element after transformations are\n * applied. Unlike `bbox()`, this function fixes a browser implementation\n * bug to return the correct bounding box if this elemenent is a group of\n * svg elements (if `options.recursive` is specified).\n */\nexport function getBBox(elem, options = {}) {\n let outputBBox;\n const ownerSVGElement = elem.ownerSVGElement;\n // If the element is not in the live DOM, it does not have a bounding box\n // defined and so fall back to 'zero' dimension element.\n // If the element is not an SVGGraphicsElement, we could not measure the\n // bounding box either\n if (!ownerSVGElement || !isSVGGraphicsElement(elem)) {\n if (isHTMLElement(elem)) {\n // If the element is a HTMLElement, return the position relative to the body\n const { left, top, width, height } = getBoundingOffsetRect(elem);\n return new Rectangle(left, top, width, height);\n }\n return new Rectangle(0, 0, 0, 0);\n }\n let target = options.target;\n const recursive = options.recursive;\n if (!recursive) {\n try {\n outputBBox = elem.getBBox();\n }\n catch (e) {\n outputBBox = {\n x: elem.clientLeft,\n y: elem.clientTop,\n width: elem.clientWidth,\n height: elem.clientHeight,\n };\n }\n if (!target) {\n return Rectangle.create(outputBBox);\n }\n // transform like target\n const matrix = getTransformToElement(elem, target);\n return transformRectangle(outputBBox, matrix);\n }\n // recursive\n {\n const children = elem.childNodes;\n const n = children.length;\n if (n === 0) {\n return getBBox(elem, { target });\n }\n if (!target) {\n target = elem; // eslint-disable-line\n }\n for (let i = 0; i < n; i += 1) {\n const child = children[i];\n let childBBox;\n if (child.childNodes.length === 0) {\n childBBox = getBBox(child, { target });\n }\n else {\n // if child is a group element, enter it with a recursive call\n childBBox = getBBox(child, { target, recursive: true });\n }\n if (!outputBBox) {\n outputBBox = childBBox;\n }\n else {\n outputBBox = outputBBox.union(childBBox);\n }\n }\n return outputBBox;\n }\n}\n// BBox is calculated by the attribute on the node\nexport function getBBoxByElementAttr(elem) {\n let node = elem;\n let tagName = node ? node.tagName.toLowerCase() : '';\n // find shape node\n while (tagName === 'g') {\n node = node.firstElementChild;\n tagName = node ? node.tagName.toLowerCase() : '';\n }\n const attr = (name) => {\n const s = node.getAttribute(name);\n const v = s ? parseFloat(s) : 0;\n return Number.isNaN(v) ? 0 : v;\n };\n let r;\n let bbox;\n switch (tagName) {\n case 'rect':\n bbox = new Rectangle(attr('x'), attr('y'), attr('width'), attr('height'));\n break;\n case 'circle':\n r = attr('r');\n bbox = new Rectangle(attr('cx') - r, attr('cy') - r, 2 * r, 2 * r);\n break;\n default:\n break;\n }\n return bbox;\n}\n// Matrix is calculated by the transform attribute on the node\nexport function getMatrixByElementAttr(elem, target) {\n let matrix = createSVGMatrix();\n if (isSVGGraphicsElement(target) && isSVGGraphicsElement(elem)) {\n let node = elem;\n const matrixList = [];\n while (node && node !== target) {\n const transform = node.getAttribute('transform') || null;\n const nodeMatrix = transformStringToMatrix(transform);\n matrixList.push(nodeMatrix);\n node = node.parentNode;\n }\n matrixList.reverse().forEach((m) => {\n matrix = matrix.multiply(m);\n });\n }\n return matrix;\n}\n/**\n * Returns an DOMMatrix that specifies the transformation necessary\n * to convert `elem` coordinate system into `target` coordinate system.\n */\nexport function getTransformToElement(elem, target) {\n if (isSVGGraphicsElement(target) && isSVGGraphicsElement(elem)) {\n const targetCTM = target.getScreenCTM();\n const nodeCTM = elem.getScreenCTM();\n if (targetCTM && nodeCTM) {\n return targetCTM.inverse().multiply(nodeCTM);\n }\n }\n // Could not get actual transformation matrix\n return createSVGMatrix();\n}\n/**\n * Converts a global point with coordinates `x` and `y` into the\n * coordinate space of the element.\n */\nexport function toLocalPoint(elem, x, y) {\n const svg = elem instanceof SVGSVGElement\n ? elem\n : elem.ownerSVGElement;\n const p = svg.createSVGPoint();\n p.x = x;\n p.y = y;\n try {\n const ctm = svg.getScreenCTM();\n const globalPoint = p.matrixTransform(ctm.inverse());\n const globalToLocalMatrix = getTransformToElement(elem, svg).inverse();\n return globalPoint.matrixTransform(globalToLocalMatrix);\n }\n catch (e) {\n return p;\n }\n}\n/**\n * Convert the SVGElement to an equivalent geometric shape. The element's\n * transformations are not taken into account.\n *\n * SVGRectElement => Rectangle\n *\n * SVGLineElement => Line\n *\n * SVGCircleElement => Ellipse\n *\n * SVGEllipseElement => Ellipse\n *\n * SVGPolygonElement => Polyline\n *\n * SVGPolylineElement => Polyline\n *\n * SVGPathElement => Path\n *\n * others => Rectangle\n */\nexport function toGeometryShape(elem) {\n const attr = (name) => {\n const s = elem.getAttribute(name);\n const v = s ? parseFloat(s) : 0;\n return Number.isNaN(v) ? 0 : v;\n };\n switch (elem instanceof SVGElement && elem.nodeName.toLowerCase()) {\n case 'rect':\n return new Rectangle(attr('x'), attr('y'), attr('width'), attr('height'));\n case 'circle':\n return new Ellipse(attr('cx'), attr('cy'), attr('r'), attr('r'));\n case 'ellipse':\n return new Ellipse(attr('cx'), attr('cy'), attr('rx'), attr('ry'));\n case 'polyline': {\n const points = getPointsFromSvgElement(elem);\n return new Polyline(points);\n }\n case 'polygon': {\n const points = getPointsFromSvgElement(elem);\n if (points.length > 1) {\n points.push(points[0]);\n }\n return new Polyline(points);\n }\n case 'path': {\n let d = elem.getAttribute('d');\n if (!Path.isValid(d)) {\n d = Path.normalize(d);\n }\n return Path.parse(d);\n }\n case 'line': {\n return new Line(attr('x1'), attr('y1'), attr('x2'), attr('y2'));\n }\n default:\n break;\n }\n // Anything else is a rectangle\n return getBBox(elem);\n}\nexport function getIntersection(elem, ref, target) {\n const svg = elem instanceof SVGSVGElement ? elem : elem.ownerSVGElement;\n target = target || svg; // eslint-disable-line\n const bbox = getBBox(target);\n const center = bbox.getCenter();\n if (!bbox.intersectsWithLineFromCenterToPoint(ref)) {\n return null;\n }\n let spot = null;\n const tagName = elem.tagName.toLowerCase();\n // Little speed up optimization for `` element. We do not do convert\n // to path element and sampling but directly calculate the intersection\n // through a transformed geometrical rectangle.\n if (tagName === 'rect') {\n const gRect = new Rectangle(parseFloat(elem.getAttribute('x') || '0'), parseFloat(elem.getAttribute('y') || '0'), parseFloat(elem.getAttribute('width') || '0'), parseFloat(elem.getAttribute('height') || '0'));\n // Get the rect transformation matrix with regards to the SVG document.\n const rectMatrix = getTransformToElement(elem, target);\n const rectMatrixComponents = decomposeMatrix(rectMatrix);\n // Rotate the rectangle back so that we can use\n // `intersectsWithLineFromCenterToPoint()`.\n const reseted = svg.createSVGTransform();\n reseted.setRotate(-rectMatrixComponents.rotation, center.x, center.y);\n const rect = transformRectangle(gRect, reseted.matrix.multiply(rectMatrix));\n spot = Rectangle.create(rect).intersectsWithLineFromCenterToPoint(ref, rectMatrixComponents.rotation);\n }\n else if (tagName === 'path' ||\n tagName === 'polygon' ||\n tagName === 'polyline' ||\n tagName === 'circle' ||\n tagName === 'ellipse') {\n const pathNode = tagName === 'path' ? elem : toPath(elem);\n const samples = sample(pathNode);\n let minDistance = Infinity;\n let closestSamples = [];\n for (let i = 0, ii = samples.length; i < ii; i += 1) {\n const sample = samples[i];\n // Convert the sample point in the local coordinate system\n // to the global coordinate system.\n let gp = createSVGPoint(sample.x, sample.y);\n gp = gp.matrixTransform(getTransformToElement(elem, target));\n const ggp = Point.create(gp);\n const centerDistance = ggp.distance(center);\n // Penalize a higher distance to the reference point by 10%.\n // This gives better results. This is due to\n // inaccuracies introduced by rounding errors and getPointAtLength() returns.\n const refDistance = ggp.distance(ref) * 1.1;\n const distance = centerDistance + refDistance;\n if (distance < minDistance) {\n minDistance = distance;\n closestSamples = [{ sample, refDistance }];\n }\n else if (distance < minDistance + 1) {\n closestSamples.push({ sample, refDistance });\n }\n }\n closestSamples.sort((a, b) => a.refDistance - b.refDistance);\n if (closestSamples[0]) {\n spot = Point.create(closestSamples[0].sample);\n }\n }\n return spot;\n}\nexport function animate(elem, options) {\n return createAnimation(elem, options, 'animate');\n}\nexport function animateTransform(elem, options) {\n return createAnimation(elem, options, 'animateTransform');\n}\nfunction createAnimation(elem, options, type) {\n // @see\n // https://www.w3.org/TR/SVG11/animate.html#AnimateElement\n // https://developer.mozilla.org/en-US/docs/Web/API/SVGAnimateElement\n // https://developer.mozilla.org/en-US/docs/Web/API/SVGAnimateTransformElement\n const animate = createSvgElement(type);\n elem.appendChild(animate);\n try {\n return setupAnimation(animate, options);\n }\n catch (error) {\n // pass\n }\n return () => { };\n}\nfunction setupAnimation(animate, options) {\n const { start, complete, repeat } = options, attrs = __rest(options, [\"start\", \"complete\", \"repeat\"]);\n attr(animate, attrs);\n start && animate.addEventListener('beginEvent', start);\n complete && animate.addEventListener('endEvent', complete);\n repeat && animate.addEventListener('repeatEvent', repeat);\n const ani = animate;\n ani.beginElement();\n return () => ani.endElement();\n}\n/**\n * Animate the element along the path SVG element (or Vector object).\n * `attrs` contain Animation Timing attributes describing the animation.\n */\nexport function animateAlongPath(elem, options, path) {\n const id = ensureId(path);\n // https://developer.mozilla.org/en-US/docs/Web/API/SVGAnimationElement\n const animate = createSvgElement('animateMotion');\n const mpath = createSvgElement('mpath');\n attr(mpath, { 'xlink:href': `#${id}` });\n animate.appendChild(mpath);\n elem.appendChild(animate);\n try {\n return setupAnimation(animate, options);\n }\n catch (e) {\n // Fallback for IE 9.\n if (document.documentElement.getAttribute('smiling') === 'fake') {\n // Register the animation. (See `https://answers.launchpad.net/smil/+question/203333`)\n const ani = animate;\n ani.animators = [];\n const win = window;\n const animationID = ani.getAttribute('id');\n if (animationID) {\n win.id2anim[animationID] = ani;\n }\n const targets = win.getTargets(ani);\n for (let i = 0, ii = targets.length; i < ii; i += 1) {\n const target = targets[i];\n const animator = new win.Animator(ani, target, i);\n win.animators.push(animator);\n ani.animators[i] = animator;\n animator.register();\n }\n }\n }\n return () => { };\n}\nexport function getBoundingOffsetRect(elem) {\n let left = 0;\n let top = 0;\n let width = 0;\n let height = 0;\n if (elem) {\n let current = elem;\n while (current) {\n left += current.offsetLeft;\n top += current.offsetTop;\n current = current.offsetParent;\n if (current) {\n left += parseInt(getComputedStyle(current, 'borderLeft'), 10);\n top += parseInt(getComputedStyle(current, 'borderTop'), 10);\n }\n }\n width = elem.offsetWidth;\n height = elem.offsetHeight;\n }\n return { left, top, width, height };\n}\n//# sourceMappingURL=geom.js.map","import { Point } from '../../geometry';\nimport { attr } from './attr';\nimport { getBBox, getTransformToElement } from './geom';\nimport { createSVGTransform, parseTransformString, transformStringToMatrix, matrixToTransformString, } from './matrix';\nexport function transform(elem, matrix, options = {}) {\n if (matrix == null) {\n return transformStringToMatrix(attr(elem, 'transform'));\n }\n if (options.absolute) {\n elem.setAttribute('transform', matrixToTransformString(matrix));\n return;\n }\n const transformList = elem.transform;\n const svgTransform = createSVGTransform(matrix);\n transformList.baseVal.appendItem(svgTransform);\n}\nexport function translate(elem, tx, ty = 0, options = {}) {\n let transformAttr = attr(elem, 'transform');\n const transform = parseTransformString(transformAttr);\n if (tx == null) {\n return transform.translation;\n }\n transformAttr = transform.raw;\n transformAttr = transformAttr.replace(/translate\\([^)]*\\)/g, '').trim();\n const newTx = options.absolute ? tx : transform.translation.tx + tx;\n const newTy = options.absolute ? ty : transform.translation.ty + ty;\n const newTranslate = `translate(${newTx},${newTy})`;\n // Note that `translate()` is always the first transformation. This is\n // usually the desired case.\n elem.setAttribute('transform', `${newTranslate} ${transformAttr}`.trim());\n}\nexport function rotate(elem, angle, cx, cy, options = {}) {\n let transformAttr = attr(elem, 'transform');\n const transform = parseTransformString(transformAttr);\n if (angle == null) {\n return transform.rotation;\n }\n transformAttr = transform.raw;\n transformAttr = transformAttr.replace(/rotate\\([^)]*\\)/g, '').trim();\n angle %= 360; // eslint-disable-line\n const newAngle = options.absolute ? angle : transform.rotation.angle + angle;\n const newOrigin = cx != null && cy != null ? `,${cx},${cy}` : '';\n const newRotate = `rotate(${newAngle}${newOrigin})`;\n elem.setAttribute('transform', `${transformAttr} ${newRotate}`.trim());\n}\nexport function scale(elem, sx, sy) {\n let transformAttr = attr(elem, 'transform');\n const transform = parseTransformString(transformAttr);\n if (sx == null) {\n return transform.scale;\n }\n sy = sy == null ? sx : sy; // eslint-disable-line\n transformAttr = transform.raw;\n transformAttr = transformAttr.replace(/scale\\([^)]*\\)/g, '').trim();\n const newScale = `scale(${sx},${sy})`;\n elem.setAttribute('transform', `${transformAttr} ${newScale}`.trim());\n}\nexport function translateAndAutoOrient(elem, position, reference, target) {\n const pos = Point.create(position);\n const ref = Point.create(reference);\n if (!target) {\n const svg = elem instanceof SVGSVGElement ? elem : elem.ownerSVGElement;\n target = svg; // eslint-disable-line\n }\n // Clean-up previously set transformations except the scale.\n // If we didn't clean up the previous transformations then they'd\n // add up with the old ones. Scale is an exception as it doesn't\n // add up, consider: `this.scale(2).scale(2).scale(2)`. The result\n // is that the element is scaled by the factor 2, not 8.\n const s = scale(elem);\n elem.setAttribute('transform', '');\n const bbox = getBBox(elem, { target }).scale(s.sx, s.sy);\n // 1. Translate to origin.\n const translateToOrigin = createSVGTransform();\n translateToOrigin.setTranslate(-bbox.x - bbox.width / 2, -bbox.y - bbox.height / 2);\n // 2. Rotate around origin.\n const rotateAroundOrigin = createSVGTransform();\n const angle = pos.angleBetween(ref, pos.clone().translate(1, 0));\n if (angle)\n rotateAroundOrigin.setRotate(angle, 0, 0);\n // 3. Translate to the `position` + the offset (half my width)\n // towards the `reference` point.\n const translateFromOrigin = createSVGTransform();\n const finalPosition = pos.clone().move(ref, bbox.width / 2);\n translateFromOrigin.setTranslate(2 * pos.x - finalPosition.x, 2 * pos.y - finalPosition.y);\n // 4. Get the current transformation matrix of this node\n const ctm = getTransformToElement(elem, target);\n // 5. Apply transformations and the scale\n const transform = createSVGTransform();\n transform.setMatrix(translateFromOrigin.matrix.multiply(rotateAroundOrigin.matrix.multiply(translateToOrigin.matrix.multiply(ctm.scale(s.sx, s.sy)))));\n elem.setAttribute('transform', matrixToTransformString(transform.matrix));\n}\n//# sourceMappingURL=transform.js.map","import JQuery from 'jquery';\nimport { Platform } from '../platform';\nexport class MouseWheelHandle {\n constructor(target, onWheelCallback, onWheelGuard) {\n this.animationFrameId = 0;\n this.deltaX = 0;\n this.deltaY = 0;\n this.eventName = Platform.isEventSupported('wheel')\n ? 'wheel'\n : 'mousewheel';\n this.target = target;\n this.onWheelCallback = onWheelCallback;\n this.onWheelGuard = onWheelGuard;\n this.onWheel = this.onWheel.bind(this);\n this.didWheel = this.didWheel.bind(this);\n }\n enable() {\n if (Platform.SUPPORT_PASSIVE) {\n this.target.addEventListener(this.eventName, this.onWheel, {\n passive: false,\n });\n }\n else {\n JQuery(this.target).on('mousewheel', this.onWheel);\n }\n }\n disable() {\n if (Platform.SUPPORT_PASSIVE) {\n this.target.removeEventListener(this.eventName, this.onWheel);\n }\n else {\n JQuery(this.target).off('mousewheel');\n }\n }\n onWheel(e) {\n if (this.onWheelGuard != null && !this.onWheelGuard(e)) {\n return;\n }\n this.deltaX += e.deltaX;\n this.deltaY += e.deltaY;\n e.preventDefault();\n let changed;\n if (this.deltaX !== 0 || this.deltaY !== 0) {\n e.stopPropagation();\n changed = true;\n }\n if (changed === true && this.animationFrameId === 0) {\n this.animationFrameId = requestAnimationFrame(() => {\n this.didWheel(e);\n });\n }\n }\n didWheel(e) {\n this.animationFrameId = 0;\n this.onWheelCallback(e, this.deltaX, this.deltaY);\n this.deltaX = 0;\n this.deltaY = 0;\n }\n}\n//# sourceMappingURL=mousewheel.js.map","import { Vector } from '../vector';\n/**\n * **Deprecation Notice:** `Dom.isVector` is deprecated and will be moved in next\n * major release. Use `Vector.isVector()` instead.\n *\n * @deprecated\n */\nexport const isVector = Vector.isVector;\n/**\n * **Deprecation Notice:** `Dom.createVector` is deprecated and will be moved\n * in next major release. Use `Vector.create()` instead.\n *\n * @deprecated\n */\nexport const createVector = Vector.create;\n/**\n * **Deprecation Notice:** `Dom.createVectors` is deprecated and will be moved\n * in next major release. Use `Vector.createVectors()` instead.\n *\n * @deprecated\n */\nexport const createVectors = Vector.createVectors;\n//# sourceMappingURL=vector.js.map","export function debounce(fn, delay = 60) {\n let timer = null;\n return (...args) => {\n if (timer) {\n clearTimeout(timer);\n }\n timer = window.setTimeout(() => {\n fn.apply(this, args);\n }, delay);\n };\n}\n//# sourceMappingURL=util.js.map","import { createSensor as createObjectSensor } from './object';\nimport { createSensor as createResizeObserverSensor } from './observer';\nexport const createSensor = typeof ResizeObserver !== 'undefined'\n ? createResizeObserverSensor\n : createObjectSensor;\n//# sourceMappingURL=index.js.map","import { debounce } from './util';\nexport function createSensor(element) {\n let sensor = null;\n let listeners = [];\n const trigger = debounce(() => {\n listeners.forEach((listener) => {\n listener(element);\n });\n });\n const create = () => {\n const s = new ResizeObserver(trigger);\n s.observe(element);\n trigger();\n return s;\n };\n const bind = (listener) => {\n if (!sensor) {\n sensor = create();\n }\n if (listeners.indexOf(listener) === -1) {\n listeners.push(listener);\n }\n };\n const destroy = () => {\n if (sensor) {\n sensor.disconnect();\n listeners = [];\n sensor = null;\n }\n };\n const unbind = (listener) => {\n const idx = listeners.indexOf(listener);\n if (idx !== -1) {\n listeners.splice(idx, 1);\n }\n // no listener, and sensor is exist then destroy the sensor\n if (listeners.length === 0 && sensor) {\n destroy();\n }\n };\n return {\n element,\n bind,\n destroy,\n unbind,\n };\n}\n//# sourceMappingURL=observer.js.map","import { debounce } from './util';\nexport function createSensor(element) {\n let sensor = null;\n let listeners = [];\n const create = () => {\n if (getComputedStyle(element).position === 'static') {\n const style = element.style;\n style.position = 'relative';\n }\n const obj = document.createElement('object');\n obj.onload = () => {\n obj.contentDocument.defaultView.addEventListener('resize', trigger);\n trigger();\n };\n obj.style.display = 'block';\n obj.style.position = 'absolute';\n obj.style.top = '0';\n obj.style.left = '0';\n obj.style.height = '100%';\n obj.style.width = '100%';\n obj.style.overflow = 'hidden';\n obj.style.pointerEvents = 'none';\n obj.style.zIndex = '-1';\n obj.style.opacity = '0';\n obj.setAttribute('tabindex', '-1');\n obj.type = 'text/html';\n element.appendChild(obj);\n // for ie, should set data attribute delay, or will be white screen\n obj.data = 'about:blank';\n return obj;\n };\n const trigger = debounce(() => {\n listeners.forEach((listener) => listener(element));\n });\n const bind = (listener) => {\n if (!sensor) {\n sensor = create();\n }\n if (listeners.indexOf(listener) === -1) {\n listeners.push(listener);\n }\n };\n const destroy = () => {\n if (sensor && sensor.parentNode) {\n if (sensor.contentDocument) {\n sensor.contentDocument.defaultView.removeEventListener('resize', trigger);\n }\n sensor.parentNode.removeChild(sensor);\n sensor = null;\n listeners = [];\n }\n };\n const unbind = (listener) => {\n const idx = listeners.indexOf(listener);\n if (idx !== -1) {\n listeners.splice(idx, 1);\n }\n // no listener, and sensor is exist then destroy the sensor\n if (listeners.length === 0 && sensor) {\n destroy();\n }\n };\n return {\n element,\n bind,\n destroy,\n unbind,\n };\n}\n//# sourceMappingURL=object.js.map","import { createSensor } from './sensors';\nexport var SizeSensor;\n(function (SizeSensor) {\n const cache = new WeakMap();\n function get(element) {\n let sensor = cache.get(element);\n if (sensor) {\n return sensor;\n }\n sensor = createSensor(element);\n cache.set(element, sensor);\n return sensor;\n }\n function remove(sensor) {\n sensor.destroy();\n cache.delete(sensor.element);\n }\n SizeSensor.bind = (element, cb) => {\n const sensor = get(element);\n sensor.bind(cb);\n return () => sensor.unbind(cb);\n };\n SizeSensor.clear = (element) => {\n const sensor = get(element);\n remove(sensor);\n };\n})(SizeSensor || (SizeSensor = {}));\n//# sourceMappingURL=index.js.map","export var Scheduler;\n(function (Scheduler) {\n const queue = [];\n const threshold = 1000 / 60;\n const unit = [];\n let deadline = 0;\n const getTime = () => performance.now();\n const peek = (queue) => queue[0];\n const schedule = (cb) => unit.push(cb) === 1 && postMessage();\n const postMessage = (() => {\n const cb = () => unit.splice(0, unit.length).forEach((c) => c());\n if (typeof MessageChannel !== 'undefined') {\n const { port1, port2 } = new MessageChannel();\n port1.onmessage = cb;\n return () => port2.postMessage(null);\n }\n return () => setTimeout(cb);\n })();\n const flushTask = () => {\n deadline = getTime() + threshold;\n let job = peek(queue);\n while (job && !Scheduler.shouldYield()) {\n const { callback, data } = job;\n job.callback = null;\n const next = callback && callback(data);\n if (next) {\n job.callback = next;\n }\n else {\n queue.shift();\n }\n job = peek(queue);\n }\n job && schedule(flushTask);\n };\n Scheduler.scheduleTask = (callback, data) => {\n const task = {\n callback,\n data,\n };\n queue.push(task);\n schedule(flushTask);\n };\n Scheduler.shouldYield = () => {\n var _a, _b;\n return (((_b = (_a = navigator) === null || _a === void 0 ? void 0 : _a.scheduling) === null || _b === void 0 ? void 0 : _b.isInputPending()) || getTime() >= deadline);\n };\n})(Scheduler || (Scheduler = {}));\n//# sourceMappingURL=index.js.map","import { StringExt, FunctionExt, Platform } from '../util';\nexport class Registry {\n constructor(options) {\n this.options = Object.assign({}, options);\n this.data = this.options.data || {};\n this.register = this.register.bind(this);\n this.unregister = this.unregister.bind(this);\n }\n get names() {\n return Object.keys(this.data);\n }\n register(name, options, force = false) {\n if (typeof name === 'object') {\n Object.keys(name).forEach((key) => {\n this.register(key, name[key], options);\n });\n return;\n }\n if (this.exist(name) && !force && !Platform.isApplyingHMR()) {\n this.onDuplicated(name);\n }\n const process = this.options.process;\n const entity = process\n ? FunctionExt.call(process, this, name, options)\n : options;\n this.data[name] = entity;\n return entity;\n }\n unregister(name) {\n const entity = name ? this.data[name] : null;\n delete this.data[name];\n return entity;\n }\n get(name) {\n return name ? this.data[name] : null;\n }\n exist(name) {\n return name ? this.data[name] != null : false;\n }\n onDuplicated(name) {\n // eslint-disable-next-line no-useless-catch\n try {\n // race\n if (this.options.onConflict) {\n FunctionExt.call(this.options.onConflict, this, name);\n }\n throw new Error(`${StringExt.upperFirst(this.options.type)} with name '${name}' already registered.`);\n }\n catch (err) {\n throw err;\n }\n }\n onNotFound(name, prefix) {\n throw new Error(this.getSpellingSuggestion(name, prefix));\n }\n getSpellingSuggestion(name, prefix) {\n const suggestion = this.getSpellingSuggestionForName(name);\n const prefixed = prefix\n ? `${prefix} ${StringExt.lowerFirst(this.options.type)}`\n : this.options.type;\n return (\n // eslint-disable-next-line\n `${StringExt.upperFirst(prefixed)} with name '${name}' does not exist.${suggestion ? ` Did you mean '${suggestion}'?` : ''}`);\n }\n getSpellingSuggestionForName(name) {\n return StringExt.getSpellingSuggestion(name, Object.keys(this.data), (candidate) => candidate);\n }\n}\n(function (Registry) {\n function create(options) {\n return new Registry(options);\n }\n Registry.create = create;\n})(Registry || (Registry = {}));\n//# sourceMappingURL=registry.js.map","export const raw = {\n xlinkHref: 'xlink:href',\n xlinkShow: 'xlink:show',\n xlinkRole: 'xlink:role',\n xlinkType: 'xlink:type',\n xlinkArcrole: 'xlink:arcrole',\n xlinkTitle: 'xlink:title',\n xlinkActuate: 'xlink:actuate',\n xmlSpace: 'xml:space',\n xmlBase: 'xml:base',\n xmlLang: 'xml:lang',\n preserveAspectRatio: 'preserveAspectRatio',\n requiredExtension: 'requiredExtension',\n requiredFeatures: 'requiredFeatures',\n systemLanguage: 'systemLanguage',\n externalResourcesRequired: 'externalResourceRequired',\n};\n//# sourceMappingURL=raw.js.map","import { Point, Path, Polyline } from '../../geometry';\nimport { NumberExt, FunctionExt } from '../../util';\nexport const ref = {\n// We do not set `ref` attribute directly on an element.\n// The attribute itself does not qualify for relative positioning.\n};\n// if `refX` is in [0, 1] then `refX` is a fraction of bounding box width\n// if `refX` is < 0 then `refX`'s absolute values is the right coordinate of the bounding box\n// otherwise, `refX` is the left coordinate of the bounding box\nexport const refX = {\n position: positionWrapper('x', 'width', 'origin'),\n};\nexport const refY = {\n position: positionWrapper('y', 'height', 'origin'),\n};\n// `ref-dx` and `ref-dy` define the offset of the subelement relative to the right and/or bottom\n// coordinate of the reference element.\nexport const refDx = {\n position: positionWrapper('x', 'width', 'corner'),\n};\nexport const refDy = {\n position: positionWrapper('y', 'height', 'corner'),\n};\n// 'ref-width'/'ref-height' defines the width/height of the subelement relatively to\n// the reference element size\n// val in 0..1 ref-width = 0.75 sets the width to 75% of the ref. el. width\n// val < 0 || val > 1 ref-height = -20 sets the height to the ref. el. height shorter by 20\nexport const refWidth = {\n set: setWrapper('width', 'width'),\n};\nexport const refHeight = {\n set: setWrapper('height', 'height'),\n};\nexport const refRx = {\n set: setWrapper('rx', 'width'),\n};\nexport const refRy = {\n set: setWrapper('ry', 'height'),\n};\nexport const refRInscribed = {\n set: ((attrName) => {\n const widthFn = setWrapper(attrName, 'width');\n const heightFn = setWrapper(attrName, 'height');\n return function (value, options) {\n const refBBox = options.refBBox;\n const fn = refBBox.height > refBBox.width ? widthFn : heightFn;\n return FunctionExt.call(fn, this, value, options);\n };\n })('r'),\n};\nexport const refRCircumscribed = {\n set(val, { refBBox }) {\n let value = parseFloat(val);\n const percentage = NumberExt.isPercentage(val);\n if (percentage) {\n value /= 100;\n }\n const diagonalLength = Math.sqrt(refBBox.height * refBBox.height + refBBox.width * refBBox.width);\n let rValue;\n if (Number.isFinite(value)) {\n if (percentage || (value >= 0 && value <= 1)) {\n rValue = value * diagonalLength;\n }\n else {\n rValue = Math.max(value + diagonalLength, 0);\n }\n }\n return { r: rValue };\n },\n};\nexport const refCx = {\n set: setWrapper('cx', 'width'),\n};\nexport const refCy = {\n set: setWrapper('cy', 'height'),\n};\nexport const refDResetOffset = {\n set: dWrapper({ resetOffset: true }),\n};\nexport const refDKeepOffset = {\n set: dWrapper({ resetOffset: false }),\n};\nexport const refPointsResetOffset = {\n set: pointsWrapper({ resetOffset: true }),\n};\nexport const refPointsKeepOffset = {\n set: pointsWrapper({ resetOffset: false }),\n};\n// aliases\n// -------\nexport const refR = refRInscribed;\nexport const refD = refDResetOffset;\nexport const refPoints = refPointsResetOffset;\n// Allows to combine both absolute and relative positioning\n// refX: 50%, refX2: 20\nexport const refX2 = refX;\nexport const refY2 = refY;\nexport const refWidth2 = refWidth;\nexport const refHeight2 = refHeight;\n// utils\n// -----\nfunction positionWrapper(axis, dimension, origin) {\n return (val, { refBBox }) => {\n if (val == null) {\n return null;\n }\n let value = parseFloat(val);\n const percentage = NumberExt.isPercentage(val);\n if (percentage) {\n value /= 100;\n }\n let delta;\n if (Number.isFinite(value)) {\n const refOrigin = refBBox[origin];\n if (percentage || (value > 0 && value < 1)) {\n delta = refOrigin[axis] + refBBox[dimension] * value;\n }\n else {\n delta = refOrigin[axis] + value;\n }\n }\n const point = new Point();\n point[axis] = delta || 0;\n return point;\n };\n}\nfunction setWrapper(attrName, dimension) {\n return function (val, { refBBox }) {\n let value = parseFloat(val);\n const percentage = NumberExt.isPercentage(val);\n if (percentage) {\n value /= 100;\n }\n const attrs = {};\n if (Number.isFinite(value)) {\n const attrValue = percentage || (value >= 0 && value <= 1)\n ? value * refBBox[dimension]\n : Math.max(value + refBBox[dimension], 0);\n attrs[attrName] = attrValue;\n }\n return attrs;\n };\n}\nfunction shapeWrapper(shapeConstructor, options) {\n const cacheName = 'x6-shape';\n const resetOffset = options && options.resetOffset;\n return function (value, { view, elem, refBBox }) {\n const $elem = view.$(elem);\n let cache = $elem.data(cacheName);\n if (!cache || cache.value !== value) {\n // only recalculate if value has changed\n const cachedShape = shapeConstructor(value);\n cache = {\n value,\n shape: cachedShape,\n shapeBBox: cachedShape.bbox(),\n };\n $elem.data(cacheName, cache);\n }\n const shape = cache.shape.clone();\n const shapeBBox = cache.shapeBBox.clone();\n const shapeOrigin = shapeBBox.getOrigin();\n const refOrigin = refBBox.getOrigin();\n shapeBBox.x = refOrigin.x;\n shapeBBox.y = refOrigin.y;\n const fitScale = refBBox.getMaxScaleToFit(shapeBBox, refOrigin);\n // `maxRectScaleToFit` can give Infinity if width or height is 0\n const sx = shapeBBox.width === 0 || refBBox.width === 0 ? 1 : fitScale.sx;\n const sy = shapeBBox.height === 0 || refBBox.height === 0 ? 1 : fitScale.sy;\n shape.scale(sx, sy, shapeOrigin);\n if (resetOffset) {\n shape.translate(-shapeOrigin.x, -shapeOrigin.y);\n }\n return shape;\n };\n}\n// `d` attribute for SVGPaths\nfunction dWrapper(options) {\n function pathConstructor(value) {\n return Path.parse(value);\n }\n const shape = shapeWrapper(pathConstructor, options);\n return (value, args) => {\n const path = shape(value, args);\n return {\n d: path.serialize(),\n };\n };\n}\n// `points` attribute for SVGPolylines and SVGPolygons\nfunction pointsWrapper(options) {\n const shape = shapeWrapper((points) => new Polyline(points), options);\n return (value, args) => {\n const polyline = shape(value, args);\n return {\n points: polyline.serialize(),\n };\n };\n}\n//# sourceMappingURL=ref.js.map","import { ObjectExt } from '../../util';\nexport const fill = {\n qualify: ObjectExt.isPlainObject,\n set(fill, { view }) {\n return `url(#${view.graph.defineGradient(fill)})`;\n },\n};\n//# sourceMappingURL=fill.js.map","import { ObjectExt } from '../../util';\nexport const stroke = {\n qualify: ObjectExt.isPlainObject,\n set(stroke, { view }) {\n const cell = view.cell;\n const options = Object.assign({}, stroke);\n if (cell.isEdge() && options.type === 'linearGradient') {\n const edgeView = view;\n const source = edgeView.sourcePoint;\n const target = edgeView.targetPoint;\n options.id = `gradient-${options.type}-${cell.id}`;\n options.attrs = Object.assign(Object.assign({}, options.attrs), { x1: source.x, y1: source.y, x2: target.x, y2: target.y, gradientUnits: 'userSpaceOnUse' });\n view.graph.defs.remove(options.id);\n }\n return `url(#${view.graph.defineGradient(options)})`;\n },\n};\n//# sourceMappingURL=stroke.js.map","import { ObjectExt, NumberExt, Dom, FunctionExt, } from '../../util';\nexport const text = {\n qualify(text, { attrs }) {\n return attrs.textWrap == null || !ObjectExt.isPlainObject(attrs.textWrap);\n },\n set(text, { view, elem, attrs }) {\n const cacheName = 'x6-text';\n const $elem = view.$(elem);\n const cache = $elem.data(cacheName);\n const json = (str) => {\n try {\n return JSON.parse(str);\n }\n catch (error) {\n return str;\n }\n };\n const options = {\n x: attrs.x,\n eol: attrs.eol,\n annotations: json(attrs.annotations),\n textPath: json(attrs['text-path'] || attrs.textPath),\n textVerticalAnchor: (attrs['text-vertical-anchor'] ||\n attrs.textVerticalAnchor),\n displayEmpty: (attrs['display-empty'] || attrs.displayEmpty) === 'true',\n lineHeight: (attrs['line-height'] || attrs.lineHeight),\n };\n const fontSize = (attrs['font-size'] || attrs.fontSize);\n const textHash = JSON.stringify([text, options]);\n if (fontSize) {\n elem.setAttribute('font-size', fontSize);\n }\n // Updates the text only if there was a change in the string\n // or any of its attributes.\n if (cache == null || cache !== textHash) {\n // Text Along Path Selector\n const textPath = options.textPath;\n if (textPath != null && typeof textPath === 'object') {\n const selector = textPath.selector;\n if (typeof selector === 'string') {\n const pathNode = view.find(selector)[0];\n if (pathNode instanceof SVGPathElement) {\n Dom.ensureId(pathNode);\n options.textPath = Object.assign({ 'xlink:href': `#${pathNode.id}` }, textPath);\n }\n }\n }\n Dom.text(elem, `${text}`, options);\n $elem.data(cacheName, textHash);\n }\n },\n};\nexport const textWrap = {\n qualify: ObjectExt.isPlainObject,\n set(val, { view, elem, attrs, refBBox }) {\n const info = val;\n // option `width`\n const width = info.width || 0;\n if (NumberExt.isPercentage(width)) {\n refBBox.width *= parseFloat(width) / 100;\n }\n else if (width <= 0) {\n refBBox.width += width;\n }\n else {\n refBBox.width = width;\n }\n // option `height`\n const height = info.height || 0;\n if (NumberExt.isPercentage(height)) {\n refBBox.height *= parseFloat(height) / 100;\n }\n else if (height <= 0) {\n refBBox.height += height;\n }\n else {\n refBBox.height = height;\n }\n // option `text`\n let wrappedText;\n let txt = info.text;\n if (txt == null) {\n txt = attrs.text;\n }\n if (txt != null) {\n wrappedText = Dom.breakText(`${txt}`, refBBox, {\n 'font-weight': attrs['font-weight'] || attrs.fontWeight,\n 'font-size': attrs['font-size'] || attrs.fontSize,\n 'font-family': attrs['font-family'] || attrs.fontFamily,\n lineHeight: attrs.lineHeight,\n }, {\n svgDocument: view.graph.view.svg,\n ellipsis: info.ellipsis,\n hyphen: info.hyphen,\n breakWord: info.breakWord,\n });\n }\n else {\n wrappedText = '';\n }\n FunctionExt.call(text.set, this, wrappedText, {\n view,\n elem,\n attrs,\n refBBox,\n cell: view.cell,\n });\n },\n};\nconst isTextInUse = (val, { attrs }) => {\n return attrs.text !== undefined;\n};\nexport const lineHeight = {\n qualify: isTextInUse,\n};\nexport const textVerticalAnchor = {\n qualify: isTextInUse,\n};\nexport const textPath = {\n qualify: isTextInUse,\n};\nexport const annotations = {\n qualify: isTextInUse,\n};\nexport const eol = {\n qualify: isTextInUse,\n};\nexport const displayEmpty = {\n qualify: isTextInUse,\n};\n//# sourceMappingURL=text.js.map","export const title = {\n qualify(title, { elem }) {\n // HTMLElement title is specified via an attribute (i.e. not an element)\n return elem instanceof SVGElement;\n },\n set(val, { view, elem }) {\n const cacheName = 'x6-title';\n const title = `${val}`;\n const $elem = view.$(elem);\n const cache = $elem.data(cacheName);\n if (cache == null || cache !== title) {\n $elem.data(cacheName, title);\n // Generally SVGTitleElement should be the first child\n // element of its parent.\n const firstChild = elem.firstChild;\n if (firstChild && firstChild.tagName.toUpperCase() === 'TITLE') {\n // Update an existing title\n const titleElem = firstChild;\n titleElem.textContent = title;\n }\n else {\n // Create a new title\n const titleNode = document.createElementNS(elem.namespaceURI, 'title');\n titleNode.textContent = title;\n elem.insertBefore(titleNode, firstChild);\n }\n }\n },\n};\n//# sourceMappingURL=title.js.map","import { NumberExt } from '../../util';\nimport { Point } from '../../geometry';\n// `x-align` when set to `middle` causes centering of the subelement around its new x coordinate.\n// `x-align` when set to `right` uses the x coordinate as referenced to the right of the bbox.\nexport const xAlign = {\n offset: offsetWrapper('x', 'width', 'right'),\n};\n// `y-align` when set to `middle` causes centering of the subelement around its new y coordinate.\n// `y-align` when set to `bottom` uses the y coordinate as referenced to the bottom of the bbox.\nexport const yAlign = {\n offset: offsetWrapper('y', 'height', 'bottom'),\n};\nexport const resetOffset = {\n offset(val, { refBBox }) {\n return val ? { x: -refBBox.x, y: -refBBox.y } : { x: 0, y: 0 };\n },\n};\nfunction offsetWrapper(axis, dimension, corner) {\n return (value, { refBBox }) => {\n const point = new Point();\n let delta;\n if (value === 'middle') {\n delta = refBBox[dimension] / 2;\n }\n else if (value === corner) {\n delta = refBBox[dimension];\n }\n else if (typeof value === 'number' && Number.isFinite(value)) {\n delta = value > -1 && value < 1 ? -refBBox[dimension] * value : -value;\n }\n else if (NumberExt.isPercentage(value)) {\n delta = (refBBox[dimension] * parseFloat(value)) / 100;\n }\n else {\n delta = 0;\n }\n point[axis] = -(refBBox[axis] + delta);\n return point;\n };\n}\n//# sourceMappingURL=align.js.map","import { ObjectExt } from '../../util';\nexport const style = {\n qualify: ObjectExt.isPlainObject,\n set(styles, { view, elem }) {\n view.$(elem).css(styles);\n },\n};\n//# sourceMappingURL=style.js.map","export const html = {\n set(html, { view, elem }) {\n view.$(elem).html(`${html}`);\n },\n};\n//# sourceMappingURL=html.js.map","import { ObjectExt } from '../../util';\nexport const filter = {\n qualify: ObjectExt.isPlainObject,\n set(filter, { view }) {\n return `url(#${view.graph.defineFilter(filter)})`;\n },\n};\n//# sourceMappingURL=filter.js.map","export const port = {\n set(port) {\n if (port != null && typeof port === 'object' && port.id) {\n return port.id;\n }\n return port;\n },\n};\n//# sourceMappingURL=port.js.map","import { Path } from '../../geometry';\nexport function normalize(d, offset1, offset2) {\n let offsetX;\n let offsetY;\n if (typeof offset1 === 'object') {\n offsetX = offset1.x;\n offsetY = offset1.y;\n }\n else {\n offsetX = offset1;\n offsetY = offset2;\n }\n const path = Path.parse(d);\n const bbox = path.bbox();\n if (bbox) {\n let ty = -bbox.height / 2 - bbox.y;\n let tx = -bbox.width / 2 - bbox.x;\n if (typeof offsetX === 'number') {\n tx -= offsetX;\n }\n if (typeof offsetY === 'number') {\n ty -= offsetY;\n }\n path.translate(tx, ty);\n }\n return path.serialize();\n}\n//# sourceMappingURL=util.js.map","var __rest = (this && this.__rest) || function (s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n t[p[i]] = s[p[i]];\n }\n return t;\n};\nimport { Path } from '../../geometry';\nimport { NumberExt } from '../../util';\nimport { normalize } from './util';\nexport const block = (_a) => {\n var { size, width, height, offset, open } = _a, attrs = __rest(_a, [\"size\", \"width\", \"height\", \"offset\", \"open\"]);\n return createClassicMarker({ size, width, height, offset }, open === true, true, undefined, attrs);\n};\nexport const classic = (_a) => {\n var { size, width, height, offset, factor } = _a, attrs = __rest(_a, [\"size\", \"width\", \"height\", \"offset\", \"factor\"]);\n return createClassicMarker({ size, width, height, offset }, false, false, factor, attrs);\n};\nfunction createClassicMarker(options, open, full, factor = 3 / 4, attrs = {}) {\n const size = options.size || 10;\n const width = options.width || size;\n const height = options.height || size;\n const path = new Path();\n const localAttrs = {};\n if (open) {\n path\n .moveTo(width, 0)\n .lineTo(0, height / 2)\n .lineTo(width, height);\n localAttrs.fill = 'none';\n }\n else {\n path.moveTo(0, height / 2);\n path.lineTo(width, 0);\n if (!full) {\n const f = NumberExt.clamp(factor, 0, 1);\n path.lineTo(width * f, height / 2);\n }\n path.lineTo(width, height);\n path.close();\n }\n return Object.assign(Object.assign(Object.assign({}, localAttrs), attrs), { tagName: 'path', d: normalize(path.serialize(), {\n x: options.offset != null ? options.offset : -width / 2,\n }) });\n}\n//# sourceMappingURL=classic.js.map","var __rest = (this && this.__rest) || function (s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n t[p[i]] = s[p[i]];\n }\n return t;\n};\nimport { Path } from '../../geometry';\nimport { normalize } from './util';\nexport const diamond = (_a) => {\n var { size, width, height, offset } = _a, attrs = __rest(_a, [\"size\", \"width\", \"height\", \"offset\"]);\n const s = size || 10;\n const w = width || s;\n const h = height || s;\n const path = new Path();\n path\n .moveTo(0, h / 2)\n .lineTo(w / 2, 0)\n .lineTo(w, h / 2)\n .lineTo(w / 2, h)\n .close();\n return Object.assign(Object.assign({}, attrs), { tagName: 'path', d: normalize(path.serialize(), offset == null ? -w / 2 : offset) });\n};\n//# sourceMappingURL=diamond.js.map","var __rest = (this && this.__rest) || function (s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n t[p[i]] = s[p[i]];\n }\n return t;\n};\nimport { normalize } from './util';\nexport const path = (_a) => {\n var { d, offsetX, offsetY } = _a, attrs = __rest(_a, [\"d\", \"offsetX\", \"offsetY\"]);\n return Object.assign(Object.assign({}, attrs), { tagName: 'path', d: normalize(d, offsetX, offsetY) });\n};\n//# sourceMappingURL=path.js.map","var __rest = (this && this.__rest) || function (s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n t[p[i]] = s[p[i]];\n }\n return t;\n};\nimport { Path } from '../../geometry';\nimport { normalize } from './util';\nexport const cross = (_a) => {\n var { size, width, height, offset } = _a, attrs = __rest(_a, [\"size\", \"width\", \"height\", \"offset\"]);\n const s = size || 10;\n const w = width || s;\n const h = height || s;\n const path = new Path();\n path.moveTo(0, 0).lineTo(w, h).moveTo(0, h).lineTo(w, 0);\n return Object.assign(Object.assign({}, attrs), { tagName: 'path', fill: 'none', d: normalize(path.serialize(), offset || -w / 2) });\n};\n//# sourceMappingURL=cross.js.map","var __rest = (this && this.__rest) || function (s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n t[p[i]] = s[p[i]];\n }\n return t;\n};\nimport { Path } from '../../geometry';\nimport { normalize } from './util';\nexport const async = (_a) => {\n var { width, height, offset, open, flip } = _a, attrs = __rest(_a, [\"width\", \"height\", \"offset\", \"open\", \"flip\"]);\n let h = height || 6;\n const w = width || 10;\n const opened = open === true;\n const fliped = flip === true;\n const result = Object.assign(Object.assign({}, attrs), { tagName: 'path' });\n if (fliped) {\n h = -h;\n }\n const path = new Path();\n path.moveTo(0, h).lineTo(w, 0);\n if (!opened) {\n path.lineTo(w, h);\n path.close();\n }\n else {\n result.fill = 'none';\n }\n result.d = normalize(path.serialize(), {\n x: offset || -w / 2,\n y: h / 2,\n });\n return result;\n};\n//# sourceMappingURL=async.js.map","var __rest = (this && this.__rest) || function (s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n t[p[i]] = s[p[i]];\n }\n return t;\n};\nimport { Path } from '../../geometry';\nimport { normalize } from './util';\nexport const circle = (_a) => {\n var { r } = _a, attrs = __rest(_a, [\"r\"]);\n const radius = r || 5;\n return Object.assign(Object.assign({ cx: radius }, attrs), { tagName: 'circle', r: radius });\n};\nexport const circlePlus = (_a) => {\n var { r } = _a, attrs = __rest(_a, [\"r\"]);\n const radius = r || 5;\n const path = new Path();\n path.moveTo(radius, 0).lineTo(radius, radius * 2);\n path.moveTo(0, radius).lineTo(radius * 2, radius);\n return {\n children: [\n Object.assign(Object.assign({}, circle({ r: radius })), { fill: 'none' }),\n Object.assign(Object.assign({}, attrs), { tagName: 'path', d: normalize(path.serialize(), -radius) }),\n ],\n };\n};\n//# sourceMappingURL=circle.js.map","var __rest = (this && this.__rest) || function (s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n t[p[i]] = s[p[i]];\n }\n return t;\n};\nexport const ellipse = (_a) => {\n var { rx, ry } = _a, attrs = __rest(_a, [\"rx\", \"ry\"]);\n const radiusX = rx || 5;\n const radiusy = ry || 5;\n return Object.assign(Object.assign({ cx: radiusX }, attrs), { tagName: 'ellipse', rx: radiusX, ry: radiusy });\n};\n//# sourceMappingURL=ellipse.js.map","import { Registry } from '../registry';\nimport * as markers from './main';\nimport { normalize as normalizeMarker } from './util';\nexport var Marker;\n(function (Marker) {\n Marker.presets = markers;\n Marker.registry = Registry.create({\n type: 'marker',\n });\n Marker.registry.register(Marker.presets, true);\n})(Marker || (Marker = {}));\n(function (Marker) {\n Marker.normalize = normalizeMarker;\n})(Marker || (Marker = {}));\n//# sourceMappingURL=index.js.map","var __rest = (this && this.__rest) || function (s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n t[p[i]] = s[p[i]];\n }\n return t;\n};\nimport { ObjectExt } from '../../util';\nimport { Marker } from '../marker';\nfunction qualify(value) {\n return typeof value === 'string' || ObjectExt.isPlainObject(value);\n}\nexport const sourceMarker = {\n qualify,\n set(marker, { view, attrs }) {\n return createMarker('marker-start', marker, view, attrs);\n },\n};\nexport const targetMarker = {\n qualify,\n set(marker, { view, attrs }) {\n return createMarker('marker-end', marker, view, attrs, {\n transform: 'rotate(180)',\n });\n },\n};\nexport const vertexMarker = {\n qualify,\n set(marker, { view, attrs }) {\n return createMarker('marker-mid', marker, view, attrs);\n },\n};\nfunction createMarker(type, marker, view, attrs, manual = {}) {\n const def = typeof marker === 'string' ? { name: marker } : marker;\n const { name, args } = def, others = __rest(def, [\"name\", \"args\"]);\n let preset = others;\n if (name && typeof name === 'string') {\n const fn = Marker.registry.get(name);\n if (fn) {\n preset = fn(Object.assign(Object.assign({}, others), args));\n }\n else {\n return Marker.registry.onNotFound(name);\n }\n }\n const options = Object.assign(Object.assign(Object.assign({}, normalizeAttr(attrs, type)), manual), preset);\n return {\n [type]: `url(#${view.graph.defineMarker(options)})`,\n };\n}\nfunction normalizeAttr(attr, type) {\n const result = {};\n // The context 'fill' is disregared here. The usual case is to use the\n // marker with a connection(for which 'fill' attribute is set to 'none').\n const stroke = attr.stroke;\n if (typeof stroke === 'string') {\n result.stroke = stroke;\n result.fill = stroke;\n }\n // Again the context 'fill-opacity' is ignored.\n let strokeOpacity = attr.strokeOpacity;\n if (strokeOpacity == null) {\n strokeOpacity = attr['stroke-opacity'];\n }\n if (strokeOpacity == null) {\n strokeOpacity = attr.opacity;\n }\n if (strokeOpacity != null) {\n result['stroke-opacity'] = strokeOpacity;\n result['fill-opacity'] = strokeOpacity;\n }\n if (type !== 'marker-mid') {\n const strokeWidth = parseFloat((attr.strokeWidth || attr['stroke-width']));\n if (Number.isFinite(strokeWidth) && strokeWidth > 1) {\n const offset = Math.ceil(strokeWidth / 2);\n result.refX = type === 'marker-start' ? offset : -offset;\n }\n }\n return result;\n}\n//# sourceMappingURL=marker.js.map","const isEdgeView = (val, { view }) => {\n return view.cell.isEdge();\n};\nexport const connection = {\n qualify: isEdgeView,\n set(val, args) {\n const view = args.view;\n const stubs = (val.stubs || 0);\n let d;\n if (Number.isFinite(stubs) && stubs !== 0) {\n let offset;\n if (stubs < 0) {\n const len = view.getConnectionLength() || 0;\n offset = (len + stubs) / 2;\n }\n else {\n offset = stubs;\n }\n const path = view.getConnection();\n if (path) {\n const sourceParts = path.divideAtLength(offset);\n const targetParts = path.divideAtLength(-offset);\n if (sourceParts && targetParts) {\n d = `${sourceParts[0].serialize()} ${targetParts[1].serialize()}`;\n }\n }\n }\n return { d: d || view.getConnectionPathData() };\n },\n};\nexport const atConnectionLengthKeepGradient = {\n qualify: isEdgeView,\n set: atConnectionWrapper('getTangentAtLength', { rotate: true }),\n};\nexport const atConnectionLengthIgnoreGradient = {\n qualify: isEdgeView,\n set: atConnectionWrapper('getTangentAtLength', { rotate: false }),\n};\nexport const atConnectionRatioKeepGradient = {\n qualify: isEdgeView,\n set: atConnectionWrapper('getTangentAtRatio', { rotate: true }),\n};\nexport const atConnectionRatioIgnoreGradient = {\n qualify: isEdgeView,\n set: atConnectionWrapper('getTangentAtRatio', { rotate: false }),\n};\n// aliases\n// -------\nexport const atConnectionLength = atConnectionLengthKeepGradient;\nexport const atConnectionRatio = atConnectionRatioKeepGradient;\n// utils\n// -----\nfunction atConnectionWrapper(method, options) {\n const zeroVector = { x: 1, y: 0 };\n return (value, args) => {\n let p;\n let angle;\n const view = args.view;\n const tangent = view[method](Number(value));\n if (tangent) {\n angle = options.rotate ? tangent.vector().vectorAngle(zeroVector) : 0;\n p = tangent.start;\n }\n else {\n p = view.path.start;\n angle = 0;\n }\n if (angle === 0) {\n return { transform: `translate(${p.x},${p.y}')` };\n }\n return {\n transform: `translate(${p.x},${p.y}') rotate(${angle})`,\n };\n };\n}\n//# sourceMappingURL=connection.js.map","import { FunctionExt } from '../../util';\nimport { Registry } from '../registry';\nimport { raw } from './raw';\nimport * as attrs from './main';\nexport var Attr;\n(function (Attr) {\n function isValidDefinition(def, val, options) {\n if (def != null) {\n if (typeof def === 'string') {\n return true;\n }\n if (typeof def.qualify !== 'function' ||\n FunctionExt.call(def.qualify, this, val, options)) {\n return true;\n }\n }\n return false;\n }\n Attr.isValidDefinition = isValidDefinition;\n})(Attr || (Attr = {}));\n(function (Attr) {\n Attr.presets = Object.assign(Object.assign({}, raw), attrs);\n Attr.registry = Registry.create({\n type: 'attribute definition',\n });\n Attr.registry.register(Attr.presets, true);\n})(Attr || (Attr = {}));\n//# sourceMappingURL=index.js.map","import { Dom } from '../../util';\nexport const dot = {\n color: '#aaaaaa',\n thickness: 1,\n markup: 'rect',\n update(elem, options) {\n const width = options.thickness * options.sx;\n const height = options.thickness * options.sy;\n Dom.attr(elem, {\n width,\n height,\n rx: width,\n ry: height,\n fill: options.color,\n });\n },\n};\n//# sourceMappingURL=dot.js.map","import { Dom } from '../../util';\nexport const fixedDot = {\n color: '#aaaaaa',\n thickness: 1,\n markup: 'rect',\n update(elem, options) {\n const size = options.sx <= 1 ? options.thickness * options.sx : options.thickness;\n Dom.attr(elem, {\n width: size,\n height: size,\n rx: size,\n ry: size,\n fill: options.color,\n });\n },\n};\n//# sourceMappingURL=fixed-dot.js.map","import { Dom } from '../../util';\nexport const mesh = {\n color: 'rgba(224,224,224,1)',\n thickness: 1,\n markup: 'path',\n update(elem, options) {\n let d;\n const width = options.width;\n const height = options.height;\n const thickness = options.thickness;\n if (width - thickness >= 0 && height - thickness >= 0) {\n d = ['M', width, 0, 'H0 M0 0 V0', height].join(' ');\n }\n else {\n d = 'M 0 0 0 0';\n }\n Dom.attr(elem, {\n d,\n stroke: options.color,\n 'stroke-width': options.thickness,\n });\n },\n};\n//# sourceMappingURL=mesh.js.map","import { Dom } from '../../util';\nexport const doubleMesh = [\n {\n color: 'rgba(224,224,224,1)',\n thickness: 1,\n markup: 'path',\n update(elem, options) {\n let d;\n const width = options.width;\n const height = options.height;\n const thickness = options.thickness;\n if (width - thickness >= 0 && height - thickness >= 0) {\n d = ['M', width, 0, 'H0 M0 0 V0', height].join(' ');\n }\n else {\n d = 'M 0 0 0 0';\n }\n Dom.attr(elem, {\n d,\n stroke: options.color,\n 'stroke-width': options.thickness,\n });\n },\n },\n {\n color: 'rgba(224,224,224,0.2)',\n thickness: 3,\n factor: 4,\n markup: 'path',\n update(elem, options) {\n let d;\n const factor = options.factor || 1;\n const width = options.width * factor;\n const height = options.height * factor;\n const thickness = options.thickness;\n if (width - thickness >= 0 && height - thickness >= 0) {\n d = ['M', width, 0, 'H0 M0 0 V0', height].join(' ');\n }\n else {\n d = 'M 0 0 0 0';\n }\n // update wrapper size\n options.width = width;\n options.height = height;\n Dom.attr(elem, {\n d,\n stroke: options.color,\n 'stroke-width': options.thickness,\n });\n },\n },\n];\n//# sourceMappingURL=double-mesh.js.map","import { Dom, Vector } from '../../util';\nimport { Registry } from '../registry';\nimport * as patterns from './main';\nexport class Grid {\n constructor() {\n this.patterns = {};\n this.root = Vector.create(Dom.createSvgDocument(), {\n width: '100%',\n height: '100%',\n }, [Dom.createSvgElement('defs')]).node;\n }\n add(id, elem) {\n const firstChild = this.root.childNodes[0];\n if (firstChild) {\n firstChild.appendChild(elem);\n }\n this.patterns[id] = elem;\n Vector.create('rect', {\n width: '100%',\n height: '100%',\n fill: `url(#${id})`,\n }).appendTo(this.root);\n }\n get(id) {\n return this.patterns[id];\n }\n has(id) {\n return this.patterns[id] != null;\n }\n}\n(function (Grid) {\n Grid.presets = patterns;\n Grid.registry = Registry.create({\n type: 'grid',\n });\n Grid.registry.register(Grid.presets, true);\n})(Grid || (Grid = {}));\n//# sourceMappingURL=index.js.map","import { Registry } from '../registry';\nimport * as filters from './main';\nexport var Filter;\n(function (Filter) {\n Filter.presets = filters;\n Filter.registry = Registry.create({\n type: 'filter',\n });\n Filter.registry.register(Filter.presets, true);\n})(Filter || (Filter = {}));\n//# sourceMappingURL=index.js.map","export function getString(value, defaultValue) {\n return value != null ? value : defaultValue;\n}\nexport function getNumber(num, defaultValue) {\n return num != null && Number.isFinite(num) ? num : defaultValue;\n}\n//# sourceMappingURL=util.js.map","import { getString, getNumber } from './util';\nexport function outline(args = {}) {\n const color = getString(args.color, 'blue');\n const width = getNumber(args.width, 1);\n const margin = getNumber(args.margin, 2);\n const opacity = getNumber(args.opacity, 1);\n const innerRadius = margin;\n const outerRadius = margin + width;\n return `\n \n \n \n \n \n \n \n \n \n \n \n `.trim();\n}\n//# sourceMappingURL=outline.js.map","import { getString, getNumber } from './util';\nexport function highlight(args = {}) {\n const color = getString(args.color, 'red');\n const blur = getNumber(args.blur, 0);\n const width = getNumber(args.width, 1);\n const opacity = getNumber(args.opacity, 1);\n return `\n \n \n \n \n \n \n \n `.trim();\n}\n//# sourceMappingURL=highlight.js.map","import { getNumber } from './util';\nexport function blur(args = {}) {\n const x = getNumber(args.x, 2);\n const stdDeviation = args.y != null && Number.isFinite(args.y) ? [x, args.y] : x;\n return `\n \n \n \n `.trim();\n}\n//# sourceMappingURL=blur.js.map","import { getString, getNumber } from './util';\nexport function dropShadow(args = {}) {\n const dx = getNumber(args.dx, 0);\n const dy = getNumber(args.dy, 0);\n const color = getString(args.color, 'black');\n const blur = getNumber(args.blur, 4);\n const opacity = getNumber(args.opacity, 1);\n return 'SVGFEDropShadowElement' in window\n ? `\n \n `.trim()\n : `\n \n \n \n \n \n \n \n \n \n \n \n `.trim();\n}\n//# sourceMappingURL=drop-shadow.js.map","import { getNumber } from './util';\nexport function grayScale(args = {}) {\n const amount = getNumber(args.amount, 1);\n const a = 0.2126 + 0.7874 * (1 - amount);\n const b = 0.7152 - 0.7152 * (1 - amount);\n const c = 0.0722 - 0.0722 * (1 - amount);\n const d = 0.2126 - 0.2126 * (1 - amount);\n const e = 0.7152 + 0.2848 * (1 - amount);\n const f = 0.0722 - 0.0722 * (1 - amount);\n const g = 0.2126 - 0.2126 * (1 - amount);\n const h = 0.0722 + 0.9278 * (1 - amount);\n return `\n \n \n \n `.trim();\n}\n//# sourceMappingURL=gray-scale.js.map","import { getNumber } from './util';\nexport function sepia(args = {}) {\n const amount = getNumber(args.amount, 1);\n const a = 0.393 + 0.607 * (1 - amount);\n const b = 0.769 - 0.769 * (1 - amount);\n const c = 0.189 - 0.189 * (1 - amount);\n const d = 0.349 - 0.349 * (1 - amount);\n const e = 0.686 + 0.314 * (1 - amount);\n const f = 0.168 - 0.168 * (1 - amount);\n const g = 0.272 - 0.272 * (1 - amount);\n const h = 0.534 - 0.534 * (1 - amount);\n const i = 0.131 + 0.869 * (1 - amount);\n return `\n \n \n \n `.trim();\n}\n//# sourceMappingURL=sepia.js.map","import { getNumber } from './util';\nexport function saturate(args = {}) {\n const amount = getNumber(args.amount, 1);\n return `\n \n \n \n `.trim();\n}\n//# sourceMappingURL=saturate.js.map","import { getNumber } from './util';\nexport function hueRotate(args = {}) {\n const angle = getNumber(args.angle, 0);\n return `\n \n \n \n `.trim();\n}\n//# sourceMappingURL=hue-rotate.js.map","import { getNumber } from './util';\nexport function invert(args = {}) {\n const amount = getNumber(args.amount, 1);\n const amount2 = 1 - amount;\n return `\n \n \n \n \n \n \n \n `.trim();\n}\n//# sourceMappingURL=invert.js.map","import { getNumber } from './util';\nexport function brightness(args = {}) {\n const amount = getNumber(args.amount, 1);\n return `\n \n \n \n \n \n \n \n `.trim();\n}\n//# sourceMappingURL=brightness.js.map","import { getNumber } from './util';\nexport function contrast(args = {}) {\n const amount = getNumber(args.amount, 1);\n const amount2 = 0.5 - amount / 2;\n return `\n \n \n \n \n \n \n \n `.trim();\n}\n//# sourceMappingURL=contrast.js.map","export const flipX = function (img) {\n // d b\n // d b\n const canvas = document.createElement('canvas');\n const width = img.width;\n const height = img.height;\n canvas.width = width * 2;\n canvas.height = height;\n const ctx = canvas.getContext('2d');\n // left image\n ctx.drawImage(img, 0, 0, width, height);\n // flipped right image\n ctx.translate(2 * width, 0);\n ctx.scale(-1, 1);\n ctx.drawImage(img, 0, 0, width, height);\n return canvas;\n};\n//# sourceMappingURL=flip-x.js.map","export const flipY = function (img) {\n // d d\n // q q\n const canvas = document.createElement('canvas');\n const width = img.width;\n const height = img.height;\n canvas.width = width;\n canvas.height = height * 2;\n const ctx = canvas.getContext('2d');\n // top image\n ctx.drawImage(img, 0, 0, width, height);\n // flipped bottom image\n ctx.translate(0, 2 * height);\n ctx.scale(1, -1);\n ctx.drawImage(img, 0, 0, width, height);\n return canvas;\n};\n//# sourceMappingURL=flip-y.js.map","export const flipXY = function (img) {\n // d b\n // q p\n const canvas = document.createElement('canvas');\n const width = img.width;\n const height = img.height;\n canvas.width = 2 * width;\n canvas.height = 2 * height;\n const ctx = canvas.getContext('2d');\n // top-left image\n ctx.drawImage(img, 0, 0, width, height);\n // xy-flipped bottom-right image\n ctx.setTransform(-1, 0, 0, -1, canvas.width, canvas.height);\n ctx.drawImage(img, 0, 0, width, height);\n // x-flipped top-right image\n ctx.setTransform(-1, 0, 0, 1, canvas.width, 0);\n ctx.drawImage(img, 0, 0, width, height);\n // y-flipped bottom-left image\n ctx.setTransform(1, 0, 0, -1, 0, canvas.height);\n ctx.drawImage(img, 0, 0, width, height);\n return canvas;\n};\n//# sourceMappingURL=flip-xy.js.map","import { Angle } from '../../geometry';\nexport const watermark = function (img, options) {\n const width = img.width;\n const height = img.height;\n const canvas = document.createElement('canvas');\n canvas.width = width * 3;\n canvas.height = height * 3;\n const ctx = canvas.getContext('2d');\n const angle = options.angle != null ? -options.angle : -20;\n const radians = Angle.toRad(angle);\n const stepX = canvas.width / 4;\n const stepY = canvas.height / 4;\n for (let i = 0; i < 4; i += 1) {\n for (let j = 0; j < 4; j += 1) {\n if ((i + j) % 2 > 0) {\n ctx.setTransform(1, 0, 0, 1, (2 * i - 1) * stepX, (2 * j - 1) * stepY);\n ctx.rotate(radians);\n ctx.drawImage(img, -width / 2, -height / 2, width, height);\n }\n }\n }\n return canvas;\n};\n//# sourceMappingURL=watermark.js.map","import { Registry } from '../registry';\nimport * as patterns from './main';\nexport var Background;\n(function (Background) {\n Background.presets = Object.assign({}, patterns);\n Background.presets['flip-x'] = patterns.flipX;\n Background.presets['flip-y'] = patterns.flipY;\n Background.presets['flip-xy'] = patterns.flipXY;\n Background.registry = Registry.create({\n type: 'background pattern',\n });\n Background.registry.register(Background.presets, true);\n})(Background || (Background = {}));\n//# sourceMappingURL=index.js.map","export const Config = {\n prefixCls: 'x6',\n autoInsertCSS: true,\n useCSSSelector: true,\n trackable: false,\n trackInfo: {},\n /**\n * Turn on/off collect information of user client.\n *\n * In order to serve the users better, x6 will send the URL and version\n * information back to the AntV server:https://kcart.alipay.com/web/bi.do\n *\n * Except for URL and G2 version information, no other information will\n * be collected.\n *\n * @param enabled Specifies if seed client information to AntV server.\n */\n track(enabled) {\n Config.trackable = enabled;\n },\n};\n//# sourceMappingURL=config.js.map","import { snapToGrid as snap } from '../geometry/util';\nimport { normalize } from '../registry/marker/util';\nimport { Config } from './config';\nexport var Util;\n(function (Util) {\n Util.snapToGrid = snap;\n Util.normalizeMarker = normalize;\n function prefix(suffix) {\n return `${Config.prefixCls}-${suffix}`;\n }\n Util.prefix = prefix;\n})(Util || (Util = {}));\n(function (Util) {\n function makeTree(parent, options, parentNode, collector = []) {\n const children = typeof options.children === 'function'\n ? options.children(parent)\n : parent[options.children || 'children'];\n if (!parentNode) {\n parentNode = options.createNode(parent); // eslint-disable-line\n collector.push(parentNode);\n }\n if (Array.isArray(children)) {\n children.forEach((child) => {\n const node = options.createNode(child);\n const edge = options.createEdge(parentNode, node);\n collector.push(node, edge);\n this.makeTree(child, options, node, collector);\n });\n }\n return collector;\n }\n Util.makeTree = makeTree;\n})(Util || (Util = {}));\n//# sourceMappingURL=util.js.map","/* eslint-disable */\n/**\n * Auto generated version file, do not modify it!\n */\nconst version = '1.32.0';\nexport { version };\n//# sourceMappingURL=version.js.map","import { Dom } from '../../util';\nimport { Util } from '../../global';\nconst defaultClassName = Util.prefix('highlighted');\nexport const className = {\n highlight(cellView, magnet, options) {\n const cls = (options && options.className) || defaultClassName;\n Dom.addClass(magnet, cls);\n },\n unhighlight(cellView, magnet, options) {\n const cls = (options && options.className) || defaultClassName;\n Dom.removeClass(magnet, cls);\n },\n};\n//# sourceMappingURL=class.js.map","import { Dom } from '../../util';\nimport { Util } from '../../global';\nconst className = Util.prefix('highlight-opacity');\nexport const opacity = {\n highlight(cellView, magnet) {\n Dom.addClass(magnet, className);\n },\n unhighlight(cellView, magnetEl) {\n Dom.removeClass(magnetEl, className);\n },\n};\n//# sourceMappingURL=opacity.js.map","import { ObjectExt, Dom, Vector } from '../../util';\nimport { Util } from '../../global';\nconst defaultOptions = {\n padding: 3,\n rx: 0,\n ry: 0,\n attrs: {\n 'stroke-width': 3,\n stroke: '#FEB663',\n },\n};\nexport const stroke = {\n highlight(cellView, magnet, options) {\n const id = Private.getHighlighterId(magnet, options);\n if (Private.hasCache(id)) {\n return;\n }\n // eslint-disable-next-line\n options = ObjectExt.defaultsDeep({}, options, defaultOptions);\n const magnetVel = Vector.create(magnet);\n let pathData;\n let magnetBBox;\n try {\n pathData = magnetVel.toPathData();\n }\n catch (error) {\n // Failed to get path data from magnet element.\n // Draw a rectangle around the entire cell view instead.\n magnetBBox = magnetVel.bbox(true /* without transforms */);\n pathData = Dom.rectToPathData(Object.assign(Object.assign({}, options), magnetBBox));\n }\n const path = Dom.createSvgElement('path');\n Dom.attr(path, Object.assign({ d: pathData, 'pointer-events': 'none', 'vector-effect': 'non-scaling-stroke', fill: 'none' }, (options.attrs ? Dom.kebablizeAttrs(options.attrs) : null)));\n // const highlightVel = v.create('path').attr()\n if (cellView.isEdgeElement(magnet)) {\n Dom.attr(path, 'd', cellView.getConnectionPathData());\n }\n else {\n let highlightMatrix = magnetVel.getTransformToElement(cellView.container);\n // Add padding to the highlight element.\n const padding = options.padding;\n if (padding) {\n if (magnetBBox == null) {\n magnetBBox = magnetVel.bbox(true);\n }\n const cx = magnetBBox.x + magnetBBox.width / 2;\n const cy = magnetBBox.y + magnetBBox.height / 2;\n magnetBBox = Dom.transformRectangle(magnetBBox, highlightMatrix);\n const width = Math.max(magnetBBox.width, 1);\n const height = Math.max(magnetBBox.height, 1);\n const sx = (width + padding) / width;\n const sy = (height + padding) / height;\n const paddingMatrix = Dom.createSVGMatrix({\n a: sx,\n b: 0,\n c: 0,\n d: sy,\n e: cx - sx * cx,\n f: cy - sy * cy,\n });\n highlightMatrix = highlightMatrix.multiply(paddingMatrix);\n }\n Dom.transform(path, highlightMatrix);\n }\n Dom.addClass(path, Util.prefix('highlight-stroke'));\n const cell = cellView.cell;\n const removeHandler = () => Private.removeHighlighter(id);\n cell.on('removed', removeHandler);\n if (cell.model) {\n cell.model.on('reseted', removeHandler);\n }\n cellView.container.appendChild(path);\n Private.setCache(id, path);\n },\n unhighlight(cellView, magnet, opt) {\n Private.removeHighlighter(Private.getHighlighterId(magnet, opt));\n },\n};\nvar Private;\n(function (Private) {\n function getHighlighterId(magnet, options) {\n Dom.ensureId(magnet);\n return magnet.id + JSON.stringify(options);\n }\n Private.getHighlighterId = getHighlighterId;\n const cache = {};\n function setCache(id, elem) {\n cache[id] = elem;\n }\n Private.setCache = setCache;\n function hasCache(id) {\n return cache[id] != null;\n }\n Private.hasCache = hasCache;\n function removeHighlighter(id) {\n const elem = cache[id];\n if (elem) {\n Dom.remove(elem);\n delete cache[id];\n }\n }\n Private.removeHighlighter = removeHighlighter;\n})(Private || (Private = {}));\n//# sourceMappingURL=stroke.js.map","import { Registry } from '../registry';\nimport * as highlighters from './main';\nexport var Highlighter;\n(function (Highlighter) {\n function check(name, highlighter) {\n if (typeof highlighter.highlight !== 'function') {\n throw new Error(`Highlighter '${name}' is missing required \\`highlight()\\` method`);\n }\n if (typeof highlighter.unhighlight !== 'function') {\n throw new Error(`Highlighter '${name}' is missing required \\`unhighlight()\\` method`);\n }\n }\n Highlighter.check = check;\n})(Highlighter || (Highlighter = {}));\n(function (Highlighter) {\n Highlighter.presets = highlighters;\n Highlighter.registry = Registry.create({\n type: 'highlighter',\n });\n Highlighter.registry.register(Highlighter.presets, true);\n})(Highlighter || (Highlighter = {}));\n//# sourceMappingURL=index.js.map","import { NumberExt } from '../../util';\nimport { Point } from '../../geometry';\nexport function normalizePoint(bbox, args = {}) {\n return new Point(NumberExt.normalizePercentage(args.x, bbox.width), NumberExt.normalizePercentage(args.y, bbox.height));\n}\nexport function toResult(point, angle, rawArgs) {\n return Object.assign({ angle, position: point.toJSON() }, rawArgs);\n}\n//# sourceMappingURL=util.js.map","import { normalizePoint, toResult } from './util';\nexport const absolute = (portsPositionArgs, elemBBox) => {\n return portsPositionArgs.map(({ x, y, angle }) => toResult(normalizePoint(elemBBox, { x, y }), angle || 0));\n};\n//# sourceMappingURL=absolute.js.map","import { Ellipse } from '../../geometry';\nimport { toResult } from './util';\nexport const ellipse = (portsPositionArgs, elemBBox, groupPositionArgs) => {\n const startAngle = groupPositionArgs.start || 0;\n const stepAngle = groupPositionArgs.step || 20;\n return ellipseLayout(portsPositionArgs, elemBBox, startAngle, (index, count) => (index + 0.5 - count / 2) * stepAngle);\n};\nexport const ellipseSpread = (portsPositionArgs, elemBBox, groupPositionArgs) => {\n const startAngle = groupPositionArgs.start || 0;\n const stepAngle = groupPositionArgs.step || 360 / portsPositionArgs.length;\n return ellipseLayout(portsPositionArgs, elemBBox, startAngle, (index) => {\n return index * stepAngle;\n });\n};\nfunction ellipseLayout(portsPositionArgs, elemBBox, startAngle, stepFn) {\n const center = elemBBox.getCenter();\n const start = elemBBox.getTopCenter();\n const ratio = elemBBox.width / elemBBox.height;\n const ellipse = Ellipse.fromRect(elemBBox);\n const count = portsPositionArgs.length;\n return portsPositionArgs.map((item, index) => {\n const angle = startAngle + stepFn(index, count);\n const p = start.clone().rotate(-angle, center).scale(ratio, 1, center);\n const theta = item.compensateRotate ? -ellipse.tangentTheta(p) : 0;\n if (item.dx || item.dy) {\n p.translate(item.dx || 0, item.dy || 0);\n }\n if (item.dr) {\n p.move(center, item.dr);\n }\n return toResult(p.round(), theta, item);\n });\n}\n//# sourceMappingURL=ellipse.js.map","var __rest = (this && this.__rest) || function (s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n t[p[i]] = s[p[i]];\n }\n return t;\n};\nimport { Line } from '../../geometry';\nimport { normalizePoint, toResult } from './util';\nexport const line = (portsPositionArgs, elemBBox, groupPositionArgs) => {\n const start = normalizePoint(elemBBox, groupPositionArgs.start || elemBBox.getOrigin());\n const end = normalizePoint(elemBBox, groupPositionArgs.end || elemBBox.getCorner());\n return lineLayout(portsPositionArgs, start, end, groupPositionArgs);\n};\nexport const left = (portsPositionArgs, elemBBox, groupPositionArgs) => {\n return lineLayout(portsPositionArgs, elemBBox.getTopLeft(), elemBBox.getBottomLeft(), groupPositionArgs);\n};\nexport const right = (portsPositionArgs, elemBBox, groupPositionArgs) => {\n return lineLayout(portsPositionArgs, elemBBox.getTopRight(), elemBBox.getBottomRight(), groupPositionArgs);\n};\nexport const top = (portsPositionArgs, elemBBox, groupPositionArgs) => {\n return lineLayout(portsPositionArgs, elemBBox.getTopLeft(), elemBBox.getTopRight(), groupPositionArgs);\n};\nexport const bottom = (portsPositionArgs, elemBBox, groupPositionArgs) => {\n return lineLayout(portsPositionArgs, elemBBox.getBottomLeft(), elemBBox.getBottomRight(), groupPositionArgs);\n};\nfunction lineLayout(portsPositionArgs, p1, p2, groupPositionArgs) {\n const line = new Line(p1, p2);\n const length = portsPositionArgs.length;\n return portsPositionArgs.map((_a, index) => {\n var { strict } = _a, offset = __rest(_a, [\"strict\"]);\n const ratio = strict || groupPositionArgs.strict\n ? (index + 1) / (length + 1)\n : (index + 0.5) / length;\n const p = line.pointAt(ratio);\n if (offset.dx || offset.dy) {\n p.translate(offset.dx || 0, offset.dy || 0);\n }\n return toResult(p.round(), 0, offset);\n });\n}\n//# sourceMappingURL=line.js.map","import { Registry } from '../registry';\nimport * as layouts from './main';\nexport var PortLayout;\n(function (PortLayout) {\n PortLayout.presets = layouts;\n PortLayout.registry = Registry.create({\n type: 'port layout',\n });\n PortLayout.registry.register(PortLayout.presets, true);\n})(PortLayout || (PortLayout = {}));\n//# sourceMappingURL=index.js.map","import { ObjectExt } from '../../util';\nconst defaults = {\n position: { x: 0, y: 0 },\n angle: 0,\n attrs: {\n '.': {\n y: '0',\n 'text-anchor': 'start',\n },\n },\n};\nexport function toResult(preset, args) {\n const { x, y, angle, attrs } = args || {};\n return ObjectExt.defaultsDeep({}, { angle, attrs, position: { x, y } }, preset, defaults);\n}\n//# sourceMappingURL=util.js.map","import { toResult } from './util';\nexport const manual = (portPosition, elemBBox, args) => toResult({ position: elemBBox.getTopLeft() }, args);\nexport const left = (portPosition, elemBBox, args) => toResult({\n position: { x: -15, y: 0 },\n attrs: { '.': { y: '.3em', 'text-anchor': 'end' } },\n}, args);\nexport const right = (portPosition, elemBBox, args) => toResult({\n position: { x: 15, y: 0 },\n attrs: { '.': { y: '.3em', 'text-anchor': 'start' } },\n}, args);\nexport const top = (portPosition, elemBBox, args) => toResult({\n position: { x: 0, y: -15 },\n attrs: { '.': { 'text-anchor': 'middle' } },\n}, args);\nexport const bottom = (portPosition, elemBBox, args) => toResult({\n position: { x: 0, y: 15 },\n attrs: { '.': { y: '.6em', 'text-anchor': 'middle' } },\n}, args);\n//# sourceMappingURL=side.js.map","import { toResult } from './util';\nexport const outside = (portPosition, elemBBox, args) => outsideLayout(portPosition, elemBBox, false, args);\nexport const outsideOriented = (portPosition, elemBBox, args) => outsideLayout(portPosition, elemBBox, true, args);\nexport const inside = (portPosition, elemBBox, args) => insideLayout(portPosition, elemBBox, false, args);\nexport const insideOriented = (portPosition, elemBBox, args) => insideLayout(portPosition, elemBBox, true, args);\nfunction outsideLayout(portPosition, elemBBox, autoOrient, args) {\n const offset = args.offset != null ? args.offset : 15;\n const angle = elemBBox.getCenter().theta(portPosition);\n const bboxAngles = getBBoxAngles(elemBBox);\n let y;\n let tx;\n let ty;\n let textAnchor;\n let orientAngle = 0;\n if (angle < bboxAngles[1] || angle > bboxAngles[2]) {\n y = '.3em';\n tx = offset;\n ty = 0;\n textAnchor = 'start';\n }\n else if (angle < bboxAngles[0]) {\n y = '0';\n tx = 0;\n ty = -offset;\n if (autoOrient) {\n orientAngle = -90;\n textAnchor = 'start';\n }\n else {\n textAnchor = 'middle';\n }\n }\n else if (angle < bboxAngles[3]) {\n y = '.3em';\n tx = -offset;\n ty = 0;\n textAnchor = 'end';\n }\n else {\n y = '.6em';\n tx = 0;\n ty = offset;\n if (autoOrient) {\n orientAngle = 90;\n textAnchor = 'start';\n }\n else {\n textAnchor = 'middle';\n }\n }\n return toResult({\n position: {\n x: Math.round(tx),\n y: Math.round(ty),\n },\n angle: orientAngle,\n attrs: {\n '.': {\n y,\n 'text-anchor': textAnchor,\n },\n },\n }, args);\n}\nfunction insideLayout(portPosition, elemBBox, autoOrient, args) {\n const offset = args.offset != null ? args.offset : 15;\n const angle = elemBBox.getCenter().theta(portPosition);\n const bboxAngles = getBBoxAngles(elemBBox);\n let y;\n let tx;\n let ty;\n let textAnchor;\n let orientAngle = 0;\n if (angle < bboxAngles[1] || angle > bboxAngles[2]) {\n y = '.3em';\n tx = -offset;\n ty = 0;\n textAnchor = 'end';\n }\n else if (angle < bboxAngles[0]) {\n y = '.6em';\n tx = 0;\n ty = offset;\n if (autoOrient) {\n orientAngle = 90;\n textAnchor = 'start';\n }\n else {\n textAnchor = 'middle';\n }\n }\n else if (angle < bboxAngles[3]) {\n y = '.3em';\n tx = offset;\n ty = 0;\n textAnchor = 'start';\n }\n else {\n y = '0em';\n tx = 0;\n ty = -offset;\n if (autoOrient) {\n orientAngle = -90;\n textAnchor = 'start';\n }\n else {\n textAnchor = 'middle';\n }\n }\n return toResult({\n position: {\n x: Math.round(tx),\n y: Math.round(ty),\n },\n angle: orientAngle,\n attrs: {\n '.': {\n y,\n 'text-anchor': textAnchor,\n },\n },\n }, args);\n}\nfunction getBBoxAngles(elemBBox) {\n const center = elemBBox.getCenter();\n const tl = center.theta(elemBBox.getTopLeft());\n const bl = center.theta(elemBBox.getBottomLeft());\n const br = center.theta(elemBBox.getBottomRight());\n const tr = center.theta(elemBBox.getTopRight());\n return [tl, tr, br, bl];\n}\n//# sourceMappingURL=inout.js.map","import { Point } from '../../geometry';\nimport { toResult } from './util';\nexport const radial = (portPosition, elemBBox, args) => radialLayout(portPosition.diff(elemBBox.getCenter()), false, args);\nexport const radialOriented = (portPosition, elemBBox, args) => radialLayout(portPosition.diff(elemBBox.getCenter()), true, args);\nfunction radialLayout(portCenterOffset, autoOrient, args) {\n const offset = args.offset != null ? args.offset : 20;\n const origin = new Point(0, 0);\n const angle = -portCenterOffset.theta(origin);\n const pos = portCenterOffset\n .clone()\n .move(origin, offset)\n .diff(portCenterOffset)\n .round();\n let y = '.3em';\n let textAnchor;\n let orientAngle = angle;\n if ((angle + 90) % 180 === 0) {\n textAnchor = autoOrient ? 'end' : 'middle';\n if (!autoOrient && angle === -270) {\n y = '0em';\n }\n }\n else if (angle > -270 && angle < -90) {\n textAnchor = 'start';\n orientAngle = angle - 180;\n }\n else {\n textAnchor = 'end';\n }\n return toResult({\n position: pos.round().toJSON(),\n angle: autoOrient ? orientAngle : 0,\n attrs: {\n '.': {\n y,\n 'text-anchor': textAnchor,\n },\n },\n }, args);\n}\n//# sourceMappingURL=radial.js.map","import { Registry } from '../registry';\nimport * as layouts from './main';\nexport var PortLabelLayout;\n(function (PortLabelLayout) {\n PortLabelLayout.presets = layouts;\n PortLabelLayout.registry = Registry.create({\n type: 'port label layout',\n });\n PortLabelLayout.registry.register(PortLabelLayout.presets, true);\n})(PortLabelLayout || (PortLabelLayout = {}));\n//# sourceMappingURL=index.js.map","import { FunctionExt } from '../util';\nexport class Events {\n constructor() {\n this.listeners = {};\n }\n on(name, handler, context) {\n if (handler == null) {\n return this;\n }\n if (!this.listeners[name]) {\n this.listeners[name] = [];\n }\n const cache = this.listeners[name];\n cache.push(handler, context);\n return this;\n }\n once(name, handler, context) {\n const cb = (...args) => {\n this.off(name, cb);\n return Private.call([handler, context], args);\n };\n return this.on(name, cb, this);\n }\n off(name, handler, context) {\n // remove all events.\n if (!(name || handler || context)) {\n this.listeners = {};\n return this;\n }\n const listeners = this.listeners;\n const names = name ? [name] : Object.keys(listeners);\n names.forEach((n) => {\n const cache = listeners[n];\n if (!cache) {\n return;\n }\n // remove all events with specified name.\n if (!(handler || context)) {\n delete listeners[n];\n return;\n }\n for (let i = cache.length - 2; i >= 0; i -= 2) {\n if (!((handler && cache[i] !== handler) ||\n (context && cache[i + 1] !== context))) {\n cache.splice(i, 2);\n }\n }\n });\n return this;\n }\n trigger(name, ...args) {\n let returned = true;\n if (name !== '*') {\n const list = this.listeners[name];\n if (list != null) {\n returned = Private.call([...list], args);\n }\n }\n const list = this.listeners['*'];\n if (list != null) {\n return FunctionExt.toAsyncBoolean([\n returned,\n Private.call([...list], [name, ...args]),\n ]);\n }\n return returned;\n }\n emit(name, ...args) {\n return this.trigger(name, ...args);\n }\n}\nvar Private;\n(function (Private) {\n function call(list, args) {\n const results = [];\n for (let i = 0; i < list.length; i += 2) {\n const handler = list[i];\n const context = list[i + 1];\n const params = Array.isArray(args) ? args : [args];\n const ret = FunctionExt.apply(handler, context, params);\n results.push(ret);\n }\n return FunctionExt.toAsyncBoolean(results);\n }\n Private.call = call;\n})(Private || (Private = {}));\n//# sourceMappingURL=events.js.map","import { NumberExt } from '../util/number';\nexport class Color {\n constructor(color, g, b, a) {\n if (color == null) {\n return this.set(255, 255, 255, 1);\n }\n if (typeof color === 'number') {\n return this.set(color, g, b, a);\n }\n if (typeof color === 'string') {\n return Color.fromString(color) || this;\n }\n if (Array.isArray(color)) {\n return this.set(color);\n }\n this.set(color.r, color.g, color.b, color.a == null ? 1 : color.a);\n }\n blend(start, end, weight) {\n this.set(start.r + (end.r - start.r) * weight, start.g + (end.g - start.g) * weight, start.b + (end.b - start.b) * weight, start.a + (end.a - start.a) * weight);\n }\n lighten(amount) {\n const rgba = Color.lighten(this.toArray(), amount);\n this.r = rgba[0];\n this.g = rgba[1];\n this.b = rgba[2];\n this.a = rgba[3];\n }\n darken(amount) {\n this.lighten(-amount);\n }\n set(arg0, arg1, arg2, arg3) {\n const r = Array.isArray(arg0) ? arg0[0] : arg0;\n const g = Array.isArray(arg0) ? arg0[1] : arg1;\n const b = Array.isArray(arg0) ? arg0[2] : arg2;\n const a = Array.isArray(arg0) ? arg0[3] : arg3;\n this.r = Math.round(NumberExt.clamp(r, 0, 255));\n this.g = Math.round(NumberExt.clamp(g, 0, 255));\n this.b = Math.round(NumberExt.clamp(b, 0, 255));\n this.a = a == null ? 1 : NumberExt.clamp(a, 0, 1);\n return this;\n }\n toHex() {\n const hex = ['r', 'g', 'b'].map((key) => {\n const str = this[key].toString(16);\n return str.length < 2 ? `0${str}` : str;\n });\n return `#${hex.join('')}`;\n }\n toRGBA() {\n return this.toArray();\n }\n toHSLA() {\n return Color.rgba2hsla(this.r, this.g, this.b, this.a);\n }\n toCSS(ignoreAlpha) {\n const rgb = `${this.r},${this.g},${this.b},`;\n return ignoreAlpha ? `rgb(${rgb})` : `rgba(${rgb},${this.a})`;\n }\n toGrey() {\n return Color.makeGrey(Math.round((this.r + this.g + this.b) / 3), this.a);\n }\n toArray() {\n return [this.r, this.g, this.b, this.a];\n }\n toString() {\n return this.toCSS();\n }\n}\n(function (Color) {\n function fromArray(arr) {\n return new Color(arr);\n }\n Color.fromArray = fromArray;\n function fromHex(color) {\n return new Color([...hex2rgb(color), 1]);\n }\n Color.fromHex = fromHex;\n function fromRGBA(color) {\n const matches = color.toLowerCase().match(/^rgba?\\(([\\s.,0-9]+)\\)/);\n if (matches) {\n const arr = matches[1].split(/\\s*,\\s*/).map((v) => parseInt(v, 10));\n return new Color(arr);\n }\n return null;\n }\n Color.fromRGBA = fromRGBA;\n function hue2rgb(m1, m2, h) {\n if (h < 0) {\n ++h; // eslint-disable-line\n }\n if (h > 1) {\n --h; // eslint-disable-line\n }\n const h6 = 6 * h;\n if (h6 < 1) {\n return m1 + (m2 - m1) * h6;\n }\n if (2 * h < 1) {\n return m2;\n }\n if (3 * h < 2) {\n return m1 + (m2 - m1) * (2 / 3 - h) * 6;\n }\n return m1;\n }\n function fromHSLA(color) {\n const matches = color.toLowerCase().match(/^hsla?\\(([\\s.,0-9]+)\\)/);\n if (matches) {\n const arr = matches[2].split(/\\s*,\\s*/);\n const h = (((parseFloat(arr[0]) % 360) + 360) % 360) / 360;\n const s = parseFloat(arr[1]) / 100;\n const l = parseFloat(arr[2]) / 100;\n const a = arr[3] == null ? 1 : parseInt(arr[3], 10);\n return new Color(hsla2rgba(h, s, l, a));\n }\n return null;\n }\n Color.fromHSLA = fromHSLA;\n function fromString(color) {\n if (color.startsWith('#')) {\n return fromHex(color);\n }\n if (color.startsWith('rgb')) {\n return fromRGBA(color);\n }\n const preset = Color.named[color];\n if (preset) {\n return fromHex(preset);\n }\n return fromHSLA(color);\n }\n Color.fromString = fromString;\n function makeGrey(g, a) {\n return Color.fromArray([g, g, g, a]);\n }\n Color.makeGrey = makeGrey;\n function rgba2hsla(arg0, arg1, arg2, arg3) {\n const r = Array.isArray(arg0) ? arg0[0] : arg0;\n const g = Array.isArray(arg0) ? arg0[1] : arg1;\n const b = Array.isArray(arg0) ? arg0[2] : arg2;\n const a = Array.isArray(arg0) ? arg0[3] : arg3;\n const max = Math.max(r, g, b);\n const min = Math.min(r, g, b);\n const l = (max + min) / 2;\n let h = 0;\n let s = 0;\n if (min !== max) {\n const d = max - min;\n s = l > 0.5 ? d / (2 - max - min) : d / (max + min);\n switch (max) {\n case r:\n h = (g - b) / d + (g < b ? 6 : 0);\n break;\n case g:\n h = (b - r) / d + 2;\n break;\n case b:\n h = (r - g) / d + 4;\n break;\n default:\n break;\n }\n h /= 6;\n }\n return [h, s, l, a == null ? 1 : a];\n }\n Color.rgba2hsla = rgba2hsla;\n function hsla2rgba(arg0, arg1, arg2, arg3) {\n const h = Array.isArray(arg0) ? arg0[0] : arg0;\n const s = Array.isArray(arg0) ? arg0[1] : arg1;\n const l = Array.isArray(arg0) ? arg0[2] : arg2;\n const a = Array.isArray(arg0) ? arg0[3] : arg3;\n const m2 = l <= 0.5 ? l * (s + 1) : l + s - l * s;\n const m1 = 2 * l - m2;\n return [\n hue2rgb(m1, m2, h + 1 / 3) * 256,\n hue2rgb(m1, m2, h) * 256,\n hue2rgb(m1, m2, h - 1 / 3) * 256,\n a == null ? 1 : a,\n ];\n }\n Color.hsla2rgba = hsla2rgba;\n function random(ignoreAlpha) {\n return new Color(Math.round(Math.random() * 256), Math.round(Math.random() * 256), Math.round(Math.random() * 256), ignoreAlpha ? undefined : parseFloat(Math.random().toFixed(2)));\n }\n Color.random = random;\n function randomHex() {\n const letters = '0123456789ABCDEF';\n let color = '#';\n for (let i = 0; i < 6; i += 1) {\n color += letters[Math.floor(Math.random() * 16)];\n }\n return color;\n }\n Color.randomHex = randomHex;\n function randomRGBA(ignoreAlpha) {\n return random(ignoreAlpha).toString();\n }\n Color.randomRGBA = randomRGBA;\n function invert(color, bw) {\n if (typeof color === 'string') {\n const pound = color[0] === '#';\n const [r, g, b] = hex2rgb(color);\n if (bw) {\n // http://stackoverflow.com/a/3943023/112731\n return r * 0.299 + g * 0.587 + b * 0.114 > 186 ? '#000000' : '#ffffff';\n }\n return `${pound ? '#' : ''}${rgb2hex(255 - r, 255 - g, 255 - b)}`;\n }\n const r = color[0];\n const g = color[1];\n const b = color[2];\n const a = color[3];\n if (bw) {\n return r * 0.299 + g * 0.587 + b * 0.114 > 186\n ? [0, 0, 0, a]\n : [255, 255, 255, a];\n }\n return [255 - r, 255 - g, 255 - b, a];\n }\n Color.invert = invert;\n function hex2rgb(hex) {\n const color = hex.indexOf('#') === 0 ? hex : `#${hex}`;\n let val = Number(`0x${color.substr(1)}`);\n if (!(color.length === 4 || color.length === 7) || Number.isNaN(val)) {\n throw new Error('Invalid hex color.');\n }\n const bits = color.length === 4 ? 4 : 8;\n const mask = (1 << bits) - 1;\n const bgr = ['b', 'g', 'r'].map(() => {\n const c = val & mask;\n val >>= bits;\n return bits === 4 ? 17 * c : c;\n });\n return [bgr[2], bgr[1], bgr[0]];\n }\n function rgb2hex(r, g, b) {\n const pad = (hex) => (hex.length < 2 ? `0${hex}` : hex);\n return `${pad(r.toString(16))}${pad(g.toString(16))}${pad(b.toString(16))}`;\n }\n function lighten(color, amt) {\n return lum(color, amt);\n }\n Color.lighten = lighten;\n function darken(color, amt) {\n return lum(color, -amt);\n }\n Color.darken = darken;\n function lum(color, amt) {\n if (typeof color === 'string') {\n const pound = color[0] === '#';\n const num = parseInt(pound ? color.substr(1) : color, 16);\n const r = NumberExt.clamp((num >> 16) + amt, 0, 255);\n const g = NumberExt.clamp(((num >> 8) & 0x00ff) + amt, 0, 255);\n const b = NumberExt.clamp((num & 0x0000ff) + amt, 0, 255);\n return `${pound ? '#' : ''}${(b | (g << 8) | (r << 16)).toString(16)}`;\n }\n const hex = rgb2hex(color[0], color[1], color[2]);\n const arr = hex2rgb(lum(hex, amt));\n return [arr[0], arr[1], arr[2], color[3]];\n }\n})(Color || (Color = {}));\n(function (Color) {\n Color.named = {\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 burntsienna: '#ea7e5d',\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 gold: '#ffd700',\n goldenrod: '#daa520',\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 lavender: '#e6e6fa',\n lavenderblush: '#fff0f5',\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})(Color || (Color = {}));\n//# sourceMappingURL=color.js.map","/* eslint-disable no-underscore-dangle */\nexport class Disposable {\n get disposed() {\n return this._disposed === true;\n }\n dispose() {\n this._disposed = true;\n }\n}\n(function (Disposable) {\n function dispose() {\n return (target, methodName, descriptor) => {\n const raw = descriptor.value;\n const proto = target.__proto__; // eslint-disable-line\n descriptor.value = function () {\n if (this.disposed) {\n return;\n }\n raw.call(this);\n proto.dispose.call(this);\n };\n };\n }\n Disposable.dispose = dispose;\n})(Disposable || (Disposable = {}));\n/**\n * A disposable object which delegates to a callback function.\n */\nexport class DisposableDelegate {\n /**\n * Construct a new disposable delegate.\n *\n * @param callback - The callback function to invoke on dispose.\n */\n constructor(callback) {\n this.callback = callback;\n }\n /**\n * Test whether the delegate has been disposed.\n */\n get disposed() {\n return !this.callback;\n }\n /**\n * Dispose of the delegate and invoke the callback function.\n */\n dispose() {\n if (!this.callback) {\n return;\n }\n const callback = this.callback;\n this.callback = null;\n callback();\n }\n}\n/**\n * An object which manages a collection of disposable items.\n */\nexport class DisposableSet {\n constructor() {\n this.isDisposed = false; // eslint-disable-line:variable-name\n this.items = new Set();\n }\n /**\n * Test whether the set has been disposed.\n */\n get disposed() {\n return this.isDisposed;\n }\n /**\n * Dispose of the set and the items it contains.\n *\n * #### Notes\n * Items are disposed in the order they are added to the set.\n */\n dispose() {\n if (this.isDisposed) {\n return;\n }\n this.isDisposed = true;\n this.items.forEach((item) => {\n item.dispose();\n });\n this.items.clear();\n }\n /**\n * Test whether the set contains a specific item.\n *\n * @param item - The item of interest.\n *\n * @returns `true` if the set contains the item, `false` otherwise.\n */\n contains(item) {\n return this.items.has(item);\n }\n /**\n * Add a disposable item to the set.\n *\n * @param item - The item to add to the set.\n *\n * #### Notes\n * If the item is already contained in the set, this is a no-op.\n */\n add(item) {\n this.items.add(item);\n }\n /**\n * Remove a disposable item from the set.\n *\n * @param item - The item to remove from the set.\n *\n * #### Notes\n * If the item is not contained in the set, this is a no-op.\n */\n remove(item) {\n this.items.delete(item);\n }\n /**\n * Remove all items from the set.\n */\n clear() {\n this.items.clear();\n }\n}\n(function (DisposableSet) {\n /**\n * Create a disposable set from an iterable of items.\n *\n * @param items - The iterable or array-like object of interest.\n *\n * @returns A new disposable initialized with the given items.\n */\n function from(items) {\n const set = new DisposableSet();\n items.forEach((item) => {\n set.add(item);\n });\n return set;\n }\n DisposableSet.from = from;\n})(DisposableSet || (DisposableSet = {}));\n//# sourceMappingURL=disposable.js.map","import { ObjectExt } from '../util';\nimport { Events } from './events';\nimport { Disposable } from './disposable';\nexport class Basecoat extends Events {\n}\n(function (Basecoat) {\n Basecoat.dispose = Disposable.dispose;\n})(Basecoat || (Basecoat = {}));\nObjectExt.applyMixins(Basecoat, Disposable);\n//# sourceMappingURL=basecoat.js.map","/* eslint-disable no-underscore-dangle */\nimport { Basecoat } from './basecoat';\nexport class Disablable extends Basecoat {\n get disabled() {\n return this._disabled === true;\n }\n enable() {\n delete this._disabled;\n }\n disable() {\n this._disabled = true;\n }\n}\n//# sourceMappingURL=disablable.js.map","var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Disposable } from './disposable';\nexport class Dictionary extends Disposable {\n constructor() {\n super();\n this.clear();\n }\n clear() {\n this.map = new WeakMap();\n this.arr = [];\n }\n has(key) {\n return this.map.has(key);\n }\n get(key) {\n return this.map.get(key);\n }\n set(key, value) {\n this.map.set(key, value);\n this.arr.push(key);\n }\n delete(key) {\n const index = this.arr.indexOf(key);\n if (index >= 0) {\n this.arr.splice(index, 1);\n }\n const ret = this.map.get(key);\n this.map.delete(key);\n return ret;\n }\n each(iterator) {\n this.arr.forEach((key) => {\n const value = this.map.get(key);\n iterator(value, key);\n });\n }\n dispose() {\n this.clear();\n }\n}\n__decorate([\n Disposable.dispose()\n], Dictionary.prototype, \"dispose\", null);\n//# sourceMappingURL=dictionary.js.map","import { PriorityQueue } from './priorityqueue';\nexport var Dijkstra;\n(function (Dijkstra) {\n function run(adjacencyList, source, weight = (u, v) => 1) {\n const dist = {};\n const previous = {};\n const scanned = {};\n const queue = new PriorityQueue();\n dist[source] = 0;\n Object.keys(adjacencyList).forEach((v) => {\n if (v !== source) {\n dist[v] = Infinity;\n }\n queue.insert(dist[v], v, v);\n });\n while (!queue.isEmpty()) {\n const u = queue.remove();\n scanned[u] = true;\n const neighbours = adjacencyList[u] || [];\n for (let i = 0; i < neighbours.length; i += 1) {\n const v = neighbours[i];\n if (!scanned[v]) {\n const alt = dist[u] + weight(u, v);\n if (alt < dist[v]) {\n dist[v] = alt;\n previous[v] = u;\n queue.updatePriority(v, alt);\n }\n }\n }\n }\n return previous;\n }\n Dijkstra.run = run;\n})(Dijkstra || (Dijkstra = {}));\n//# sourceMappingURL=dijkstra.js.map","export var Timing;\n(function (Timing) {\n Timing.linear = (t) => t;\n Timing.quad = (t) => t * t;\n Timing.cubic = (t) => t * t * t;\n Timing.inout = (t) => {\n if (t <= 0) {\n return 0;\n }\n if (t >= 1) {\n return 1;\n }\n const t2 = t * t;\n const t3 = t2 * t;\n return 4 * (t < 0.5 ? t3 : 3 * (t - t2) + t3 - 0.75);\n };\n Timing.exponential = (t) => {\n return Math.pow(2, 10 * (t - 1)); // eslint-disable-line\n };\n Timing.bounce = ((t) => {\n // eslint-disable-next-line\n for (let a = 0, b = 1; 1; a += b, b /= 2) {\n if (t >= (7 - 4 * a) / 11) {\n const q = (11 - 6 * a - 11 * t) / 4;\n return -q * q + b * b;\n }\n }\n });\n})(Timing || (Timing = {}));\n(function (Timing) {\n Timing.decorators = {\n reverse(f) {\n return (t) => 1 - f(1 - t);\n },\n reflect(f) {\n return (t) => 0.5 * (t < 0.5 ? f(2 * t) : 2 - f(2 - 2 * t));\n },\n clamp(f, n = 0, x = 1) {\n return (t) => {\n const r = f(t);\n return r < n ? n : r > x ? x : r;\n };\n },\n back(s = 1.70158) {\n return (t) => t * t * ((s + 1) * t - s);\n },\n elastic(x = 1.5) {\n return (t) => Math.pow(2, 10 * (t - 1)) * Math.cos(((20 * Math.PI * x) / 3) * t); // eslint-disable-line\n },\n };\n})(Timing || (Timing = {}));\n(function (Timing) {\n // Slight acceleration from zero to full speed\n function easeInSine(t) {\n return -1 * Math.cos(t * (Math.PI / 2)) + 1;\n }\n Timing.easeInSine = easeInSine;\n // Slight deceleration at the end\n function easeOutSine(t) {\n return Math.sin(t * (Math.PI / 2));\n }\n Timing.easeOutSine = easeOutSine;\n // Slight acceleration at beginning and slight deceleration at end\n function easeInOutSine(t) {\n return -0.5 * (Math.cos(Math.PI * t) - 1);\n }\n Timing.easeInOutSine = easeInOutSine;\n // Accelerating from zero velocity\n function easeInQuad(t) {\n return t * t;\n }\n Timing.easeInQuad = easeInQuad;\n // Decelerating to zero velocity\n function easeOutQuad(t) {\n return t * (2 - t);\n }\n Timing.easeOutQuad = easeOutQuad;\n // Acceleration until halfway, then deceleration\n function easeInOutQuad(t) {\n return t < 0.5 ? 2 * t * t : -1 + (4 - 2 * t) * t;\n }\n Timing.easeInOutQuad = easeInOutQuad;\n // Accelerating from zero velocity\n function easeInCubic(t) {\n return t * t * t;\n }\n Timing.easeInCubic = easeInCubic;\n // Decelerating to zero velocity\n function easeOutCubic(t) {\n const t1 = t - 1;\n return t1 * t1 * t1 + 1;\n }\n Timing.easeOutCubic = easeOutCubic;\n // Acceleration until halfway, then deceleration\n function easeInOutCubic(t) {\n return t < 0.5 ? 4 * t * t * t : (t - 1) * (2 * t - 2) * (2 * t - 2) + 1;\n }\n Timing.easeInOutCubic = easeInOutCubic;\n // Accelerating from zero velocity\n function easeInQuart(t) {\n return t * t * t * t;\n }\n Timing.easeInQuart = easeInQuart;\n // Decelerating to zero velocity\n function easeOutQuart(t) {\n const t1 = t - 1;\n return 1 - t1 * t1 * t1 * t1;\n }\n Timing.easeOutQuart = easeOutQuart;\n // Acceleration until halfway, then deceleration\n function easeInOutQuart(t) {\n const t1 = t - 1;\n return t < 0.5 ? 8 * t * t * t * t : 1 - 8 * t1 * t1 * t1 * t1;\n }\n Timing.easeInOutQuart = easeInOutQuart;\n // Accelerating from zero velocity\n function easeInQuint(t) {\n return t * t * t * t * t;\n }\n Timing.easeInQuint = easeInQuint;\n // Decelerating to zero velocity\n function easeOutQuint(t) {\n const t1 = t - 1;\n return 1 + t1 * t1 * t1 * t1 * t1;\n }\n Timing.easeOutQuint = easeOutQuint;\n // Acceleration until halfway, then deceleration\n function easeInOutQuint(t) {\n const t1 = t - 1;\n return t < 0.5 ? 16 * t * t * t * t * t : 1 + 16 * t1 * t1 * t1 * t1 * t1;\n }\n Timing.easeInOutQuint = easeInOutQuint;\n // Accelerate exponentially until finish\n function easeInExpo(t) {\n if (t === 0) {\n return 0;\n }\n return Math.pow(2, 10 * (t - 1)); // eslint-disable-line\n }\n Timing.easeInExpo = easeInExpo;\n // Initial exponential acceleration slowing to stop\n function easeOutExpo(t) {\n if (t === 1) {\n return 1;\n }\n return -Math.pow(2, -10 * t) + 1; // eslint-disable-line\n }\n Timing.easeOutExpo = easeOutExpo;\n // Exponential acceleration and deceleration\n function easeInOutExpo(t) {\n if (t === 0 || t === 1) {\n return t;\n }\n const scaledTime = t * 2;\n const scaledTime1 = scaledTime - 1;\n if (scaledTime < 1) {\n return 0.5 * Math.pow(2, 10 * scaledTime1); // eslint-disable-line\n }\n return 0.5 * (-Math.pow(2, -10 * scaledTime1) + 2); // eslint-disable-line\n }\n Timing.easeInOutExpo = easeInOutExpo;\n // Increasing velocity until stop\n function easeInCirc(t) {\n const scaledTime = t / 1;\n return -1 * (Math.sqrt(1 - scaledTime * t) - 1);\n }\n Timing.easeInCirc = easeInCirc;\n // Start fast, decreasing velocity until stop\n function easeOutCirc(t) {\n const t1 = t - 1;\n return Math.sqrt(1 - t1 * t1);\n }\n Timing.easeOutCirc = easeOutCirc;\n // Fast increase in velocity, fast decrease in velocity\n function easeInOutCirc(t) {\n const scaledTime = t * 2;\n const scaledTime1 = scaledTime - 2;\n if (scaledTime < 1) {\n return -0.5 * (Math.sqrt(1 - scaledTime * scaledTime) - 1);\n }\n return 0.5 * (Math.sqrt(1 - scaledTime1 * scaledTime1) + 1);\n }\n Timing.easeInOutCirc = easeInOutCirc;\n // Slow movement backwards then fast snap to finish\n function easeInBack(t, magnitude = 1.70158) {\n return t * t * ((magnitude + 1) * t - magnitude);\n }\n Timing.easeInBack = easeInBack;\n // Fast snap to backwards point then slow resolve to finish\n function easeOutBack(t, magnitude = 1.70158) {\n const scaledTime = t / 1 - 1;\n return (scaledTime * scaledTime * ((magnitude + 1) * scaledTime + magnitude) + 1);\n }\n Timing.easeOutBack = easeOutBack;\n // Slow movement backwards, fast snap to past finish, slow resolve to finish\n function easeInOutBack(t, magnitude = 1.70158) {\n const scaledTime = t * 2;\n const scaledTime2 = scaledTime - 2;\n const s = magnitude * 1.525;\n if (scaledTime < 1) {\n return 0.5 * scaledTime * scaledTime * ((s + 1) * scaledTime - s);\n }\n return 0.5 * (scaledTime2 * scaledTime2 * ((s + 1) * scaledTime2 + s) + 2);\n }\n Timing.easeInOutBack = easeInOutBack;\n // Bounces slowly then quickly to finish\n function easeInElastic(t, magnitude = 0.7) {\n if (t === 0 || t === 1) {\n return t;\n }\n const scaledTime = t / 1;\n const scaledTime1 = scaledTime - 1;\n const p = 1 - magnitude;\n const s = (p / (2 * Math.PI)) * Math.asin(1);\n return -(Math.pow(2, 10 * scaledTime1) * // eslint-disable-line\n Math.sin(((scaledTime1 - s) * (2 * Math.PI)) / p));\n }\n Timing.easeInElastic = easeInElastic;\n // Fast acceleration, bounces to zero\n function easeOutElastic(t, magnitude = 0.7) {\n const p = 1 - magnitude;\n const scaledTime = t * 2;\n if (t === 0 || t === 1) {\n return t;\n }\n const s = (p / (2 * Math.PI)) * Math.asin(1);\n return (Math.pow(2, -10 * scaledTime) * // eslint-disable-line\n Math.sin(((scaledTime - s) * (2 * Math.PI)) / p) +\n 1);\n }\n Timing.easeOutElastic = easeOutElastic;\n // Slow start and end, two bounces sandwich a fast motion\n function easeInOutElastic(t, magnitude = 0.65) {\n const p = 1 - magnitude;\n if (t === 0 || t === 1) {\n return t;\n }\n const scaledTime = t * 2;\n const scaledTime1 = scaledTime - 1;\n const s = (p / (2 * Math.PI)) * Math.asin(1);\n if (scaledTime < 1) {\n return (-0.5 *\n (Math.pow(2, 10 * scaledTime1) * // eslint-disable-line\n Math.sin(((scaledTime1 - s) * (2 * Math.PI)) / p)));\n }\n return (Math.pow(2, -10 * scaledTime1) * // eslint-disable-line\n Math.sin(((scaledTime1 - s) * (2 * Math.PI)) / p) *\n 0.5 +\n 1);\n }\n Timing.easeInOutElastic = easeInOutElastic;\n // Bounce to completion\n function easeOutBounce(t) {\n const scaledTime = t / 1;\n if (scaledTime < 1 / 2.75) {\n return 7.5625 * scaledTime * scaledTime;\n }\n if (scaledTime < 2 / 2.75) {\n const scaledTime2 = scaledTime - 1.5 / 2.75;\n return 7.5625 * scaledTime2 * scaledTime2 + 0.75;\n }\n if (scaledTime < 2.5 / 2.75) {\n const scaledTime2 = scaledTime - 2.25 / 2.75;\n return 7.5625 * scaledTime2 * scaledTime2 + 0.9375;\n }\n {\n const scaledTime2 = scaledTime - 2.625 / 2.75;\n return 7.5625 * scaledTime2 * scaledTime2 + 0.984375;\n }\n }\n Timing.easeOutBounce = easeOutBounce;\n // Bounce increasing in velocity until completion\n function easeInBounce(t) {\n return 1 - easeOutBounce(1 - t);\n }\n Timing.easeInBounce = easeInBounce;\n // Bounce in and bounce out\n function easeInOutBounce(t) {\n if (t < 0.5) {\n return easeInBounce(t * 2) * 0.5;\n }\n return easeOutBounce(t * 2 - 1) * 0.5 + 0.5;\n }\n Timing.easeInOutBounce = easeInOutBounce;\n})(Timing || (Timing = {}));\n//# sourceMappingURL=timing.js.map","export var Interp;\n(function (Interp) {\n Interp.number = (a, b) => {\n const d = b - a;\n return (t) => {\n return a + d * t;\n };\n };\n Interp.object = (a, b) => {\n const keys = Object.keys(a);\n return (t) => {\n const ret = {};\n for (let i = keys.length - 1; i !== -1; i -= 1) {\n const key = keys[i];\n ret[key] = a[key] + (b[key] - a[key]) * t;\n }\n return ret;\n };\n };\n Interp.unit = (a, b) => {\n const reg = /(-?[0-9]*.[0-9]*)(px|em|cm|mm|in|pt|pc|%)/;\n const ma = reg.exec(a);\n const mb = reg.exec(b);\n const pb = mb ? mb[1] : '';\n const aa = ma ? +ma[1] : 0;\n const bb = mb ? +mb[1] : 0;\n const index = pb.indexOf('.');\n const precision = index > 0 ? pb[1].length - index - 1 : 0;\n const d = bb - aa;\n const u = ma ? ma[2] : '';\n return (t) => {\n return (aa + d * t).toFixed(precision) + u;\n };\n };\n Interp.color = (a, b) => {\n const ca = parseInt(a.slice(1), 16);\n const cb = parseInt(b.slice(1), 16);\n const ra = ca & 0x0000ff;\n const rd = (cb & 0x0000ff) - ra;\n const ga = ca & 0x00ff00;\n const gd = (cb & 0x00ff00) - ga;\n const ba = ca & 0xff0000;\n const bd = (cb & 0xff0000) - ba;\n return (t) => {\n const r = (ra + rd * t) & 0x000000ff;\n const g = (ga + gd * t) & 0x0000ff00;\n const b = (ba + bd * t) & 0x00ff0000;\n return `#${((1 << 24) | r | g | b).toString(16).slice(1)}`;\n };\n };\n})(Interp || (Interp = {}));\n//# sourceMappingURL=interp.js.map","import { Config } from '../global/config';\nimport { StringExt, FunctionExt } from '../util';\nexport var LocalStorage;\n(function (LocalStorage) {\n const prefix = `${Config.prefixCls}.storage`;\n function insert(collection, doc, cb) {\n const id = doc.id || StringExt.uniqueId('doc-');\n const index = loadIndex(collection);\n index.keys.push(id);\n setItem(docKey(collection, id), doc);\n setItem(indexKey(collection), index);\n callback(cb, null, Object.assign(Object.assign({}, doc), { id }));\n }\n LocalStorage.insert = insert;\n function find(collection, query, cb) {\n const index = loadIndex(collection);\n const docs = [];\n if (query == null) {\n index.keys.forEach((id) => {\n const doc = getItem(docKey(collection, id));\n if (!doc) {\n callback(cb, new Error(`No document found for an ID '${id}' from index.`));\n }\n else {\n docs.push(doc);\n }\n });\n callback(cb, null, docs);\n }\n else if (query.id) {\n const doc = getItem(docKey(collection, query.id));\n callback(cb, null, doc ? [doc] : []);\n }\n else {\n callback(cb, null, []);\n }\n }\n LocalStorage.find = find;\n function remove(collection, query, cb) {\n const index = loadIndex(collection);\n if (query == null) {\n index.keys.forEach((id) => {\n localStorage.removeItem(docKey(collection, id));\n });\n localStorage.removeItem(indexKey(collection));\n callback(cb, null);\n }\n else if (query.id) {\n const idx = index.keys.indexOf(query.id);\n if (idx >= 0) {\n index.keys.splice(idx, 1);\n }\n localStorage.removeItem(docKey(collection, query.id));\n setItem(indexKey(collection), index);\n callback(cb, null);\n }\n }\n LocalStorage.remove = remove;\n // util\n // ----\n function callback(cb, err, ret) {\n if (cb) {\n FunctionExt.defer(() => {\n cb(err, ret);\n });\n }\n }\n function setItem(key, item) {\n localStorage.setItem(key, JSON.stringify(item));\n }\n function getItem(key) {\n const item = localStorage.getItem(key);\n return item ? JSON.parse(item) : null;\n }\n function loadIndex(collection) {\n const index = getItem(indexKey(collection));\n if (index) {\n if (index.keys == null) {\n index.keys = [];\n }\n return index;\n }\n return { keys: [] };\n }\n function docKey(collection, id) {\n return `${prefix}.${collection}.docs.${id}`;\n }\n function indexKey(collection) {\n return `${prefix}.${collection}.index`;\n }\n})(LocalStorage || (LocalStorage = {}));\n//# sourceMappingURL=localstorage.js.map","import JQuery from 'jquery';\nimport { Dom } from '../util';\nimport { Basecoat } from '../common';\nimport { Util, Config } from '../global';\nexport class View extends Basecoat {\n constructor() {\n super();\n this.cid = Private.uniqueId();\n View.views[this.cid] = this;\n }\n get priority() {\n return 2;\n }\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n confirmUpdate(flag, options) {\n return 0;\n }\n $(elem) {\n return View.$(elem);\n }\n empty(elem = this.container) {\n this.$(elem).empty();\n return this;\n }\n unmount(elem = this.container) {\n this.$(elem).remove();\n return this;\n }\n remove(elem = this.container) {\n if (elem === this.container) {\n this.removeEventListeners(document);\n this.onRemove();\n delete View.views[this.cid];\n }\n this.unmount(elem);\n return this;\n }\n onRemove() { }\n setClass(className, elem = this.container) {\n elem.classList.value = Array.isArray(className)\n ? className.join(' ')\n : className;\n }\n addClass(className, elem = this.container) {\n this.$(elem).addClass(Array.isArray(className) ? className.join(' ') : className);\n return this;\n }\n removeClass(className, elem = this.container) {\n this.$(elem).removeClass(Array.isArray(className) ? className.join(' ') : className);\n return this;\n }\n setStyle(style, elem = this.container) {\n this.$(elem).css(style);\n return this;\n }\n setAttrs(attrs, elem = this.container) {\n if (attrs != null && elem != null) {\n if (elem instanceof SVGElement) {\n Dom.attr(elem, attrs);\n }\n else {\n this.$(elem).attr(attrs);\n }\n }\n return this;\n }\n /**\n * Returns the value of the specified attribute of `node`.\n *\n * If the node does not set a value for attribute, start recursing up\n * the DOM tree from node to lookup for attribute at the ancestors of\n * node. If the recursion reaches CellView's root node and attribute\n * is not found even there, return `null`.\n */\n findAttr(attrName, elem = this.container) {\n let current = elem;\n while (current && current.nodeType === 1) {\n const value = current.getAttribute(attrName);\n if (value != null) {\n return value;\n }\n if (current === this.container) {\n return null;\n }\n current = current.parentNode;\n }\n return null;\n }\n find(selector, rootElem = this.container, selectors = this.selectors) {\n return View.find(selector, rootElem, selectors).elems;\n }\n findOne(selector, rootElem = this.container, selectors = this.selectors) {\n const nodes = this.find(selector, rootElem, selectors);\n return nodes.length > 0 ? nodes[0] : null;\n }\n findByAttr(attrName, elem = this.container) {\n let node = elem;\n while (node && node.getAttribute) {\n const val = node.getAttribute(attrName);\n if ((val != null || node === this.container) && val !== 'false') {\n return node;\n }\n node = node.parentNode;\n }\n // If the overall cell has set `magnet === false`, then returns\n // `null` to announce there is no magnet found for this cell.\n // This is especially useful to set on cells that have 'ports'.\n // In this case, only the ports have set `magnet === true` and the\n // overall element has `magnet === false`.\n return null;\n }\n getSelector(elem, prevSelector) {\n let selector;\n if (elem === this.container) {\n if (typeof prevSelector === 'string') {\n selector = `> ${prevSelector}`;\n }\n return selector;\n }\n if (elem) {\n const nth = Dom.index(elem) + 1;\n selector = `${elem.tagName.toLowerCase()}:nth-child(${nth})`;\n if (prevSelector) {\n selector += ` > ${prevSelector}`;\n }\n selector = this.getSelector(elem.parentNode, selector);\n }\n return selector;\n }\n prefixClassName(className) {\n return Util.prefix(className);\n }\n delegateEvents(events, append) {\n if (events == null) {\n return this;\n }\n if (!append) {\n this.undelegateEvents();\n }\n const splitter = /^(\\S+)\\s*(.*)$/;\n Object.keys(events).forEach((key) => {\n const match = key.match(splitter);\n if (match == null) {\n return;\n }\n const method = this.getEventHandler(events[key]);\n if (typeof method === 'function') {\n this.delegateEvent(match[1], match[2], method);\n }\n });\n return this;\n }\n undelegateEvents() {\n this.$(this.container).off(this.getEventNamespace());\n return this;\n }\n delegateDocumentEvents(events, data) {\n this.addEventListeners(document, events, data);\n return this;\n }\n undelegateDocumentEvents() {\n this.removeEventListeners(document);\n return this;\n }\n delegateEvent(eventName, selector, listener) {\n this.$(this.container).on(eventName + this.getEventNamespace(), selector, listener);\n return this;\n }\n undelegateEvent(eventName, selector, listener) {\n const name = eventName + this.getEventNamespace();\n if (selector == null) {\n this.$(this.container).off(name);\n }\n else if (typeof selector === 'string') {\n this.$(this.container).off(name, selector, listener);\n }\n else {\n this.$(this.container).off(name, selector);\n }\n return this;\n }\n addEventListeners(elem, events, data) {\n if (events == null) {\n return this;\n }\n const ns = this.getEventNamespace();\n const $elem = this.$(elem);\n Object.keys(events).forEach((eventName) => {\n const method = this.getEventHandler(events[eventName]);\n if (typeof method === 'function') {\n $elem.on(eventName + ns, data, method);\n }\n });\n return this;\n }\n removeEventListeners(elem) {\n if (elem != null) {\n this.$(elem).off(this.getEventNamespace());\n }\n return this;\n }\n getEventNamespace() {\n return `.${Config.prefixCls}-event-${this.cid}`;\n }\n // eslint-disable-next-line\n getEventHandler(handler) {\n // eslint-disable-next-line\n let method;\n if (typeof handler === 'string') {\n const fn = this[handler];\n if (typeof fn === 'function') {\n method = (...args) => fn.call(this, ...args);\n }\n }\n else {\n method = (...args) => handler.call(this, ...args);\n }\n return method;\n }\n getEventTarget(e, options = {}) {\n // Touchmove/Touchend event's target is not reflecting the element\n // under the coordinates as mousemove does.\n // It holds the element when a touchstart triggered.\n const { target, type, clientX = 0, clientY = 0 } = e;\n if (options.fromPoint || type === 'touchmove' || type === 'touchend') {\n return document.elementFromPoint(clientX, clientY);\n }\n return target;\n }\n stopPropagation(e) {\n this.setEventData(e, { propagationStopped: true });\n return this;\n }\n isPropagationStopped(e) {\n return this.getEventData(e).propagationStopped === true;\n }\n getEventData(e) {\n return this.eventData(e);\n }\n setEventData(e, data) {\n return this.eventData(e, data);\n }\n eventData(e, data) {\n if (e == null) {\n throw new TypeError('Event object required');\n }\n let currentData = e.data;\n const key = `__${this.cid}__`;\n // get\n if (data == null) {\n if (currentData == null) {\n return {};\n }\n return currentData[key] || {};\n }\n // set\n if (currentData == null) {\n currentData = e.data = {};\n }\n if (currentData[key] == null) {\n currentData[key] = Object.assign({}, data);\n }\n else {\n currentData[key] = Object.assign(Object.assign({}, currentData[key]), data);\n }\n return currentData[key];\n }\n normalizeEvent(evt) {\n return View.normalizeEvent(evt);\n }\n}\n(function (View) {\n function $(elem) {\n return JQuery(elem);\n }\n View.$ = $;\n function createElement(tagName, isSvgElement) {\n return isSvgElement\n ? Dom.createSvgElement(tagName || 'g')\n : Dom.createElementNS(tagName || 'div');\n }\n View.createElement = createElement;\n function find(selector, rootElem, selectors) {\n if (!selector || selector === '.') {\n return { elems: [rootElem] };\n }\n if (selectors) {\n const nodes = selectors[selector];\n if (nodes) {\n return { elems: Array.isArray(nodes) ? nodes : [nodes] };\n }\n }\n if (Config.useCSSSelector) {\n return {\n isCSSSelector: true,\n // elems: Array.prototype.slice.call(rootElem.querySelectorAll(selector)),\n elems: $(rootElem).find(selector).toArray(),\n };\n }\n return { elems: [] };\n }\n View.find = find;\n function normalizeEvent(evt) {\n let normalizedEvent = evt;\n const originalEvent = evt.originalEvent;\n const touchEvt = originalEvent &&\n originalEvent.changedTouches &&\n originalEvent.changedTouches[0];\n if (touchEvt) {\n // eslint-disable-next-line no-restricted-syntax\n for (const key in evt) {\n // copy all the properties from the input event that are not\n // defined on the touch event (functions included).\n if (touchEvt[key] === undefined) {\n touchEvt[key] = evt[key];\n }\n }\n normalizedEvent = touchEvt;\n }\n // IE: evt.target could be set to SVGElementInstance for SVGUseElement\n const target = normalizedEvent.target;\n if (target) {\n const useElement = target.correspondingUseElement;\n if (useElement) {\n normalizedEvent.target = useElement;\n }\n }\n return normalizedEvent;\n }\n View.normalizeEvent = normalizeEvent;\n})(View || (View = {}));\n(function (View) {\n View.views = {};\n function getView(cid) {\n return View.views[cid] || null;\n }\n View.getView = getView;\n})(View || (View = {}));\nvar Private;\n(function (Private) {\n let counter = 0;\n function uniqueId() {\n const id = `v${counter}`;\n counter += 1;\n return id;\n }\n Private.uniqueId = uniqueId;\n})(Private || (Private = {}));\n//# sourceMappingURL=view.js.map","/**\n * An implementation of the Priority Queue abstract data type.\n *\n * @see: http://en.wikipedia.org/wiki/Priority_queue\n *\n * It is like a normal stack or queue, but where each item has assigned a\n * priority (a number). Items with higher priority are served before items\n * with lower priority. This implementation uses binary heap as an internal\n * representation of the queue. The time complexity of all the methods is as\n * follows:\n *\n * - create: `O(n)`\n * - insert: `O(log n)`\n * - remove: `O(log n)`\n * - peek: `O(1)`\n * - isEmpty: `O(1)`\n * - peekPriority: `O(1)`\n */\nexport class PriorityQueue {\n constructor(options = {}) {\n this.comparator = options.comparator || PriorityQueue.defaultComparator;\n this.index = {};\n this.data = options.data || [];\n this.heapify();\n }\n /**\n * Returns `true` if the priority queue is empty, `false` otherwise.\n */\n isEmpty() {\n return this.data.length === 0;\n }\n /**\n * Inserts a value with priority to the queue. Optionally pass a unique\n * id of this item. Passing unique IDs for each item you insert allows\n * you to use the `updatePriority()` operation.\n * @param priority\n * @param value\n * @param id\n */\n insert(priority, value, id) {\n const item = { priority, value };\n const index = this.data.length - 1;\n if (id) {\n item.id = id;\n this.index[id] = index;\n }\n this.data.push(item);\n this.bubbleUp(index);\n return this;\n }\n /**\n * Returns the value of an item with the highest priority.\n */\n peek() {\n return this.data[0] ? this.data[0].value : null;\n }\n /**\n * Returns the highest priority in the queue.\n */\n peekPriority() {\n return this.data[0] ? this.data[0].priority : null;\n }\n updatePriority(id, priority) {\n const index = this.index[id];\n if (typeof index === 'undefined') {\n throw new Error(`Node with id '${id}' was not found in the heap.`);\n }\n const data = this.data;\n const oldPriority = data[index].priority;\n const comp = this.comparator(priority, oldPriority);\n if (comp < 0) {\n data[index].priority = priority;\n this.bubbleUp(index);\n }\n else if (comp > 0) {\n data[index].priority = priority;\n this.bubbleDown(index);\n }\n }\n /**\n * Removes the item with the highest priority from the queue\n *\n * @returns The value of the removed item.\n */\n remove() {\n const data = this.data;\n const peek = data[0];\n const last = data.pop();\n delete this.index[data.length];\n if (data.length > 0) {\n data[0] = last;\n if (last.id) {\n this.index[last.id] = 0;\n }\n this.bubbleDown(0);\n }\n return peek ? peek.value : null;\n }\n heapify() {\n for (let i = 0; i < this.data.length; i += 1) {\n this.bubbleUp(i);\n }\n }\n bubbleUp(index) {\n const data = this.data;\n let tmp;\n let parent;\n let current = index;\n while (current > 0) {\n parent = (current - 1) >>> 1;\n if (this.comparator(data[current].priority, data[parent].priority) < 0) {\n tmp = data[parent];\n data[parent] = data[current];\n let id = data[current].id;\n if (id != null) {\n this.index[id] = parent;\n }\n data[current] = tmp;\n id = data[current].id;\n if (id != null) {\n this.index[id] = current;\n }\n current = parent;\n }\n else {\n break;\n }\n }\n }\n bubbleDown(index) {\n const data = this.data;\n const last = data.length - 1;\n let current = index;\n // eslint-disable-next-line\n while (true) {\n const left = (current << 1) + 1;\n const right = left + 1;\n let minIndex = current;\n if (left <= last &&\n this.comparator(data[left].priority, data[minIndex].priority) < 0) {\n minIndex = left;\n }\n if (right <= last &&\n this.comparator(data[right].priority, data[minIndex].priority) < 0) {\n minIndex = right;\n }\n if (minIndex !== current) {\n const tmp = data[minIndex];\n data[minIndex] = data[current];\n let id = data[current].id;\n if (id != null) {\n this.index[id] = minIndex;\n }\n data[current] = tmp;\n id = data[current].id;\n if (id != null) {\n this.index[id] = current;\n }\n current = minIndex;\n }\n else {\n break;\n }\n }\n }\n}\n(function (PriorityQueue) {\n PriorityQueue.defaultComparator = (a, b) => a - b;\n})(PriorityQueue || (PriorityQueue = {}));\n//# sourceMappingURL=priorityqueue.js.map","export const noop = (terminal) => terminal;\n//# sourceMappingURL=noop.js.map","import { Point } from '../../geometry';\nfunction toPercentage(value, max) {\n if (max === 0) {\n return '0%';\n }\n return `${Math.round((value / max) * 100)}%`;\n}\nfunction pin(relative) {\n const strategy = (terminal, view, magnet, coords) => {\n return view.isEdgeElement(magnet)\n ? pinEdgeTerminal(relative, terminal, view, magnet, coords)\n : pinNodeTerminal(relative, terminal, view, magnet, coords);\n };\n return strategy;\n}\nfunction pinNodeTerminal(relative, data, view, magnet, coords) {\n const node = view.cell;\n const angle = node.getAngle();\n const bbox = view.getUnrotatedBBoxOfElement(magnet);\n const center = node.getBBox().getCenter();\n const pos = Point.create(coords).rotate(angle, center);\n let dx = pos.x - bbox.x;\n let dy = pos.y - bbox.y;\n if (relative) {\n dx = toPercentage(dx, bbox.width);\n dy = toPercentage(dy, bbox.height);\n }\n data.anchor = {\n name: 'topLeft',\n args: {\n dx,\n dy,\n rotate: true,\n },\n };\n return data;\n}\nfunction pinEdgeTerminal(relative, end, view, magnet, coords) {\n const connection = view.getConnection();\n if (!connection) {\n return end;\n }\n const length = connection.closestPointLength(coords);\n if (relative) {\n const totalLength = connection.length();\n end.anchor = {\n name: 'ratio',\n args: {\n ratio: length / totalLength,\n },\n };\n }\n else {\n end.anchor = {\n name: 'length',\n args: {\n length,\n },\n };\n }\n return end;\n}\nexport const pinRelative = pin(true);\nexport const pinAbsolute = pin(false);\n//# sourceMappingURL=pin.js.map","import { Registry } from '../registry';\nimport * as strategies from './main';\nexport var ConnectionStrategy;\n(function (ConnectionStrategy) {\n ConnectionStrategy.presets = strategies;\n ConnectionStrategy.registry = Registry.create({\n type: 'connection strategy',\n });\n ConnectionStrategy.registry.register(ConnectionStrategy.presets, true);\n})(ConnectionStrategy || (ConnectionStrategy = {}));\n//# sourceMappingURL=index.js.map","import JQuery from 'jquery';\nimport { ObjectExt, StringExt, Dom, Vector } from '../util';\n// eslint-disable-next-line\nexport var Markup;\n(function (Markup) {\n function isJSONMarkup(markup) {\n return markup != null && !isStringMarkup(markup);\n }\n Markup.isJSONMarkup = isJSONMarkup;\n function isStringMarkup(markup) {\n return markup != null && typeof markup === 'string';\n }\n Markup.isStringMarkup = isStringMarkup;\n function clone(markup) {\n return markup == null || isStringMarkup(markup)\n ? markup\n : ObjectExt.cloneDeep(markup);\n }\n Markup.clone = clone;\n /**\n * Removes blank space in markup to prevent create empty text node.\n */\n function sanitize(markup) {\n return `${markup}`\n .trim()\n .replace(/[\\r|\\n]/g, ' ')\n .replace(/>\\s+<');\n }\n Markup.sanitize = sanitize;\n function parseStringMarkup(markup) {\n const fragment = document.createDocumentFragment();\n const groups = {};\n const selectors = {};\n const sanitized = sanitize(markup);\n const nodes = StringExt.sanitizeHTML(sanitized, { raw: true });\n nodes.forEach((node) => {\n fragment.appendChild(node);\n });\n return { fragment, selectors, groups };\n }\n Markup.parseStringMarkup = parseStringMarkup;\n function parseJSONMarkup(markup, options = { ns: Dom.ns.svg }) {\n const fragment = document.createDocumentFragment();\n const groups = {};\n const selectors = {};\n const queue = [\n {\n markup: Array.isArray(markup) ? markup : [markup],\n parent: fragment,\n ns: options.ns,\n },\n ];\n while (queue.length > 0) {\n const item = queue.pop();\n let ns = item.ns || Dom.ns.svg;\n const defines = item.markup;\n const parentNode = item.parent;\n defines.forEach((define) => {\n // tagName\n const tagName = define.tagName;\n if (!tagName) {\n throw new TypeError('Invalid tagName');\n }\n // ns\n if (define.ns) {\n ns = define.ns;\n }\n const svg = ns === Dom.ns.svg;\n const node = ns\n ? Dom.createElementNS(tagName, ns)\n : Dom.createElement(tagName);\n // attrs\n const attrs = define.attrs;\n if (attrs) {\n if (svg) {\n Dom.attr(node, Dom.kebablizeAttrs(attrs));\n }\n else {\n JQuery(node).attr(attrs);\n }\n }\n // style\n const style = define.style;\n if (style) {\n JQuery(node).css(style);\n }\n // classname\n const className = define.className;\n if (className != null) {\n node.setAttribute('class', Array.isArray(className) ? className.join(' ') : className);\n }\n // textContent\n if (define.textContent) {\n node.textContent = define.textContent;\n }\n // selector\n const selector = define.selector;\n if (selector != null) {\n if (selectors[selector]) {\n throw new TypeError('Selector must be unique');\n }\n selectors[selector] = node;\n }\n // group\n if (define.groupSelector) {\n let nodeGroups = define.groupSelector;\n if (!Array.isArray(nodeGroups)) {\n nodeGroups = [nodeGroups];\n }\n nodeGroups.forEach((name) => {\n if (!groups[name]) {\n groups[name] = [];\n }\n groups[name].push(node);\n });\n }\n parentNode.appendChild(node);\n // children\n const children = define.children;\n if (Array.isArray(children)) {\n queue.push({ ns, markup: children, parent: node });\n }\n });\n }\n Object.keys(groups).forEach((groupName) => {\n if (selectors[groupName]) {\n throw new Error('Ambiguous group selector');\n }\n selectors[groupName] = groups[groupName];\n });\n return { fragment, selectors, groups };\n }\n Markup.parseJSONMarkup = parseJSONMarkup;\n function createContainer(firstChild) {\n return firstChild instanceof SVGElement\n ? Dom.createSvgElement('g')\n : Dom.createElement('div');\n }\n function renderMarkup(markup) {\n if (isStringMarkup(markup)) {\n const nodes = Vector.createVectors(markup);\n const count = nodes.length;\n if (count === 1) {\n return {\n elem: nodes[0].node,\n };\n }\n if (count > 1) {\n const elem = createContainer(nodes[0].node);\n nodes.forEach((node) => {\n elem.appendChild(node.node);\n });\n return { elem };\n }\n return {};\n }\n const result = parseJSONMarkup(markup);\n const fragment = result.fragment;\n let elem = null;\n if (fragment.childNodes.length > 1) {\n elem = createContainer(fragment.firstChild);\n elem.appendChild(fragment);\n }\n else {\n elem = fragment.firstChild;\n }\n return { elem, selectors: result.selectors };\n }\n Markup.renderMarkup = renderMarkup;\n function parseLabelStringMarkup(markup) {\n const children = Vector.createVectors(markup);\n const fragment = document.createDocumentFragment();\n for (let i = 0, n = children.length; i < n; i += 1) {\n const currentChild = children[i].node;\n fragment.appendChild(currentChild);\n }\n return { fragment, selectors: {} };\n }\n Markup.parseLabelStringMarkup = parseLabelStringMarkup;\n})(Markup || (Markup = {}));\n// eslint-disable-next-line\n(function (Markup) {\n function getSelector(elem, stop, prev) {\n if (elem != null) {\n let selector;\n const tagName = elem.tagName.toLowerCase();\n if (elem === stop) {\n if (typeof prev === 'string') {\n selector = `> ${tagName} > ${prev}`;\n }\n else {\n selector = `> ${tagName}`;\n }\n return selector;\n }\n const parent = elem.parentNode;\n if (parent && parent.childNodes.length > 1) {\n const nth = Dom.index(elem) + 1;\n selector = `${tagName}:nth-child(${nth})`;\n }\n else {\n selector = tagName;\n }\n if (prev) {\n selector += ` > ${prev}`;\n }\n return getSelector(elem.parentNode, stop, selector);\n }\n return prev;\n }\n Markup.getSelector = getSelector;\n function parseNode(node, root, ns) {\n if (node.nodeName === '#text') {\n return null;\n }\n let selector = null;\n let groupSelector = null;\n // let classNames: string | null = null\n let attrs = null;\n let isCSSSelector = false;\n const markup = {\n tagName: node.tagName,\n };\n if (node.attributes) {\n attrs = {};\n for (let i = 0, l = node.attributes.length; i < l; i += 1) {\n const attr = node.attributes[i];\n const name = attr.nodeName;\n const value = attr.nodeValue;\n if (name === 'selector') {\n selector = value;\n }\n else if (name === 'groupSelector') {\n groupSelector = value;\n }\n else if (name === 'class') {\n markup.attrs = { class: value };\n }\n else {\n attrs[name] = value;\n }\n }\n }\n if (selector == null) {\n isCSSSelector = true;\n selector = getSelector(node, root);\n }\n if (node.namespaceURI) {\n markup.ns = node.namespaceURI;\n }\n if (markup.ns == null) {\n if ([\n 'body',\n 'div',\n 'section',\n 'main',\n 'nav',\n 'footer',\n 'span',\n 'p',\n 'h1',\n 'h2',\n 'h3',\n 'h4',\n 'h5',\n 'h6',\n 'ul',\n 'ol',\n 'dl',\n 'center',\n 'strong',\n 'pre',\n 'form',\n 'select',\n 'textarea',\n 'fieldset',\n 'marquee',\n 'bgsound',\n 'iframe',\n 'frameset',\n ].includes(node.tagName)) {\n markup.ns = Dom.ns.xhtml;\n }\n else if (ns) {\n markup.ns = ns;\n }\n }\n if (selector) {\n markup.selector = selector;\n }\n if (groupSelector != null) {\n markup.groupSelector = groupSelector;\n }\n return {\n markup,\n attrs,\n isCSSSelector,\n };\n }\n function xml2json(xml) {\n const sanitized = Markup.sanitize(xml);\n const doc = Dom.parseXML(sanitized, { mimeType: 'image/svg+xml' });\n const nodes = Array.prototype.slice.call(doc.childNodes);\n const attrMap = {};\n const markupMap = new WeakMap();\n const parse = (node, root, ns) => {\n const data = parseNode(node, root, ns);\n if (data == null) {\n const parent = markupMap.get(node.parentNode);\n if (parent && node.textContent) {\n parent.textContent = node.textContent;\n }\n }\n else {\n const { markup, attrs, isCSSSelector } = data;\n markupMap.set(node, markup);\n if (markup.selector && attrs != null) {\n if (Object.keys(attrs).length) {\n attrMap[markup.selector] = attrs;\n }\n if (isCSSSelector) {\n delete markup.selector;\n }\n }\n if (node.childNodes && node.childNodes.length > 0) {\n for (let i = 0, l = node.childNodes.length; i < l; i += 1) {\n const child = node.childNodes[i];\n const childMarkup = parse(child, root, markup.ns);\n if (childMarkup) {\n if (markup.children == null) {\n markup.children = [];\n }\n markup.children.push(childMarkup);\n }\n }\n }\n return markup;\n }\n };\n const markup = nodes\n .map((node) => parse(node, node))\n .filter((mk) => mk != null);\n return {\n markup,\n attrs: attrMap,\n };\n }\n Markup.xml2json = xml2json;\n})(Markup || (Markup = {}));\n// eslint-disable-next-line\n(function (Markup) {\n function getPortContainerMarkup() {\n return 'g';\n }\n Markup.getPortContainerMarkup = getPortContainerMarkup;\n function getPortMarkup() {\n return {\n tagName: 'circle',\n selector: 'circle',\n attrs: {\n r: 10,\n fill: '#FFFFFF',\n stroke: '#000000',\n },\n };\n }\n Markup.getPortMarkup = getPortMarkup;\n function getPortLabelMarkup() {\n return {\n tagName: 'text',\n selector: 'text',\n attrs: {\n fill: '#000000',\n },\n };\n }\n Markup.getPortLabelMarkup = getPortLabelMarkup;\n})(Markup || (Markup = {}));\n// eslint-disable-next-line\n(function (Markup) {\n function getEdgeMarkup() {\n return Markup.sanitize(`\n \n \n \n \n \n \n \n \n `);\n }\n Markup.getEdgeMarkup = getEdgeMarkup;\n function getEdgeToolMarkup() {\n return Markup.sanitize(`\n \n \n \n \n Remove edge.\n \n \n \n \n Edge options.\n \n \n `);\n }\n Markup.getEdgeToolMarkup = getEdgeToolMarkup;\n function getEdgeVertexMarkup() {\n return Markup.sanitize(`\n , <%= y %>)\">\n \" r=\"10\" />\n \" d=\"M16,5.333c-7.732,0-14,4.701-14,10.5c0,1.982,0.741,3.833,2.016,5.414L2,25.667l5.613-1.441c2.339,1.317,5.237,2.107,8.387,2.107c7.732,0,14-4.701,14-10.5C30,10.034,23.732,5.333,16,5.333z\" transform=\"translate(5, -33)\"/>\n \" transform=\"scale(.8) translate(9.5, -37)\" d=\"M24.778,21.419 19.276,15.917 24.777,10.415 21.949,7.585 16.447,13.087 10.945,7.585 8.117,10.415 13.618,15.917 8.116,21.419 10.946,24.248 16.447,18.746 21.948,24.248z\">\n Remove vertex.\n \n \n `);\n }\n Markup.getEdgeVertexMarkup = getEdgeVertexMarkup;\n function getEdgeArrowheadMarkup() {\n return Markup.sanitize(`\n \">\n \" d=\"M 26 0 L 0 13 L 26 26 z\" />\n \n `);\n }\n Markup.getEdgeArrowheadMarkup = getEdgeArrowheadMarkup;\n})(Markup || (Markup = {}));\n// eslint-disable-next-line\n(function (Markup) {\n function getForeignObjectMarkup(bare = false) {\n return {\n tagName: 'foreignObject',\n selector: 'fo',\n children: [\n {\n ns: Dom.ns.xhtml,\n tagName: 'body',\n selector: 'foBody',\n attrs: {\n xmlns: Dom.ns.xhtml,\n },\n style: {\n width: '100%',\n height: '100%',\n background: 'transparent',\n },\n children: bare\n ? []\n : [\n {\n tagName: 'div',\n selector: 'foContent',\n style: {\n width: '100%',\n height: '100%',\n },\n },\n ],\n },\n ],\n };\n }\n Markup.getForeignObjectMarkup = getForeignObjectMarkup;\n})(Markup || (Markup = {}));\n//# sourceMappingURL=markup.js.map","import { ObjectExt, ArrayExt, Dom, FunctionExt, StringExt, Scheduler, } from '../util';\nimport { Point } from '../geometry';\nimport { Dictionary } from '../common';\nimport { Attr } from '../registry/attr';\nimport { View } from './view';\nexport class AttrManager {\n constructor(view) {\n this.view = view;\n }\n get cell() {\n return this.view.cell;\n }\n getDefinition(attrName) {\n return this.cell.getAttrDefinition(attrName);\n }\n processAttrs(elem, raw) {\n let normal;\n let set;\n let offset;\n let position;\n let delay;\n const specials = [];\n // divide the attributes between normal and special\n Object.keys(raw).forEach((name) => {\n const val = raw[name];\n const definition = this.getDefinition(name);\n const isValid = FunctionExt.call(Attr.isValidDefinition, this.view, definition, val, {\n elem,\n attrs: raw,\n cell: this.cell,\n view: this.view,\n });\n if (definition && isValid) {\n if (typeof definition === 'string') {\n if (normal == null) {\n normal = {};\n }\n normal[definition] = val;\n }\n else if (val !== null) {\n specials.push({ name, definition });\n }\n }\n else {\n if (normal == null) {\n normal = {};\n }\n const normalName = AttrManager.CASE_SENSITIVE_ATTR.includes(name)\n ? name\n : StringExt.kebabCase(name);\n normal[normalName] = val;\n }\n });\n specials.forEach(({ name, definition }) => {\n const val = raw[name];\n const setDefine = definition;\n if (typeof setDefine.set === 'function') {\n if (!Dom.isHTMLElement(elem) &&\n AttrManager.DELAY_ATTRS.includes(name)) {\n if (delay == null) {\n delay = {};\n }\n delay[name] = val;\n }\n else {\n if (set == null) {\n set = {};\n }\n set[name] = val;\n }\n }\n const offsetDefine = definition;\n if (typeof offsetDefine.offset === 'function') {\n if (offset == null) {\n offset = {};\n }\n offset[name] = val;\n }\n const positionDefine = definition;\n if (typeof positionDefine.position === 'function') {\n if (position == null) {\n position = {};\n }\n position[name] = val;\n }\n });\n return {\n raw,\n normal,\n set,\n offset,\n position,\n delay,\n };\n }\n mergeProcessedAttrs(allProcessedAttrs, roProcessedAttrs) {\n allProcessedAttrs.set = Object.assign(Object.assign({}, allProcessedAttrs.set), roProcessedAttrs.set);\n allProcessedAttrs.position = Object.assign(Object.assign({}, allProcessedAttrs.position), roProcessedAttrs.position);\n allProcessedAttrs.offset = Object.assign(Object.assign({}, allProcessedAttrs.offset), roProcessedAttrs.offset);\n // Handle also the special transform property.\n const transform = allProcessedAttrs.normal && allProcessedAttrs.normal.transform;\n if (transform != null && roProcessedAttrs.normal) {\n roProcessedAttrs.normal.transform = transform;\n }\n allProcessedAttrs.normal = roProcessedAttrs.normal;\n }\n findAttrs(cellAttrs, rootNode, selectorCache, selectors) {\n const merge = [];\n const result = new Dictionary();\n Object.keys(cellAttrs).forEach((selector) => {\n const attrs = cellAttrs[selector];\n if (!ObjectExt.isPlainObject(attrs)) {\n return;\n }\n const { isCSSSelector, elems } = View.find(selector, rootNode, selectors);\n selectorCache[selector] = elems;\n for (let i = 0, l = elems.length; i < l; i += 1) {\n const elem = elems[i];\n const unique = selectors && selectors[selector] === elem;\n const prev = result.get(elem);\n if (prev) {\n if (!prev.array) {\n merge.push(elem);\n prev.array = true;\n prev.attrs = [prev.attrs];\n prev.priority = [prev.priority];\n }\n const attributes = prev.attrs;\n const selectedLength = prev.priority;\n if (unique) {\n // node referenced by `selector`\n attributes.unshift(attrs);\n selectedLength.unshift(-1);\n }\n else {\n // node referenced by `groupSelector` or CSSSelector\n const sortIndex = ArrayExt.sortedIndex(selectedLength, isCSSSelector ? -1 : l);\n attributes.splice(sortIndex, 0, attrs);\n selectedLength.splice(sortIndex, 0, l);\n }\n }\n else {\n result.set(elem, {\n elem,\n attrs,\n priority: unique ? -1 : l,\n array: false,\n });\n }\n }\n });\n merge.forEach((node) => {\n const item = result.get(node);\n const arr = item.attrs;\n item.attrs = arr.reduceRight((memo, attrs) => ObjectExt.merge(memo, attrs), {});\n });\n return result;\n }\n updateRelativeAttrs(elem, processedAttrs, refBBox, options) {\n const rawAttrs = processedAttrs.raw || {};\n let nodeAttrs = processedAttrs.normal || {};\n const setAttrs = processedAttrs.set;\n const positionAttrs = processedAttrs.position;\n const offsetAttrs = processedAttrs.offset;\n const delayAttrs = processedAttrs.delay;\n const getOptions = () => ({\n elem,\n cell: this.cell,\n view: this.view,\n attrs: rawAttrs,\n refBBox: refBBox.clone(),\n });\n if (setAttrs != null) {\n Object.keys(setAttrs).forEach((name) => {\n const val = setAttrs[name];\n const def = this.getDefinition(name);\n if (def != null) {\n const ret = FunctionExt.call(def.set, this.view, val, getOptions());\n if (typeof ret === 'object') {\n nodeAttrs = Object.assign(Object.assign({}, nodeAttrs), ret);\n }\n else if (ret != null) {\n nodeAttrs[name] = ret;\n }\n }\n });\n }\n if (Dom.isHTMLElement(elem)) {\n // TODO: setting the `transform` attribute on HTMLElements\n // via `node.style.transform = 'matrix(...)';` would introduce\n // a breaking change (e.g. basic.TextBlock).\n this.view.setAttrs(nodeAttrs, elem);\n return;\n }\n // The final translation of the subelement.\n const nodeTransform = nodeAttrs.transform;\n const transform = nodeTransform ? `${nodeTransform}` : null;\n const nodeMatrix = Dom.transformStringToMatrix(transform);\n const nodePosition = new Point(nodeMatrix.e, nodeMatrix.f);\n if (nodeTransform) {\n delete nodeAttrs.transform;\n nodeMatrix.e = 0;\n nodeMatrix.f = 0;\n }\n // Calculates node scale determined by the scalable group.\n let sx = 1;\n let sy = 1;\n if (positionAttrs || offsetAttrs) {\n const scale = this.view.getScaleOfElement(elem, options.scalableNode);\n sx = scale.sx;\n sy = scale.sy;\n }\n let positioned = false;\n if (positionAttrs != null) {\n Object.keys(positionAttrs).forEach((name) => {\n const val = positionAttrs[name];\n const def = this.getDefinition(name);\n if (def != null) {\n const ts = FunctionExt.call(def.position, this.view, val, getOptions());\n if (ts != null) {\n positioned = true;\n nodePosition.translate(Point.create(ts).scale(sx, sy));\n }\n }\n });\n }\n // The node bounding box could depend on the `size`\n // set from the previous loop.\n this.view.setAttrs(nodeAttrs, elem);\n let offseted = false;\n if (offsetAttrs != null) {\n // Check if the node is visible\n const nodeBoundingRect = this.view.getBoundingRectOfElement(elem);\n if (nodeBoundingRect.width > 0 && nodeBoundingRect.height > 0) {\n const nodeBBox = Dom.transformRectangle(nodeBoundingRect, nodeMatrix).scale(1 / sx, 1 / sy);\n Object.keys(offsetAttrs).forEach((name) => {\n const val = offsetAttrs[name];\n const def = this.getDefinition(name);\n if (def != null) {\n const ts = FunctionExt.call(def.offset, this.view, val, {\n elem,\n cell: this.cell,\n view: this.view,\n attrs: rawAttrs,\n refBBox: nodeBBox,\n });\n if (ts != null) {\n offseted = true;\n nodePosition.translate(Point.create(ts).scale(sx, sy));\n }\n }\n });\n }\n }\n if (nodeTransform != null || positioned || offseted) {\n nodePosition.round(1);\n nodeMatrix.e = nodePosition.x;\n nodeMatrix.f = nodePosition.y;\n elem.setAttribute('transform', Dom.matrixToTransformString(nodeMatrix));\n }\n // delay render\n const updateDelayAttrs = () => {\n if (delayAttrs != null) {\n Object.keys(delayAttrs).forEach((name) => {\n const val = delayAttrs[name];\n const def = this.getDefinition(name);\n if (def != null) {\n const ret = FunctionExt.call(def.set, this.view, val, getOptions());\n if (typeof ret === 'object') {\n this.view.setAttrs(ret, elem);\n }\n else if (ret != null) {\n this.view.setAttrs({\n [name]: ret,\n }, elem);\n }\n }\n });\n }\n };\n if (options.forceSync) {\n updateDelayAttrs();\n }\n else {\n Scheduler.scheduleTask(updateDelayAttrs);\n }\n }\n update(rootNode, attrs, options) {\n const selectorCache = {};\n const nodesAttrs = this.findAttrs(options.attrs || attrs, rootNode, selectorCache, options.selectors);\n // `nodesAttrs` are different from all attributes, when\n // rendering only attributes sent to this method.\n const nodesAllAttrs = options.attrs\n ? this.findAttrs(attrs, rootNode, selectorCache, options.selectors)\n : nodesAttrs;\n const specialItems = [];\n nodesAttrs.each((data) => {\n const node = data.elem;\n const nodeAttrs = data.attrs;\n const processed = this.processAttrs(node, nodeAttrs);\n if (processed.set == null &&\n processed.position == null &&\n processed.offset == null &&\n processed.delay == null) {\n this.view.setAttrs(processed.normal, node);\n }\n else {\n const data = nodesAllAttrs.get(node);\n const nodeAllAttrs = data ? data.attrs : null;\n const refSelector = nodeAllAttrs && nodeAttrs.ref == null\n ? nodeAllAttrs.ref\n : nodeAttrs.ref;\n let refNode;\n if (refSelector) {\n refNode = (selectorCache[refSelector] ||\n this.view.find(refSelector, rootNode, options.selectors))[0];\n if (!refNode) {\n throw new Error(`\"${refSelector}\" reference does not exist.`);\n }\n }\n else {\n refNode = null;\n }\n const item = {\n node,\n refNode,\n attributes: nodeAllAttrs,\n processedAttributes: processed,\n };\n // If an element in the list is positioned relative to this one, then\n // we want to insert this one before it in the list.\n const index = specialItems.findIndex((item) => item.refNode === node);\n if (index > -1) {\n specialItems.splice(index, 0, item);\n }\n else {\n specialItems.push(item);\n }\n }\n });\n const bboxCache = new Dictionary();\n let rotatableMatrix;\n specialItems.forEach((item) => {\n const node = item.node;\n const refNode = item.refNode;\n let unrotatedRefBBox;\n const isRefNodeRotatable = refNode != null &&\n options.rotatableNode != null &&\n Dom.contains(options.rotatableNode, refNode);\n // Find the reference element bounding box. If no reference was\n // provided, we use the optional bounding box.\n if (refNode) {\n unrotatedRefBBox = bboxCache.get(refNode);\n }\n if (!unrotatedRefBBox) {\n const target = (isRefNodeRotatable ? options.rotatableNode : rootNode);\n unrotatedRefBBox = refNode\n ? Dom.getBBox(refNode, { target })\n : options.rootBBox;\n if (refNode) {\n bboxCache.set(refNode, unrotatedRefBBox);\n }\n }\n let processedAttrs;\n if (options.attrs && item.attributes) {\n // If there was a special attribute affecting the position amongst\n // passed-in attributes we have to merge it with the rest of the\n // element's attributes as they are necessary to update the position\n // relatively (i.e `ref-x` && 'ref-dx').\n processedAttrs = this.processAttrs(node, item.attributes);\n this.mergeProcessedAttrs(processedAttrs, item.processedAttributes);\n }\n else {\n processedAttrs = item.processedAttributes;\n }\n let refBBox = unrotatedRefBBox;\n if (isRefNodeRotatable &&\n options.rotatableNode != null &&\n !options.rotatableNode.contains(node)) {\n // If the referenced node is inside the rotatable group while the\n // updated node is outside, we need to take the rotatable node\n // transformation into account.\n if (!rotatableMatrix) {\n rotatableMatrix = Dom.transformStringToMatrix(Dom.attr(options.rotatableNode, 'transform'));\n }\n refBBox = Dom.transformRectangle(unrotatedRefBBox, rotatableMatrix);\n }\n const caller = specialItems.find((item) => item.refNode === node);\n if (caller) {\n options.forceSync = true;\n }\n this.updateRelativeAttrs(node, processedAttrs, refBBox, options);\n });\n }\n}\n(function (AttrManager) {\n AttrManager.CASE_SENSITIVE_ATTR = ['viewBox'];\n AttrManager.DELAY_ATTRS = [\n 'text',\n 'textWrap',\n 'sourceMarker',\n 'targetMarker',\n ];\n})(AttrManager || (AttrManager = {}));\n//# sourceMappingURL=attr.js.map","import { Dictionary } from '../common';\nimport { Dom } from '../util';\nexport class Cache {\n constructor(view) {\n this.view = view;\n this.clean();\n }\n clean() {\n if (this.elemCache) {\n this.elemCache.dispose();\n }\n this.elemCache = new Dictionary();\n this.pathCache = {};\n }\n get(elem) {\n const cache = this.elemCache;\n if (!cache.has(elem)) {\n this.elemCache.set(elem, {});\n }\n return this.elemCache.get(elem);\n }\n getData(elem) {\n const meta = this.get(elem);\n if (!meta.data) {\n meta.data = {};\n }\n return meta.data;\n }\n getMatrix(elem) {\n const meta = this.get(elem);\n if (meta.matrix == null) {\n const target = this.view.rotatableNode || this.view.container;\n meta.matrix = Dom.getTransformToElement(elem, target);\n }\n return Dom.createSVGMatrix(meta.matrix);\n }\n getShape(elem) {\n const meta = this.get(elem);\n if (meta.shape == null) {\n meta.shape = Dom.toGeometryShape(elem);\n }\n return meta.shape.clone();\n }\n getBoundingRect(elem) {\n const meta = this.get(elem);\n if (meta.boundingRect == null) {\n meta.boundingRect = Dom.getBBox(elem);\n }\n return meta.boundingRect.clone();\n }\n}\n//# sourceMappingURL=cache.js.map","/* eslint-disable no-bitwise */\nexport class FlagManager {\n constructor(view, actions, bootstrap = []) {\n this.view = view;\n const flags = {};\n const attrs = {};\n let shift = 0;\n Object.keys(actions).forEach((attr) => {\n let labels = actions[attr];\n if (!Array.isArray(labels)) {\n labels = [labels];\n }\n labels.forEach((label) => {\n let flag = flags[label];\n if (!flag) {\n shift += 1;\n flag = flags[label] = 1 << shift;\n }\n attrs[attr] |= flag;\n });\n });\n let labels = bootstrap;\n if (!Array.isArray(labels)) {\n labels = [labels];\n }\n labels.forEach((label) => {\n if (!flags[label]) {\n shift += 1;\n flags[label] = 1 << shift;\n }\n });\n // 26 - 30 are reserved for paper flags\n // 31+ overflows maximal number\n if (shift > 25) {\n throw new Error('Maximum number of flags exceeded.');\n }\n this.flags = flags;\n this.attrs = attrs;\n this.bootstrap = bootstrap;\n }\n get cell() {\n return this.view.cell;\n }\n getFlag(label) {\n const flags = this.flags;\n if (flags == null) {\n return 0;\n }\n if (Array.isArray(label)) {\n return label.reduce((memo, key) => memo | flags[key], 0);\n }\n return flags[label] | 0;\n }\n hasAction(flag, label) {\n return flag & this.getFlag(label);\n }\n removeAction(flag, label) {\n return flag ^ (flag & this.getFlag(label));\n }\n getBootstrapFlag() {\n return this.getFlag(this.bootstrap);\n }\n getChangedFlag() {\n let flag = 0;\n if (!this.attrs) {\n return flag;\n }\n Object.keys(this.attrs).forEach((attr) => {\n if (this.cell.hasChanged(attr)) {\n flag |= this.attrs[attr];\n }\n });\n return flag;\n }\n}\n//# sourceMappingURL=flag.js.map","/* eslint-disable @typescript-eslint/no-unused-vars */\nvar __rest = (this && this.__rest) || function (s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n t[p[i]] = s[p[i]];\n }\n return t;\n};\nimport { Rectangle, Point } from '../geometry';\nimport { ArrayExt, ObjectExt, Dom, FunctionExt, Vector } from '../util';\nimport { Registry } from '../registry/registry';\nimport { ConnectionStrategy } from '../registry/connection-strategy';\nimport { View } from './view';\nimport { Cache } from './cache';\nimport { Markup } from './markup';\nimport { ToolsView } from './tool';\nimport { AttrManager } from './attr';\nimport { FlagManager } from './flag';\nexport class CellView extends View {\n constructor(cell, options = {}) {\n super();\n this.cell = cell;\n this.options = this.ensureOptions(options);\n this.graph = this.options.graph;\n this.attr = new AttrManager(this);\n this.flag = new FlagManager(this, this.options.actions, this.options.bootstrap);\n this.cache = new Cache(this);\n this.setContainer(this.ensureContainer());\n this.setup();\n this.$(this.container).data('view', this);\n this.init();\n }\n static getDefaults() {\n return this.defaults;\n }\n static config(options) {\n this.defaults = this.getOptions(options);\n }\n static getOptions(options) {\n const mergeActions = (arr1, arr2) => {\n if (arr2 != null) {\n return ArrayExt.uniq([\n ...(Array.isArray(arr1) ? arr1 : [arr1]),\n ...(Array.isArray(arr2) ? arr2 : [arr2]),\n ]);\n }\n return Array.isArray(arr1) ? [...arr1] : [arr1];\n };\n const ret = ObjectExt.cloneDeep(this.getDefaults());\n const { bootstrap, actions, events, documentEvents } = options, others = __rest(options, [\"bootstrap\", \"actions\", \"events\", \"documentEvents\"]);\n if (bootstrap) {\n ret.bootstrap = mergeActions(ret.bootstrap, bootstrap);\n }\n if (actions) {\n Object.keys(actions).forEach((key) => {\n const val = actions[key];\n const raw = ret.actions[key];\n if (val && raw) {\n ret.actions[key] = mergeActions(raw, val);\n }\n else if (val) {\n ret.actions[key] = mergeActions(val);\n }\n });\n }\n if (events) {\n ret.events = Object.assign(Object.assign({}, ret.events), events);\n }\n if (options.documentEvents) {\n ret.documentEvents = Object.assign(Object.assign({}, ret.documentEvents), documentEvents);\n }\n return ObjectExt.merge(ret, others);\n }\n get [Symbol.toStringTag]() {\n return CellView.toStringTag;\n }\n init() { }\n onRemove() {\n this.removeTools();\n }\n get priority() {\n return this.options.priority;\n }\n get rootSelector() {\n return this.options.rootSelector;\n }\n getConstructor() {\n return this.constructor;\n }\n ensureOptions(options) {\n return this.getConstructor().getOptions(options);\n }\n getContainerTagName() {\n return this.options.isSvgElement ? 'g' : 'div';\n }\n getContainerStyle() { }\n getContainerAttrs() {\n return {\n 'data-cell-id': this.cell.id,\n 'data-shape': this.cell.shape,\n };\n }\n getContainerClassName() {\n return this.prefixClassName('cell');\n }\n ensureContainer() {\n return View.createElement(this.getContainerTagName(), this.options.isSvgElement);\n }\n setContainer(container) {\n if (this.container !== container) {\n this.undelegateEvents();\n this.container = container;\n if (this.options.events != null) {\n this.delegateEvents(this.options.events);\n }\n const attrs = this.getContainerAttrs();\n if (attrs != null) {\n this.setAttrs(attrs, container);\n }\n const style = this.getContainerStyle();\n if (style != null) {\n this.setStyle(style, container);\n }\n const className = this.getContainerClassName();\n if (className != null) {\n this.addClass(className, container);\n }\n }\n return this;\n }\n isNodeView() {\n return false;\n }\n isEdgeView() {\n return false;\n }\n render() {\n return this;\n }\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n confirmUpdate(flag, options = {}) {\n return 0;\n }\n getBootstrapFlag() {\n return this.flag.getBootstrapFlag();\n }\n getFlag(actions) {\n return this.flag.getFlag(actions);\n }\n hasAction(flag, actions) {\n return this.flag.hasAction(flag, actions);\n }\n removeAction(flag, actions) {\n return this.flag.removeAction(flag, actions);\n }\n handleAction(flag, action, handle, additionalRemovedActions) {\n if (this.hasAction(flag, action)) {\n handle();\n const removedFlags = [action];\n if (additionalRemovedActions) {\n if (typeof additionalRemovedActions === 'string') {\n removedFlags.push(additionalRemovedActions);\n }\n else {\n removedFlags.push(...additionalRemovedActions);\n }\n }\n return this.removeAction(flag, removedFlags);\n }\n return flag;\n }\n setup() {\n this.cell.on('changed', ({ options }) => this.onAttrsChange(options));\n }\n onAttrsChange(options) {\n let flag = this.flag.getChangedFlag();\n if (options.updated || !flag) {\n return;\n }\n if (options.dirty && this.hasAction(flag, 'update')) {\n flag |= this.getFlag('render'); // eslint-disable-line no-bitwise\n }\n // tool changes should be sync render\n if (options.toolId) {\n options.async = false;\n }\n if (this.graph != null) {\n this.graph.renderer.requestViewUpdate(this, flag, this.priority, options);\n }\n }\n parseJSONMarkup(markup, rootElem) {\n const result = Markup.parseJSONMarkup(markup);\n const selectors = result.selectors;\n const rootSelector = this.rootSelector;\n if (rootElem && rootSelector) {\n if (selectors[rootSelector]) {\n throw new Error('Invalid root selector');\n }\n selectors[rootSelector] = rootElem;\n }\n return result;\n }\n can(feature) {\n let interacting = this.graph.options.interacting;\n if (typeof interacting === 'function') {\n interacting = FunctionExt.call(interacting, this.graph, this);\n }\n if (typeof interacting === 'object') {\n let val = interacting[feature];\n if (typeof val === 'function') {\n val = FunctionExt.call(val, this.graph, this);\n }\n return val !== false;\n }\n if (typeof interacting === 'boolean') {\n return interacting;\n }\n return false;\n }\n cleanCache() {\n this.cache.clean();\n return this;\n }\n getCache(elem) {\n return this.cache.get(elem);\n }\n getDataOfElement(elem) {\n return this.cache.getData(elem);\n }\n getMatrixOfElement(elem) {\n return this.cache.getMatrix(elem);\n }\n getShapeOfElement(elem) {\n return this.cache.getShape(elem);\n }\n getScaleOfElement(node, scalableNode) {\n let sx;\n let sy;\n if (scalableNode && scalableNode.contains(node)) {\n const scale = Dom.scale(scalableNode);\n sx = 1 / scale.sx;\n sy = 1 / scale.sy;\n }\n else {\n sx = 1;\n sy = 1;\n }\n return { sx, sy };\n }\n getBoundingRectOfElement(elem) {\n return this.cache.getBoundingRect(elem);\n }\n getBBoxOfElement(elem) {\n const rect = this.getBoundingRectOfElement(elem);\n const matrix = this.getMatrixOfElement(elem);\n const rm = this.getRootRotatedMatrix();\n const tm = this.getRootTranslatedMatrix();\n return Dom.transformRectangle(rect, tm.multiply(rm).multiply(matrix));\n }\n getUnrotatedBBoxOfElement(elem) {\n const rect = this.getBoundingRectOfElement(elem);\n const matrix = this.getMatrixOfElement(elem);\n const tm = this.getRootTranslatedMatrix();\n return Dom.transformRectangle(rect, tm.multiply(matrix));\n }\n getBBox(options = {}) {\n let bbox;\n if (options.useCellGeometry) {\n const cell = this.cell;\n const angle = cell.isNode() ? cell.getAngle() : 0;\n bbox = cell.getBBox().bbox(angle);\n }\n else {\n bbox = this.getBBoxOfElement(this.container);\n }\n return this.graph.localToGraph(bbox);\n }\n getRootTranslatedMatrix() {\n const cell = this.cell;\n const pos = cell.isNode() ? cell.getPosition() : { x: 0, y: 0 };\n return Dom.createSVGMatrix().translate(pos.x, pos.y);\n }\n getRootRotatedMatrix() {\n let matrix = Dom.createSVGMatrix();\n const cell = this.cell;\n const angle = cell.isNode() ? cell.getAngle() : 0;\n if (angle) {\n const bbox = cell.getBBox();\n const cx = bbox.width / 2;\n const cy = bbox.height / 2;\n matrix = matrix.translate(cx, cy).rotate(angle).translate(-cx, -cy);\n }\n return matrix;\n }\n findMagnet(elem = this.container) {\n // If the overall cell has set `magnet === false`, then returns\n // `undefined` to announce there is no magnet found for this cell.\n // This is especially useful to set on cells that have 'ports'.\n // In this case, only the ports have set `magnet === true` and the\n // overall element has `magnet === false`.\n return this.findByAttr('magnet', elem);\n }\n updateAttrs(rootNode, attrs, options = {}) {\n if (options.rootBBox == null) {\n options.rootBBox = new Rectangle();\n }\n if (options.selectors == null) {\n options.selectors = this.selectors;\n }\n this.attr.update(rootNode, attrs, options);\n }\n isEdgeElement(magnet) {\n return this.cell.isEdge() && (magnet == null || magnet === this.container);\n }\n // #region highlight\n prepareHighlight(elem, options = {}) {\n const magnet = (elem && this.$(elem)[0]) || this.container;\n options.partial = magnet === this.container;\n return magnet;\n }\n highlight(elem, options = {}) {\n const magnet = this.prepareHighlight(elem, options);\n this.notify('cell:highlight', {\n magnet,\n options,\n view: this,\n cell: this.cell,\n });\n if (this.isEdgeView()) {\n this.notify('edge:highlight', {\n magnet,\n options,\n view: this,\n edge: this.cell,\n cell: this.cell,\n });\n }\n else if (this.isNodeView()) {\n this.notify('node:highlight', {\n magnet,\n options,\n view: this,\n node: this.cell,\n cell: this.cell,\n });\n }\n return this;\n }\n unhighlight(elem, options = {}) {\n const magnet = this.prepareHighlight(elem, options);\n this.notify('cell:unhighlight', {\n magnet,\n options,\n view: this,\n cell: this.cell,\n });\n if (this.isNodeView()) {\n this.notify('node:unhighlight', {\n magnet,\n options,\n view: this,\n node: this.cell,\n cell: this.cell,\n });\n }\n else if (this.isEdgeView()) {\n this.notify('edge:unhighlight', {\n magnet,\n options,\n view: this,\n edge: this.cell,\n cell: this.cell,\n });\n }\n return this;\n }\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n notifyUnhighlight(magnet, options) { }\n // #endregion\n getEdgeTerminal(magnet, x, y, edge, type) {\n const cell = this.cell;\n const portId = this.findAttr('port', magnet);\n const selector = magnet.getAttribute('data-selector');\n const terminal = { cell: cell.id };\n if (selector != null) {\n terminal.magnet = selector;\n }\n if (portId != null) {\n terminal.port = portId;\n if (cell.isNode()) {\n if (!cell.hasPort(portId) && selector == null) {\n // port created via the `port` attribute (not API)\n terminal.selector = this.getSelector(magnet);\n }\n }\n }\n else if (selector == null && this.container !== magnet) {\n terminal.selector = this.getSelector(magnet);\n }\n return this.customizeEdgeTerminal(terminal, magnet, x, y, edge, type);\n }\n customizeEdgeTerminal(terminal, magnet, x, y, edge, type) {\n const raw = edge.getStrategy() || this.graph.options.connecting.strategy;\n if (raw) {\n const name = typeof raw === 'string' ? raw : raw.name;\n const args = typeof raw === 'string' ? {} : raw.args || {};\n const registry = ConnectionStrategy.registry;\n if (name) {\n const fn = registry.get(name);\n if (fn == null) {\n return registry.onNotFound(name);\n }\n const result = FunctionExt.call(fn, this.graph, terminal, this, magnet, new Point(x, y), edge, type, args);\n if (result) {\n return result;\n }\n }\n }\n return terminal;\n }\n getMagnetFromEdgeTerminal(terminal) {\n const cell = this.cell;\n const root = this.container;\n const portId = terminal.port;\n let selector = terminal.magnet;\n let magnet;\n if (portId != null && cell.isNode() && cell.hasPort(portId)) {\n magnet = this.findPortElem(portId, selector) || root;\n }\n else {\n if (!selector) {\n selector = terminal.selector;\n }\n if (!selector && portId != null) {\n selector = `[port=\"${portId}\"]`;\n }\n magnet = this.findOne(selector, root, this.selectors);\n }\n return magnet;\n }\n // #region animate\n animate(elem, options) {\n const target = typeof elem === 'string' ? this.findOne(elem) : elem;\n if (target == null) {\n throw new Error('Invalid animation element.');\n }\n const parent = target.parentNode;\n const revert = () => {\n if (!parent) {\n Dom.remove(target);\n }\n };\n const vTarget = Vector.create(target);\n if (!parent) {\n vTarget.appendTo(this.graph.view.stage);\n }\n const onComplete = options.complete;\n options.complete = (e) => {\n revert();\n if (onComplete) {\n onComplete(e);\n }\n };\n return vTarget.animate(options);\n }\n animateTransform(elem, options) {\n const target = typeof elem === 'string' ? this.findOne(elem) : elem;\n if (target == null) {\n throw new Error('Invalid animation element.');\n }\n const parent = target.parentNode;\n const revert = () => {\n if (!parent) {\n Dom.remove(target);\n }\n };\n const vTarget = Vector.create(target);\n if (!parent) {\n vTarget.appendTo(this.graph.view.stage);\n }\n const onComplete = options.complete;\n options.complete = (e) => {\n revert();\n if (onComplete) {\n onComplete(e);\n }\n };\n return vTarget.animateTransform(options);\n }\n hasTools(name) {\n const tools = this.tools;\n if (tools == null) {\n return false;\n }\n if (name == null) {\n return true;\n }\n return tools.name === name;\n }\n addTools(config) {\n if (!this.can('toolsAddable')) {\n return this;\n }\n this.removeTools();\n if (config) {\n const tools = ToolsView.isToolsView(config)\n ? config\n : new ToolsView(config);\n this.tools = tools;\n this.graph.on('tools:hide', this.hideTools, this);\n this.graph.on('tools:show', this.showTools, this);\n this.graph.on('tools:remove', this.removeTools, this);\n tools.config({ view: this });\n tools.mount();\n }\n return this;\n }\n updateTools(options = {}) {\n if (this.tools) {\n this.tools.update(options);\n }\n return this;\n }\n removeTools() {\n if (this.tools) {\n this.tools.remove();\n this.graph.off('tools:hide', this.hideTools, this);\n this.graph.off('tools:show', this.showTools, this);\n this.graph.off('tools:remove', this.removeTools, this);\n this.tools = null;\n }\n return this;\n }\n hideTools() {\n if (this.tools) {\n this.tools.hide();\n }\n return this;\n }\n showTools() {\n if (this.tools) {\n this.tools.show();\n }\n return this;\n }\n renderTools() {\n const tools = this.cell.getTools();\n this.addTools(tools);\n return this;\n }\n notify(name, args) {\n this.trigger(name, args);\n this.graph.trigger(name, args);\n return this;\n }\n getEventArgs(e, x, y) {\n const view = this; // eslint-disable-line @typescript-eslint/no-this-alias\n const cell = view.cell;\n if (x == null || y == null) {\n return { e, view, cell };\n }\n return { e, x, y, view, cell };\n }\n onClick(e, x, y) {\n this.notify('cell:click', this.getEventArgs(e, x, y));\n }\n onDblClick(e, x, y) {\n this.notify('cell:dblclick', this.getEventArgs(e, x, y));\n }\n onContextMenu(e, x, y) {\n this.notify('cell:contextmenu', this.getEventArgs(e, x, y));\n }\n onMouseDown(e, x, y) {\n if (this.cell.model) {\n this.cachedModelForMouseEvent = this.cell.model;\n this.cachedModelForMouseEvent.startBatch('mouse');\n }\n this.notify('cell:mousedown', this.getEventArgs(e, x, y));\n }\n onMouseUp(e, x, y) {\n this.notify('cell:mouseup', this.getEventArgs(e, x, y));\n if (this.cachedModelForMouseEvent) {\n this.cachedModelForMouseEvent.stopBatch('mouse', { cell: this.cell });\n this.cachedModelForMouseEvent = null;\n }\n }\n onMouseMove(e, x, y) {\n this.notify('cell:mousemove', this.getEventArgs(e, x, y));\n }\n onMouseOver(e) {\n this.notify('cell:mouseover', this.getEventArgs(e));\n }\n onMouseOut(e) {\n this.notify('cell:mouseout', this.getEventArgs(e));\n }\n onMouseEnter(e) {\n this.notify('cell:mouseenter', this.getEventArgs(e));\n }\n onMouseLeave(e) {\n this.notify('cell:mouseleave', this.getEventArgs(e));\n }\n onMouseWheel(e, x, y, delta) {\n this.notify('cell:mousewheel', Object.assign({ delta }, this.getEventArgs(e, x, y)));\n }\n onCustomEvent(e, name, x, y) {\n this.notify('cell:customevent', Object.assign({ name }, this.getEventArgs(e, x, y)));\n this.notify(name, Object.assign({}, this.getEventArgs(e, x, y)));\n }\n onMagnetMouseDown(e, magnet, x, y) { }\n onMagnetDblClick(e, magnet, x, y) { }\n onMagnetContextMenu(e, magnet, x, y) { }\n onLabelMouseDown(e, x, y) { }\n checkMouseleave(e) {\n const graph = this.graph;\n if (graph.renderer.isAsync()) {\n // Do the updates of the current view synchronously now\n graph.renderer.dumpView(this);\n }\n const target = this.getEventTarget(e, { fromPoint: true });\n const view = graph.renderer.findViewByElem(target);\n if (view === this) {\n return;\n }\n // Leaving the current view\n this.onMouseLeave(e);\n if (!view) {\n return;\n }\n // Entering another view\n view.onMouseEnter(e);\n }\n}\nCellView.defaults = {\n isSvgElement: true,\n rootSelector: 'root',\n priority: 0,\n bootstrap: [],\n actions: {},\n};\n(function (CellView) {\n CellView.Flag = FlagManager;\n CellView.Attr = AttrManager;\n})(CellView || (CellView = {}));\n(function (CellView) {\n CellView.toStringTag = `X6.${CellView.name}`;\n function isCellView(instance) {\n if (instance == null) {\n return false;\n }\n if (instance instanceof CellView) {\n return true;\n }\n const tag = instance[Symbol.toStringTag];\n const view = instance;\n if ((tag == null || tag === CellView.toStringTag) &&\n typeof view.isNodeView === 'function' &&\n typeof view.isEdgeView === 'function' &&\n typeof view.confirmUpdate === 'function') {\n return true;\n }\n return false;\n }\n CellView.isCellView = isCellView;\n})(CellView || (CellView = {}));\n// decorators\n// ----\n(function (CellView) {\n function priority(value) {\n return function (ctor) {\n ctor.config({ priority: value });\n };\n }\n CellView.priority = priority;\n function bootstrap(actions) {\n return function (ctor) {\n ctor.config({ bootstrap: actions });\n };\n }\n CellView.bootstrap = bootstrap;\n})(CellView || (CellView = {}));\n(function (CellView) {\n CellView.registry = Registry.create({\n type: 'view',\n });\n})(CellView || (CellView = {}));\n//# sourceMappingURL=cell.js.map","import { Dom, ObjectExt, StringExt } from '../util';\nimport { NodeTool, EdgeTool } from '../registry/tool';\nimport { View } from './view';\nimport { CellView } from './cell';\nimport { Markup } from './markup';\nexport class ToolsView extends View {\n constructor(options = {}) {\n super();\n this.svgContainer = this.createContainer(true, options);\n this.htmlContainer = this.createContainer(false, options);\n this.config(options);\n }\n get name() {\n return this.options.name;\n }\n get graph() {\n return this.cellView.graph;\n }\n get cell() {\n return this.cellView.cell;\n }\n get [Symbol.toStringTag]() {\n return ToolsView.toStringTag;\n }\n createContainer(svg, options) {\n const container = svg\n ? View.createElement('g', true)\n : View.createElement('div', false);\n Dom.addClass(container, this.prefixClassName('cell-tools'));\n if (options.className) {\n Dom.addClass(container, options.className);\n }\n return container;\n }\n config(options) {\n this.options = Object.assign(Object.assign({}, this.options), options);\n if (!CellView.isCellView(options.view) || options.view === this.cellView) {\n return this;\n }\n this.cellView = options.view;\n if (this.cell.isEdge()) {\n Dom.addClass(this.svgContainer, this.prefixClassName('edge-tools'));\n Dom.addClass(this.htmlContainer, this.prefixClassName('edge-tools'));\n }\n else if (this.cell.isNode()) {\n Dom.addClass(this.svgContainer, this.prefixClassName('node-tools'));\n Dom.addClass(this.htmlContainer, this.prefixClassName('node-tools'));\n }\n this.svgContainer.setAttribute('data-cell-id', this.cell.id);\n this.htmlContainer.setAttribute('data-cell-id', this.cell.id);\n if (this.name) {\n this.svgContainer.setAttribute('data-tools-name', this.name);\n this.htmlContainer.setAttribute('data-tools-name', this.name);\n }\n const tools = this.options.items;\n if (!Array.isArray(tools)) {\n return this;\n }\n this.tools = [];\n const normalizedTools = [];\n tools.forEach((meta) => {\n if (ToolsView.ToolItem.isToolItem(meta)) {\n if (meta.name === 'vertices') {\n normalizedTools.unshift(meta);\n }\n else {\n normalizedTools.push(meta);\n }\n }\n else {\n const name = typeof meta === 'object' ? meta.name : meta;\n if (name === 'vertices') {\n normalizedTools.unshift(meta);\n }\n else {\n normalizedTools.push(meta);\n }\n }\n });\n for (let i = 0; i < normalizedTools.length; i += 1) {\n const meta = normalizedTools[i];\n let tool;\n if (ToolsView.ToolItem.isToolItem(meta)) {\n tool = meta;\n }\n else {\n const name = typeof meta === 'object' ? meta.name : meta;\n const args = typeof meta === 'object' ? meta.args || {} : {};\n if (name) {\n if (this.cell.isNode()) {\n const ctor = NodeTool.registry.get(name);\n if (ctor) {\n tool = new ctor(args); // eslint-disable-line\n }\n else {\n return NodeTool.registry.onNotFound(name);\n }\n }\n else if (this.cell.isEdge()) {\n const ctor = EdgeTool.registry.get(name);\n if (ctor) {\n tool = new ctor(args); // eslint-disable-line\n }\n else {\n return EdgeTool.registry.onNotFound(name);\n }\n }\n }\n }\n if (tool) {\n tool.config(this.cellView, this);\n tool.render();\n const container = tool.options.isSVGElement !== false\n ? this.svgContainer\n : this.htmlContainer;\n container.appendChild(tool.container);\n this.tools.push(tool);\n }\n }\n return this;\n }\n update(options = {}) {\n const tools = this.tools;\n if (tools) {\n tools.forEach((tool) => {\n if (options.toolId !== tool.cid && tool.isVisible()) {\n tool.update();\n }\n });\n }\n return this;\n }\n focus(focusedTool) {\n const tools = this.tools;\n if (tools) {\n tools.forEach((tool) => {\n if (focusedTool === tool) {\n tool.show();\n }\n else {\n tool.hide();\n }\n });\n }\n return this;\n }\n blur(blurredTool) {\n const tools = this.tools;\n if (tools) {\n tools.forEach((tool) => {\n if (tool !== blurredTool && !tool.isVisible()) {\n tool.show();\n tool.update();\n }\n });\n }\n return this;\n }\n hide() {\n return this.focus(null);\n }\n show() {\n return this.blur(null);\n }\n remove() {\n const tools = this.tools;\n if (tools) {\n tools.forEach((tool) => tool.remove());\n this.tools = null;\n }\n Dom.remove(this.svgContainer);\n Dom.remove(this.htmlContainer);\n return super.remove();\n }\n mount() {\n const tools = this.tools;\n const cellView = this.cellView;\n if (cellView && tools) {\n const hasSVG = tools.some((tool) => tool.options.isSVGElement !== false);\n const hasHTML = tools.some((tool) => tool.options.isSVGElement === false);\n if (hasSVG) {\n const parent = this.options.local\n ? cellView.container\n : cellView.graph.view.decorator;\n parent.appendChild(this.svgContainer);\n }\n if (hasHTML) {\n this.graph.container.appendChild(this.htmlContainer);\n }\n }\n return this;\n }\n}\n(function (ToolsView) {\n ToolsView.toStringTag = `X6.${ToolsView.name}`;\n function isToolsView(instance) {\n if (instance == null) {\n return false;\n }\n if (instance instanceof ToolsView) {\n return true;\n }\n const tag = instance[Symbol.toStringTag];\n const view = instance;\n if ((tag == null || tag === ToolsView.toStringTag) &&\n view.graph != null &&\n view.cell != null &&\n typeof view.config === 'function' &&\n typeof view.update === 'function' &&\n typeof view.focus === 'function' &&\n typeof view.blur === 'function' &&\n typeof view.show === 'function' &&\n typeof view.hide === 'function') {\n return true;\n }\n return false;\n }\n ToolsView.isToolsView = isToolsView;\n})(ToolsView || (ToolsView = {}));\n(function (ToolsView) {\n class ToolItem extends View {\n constructor(options = {}) {\n super();\n this.visible = true;\n this.options = this.getOptions(options);\n this.container = View.createElement(this.options.tagName || 'g', this.options.isSVGElement !== false);\n Dom.addClass(this.container, this.prefixClassName('cell-tool'));\n if (typeof this.options.className === 'string') {\n Dom.addClass(this.container, this.options.className);\n }\n this.init();\n }\n static getDefaults() {\n return this.defaults;\n }\n static config(options) {\n this.defaults = this.getOptions(options);\n }\n static getOptions(options) {\n return ObjectExt.merge(ObjectExt.cloneDeep(this.getDefaults()), options);\n }\n get graph() {\n return this.cellView.graph;\n }\n get cell() {\n return this.cellView.cell;\n }\n get name() {\n return this.options.name;\n }\n get [Symbol.toStringTag]() {\n return ToolItem.toStringTag;\n }\n init() { }\n getOptions(options) {\n const ctor = this.constructor;\n return ctor.getOptions(options);\n }\n delegateEvents() {\n if (this.options.events) {\n super.delegateEvents(this.options.events);\n }\n return this;\n }\n config(view, toolsView) {\n this.cellView = view;\n this.parent = toolsView;\n this.stamp(this.container);\n if (this.cell.isEdge()) {\n Dom.addClass(this.container, this.prefixClassName('edge-tool'));\n }\n else if (this.cell.isNode()) {\n Dom.addClass(this.container, this.prefixClassName('node-tool'));\n }\n if (this.name) {\n this.container.setAttribute('data-tool-name', this.name);\n }\n this.delegateEvents();\n return this;\n }\n render() {\n this.empty();\n const markup = this.options.markup;\n if (markup) {\n const meta = Markup.isStringMarkup(markup)\n ? Markup.parseStringMarkup(markup)\n : Markup.parseJSONMarkup(markup);\n this.container.appendChild(meta.fragment);\n this.childNodes = meta.selectors;\n }\n this.onRender();\n return this;\n }\n onRender() { }\n update() {\n return this;\n }\n stamp(elem = this.container) {\n if (elem) {\n elem.setAttribute('data-cell-id', this.cellView.cell.id);\n }\n }\n show() {\n this.container.style.display = '';\n this.visible = true;\n return this;\n }\n hide() {\n this.container.style.display = 'none';\n this.visible = false;\n return this;\n }\n isVisible() {\n return !!this.visible;\n }\n focus() {\n const opacity = this.options.focusOpacity;\n if (opacity != null && Number.isFinite(opacity)) {\n this.container.style.opacity = `${opacity}`;\n }\n this.parent.focus(this);\n return this;\n }\n blur() {\n this.container.style.opacity = '';\n this.parent.blur(this);\n return this;\n }\n guard(evt) {\n if (this.graph == null || this.cellView == null) {\n return true;\n }\n return this.graph.view.guard(evt, this.cellView);\n }\n }\n // #region static\n ToolItem.defaults = {\n isSVGElement: true,\n tagName: 'g',\n };\n ToolsView.ToolItem = ToolItem;\n (function (ToolItem) {\n let counter = 0;\n function getClassName(name) {\n if (name) {\n return StringExt.pascalCase(name);\n }\n counter += 1;\n return `CustomTool${counter}`;\n }\n function define(options) {\n const tool = ObjectExt.createClass(getClassName(options.name), this);\n tool.config(options);\n return tool;\n }\n ToolItem.define = define;\n })(ToolItem = ToolsView.ToolItem || (ToolsView.ToolItem = {}));\n (function (ToolItem) {\n ToolItem.toStringTag = `X6.${ToolItem.name}`;\n function isToolItem(instance) {\n if (instance == null) {\n return false;\n }\n if (instance instanceof ToolItem) {\n return true;\n }\n const tag = instance[Symbol.toStringTag];\n const view = instance;\n if ((tag == null || tag === ToolItem.toStringTag) &&\n view.graph != null &&\n view.cell != null &&\n typeof view.config === 'function' &&\n typeof view.update === 'function' &&\n typeof view.focus === 'function' &&\n typeof view.blur === 'function' &&\n typeof view.show === 'function' &&\n typeof view.hide === 'function' &&\n typeof view.isVisible === 'function') {\n return true;\n }\n return false;\n }\n ToolItem.isToolItem = isToolItem;\n })(ToolItem = ToolsView.ToolItem || (ToolsView.ToolItem = {}));\n})(ToolsView || (ToolsView = {}));\n//# sourceMappingURL=tool.js.map","import { FunctionExt } from '../../util';\nimport { ConnectionStrategy } from '../connection-strategy';\nexport function getAnchor(pos, terminalView, terminalMagnet, type) {\n const end = FunctionExt.call(ConnectionStrategy.presets.pinRelative, this.graph, {}, terminalView, terminalMagnet, pos, this.cell, type, {});\n return end.anchor;\n}\nexport function getViewBBox(view, quick) {\n if (quick) {\n return view.cell.getBBox();\n }\n return view.cell.isEdge()\n ? view.getConnection().bbox()\n : view.getUnrotatedBBoxOfElement(view.container);\n}\n//# sourceMappingURL=util.js.map","import { Point } from '../../geometry';\nimport { Dom, NumberExt, FunctionExt } from '../../util';\nimport { ToolsView } from '../../view/tool';\nimport * as Util from './util';\nexport class Button extends ToolsView.ToolItem {\n onRender() {\n Dom.addClass(this.container, this.prefixClassName('cell-tool-button'));\n this.update();\n }\n update() {\n this.updatePosition();\n return this;\n }\n updatePosition() {\n const view = this.cellView;\n const matrix = view.cell.isEdge()\n ? this.getEdgeMatrix()\n : this.getNodeMatrix();\n Dom.transform(this.container, matrix, { absolute: true });\n }\n getNodeMatrix() {\n const view = this.cellView;\n const options = this.options;\n let { x = 0, y = 0 } = options;\n const { offset, useCellGeometry, rotate } = options;\n let bbox = Util.getViewBBox(view, useCellGeometry);\n const angle = view.cell.getAngle();\n if (!rotate) {\n bbox = bbox.bbox(angle);\n }\n let offsetX = 0;\n let offsetY = 0;\n if (typeof offset === 'number') {\n offsetX = offset;\n offsetY = offset;\n }\n else if (typeof offset === 'object') {\n offsetX = offset.x;\n offsetY = offset.y;\n }\n x = NumberExt.normalizePercentage(x, bbox.width);\n y = NumberExt.normalizePercentage(y, bbox.height);\n let matrix = Dom.createSVGMatrix().translate(bbox.x + bbox.width / 2, bbox.y + bbox.height / 2);\n if (rotate) {\n matrix = matrix.rotate(angle);\n }\n matrix = matrix.translate(x + offsetX - bbox.width / 2, y + offsetY - bbox.height / 2);\n return matrix;\n }\n getEdgeMatrix() {\n const view = this.cellView;\n const options = this.options;\n const { offset = 0, distance = 0, rotate } = options;\n let tangent;\n let position;\n let angle;\n if (NumberExt.isPercentage(distance)) {\n tangent = view.getTangentAtRatio(parseFloat(distance) / 100);\n }\n else {\n tangent = view.getTangentAtLength(distance);\n }\n if (tangent) {\n position = tangent.start;\n angle = tangent.vector().vectorAngle(new Point(1, 0)) || 0;\n }\n else {\n position = view.getConnection().start;\n angle = 0;\n }\n let matrix = Dom.createSVGMatrix()\n .translate(position.x, position.y)\n .rotate(angle);\n if (typeof offset === 'object') {\n matrix = matrix.translate(offset.x || 0, offset.y || 0);\n }\n else {\n matrix = matrix.translate(0, offset);\n }\n if (!rotate) {\n matrix = matrix.rotate(-angle);\n }\n return matrix;\n }\n onMouseDown(e) {\n if (this.guard(e)) {\n return;\n }\n e.stopPropagation();\n e.preventDefault();\n const onClick = this.options.onClick;\n if (typeof onClick === 'function') {\n FunctionExt.call(onClick, this.cellView, {\n e,\n view: this.cellView,\n cell: this.cellView.cell,\n btn: this,\n });\n }\n }\n}\n(function (Button) {\n Button.config({\n name: 'button',\n events: {\n mousedown: 'onMouseDown',\n touchstart: 'onMouseDown',\n },\n });\n})(Button || (Button = {}));\n(function (Button) {\n Button.Remove = Button.define({\n name: 'button-remove',\n markup: [\n {\n tagName: 'circle',\n selector: 'button',\n attrs: {\n r: 7,\n fill: '#FF1D00',\n cursor: 'pointer',\n },\n },\n {\n tagName: 'path',\n selector: 'icon',\n attrs: {\n d: 'M -3 -3 3 3 M -3 3 3 -3',\n fill: 'none',\n stroke: '#FFFFFF',\n 'stroke-width': 2,\n 'pointer-events': 'none',\n },\n },\n ],\n distance: 60,\n offset: 0,\n onClick({ view, btn }) {\n btn.parent.remove();\n view.cell.remove({ ui: true, toolId: btn.cid });\n },\n });\n})(Button || (Button = {}));\n//# sourceMappingURL=button.js.map","var __rest = (this && this.__rest) || function (s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n t[p[i]] = s[p[i]];\n }\n return t;\n};\nimport { NumberExt, Dom } from '../../util';\nimport { ToolsView } from '../../view/tool';\nimport * as Util from './util';\nexport class Boundary extends ToolsView.ToolItem {\n onRender() {\n Dom.addClass(this.container, this.prefixClassName('cell-tool-boundary'));\n if (this.options.attrs) {\n const _a = this.options.attrs, { class: className } = _a, attrs = __rest(_a, [\"class\"]);\n Dom.attr(this.container, Dom.kebablizeAttrs(attrs));\n if (className) {\n Dom.addClass(this.container, className);\n }\n }\n this.update();\n }\n update() {\n const view = this.cellView;\n const options = this.options;\n const { useCellGeometry, rotate } = options;\n const padding = NumberExt.normalizeSides(options.padding);\n let bbox = Util.getViewBBox(view, useCellGeometry).moveAndExpand({\n x: -padding.left,\n y: -padding.top,\n width: padding.left + padding.right,\n height: padding.top + padding.bottom,\n });\n const cell = view.cell;\n if (cell.isNode()) {\n const angle = cell.getAngle();\n if (angle) {\n if (rotate) {\n const origin = cell.getBBox().getCenter();\n Dom.rotate(this.container, angle, origin.x, origin.y, {\n absolute: true,\n });\n }\n else {\n bbox = bbox.bbox(angle);\n }\n }\n }\n Dom.attr(this.container, bbox.toJSON());\n return this;\n }\n}\n(function (Boundary) {\n Boundary.config({\n name: 'boundary',\n tagName: 'rect',\n padding: 10,\n attrs: {\n fill: 'none',\n stroke: '#333',\n 'stroke-width': 0.5,\n 'stroke-dasharray': '5, 5',\n 'pointer-events': 'none',\n },\n });\n})(Boundary || (Boundary = {}));\n//# sourceMappingURL=boundary.js.map","import { Util } from '../../global/util';\nimport { Point } from '../../geometry';\nimport { View } from '../../view/view';\nimport { ToolsView } from '../../view/tool';\nexport class Vertices extends ToolsView.ToolItem {\n constructor() {\n super(...arguments);\n this.handles = [];\n }\n get vertices() {\n return this.cellView.cell.getVertices();\n }\n onRender() {\n this.addClass(this.prefixClassName('edge-tool-vertices'));\n if (this.options.addable) {\n this.updatePath();\n }\n this.resetHandles();\n this.renderHandles();\n return this;\n }\n update() {\n const vertices = this.vertices;\n if (vertices.length === this.handles.length) {\n this.updateHandles();\n }\n else {\n this.resetHandles();\n this.renderHandles();\n }\n if (this.options.addable) {\n this.updatePath();\n }\n return this;\n }\n resetHandles() {\n const handles = this.handles;\n this.handles = [];\n if (handles) {\n handles.forEach((handle) => {\n this.stopHandleListening(handle);\n handle.remove();\n });\n }\n }\n renderHandles() {\n const vertices = this.vertices;\n for (let i = 0, l = vertices.length; i < l; i += 1) {\n const vertex = vertices[i];\n const createHandle = this.options.createHandle;\n const processHandle = this.options.processHandle;\n const handle = createHandle({\n index: i,\n graph: this.graph,\n guard: (evt) => this.guard(evt),\n attrs: this.options.attrs || {},\n });\n if (processHandle) {\n processHandle(handle);\n }\n this.graph.hook.onToolItemCreated({\n name: 'vertices',\n cell: this.cell,\n view: this.cellView,\n tool: handle,\n });\n handle.updatePosition(vertex.x, vertex.y);\n this.stamp(handle.container);\n this.container.appendChild(handle.container);\n this.handles.push(handle);\n this.startHandleListening(handle);\n }\n }\n updateHandles() {\n const vertices = this.vertices;\n for (let i = 0, l = vertices.length; i < l; i += 1) {\n const vertex = vertices[i];\n const handle = this.handles[i];\n if (handle) {\n handle.updatePosition(vertex.x, vertex.y);\n }\n }\n }\n updatePath() {\n const connection = this.childNodes.connection;\n if (connection) {\n connection.setAttribute('d', this.cellView.getConnectionPathData());\n }\n }\n startHandleListening(handle) {\n const edgeView = this.cellView;\n if (edgeView.can('vertexMovable')) {\n handle.on('change', this.onHandleChange, this);\n handle.on('changing', this.onHandleChanging, this);\n handle.on('changed', this.onHandleChanged, this);\n }\n if (edgeView.can('vertexDeletable')) {\n handle.on('remove', this.onHandleRemove, this);\n }\n }\n stopHandleListening(handle) {\n const edgeView = this.cellView;\n if (edgeView.can('vertexMovable')) {\n handle.off('change', this.onHandleChange, this);\n handle.off('changing', this.onHandleChanging, this);\n handle.off('changed', this.onHandleChanged, this);\n }\n if (edgeView.can('vertexDeletable')) {\n handle.off('remove', this.onHandleRemove, this);\n }\n }\n getNeighborPoints(index) {\n const edgeView = this.cellView;\n const vertices = this.vertices;\n const prev = index > 0 ? vertices[index - 1] : edgeView.sourceAnchor;\n const next = index < vertices.length - 1 ? vertices[index + 1] : edgeView.targetAnchor;\n return {\n prev: Point.create(prev),\n next: Point.create(next),\n };\n }\n getMouseEventArgs(evt) {\n const e = this.normalizeEvent(evt);\n const { x, y } = this.graph.snapToGrid(e.clientX, e.clientY);\n return { e, x, y };\n }\n onHandleChange({ e }) {\n this.focus();\n const edgeView = this.cellView;\n edgeView.cell.startBatch('move-vertex', { ui: true, toolId: this.cid });\n if (!this.options.stopPropagation) {\n const { e: evt, x, y } = this.getMouseEventArgs(e);\n edgeView.notifyMouseDown(evt, x, y);\n }\n }\n onHandleChanging({ handle, e, }) {\n const edgeView = this.cellView;\n const index = handle.options.index;\n const { e: evt, x, y } = this.getMouseEventArgs(e);\n const vertex = { x, y };\n this.snapVertex(vertex, index);\n edgeView.cell.setVertexAt(index, vertex, { ui: true, toolId: this.cid });\n handle.updatePosition(vertex.x, vertex.y);\n if (!this.options.stopPropagation) {\n edgeView.notifyMouseMove(evt, x, y);\n }\n }\n onHandleChanged({ e }) {\n const options = this.options;\n const edgeView = this.cellView;\n if (options.addable) {\n this.updatePath();\n }\n if (!options.removeRedundancies) {\n return;\n }\n const verticesRemoved = edgeView.removeRedundantLinearVertices({\n ui: true,\n toolId: this.cid,\n });\n if (verticesRemoved) {\n this.render();\n }\n this.blur();\n edgeView.cell.stopBatch('move-vertex', { ui: true, toolId: this.cid });\n if (this.eventData(e).vertexAdded) {\n edgeView.cell.stopBatch('add-vertex', { ui: true, toolId: this.cid });\n }\n const { e: evt, x, y } = this.getMouseEventArgs(e);\n if (!this.options.stopPropagation) {\n edgeView.notifyMouseUp(evt, x, y);\n }\n edgeView.checkMouseleave(evt);\n options.onChanged && options.onChanged({ edge: edgeView.cell, edgeView });\n }\n snapVertex(vertex, index) {\n const snapRadius = this.options.snapRadius || 0;\n if (snapRadius > 0) {\n const neighbors = this.getNeighborPoints(index);\n const prev = neighbors.prev;\n const next = neighbors.next;\n if (Math.abs(vertex.x - prev.x) < snapRadius) {\n vertex.x = prev.x;\n }\n else if (Math.abs(vertex.x - next.x) < snapRadius) {\n vertex.x = next.x;\n }\n if (Math.abs(vertex.y - prev.y) < snapRadius) {\n vertex.y = neighbors.prev.y;\n }\n else if (Math.abs(vertex.y - next.y) < snapRadius) {\n vertex.y = next.y;\n }\n }\n }\n onHandleRemove({ handle, e }) {\n if (this.options.removable) {\n const index = handle.options.index;\n const edgeView = this.cellView;\n edgeView.cell.removeVertexAt(index, { ui: true });\n if (this.options.addable) {\n this.updatePath();\n }\n edgeView.checkMouseleave(this.normalizeEvent(e));\n }\n }\n onPathMouseDown(evt) {\n const edgeView = this.cellView;\n if (this.guard(evt) ||\n !this.options.addable ||\n !edgeView.can('vertexAddable')) {\n return;\n }\n evt.stopPropagation();\n evt.preventDefault();\n const e = this.normalizeEvent(evt);\n const vertex = this.graph.snapToGrid(e.clientX, e.clientY).toJSON();\n edgeView.cell.startBatch('add-vertex', { ui: true, toolId: this.cid });\n const index = edgeView.getVertexIndex(vertex.x, vertex.y);\n this.snapVertex(vertex, index);\n edgeView.cell.insertVertex(vertex, index, {\n ui: true,\n toolId: this.cid,\n });\n this.render();\n const handle = this.handles[index];\n this.eventData(e, { vertexAdded: true });\n handle.onMouseDown(e);\n }\n onRemove() {\n this.resetHandles();\n }\n}\n(function (Vertices) {\n class Handle extends View {\n constructor(options) {\n super();\n this.options = options;\n this.render();\n this.delegateEvents({\n mousedown: 'onMouseDown',\n touchstart: 'onMouseDown',\n dblclick: 'onDoubleClick',\n });\n }\n get graph() {\n return this.options.graph;\n }\n render() {\n this.container = View.createElement('circle', true);\n const attrs = this.options.attrs;\n if (typeof attrs === 'function') {\n const defaults = Vertices.getDefaults();\n this.setAttrs(Object.assign(Object.assign({}, defaults.attrs), attrs(this)));\n }\n else {\n this.setAttrs(attrs);\n }\n this.addClass(this.prefixClassName('edge-tool-vertex'));\n }\n updatePosition(x, y) {\n this.setAttrs({ cx: x, cy: y });\n }\n onMouseDown(evt) {\n if (this.options.guard(evt)) {\n return;\n }\n evt.stopPropagation();\n evt.preventDefault();\n this.graph.view.undelegateEvents();\n this.delegateDocumentEvents({\n mousemove: 'onMouseMove',\n touchmove: 'onMouseMove',\n mouseup: 'onMouseUp',\n touchend: 'onMouseUp',\n touchcancel: 'onMouseUp',\n }, evt.data);\n this.emit('change', { e: evt, handle: this });\n }\n onMouseMove(evt) {\n this.emit('changing', { e: evt, handle: this });\n }\n onMouseUp(evt) {\n this.emit('changed', { e: evt, handle: this });\n this.undelegateDocumentEvents();\n this.graph.view.delegateEvents();\n }\n onDoubleClick(evt) {\n this.emit('remove', { e: evt, handle: this });\n }\n }\n Vertices.Handle = Handle;\n})(Vertices || (Vertices = {}));\n(function (Vertices) {\n const pathClassName = Util.prefix('edge-tool-vertex-path');\n Vertices.config({\n name: 'vertices',\n snapRadius: 20,\n addable: true,\n removable: true,\n removeRedundancies: true,\n stopPropagation: true,\n attrs: {\n r: 6,\n fill: '#333',\n stroke: '#fff',\n cursor: 'move',\n 'stroke-width': 2,\n },\n createHandle: (options) => new Vertices.Handle(options),\n markup: [\n {\n tagName: 'path',\n selector: 'connection',\n className: pathClassName,\n attrs: {\n fill: 'none',\n stroke: 'transparent',\n 'stroke-width': 10,\n cursor: 'pointer',\n },\n },\n ],\n events: {\n [`mousedown .${pathClassName}`]: 'onPathMouseDown',\n [`touchstart .${pathClassName}`]: 'onPathMouseDown',\n },\n });\n})(Vertices || (Vertices = {}));\n//# sourceMappingURL=vertices.js.map","import { Dom, ObjectExt, FunctionExt } from '../../util';\nimport { Point, Line } from '../../geometry';\nimport { View } from '../../view/view';\nimport { ToolsView } from '../../view/tool';\nimport * as Util from './util';\nexport class Segments extends ToolsView.ToolItem {\n constructor() {\n super(...arguments);\n this.handles = [];\n }\n get vertices() {\n return this.cellView.cell.getVertices();\n }\n update() {\n this.render();\n return this;\n }\n onRender() {\n Dom.addClass(this.container, this.prefixClassName('edge-tool-segments'));\n this.resetHandles();\n const edgeView = this.cellView;\n const vertices = [...this.vertices];\n vertices.unshift(edgeView.sourcePoint);\n vertices.push(edgeView.targetPoint);\n for (let i = 0, l = vertices.length; i < l - 1; i += 1) {\n const vertex = vertices[i];\n const nextVertex = vertices[i + 1];\n const handle = this.renderHandle(vertex, nextVertex, i);\n this.stamp(handle.container);\n this.handles.push(handle);\n }\n return this;\n }\n renderHandle(vertex, nextVertex, index) {\n const handle = this.options.createHandle({\n index,\n graph: this.graph,\n guard: (evt) => this.guard(evt),\n attrs: this.options.attrs || {},\n });\n if (this.options.processHandle) {\n this.options.processHandle(handle);\n }\n this.graph.hook.onToolItemCreated({\n name: 'segments',\n cell: this.cell,\n view: this.cellView,\n tool: handle,\n });\n this.updateHandle(handle, vertex, nextVertex);\n this.container.appendChild(handle.container);\n this.startHandleListening(handle);\n return handle;\n }\n startHandleListening(handle) {\n handle.on('change', this.onHandleChange, this);\n handle.on('changing', this.onHandleChanging, this);\n handle.on('changed', this.onHandleChanged, this);\n }\n stopHandleListening(handle) {\n handle.off('change', this.onHandleChange, this);\n handle.off('changing', this.onHandleChanging, this);\n handle.off('changed', this.onHandleChanged, this);\n }\n resetHandles() {\n const handles = this.handles;\n this.handles = [];\n if (handles) {\n handles.forEach((handle) => {\n this.stopHandleListening(handle);\n handle.remove();\n });\n }\n }\n shiftHandleIndexes(delta) {\n const handles = this.handles;\n for (let i = 0, n = handles.length; i < n; i += 1) {\n handles[i].options.index += delta;\n }\n }\n resetAnchor(type, anchor) {\n const edge = this.cellView.cell;\n const options = {\n ui: true,\n toolId: this.cid,\n };\n if (anchor) {\n edge.prop([type, 'anchor'], anchor, options);\n }\n else {\n edge.removeProp([type, 'anchor'], options);\n }\n }\n snapHandle(handle, position, data) {\n const axis = handle.options.axis;\n const index = handle.options.index;\n const edgeView = this.cellView;\n const edge = edgeView.cell;\n const vertices = edge.getVertices();\n const prev = vertices[index - 2] || data.sourceAnchor;\n const next = vertices[index + 1] || data.targetAnchor;\n const snapRadius = this.options.snapRadius;\n if (Math.abs(position[axis] - prev[axis]) < snapRadius) {\n position[axis] = prev[axis];\n }\n else if (Math.abs(position[axis] - next[axis]) < snapRadius) {\n position[axis] = next[axis];\n }\n return position;\n }\n onHandleChanging({ handle, e, }) {\n const graph = this.graph;\n const options = this.options;\n const edgeView = this.cellView;\n const anchorFn = options.anchor;\n const axis = handle.options.axis;\n const index = handle.options.index - 1;\n const data = this.getEventData(e);\n const evt = this.normalizeEvent(e);\n const coords = graph.snapToGrid(evt.clientX, evt.clientY);\n const position = this.snapHandle(handle, coords.clone(), data);\n const vertices = ObjectExt.cloneDeep(this.vertices);\n let vertex = vertices[index];\n let nextVertex = vertices[index + 1];\n // First Segment\n const sourceView = edgeView.sourceView;\n const sourceBBox = edgeView.sourceBBox;\n let changeSourceAnchor = false;\n let deleteSourceAnchor = false;\n if (!vertex) {\n vertex = edgeView.sourceAnchor.toJSON();\n vertex[axis] = position[axis];\n if (sourceBBox.containsPoint(vertex)) {\n changeSourceAnchor = true;\n }\n else {\n vertices.unshift(vertex);\n this.shiftHandleIndexes(1);\n deleteSourceAnchor = true;\n }\n }\n else if (index === 0) {\n if (sourceBBox.containsPoint(vertex)) {\n vertices.shift();\n this.shiftHandleIndexes(-1);\n changeSourceAnchor = true;\n }\n else {\n vertex[axis] = position[axis];\n deleteSourceAnchor = true;\n }\n }\n else {\n vertex[axis] = position[axis];\n }\n if (typeof anchorFn === 'function' && sourceView) {\n if (changeSourceAnchor) {\n const sourceAnchorPosition = data.sourceAnchor.clone();\n sourceAnchorPosition[axis] = position[axis];\n const sourceAnchor = FunctionExt.call(anchorFn, edgeView, sourceAnchorPosition, sourceView, edgeView.sourceMagnet || sourceView.container, 'source', edgeView, this);\n this.resetAnchor('source', sourceAnchor);\n }\n if (deleteSourceAnchor) {\n this.resetAnchor('source', data.sourceAnchorDef);\n }\n }\n // Last segment\n const targetView = edgeView.targetView;\n const targetBBox = edgeView.targetBBox;\n let changeTargetAnchor = false;\n let deleteTargetAnchor = false;\n if (!nextVertex) {\n nextVertex = edgeView.targetAnchor.toJSON();\n nextVertex[axis] = position[axis];\n if (targetBBox.containsPoint(nextVertex)) {\n changeTargetAnchor = true;\n }\n else {\n vertices.push(nextVertex);\n deleteTargetAnchor = true;\n }\n }\n else if (index === vertices.length - 2) {\n if (targetBBox.containsPoint(nextVertex)) {\n vertices.pop();\n changeTargetAnchor = true;\n }\n else {\n nextVertex[axis] = position[axis];\n deleteTargetAnchor = true;\n }\n }\n else {\n nextVertex[axis] = position[axis];\n }\n if (typeof anchorFn === 'function' && targetView) {\n if (changeTargetAnchor) {\n const targetAnchorPosition = data.targetAnchor.clone();\n targetAnchorPosition[axis] = position[axis];\n const targetAnchor = FunctionExt.call(anchorFn, edgeView, targetAnchorPosition, targetView, edgeView.targetMagnet || targetView.container, 'target', edgeView, this);\n this.resetAnchor('target', targetAnchor);\n }\n if (deleteTargetAnchor) {\n this.resetAnchor('target', data.targetAnchorDef);\n }\n }\n if (!Point.equalPoints(vertices, this.vertices)) {\n this.cellView.cell.setVertices(vertices, { ui: true, toolId: this.cid });\n }\n this.updateHandle(handle, vertex, nextVertex, 0);\n if (!options.stopPropagation) {\n edgeView.notifyMouseMove(evt, coords.x, coords.y);\n }\n }\n onHandleChange({ handle, e }) {\n const options = this.options;\n const handles = this.handles;\n const edgeView = this.cellView;\n const index = handle.options.index;\n if (!Array.isArray(handles)) {\n return;\n }\n for (let i = 0, n = handles.length; i < n; i += 1) {\n if (i !== index) {\n handles[i].hide();\n }\n }\n this.focus();\n this.setEventData(e, {\n sourceAnchor: edgeView.sourceAnchor.clone(),\n targetAnchor: edgeView.targetAnchor.clone(),\n sourceAnchorDef: ObjectExt.cloneDeep(this.cell.prop(['source', 'anchor'])),\n targetAnchorDef: ObjectExt.cloneDeep(this.cell.prop(['target', 'anchor'])),\n });\n this.cell.startBatch('move-segment', { ui: true, toolId: this.cid });\n if (!options.stopPropagation) {\n const normalizedEvent = this.normalizeEvent(e);\n const coords = this.graph.snapToGrid(normalizedEvent.clientX, normalizedEvent.clientY);\n edgeView.notifyMouseDown(normalizedEvent, coords.x, coords.y);\n }\n }\n onHandleChanged({ e }) {\n const options = this.options;\n const edgeView = this.cellView;\n if (options.removeRedundancies) {\n edgeView.removeRedundantLinearVertices({ ui: true, toolId: this.cid });\n }\n const normalizedEvent = this.normalizeEvent(e);\n const coords = this.graph.snapToGrid(normalizedEvent.clientX, normalizedEvent.clientY);\n this.render();\n this.blur();\n this.cell.stopBatch('move-segment', { ui: true, toolId: this.cid });\n if (!options.stopPropagation) {\n edgeView.notifyMouseUp(normalizedEvent, coords.x, coords.y);\n }\n edgeView.checkMouseleave(normalizedEvent);\n options.onChanged && options.onChanged({ edge: edgeView.cell, edgeView });\n }\n updateHandle(handle, vertex, nextVertex, offset = 0) {\n const precision = this.options.precision || 0;\n const vertical = Math.abs(vertex.x - nextVertex.x) < precision;\n const horizontal = Math.abs(vertex.y - nextVertex.y) < precision;\n if (vertical || horizontal) {\n const segmentLine = new Line(vertex, nextVertex);\n const length = segmentLine.length();\n if (length < this.options.threshold) {\n handle.hide();\n }\n else {\n const position = segmentLine.getCenter();\n const axis = vertical ? 'x' : 'y';\n position[axis] += offset || 0;\n const angle = segmentLine.vector().vectorAngle(new Point(1, 0));\n handle.updatePosition(position.x, position.y, angle, this.cellView);\n handle.show();\n handle.options.axis = axis;\n }\n }\n else {\n handle.hide();\n }\n }\n onRemove() {\n this.resetHandles();\n }\n}\n(function (Segments) {\n class Handle extends View {\n constructor(options) {\n super();\n this.options = options;\n this.render();\n this.delegateEvents({\n mousedown: 'onMouseDown',\n touchstart: 'onMouseDown',\n });\n }\n render() {\n this.container = View.createElement('rect', true);\n const attrs = this.options.attrs;\n if (typeof attrs === 'function') {\n const defaults = Segments.getDefaults();\n this.setAttrs(Object.assign(Object.assign({}, defaults.attrs), attrs(this)));\n }\n else {\n this.setAttrs(attrs);\n }\n this.addClass(this.prefixClassName('edge-tool-segment'));\n }\n updatePosition(x, y, angle, view) {\n const p = view.getClosestPoint(new Point(x, y)) || new Point(x, y);\n let matrix = Dom.createSVGMatrix().translate(p.x, p.y);\n if (!p.equals({ x, y })) {\n const line = new Line(x, y, p.x, p.y);\n let deg = line.vector().vectorAngle(new Point(1, 0));\n if (deg !== 0) {\n deg += 90;\n }\n matrix = matrix.rotate(deg);\n }\n else {\n matrix = matrix.rotate(angle);\n }\n this.setAttrs({\n transform: Dom.matrixToTransformString(matrix),\n cursor: angle % 180 === 0 ? 'row-resize' : 'col-resize',\n });\n }\n onMouseDown(evt) {\n if (this.options.guard(evt)) {\n return;\n }\n this.trigger('change', { e: evt, handle: this });\n evt.stopPropagation();\n evt.preventDefault();\n this.options.graph.view.undelegateEvents();\n this.delegateDocumentEvents({\n mousemove: 'onMouseMove',\n touchmove: 'onMouseMove',\n mouseup: 'onMouseUp',\n touchend: 'onMouseUp',\n touchcancel: 'onMouseUp',\n }, evt.data);\n }\n onMouseMove(evt) {\n this.emit('changing', { e: evt, handle: this });\n }\n onMouseUp(evt) {\n this.emit('changed', { e: evt, handle: this });\n this.undelegateDocumentEvents();\n this.options.graph.view.delegateEvents();\n }\n show() {\n this.container.style.display = '';\n }\n hide() {\n this.container.style.display = 'none';\n }\n }\n Segments.Handle = Handle;\n})(Segments || (Segments = {}));\n(function (Segments) {\n Segments.config({\n name: 'segments',\n precision: 0.5,\n threshold: 40,\n snapRadius: 10,\n stopPropagation: true,\n removeRedundancies: true,\n attrs: {\n width: 20,\n height: 8,\n x: -10,\n y: -4,\n rx: 4,\n ry: 4,\n fill: '#333',\n stroke: '#fff',\n 'stroke-width': 2,\n },\n createHandle: (options) => new Segments.Handle(options),\n anchor: Util.getAnchor,\n });\n})(Segments || (Segments = {}));\n//# sourceMappingURL=segments.js.map","import { Dom, FunctionExt } from '../../util';\nimport { Point } from '../../geometry';\nimport { ToolsView } from '../../view/tool';\nimport * as Util from './util';\nclass Anchor extends ToolsView.ToolItem {\n get type() {\n return this.options.type;\n }\n onRender() {\n Dom.addClass(this.container, this.prefixClassName(`edge-tool-${this.type}-anchor`));\n this.toggleArea(false);\n this.update();\n }\n update() {\n const type = this.type;\n const edgeView = this.cellView;\n const terminalView = edgeView.getTerminalView(type);\n if (terminalView) {\n this.updateAnchor();\n this.updateArea();\n this.container.style.display = '';\n }\n else {\n this.container.style.display = 'none';\n }\n return this;\n }\n updateAnchor() {\n const childNodes = this.childNodes;\n if (!childNodes) {\n return;\n }\n const anchorNode = childNodes.anchor;\n if (!anchorNode) {\n return;\n }\n const type = this.type;\n const edgeView = this.cellView;\n const options = this.options;\n const position = edgeView.getTerminalAnchor(type);\n const customAnchor = edgeView.cell.prop([type, 'anchor']);\n anchorNode.setAttribute('transform', `translate(${position.x}, ${position.y})`);\n const anchorAttrs = customAnchor\n ? options.customAnchorAttrs\n : options.defaultAnchorAttrs;\n if (anchorAttrs) {\n Object.keys(anchorAttrs).forEach((attrName) => {\n anchorNode.setAttribute(attrName, anchorAttrs[attrName]);\n });\n }\n }\n updateArea() {\n const childNodes = this.childNodes;\n if (!childNodes) {\n return;\n }\n const areaNode = childNodes.area;\n if (!areaNode) {\n return;\n }\n const type = this.type;\n const edgeView = this.cellView;\n const terminalView = edgeView.getTerminalView(type);\n if (terminalView) {\n const terminalCell = terminalView.cell;\n const magnet = edgeView.getTerminalMagnet(type);\n let padding = this.options.areaPadding || 0;\n if (!Number.isFinite(padding)) {\n padding = 0;\n }\n let bbox;\n let angle;\n let center;\n if (terminalView.isEdgeElement(magnet)) {\n bbox = terminalView.getBBox();\n angle = 0;\n center = bbox.getCenter();\n }\n else {\n bbox = terminalView.getUnrotatedBBoxOfElement(magnet);\n angle = terminalCell.getAngle();\n center = bbox.getCenter();\n if (angle) {\n center.rotate(-angle, terminalCell.getBBox().getCenter());\n }\n }\n bbox.inflate(padding);\n Dom.attr(areaNode, {\n x: -bbox.width / 2,\n y: -bbox.height / 2,\n width: bbox.width,\n height: bbox.height,\n transform: `translate(${center.x}, ${center.y}) rotate(${angle})`,\n });\n }\n }\n toggleArea(visible) {\n if (this.childNodes) {\n const elem = this.childNodes.area;\n if (elem) {\n elem.style.display = visible ? '' : 'none';\n }\n }\n }\n onMouseDown(evt) {\n if (this.guard(evt)) {\n return;\n }\n evt.stopPropagation();\n evt.preventDefault();\n this.graph.view.undelegateEvents();\n if (this.options.documentEvents) {\n this.delegateDocumentEvents(this.options.documentEvents);\n }\n this.focus();\n this.toggleArea(this.options.restrictArea);\n this.cell.startBatch('move-anchor', {\n ui: true,\n toolId: this.cid,\n });\n }\n resetAnchor(anchor) {\n const type = this.type;\n const cell = this.cell;\n if (anchor) {\n cell.prop([type, 'anchor'], anchor, {\n rewrite: true,\n ui: true,\n toolId: this.cid,\n });\n }\n else {\n cell.removeProp([type, 'anchor'], {\n ui: true,\n toolId: this.cid,\n });\n }\n }\n onMouseMove(evt) {\n const terminalType = this.type;\n const edgeView = this.cellView;\n const terminalView = edgeView.getTerminalView(terminalType);\n if (terminalView == null) {\n return;\n }\n const e = this.normalizeEvent(evt);\n const terminalCell = terminalView.cell;\n const terminalMagnet = edgeView.getTerminalMagnet(terminalType);\n let coords = this.graph.clientToLocal(e.clientX, e.clientY);\n const snapFn = this.options.snap;\n if (typeof snapFn === 'function') {\n const tmp = FunctionExt.call(snapFn, edgeView, coords, terminalView, terminalMagnet, terminalType, edgeView, this);\n coords = Point.create(tmp);\n }\n if (this.options.restrictArea) {\n if (terminalView.isEdgeElement(terminalMagnet)) {\n const pointAtConnection = terminalView.getClosestPoint(coords);\n if (pointAtConnection) {\n coords = pointAtConnection;\n }\n }\n else {\n const bbox = terminalView.getUnrotatedBBoxOfElement(terminalMagnet);\n const angle = terminalCell.getAngle();\n const origin = terminalCell.getBBox().getCenter();\n const rotatedCoords = coords.clone().rotate(angle, origin);\n if (!bbox.containsPoint(rotatedCoords)) {\n coords = bbox\n .getNearestPointToPoint(rotatedCoords)\n .rotate(-angle, origin);\n }\n }\n }\n let anchor;\n const anchorFn = this.options.anchor;\n if (typeof anchorFn === 'function') {\n anchor = FunctionExt.call(anchorFn, edgeView, coords, terminalView, terminalMagnet, terminalType, edgeView, this);\n }\n this.resetAnchor(anchor);\n this.update();\n }\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n onMouseUp(evt) {\n this.graph.view.delegateEvents();\n this.undelegateDocumentEvents();\n this.blur();\n this.toggleArea(false);\n const edgeView = this.cellView;\n if (this.options.removeRedundancies) {\n edgeView.removeRedundantLinearVertices({ ui: true, toolId: this.cid });\n }\n this.cell.stopBatch('move-anchor', { ui: true, toolId: this.cid });\n }\n onDblClick() {\n const anchor = this.options.resetAnchor;\n if (anchor) {\n this.resetAnchor(anchor === true ? undefined : anchor);\n }\n this.update();\n }\n}\n(function (Anchor) {\n Anchor.config({\n tagName: 'g',\n markup: [\n {\n tagName: 'circle',\n selector: 'anchor',\n attrs: {\n cursor: 'pointer',\n },\n },\n {\n tagName: 'rect',\n selector: 'area',\n attrs: {\n 'pointer-events': 'none',\n fill: 'none',\n stroke: '#33334F',\n 'stroke-dasharray': '2,4',\n rx: 5,\n ry: 5,\n },\n },\n ],\n events: {\n mousedown: 'onMouseDown',\n touchstart: 'onMouseDown',\n dblclick: 'onDblClick',\n },\n documentEvents: {\n mousemove: 'onMouseMove',\n touchmove: 'onMouseMove',\n mouseup: 'onMouseUp',\n touchend: 'onMouseUp',\n touchcancel: 'onMouseUp',\n },\n customAnchorAttrs: {\n 'stroke-width': 4,\n stroke: '#33334F',\n fill: '#FFFFFF',\n r: 5,\n },\n defaultAnchorAttrs: {\n 'stroke-width': 2,\n stroke: '#FFFFFF',\n fill: '#33334F',\n r: 6,\n },\n areaPadding: 6,\n snapRadius: 10,\n resetAnchor: true,\n restrictArea: true,\n removeRedundancies: true,\n anchor: Util.getAnchor,\n snap(pos, terminalView, terminalMagnet, terminalType, edgeView, toolView) {\n const snapRadius = toolView.options.snapRadius || 0;\n const isSource = terminalType === 'source';\n const refIndex = isSource ? 0 : -1;\n const ref = this.cell.getVertexAt(refIndex) ||\n this.getTerminalAnchor(isSource ? 'target' : 'source');\n if (ref) {\n if (Math.abs(ref.x - pos.x) < snapRadius)\n pos.x = ref.x;\n if (Math.abs(ref.y - pos.y) < snapRadius)\n pos.y = ref.y;\n }\n return pos;\n },\n });\n})(Anchor || (Anchor = {}));\nexport const SourceAnchor = Anchor.define({\n name: 'source-anchor',\n type: 'source',\n});\nexport const TargetAnchor = Anchor.define({\n name: 'target-anchor',\n type: 'target',\n});\n//# sourceMappingURL=anchor.js.map","var __rest = (this && this.__rest) || function (s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n t[p[i]] = s[p[i]];\n }\n return t;\n};\nimport { Dom } from '../../util';\nimport { Point } from '../../geometry';\nimport { ToolsView } from '../../view/tool';\nclass Arrowhead extends ToolsView.ToolItem {\n get type() {\n return this.options.type;\n }\n get ratio() {\n return this.options.ratio;\n }\n init() {\n if (this.options.attrs) {\n const _a = this.options.attrs, { class: className } = _a, attrs = __rest(_a, [\"class\"]);\n this.setAttrs(attrs, this.container);\n if (className) {\n Dom.addClass(this.container, className);\n }\n }\n }\n onRender() {\n Dom.addClass(this.container, this.prefixClassName(`edge-tool-${this.type}-arrowhead`));\n this.update();\n }\n update() {\n const ratio = this.ratio;\n const edgeView = this.cellView;\n const tangent = edgeView.getTangentAtRatio(ratio);\n const position = tangent ? tangent.start : edgeView.getPointAtRatio(ratio);\n const angle = (tangent && tangent.vector().vectorAngle(new Point(1, 0))) || 0;\n if (!position) {\n return this;\n }\n const matrix = Dom.createSVGMatrix()\n .translate(position.x, position.y)\n .rotate(angle);\n Dom.transform(this.container, matrix, { absolute: true });\n return this;\n }\n onMouseDown(evt) {\n if (this.guard(evt)) {\n return;\n }\n evt.stopPropagation();\n evt.preventDefault();\n const edgeView = this.cellView;\n if (edgeView.can('arrowheadMovable')) {\n edgeView.cell.startBatch('move-arrowhead', {\n ui: true,\n toolId: this.cid,\n });\n const coords = this.graph.snapToGrid(evt.clientX, evt.clientY);\n const data = edgeView.prepareArrowheadDragging(this.type, {\n x: coords.x,\n y: coords.y,\n options: {\n toolId: this.cid,\n },\n });\n this.cellView.setEventData(evt, data);\n this.delegateDocumentEvents(this.options.documentEvents, evt.data);\n edgeView.graph.view.undelegateEvents();\n this.container.style.pointerEvents = 'none';\n }\n this.focus();\n }\n onMouseMove(evt) {\n const e = this.normalizeEvent(evt);\n const coords = this.graph.snapToGrid(e.clientX, e.clientY);\n this.cellView.onMouseMove(e, coords.x, coords.y);\n this.update();\n }\n onMouseUp(evt) {\n this.undelegateDocumentEvents();\n const e = this.normalizeEvent(evt);\n const edgeView = this.cellView;\n const coords = this.graph.snapToGrid(e.clientX, e.clientY);\n edgeView.onMouseUp(e, coords.x, coords.y);\n this.graph.view.delegateEvents();\n this.blur();\n this.container.style.pointerEvents = '';\n edgeView.cell.stopBatch('move-arrowhead', {\n ui: true,\n toolId: this.cid,\n });\n }\n}\n(function (Arrowhead) {\n Arrowhead.config({\n tagName: 'path',\n isSVGElement: true,\n events: {\n mousedown: 'onMouseDown',\n touchstart: 'onMouseDown',\n },\n documentEvents: {\n mousemove: 'onMouseMove',\n touchmove: 'onMouseMove',\n mouseup: 'onMouseUp',\n touchend: 'onMouseUp',\n touchcancel: 'onMouseUp',\n },\n });\n})(Arrowhead || (Arrowhead = {}));\nexport const SourceArrowhead = Arrowhead.define({\n name: 'source-arrowhead',\n type: 'source',\n ratio: 0,\n attrs: {\n d: 'M 10 -8 -10 0 10 8 Z',\n fill: '#333',\n stroke: '#fff',\n 'stroke-width': 2,\n cursor: 'move',\n },\n});\nexport const TargetArrowhead = Arrowhead.define({\n name: 'target-arrowhead',\n type: 'target',\n ratio: 1,\n attrs: {\n d: 'M -10 -8 10 0 -10 8 Z',\n fill: '#333',\n stroke: '#fff',\n 'stroke-width': 2,\n cursor: 'move',\n },\n});\n//# sourceMappingURL=arrowhead.js.map","import { ToolsView } from '../../view/tool';\nimport { Point } from '../../geometry';\nimport { Dom, FunctionExt } from '../../util';\nexport class CellEditor extends ToolsView.ToolItem {\n constructor() {\n super(...arguments);\n this.labelIndex = -1;\n this.distance = 0.5;\n }\n render() {\n this.createElement();\n this.update();\n this.autoFocus();\n this.delegateDocumentEvents(this.options.documentEvents);\n return this;\n }\n createElement() {\n const { cell } = this;\n const classNames = [\n this.prefixClassName(`${cell.isEdge() ? 'edge' : 'node'}-tool-editor`),\n this.prefixClassName('cell-tool-editor'),\n ];\n this.editor = ToolsView.createElement('div', false);\n this.addClass(classNames, this.editor);\n this.editor.contentEditable = 'true';\n this.container.appendChild(this.editor);\n }\n update() {\n const { graph, cell, editor } = this;\n const style = editor.style;\n // set tool position\n let pos = new Point();\n let minWidth = 20;\n if (cell.isNode()) {\n pos = cell.getBBox().center;\n minWidth = cell.size().width - 4;\n }\n else if (cell.isEdge()) {\n const e = this.options.event;\n const target = e.target;\n const parent = target.parentElement;\n const isEdgeLabel = parent && Dom.hasClass(parent, this.prefixClassName('edge-label'));\n if (isEdgeLabel) {\n const index = parent.getAttribute('data-index') || '0';\n this.labelIndex = parseInt(index, 10);\n const matrix = parent.getAttribute('transform');\n const { translation } = Dom.parseTransformString(matrix);\n pos = new Point(translation.tx, translation.ty);\n minWidth = Dom.getBBox(target).width;\n }\n else {\n if (!this.options.labelAddable) {\n return this;\n }\n pos = graph.clientToLocal(Point.create(e.clientX, e.clientY));\n const view = this.cellView;\n const d = view.path.closestPointLength(pos);\n this.distance = d;\n }\n }\n pos = graph.localToGraph(pos);\n style.left = `${pos.x}px`;\n style.top = `${pos.y}px`;\n style.minWidth = `${minWidth}px`;\n // set tool transform\n const scale = graph.scale();\n style.transform = `scale(${scale.sx}, ${scale.sy}) translate(-50%, -50%)`;\n // set font style\n const attrs = this.options.attrs;\n style.fontSize = `${attrs.fontSize}px`;\n style.fontFamily = attrs.fontFamily;\n style.color = attrs.color;\n style.backgroundColor = attrs.backgroundColor;\n // set init value\n const getText = this.options.getText;\n let text;\n if (typeof getText === 'function') {\n text = FunctionExt.call(getText, this.cellView, {\n cell: this.cell,\n index: this.labelIndex,\n });\n }\n editor.innerText = text || '';\n return this;\n }\n onDocumentMouseDown(e) {\n if (e.target !== this.editor) {\n const cell = this.cell;\n const value = this.editor.innerText.replace(/\\n$/, '') || '';\n // set value\n const setText = this.options.setText;\n if (typeof setText === 'function') {\n FunctionExt.call(setText, this.cellView, {\n cell: this.cell,\n value,\n index: this.labelIndex,\n distance: this.distance,\n });\n }\n // remove tool\n cell.removeTool(cell.isEdge() ? 'edge-editor' : 'node-editor');\n this.undelegateDocumentEvents();\n }\n }\n onDblClick(e) {\n e.stopPropagation();\n }\n onMouseDown(e) {\n e.stopPropagation();\n }\n autoFocus() {\n setTimeout(() => {\n this.editor.focus();\n this.selectText();\n });\n }\n selectText() {\n if (window.getSelection) {\n const range = document.createRange();\n const selection = window.getSelection();\n range.selectNodeContents(this.editor);\n selection.removeAllRanges();\n selection.addRange(range);\n }\n }\n}\n(function (CellEditor) {\n CellEditor.config({\n tagName: 'div',\n isSVGElement: false,\n events: {\n dblclick: 'onDblClick',\n mousedown: 'onMouseDown',\n },\n documentEvents: {\n mousedown: 'onDocumentMouseDown',\n },\n });\n})(CellEditor || (CellEditor = {}));\n(function (CellEditor) {\n CellEditor.NodeEditor = CellEditor.define({\n attrs: {\n fontSize: 14,\n fontFamily: 'Arial, helvetica, sans-serif',\n color: '#000',\n backgroundColor: '#fff',\n },\n getText({ cell }) {\n return cell.attr('text/text');\n },\n setText({ cell, value }) {\n cell.attr('text/text', value);\n },\n });\n CellEditor.EdgeEditor = CellEditor.define({\n attrs: {\n fontSize: 14,\n fontFamily: 'Arial, helvetica, sans-serif',\n color: '#000',\n backgroundColor: '#fff',\n },\n labelAddable: true,\n getText({ cell, index }) {\n if (index === -1) {\n return '';\n }\n return cell.prop(`labels/${index}/attrs/label/text`);\n },\n setText({ cell, value, index, distance }) {\n const edge = cell;\n if (index === -1) {\n edge.appendLabel({\n position: {\n distance: distance,\n },\n attrs: {\n label: {\n text: value,\n },\n },\n });\n }\n else {\n if (value) {\n edge.prop(`labels/${index}/attrs/label/text`, value);\n }\n else if (typeof index === 'number') {\n edge.removeLabelAt(index);\n }\n }\n },\n });\n})(CellEditor || (CellEditor = {}));\n//# sourceMappingURL=editor.js.map","var __rest = (this && this.__rest) || function (s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n t[p[i]] = s[p[i]];\n }\n return t;\n};\nimport { ToolsView } from '../../view/tool';\nimport { Registry } from '../registry';\nimport { Button } from './button';\nimport { Boundary } from './boundary';\nimport { Vertices } from './vertices';\nimport { Segments } from './segments';\nimport { SourceAnchor, TargetAnchor } from './anchor';\nimport { SourceArrowhead, TargetArrowhead } from './arrowhead';\nimport { CellEditor } from './editor';\nexport var NodeTool;\n(function (NodeTool) {\n NodeTool.presets = {\n boundary: Boundary,\n button: Button,\n 'button-remove': Button.Remove,\n 'node-editor': CellEditor.NodeEditor,\n };\n NodeTool.registry = Registry.create({\n type: 'node tool',\n process(name, options) {\n if (typeof options === 'function') {\n return options;\n }\n let parent = ToolsView.ToolItem;\n const { inherit } = options, others = __rest(options, [\"inherit\"]);\n if (inherit) {\n const base = this.get(inherit);\n if (base == null) {\n this.onNotFound(inherit, 'inherited');\n }\n else {\n parent = base;\n }\n }\n if (others.name == null) {\n others.name = name;\n }\n return parent.define.call(parent, others);\n },\n });\n NodeTool.registry.register(NodeTool.presets, true);\n})(NodeTool || (NodeTool = {}));\nexport var EdgeTool;\n(function (EdgeTool) {\n EdgeTool.presets = {\n boundary: Boundary,\n vertices: Vertices,\n segments: Segments,\n button: Button,\n 'button-remove': Button.Remove,\n 'source-anchor': SourceAnchor,\n 'target-anchor': TargetAnchor,\n 'source-arrowhead': SourceArrowhead,\n 'target-arrowhead': TargetArrowhead,\n 'edge-editor': CellEditor.EdgeEditor,\n };\n EdgeTool.registry = Registry.create({\n type: 'edge tool',\n process(name, options) {\n if (typeof options === 'function') {\n return options;\n }\n let parent = ToolsView.ToolItem;\n const { inherit } = options, others = __rest(options, [\"inherit\"]);\n if (inherit) {\n const base = this.get(inherit);\n if (base == null) {\n this.onNotFound(inherit, 'inherited');\n }\n else {\n parent = base;\n }\n }\n if (others.name == null) {\n others.name = name;\n }\n return parent.define.call(parent, others);\n },\n });\n EdgeTool.registry.register(EdgeTool.presets, true);\n})(EdgeTool || (EdgeTool = {}));\n//# sourceMappingURL=index.js.map","import { NumberExt } from '../../util';\nexport const center = createBBoxAnchor('center');\nexport const top = createBBoxAnchor('topCenter');\nexport const bottom = createBBoxAnchor('bottomCenter');\nexport const left = createBBoxAnchor('leftMiddle');\nexport const right = createBBoxAnchor('rightMiddle');\nexport const topLeft = createBBoxAnchor('topLeft');\nexport const topRight = createBBoxAnchor('topRight');\nexport const bottomLeft = createBBoxAnchor('bottomLeft');\nexport const bottomRight = createBBoxAnchor('bottomRight');\nfunction createBBoxAnchor(method) {\n return function (view, magnet, ref, options = {}) {\n const bbox = options.rotate\n ? view.getUnrotatedBBoxOfElement(magnet)\n : view.getBBoxOfElement(magnet);\n const result = bbox[method];\n result.x += NumberExt.normalizePercentage(options.dx, bbox.width);\n result.y += NumberExt.normalizePercentage(options.dy, bbox.height);\n const cell = view.cell;\n return options.rotate\n ? result.rotate(-cell.getAngle(), cell.getBBox().getCenter())\n : result;\n };\n}\n//# sourceMappingURL=bbox.js.map","import { NumberExt } from '../../util';\nimport { Point } from '../../geometry';\n// eslint-disable-next-line\nexport function resolve(fn) {\n return function (view, magnet, ref, options) {\n if (ref instanceof Element) {\n const refView = this.graph.renderer.findViewByElem(ref);\n let refPoint;\n if (refView) {\n if (refView.isEdgeElement(ref)) {\n const distance = options.fixedAt != null ? options.fixedAt : '50%';\n refPoint = getPointAtEdge(refView, distance);\n }\n else {\n refPoint = refView.getBBoxOfElement(ref).getCenter();\n }\n }\n else {\n refPoint = new Point();\n }\n return fn.call(this, view, magnet, refPoint, options);\n }\n return fn.apply(this, arguments); // eslint-disable-line\n };\n}\nexport function getPointAtEdge(edgeView, value) {\n const isPercentage = NumberExt.isPercentage(value);\n const num = typeof value === 'string' ? parseFloat(value) : value;\n if (isPercentage) {\n return edgeView.getPointAtRatio(num / 100);\n }\n return edgeView.getPointAtLength(num);\n}\n//# sourceMappingURL=util.js.map","import { Angle } from '../../geometry';\nimport { resolve } from './util';\nconst orthogonal = function (view, magnet, refPoint, options) {\n const angle = view.cell.getAngle();\n const bbox = view.getBBoxOfElement(magnet);\n const result = bbox.getCenter();\n const topLeft = bbox.getTopLeft();\n const bottomRight = bbox.getBottomRight();\n let padding = options.padding;\n if (!Number.isFinite(padding)) {\n padding = 0;\n }\n if (topLeft.y + padding <= refPoint.y &&\n refPoint.y <= bottomRight.y - padding) {\n const dy = refPoint.y - result.y;\n result.x +=\n angle === 0 || angle === 180\n ? 0\n : (dy * 1) / Math.tan(Angle.toRad(angle));\n result.y += dy;\n }\n else if (topLeft.x + padding <= refPoint.x &&\n refPoint.x <= bottomRight.x - padding) {\n const dx = refPoint.x - result.x;\n result.y +=\n angle === 90 || angle === 270 ? 0 : dx * Math.tan(Angle.toRad(angle));\n result.x += dx;\n }\n return result;\n};\n/**\n * Tries to place the anchor of the edge inside the view bbox so that the\n * edge is made orthogonal. The anchor is placed along two line segments\n * inside the view bbox (between the centers of the top and bottom side and\n * between the centers of the left and right sides). If it is not possible\n * to place the anchor so that the edge would be orthogonal, the anchor is\n * placed at the center of the view bbox instead.\n */\nexport const orth = resolve(orthogonal);\n//# sourceMappingURL=orth.js.map","/**\n * Places the anchor of the edge at center of the node bbox.\n */\nexport const nodeCenter = function (view, magnet, ref, options, endType) {\n const result = view.cell.getConnectionPoint(this.cell, endType);\n if (options.dx || options.dy) {\n result.translate(options.dx || 0, options.dy || 0);\n }\n return result;\n};\n//# sourceMappingURL=node-center.js.map","import { resolve } from './util';\nconst middleSide = function (view, magnet, refPoint, options) {\n let bbox;\n let angle = 0;\n let center;\n const node = view.cell;\n if (options.rotate) {\n bbox = view.getUnrotatedBBoxOfElement(magnet);\n center = node.getBBox().getCenter();\n angle = node.getAngle();\n }\n else {\n bbox = view.getBBoxOfElement(magnet);\n }\n const padding = options.padding;\n if (padding != null && Number.isFinite(padding)) {\n bbox.inflate(padding);\n }\n if (options.rotate) {\n refPoint.rotate(angle, center);\n }\n const side = bbox.getNearestSideToPoint(refPoint);\n let result;\n switch (side) {\n case 'left':\n result = bbox.getLeftMiddle();\n break;\n case 'right':\n result = bbox.getRightMiddle();\n break;\n case 'top':\n result = bbox.getTopCenter();\n break;\n case 'bottom':\n result = bbox.getBottomCenter();\n break;\n default:\n break;\n }\n const direction = options.direction;\n if (direction === 'H') {\n if (side === 'top' || side === 'bottom') {\n if (refPoint.x <= bbox.x + bbox.width) {\n result = bbox.getLeftMiddle();\n }\n else {\n result = bbox.getRightMiddle();\n }\n }\n }\n else if (direction === 'V') {\n if (refPoint.y <= bbox.y + bbox.height) {\n result = bbox.getTopCenter();\n }\n else {\n result = bbox.getBottomCenter();\n }\n }\n return options.rotate ? result.rotate(-angle, center) : result;\n};\n/**\n * Places the anchor of the edge in the middle of the side of view bbox\n * closest to the other endpoint.\n */\nexport const midSide = resolve(middleSide);\n//# sourceMappingURL=middle-side.js.map","import { Registry } from '../registry';\nimport * as anchors from './main';\nexport var NodeAnchor;\n(function (NodeAnchor) {\n NodeAnchor.presets = anchors;\n NodeAnchor.registry = Registry.create({\n type: 'node endpoint',\n });\n NodeAnchor.registry.register(NodeAnchor.presets, true);\n})(NodeAnchor || (NodeAnchor = {}));\n//# sourceMappingURL=index.js.map","export const ratio = function (view, magnet, ref, options) {\n let ratio = options.ratio != null ? options.ratio : 0.5;\n if (ratio > 1) {\n ratio /= 100;\n }\n return view.getPointAtRatio(ratio);\n};\n//# sourceMappingURL=ratio.js.map","export const length = function (view, magnet, ref, options) {\n const length = options.length != null ? options.length : 20;\n return view.getPointAtLength(length);\n};\n//# sourceMappingURL=length.js.map","import { Point } from '../../geometry';\nimport { resolve } from '../node-anchor/util';\nexport const getClosestPoint = function (view, magnet, refPoint, options) {\n const closestPoint = view.getClosestPoint(refPoint);\n return closestPoint != null ? closestPoint : new Point();\n};\nexport const closest = resolve(getClosestPoint);\n//# sourceMappingURL=closest.js.map","import { Line } from '../../geometry';\nimport { resolve, getPointAtEdge } from '../node-anchor/util';\nimport { getClosestPoint } from './closest';\nimport { FunctionExt } from '../../util';\nconst orthogonal = function (view, magnet, refPoint, options) {\n const OFFSET = 1e6;\n const path = view.getConnection();\n const segmentSubdivisions = view.getConnectionSubdivisions();\n const vLine = new Line(refPoint.clone().translate(0, OFFSET), refPoint.clone().translate(0, -OFFSET));\n const hLine = new Line(refPoint.clone().translate(OFFSET, 0), refPoint.clone().translate(-OFFSET, 0));\n const vIntersections = vLine.intersect(path, {\n segmentSubdivisions,\n });\n const hIntersections = hLine.intersect(path, {\n segmentSubdivisions,\n });\n const intersections = [];\n if (vIntersections) {\n intersections.push(...vIntersections);\n }\n if (hIntersections) {\n intersections.push(...hIntersections);\n }\n if (intersections.length > 0) {\n return refPoint.closest(intersections);\n }\n if (options.fallbackAt != null) {\n return getPointAtEdge(view, options.fallbackAt);\n }\n return FunctionExt.call(getClosestPoint, this, view, magnet, refPoint, options);\n};\nexport const orth = resolve(orthogonal);\n//# sourceMappingURL=orth.js.map","import { Registry } from '../registry';\nimport * as anchors from './main';\nexport var EdgeAnchor;\n(function (EdgeAnchor) {\n EdgeAnchor.presets = anchors;\n EdgeAnchor.registry = Registry.create({\n type: 'edge endpoint',\n });\n EdgeAnchor.registry.register(EdgeAnchor.presets, true);\n})(EdgeAnchor || (EdgeAnchor = {}));\n//# sourceMappingURL=index.js.map","import { Line } from '../../geometry';\nexport function offset(p1, p2, offset) {\n let tx;\n if (typeof offset === 'object') {\n if (Number.isFinite(offset.y)) {\n const line = new Line(p2, p1);\n const { start, end } = line.parallel(offset.y);\n p2 = start; // eslint-disable-line\n p1 = end; // eslint-disable-line\n }\n tx = offset.x;\n }\n else {\n tx = offset;\n }\n if (tx == null || !Number.isFinite(tx)) {\n return p1;\n }\n const length = p1.distance(p2);\n if (tx === 0 && length > 0) {\n return p1;\n }\n return p1.move(p2, -Math.min(tx, length - 1));\n}\nexport function getStrokeWidth(magnet) {\n const stroke = magnet.getAttribute('stroke-width');\n if (stroke === null) {\n return 0;\n }\n return parseFloat(stroke) || 0;\n}\nexport function findShapeNode(magnet) {\n if (magnet == null) {\n return null;\n }\n let node = magnet;\n do {\n let tagName = node.tagName;\n if (typeof tagName !== 'string')\n return null;\n tagName = tagName.toUpperCase();\n if (tagName === 'G') {\n node = node.firstElementChild;\n }\n else if (tagName === 'TITLE') {\n node = node.nextElementSibling;\n }\n else\n break;\n } while (node);\n return node;\n}\n//# sourceMappingURL=util.js.map","import { offset, getStrokeWidth } from './util';\n/**\n * Places the connection point at the intersection between the edge\n * path end segment and the target node bbox.\n */\nexport const bbox = function (line, view, magnet, options) {\n const bbox = view.getBBoxOfElement(magnet);\n if (options.stroked) {\n bbox.inflate(getStrokeWidth(magnet) / 2);\n }\n const intersections = line.intersect(bbox);\n const p = intersections && intersections.length\n ? line.start.closest(intersections)\n : line.end;\n return offset(p, line.start, options.offset);\n};\n//# sourceMappingURL=bbox.js.map","import { bbox } from './bbox';\nimport { offset, getStrokeWidth } from './util';\nimport { FunctionExt } from '../../util';\n/**\n * Places the connection point at the intersection between the\n * link path end segment and the element's unrotated bbox.\n */\nexport const rect = function (line, view, magnet, options, type) {\n const cell = view.cell;\n const angle = cell.isNode() ? cell.getAngle() : 0;\n if (angle === 0) {\n return FunctionExt.call(bbox, this, line, view, magnet, options, type);\n }\n const bboxRaw = view.getUnrotatedBBoxOfElement(magnet);\n if (options.stroked) {\n bboxRaw.inflate(getStrokeWidth(magnet) / 2);\n }\n const center = bboxRaw.getCenter();\n const lineRaw = line.clone().rotate(angle, center);\n const intersections = lineRaw.setLength(1e6).intersect(bboxRaw);\n const p = intersections && intersections.length\n ? lineRaw.start.closest(intersections).rotate(-angle, center)\n : line.end;\n return offset(p, line.start, options.offset);\n};\n//# sourceMappingURL=rect.js.map","import { ObjectExt, Dom } from '../../util';\nimport { Path, Rectangle, Ellipse } from '../../geometry';\nimport { offset, getStrokeWidth, findShapeNode } from './util';\n/**\n * Places the connection point at the intersection between the\n * edge path end segment and the actual shape of the target magnet.\n */\nexport const boundary = function (line, view, magnet, options) {\n let node;\n let intersection;\n const anchor = line.end;\n const selector = options.selector;\n if (typeof selector === 'string') {\n node = view.findOne(selector);\n }\n else if (Array.isArray(selector)) {\n node = ObjectExt.getByPath(magnet, selector);\n }\n else {\n node = findShapeNode(magnet);\n }\n if (!Dom.isSVGGraphicsElement(node)) {\n if (node === magnet || !Dom.isSVGGraphicsElement(magnet)) {\n return anchor;\n }\n node = magnet;\n }\n const localShape = view.getShapeOfElement(node);\n const magnetMatrix = view.getMatrixOfElement(node);\n const translateMatrix = view.getRootTranslatedMatrix();\n const rotateMatrix = view.getRootRotatedMatrix();\n const targetMatrix = translateMatrix\n .multiply(rotateMatrix)\n .multiply(magnetMatrix);\n const localMatrix = targetMatrix.inverse();\n const localLine = Dom.transformLine(line, localMatrix);\n const localRef = localLine.start.clone();\n const data = view.getDataOfElement(node);\n if (options.insideout === false) {\n if (data.shapeBBox == null) {\n data.shapeBBox = localShape.bbox();\n }\n const localBBox = data.shapeBBox;\n if (localBBox != null && localBBox.containsPoint(localRef)) {\n return anchor;\n }\n }\n if (options.extrapolate === true) {\n localLine.setLength(1e6);\n }\n // Caching segment subdivisions for paths\n let pathOptions;\n if (Path.isPath(localShape)) {\n const precision = options.precision || 2;\n if (data.segmentSubdivisions == null) {\n data.segmentSubdivisions = localShape.getSegmentSubdivisions({\n precision,\n });\n }\n pathOptions = {\n precision,\n segmentSubdivisions: data.segmentSubdivisions,\n };\n intersection = localLine.intersect(localShape, pathOptions);\n }\n else {\n intersection = localLine.intersect(localShape);\n }\n if (intersection) {\n if (Array.isArray(intersection)) {\n intersection = localRef.closest(intersection);\n }\n }\n else if (options.sticky === true) {\n // No intersection, find the closest point instead\n if (Rectangle.isRectangle(localShape)) {\n intersection = localShape.getNearestPointToPoint(localRef);\n }\n else if (Ellipse.isEllipse(localShape)) {\n intersection = localShape.intersectsWithLineFromCenterToPoint(localRef);\n }\n else {\n intersection = localShape.closestPoint(localRef, pathOptions);\n }\n }\n const cp = intersection\n ? Dom.transformPoint(intersection, targetMatrix)\n : anchor;\n let cpOffset = options.offset || 0;\n if (options.stroked !== false) {\n if (typeof cpOffset === 'object') {\n cpOffset = Object.assign({}, cpOffset);\n if (cpOffset.x == null) {\n cpOffset.x = 0;\n }\n cpOffset.x += getStrokeWidth(node) / 2;\n }\n else {\n cpOffset += getStrokeWidth(node) / 2;\n }\n }\n return offset(cp, line.start, cpOffset);\n};\n//# sourceMappingURL=boundary.js.map","import { offset } from './util';\nfunction alignLine(line, type, offset = 0) {\n const { start, end } = line;\n let a;\n let b;\n let direction;\n let coordinate;\n switch (type) {\n case 'left':\n coordinate = 'x';\n a = end;\n b = start;\n direction = -1;\n break;\n case 'right':\n coordinate = 'x';\n a = start;\n b = end;\n direction = 1;\n break;\n case 'top':\n coordinate = 'y';\n a = end;\n b = start;\n direction = -1;\n break;\n case 'bottom':\n coordinate = 'y';\n a = start;\n b = end;\n direction = 1;\n break;\n default:\n return;\n }\n if (start[coordinate] < end[coordinate]) {\n a[coordinate] = b[coordinate];\n }\n else {\n b[coordinate] = a[coordinate];\n }\n if (Number.isFinite(offset)) {\n a[coordinate] += direction * offset;\n b[coordinate] += direction * offset;\n }\n}\n/**\n * Places the connection point at the edge's endpoint.\n */\nexport const anchor = function (line, view, magnet, options) {\n const { alignOffset, align } = options;\n if (align) {\n alignLine(line, align, alignOffset);\n }\n return offset(line.end, line.start, options.offset);\n};\n//# sourceMappingURL=anchor.js.map","import { Registry } from '../registry';\nimport * as connectionPoints from './main';\nexport var ConnectionPoint;\n(function (ConnectionPoint) {\n ConnectionPoint.presets = connectionPoints;\n ConnectionPoint.registry = Registry.create({\n type: 'connection point',\n });\n ConnectionPoint.registry.register(ConnectionPoint.presets, true);\n})(ConnectionPoint || (ConnectionPoint = {}));\n//# sourceMappingURL=index.js.map","export const normal = function (vertices) {\n return [...vertices];\n};\n//# sourceMappingURL=normal.js.map","import { NumberExt } from '../../util';\n/**\n * Routes the edge always to/from a certain side\n */\nexport const oneSide = function (vertices, options, edgeView) {\n const side = options.side || 'bottom';\n const padding = NumberExt.normalizeSides(options.padding || 40);\n const sourceBBox = edgeView.sourceBBox;\n const targetBBox = edgeView.targetBBox;\n const sourcePoint = sourceBBox.getCenter();\n const targetPoint = targetBBox.getCenter();\n let coord;\n let dim;\n let factor;\n switch (side) {\n case 'top':\n factor = -1;\n coord = 'y';\n dim = 'height';\n break;\n case 'left':\n factor = -1;\n coord = 'x';\n dim = 'width';\n break;\n case 'right':\n factor = 1;\n coord = 'x';\n dim = 'width';\n break;\n case 'bottom':\n default:\n factor = 1;\n coord = 'y';\n dim = 'height';\n break;\n }\n // Move the points from the center of the element to outside of it.\n sourcePoint[coord] += factor * (sourceBBox[dim] / 2 + padding[side]);\n targetPoint[coord] += factor * (targetBBox[dim] / 2 + padding[side]);\n // Make edge orthogonal (at least the first and last vertex).\n if (factor * (sourcePoint[coord] - targetPoint[coord]) > 0) {\n targetPoint[coord] = sourcePoint[coord];\n }\n else {\n sourcePoint[coord] = targetPoint[coord];\n }\n return [sourcePoint.toJSON(), ...vertices, targetPoint.toJSON()];\n};\n//# sourceMappingURL=oneside.js.map","import { NumberExt } from '../../util';\nimport { Rectangle } from '../../geometry';\nexport function getPointBBox(p) {\n return new Rectangle(p.x, p.y, 0, 0);\n}\nexport function getPaddingBox(options = {}) {\n const sides = NumberExt.normalizeSides(options.padding || 20);\n return {\n x: -sides.left,\n y: -sides.top,\n width: sides.left + sides.right,\n height: sides.top + sides.bottom,\n };\n}\nexport function getSourceBBox(view, options = {}) {\n return view.sourceBBox.clone().moveAndExpand(getPaddingBox(options));\n}\nexport function getTargetBBox(view, options = {}) {\n return view.targetBBox.clone().moveAndExpand(getPaddingBox(options));\n}\nexport function getSourceAnchor(view, options = {}) {\n if (view.sourceAnchor) {\n return view.sourceAnchor;\n }\n const bbox = getSourceBBox(view, options);\n return bbox.getCenter();\n}\nexport function getTargetAnchor(view, options = {}) {\n if (view.targetAnchor) {\n return view.targetAnchor;\n }\n const bbox = getTargetBBox(view, options);\n return bbox.getCenter();\n}\n//# sourceMappingURL=util.js.map","import { ArrayExt } from '../../util';\nimport { Point, Line, Angle } from '../../geometry';\nimport * as Util from './util';\n/**\n * Returns a route with orthogonal line segments.\n */\nexport const orth = function (vertices, options, edgeView) {\n let sourceBBox = Util.getSourceBBox(edgeView, options);\n let targetBBox = Util.getTargetBBox(edgeView, options);\n const sourceAnchor = Util.getSourceAnchor(edgeView, options);\n const targetAnchor = Util.getTargetAnchor(edgeView, options);\n // If anchor lies outside of bbox, the bbox expands to include it\n sourceBBox = sourceBBox.union(Util.getPointBBox(sourceAnchor));\n targetBBox = targetBBox.union(Util.getPointBBox(targetAnchor));\n const points = vertices.map((p) => Point.create(p));\n points.unshift(sourceAnchor);\n points.push(targetAnchor);\n // bearing of previous route segment\n let bearing = null;\n const result = [];\n for (let i = 0, len = points.length - 1; i < len; i += 1) {\n let route = null;\n const from = points[i];\n const to = points[i + 1];\n const isOrthogonal = Private.getBearing(from, to) != null;\n if (i === 0) {\n // source\n if (i + 1 === len) {\n // source -> target\n // Expand one of the nodes by 1px to detect situations when the two\n // nodes are positioned next to each other with no gap in between.\n if (sourceBBox.intersectsWithRect(targetBBox.clone().inflate(1))) {\n route = Private.insideNode(from, to, sourceBBox, targetBBox);\n }\n else if (!isOrthogonal) {\n route = Private.nodeToNode(from, to, sourceBBox, targetBBox);\n }\n }\n else {\n // source -> vertex\n if (sourceBBox.containsPoint(to)) {\n route = Private.insideNode(from, to, sourceBBox, Util.getPointBBox(to).moveAndExpand(Util.getPaddingBox(options)));\n }\n else if (!isOrthogonal) {\n route = Private.nodeToVertex(from, to, sourceBBox);\n }\n }\n }\n else if (i + 1 === len) {\n // vertex -> target\n // prevent overlaps with previous line segment\n const isOrthogonalLoop = isOrthogonal && Private.getBearing(to, from) === bearing;\n if (targetBBox.containsPoint(from) || isOrthogonalLoop) {\n route = Private.insideNode(from, to, Util.getPointBBox(from).moveAndExpand(Util.getPaddingBox(options)), targetBBox, bearing);\n }\n else if (!isOrthogonal) {\n route = Private.vertexToNode(from, to, targetBBox, bearing);\n }\n }\n else if (!isOrthogonal) {\n // vertex -> vertex\n route = Private.vertexToVertex(from, to, bearing);\n }\n // set bearing for next iteration\n if (route) {\n result.push(...route.points);\n bearing = route.direction;\n }\n else {\n // orthogonal route and not looped\n bearing = Private.getBearing(from, to);\n }\n // push `to` point to identified orthogonal vertices array\n if (i + 1 < len) {\n result.push(to);\n }\n }\n return result;\n};\nvar Private;\n(function (Private) {\n /**\n * Bearing to opposite bearing map\n */\n const opposites = {\n N: 'S',\n S: 'N',\n E: 'W',\n W: 'E',\n };\n /**\n * Bearing to radians map\n */\n const radians = {\n N: (-Math.PI / 2) * 3,\n S: -Math.PI / 2,\n E: 0,\n W: Math.PI,\n };\n /**\n * Returns a point `p` where lines p,p1 and p,p2 are perpendicular\n * and p is not contained in the given box\n */\n function freeJoin(p1, p2, bbox) {\n let p = new Point(p1.x, p2.y);\n if (bbox.containsPoint(p)) {\n p = new Point(p2.x, p1.y);\n }\n // kept for reference\n // if (bbox.containsPoint(p)) {\n // return null\n // }\n return p;\n }\n /**\n * Returns either width or height of a bbox based on the given bearing.\n */\n function getBBoxSize(bbox, bearing) {\n return bbox[bearing === 'W' || bearing === 'E' ? 'width' : 'height'];\n }\n Private.getBBoxSize = getBBoxSize;\n function getBearing(from, to) {\n if (from.x === to.x) {\n return from.y > to.y ? 'N' : 'S';\n }\n if (from.y === to.y) {\n return from.x > to.x ? 'W' : 'E';\n }\n return null;\n }\n Private.getBearing = getBearing;\n function vertexToVertex(from, to, bearing) {\n const p1 = new Point(from.x, to.y);\n const p2 = new Point(to.x, from.y);\n const d1 = getBearing(from, p1);\n const d2 = getBearing(from, p2);\n const opposite = bearing ? opposites[bearing] : null;\n const p = d1 === bearing || (d1 !== opposite && (d2 === opposite || d2 !== bearing))\n ? p1\n : p2;\n return { points: [p], direction: getBearing(p, to) };\n }\n Private.vertexToVertex = vertexToVertex;\n function nodeToVertex(from, to, fromBBox) {\n const p = freeJoin(from, to, fromBBox);\n return { points: [p], direction: getBearing(p, to) };\n }\n Private.nodeToVertex = nodeToVertex;\n function vertexToNode(from, to, toBBox, bearing) {\n const points = [new Point(from.x, to.y), new Point(to.x, from.y)];\n const freePoints = points.filter((p) => !toBBox.containsPoint(p));\n const freeBearingPoints = freePoints.filter((p) => getBearing(p, from) !== bearing);\n let p;\n if (freeBearingPoints.length > 0) {\n // Try to pick a point which bears the same direction as the previous segment.\n p = freeBearingPoints.filter((p) => getBearing(from, p) === bearing).pop();\n p = p || freeBearingPoints[0];\n return {\n points: [p],\n direction: getBearing(p, to),\n };\n }\n {\n // Here we found only points which are either contained in the element or they would create\n // a link segment going in opposite direction from the previous one.\n // We take the point inside element and move it outside the element in the direction the\n // route is going. Now we can join this point with the current end (using freeJoin).\n p = ArrayExt.difference(points, freePoints)[0];\n const p2 = Point.create(to).move(p, -getBBoxSize(toBBox, bearing) / 2);\n const p1 = freeJoin(p2, from, toBBox);\n return {\n points: [p1, p2],\n direction: getBearing(p2, to),\n };\n }\n }\n Private.vertexToNode = vertexToNode;\n function nodeToNode(from, to, fromBBox, toBBox) {\n let route = nodeToVertex(to, from, toBBox);\n const p1 = route.points[0];\n if (fromBBox.containsPoint(p1)) {\n route = nodeToVertex(from, to, fromBBox);\n const p2 = route.points[0];\n if (toBBox.containsPoint(p2)) {\n const fromBorder = Point.create(from).move(p2, -getBBoxSize(fromBBox, getBearing(from, p2)) / 2);\n const toBorder = Point.create(to).move(p1, -getBBoxSize(toBBox, getBearing(to, p1)) / 2);\n const mid = new Line(fromBorder, toBorder).getCenter();\n const startRoute = nodeToVertex(from, mid, fromBBox);\n const endRoute = vertexToVertex(mid, to, startRoute.direction);\n route.points = [startRoute.points[0], endRoute.points[0]];\n route.direction = endRoute.direction;\n }\n }\n return route;\n }\n Private.nodeToNode = nodeToNode;\n // Finds route for situations where one node is inside the other.\n // Typically the route is directed outside the outer node first and\n // then back towards the inner node.\n function insideNode(from, to, fromBBox, toBBox, bearing) {\n const boundary = fromBBox.union(toBBox).inflate(1);\n // start from the point which is closer to the boundary\n const center = boundary.getCenter();\n const reversed = center.distance(to) > center.distance(from);\n const start = reversed ? to : from;\n const end = reversed ? from : to;\n let p1;\n let p2;\n let p3;\n if (bearing) {\n // Points on circle with radius equals 'W + H` are always outside the rectangle\n // with width W and height H if the center of that circle is the center of that rectangle.\n p1 = Point.fromPolar(boundary.width + boundary.height, radians[bearing], start);\n p1 = boundary.getNearestPointToPoint(p1).move(p1, -1);\n }\n else {\n p1 = boundary.getNearestPointToPoint(start).move(start, 1);\n }\n p2 = freeJoin(p1, end, boundary);\n let points;\n if (p1.round().equals(p2.round())) {\n p2 = Point.fromPolar(boundary.width + boundary.height, Angle.toRad(p1.theta(start)) + Math.PI / 2, end);\n p2 = boundary.getNearestPointToPoint(p2).move(end, 1).round();\n p3 = freeJoin(p1, p2, boundary);\n points = reversed ? [p2, p3, p1] : [p1, p3, p2];\n }\n else {\n points = reversed ? [p2, p1] : [p1, p2];\n }\n const direction = reversed ? getBearing(p1, to) : getBearing(p2, to);\n return {\n points,\n direction,\n };\n }\n Private.insideNode = insideNode;\n})(Private || (Private = {}));\n//# sourceMappingURL=orth.js.map","import { NumberExt } from '../../../util';\nimport { Point, Angle } from '../../../geometry';\nimport { orth } from '../orth';\nexport const defaults = {\n step: 10,\n maxLoopCount: 2000,\n precision: 1,\n maxDirectionChange: 90,\n perpendicular: true,\n excludeTerminals: [],\n excludeShapes: [],\n excludeHiddenNodes: false,\n startDirections: ['top', 'right', 'bottom', 'left'],\n endDirections: ['top', 'right', 'bottom', 'left'],\n directionMap: {\n top: { x: 0, y: -1 },\n right: { x: 1, y: 0 },\n bottom: { x: 0, y: 1 },\n left: { x: -1, y: 0 },\n },\n cost() {\n const step = resolve(this.step, this);\n return step;\n },\n directions() {\n const step = resolve(this.step, this);\n const cost = resolve(this.cost, this);\n return [\n { cost, offsetX: step, offsetY: 0 },\n { cost, offsetX: -step, offsetY: 0 },\n { cost, offsetX: 0, offsetY: step },\n { cost, offsetX: 0, offsetY: -step },\n ];\n },\n penalties() {\n const step = resolve(this.step, this);\n return {\n 0: 0,\n 45: step / 2,\n 90: step / 2,\n };\n },\n paddingBox() {\n const step = resolve(this.step, this);\n return {\n x: -step,\n y: -step,\n width: 2 * step,\n height: 2 * step,\n };\n },\n fallbackRouter: orth,\n draggingRouter: null,\n};\nexport function resolve(input, options) {\n if (typeof input === 'function') {\n return input.call(options);\n }\n return input;\n}\nexport function resolveOptions(options) {\n const result = Object.keys(options).reduce((memo, key) => {\n const ret = memo;\n if (key === 'fallbackRouter' ||\n key === 'draggingRouter' ||\n key === 'fallbackRoute') {\n ret[key] = options[key];\n }\n else {\n ret[key] = resolve(options[key], options);\n }\n return memo;\n }, {});\n if (result.padding) {\n const sides = NumberExt.normalizeSides(result.padding);\n options.paddingBox = {\n x: -sides.left,\n y: -sides.top,\n width: sides.left + sides.right,\n height: sides.top + sides.bottom,\n };\n }\n result.directions.forEach((direction) => {\n const point1 = new Point(0, 0);\n const point2 = new Point(direction.offsetX, direction.offsetY);\n direction.angle = Angle.normalize(point1.theta(point2));\n });\n return result;\n}\n//# sourceMappingURL=options.js.map","import { ArrayExt } from '../../../util';\nconst OPEN = 1;\nconst CLOSE = 2;\nexport class SortedSet {\n constructor() {\n this.items = [];\n this.hash = {};\n this.values = {};\n }\n add(item, value) {\n if (this.hash[item]) {\n // item removal\n this.items.splice(this.items.indexOf(item), 1);\n }\n else {\n this.hash[item] = OPEN;\n }\n this.values[item] = value;\n const index = ArrayExt.sortedIndexBy(this.items, item, (key) => this.values[key]);\n this.items.splice(index, 0, item);\n }\n pop() {\n const item = this.items.shift();\n if (item) {\n this.hash[item] = CLOSE;\n }\n return item;\n }\n isOpen(item) {\n return this.hash[item] === OPEN;\n }\n isClose(item) {\n return this.hash[item] === CLOSE;\n }\n isEmpty() {\n return this.items.length === 0;\n }\n}\n//# sourceMappingURL=sorted-set.js.map","import { ArrayExt } from '../../../util';\nimport { Point } from '../../../geometry';\n/**\n * Helper structure to identify whether a point lies inside an obstacle.\n */\nexport class ObstacleMap {\n constructor(options) {\n this.options = options;\n this.mapGridSize = 100;\n this.map = {};\n }\n /**\n * Builds a map of all nodes for quicker obstacle queries i.e. is a point\n * contained in any obstacle?\n *\n * A simplified grid search.\n */\n build(model, edge) {\n const options = this.options;\n // source or target node could be excluded from set of obstacles\n const excludedTerminals = options.excludeTerminals.reduce((memo, type) => {\n const terminal = edge[type];\n if (terminal) {\n const cell = model.getCell(terminal.cell);\n if (cell) {\n memo.push(cell);\n }\n }\n return memo;\n }, []);\n let excludedAncestors = [];\n const source = model.getCell(edge.getSourceCellId());\n if (source) {\n excludedAncestors = ArrayExt.union(excludedAncestors, source.getAncestors().map((cell) => cell.id));\n }\n const target = model.getCell(edge.getTargetCellId());\n if (target) {\n excludedAncestors = ArrayExt.union(excludedAncestors, target.getAncestors().map((cell) => cell.id));\n }\n // The graph is divided into smaller cells, where each holds information\n // about which node belong to it. When we query whether a point lies\n // inside an obstacle we don't need to go through all obstacles, we check\n // only those in a particular cell.\n const mapGridSize = this.mapGridSize;\n model.getNodes().reduce((map, node) => {\n const shape = node.shape;\n const excludeShapes = options.excludeShapes;\n const excType = shape ? excludeShapes.includes(shape) : false;\n const excTerminal = excludedTerminals.some((cell) => cell.id === node.id);\n const excAncestor = excludedAncestors.includes(node.id);\n const excHidden = options.excludeHiddenNodes && !node.isVisible();\n const excluded = excType || excTerminal || excAncestor || excHidden;\n if (!excluded) {\n const bbox = node.getBBox().moveAndExpand(options.paddingBox);\n const origin = bbox.getOrigin().snapToGrid(mapGridSize);\n const corner = bbox.getCorner().snapToGrid(mapGridSize);\n for (let x = origin.x; x <= corner.x; x += mapGridSize) {\n for (let y = origin.y; y <= corner.y; y += mapGridSize) {\n const key = new Point(x, y).toString();\n if (map[key] == null) {\n map[key] = [];\n }\n map[key].push(bbox);\n }\n }\n }\n return map;\n }, this.map);\n return this;\n }\n isAccessible(point) {\n const key = point.clone().snapToGrid(this.mapGridSize).toString();\n const rects = this.map[key];\n return rects ? rects.every((rect) => !rect.containsPoint(point)) : true;\n }\n}\n//# sourceMappingURL=obstacle-map.js.map","import { Util } from '../../../global/util';\nimport { Point, Line, Angle } from '../../../geometry';\nexport function getSourceBBox(view, options) {\n const bbox = view.sourceBBox.clone();\n if (options && options.paddingBox) {\n return bbox.moveAndExpand(options.paddingBox);\n }\n return bbox;\n}\nexport function getTargetBBox(view, options) {\n const bbox = view.targetBBox.clone();\n if (options && options.paddingBox) {\n return bbox.moveAndExpand(options.paddingBox);\n }\n return bbox;\n}\nexport function getSourceEndpoint(view, options) {\n if (view.sourceAnchor) {\n return view.sourceAnchor;\n }\n const sourceBBox = getSourceBBox(view, options);\n return sourceBBox.getCenter();\n}\nexport function getTargetEndpoint(view, options) {\n if (view.targetAnchor) {\n return view.targetAnchor;\n }\n const targetBBox = getTargetBBox(view, options);\n return targetBBox.getCenter();\n}\n// returns a direction index from start point to end point\n// corrects for grid deformation between start and end\nexport function getDirectionAngle(start, end, directionCount, grid, options) {\n const quadrant = 360 / directionCount;\n const angleTheta = start.theta(fixAngleEnd(start, end, grid, options));\n const normalizedAngle = Angle.normalize(angleTheta + quadrant / 2);\n return quadrant * Math.floor(normalizedAngle / quadrant);\n}\nfunction fixAngleEnd(start, end, grid, options) {\n const step = options.step;\n const diffX = end.x - start.x;\n const diffY = end.y - start.y;\n const gridStepsX = diffX / grid.x;\n const gridStepsY = diffY / grid.y;\n const distanceX = gridStepsX * step;\n const distanceY = gridStepsY * step;\n return new Point(start.x + distanceX, start.y + distanceY);\n}\n/**\n * Returns the change in direction between two direction angles.\n */\nexport function getDirectionChange(angle1, angle2) {\n const change = Math.abs(angle1 - angle2);\n return change > 180 ? 360 - change : change;\n}\n// fix direction offsets according to current grid\nexport function getGridOffsets(grid, options) {\n const step = options.step;\n options.directions.forEach((direction) => {\n direction.gridOffsetX = (direction.offsetX / step) * grid.x;\n direction.gridOffsetY = (direction.offsetY / step) * grid.y;\n });\n return options.directions;\n}\n// get grid size in x and y dimensions, adapted to source and target positions\nexport function getGrid(step, source, target) {\n return {\n source: source.clone(),\n x: getGridDimension(target.x - source.x, step),\n y: getGridDimension(target.y - source.y, step),\n };\n}\nfunction getGridDimension(diff, step) {\n // return step if diff = 0\n if (!diff) {\n return step;\n }\n const abs = Math.abs(diff);\n const count = Math.round(abs / step);\n // return `abs` if less than one step apart\n if (!count) {\n return abs;\n }\n // otherwise, return corrected step\n const roundedDiff = count * step;\n const remainder = abs - roundedDiff;\n const correction = remainder / count;\n return step + correction;\n}\nfunction snapGrid(point, grid) {\n const source = grid.source;\n const x = Util.snapToGrid(point.x - source.x, grid.x) + source.x;\n const y = Util.snapToGrid(point.y - source.y, grid.y) + source.y;\n return new Point(x, y);\n}\nexport function round(point, precision) {\n return point.round(precision);\n}\nexport function align(point, grid, precision) {\n return round(snapGrid(point.clone(), grid), precision);\n}\nexport function getKey(point) {\n return point.toString();\n}\nexport function normalizePoint(point) {\n return new Point(point.x === 0 ? 0 : Math.abs(point.x) / point.x, point.y === 0 ? 0 : Math.abs(point.y) / point.y);\n}\nexport function getCost(from, anchors) {\n let min = Infinity;\n for (let i = 0, len = anchors.length; i < len; i += 1) {\n const dist = from.manhattanDistance(anchors[i]);\n if (dist < min) {\n min = dist;\n }\n }\n return min;\n}\n// Find points around the bbox taking given directions into account\n// lines are drawn from anchor in given directions, intersections recorded\n// if anchor is outside bbox, only those directions that intersect get a rect point\n// the anchor itself is returned as rect point (representing some directions)\n// (since those directions are unobstructed by the bbox)\nexport function getRectPoints(anchor, bbox, directionList, grid, options) {\n const precision = options.precision;\n const directionMap = options.directionMap;\n const centerVector = anchor.diff(bbox.getCenter());\n const rectPoints = Object.keys(directionMap).reduce((res, key) => {\n if (directionList.includes(key)) {\n const direction = directionMap[key];\n // Create a line that is guaranteed to intersect the bbox if bbox\n // is in the direction even if anchor lies outside of bbox.\n const ending = new Point(anchor.x + direction.x * (Math.abs(centerVector.x) + bbox.width), anchor.y + direction.y * (Math.abs(centerVector.y) + bbox.height));\n const intersectionLine = new Line(anchor, ending);\n // Get the farther intersection, in case there are two\n // (that happens if anchor lies next to bbox)\n const intersections = intersectionLine.intersect(bbox) || [];\n let farthestIntersectionDistance;\n let farthestIntersection = null;\n for (let i = 0; i < intersections.length; i += 1) {\n const intersection = intersections[i];\n const distance = anchor.squaredDistance(intersection);\n if (farthestIntersectionDistance == null ||\n distance > farthestIntersectionDistance) {\n farthestIntersectionDistance = distance;\n farthestIntersection = intersection;\n }\n }\n // If an intersection was found in this direction, it is our rectPoint\n if (farthestIntersection) {\n let target = align(farthestIntersection, grid, precision);\n // If the rectPoint lies inside the bbox, offset it by one more step\n if (bbox.containsPoint(target)) {\n target = align(target.translate(direction.x * grid.x, direction.y * grid.y), grid, precision);\n }\n res.push(target);\n }\n }\n return res;\n }, []);\n // if anchor lies outside of bbox, add it to the array of points\n if (!bbox.containsPoint(anchor)) {\n rectPoints.push(align(anchor, grid, precision));\n }\n return rectPoints;\n}\n// reconstructs a route by concatenating points with their parents\nexport function reconstructRoute(parents, points, tailPoint, from, to) {\n const route = [];\n let prevDiff = normalizePoint(to.diff(tailPoint));\n // tailPoint is assumed to be aligned already\n let currentKey = getKey(tailPoint);\n let parent = parents[currentKey];\n let point;\n while (parent) {\n // point is assumed to be aligned already\n point = points[currentKey];\n const diff = normalizePoint(point.diff(parent));\n if (!diff.equals(prevDiff)) {\n route.unshift(point);\n prevDiff = diff;\n }\n // parent is assumed to be aligned already\n currentKey = getKey(parent);\n parent = parents[currentKey];\n }\n // leadPoint is assumed to be aligned already\n const leadPoint = points[currentKey];\n const fromDiff = normalizePoint(leadPoint.diff(from));\n if (!fromDiff.equals(prevDiff)) {\n route.unshift(leadPoint);\n }\n return route;\n}\n//# sourceMappingURL=util.js.map","import { FunctionExt } from '../../../util';\nimport { Point, Rectangle } from '../../../geometry';\nimport { SortedSet } from './sorted-set';\nimport { ObstacleMap } from './obstacle-map';\nimport * as util from './util';\nimport { resolveOptions, } from './options';\n/**\n * Finds the route between two points (`from`, `to`).\n */\nfunction findRoute(edgeView, from, to, map, options) {\n const precision = options.precision;\n let sourceEndpoint;\n let targetEndpoint;\n if (Rectangle.isRectangle(from)) {\n sourceEndpoint = util.round(util.getSourceEndpoint(edgeView, options).clone(), precision);\n }\n else {\n sourceEndpoint = util.round(from.clone(), precision);\n }\n if (Rectangle.isRectangle(to)) {\n targetEndpoint = util.round(util.getTargetEndpoint(edgeView, options).clone(), precision);\n }\n else {\n targetEndpoint = util.round(to.clone(), precision);\n }\n // Get grid for this route.\n const grid = util.getGrid(options.step, sourceEndpoint, targetEndpoint);\n // Get pathfinding points.\n // -----------------------\n const startPoint = sourceEndpoint;\n const endPoint = targetEndpoint;\n let startPoints;\n let endPoints;\n if (Rectangle.isRectangle(from)) {\n startPoints = util.getRectPoints(startPoint, from, options.startDirections, grid, options);\n }\n else {\n startPoints = [startPoint];\n }\n if (Rectangle.isRectangle(to)) {\n endPoints = util.getRectPoints(targetEndpoint, to, options.endDirections, grid, options);\n }\n else {\n endPoints = [endPoint];\n }\n // take into account only accessible rect points (those not under obstacles)\n startPoints = startPoints.filter((p) => map.isAccessible(p));\n endPoints = endPoints.filter((p) => map.isAccessible(p));\n // There is an accessible route point on both sides.\n if (startPoints.length > 0 && endPoints.length > 0) {\n const openSet = new SortedSet();\n // Keeps the actual points for given nodes of the open set.\n const points = {};\n // Keeps the point that is immediate predecessor of given element.\n const parents = {};\n // Cost from start to a point along best known path.\n const costs = {};\n for (let i = 0, n = startPoints.length; i < n; i += 1) {\n // startPoint is assumed to be aligned already\n const startPoint = startPoints[i];\n const key = util.getKey(startPoint);\n openSet.add(key, util.getCost(startPoint, endPoints));\n points[key] = startPoint;\n costs[key] = 0;\n }\n const previousRouteDirectionAngle = options.previousDirectionAngle;\n // undefined for first route\n const isPathBeginning = previousRouteDirectionAngle === undefined;\n // directions\n let direction;\n let directionChange;\n const directions = util.getGridOffsets(grid, options);\n const numDirections = directions.length;\n const endPointsKeys = endPoints.reduce((res, endPoint) => {\n const key = util.getKey(endPoint);\n res.push(key);\n return res;\n }, []);\n // main route finding loop\n const sameStartEndPoints = Point.equalPoints(startPoints, endPoints);\n let loopsRemaining = options.maxLoopCount;\n while (!openSet.isEmpty() && loopsRemaining > 0) {\n // Get the closest item and mark it CLOSED\n const currentKey = openSet.pop();\n const currentPoint = points[currentKey];\n const currentParent = parents[currentKey];\n const currentCost = costs[currentKey];\n const isStartPoint = currentPoint.equals(startPoint);\n const isRouteBeginning = currentParent == null;\n let previousDirectionAngle;\n if (!isRouteBeginning) {\n previousDirectionAngle = util.getDirectionAngle(currentParent, currentPoint, numDirections, grid, options);\n }\n else if (!isPathBeginning) {\n // a vertex on the route\n previousDirectionAngle = previousRouteDirectionAngle;\n }\n else if (!isStartPoint) {\n // beginning of route on the path\n previousDirectionAngle = util.getDirectionAngle(startPoint, currentPoint, numDirections, grid, options);\n }\n else {\n previousDirectionAngle = null;\n }\n // Check if we reached any endpoint\n const skipEndCheck = isRouteBeginning && sameStartEndPoints;\n if (!skipEndCheck && endPointsKeys.indexOf(currentKey) >= 0) {\n options.previousDirectionAngle = previousDirectionAngle;\n return util.reconstructRoute(parents, points, currentPoint, startPoint, endPoint);\n }\n // Go over all possible directions and find neighbors\n for (let i = 0; i < numDirections; i += 1) {\n direction = directions[i];\n const directionAngle = direction.angle;\n directionChange = util.getDirectionChange(previousDirectionAngle, directionAngle);\n // Don't use the point changed rapidly.\n if (!(isPathBeginning && isStartPoint) &&\n directionChange > options.maxDirectionChange) {\n continue;\n }\n const neighborPoint = util.align(currentPoint\n .clone()\n .translate(direction.gridOffsetX || 0, direction.gridOffsetY || 0), grid, precision);\n const neighborKey = util.getKey(neighborPoint);\n // Closed points were already evaluated.\n if (openSet.isClose(neighborKey) || !map.isAccessible(neighborPoint)) {\n continue;\n }\n // Neighbor is an end point.\n if (endPointsKeys.indexOf(neighborKey) >= 0) {\n const isEndPoint = neighborPoint.equals(endPoint);\n if (!isEndPoint) {\n const endDirectionAngle = util.getDirectionAngle(neighborPoint, endPoint, numDirections, grid, options);\n const endDirectionChange = util.getDirectionChange(directionAngle, endDirectionAngle);\n if (endDirectionChange > options.maxDirectionChange) {\n continue;\n }\n }\n }\n // The current direction is ok.\n // ----------------------------\n const neighborCost = direction.cost;\n const neighborPenalty = isStartPoint\n ? 0\n : options.penalties[directionChange];\n const costFromStart = currentCost + neighborCost + neighborPenalty;\n // Neighbor point has not been processed yet or the cost of\n // the path from start is lower than previously calculated.\n if (!openSet.isOpen(neighborKey) ||\n costFromStart < costs[neighborKey]) {\n points[neighborKey] = neighborPoint;\n parents[neighborKey] = currentPoint;\n costs[neighborKey] = costFromStart;\n openSet.add(neighborKey, costFromStart + util.getCost(neighborPoint, endPoints));\n }\n }\n loopsRemaining -= 1;\n }\n }\n if (options.fallbackRoute) {\n return FunctionExt.call(options.fallbackRoute, this, startPoint, endPoint, options);\n }\n return null;\n}\nexport const router = function (vertices, optionsRaw, edgeView) {\n const options = resolveOptions(optionsRaw);\n const sourceBBox = util.getSourceBBox(edgeView, options);\n const targetBBox = util.getTargetBBox(edgeView, options);\n const sourceEndpoint = util.getSourceEndpoint(edgeView, options);\n // pathfinding\n const map = new ObstacleMap(options).build(edgeView.graph.model, edgeView.cell);\n const oldVertices = vertices.map((p) => Point.create(p));\n const newVertices = [];\n // The origin of first route's grid, does not need snapping\n let tailPoint = sourceEndpoint;\n let from;\n let to;\n for (let i = 0, len = oldVertices.length; i <= len; i += 1) {\n let partialRoute = null;\n from = to || sourceBBox;\n to = oldVertices[i];\n // This is the last iteration\n if (to == null) {\n to = targetBBox;\n // If the target is a point, we should use dragging route\n // instead of main routing method if it has been provided.\n const edge = edgeView.cell;\n const isEndingAtPoint = edge.getSourceCellId() == null || edge.getTargetCellId() == null;\n if (isEndingAtPoint && typeof options.draggingRouter === 'function') {\n const dragFrom = from === sourceBBox ? sourceEndpoint : from;\n const dragTo = to.getOrigin();\n partialRoute = FunctionExt.call(options.draggingRouter, edgeView, dragFrom, dragTo, options);\n }\n }\n // Find the partial route\n if (partialRoute == null) {\n partialRoute = findRoute(edgeView, from, to, map, options);\n }\n // Cannot found the partial route.\n if (partialRoute === null) {\n return FunctionExt.call(options.fallbackRouter, this, vertices, options, edgeView);\n }\n // Remove the first point if the previous partial route has\n // the same point as last.\n const leadPoint = partialRoute[0];\n if (leadPoint && leadPoint.equals(tailPoint)) {\n partialRoute.shift();\n }\n // Save tailPoint for next iteration\n tailPoint = partialRoute[partialRoute.length - 1] || tailPoint;\n newVertices.push(...partialRoute);\n }\n return newVertices;\n};\n//# sourceMappingURL=router.js.map","import { FunctionExt } from '../../../util';\nimport { router } from './router';\nimport { defaults } from './options';\nexport const manhattan = function (vertices, options, edgeView) {\n return FunctionExt.call(router, this, vertices, Object.assign(Object.assign({}, defaults), options), edgeView);\n};\n//# sourceMappingURL=index.js.map","import { FunctionExt } from '../../util';\nimport { Point, Line, Angle } from '../../geometry';\nimport { resolve } from './manhattan/options';\nimport { manhattan } from './manhattan/index';\nconst defaults = {\n maxDirectionChange: 45,\n // an array of directions to find next points on the route\n // different from start/end directions\n directions() {\n const step = resolve(this.step, this);\n const cost = resolve(this.cost, this);\n const diagonalCost = Math.ceil(Math.sqrt((step * step) << 1)); // eslint-disable-line no-bitwise\n return [\n { cost, offsetX: step, offsetY: 0 },\n { cost: diagonalCost, offsetX: step, offsetY: step },\n { cost, offsetX: 0, offsetY: step },\n { cost: diagonalCost, offsetX: -step, offsetY: step },\n { cost, offsetX: -step, offsetY: 0 },\n { cost: diagonalCost, offsetX: -step, offsetY: -step },\n { cost, offsetX: 0, offsetY: -step },\n { cost: diagonalCost, offsetX: step, offsetY: -step },\n ];\n },\n // a simple route used in situations when main routing method fails\n // (exceed max number of loop iterations, inaccessible)\n fallbackRoute(from, to, options) {\n // Find a route which breaks by 45 degrees ignoring all obstacles.\n const theta = from.theta(to);\n const route = [];\n let a = { x: to.x, y: from.y };\n let b = { x: from.x, y: to.y };\n if (theta % 180 > 90) {\n const t = a;\n a = b;\n b = t;\n }\n const p1 = theta % 90 < 45 ? a : b;\n const l1 = new Line(from, p1);\n const alpha = 90 * Math.ceil(theta / 90);\n const p2 = Point.fromPolar(l1.squaredLength(), Angle.toRad(alpha + 135), p1);\n const l2 = new Line(to, p2);\n const intersectionPoint = l1.intersectsWithLine(l2);\n const point = intersectionPoint || to;\n const directionFrom = intersectionPoint ? point : from;\n const quadrant = 360 / options.directions.length;\n const angleTheta = directionFrom.theta(to);\n const normalizedAngle = Angle.normalize(angleTheta + quadrant / 2);\n const directionAngle = quadrant * Math.floor(normalizedAngle / quadrant);\n options.previousDirectionAngle = directionAngle;\n if (point)\n route.push(point.round());\n route.push(to);\n return route;\n },\n};\nexport const metro = function (vertices, options, linkView) {\n return FunctionExt.call(manhattan, this, vertices, Object.assign(Object.assign({}, defaults), options), linkView);\n};\n//# sourceMappingURL=metro.js.map","export const er = function (vertices, options, edgeView) {\n const offsetRaw = options.offset || 32;\n const min = options.min == null ? 16 : options.min;\n let offset = 0;\n let direction = options.direction;\n const sourceBBox = edgeView.sourceBBox;\n const targetBBox = edgeView.targetBBox;\n const sourcePoint = sourceBBox.getCenter();\n const targetPoint = targetBBox.getCenter();\n if (typeof offsetRaw === 'number') {\n offset = offsetRaw;\n }\n if (direction == null) {\n let dx = targetBBox.left - sourceBBox.right;\n let dy = targetBBox.top - sourceBBox.bottom;\n if (dx >= 0 && dy >= 0) {\n direction = dx >= dy ? 'L' : 'T';\n }\n else if (dx <= 0 && dy >= 0) {\n dx = sourceBBox.left - targetBBox.right;\n if (dx >= 0) {\n direction = dx >= dy ? 'R' : 'T';\n }\n else {\n direction = 'T';\n }\n }\n else if (dx >= 0 && dy <= 0) {\n dy = sourceBBox.top - targetBBox.bottom;\n if (dy >= 0) {\n direction = dx >= dy ? 'L' : 'B';\n }\n else {\n direction = 'L';\n }\n }\n else {\n dx = sourceBBox.left - targetBBox.right;\n dy = sourceBBox.top - targetBBox.bottom;\n if (dx >= 0 && dy >= 0) {\n direction = dx >= dy ? 'R' : 'B';\n }\n else if (dx <= 0 && dy >= 0) {\n direction = 'B';\n }\n else if (dx >= 0 && dy <= 0) {\n direction = 'R';\n }\n else {\n direction = Math.abs(dx) > Math.abs(dy) ? 'R' : 'B';\n }\n }\n }\n if (direction === 'H') {\n direction = targetPoint.x - sourcePoint.x >= 0 ? 'L' : 'R';\n }\n else if (direction === 'V') {\n direction = targetPoint.y - sourcePoint.y >= 0 ? 'T' : 'B';\n }\n if (offsetRaw === 'center') {\n if (direction === 'L') {\n offset = (targetBBox.left - sourceBBox.right) / 2;\n }\n else if (direction === 'R') {\n offset = (sourceBBox.left - targetBBox.right) / 2;\n }\n else if (direction === 'T') {\n offset = (targetBBox.top - sourceBBox.bottom) / 2;\n }\n else if (direction === 'B') {\n offset = (sourceBBox.top - targetBBox.bottom) / 2;\n }\n }\n let coord;\n let dim;\n let factor;\n const horizontal = direction === 'L' || direction === 'R';\n if (horizontal) {\n if (targetPoint.y === sourcePoint.y) {\n return [...vertices];\n }\n factor = direction === 'L' ? 1 : -1;\n coord = 'x';\n dim = 'width';\n }\n else {\n if (targetPoint.x === sourcePoint.x) {\n return [...vertices];\n }\n factor = direction === 'T' ? 1 : -1;\n coord = 'y';\n dim = 'height';\n }\n const source = sourcePoint.clone();\n const target = targetPoint.clone();\n source[coord] += factor * (sourceBBox[dim] / 2 + offset);\n target[coord] -= factor * (targetBBox[dim] / 2 + offset);\n if (horizontal) {\n const sourceX = source.x;\n const targetX = target.x;\n const sourceDelta = sourceBBox.width / 2 + min;\n const targetDelta = targetBBox.width / 2 + min;\n if (targetPoint.x > sourcePoint.x) {\n if (targetX <= sourceX) {\n source.x = Math.max(targetX, sourcePoint.x + sourceDelta);\n target.x = Math.min(sourceX, targetPoint.x - targetDelta);\n }\n }\n else if (targetX >= sourceX) {\n source.x = Math.min(targetX, sourcePoint.x - sourceDelta);\n target.x = Math.max(sourceX, targetPoint.x + targetDelta);\n }\n }\n else {\n const sourceY = source.y;\n const targetY = target.y;\n const sourceDelta = sourceBBox.height / 2 + min;\n const targetDelta = targetBBox.height / 2 + min;\n if (targetPoint.y > sourcePoint.y) {\n if (targetY <= sourceY) {\n source.y = Math.max(targetY, sourcePoint.y + sourceDelta);\n target.y = Math.min(sourceY, targetPoint.y - targetDelta);\n }\n }\n else if (targetY >= sourceY) {\n source.y = Math.min(targetY, sourcePoint.y - sourceDelta);\n target.y = Math.max(sourceY, targetPoint.y + targetDelta);\n }\n }\n return [source.toJSON(), ...vertices, target.toJSON()];\n};\n//# sourceMappingURL=er.js.map","import { Angle, Point, Line } from '../../geometry';\nfunction rollup(points, merge) {\n if (merge != null && merge !== false) {\n const amount = typeof merge === 'boolean' ? 0 : merge;\n if (amount > 0) {\n const center1 = Point.create(points[1]).move(points[2], amount);\n const center2 = Point.create(points[1]).move(points[0], amount);\n return [center1.toJSON(), ...points, center2.toJSON()];\n }\n {\n const center = points[1];\n return [Object.assign({}, center), ...points, Object.assign({}, center)];\n }\n }\n return points;\n}\nexport const loop = function (vertices, options, edgeView) {\n const width = options.width || 50;\n const height = options.height || 80;\n const halfHeight = height / 2;\n const angle = options.angle || 'auto';\n const sourceAnchor = edgeView.sourceAnchor;\n const targetAnchor = edgeView.targetAnchor;\n const sourceBBox = edgeView.sourceBBox;\n const targetBBox = edgeView.targetBBox;\n if (sourceAnchor.equals(targetAnchor)) {\n const getVertices = (angle) => {\n const rad = Angle.toRad(angle);\n const sin = Math.sin(rad);\n const cos = Math.cos(rad);\n const center = new Point(sourceAnchor.x + cos * width, sourceAnchor.y + sin * width);\n const ref = new Point(center.x - cos * halfHeight, center.y - sin * halfHeight);\n const p1 = ref.clone().rotate(-90, center);\n const p2 = ref.clone().rotate(90, center);\n return [p1.toJSON(), center.toJSON(), p2.toJSON()];\n };\n const validate = (end) => {\n const start = sourceAnchor.clone().move(end, -1);\n const line = new Line(start, end);\n return (!sourceBBox.containsPoint(end) && !sourceBBox.intersectsWithLine(line));\n };\n const angles = [0, 90, 180, 270, 45, 135, 225, 315];\n if (typeof angle === 'number') {\n return rollup(getVertices(angle), options.merge);\n }\n const center = sourceBBox.getCenter();\n if (center.equals(sourceAnchor)) {\n return rollup(getVertices(0), options.merge);\n }\n const deg = center.angleBetween(sourceAnchor, center.clone().translate(1, 0));\n let ret = getVertices(deg);\n if (validate(ret[1])) {\n return rollup(ret, options.merge);\n }\n // return the best vertices\n for (let i = 1, l = angles.length; i < l; i += 1) {\n ret = getVertices(deg + angles[i]);\n if (validate(ret[1])) {\n return rollup(ret, options.merge);\n }\n }\n return rollup(ret, options.merge);\n }\n {\n const line = new Line(sourceAnchor, targetAnchor);\n let parallel = line.parallel(-width);\n let center = parallel.getCenter();\n let p1 = parallel.start.clone().move(parallel.end, halfHeight);\n let p2 = parallel.end.clone().move(parallel.start, halfHeight);\n const ref = line.parallel(-1);\n const line1 = new Line(ref.start, center);\n const line2 = new Line(ref.end, center);\n if (sourceBBox.containsPoint(center) ||\n targetBBox.containsPoint(center) ||\n sourceBBox.intersectsWithLine(line1) ||\n sourceBBox.intersectsWithLine(line2) ||\n targetBBox.intersectsWithLine(line1) ||\n targetBBox.intersectsWithLine(line2)) {\n parallel = line.parallel(width);\n center = parallel.getCenter();\n p1 = parallel.start.clone().move(parallel.end, halfHeight);\n p2 = parallel.end.clone().move(parallel.start, halfHeight);\n }\n if (options.merge) {\n const line = new Line(sourceAnchor, targetAnchor);\n const normal = new Line(center, line.center).setLength(Number.MAX_SAFE_INTEGER);\n const intersects1 = sourceBBox.intersectsWithLine(normal);\n const intersects2 = targetBBox.intersectsWithLine(normal);\n const intersects = intersects1\n ? Array.isArray(intersects1)\n ? intersects1\n : [intersects1]\n : [];\n if (intersects2) {\n if (Array.isArray(intersects2)) {\n intersects.push(...intersects2);\n }\n else {\n intersects.push(intersects2);\n }\n }\n const anchor = line.center.closest(intersects);\n if (anchor) {\n edgeView.sourceAnchor = anchor.clone();\n edgeView.targetAnchor = anchor.clone();\n }\n else {\n edgeView.sourceAnchor = line.center.clone();\n edgeView.targetAnchor = line.center.clone();\n }\n }\n return rollup([p1.toJSON(), center.toJSON(), p2.toJSON()], options.merge);\n }\n};\n//# sourceMappingURL=loop.js.map","import { Registry } from '../registry';\nimport * as routers from './main';\nexport var Router;\n(function (Router) {\n Router.presets = routers;\n Router.registry = Registry.create({\n type: 'router',\n });\n Router.registry.register(Router.presets, true);\n})(Router || (Router = {}));\n//# sourceMappingURL=index.js.map","import { Polyline, Path } from '../../geometry';\nexport const normal = function (sourcePoint, targetPoint, routePoints, options = {}) {\n const points = [sourcePoint, ...routePoints, targetPoint];\n const polyline = new Polyline(points);\n const path = new Path(polyline);\n return options.raw ? path : path.serialize();\n};\n//# sourceMappingURL=normal.js.map","import { Path, Point } from '../../geometry';\nexport const loop = function (sourcePoint, targetPoint, routePoints, options = {}) {\n const fix = routePoints.length === 3 ? 0 : 1;\n const p1 = Point.create(routePoints[0 + fix]);\n const p2 = Point.create(routePoints[2 + fix]);\n const center = Point.create(routePoints[1 + fix]);\n if (!Point.equals(sourcePoint, targetPoint)) {\n const middle = new Point((sourcePoint.x + targetPoint.x) / 2, (sourcePoint.y + targetPoint.y) / 2);\n const angle = middle.angleBetween(Point.create(sourcePoint).rotate(90, middle), center);\n if (angle > 1) {\n p1.rotate(180 - angle, middle);\n p2.rotate(180 - angle, middle);\n center.rotate(180 - angle, middle);\n }\n }\n const pathData = `\n M ${sourcePoint.x} ${sourcePoint.y}\n Q ${p1.x} ${p1.y} ${center.x} ${center.y}\n Q ${p2.x} ${p2.y} ${targetPoint.x} ${targetPoint.y}\n `;\n return options.raw ? Path.parse(pathData) : pathData;\n};\n//# sourceMappingURL=loop.js.map","import { Point, Path } from '../../geometry';\nexport const rounded = function (sourcePoint, targetPoint, routePoints, options = {}) {\n const path = new Path();\n path.appendSegment(Path.createSegment('M', sourcePoint));\n const f13 = 1 / 3;\n const f23 = 2 / 3;\n const radius = options.radius || 10;\n let prevDistance;\n let nextDistance;\n for (let i = 0, ii = routePoints.length; i < ii; i += 1) {\n const curr = Point.create(routePoints[i]);\n const prev = routePoints[i - 1] || sourcePoint;\n const next = routePoints[i + 1] || targetPoint;\n prevDistance = nextDistance || curr.distance(prev) / 2;\n nextDistance = curr.distance(next) / 2;\n const startMove = -Math.min(radius, prevDistance);\n const endMove = -Math.min(radius, nextDistance);\n const roundedStart = curr.clone().move(prev, startMove).round();\n const roundedEnd = curr.clone().move(next, endMove).round();\n const control1 = new Point(f13 * roundedStart.x + f23 * curr.x, f23 * curr.y + f13 * roundedStart.y);\n const control2 = new Point(f13 * roundedEnd.x + f23 * curr.x, f23 * curr.y + f13 * roundedEnd.y);\n path.appendSegment(Path.createSegment('L', roundedStart));\n path.appendSegment(Path.createSegment('C', control1, control2, roundedEnd));\n }\n path.appendSegment(Path.createSegment('L', targetPoint));\n return options.raw ? path : path.serialize();\n};\n//# sourceMappingURL=rounded.js.map","import { Curve, Path } from '../../geometry';\nexport const smooth = function (sourcePoint, targetPoint, routePoints, options = {}) {\n let path;\n let direction = options.direction;\n if (routePoints && routePoints.length !== 0) {\n const points = [sourcePoint, ...routePoints, targetPoint];\n const curves = Curve.throughPoints(points);\n path = new Path(curves);\n }\n else {\n // If we have no route, use a default cubic bezier curve, cubic bezier\n // requires two control points, the control points have `x` midway\n // between source and target. This produces an S-like curve.\n path = new Path();\n path.appendSegment(Path.createSegment('M', sourcePoint));\n if (!direction) {\n direction =\n Math.abs(sourcePoint.x - targetPoint.x) >=\n Math.abs(sourcePoint.y - targetPoint.y)\n ? 'H'\n : 'V';\n }\n if (direction === 'H') {\n const controlPointX = (sourcePoint.x + targetPoint.x) / 2;\n path.appendSegment(Path.createSegment('C', controlPointX, sourcePoint.y, controlPointX, targetPoint.y, targetPoint.x, targetPoint.y));\n }\n else {\n const controlPointY = (sourcePoint.y + targetPoint.y) / 2;\n path.appendSegment(Path.createSegment('C', sourcePoint.x, controlPointY, targetPoint.x, controlPointY, targetPoint.x, targetPoint.y));\n }\n }\n return options.raw ? path : path.serialize();\n};\n//# sourceMappingURL=smooth.js.map","/* eslint-disable no-underscore-dangle */\nimport { Point, Line, Path } from '../../geometry';\n// takes care of math. error for case when jump is too close to end of line\nconst CLOSE_PROXIMITY_PADDING = 1;\nconst F13 = 1 / 3;\nconst F23 = 2 / 3;\nfunction setupUpdating(view) {\n let updateList = view.graph._jumpOverUpdateList;\n // first time setup for this paper\n if (updateList == null) {\n updateList = view.graph._jumpOverUpdateList = [];\n /**\n * Handler for a batch:stop event to force\n * update of all registered links with jump over connector\n */\n view.graph.on('cell:mouseup', () => {\n const list = view.graph._jumpOverUpdateList;\n for (let i = 0; i < list.length; i += 1) {\n list[i].update();\n }\n });\n view.graph.on('model:reseted', () => {\n updateList = view.graph._jumpOverUpdateList = [];\n });\n }\n // add this link to a list so it can be updated when some other link is updated\n if (updateList.indexOf(view) < 0) {\n updateList.push(view);\n // watch for change of connector type or removal of link itself\n // to remove the link from a list of jump over connectors\n const clean = () => updateList.splice(updateList.indexOf(view), 1);\n view.cell.once('change:connector', clean);\n view.cell.once('removed', clean);\n }\n}\nfunction createLines(sourcePoint, targetPoint, route = []) {\n const points = [sourcePoint, ...route, targetPoint];\n const lines = [];\n points.forEach((point, idx) => {\n const next = points[idx + 1];\n if (next != null) {\n lines.push(new Line(point, next));\n }\n });\n return lines;\n}\nfunction findLineIntersections(line, crossCheckLines) {\n const intersections = [];\n crossCheckLines.forEach((crossCheckLine) => {\n const intersection = line.intersectsWithLine(crossCheckLine);\n if (intersection) {\n intersections.push(intersection);\n }\n });\n return intersections;\n}\nfunction getDistence(p1, p2) {\n return new Line(p1, p2).squaredLength();\n}\n/**\n * Split input line into multiple based on intersection points.\n */\nfunction createJumps(line, intersections, jumpSize) {\n return intersections.reduce((memo, point, idx) => {\n // skipping points that were merged with the previous line\n // to make bigger arc over multiple lines that are close to each other\n if (skippedPoints.includes(point)) {\n return memo;\n }\n // always grab the last line from buffer and modify it\n const lastLine = memo.pop() || line;\n // calculate start and end of jump by moving by a given size of jump\n const jumpStart = Point.create(point).move(lastLine.start, -jumpSize);\n let jumpEnd = Point.create(point).move(lastLine.start, +jumpSize);\n // now try to look at the next intersection point\n const nextPoint = intersections[idx + 1];\n if (nextPoint != null) {\n const distance = jumpEnd.distance(nextPoint);\n if (distance <= jumpSize) {\n // next point is close enough, move the jump end by this\n // difference and mark the next point to be skipped\n jumpEnd = nextPoint.move(lastLine.start, distance);\n skippedPoints.push(nextPoint);\n }\n }\n else {\n // this block is inside of `else` as an optimization so the distance is\n // not calculated when we know there are no other intersection points\n const endDistance = jumpStart.distance(lastLine.end);\n // if the end is too close to possible jump, draw remaining line instead of a jump\n if (endDistance < jumpSize * 2 + CLOSE_PROXIMITY_PADDING) {\n memo.push(lastLine);\n return memo;\n }\n }\n const startDistance = jumpEnd.distance(lastLine.start);\n if (startDistance < jumpSize * 2 + CLOSE_PROXIMITY_PADDING) {\n // if the start of line is too close to jump, draw that line instead of a jump\n memo.push(lastLine);\n return memo;\n }\n // finally create a jump line\n const jumpLine = new Line(jumpStart, jumpEnd);\n // it's just simple line but with a `isJump` property\n jumppedLines.push(jumpLine);\n memo.push(new Line(lastLine.start, jumpStart), jumpLine, new Line(jumpEnd, lastLine.end));\n return memo;\n }, []);\n}\nfunction buildPath(lines, jumpSize, jumpType, radius) {\n const path = new Path();\n let segment;\n // first move to the start of a first line\n segment = Path.createSegment('M', lines[0].start);\n path.appendSegment(segment);\n lines.forEach((line, index) => {\n if (jumppedLines.includes(line)) {\n let angle;\n let diff;\n let control1;\n let control2;\n if (jumpType === 'arc') {\n // approximates semicircle with 2 curves\n angle = -90;\n // determine rotation of arc based on difference between points\n diff = line.start.diff(line.end);\n // make sure the arc always points up (or right)\n const xAxisRotate = diff.x < 0 || (diff.x === 0 && diff.y < 0);\n if (xAxisRotate) {\n angle += 180;\n }\n const center = line.getCenter();\n const centerLine = new Line(center, line.end).rotate(angle, center);\n let halfLine;\n // first half\n halfLine = new Line(line.start, center);\n control1 = halfLine.pointAt(2 / 3).rotate(angle, line.start);\n control2 = centerLine.pointAt(1 / 3).rotate(-angle, centerLine.end);\n segment = Path.createSegment('C', control1, control2, centerLine.end);\n path.appendSegment(segment);\n // second half\n halfLine = new Line(center, line.end);\n control1 = centerLine.pointAt(1 / 3).rotate(angle, centerLine.end);\n control2 = halfLine.pointAt(1 / 3).rotate(-angle, line.end);\n segment = Path.createSegment('C', control1, control2, line.end);\n path.appendSegment(segment);\n }\n else if (jumpType === 'gap') {\n segment = Path.createSegment('M', line.end);\n path.appendSegment(segment);\n }\n else if (jumpType === 'cubic') {\n // approximates semicircle with 1 curve\n angle = line.start.theta(line.end);\n const xOffset = jumpSize * 0.6;\n let yOffset = jumpSize * 1.35;\n // determine rotation of arc based on difference between points\n diff = line.start.diff(line.end);\n // make sure the arc always points up (or right)\n const xAxisRotate = diff.x < 0 || (diff.x === 0 && diff.y < 0);\n if (xAxisRotate) {\n yOffset *= -1;\n }\n control1 = new Point(line.start.x + xOffset, line.start.y + yOffset).rotate(angle, line.start);\n control2 = new Point(line.end.x - xOffset, line.end.y + yOffset).rotate(angle, line.end);\n segment = Path.createSegment('C', control1, control2, line.end);\n path.appendSegment(segment);\n }\n }\n else {\n const nextLine = lines[index + 1];\n if (radius === 0 || !nextLine || jumppedLines.includes(nextLine)) {\n segment = Path.createSegment('L', line.end);\n path.appendSegment(segment);\n }\n else {\n buildRoundedSegment(radius, path, line.end, line.start, nextLine.end);\n }\n }\n });\n return path;\n}\nfunction buildRoundedSegment(offset, path, curr, prev, next) {\n const prevDistance = curr.distance(prev) / 2;\n const nextDistance = curr.distance(next) / 2;\n const startMove = -Math.min(offset, prevDistance);\n const endMove = -Math.min(offset, nextDistance);\n const roundedStart = curr.clone().move(prev, startMove).round();\n const roundedEnd = curr.clone().move(next, endMove).round();\n const control1 = new Point(F13 * roundedStart.x + F23 * curr.x, F23 * curr.y + F13 * roundedStart.y);\n const control2 = new Point(F13 * roundedEnd.x + F23 * curr.x, F23 * curr.y + F13 * roundedEnd.y);\n let segment;\n segment = Path.createSegment('L', roundedStart);\n path.appendSegment(segment);\n segment = Path.createSegment('C', control1, control2, roundedEnd);\n path.appendSegment(segment);\n}\nlet jumppedLines;\nlet skippedPoints;\nexport const jumpover = function (sourcePoint, targetPoint, routePoints, options = {}) {\n jumppedLines = [];\n skippedPoints = [];\n setupUpdating(this);\n const jumpSize = options.size || 5;\n const jumpType = options.type || 'arc';\n const radius = options.radius || 0;\n // list of connector types not to jump over.\n const ignoreConnectors = options.ignoreConnectors || ['smooth'];\n const graph = this.graph;\n const model = graph.model;\n const allLinks = model.getEdges();\n // there is just one link, draw it directly\n if (allLinks.length === 1) {\n return buildPath(createLines(sourcePoint, targetPoint, routePoints), jumpSize, jumpType, radius);\n }\n const edge = this.cell;\n const thisIndex = allLinks.indexOf(edge);\n const defaultConnector = graph.options.connecting.connector || {};\n // not all links are meant to be jumped over.\n const edges = allLinks.filter((link, idx) => {\n const connector = link.getConnector() || defaultConnector;\n // avoid jumping over links with connector type listed in `ignored connectors`.\n if (ignoreConnectors.includes(connector.name)) {\n return false;\n }\n // filter out links that are above this one and have the same connector type\n // otherwise there would double hoops for each intersection\n if (idx > thisIndex) {\n return connector.name !== 'jumpover';\n }\n return true;\n });\n // find views for all links\n const linkViews = edges.map((edge) => {\n return graph.renderer.findViewByCell(edge);\n });\n // create lines for this link\n const thisLines = createLines(sourcePoint, targetPoint, routePoints);\n // create lines for all other links\n const linkLines = linkViews.map((linkView) => {\n if (linkView == null) {\n return [];\n }\n if (linkView === this) {\n return thisLines;\n }\n return createLines(linkView.sourcePoint, linkView.targetPoint, linkView.routePoints);\n });\n // transform lines for this link by splitting with jump lines at\n // points of intersection with other links\n const jumpingLines = [];\n thisLines.forEach((line) => {\n // iterate all links and grab the intersections with this line\n // these are then sorted by distance so the line can be split more easily\n const intersections = edges\n .reduce((memo, link, i) => {\n // don't intersection with itself\n if (link !== edge) {\n const lineIntersections = findLineIntersections(line, linkLines[i]);\n memo.push(...lineIntersections);\n }\n return memo;\n }, [])\n .sort((a, b) => getDistence(line.start, a) - getDistence(line.start, b));\n if (intersections.length > 0) {\n // split the line based on found intersection points\n jumpingLines.push(...createJumps(line, intersections, jumpSize));\n }\n else {\n // without any intersection the line goes uninterrupted\n jumpingLines.push(line);\n }\n });\n const path = buildPath(jumpingLines, jumpSize, jumpType, radius);\n jumppedLines = [];\n skippedPoints = [];\n return options.raw ? path : path.serialize();\n};\n//# sourceMappingURL=jumpover.js.map","import { Registry } from '../registry';\nimport * as connectors from './main';\nexport var Connector;\n(function (Connector) {\n Connector.presets = connectors;\n Connector.registry = Registry.create({\n type: 'connector',\n });\n Connector.registry.register(Connector.presets, true);\n})(Connector || (Connector = {}));\n//# sourceMappingURL=index.js.map","import { Registry } from './registry';\nexport * from './attr';\nexport * from './grid';\nexport * from './filter';\nexport * from './background';\nexport * from './highlighter';\nexport * from './port-layout';\nexport * from './port-label-layout';\nexport * from './tool';\n// connection\nexport * from './marker';\nexport * from './node-anchor';\nexport * from './edge-anchor';\nexport * from './connection-point';\nexport * from './router';\nexport * from './connector';\nexport * from './connection-strategy';\n//\nexport * from './registry';\nexport const create = Registry.create;\n//# sourceMappingURL=index.js.map","import { ObjectExt, Dom } from '../util';\nimport { Timing, Interp } from '../common';\nexport class Animation {\n constructor(cell) {\n this.cell = cell;\n this.ids = {};\n this.cache = {};\n }\n get() {\n return Object.keys(this.ids);\n }\n start(path, targetValue, options = {}, delim = '/') {\n const startValue = this.cell.getPropByPath(path);\n const localOptions = ObjectExt.defaults(options, Animation.defaultOptions);\n const timing = this.getTiming(localOptions.timing);\n const interpolate = this.getInterp(localOptions.interp, startValue, targetValue);\n let startTime = 0;\n const key = Array.isArray(path) ? path.join(delim) : path;\n const paths = Array.isArray(path) ? path : path.split(delim);\n const iterate = () => {\n const now = new Date().getTime();\n if (startTime === 0) {\n startTime = now;\n }\n const elaspe = now - startTime;\n let progress = elaspe / localOptions.duration;\n if (progress < 1) {\n this.ids[key] = Dom.requestAnimationFrame(iterate);\n }\n else {\n progress = 1;\n }\n const currentValue = interpolate(timing(progress));\n this.cell.setPropByPath(paths, currentValue);\n if (options.progress) {\n options.progress(Object.assign({ progress, currentValue }, this.getArgs(key)));\n }\n if (progress === 1) {\n // TODO: remove in the next major version\n this.cell.notify('transition:end', this.getArgs(key));\n this.cell.notify('transition:complete', this.getArgs(key));\n options.complete && options.complete(this.getArgs(key));\n this.cell.notify('transition:finish', this.getArgs(key));\n options.finish && options.finish(this.getArgs(key));\n this.clean(key);\n }\n };\n setTimeout(() => {\n this.stop(path, undefined, delim);\n this.cache[key] = { startValue, targetValue, options: localOptions };\n this.ids[key] = Dom.requestAnimationFrame(iterate);\n // TODO: remove in the next major version\n this.cell.notify('transition:begin', this.getArgs(key));\n this.cell.notify('transition:start', this.getArgs(key));\n options.start && options.start(this.getArgs(key));\n }, options.delay);\n return this.stop.bind(this, path, delim, options);\n }\n stop(path, options = {}, delim = '/') {\n const paths = Array.isArray(path) ? path : path.split(delim);\n Object.keys(this.ids)\n .filter((key) => ObjectExt.isEqual(paths, key.split(delim).slice(0, paths.length)))\n .forEach((key) => {\n Dom.cancelAnimationFrame(this.ids[key]);\n const data = this.cache[key];\n const commonArgs = this.getArgs(key);\n const localOptions = Object.assign(Object.assign({}, data.options), options);\n const jumpedToEnd = localOptions.jumpedToEnd;\n if (jumpedToEnd && data.targetValue != null) {\n this.cell.setPropByPath(key, data.targetValue);\n this.cell.notify('transition:end', Object.assign({}, commonArgs));\n this.cell.notify('transition:complete', Object.assign({}, commonArgs));\n localOptions.complete && localOptions.complete(Object.assign({}, commonArgs));\n }\n const stopArgs = Object.assign({ jumpedToEnd }, commonArgs);\n this.cell.notify('transition:stop', Object.assign({}, stopArgs));\n localOptions.stop && localOptions.stop(Object.assign({}, stopArgs));\n this.cell.notify('transition:finish', Object.assign({}, commonArgs));\n localOptions.finish && localOptions.finish(Object.assign({}, commonArgs));\n this.clean(key);\n });\n return this;\n }\n clean(key) {\n delete this.ids[key];\n delete this.cache[key];\n }\n getTiming(timing) {\n return typeof timing === 'string' ? Timing[timing] : timing;\n }\n getInterp(interp, startValue, targetValue) {\n if (interp) {\n return interp(startValue, targetValue);\n }\n if (typeof targetValue === 'number') {\n return Interp.number(startValue, targetValue);\n }\n if (typeof targetValue === 'string') {\n if (targetValue[0] === '#') {\n return Interp.color(startValue, targetValue);\n }\n return Interp.unit(startValue, targetValue);\n }\n return Interp.object(startValue, targetValue);\n }\n getArgs(key) {\n const data = this.cache[key];\n return {\n path: key,\n startValue: data.startValue,\n targetValue: data.targetValue,\n cell: this.cell,\n };\n }\n}\n(function (Animation) {\n Animation.defaultOptions = {\n delay: 10,\n duration: 100,\n timing: 'linear',\n };\n})(Animation || (Animation = {}));\n//# sourceMappingURL=animation.js.map","var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Basecoat } from '../common';\nimport { ObjectExt } from '../util';\nexport class Store extends Basecoat {\n constructor(data = {}) {\n super();\n this.pending = false;\n this.changing = false;\n this.data = {};\n this.mutate(ObjectExt.cloneDeep(data));\n this.changed = {};\n }\n mutate(data, options = {}) {\n const unset = options.unset === true;\n const silent = options.silent === true;\n const changes = [];\n const changing = this.changing;\n this.changing = true;\n if (!changing) {\n this.previous = ObjectExt.cloneDeep(this.data);\n this.changed = {};\n }\n const current = this.data;\n const previous = this.previous;\n const changed = this.changed;\n Object.keys(data).forEach((k) => {\n const key = k;\n const newValue = data[key];\n if (!ObjectExt.isEqual(current[key], newValue)) {\n changes.push(key);\n }\n if (!ObjectExt.isEqual(previous[key], newValue)) {\n changed[key] = newValue;\n }\n else {\n delete changed[key];\n }\n if (unset) {\n delete current[key];\n }\n else {\n current[key] = newValue;\n }\n });\n if (!silent && changes.length > 0) {\n this.pending = true;\n this.pendingOptions = options;\n changes.forEach((key) => {\n this.emit('change:*', {\n key,\n options,\n store: this,\n current: current[key],\n previous: previous[key],\n });\n });\n }\n if (changing) {\n return this;\n }\n if (!silent) {\n // Changes can be recursively nested within `\"change\"` events.\n while (this.pending) {\n this.pending = false;\n this.emit('changed', {\n current,\n previous,\n store: this,\n options: this.pendingOptions,\n });\n }\n }\n this.pending = false;\n this.changing = false;\n this.pendingOptions = null;\n return this;\n }\n get(key, defaultValue) {\n if (key == null) {\n return this.data;\n }\n const ret = this.data[key];\n return ret == null ? defaultValue : ret;\n }\n getPrevious(key) {\n if (this.previous) {\n const ret = this.previous[key];\n return ret == null ? undefined : ret;\n }\n return undefined;\n }\n set(key, value, options) {\n if (key != null) {\n if (typeof key === 'object') {\n this.mutate(key, value);\n }\n else {\n this.mutate({ [key]: value }, options);\n }\n }\n return this;\n }\n remove(key, options) {\n const empty = undefined;\n const subset = {};\n let opts;\n if (typeof key === 'string') {\n subset[key] = empty;\n opts = options;\n }\n else if (Array.isArray(key)) {\n key.forEach((k) => (subset[k] = empty));\n opts = options;\n }\n else {\n // eslint-disable-next-line\n for (const key in this.data) {\n subset[key] = empty;\n }\n opts = key;\n }\n this.mutate(subset, Object.assign(Object.assign({}, opts), { unset: true }));\n return this;\n }\n getByPath(path) {\n return ObjectExt.getByPath(this.data, path, '/');\n }\n setByPath(path, value, options = {}) {\n const delim = '/';\n const pathArray = Array.isArray(path) ? [...path] : path.split(delim);\n const pathString = Array.isArray(path) ? path.join(delim) : path;\n const property = pathArray[0];\n const pathArrayLength = pathArray.length;\n options.propertyPath = pathString;\n options.propertyValue = value;\n options.propertyPathArray = pathArray;\n if (pathArrayLength === 1) {\n this.set(property, value, options);\n }\n else {\n const update = {};\n let diver = update;\n let nextKey = property;\n // Initialize the nested object. Subobjects are either arrays or objects.\n // An empty array is created if the sub-key is an integer. Otherwise, an\n // empty object is created.\n for (let i = 1; i < pathArrayLength; i += 1) {\n const key = pathArray[i];\n const isArrayIndex = Number.isFinite(Number(key));\n diver = diver[nextKey] = isArrayIndex ? [] : {};\n nextKey = key;\n }\n // Fills update with the `value` on `path`.\n ObjectExt.setByPath(update, pathArray, value, delim);\n const data = ObjectExt.cloneDeep(this.data);\n // If rewrite mode enabled, we replace value referenced by path with the\n // new one (we don't merge).\n if (options.rewrite) {\n ObjectExt.unsetByPath(data, path, delim);\n }\n const merged = ObjectExt.merge(data, update);\n this.set(property, merged[property], options);\n }\n return this;\n }\n removeByPath(path, options) {\n const keys = Array.isArray(path) ? path : path.split('/');\n const key = keys[0];\n if (keys.length === 1) {\n this.remove(key, options);\n }\n else {\n const paths = keys.slice(1);\n const prop = ObjectExt.cloneDeep(this.get(key));\n if (prop) {\n ObjectExt.unsetByPath(prop, paths);\n }\n this.set(key, prop, options);\n }\n return this;\n }\n hasChanged(key) {\n if (key == null) {\n return Object.keys(this.changed).length > 0;\n }\n return key in this.changed;\n }\n /**\n * Returns an object containing all the data that have changed,\n * or `null` if there are no changes. Useful for determining what\n * parts of a view need to be updated.\n */\n getChanges(diff) {\n if (diff == null) {\n return this.hasChanged() ? ObjectExt.cloneDeep(this.changed) : null;\n }\n const old = this.changing ? this.previous : this.data;\n const changed = {};\n let hasChanged;\n // eslint-disable-next-line\n for (const key in diff) {\n const val = diff[key];\n if (!ObjectExt.isEqual(old[key], val)) {\n changed[key] = val;\n hasChanged = true;\n }\n }\n return hasChanged ? ObjectExt.cloneDeep(changed) : null;\n }\n /**\n * Returns a copy of the store's `data` object.\n */\n toJSON() {\n return ObjectExt.cloneDeep(this.data);\n }\n clone() {\n const constructor = this.constructor;\n return new constructor(this.data);\n }\n dispose() {\n this.off();\n this.data = {};\n this.previous = {};\n this.changed = {};\n this.pending = false;\n this.changing = false;\n this.pendingOptions = null;\n this.trigger('disposed', { store: this });\n }\n}\n__decorate([\n Basecoat.dispose()\n], Store.prototype, \"dispose\", null);\n//# sourceMappingURL=store.js.map","/* eslint-disable no-underscore-dangle */\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __rest = (this && this.__rest) || function (s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n t[p[i]] = s[p[i]];\n }\n return t;\n};\nimport { ArrayExt, StringExt, ObjectExt, FunctionExt } from '../util';\nimport { Rectangle, Point } from '../geometry';\nimport { Basecoat } from '../common';\nimport { Attr } from '../registry';\nimport { Animation } from './animation';\nimport { Store } from './store';\nexport class Cell extends Basecoat {\n constructor(metadata = {}) {\n super();\n const ctor = this.constructor;\n const defaults = ctor.getDefaults(true);\n const props = ObjectExt.merge({}, this.preprocess(defaults), this.preprocess(metadata));\n this.id = props.id || StringExt.uuid();\n this.store = new Store(props);\n this.animation = new Animation(this);\n this.setup();\n this.init();\n this.postprocess(metadata);\n }\n static config(presets) {\n const { markup, propHooks, attrHooks } = presets, others = __rest(presets, [\"markup\", \"propHooks\", \"attrHooks\"]);\n if (markup != null) {\n this.markup = markup;\n }\n if (propHooks) {\n this.propHooks = this.propHooks.slice();\n if (Array.isArray(propHooks)) {\n this.propHooks.push(...propHooks);\n }\n else if (typeof propHooks === 'function') {\n this.propHooks.push(propHooks);\n }\n else {\n Object.keys(propHooks).forEach((name) => {\n const hook = propHooks[name];\n if (typeof hook === 'function') {\n this.propHooks.push(hook);\n }\n });\n }\n }\n if (attrHooks) {\n this.attrHooks = Object.assign(Object.assign({}, this.attrHooks), attrHooks);\n }\n this.defaults = ObjectExt.merge({}, this.defaults, others);\n }\n static getMarkup() {\n return this.markup;\n }\n static getDefaults(raw) {\n return (raw ? this.defaults : ObjectExt.cloneDeep(this.defaults));\n }\n static getAttrHooks() {\n return this.attrHooks;\n }\n static applyPropHooks(cell, metadata) {\n return this.propHooks.reduce((memo, hook) => {\n return hook ? FunctionExt.call(hook, cell, memo) : memo;\n }, metadata);\n }\n // #endregion\n get [Symbol.toStringTag]() {\n return Cell.toStringTag;\n }\n init() { }\n // #region model\n get model() {\n return this._model;\n }\n set model(model) {\n if (this._model !== model) {\n this._model = model;\n }\n }\n // #endregion\n preprocess(metadata, ignoreIdCheck) {\n const id = metadata.id;\n const ctor = this.constructor;\n const props = ctor.applyPropHooks(this, metadata);\n if (id == null && ignoreIdCheck !== true) {\n props.id = StringExt.uuid();\n }\n return props;\n }\n postprocess(metadata) { } // eslint-disable-line\n setup() {\n this.store.on('change:*', (metadata) => {\n const { key, current, previous, options } = metadata;\n this.notify('change:*', {\n key,\n options,\n current,\n previous,\n cell: this,\n });\n this.notify(`change:${key}`, {\n options,\n current,\n previous,\n cell: this,\n });\n const type = key;\n if (type === 'source' || type === 'target') {\n this.notify(`change:terminal`, {\n type,\n current,\n previous,\n options,\n cell: this,\n });\n }\n });\n this.store.on('changed', ({ options }) => this.notify('changed', { options, cell: this }));\n }\n notify(name, args) {\n this.trigger(name, args);\n const model = this.model;\n if (model) {\n model.notify(`cell:${name}`, args);\n if (this.isNode()) {\n model.notify(`node:${name}`, Object.assign(Object.assign({}, args), { node: this }));\n }\n else if (this.isEdge()) {\n model.notify(`edge:${name}`, Object.assign(Object.assign({}, args), { edge: this }));\n }\n }\n return this;\n }\n isNode() {\n return false;\n }\n isEdge() {\n return false;\n }\n isSameStore(cell) {\n return this.store === cell.store;\n }\n get view() {\n return this.store.get('view');\n }\n get shape() {\n return this.store.get('shape', '');\n }\n getProp(key, defaultValue) {\n if (key == null) {\n return this.store.get();\n }\n return this.store.get(key, defaultValue);\n }\n setProp(key, value, options) {\n if (typeof key === 'string') {\n this.store.set(key, value, options);\n }\n else {\n const props = this.preprocess(key, true);\n this.store.set(ObjectExt.merge({}, this.getProp(), props), value);\n this.postprocess(key);\n }\n return this;\n }\n removeProp(key, options) {\n if (typeof key === 'string' || Array.isArray(key)) {\n this.store.removeByPath(key, options);\n }\n else {\n this.store.remove(options);\n }\n return this;\n }\n hasChanged(key) {\n return key == null ? this.store.hasChanged() : this.store.hasChanged(key);\n }\n getPropByPath(path) {\n return this.store.getByPath(path);\n }\n setPropByPath(path, value, options = {}) {\n if (this.model) {\n // update inner reference\n if (path === 'children') {\n this._children = value\n ? value\n .map((id) => this.model.getCell(id))\n .filter((child) => child != null)\n : null;\n }\n else if (path === 'parent') {\n this._parent = value ? this.model.getCell(value) : null;\n }\n }\n this.store.setByPath(path, value, options);\n return this;\n }\n removePropByPath(path, options = {}) {\n const paths = Array.isArray(path) ? path : path.split('/');\n // Once a property is removed from the `attrs` the CellView will\n // recognize a `dirty` flag and re-render itself in order to remove\n // the attribute from SVGElement.\n if (paths[0] === 'attrs') {\n options.dirty = true;\n }\n this.store.removeByPath(paths, options);\n return this;\n }\n prop(key, value, options) {\n if (key == null) {\n return this.getProp();\n }\n if (typeof key === 'string' || Array.isArray(key)) {\n if (arguments.length === 1) {\n return this.getPropByPath(key);\n }\n if (value == null) {\n return this.removePropByPath(key, options || {});\n }\n return this.setPropByPath(key, value, options || {});\n }\n return this.setProp(key, value || {});\n }\n previous(name) {\n return this.store.getPrevious(name);\n }\n // #endregion\n // #region zIndex\n get zIndex() {\n return this.getZIndex();\n }\n set zIndex(z) {\n if (z == null) {\n this.removeZIndex();\n }\n else {\n this.setZIndex(z);\n }\n }\n getZIndex() {\n return this.store.get('zIndex');\n }\n setZIndex(z, options = {}) {\n this.store.set('zIndex', z, options);\n return this;\n }\n removeZIndex(options = {}) {\n this.store.remove('zIndex', options);\n return this;\n }\n toFront(options = {}) {\n const model = this.model;\n if (model) {\n let z = model.getMaxZIndex();\n let cells;\n if (options.deep) {\n cells = this.getDescendants({ deep: true, breadthFirst: true });\n cells.unshift(this);\n }\n else {\n cells = [this];\n }\n z = z - cells.length + 1;\n const count = model.total();\n let changed = model.indexOf(this) !== count - cells.length;\n if (!changed) {\n changed = cells.some((cell, index) => cell.getZIndex() !== z + index);\n }\n if (changed) {\n this.batchUpdate('to-front', () => {\n z += cells.length;\n cells.forEach((cell, index) => {\n cell.setZIndex(z + index, options);\n });\n });\n }\n }\n return this;\n }\n toBack(options = {}) {\n const model = this.model;\n if (model) {\n let z = model.getMinZIndex();\n let cells;\n if (options.deep) {\n cells = this.getDescendants({ deep: true, breadthFirst: true });\n cells.unshift(this);\n }\n else {\n cells = [this];\n }\n let changed = model.indexOf(this) !== 0;\n if (!changed) {\n changed = cells.some((cell, index) => cell.getZIndex() !== z + index);\n }\n if (changed) {\n this.batchUpdate('to-back', () => {\n z -= cells.length;\n cells.forEach((cell, index) => {\n cell.setZIndex(z + index, options);\n });\n });\n }\n }\n return this;\n }\n // #endregion\n // #region markup\n get markup() {\n return this.getMarkup();\n }\n set markup(value) {\n if (value == null) {\n this.removeMarkup();\n }\n else {\n this.setMarkup(value);\n }\n }\n getMarkup() {\n let markup = this.store.get('markup');\n if (markup == null) {\n const ctor = this.constructor;\n markup = ctor.getMarkup();\n }\n return markup;\n }\n setMarkup(markup, options = {}) {\n this.store.set('markup', markup, options);\n return this;\n }\n removeMarkup(options = {}) {\n this.store.remove('markup', options);\n return this;\n }\n // #endregion\n // #region attrs\n get attrs() {\n return this.getAttrs();\n }\n set attrs(value) {\n if (value == null) {\n this.removeAttrs();\n }\n else {\n this.setAttrs(value);\n }\n }\n getAttrs() {\n const result = this.store.get('attrs');\n return result ? Object.assign({}, result) : {};\n }\n setAttrs(attrs, options = {}) {\n if (attrs == null) {\n this.removeAttrs(options);\n }\n else {\n const set = (attrs) => this.store.set('attrs', attrs, options);\n if (options.overwrite === true) {\n set(attrs);\n }\n else {\n const prev = this.getAttrs();\n if (options.deep === false) {\n set(Object.assign(Object.assign({}, prev), attrs));\n }\n else {\n set(ObjectExt.merge({}, prev, attrs));\n }\n }\n }\n return this;\n }\n replaceAttrs(attrs, options = {}) {\n return this.setAttrs(attrs, Object.assign(Object.assign({}, options), { overwrite: true }));\n }\n updateAttrs(attrs, options = {}) {\n return this.setAttrs(attrs, Object.assign(Object.assign({}, options), { deep: false }));\n }\n removeAttrs(options = {}) {\n this.store.remove('attrs', options);\n return this;\n }\n getAttrDefinition(attrName) {\n if (!attrName) {\n return null;\n }\n const ctor = this.constructor;\n const hooks = ctor.getAttrHooks() || {};\n let definition = hooks[attrName] || Attr.registry.get(attrName);\n if (!definition) {\n const name = StringExt.camelCase(attrName);\n definition = hooks[name] || Attr.registry.get(name);\n }\n return definition || null;\n }\n getAttrByPath(path) {\n if (path == null || path === '') {\n return this.getAttrs();\n }\n return this.getPropByPath(this.prefixAttrPath(path));\n }\n setAttrByPath(path, value, options = {}) {\n this.setPropByPath(this.prefixAttrPath(path), value, options);\n return this;\n }\n removeAttrByPath(path, options = {}) {\n this.removePropByPath(this.prefixAttrPath(path), options);\n return this;\n }\n prefixAttrPath(path) {\n return Array.isArray(path) ? ['attrs'].concat(path) : `attrs/${path}`;\n }\n attr(path, value, options) {\n if (path == null) {\n return this.getAttrByPath();\n }\n if (typeof path === 'string' || Array.isArray(path)) {\n if (arguments.length === 1) {\n return this.getAttrByPath(path);\n }\n if (value == null) {\n return this.removeAttrByPath(path, options || {});\n }\n return this.setAttrByPath(path, value, options || {});\n }\n return this.setAttrs(path, (value || {}));\n }\n // #endregion\n // #region visible\n get visible() {\n return this.isVisible();\n }\n set visible(value) {\n this.setVisible(value);\n }\n setVisible(visible, options = {}) {\n this.store.set('visible', visible, options);\n return this;\n }\n isVisible() {\n return this.store.get('visible') !== false;\n }\n show(options = {}) {\n if (!this.isVisible()) {\n this.setVisible(true, options);\n }\n return this;\n }\n hide(options = {}) {\n if (this.isVisible()) {\n this.setVisible(false, options);\n }\n return this;\n }\n toggleVisible(isVisible, options = {}) {\n const visible = typeof isVisible === 'boolean' ? isVisible : !this.isVisible();\n const localOptions = typeof isVisible === 'boolean' ? options : isVisible;\n if (visible) {\n this.show(localOptions);\n }\n else {\n this.hide(localOptions);\n }\n return this;\n }\n // #endregion\n // #region data\n get data() {\n return this.getData();\n }\n set data(val) {\n this.setData(val);\n }\n getData() {\n return this.store.get('data');\n }\n setData(data, options = {}) {\n if (data == null) {\n this.removeData(options);\n }\n else {\n const set = (data) => this.store.set('data', data, options);\n if (options.overwrite === true) {\n set(data);\n }\n else {\n const prev = this.getData();\n if (options.deep === false) {\n set(typeof data === 'object' ? Object.assign(Object.assign({}, prev), data) : data);\n }\n else {\n set(ObjectExt.merge({}, prev, data));\n }\n }\n }\n return this;\n }\n replaceData(data, options = {}) {\n return this.setData(data, Object.assign(Object.assign({}, options), { overwrite: true }));\n }\n updateData(data, options = {}) {\n return this.setData(data, Object.assign(Object.assign({}, options), { deep: false }));\n }\n removeData(options = {}) {\n this.store.remove('data', options);\n return this;\n }\n // #endregion\n // #region parent children\n get parent() {\n return this.getParent();\n }\n get children() {\n return this.getChildren();\n }\n getParentId() {\n return this.store.get('parent');\n }\n getParent() {\n const parentId = this.getParentId();\n if (parentId && this.model) {\n const parent = this.model.getCell(parentId);\n this._parent = parent;\n return parent;\n }\n return null;\n }\n getChildren() {\n const childrenIds = this.store.get('children');\n if (childrenIds && childrenIds.length && this.model) {\n const children = childrenIds\n .map((id) => { var _a; return (_a = this.model) === null || _a === void 0 ? void 0 : _a.getCell(id); })\n .filter((cell) => cell != null);\n this._children = children;\n return [...children];\n }\n return null;\n }\n hasParent() {\n return this.parent != null;\n }\n isParentOf(child) {\n return child != null && child.getParent() === this;\n }\n isChildOf(parent) {\n return parent != null && this.getParent() === parent;\n }\n eachChild(iterator, context) {\n if (this.children) {\n this.children.forEach(iterator, context);\n }\n return this;\n }\n filterChild(filter, context) {\n return this.children ? this.children.filter(filter, context) : [];\n }\n getChildCount() {\n return this.children == null ? 0 : this.children.length;\n }\n getChildIndex(child) {\n return this.children == null ? -1 : this.children.indexOf(child);\n }\n getChildAt(index) {\n return this.children != null && index >= 0 ? this.children[index] : null;\n }\n getAncestors(options = {}) {\n const ancestors = [];\n let parent = this.getParent();\n while (parent) {\n ancestors.push(parent);\n parent = options.deep !== false ? parent.getParent() : null;\n }\n return ancestors;\n }\n getDescendants(options = {}) {\n if (options.deep !== false) {\n // breadth first\n if (options.breadthFirst) {\n const cells = [];\n const queue = this.getChildren() || [];\n while (queue.length > 0) {\n const parent = queue.shift();\n const children = parent.getChildren();\n cells.push(parent);\n if (children) {\n queue.push(...children);\n }\n }\n return cells;\n }\n // depth first\n {\n const cells = this.getChildren() || [];\n cells.forEach((cell) => {\n cells.push(...cell.getDescendants(options));\n });\n return cells;\n }\n }\n return this.getChildren() || [];\n }\n isDescendantOf(ancestor, options = {}) {\n if (ancestor == null) {\n return false;\n }\n if (options.deep !== false) {\n let current = this.getParent();\n while (current) {\n if (current === ancestor) {\n return true;\n }\n current = current.getParent();\n }\n return false;\n }\n return this.isChildOf(ancestor);\n }\n isAncestorOf(descendant, options = {}) {\n if (descendant == null) {\n return false;\n }\n return descendant.isDescendantOf(this, options);\n }\n contains(cell) {\n return this.isAncestorOf(cell);\n }\n getCommonAncestor(...cells) {\n return Cell.getCommonAncestor(this, ...cells);\n }\n setParent(parent, options = {}) {\n this._parent = parent;\n if (parent) {\n this.store.set('parent', parent.id, options);\n }\n else {\n this.store.remove('parent', options);\n }\n return this;\n }\n setChildren(children, options = {}) {\n this._children = children;\n if (children != null) {\n this.store.set('children', children.map((child) => child.id), options);\n }\n else {\n this.store.remove('children', options);\n }\n return this;\n }\n unembed(child, options = {}) {\n const children = this.children;\n if (children != null && child != null) {\n const index = this.getChildIndex(child);\n if (index !== -1) {\n children.splice(index, 1);\n child.setParent(null, options);\n this.setChildren(children, options);\n }\n }\n return this;\n }\n embed(child, options = {}) {\n child.addTo(this, options);\n return this;\n }\n addTo(target, options = {}) {\n if (Cell.isCell(target)) {\n target.addChild(this, options);\n }\n else {\n target.addCell(this, options);\n }\n return this;\n }\n insertTo(parent, index, options = {}) {\n parent.insertChild(this, index, options);\n return this;\n }\n addChild(child, options = {}) {\n return this.insertChild(child, undefined, options);\n }\n insertChild(child, index, options = {}) {\n if (child != null && child !== this) {\n const oldParent = child.getParent();\n const changed = this !== oldParent;\n let pos = index;\n if (pos == null) {\n pos = this.getChildCount();\n if (!changed) {\n pos -= 1;\n }\n }\n // remove from old parent\n if (oldParent) {\n const children = oldParent.getChildren();\n if (children) {\n const index = children.indexOf(child);\n if (index >= 0) {\n child.setParent(null, options);\n children.splice(index, 1);\n oldParent.setChildren(children, options);\n }\n }\n }\n let children = this.children;\n if (children == null) {\n children = [];\n children.push(child);\n }\n else {\n children.splice(pos, 0, child);\n }\n child.setParent(this, options);\n this.setChildren(children, options);\n if (changed && this.model) {\n const incomings = this.model.getIncomingEdges(this);\n const outgoings = this.model.getOutgoingEdges(this);\n if (incomings) {\n incomings.forEach((edge) => edge.updateParent(options));\n }\n if (outgoings) {\n outgoings.forEach((edge) => edge.updateParent(options));\n }\n }\n if (this.model) {\n this.model.addCell(child, options);\n }\n }\n return this;\n }\n removeFromParent(options = {}) {\n const parent = this.getParent();\n if (parent != null) {\n const index = parent.getChildIndex(this);\n parent.removeChildAt(index, options);\n }\n return this;\n }\n removeChild(child, options = {}) {\n const index = this.getChildIndex(child);\n return this.removeChildAt(index, options);\n }\n removeChildAt(index, options = {}) {\n const child = this.getChildAt(index);\n const children = this.children;\n if (children != null && child != null) {\n this.unembed(child, options);\n child.remove(options);\n }\n return child;\n }\n remove(options = {}) {\n this.batchUpdate('remove', () => {\n const parent = this.getParent();\n if (parent) {\n parent.removeChild(this, options);\n }\n if (options.deep !== false) {\n this.eachChild((child) => child.remove(options));\n }\n if (this.model) {\n this.model.removeCell(this, options);\n }\n });\n return this;\n }\n transition(path, target, options = {}, delim = '/') {\n return this.animation.start(path, target, options, delim);\n }\n stopTransition(path, options, delim = '/') {\n this.animation.stop(path, options, delim);\n return this;\n }\n getTransitions() {\n return this.animation.get();\n }\n // #endregion\n // #region transform\n // eslint-disable-next-line\n translate(tx, ty, options) {\n return this;\n }\n scale(sx, // eslint-disable-line\n sy, // eslint-disable-line\n origin, // eslint-disable-line\n options) {\n return this;\n }\n addTools(items, obj, options) {\n const toolItems = Array.isArray(items) ? items : [items];\n const name = typeof obj === 'string' ? obj : null;\n const config = typeof obj === 'object' ? obj : typeof options === 'object' ? options : {};\n if (config.reset) {\n return this.setTools({ name, items: toolItems, local: config.local }, config);\n }\n let tools = ObjectExt.cloneDeep(this.getTools());\n if (tools == null || name == null || tools.name === name) {\n if (tools == null) {\n tools = {};\n }\n if (!tools.items) {\n tools.items = [];\n }\n tools.name = name;\n tools.items = [...tools.items, ...toolItems];\n return this.setTools(Object.assign({}, tools), config);\n }\n }\n setTools(tools, options = {}) {\n if (tools == null) {\n this.removeTools();\n }\n else {\n this.store.set('tools', Cell.normalizeTools(tools), options);\n }\n return this;\n }\n getTools() {\n return this.store.get('tools');\n }\n removeTools(options = {}) {\n this.store.remove('tools', options);\n return this;\n }\n hasTools(name) {\n const tools = this.getTools();\n if (tools == null) {\n return false;\n }\n if (name == null) {\n return true;\n }\n return tools.name === name;\n }\n hasTool(name) {\n const tools = this.getTools();\n if (tools == null) {\n return false;\n }\n return tools.items.some((item) => typeof item === 'string' ? item === name : item.name === name);\n }\n removeTool(nameOrIndex, options = {}) {\n const tools = ObjectExt.cloneDeep(this.getTools());\n if (tools) {\n let updated = false;\n const items = tools.items.slice();\n const remove = (index) => {\n items.splice(index, 1);\n updated = true;\n };\n if (typeof nameOrIndex === 'number') {\n remove(nameOrIndex);\n }\n else {\n for (let i = items.length - 1; i >= 0; i -= 1) {\n const item = items[i];\n const exist = typeof item === 'string'\n ? item === nameOrIndex\n : item.name === nameOrIndex;\n if (exist) {\n remove(i);\n }\n }\n }\n if (updated) {\n tools.items = items;\n this.setTools(tools, options);\n }\n }\n return this;\n }\n // #endregion\n // #region common\n // eslint-disable-next-line\n getBBox(options) {\n return new Rectangle();\n }\n // eslint-disable-next-line\n getConnectionPoint(edge, type) {\n return new Point();\n }\n toJSON(options = {}) {\n const props = Object.assign({}, this.store.get());\n const toString = Object.prototype.toString;\n const cellType = this.isNode() ? 'node' : this.isEdge() ? 'edge' : 'cell';\n if (!props.shape) {\n const ctor = this.constructor;\n throw new Error(`Unable to serialize ${cellType} missing \"shape\" prop, check the ${cellType} \"${ctor.name || toString.call(ctor)}\"`);\n }\n const ctor = this.constructor;\n const diff = options.diff === true;\n const attrs = props.attrs || {};\n const presets = ctor.getDefaults(true);\n // When `options.diff` is `true`, we should process the custom options,\n // such as `width`, `height` etc. to ensure the comparing work correctly.\n const defaults = diff ? this.preprocess(presets, true) : presets;\n const defaultAttrs = defaults.attrs || {};\n const finalAttrs = {};\n Object.keys(props).forEach((key) => {\n const val = props[key];\n if (val != null &&\n !Array.isArray(val) &&\n typeof val === 'object' &&\n !ObjectExt.isPlainObject(val)) {\n throw new Error(`Can only serialize ${cellType} with plain-object props, but got a \"${toString.call(val)}\" type of key \"${key}\" on ${cellType} \"${this.id}\"`);\n }\n if (key !== 'attrs' && key !== 'shape' && diff) {\n const preset = defaults[key];\n if (ObjectExt.isEqual(val, preset)) {\n delete props[key];\n }\n }\n });\n Object.keys(attrs).forEach((key) => {\n const attr = attrs[key];\n const defaultAttr = defaultAttrs[key];\n Object.keys(attr).forEach((name) => {\n const value = attr[name];\n const defaultValue = defaultAttr ? defaultAttr[name] : null;\n if (value != null &&\n typeof value === 'object' &&\n !Array.isArray(value)) {\n Object.keys(value).forEach((subName) => {\n const subValue = value[subName];\n if (defaultAttr == null ||\n defaultValue == null ||\n !ObjectExt.isObject(defaultValue) ||\n !ObjectExt.isEqual(defaultValue[subName], subValue)) {\n if (finalAttrs[key] == null) {\n finalAttrs[key] = {};\n }\n if (finalAttrs[key][name] == null) {\n finalAttrs[key][name] = {};\n }\n const tmp = finalAttrs[key][name];\n tmp[subName] = subValue;\n }\n });\n }\n else if (defaultAttr == null ||\n !ObjectExt.isEqual(defaultValue, value)) {\n // `value` is not an object, default attribute with `key` does not\n // exist or it is different than the attribute value set on the cell.\n if (finalAttrs[key] == null) {\n finalAttrs[key] = {};\n }\n finalAttrs[key][name] = value;\n }\n });\n });\n const finalProps = Object.assign(Object.assign({}, props), { attrs: ObjectExt.isEmpty(finalAttrs) ? undefined : finalAttrs });\n if (finalProps.attrs == null) {\n delete finalProps.attrs;\n }\n const ret = finalProps;\n if (ret.angle === 0) {\n delete ret.angle;\n }\n return ObjectExt.cloneDeep(ret);\n }\n clone(options = {}) {\n if (!options.deep) {\n const data = Object.assign({}, this.store.get());\n if (!options.keepId) {\n delete data.id;\n }\n delete data.parent;\n delete data.children;\n const ctor = this.constructor;\n return new ctor(data); // eslint-disable-line new-cap\n }\n // Deep cloning. Clone the cell itself and all its children.\n const map = Cell.deepClone(this);\n return map[this.id];\n }\n findView(graph) {\n return graph.renderer.findViewByCell(this);\n }\n // #endregion\n // #region batch\n startBatch(name, data = {}, model = this.model) {\n this.notify('batch:start', { name, data, cell: this });\n if (model) {\n model.startBatch(name, Object.assign(Object.assign({}, data), { cell: this }));\n }\n return this;\n }\n stopBatch(name, data = {}, model = this.model) {\n if (model) {\n model.stopBatch(name, Object.assign(Object.assign({}, data), { cell: this }));\n }\n this.notify('batch:stop', { name, data, cell: this });\n return this;\n }\n batchUpdate(name, execute, data) {\n // The model is null after cell was removed(remove batch).\n // So we should temp save model to trigger pairing batch event.\n const model = this.model;\n this.startBatch(name, data, model);\n const result = execute();\n this.stopBatch(name, data, model);\n return result;\n }\n // #endregion\n // #region IDisposable\n dispose() {\n this.removeFromParent();\n this.store.dispose();\n }\n}\nCell.defaults = {};\nCell.attrHooks = {};\nCell.propHooks = [];\n__decorate([\n Basecoat.dispose()\n], Cell.prototype, \"dispose\", null);\n(function (Cell) {\n function normalizeTools(raw) {\n if (typeof raw === 'string') {\n return { items: [raw] };\n }\n if (Array.isArray(raw)) {\n return { items: raw };\n }\n if (raw.items) {\n return raw;\n }\n return {\n items: [raw],\n };\n }\n Cell.normalizeTools = normalizeTools;\n})(Cell || (Cell = {}));\n(function (Cell) {\n Cell.toStringTag = `X6.${Cell.name}`;\n function isCell(instance) {\n if (instance == null) {\n return false;\n }\n if (instance instanceof Cell) {\n return true;\n }\n const tag = instance[Symbol.toStringTag];\n const cell = instance;\n if ((tag == null || tag === Cell.toStringTag) &&\n typeof cell.isNode === 'function' &&\n typeof cell.isEdge === 'function' &&\n typeof cell.prop === 'function' &&\n typeof cell.attr === 'function') {\n return true;\n }\n return false;\n }\n Cell.isCell = isCell;\n})(Cell || (Cell = {}));\n(function (Cell) {\n function getCommonAncestor(...cells) {\n const ancestors = cells\n .filter((cell) => cell != null)\n .map((cell) => cell.getAncestors())\n .sort((a, b) => {\n return a.length - b.length;\n });\n const first = ancestors.shift();\n return (first.find((cell) => ancestors.every((item) => item.includes(cell))) ||\n null);\n }\n Cell.getCommonAncestor = getCommonAncestor;\n function getCellsBBox(cells, options = {}) {\n let bbox = null;\n for (let i = 0, ii = cells.length; i < ii; i += 1) {\n const cell = cells[i];\n let rect = cell.getBBox(options);\n if (rect) {\n if (cell.isNode()) {\n const angle = cell.getAngle();\n if (angle != null && angle !== 0) {\n rect = rect.bbox(angle);\n }\n }\n bbox = bbox == null ? rect : bbox.union(rect);\n }\n }\n return bbox;\n }\n Cell.getCellsBBox = getCellsBBox;\n function deepClone(cell) {\n const cells = [cell, ...cell.getDescendants({ deep: true })];\n return Cell.cloneCells(cells);\n }\n Cell.deepClone = deepClone;\n function cloneCells(cells) {\n const inputs = ArrayExt.uniq(cells);\n const cloneMap = inputs.reduce((map, cell) => {\n map[cell.id] = cell.clone();\n return map;\n }, {});\n inputs.forEach((cell) => {\n const clone = cloneMap[cell.id];\n if (clone.isEdge()) {\n const sourceId = clone.getSourceCellId();\n const targetId = clone.getTargetCellId();\n if (sourceId && cloneMap[sourceId]) {\n // Source is a node and the node is among the clones.\n // Then update the source of the cloned edge.\n clone.setSource(Object.assign(Object.assign({}, clone.getSource()), { cell: cloneMap[sourceId].id }));\n }\n if (targetId && cloneMap[targetId]) {\n // Target is a node and the node is among the clones.\n // Then update the target of the cloned edge.\n clone.setTarget(Object.assign(Object.assign({}, clone.getTarget()), { cell: cloneMap[targetId].id }));\n }\n }\n // Find the parent of the original cell\n const parent = cell.getParent();\n if (parent && cloneMap[parent.id]) {\n clone.setParent(cloneMap[parent.id]);\n }\n // Find the children of the original cell\n const children = cell.getChildren();\n if (children && children.length) {\n const embeds = children.reduce((memo, child) => {\n // Embedded cells that are not being cloned can not be carried\n // over with other embedded cells.\n if (cloneMap[child.id]) {\n memo.push(cloneMap[child.id]);\n }\n return memo;\n }, []);\n if (embeds.length > 0) {\n clone.setChildren(embeds);\n }\n }\n });\n return cloneMap;\n }\n Cell.cloneCells = cloneCells;\n})(Cell || (Cell = {}));\n(function (Cell) {\n Cell.config({\n propHooks(_a) {\n var { tools } = _a, metadata = __rest(_a, [\"tools\"]);\n if (tools) {\n metadata.tools = Cell.normalizeTools(tools);\n }\n return metadata;\n },\n });\n})(Cell || (Cell = {}));\n//# sourceMappingURL=cell.js.map","export var ShareRegistry;\n(function (ShareRegistry) {\n let edgeRegistry;\n let nodeRegistry;\n function exist(name, isNode) {\n return isNode\n ? edgeRegistry != null && edgeRegistry.exist(name)\n : nodeRegistry != null && nodeRegistry.exist(name);\n }\n ShareRegistry.exist = exist;\n function setEdgeRegistry(registry) {\n edgeRegistry = registry;\n }\n ShareRegistry.setEdgeRegistry = setEdgeRegistry;\n function setNodeRegistry(registry) {\n nodeRegistry = registry;\n }\n ShareRegistry.setNodeRegistry = setNodeRegistry;\n})(ShareRegistry || (ShareRegistry = {}));\n//# sourceMappingURL=registry.js.map","import { PortLayout, PortLabelLayout } from '../registry';\nimport { ObjectExt } from '../util';\nimport { Point } from '../geometry';\nexport class PortManager {\n constructor(data) {\n this.ports = [];\n this.groups = {};\n this.init(ObjectExt.cloneDeep(data));\n }\n getPorts() {\n return this.ports;\n }\n getGroup(groupName) {\n return groupName != null ? this.groups[groupName] : null;\n }\n getPortsByGroup(groupName) {\n return this.ports.filter((p) => p.group === groupName || (p.group == null && groupName == null));\n }\n getPortsLayoutByGroup(groupName, elemBBox) {\n const ports = this.getPortsByGroup(groupName);\n const group = groupName ? this.getGroup(groupName) : null;\n const groupPosition = group ? group.position : null;\n const groupPositionName = groupPosition ? groupPosition.name : null;\n let layoutFn;\n if (groupPositionName != null) {\n const fn = PortLayout.registry.get(groupPositionName);\n if (fn == null) {\n return PortLayout.registry.onNotFound(groupPositionName);\n }\n layoutFn = fn;\n }\n else {\n layoutFn = PortLayout.presets.left;\n }\n const portsArgs = ports.map((port) => (port && port.position && port.position.args) || {});\n const groupArgs = (groupPosition && groupPosition.args) || {};\n const layouts = layoutFn(portsArgs, elemBBox, groupArgs);\n return layouts.map((portLayout, index) => {\n const port = ports[index];\n return {\n portLayout,\n portId: port.id,\n portSize: port.size,\n portAttrs: port.attrs,\n labelSize: port.label.size,\n labelLayout: this.getPortLabelLayout(port, Point.create(portLayout.position), elemBBox),\n };\n });\n }\n init(data) {\n const { groups, items } = data;\n if (groups != null) {\n Object.keys(groups).forEach((key) => {\n this.groups[key] = this.parseGroup(groups[key]);\n });\n }\n if (Array.isArray(items)) {\n items.forEach((item) => {\n this.ports.push(this.parsePort(item));\n });\n }\n }\n parseGroup(group) {\n return Object.assign(Object.assign({}, group), { label: this.getLabel(group, true), position: this.getPortPosition(group.position, true) });\n }\n parsePort(port) {\n const result = Object.assign({}, port);\n const group = this.getGroup(port.group) || {};\n result.markup = result.markup || group.markup;\n result.attrs = ObjectExt.merge({}, group.attrs, result.attrs);\n result.position = this.createPosition(group, result);\n result.label = ObjectExt.merge({}, group.label, this.getLabel(result));\n result.zIndex = this.getZIndex(group, result);\n result.size = Object.assign(Object.assign({}, group.size), result.size);\n return result;\n }\n getZIndex(group, port) {\n if (typeof port.zIndex === 'number') {\n return port.zIndex;\n }\n if (typeof group.zIndex === 'number' || group.zIndex === 'auto') {\n return group.zIndex;\n }\n return 'auto';\n }\n createPosition(group, port) {\n return ObjectExt.merge({\n name: 'left',\n args: {},\n }, group.position, { args: port.args });\n }\n getPortPosition(position, setDefault = false) {\n if (position == null) {\n if (setDefault) {\n return { name: 'left', args: {} };\n }\n }\n else {\n if (typeof position === 'string') {\n return {\n name: position,\n args: {},\n };\n }\n if (Array.isArray(position)) {\n return {\n name: 'absolute',\n args: { x: position[0], y: position[1] },\n };\n }\n if (typeof position === 'object') {\n return position;\n }\n }\n return { args: {} };\n }\n getPortLabelPosition(position, setDefault = false) {\n if (position == null) {\n if (setDefault) {\n return { name: 'left', args: {} };\n }\n }\n else {\n if (typeof position === 'string') {\n return {\n name: position,\n args: {},\n };\n }\n if (typeof position === 'object') {\n return position;\n }\n }\n return { args: {} };\n }\n getLabel(item, setDefaults = false) {\n const label = item.label || {};\n label.position = this.getPortLabelPosition(label.position, setDefaults);\n return label;\n }\n getPortLabelLayout(port, portPosition, elemBBox) {\n const name = port.label.position.name || 'left';\n const args = port.label.position.args || {};\n const layoutFn = PortLabelLayout.registry.get(name) || PortLabelLayout.presets.left;\n if (layoutFn) {\n return layoutFn(portPosition, elemBBox, args);\n }\n return null;\n }\n}\n//# sourceMappingURL=port.js.map","var __rest = (this && this.__rest) || function (s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n t[p[i]] = s[p[i]];\n }\n return t;\n};\nimport { Registry } from '../registry';\nimport { Point, Rectangle, Angle } from '../geometry';\nimport { StringExt, ObjectExt, NumberExt } from '../util';\nimport { Markup } from '../view/markup';\nimport { Cell } from './cell';\nimport { ShareRegistry } from './registry';\nimport { PortManager } from './port';\nimport { Interp } from '../common';\nexport class Node extends Cell {\n constructor(metadata = {}) {\n super(metadata);\n this.initPorts();\n }\n get [Symbol.toStringTag]() {\n return Node.toStringTag;\n }\n preprocess(metadata, ignoreIdCheck) {\n const { x, y, width, height } = metadata, others = __rest(metadata, [\"x\", \"y\", \"width\", \"height\"]);\n if (x != null || y != null) {\n const position = others.position;\n others.position = Object.assign(Object.assign({}, position), { x: x != null ? x : position ? position.x : 0, y: y != null ? y : position ? position.y : 0 });\n }\n if (width != null || height != null) {\n const size = others.size;\n others.size = Object.assign(Object.assign({}, size), { width: width != null ? width : size ? size.width : 0, height: height != null ? height : size ? size.height : 0 });\n }\n return super.preprocess(others, ignoreIdCheck);\n }\n isNode() {\n return true;\n }\n size(width, height, options) {\n if (width === undefined) {\n return this.getSize();\n }\n if (typeof width === 'number') {\n return this.setSize(width, height, options);\n }\n return this.setSize(width, height);\n }\n getSize() {\n const size = this.store.get('size');\n return size ? Object.assign({}, size) : { width: 1, height: 1 };\n }\n setSize(width, height, options) {\n if (typeof width === 'object') {\n this.resize(width.width, width.height, height);\n }\n else {\n this.resize(width, height, options);\n }\n return this;\n }\n resize(width, height, options = {}) {\n this.startBatch('resize', options);\n const direction = options.direction;\n if (direction) {\n const currentSize = this.getSize();\n switch (direction) {\n case 'left':\n case 'right':\n // Don't change height when resizing horizontally.\n height = currentSize.height; // eslint-disable-line\n break;\n case 'top':\n case 'bottom':\n // Don't change width when resizing vertically.\n width = currentSize.width; // eslint-disable-line\n break;\n default:\n break;\n }\n const map = {\n right: 0,\n 'top-right': 0,\n top: 1,\n 'top-left': 1,\n left: 2,\n 'bottom-left': 2,\n bottom: 3,\n 'bottom-right': 3,\n };\n let quadrant = map[direction];\n const angle = Angle.normalize(this.getAngle() || 0);\n if (options.absolute) {\n // We are taking the node's rotation into account\n quadrant += Math.floor((angle + 45) / 90);\n quadrant %= 4;\n }\n // This is a rectangle in size of the un-rotated node.\n const bbox = this.getBBox();\n // Pick the corner point on the node, which meant to stay on its\n // place before and after the rotation.\n let fixedPoint;\n if (quadrant === 0) {\n fixedPoint = bbox.getBottomLeft();\n }\n else if (quadrant === 1) {\n fixedPoint = bbox.getCorner();\n }\n else if (quadrant === 2) {\n fixedPoint = bbox.getTopRight();\n }\n else {\n fixedPoint = bbox.getOrigin();\n }\n // Find an image of the previous indent point. This is the position,\n // where is the point actually located on the screen.\n const imageFixedPoint = fixedPoint\n .clone()\n .rotate(-angle, bbox.getCenter());\n // Every point on the element rotates around a circle with the centre of\n // rotation in the middle of the element while the whole element is being\n // rotated. That means that the distance from a point in the corner of\n // the element (supposed its always rect) to the center of the element\n // doesn't change during the rotation and therefore it equals to a\n // distance on un-rotated element.\n // We can find the distance as DISTANCE = (ELEMENTWIDTH/2)^2 + (ELEMENTHEIGHT/2)^2)^0.5.\n const radius = Math.sqrt(width * width + height * height) / 2;\n // Now we are looking for an angle between x-axis and the line starting\n // at image of fixed point and ending at the center of the element.\n // We call this angle `alpha`.\n // The image of a fixed point is located in n-th quadrant. For each\n // quadrant passed going anti-clockwise we have to add 90 degrees.\n // Note that the first quadrant has index 0.\n //\n // 3 | 2\n // --c-- Quadrant positions around the element's center `c`\n // 0 | 1\n //\n let alpha = (quadrant * Math.PI) / 2;\n // Add an angle between the beginning of the current quadrant (line\n // parallel with x-axis or y-axis going through the center of the\n // element) and line crossing the indent of the fixed point and the\n // center of the element. This is the angle we need but on the\n // un-rotated element.\n alpha += Math.atan(quadrant % 2 === 0 ? height / width : width / height);\n // Lastly we have to deduct the original angle the element was rotated\n // by and that's it.\n alpha -= Angle.toRad(angle);\n // With this angle and distance we can easily calculate the centre of\n // the un-rotated element.\n // Note that fromPolar constructor accepts an angle in radians.\n const center = Point.fromPolar(radius, alpha, imageFixedPoint);\n // The top left corner on the un-rotated element has to be half a width\n // on the left and half a height to the top from the center. This will\n // be the origin of rectangle we were looking for.\n const origin = center.clone().translate(width / -2, height / -2);\n this.store.set('size', { width, height }, options);\n this.setPosition(origin.x, origin.y, options);\n }\n else {\n this.store.set('size', { width, height }, options);\n }\n this.stopBatch('resize', options);\n return this;\n }\n scale(sx, sy, origin, options = {}) {\n const scaledBBox = this.getBBox().scale(sx, sy, origin == null ? undefined : origin);\n this.startBatch('scale', options);\n this.setPosition(scaledBBox.x, scaledBBox.y, options);\n this.resize(scaledBBox.width, scaledBBox.height, options);\n this.stopBatch('scale');\n return this;\n }\n position(arg0, arg1, arg2) {\n if (typeof arg0 === 'number') {\n return this.setPosition(arg0, arg1, arg2);\n }\n return this.getPosition(arg0);\n }\n getPosition(options = {}) {\n if (options.relative) {\n const parent = this.getParent();\n if (parent != null && parent.isNode()) {\n const currentPosition = this.getPosition();\n const parentPosition = parent.getPosition();\n return {\n x: currentPosition.x - parentPosition.x,\n y: currentPosition.y - parentPosition.y,\n };\n }\n }\n const pos = this.store.get('position');\n return pos ? Object.assign({}, pos) : { x: 0, y: 0 };\n }\n setPosition(arg0, arg1, arg2 = {}) {\n let x;\n let y;\n let options;\n if (typeof arg0 === 'object') {\n x = arg0.x;\n y = arg0.y;\n options = arg1 || {};\n }\n else {\n x = arg0;\n y = arg1;\n options = arg2 || {};\n }\n if (options.relative) {\n const parent = this.getParent();\n if (parent != null && parent.isNode()) {\n const parentPosition = parent.getPosition();\n x += parentPosition.x;\n y += parentPosition.y;\n }\n }\n if (options.deep) {\n const currentPosition = this.getPosition();\n this.translate(x - currentPosition.x, y - currentPosition.y, options);\n }\n else {\n this.store.set('position', { x, y }, options);\n }\n return this;\n }\n translate(tx = 0, ty = 0, options = {}) {\n if (tx === 0 && ty === 0) {\n return this;\n }\n // Pass the initiator of the translation.\n options.translateBy = options.translateBy || this.id;\n const position = this.getPosition();\n if (options.restrict != null && options.translateBy === this.id) {\n // We are restricting the translation for the element itself only. We get\n // the bounding box of the element including all its embeds.\n // All embeds have to be translated the exact same way as the element.\n const bbox = this.getBBox({ deep: true });\n const ra = options.restrict;\n // - - - - - - - - - - - - -> ra.x + ra.width\n // - - - -> position.x |\n // -> bbox.x\n // ▓▓▓▓▓▓▓ |\n // ░░░░░░░▓▓▓▓▓▓▓\n // ░░░░░░░░░ |\n // ▓▓▓▓▓▓▓▓░░░░░░░\n // ▓▓▓▓▓▓▓▓ |\n // <-dx-> | restricted area right border\n // <-width-> | ░ translated element\n // <- - bbox.width - -> ▓ embedded element\n const dx = position.x - bbox.x;\n const dy = position.y - bbox.y;\n // Find the maximal/minimal coordinates that the element can be translated\n // while complies the restrictions.\n const x = Math.max(ra.x + dx, Math.min(ra.x + ra.width + dx - bbox.width, position.x + tx));\n const y = Math.max(ra.y + dy, Math.min(ra.y + ra.height + dy - bbox.height, position.y + ty));\n // recalculate the translation taking the restrictions into account.\n tx = x - position.x; // eslint-disable-line\n ty = y - position.y; // eslint-disable-line\n }\n const translatedPosition = {\n x: position.x + tx,\n y: position.y + ty,\n };\n // To find out by how much an element was translated in event\n // 'change:position' handlers.\n options.tx = tx;\n options.ty = ty;\n if (options.transition) {\n if (typeof options.transition !== 'object') {\n options.transition = {};\n }\n this.transition('position', translatedPosition, Object.assign(Object.assign({}, options.transition), { interp: Interp.object }));\n this.eachChild((child) => {\n var _a;\n const excluded = (_a = options.exclude) === null || _a === void 0 ? void 0 : _a.includes(child);\n if (!excluded) {\n child.translate(tx, ty, options);\n }\n });\n }\n else {\n this.startBatch('translate', options);\n this.store.set('position', translatedPosition, options);\n this.eachChild((child) => {\n var _a;\n const excluded = (_a = options.exclude) === null || _a === void 0 ? void 0 : _a.includes(child);\n if (!excluded) {\n child.translate(tx, ty, options);\n }\n });\n this.stopBatch('translate', options);\n }\n return this;\n }\n angle(val, options) {\n if (val == null) {\n return this.getAngle();\n }\n return this.rotate(val, options);\n }\n getAngle() {\n return this.store.get('angle', 0);\n }\n rotate(angle, options = {}) {\n const currentAngle = this.getAngle();\n if (options.center) {\n const size = this.getSize();\n const position = this.getPosition();\n const center = this.getBBox().getCenter();\n center.rotate(currentAngle - angle, options.center);\n const dx = center.x - size.width / 2 - position.x;\n const dy = center.y - size.height / 2 - position.y;\n this.startBatch('rotate', { angle, options });\n this.setPosition(position.x + dx, position.y + dy, options);\n this.rotate(angle, Object.assign(Object.assign({}, options), { center: null }));\n this.stopBatch('rotate');\n }\n else {\n this.store.set('angle', options.absolute ? angle : (currentAngle + angle) % 360, options);\n }\n return this;\n }\n // #endregion\n // #region common\n getBBox(options = {}) {\n if (options.deep) {\n const cells = this.getDescendants({ deep: true, breadthFirst: true });\n cells.push(this);\n return Cell.getCellsBBox(cells);\n }\n return Rectangle.fromPositionAndSize(this.getPosition(), this.getSize());\n }\n getConnectionPoint(edge, type) {\n const bbox = this.getBBox();\n const center = bbox.getCenter();\n const terminal = edge.getTerminal(type);\n if (terminal == null) {\n return center;\n }\n const portId = terminal.port;\n if (!portId || !this.hasPort(portId)) {\n return center;\n }\n const port = this.getPort(portId);\n if (!port || !port.group) {\n return center;\n }\n const layouts = this.getPortsPosition(port.group);\n const position = layouts[portId].position;\n const portCenter = Point.create(position).translate(bbox.getOrigin());\n const angle = this.getAngle();\n if (angle) {\n portCenter.rotate(-angle, center);\n }\n return portCenter;\n }\n /**\n * Sets cell's size and position based on the children bbox and given padding.\n */\n fit(options = {}) {\n const children = this.getChildren() || [];\n const embeds = children.filter((cell) => cell.isNode());\n if (embeds.length === 0) {\n return this;\n }\n this.startBatch('fit-embeds', options);\n if (options.deep) {\n embeds.forEach((cell) => cell.fit(options));\n }\n let { x, y, width, height } = Cell.getCellsBBox(embeds);\n const padding = NumberExt.normalizeSides(options.padding);\n x -= padding.left;\n y -= padding.top;\n width += padding.left + padding.right;\n height += padding.bottom + padding.top;\n this.store.set({\n position: { x, y },\n size: { width, height },\n }, options);\n this.stopBatch('fit-embeds');\n return this;\n }\n // #endregion\n // #region ports\n get portContainerMarkup() {\n return this.getPortContainerMarkup();\n }\n set portContainerMarkup(markup) {\n this.setPortContainerMarkup(markup);\n }\n getDefaultPortContainerMarkup() {\n return (this.store.get('defaultPortContainerMarkup') ||\n Markup.getPortContainerMarkup());\n }\n getPortContainerMarkup() {\n return (this.store.get('portContainerMarkup') ||\n this.getDefaultPortContainerMarkup());\n }\n setPortContainerMarkup(markup, options = {}) {\n this.store.set('portContainerMarkup', Markup.clone(markup), options);\n return this;\n }\n get portMarkup() {\n return this.getPortMarkup();\n }\n set portMarkup(markup) {\n this.setPortMarkup(markup);\n }\n getDefaultPortMarkup() {\n return this.store.get('defaultPortMarkup') || Markup.getPortMarkup();\n }\n getPortMarkup() {\n return this.store.get('portMarkup') || this.getDefaultPortMarkup();\n }\n setPortMarkup(markup, options = {}) {\n this.store.set('portMarkup', Markup.clone(markup), options);\n return this;\n }\n get portLabelMarkup() {\n return this.getPortLabelMarkup();\n }\n set portLabelMarkup(markup) {\n this.setPortLabelMarkup(markup);\n }\n getDefaultPortLabelMarkup() {\n return (this.store.get('defaultPortLabelMarkup') || Markup.getPortLabelMarkup());\n }\n getPortLabelMarkup() {\n return this.store.get('portLabelMarkup') || this.getDefaultPortLabelMarkup();\n }\n setPortLabelMarkup(markup, options = {}) {\n this.store.set('portLabelMarkup', Markup.clone(markup), options);\n return this;\n }\n get ports() {\n const res = this.store.get('ports', { items: [] });\n if (res.items == null) {\n res.items = [];\n }\n return res;\n }\n getPorts() {\n return ObjectExt.cloneDeep(this.ports.items);\n }\n getPortsByGroup(groupName) {\n return this.getPorts().filter((port) => port.group === groupName);\n }\n getPort(portId) {\n return ObjectExt.cloneDeep(this.ports.items.find((port) => port.id && port.id === portId));\n }\n getPortAt(index) {\n return this.ports.items[index] || null;\n }\n hasPorts() {\n return this.ports.items.length > 0;\n }\n hasPort(portId) {\n return this.getPortIndex(portId) !== -1;\n }\n getPortIndex(port) {\n const portId = typeof port === 'string' ? port : port.id;\n return portId != null\n ? this.ports.items.findIndex((item) => item.id === portId)\n : -1;\n }\n getPortsPosition(groupName) {\n const size = this.getSize();\n const layouts = this.port.getPortsLayoutByGroup(groupName, new Rectangle(0, 0, size.width, size.height));\n return layouts.reduce((memo, item) => {\n const layout = item.portLayout;\n memo[item.portId] = {\n position: Object.assign({}, layout.position),\n angle: layout.angle || 0,\n };\n return memo;\n }, {});\n }\n getPortProp(portId, path) {\n return this.getPropByPath(this.prefixPortPath(portId, path));\n }\n setPortProp(portId, arg1, arg2, arg3) {\n if (typeof arg1 === 'string' || Array.isArray(arg1)) {\n const path = this.prefixPortPath(portId, arg1);\n const value = arg2;\n return this.setPropByPath(path, value, arg3);\n }\n const path = this.prefixPortPath(portId);\n const value = arg1;\n return this.setPropByPath(path, value, arg2);\n }\n removePortProp(portId, path, options) {\n if (typeof path === 'string' || Array.isArray(path)) {\n return this.removePropByPath(this.prefixPortPath(portId, path), options);\n }\n return this.removePropByPath(this.prefixPortPath(portId), path);\n }\n portProp(portId, path, value, options) {\n if (path == null) {\n return this.getPortProp(portId);\n }\n if (typeof path === 'string' || Array.isArray(path)) {\n if (arguments.length === 2) {\n return this.getPortProp(portId, path);\n }\n if (value == null) {\n return this.removePortProp(portId, path, options);\n }\n return this.setPortProp(portId, path, value, options);\n }\n return this.setPortProp(portId, path, value);\n }\n prefixPortPath(portId, path) {\n const index = this.getPortIndex(portId);\n if (index === -1) {\n throw new Error(`Unable to find port with id: \"${portId}\"`);\n }\n if (path == null || path === '') {\n return ['ports', 'items', `${index}`];\n }\n if (Array.isArray(path)) {\n return ['ports', 'items', `${index}`, ...path];\n }\n return `ports/items/${index}/${path}`;\n }\n addPort(port, options) {\n const ports = [...this.ports.items];\n ports.push(port);\n this.setPropByPath('ports/items', ports, options);\n return this;\n }\n addPorts(ports, options) {\n this.setPropByPath('ports/items', [...this.ports.items, ...ports], options);\n return this;\n }\n insertPort(index, port, options) {\n const ports = [...this.ports.items];\n ports.splice(index, 0, port);\n this.setPropByPath('ports/items', ports, options);\n return this;\n }\n removePort(port, options = {}) {\n return this.removePortAt(this.getPortIndex(port), options);\n }\n removePortAt(index, options = {}) {\n if (index >= 0) {\n const ports = [...this.ports.items];\n ports.splice(index, 1);\n options.rewrite = true;\n this.setPropByPath('ports/items', ports, options);\n }\n return this;\n }\n removePorts(portsForRemoval, opt) {\n let options;\n if (Array.isArray(portsForRemoval)) {\n options = opt || {};\n if (portsForRemoval.length) {\n options.rewrite = true;\n const currentPorts = [...this.ports.items];\n const remainingPorts = currentPorts.filter((cp) => !portsForRemoval.some((p) => {\n const id = typeof p === 'string' ? p : p.id;\n return cp.id === id;\n }));\n this.setPropByPath('ports/items', remainingPorts, options);\n }\n }\n else {\n options = portsForRemoval || {};\n options.rewrite = true;\n this.setPropByPath('ports/items', [], options);\n }\n return this;\n }\n getParsedPorts() {\n return this.port.getPorts();\n }\n getParsedGroups() {\n return this.port.groups;\n }\n getPortsLayoutByGroup(groupName, bbox) {\n return this.port.getPortsLayoutByGroup(groupName, bbox);\n }\n initPorts() {\n this.updatePortData();\n this.on('change:ports', () => {\n this.processRemovedPort();\n this.updatePortData();\n });\n }\n processRemovedPort() {\n const current = this.ports;\n const currentItemsMap = {};\n current.items.forEach((item) => {\n if (item.id) {\n currentItemsMap[item.id] = true;\n }\n });\n const removed = {};\n const previous = this.store.getPrevious('ports') || {\n items: [],\n };\n previous.items.forEach((item) => {\n if (item.id && !currentItemsMap[item.id]) {\n removed[item.id] = true;\n }\n });\n const model = this.model;\n if (model && !ObjectExt.isEmpty(removed)) {\n const incomings = model.getConnectedEdges(this, { incoming: true });\n incomings.forEach((edge) => {\n const portId = edge.getTargetPortId();\n if (portId && removed[portId]) {\n edge.remove();\n }\n });\n const outgoings = model.getConnectedEdges(this, { outgoing: true });\n outgoings.forEach((edge) => {\n const portId = edge.getSourcePortId();\n if (portId && removed[portId]) {\n edge.remove();\n }\n });\n }\n }\n validatePorts() {\n const ids = {};\n const errors = [];\n this.ports.items.forEach((p) => {\n if (typeof p !== 'object') {\n errors.push(`Invalid port ${p}.`);\n }\n if (p.id == null) {\n p.id = this.generatePortId();\n }\n if (ids[p.id]) {\n errors.push('Duplicitied port id.');\n }\n ids[p.id] = true;\n });\n return errors;\n }\n generatePortId() {\n return StringExt.uuid();\n }\n updatePortData() {\n const err = this.validatePorts();\n if (err.length > 0) {\n this.store.set('ports', this.store.getPrevious('ports'));\n throw new Error(err.join(' '));\n }\n const prev = this.port ? this.port.getPorts() : null;\n this.port = new PortManager(this.ports);\n const curr = this.port.getPorts();\n const added = prev\n ? curr.filter((item) => {\n if (!prev.find((prevPort) => prevPort.id === item.id)) {\n return item;\n }\n return null;\n })\n : [...curr];\n const removed = prev\n ? prev.filter((item) => {\n if (!curr.find((curPort) => curPort.id === item.id)) {\n return item;\n }\n return null;\n })\n : [];\n if (added.length > 0) {\n this.notify('ports:added', { added, cell: this, node: this });\n }\n if (removed.length > 0) {\n this.notify('ports:removed', { removed, cell: this, node: this });\n }\n }\n}\nNode.defaults = {\n angle: 0,\n position: { x: 0, y: 0 },\n size: { width: 1, height: 1 },\n};\n(function (Node) {\n Node.toStringTag = `X6.${Node.name}`;\n function isNode(instance) {\n if (instance == null) {\n return false;\n }\n if (instance instanceof Node) {\n return true;\n }\n const tag = instance[Symbol.toStringTag];\n const node = instance;\n if ((tag == null || tag === Node.toStringTag) &&\n typeof node.isNode === 'function' &&\n typeof node.isEdge === 'function' &&\n typeof node.prop === 'function' &&\n typeof node.attr === 'function' &&\n typeof node.size === 'function' &&\n typeof node.position === 'function') {\n return true;\n }\n return false;\n }\n Node.isNode = isNode;\n})(Node || (Node = {}));\n(function (Node) {\n Node.config({\n propHooks(_a) {\n var { ports } = _a, metadata = __rest(_a, [\"ports\"]);\n if (ports) {\n metadata.ports = Array.isArray(ports) ? { items: ports } : ports;\n }\n return metadata;\n },\n });\n})(Node || (Node = {}));\n(function (Node) {\n Node.registry = Registry.create({\n type: 'node',\n process(shape, options) {\n if (ShareRegistry.exist(shape, true)) {\n throw new Error(`Node with name '${shape}' was registered by anthor Edge`);\n }\n if (typeof options === 'function') {\n options.config({ shape });\n return options;\n }\n let parent = Node;\n const { inherit } = options, config = __rest(options, [\"inherit\"]);\n if (inherit) {\n if (typeof inherit === 'string') {\n const base = this.get(inherit);\n if (base == null) {\n this.onNotFound(inherit, 'inherited');\n }\n else {\n parent = base;\n }\n }\n else {\n parent = inherit;\n }\n }\n if (config.constructorName == null) {\n config.constructorName = shape;\n }\n const ctor = parent.define.call(parent, config);\n ctor.config({ shape });\n return ctor;\n },\n });\n ShareRegistry.setNodeRegistry(Node.registry);\n})(Node || (Node = {}));\n(function (Node) {\n let counter = 0;\n function getClassName(name) {\n if (name) {\n return StringExt.pascalCase(name);\n }\n counter += 1;\n return `CustomNode${counter}`;\n }\n function define(config) {\n const { constructorName, overwrite } = config, others = __rest(config, [\"constructorName\", \"overwrite\"]);\n const ctor = ObjectExt.createClass(getClassName(constructorName || others.shape), this);\n ctor.config(others);\n if (others.shape) {\n Node.registry.register(others.shape, ctor, overwrite);\n }\n return ctor;\n }\n Node.define = define;\n function create(options) {\n const shape = options.shape || 'rect';\n const Ctor = Node.registry.get(shape);\n if (Ctor) {\n return new Ctor(options);\n }\n return Node.registry.onNotFound(shape);\n }\n Node.create = create;\n})(Node || (Node = {}));\n//# sourceMappingURL=node.js.map","var __rest = (this && this.__rest) || function (s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n t[p[i]] = s[p[i]];\n }\n return t;\n};\nimport { Node } from '../model/node';\nimport { ObjectExt } from '../util';\nexport class Base extends Node {\n get label() {\n return this.getLabel();\n }\n set label(val) {\n this.setLabel(val);\n }\n getLabel() {\n return this.getAttrByPath('text/text');\n }\n setLabel(label, options) {\n if (label == null) {\n this.removeLabel();\n }\n else {\n this.setAttrByPath('text/text', label, options);\n }\n return this;\n }\n removeLabel() {\n this.removeAttrByPath('text/text');\n return this;\n }\n}\n(function (Base) {\n Base.bodyAttr = {\n fill: '#ffffff',\n stroke: '#333333',\n strokeWidth: 2,\n };\n Base.labelAttr = {\n fontSize: 14,\n fill: '#000000',\n refX: 0.5,\n refY: 0.5,\n textAnchor: 'middle',\n textVerticalAnchor: 'middle',\n fontFamily: 'Arial, helvetica, sans-serif',\n };\n Base.config({\n attrs: { text: Object.assign({}, Base.labelAttr) },\n propHooks(metadata) {\n const { label } = metadata, others = __rest(metadata, [\"label\"]);\n if (label) {\n ObjectExt.setByPath(others, 'attrs/text/text', label);\n }\n return others;\n },\n });\n})(Base || (Base = {}));\n//# sourceMappingURL=base.js.map","var __rest = (this && this.__rest) || function (s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n t[p[i]] = s[p[i]];\n }\n return t;\n};\nimport { ObjectExt } from '../../util';\nimport { Base } from '../base';\nexport function getMarkup(tagName, noText = false) {\n return `<${tagName}/>${noText ? '' : ''}`;\n}\nexport function getName(name) {\n return `basic.${name}`;\n}\nexport function getImageUrlHook(attrName = 'xlink:href') {\n const hook = (metadata) => {\n const { imageUrl, imageWidth, imageHeight } = metadata, others = __rest(metadata, [\"imageUrl\", \"imageWidth\", \"imageHeight\"]);\n if (imageUrl != null || imageWidth != null || imageHeight != null) {\n const apply = () => {\n if (others.attrs) {\n const image = others.attrs.image;\n if (imageUrl != null) {\n image[attrName] = imageUrl;\n }\n if (imageWidth != null) {\n image.width = imageWidth;\n }\n if (imageHeight != null) {\n image.height = imageHeight;\n }\n others.attrs.image = image;\n }\n };\n if (others.attrs) {\n if (others.attrs.image == null) {\n others.attrs.image = {};\n }\n apply();\n }\n else {\n others.attrs = {\n image: {},\n };\n apply();\n }\n }\n return others;\n };\n return hook;\n}\nexport function createShape(shape, config, options = {}) {\n const name = getName(shape);\n const defaults = {\n constructorName: name,\n attrs: {\n '.': {\n fill: '#ffffff',\n stroke: 'none',\n },\n [shape]: {\n fill: '#ffffff',\n stroke: '#000000',\n },\n },\n };\n if (!options.ignoreMarkup) {\n defaults.markup = getMarkup(shape, options.noText === true);\n }\n const base = options.parent || Base;\n return base.define(ObjectExt.merge(defaults, config, { shape: name }));\n}\n//# sourceMappingURL=util.js.map","import { createShape } from './util';\nexport const Rect = createShape('rect', {\n attrs: {\n rect: {\n width: 100,\n height: 60,\n },\n },\n});\n//# sourceMappingURL=rect.js.map","import { createShape } from './util';\nexport const Circle = createShape('circle', {\n width: 60,\n height: 60,\n attrs: {\n circle: {\n r: 30,\n cx: 30,\n cy: 30,\n },\n },\n});\n//# sourceMappingURL=circle.js.map","import { createShape } from './util';\nexport const Ellipse = createShape('ellipse', {\n width: 60,\n height: 40,\n attrs: {\n ellipse: {\n rx: 30,\n ry: 20,\n cx: 30,\n cy: 20,\n },\n },\n});\n//# sourceMappingURL=ellipse.js.map","import { createShape } from './util';\nexport const Polygon = createShape('polygon', {\n width: 60,\n height: 40,\n attrs: {\n text: {\n refY: null,\n refDy: 16,\n },\n },\n});\n//# sourceMappingURL=polygon.js.map","import { createShape } from './util';\nexport const Polyline = createShape('polyline', {\n width: 60,\n height: 40,\n attrs: {\n text: {\n refY: null,\n refDy: 16,\n },\n },\n});\n//# sourceMappingURL=polyline.js.map","import { createShape, getImageUrlHook } from './util';\nexport const Image = createShape('image', {\n attrs: {\n text: {\n refY: null,\n refDy: 16,\n },\n },\n propHooks: getImageUrlHook(),\n});\n//# sourceMappingURL=image.js.map","var __rest = (this && this.__rest) || function (s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n t[p[i]] = s[p[i]];\n }\n return t;\n};\nimport { ObjectExt } from '../../util';\nimport { createShape } from './util';\nexport const Path = createShape('path', {\n width: 60,\n height: 60,\n attrs: {\n text: {\n ref: 'path',\n refY: null,\n refDy: 16,\n },\n },\n propHooks(metadata) {\n const { d } = metadata, others = __rest(metadata, [\"d\"]);\n if (d != null) {\n ObjectExt.setByPath(others, 'attrs/path/d', d);\n }\n return others;\n },\n});\n//# sourceMappingURL=path.js.map","import { Path } from './path';\nimport { createShape } from './util';\nexport const Rhombus = createShape('rhombus', {\n d: 'M 30 0 L 60 30 30 60 0 30 z',\n attrs: {\n text: {\n refY: 0.5,\n refDy: null,\n },\n },\n}, {\n parent: Path,\n ignoreMarkup: true,\n});\n//# sourceMappingURL=rhombus.js.map","import { Path } from './path';\nimport { createShape } from './util';\nexport const Cylinder = createShape('cylinder', {\n width: 40,\n height: 40,\n attrs: {\n path: {\n fill: '#FFFFFF',\n stroke: '#cbd2d7',\n strokeWidth: 3,\n d: [\n 'M 0 10 C 10 5, 30 5, 40 10 C 30 15, 10 15, 0 10',\n 'L 0 20',\n 'C 10 25, 30 25, 40 20',\n 'L 40 10',\n ].join(' '),\n },\n text: {\n refY: 0.7,\n refDy: null,\n fill: '#435460',\n },\n },\n}, {\n parent: Path,\n ignoreMarkup: true,\n});\n//# sourceMappingURL=cylinder.js.map","var __rest = (this && this.__rest) || function (s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n t[p[i]] = s[p[i]];\n }\n return t;\n};\nimport { ObjectExt, StringExt } from '../util';\nimport { Point, Polyline } from '../geometry';\nimport { Registry, } from '../registry';\nimport { Markup } from '../view/markup';\nimport { ShareRegistry } from './registry';\nimport { Cell } from './cell';\nexport class Edge extends Cell {\n constructor(metadata = {}) {\n super(metadata);\n }\n get [Symbol.toStringTag]() {\n return Edge.toStringTag;\n }\n preprocess(metadata, ignoreIdCheck) {\n const { source, sourceCell, sourcePort, sourcePoint, target, targetCell, targetPort, targetPoint } = metadata, others = __rest(metadata, [\"source\", \"sourceCell\", \"sourcePort\", \"sourcePoint\", \"target\", \"targetCell\", \"targetPort\", \"targetPoint\"]);\n const data = others;\n const isValidId = (val) => typeof val === 'string' || typeof val === 'number';\n if (source != null) {\n if (Cell.isCell(source)) {\n data.source = { cell: source.id };\n }\n else if (isValidId(source)) {\n data.source = { cell: source };\n }\n else if (Point.isPoint(source)) {\n data.source = source.toJSON();\n }\n else if (Array.isArray(source)) {\n data.source = { x: source[0], y: source[1] };\n }\n else {\n const cell = source.cell;\n if (Cell.isCell(cell)) {\n data.source = Object.assign(Object.assign({}, source), { cell: cell.id });\n }\n else {\n data.source = source;\n }\n }\n }\n if (sourceCell != null || sourcePort != null) {\n let terminal = data.source;\n if (sourceCell != null) {\n const id = isValidId(sourceCell) ? sourceCell : sourceCell.id;\n if (terminal) {\n terminal.cell = id;\n }\n else {\n terminal = data.source = { cell: id };\n }\n }\n if (sourcePort != null && terminal) {\n terminal.port = sourcePort;\n }\n }\n else if (sourcePoint != null) {\n data.source = Point.create(sourcePoint).toJSON();\n }\n if (target != null) {\n if (Cell.isCell(target)) {\n data.target = { cell: target.id };\n }\n else if (isValidId(target)) {\n data.target = { cell: target };\n }\n else if (Point.isPoint(target)) {\n data.target = target.toJSON();\n }\n else if (Array.isArray(target)) {\n data.target = { x: target[0], y: target[1] };\n }\n else {\n const cell = target.cell;\n if (Cell.isCell(cell)) {\n data.target = Object.assign(Object.assign({}, target), { cell: cell.id });\n }\n else {\n data.target = target;\n }\n }\n }\n if (targetCell != null || targetPort != null) {\n let terminal = data.target;\n if (targetCell != null) {\n const id = isValidId(targetCell) ? targetCell : targetCell.id;\n if (terminal) {\n terminal.cell = id;\n }\n else {\n terminal = data.target = { cell: id };\n }\n }\n if (targetPort != null && terminal) {\n terminal.port = targetPort;\n }\n }\n else if (targetPoint != null) {\n data.target = Point.create(targetPoint).toJSON();\n }\n return super.preprocess(data, ignoreIdCheck);\n }\n setup() {\n super.setup();\n this.on('change:labels', (args) => this.onLabelsChanged(args));\n this.on('change:vertices', (args) => this.onVertexsChanged(args));\n }\n isEdge() {\n return true;\n }\n // #region terminal\n disconnect(options = {}) {\n this.store.set({\n source: { x: 0, y: 0 },\n target: { x: 0, y: 0 },\n }, options);\n return this;\n }\n get source() {\n return this.getSource();\n }\n set source(data) {\n this.setSource(data);\n }\n getSource() {\n return this.getTerminal('source');\n }\n getSourceCellId() {\n return this.source.cell;\n }\n getSourcePortId() {\n return this.source.port;\n }\n setSource(source, args, options = {}) {\n return this.setTerminal('source', source, args, options);\n }\n get target() {\n return this.getTarget();\n }\n set target(data) {\n this.setTarget(data);\n }\n getTarget() {\n return this.getTerminal('target');\n }\n getTargetCellId() {\n return this.target.cell;\n }\n getTargetPortId() {\n return this.target.port;\n }\n setTarget(target, args, options = {}) {\n return this.setTerminal('target', target, args, options);\n }\n getTerminal(type) {\n return Object.assign({}, this.store.get(type));\n }\n setTerminal(type, terminal, args, options = {}) {\n // `terminal` is a cell\n if (Cell.isCell(terminal)) {\n this.store.set(type, ObjectExt.merge({}, args, { cell: terminal.id }), options);\n return this;\n }\n // `terminal` is a point-like object\n const p = terminal;\n if (Point.isPoint(terminal) || (p.x != null && p.y != null)) {\n this.store.set(type, ObjectExt.merge({}, args, { x: p.x, y: p.y }), options);\n return this;\n }\n // `terminal` is an object\n this.store.set(type, ObjectExt.cloneDeep(terminal), options);\n return this;\n }\n getSourcePoint() {\n return this.getTerminalPoint('source');\n }\n getTargetPoint() {\n return this.getTerminalPoint('target');\n }\n getTerminalPoint(type) {\n const terminal = this[type];\n if (Point.isPointLike(terminal)) {\n return Point.create(terminal);\n }\n const cell = this.getTerminalCell(type);\n if (cell) {\n return cell.getConnectionPoint(this, type);\n }\n return new Point();\n }\n getSourceCell() {\n return this.getTerminalCell('source');\n }\n getTargetCell() {\n return this.getTerminalCell('target');\n }\n getTerminalCell(type) {\n if (this.model) {\n const cellId = type === 'source' ? this.getSourceCellId() : this.getTargetCellId();\n if (cellId) {\n return this.model.getCell(cellId);\n }\n }\n return null;\n }\n getSourceNode() {\n return this.getTerminalNode('source');\n }\n getTargetNode() {\n return this.getTerminalNode('target');\n }\n getTerminalNode(type) {\n let cell = this; // eslint-disable-line\n const visited = {};\n while (cell && cell.isEdge()) {\n if (visited[cell.id]) {\n return null;\n }\n visited[cell.id] = true;\n cell = cell.getTerminalCell(type);\n }\n return cell && cell.isNode() ? cell : null;\n }\n // #endregion\n // #region router\n get router() {\n return this.getRouter();\n }\n set router(data) {\n if (data == null) {\n this.removeRouter();\n }\n else {\n this.setRouter(data);\n }\n }\n getRouter() {\n return this.store.get('router');\n }\n setRouter(name, args, options) {\n if (typeof name === 'object') {\n this.store.set('router', name, args);\n }\n else {\n this.store.set('router', { name, args }, options);\n }\n return this;\n }\n removeRouter(options = {}) {\n this.store.remove('router', options);\n return this;\n }\n // #endregion\n // #region connector\n get connector() {\n return this.getConnector();\n }\n set connector(data) {\n if (data == null) {\n this.removeConnector();\n }\n else {\n this.setConnector(data);\n }\n }\n getConnector() {\n return this.store.get('connector');\n }\n setConnector(name, args, options) {\n if (typeof name === 'object') {\n this.store.set('connector', name, args);\n }\n else {\n this.store.set('connector', { name, args }, options);\n }\n return this;\n }\n removeConnector(options = {}) {\n return this.store.remove('connector', options);\n }\n // #endregion\n // #region strategy\n get strategy() {\n return this.getStrategy();\n }\n set strategy(data) {\n if (data == null) {\n this.removeStrategy();\n }\n else {\n this.setStrategy(data);\n }\n }\n getStrategy() {\n return this.store.get('strategy');\n }\n setStrategy(name, args, options) {\n if (typeof name === 'object') {\n this.store.set('strategy', name, args);\n }\n else {\n this.store.set('strategy', { name, args }, options);\n }\n return this;\n }\n removeStrategy(options = {}) {\n return this.store.remove('strategy', options);\n }\n // #endregion\n // #region labels\n getDefaultLabel() {\n const ctor = this.constructor;\n const defaults = this.store.get('defaultLabel') || ctor.defaultLabel || {};\n return ObjectExt.cloneDeep(defaults);\n }\n get labels() {\n return this.getLabels();\n }\n set labels(labels) {\n this.setLabels(labels);\n }\n getLabels() {\n return [...this.store.get('labels', [])].map((item) => this.parseLabel(item));\n }\n setLabels(labels, options = {}) {\n this.store.set('labels', Array.isArray(labels) ? labels : [labels], options);\n return this;\n }\n insertLabel(label, index, options = {}) {\n const labels = this.getLabels();\n const len = labels.length;\n let idx = index != null && Number.isFinite(index) ? index : len;\n if (idx < 0) {\n idx = len + idx + 1;\n }\n labels.splice(idx, 0, this.parseLabel(label));\n return this.setLabels(labels, options);\n }\n appendLabel(label, options = {}) {\n return this.insertLabel(label, -1, options);\n }\n getLabelAt(index) {\n const labels = this.getLabels();\n if (index != null && Number.isFinite(index)) {\n return this.parseLabel(labels[index]);\n }\n return null;\n }\n setLabelAt(index, label, options = {}) {\n if (index != null && Number.isFinite(index)) {\n const labels = this.getLabels();\n labels[index] = this.parseLabel(label);\n this.setLabels(labels, options);\n }\n return this;\n }\n removeLabelAt(index, options = {}) {\n const labels = this.getLabels();\n const idx = index != null && Number.isFinite(index) ? index : -1;\n const removed = labels.splice(idx, 1);\n this.setLabels(labels, options);\n return removed.length ? removed[0] : null;\n }\n parseLabel(label) {\n if (typeof label === 'string') {\n const ctor = this.constructor;\n return ctor.parseStringLabel(label);\n }\n return label;\n }\n onLabelsChanged({ previous, current, }) {\n const added = previous && current\n ? current.filter((label1) => {\n if (!previous.find((label2) => label1 === label2 || ObjectExt.isEqual(label1, label2))) {\n return label1;\n }\n return null;\n })\n : current\n ? [...current]\n : [];\n const removed = previous && current\n ? previous.filter((label1) => {\n if (!current.find((label2) => label1 === label2 || ObjectExt.isEqual(label1, label2))) {\n return label1;\n }\n return null;\n })\n : previous\n ? [...previous]\n : [];\n if (added.length > 0) {\n this.notify('labels:added', { added, cell: this, edge: this });\n }\n if (removed.length > 0) {\n this.notify('labels:removed', { removed, cell: this, edge: this });\n }\n }\n // #endregion\n // #region vertices\n get vertexMarkup() {\n return this.getVertexMarkup();\n }\n set vertexMarkup(markup) {\n this.setVertexMarkup(markup);\n }\n getDefaultVertexMarkup() {\n return this.store.get('defaultVertexMarkup') || Markup.getEdgeVertexMarkup();\n }\n getVertexMarkup() {\n return this.store.get('vertexMarkup') || this.getDefaultVertexMarkup();\n }\n setVertexMarkup(markup, options = {}) {\n this.store.set('vertexMarkup', Markup.clone(markup), options);\n return this;\n }\n get vertices() {\n return this.getVertices();\n }\n set vertices(vertices) {\n this.setVertices(vertices);\n }\n getVertices() {\n return [...this.store.get('vertices', [])];\n }\n setVertices(vertices, options = {}) {\n const points = Array.isArray(vertices) ? vertices : [vertices];\n this.store.set('vertices', points.map((p) => Point.toJSON(p)), options);\n return this;\n }\n insertVertex(vertice, index, options = {}) {\n const vertices = this.getVertices();\n const len = vertices.length;\n let idx = index != null && Number.isFinite(index) ? index : len;\n if (idx < 0) {\n idx = len + idx + 1;\n }\n vertices.splice(idx, 0, Point.toJSON(vertice));\n return this.setVertices(vertices, options);\n }\n appendVertex(vertex, options = {}) {\n return this.insertVertex(vertex, -1, options);\n }\n getVertexAt(index) {\n if (index != null && Number.isFinite(index)) {\n const vertices = this.getVertices();\n return vertices[index];\n }\n return null;\n }\n setVertexAt(index, vertice, options = {}) {\n if (index != null && Number.isFinite(index)) {\n const vertices = this.getVertices();\n vertices[index] = vertice;\n this.setVertices(vertices, options);\n }\n return this;\n }\n removeVertexAt(index, options = {}) {\n const vertices = this.getVertices();\n const idx = index != null && Number.isFinite(index) ? index : -1;\n vertices.splice(idx, 1);\n return this.setVertices(vertices, options);\n }\n onVertexsChanged({ previous, current, }) {\n const added = previous && current\n ? current.filter((p1) => {\n if (!previous.find((p2) => Point.equals(p1, p2))) {\n return p1;\n }\n return null;\n })\n : current\n ? [...current]\n : [];\n const removed = previous && current\n ? previous.filter((p1) => {\n if (!current.find((p2) => Point.equals(p1, p2))) {\n return p1;\n }\n return null;\n })\n : previous\n ? [...previous]\n : [];\n if (added.length > 0) {\n this.notify('vertexs:added', { added, cell: this, edge: this });\n }\n if (removed.length > 0) {\n this.notify('vertexs:removed', { removed, cell: this, edge: this });\n }\n }\n // #endregion\n // #region markup\n getDefaultMarkup() {\n return this.store.get('defaultMarkup') || Markup.getEdgeMarkup();\n }\n getMarkup() {\n return super.getMarkup() || this.getDefaultMarkup();\n }\n // #endregion\n // #region toolMarkup\n get toolMarkup() {\n return this.getToolMarkup();\n }\n set toolMarkup(markup) {\n this.setToolMarkup(markup);\n }\n getDefaultToolMarkup() {\n return this.store.get('defaultToolMarkup') || Markup.getEdgeToolMarkup();\n }\n getToolMarkup() {\n return this.store.get('toolMarkup') || this.getDefaultToolMarkup();\n }\n setToolMarkup(markup, options = {}) {\n this.store.set('toolMarkup', markup, options);\n return this;\n }\n get doubleToolMarkup() {\n return this.getDoubleToolMarkup();\n }\n set doubleToolMarkup(markup) {\n this.setDoubleToolMarkup(markup);\n }\n getDefaultDoubleToolMarkup() {\n return this.store.get('defaultDoubleToolMarkup');\n }\n getDoubleToolMarkup() {\n return (this.store.get('doubleToolMarkup') || this.getDefaultDoubleToolMarkup());\n }\n setDoubleToolMarkup(markup, options = {}) {\n this.store.set('doubleToolMarkup', markup, options);\n return this;\n }\n // #endregion\n // #region arrowheadMarkup\n get arrowheadMarkup() {\n return this.getArrowheadMarkup();\n }\n set arrowheadMarkup(markup) {\n this.setArrowheadMarkup(markup);\n }\n getDefaultArrowheadMarkup() {\n return (this.store.get('defaultArrowheadMarkup') ||\n Markup.getEdgeArrowheadMarkup());\n }\n getArrowheadMarkup() {\n return this.store.get('arrowheadMarkup') || this.getDefaultArrowheadMarkup();\n }\n setArrowheadMarkup(markup, options = {}) {\n this.store.set('arrowheadMarkup', markup, options);\n return this;\n }\n // #endregion\n // #region transform\n /**\n * Translate the edge vertices (and source and target if they are points)\n * by `tx` pixels in the x-axis and `ty` pixels in the y-axis.\n */\n translate(tx, ty, options = {}) {\n options.translateBy = options.translateBy || this.id;\n options.tx = tx;\n options.ty = ty;\n return this.applyToPoints((p) => ({\n x: (p.x || 0) + tx,\n y: (p.y || 0) + ty,\n }), options);\n }\n /**\n * Scales the edge's points (vertices) relative to the given origin.\n */\n scale(sx, sy, origin, options = {}) {\n return this.applyToPoints((p) => {\n return Point.create(p).scale(sx, sy, origin).toJSON();\n }, options);\n }\n applyToPoints(worker, options = {}) {\n const attrs = {};\n const source = this.getSource();\n const target = this.getTarget();\n if (Point.isPointLike(source)) {\n attrs.source = worker(source);\n }\n if (Point.isPointLike(target)) {\n attrs.target = worker(target);\n }\n const vertices = this.getVertices();\n if (vertices.length > 0) {\n attrs.vertices = vertices.map(worker);\n }\n this.store.set(attrs, options);\n return this;\n }\n // #endregion\n // #region common\n getBBox() {\n return this.getPolyline().bbox();\n }\n getConnectionPoint() {\n return this.getPolyline().pointAt(0.5);\n }\n getPolyline() {\n const points = [\n this.getSourcePoint(),\n ...this.getVertices().map((vertice) => Point.create(vertice)),\n this.getTargetPoint(),\n ];\n return new Polyline(points);\n }\n updateParent(options) {\n let newParent = null;\n const source = this.getSourceCell();\n const target = this.getTargetCell();\n const prevParent = this.getParent();\n if (source && target) {\n if (source === target || source.isDescendantOf(target)) {\n newParent = target;\n }\n else if (target.isDescendantOf(source)) {\n newParent = source;\n }\n else {\n newParent = Cell.getCommonAncestor(source, target);\n }\n }\n // Unembeds the edge if source and target has no common\n // ancestor or common ancestor changed\n if (prevParent && (!newParent || newParent.id !== prevParent.id)) {\n prevParent.unembed(this, options);\n }\n if (newParent) {\n newParent.embed(this, options);\n }\n return newParent;\n }\n hasLoop(options = {}) {\n const source = this.getSource();\n const target = this.getTarget();\n const sourceId = source.cell;\n const targetId = target.cell;\n if (!sourceId || !targetId) {\n return false;\n }\n let loop = sourceId === targetId;\n // Note that there in the deep mode a edge can have a loop,\n // even if it connects only a parent and its embed.\n // A loop \"target equals source\" is valid in both shallow and deep mode.\n // eslint-disable-next-line\n if (!loop && options.deep && this._model) {\n const sourceCell = this.getSourceCell();\n const targetCell = this.getTargetCell();\n if (sourceCell && targetCell) {\n loop =\n sourceCell.isAncestorOf(targetCell, options) ||\n targetCell.isAncestorOf(sourceCell, options);\n }\n }\n return loop;\n }\n getFragmentAncestor() {\n const cells = [this, this.getSourceNode(), this.getTargetNode()].filter((item) => item != null);\n return this.getCommonAncestor(...cells);\n }\n isFragmentDescendantOf(cell) {\n const ancestor = this.getFragmentAncestor();\n return (!!ancestor && (ancestor.id === cell.id || ancestor.isDescendantOf(cell)));\n }\n}\nEdge.defaults = {};\n(function (Edge) {\n function equalTerminals(a, b) {\n const a1 = a;\n const b1 = b;\n if (a1.cell === b1.cell) {\n return a1.port === b1.port || (a1.port == null && b1.port == null);\n }\n return false;\n }\n Edge.equalTerminals = equalTerminals;\n})(Edge || (Edge = {}));\n(function (Edge) {\n Edge.defaultLabel = {\n markup: [\n {\n tagName: 'rect',\n selector: 'body',\n },\n {\n tagName: 'text',\n selector: 'label',\n },\n ],\n attrs: {\n text: {\n fill: '#000',\n fontSize: 14,\n textAnchor: 'middle',\n textVerticalAnchor: 'middle',\n pointerEvents: 'none',\n },\n rect: {\n ref: 'label',\n fill: '#fff',\n rx: 3,\n ry: 3,\n refWidth: 1,\n refHeight: 1,\n refX: 0,\n refY: 0,\n },\n },\n position: {\n distance: 0.5,\n },\n };\n function parseStringLabel(text) {\n return {\n attrs: { label: { text } },\n };\n }\n Edge.parseStringLabel = parseStringLabel;\n})(Edge || (Edge = {}));\n(function (Edge) {\n Edge.toStringTag = `X6.${Edge.name}`;\n function isEdge(instance) {\n if (instance == null) {\n return false;\n }\n if (instance instanceof Edge) {\n return true;\n }\n const tag = instance[Symbol.toStringTag];\n const edge = instance;\n if ((tag == null || tag === Edge.toStringTag) &&\n typeof edge.isNode === 'function' &&\n typeof edge.isEdge === 'function' &&\n typeof edge.prop === 'function' &&\n typeof edge.attr === 'function' &&\n typeof edge.disconnect === 'function' &&\n typeof edge.getSource === 'function' &&\n typeof edge.getTarget === 'function') {\n return true;\n }\n return false;\n }\n Edge.isEdge = isEdge;\n})(Edge || (Edge = {}));\n(function (Edge) {\n Edge.registry = Registry.create({\n type: 'edge',\n process(shape, options) {\n if (ShareRegistry.exist(shape, false)) {\n throw new Error(`Edge with name '${shape}' was registered by anthor Node`);\n }\n if (typeof options === 'function') {\n options.config({ shape });\n return options;\n }\n let parent = Edge;\n // default inherit from 'dege'\n const { inherit = 'edge' } = options, others = __rest(options, [\"inherit\"]);\n if (typeof inherit === 'string') {\n const base = this.get(inherit || 'edge');\n if (base == null && inherit) {\n this.onNotFound(inherit, 'inherited');\n }\n else {\n parent = base;\n }\n }\n else {\n parent = inherit;\n }\n if (others.constructorName == null) {\n others.constructorName = shape;\n }\n const ctor = parent.define.call(parent, others);\n ctor.config({ shape });\n return ctor;\n },\n });\n ShareRegistry.setEdgeRegistry(Edge.registry);\n})(Edge || (Edge = {}));\n(function (Edge) {\n let counter = 0;\n function getClassName(name) {\n if (name) {\n return StringExt.pascalCase(name);\n }\n counter += 1;\n return `CustomEdge${counter}`;\n }\n function define(config) {\n const { constructorName, overwrite } = config, others = __rest(config, [\"constructorName\", \"overwrite\"]);\n const ctor = ObjectExt.createClass(getClassName(constructorName || others.shape), this);\n ctor.config(others);\n if (others.shape) {\n Edge.registry.register(others.shape, ctor, overwrite);\n }\n return ctor;\n }\n Edge.define = define;\n function create(options) {\n const shape = options.shape || 'edge';\n const Ctor = Edge.registry.get(shape);\n if (Ctor) {\n return new Ctor(options);\n }\n return Edge.registry.onNotFound(shape);\n }\n Edge.create = create;\n})(Edge || (Edge = {}));\n(function (Edge) {\n const shape = 'basic.edge';\n Edge.config({\n shape,\n propHooks(metadata) {\n const { label, vertices } = metadata, others = __rest(metadata, [\"label\", \"vertices\"]);\n if (label) {\n if (others.labels == null) {\n others.labels = [];\n }\n const formated = typeof label === 'string' ? Edge.parseStringLabel(label) : label;\n others.labels.push(formated);\n }\n if (vertices) {\n if (Array.isArray(vertices)) {\n others.vertices = vertices.map((item) => Point.create(item).toJSON());\n }\n }\n return others;\n },\n });\n Edge.registry.register(shape, Edge);\n})(Edge || (Edge = {}));\n//# sourceMappingURL=edge.js.map","var __rest = (this && this.__rest) || function (s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n t[p[i]] = s[p[i]];\n }\n return t;\n};\nimport { Rectangle, Polyline, Point, Angle, Path, Line } from '../geometry';\nimport { StringExt, ObjectExt, NumberExt, FunctionExt, Dom, Vector, } from '../util';\nimport { Router, Connector, NodeAnchor, EdgeAnchor, ConnectionPoint, } from '../registry';\nimport { Edge } from '../model/edge';\nimport { Markup } from './markup';\nimport { CellView } from './cell';\nexport class EdgeView extends CellView {\n constructor() {\n super(...arguments);\n this.POINT_ROUNDING = 2;\n this.markerCache = {};\n // #endregion\n // #endregion\n }\n get [Symbol.toStringTag]() {\n return EdgeView.toStringTag;\n }\n getContainerClassName() {\n return [super.getContainerClassName(), this.prefixClassName('edge')].join(' ');\n }\n get sourceBBox() {\n const sourceView = this.sourceView;\n if (!sourceView) {\n const sourceDef = this.cell.getSource();\n return new Rectangle(sourceDef.x, sourceDef.y);\n }\n const sourceMagnet = this.sourceMagnet;\n if (sourceView.isEdgeElement(sourceMagnet)) {\n return new Rectangle(this.sourceAnchor.x, this.sourceAnchor.y);\n }\n return sourceView.getBBoxOfElement(sourceMagnet || sourceView.container);\n }\n get targetBBox() {\n const targetView = this.targetView;\n if (!targetView) {\n const targetDef = this.cell.getTarget();\n return new Rectangle(targetDef.x, targetDef.y);\n }\n const targetMagnet = this.targetMagnet;\n if (targetView.isEdgeElement(targetMagnet)) {\n return new Rectangle(this.targetAnchor.x, this.targetAnchor.y);\n }\n return targetView.getBBoxOfElement(targetMagnet || targetView.container);\n }\n isEdgeView() {\n return true;\n }\n confirmUpdate(flag, options = {}) {\n let ref = flag;\n if (this.hasAction(ref, 'source')) {\n if (!this.updateTerminalProperties('source')) {\n return ref;\n }\n ref = this.removeAction(ref, 'source');\n }\n if (this.hasAction(ref, 'target')) {\n if (!this.updateTerminalProperties('target')) {\n return ref;\n }\n ref = this.removeAction(ref, 'target');\n }\n const graph = this.graph;\n const sourceView = this.sourceView;\n const targetView = this.targetView;\n if (graph &&\n ((sourceView && !graph.renderer.isViewMounted(sourceView)) ||\n (targetView && !graph.renderer.isViewMounted(targetView)))) {\n // Wait for the sourceView and targetView to be rendered.\n return ref;\n }\n if (this.hasAction(ref, 'render')) {\n this.render();\n ref = this.removeAction(ref, [\n 'render',\n 'update',\n 'vertices',\n 'labels',\n 'tools',\n 'widget',\n ]);\n return ref;\n }\n ref = this.handleAction(ref, 'vertices', () => this.renderVertexMarkers());\n ref = this.handleAction(ref, 'update', () => this.update(null, options));\n ref = this.handleAction(ref, 'labels', () => this.onLabelsChange(options));\n ref = this.handleAction(ref, 'tools', () => {\n this.renderTools();\n this.updateToolsPosition();\n });\n ref = this.handleAction(ref, 'widget', () => this.renderExternalTools());\n return ref;\n }\n onLabelsChange(options = {}) {\n // Note: this optimization works in async=false mode only\n if (this.shouldRerenderLabels(options)) {\n this.renderLabels();\n }\n else {\n this.updateLabels();\n }\n this.updateLabelPositions();\n }\n shouldRerenderLabels(options = {}) {\n const previousLabels = this.cell.previous('labels');\n if (previousLabels == null) {\n return true;\n }\n // Here is an optimization for cases when we know, that change does\n // not require re-rendering of all labels.\n if ('propertyPathArray' in options && 'propertyValue' in options) {\n // The label is setting by `prop()` method\n const pathArray = options.propertyPathArray || [];\n const pathLength = pathArray.length;\n if (pathLength > 1) {\n // We are changing a single label here e.g. 'labels/0/position'\n const index = pathArray[1];\n if (previousLabels[index]) {\n if (pathLength === 2) {\n // We are changing the entire label. Need to check if the\n // markup is also being changed.\n return (typeof options.propertyValue === 'object' &&\n ObjectExt.has(options.propertyValue, 'markup'));\n }\n // We are changing a label property but not the markup\n if (pathArray[2] !== 'markup') {\n return false;\n }\n }\n }\n }\n return true;\n }\n render() {\n this.empty();\n this.containers = {};\n this.renderMarkup();\n this.renderLabels();\n this.update();\n this.renderExternalTools();\n return this;\n }\n renderMarkup() {\n const markup = this.cell.markup;\n if (markup) {\n if (typeof markup === 'string') {\n return this.renderStringMarkup(markup);\n }\n return this.renderJSONMarkup(markup);\n }\n throw new TypeError('Invalid edge markup.');\n }\n renderJSONMarkup(markup) {\n const ret = this.parseJSONMarkup(markup, this.container);\n this.selectors = ret.selectors;\n this.container.append(ret.fragment);\n }\n renderStringMarkup(markup) {\n const cache = this.containers;\n const children = Vector.createVectors(markup);\n // Cache children elements for quicker access.\n children.forEach((child) => {\n const className = child.attr('class');\n if (className) {\n cache[StringExt.camelCase(className)] =\n child.node;\n }\n });\n this.renderTools();\n this.renderVertexMarkers();\n this.renderArrowheadMarkers();\n Dom.append(this.container, children.map((child) => child.node));\n }\n renderLabels() {\n const edge = this.cell;\n const labels = edge.getLabels();\n const count = labels.length;\n let container = this.containers.labels;\n this.labelCache = {};\n this.labelSelectors = {};\n if (count <= 0) {\n if (container && container.parentNode) {\n container.parentNode.removeChild(container);\n }\n return this;\n }\n if (container) {\n this.empty(container);\n }\n else {\n container = Dom.createSvgElement('g');\n this.addClass(this.prefixClassName('edge-labels'), container);\n this.containers.labels = container;\n }\n for (let i = 0, ii = labels.length; i < ii; i += 1) {\n const label = labels[i];\n const normalized = this.normalizeLabelMarkup(this.parseLabelMarkup(label.markup));\n let labelNode;\n let selectors;\n if (normalized) {\n labelNode = normalized.node;\n selectors = normalized.selectors;\n }\n else {\n const defaultLabel = edge.getDefaultLabel();\n const normalized = this.normalizeLabelMarkup(this.parseLabelMarkup(defaultLabel.markup));\n labelNode = normalized.node;\n selectors = normalized.selectors;\n }\n labelNode.setAttribute('data-index', `${i}`);\n container.appendChild(labelNode);\n const rootSelector = this.rootSelector;\n if (selectors[rootSelector]) {\n throw new Error('Ambiguous label root selector.');\n }\n selectors[rootSelector] = labelNode;\n this.labelCache[i] = labelNode;\n this.labelSelectors[i] = selectors;\n }\n if (container.parentNode == null) {\n this.container.appendChild(container);\n }\n this.updateLabels();\n this.customizeLabels();\n return this;\n }\n parseLabelMarkup(markup) {\n if (markup) {\n if (typeof markup === 'string') {\n return this.parseLabelStringMarkup(markup);\n }\n return this.parseJSONMarkup(markup);\n }\n return null;\n }\n parseLabelStringMarkup(labelMarkup) {\n const children = Vector.createVectors(labelMarkup);\n const fragment = document.createDocumentFragment();\n for (let i = 0, n = children.length; i < n; i += 1) {\n const currentChild = children[i].node;\n fragment.appendChild(currentChild);\n }\n return { fragment, selectors: {} };\n }\n normalizeLabelMarkup(markup) {\n if (markup == null) {\n return;\n }\n const fragment = markup.fragment;\n if (!(fragment instanceof DocumentFragment) || !fragment.hasChildNodes()) {\n throw new Error('Invalid label markup.');\n }\n let vel;\n const childNodes = fragment.childNodes;\n if (childNodes.length > 1 || childNodes[0].nodeName.toUpperCase() !== 'G') {\n // default markup fragment is not wrapped in ``\n // add a `` container\n vel = Vector.create('g').append(fragment);\n }\n else {\n vel = Vector.create(childNodes[0]);\n }\n vel.addClass(this.prefixClassName('edge-label'));\n return {\n node: vel.node,\n selectors: markup.selectors,\n };\n }\n updateLabels() {\n if (this.containers.labels) {\n const edge = this.cell;\n const labels = edge.labels;\n const canLabelMove = this.can('edgeLabelMovable');\n const defaultLabel = edge.getDefaultLabel();\n for (let i = 0, n = labels.length; i < n; i += 1) {\n const elem = this.labelCache[i];\n const selectors = this.labelSelectors[i];\n elem.setAttribute('cursor', canLabelMove ? 'move' : 'default');\n const label = labels[i];\n const attrs = ObjectExt.merge({}, defaultLabel.attrs, label.attrs);\n this.updateAttrs(elem, attrs, {\n selectors,\n rootBBox: label.size ? Rectangle.fromSize(label.size) : undefined,\n });\n }\n }\n }\n mergeLabelAttrs(hasCustomMarkup, labelAttrs, defaultLabelAttrs) {\n if (labelAttrs === null) {\n return null;\n }\n if (labelAttrs === undefined) {\n if (defaultLabelAttrs === null) {\n return null;\n }\n if (defaultLabelAttrs === undefined) {\n return undefined;\n }\n if (hasCustomMarkup) {\n return defaultLabelAttrs;\n }\n return ObjectExt.merge({}, defaultLabelAttrs);\n }\n if (hasCustomMarkup) {\n return ObjectExt.merge({}, defaultLabelAttrs, labelAttrs);\n }\n }\n customizeLabels() {\n if (this.containers.labels) {\n const edge = this.cell;\n const labels = edge.labels;\n for (let i = 0, n = labels.length; i < n; i += 1) {\n const label = labels[i];\n const container = this.labelCache[i];\n const selectors = this.labelSelectors[i];\n this.graph.hook.onEdgeLabelRendered({\n edge,\n label,\n container,\n selectors,\n });\n }\n }\n }\n renderTools() {\n const container = this.containers.tools;\n if (container == null) {\n return this;\n }\n const markup = this.cell.toolMarkup;\n const $container = this.$(container).empty();\n if (Markup.isStringMarkup(markup)) {\n let template = StringExt.template(markup);\n const tool = Vector.create(template());\n $container.append(tool.node);\n this.toolCache = tool.node;\n // If `doubleTools` is enabled, we render copy of the tools on the\n // other side of the edge as well but only if the edge is longer\n // than `longLength`.\n if (this.options.doubleTools) {\n let tool2;\n const doubleToolMarkup = this.cell.doubleToolMarkup;\n if (Markup.isStringMarkup(doubleToolMarkup)) {\n template = StringExt.template(doubleToolMarkup);\n tool2 = Vector.create(template());\n }\n else {\n tool2 = tool.clone();\n }\n $container.append(tool2.node);\n this.tool2Cache = tool2.node;\n }\n }\n return this;\n }\n renderExternalTools() {\n const tools = this.cell.getTools();\n this.addTools(tools);\n return this;\n }\n renderVertexMarkers() {\n const container = this.containers.vertices;\n if (container == null) {\n return this;\n }\n const markup = this.cell.vertexMarkup;\n const $container = this.$(container).empty();\n if (Markup.isStringMarkup(markup)) {\n const template = StringExt.template(markup);\n this.cell.getVertices().forEach((vertex, index) => {\n $container.append(Vector.create(template(Object.assign({ index }, vertex))).node);\n });\n }\n return this;\n }\n renderArrowheadMarkers() {\n const container = this.containers.arrowheads;\n if (container == null) {\n return this;\n }\n const markup = this.cell.arrowheadMarkup;\n const $container = this.$(container).empty();\n if (Markup.isStringMarkup(markup)) {\n const template = StringExt.template(markup);\n const sourceArrowhead = Vector.create(template({ end: 'source' })).node;\n const targetArrowhead = Vector.create(template({ end: 'target' })).node;\n this.containers.sourceArrowhead = sourceArrowhead;\n this.containers.targetArrowhead = targetArrowhead;\n $container.append(sourceArrowhead, targetArrowhead);\n }\n return this;\n }\n // #endregion\n // #region updating\n update(partialAttrs, options = {}) {\n this.cleanCache();\n this.updateConnection(options);\n const attrs = this.cell.getAttrs();\n if (attrs != null) {\n this.updateAttrs(this.container, attrs, {\n attrs: partialAttrs === attrs ? null : partialAttrs,\n selectors: this.selectors,\n });\n }\n this.updateConnectionPath();\n this.updateLabelPositions();\n this.updateToolsPosition();\n this.updateArrowheadMarkers();\n this.updateTools(options);\n return this;\n }\n removeRedundantLinearVertices(options = {}) {\n const edge = this.cell;\n const vertices = edge.getVertices();\n const routePoints = [this.sourceAnchor, ...vertices, this.targetAnchor];\n const rawCount = routePoints.length;\n // Puts the route points into a polyline and try to simplify.\n const polyline = new Polyline(routePoints);\n polyline.simplify({ threshold: 0.01 });\n const simplifiedPoints = polyline.points.map((point) => point.toJSON());\n const simplifiedCount = simplifiedPoints.length;\n // If simplification did not remove any redundant vertices.\n if (rawCount === simplifiedCount) {\n return 0;\n }\n // Sets simplified polyline points as edge vertices.\n // Removes first and last polyline points again (source/target anchors).\n edge.setVertices(simplifiedPoints.slice(1, simplifiedCount - 1), options);\n return rawCount - simplifiedCount;\n }\n updateConnectionPath() {\n const containers = this.containers;\n if (containers.connection) {\n const pathData = this.getConnectionPathData();\n containers.connection.setAttribute('d', pathData);\n }\n if (containers.connectionWrap) {\n const pathData = this.getConnectionPathData();\n containers.connectionWrap.setAttribute('d', pathData);\n }\n if (containers.sourceMarker && containers.targetMarker) {\n this.translateAndAutoOrientArrows(containers.sourceMarker, containers.targetMarker);\n }\n }\n getTerminalView(type) {\n switch (type) {\n case 'source':\n return this.sourceView || null;\n case 'target':\n return this.targetView || null;\n default:\n throw new Error(`Unknown terminal type '${type}'`);\n }\n }\n getTerminalAnchor(type) {\n switch (type) {\n case 'source':\n return Point.create(this.sourceAnchor);\n case 'target':\n return Point.create(this.targetAnchor);\n default:\n throw new Error(`Unknown terminal type '${type}'`);\n }\n }\n getTerminalConnectionPoint(type) {\n switch (type) {\n case 'source':\n return Point.create(this.sourcePoint);\n case 'target':\n return Point.create(this.targetPoint);\n default:\n throw new Error(`Unknown terminal type '${type}'`);\n }\n }\n getTerminalMagnet(type, options = {}) {\n switch (type) {\n case 'source': {\n if (options.raw) {\n return this.sourceMagnet;\n }\n const sourceView = this.sourceView;\n if (!sourceView) {\n return null;\n }\n return this.sourceMagnet || sourceView.container;\n }\n case 'target': {\n if (options.raw) {\n return this.targetMagnet;\n }\n const targetView = this.targetView;\n if (!targetView) {\n return null;\n }\n return this.targetMagnet || targetView.container;\n }\n default: {\n throw new Error(`Unknown terminal type '${type}'`);\n }\n }\n }\n updateConnection(options = {}) {\n const edge = this.cell;\n // The edge is being translated by an ancestor that will shift\n // source, target and vertices by an equal distance.\n if (options.translateBy &&\n edge.isFragmentDescendantOf(options.translateBy)) {\n const tx = options.tx || 0;\n const ty = options.ty || 0;\n this.routePoints = new Polyline(this.routePoints).translate(tx, ty).points;\n this.translateConnectionPoints(tx, ty);\n this.path.translate(tx, ty);\n }\n else {\n const vertices = edge.getVertices();\n // 1. Find anchor points\n const anchors = this.findAnchors(vertices);\n this.sourceAnchor = anchors.source;\n this.targetAnchor = anchors.target;\n // 2. Find route points\n this.routePoints = this.findRoutePoints(vertices);\n // 3. Find connection points\n const connectionPoints = this.findConnectionPoints(this.routePoints, this.sourceAnchor, this.targetAnchor);\n this.sourcePoint = connectionPoints.source;\n this.targetPoint = connectionPoints.target;\n // 4. Find Marker Connection Point\n const markerPoints = this.findMarkerPoints(this.routePoints, this.sourcePoint, this.targetPoint);\n // 5. Make path\n this.path = this.findPath(this.routePoints, markerPoints.source || this.sourcePoint, markerPoints.target || this.targetPoint);\n }\n this.cleanCache();\n }\n findAnchors(vertices) {\n const edge = this.cell;\n const source = edge.source;\n const target = edge.target;\n const firstVertex = vertices[0];\n const lastVertex = vertices[vertices.length - 1];\n if (target.priority && !source.priority) {\n // Reversed order\n return this.findAnchorsOrdered('target', lastVertex, 'source', firstVertex);\n }\n // Usual order\n return this.findAnchorsOrdered('source', firstVertex, 'target', lastVertex);\n }\n findAnchorsOrdered(firstType, firstPoint, secondType, secondPoint) {\n let firstAnchor;\n let secondAnchor;\n const edge = this.cell;\n const firstTerminal = edge[firstType];\n const secondTerminal = edge[secondType];\n const firstView = this.getTerminalView(firstType);\n const secondView = this.getTerminalView(secondType);\n const firstMagnet = this.getTerminalMagnet(firstType);\n const secondMagnet = this.getTerminalMagnet(secondType);\n if (firstView) {\n let firstRef;\n if (firstPoint) {\n firstRef = Point.create(firstPoint);\n }\n else if (secondView) {\n firstRef = secondMagnet;\n }\n else {\n firstRef = Point.create(secondTerminal);\n }\n firstAnchor = this.getAnchor(firstTerminal.anchor, firstView, firstMagnet, firstRef, firstType);\n }\n else {\n firstAnchor = Point.create(firstTerminal);\n }\n if (secondView) {\n const secondRef = Point.create(secondPoint || firstAnchor);\n secondAnchor = this.getAnchor(secondTerminal.anchor, secondView, secondMagnet, secondRef, secondType);\n }\n else {\n secondAnchor = Point.isPointLike(secondTerminal)\n ? Point.create(secondTerminal)\n : new Point();\n }\n return {\n [firstType]: firstAnchor,\n [secondType]: secondAnchor,\n };\n }\n getAnchor(def, cellView, magnet, ref, terminalType) {\n const isEdge = cellView.isEdgeElement(magnet);\n const connecting = this.graph.options.connecting;\n let config = typeof def === 'string' ? { name: def } : def;\n if (!config) {\n const defaults = isEdge\n ? (terminalType === 'source'\n ? connecting.sourceEdgeAnchor\n : connecting.targetEdgeAnchor) || connecting.edgeAnchor\n : (terminalType === 'source'\n ? connecting.sourceAnchor\n : connecting.targetAnchor) || connecting.anchor;\n config = typeof defaults === 'string' ? { name: defaults } : defaults;\n }\n if (!config) {\n throw new Error(`Anchor should be specified.`);\n }\n let anchor;\n const name = config.name;\n if (isEdge) {\n const fn = EdgeAnchor.registry.get(name);\n if (typeof fn !== 'function') {\n return EdgeAnchor.registry.onNotFound(name);\n }\n anchor = FunctionExt.call(fn, this, cellView, magnet, ref, config.args || {}, terminalType);\n }\n else {\n const fn = NodeAnchor.registry.get(name);\n if (typeof fn !== 'function') {\n return NodeAnchor.registry.onNotFound(name);\n }\n anchor = FunctionExt.call(fn, this, cellView, magnet, ref, config.args || {}, terminalType);\n }\n return anchor ? anchor.round(this.POINT_ROUNDING) : new Point();\n }\n findRoutePoints(vertices = []) {\n const defaultRouter = this.graph.options.connecting.router || Router.presets.normal;\n const router = this.cell.getRouter() || defaultRouter;\n let routePoints;\n if (typeof router === 'function') {\n routePoints = FunctionExt.call(router, this, vertices, {}, this);\n }\n else {\n const name = typeof router === 'string' ? router : router.name;\n const args = typeof router === 'string' ? {} : router.args || {};\n const fn = name ? Router.registry.get(name) : Router.presets.normal;\n if (typeof fn !== 'function') {\n return Router.registry.onNotFound(name);\n }\n routePoints = FunctionExt.call(fn, this, vertices, args, this);\n }\n return routePoints == null\n ? vertices.map((p) => Point.create(p))\n : routePoints.map((p) => Point.create(p));\n }\n findConnectionPoints(routePoints, sourceAnchor, targetAnchor) {\n const edge = this.cell;\n const connecting = this.graph.options.connecting;\n const sourceTerminal = edge.getSource();\n const targetTerminal = edge.getTarget();\n const sourceView = this.sourceView;\n const targetView = this.targetView;\n const firstRoutePoint = routePoints[0];\n const lastRoutePoint = routePoints[routePoints.length - 1];\n // source\n let sourcePoint;\n if (sourceView && !sourceView.isEdgeElement(this.sourceMagnet)) {\n const sourceMagnet = this.sourceMagnet || sourceView.container;\n const sourcePointRef = firstRoutePoint || targetAnchor;\n const sourceLine = new Line(sourcePointRef, sourceAnchor);\n const connectionPointDef = sourceTerminal.connectionPoint ||\n connecting.sourceConnectionPoint ||\n connecting.connectionPoint;\n sourcePoint = this.getConnectionPoint(connectionPointDef, sourceView, sourceMagnet, sourceLine, 'source');\n }\n else {\n sourcePoint = sourceAnchor;\n }\n // target\n let targetPoint;\n if (targetView && !targetView.isEdgeElement(this.targetMagnet)) {\n const targetMagnet = this.targetMagnet || targetView.container;\n const targetConnectionPointDef = targetTerminal.connectionPoint ||\n connecting.targetConnectionPoint ||\n connecting.connectionPoint;\n const targetPointRef = lastRoutePoint || sourceAnchor;\n const targetLine = new Line(targetPointRef, targetAnchor);\n targetPoint = this.getConnectionPoint(targetConnectionPointDef, targetView, targetMagnet, targetLine, 'target');\n }\n else {\n targetPoint = targetAnchor;\n }\n return {\n source: sourcePoint,\n target: targetPoint,\n };\n }\n getConnectionPoint(def, view, magnet, line, endType) {\n const anchor = line.end;\n if (def == null) {\n return anchor;\n }\n const name = typeof def === 'string' ? def : def.name;\n const args = typeof def === 'string' ? {} : def.args;\n const fn = ConnectionPoint.registry.get(name);\n if (typeof fn !== 'function') {\n return ConnectionPoint.registry.onNotFound(name);\n }\n const connectionPoint = FunctionExt.call(fn, this, line, view, magnet, args || {}, endType);\n return connectionPoint ? connectionPoint.round(this.POINT_ROUNDING) : anchor;\n }\n updateMarkerAttr(type) {\n const attrs = this.cell.getAttrs();\n const key = `.${type}-marker`;\n const partial = attrs && attrs[key];\n if (partial) {\n this.updateAttrs(this.container, {}, {\n attrs: { [key]: partial },\n selectors: this.selectors,\n });\n }\n }\n findMarkerPoints(routePoints, sourcePoint, targetPoint) {\n const getLineWidth = (type) => {\n const attrs = this.cell.getAttrs();\n const keys = Object.keys(attrs);\n for (let i = 0, l = keys.length; i < l; i += 1) {\n const attr = attrs[keys[i]];\n if (attr[`${type}Marker`] || attr[`${type}-marker`]) {\n const strokeWidth = attr.strokeWidth || attr['stroke-width'];\n if (strokeWidth) {\n return parseFloat(strokeWidth);\n }\n break;\n }\n }\n return null;\n };\n const firstRoutePoint = routePoints[0];\n const lastRoutePoint = routePoints[routePoints.length - 1];\n const sourceMarkerElem = this.containers.sourceMarker;\n const targetMarkerElem = this.containers.targetMarker;\n const cache = this.markerCache;\n let sourceMarkerPoint;\n let targetMarkerPoint;\n // Move the source point by the width of the marker taking into\n // account its scale around x-axis. Note that scale is the only\n // transform that makes sense to be set in `.marker-source`\n // attributes object as all other transforms (translate/rotate)\n // will be replaced by the `translateAndAutoOrient()` function.\n if (sourceMarkerElem) {\n this.updateMarkerAttr('source');\n // support marker connection point registry???\n cache.sourceBBox = cache.sourceBBox || Dom.getBBox(sourceMarkerElem);\n if (cache.sourceBBox.width > 0) {\n const scale = Dom.scale(sourceMarkerElem);\n sourceMarkerPoint = sourcePoint\n .clone()\n .move(firstRoutePoint || targetPoint, cache.sourceBBox.width * scale.sx * -1);\n }\n }\n else {\n const strokeWidth = getLineWidth('source');\n if (strokeWidth) {\n sourceMarkerPoint = sourcePoint\n .clone()\n .move(firstRoutePoint || targetPoint, -strokeWidth);\n }\n }\n if (targetMarkerElem) {\n this.updateMarkerAttr('target');\n cache.targetBBox = cache.targetBBox || Dom.getBBox(targetMarkerElem);\n if (cache.targetBBox.width > 0) {\n const scale = Dom.scale(targetMarkerElem);\n targetMarkerPoint = targetPoint\n .clone()\n .move(lastRoutePoint || sourcePoint, cache.targetBBox.width * scale.sx * -1);\n }\n }\n else {\n const strokeWidth = getLineWidth('target');\n if (strokeWidth) {\n targetMarkerPoint = targetPoint\n .clone()\n .move(lastRoutePoint || sourcePoint, -strokeWidth);\n }\n }\n // If there was no markup for the marker, use the connection point.\n cache.sourcePoint = sourceMarkerPoint || sourcePoint.clone();\n cache.targetPoint = targetMarkerPoint || targetPoint.clone();\n return {\n source: sourceMarkerPoint,\n target: targetMarkerPoint,\n };\n }\n findPath(routePoints, sourcePoint, targetPoint) {\n const def = this.cell.getConnector() || this.graph.options.connecting.connector;\n let name;\n let args;\n let fn;\n if (typeof def === 'string') {\n name = def;\n }\n else {\n name = def.name;\n args = def.args;\n }\n if (name) {\n const method = Connector.registry.get(name);\n if (typeof method !== 'function') {\n return Connector.registry.onNotFound(name);\n }\n fn = method;\n }\n else {\n fn = Connector.presets.normal;\n }\n const path = FunctionExt.call(fn, this, sourcePoint, targetPoint, routePoints, Object.assign(Object.assign({}, args), { raw: true }), this);\n return typeof path === 'string' ? Path.parse(path) : path;\n }\n translateConnectionPoints(tx, ty) {\n const cache = this.markerCache;\n if (cache.sourcePoint) {\n cache.sourcePoint.translate(tx, ty);\n }\n if (cache.targetPoint) {\n cache.targetPoint.translate(tx, ty);\n }\n this.sourcePoint.translate(tx, ty);\n this.targetPoint.translate(tx, ty);\n this.sourceAnchor.translate(tx, ty);\n this.targetAnchor.translate(tx, ty);\n }\n updateLabelPositions() {\n if (this.containers.labels == null) {\n return this;\n }\n const path = this.path;\n if (!path) {\n return this;\n }\n const edge = this.cell;\n const labels = edge.getLabels();\n if (labels.length === 0) {\n return this;\n }\n const defaultLabel = edge.getDefaultLabel();\n const defaultPosition = this.normalizeLabelPosition(defaultLabel.position);\n for (let i = 0, ii = labels.length; i < ii; i += 1) {\n const label = labels[i];\n const labelPosition = this.normalizeLabelPosition(label.position);\n const pos = ObjectExt.merge({}, defaultPosition, labelPosition);\n const matrix = this.getLabelTransformationMatrix(pos);\n this.labelCache[i].setAttribute('transform', Dom.matrixToTransformString(matrix));\n }\n return this;\n }\n updateToolsPosition() {\n if (this.containers.tools == null) {\n return this;\n }\n // Move the tools a bit to the target position but don't cover the\n // `sourceArrowhead` marker. Note that the offset is hardcoded here.\n // The offset should be always more than the\n // `this.$('.marker-arrowhead[end=\"source\"]')[0].bbox().width` but looking\n // this up all the time would be slow.\n let scale = '';\n let offset = this.options.toolsOffset;\n const connectionLength = this.getConnectionLength();\n // Firefox returns `connectionLength=NaN` in odd cases (for bezier curves).\n // In that case we won't update tools position at all.\n if (connectionLength != null) {\n // If the edge is too short, make the tools half the\n // size and the offset twice as low.\n if (connectionLength < this.options.shortLength) {\n scale = 'scale(.5)';\n offset /= 2;\n }\n let pos = this.getPointAtLength(offset);\n if (pos != null) {\n Dom.attr(this.toolCache, 'transform', `translate(${pos.x},${pos.y}) ${scale}`);\n }\n if (this.options.doubleTools &&\n connectionLength >= this.options.longLength) {\n const doubleToolsOffset = this.options.doubleToolsOffset || offset;\n pos = this.getPointAtLength(connectionLength - doubleToolsOffset);\n if (pos != null) {\n Dom.attr(this.tool2Cache, 'transform', `translate(${pos.x},${pos.y}) ${scale}`);\n }\n Dom.attr(this.tool2Cache, 'visibility', 'visible');\n }\n else if (this.options.doubleTools) {\n Dom.attr(this.tool2Cache, 'visibility', 'hidden');\n }\n }\n return this;\n }\n updateArrowheadMarkers() {\n const container = this.containers.arrowheads;\n if (container == null) {\n return this;\n }\n if (container.style.display === 'none') {\n return this;\n }\n const sourceArrowhead = this.containers.sourceArrowhead;\n const targetArrowhead = this.containers.targetArrowhead;\n if (sourceArrowhead && targetArrowhead) {\n const len = this.getConnectionLength() || 0;\n const sx = len < this.options.shortLength ? 0.5 : 1;\n Dom.scale(sourceArrowhead, sx);\n Dom.scale(targetArrowhead, sx);\n this.translateAndAutoOrientArrows(sourceArrowhead, targetArrowhead);\n }\n return this;\n }\n updateTerminalProperties(type) {\n const edge = this.cell;\n const graph = this.graph;\n const terminal = edge[type];\n const nodeId = terminal && terminal.cell;\n const viewKey = `${type}View`;\n // terminal is a point\n if (!nodeId) {\n this[viewKey] = null;\n this.updateTerminalMagnet(type);\n return true;\n }\n const terminalCell = graph.getCellById(nodeId);\n if (!terminalCell) {\n throw new Error(`Edge's ${type} node with id \"${nodeId}\" not exists`);\n }\n const endView = terminalCell.findView(graph);\n if (!endView) {\n return false;\n }\n this[viewKey] = endView;\n this.updateTerminalMagnet(type);\n return true;\n }\n updateTerminalMagnet(type) {\n const propName = `${type}Magnet`;\n const terminalView = this.getTerminalView(type);\n if (terminalView) {\n let magnet = terminalView.getMagnetFromEdgeTerminal(this.cell[type]);\n if (magnet === terminalView.container) {\n magnet = null;\n }\n this[propName] = magnet;\n }\n else {\n this[propName] = null;\n }\n }\n translateAndAutoOrientArrows(sourceArrow, targetArrow) {\n const route = this.routePoints;\n if (sourceArrow) {\n Dom.translateAndAutoOrient(sourceArrow, this.sourcePoint, route[0] || this.targetPoint, this.graph.view.stage);\n }\n if (targetArrow) {\n Dom.translateAndAutoOrient(targetArrow, this.targetPoint, route[route.length - 1] || this.sourcePoint, this.graph.view.stage);\n }\n }\n getLabelPositionAngle(idx) {\n const label = this.cell.getLabelAt(idx);\n if (label && label.position && typeof label.position === 'object') {\n return label.position.angle || 0;\n }\n return 0;\n }\n getLabelPositionArgs(idx) {\n const label = this.cell.getLabelAt(idx);\n if (label && label.position && typeof label.position === 'object') {\n return label.position.options;\n }\n }\n getDefaultLabelPositionArgs() {\n const defaultLabel = this.cell.getDefaultLabel();\n if (defaultLabel &&\n defaultLabel.position &&\n typeof defaultLabel.position === 'object') {\n return defaultLabel.position.options;\n }\n }\n // merge default label position args into label position args\n // keep `undefined` or `null` because `{}` means something else\n mergeLabelPositionArgs(labelPositionArgs, defaultLabelPositionArgs) {\n if (labelPositionArgs === null) {\n return null;\n }\n if (labelPositionArgs === undefined) {\n if (defaultLabelPositionArgs === null) {\n return null;\n }\n return defaultLabelPositionArgs;\n }\n return ObjectExt.merge({}, defaultLabelPositionArgs, labelPositionArgs);\n }\n addLabel(p1, p2, p3, options) {\n let localX;\n let localY;\n let localAngle = 0;\n let localOptions;\n if (typeof p1 !== 'number') {\n localX = p1.x;\n localY = p1.y;\n if (typeof p2 === 'number') {\n localAngle = p2;\n localOptions = p3;\n }\n else {\n localOptions = p2;\n }\n }\n else {\n localX = p1;\n localY = p2;\n if (typeof p3 === 'number') {\n localAngle = p3;\n localOptions = options;\n }\n else {\n localOptions = p3;\n }\n }\n // merge label position arguments\n const defaultLabelPositionArgs = this.getDefaultLabelPositionArgs();\n const labelPositionArgs = localOptions;\n const positionArgs = this.mergeLabelPositionArgs(labelPositionArgs, defaultLabelPositionArgs);\n // append label to labels array\n const label = {\n position: this.getLabelPosition(localX, localY, localAngle, positionArgs),\n };\n const index = -1;\n this.cell.insertLabel(label, index, localOptions);\n return index;\n }\n addVertex(x, y, options) {\n const isPoint = typeof x !== 'number';\n const localX = isPoint ? x.x : x;\n const localY = isPoint ? x.y : y;\n const localOptions = isPoint ? y : options;\n const vertex = { x: localX, y: localY };\n const index = this.getVertexIndex(localX, localY);\n this.cell.insertVertex(vertex, index, localOptions);\n return index;\n }\n sendToken(token, options, callback) {\n let duration;\n let reversed;\n let selector;\n let rorate;\n let timing = 'linear';\n if (typeof options === 'object') {\n duration = options.duration;\n reversed = options.reversed === true;\n selector = options.selector;\n if (options.rotate === false) {\n rorate = '';\n }\n else if (options.rotate === true) {\n rorate = 'auto';\n }\n else if (options.rotate != null) {\n rorate = `${options.rotate}`;\n }\n if (options.timing) {\n timing = options.timing;\n }\n }\n else {\n duration = options;\n reversed = false;\n selector = null;\n }\n duration = duration || 1000;\n const attrs = {\n dur: `${duration}ms`,\n repeatCount: '1',\n calcMode: timing,\n fill: 'freeze',\n };\n if (rorate) {\n attrs.rotate = rorate;\n }\n if (reversed) {\n attrs.keyPoints = '1;0';\n attrs.keyTimes = '0;1';\n }\n if (typeof options === 'object') {\n const { duration, reversed, selector, rotate, timing } = options, others = __rest(options, [\"duration\", \"reversed\", \"selector\", \"rotate\", \"timing\"]);\n Object.keys(others).forEach((key) => {\n attrs[key] = others[key];\n });\n }\n let path;\n if (typeof selector === 'string') {\n path = this.findOne(selector, this.container, this.selectors);\n }\n else {\n // Select connection path automatically.\n path = this.containers.connection\n ? this.containers.connection\n : this.container.querySelector('path');\n }\n if (!(path instanceof SVGPathElement)) {\n throw new Error('Token animation requires a valid connection path.');\n }\n const target = typeof token === 'string' ? this.findOne(token) : token;\n if (target == null) {\n throw new Error('Token animation requires a valid token element.');\n }\n const parent = target.parentNode;\n const revert = () => {\n if (!parent) {\n Dom.remove(target);\n }\n };\n const vToken = Vector.create(target);\n if (!parent) {\n vToken.appendTo(this.graph.view.stage);\n }\n const onComplete = attrs.complete;\n attrs.complete = (e) => {\n revert();\n if (callback) {\n callback();\n }\n if (onComplete) {\n onComplete(e);\n }\n };\n const stop = vToken.animateAlongPath(attrs, path);\n return () => {\n revert();\n stop();\n };\n }\n // #endregion\n getConnection() {\n return this.path != null ? this.path.clone() : null;\n }\n getConnectionPathData() {\n if (this.path == null) {\n return '';\n }\n const cache = this.cache.pathCache;\n if (!ObjectExt.has(cache, 'data')) {\n cache.data = this.path.serialize();\n }\n return cache.data || '';\n }\n getConnectionSubdivisions() {\n if (this.path == null) {\n return null;\n }\n const cache = this.cache.pathCache;\n if (!ObjectExt.has(cache, 'segmentSubdivisions')) {\n cache.segmentSubdivisions = this.path.getSegmentSubdivisions();\n }\n return cache.segmentSubdivisions;\n }\n getConnectionLength() {\n if (this.path == null) {\n return 0;\n }\n const cache = this.cache.pathCache;\n if (!ObjectExt.has(cache, 'length')) {\n cache.length = this.path.length({\n segmentSubdivisions: this.getConnectionSubdivisions(),\n });\n }\n return cache.length;\n }\n getPointAtLength(length) {\n if (this.path == null) {\n return null;\n }\n return this.path.pointAtLength(length, {\n segmentSubdivisions: this.getConnectionSubdivisions(),\n });\n }\n getPointAtRatio(ratio) {\n if (this.path == null) {\n return null;\n }\n if (NumberExt.isPercentage(ratio)) {\n // eslint-disable-next-line\n ratio = parseFloat(ratio) / 100;\n }\n return this.path.pointAt(ratio, {\n segmentSubdivisions: this.getConnectionSubdivisions(),\n });\n }\n getTangentAtLength(length) {\n if (this.path == null) {\n return null;\n }\n return this.path.tangentAtLength(length, {\n segmentSubdivisions: this.getConnectionSubdivisions(),\n });\n }\n getTangentAtRatio(ratio) {\n if (this.path == null) {\n return null;\n }\n return this.path.tangentAt(ratio, {\n segmentSubdivisions: this.getConnectionSubdivisions(),\n });\n }\n getClosestPoint(point) {\n if (this.path == null) {\n return null;\n }\n return this.path.closestPoint(point, {\n segmentSubdivisions: this.getConnectionSubdivisions(),\n });\n }\n getClosestPointLength(point) {\n if (this.path == null) {\n return null;\n }\n return this.path.closestPointLength(point, {\n segmentSubdivisions: this.getConnectionSubdivisions(),\n });\n }\n getClosestPointRatio(point) {\n if (this.path == null) {\n return null;\n }\n return this.path.closestPointNormalizedLength(point, {\n segmentSubdivisions: this.getConnectionSubdivisions(),\n });\n }\n getLabelPosition(x, y, p3, p4) {\n const pos = { distance: 0 };\n // normalize data from the two possible signatures\n let angle = 0;\n let options;\n if (typeof p3 === 'number') {\n angle = p3;\n options = p4;\n }\n else {\n options = p3;\n }\n if (options != null) {\n pos.options = options;\n }\n // identify distance/offset settings\n const isOffsetAbsolute = options && options.absoluteOffset;\n const isDistanceRelative = !(options && options.absoluteDistance);\n const isDistanceAbsoluteReverse = options && options.absoluteDistance && options.reverseDistance;\n // find closest point t\n const path = this.path;\n const pathOptions = {\n segmentSubdivisions: this.getConnectionSubdivisions(),\n };\n const labelPoint = new Point(x, y);\n const t = path.closestPointT(labelPoint, pathOptions);\n // distance\n const totalLength = this.getConnectionLength() || 0;\n let labelDistance = path.lengthAtT(t, pathOptions);\n if (isDistanceRelative) {\n labelDistance = totalLength > 0 ? labelDistance / totalLength : 0;\n }\n if (isDistanceAbsoluteReverse) {\n // fix for end point (-0 => 1)\n labelDistance = -1 * (totalLength - labelDistance) || 1;\n }\n pos.distance = labelDistance;\n // offset\n // use absolute offset if:\n // - options.absoluteOffset is true,\n // - options.absoluteOffset is not true but there is no tangent\n let tangent;\n if (!isOffsetAbsolute)\n tangent = path.tangentAtT(t);\n let labelOffset;\n if (tangent) {\n labelOffset = tangent.pointOffset(labelPoint);\n }\n else {\n const closestPoint = path.pointAtT(t);\n const labelOffsetDiff = labelPoint.diff(closestPoint);\n labelOffset = { x: labelOffsetDiff.x, y: labelOffsetDiff.y };\n }\n pos.offset = labelOffset;\n pos.angle = angle;\n return pos;\n }\n normalizeLabelPosition(pos) {\n if (typeof pos === 'number') {\n return { distance: pos };\n }\n return pos;\n }\n getLabelTransformationMatrix(labelPosition) {\n const pos = this.normalizeLabelPosition(labelPosition);\n const options = pos.options || {};\n const labelAngle = pos.angle || 0;\n const labelDistance = pos.distance;\n const isDistanceRelative = labelDistance > 0 && labelDistance <= 1;\n let labelOffset = 0;\n const offsetCoord = { x: 0, y: 0 };\n const offset = pos.offset;\n if (offset) {\n if (typeof offset === 'number') {\n labelOffset = offset;\n }\n else {\n if (offset.x != null) {\n offsetCoord.x = offset.x;\n }\n if (offset.y != null) {\n offsetCoord.y = offset.y;\n }\n }\n }\n const isOffsetAbsolute = offsetCoord.x !== 0 || offsetCoord.y !== 0 || labelOffset === 0;\n const isKeepGradient = options.keepGradient;\n const isEnsureLegibility = options.ensureLegibility;\n const path = this.path;\n const pathOpt = { segmentSubdivisions: this.getConnectionSubdivisions() };\n const distance = isDistanceRelative\n ? labelDistance * this.getConnectionLength()\n : labelDistance;\n const tangent = path.tangentAtLength(distance, pathOpt);\n let translation;\n let angle = labelAngle;\n if (tangent) {\n if (isOffsetAbsolute) {\n translation = tangent.start;\n translation.translate(offsetCoord);\n }\n else {\n const normal = tangent.clone();\n normal.rotate(-90, tangent.start);\n normal.setLength(labelOffset);\n translation = normal.end;\n }\n if (isKeepGradient) {\n angle = tangent.angle() + labelAngle;\n if (isEnsureLegibility) {\n angle = Angle.normalize(((angle + 90) % 180) - 90);\n }\n }\n }\n else {\n // fallback - the connection has zero length\n translation = path.start;\n if (isOffsetAbsolute) {\n translation.translate(offsetCoord);\n }\n }\n return Dom.createSVGMatrix()\n .translate(translation.x, translation.y)\n .rotate(angle);\n }\n getLabelCoordinates(pos) {\n const matrix = this.getLabelTransformationMatrix(pos);\n return new Point(matrix.e, matrix.f);\n }\n getVertexIndex(x, y) {\n const edge = this.cell;\n const vertices = edge.getVertices();\n const vertexLength = this.getClosestPointLength(new Point(x, y));\n let index = 0;\n if (vertexLength != null) {\n for (const ii = vertices.length; index < ii; index += 1) {\n const currentVertex = vertices[index];\n const currentLength = this.getClosestPointLength(currentVertex);\n if (currentLength != null && vertexLength < currentLength) {\n break;\n }\n }\n }\n return index;\n }\n getEventArgs(e, x, y) {\n const view = this; // eslint-disable-line\n const edge = view.cell;\n const cell = edge;\n if (x == null || y == null) {\n return { e, view, edge, cell };\n }\n return { e, x, y, view, edge, cell };\n }\n notifyUnhandledMouseDown(e, x, y) {\n this.notify('edge:unhandled:mousedown', {\n e,\n x,\n y,\n view: this,\n cell: this.cell,\n edge: this.cell,\n });\n }\n notifyMouseDown(e, x, y) {\n super.onMouseDown(e, x, y);\n this.notify('edge:mousedown', this.getEventArgs(e, x, y));\n }\n notifyMouseMove(e, x, y) {\n super.onMouseMove(e, x, y);\n this.notify('edge:mousemove', this.getEventArgs(e, x, y));\n }\n notifyMouseUp(e, x, y) {\n super.onMouseUp(e, x, y);\n this.notify('edge:mouseup', this.getEventArgs(e, x, y));\n }\n onClick(e, x, y) {\n super.onClick(e, x, y);\n this.notify('edge:click', this.getEventArgs(e, x, y));\n }\n onDblClick(e, x, y) {\n super.onDblClick(e, x, y);\n this.notify('edge:dblclick', this.getEventArgs(e, x, y));\n }\n onContextMenu(e, x, y) {\n super.onContextMenu(e, x, y);\n this.notify('edge:contextmenu', this.getEventArgs(e, x, y));\n }\n onMouseDown(e, x, y) {\n this.notifyMouseDown(e, x, y);\n const className = e.target.getAttribute('class');\n switch (className) {\n case 'vertex': {\n this.startVertexDragging(e, x, y);\n return;\n }\n case 'vertex-remove':\n case 'vertex-remove-area': {\n this.handleVertexRemoving(e, x, y);\n return;\n }\n case 'connection':\n case 'connection-wrap': {\n this.handleVertexAdding(e, x, y);\n return;\n }\n case 'arrowhead': {\n this.startArrowheadDragging(e, x, y);\n return;\n }\n case 'source-marker':\n case 'target-marker': {\n this.notifyUnhandledMouseDown(e, x, y);\n return;\n }\n default:\n break;\n }\n this.startEdgeDragging(e, x, y);\n }\n onMouseMove(e, x, y) {\n const data = this.getEventData(e);\n switch (data.action) {\n case 'drag-vertex': {\n this.dragVertex(e, x, y);\n break;\n }\n case 'drag-label': {\n this.dragLabel(e, x, y);\n break;\n }\n case 'drag-arrowhead': {\n this.dragArrowhead(e, x, y);\n break;\n }\n case 'drag-edge': {\n this.dragEdge(e, x, y);\n break;\n }\n default:\n break;\n }\n this.notifyMouseMove(e, x, y);\n return data;\n }\n onMouseUp(e, x, y) {\n const data = this.getEventData(e);\n switch (data.action) {\n case 'drag-vertex': {\n this.stopVertexDragging(e, x, y);\n break;\n }\n case 'drag-label': {\n this.stopLabelDragging(e, x, y);\n break;\n }\n case 'drag-arrowhead': {\n this.stopArrowheadDragging(e, x, y);\n break;\n }\n case 'drag-edge': {\n this.stopEdgeDragging(e, x, y);\n break;\n }\n default:\n break;\n }\n this.notifyMouseUp(e, x, y);\n this.checkMouseleave(e);\n return data;\n }\n onMouseOver(e) {\n super.onMouseOver(e);\n this.notify('edge:mouseover', this.getEventArgs(e));\n }\n onMouseOut(e) {\n super.onMouseOut(e);\n this.notify('edge:mouseout', this.getEventArgs(e));\n }\n onMouseEnter(e) {\n super.onMouseEnter(e);\n this.notify('edge:mouseenter', this.getEventArgs(e));\n }\n onMouseLeave(e) {\n super.onMouseLeave(e);\n this.notify('edge:mouseleave', this.getEventArgs(e));\n }\n onMouseWheel(e, x, y, delta) {\n super.onMouseWheel(e, x, y, delta);\n this.notify('edge:mousewheel', Object.assign({ delta }, this.getEventArgs(e, x, y)));\n }\n onCustomEvent(e, name, x, y) {\n // For default edge tool\n const tool = Dom.findParentByClass(e.target, 'edge-tool', this.container);\n if (tool) {\n e.stopPropagation(); // no further action to be executed\n if (this.can('useEdgeTools')) {\n if (name === 'edge:remove') {\n this.cell.remove({ ui: true });\n return;\n }\n this.notify('edge:customevent', Object.assign({ name }, this.getEventArgs(e, x, y)));\n }\n this.notifyMouseDown(e, x, y);\n }\n else {\n this.notify('edge:customevent', Object.assign({ name }, this.getEventArgs(e, x, y)));\n super.onCustomEvent(e, name, x, y);\n }\n }\n onLabelMouseDown(e, x, y) {\n this.notifyMouseDown(e, x, y);\n this.startLabelDragging(e, x, y);\n const stopPropagation = this.getEventData(e).stopPropagation;\n if (stopPropagation) {\n e.stopPropagation();\n }\n }\n // #region drag edge\n startEdgeDragging(e, x, y) {\n if (!this.can('edgeMovable')) {\n this.notifyUnhandledMouseDown(e, x, y);\n return;\n }\n this.setEventData(e, {\n x,\n y,\n moving: false,\n action: 'drag-edge',\n });\n }\n dragEdge(e, x, y) {\n const data = this.getEventData(e);\n if (!data.moving) {\n data.moving = true;\n this.addClass('edge-moving');\n this.notify('edge:move', {\n e,\n x,\n y,\n view: this,\n cell: this.cell,\n edge: this.cell,\n });\n }\n this.cell.translate(x - data.x, y - data.y, { ui: true });\n this.setEventData(e, { x, y });\n this.notify('edge:moving', {\n e,\n x,\n y,\n view: this,\n cell: this.cell,\n edge: this.cell,\n });\n }\n stopEdgeDragging(e, x, y) {\n const data = this.getEventData(e);\n if (data.moving) {\n this.removeClass('edge-moving');\n this.notify('edge:moved', {\n e,\n x,\n y,\n view: this,\n cell: this.cell,\n edge: this.cell,\n });\n }\n data.moving = false;\n }\n // #endregion\n // #region drag arrowhead\n prepareArrowheadDragging(type, options) {\n const magnet = this.getTerminalMagnet(type);\n const data = {\n action: 'drag-arrowhead',\n x: options.x,\n y: options.y,\n isNewEdge: options.isNewEdge === true,\n terminalType: type,\n initialMagnet: magnet,\n initialTerminal: ObjectExt.clone(this.cell[type]),\n fallbackAction: options.fallbackAction || 'revert',\n getValidateConnectionArgs: this.createValidateConnectionArgs(type),\n options: options.options,\n };\n this.beforeArrowheadDragging(data);\n return data;\n }\n createValidateConnectionArgs(type) {\n const args = [];\n args[4] = type;\n args[5] = this;\n let opposite;\n let i = 0;\n let j = 0;\n if (type === 'source') {\n i = 2;\n opposite = 'target';\n }\n else {\n j = 2;\n opposite = 'source';\n }\n const terminal = this.cell[opposite];\n const cellId = terminal.cell;\n if (cellId) {\n let magnet;\n const view = (args[i] = this.graph.renderer.findViewByCell(cellId));\n if (view) {\n magnet = view.getMagnetFromEdgeTerminal(terminal);\n if (magnet === view.container) {\n magnet = undefined;\n }\n }\n args[i + 1] = magnet;\n }\n return (cellView, magnet) => {\n args[j] = cellView;\n args[j + 1] = cellView.container === magnet ? undefined : magnet;\n return args;\n };\n }\n beforeArrowheadDragging(data) {\n data.zIndex = this.cell.zIndex;\n this.cell.toFront();\n const style = this.container.style;\n data.pointerEvents = style.pointerEvents;\n style.pointerEvents = 'none';\n if (this.graph.options.connecting.highlight) {\n this.highlightAvailableMagnets(data);\n }\n }\n afterArrowheadDragging(data) {\n if (data.zIndex != null) {\n this.cell.setZIndex(data.zIndex, { ui: true });\n data.zIndex = null;\n }\n const container = this.container;\n container.style.pointerEvents = data.pointerEvents || '';\n if (this.graph.options.connecting.highlight) {\n this.unhighlightAvailableMagnets(data);\n }\n }\n arrowheadDragging(target, x, y, data) {\n data.x = x;\n data.y = y;\n // Checking views right under the pointer\n if (data.currentTarget !== target) {\n // Unhighlight the previous view under pointer if there was one.\n if (data.currentMagnet && data.currentView) {\n data.currentView.unhighlight(data.currentMagnet, {\n type: 'magnetAdsorbed',\n });\n }\n data.currentView = this.graph.renderer.findViewByElem(target);\n if (data.currentView) {\n // If we found a view that is under the pointer, we need to find\n // the closest magnet based on the real target element of the event.\n data.currentMagnet = data.currentView.findMagnet(target);\n if (data.currentMagnet &&\n this.graph.hook.validateConnection(...data.getValidateConnectionArgs(data.currentView, data.currentMagnet), data.currentView.getEdgeTerminal(data.currentMagnet, x, y, this.cell, data.terminalType))) {\n data.currentView.highlight(data.currentMagnet, {\n type: 'magnetAdsorbed',\n });\n }\n else {\n // This type of connection is not valid. Disregard this magnet.\n data.currentMagnet = null;\n }\n }\n else {\n // Make sure we'll unset previous magnet.\n data.currentMagnet = null;\n }\n }\n data.currentTarget = target;\n this.cell.prop(data.terminalType, { x, y }, Object.assign(Object.assign({}, data.options), { ui: true }));\n }\n arrowheadDragged(data, x, y) {\n const view = data.currentView;\n const magnet = data.currentMagnet;\n if (!magnet || !view) {\n return;\n }\n view.unhighlight(magnet, { type: 'magnetAdsorbed' });\n const type = data.terminalType;\n const terminal = view.getEdgeTerminal(magnet, x, y, this.cell, type);\n this.cell.setTerminal(type, terminal, { ui: true });\n }\n snapArrowhead(x, y, data) {\n const graph = this.graph;\n const snap = graph.options.connecting.snap;\n const radius = (typeof snap === 'object' && snap.radius) || 50;\n const views = graph.renderer.findViewsInArea({\n x: x - radius,\n y: y - radius,\n width: 2 * radius,\n height: 2 * radius,\n });\n const prevView = data.closestView || null;\n const prevMagnet = data.closestMagnet || null;\n data.closestView = null;\n data.closestMagnet = null;\n let distance;\n let minDistance = Number.MAX_SAFE_INTEGER;\n const pos = new Point(x, y);\n views.forEach((view) => {\n if (view.container.getAttribute('magnet') !== 'false') {\n // Find distance from the center of the cell to pointer coordinates\n distance = view.cell.getBBox().getCenter().distance(pos);\n // the connection is looked up in a circle area by `distance < r`\n if (distance < radius && distance < minDistance) {\n if (prevMagnet === view.container ||\n graph.hook.validateConnection(...data.getValidateConnectionArgs(view, null), view.getEdgeTerminal(view.container, x, y, this.cell, data.terminalType))) {\n minDistance = distance;\n data.closestView = view;\n data.closestMagnet = view.container;\n }\n }\n }\n view.container.querySelectorAll('[magnet]').forEach((magnet) => {\n if (magnet.getAttribute('magnet') !== 'false') {\n const bbox = view.getBBoxOfElement(magnet);\n distance = pos.distance(bbox.getCenter());\n if (distance < radius && distance < minDistance) {\n if (prevMagnet === magnet ||\n graph.hook.validateConnection(...data.getValidateConnectionArgs(view, magnet), view.getEdgeTerminal(magnet, x, y, this.cell, data.terminalType))) {\n minDistance = distance;\n data.closestView = view;\n data.closestMagnet = magnet;\n }\n }\n }\n });\n });\n let terminal;\n const type = data.terminalType;\n const closestView = data.closestView;\n const closestMagnet = data.closestMagnet;\n const changed = prevMagnet !== closestMagnet;\n if (prevView && changed) {\n prevView.unhighlight(prevMagnet, {\n type: 'magnetAdsorbed',\n });\n }\n if (closestView) {\n if (!changed) {\n return;\n }\n closestView.highlight(closestMagnet, {\n type: 'magnetAdsorbed',\n });\n terminal = closestView.getEdgeTerminal(closestMagnet, x, y, this.cell, type);\n }\n else {\n terminal = { x, y };\n }\n this.cell.setTerminal(type, terminal, {}, Object.assign(Object.assign({}, data.options), { ui: true }));\n }\n snapArrowheadEnd(data) {\n // Finish off link snapping.\n // Everything except view unhighlighting was already done on pointermove.\n const closestView = data.closestView;\n const closestMagnet = data.closestMagnet;\n if (closestView && closestMagnet) {\n closestView.unhighlight(closestMagnet, {\n type: 'magnetAdsorbed',\n });\n data.currentMagnet = closestView.findMagnet(closestMagnet);\n }\n data.closestView = null;\n data.closestMagnet = null;\n }\n finishEmbedding(data) {\n // Resets parent of the edge if embedding is enabled\n if (this.graph.options.embedding.enabled && this.cell.updateParent()) {\n // Make sure we don't reverse to the original 'z' index\n data.zIndex = null;\n }\n }\n fallbackConnection(data) {\n switch (data.fallbackAction) {\n case 'remove':\n this.cell.remove({ ui: true });\n break;\n case 'revert':\n default:\n this.cell.prop(data.terminalType, data.initialTerminal, {\n ui: true,\n });\n break;\n }\n }\n notifyConnectionEvent(data, e) {\n const terminalType = data.terminalType;\n const initialTerminal = data.initialTerminal;\n const currentTerminal = this.cell[terminalType];\n const changed = currentTerminal && !Edge.equalTerminals(initialTerminal, currentTerminal);\n if (changed) {\n const graph = this.graph;\n const previous = initialTerminal;\n const previousCell = previous.cell\n ? graph.getCellById(previous.cell)\n : null;\n const previousPort = previous.port;\n const previousView = previousCell\n ? graph.findViewByCell(previousCell)\n : null;\n const previousPoint = previousCell || data.isNewEdge\n ? null\n : Point.create(initialTerminal).toJSON();\n const current = currentTerminal;\n const currentCell = current.cell ? graph.getCellById(current.cell) : null;\n const currentPort = current.port;\n const currentView = currentCell ? graph.findViewByCell(currentCell) : null;\n const currentPoint = currentCell\n ? null\n : Point.create(currentTerminal).toJSON();\n this.notify('edge:connected', {\n e,\n previousCell,\n previousPort,\n previousView,\n previousPoint,\n currentCell,\n currentView,\n currentPort,\n currentPoint,\n previousMagnet: data.initialMagnet,\n currentMagnet: data.currentMagnet,\n edge: this.cell,\n view: this,\n type: terminalType,\n isNew: data.isNewEdge,\n });\n }\n }\n highlightAvailableMagnets(data) {\n const graph = this.graph;\n const cells = graph.model.getCells();\n data.marked = {};\n for (let i = 0, ii = cells.length; i < ii; i += 1) {\n const view = graph.renderer.findViewByCell(cells[i]);\n if (!view) {\n continue;\n }\n const magnets = Array.prototype.slice.call(view.container.querySelectorAll('[magnet]'));\n if (view.container.getAttribute('magnet') !== 'false') {\n magnets.push(view.container);\n }\n const availableMagnets = magnets.filter((magnet) => graph.hook.validateConnection(...data.getValidateConnectionArgs(view, magnet), view.getEdgeTerminal(magnet, data.x, data.y, this.cell, data.terminalType)));\n if (availableMagnets.length > 0) {\n // highlight all available magnets\n for (let j = 0, jj = availableMagnets.length; j < jj; j += 1) {\n view.highlight(availableMagnets[j], { type: 'magnetAvailable' });\n }\n // highlight the entire view\n view.highlight(null, { type: 'nodeAvailable' });\n data.marked[view.cell.id] = availableMagnets;\n }\n }\n }\n unhighlightAvailableMagnets(data) {\n const marked = data.marked || {};\n Object.keys(marked).forEach((id) => {\n const view = this.graph.renderer.findViewByCell(id);\n if (view) {\n const magnets = marked[id];\n magnets.forEach((magnet) => {\n view.unhighlight(magnet, { type: 'magnetAvailable' });\n });\n view.unhighlight(null, { type: 'nodeAvailable' });\n }\n });\n data.marked = null;\n }\n startArrowheadDragging(e, x, y) {\n if (!this.can('arrowheadMovable')) {\n this.notifyUnhandledMouseDown(e, x, y);\n return;\n }\n const elem = e.target;\n const type = elem.getAttribute('data-terminal');\n const data = this.prepareArrowheadDragging(type, { x, y });\n this.setEventData(e, data);\n }\n dragArrowhead(e, x, y) {\n const data = this.getEventData(e);\n if (this.graph.options.connecting.snap) {\n this.snapArrowhead(x, y, data);\n }\n else {\n this.arrowheadDragging(this.getEventTarget(e), x, y, data);\n }\n }\n stopArrowheadDragging(e, x, y) {\n const graph = this.graph;\n const data = this.getEventData(e);\n if (graph.options.connecting.snap) {\n this.snapArrowheadEnd(data);\n }\n else {\n this.arrowheadDragged(data, x, y);\n }\n const valid = graph.hook.validateEdge(this.cell, data.terminalType, data.initialTerminal);\n if (valid) {\n this.finishEmbedding(data);\n this.notifyConnectionEvent(data, e);\n }\n else {\n // If the changed edge is not allowed, revert to its previous state.\n this.fallbackConnection(data);\n }\n this.afterArrowheadDragging(data);\n }\n // #endregion\n // #region drag lable\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n startLabelDragging(e, x, y) {\n if (this.can('edgeLabelMovable')) {\n const target = e.currentTarget;\n const index = parseInt(target.getAttribute('data-index'), 10);\n const positionAngle = this.getLabelPositionAngle(index);\n const labelPositionArgs = this.getLabelPositionArgs(index);\n const defaultLabelPositionArgs = this.getDefaultLabelPositionArgs();\n const positionArgs = this.mergeLabelPositionArgs(labelPositionArgs, defaultLabelPositionArgs);\n this.setEventData(e, {\n index,\n positionAngle,\n positionArgs,\n stopPropagation: true,\n action: 'drag-label',\n });\n }\n else {\n // If labels can't be dragged no default action is triggered.\n this.setEventData(e, { stopPropagation: true });\n }\n this.graph.view.delegateDragEvents(e, this);\n }\n dragLabel(e, x, y) {\n const data = this.getEventData(e);\n const originLabel = this.cell.getLabelAt(data.index);\n const label = ObjectExt.merge({}, originLabel, {\n position: this.getLabelPosition(x, y, data.positionAngle, data.positionArgs),\n });\n this.cell.setLabelAt(data.index, label);\n }\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n stopLabelDragging(e, x, y) { }\n // #endregion\n // #region drag vertex\n handleVertexAdding(e, x, y) {\n if (!this.can('vertexAddable')) {\n this.notifyUnhandledMouseDown(e, x, y);\n return;\n }\n // Store the index at which the new vertex has just been placed.\n // We'll be update the very same vertex position in `pointermove()`.\n const index = this.addVertex({ x, y }, { ui: true });\n this.setEventData(e, {\n index,\n action: 'drag-vertex',\n });\n }\n handleVertexRemoving(e, x, y) {\n if (!this.can('vertexDeletable')) {\n this.notifyUnhandledMouseDown(e, x, y);\n return;\n }\n const target = e.target;\n const index = parseInt(target.getAttribute('idx'), 10);\n this.cell.removeVertexAt(index);\n }\n startVertexDragging(e, x, y) {\n if (!this.can('vertexMovable')) {\n this.notifyUnhandledMouseDown(e, x, y);\n return;\n }\n const target = e.target;\n const index = parseInt(target.getAttribute('idx'), 10);\n this.setEventData(e, {\n index,\n action: 'drag-vertex',\n });\n }\n dragVertex(e, x, y) {\n const data = this.getEventData(e);\n this.cell.setVertexAt(data.index, { x, y }, { ui: true });\n }\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n stopVertexDragging(e, x, y) { }\n}\n(function (EdgeView) {\n EdgeView.toStringTag = `X6.${EdgeView.name}`;\n function isEdgeView(instance) {\n if (instance == null) {\n return false;\n }\n if (instance instanceof EdgeView) {\n return true;\n }\n const tag = instance[Symbol.toStringTag];\n const view = instance;\n if ((tag == null || tag === EdgeView.toStringTag) &&\n typeof view.isNodeView === 'function' &&\n typeof view.isEdgeView === 'function' &&\n typeof view.confirmUpdate === 'function' &&\n typeof view.update === 'function' &&\n typeof view.getConnection === 'function') {\n return true;\n }\n return false;\n }\n EdgeView.isEdgeView = isEdgeView;\n})(EdgeView || (EdgeView = {}));\nEdgeView.config({\n isSvgElement: true,\n priority: 1,\n bootstrap: ['render', 'source', 'target'],\n actions: {\n view: ['render'],\n markup: ['render'],\n attrs: ['update'],\n source: ['source', 'update'],\n target: ['target', 'update'],\n router: ['update'],\n connector: ['update'],\n labels: ['labels'],\n defaultLabel: ['labels'],\n vertices: ['vertices', 'update'],\n vertexMarkup: ['vertices'],\n toolMarkup: ['tools'],\n tools: ['widget'],\n },\n shortLength: 105,\n longLength: 155,\n toolsOffset: 40,\n doubleTools: false,\n doubleToolsOffset: 65,\n sampleInterval: 50,\n});\nEdgeView.registry.register('edge', EdgeView, true);\n//# sourceMappingURL=edge.js.map","import { Util, Config } from '../global';\nimport { ArrayExt, FunctionExt, Dom, Vector } from '../util';\nimport { Rectangle, Point } from '../geometry';\nimport { Cell } from '../model/cell';\nimport { CellView } from './cell';\nimport { Markup } from './markup';\nexport class NodeView extends CellView {\n constructor() {\n super(...arguments);\n this.scalableNode = null;\n this.rotatableNode = null;\n this.scalableSelector = 'scalable';\n this.rotatableSelector = 'rotatable';\n this.defaultPortMarkup = Markup.getPortMarkup();\n this.defaultPortLabelMarkup = Markup.getPortLabelMarkup();\n this.defaultPortContainerMarkup = Markup.getPortContainerMarkup();\n this.portsCache = {};\n // #endregion\n }\n get [Symbol.toStringTag]() {\n return NodeView.toStringTag;\n }\n getContainerClassName() {\n const classList = [\n super.getContainerClassName(),\n this.prefixClassName('node'),\n ];\n if (!this.can('nodeMovable')) {\n classList.push(this.prefixClassName('node-immovable'));\n }\n return classList.join(' ');\n }\n updateClassName(e) {\n const target = e.target;\n if (target.hasAttribute('magnet')) {\n // port\n const className = this.prefixClassName('port-unconnectable');\n if (this.can('magnetConnectable')) {\n Dom.removeClass(target, className);\n }\n else {\n Dom.addClass(target, className);\n }\n }\n else {\n // node\n const className = this.prefixClassName('node-immovable');\n if (this.can('nodeMovable')) {\n this.removeClass(className);\n }\n else {\n this.addClass(className);\n }\n }\n }\n isNodeView() {\n return true;\n }\n confirmUpdate(flag, options = {}) {\n let ret = flag;\n if (this.hasAction(ret, 'ports')) {\n this.removePorts();\n this.cleanPortsCache();\n }\n if (this.hasAction(ret, 'render')) {\n this.render();\n ret = this.removeAction(ret, [\n 'render',\n 'update',\n 'resize',\n 'translate',\n 'rotate',\n 'ports',\n 'tools',\n ]);\n }\n else {\n ret = this.handleAction(ret, 'resize', () => this.resize(options), 'update');\n ret = this.handleAction(ret, 'update', () => this.update(), \n // `update()` will render ports when useCSSSelectors are enabled\n Config.useCSSSelector ? 'ports' : null);\n ret = this.handleAction(ret, 'translate', () => this.translate());\n ret = this.handleAction(ret, 'rotate', () => this.rotate());\n ret = this.handleAction(ret, 'ports', () => this.renderPorts());\n ret = this.handleAction(ret, 'tools', () => this.renderTools());\n }\n return ret;\n }\n update(partialAttrs) {\n this.cleanCache();\n // When CSS selector strings are used, make sure no rule matches port nodes.\n if (Config.useCSSSelector) {\n this.removePorts();\n }\n const node = this.cell;\n const size = node.getSize();\n const attrs = node.getAttrs();\n this.updateAttrs(this.container, attrs, {\n attrs: partialAttrs === attrs ? null : partialAttrs,\n rootBBox: new Rectangle(0, 0, size.width, size.height),\n selectors: this.selectors,\n scalableNode: this.scalableNode,\n rotatableNode: this.rotatableNode,\n });\n if (Config.useCSSSelector) {\n this.renderPorts();\n }\n }\n renderMarkup() {\n const markup = this.cell.markup;\n if (markup) {\n if (typeof markup === 'string') {\n return this.renderStringMarkup(markup);\n }\n return this.renderJSONMarkup(markup);\n }\n throw new TypeError('Invalid node markup.');\n }\n renderJSONMarkup(markup) {\n const ret = this.parseJSONMarkup(markup, this.container);\n const one = (elems) => Array.isArray(elems) ? elems[0] : elems;\n this.selectors = ret.selectors;\n this.rotatableNode = one(this.selectors[this.rotatableSelector]);\n this.scalableNode = one(this.selectors[this.scalableSelector]);\n this.container.appendChild(ret.fragment);\n }\n renderStringMarkup(markup) {\n Dom.append(this.container, Vector.toNodes(Vector.createVectors(markup)));\n this.rotatableNode = Dom.findOne(this.container, `.${this.rotatableSelector}`);\n this.scalableNode = Dom.findOne(this.container, `.${this.scalableSelector}`);\n this.selectors = {};\n if (this.rootSelector) {\n this.selectors[this.rootSelector] = this.container;\n }\n }\n render() {\n this.empty();\n this.renderMarkup();\n if (this.scalableNode) {\n // Double update is necessary for elements with the scalable group only\n // Note the `resize()` triggers the other `update`.\n this.update();\n }\n this.resize();\n if (this.rotatableNode) {\n this.rotate();\n this.translate();\n }\n else {\n this.updateTransform();\n }\n if (!Config.useCSSSelector) {\n this.renderPorts();\n }\n this.renderTools();\n return this;\n }\n resize(opt = {}) {\n if (this.scalableNode) {\n return this.updateSize(opt);\n }\n if (this.cell.getAngle()) {\n this.rotate();\n }\n this.update();\n }\n translate() {\n if (this.rotatableNode) {\n return this.updateTranslation();\n }\n this.updateTransform();\n }\n rotate() {\n if (this.rotatableNode) {\n this.updateRotation();\n // It's necessary to call the update for the nodes outside\n // the rotatable group referencing nodes inside the group\n this.update();\n return;\n }\n this.updateTransform();\n }\n getTranslationString() {\n const position = this.cell.getPosition();\n return `translate(${position.x},${position.y})`;\n }\n getRotationString() {\n const angle = this.cell.getAngle();\n if (angle) {\n const size = this.cell.getSize();\n return `rotate(${angle},${size.width / 2},${size.height / 2})`;\n }\n }\n updateTransform() {\n let transform = this.getTranslationString();\n const rot = this.getRotationString();\n if (rot) {\n transform += ` ${rot}`;\n }\n this.container.setAttribute('transform', transform);\n }\n updateRotation() {\n if (this.rotatableNode != null) {\n const transform = this.getRotationString();\n if (transform != null) {\n this.rotatableNode.setAttribute('transform', transform);\n }\n else {\n this.rotatableNode.removeAttribute('transform');\n }\n }\n }\n updateTranslation() {\n this.container.setAttribute('transform', this.getTranslationString());\n }\n updateSize(opt = {}) {\n const cell = this.cell;\n const size = cell.getSize();\n const angle = cell.getAngle();\n const scalableNode = this.scalableNode;\n // Getting scalable group's bbox.\n // Due to a bug in webkit's native SVG .getBBox implementation, the\n // bbox of groups with path children includes the paths' control points.\n // To work around the issue, we need to check whether there are any path\n // elements inside the scalable group.\n let recursive = false;\n if (scalableNode.getElementsByTagName('path').length > 0) {\n // If scalable has at least one descendant that is a path, we need\n // toswitch to recursive bbox calculation. Otherwise, group bbox\n // calculation works and so we can use the (faster) native function.\n recursive = true;\n }\n const scalableBBox = Dom.getBBox(scalableNode, { recursive });\n // Make sure `scalableBbox.width` and `scalableBbox.height` are not zero\n // which can happen if the element does not have any content.\n const sx = size.width / (scalableBBox.width || 1);\n const sy = size.height / (scalableBBox.height || 1);\n scalableNode.setAttribute('transform', `scale(${sx},${sy})`);\n // Now the interesting part. The goal is to be able to store the object geometry via just `x`, `y`, `angle`, `width` and `height`\n // Order of transformations is significant but we want to reconstruct the object always in the order:\n // resize(), rotate(), translate() no matter of how the object was transformed. For that to work,\n // we must adjust the `x` and `y` coordinates of the object whenever we resize it (because the origin of the\n // rotation changes). The new `x` and `y` coordinates are computed by canceling the previous rotation\n // around the center of the resized object (which is a different origin then the origin of the previous rotation)\n // and getting the top-left corner of the resulting object. Then we clean up the rotation back to what it originally was.\n // Cancel the rotation but now around a different origin, which is the center of the scaled object.\n const rotatableNode = this.rotatableNode;\n if (rotatableNode != null) {\n const transform = rotatableNode.getAttribute('transform');\n if (transform) {\n rotatableNode.setAttribute('transform', `${transform} rotate(${-angle},${size.width / 2},${size.height / 2})`);\n const rotatableBBox = Dom.getBBox(scalableNode, {\n target: this.graph.view.stage,\n });\n // Store new x, y and perform rotate() again against the new rotation origin.\n cell.prop('position', { x: rotatableBBox.x, y: rotatableBBox.y }, Object.assign({ updated: true }, opt));\n this.translate();\n this.rotate();\n }\n }\n // Update must always be called on non-rotated element. Otherwise,\n // relative positioning would work with wrong (rotated) bounding boxes.\n this.update();\n }\n // #region ports\n findPortElem(portId, selector) {\n const cache = portId ? this.portsCache[portId] : null;\n if (!cache) {\n return null;\n }\n const portRoot = cache.portContentElement;\n const portSelectors = cache.portContentSelectors || {};\n return this.findOne(selector, portRoot, portSelectors);\n }\n initializePorts() {\n this.cleanPortsCache();\n }\n refreshPorts() {\n this.removePorts();\n this.cleanPortsCache();\n this.renderPorts();\n }\n cleanPortsCache() {\n this.portsCache = {};\n }\n removePorts() {\n Object.keys(this.portsCache).forEach((portId) => {\n const cached = this.portsCache[portId];\n Dom.remove(cached.portElement);\n });\n }\n renderPorts() {\n const container = this.getPortsContainer();\n // References to rendered elements without z-index\n const references = [];\n container.childNodes.forEach((child) => {\n references.push(child);\n });\n const portsGropsByZ = ArrayExt.groupBy(this.cell.getParsedPorts(), 'zIndex');\n const autoZIndexKey = 'auto';\n // render non-z first\n if (portsGropsByZ[autoZIndexKey]) {\n portsGropsByZ[autoZIndexKey].forEach((port) => {\n const portElement = this.getPortElement(port);\n container.append(portElement);\n references.push(portElement);\n });\n }\n Object.keys(portsGropsByZ).forEach((key) => {\n if (key !== autoZIndexKey) {\n const zIndex = parseInt(key, 10);\n this.appendPorts(portsGropsByZ[key], zIndex, references);\n }\n });\n this.updatePorts();\n }\n getPortsContainer() {\n return this.rotatableNode || this.container;\n }\n appendPorts(ports, zIndex, refs) {\n const elems = ports.map((p) => this.getPortElement(p));\n if (refs[zIndex] || zIndex < 0) {\n Dom.before(refs[Math.max(zIndex, 0)], elems);\n }\n else {\n Dom.append(this.getPortsContainer(), elems);\n }\n }\n getPortElement(port) {\n const cached = this.portsCache[port.id];\n if (cached) {\n return cached.portElement;\n }\n return this.createPortElement(port);\n }\n createPortElement(port) {\n let renderResult = Markup.renderMarkup(this.getPortContainerMarkup());\n const portElement = renderResult.elem;\n if (portElement == null) {\n throw new Error('Invalid port container markup.');\n }\n renderResult = Markup.renderMarkup(this.getPortMarkup(port));\n const portContentElement = renderResult.elem;\n const portContentSelectors = renderResult.selectors;\n if (portContentElement == null) {\n throw new Error('Invalid port markup.');\n }\n this.setAttrs({\n port: port.id,\n 'port-group': port.group,\n }, portContentElement);\n renderResult = Markup.renderMarkup(this.getPortLabelMarkup(port.label));\n const portLabelElement = renderResult.elem;\n const portLabelSelectors = renderResult.selectors;\n if (portLabelElement == null) {\n throw new Error('Invalid port label markup.');\n }\n let portSelectors;\n if (portContentSelectors && portLabelSelectors) {\n // eslint-disable-next-line\n for (const key in portLabelSelectors) {\n if (portContentSelectors[key] && key !== this.rootSelector) {\n throw new Error('Selectors within port must be unique.');\n }\n }\n portSelectors = Object.assign(Object.assign({}, portContentSelectors), portLabelSelectors);\n }\n else {\n portSelectors = portContentSelectors || portLabelSelectors;\n }\n Dom.addClass(portElement, 'x6-port');\n Dom.addClass(portContentElement, 'x6-port-body');\n Dom.addClass(portLabelElement, 'x6-port-label');\n portElement.appendChild(portContentElement);\n portElement.appendChild(portLabelElement);\n this.portsCache[port.id] = {\n portElement,\n portSelectors,\n portLabelElement,\n portLabelSelectors,\n portContentElement,\n portContentSelectors,\n };\n this.graph.hook.onPortRendered({\n port,\n node: this.cell,\n container: portElement,\n selectors: portSelectors,\n labelContainer: portLabelElement,\n labelSelectors: portLabelSelectors,\n contentContainer: portContentElement,\n contentSelectors: portContentSelectors,\n });\n return portElement;\n }\n updatePorts() {\n // Layout ports without group\n this.updatePortGroup();\n // Layout ports with explicit group\n const groups = this.cell.getParsedGroups();\n Object.keys(groups).forEach((groupName) => this.updatePortGroup(groupName));\n }\n updatePortGroup(groupName) {\n const bbox = Rectangle.fromSize(this.cell.getSize());\n const metrics = this.cell.getPortsLayoutByGroup(groupName, bbox);\n for (let i = 0, n = metrics.length; i < n; i += 1) {\n const metric = metrics[i];\n const portId = metric.portId;\n const cached = this.portsCache[portId] || {};\n const portLayout = metric.portLayout;\n this.applyPortTransform(cached.portElement, portLayout);\n if (metric.portAttrs != null) {\n const options = {\n selectors: cached.portSelectors || {},\n };\n if (metric.portSize) {\n options.rootBBox = Rectangle.fromSize(metric.portSize);\n }\n this.updateAttrs(cached.portElement, metric.portAttrs, options);\n }\n const labelLayout = metric.labelLayout;\n if (labelLayout) {\n this.applyPortTransform(cached.portLabelElement, labelLayout, -(portLayout.angle || 0));\n if (labelLayout.attrs) {\n const options = {\n selectors: cached.portLabelSelectors || {},\n };\n if (metric.labelSize) {\n options.rootBBox = Rectangle.fromSize(metric.labelSize);\n }\n this.updateAttrs(cached.portLabelElement, labelLayout.attrs, options);\n }\n }\n }\n }\n applyPortTransform(element, layout, initialAngle = 0) {\n const angle = layout.angle;\n const position = layout.position;\n const matrix = Dom.createSVGMatrix()\n .rotate(initialAngle)\n .translate(position.x || 0, position.y || 0)\n .rotate(angle || 0);\n Dom.transform(element, matrix, { absolute: true });\n }\n getPortContainerMarkup() {\n return this.cell.getPortContainerMarkup() || this.defaultPortContainerMarkup;\n }\n getPortMarkup(port) {\n return port.markup || this.cell.portMarkup || this.defaultPortMarkup;\n }\n getPortLabelMarkup(label) {\n return (label.markup || this.cell.portLabelMarkup || this.defaultPortLabelMarkup);\n }\n getEventArgs(e, x, y) {\n const view = this; // eslint-disable-line\n const node = view.cell;\n const cell = node;\n if (x == null || y == null) {\n return { e, view, node, cell };\n }\n return { e, x, y, view, node, cell };\n }\n notifyMouseDown(e, x, y) {\n super.onMouseDown(e, x, y);\n this.notify('node:mousedown', this.getEventArgs(e, x, y));\n }\n notifyMouseMove(e, x, y) {\n super.onMouseMove(e, x, y);\n this.notify('node:mousemove', this.getEventArgs(e, x, y));\n }\n notifyMouseUp(e, x, y) {\n super.onMouseUp(e, x, y);\n this.notify('node:mouseup', this.getEventArgs(e, x, y));\n }\n onClick(e, x, y) {\n super.onClick(e, x, y);\n this.notify('node:click', this.getEventArgs(e, x, y));\n }\n onDblClick(e, x, y) {\n super.onDblClick(e, x, y);\n this.notify('node:dblclick', this.getEventArgs(e, x, y));\n }\n onContextMenu(e, x, y) {\n super.onContextMenu(e, x, y);\n this.notify('node:contextmenu', this.getEventArgs(e, x, y));\n }\n onMouseDown(e, x, y) {\n if (this.isPropagationStopped(e)) {\n return;\n }\n this.notifyMouseDown(e, x, y);\n this.startNodeDragging(e, x, y);\n }\n onMouseMove(e, x, y) {\n const data = this.getEventData(e);\n const action = data.action;\n if (action === 'magnet') {\n this.dragMagnet(e, x, y);\n }\n else {\n if (action === 'move') {\n const meta = data;\n const view = meta.targetView || this;\n view.dragNode(e, x, y);\n view.notify('node:moving', {\n e,\n x,\n y,\n view,\n cell: view.cell,\n node: view.cell,\n });\n }\n this.notifyMouseMove(e, x, y);\n }\n this.setEventData(e, data);\n }\n onMouseUp(e, x, y) {\n const data = this.getEventData(e);\n const action = data.action;\n if (action === 'magnet') {\n this.stopMagnetDragging(e, x, y);\n }\n else {\n this.notifyMouseUp(e, x, y);\n if (action === 'move') {\n const meta = data;\n const view = meta.targetView || this;\n view.stopNodeDragging(e, x, y);\n }\n }\n const magnet = data.targetMagnet;\n if (magnet) {\n this.onMagnetClick(e, magnet, x, y);\n }\n this.checkMouseleave(e);\n }\n onMouseOver(e) {\n super.onMouseOver(e);\n this.notify('node:mouseover', this.getEventArgs(e));\n }\n onMouseOut(e) {\n super.onMouseOut(e);\n this.notify('node:mouseout', this.getEventArgs(e));\n }\n onMouseEnter(e) {\n this.updateClassName(e);\n super.onMouseEnter(e);\n this.notify('node:mouseenter', this.getEventArgs(e));\n }\n onMouseLeave(e) {\n super.onMouseLeave(e);\n this.notify('node:mouseleave', this.getEventArgs(e));\n }\n onMouseWheel(e, x, y, delta) {\n super.onMouseWheel(e, x, y, delta);\n this.notify('node:mousewheel', Object.assign({ delta }, this.getEventArgs(e, x, y)));\n }\n onMagnetClick(e, magnet, x, y) {\n const count = this.graph.view.getMouseMovedCount(e);\n if (count > this.graph.options.clickThreshold) {\n return;\n }\n this.notify('node:magnet:click', Object.assign({ magnet }, this.getEventArgs(e, x, y)));\n }\n onMagnetDblClick(e, magnet, x, y) {\n this.notify('node:magnet:dblclick', Object.assign({ magnet }, this.getEventArgs(e, x, y)));\n }\n onMagnetContextMenu(e, magnet, x, y) {\n this.notify('node:magnet:contextmenu', Object.assign({ magnet }, this.getEventArgs(e, x, y)));\n }\n onMagnetMouseDown(e, magnet, x, y) {\n this.startMagnetDragging(e, x, y);\n }\n onCustomEvent(e, name, x, y) {\n this.notify('node:customevent', Object.assign({ name }, this.getEventArgs(e, x, y)));\n super.onCustomEvent(e, name, x, y);\n }\n prepareEmbedding(e) {\n // const cell = data.cell || this.cell\n // const graph = data.graph || this.graph\n // const model = graph.model\n // model.startBatch('to-front')\n // // Bring the model to the front with all his embeds.\n // cell.toFront({ deep: true, ui: true })\n // const maxZ = model\n // .getNodes()\n // .reduce((max, cell) => Math.max(max, cell.getZIndex() || 0), 0)\n // const connectedEdges = model.getConnectedEdges(cell, {\n // deep: true,\n // enclosed: true,\n // })\n // connectedEdges.forEach((edge) => {\n // const zIndex = edge.getZIndex() || 0\n // if (zIndex <= maxZ) {\n // edge.setZIndex(maxZ + 1, { ui: true })\n // }\n // })\n // model.stopBatch('to-front')\n // Before we start looking for suitable parent we remove the current one.\n // const parent = cell.getParent()\n // if (parent) {\n // parent.unembed(cell, { ui: true })\n // }\n const data = this.getEventData(e);\n const node = data.cell || this.cell;\n const view = this.graph.findViewByCell(node);\n const localPoint = this.graph.snapToGrid(e.clientX, e.clientY);\n this.notify('node:embed', {\n e,\n node,\n view,\n cell: node,\n x: localPoint.x,\n y: localPoint.y,\n currentParent: node.getParent(),\n });\n }\n processEmbedding(e, data) {\n const cell = data.cell || this.cell;\n const graph = data.graph || this.graph;\n const options = graph.options.embedding;\n const findParent = options.findParent;\n let candidates = typeof findParent === 'function'\n ? FunctionExt.call(findParent, graph, {\n view: this,\n node: this.cell,\n }).filter((c) => {\n return (Cell.isCell(c) &&\n this.cell.id !== c.id &&\n !c.isDescendantOf(this.cell));\n })\n : graph.model.getNodesUnderNode(cell, {\n by: findParent,\n });\n // Picks the node with the highest `z` index\n if (options.frontOnly) {\n candidates = candidates.slice(-1);\n }\n let newCandidateView = null;\n const prevCandidateView = data.candidateEmbedView;\n const validateEmbeding = options.validate;\n for (let i = candidates.length - 1; i >= 0; i -= 1) {\n const candidate = candidates[i];\n if (prevCandidateView && prevCandidateView.cell.id === candidate.id) {\n // candidate remains the same\n newCandidateView = prevCandidateView;\n break;\n }\n else {\n const view = candidate.findView(graph);\n if (FunctionExt.call(validateEmbeding, graph, {\n child: this.cell,\n parent: view.cell,\n childView: this,\n parentView: view,\n })) {\n // flip to the new candidate\n newCandidateView = view;\n break;\n }\n }\n }\n this.clearEmbedding(data);\n if (newCandidateView) {\n newCandidateView.highlight(null, { type: 'embedding' });\n }\n data.candidateEmbedView = newCandidateView;\n const localPoint = graph.snapToGrid(e.clientX, e.clientY);\n this.notify('node:embedding', {\n e,\n cell,\n node: cell,\n view: graph.findViewByCell(cell),\n x: localPoint.x,\n y: localPoint.y,\n currentParent: cell.getParent(),\n candidateParent: newCandidateView ? newCandidateView.cell : null,\n });\n }\n clearEmbedding(data) {\n const candidateView = data.candidateEmbedView;\n if (candidateView) {\n candidateView.unhighlight(null, { type: 'embedding' });\n data.candidateEmbedView = null;\n }\n }\n finalizeEmbedding(e, data) {\n const cell = data.cell || this.cell;\n const graph = data.graph || this.graph;\n const view = graph.findViewByCell(cell);\n const parent = cell.getParent();\n const candidateView = data.candidateEmbedView;\n if (candidateView) {\n // Candidate view is chosen to become the parent of the node.\n candidateView.unhighlight(null, { type: 'embedding' });\n data.candidateEmbedView = null;\n if (parent == null || parent.id !== candidateView.cell.id) {\n candidateView.cell.insertChild(cell, undefined, { ui: true });\n }\n }\n else if (parent) {\n parent.unembed(cell, { ui: true });\n }\n graph.model.getConnectedEdges(cell, { deep: true }).forEach((edge) => {\n edge.updateParent({ ui: true });\n });\n const localPoint = graph.snapToGrid(e.clientX, e.clientY);\n if (view) {\n view.notify('node:embedded', {\n e,\n cell,\n x: localPoint.x,\n y: localPoint.y,\n node: cell,\n view: graph.findViewByCell(cell),\n previousParent: parent,\n currentParent: cell.getParent(),\n });\n }\n }\n getDelegatedView() {\n let cell = this.cell;\n let view = this; // eslint-disable-line\n while (view) {\n if (cell.isEdge()) {\n break;\n }\n if (!cell.hasParent() || view.can('stopDelegateOnDragging')) {\n return view;\n }\n cell = cell.getParent();\n view = this.graph.renderer.findViewByCell(cell);\n }\n return null;\n }\n startMagnetDragging(e, x, y) {\n if (!this.can('magnetConnectable')) {\n return;\n }\n e.stopPropagation();\n const magnet = e.currentTarget;\n const graph = this.graph;\n this.setEventData(e, {\n targetMagnet: magnet,\n });\n if (graph.hook.validateMagnet(this, magnet, e)) {\n if (graph.options.magnetThreshold <= 0) {\n this.startConnectting(e, magnet, x, y);\n }\n this.setEventData(e, {\n action: 'magnet',\n });\n this.stopPropagation(e);\n }\n else {\n this.onMouseDown(e, x, y);\n }\n graph.view.delegateDragEvents(e, this);\n }\n startConnectting(e, magnet, x, y) {\n this.graph.model.startBatch('add-edge');\n const edgeView = this.createEdgeFromMagnet(magnet, x, y);\n edgeView.notifyMouseDown(e, x, y); // backwards compatibility events\n edgeView.setEventData(e, edgeView.prepareArrowheadDragging('target', {\n x,\n y,\n isNewEdge: true,\n fallbackAction: 'remove',\n }));\n this.setEventData(e, { edgeView });\n }\n createEdgeFromMagnet(magnet, x, y) {\n const graph = this.graph;\n const model = graph.model;\n const edge = graph.hook.getDefaultEdge(this, magnet);\n edge.setSource(Object.assign(Object.assign({}, edge.getSource()), this.getEdgeTerminal(magnet, x, y, edge, 'source')));\n edge.setTarget(Object.assign(Object.assign({}, edge.getTarget()), { x, y }));\n edge.addTo(model, { async: false, ui: true });\n return edge.findView(graph);\n }\n dragMagnet(e, x, y) {\n const data = this.getEventData(e);\n const edgeView = data.edgeView;\n if (edgeView) {\n edgeView.onMouseMove(e, x, y);\n this.autoScrollGraph(e.clientX, e.clientY);\n }\n else {\n const graph = this.graph;\n const magnetThreshold = graph.options.magnetThreshold;\n const currentTarget = this.getEventTarget(e);\n const targetMagnet = data.targetMagnet;\n // magnetThreshold when the pointer leaves the magnet\n if (magnetThreshold === 'onleave') {\n if (targetMagnet === currentTarget ||\n targetMagnet.contains(currentTarget)) {\n return;\n }\n // eslint-disable-next-line no-lonely-if\n }\n else {\n // magnetThreshold defined as a number of movements\n if (graph.view.getMouseMovedCount(e) <= magnetThreshold) {\n return;\n }\n }\n this.startConnectting(e, targetMagnet, x, y);\n }\n }\n stopMagnetDragging(e, x, y) {\n const data = this.eventData(e);\n const edgeView = data.edgeView;\n if (edgeView) {\n edgeView.onMouseUp(e, x, y);\n this.graph.model.stopBatch('add-edge');\n }\n }\n notifyUnhandledMouseDown(e, x, y) {\n this.notify('node:unhandled:mousedown', {\n e,\n x,\n y,\n view: this,\n cell: this.cell,\n node: this.cell,\n });\n }\n notifyNodeMove(name, e, x, y, cell) {\n let cells = [cell];\n const selection = this.graph.selection.widget;\n if (selection && selection.options.movable) {\n const selectedCells = this.graph.getSelectedCells();\n if (selectedCells.includes(cell)) {\n cells = selectedCells.filter((c) => c.isNode());\n }\n }\n cells.forEach((c) => {\n this.notify(name, {\n e,\n x,\n y,\n cell: c,\n node: c,\n view: c.findView(this.graph),\n });\n });\n }\n startNodeDragging(e, x, y) {\n const targetView = this.getDelegatedView();\n if (targetView == null || !targetView.can('nodeMovable')) {\n return this.notifyUnhandledMouseDown(e, x, y);\n }\n this.setEventData(e, {\n targetView,\n action: 'move',\n });\n const position = Point.create(targetView.cell.getPosition());\n targetView.setEventData(e, {\n moving: false,\n offset: position.diff(x, y),\n restrict: this.graph.hook.getRestrictArea(targetView),\n });\n }\n dragNode(e, x, y) {\n const node = this.cell;\n const graph = this.graph;\n const gridSize = graph.getGridSize();\n const data = this.getEventData(e);\n const offset = data.offset;\n const restrict = data.restrict;\n if (!data.moving) {\n data.moving = true;\n this.addClass('node-moving');\n this.notifyNodeMove('node:move', e, x, y, this.cell);\n }\n this.autoScrollGraph(e.clientX, e.clientY);\n const posX = Util.snapToGrid(x + offset.x, gridSize);\n const posY = Util.snapToGrid(y + offset.y, gridSize);\n node.setPosition(posX, posY, {\n restrict,\n deep: true,\n ui: true,\n });\n if (graph.options.embedding.enabled) {\n if (!data.embedding) {\n this.prepareEmbedding(e);\n data.embedding = true;\n }\n this.processEmbedding(e, data);\n }\n }\n stopNodeDragging(e, x, y) {\n const data = this.getEventData(e);\n if (data.embedding) {\n this.finalizeEmbedding(e, data);\n }\n if (data.moving) {\n this.removeClass('node-moving');\n this.notifyNodeMove('node:moved', e, x, y, this.cell);\n }\n data.moving = false;\n data.embedding = false;\n }\n autoScrollGraph(x, y) {\n const scroller = this.graph.scroller.widget;\n if (scroller) {\n scroller.autoScroll(x, y);\n }\n }\n}\n(function (NodeView) {\n NodeView.toStringTag = `X6.${NodeView.name}`;\n function isNodeView(instance) {\n if (instance == null) {\n return false;\n }\n if (instance instanceof NodeView) {\n return true;\n }\n const tag = instance[Symbol.toStringTag];\n const view = instance;\n if ((tag == null || tag === NodeView.toStringTag) &&\n typeof view.isNodeView === 'function' &&\n typeof view.isEdgeView === 'function' &&\n typeof view.confirmUpdate === 'function' &&\n typeof view.update === 'function' &&\n typeof view.findPortElem === 'function' &&\n typeof view.resize === 'function' &&\n typeof view.rotate === 'function' &&\n typeof view.translate === 'function') {\n return true;\n }\n return false;\n }\n NodeView.isNodeView = isNodeView;\n})(NodeView || (NodeView = {}));\nNodeView.config({\n isSvgElement: true,\n priority: 0,\n bootstrap: ['render'],\n actions: {\n view: ['render'],\n markup: ['render'],\n attrs: ['update'],\n size: ['resize', 'ports', 'tools'],\n angle: ['rotate', 'tools'],\n position: ['translate', 'tools'],\n ports: ['ports'],\n tools: ['tools'],\n },\n});\nNodeView.registry.register('node', NodeView, true);\n//# sourceMappingURL=node.js.map","import { NodeView } from '../../view';\nimport { getName, createShape } from './util';\nconst viewName = getName('text');\nexport class Text extends createShape('text', {\n view: viewName,\n attrs: {\n text: {\n fontSize: 18,\n fill: '#000000',\n stroke: null,\n refX: 0.5,\n refY: 0.5,\n },\n },\n}, { noText: true }) {\n}\n(function (Text) {\n class View extends NodeView {\n confirmUpdate(flag, options = {}) {\n let ret = super.confirmUpdate(flag, options);\n if (this.hasAction(ret, 'scale')) {\n this.resize();\n ret = this.removeAction(ret, 'scale');\n }\n return ret;\n }\n }\n Text.View = View;\n View.config({\n actions: {\n attrs: ['scale'],\n },\n });\n NodeView.registry.register(viewName, View);\n})(Text || (Text = {}));\n//# sourceMappingURL=text.js.map","import { ArrayExt } from '../util';\nimport { Basecoat } from '../common';\nexport class Collection extends Basecoat {\n constructor(cells, options = {}) {\n super();\n this.length = 0;\n this.comparator = options.comparator || 'zIndex';\n this.clean();\n if (cells) {\n this.reset(cells, { silent: true });\n }\n }\n toJSON() {\n return this.cells.map((cell) => cell.toJSON());\n }\n add(cells, index, options) {\n let localIndex;\n let localOptions;\n if (typeof index === 'number') {\n localIndex = index;\n localOptions = Object.assign({ merge: false }, options);\n }\n else {\n localIndex = this.length;\n localOptions = Object.assign({ merge: false }, index);\n }\n if (localIndex > this.length) {\n localIndex = this.length;\n }\n if (localIndex < 0) {\n localIndex += this.length + 1;\n }\n const entities = Array.isArray(cells) ? cells : [cells];\n const sortable = this.comparator &&\n typeof index !== 'number' &&\n localOptions.sort !== false;\n const sortAttr = this.comparator || null;\n let sort = false;\n const added = [];\n const merged = [];\n entities.forEach((cell) => {\n const existing = this.get(cell);\n if (existing) {\n if (localOptions.merge && !cell.isSameStore(existing)) {\n existing.setProp(cell.getProp(), options); // merge\n merged.push(existing);\n if (sortable && !sort) {\n if (sortAttr == null || typeof sortAttr === 'function') {\n sort = existing.hasChanged();\n }\n else if (typeof sortAttr === 'string') {\n sort = existing.hasChanged(sortAttr);\n }\n else {\n sort = sortAttr.some((key) => existing.hasChanged(key));\n }\n }\n }\n }\n else {\n added.push(cell);\n this.reference(cell);\n }\n });\n if (added.length) {\n if (sortable) {\n sort = true;\n }\n this.cells.splice(localIndex, 0, ...added);\n this.length = this.cells.length;\n }\n if (sort) {\n this.sort({ silent: true });\n }\n if (!localOptions.silent) {\n added.forEach((cell, i) => {\n const args = {\n cell,\n index: localIndex + i,\n options: localOptions,\n };\n this.trigger('added', args);\n if (!localOptions.dryrun) {\n cell.notify('added', Object.assign({}, args));\n }\n });\n if (sort) {\n this.trigger('sorted');\n }\n if (added.length || merged.length) {\n this.trigger('updated', {\n added,\n merged,\n removed: [],\n options: localOptions,\n });\n }\n }\n return this;\n }\n remove(cells, options = {}) {\n const arr = Array.isArray(cells) ? cells : [cells];\n const removed = this.removeCells(arr, options);\n if (!options.silent && removed.length > 0) {\n this.trigger('updated', {\n options,\n removed,\n added: [],\n merged: [],\n });\n }\n return Array.isArray(cells) ? removed : removed[0];\n }\n removeCells(cells, options) {\n const removed = [];\n for (let i = 0; i < cells.length; i += 1) {\n const cell = this.get(cells[i]);\n if (cell == null) {\n continue;\n }\n const index = this.cells.indexOf(cell);\n this.cells.splice(index, 1);\n this.length -= 1;\n delete this.map[cell.id];\n removed.push(cell);\n this.unreference(cell);\n if (!options.dryrun) {\n cell.remove();\n }\n if (!options.silent) {\n this.trigger('removed', { cell, index, options });\n if (!options.dryrun) {\n cell.notify('removed', { cell, index, options });\n }\n }\n }\n return removed;\n }\n reset(cells, options = {}) {\n const previous = this.cells.slice();\n previous.forEach((cell) => this.unreference(cell));\n this.clean();\n this.add(cells, Object.assign({ silent: true }, options));\n if (!options.silent) {\n const current = this.cells.slice();\n this.trigger('reseted', {\n options,\n previous,\n current,\n });\n const added = [];\n const removed = [];\n current.forEach((a) => {\n const exist = previous.some((b) => b.id === a.id);\n if (!exist) {\n added.push(a);\n }\n });\n previous.forEach((a) => {\n const exist = current.some((b) => b.id === a.id);\n if (!exist) {\n removed.push(a);\n }\n });\n this.trigger('updated', { options, added, removed, merged: [] });\n }\n return this;\n }\n push(cell, options) {\n return this.add(cell, this.length, options);\n }\n pop(options) {\n const cell = this.at(this.length - 1);\n return this.remove(cell, options);\n }\n unshift(cell, options) {\n return this.add(cell, 0, options);\n }\n shift(options) {\n const cell = this.at(0);\n return this.remove(cell, options);\n }\n get(cell) {\n if (cell == null) {\n return null;\n }\n const id = typeof cell === 'string' || typeof cell === 'number' ? cell : cell.id;\n return this.map[id] || null;\n }\n has(cell) {\n return this.get(cell) != null;\n }\n at(index) {\n if (index < 0) {\n index += this.length; // eslint-disable-line\n }\n return this.cells[index] || null;\n }\n first() {\n return this.at(0);\n }\n last() {\n return this.at(-1);\n }\n indexOf(cell) {\n return this.cells.indexOf(cell);\n }\n toArray() {\n return this.cells.slice();\n }\n sort(options = {}) {\n if (this.comparator != null) {\n this.cells = ArrayExt.sortBy(this.cells, this.comparator);\n if (!options.silent) {\n this.trigger('sorted');\n }\n }\n return this;\n }\n clone() {\n const constructor = this.constructor;\n return new constructor(this.cells.slice(), {\n comparator: this.comparator,\n });\n }\n reference(cell) {\n this.map[cell.id] = cell;\n cell.on('*', this.notifyCellEvent, this);\n }\n unreference(cell) {\n cell.off('*', this.notifyCellEvent, this);\n delete this.map[cell.id];\n }\n notifyCellEvent(name, args) {\n const cell = args.cell;\n this.trigger(`cell:${name}`, args);\n if (cell) {\n if (cell.isNode()) {\n this.trigger(`node:${name}`, Object.assign(Object.assign({}, args), { node: cell }));\n }\n else if (cell.isEdge()) {\n this.trigger(`edge:${name}`, Object.assign(Object.assign({}, args), { edge: cell }));\n }\n }\n }\n clean() {\n this.length = 0;\n this.cells = [];\n this.map = {};\n }\n}\n//# sourceMappingURL=collection.js.map","import { FunctionExt } from '../util';\nimport { Basecoat, Dijkstra } from '../common';\nimport { Rectangle } from '../geometry';\nimport { Cell } from './cell';\nimport { Edge } from './edge';\nimport { Node } from './node';\nimport { Collection } from './collection';\nexport class Model extends Basecoat {\n constructor(cells = []) {\n super();\n this.batches = {};\n this.addings = new WeakMap();\n this.nodes = {};\n this.edges = {};\n this.outgoings = {};\n this.incomings = {};\n this.collection = new Collection(cells);\n this.setup();\n }\n get [Symbol.toStringTag]() {\n return Model.toStringTag;\n }\n notify(name, args) {\n this.trigger(name, args);\n const graph = this.graph;\n if (graph) {\n if (name === 'sorted' || name === 'reseted' || name === 'updated') {\n graph.trigger(`model:${name}`, args);\n }\n else {\n graph.trigger(name, args);\n }\n }\n return this;\n }\n setup() {\n const collection = this.collection;\n collection.on('sorted', () => this.notify('sorted', null));\n collection.on('updated', (args) => this.notify('updated', args));\n collection.on('cell:change:zIndex', () => this.sortOnChangeZ());\n collection.on('added', ({ cell }) => {\n this.onCellAdded(cell);\n });\n collection.on('removed', (args) => {\n const cell = args.cell;\n this.onCellRemoved(cell, args.options);\n // Should trigger remove-event manually after cell was removed.\n this.notify('cell:removed', args);\n if (cell.isNode()) {\n this.notify('node:removed', Object.assign(Object.assign({}, args), { node: cell }));\n }\n else if (cell.isEdge()) {\n this.notify('edge:removed', Object.assign(Object.assign({}, args), { edge: cell }));\n }\n });\n collection.on('reseted', (args) => {\n this.onReset(args.current);\n this.notify('reseted', args);\n });\n collection.on('edge:change:source', ({ edge }) => this.onEdgeTerminalChanged(edge, 'source'));\n collection.on('edge:change:target', ({ edge }) => {\n this.onEdgeTerminalChanged(edge, 'target');\n });\n }\n sortOnChangeZ() {\n this.collection.sort();\n }\n onCellAdded(cell) {\n const cellId = cell.id;\n if (cell.isEdge()) {\n // Auto update edge's parent\n cell.updateParent();\n this.edges[cellId] = true;\n this.onEdgeTerminalChanged(cell, 'source');\n this.onEdgeTerminalChanged(cell, 'target');\n }\n else {\n this.nodes[cellId] = true;\n }\n }\n onCellRemoved(cell, options) {\n const cellId = cell.id;\n if (cell.isEdge()) {\n delete this.edges[cellId];\n const source = cell.getSource();\n const target = cell.getTarget();\n if (source && source.cell) {\n const cache = this.outgoings[source.cell];\n const index = cache ? cache.indexOf(cellId) : -1;\n if (index >= 0) {\n cache.splice(index, 1);\n if (cache.length === 0) {\n delete this.outgoings[source.cell];\n }\n }\n }\n if (target && target.cell) {\n const cache = this.incomings[target.cell];\n const index = cache ? cache.indexOf(cellId) : -1;\n if (index >= 0) {\n cache.splice(index, 1);\n if (cache.length === 0) {\n delete this.incomings[target.cell];\n }\n }\n }\n }\n else {\n delete this.nodes[cellId];\n }\n if (!options.clear) {\n if (options.disconnectEdges) {\n this.disconnectConnectedEdges(cell, options);\n }\n else {\n this.removeConnectedEdges(cell, options);\n }\n }\n if (cell.model === this) {\n cell.model = null;\n }\n }\n onReset(cells) {\n this.nodes = {};\n this.edges = {};\n this.outgoings = {};\n this.incomings = {};\n cells.forEach((cell) => this.onCellAdded(cell));\n }\n onEdgeTerminalChanged(edge, type) {\n const ref = type === 'source' ? this.outgoings : this.incomings;\n const prev = edge.previous(type);\n if (prev && prev.cell) {\n const cache = ref[prev.cell];\n const index = cache ? cache.indexOf(edge.id) : -1;\n if (index >= 0) {\n cache.splice(index, 1);\n if (cache.length === 0) {\n delete ref[prev.cell];\n }\n }\n }\n const terminal = edge.getTerminal(type);\n if (terminal && terminal.cell) {\n const cache = ref[terminal.cell] || [];\n const index = cache.indexOf(edge.id);\n if (index === -1) {\n cache.push(edge.id);\n }\n ref[terminal.cell] = cache;\n }\n }\n prepareCell(cell, options) {\n if (!cell.model && (!options || !options.dryrun)) {\n cell.model = this;\n }\n if (cell.zIndex == null) {\n cell.setZIndex(this.getMaxZIndex() + 1, { silent: true });\n }\n return cell;\n }\n resetCells(cells, options = {}) {\n // Do not update model at this time. Because if we just update the graph\n // with the same json-data, the edge will reference to the old nodes.\n cells.map((cell) => this.prepareCell(cell, Object.assign(Object.assign({}, options), { dryrun: true })));\n this.collection.reset(cells, options);\n // Update model and trigger edge update it's references\n cells.map((cell) => this.prepareCell(cell, { options }));\n return this;\n }\n clear(options = {}) {\n const raw = this.getCells();\n if (raw.length === 0) {\n return this;\n }\n const localOptions = Object.assign(Object.assign({}, options), { clear: true });\n this.batchUpdate('clear', () => {\n // The nodes come after the edges.\n const cells = raw.sort((a, b) => {\n const v1 = a.isEdge() ? 1 : 2;\n const v2 = b.isEdge() ? 1 : 2;\n return v1 - v2;\n });\n while (cells.length > 0) {\n // Note that all the edges are removed first, so it's safe to\n // remove the nodes without removing the connected edges first.\n const cell = cells.shift();\n if (cell) {\n cell.remove(localOptions);\n }\n }\n }, localOptions);\n return this;\n }\n addNode(metadata, options = {}) {\n const node = Node.isNode(metadata) ? metadata : this.createNode(metadata);\n this.addCell(node, options);\n return node;\n }\n createNode(metadata) {\n return Node.create(metadata);\n }\n addEdge(metadata, options = {}) {\n const edge = Edge.isEdge(metadata) ? metadata : this.createEdge(metadata);\n this.addCell(edge, options);\n return edge;\n }\n createEdge(metadata) {\n return Edge.create(metadata);\n }\n addCell(cell, options = {}) {\n if (Array.isArray(cell)) {\n return this.addCells(cell, options);\n }\n if (!this.collection.has(cell) && !this.addings.has(cell)) {\n this.addings.set(cell, true);\n this.collection.add(this.prepareCell(cell, options), options);\n cell.eachChild((child) => this.addCell(child, options));\n this.addings.delete(cell);\n }\n return this;\n }\n addCells(cells, options = {}) {\n const count = cells.length;\n if (count === 0) {\n return this;\n }\n const localOptions = Object.assign(Object.assign({}, options), { position: count - 1, maxPosition: count - 1 });\n this.startBatch('add', Object.assign(Object.assign({}, localOptions), { cells }));\n cells.forEach((cell) => {\n this.addCell(cell, localOptions);\n localOptions.position -= 1;\n });\n this.stopBatch('add', Object.assign(Object.assign({}, localOptions), { cells }));\n return this;\n }\n removeCell(obj, options = {}) {\n const cell = typeof obj === 'string' ? this.getCell(obj) : obj;\n if (cell && this.has(cell)) {\n return this.collection.remove(cell, options);\n }\n return null;\n }\n updateCellId(cell, newId) {\n this.startBatch('update', { id: newId });\n cell.prop('id', newId);\n const newCell = cell.clone({ keepId: true });\n this.addCell(newCell);\n // update connected edge terminal\n const edges = this.getConnectedEdges(cell);\n edges.forEach((edge) => {\n const sourceCell = edge.getSourceCell();\n const targetCell = edge.getTargetCell();\n if (sourceCell === cell) {\n edge.setSource(Object.assign(Object.assign({}, edge.getSource()), { cell: newId }));\n }\n if (targetCell === cell) {\n edge.setTarget(Object.assign(Object.assign({}, edge.getTarget()), { cell: newId }));\n }\n });\n this.removeCell(cell);\n this.stopBatch('update', { id: newId });\n return newCell;\n }\n removeCells(cells, options = {}) {\n if (cells.length) {\n return this.batchUpdate('remove', () => {\n return cells.map((cell) => this.removeCell(cell, options));\n });\n }\n return [];\n }\n removeConnectedEdges(cell, options = {}) {\n const edges = this.getConnectedEdges(cell);\n edges.forEach((edge) => {\n edge.remove(options);\n });\n return edges;\n }\n disconnectConnectedEdges(cell, options = {}) {\n const cellId = typeof cell === 'string' ? cell : cell.id;\n this.getConnectedEdges(cell).forEach((edge) => {\n const sourceCell = edge.getSourceCell();\n const targetCell = edge.getTargetCell();\n if (sourceCell && sourceCell.id === cellId) {\n edge.setSource({ x: 0, y: 0 }, options);\n }\n if (targetCell && targetCell.id === cellId) {\n edge.setTarget({ x: 0, y: 0 }, options);\n }\n });\n }\n has(obj) {\n return this.collection.has(obj);\n }\n total() {\n return this.collection.length;\n }\n indexOf(cell) {\n return this.collection.indexOf(cell);\n }\n /**\n * Returns a cell from the graph by its id.\n */\n getCell(id) {\n return this.collection.get(id);\n }\n /**\n * Returns all the nodes and edges in the graph.\n */\n getCells() {\n return this.collection.toArray();\n }\n /**\n * Returns the first cell (node or edge) in the graph. The first cell is\n * defined as the cell with the lowest `zIndex`.\n */\n getFirstCell() {\n return this.collection.first();\n }\n /**\n * Returns the last cell (node or edge) in the graph. The last cell is\n * defined as the cell with the highest `zIndex`.\n */\n getLastCell() {\n return this.collection.last();\n }\n /**\n * Returns the lowest `zIndex` value in the graph.\n */\n getMinZIndex() {\n const first = this.collection.first();\n return first ? first.getZIndex() || 0 : 0;\n }\n /**\n * Returns the highest `zIndex` value in the graph.\n */\n getMaxZIndex() {\n const last = this.collection.last();\n return last ? last.getZIndex() || 0 : 0;\n }\n getCellsFromCache(cache) {\n return cache\n ? Object.keys(cache)\n .map((id) => this.getCell(id))\n .filter((cell) => cell != null)\n : [];\n }\n /**\n * Returns all the nodes in the graph.\n */\n getNodes() {\n return this.getCellsFromCache(this.nodes);\n }\n /**\n * Returns all the edges in the graph.\n */\n getEdges() {\n return this.getCellsFromCache(this.edges);\n }\n /**\n * Returns all outgoing edges for the node.\n */\n getOutgoingEdges(cell) {\n const cellId = typeof cell === 'string' ? cell : cell.id;\n const cellIds = this.outgoings[cellId];\n return cellIds\n ? cellIds\n .map((id) => this.getCell(id))\n .filter((cell) => cell && cell.isEdge())\n : null;\n }\n /**\n * Returns all incoming edges for the node.\n */\n getIncomingEdges(cell) {\n const cellId = typeof cell === 'string' ? cell : cell.id;\n const cellIds = this.incomings[cellId];\n return cellIds\n ? cellIds\n .map((id) => this.getCell(id))\n .filter((cell) => cell && cell.isEdge())\n : null;\n }\n /**\n * Returns edges connected with cell.\n */\n getConnectedEdges(cell, options = {}) {\n const result = [];\n const node = typeof cell === 'string' ? this.getCell(cell) : cell;\n if (node == null) {\n return result;\n }\n const cache = {};\n const indirect = options.indirect;\n let incoming = options.incoming;\n let outgoing = options.outgoing;\n if (incoming == null && outgoing == null) {\n incoming = outgoing = true;\n }\n const collect = (cell, isOutgoing) => {\n const edges = isOutgoing\n ? this.getOutgoingEdges(cell)\n : this.getIncomingEdges(cell);\n if (edges != null) {\n edges.forEach((edge) => {\n if (cache[edge.id]) {\n return;\n }\n result.push(edge);\n cache[edge.id] = true;\n if (indirect) {\n if (incoming) {\n collect(edge, false);\n }\n if (outgoing) {\n collect(edge, true);\n }\n }\n });\n }\n if (indirect && cell.isEdge()) {\n const terminal = isOutgoing\n ? cell.getTargetCell()\n : cell.getSourceCell();\n if (terminal && terminal.isEdge()) {\n if (!cache[terminal.id]) {\n result.push(terminal);\n collect(terminal, isOutgoing);\n }\n }\n }\n };\n if (outgoing) {\n collect(node, true);\n }\n if (incoming) {\n collect(node, false);\n }\n if (options.deep) {\n const descendants = node.getDescendants({ deep: true });\n const embedsCache = {};\n descendants.forEach((cell) => {\n if (cell.isNode()) {\n embedsCache[cell.id] = true;\n }\n });\n const collectSub = (cell, isOutgoing) => {\n const edges = isOutgoing\n ? this.getOutgoingEdges(cell.id)\n : this.getIncomingEdges(cell.id);\n if (edges != null) {\n edges.forEach((edge) => {\n if (!cache[edge.id]) {\n const sourceCell = edge.getSourceCell();\n const targetCell = edge.getTargetCell();\n if (!options.enclosed &&\n sourceCell &&\n embedsCache[sourceCell.id] &&\n targetCell &&\n embedsCache[targetCell.id]) {\n return;\n }\n result.push(edge);\n cache[edge.id] = true;\n }\n });\n }\n };\n descendants.forEach((cell) => {\n if (cell.isEdge()) {\n return;\n }\n if (outgoing) {\n collectSub(cell, true);\n }\n if (incoming) {\n collectSub(cell, false);\n }\n });\n }\n return result;\n }\n isBoundary(cell, isOrigin) {\n const node = typeof cell === 'string' ? this.getCell(cell) : cell;\n const arr = isOrigin\n ? this.getIncomingEdges(node)\n : this.getOutgoingEdges(node);\n return arr == null || arr.length === 0;\n }\n getBoundaryNodes(isOrigin) {\n const result = [];\n Object.keys(this.nodes).forEach((nodeId) => {\n if (this.isBoundary(nodeId, isOrigin)) {\n const node = this.getCell(nodeId);\n if (node) {\n result.push(node);\n }\n }\n });\n return result;\n }\n /**\n * Returns an array of all the roots of the graph.\n */\n getRoots() {\n return this.getBoundaryNodes(true);\n }\n /**\n * Returns an array of all the leafs of the graph.\n */\n getLeafs() {\n return this.getBoundaryNodes(false);\n }\n /**\n * Returns `true` if the node is a root node, i.e. there is no edges\n * coming to the node.\n */\n isRoot(cell) {\n return this.isBoundary(cell, true);\n }\n /**\n * Returns `true` if the node is a leaf node, i.e. there is no edges\n * going out from the node.\n */\n isLeaf(cell) {\n return this.isBoundary(cell, false);\n }\n /**\n * Returns all the neighbors of node in the graph. Neighbors are all\n * the nodes connected to node via either incoming or outgoing edge.\n */\n getNeighbors(cell, options = {}) {\n let incoming = options.incoming;\n let outgoing = options.outgoing;\n if (incoming == null && outgoing == null) {\n incoming = outgoing = true;\n }\n const edges = this.getConnectedEdges(cell, options);\n const map = edges.reduce((memo, edge) => {\n const hasLoop = edge.hasLoop(options);\n const sourceCell = edge.getSourceCell();\n const targetCell = edge.getTargetCell();\n if (incoming &&\n sourceCell &&\n sourceCell.isNode() &&\n !memo[sourceCell.id]) {\n if (hasLoop ||\n (sourceCell !== cell &&\n (!options.deep || !sourceCell.isDescendantOf(cell)))) {\n memo[sourceCell.id] = sourceCell;\n }\n }\n if (outgoing &&\n targetCell &&\n targetCell.isNode() &&\n !memo[targetCell.id]) {\n if (hasLoop ||\n (targetCell !== cell &&\n (!options.deep || !targetCell.isDescendantOf(cell)))) {\n memo[targetCell.id] = targetCell;\n }\n }\n return memo;\n }, {});\n if (cell.isEdge()) {\n if (incoming) {\n const sourceCell = cell.getSourceCell();\n if (sourceCell && sourceCell.isNode() && !map[sourceCell.id]) {\n map[sourceCell.id] = sourceCell;\n }\n }\n if (outgoing) {\n const targetCell = cell.getTargetCell();\n if (targetCell && targetCell.isNode() && !map[targetCell.id]) {\n map[targetCell.id] = targetCell;\n }\n }\n }\n return Object.keys(map).map((id) => map[id]);\n }\n /**\n * Returns `true` if `cell2` is a neighbor of `cell1`.\n */\n isNeighbor(cell1, cell2, options = {}) {\n let incoming = options.incoming;\n let outgoing = options.outgoing;\n if (incoming == null && outgoing == null) {\n incoming = outgoing = true;\n }\n return this.getConnectedEdges(cell1, options).some((edge) => {\n const sourceCell = edge.getSourceCell();\n const targetCell = edge.getTargetCell();\n if (incoming && sourceCell && sourceCell.id === cell2.id) {\n return true;\n }\n if (outgoing && targetCell && targetCell.id === cell2.id) {\n return true;\n }\n return false;\n });\n }\n getSuccessors(cell, options = {}) {\n const successors = [];\n this.search(cell, (curr, distance) => {\n if (curr !== cell && this.matchDistance(distance, options.distance)) {\n successors.push(curr);\n }\n }, Object.assign(Object.assign({}, options), { outgoing: true }));\n return successors;\n }\n /**\n * Returns `true` if `cell2` is a successor of `cell1`.\n */\n isSuccessor(cell1, cell2, options = {}) {\n let result = false;\n this.search(cell1, (curr, distance) => {\n if (curr === cell2 &&\n curr !== cell1 &&\n this.matchDistance(distance, options.distance)) {\n result = true;\n return false;\n }\n }, Object.assign(Object.assign({}, options), { outgoing: true }));\n return result;\n }\n getPredecessors(cell, options = {}) {\n const predecessors = [];\n this.search(cell, (curr, distance) => {\n if (curr !== cell && this.matchDistance(distance, options.distance)) {\n predecessors.push(curr);\n }\n }, Object.assign(Object.assign({}, options), { incoming: true }));\n return predecessors;\n }\n /**\n * Returns `true` if `cell2` is a predecessor of `cell1`.\n */\n isPredecessor(cell1, cell2, options = {}) {\n let result = false;\n this.search(cell1, (curr, distance) => {\n if (curr === cell2 &&\n curr !== cell1 &&\n this.matchDistance(distance, options.distance)) {\n result = true;\n return false;\n }\n }, Object.assign(Object.assign({}, options), { incoming: true }));\n return result;\n }\n matchDistance(distance, preset) {\n if (preset == null) {\n return true;\n }\n if (typeof preset === 'function') {\n return preset(distance);\n }\n if (Array.isArray(preset) && preset.includes(distance)) {\n return true;\n }\n return distance === preset;\n }\n /**\n * Returns the common ancestor of the passed cells.\n */\n getCommonAncestor(...cells) {\n const arr = [];\n cells.forEach((item) => {\n if (item) {\n if (Array.isArray(item)) {\n arr.push(...item);\n }\n else {\n arr.push(item);\n }\n }\n });\n return Cell.getCommonAncestor(...arr);\n }\n /**\n * Returns an array of cells that result from finding nodes/edges that\n * are connected to any of the cells in the cells array. This function\n * loops over cells and if the current cell is a edge, it collects its\n * source/target nodes; if it is an node, it collects its incoming and\n * outgoing edges if both the edge terminal (source/target) are in the\n * cells array.\n */\n getSubGraph(cells, options = {}) {\n const subgraph = [];\n const cache = {};\n const nodes = [];\n const edges = [];\n const collect = (cell) => {\n if (!cache[cell.id]) {\n subgraph.push(cell);\n cache[cell.id] = cell;\n if (cell.isEdge()) {\n edges.push(cell);\n }\n if (cell.isNode()) {\n nodes.push(cell);\n }\n }\n };\n cells.forEach((cell) => {\n collect(cell);\n if (options.deep) {\n const descendants = cell.getDescendants({ deep: true });\n descendants.forEach((descendant) => collect(descendant));\n }\n });\n edges.forEach((edge) => {\n // For edges, include their source & target\n const sourceCell = edge.getSourceCell();\n const targetCell = edge.getTargetCell();\n if (sourceCell && !cache[sourceCell.id]) {\n subgraph.push(sourceCell);\n cache[sourceCell.id] = sourceCell;\n if (sourceCell.isNode()) {\n nodes.push(sourceCell);\n }\n }\n if (targetCell && !cache[targetCell.id]) {\n subgraph.push(targetCell);\n cache[targetCell.id] = targetCell;\n if (targetCell.isNode()) {\n nodes.push(targetCell);\n }\n }\n });\n nodes.forEach((node) => {\n // For nodes, include their connected edges if their source/target\n // is in the subgraph.\n const edges = this.getConnectedEdges(node, options);\n edges.forEach((edge) => {\n const sourceCell = edge.getSourceCell();\n const targetCell = edge.getTargetCell();\n if (!cache[edge.id] &&\n sourceCell &&\n cache[sourceCell.id] &&\n targetCell &&\n cache[targetCell.id]) {\n subgraph.push(edge);\n cache[edge.id] = edge;\n }\n });\n });\n return subgraph;\n }\n /**\n * Clones the whole subgraph (including all the connected links whose\n * source/target is in the subgraph). If `options.deep` is `true`, also\n * take into account all the embedded cells of all the subgraph cells.\n *\n * Returns a map of the form: { [original cell ID]: [clone] }.\n */\n cloneSubGraph(cells, options = {}) {\n const subgraph = this.getSubGraph(cells, options);\n return this.cloneCells(subgraph);\n }\n cloneCells(cells) {\n return Cell.cloneCells(cells);\n }\n getNodesFromPoint(x, y) {\n const p = typeof x === 'number' ? { x, y: y || 0 } : x;\n return this.getNodes().filter((node) => {\n return node.getBBox().containsPoint(p);\n });\n }\n getNodesInArea(x, y, w, h, options) {\n const rect = typeof x === 'number'\n ? new Rectangle(x, y, w, h)\n : Rectangle.create(x);\n const opts = typeof x === 'number' ? options : y;\n const strict = opts && opts.strict;\n return this.getNodes().filter((node) => {\n const bbox = node.getBBox();\n return strict ? rect.containsRect(bbox) : rect.isIntersectWithRect(bbox);\n });\n }\n getEdgesInArea(x, y, w, h, options) {\n const rect = typeof x === 'number'\n ? new Rectangle(x, y, w, h)\n : Rectangle.create(x);\n const opts = typeof x === 'number' ? options : y;\n const strict = opts && opts.strict;\n return this.getEdges().filter((edge) => {\n const bbox = edge.getBBox();\n if (bbox.width === 0) {\n bbox.inflate(1, 0);\n }\n else if (bbox.height === 0) {\n bbox.inflate(0, 1);\n }\n return strict ? rect.containsRect(bbox) : rect.isIntersectWithRect(bbox);\n });\n }\n getNodesUnderNode(node, options = {}) {\n const bbox = node.getBBox();\n const nodes = options.by == null || options.by === 'bbox'\n ? this.getNodesInArea(bbox)\n : this.getNodesFromPoint(bbox[options.by]);\n return nodes.filter((curr) => node.id !== curr.id && !curr.isDescendantOf(node));\n }\n /**\n * Returns the bounding box that surrounds all cells in the graph.\n */\n getAllCellsBBox() {\n return this.getCellsBBox(this.getCells());\n }\n /**\n * Returns the bounding box that surrounds all the given cells.\n */\n getCellsBBox(cells, options = {}) {\n return Cell.getCellsBBox(cells, options);\n }\n // #region search\n search(cell, iterator, options = {}) {\n if (options.breadthFirst) {\n this.breadthFirstSearch(cell, iterator, options);\n }\n else {\n this.depthFirstSearch(cell, iterator, options);\n }\n }\n breadthFirstSearch(cell, iterator, options = {}) {\n const queue = [];\n const visited = {};\n const distance = {};\n queue.push(cell);\n distance[cell.id] = 0;\n while (queue.length > 0) {\n const next = queue.shift();\n if (next == null || visited[next.id]) {\n continue;\n }\n visited[next.id] = true;\n if (FunctionExt.call(iterator, this, next, distance[next.id]) === false) {\n continue;\n }\n const neighbors = this.getNeighbors(next, options);\n neighbors.forEach((neighbor) => {\n distance[neighbor.id] = distance[next.id] + 1;\n queue.push(neighbor);\n });\n }\n }\n depthFirstSearch(cell, iterator, options = {}) {\n const queue = [];\n const visited = {};\n const distance = {};\n queue.push(cell);\n distance[cell.id] = 0;\n while (queue.length > 0) {\n const next = queue.pop();\n if (next == null || visited[next.id]) {\n continue;\n }\n visited[next.id] = true;\n if (FunctionExt.call(iterator, this, next, distance[next.id]) === false) {\n continue;\n }\n const neighbors = this.getNeighbors(next, options);\n const lastIndex = queue.length;\n neighbors.forEach((neighbor) => {\n distance[neighbor.id] = distance[next.id] + 1;\n queue.splice(lastIndex, 0, neighbor);\n });\n }\n }\n // #endregion\n // #region shortest path\n /** *\n * Returns an array of IDs of nodes on the shortest\n * path between source and target.\n */\n getShortestPath(source, target, options = {}) {\n const adjacencyList = {};\n this.getEdges().forEach((edge) => {\n const sourceId = edge.getSourceCellId();\n const targetId = edge.getTargetCellId();\n if (sourceId && targetId) {\n if (!adjacencyList[sourceId]) {\n adjacencyList[sourceId] = [];\n }\n if (!adjacencyList[targetId]) {\n adjacencyList[targetId] = [];\n }\n adjacencyList[sourceId].push(targetId);\n if (!options.directed) {\n adjacencyList[targetId].push(sourceId);\n }\n }\n });\n const sourceId = typeof source === 'string' ? source : source.id;\n const previous = Dijkstra.run(adjacencyList, sourceId, options.weight);\n const path = [];\n let targetId = typeof target === 'string' ? target : target.id;\n if (previous[targetId]) {\n path.push(targetId);\n }\n while ((targetId = previous[targetId])) {\n path.unshift(targetId);\n }\n return path;\n }\n // #endregion\n // #region transform\n /**\n * Translate all cells in the graph by `tx` and `ty` pixels.\n */\n translate(tx, ty, options) {\n this.getCells()\n .filter((cell) => !cell.hasParent())\n .forEach((cell) => cell.translate(tx, ty, options));\n return this;\n }\n resize(width, height, options) {\n return this.resizeCells(width, height, this.getCells(), options);\n }\n resizeCells(width, height, cells, options = {}) {\n const bbox = this.getCellsBBox(cells);\n if (bbox) {\n const sx = Math.max(width / bbox.width, 0);\n const sy = Math.max(height / bbox.height, 0);\n const origin = bbox.getOrigin();\n cells.forEach((cell) => cell.scale(sx, sy, origin, options));\n }\n return this;\n }\n // #endregion\n // #region serialize/deserialize\n toJSON(options = {}) {\n return Model.toJSON(this.getCells(), options);\n }\n parseJSON(data) {\n return Model.fromJSON(data);\n }\n fromJSON(data, options = {}) {\n const cells = this.parseJSON(data);\n this.resetCells(cells, options);\n return this;\n }\n // #endregion\n // #region batch\n startBatch(name, data = {}) {\n this.batches[name] = (this.batches[name] || 0) + 1;\n this.notify('batch:start', { name, data });\n return this;\n }\n stopBatch(name, data = {}) {\n this.batches[name] = (this.batches[name] || 0) - 1;\n this.notify('batch:stop', { name, data });\n return this;\n }\n batchUpdate(name, execute, data = {}) {\n this.startBatch(name, data);\n const result = execute();\n this.stopBatch(name, data);\n return result;\n }\n hasActiveBatch(name = Object.keys(this.batches)) {\n const names = Array.isArray(name) ? name : [name];\n return names.some((batch) => this.batches[batch] > 0);\n }\n}\n(function (Model) {\n Model.toStringTag = `X6.${Model.name}`;\n function isModel(instance) {\n if (instance == null) {\n return false;\n }\n if (instance instanceof Model) {\n return true;\n }\n const tag = instance[Symbol.toStringTag];\n const model = instance;\n if ((tag == null || tag === Model.toStringTag) &&\n typeof model.addNode === 'function' &&\n typeof model.addEdge === 'function' &&\n model.collection != null) {\n return true;\n }\n return false;\n }\n Model.isModel = isModel;\n})(Model || (Model = {}));\n(function (Model) {\n function toJSON(cells, options = {}) {\n return {\n cells: cells.map((cell) => cell.toJSON(options)),\n };\n }\n Model.toJSON = toJSON;\n function fromJSON(data) {\n const cells = [];\n if (Array.isArray(data)) {\n cells.push(...data);\n }\n else {\n if (data.cells) {\n cells.push(...data.cells);\n }\n if (data.nodes) {\n data.nodes.forEach((node) => {\n if (node.shape == null) {\n node.shape = 'rect';\n }\n cells.push(node);\n });\n }\n if (data.edges) {\n data.edges.forEach((edge) => {\n if (edge.shape == null) {\n edge.shape = 'edge';\n }\n cells.push(edge);\n });\n }\n }\n return cells.map((cell) => {\n const type = cell.shape;\n if (type) {\n if (Node.registry.exist(type)) {\n return Node.create(cell);\n }\n if (Edge.registry.exist(type)) {\n return Edge.create(cell);\n }\n }\n throw new Error('The `shape` should be specified when creating a node/edge instance');\n });\n }\n Model.fromJSON = fromJSON;\n})(Model || (Model = {}));\n//# sourceMappingURL=model.js.map","import { Platform, StringExt, ObjectExt, Dom } from '../../util';\nimport { Node } from '../../model';\nimport { NodeView } from '../../view';\nimport { getName } from './util';\nconst contentSelector = '.text-block-content';\nconst registryName = getName('text-block');\nexport class TextBlock extends Node {\n get content() {\n return this.getContent();\n }\n set content(val) {\n this.setContent(val);\n }\n getContent() {\n return this.store.get('content', '');\n }\n setContent(content, options = {}) {\n this.store.set('content', content, options);\n }\n setup() {\n super.setup();\n this.store.on('change:*', (metadata) => {\n const key = metadata.key;\n if (key === 'content') {\n this.updateContent(this.getContent());\n }\n else if (key === 'size') {\n this.updateSize(this.getSize());\n }\n });\n this.updateSize(this.getSize());\n this.updateContent(this.getContent());\n }\n updateSize(size) {\n if (Platform.SUPPORT_FOREIGNOBJECT) {\n this.setAttrs({\n foreignObject: Object.assign({}, size),\n [contentSelector]: {\n style: Object.assign({}, size),\n },\n });\n }\n }\n updateContent(content) {\n if (Platform.SUPPORT_FOREIGNOBJECT) {\n this.setAttrs({\n [contentSelector]: {\n html: content ? StringExt.sanitizeHTML(content) : '',\n },\n });\n }\n else {\n this.setAttrs({\n [contentSelector]: {\n text: content,\n },\n });\n }\n }\n}\n(function (TextBlock) {\n TextBlock.config({\n type: registryName,\n view: registryName,\n markup: [\n '',\n '',\n Platform.SUPPORT_FOREIGNOBJECT\n ? [\n ``,\n ``,\n `
`,\n ``,\n ``,\n ].join('')\n : ``,\n '',\n ].join(''),\n attrs: {\n '.': {\n fill: '#ffffff',\n stroke: 'none',\n },\n rect: {\n fill: '#ffffff',\n stroke: '#000000',\n width: 80,\n height: 100,\n },\n text: {\n fill: '#000000',\n fontSize: 14,\n fontFamily: 'Arial, helvetica, sans-serif',\n },\n body: {\n style: {\n background: 'transparent',\n position: 'static',\n margin: 0,\n padding: 0,\n },\n },\n foreignObject: {\n style: {\n overflow: 'hidden',\n },\n },\n [contentSelector]: {\n refX: 0.5,\n refY: 0.5,\n yAlign: 'middle',\n xAlign: 'middle',\n style: {\n textAlign: 'center',\n verticalAlign: 'middle',\n display: 'table-cell',\n padding: '0 5px',\n margin: 0,\n },\n },\n },\n });\n Node.registry.register(registryName, TextBlock);\n})(TextBlock || (TextBlock = {}));\n(function (TextBlock) {\n const contentAction = 'content';\n class View extends NodeView {\n confirmUpdate(flag, options = {}) {\n let ret = super.confirmUpdate(flag, options);\n if (this.hasAction(ret, contentAction)) {\n this.updateContent();\n ret = this.removeAction(ret, contentAction);\n }\n return ret;\n }\n update(partialAttrs) {\n if (Platform.SUPPORT_FOREIGNOBJECT) {\n super.update(partialAttrs);\n }\n else {\n const node = this.cell;\n const attrs = Object.assign({}, (partialAttrs || node.getAttrs()));\n delete attrs[contentSelector];\n super.update(attrs);\n if (!partialAttrs || ObjectExt.has(partialAttrs, contentSelector)) {\n this.updateContent(partialAttrs);\n }\n }\n }\n updateContent(partialAttrs) {\n if (Platform.SUPPORT_FOREIGNOBJECT) {\n super.update(partialAttrs);\n }\n else {\n const node = this.cell;\n const textAttrs = (partialAttrs || node.getAttrs())[contentSelector];\n // Break the text to fit the node size taking into\n // account the attributes set on the node.\n const text = Dom.breakText(node.getContent(), node.getSize(), textAttrs, {\n svgDocument: this.graph.view.svg,\n });\n const attrs = {\n [contentSelector]: ObjectExt.merge({}, textAttrs, { text }),\n };\n super.update(attrs);\n }\n }\n }\n TextBlock.View = View;\n (function (View) {\n View.config({\n bootstrap: ['render', contentAction],\n actions: Platform.SUPPORT_FOREIGNOBJECT\n ? {}\n : {\n size: contentAction,\n content: contentAction,\n },\n });\n NodeView.registry.register(registryName, View);\n })(View = TextBlock.View || (TextBlock.View = {}));\n})(TextBlock || (TextBlock = {}));\n//# sourceMappingURL=text-block.js.map","import { Base } from '../base';\nexport const Empty = Base.define({\n shape: 'empty',\n});\n//# sourceMappingURL=empty.js.map","import { ObjectExt } from '../../util';\nimport { Base } from '../base';\nexport function getMarkup(tagName, selector = 'body') {\n return [\n {\n tagName,\n selector,\n },\n {\n tagName: 'text',\n selector: 'label',\n },\n ];\n}\nexport function createShape(shape, config, options = {}) {\n const defaults = {\n constructorName: shape,\n markup: getMarkup(shape, options.selector),\n attrs: {\n [shape]: Object.assign({}, Base.bodyAttr),\n },\n };\n const base = options.parent || Base;\n return base.define(ObjectExt.merge(defaults, config, { shape }));\n}\n//# sourceMappingURL=util.js.map","import { createShape } from './util';\nexport const Rect = createShape('rect', {\n attrs: {\n body: {\n refWidth: '100%',\n refHeight: '100%',\n },\n },\n});\n//# sourceMappingURL=rect.js.map","import { Node } from '../../model/node';\nimport { Base } from '../base';\nexport const HeaderedRect = Node.define({\n shape: 'rect-headered',\n markup: [\n {\n tagName: 'rect',\n selector: 'body',\n },\n {\n tagName: 'rect',\n selector: 'header',\n },\n {\n tagName: 'text',\n selector: 'headerText',\n },\n {\n tagName: 'text',\n selector: 'bodyText',\n },\n ],\n attrs: {\n body: Object.assign(Object.assign({}, Base.bodyAttr), { refWidth: '100%', refHeight: '100%' }),\n header: Object.assign(Object.assign({}, Base.bodyAttr), { refWidth: '100%', height: 30, stroke: '#000000' }),\n headerText: Object.assign(Object.assign({}, Base.labelAttr), { refX: '50%', refY: 15, fontSize: 16 }),\n bodyText: Object.assign(Object.assign({}, Base.labelAttr), { refY2: 15 }),\n },\n});\n//# sourceMappingURL=rect-headered.js.map","import { createShape } from './util';\nexport const Circle = createShape('circle', {\n attrs: {\n body: {\n refCx: '50%',\n refCy: '50%',\n refR: '50%',\n },\n },\n});\n//# sourceMappingURL=circle.js.map","import { NumberExt } from '../../util';\nimport { Base } from '../base';\nconst CYLINDER_TILT = 10;\nexport const Cylinder = Base.define({\n shape: 'cylinder',\n overwrite: true,\n markup: [\n {\n tagName: 'path',\n selector: 'body',\n },\n {\n tagName: 'ellipse',\n selector: 'top',\n },\n {\n tagName: 'text',\n selector: 'label',\n },\n ],\n attrs: {\n body: Object.assign(Object.assign({}, Base.bodyAttr), { lateral: CYLINDER_TILT }),\n top: Object.assign(Object.assign({}, Base.bodyAttr), { refCx: '50%', refRx: '50%', cy: CYLINDER_TILT, ry: CYLINDER_TILT }),\n },\n attrHooks: {\n lateral: {\n set(t, { refBBox }) {\n const isPercentage = NumberExt.isPercentage(t);\n if (isPercentage) {\n // eslint-disable-next-line\n t = parseFloat(t) / 100;\n }\n const x = refBBox.x;\n const y = refBBox.y;\n const w = refBBox.width;\n const h = refBBox.height;\n // curve control point variables\n const rx = w / 2;\n const ry = isPercentage ? h * t : t;\n const kappa = 0.551784;\n const cx = kappa * rx;\n const cy = kappa * ry;\n // shape variables\n const xLeft = x;\n const xCenter = x + w / 2;\n const xRight = x + w;\n const ySideTop = y + ry;\n const yCurveTop = ySideTop - ry;\n const ySideBottom = y + h - ry;\n const yCurveBottom = y + h;\n // return calculated shape\n const data = [\n 'M',\n xLeft,\n ySideTop,\n 'L',\n xLeft,\n ySideBottom,\n 'C',\n x,\n ySideBottom + cy,\n xCenter - cx,\n yCurveBottom,\n xCenter,\n yCurveBottom,\n 'C',\n xCenter + cx,\n yCurveBottom,\n xRight,\n ySideBottom + cy,\n xRight,\n ySideBottom,\n 'L',\n xRight,\n ySideTop,\n 'C',\n xRight,\n ySideTop - cy,\n xCenter + cx,\n yCurveTop,\n xCenter,\n yCurveTop,\n 'C',\n xCenter - cx,\n yCurveTop,\n xLeft,\n ySideTop - cy,\n xLeft,\n ySideTop,\n 'Z',\n ];\n return { d: data.join(' ') };\n },\n },\n },\n knob: {\n enabled: true,\n position({ node }) {\n const lateral = node.attr('body/lateral');\n return { x: 0, y: lateral };\n },\n onMouseMove({ node, data, deltaY }) {\n if (deltaY !== 0) {\n const bbox = node.getBBox();\n const previous = node.attr('body/lateral');\n if (data.round == null) {\n data.round = previous;\n }\n const min = 0;\n const max = bbox.height / 2;\n const current = NumberExt.clamp(data.round + deltaY, min, max);\n if (current !== previous) {\n node.attr({\n body: { lateral: current },\n top: {\n cy: current,\n ry: current,\n },\n });\n }\n }\n },\n },\n});\n//# sourceMappingURL=cylinder.js.map","import { createShape } from './util';\nexport const Ellipse = createShape('ellipse', {\n attrs: {\n body: {\n refCx: '50%',\n refCy: '50%',\n refRx: '50%',\n refRy: '50%',\n },\n },\n});\n//# sourceMappingURL=ellipse.js.map","var __rest = (this && this.__rest) || function (s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n t[p[i]] = s[p[i]];\n }\n return t;\n};\nimport { Base } from '../base';\nimport { Point } from '../../geometry';\nimport { ObjectExt } from '../../util';\nexport class Poly extends Base {\n get points() {\n return this.getPoints();\n }\n set points(pts) {\n this.setPoints(pts);\n }\n getPoints() {\n return this.getAttrByPath('body/refPoints');\n }\n setPoints(points, options) {\n if (points == null) {\n this.removePoints();\n }\n else {\n this.setAttrByPath('body/refPoints', Poly.pointsToString(points), options);\n }\n return this;\n }\n removePoints() {\n this.removeAttrByPath('body/refPoints');\n return this;\n }\n}\n(function (Poly) {\n function pointsToString(points) {\n return typeof points === 'string'\n ? points\n : points\n .map((p) => {\n if (Array.isArray(p)) {\n return p.join(',');\n }\n if (Point.isPointLike(p)) {\n return `${p.x}, ${p.y}`;\n }\n return '';\n })\n .join(' ');\n }\n Poly.pointsToString = pointsToString;\n Poly.config({\n propHooks(metadata) {\n const { points } = metadata, others = __rest(metadata, [\"points\"]);\n if (points) {\n const data = pointsToString(points);\n if (data) {\n ObjectExt.setByPath(others, 'attrs/body/refPoints', data);\n }\n }\n return others;\n },\n });\n})(Poly || (Poly = {}));\n//# sourceMappingURL=poly.js.map","import { Poly } from './poly';\nimport { createShape } from './util';\nexport const Polygon = createShape('polygon', {}, { parent: Poly });\n//# sourceMappingURL=polygon.js.map","import { Poly } from './poly';\nimport { createShape } from './util';\nexport const Polyline = createShape('polyline', {}, { parent: Poly });\n//# sourceMappingURL=polyline.js.map","var __rest = (this && this.__rest) || function (s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n t[p[i]] = s[p[i]];\n }\n return t;\n};\nimport { ObjectExt } from '../../util';\nimport { Base } from '../base';\nexport const Path = Base.define({\n shape: 'path',\n markup: [\n {\n tagName: 'rect',\n selector: 'bg',\n },\n {\n tagName: 'path',\n selector: 'body',\n },\n {\n tagName: 'text',\n selector: 'label',\n },\n ],\n attrs: {\n bg: {\n refWidth: '100%',\n refHeight: '100%',\n fill: 'none',\n stroke: 'none',\n pointerEvents: 'all',\n },\n body: {\n fill: 'none',\n stroke: '#000',\n strokeWidth: 2,\n },\n },\n propHooks(metadata) {\n const { path } = metadata, others = __rest(metadata, [\"path\"]);\n if (path) {\n ObjectExt.setByPath(others, 'attrs/body/refD', path);\n }\n return others;\n },\n});\n//# sourceMappingURL=path.js.map","var __rest = (this && this.__rest) || function (s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n t[p[i]] = s[p[i]];\n }\n return t;\n};\nimport { Platform, Dom, FunctionExt, ObjectExt } from '../../util';\nimport { Attr } from '../../registry';\nimport { Base } from '../base';\nexport const TextBlock = Base.define({\n shape: 'text-block',\n markup: [\n {\n tagName: 'rect',\n selector: 'body',\n },\n Platform.SUPPORT_FOREIGNOBJECT\n ? {\n tagName: 'foreignObject',\n selector: 'foreignObject',\n children: [\n {\n tagName: 'div',\n ns: Dom.ns.xhtml,\n selector: 'label',\n style: {\n width: '100%',\n height: '100%',\n position: 'static',\n backgroundColor: 'transparent',\n textAlign: 'center',\n margin: 0,\n padding: '0px 5px',\n boxSizing: 'border-box',\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n },\n },\n ],\n }\n : {\n tagName: 'text',\n selector: 'label',\n attrs: {\n textAnchor: 'middle',\n },\n },\n ],\n attrs: {\n body: Object.assign(Object.assign({}, Base.bodyAttr), { refWidth: '100%', refHeight: '100%' }),\n foreignObject: {\n refWidth: '100%',\n refHeight: '100%',\n },\n label: {\n style: {\n fontSize: 14,\n },\n },\n },\n propHooks(metadata) {\n const { text } = metadata, others = __rest(metadata, [\"text\"]);\n if (text) {\n ObjectExt.setByPath(others, 'attrs/label/text', text);\n }\n return others;\n },\n attrHooks: {\n text: {\n set(text, { cell, view, refBBox, elem, attrs }) {\n if (elem instanceof HTMLElement) {\n elem.textContent = text;\n }\n else {\n // No foreign object\n const style = attrs.style || {};\n const wrapValue = { text, width: -5, height: '100%' };\n const wrapAttrs = Object.assign({ textVerticalAnchor: 'middle' }, style);\n const textWrap = Attr.presets.textWrap;\n FunctionExt.call(textWrap.set, this, wrapValue, {\n cell,\n view,\n elem,\n refBBox,\n attrs: wrapAttrs,\n });\n return { fill: style.color || null };\n }\n },\n position(text, { refBBox, elem }) {\n if (elem instanceof SVGElement) {\n return refBBox.getCenter();\n }\n },\n },\n },\n});\n//# sourceMappingURL=text-block.js.map","import { getImageUrlHook } from '../basic/util';\nimport { createShape } from './util';\nexport const Image = createShape('image', {\n attrs: {\n image: {\n refWidth: '100%',\n refHeight: '100%',\n },\n },\n propHooks: getImageUrlHook(),\n}, {\n selector: 'image',\n});\n//# sourceMappingURL=image.js.map","import { getImageUrlHook } from '../basic/util';\nimport { createShape } from './util';\nexport const BorderedImage = createShape('image-bordered', {\n markup: [\n {\n tagName: 'rect',\n selector: 'background',\n attrs: {\n stroke: 'none',\n },\n },\n {\n tagName: 'image',\n selector: 'image',\n },\n {\n tagName: 'rect',\n selector: 'border',\n attrs: {\n fill: 'none',\n },\n },\n {\n tagName: 'text',\n selector: 'label',\n },\n ],\n attrs: {\n background: {\n refWidth: -1,\n refHeight: -1,\n x: 0.5,\n y: 0.5,\n fill: '#ffffff',\n },\n border: {\n refWidth: '100%',\n refHeight: '100%',\n stroke: '#333333',\n strokeWidth: 2,\n },\n image: {\n // xlinkHref: '[URL]'\n refWidth: -1,\n refHeight: -1,\n x: 0.5,\n y: 0.5,\n },\n },\n propHooks: getImageUrlHook(),\n});\n//# sourceMappingURL=image-bordered.js.map","import { getImageUrlHook } from '../basic/util';\nimport { createShape } from './util';\nexport const EmbeddedImage = createShape('image-embedded', {\n markup: [\n {\n tagName: 'rect',\n selector: 'body',\n },\n {\n tagName: 'image',\n selector: 'image',\n },\n {\n tagName: 'text',\n selector: 'label',\n },\n ],\n attrs: {\n body: {\n refWidth: '100%',\n refHeight: '100%',\n stroke: '#333333',\n fill: '#FFFFFF',\n strokeWidth: 2,\n },\n image: {\n // xlinkHref: '[URL]'\n refWidth: '30%',\n refHeight: -20,\n x: 10,\n y: 10,\n preserveAspectRatio: 'xMidYMin',\n },\n },\n propHooks: getImageUrlHook(),\n});\n//# sourceMappingURL=image-embedded.js.map","import { getImageUrlHook } from '../basic/util';\nimport { createShape } from './util';\nexport const InscribedImage = createShape('image-inscribed', {\n propHooks: getImageUrlHook(),\n markup: [\n {\n tagName: 'ellipse',\n selector: 'background',\n },\n {\n tagName: 'image',\n selector: 'image',\n },\n {\n tagName: 'ellipse',\n selector: 'border',\n attrs: {\n fill: 'none',\n },\n },\n {\n tagName: 'text',\n selector: 'label',\n },\n ],\n attrs: {\n border: {\n refRx: '50%',\n refRy: '50%',\n refCx: '50%',\n refCy: '50%',\n stroke: '#333333',\n strokeWidth: 2,\n },\n background: {\n refRx: '50%',\n refRy: '50%',\n refCx: '50%',\n refCy: '50%',\n fill: '#ffffff',\n },\n image: {\n // The image corners touch the border when its size is Math.sqrt(2) / 2 = 0.707.. ~= 70%\n refWidth: '68%',\n refHeight: '68%',\n // The image offset is calculated as (100% - 68%) / 2\n refX: '16%',\n refY: '16%',\n preserveAspectRatio: 'xMidYMid',\n // xlinkHref: '[URL]'\n },\n // label: {\n // refX: '50%',\n // refY: '100%',\n // refY2: 10,\n // textAnchor: 'middle',\n // textVerticalAnchor: 'top',\n // },\n },\n});\n//# sourceMappingURL=image-inscribed.js.map","import { Edge as EdgeBase } from '../../model/edge';\nexport const Edge = EdgeBase.define({\n shape: 'edge',\n markup: [\n {\n tagName: 'path',\n selector: 'wrap',\n groupSelector: 'lines',\n attrs: {\n fill: 'none',\n cursor: 'pointer',\n stroke: 'transparent',\n strokeLinecap: 'round',\n },\n },\n {\n tagName: 'path',\n selector: 'line',\n groupSelector: 'lines',\n attrs: {\n fill: 'none',\n pointerEvents: 'none',\n },\n },\n ],\n attrs: {\n lines: {\n connection: true,\n strokeLinejoin: 'round',\n },\n wrap: {\n strokeWidth: 10,\n },\n line: {\n stroke: '#333',\n strokeWidth: 2,\n targetMarker: 'classic',\n },\n },\n});\n//# sourceMappingURL=edge.js.map","import { Edge } from '../../model/edge';\nexport const ShadowEdge = Edge.define({\n shape: 'shadow-edge',\n markup: [\n {\n tagName: 'path',\n selector: 'shadow',\n attrs: {\n fill: 'none',\n },\n },\n {\n tagName: 'path',\n selector: 'line',\n attrs: {\n fill: 'none',\n cursor: 'pointer',\n },\n },\n ],\n attrs: {\n line: {\n connection: true,\n stroke: '#FF0000',\n strokeWidth: 20,\n strokeLinejoin: 'round',\n targetMarker: {\n name: 'path',\n stroke: 'none',\n d: 'M 0 -10 -10 0 0 10 z',\n offsetX: -5,\n },\n sourceMarker: {\n name: 'path',\n stroke: 'none',\n d: 'M -10 -10 0 0 -10 10 0 10 0 -10 z',\n offsetX: -5,\n },\n },\n shadow: {\n connection: true,\n refX: 3,\n refY: 6,\n stroke: '#000000',\n strokeOpacity: 0.2,\n strokeWidth: 20,\n strokeLinejoin: 'round',\n targetMarker: {\n name: 'path',\n d: 'M 0 -10 -10 0 0 10 z',\n stroke: 'none',\n offsetX: -5,\n },\n sourceMarker: {\n name: 'path',\n stroke: 'none',\n d: 'M -10 -10 0 0 -10 10 0 10 0 -10 z',\n offsetX: -5,\n },\n },\n },\n});\n//# sourceMappingURL=edge-shadow.js.map","import { Edge } from '../../model/edge';\nexport const DoubleEdge = Edge.define({\n shape: 'double-edge',\n markup: [\n {\n tagName: 'path',\n selector: 'outline',\n attrs: {\n fill: 'none',\n },\n },\n {\n tagName: 'path',\n selector: 'line',\n attrs: {\n fill: 'none',\n cursor: 'pointer',\n },\n },\n ],\n attrs: {\n line: {\n connection: true,\n stroke: '#dddddd',\n strokeWidth: 4,\n strokeLinejoin: 'round',\n targetMarker: {\n tagName: 'path',\n stroke: '#000000',\n d: 'M 10 -3 10 -10 -2 0 10 10 10 3',\n },\n },\n outline: {\n connection: true,\n stroke: '#000000',\n strokeWidth: 6,\n strokeLinejoin: 'round',\n },\n },\n});\n//# sourceMappingURL=edge-doubled.js.map","import { Registry } from '../../registry';\nimport { Markup } from '../../view';\nimport { Node } from '../../model/node';\nimport { NodeView } from '../../view/node';\nimport { Base } from '../base';\nexport class HTML extends Base {\n get html() {\n return this.getHTML();\n }\n set html(val) {\n this.setHTML(val);\n }\n getHTML() {\n return this.store.get('html');\n }\n setHTML(html, options = {}) {\n if (html == null) {\n this.removeHTML(options);\n }\n else {\n this.store.set('html', html, options);\n }\n return this;\n }\n removeHTML(options = {}) {\n return this.store.remove('html', options);\n }\n}\n(function (HTML) {\n class View extends NodeView {\n init() {\n super.init();\n this.cell.on('change:*', () => {\n const shouldUpdate = this.graph.hook.shouldUpdateHTMLComponent(this.cell);\n if (shouldUpdate) {\n this.renderHTMLComponent();\n }\n });\n }\n confirmUpdate(flag) {\n const ret = super.confirmUpdate(flag);\n return this.handleAction(ret, View.action, () => this.renderHTMLComponent());\n }\n renderHTMLComponent() {\n const container = this.selectors.foContent;\n if (container) {\n const $wrap = this.$(container).empty();\n const component = this.graph.hook.getHTMLComponent(this.cell);\n if (component) {\n if (typeof component === 'string') {\n $wrap.html(component);\n }\n else {\n $wrap.append(component);\n }\n }\n }\n }\n }\n HTML.View = View;\n (function (View) {\n View.action = 'html';\n View.config({\n bootstrap: [View.action],\n actions: {\n html: View.action,\n },\n });\n NodeView.registry.register('html-view', View);\n })(View = HTML.View || (HTML.View = {}));\n})(HTML || (HTML = {}));\n(function (HTML) {\n HTML.config({\n view: 'html-view',\n markup: [\n {\n tagName: 'rect',\n selector: 'body',\n },\n Object.assign({}, Markup.getForeignObjectMarkup()),\n {\n tagName: 'text',\n selector: 'label',\n },\n ],\n attrs: {\n body: {\n fill: 'none',\n stroke: 'none',\n refWidth: '100%',\n refHeight: '100%',\n },\n fo: {\n refWidth: '100%',\n refHeight: '100%',\n },\n },\n });\n Node.registry.register('html', HTML);\n})(HTML || (HTML = {}));\n(function (HTML) {\n HTML.componentRegistry = Registry.create({\n type: 'html componnet',\n });\n})(HTML || (HTML = {}));\n//# sourceMappingURL=html.js.map","var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Disablable } from '../../common';\nexport class AutoSave extends Disablable {\n constructor(options) {\n super();\n this.delay = 10;\n this.throttle = 2;\n this.threshold = 5;\n this.changeCount = 0;\n this.timestamp = 0;\n this.options = Object.assign(Object.assign({}, AutoSave.defaultOptions), options);\n this.graph.model.on('cell:change:*', this.onModelChanged, this);\n }\n get graph() {\n return this.options.graph;\n }\n onModelChanged() {\n if (this.disabled) {\n return;\n }\n const now = new Date().getTime();\n const dt = (now - this.timestamp) / 1000;\n if (dt > this.delay ||\n (this.changeCount >= this.threshold && dt > this.throttle)) {\n this.save();\n this.reset();\n }\n else {\n this.changeCount += 1;\n }\n }\n save() {\n this.trigger('save');\n }\n reset() {\n this.changeCount = 0;\n this.timestamp = new Date().getTime();\n }\n dispose() {\n this.graph.model.off('cell:change:*', this.onModelChanged, this);\n }\n}\n__decorate([\n Disablable.dispose()\n], AutoSave.prototype, \"dispose\", null);\n(function (AutoSave) {\n AutoSave.defaultOptions = {\n delay: 10,\n throttle: 2,\n threshold: 5,\n };\n})(AutoSave || (AutoSave = {}));\n//# sourceMappingURL=index.js.map","import { Disposable } from '../common';\nexport class Base extends Disposable {\n constructor(graph) {\n super();\n this.graph = graph;\n this.init();\n }\n get options() {\n return this.graph.options;\n }\n get model() {\n return this.graph.model;\n }\n get view() {\n return this.graph.view;\n }\n init() { }\n}\n//# sourceMappingURL=base.js.map","var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport JQuery from 'jquery';\nimport { Dom, FunctionExt } from '../util';\nimport { Cell } from '../model';\nimport { Config } from '../global';\nimport { View, Markup } from '../view';\nexport class GraphView extends View {\n constructor(graph) {\n super();\n this.graph = graph;\n const { selectors, fragment } = Markup.parseJSONMarkup(GraphView.markup);\n this.background = selectors.background;\n this.grid = selectors.grid;\n this.svg = selectors.svg;\n this.defs = selectors.defs;\n this.viewport = selectors.viewport;\n this.primer = selectors.primer;\n this.stage = selectors.stage;\n this.decorator = selectors.decorator;\n this.overlay = selectors.overlay;\n this.container = this.options.container;\n this.restore = GraphView.snapshoot(this.container);\n this.$(this.container)\n .addClass(this.prefixClassName('graph'))\n .append(fragment);\n this.delegateEvents();\n }\n get model() {\n return this.graph.model;\n }\n get options() {\n return this.graph.options;\n }\n delegateEvents() {\n const ctor = this.constructor;\n super.delegateEvents(ctor.events);\n return this;\n }\n /**\n * Guard the specified event. If the event is not interesting, it\n * returns `true`, otherwise returns `false`.\n */\n guard(e, view) {\n // handled as `contextmenu` type\n if (e.type === 'mousedown' && e.button === 2) {\n return true;\n }\n if (this.options.guard && this.options.guard(e, view)) {\n return true;\n }\n if (e.data && e.data.guarded !== undefined) {\n return e.data.guarded;\n }\n if (view && view.cell && Cell.isCell(view.cell)) {\n return false;\n }\n if (this.svg === e.target ||\n this.container === e.target ||\n JQuery.contains(this.svg, e.target)) {\n return false;\n }\n return true;\n }\n findView(elem) {\n return this.graph.renderer.findViewByElem(elem);\n }\n onDblClick(evt) {\n if (this.options.preventDefaultDblClick) {\n evt.preventDefault();\n }\n const e = this.normalizeEvent(evt);\n const view = this.findView(e.target);\n if (this.guard(e, view)) {\n return;\n }\n const localPoint = this.graph.snapToGrid(e.clientX, e.clientY);\n if (view) {\n view.onDblClick(e, localPoint.x, localPoint.y);\n }\n else {\n this.graph.trigger('blank:dblclick', {\n e,\n x: localPoint.x,\n y: localPoint.y,\n });\n }\n }\n onClick(evt) {\n if (this.getMouseMovedCount(evt) <= this.options.clickThreshold) {\n const e = this.normalizeEvent(evt);\n const view = this.findView(e.target);\n if (this.guard(e, view)) {\n return;\n }\n const localPoint = this.graph.snapToGrid(e.clientX, e.clientY);\n if (view) {\n view.onClick(e, localPoint.x, localPoint.y);\n }\n else {\n this.graph.trigger('blank:click', {\n e,\n x: localPoint.x,\n y: localPoint.y,\n });\n }\n }\n }\n onContextMenu(evt) {\n if (this.options.preventDefaultContextMenu) {\n evt.preventDefault();\n }\n const e = this.normalizeEvent(evt);\n const view = this.findView(e.target);\n if (this.guard(e, view)) {\n return;\n }\n const localPoint = this.graph.snapToGrid(e.clientX, e.clientY);\n if (view) {\n view.onContextMenu(e, localPoint.x, localPoint.y);\n }\n else {\n this.graph.trigger('blank:contextmenu', {\n e,\n x: localPoint.x,\n y: localPoint.y,\n });\n }\n }\n delegateDragEvents(e, view) {\n if (e.data == null) {\n e.data = {};\n }\n this.setEventData(e, {\n currentView: view || null,\n mouseMovedCount: 0,\n startPosition: {\n x: e.clientX,\n y: e.clientY,\n },\n });\n const ctor = this.constructor;\n this.delegateDocumentEvents(ctor.documentEvents, e.data);\n this.undelegateEvents();\n }\n getMouseMovedCount(e) {\n const data = this.getEventData(e);\n return data.mouseMovedCount || 0;\n }\n onMouseDown(evt) {\n const e = this.normalizeEvent(evt);\n const view = this.findView(e.target);\n if (this.guard(e, view)) {\n return;\n }\n if (this.options.preventDefaultMouseDown) {\n e.preventDefault();\n }\n const localPoint = this.graph.snapToGrid(e.clientX, e.clientY);\n if (view) {\n view.onMouseDown(e, localPoint.x, localPoint.y);\n }\n else {\n if (this.options.preventDefaultBlankAction) {\n e.preventDefault();\n }\n this.graph.trigger('blank:mousedown', {\n e,\n x: localPoint.x,\n y: localPoint.y,\n });\n }\n this.delegateDragEvents(e, view);\n }\n onMouseMove(evt) {\n const data = this.getEventData(evt);\n const startPosition = data.startPosition;\n if (startPosition &&\n startPosition.x === evt.clientX &&\n startPosition.y === evt.clientY) {\n return;\n }\n if (data.mouseMovedCount == null) {\n data.mouseMovedCount = 0;\n }\n data.mouseMovedCount += 1;\n const mouseMovedCount = data.mouseMovedCount;\n if (mouseMovedCount <= this.options.moveThreshold) {\n return;\n }\n const e = this.normalizeEvent(evt);\n const localPoint = this.graph.snapToGrid(e.clientX, e.clientY);\n const view = data.currentView;\n if (view) {\n view.onMouseMove(e, localPoint.x, localPoint.y);\n }\n else {\n this.graph.trigger('blank:mousemove', {\n e,\n x: localPoint.x,\n y: localPoint.y,\n });\n }\n this.setEventData(e, data);\n }\n onMouseUp(e) {\n this.undelegateDocumentEvents();\n const normalized = this.normalizeEvent(e);\n const localPoint = this.graph.snapToGrid(normalized.clientX, normalized.clientY);\n const data = this.getEventData(e);\n const view = data.currentView;\n if (view) {\n view.onMouseUp(normalized, localPoint.x, localPoint.y);\n }\n else {\n this.graph.trigger('blank:mouseup', {\n e: normalized,\n x: localPoint.x,\n y: localPoint.y,\n });\n }\n if (!e.isPropagationStopped()) {\n this.onClick(JQuery.Event(e, {\n type: 'click',\n data: e.data,\n }));\n }\n e.stopImmediatePropagation();\n this.delegateEvents();\n }\n onMouseOver(evt) {\n const e = this.normalizeEvent(evt);\n const view = this.findView(e.target);\n if (this.guard(e, view)) {\n return;\n }\n if (view) {\n view.onMouseOver(e);\n }\n else {\n // prevent border of paper from triggering this\n if (this.container === e.target) {\n return;\n }\n this.graph.trigger('blank:mouseover', { e });\n }\n }\n onMouseOut(evt) {\n const e = this.normalizeEvent(evt);\n const view = this.findView(e.target);\n if (this.guard(e, view)) {\n return;\n }\n if (view) {\n view.onMouseOut(e);\n }\n else {\n if (this.container === e.target) {\n return;\n }\n this.graph.trigger('blank:mouseout', { e });\n }\n }\n onMouseEnter(evt) {\n const e = this.normalizeEvent(evt);\n const view = this.findView(e.target);\n if (this.guard(e, view)) {\n return;\n }\n const relatedView = this.graph.renderer.findViewByElem(e.relatedTarget);\n if (view) {\n if (relatedView === view) {\n // mouse moved from tool to view\n return;\n }\n view.onMouseEnter(e);\n }\n else {\n if (relatedView) {\n return;\n }\n this.graph.trigger('graph:mouseenter', { e });\n }\n }\n onMouseLeave(evt) {\n const e = this.normalizeEvent(evt);\n const view = this.findView(e.target);\n if (this.guard(e, view)) {\n return;\n }\n const relatedView = this.graph.renderer.findViewByElem(e.relatedTarget);\n if (view) {\n if (relatedView === view) {\n // mouse moved from view to tool\n return;\n }\n view.onMouseLeave(e);\n }\n else {\n if (relatedView) {\n return;\n }\n this.graph.trigger('graph:mouseleave', { e });\n }\n }\n onMouseWheel(evt) {\n const e = this.normalizeEvent(evt);\n const view = this.findView(e.target);\n if (this.guard(e, view)) {\n return;\n }\n const originalEvent = e.originalEvent;\n const localPoint = this.graph.snapToGrid(originalEvent.clientX, originalEvent.clientY);\n const delta = Math.max(-1, Math.min(1, originalEvent.wheelDelta || -originalEvent.detail));\n if (view) {\n view.onMouseWheel(e, localPoint.x, localPoint.y, delta);\n }\n else {\n this.graph.trigger('blank:mousewheel', {\n e,\n delta,\n x: localPoint.x,\n y: localPoint.y,\n });\n }\n }\n onCustomEvent(evt) {\n const elem = evt.currentTarget;\n const event = elem.getAttribute('event') || elem.getAttribute('data-event');\n if (event) {\n const view = this.findView(elem);\n if (view) {\n const e = this.normalizeEvent(evt);\n if (this.guard(e, view)) {\n return;\n }\n const localPoint = this.graph.snapToGrid(e.clientX, e.clientY);\n view.onCustomEvent(e, event, localPoint.x, localPoint.y);\n }\n }\n }\n handleMagnetEvent(evt, handler) {\n const magnetElem = evt.currentTarget;\n const magnetValue = magnetElem.getAttribute('magnet');\n if (magnetValue && magnetValue.toLowerCase() !== 'false') {\n const view = this.findView(magnetElem);\n if (view) {\n const e = this.normalizeEvent(evt);\n if (this.guard(e, view)) {\n return;\n }\n const localPoint = this.graph.snapToGrid(e.clientX, e.clientY);\n FunctionExt.call(handler, this.graph, view, e, magnetElem, localPoint.x, localPoint.y);\n }\n }\n }\n onMagnetMouseDown(e) {\n this.handleMagnetEvent(e, (view, e, magnet, x, y) => {\n view.onMagnetMouseDown(e, magnet, x, y);\n });\n }\n onMagnetDblClick(e) {\n this.handleMagnetEvent(e, (view, e, magnet, x, y) => {\n view.onMagnetDblClick(e, magnet, x, y);\n });\n }\n onMagnetContextMenu(e) {\n if (this.options.preventDefaultContextMenu) {\n e.preventDefault();\n }\n this.handleMagnetEvent(e, (view, e, magnet, x, y) => {\n view.onMagnetContextMenu(e, magnet, x, y);\n });\n }\n onLabelMouseDown(evt) {\n const labelNode = evt.currentTarget;\n const view = this.findView(labelNode);\n if (view) {\n const e = this.normalizeEvent(evt);\n if (this.guard(e, view)) {\n return;\n }\n const localPoint = this.graph.snapToGrid(e.clientX, e.clientY);\n view.onLabelMouseDown(e, localPoint.x, localPoint.y);\n }\n }\n onImageDragStart() {\n // This is the only way to prevent image dragging in Firefox that works.\n // Setting -moz-user-select: none, draggable=\"false\" attribute or\n // user-drag: none didn't help.\n return false;\n }\n dispose() {\n this.undelegateEvents();\n this.undelegateDocumentEvents();\n this.restore();\n this.restore = () => { };\n }\n}\n__decorate([\n View.dispose()\n], GraphView.prototype, \"dispose\", null);\n(function (GraphView) {\n const prefixCls = `${Config.prefixCls}-graph`;\n GraphView.markup = [\n {\n ns: Dom.ns.xhtml,\n tagName: 'div',\n selector: 'background',\n className: `${prefixCls}-background`,\n },\n {\n ns: Dom.ns.xhtml,\n tagName: 'div',\n selector: 'grid',\n className: `${prefixCls}-grid`,\n },\n {\n ns: Dom.ns.svg,\n tagName: 'svg',\n selector: 'svg',\n className: `${prefixCls}-svg`,\n attrs: {\n width: '100%',\n height: '100%',\n 'xmlns:xlink': Dom.ns.xlink,\n },\n children: [\n {\n tagName: 'defs',\n selector: 'defs',\n },\n {\n tagName: 'g',\n selector: 'viewport',\n className: `${prefixCls}-svg-viewport`,\n children: [\n {\n tagName: 'g',\n selector: 'primer',\n className: `${prefixCls}-svg-primer`,\n },\n {\n tagName: 'g',\n selector: 'stage',\n className: `${prefixCls}-svg-stage`,\n },\n {\n tagName: 'g',\n selector: 'decorator',\n className: `${prefixCls}-svg-decorator`,\n },\n {\n tagName: 'g',\n selector: 'overlay',\n className: `${prefixCls}-svg-overlay`,\n },\n ],\n },\n ],\n },\n ];\n function snapshoot(elem) {\n const cloned = elem.cloneNode();\n elem.childNodes.forEach((child) => cloned.appendChild(child));\n return () => {\n // remove all children\n Dom.empty(elem);\n // remove all attributes\n while (elem.attributes.length > 0) {\n elem.removeAttribute(elem.attributes[0].name);\n }\n // restore attributes\n for (let i = 0, l = cloned.attributes.length; i < l; i += 1) {\n const attr = cloned.attributes[i];\n elem.setAttribute(attr.name, attr.value);\n }\n // restore children\n cloned.childNodes.forEach((child) => elem.appendChild(child));\n };\n }\n GraphView.snapshoot = snapshoot;\n})(GraphView || (GraphView = {}));\n(function (GraphView) {\n const prefixCls = Config.prefixCls;\n GraphView.events = {\n dblclick: 'onDblClick',\n contextmenu: 'onContextMenu',\n touchstart: 'onMouseDown',\n mousedown: 'onMouseDown',\n mouseover: 'onMouseOver',\n mouseout: 'onMouseOut',\n mouseenter: 'onMouseEnter',\n mouseleave: 'onMouseLeave',\n mousewheel: 'onMouseWheel',\n DOMMouseScroll: 'onMouseWheel',\n [`mouseenter .${prefixCls}-cell`]: 'onMouseEnter',\n [`mouseleave .${prefixCls}-cell`]: 'onMouseLeave',\n [`mouseenter .${prefixCls}-cell-tools`]: 'onMouseEnter',\n [`mouseleave .${prefixCls}-cell-tools`]: 'onMouseLeave',\n [`mousedown .${prefixCls}-cell [event]`]: 'onCustomEvent',\n [`touchstart .${prefixCls}-cell [event]`]: 'onCustomEvent',\n [`mousedown .${prefixCls}-cell [data-event]`]: 'onCustomEvent',\n [`touchstart .${prefixCls}-cell [data-event]`]: 'onCustomEvent',\n [`dblclick .${prefixCls}-cell [magnet]`]: 'onMagnetDblClick',\n [`contextmenu .${prefixCls}-cell [magnet]`]: 'onMagnetContextMenu',\n [`mousedown .${prefixCls}-cell [magnet]`]: 'onMagnetMouseDown',\n [`touchstart .${prefixCls}-cell [magnet]`]: 'onMagnetMouseDown',\n [`dblclick .${prefixCls}-cell [data-magnet]`]: 'onMagnetDblClick',\n [`contextmenu .${prefixCls}-cell [data-magnet]`]: 'onMagnetContextMenu',\n [`mousedown .${prefixCls}-cell [data-magnet]`]: 'onMagnetMouseDown',\n [`touchstart .${prefixCls}-cell [data-magnet]`]: 'onMagnetMouseDown',\n [`dragstart .${prefixCls}-cell image`]: 'onImageDragStart',\n [`mousedown .${prefixCls}-edge .${prefixCls}-edge-label`]: 'onLabelMouseDown',\n [`touchstart .${prefixCls}-edge .${prefixCls}-edge-label`]: 'onLabelMouseDown',\n };\n GraphView.documentEvents = {\n mousemove: 'onMouseMove',\n touchmove: 'onMouseMove',\n mouseup: 'onMouseUp',\n touchend: 'onMouseUp',\n touchcancel: 'onMouseUp',\n };\n})(GraphView || (GraphView = {}));\n//# sourceMappingURL=view.js.map","export var Decorator;\n(function (Decorator) {\n function checkScroller(err, warning) {\n return (target, methodName, descriptor) => {\n const raw = descriptor.value;\n descriptor.value = function (...args) {\n const scroller = this.scroller.widget;\n if (scroller == null) {\n const msg = `Shoule enable scroller to use method '${methodName}'`;\n if (err !== false) {\n console.error(msg);\n throw new Error(msg);\n }\n if (warning !== false) {\n console.warn(msg);\n }\n return this;\n }\n return raw.call(this, ...args);\n };\n };\n }\n Decorator.checkScroller = checkScroller;\n})(Decorator || (Decorator = {}));\n//# sourceMappingURL=decorator.js.map","var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Config } from '../global/config';\nimport { content } from '../style/raw';\nimport { Platform } from '../util';\nimport { Base } from './base';\nexport class CSSManager extends Base {\n init() {\n if (Config.autoInsertCSS) {\n CSSManager.ensure();\n }\n }\n dispose() {\n CSSManager.clean();\n }\n}\n__decorate([\n CSSManager.dispose()\n], CSSManager.prototype, \"dispose\", null);\n(function (CSSManager) {\n let styleElement;\n let counter = 0;\n function ensure() {\n counter += 1;\n if (counter > 1)\n return;\n if (!Platform.isApplyingHMR()) {\n styleElement = document.createElement('style');\n styleElement.setAttribute('type', 'text/css');\n styleElement.textContent = content;\n const head = document.querySelector('head');\n if (head) {\n head.insertBefore(styleElement, head.firstChild);\n }\n }\n }\n CSSManager.ensure = ensure;\n function clean() {\n counter -= 1;\n if (counter > 0)\n return;\n if (styleElement && styleElement.parentNode) {\n styleElement.parentNode.removeChild(styleElement);\n }\n styleElement = null;\n }\n CSSManager.clean = clean;\n})(CSSManager || (CSSManager = {}));\n//# sourceMappingURL=css.js.map","/* eslint-disable */\n/**\n * Auto generated file, do not modify it!\n */\nexport const content = `.x6-graph {\n position: relative;\n outline: none;\n}\n.x6-graph-background,\n.x6-graph-grid,\n.x6-graph-svg {\n position: absolute;\n top: 0;\n right: 0;\n bottom: 0;\n left: 0;\n}\n.x6-graph-background-stage,\n.x6-graph-grid-stage,\n.x6-graph-svg-stage {\n user-select: none;\n}\n.x6-graph.x6-graph-pannable {\n cursor: grab;\n cursor: -moz-grab;\n cursor: -webkit-grab;\n}\n.x6-graph.x6-graph-panning {\n cursor: grabbing;\n cursor: -moz-grabbing;\n cursor: -webkit-grabbing;\n user-select: none;\n}\n.x6-node {\n cursor: move;\n /* stylelint-disable-next-line */\n}\n.x6-node.x6-node-immovable {\n cursor: default;\n}\n.x6-node * {\n -webkit-user-drag: none;\n}\n.x6-node .scalable * {\n vector-effect: non-scaling-stroke;\n}\n.x6-node [magnet='true'] {\n cursor: crosshair;\n transition: opacity 0.3s;\n}\n.x6-node [magnet='true']:hover {\n opacity: 0.7;\n}\n.x6-node foreignObject {\n display: block;\n overflow: visible;\n background-color: transparent;\n}\n.x6-node foreignObject > body {\n position: static;\n width: 100%;\n height: 100%;\n margin: 0;\n padding: 0;\n overflow: visible;\n background-color: transparent;\n}\n.x6-edge .source-marker,\n.x6-edge .target-marker {\n vector-effect: non-scaling-stroke;\n}\n.x6-edge .connection {\n stroke-linejoin: round;\n fill: none;\n}\n.x6-edge .connection-wrap {\n cursor: move;\n opacity: 0;\n fill: none;\n stroke: #000;\n stroke-width: 15;\n stroke-linecap: round;\n stroke-linejoin: round;\n}\n.x6-edge .connection-wrap:hover {\n opacity: 0.4;\n stroke-opacity: 0.4;\n}\n.x6-edge .vertices {\n cursor: move;\n opacity: 0;\n}\n.x6-edge .vertices .vertex {\n fill: #1abc9c;\n}\n.x6-edge .vertices .vertex :hover {\n fill: #34495e;\n stroke: none;\n}\n.x6-edge .vertices .vertex-remove {\n cursor: pointer;\n fill: #fff;\n}\n.x6-edge .vertices .vertex-remove-area {\n cursor: pointer;\n opacity: 0.1;\n}\n.x6-edge .vertices .vertex-group:hover .vertex-remove-area {\n opacity: 1;\n}\n.x6-edge .arrowheads {\n cursor: move;\n opacity: 0;\n}\n.x6-edge .arrowheads .arrowhead {\n fill: #1abc9c;\n}\n.x6-edge .arrowheads .arrowhead :hover {\n fill: #f39c12;\n stroke: none;\n}\n.x6-edge .tools {\n cursor: pointer;\n opacity: 0;\n}\n.x6-edge .tools .tool-options {\n display: none;\n}\n.x6-edge .tools .tool-remove circle {\n fill: #f00;\n}\n.x6-edge .tools .tool-remove path {\n fill: #fff;\n}\n.x6-edge:hover .vertices,\n.x6-edge:hover .arrowheads,\n.x6-edge:hover .tools {\n opacity: 1;\n}\n.x6-highlight-opacity {\n opacity: 0.3;\n}\n@keyframes halo-pie-visibility {\n 0% {\n visibility: hidden;\n }\n 100% {\n visibility: visible;\n }\n}\n@keyframes halo-pie-opening {\n 0% {\n transform: scale(0.4) rotate(-20deg);\n }\n 100% {\n transform: scale(1) rotate(0);\n }\n}\n.x6-widget-handle {\n position: absolute;\n width: 20px;\n height: 20px;\n background-color: transparent;\n background-repeat: no-repeat;\n background-position: 0 0;\n background-size: 20px 20px;\n cursor: pointer;\n user-select: none;\n pointer-events: auto;\n -webkit-user-drag: none;\n user-drag: none;\n /* stylelint-disable-line */\n}\n.x6-widget-handle.hidden {\n display: none;\n}\n.x6-widget-handle-selected {\n background-color: rgba(0, 0, 0, 0.1);\n border-radius: 3px;\n}\n.x6-widget-handle-remove {\n background-image: url('data:image/svg+xml;charset=utf8,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22utf-8%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20width%3D%2218.75px%22%20height%3D%2218.75px%22%20viewBox%3D%220%200%2018.75%2018.75%22%20enable-background%3D%22new%200%200%2018.75%2018.75%22%20xml%3Aspace%3D%22preserve%22%3E%3Cg%3E%3Cpath%20fill%3D%22%236A6C8A%22%20d%3D%22M15.386%2C3.365c-3.315-3.314-8.707-3.313-12.021%2C0c-3.314%2C3.315-3.314%2C8.706%2C0%2C12.02%20c3.314%2C3.314%2C8.707%2C3.314%2C12.021%2C0S18.699%2C6.68%2C15.386%2C3.365L15.386%2C3.365z%20M4.152%2C14.598C1.273%2C11.719%2C1.273%2C7.035%2C4.153%2C4.154%20c2.88-2.88%2C7.563-2.88%2C10.443%2C0c2.881%2C2.88%2C2.881%2C7.562%2C0%2C10.443C11.716%2C17.477%2C7.032%2C17.477%2C4.152%2C14.598L4.152%2C14.598z%22%2F%3E%3Cpath%20fill%3D%22%236A6C8A%22%20d%3D%22M12.157%2C11.371L7.38%2C6.593C7.162%2C6.375%2C6.809%2C6.375%2C6.592%2C6.592c-0.218%2C0.219-0.218%2C0.572%2C0%2C0.79%20l4.776%2C4.776c0.218%2C0.219%2C0.571%2C0.219%2C0.79%2C0C12.375%2C11.941%2C12.375%2C11.588%2C12.157%2C11.371L12.157%2C11.371z%22%2F%3E%3Cpath%20fill%3D%22%236A6C8A%22%20d%3D%22M11.369%2C6.593l-4.777%2C4.778c-0.217%2C0.217-0.217%2C0.568%2C0%2C0.787c0.219%2C0.219%2C0.571%2C0.217%2C0.788%2C0l4.777-4.777%20c0.218-0.218%2C0.218-0.571%2C0.001-0.789C11.939%2C6.375%2C11.587%2C6.375%2C11.369%2C6.593L11.369%2C6.593z%22%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E%20');\n cursor: pointer;\n}\n.x6-widget-handle-remove:hover {\n background-image: url('data:image/svg+xml;charset=utf8,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22utf-8%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20width%3D%2218.75px%22%20height%3D%2218.75px%22%20viewBox%3D%220%200%2018.75%2018.75%22%20enable-background%3D%22new%200%200%2018.75%2018.75%22%20xml%3Aspace%3D%22preserve%22%3E%3Cg%3E%3Cpath%20fill%3D%22%236A6C8A%22%20d%3D%22M15.386%2C3.365c-3.315-3.314-8.707-3.313-12.021%2C0c-3.314%2C3.315-3.314%2C8.706%2C0%2C12.02%20c3.314%2C3.314%2C8.707%2C3.314%2C12.021%2C0S18.699%2C6.68%2C15.386%2C3.365L15.386%2C3.365z%22%2F%3E%3Cpath%20fill%3D%22%23FFFFFF%22%20d%3D%22M12.157%2C11.371L7.38%2C6.593C7.162%2C6.375%2C6.809%2C6.375%2C6.592%2C6.592c-0.218%2C0.219-0.218%2C0.572%2C0%2C0.79%20l4.776%2C4.776c0.218%2C0.219%2C0.571%2C0.219%2C0.79%2C0C12.375%2C11.941%2C12.375%2C11.588%2C12.157%2C11.371L12.157%2C11.371z%22%2F%3E%3Cpath%20fill%3D%22%23FFFFFF%22%20d%3D%22M11.369%2C6.593l-4.777%2C4.778c-0.217%2C0.217-0.217%2C0.568%2C0%2C0.787c0.219%2C0.219%2C0.571%2C0.217%2C0.788%2C0l4.777-4.777%20c0.218-0.218%2C0.218-0.571%2C0.001-0.789C11.939%2C6.375%2C11.587%2C6.375%2C11.369%2C6.593L11.369%2C6.593z%22%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E%20');\n}\n.x6-widget-handle-rotate {\n background-image: url('data:image/svg+xml;charset=utf8,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22utf-8%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20width%3D%2218.75px%22%20height%3D%2218.75px%22%20viewBox%3D%220%200%2018.75%2018.75%22%20enable-background%3D%22new%200%200%2018.75%2018.75%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpath%20fill%3D%22%236A6C8A%22%20d%3D%22M9.374%2C17.592c-4.176%2C0-7.57-3.401-7.57-7.575c0-4.175%2C3.395-7.574%2C7.57-7.574c0.28%2C0%2C0.56%2C0.018%2C0.837%2C0.05%20V1.268c0-0.158%2C0.099-0.3%2C0.239-0.36c0.151-0.058%2C0.315-0.026%2C0.428%2C0.086l2.683%2C2.688c0.152%2C0.154%2C0.152%2C0.399%2C0%2C0.553l-2.68%2C2.693%20c-0.115%2C0.112-0.279%2C0.147-0.431%2C0.087c-0.141-0.063-0.239-0.205-0.239-0.361V5.296C9.934%2C5.243%2C9.654%2C5.22%2C9.374%2C5.22%20c-2.646%2C0-4.796%2C2.152-4.796%2C4.797s2.154%2C4.798%2C4.796%2C4.798c2.645%2C0%2C4.798-2.153%2C4.798-4.798c0-0.214%2C0.174-0.391%2C0.391-0.391h1.991%20c0.217%2C0%2C0.394%2C0.177%2C0.394%2C0.391C16.947%2C14.19%2C13.549%2C17.592%2C9.374%2C17.592L9.374%2C17.592z%20M9.374%2C17.592%22%2F%3E%3C%2Fsvg%3E%20');\n cursor: move;\n}\n.x6-widget-handle-rotate:hover {\n background-image: url('data:image/svg+xml;charset=utf8,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22utf-8%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20width%3D%2218.75px%22%20height%3D%2218.75px%22%20viewBox%3D%220%200%2018.75%2018.75%22%20enable-background%3D%22new%200%200%2018.75%2018.75%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpath%20fill%3D%22%23FD6EB6%22%20d%3D%22M9.374%2C17.592c-4.176%2C0-7.57-3.401-7.57-7.575c0-4.175%2C3.395-7.574%2C7.57-7.574c0.28%2C0%2C0.56%2C0.018%2C0.837%2C0.05%20V1.268c0-0.158%2C0.099-0.3%2C0.239-0.36c0.151-0.058%2C0.315-0.026%2C0.428%2C0.086l2.683%2C2.688c0.152%2C0.154%2C0.152%2C0.399%2C0%2C0.553l-2.68%2C2.693%20c-0.115%2C0.112-0.279%2C0.147-0.431%2C0.087c-0.141-0.063-0.239-0.205-0.239-0.361V5.296C9.934%2C5.243%2C9.654%2C5.22%2C9.374%2C5.22%20c-2.646%2C0-4.796%2C2.152-4.796%2C4.797s2.154%2C4.798%2C4.796%2C4.798c2.645%2C0%2C4.798-2.153%2C4.798-4.798c0-0.214%2C0.174-0.391%2C0.391-0.391h1.991%20c0.217%2C0%2C0.394%2C0.177%2C0.394%2C0.391C16.947%2C14.19%2C13.549%2C17.592%2C9.374%2C17.592L9.374%2C17.592z%20M9.374%2C17.592%22%2F%3E%3C%2Fsvg%3E%20');\n}\n.x6-widget-handle-resize {\n background-image: url('data:image/svg+xml;charset=utf8,%3C%3Fxml%20version%3D%221.0%22%20%3F%3E%3Csvg%20height%3D%2224px%22%20version%3D%221.1%22%20viewBox%3D%220%200%2024%2024%22%20width%3D%2224px%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Asketch%3D%22http%3A%2F%2Fwww.bohemiancoding.com%2Fsketch%2Fns%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%3E%3Ctitle%2F%3E%3Cdesc%2F%3E%3Cdefs%2F%3E%3Cg%20fill%3D%22none%22%20fill-rule%3D%22evenodd%22%20id%3D%22miu%22%20stroke%3D%22none%22%20stroke-width%3D%221%22%3E%3Cg%20id%3D%22Artboard-1%22%20transform%3D%22translate(-251.000000%2C%20-443.000000)%22%3E%3Cg%20id%3D%22slice%22%20transform%3D%22translate(215.000000%2C%20119.000000)%22%2F%3E%3Cpath%20d%3D%22M252%2C448%20L256%2C448%20L256%2C444%20L252%2C444%20L252%2C448%20Z%20M257%2C448%20L269%2C448%20L269%2C446%20L257%2C446%20L257%2C448%20Z%20M257%2C464%20L269%2C464%20L269%2C462%20L257%2C462%20L257%2C464%20Z%20M270%2C444%20L270%2C448%20L274%2C448%20L274%2C444%20L270%2C444%20Z%20M252%2C462%20L252%2C466%20L256%2C466%20L256%2C462%20L252%2C462%20Z%20M270%2C462%20L270%2C466%20L274%2C466%20L274%2C462%20L270%2C462%20Z%20M254%2C461%20L256%2C461%20L256%2C449%20L254%2C449%20L254%2C461%20Z%20M270%2C461%20L272%2C461%20L272%2C449%20L270%2C449%20L270%2C461%20Z%22%20fill%3D%22%236A6C8A%22%20id%3D%22editor-crop-glyph%22%2F%3E%3C%2Fg%3E%3C%2Fg%3E%3C%2Fsvg%3E');\n cursor: se-resize;\n}\n.x6-widget-handle-resize:hover {\n background-image: url('data:image/svg+xml;charset=utf8,%3C%3Fxml%20version%3D%221.0%22%20%3F%3E%3Csvg%20height%3D%2224px%22%20version%3D%221.1%22%20viewBox%3D%220%200%2024%2024%22%20width%3D%2224px%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Asketch%3D%22http%3A%2F%2Fwww.bohemiancoding.com%2Fsketch%2Fns%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%3E%3Ctitle%2F%3E%3Cdesc%2F%3E%3Cdefs%2F%3E%3Cg%20fill%3D%22none%22%20fill-rule%3D%22evenodd%22%20id%3D%22miu%22%20stroke%3D%22none%22%20stroke-width%3D%221%22%3E%3Cg%20id%3D%22Artboard-1%22%20transform%3D%22translate(-251.000000%2C%20-443.000000)%22%3E%3Cg%20id%3D%22slice%22%20transform%3D%22translate(215.000000%2C%20119.000000)%22%2F%3E%3Cpath%20d%3D%22M252%2C448%20L256%2C448%20L256%2C444%20L252%2C444%20L252%2C448%20Z%20M257%2C448%20L269%2C448%20L269%2C446%20L257%2C446%20L257%2C448%20Z%20M257%2C464%20L269%2C464%20L269%2C462%20L257%2C462%20L257%2C464%20Z%20M270%2C444%20L270%2C448%20L274%2C448%20L274%2C444%20L270%2C444%20Z%20M252%2C462%20L252%2C466%20L256%2C466%20L256%2C462%20L252%2C462%20Z%20M270%2C462%20L270%2C466%20L274%2C466%20L274%2C462%20L270%2C462%20Z%20M254%2C461%20L256%2C461%20L256%2C449%20L254%2C449%20L254%2C461%20Z%20M270%2C461%20L272%2C461%20L272%2C449%20L270%2C449%20L270%2C461%20Z%22%20fill%3D%22%23FD6EB6%22%20id%3D%22editor-crop-glyph%22%2F%3E%3C%2Fg%3E%3C%2Fg%3E%3C%2Fsvg%3E');\n}\n.x6-widget-handle-clone {\n background-image: url('data:image/svg+xml;charset=utf8,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22utf-8%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20width%3D%2218.75px%22%20height%3D%2218.75px%22%20viewBox%3D%220%200%2018.75%2018.75%22%20enable-background%3D%22new%200%200%2018.75%2018.75%22%20xml%3Aspace%3D%22preserve%22%3E%3Cg%3E%3Cpath%20fill%3D%22%236A6C8A%22%20d%3D%22M12.852%2C0.875h-9.27c-0.853%2C0-1.547%2C0.694-1.547%2C1.547v10.816h1.547V2.422h9.27V0.875z%20M15.172%2C3.965h-8.5%20c-0.849%2C0-1.547%2C0.698-1.547%2C1.547v10.816c0%2C0.849%2C0.698%2C1.547%2C1.547%2C1.547h8.5c0.85%2C0%2C1.543-0.698%2C1.543-1.547V5.512%20C16.715%2C4.663%2C16.021%2C3.965%2C15.172%2C3.965L15.172%2C3.965z%20M15.172%2C16.328h-8.5V5.512h8.5V16.328z%22%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E%20');\n cursor: move;\n}\n.x6-widget-handle-clone:hover {\n background-image: url('data:image/svg+xml;charset=utf8,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22utf-8%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20width%3D%2218.75px%22%20height%3D%2218.75px%22%20viewBox%3D%220%200%2018.75%2018.75%22%20enable-background%3D%22new%200%200%2018.75%2018.75%22%20xml%3Aspace%3D%22preserve%22%3E%3Cg%3E%3Cpath%20fill%3D%22%23FD6EB6%22%20d%3D%22M12.852%2C0.875h-9.27c-0.853%2C0-1.547%2C0.694-1.547%2C1.547v10.816h1.547V2.422h9.27V0.875z%20M15.172%2C3.965h-8.5%20c-0.849%2C0-1.547%2C0.698-1.547%2C1.547v10.816c0%2C0.849%2C0.698%2C1.547%2C1.547%2C1.547h8.5c0.849%2C0%2C1.543-0.698%2C1.543-1.547V5.512%20C16.715%2C4.663%2C16.021%2C3.965%2C15.172%2C3.965L15.172%2C3.965z%20M15.172%2C16.328h-8.5V5.512h8.5V16.328z%20M15.172%2C16.328%22%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E%20');\n}\n.x6-widget-handle-link {\n background-image: url('data:image/svg+xml;charset=utf8,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22utf-8%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20width%3D%2218.75px%22%20height%3D%2218.75px%22%20viewBox%3D%220%200%2018.75%2018.75%22%20enable-background%3D%22new%200%200%2018.75%2018.75%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpath%20fill%3D%22%236A6C8A%22%20d%3D%22M9.884%2C9.838c0.54-0.551%2C1.005-0.955%2C1.384-1.201c0.463-0.308%2C0.749-0.352%2C0.887-0.352h1.34v1.367%20c0%2C0.104%2C0.061%2C0.2%2C0.154%2C0.242s0.204%2C0.027%2C0.284-0.038l3.168-2.669c0.06-0.051%2C0.096-0.125%2C0.096-0.203S17.16%2C6.83%2C17.101%2C6.781%20l-3.168-2.677c-0.08-0.067-0.19-0.081-0.284-0.038c-0.094%2C0.045-0.154%2C0.139-0.154%2C0.242v1.414h-1.343%20c-1.24%2C0.014-2.215%2C0.67-2.927%2C1.242c-0.797%2C0.65-1.533%2C1.447-2.245%2C2.217c-0.361%2C0.391-0.7%2C0.759-1.044%2C1.1%20c-0.541%2C0.549-1.011%2C0.951-1.395%2C1.199c-0.354%2C0.231-0.678%2C0.357-0.921%2C0.357h-1.8c-0.146%2C0-0.266%2C0.12-0.266%2C0.265v2.029%20c0%2C0.148%2C0.12%2C0.268%2C0.266%2C0.268h1.8l0%2C0c1.255-0.014%2C2.239-0.667%2C2.958-1.24c0.82-0.661%2C1.572-1.475%2C2.297-2.256%20C9.225%2C10.524%2C9.555%2C10.169%2C9.884%2C9.838z%22%2F%3E%3C%2Fsvg%3E%20');\n cursor: move;\n cursor: -moz-grabbing;\n cursor: -webkit-grabbing;\n}\n.x6-widget-handle-link:hover {\n background-image: url('data:image/svg+xml;charset=utf8,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22utf-8%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20width%3D%2218.75px%22%20height%3D%2218.75px%22%20viewBox%3D%220%200%2018.75%2018.75%22%20enable-background%3D%22new%200%200%2018.75%2018.75%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpath%20fill%3D%22%23FD6EB6%22%20d%3D%22M9.884%2C9.838c0.54-0.551%2C1.005-0.955%2C1.384-1.201c0.463-0.308%2C0.749-0.352%2C0.887-0.352h1.34v1.367%20c0%2C0.104%2C0.061%2C0.2%2C0.154%2C0.242s0.204%2C0.027%2C0.284-0.038l3.168-2.669c0.06-0.051%2C0.096-0.125%2C0.096-0.203S17.16%2C6.83%2C17.101%2C6.781%20l-3.168-2.677c-0.08-0.067-0.19-0.081-0.284-0.038c-0.094%2C0.045-0.154%2C0.139-0.154%2C0.242v1.414h-1.343%20c-1.24%2C0.014-2.215%2C0.67-2.927%2C1.242c-0.797%2C0.65-1.533%2C1.447-2.245%2C2.217c-0.361%2C0.391-0.7%2C0.759-1.044%2C1.1%20c-0.541%2C0.549-1.011%2C0.951-1.395%2C1.199c-0.354%2C0.231-0.678%2C0.357-0.921%2C0.357h-1.8c-0.146%2C0-0.266%2C0.12-0.266%2C0.265v2.029%20c0%2C0.148%2C0.12%2C0.268%2C0.266%2C0.268h1.8l0%2C0c1.255-0.014%2C2.239-0.667%2C2.958-1.24c0.82-0.661%2C1.572-1.475%2C2.297-2.256%20C9.225%2C10.524%2C9.555%2C10.169%2C9.884%2C9.838z%22%2F%3E%3C%2Fsvg%3E%20');\n}\n.x6-widget-handle-fork {\n background-image: url('data:image/svg+xml;charset=utf8,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22utf-8%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20width%3D%2218.75px%22%20height%3D%2218.75px%22%20viewBox%3D%220%200%2018.75%2018.75%22%20enable-background%3D%22new%200%200%2018.75%2018.75%22%20xml%3Aspace%3D%22preserve%22%3E%3Cg%3E%3Cg%3E%3Cpath%20fill-rule%3D%22evenodd%22%20clip-rule%3D%22evenodd%22%20fill%3D%22%236A6C8A%22%20d%3D%22M13.307%2C11.593c-0.69%2C0-1.299%2C0.33-1.693%2C0.835l-4.136-2.387%20C7.552%2C9.82%2C7.602%2C9.589%2C7.602%2C9.344c0-0.25-0.051-0.487-0.129-0.71l4.097-2.364c0.393%2C0.536%2C1.022%2C0.888%2C1.737%2C0.888%20c1.193%2C0%2C2.16-0.967%2C2.16-2.159s-0.967-2.159-2.16-2.159c-1.191%2C0-2.158%2C0.967-2.158%2C2.159c0%2C0.076%2C0.014%2C0.149%2C0.021%2C0.223%20L6.848%2C7.716C6.469%2C7.39%2C5.982%2C7.185%2C5.442%2C7.185c-1.191%2C0-2.158%2C0.967-2.158%2C2.159s0.967%2C2.159%2C2.158%2C2.159%20c0.545%2C0%2C1.037-0.208%2C1.417-0.541l4.319%2C2.493c-0.014%2C0.098-0.029%2C0.194-0.029%2C0.296c0%2C1.193%2C0.967%2C2.159%2C2.158%2C2.159%20c1.193%2C0%2C2.16-0.966%2C2.16-2.159C15.467%2C12.559%2C14.5%2C11.593%2C13.307%2C11.593z%22%2F%3E%3C%2Fg%3E%3C%2Fg%3E%3C%2Fsvg%3E%20');\n cursor: move;\n}\n.x6-widget-handle-fork:hover {\n background-image: url('data:image/svg+xml;charset=utf8,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22utf-8%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20width%3D%2218.75px%22%20height%3D%2218.75px%22%20viewBox%3D%220%200%2018.75%2018.75%22%20enable-background%3D%22new%200%200%2018.75%2018.75%22%20xml%3Aspace%3D%22preserve%22%3E%3Cg%3E%3Cg%3E%3Cpath%20fill-rule%3D%22evenodd%22%20clip-rule%3D%22evenodd%22%20fill%3D%22%23FD6EB6%22%20d%3D%22M13.307%2C11.593c-0.69%2C0-1.299%2C0.33-1.693%2C0.835l-4.136-2.387%20c0.075-0.22%2C0.125-0.452%2C0.125-0.697c0-0.25-0.051-0.487-0.129-0.71l4.097-2.365c0.394%2C0.536%2C1.022%2C0.888%2C1.737%2C0.888%20c1.193%2C0%2C2.16-0.967%2C2.16-2.159s-0.967-2.159-2.16-2.159c-1.191%2C0-2.158%2C0.967-2.158%2C2.159c0%2C0.076%2C0.015%2C0.148%2C0.022%2C0.223%20L6.848%2C7.716C6.469%2C7.39%2C5.981%2C7.185%2C5.442%2C7.185c-1.191%2C0-2.158%2C0.967-2.158%2C2.159s0.967%2C2.159%2C2.158%2C2.159%20c0.545%2C0%2C1.037-0.208%2C1.417-0.541l4.319%2C2.493c-0.013%2C0.098-0.029%2C0.194-0.029%2C0.296c0%2C1.193%2C0.967%2C2.159%2C2.158%2C2.159%20c1.193%2C0%2C2.16-0.966%2C2.16-2.159C15.467%2C12.559%2C14.5%2C11.593%2C13.307%2C11.593z%22%2F%3E%3C%2Fg%3E%3C%2Fg%3E%3C%2Fsvg%3E%20');\n}\n.x6-widget-handle-unlink {\n background-image: url('data:image/svg+xml;charset=utf8,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22utf-8%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20width%3D%2218.75px%22%20height%3D%2218.75px%22%20viewBox%3D%220%200%2018.75%2018.75%22%20enable-background%3D%22new%200%200%2018.75%2018.75%22%20xml%3Aspace%3D%22preserve%22%3E%3Cg%3E%3Cg%3E%3Cpath%20fill%3D%22%236A6C8A%22%20d%3D%22M12.285%2C9.711l-2.104-0.302L9.243%2C8.568L6.669%2C7.095C6.948%2C6.6%2C6.995%2C6.026%2C6.845%2C5.474%20c-0.191-0.698-0.695-1.36-1.438-1.786C4.068%2C2.922%2C2.464%2C3.214%2C1.82%2C4.338C1.536%2C4.836%2C1.489%2C5.414%2C1.64%2C5.97%20c0.189%2C0.698%2C0.694%2C1.36%2C1.438%2C1.787c0.328%2C0.187%2C0.67%2C0.31%2C1.01%2C0.372c0.002%2C0%2C0.006%2C0.002%2C0.008%2C0.004%20c0.027%2C0.004%2C0.057%2C0.009%2C0.088%2C0.011c2.12%2C0.316%2C3.203%2C0.915%2C3.73%2C1.337c-0.527%2C0.424-1.61%2C1.021-3.731%2C1.339%20c-0.029%2C0.003-0.058%2C0.007-0.087%2C0.012c-0.002%2C0.002-0.004%2C0.002-0.007%2C0.003c-0.341%2C0.062-0.684%2C0.187-1.013%2C0.374%20c-0.74%2C0.425-1.246%2C1.089-1.437%2C1.787c-0.149%2C0.555-0.105%2C1.133%2C0.181%2C1.632c0.011%2C0.018%2C0.021%2C0.033%2C0.033%2C0.049l0.883%2C0.783%20c0.765%2C0.366%2C1.775%2C0.328%2C2.67-0.184c0.744-0.425%2C1.248-1.088%2C1.439-1.786c0.148-0.552%2C0.104-1.126-0.176-1.62l2.573-1.473%20c0.573%2C0.287%2C2.299%2C1.292%2C2.299%2C1.292s3.602%2C1.445%2C4.241%2C1.812c0.773%2C0.191%2C0.566-0.151%2C0.566-0.151L12.285%2C9.711z%20M5.571%2C6.482%20C5.279%2C6.993%2C4.425%2C7.076%2C3.705%2C6.664C3.282%2C6.424%2C2.966%2C6.039%2C2.856%2C5.64C2.81%2C5.464%2C2.778%2C5.203%2C2.917%2C4.963%20c0.291-0.51%2C1.146-0.593%2C1.866-0.182C5.21%2C5.027%2C5.521%2C5.4%2C5.632%2C5.807C5.679%2C5.98%2C5.708%2C6.242%2C5.571%2C6.482z%20M5.632%2C13.159%20c-0.111%2C0.406-0.422%2C0.778-0.848%2C1.025c-0.719%2C0.409-1.576%2C0.327-1.867-0.184c-0.137-0.239-0.106-0.499-0.06-0.676%20c0.108-0.398%2C0.426-0.781%2C0.847-1.022c0.72-0.412%2C1.574-0.329%2C1.866%2C0.181C5.708%2C12.723%2C5.679%2C12.983%2C5.632%2C13.159z%20M16.181%2C5.139%20c-0.448%2C0.258-4.435%2C1.9-4.435%2C1.9s-1.556%2C0.855-2.104%2C1.13l0.937%2C0.843l2.057-0.229l4.11-3.638%20C16.745%2C5.146%2C17.013%2C4.664%2C16.181%2C5.139z%22%2F%3E%3C%2Fg%3E%3C%2Fg%3E%3C%2Fsvg%3E%20');\n}\n.x6-widget-handle-unlink:hover {\n background-image: url('data:image/svg+xml;charset=utf8,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22utf-8%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20width%3D%2218.75px%22%20height%3D%2218.75px%22%20viewBox%3D%220%200%2018.75%2018.75%22%20enable-background%3D%22new%200%200%2018.75%2018.75%22%20xml%3Aspace%3D%22preserve%22%3E%3Cg%3E%3Cg%3E%3Cpath%20fill%3D%22%23FD6EB6%22%20d%3D%22M12.285%2C9.711l-2.104-0.302L9.243%2C8.568L6.669%2C7.095C6.948%2C6.6%2C6.995%2C6.026%2C6.845%2C5.474%20c-0.191-0.698-0.695-1.36-1.438-1.786C4.068%2C2.922%2C2.464%2C3.214%2C1.82%2C4.338C1.536%2C4.836%2C1.489%2C5.414%2C1.64%2C5.97%20c0.189%2C0.698%2C0.694%2C1.36%2C1.438%2C1.787c0.328%2C0.187%2C0.67%2C0.31%2C1.01%2C0.372c0.002%2C0%2C0.006%2C0.002%2C0.008%2C0.004%20c0.027%2C0.004%2C0.057%2C0.009%2C0.088%2C0.011c2.12%2C0.316%2C3.203%2C0.915%2C3.73%2C1.337c-0.527%2C0.424-1.61%2C1.021-3.731%2C1.339%20c-0.029%2C0.003-0.058%2C0.007-0.087%2C0.012c-0.002%2C0.002-0.004%2C0.002-0.007%2C0.003c-0.341%2C0.062-0.684%2C0.187-1.013%2C0.374%20c-0.74%2C0.425-1.246%2C1.089-1.437%2C1.787c-0.149%2C0.555-0.105%2C1.133%2C0.181%2C1.632c0.011%2C0.018%2C0.021%2C0.033%2C0.033%2C0.049l0.883%2C0.783%20c0.765%2C0.366%2C1.775%2C0.328%2C2.67-0.184c0.744-0.425%2C1.248-1.088%2C1.439-1.786c0.148-0.552%2C0.104-1.126-0.176-1.62l2.573-1.473%20c0.573%2C0.287%2C2.299%2C1.292%2C2.299%2C1.292s3.602%2C1.445%2C4.241%2C1.812c0.773%2C0.191%2C0.566-0.151%2C0.566-0.151L12.285%2C9.711z%20M5.571%2C6.482%20C5.279%2C6.993%2C4.425%2C7.076%2C3.705%2C6.664C3.282%2C6.424%2C2.966%2C6.039%2C2.856%2C5.64C2.81%2C5.464%2C2.778%2C5.203%2C2.917%2C4.963%20c0.291-0.51%2C1.146-0.593%2C1.866-0.182C5.21%2C5.027%2C5.521%2C5.4%2C5.632%2C5.807C5.679%2C5.98%2C5.708%2C6.242%2C5.571%2C6.482z%20M5.632%2C13.159%20c-0.111%2C0.406-0.422%2C0.778-0.848%2C1.025c-0.719%2C0.409-1.576%2C0.327-1.867-0.184c-0.137-0.239-0.106-0.499-0.06-0.676%20c0.108-0.398%2C0.426-0.781%2C0.847-1.022c0.72-0.412%2C1.574-0.329%2C1.866%2C0.181C5.708%2C12.723%2C5.679%2C12.983%2C5.632%2C13.159z%20M16.181%2C5.139%20c-0.448%2C0.258-4.435%2C1.9-4.435%2C1.9s-1.556%2C0.855-2.104%2C1.13l0.937%2C0.843l2.057-0.229l4.11-3.638%20C16.745%2C5.146%2C17.013%2C4.664%2C16.181%2C5.139z%22%2F%3E%3C%2Fg%3E%3C%2Fg%3E%3C%2Fsvg%3E%20');\n}\n.x6-widget-handle-direction {\n background-image: url(\"data:image/svg+xml;charset=UTF-8,%3C%3Fxml%20version%3D%221.0%22%20%3F%3E%3C!DOCTYPE%20svg%20%20PUBLIC%20'-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN'%20%20'http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd'%3E%3Csvg%20id%3D%22Layer_1%22%20style%3D%22enable-background%3Anew%200%200%20512%20512%3B%22%20version%3D%221.1%22%20viewBox%3D%220%200%20512%20512%22%20xml%3Aspace%3D%22preserve%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%3E%3Cstyle%20type%3D%22text%2Fcss%22%3E%0A%09.st0%7Bfill%3A%236A6C8A%3Bstroke%3A%236A6C8A%3Bstroke-width%3A30%7D%0A%09.dot%7Bfill%3A%236A6C8A%3B%7D%0A%3C%2Fstyle%3E%3Cg%3E%3Cg%20id%3D%22XMLID_475_%22%3E%0A%3Cpath%20class%3D%22dot%22%20d%3D%22M133.1%2C277.1c1.8%2C0%2C3.7-0.6%2C5.4-1.7c4.1-3%2C5-8.7%2C2-12.8c-3-4.1-8.7-5-12.8-2c0%2C0%2C0%2C0%2C0%2C0%20%20%20%20%20c-4.1%2C3-5%2C8.7-2%2C12.8C127.5%2C275.8%2C130.3%2C277.1%2C133.1%2C277.1z%22%20id%3D%22XMLID_489_%22%2F%3E%0A%3Cpath%20class%3D%22dot%22%20d%3D%22M138.5%2C359.6c-4.1-3-9.8-2.1-12.8%2C2c-3%2C4.1-2.1%2C9.8%2C2%2C12.8c1.6%2C1.2%2C3.5%2C1.7%2C5.4%2C1.7%20%20%20%20%20c2.8%2C0%2C5.6-1.3%2C7.4-3.7C143.5%2C368.3%2C142.6%2C362.6%2C138.5%2C359.6z%22%20id%3D%22XMLID_726_%22%2F%3E%0A%3Cpath%20class%3D%22dot%22%20d%3D%22M108.1%2C327.7c-4.8%2C1.6-7.4%2C6.7-5.9%2C11.5c1.3%2C3.9%2C4.8%2C6.3%2C8.7%2C6.3c0.9%2C0%2C1.9-0.1%2C2.8-0.4%20%20%20%20%20c4.8-1.6%2C7.4-6.7%2C5.9-11.5C118%2C328.8%2C112.9%2C326.2%2C108.1%2C327.7z%22%20id%3D%22XMLID_776_%22%2F%3E%0A%3Cpath%20class%3D%22dot%22%20d%3D%22M108.1%2C307.3c0.9%2C0.3%2C1.9%2C0.4%2C2.8%2C0.4c3.8%2C0%2C7.4-2.4%2C8.7-6.3c1.6-4.8-1.1-9.9-5.9-11.5%20%20%20%20%20c-4.8-1.6-9.9%2C1.1-11.5%2C5.9C100.7%2C300.6%2C103.3%2C305.7%2C108.1%2C307.3z%22%20id%3D%22XMLID_777_%22%2F%3E%0A%3Cpath%20class%3D%22dot%22%20d%3D%22M169.2%2C265.4c2.4%2C0%2C4.7-1%2C6.5-2.6c1.7-1.7%2C2.7-4.1%2C2.7-6.5c0-2.4-1-4.8-2.7-6.5%20%20%20%20%20c-1.7-1.7-4.1-2.7-6.5-2.7s-4.7%2C1-6.5%2C2.7c-1.7%2C1.7-2.7%2C4-2.7%2C6.5c0%2C2.4%2C1%2C4.7%2C2.7%2C6.5C164.4%2C264.4%2C166.8%2C265.4%2C169.2%2C265.4z%22%20id%3D%22XMLID_797_%22%2F%3E%0A%3Cpath%20class%3D%22dot%22%20d%3D%22M247.7%2C256.3c0-5-4.1-9.1-9.1-9.1c-5%2C0-9.1%2C4.1-9.1%2C9.1c0%2C5%2C4.1%2C9.1%2C9.1%2C9.1%20%20%20%20%20C243.7%2C265.4%2C247.7%2C261.3%2C247.7%2C256.3z%22%20id%3D%22XMLID_798_%22%2F%3E%0A%3Cpath%20class%3D%22dot%22%20d%3D%22M213%2C256.3c0-5-4.1-9.1-9.1-9.1c-5%2C0-9.1%2C4.1-9.1%2C9.1c0%2C5%2C4.1%2C9.1%2C9.1%2C9.1%20%20%20%20%20C208.9%2C265.4%2C213%2C261.3%2C213%2C256.3z%22%20id%3D%22XMLID_799_%22%2F%3E%0A%3Cpath%20class%3D%22dot%22%20d%3D%22M317.2%2C256.3c0-5-4.1-9.1-9.1-9.1c-5%2C0-9.1%2C4.1-9.1%2C9.1c0%2C5%2C4.1%2C9.1%2C9.1%2C9.1%20%20%20%20%20C313.1%2C265.4%2C317.2%2C261.3%2C317.2%2C256.3z%22%20id%3D%22XMLID_800_%22%2F%3E%0A%3Cpath%20class%3D%22dot%22%20d%3D%22M282.5%2C256.3c0-5-4.1-9.1-9.1-9.1s-9.1%2C4.1-9.1%2C9.1c0%2C5%2C4.1%2C9.1%2C9.1%2C9.1%20%20%20%20%20S282.5%2C261.3%2C282.5%2C256.3z%22%20id%3D%22XMLID_801_%22%2F%3E%0A%3Cpath%20class%3D%22dot%22%20d%3D%22M401.1%2C185.2c0.9%2C0%2C1.9-0.1%2C2.8-0.5c4.8-1.6%2C7.4-6.7%2C5.9-11.5c-1.6-4.8-6.7-7.4-11.5-5.8%20%20%20%20%20c-4.8%2C1.6-7.4%2C6.7-5.8%2C11.5C393.6%2C182.8%2C397.2%2C185.2%2C401.1%2C185.2z%22%20id%3D%22XMLID_802_%22%2F%3E%0A%3Cpath%20class%3D%22dot%22%20d%3D%22M403.9%2C205.2c-4.8-1.6-9.9%2C1-11.5%2C5.9l0%2C0c-1.6%2C4.8%2C1.1%2C9.9%2C5.9%2C11.5%20%20%20%20%20c0.9%2C0.3%2C1.9%2C0.5%2C2.8%2C0.5c3.9%2C0%2C7.4-2.5%2C8.7-6.3c0%2C0%2C0%2C0%2C0%2C0C411.3%2C211.9%2C408.7%2C206.8%2C403.9%2C205.2z%22%20id%3D%22XMLID_803_%22%2F%3E%0A%3Cpath%20class%3D%22dot%22%20d%3D%22M373.5%2C237.2L373.5%2C237.2c-4.1%2C3-5%2C8.7-2%2C12.8c1.8%2C2.4%2C4.6%2C3.7%2C7.4%2C3.7%20%20%20%20%20c1.8%2C0%2C3.7-0.6%2C5.4-1.8c4.1-3%2C4.9-8.7%2C2-12.8C383.3%2C235.1%2C377.6%2C234.2%2C373.5%2C237.2z%22%20id%3D%22XMLID_804_%22%2F%3E%0A%3Cpath%20class%3D%22dot%22%20d%3D%22M373.5%2C152.9c1.6%2C1.2%2C3.5%2C1.8%2C5.4%2C1.8c2.8%2C0%2C5.6-1.3%2C7.4-3.8c3-4.1%2C2.1-9.8-2-12.7%20%20%20%20%20c-4.1-3-9.8-2.1-12.7%2C2C368.5%2C144.2%2C369.4%2C149.9%2C373.5%2C152.9z%22%20id%3D%22XMLID_805_%22%2F%3E%0A%3Cpath%20class%3D%22dot%22%20d%3D%22M342.8%2C247.1c-2.4%2C0-4.8%2C1-6.5%2C2.7c-1.7%2C1.7-2.7%2C4-2.7%2C6.5c0%2C2.4%2C1%2C4.7%2C2.7%2C6.4%20%20%20%20%20c1.7%2C1.7%2C4%2C2.7%2C6.5%2C2.7c2.4%2C0%2C4.7-1%2C6.5-2.7c1.7-1.7%2C2.7-4%2C2.7-6.4c0-2.4-1-4.8-2.7-6.5C347.6%2C248.1%2C345.2%2C247.1%2C342.8%2C247.1z%22%20id%3D%22XMLID_806_%22%2F%3E%0A%3Cpath%20class%3D%22st0%22%20d%3D%22M342.8%2C124.7H206.6l36.4-36.4c3.6-3.6%2C3.6-9.3%2C0-12.9c-3.6-3.6-9.3-3.6-12.9%2C0l-51.5%2C51.5%20%20%20%20%20c-1.9%2C1.9-2.8%2C4.4-2.7%2C6.9c-0.1%2C2.5%2C0.7%2C5%2C2.7%2C6.9l51.5%2C51.5c1.8%2C1.8%2C4.1%2C2.7%2C6.5%2C2.7c2.3%2C0%2C4.7-0.9%2C6.5-2.7%20%20%20%20%20c3.6-3.6%2C3.6-9.3%2C0-12.9l-36.4-36.4h136.1c0%2C0%2C0.1%2C0%2C0.1%2C0c0.6%2C0%2C1.2-0.1%2C1.8-0.2c0.2%2C0%2C0.4-0.1%2C0.6-0.1c0.1%2C0%2C0.2%2C0%2C0.3-0.1%20%20%20%20%20c3.2-1%2C5.6-3.6%2C6.3-6.9c0.1-0.6%2C0.2-1.2%2C0.2-1.8c0-0.6-0.1-1.2-0.2-1.8C351%2C127.8%2C347.3%2C124.7%2C342.8%2C124.7z%22%20id%3D%22XMLID_807_%22%2F%3E%0A%3Cpath%20class%3D%22st0%22%20d%3D%22M322.1%2C371.3l-51.5-51.5c-3.6-3.6-9.3-3.6-12.9%2C0c-3.6%2C3.6-3.6%2C9.3%2C0%2C12.9l36.9%2C36.9H169.2%20%20%20%20%20c-2.8%2C0-5.4%2C1.3-7%2C3.3c-0.1%2C0.1-0.2%2C0.2-0.3%2C0.4c-0.1%2C0.1-0.2%2C0.2-0.2%2C0.3c-0.1%2C0.1-0.1%2C0.2-0.2%2C0.4c-0.1%2C0.1-0.2%2C0.3-0.2%2C0.4%20%20%20%20%20c0%2C0.1-0.1%2C0.2-0.1%2C0.2c-0.1%2C0.2-0.2%2C0.4-0.3%2C0.6c0%2C0%2C0%2C0%2C0%2C0.1c-0.4%2C1.1-0.7%2C2.2-0.7%2C3.4c0%2C1.5%2C0.4%2C2.9%2C1%2C4.2c0%2C0%2C0%2C0.1%2C0.1%2C0.1%20%20%20%20%20c0.1%2C0.1%2C0.1%2C0.2%2C0.2%2C0.3c0.4%2C0.7%2C0.9%2C1.3%2C1.4%2C1.8c0.4%2C0.4%2C0.7%2C0.7%2C1.2%2C1c0.1%2C0.1%2C0.1%2C0.1%2C0.2%2C0.2c0%2C0%2C0.1%2C0%2C0.1%2C0.1%20%20%20%20%20c1.4%2C0.9%2C3.1%2C1.5%2C5%2C1.5h124.4l-36%2C36c-3.6%2C3.6-3.6%2C9.3%2C0%2C12.9c1.8%2C1.8%2C4.1%2C2.7%2C6.5%2C2.7c2.3%2C0%2C4.7-0.9%2C6.5-2.7l51.5-51.5%20%20%20%20%20c1.9-1.9%2C2.8-4.4%2C2.7-6.9C324.8%2C375.7%2C324%2C373.2%2C322.1%2C371.3z%22%20id%3D%22XMLID_808_%22%2F%3E%3C%2Fg%3E%3C%2Fg%3E%3C%2Fsvg%3E\");\n}\n.x6-widget-handle-direction:hover {\n background-image: url(\"data:image/svg+xml;charset=UTF-8,%3C%3Fxml%20version%3D%221.0%22%20%3F%3E%3C!DOCTYPE%20svg%20%20PUBLIC%20'-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN'%20%20'http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd'%3E%3Csvg%20id%3D%22Layer_1%22%20style%3D%22enable-background%3Anew%200%200%20512%20512%3B%22%20version%3D%221.1%22%20viewBox%3D%220%200%20512%20512%22%20xml%3Aspace%3D%22preserve%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%3E%3Cstyle%20type%3D%22text%2Fcss%22%3E%0A%09.st0%7Bfill%3A%23FD6EB6%3Bstroke%3A%23FD6EB6%3Bstroke-width%3A30%7D%0A%09.dot%7Bfill%3A%23FD6EB6%3B%7D%0A%3C%2Fstyle%3E%3Cg%3E%3Cg%20id%3D%22XMLID_475_%22%3E%0A%3Cpath%20class%3D%22dot%22%20d%3D%22M133.1%2C277.1c1.8%2C0%2C3.7-0.6%2C5.4-1.7c4.1-3%2C5-8.7%2C2-12.8c-3-4.1-8.7-5-12.8-2c0%2C0%2C0%2C0%2C0%2C0%20%20%20%20%20c-4.1%2C3-5%2C8.7-2%2C12.8C127.5%2C275.8%2C130.3%2C277.1%2C133.1%2C277.1z%22%20id%3D%22XMLID_489_%22%2F%3E%0A%3Cpath%20class%3D%22dot%22%20d%3D%22M138.5%2C359.6c-4.1-3-9.8-2.1-12.8%2C2c-3%2C4.1-2.1%2C9.8%2C2%2C12.8c1.6%2C1.2%2C3.5%2C1.7%2C5.4%2C1.7%20%20%20%20%20c2.8%2C0%2C5.6-1.3%2C7.4-3.7C143.5%2C368.3%2C142.6%2C362.6%2C138.5%2C359.6z%22%20id%3D%22XMLID_726_%22%2F%3E%0A%3Cpath%20class%3D%22dot%22%20d%3D%22M108.1%2C327.7c-4.8%2C1.6-7.4%2C6.7-5.9%2C11.5c1.3%2C3.9%2C4.8%2C6.3%2C8.7%2C6.3c0.9%2C0%2C1.9-0.1%2C2.8-0.4%20%20%20%20%20c4.8-1.6%2C7.4-6.7%2C5.9-11.5C118%2C328.8%2C112.9%2C326.2%2C108.1%2C327.7z%22%20id%3D%22XMLID_776_%22%2F%3E%0A%3Cpath%20class%3D%22dot%22%20d%3D%22M108.1%2C307.3c0.9%2C0.3%2C1.9%2C0.4%2C2.8%2C0.4c3.8%2C0%2C7.4-2.4%2C8.7-6.3c1.6-4.8-1.1-9.9-5.9-11.5%20%20%20%20%20c-4.8-1.6-9.9%2C1.1-11.5%2C5.9C100.7%2C300.6%2C103.3%2C305.7%2C108.1%2C307.3z%22%20id%3D%22XMLID_777_%22%2F%3E%0A%3Cpath%20class%3D%22dot%22%20d%3D%22M169.2%2C265.4c2.4%2C0%2C4.7-1%2C6.5-2.6c1.7-1.7%2C2.7-4.1%2C2.7-6.5c0-2.4-1-4.8-2.7-6.5%20%20%20%20%20c-1.7-1.7-4.1-2.7-6.5-2.7s-4.7%2C1-6.5%2C2.7c-1.7%2C1.7-2.7%2C4-2.7%2C6.5c0%2C2.4%2C1%2C4.7%2C2.7%2C6.5C164.4%2C264.4%2C166.8%2C265.4%2C169.2%2C265.4z%22%20id%3D%22XMLID_797_%22%2F%3E%0A%3Cpath%20class%3D%22dot%22%20d%3D%22M247.7%2C256.3c0-5-4.1-9.1-9.1-9.1c-5%2C0-9.1%2C4.1-9.1%2C9.1c0%2C5%2C4.1%2C9.1%2C9.1%2C9.1%20%20%20%20%20C243.7%2C265.4%2C247.7%2C261.3%2C247.7%2C256.3z%22%20id%3D%22XMLID_798_%22%2F%3E%0A%3Cpath%20class%3D%22dot%22%20d%3D%22M213%2C256.3c0-5-4.1-9.1-9.1-9.1c-5%2C0-9.1%2C4.1-9.1%2C9.1c0%2C5%2C4.1%2C9.1%2C9.1%2C9.1%20%20%20%20%20C208.9%2C265.4%2C213%2C261.3%2C213%2C256.3z%22%20id%3D%22XMLID_799_%22%2F%3E%0A%3Cpath%20class%3D%22dot%22%20d%3D%22M317.2%2C256.3c0-5-4.1-9.1-9.1-9.1c-5%2C0-9.1%2C4.1-9.1%2C9.1c0%2C5%2C4.1%2C9.1%2C9.1%2C9.1%20%20%20%20%20C313.1%2C265.4%2C317.2%2C261.3%2C317.2%2C256.3z%22%20id%3D%22XMLID_800_%22%2F%3E%0A%3Cpath%20class%3D%22dot%22%20d%3D%22M282.5%2C256.3c0-5-4.1-9.1-9.1-9.1s-9.1%2C4.1-9.1%2C9.1c0%2C5%2C4.1%2C9.1%2C9.1%2C9.1%20%20%20%20%20S282.5%2C261.3%2C282.5%2C256.3z%22%20id%3D%22XMLID_801_%22%2F%3E%0A%3Cpath%20class%3D%22dot%22%20d%3D%22M401.1%2C185.2c0.9%2C0%2C1.9-0.1%2C2.8-0.5c4.8-1.6%2C7.4-6.7%2C5.9-11.5c-1.6-4.8-6.7-7.4-11.5-5.8%20%20%20%20%20c-4.8%2C1.6-7.4%2C6.7-5.8%2C11.5C393.6%2C182.8%2C397.2%2C185.2%2C401.1%2C185.2z%22%20id%3D%22XMLID_802_%22%2F%3E%0A%3Cpath%20class%3D%22dot%22%20d%3D%22M403.9%2C205.2c-4.8-1.6-9.9%2C1-11.5%2C5.9l0%2C0c-1.6%2C4.8%2C1.1%2C9.9%2C5.9%2C11.5%20%20%20%20%20c0.9%2C0.3%2C1.9%2C0.5%2C2.8%2C0.5c3.9%2C0%2C7.4-2.5%2C8.7-6.3c0%2C0%2C0%2C0%2C0%2C0C411.3%2C211.9%2C408.7%2C206.8%2C403.9%2C205.2z%22%20id%3D%22XMLID_803_%22%2F%3E%0A%3Cpath%20class%3D%22dot%22%20d%3D%22M373.5%2C237.2L373.5%2C237.2c-4.1%2C3-5%2C8.7-2%2C12.8c1.8%2C2.4%2C4.6%2C3.7%2C7.4%2C3.7%20%20%20%20%20c1.8%2C0%2C3.7-0.6%2C5.4-1.8c4.1-3%2C4.9-8.7%2C2-12.8C383.3%2C235.1%2C377.6%2C234.2%2C373.5%2C237.2z%22%20id%3D%22XMLID_804_%22%2F%3E%0A%3Cpath%20class%3D%22dot%22%20d%3D%22M373.5%2C152.9c1.6%2C1.2%2C3.5%2C1.8%2C5.4%2C1.8c2.8%2C0%2C5.6-1.3%2C7.4-3.8c3-4.1%2C2.1-9.8-2-12.7%20%20%20%20%20c-4.1-3-9.8-2.1-12.7%2C2C368.5%2C144.2%2C369.4%2C149.9%2C373.5%2C152.9z%22%20id%3D%22XMLID_805_%22%2F%3E%0A%3Cpath%20class%3D%22dot%22%20d%3D%22M342.8%2C247.1c-2.4%2C0-4.8%2C1-6.5%2C2.7c-1.7%2C1.7-2.7%2C4-2.7%2C6.5c0%2C2.4%2C1%2C4.7%2C2.7%2C6.4%20%20%20%20%20c1.7%2C1.7%2C4%2C2.7%2C6.5%2C2.7c2.4%2C0%2C4.7-1%2C6.5-2.7c1.7-1.7%2C2.7-4%2C2.7-6.4c0-2.4-1-4.8-2.7-6.5C347.6%2C248.1%2C345.2%2C247.1%2C342.8%2C247.1z%22%20id%3D%22XMLID_806_%22%2F%3E%0A%3Cpath%20class%3D%22st0%22%20d%3D%22M342.8%2C124.7H206.6l36.4-36.4c3.6-3.6%2C3.6-9.3%2C0-12.9c-3.6-3.6-9.3-3.6-12.9%2C0l-51.5%2C51.5%20%20%20%20%20c-1.9%2C1.9-2.8%2C4.4-2.7%2C6.9c-0.1%2C2.5%2C0.7%2C5%2C2.7%2C6.9l51.5%2C51.5c1.8%2C1.8%2C4.1%2C2.7%2C6.5%2C2.7c2.3%2C0%2C4.7-0.9%2C6.5-2.7%20%20%20%20%20c3.6-3.6%2C3.6-9.3%2C0-12.9l-36.4-36.4h136.1c0%2C0%2C0.1%2C0%2C0.1%2C0c0.6%2C0%2C1.2-0.1%2C1.8-0.2c0.2%2C0%2C0.4-0.1%2C0.6-0.1c0.1%2C0%2C0.2%2C0%2C0.3-0.1%20%20%20%20%20c3.2-1%2C5.6-3.6%2C6.3-6.9c0.1-0.6%2C0.2-1.2%2C0.2-1.8c0-0.6-0.1-1.2-0.2-1.8C351%2C127.8%2C347.3%2C124.7%2C342.8%2C124.7z%22%20id%3D%22XMLID_807_%22%2F%3E%0A%3Cpath%20class%3D%22st0%22%20d%3D%22M322.1%2C371.3l-51.5-51.5c-3.6-3.6-9.3-3.6-12.9%2C0c-3.6%2C3.6-3.6%2C9.3%2C0%2C12.9l36.9%2C36.9H169.2%20%20%20%20%20c-2.8%2C0-5.4%2C1.3-7%2C3.3c-0.1%2C0.1-0.2%2C0.2-0.3%2C0.4c-0.1%2C0.1-0.2%2C0.2-0.2%2C0.3c-0.1%2C0.1-0.1%2C0.2-0.2%2C0.4c-0.1%2C0.1-0.2%2C0.3-0.2%2C0.4%20%20%20%20%20c0%2C0.1-0.1%2C0.2-0.1%2C0.2c-0.1%2C0.2-0.2%2C0.4-0.3%2C0.6c0%2C0%2C0%2C0%2C0%2C0.1c-0.4%2C1.1-0.7%2C2.2-0.7%2C3.4c0%2C1.5%2C0.4%2C2.9%2C1%2C4.2c0%2C0%2C0%2C0.1%2C0.1%2C0.1%20%20%20%20%20c0.1%2C0.1%2C0.1%2C0.2%2C0.2%2C0.3c0.4%2C0.7%2C0.9%2C1.3%2C1.4%2C1.8c0.4%2C0.4%2C0.7%2C0.7%2C1.2%2C1c0.1%2C0.1%2C0.1%2C0.1%2C0.2%2C0.2c0%2C0%2C0.1%2C0%2C0.1%2C0.1%20%20%20%20%20c1.4%2C0.9%2C3.1%2C1.5%2C5%2C1.5h124.4l-36%2C36c-3.6%2C3.6-3.6%2C9.3%2C0%2C12.9c1.8%2C1.8%2C4.1%2C2.7%2C6.5%2C2.7c2.3%2C0%2C4.7-0.9%2C6.5-2.7l51.5-51.5%20%20%20%20%20c1.9-1.9%2C2.8-4.4%2C2.7-6.9C324.8%2C375.7%2C324%2C373.2%2C322.1%2C371.3z%22%20id%3D%22XMLID_808_%22%2F%3E%3C%2Fg%3E%3C%2Fg%3E%3C%2Fsvg%3E\");\n}\n.x6-widget-handle-surround .x6-widget-handle-animate .x6-widget-handle {\n transition: background-size 80ms, width 80ms, height 80ms, top 150ms, left 150ms, bottom 150ms, right 150ms;\n}\n.x6-widget-handle-surround .x6-widget-handle-pos-se {\n right: -25px;\n bottom: -25px;\n}\n.x6-widget-handle-surround .x6-widget-handle-pos-nw {\n top: -21px;\n left: -25px;\n}\n.x6-widget-handle-surround .x6-widget-handle-pos-n {\n top: -22px;\n left: 50%;\n margin-left: -10px;\n}\n.x6-widget-handle-surround .x6-widget-handle-pos-e {\n top: -webkit-calc(40%);\n top: calc(50% - 10px);\n right: -25px;\n}\n.x6-widget-handle-surround .x6-widget-handle-pos-ne {\n top: -21px;\n right: -25px;\n}\n.x6-widget-handle-surround .x6-widget-handle-pos-w {\n top: 50%;\n left: -25px;\n margin-top: -10px;\n}\n.x6-widget-handle-surround .x6-widget-handle-pos-sw {\n bottom: -25px;\n left: -25px;\n}\n.x6-widget-handle-surround .x6-widget-handle-pos-s {\n bottom: -24px;\n left: 50%;\n margin-left: -10px;\n}\n.x6-widget-handle-surround .x6-widget-handle-small .x6-widget-handle {\n width: 15px;\n height: 15px;\n font-size: 15px;\n background-size: 15px 15px;\n}\n.x6-widget-handle-surround .x6-widget-handle-small .x6-widget-handle-pos-se {\n right: -19px;\n bottom: -19px;\n}\n.x6-widget-handle-surround .x6-widget-handle-small .x6-widget-handle-pos-nw {\n top: -19px;\n left: -19px;\n}\n.x6-widget-handle-surround .x6-widget-handle-small .x6-widget-handle-pos-n {\n top: -19px;\n margin-left: -7.5px;\n}\n.x6-widget-handle-surround .x6-widget-handle-small .x6-widget-handle-pos-e {\n top: -webkit-calc(42%);\n top: calc(50% - 8px);\n right: -19px;\n}\n.x6-widget-handle-surround .x6-widget-handle-small .x6-widget-handle-pos-ne {\n top: -19px;\n right: -19px;\n}\n.x6-widget-handle-surround .x6-widget-handle-small .x6-widget-handle-pos-w {\n left: -19px;\n margin-top: -8px;\n}\n.x6-widget-handle-surround .x6-widget-handle-small .x6-widget-handle-pos-sw {\n bottom: -19px;\n left: -19px;\n}\n.x6-widget-handle-surround .x6-widget-handle-small .x6-widget-handle-pos-s {\n bottom: -19px;\n margin-left: -7.5px;\n}\n.x6-widget-handle-surround .x6-widget-handle-tiny .x6-widget-handle {\n width: 10px;\n height: 10px;\n font-size: 10px;\n background-size: 10px 10px;\n}\n.x6-widget-handle-surround .x6-widget-handle-tiny .x6-widget-handle-pos-se {\n right: -15px;\n bottom: -13px;\n}\n.x6-widget-handle-surround .x6-widget-handle-tiny .x6-widget-handle-pos-nw {\n top: -13px;\n left: -15px;\n}\n.x6-widget-handle-surround .x6-widget-handle-tiny .x6-widget-handle-pos-n {\n top: -13px;\n margin-left: -5px;\n}\n.x6-widget-handle-surround .x6-widget-handle-tiny .x6-widget-handle-pos-e {\n top: -webkit-calc(45%);\n top: calc(50% - 5px);\n right: -15px;\n}\n.x6-widget-handle-surround .x6-widget-handle-tiny .x6-widget-handle-pos-ne {\n top: -13px;\n right: -15px;\n}\n.x6-widget-handle-surround .x6-widget-handle-tiny .x6-widget-handle-pos-w {\n left: -15px;\n margin-top: -5px;\n}\n.x6-widget-handle-surround .x6-widget-handle-tiny .x6-widget-handle-pos-sw {\n bottom: -13px;\n left: -15px;\n}\n.x6-widget-handle-surround .x6-widget-handle-tiny .x6-widget-handle-pos-s {\n bottom: -13px;\n margin-left: -5px;\n}\n.x6-widget-handle-toolbar {\n position: absolute;\n top: -50px;\n display: table-row;\n padding: 7px 5px;\n}\n.x6-widget-handle-toolbar::after {\n position: absolute;\n top: 100%;\n left: 10px;\n width: 0;\n height: 0;\n margin-top: 4px;\n border-right: 10px solid transparent;\n border-left: 10px solid transparent;\n content: '';\n}\n.x6-widget-handle-toolbar .x6-widget-handle {\n position: relative;\n display: table-cell;\n min-width: 20px;\n margin: 0 2px;\n background-position: 3px 3px;\n background-size: 16px 16px;\n}\n.x6-widget-handle-toolbar .x6-widget-handle::after {\n position: absolute;\n bottom: -11px;\n width: 100%;\n content: '';\n}\n.x6-widget-handle-pie {\n position: absolute;\n top: -webkit-calc(0%);\n top: calc(50% - 50px);\n right: -50px;\n z-index: 1;\n display: none;\n width: 100px;\n height: 100px;\n margin: -2px -2px 0 0;\n border-radius: 50%;\n cursor: default;\n pointer-events: visiblePainted;\n}\n.x6-widget-handle-pie .x6-widget-handle {\n width: 1px;\n height: auto;\n pointer-events: visiblePainted;\n}\n.x6-widget-handle-pie-slice-svg {\n width: 100%;\n height: 100%;\n overflow: visible !important;\n}\n.x6-widget-handle-pie-slice-img,\n.x6-widget-handle-pie-slice-txt {\n display: none;\n pointer-events: none;\n}\n.x6-widget-handle-pie[data-pie-toggle-position='e'] {\n top: calc(50% - 50px);\n right: -50px;\n left: auto;\n}\n.x6-widget-handle-pie[data-pie-toggle-position='w'] {\n top: calc(50% - 50px);\n right: auto;\n left: -52px;\n}\n.x6-widget-handle-pie[data-pie-toggle-position='n'] {\n top: -50px;\n right: auto;\n bottom: auto;\n left: calc(50% - 52px);\n}\n.x6-widget-handle-pie[data-pie-toggle-position='s'] {\n top: auto;\n right: auto;\n bottom: -52px;\n left: calc(50% - 52px);\n}\n.x6-widget-handle-pie-opened {\n display: block;\n animation: halo-pie-visibility 0.1s, halo-pie-opening 0.1s;\n animation-timing-function: step-end, ease;\n animation-delay: 0s, 0.1s;\n}\n.x6-widget-handle-pie-toggle {\n position: absolute;\n top: -webkit-calc(35%);\n top: calc(50% - 15px);\n right: -15px;\n z-index: 2;\n display: block;\n box-sizing: border-box;\n width: 30px;\n height: 30px;\n background-repeat: no-repeat;\n background-position: center;\n background-size: 20px 20px;\n border-radius: 50%;\n cursor: pointer;\n user-select: none;\n pointer-events: visiblePainted;\n -webkit-user-drag: none;\n user-drag: none;\n /* stylelint-disable-line */\n}\n.x6-widget-handle-pie-toggle-pos-e {\n top: -webkit-calc(35%);\n top: calc(50% - 15px);\n right: -15px;\n bottom: auto;\n left: auto;\n}\n.x6-widget-handle-pie-toggle-pos-w {\n top: -webkit-calc(35%);\n top: calc(50% - 15px);\n right: auto;\n bottom: auto;\n left: -15px;\n}\n.x6-widget-handle-pie-toggle-pos-n {\n top: -15px;\n right: auto;\n bottom: auto;\n left: -webkit-calc(35%);\n left: calc(50% - 15px);\n}\n.x6-widget-handle-pie-toggle-pos-s {\n top: auto;\n right: auto;\n bottom: -15px;\n left: -webkit-calc(35%);\n left: calc(50% - 15px);\n}\n.x6-widget-handle-pie-toggle-opened {\n transition: 0.1s background-image;\n}\n.x6-widget-handle-toolbar {\n position: static;\n display: inline-block;\n margin-top: -50px;\n margin-left: 45px;\n white-space: nowrap;\n vertical-align: top;\n background-color: #f5f5f5;\n border-bottom: 3px solid #333;\n border-radius: 5px;\n box-shadow: 0 1px 2px #222;\n}\n.x6-widget-handle-toolbar::after {\n top: -12px;\n left: 55px;\n margin-top: 0;\n border-top: 6px solid #333;\n border-right: 10px solid transparent;\n border-left: 10px solid transparent;\n}\n.x6-widget-handle-toolbar .x6-widget-handle {\n display: inline-block;\n vertical-align: top;\n}\n.x6-widget-handle-toolbar .x6-widget-handle:hover::after {\n border-bottom: 4px solid #fc6cb8;\n}\n.x6-widget-handle-toolbar .x6-widget-handle-rotate {\n position: absolute;\n top: 100%;\n right: 100%;\n margin-top: 3px;\n margin-right: 6px;\n}\n.x6-widget-handle-toolbar .x6-widget-handle-remove:hover::after,\n.x6-widget-handle-toolbar .x6-widget-handle-rotate:hover::after {\n border-bottom: none;\n}\n.x6-widget-handle-toolbar .x6-widget-handle + .x6-widget-handle {\n margin-left: 4px;\n}\n.x6-widget-handle-pie {\n box-sizing: content-box;\n background-color: #f5f5f5;\n border: 2px solid #404040;\n}\n.x6-widget-handle-pie-slice {\n fill: transparent;\n stroke: #e9e9e9;\n stroke-width: 1;\n}\n.x6-widget-handle-pie-slice:hover {\n fill: #fff;\n}\n.x6-widget-handle-pie-slice-img {\n display: block;\n}\n.x6-widget-handle-selected .x6-widget-handle-pie-slice {\n fill: #fff;\n}\n.x6-widget-handle-pie-toggle {\n background-color: #f6f6f6;\n background-image: url('data:image/svg+xml;charset=utf8,%3C%3Fxml%20version%3D%221.0%22%20%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20height%3D%2216px%22%20id%3D%22Layer_1%22%20style%3D%22enable-background%3Anew%200%200%2016%2016%3B%22%20version%3D%221.1%22%20viewBox%3D%220%200%2016%2016%22%20width%3D%2216px%22%20xml%3Aspace%3D%22preserve%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%3E%3Cpath%20fill%3D%22%236A6C8A%22%20d%3D%22M15%2C6h-5V1c0-0.55-0.45-1-1-1H7C6.45%2C0%2C6%2C0.45%2C6%2C1v5H1C0.45%2C6%2C0%2C6.45%2C0%2C7v2c0%2C0.55%2C0.45%2C1%2C1%2C1h5v5c0%2C0.55%2C0.45%2C1%2C1%2C1h2%20c0.55%2C0%2C1-0.45%2C1-1v-5h5c0.55%2C0%2C1-0.45%2C1-1V7C16%2C6.45%2C15.55%2C6%2C15%2C6z%22%2F%3E%3C%2Fsvg%3E');\n background-size: 16px 16px;\n border: 2px solid #3b425f;\n}\n.x6-widget-handle-pie-toggle:hover {\n background-color: #fff;\n background-image: url('data:image/svg+xml;charset=utf8,%3C%3Fxml%20version%3D%221.0%22%20%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20height%3D%2216px%22%20id%3D%22Layer_1%22%20style%3D%22enable-background%3Anew%200%200%2016%2016%3B%22%20version%3D%221.1%22%20viewBox%3D%220%200%2016%2016%22%20width%3D%2216px%22%20xml%3Aspace%3D%22preserve%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%3E%3Cpath%20fill%3D%22%23FD6EB6%22%20d%3D%22M15%2C6h-5V1c0-0.55-0.45-1-1-1H7C6.45%2C0%2C6%2C0.45%2C6%2C1v5H1C0.45%2C6%2C0%2C6.45%2C0%2C7v2c0%2C0.55%2C0.45%2C1%2C1%2C1h5v5c0%2C0.55%2C0.45%2C1%2C1%2C1h2%20c0.55%2C0%2C1-0.45%2C1-1v-5h5c0.55%2C0%2C1-0.45%2C1-1V7C16%2C6.45%2C15.55%2C6%2C15%2C6z%22%2F%3E%3C%2Fsvg%3E');\n border-color: #fd6eb6;\n}\n.x6-widget-handle-pie-toggle-opened {\n background-image: url('data:image/svg+xml;charset=utf8,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22UTF-8%22%20standalone%3D%22no%22%3F%3E%3Csvg%20xmlns%3Adc%3D%22http%3A%2F%2Fpurl.org%2Fdc%2Felements%2F1.1%2F%22%20xmlns%3Acc%3D%22http%3A%2F%2Fcreativecommons.org%2Fns%23%22%20xmlns%3Ardf%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2F02%2F22-rdf-syntax-ns%23%22%20xmlns%3Asvg%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20version%3D%221.1%22%20width%3D%2216%22%20height%3D%2216%22%20viewBox%3D%220%200%2016%2016%22%20id%3D%22Layer_1%22%20xml%3Aspace%3D%22preserve%22%3E%3Cmetadata%20id%3D%22metadata9%22%3E%3Crdf%3ARDF%3E%3Ccc%3AWork%20rdf%3Aabout%3D%22%22%3E%3Cdc%3Aformat%3Eimage%2Fsvg%2Bxml%3C%2Fdc%3Aformat%3E%3Cdc%3Atype%20rdf%3Aresource%3D%22http%3A%2F%2Fpurl.org%2Fdc%2Fdcmitype%2FStillImage%22%20%2F%3E%3Cdc%3Atitle%3E%3C%2Fdc%3Atitle%3E%3C%2Fcc%3AWork%3E%3C%2Frdf%3ARDF%3E%3C%2Fmetadata%3E%3Cdefs%20id%3D%22defs7%22%20%2F%3E%3Cpath%20d%3D%22M%2015%2C6%2010%2C6%20C%201.0301983%2C6.00505%2015.002631%2C6.011353%206%2C6%20L%201%2C6%20C%200.45%2C6%200%2C6.45%200%2C7%20l%200%2C2%20c%200%2C0.55%200.45%2C1%201%2C1%20l%205%2C0%20c%208.988585%2C-0.019732%20-5.02893401%2C-0.018728%204%2C0%20l%205%2C0%20c%200.55%2C0%201%2C-0.45%201%2C-1%20L%2016%2C7%20C%2016%2C6.45%2015.55%2C6%2015%2C6%20z%22%20id%3D%22path3%22%20style%3D%22fill%3A%236a6c8a%22%20%2F%3E%3C%2Fsvg%3E');\n}\n.x6-widget-handle-pie-toggle-opened:hover {\n background-image: url('data:image/svg+xml;charset=utf8,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22UTF-8%22%20standalone%3D%22no%22%3F%3E%3Csvg%20xmlns%3Adc%3D%22http%3A%2F%2Fpurl.org%2Fdc%2Felements%2F1.1%2F%22%20xmlns%3Acc%3D%22http%3A%2F%2Fcreativecommons.org%2Fns%23%22%20xmlns%3Ardf%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2F02%2F22-rdf-syntax-ns%23%22%20xmlns%3Asvg%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20version%3D%221.1%22%20width%3D%2216%22%20height%3D%2216%22%20viewBox%3D%220%200%2016%2016%22%20id%3D%22Layer_1%22%20xml%3Aspace%3D%22preserve%22%3E%3Cmetadata%20id%3D%22metadata9%22%3E%3Crdf%3ARDF%3E%3Ccc%3AWork%20rdf%3Aabout%3D%22%22%3E%3Cdc%3Aformat%3Eimage%2Fsvg%2Bxml%3C%2Fdc%3Aformat%3E%3Cdc%3Atype%20rdf%3Aresource%3D%22http%3A%2F%2Fpurl.org%2Fdc%2Fdcmitype%2FStillImage%22%20%2F%3E%3Cdc%3Atitle%3E%3C%2Fdc%3Atitle%3E%3C%2Fcc%3AWork%3E%3C%2Frdf%3ARDF%3E%3C%2Fmetadata%3E%3Cdefs%20id%3D%22defs7%22%20%2F%3E%3Cpath%20d%3D%22M%2015%2C6%2010%2C6%20C%201.0301983%2C6.00505%2015.002631%2C6.011353%206%2C6%20L%201%2C6%20C%200.45%2C6%200%2C6.45%200%2C7%20l%200%2C2%20c%200%2C0.55%200.45%2C1%201%2C1%20l%205%2C0%20c%208.988585%2C-0.019732%20-5.02893401%2C-0.018728%204%2C0%20l%205%2C0%20c%200.55%2C0%201%2C-0.45%201%2C-1%20L%2016%2C7%20C%2016%2C6.45%2015.55%2C6%2015%2C6%20z%22%20id%3D%22path3%22%20style%3D%22fill%3A%23FD6EB6%22%20%2F%3E%3C%2Fsvg%3E');\n}\n.x6-widget-dnd {\n position: absolute;\n top: -10000px;\n left: -10000px;\n z-index: 999999;\n display: none;\n cursor: move;\n opacity: 0.7;\n pointer-events: 'cursor';\n}\n.x6-widget-dnd.dragging {\n display: inline-block;\n}\n.x6-widget-dnd.dragging * {\n pointer-events: none !important;\n}\n.x6-widget-dnd .x6-graph {\n background: transparent;\n box-shadow: none;\n}\n.x6-widget-halo {\n position: absolute;\n pointer-events: none;\n}\n.x6-widget-halo-content {\n position: absolute;\n top: 100%;\n padding: 6px;\n font-size: 10px;\n line-height: 14px;\n text-align: center;\n border-radius: 6px;\n}\n.x6-widget-halo-handles + .x6-widget-halo-content {\n right: -20px;\n left: -20px;\n margin-top: 30px;\n}\n.x6-widget-halo-handles.x6-widget-handle-small + .x6-widget-halo-content {\n margin-top: 25px;\n}\n.x6-widget-halo-handles.x6-widget-handle-small + .x6-widget-halo-content {\n margin-top: 20px;\n}\n.x6-widget-halo-handles.x6-widget-handle-pie + .x6-widget-halo-content {\n right: 0;\n left: 0;\n margin-top: 10px;\n}\n.x6-widget-halo-content {\n color: #fff;\n background-color: #6a6b8a;\n}\n.x6-widget-halo.type-node .x6-widget-handle-toolbar .x6-widget-handle-remove {\n position: absolute;\n right: 100%;\n bottom: 100%;\n margin-right: 6px;\n margin-bottom: 3px;\n}\n.x6-widget-halo.type-edge .x6-widget-handle-surround .x6-widget-handle-remove {\n background-color: #fff;\n border-radius: 50%;\n}\n.x6-widget-halo.type-edge .x6-widget-handle-toolbar {\n margin-top: -60px;\n margin-left: -18px;\n}\n.x6-widget-halo.type-edge .x6-widget-handle-toolbar::after {\n top: -22px;\n left: -9px;\n}\n.x6-widget-minimap {\n position: relative;\n display: table-cell;\n box-sizing: border-box;\n overflow: hidden;\n text-align: center;\n vertical-align: middle;\n background-color: #fff;\n user-select: none;\n}\n.x6-widget-minimap .x6-graph {\n display: inline-block;\n box-shadow: 0 0 4px 0 #eee;\n cursor: pointer;\n}\n.x6-widget-minimap .x6-graph > svg {\n pointer-events: none;\n shape-rendering: optimizeSpeed;\n}\n.x6-widget-minimap .x6-graph .x6-node * {\n /* stylelint-disable-next-line */\n vector-effect: initial;\n}\n.x6-widget-minimap-viewport {\n position: absolute;\n box-sizing: content-box !important;\n margin: -2px 0 0 -2px;\n border: 2px solid #31d0c6;\n cursor: move;\n}\n.x6-widget-minimap-viewport-zoom {\n position: absolute;\n right: 0;\n bottom: 0;\n box-sizing: border-box;\n width: 12px;\n height: 12px;\n margin: 0 -6px -6px 0;\n background-color: #fff;\n border: 2px solid #31d0c6;\n border-radius: 50%;\n cursor: nwse-resize;\n}\n.x6-graph-scroller {\n position: relative;\n box-sizing: border-box;\n overflow: scroll;\n outline: none;\n}\n.x6-graph-scroller-content {\n position: relative;\n}\n.x6-graph-scroller-background {\n position: absolute;\n top: 0;\n right: 0;\n bottom: 0;\n left: 0;\n}\n.x6-graph-scroller .x6-graph {\n position: absolute;\n display: inline-block;\n margin: 0;\n box-shadow: none;\n}\n.x6-graph-scroller .x6-graph > svg {\n display: block;\n}\n.x6-graph-scroller.x6-graph-scroller-paged .x6-graph {\n box-shadow: 0 0 4px 0 #eee;\n}\n.x6-graph-scroller.x6-graph-scroller-pannable[data-panning='false'] {\n cursor: grab;\n cursor: -moz-grab;\n cursor: -webkit-grab;\n}\n.x6-graph-scroller.x6-graph-scroller-pannable[data-panning='true'] {\n cursor: grabbing;\n cursor: -moz-grabbing;\n cursor: -webkit-grabbing;\n user-select: none;\n}\n.x6-graph-pagebreak {\n position: absolute;\n top: 0;\n right: 0;\n bottom: 0;\n left: 0;\n}\n.x6-graph-pagebreak-vertical {\n position: absolute;\n top: 0;\n bottom: 0;\n box-sizing: border-box;\n width: 1px;\n border-left: 1px dashed #bdbdbd;\n}\n.x6-graph-pagebreak-horizontal {\n position: absolute;\n right: 0;\n left: 0;\n box-sizing: border-box;\n height: 1px;\n border-top: 1px dashed #bdbdbd;\n}\n.x6-widget-selection {\n position: absolute;\n display: none;\n width: 0;\n height: 0;\n touch-action: none;\n}\n.x6-widget-selection-rubberband {\n display: block;\n overflow: visible;\n opacity: 0.3;\n}\n.x6-widget-selection-selected {\n display: block;\n}\n.x6-widget-selection-box {\n cursor: move;\n}\n.x6-widget-selection-inner[data-selection-length='0'],\n.x6-widget-selection-inner[data-selection-length='1'] {\n display: none;\n}\n.x6-widget-selection-content {\n position: absolute;\n top: 100%;\n right: -20px;\n left: -20px;\n margin-top: 30px;\n padding: 6px;\n line-height: 14px;\n text-align: center;\n border-radius: 6px;\n}\n.x6-widget-selection-content:empty {\n display: none;\n}\n.x6-widget-selection-rubberband {\n background-color: #3498db;\n border: 2px solid #2980b9;\n}\n.x6-widget-selection-box {\n box-sizing: content-box !important;\n margin-top: -4px;\n margin-left: -4px;\n padding-right: 4px;\n padding-bottom: 4px;\n border: 2px dashed #feb663;\n box-shadow: 2px 2px 5px #d3d3d3;\n}\n.x6-widget-selection-inner {\n box-sizing: content-box !important;\n margin-top: -8px;\n margin-left: -8px;\n padding-right: 12px;\n padding-bottom: 12px;\n border: 2px solid #feb663;\n box-shadow: 2px 2px 5px #d3d3d3;\n}\n.x6-widget-selection-content {\n color: #fff;\n font-size: 10px;\n background-color: #6a6b8a;\n}\n.x6-widget-snapline {\n position: absolute;\n top: 0;\n right: 0;\n bottom: 0;\n left: 0;\n pointer-events: none;\n}\n.x6-widget-snapline-vertical,\n.x6-widget-snapline-horizontal {\n position: absolute;\n opacity: 1;\n pointer-events: none;\n}\n.x6-widget-snapline-horizontal {\n border-bottom: 1px solid #2ecc71;\n}\n.x6-widget-snapline-vertical {\n border-right: 1px solid #2ecc71;\n}\n.x6-widget-stencil {\n position: absolute;\n top: 0;\n right: 0;\n bottom: 0;\n left: 0;\n}\n.x6-widget-stencil::after {\n position: absolute;\n top: 0;\n display: block;\n width: 100%;\n height: 20px;\n padding: 8px 0;\n line-height: 20px;\n text-align: center;\n opacity: 0;\n transition: top 0.1s linear, opacity 0.1s linear;\n content: ' ';\n pointer-events: none;\n}\n.x6-widget-stencil-content {\n position: absolute;\n top: 0;\n right: 0;\n bottom: 0;\n left: 0;\n height: auto;\n overflow-x: hidden;\n overflow-y: auto;\n}\n.x6-widget-stencil .x6-node [magnet]:not([magnet='passive']) {\n pointer-events: none;\n}\n.x6-widget-stencil-group {\n padding: 0;\n padding-bottom: 8px;\n overflow: hidden;\n user-select: none;\n}\n.x6-widget-stencil-group.collapsed {\n height: auto;\n padding-bottom: 0;\n}\n.x6-widget-stencil-group-title {\n position: relative;\n margin-top: 0;\n margin-bottom: 0;\n padding: 4px;\n cursor: pointer;\n}\n.x6-widget-stencil-title,\n.x6-widget-stencil-group > .x6-widget-stencil-group-title {\n overflow: hidden;\n white-space: nowrap;\n text-overflow: ellipsis;\n user-select: none;\n}\n.x6-widget-stencil .unmatched {\n opacity: 0.3;\n}\n.x6-widget-stencil .x6-node.unmatched {\n display: none;\n}\n.x6-widget-stencil-group.unmatched {\n display: none;\n}\n.x6-widget-stencil-search-text {\n position: relative;\n z-index: 1;\n box-sizing: border-box;\n width: 100%;\n height: 30px;\n max-height: 30px;\n line-height: 30px;\n outline: 0;\n}\n.x6-widget-stencil.not-found::after {\n opacity: 1;\n content: attr(data-not-found-text);\n}\n.x6-widget-stencil.not-found.searchable::after {\n top: 30px;\n}\n.x6-widget-stencil.not-found.searchable.collapsable::after {\n top: 50px;\n}\n.x6-widget-stencil {\n color: #333;\n background: #f5f5f5;\n}\n.x6-widget-stencil-content {\n position: absolute;\n}\n.x6-widget-stencil.collapsable > .x6-widget-stencil-content {\n top: 32px;\n}\n.x6-widget-stencil.searchable > .x6-widget-stencil-content {\n top: 80px;\n}\n.x6-widget-stencil.not-found::after {\n position: absolute;\n}\n.x6-widget-stencil.not-found.searchable.collapsable::after {\n top: 80px;\n}\n.x6-widget-stencil.not-found.searchable::after {\n top: 60px;\n}\n.x6-widget-stencil-group {\n height: auto;\n margin-bottom: 1px;\n padding: 0;\n transition: none;\n}\n.x6-widget-stencil-group .x6-graph {\n background: transparent;\n box-shadow: none;\n}\n.x6-widget-stencil-group.collapsed {\n height: auto;\n max-height: 31px;\n}\n.x6-widget-stencil-title,\n.x6-widget-stencil-group > .x6-widget-stencil-group-title {\n position: relative;\n left: 0;\n box-sizing: border-box;\n width: 100%;\n height: 32px;\n padding: 0 5px 0 8px;\n color: #666;\n font-weight: 700;\n font-size: 12px;\n line-height: 32px;\n cursor: default;\n transition: all 0.3;\n}\n.x6-widget-stencil-title:hover,\n.x6-widget-stencil-group > .x6-widget-stencil-group-title:hover {\n color: #444;\n}\n.x6-widget-stencil-title {\n background: #e9e9e9;\n}\n.x6-widget-stencil-group > .x6-widget-stencil-group-title {\n background: #ededed;\n}\n.x6-widget-stencil.collapsable > .x6-widget-stencil-title,\n.x6-widget-stencil-group.collapsable > .x6-widget-stencil-group-title {\n padding-left: 32px;\n cursor: pointer;\n}\n.x6-widget-stencil.collapsable > .x6-widget-stencil-title::before,\n.x6-widget-stencil-group.collapsable > .x6-widget-stencil-group-title::before {\n position: absolute;\n top: 6px;\n left: 8px;\n display: block;\n width: 18px;\n height: 18px;\n margin: 0;\n padding: 0;\n background-color: transparent;\n background-repeat: no-repeat;\n background-position: 0 0;\n border: none;\n content: ' ';\n}\n.x6-widget-stencil.collapsable > .x6-widget-stencil-title::before,\n.x6-widget-stencil-group.collapsable > .x6-widget-stencil-group-title::before {\n background-image: url('data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTgiIGhlaWdodD0iMTgiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGcgZmlsbD0iIzAwMCIgZmlsbC1ydWxlPSJub256ZXJvIj48cGF0aCBkPSJNOS4zNzUuNUM0LjY4Ny41Ljg3NSA0LjMxMy44NzUgOWMwIDQuNjg4IDMuODEyIDguNSA4LjUgOC41IDQuNjg3IDAgOC41LTMuODEyIDguNS04LjUgMC00LjY4Ny0zLjgxMy04LjUtOC41LTguNXptMCAxNS44ODZDNS4zMDMgMTYuMzg2IDEuOTkgMTMuMDcyIDEuOTkgOXMzLjMxMi03LjM4NSA3LjM4NS03LjM4NVMxNi43NiA0LjkyOCAxNi43NiA5YzAgNC4wNzItMy4zMTMgNy4zODYtNy4zODUgNy4zODZ6Ii8+PHBhdGggZD0iTTEyLjc1MyA4LjQ0M0g1Ljk5N2EuNTU4LjU1OCAwIDAwMCAxLjExNmg2Ljc1NmEuNTU4LjU1OCAwIDAwMC0xLjExNnoiLz48L2c+PC9zdmc+');\n opacity: 0.4;\n transition: all 0.3s;\n}\n.x6-widget-stencil.collapsable > .x6-widget-stencil-title:hover::before,\n.x6-widget-stencil-group.collapsable > .x6-widget-stencil-group-title:hover::before {\n opacity: 0.6;\n}\n.x6-widget-stencil.collapsable.collapsed > .x6-widget-stencil-title::before,\n.x6-widget-stencil-group.collapsable.collapsed > .x6-widget-stencil-group-title::before {\n background-image: url('data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTgiIGhlaWdodD0iMTgiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGcgZmlsbD0iIzAwMCIgZmlsbC1ydWxlPSJub256ZXJvIj48cGF0aCBkPSJNOS4zNzUuNUM0LjY4Ny41Ljg3NSA0LjMxMy44NzUgOWMwIDQuNjg4IDMuODEyIDguNSA4LjUgOC41IDQuNjg3IDAgOC41LTMuODEyIDguNS04LjUgMC00LjY4Ny0zLjgxMy04LjUtOC41LTguNXptMCAxNS44ODZDNS4zMDMgMTYuMzg2IDEuOTkgMTMuMDcyIDEuOTkgOXMzLjMxMi03LjM4NSA3LjM4NS03LjM4NVMxNi43NiA0LjkyOCAxNi43NiA5YzAgNC4wNzItMy4zMTMgNy4zODYtNy4zODUgNy4zODZ6Ii8+PHBhdGggZD0iTTEyLjc1MyA4LjQ0M0g1Ljk5N2EuNTU4LjU1OCAwIDAwMCAxLjExNmg2Ljc1NmEuNTU4LjU1OCAwIDAwMC0xLjExNnoiLz48cGF0aCBkPSJNOC44MTcgNS42MjN2Ni43NTZhLjU1OC41NTggMCAwMDEuMTE2IDBWNS42MjNhLjU1OC41NTggMCAxMC0xLjExNiAweiIvPjwvZz48L3N2Zz4=');\n opacity: 0.4;\n}\n.x6-widget-stencil.collapsable.collapsed > .x6-widget-stencil-title:hover::before,\n.x6-widget-stencil-group.collapsable.collapsed > .x6-widget-stencil-group-title:hover::before {\n opacity: 0.6;\n}\n.x6-widget-stencil input[type='search'] {\n -webkit-appearance: textfield;\n}\n.x6-widget-stencil input[type='search']::-webkit-search-cancel-button,\n.x6-widget-stencil input[type='search']::-webkit-search-decoration {\n -webkit-appearance: none;\n}\n.x6-widget-stencil-search-text {\n display: block;\n width: 90%;\n margin: 8px 5%;\n padding-left: 8px;\n color: #333;\n background: #fff;\n border: 1px solid #e9e9e9;\n border-radius: 12px;\n outline: 0;\n}\n.x6-widget-stencil-search-text:focus {\n outline: 0;\n}\n.x6-widget-stencil::after {\n color: #808080;\n font-weight: 600;\n font-size: 12px;\n background: 0 0;\n}\n.x6-widget-transform {\n position: absolute;\n box-sizing: content-box !important;\n margin: -5px 0 0 -5px;\n padding: 4px;\n border: 1px dashed #000;\n border-radius: 5px;\n user-select: none;\n pointer-events: none;\n}\n.x6-widget-transform > div {\n position: absolute;\n box-sizing: border-box;\n background-color: #fff;\n border: 1px solid #000;\n transition: background-color 0.2s;\n pointer-events: auto;\n -webkit-user-drag: none;\n user-drag: none;\n /* stylelint-disable-line */\n}\n.x6-widget-transform > div:hover {\n background-color: #d3d3d3;\n}\n.x6-widget-transform-cursor-n {\n cursor: n-resize;\n}\n.x6-widget-transform-cursor-s {\n cursor: s-resize;\n}\n.x6-widget-transform-cursor-e {\n cursor: e-resize;\n}\n.x6-widget-transform-cursor-w {\n cursor: w-resize;\n}\n.x6-widget-transform-cursor-ne {\n cursor: ne-resize;\n}\n.x6-widget-transform-cursor-nw {\n cursor: nw-resize;\n}\n.x6-widget-transform-cursor-se {\n cursor: se-resize;\n}\n.x6-widget-transform-cursor-sw {\n cursor: sw-resize;\n}\n.x6-widget-transform-resize {\n width: 10px;\n height: 10px;\n border-radius: 6px;\n}\n.x6-widget-transform-resize[data-position='top-left'] {\n top: -5px;\n left: -5px;\n}\n.x6-widget-transform-resize[data-position='top-right'] {\n top: -5px;\n right: -5px;\n}\n.x6-widget-transform-resize[data-position='bottom-left'] {\n bottom: -5px;\n left: -5px;\n}\n.x6-widget-transform-resize[data-position='bottom-right'] {\n right: -5px;\n bottom: -5px;\n}\n.x6-widget-transform-resize[data-position='top'] {\n top: -5px;\n left: 50%;\n margin-left: -5px;\n}\n.x6-widget-transform-resize[data-position='bottom'] {\n bottom: -5px;\n left: 50%;\n margin-left: -5px;\n}\n.x6-widget-transform-resize[data-position='left'] {\n top: 50%;\n left: -5px;\n margin-top: -5px;\n}\n.x6-widget-transform-resize[data-position='right'] {\n top: 50%;\n right: -5px;\n margin-top: -5px;\n}\n.x6-widget-transform.prevent-aspect-ratio .x6-widget-transform-resize[data-position='top'],\n.x6-widget-transform.prevent-aspect-ratio .x6-widget-transform-resize[data-position='bottom'],\n.x6-widget-transform.prevent-aspect-ratio .x6-widget-transform-resize[data-position='left'],\n.x6-widget-transform.prevent-aspect-ratio .x6-widget-transform-resize[data-position='right'] {\n display: none;\n}\n.x6-widget-transform.no-orth-resize .x6-widget-transform-resize[data-position='bottom'],\n.x6-widget-transform.no-orth-resize .x6-widget-transform-resize[data-position='left'],\n.x6-widget-transform.no-orth-resize .x6-widget-transform-resize[data-position='right'],\n.x6-widget-transform.no-orth-resize .x6-widget-transform-resize[data-position='top'] {\n display: none;\n}\n.x6-widget-transform.no-resize .x6-widget-transform-resize {\n display: none;\n}\n.x6-widget-transform-rotate {\n top: -20px;\n left: -20px;\n width: 12px;\n height: 12px;\n border-radius: 6px;\n cursor: crosshair;\n}\n.x6-widget-transform.no-rotate .x6-widget-transform-rotate {\n display: none;\n}\n.x6-widget-transform-active {\n border-color: transparent;\n pointer-events: all;\n}\n.x6-widget-transform-active > div {\n display: none;\n}\n.x6-widget-transform-active > .x6-widget-transform-active-handle {\n display: block;\n background-color: #808080;\n}\n.x6-widget-knob {\n position: absolute;\n box-sizing: border-box;\n width: 16px;\n height: 16px;\n margin-top: -8px;\n margin-left: -8px;\n cursor: pointer;\n user-select: none;\n}\n.x6-widget-knob::before,\n.x6-widget-knob::after {\n position: absolute;\n transform: rotate(45deg);\n content: '';\n}\n.x6-widget-knob::before {\n top: 4px;\n left: 4px;\n box-sizing: border-box;\n width: 8px;\n height: 8px;\n background-color: #fff;\n}\n.x6-widget-knob::after {\n top: 5px;\n left: 5px;\n box-sizing: border-box;\n width: 6px;\n height: 6px;\n background-color: #fca000;\n}\n.x6-graph-print {\n position: relative;\n}\n.x6-graph-print .x6-graph-print-ready {\n display: none;\n}\n.x6-graph-print .x6-graph-print-preview {\n overflow: hidden !important;\n background: #fff !important;\n}\n@media print {\n html,\n html > body.x6-graph-printing {\n position: relative !important;\n width: 100% !important;\n height: 100% !important;\n margin: 0 !important;\n padding: 0 !important;\n }\n html > body.x6-graph-printing > * {\n display: none !important;\n }\n html > body.x6-graph-printing > .x6-graph-print {\n display: block !important;\n }\n .x6-graph-print {\n top: 0 !important;\n left: 0 !important;\n margin: 0 !important;\n padding: 0 !important;\n overflow: hidden !important;\n page-break-after: always;\n background: #fff !important;\n }\n .x6-graph-print .x6-graph-print-ready {\n display: none;\n }\n}\n.x6-cell-tool-editor {\n position: relative;\n display: inline-block;\n min-height: 1em;\n margin: 0;\n padding: 0;\n line-height: 1;\n white-space: normal;\n text-align: center;\n vertical-align: top;\n overflow-wrap: normal;\n outline: none;\n transform-origin: 0 0;\n -webkit-user-drag: none;\n}\n.x6-edge-tool-editor {\n border: 1px solid #275fc5;\n border-radius: 2px;\n}\n`;\n//# sourceMappingURL=raw.js.map","var __rest = (this && this.__rest) || function (s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n t[p[i]] = s[p[i]];\n }\n return t;\n};\nimport { Dom, Vector } from '../../util';\nimport { View } from '../../view/view';\nimport { Point, Angle } from '../../geometry';\nexport class Handle {\n get handleClassName() {\n return ClassNames.handle;\n }\n get pie() {\n return Object.assign(Object.assign({}, Handle.defaultPieOptions), this.handleOptions.pie);\n }\n initHandles() {\n this.handles = [];\n if (this.handleOptions.handles) {\n this.handleOptions.handles.forEach((handle) => this.addHandle(handle));\n }\n if (this.handleOptions.type === 'pie') {\n if (this.pie.toggles) {\n const className = ClassNames.pieToggle;\n this.$pieToggles = {};\n this.pie.toggles.forEach((item) => {\n const $elem = this.$('
');\n this.applyAttrs($elem, item.attrs);\n $elem\n .addClass(className)\n .addClass(`${className}-pos-${item.position || 'e'}`)\n .attr('data-name', item.name)\n .appendTo(this.container);\n this.$pieToggles[item.name] = $elem;\n });\n }\n this.setPieIcons();\n }\n if (this.$handleContainer) {\n const type = this.handleOptions.type || 'surround';\n this.$handleContainer\n .addClass(ClassNames.wrap)\n .addClass(ClassNames.animate)\n .addClass(`${ClassNames.handle}-${type}`);\n }\n this.delegateEvents({\n [`mousedown .${ClassNames.handle}`]: 'onHandleMouseDown',\n [`touchstart .${ClassNames.handle}`]: 'onHandleMouseDown',\n [`mousedown .${ClassNames.pieToggle}`]: 'onPieToggleMouseDown',\n [`touchstart .${ClassNames.pieToggle}`]: 'onPieToggleMouseDown',\n });\n }\n onHandleMouseDown(evt) {\n const action = this.$(evt.currentTarget)\n .closest(`.${ClassNames.handle}`)\n .attr('data-action');\n if (action) {\n evt.preventDefault();\n evt.stopPropagation();\n this.setEventData(evt, {\n action,\n clientX: evt.clientX,\n clientY: evt.clientY,\n startX: evt.clientX,\n startY: evt.clientY,\n });\n if (evt.type === 'mousedown' && evt.button === 2) {\n this.triggerHandleAction(action, 'contextmenu', evt);\n }\n else {\n this.triggerHandleAction(action, 'mousedown', evt);\n this.delegateDocumentEvents({\n mousemove: 'onHandleMouseMove',\n touchmove: 'onHandleMouseMove',\n mouseup: 'onHandleMouseUp',\n touchend: 'onHandleMouseUp',\n touchcancel: 'onHandleMouseUp',\n }, evt.data);\n }\n }\n }\n onHandleMouseMove(evt) {\n const data = this.getEventData(evt);\n const action = data.action;\n if (action) {\n this.triggerHandleAction(action, 'mousemove', evt);\n }\n }\n onHandleMouseUp(evt) {\n const data = this.getEventData(evt);\n const action = data.action;\n if (action) {\n this.triggerHandleAction(action, 'mouseup', evt);\n this.undelegateDocumentEvents();\n }\n }\n triggerHandleAction(action, eventName, evt, args) {\n evt.preventDefault();\n evt.stopPropagation();\n const e = this.normalizeEvent(evt);\n const data = this.getEventData(e);\n const local = this.graph.snapToGrid(e.clientX, e.clientY);\n const origin = this.graph.snapToGrid(data.clientX, data.clientY);\n const dx = local.x - origin.x;\n const dy = local.y - origin.y;\n this.trigger(`action:${action}:${eventName}`, Object.assign({ e,\n dx,\n dy, x: local.x, y: local.y, offsetX: evt.clientX - data.startX, offsetY: evt.clientY - data.startY }, args));\n data.clientX = evt.clientX;\n data.clientY = evt.clientY;\n }\n onPieToggleMouseDown(evt) {\n evt.stopPropagation();\n const name = this.$(evt.target)\n .closest(`.${ClassNames.pieToggle}`)\n .attr('data-name');\n if (!this.isOpen(name)) {\n if (this.isOpen()) {\n this.toggleState();\n }\n }\n this.toggleState(name);\n }\n setPieIcons() {\n if (this.handleOptions.type === 'pie') {\n this.$handleContainer.find(`.${ClassNames.handle}`).each((_, elem) => {\n const $elem = this.$(elem);\n const action = $elem.attr('data-action');\n const className = ClassNames.pieSlice;\n const handle = this.getHandle(action);\n if (!handle || !handle.icon) {\n const contect = window\n .getComputedStyle(elem, ':before')\n .getPropertyValue('content');\n if (contect && contect !== 'none') {\n const $icons = $elem.find(`.${className}-txt`);\n if ($icons.length) {\n Vector.create($icons[0]).text(contect.replace(/['\"]/g, ''));\n }\n }\n const bgImg = $elem.css('background-image');\n if (bgImg) {\n const matches = bgImg.match(/url\\(['\"]?([^'\"]+)['\"]?\\)/);\n if (matches) {\n const href = matches[1];\n const $imgs = $elem.find(`.${className}-img`);\n if ($imgs.length > 0) {\n Vector.create($imgs[0]).attr('xlink:href', href);\n }\n }\n }\n }\n });\n }\n }\n getHandleIdx(name) {\n return this.handles.findIndex((item) => item.name === name);\n }\n hasHandle(name) {\n return this.getHandleIdx(name) >= 0;\n }\n getHandle(name) {\n return this.handles.find((item) => item.name === name);\n }\n renderHandle(handle) {\n const $handle = this.$('
')\n .addClass(`${ClassNames.handle} ${ClassNames.handle}-${handle.name}`)\n .attr('data-action', handle.name)\n .prop('draggable', false);\n if (this.handleOptions.type === 'pie') {\n const index = this.getHandleIdx(handle.name);\n const pie = this.pie;\n const outerRadius = pie.outerRadius;\n const innerRadius = pie.innerRadius;\n const offset = (outerRadius + innerRadius) / 2;\n const ratio = new Point(outerRadius, outerRadius);\n const delta = Angle.toRad(pie.sliceAngle);\n const curRad = index * delta + Angle.toRad(pie.startAngle);\n const nextRad = curRad + delta;\n const pathData = Dom.createSlicePathData(innerRadius, outerRadius, curRad, nextRad);\n const vSvg = Vector.create('svg').addClass(`${ClassNames.pieSlice}-svg`);\n const vPath = Vector.create('path')\n .addClass(ClassNames.pieSlice)\n .attr('d', pathData)\n .translate(outerRadius, outerRadius);\n const pos = Point.fromPolar(offset, -curRad - delta / 2, ratio).toJSON();\n const iconSize = pie.iconSize;\n const vImg = Vector.create('image')\n .attr(pos)\n .addClass(`${ClassNames.pieSlice}-img`);\n pos.y = pos.y + iconSize - 2;\n const vText = Vector.create('text', { 'font-size': iconSize })\n .attr(pos)\n .addClass(`${ClassNames.pieSlice}-txt`);\n vImg.attr({\n width: iconSize,\n height: iconSize,\n });\n vImg.translate(-iconSize / 2, -iconSize / 2);\n vText.translate(-iconSize / 2, -iconSize / 2);\n vSvg.append([vPath, vImg, vText]);\n $handle.append(vSvg.node);\n }\n else {\n $handle.addClass(`${ClassNames.handle}-pos-${handle.position}`);\n if (handle.content) {\n if (typeof handle.content === 'string') {\n $handle.html(handle.content);\n }\n else {\n $handle.append(handle.content);\n }\n }\n }\n this.updateHandleIcon($handle, handle.icon);\n this.applyAttrs($handle, handle.attrs);\n return $handle;\n }\n addHandle(handle) {\n if (!this.hasHandle(handle.name)) {\n this.handles.push(handle);\n const events = handle.events;\n if (events) {\n Object.keys(events).forEach((action) => {\n const callback = events[action];\n const name = `action:${handle.name}:${action}`;\n if (typeof callback === 'string') {\n this.on(name, this[callback], this);\n }\n else {\n this.on(name, callback);\n }\n });\n }\n if (this.$handleContainer) {\n this.$handleContainer.append(this.renderHandle(handle));\n }\n }\n return this;\n }\n addHandles(handles) {\n handles.forEach((handle) => this.addHandle(handle));\n return this;\n }\n removeHandles() {\n while (this.handles.length) {\n this.removeHandle(this.handles[0].name);\n }\n return this;\n }\n removeHandle(name) {\n const index = this.getHandleIdx(name);\n const handle = this.handles[index];\n if (handle) {\n if (handle.events) {\n Object.keys(handle.events).forEach((event) => {\n this.off(`action:${name}:${event}`);\n });\n }\n this.getHandleElem(name).remove();\n this.handles.splice(index, 1);\n }\n return this;\n }\n changeHandle(name, newHandle) {\n const handle = this.getHandle(name);\n if (handle) {\n this.removeHandle(name);\n this.addHandle(Object.assign(Object.assign({}, handle), newHandle));\n }\n return this;\n }\n toggleHandle(name, selected) {\n const handle = this.getHandle(name);\n if (handle) {\n const $handle = this.getHandleElem(name);\n const className = `${ClassNames.handle}-selected`;\n if (selected === undefined) {\n selected = !$handle.hasClass(className); // eslint-disable-line\n }\n $handle.toggleClass(className, selected);\n const icon = selected ? handle.iconSelected : handle.icon;\n if (icon) {\n this.updateHandleIcon($handle, icon);\n }\n }\n return this;\n }\n selectHandle(name) {\n return this.toggleHandle(name, true);\n }\n deselectHandle(name) {\n return this.toggleHandle(name, false);\n }\n deselectAllHandles() {\n this.handles.forEach((handle) => this.deselectHandle(handle.name));\n return this;\n }\n getHandleElem(name) {\n return this.$handleContainer.find(`.${ClassNames.handle}-${name}`);\n }\n updateHandleIcon($handle, icon) {\n if (this.handleOptions.type === 'pie') {\n const $icons = $handle.find(`.${ClassNames.pieSliceImg}`);\n this.$($icons[0]).attr('xlink:href', icon || '');\n }\n else {\n $handle.css('background-image', icon ? `url(${icon})` : '');\n }\n }\n isRendered() {\n return this.$handleContainer != null;\n }\n isOpen(name) {\n if (this.isRendered()) {\n return name\n ? this.$pieToggles[name].hasClass(ClassNames.pieToggleOpened)\n : this.$handleContainer.hasClass(`${ClassNames.pieOpended}`);\n }\n return false;\n }\n toggleState(name) {\n if (this.isRendered()) {\n const $handleContainer = this.$handleContainer;\n Object.keys(this.$pieToggles).forEach((key) => {\n const $toggle = this.$pieToggles[key];\n $toggle.removeClass(ClassNames.pieToggleOpened);\n });\n if (this.isOpen()) {\n this.trigger('pie:close', { name });\n $handleContainer.removeClass(ClassNames.pieOpended);\n }\n else {\n this.trigger('pie:open', { name });\n if (name) {\n const toggles = this.pie.toggles;\n const toggle = toggles && toggles.find((i) => i.name === name);\n if (toggle) {\n $handleContainer.attr({\n 'data-pie-toggle-name': toggle.name,\n 'data-pie-toggle-position': toggle.position,\n });\n }\n this.$pieToggles[name].addClass(ClassNames.pieToggleOpened);\n }\n $handleContainer.addClass(ClassNames.pieOpended);\n }\n }\n }\n applyAttrs(elem, attrs) {\n if (attrs) {\n const $elem = View.$(elem);\n Object.keys(attrs).forEach((selector) => {\n const $element = $elem.find(selector).addBack().filter(selector);\n const _a = attrs[selector], { class: cls } = _a, attr = __rest(_a, [\"class\"]);\n if (cls) {\n $element.addClass(cls);\n }\n $element.attr(attr);\n });\n }\n }\n}\n(function (Handle) {\n Handle.defaultPieOptions = {\n innerRadius: 20,\n outerRadius: 50,\n sliceAngle: 45,\n startAngle: 0,\n iconSize: 14,\n toggles: [\n {\n name: 'default',\n position: 'e',\n },\n ],\n };\n})(Handle || (Handle = {}));\nvar ClassNames;\n(function (ClassNames) {\n ClassNames.handle = View.prototype.prefixClassName('widget-handle');\n ClassNames.wrap = `${ClassNames.handle}-wrap`;\n ClassNames.animate = `${ClassNames.handle}-animate`;\n ClassNames.pieOpended = `${ClassNames.handle}-pie-opened`;\n ClassNames.pieToggle = `${ClassNames.handle}-pie-toggle`;\n ClassNames.pieToggleOpened = `${ClassNames.handle}-pie-toggle-opened`;\n ClassNames.pieSlice = `${ClassNames.handle}-pie-slice`;\n ClassNames.pieSliceImg = `${ClassNames.handle}-pie-slice-img`;\n})(ClassNames || (ClassNames = {}));\n//# sourceMappingURL=handle.js.map","var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __rest = (this && this.__rest) || function (s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n t[p[i]] = s[p[i]];\n }\n return t;\n};\nimport { View } from '../../view';\nexport class Widget extends View {\n constructor(options) {\n super();\n const _a = options, { view, cell, node, edge, graph } = _a, localOptions = __rest(_a, [\"view\", \"cell\", \"node\", \"edge\", \"graph\"]);\n if (view) {\n this.view = view;\n this.cell = view.cell;\n this.graph = view.graph;\n this.model = this.graph.model;\n }\n else if ((cell || edge || node) && graph) {\n this.cell = node || edge || cell;\n this.view = graph.renderer.findViewByCell(this.cell);\n this.graph = graph;\n this.model = this.graph.model;\n }\n const ctor = this.constructor;\n if (options.clearAll !== false) {\n ctor.removeInstances(this.graph);\n }\n ctor.register(this);\n this.init(localOptions);\n }\n static ensureCache() {\n if (!this.instanceCache.has(this)) {\n this.instanceCache.set(this, {});\n }\n return this.instanceCache.get(this);\n }\n static register(instance, graph) {\n if (graph == null) {\n // eslint-disable-next-line\n graph = instance.graph;\n }\n const dic = this.ensureCache();\n let cache = dic[graph.view.cid];\n if (cache == null) {\n cache = dic[graph.view.cid] = {};\n }\n cache[instance.cid] = instance;\n }\n static unregister(instance, graph) {\n if (graph == null) {\n // eslint-disable-next-line\n graph = instance.graph;\n }\n const dic = this.ensureCache();\n if (dic[graph.view.cid]) {\n delete dic[graph.view.cid][instance.cid];\n }\n }\n static removeInstances(graph) {\n const dic = this.ensureCache();\n const cache = dic[graph.view.cid];\n if (cache) {\n Object.keys(cache).forEach((cid) => {\n const instance = cache[cid];\n if (instance) {\n instance.remove();\n }\n });\n }\n }\n static getInstances(graph) {\n const dic = this.ensureCache();\n return dic[graph.view.cid] || {};\n }\n init(options) { } // eslint-disable-line\n render() {\n return this;\n }\n startListening() {\n if (this.options.clearOnBlankMouseDown !== false) {\n this.graph.on('blank:mousedown', this.remove, this);\n }\n }\n stopListening() {\n if (this.options.clearOnBlankMouseDown !== false) {\n this.graph.off('blank:mousedown', this.remove, this);\n }\n }\n remove() {\n this.stopListening();\n const ctor = this.constructor;\n ctor.unregister(this);\n return super.remove();\n }\n dispose() {\n this.remove();\n }\n}\n// #region static\nWidget.instanceCache = new WeakMap();\n__decorate([\n View.dispose()\n], Widget.prototype, \"dispose\", null);\n//# sourceMappingURL=widget.js.map","import { Widget } from '../common';\nimport { Dom } from '../../util';\nimport { Angle, Point } from '../../geometry';\nexport class Knob extends Widget {\n get node() {\n return this.cell;\n }\n get metadata() {\n const meta = this.cell.prop('knob');\n if (Array.isArray(meta)) {\n if (this.options.index != null) {\n return meta[this.options.index];\n }\n return null;\n }\n return meta;\n }\n init(options) {\n this.options = Object.assign({}, options);\n this.render();\n this.startListening();\n }\n startListening() {\n this.delegateEvents({\n mousedown: 'onMouseDown',\n touchstart: 'onMouseDown',\n });\n this.model.on('*', this.update, this);\n this.graph.on('scale', this.update, this);\n this.graph.on('translate', this.update, this);\n this.model.on('reseted', this.remove, this);\n this.node.on('removed', this.remove, this);\n this.view.on('node:resize:mousedown', this.onTransform, this);\n this.view.on('node:rotate:mousedown', this.onTransform, this);\n this.view.on('node:resize:mouseup', this.onTransformed, this);\n this.view.on('node:rotate:mouseup', this.onTransformed, this);\n this.view.on('cell:knob:mousedown', this.onKnobMouseDown, this);\n this.view.on('cell:knob:mouseup', this.onKnobMouseUp, this);\n super.startListening();\n }\n stopListening() {\n this.undelegateEvents();\n this.model.off('*', this.update, this);\n this.graph.off('scale', this.update, this);\n this.graph.off('translate', this.update, this);\n this.model.off('reseted', this.remove, this);\n this.node.off('removed', this.remove, this);\n this.view.off('node:resize:mousedown', this.onTransform, this);\n this.view.off('node:rotate:mousedown', this.onTransform, this);\n this.view.off('node:resize:mouseup', this.onTransformed, this);\n this.view.off('node:rotate:mouseup', this.onTransformed, this);\n this.view.off('cell:knob:mousedown', this.onKnobMouseDown, this);\n this.view.off('cell:knob:mouseup', this.onKnobMouseUp, this);\n super.stopListening();\n }\n render() {\n this.container = document.createElement('div');\n Dom.addClass(this.container, this.prefixClassName('widget-knob'));\n if (this.options.className) {\n Dom.addClass(this.container, this.options.className);\n }\n this.view.addClass(Private.KNOB);\n this.graph.container.appendChild(this.container);\n this.update();\n return this;\n }\n remove() {\n this.view.removeClass(Private.KNOB);\n return super.remove();\n }\n update() {\n if (this.metadata) {\n const { update, position } = this.metadata;\n const args = {\n knob: this,\n cell: this.cell,\n node: this.node,\n };\n if (position) {\n const pos = position.call(this.graph, Object.assign({}, args));\n if (pos) {\n const ctm = this.graph.matrix();\n const bbox = this.node.getBBox();\n const angle = Angle.normalize(this.node.getAngle());\n const local = Point.create(pos);\n if (angle !== 0) {\n local.rotate(-angle, { x: bbox.width / 2, y: bbox.height / 2 });\n }\n local.translate(bbox).scale(ctm.a, ctm.d).translate(ctm.e, ctm.f);\n this.container.style.left = `${local.x}px`;\n this.container.style.top = `${local.y}px`;\n }\n }\n if (update) {\n update.call(this.graph, Object.assign({}, args));\n }\n }\n }\n hide() {\n this.container.style.display = 'none';\n }\n show() {\n this.container.style.display = '';\n }\n onTransform() {\n this.hide();\n }\n onTransformed() {\n this.show();\n }\n onKnobMouseDown({ knob }) {\n if (this.cid !== knob.cid) {\n this.hide();\n }\n }\n onKnobMouseUp() {\n this.show();\n }\n notify(name, evt) {\n if (this.view) {\n const e = this.view.normalizeEvent(evt);\n const localPoint = this.graph.snapToGrid(e.clientX, e.clientY);\n this.view.notify(`cell:${name}`, {\n e,\n view: this.view,\n node: this.node,\n cell: this.cell,\n x: localPoint.x,\n y: localPoint.y,\n knob: this,\n });\n if (this.cell.isNode()) {\n this.view.notify(`node:${name}`, {\n e,\n view: this.view,\n node: this.node,\n cell: this.cell,\n x: localPoint.x,\n y: localPoint.y,\n knob: this,\n });\n }\n else if (this.cell.isEdge()) {\n this.view.notify(`edge:${name}`, {\n e,\n view: this.view,\n edge: this.cell,\n cell: this.cell,\n x: localPoint.x,\n y: localPoint.y,\n knob: this,\n });\n }\n }\n }\n onMouseDown(e) {\n e.stopPropagation();\n this.setEventData(e, {\n knobbing: false,\n originX: e.clientX,\n originY: e.clientY,\n clientX: e.clientX,\n clientY: e.clientY,\n });\n this.graph.view.undelegateEvents();\n this.delegateDocumentEvents(Private.documentEvents, e.data);\n if (this.metadata && this.metadata.onMouseDown) {\n this.metadata.onMouseDown.call(this.graph, {\n e,\n data: this.getEventData(e),\n knob: this,\n cell: this.cell,\n node: this.node,\n });\n }\n this.notify('knob:mousedown', e);\n }\n onMouseMove(e) {\n const data = this.getEventData(e);\n const view = this.graph.findViewByCell(this.node);\n if (!data.knobbing) {\n data.knobbing = true;\n if (view) {\n view.addClass(Private.KNOBBING);\n this.notify('knob', e);\n }\n this.model.startBatch('knob', { cid: this.cid });\n }\n data.clientX = e.clientX;\n data.clientY = e.clientY;\n if (this.metadata && this.metadata.onMouseMove) {\n const ctm = this.graph.matrix();\n const dx = (e.clientX - data.originX) / ctm.a;\n const dy = (e.clientY - data.originY) / ctm.d;\n const angle = this.node.getAngle();\n const delta = new Point(dx, dy).rotate(angle);\n this.metadata.onMouseMove.call(this.graph, {\n e,\n data,\n deltaX: delta.x,\n deltaY: delta.y,\n knob: this,\n cell: this.cell,\n node: this.node,\n });\n }\n this.notify('knobbing', e);\n this.notify('knob:mousemove', e);\n }\n onMouseUp(e) {\n this.undelegateDocumentEvents();\n this.graph.view.delegateEvents();\n const data = this.getEventData(e);\n const view = this.graph.findViewByCell(this.node);\n if (data.knobbing) {\n if (view) {\n view.removeClass(Private.KNOBBING);\n }\n if (this.metadata && this.metadata.onMouseUp) {\n this.metadata.onMouseUp.call(this.graph, {\n e,\n data,\n knob: this,\n cell: this.cell,\n node: this.node,\n });\n }\n this.model.stopBatch('knob', { cid: this.cid });\n this.notify('knobbed', e);\n }\n this.notify('knob:mouseup', e);\n }\n}\nvar Private;\n(function (Private) {\n Private.KNOB = 'has-widget-knob';\n Private.KNOBBING = 'node-knobbing';\n Private.documentEvents = {\n mousemove: 'onMouseMove',\n touchmove: 'onMouseMove',\n mouseup: 'onMouseUp',\n touchend: 'onMouseUp',\n };\n})(Private || (Private = {}));\n//# sourceMappingURL=index.js.map","var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { FunctionExt } from '../../util';\nimport { View } from '../../view/view';\nimport { Graph } from '../../graph/graph';\nimport { Point } from '../../geometry';\nvar ClassName;\n(function (ClassName) {\n ClassName.root = 'widget-minimap';\n ClassName.viewport = `${ClassName.root}-viewport`;\n ClassName.zoom = `${ClassName.viewport}-zoom`;\n})(ClassName || (ClassName = {}));\nexport class MiniMap extends View {\n constructor(options) {\n super();\n this.options = Object.assign(Object.assign({}, Util.defaultOptions), options);\n this.updateViewport = FunctionExt.debounce(this.updateViewport.bind(this), 0);\n this.container = document.createElement('div');\n this.$container = this.$(this.container).addClass(this.prefixClassName(ClassName.root));\n const graphContainer = document.createElement('div');\n this.container.appendChild(graphContainer);\n this.$viewport = this.$('
').addClass(this.prefixClassName(ClassName.viewport));\n if (this.options.scalable) {\n this.zoomHandle = this.$('
')\n .addClass(this.prefixClassName(ClassName.zoom))\n .appendTo(this.$viewport)\n .get(0);\n }\n this.$container.append(this.$viewport).css({\n width: this.options.width,\n height: this.options.height,\n padding: this.options.padding,\n });\n if (this.options.container) {\n this.options.container.appendChild(this.container);\n }\n this.sourceGraph = this.graph;\n const targetGraphOptions = Object.assign(Object.assign({}, this.options.graphOptions), { container: graphContainer, model: this.sourceGraph.model, frozen: true, async: this.sourceGraph.isAsync(), interacting: false, grid: false, background: false, rotating: false, resizing: false, embedding: false, selecting: false, snapline: false, clipboard: false, history: false, scroller: false });\n this.targetGraph = this.options.createGraph\n ? this.options.createGraph(targetGraphOptions)\n : new Graph(targetGraphOptions);\n this.targetGraph.renderer.unfreeze();\n this.updatePaper(this.sourceGraph.options.width, this.sourceGraph.options.height);\n this.startListening();\n }\n get graph() {\n return this.options.graph;\n }\n get scroller() {\n return this.graph.scroller.widget;\n }\n get graphContainer() {\n if (this.scroller) {\n return this.scroller.container;\n }\n return this.graph.container;\n }\n get $graphContainer() {\n if (this.scroller) {\n return this.scroller.$container;\n }\n return this.$(this.graph.container);\n }\n startListening() {\n if (this.scroller) {\n this.$graphContainer.on(`scroll${this.getEventNamespace()}`, this.updateViewport);\n }\n else {\n this.sourceGraph.on('translate', this.onSourceGraphTransform, this);\n this.sourceGraph.on('scale', this.onSourceGraphTransform, this);\n }\n this.sourceGraph.on('resize', this.updatePaper, this);\n this.delegateEvents({\n mousedown: 'startAction',\n touchstart: 'startAction',\n [`mousedown .${this.prefixClassName('graph')}`]: 'scrollTo',\n [`touchstart .${this.prefixClassName('graph')}`]: 'scrollTo',\n });\n }\n stopListening() {\n if (this.scroller) {\n this.$graphContainer.off(this.getEventNamespace());\n }\n else {\n this.sourceGraph.off('translate', this.onSourceGraphTransform, this);\n this.sourceGraph.off('scale', this.onSourceGraphTransform, this);\n }\n this.sourceGraph.off('resize', this.updatePaper, this);\n this.undelegateEvents();\n }\n onRemove() {\n this.targetGraph.view.remove();\n this.stopListening();\n this.targetGraph.dispose();\n }\n onSourceGraphTransform(options) {\n if (options.ui || this.targetGraphTransforming) {\n this.updateViewport();\n }\n else {\n this.updatePaper(this.sourceGraph.options.width, this.sourceGraph.options.height);\n }\n }\n updatePaper(w, h) {\n let width;\n let height;\n if (typeof w === 'object') {\n width = w.width;\n height = w.height;\n }\n else {\n width = w;\n height = h;\n }\n const origin = this.sourceGraph.options;\n const scale = this.sourceGraph.transform.getScale();\n const maxWidth = this.options.width - 2 * this.options.padding;\n const maxHeight = this.options.height - 2 * this.options.padding;\n width /= scale.sx; // eslint-disable-line\n height /= scale.sy; // eslint-disable-line\n this.ratio = Math.min(maxWidth / width, maxHeight / height);\n const ratio = this.ratio;\n const x = (origin.x * ratio) / scale.sx;\n const y = (origin.y * ratio) / scale.sy;\n width *= ratio; // eslint-disable-line\n height *= ratio; // eslint-disable-line\n this.targetGraph.resizeGraph(width, height);\n this.targetGraph.translate(x, y);\n this.targetGraph.scale(ratio, ratio);\n this.updateViewport();\n return this;\n }\n updateViewport() {\n const ratio = this.ratio;\n const scale = this.sourceGraph.transform.getScale();\n let origin = null;\n if (this.scroller) {\n origin = this.scroller.clientToLocalPoint(0, 0);\n }\n else {\n const ctm = this.sourceGraph.matrix();\n origin = new Point(-ctm.e / ctm.a, -ctm.f / ctm.d);\n }\n const position = this.$(this.targetGraph.container).position();\n const translation = this.targetGraph.translate();\n translation.ty = translation.ty || 0;\n this.geometry = {\n top: position.top + origin.y * ratio + translation.ty,\n left: position.left + origin.x * ratio + translation.tx,\n width: (this.$graphContainer.innerWidth() * ratio) / scale.sx,\n height: (this.$graphContainer.innerHeight() * ratio) / scale.sy,\n };\n this.$viewport.css(this.geometry);\n }\n startAction(evt) {\n const e = this.normalizeEvent(evt);\n const action = e.target === this.zoomHandle ? 'zooming' : 'panning';\n const { tx, ty } = this.sourceGraph.translate();\n const eventData = {\n action,\n clientX: e.clientX,\n clientY: e.clientY,\n scrollLeft: this.graphContainer.scrollLeft,\n scrollTop: this.graphContainer.scrollTop,\n zoom: this.sourceGraph.zoom(),\n scale: this.sourceGraph.transform.getScale(),\n geometry: this.geometry,\n translateX: tx,\n translateY: ty,\n };\n this.targetGraphTransforming = true;\n this.delegateDocumentEvents(Util.documentEvents, eventData);\n }\n doAction(evt) {\n const e = this.normalizeEvent(evt);\n const clientX = e.clientX;\n const clientY = e.clientY;\n const data = e.data;\n switch (data.action) {\n case 'panning': {\n const scale = this.sourceGraph.transform.getScale();\n const rx = (clientX - data.clientX) * scale.sx;\n const ry = (clientY - data.clientY) * scale.sy;\n if (this.scroller) {\n this.graphContainer.scrollLeft = data.scrollLeft + rx / this.ratio;\n this.graphContainer.scrollTop = data.scrollTop + ry / this.ratio;\n }\n else {\n this.sourceGraph.translate(data.translateX - rx / this.ratio, data.translateY - ry / this.ratio);\n }\n break;\n }\n case 'zooming': {\n const startScale = data.scale;\n const startGeometry = data.geometry;\n const delta = 1 + (data.clientX - clientX) / startGeometry.width / startScale.sx;\n if (data.frameId) {\n cancelAnimationFrame(data.frameId);\n }\n data.frameId = requestAnimationFrame(() => {\n this.sourceGraph.zoom(delta * data.zoom, {\n absolute: true,\n minScale: this.options.minScale,\n maxScale: this.options.maxScale,\n });\n });\n break;\n }\n default:\n break;\n }\n }\n stopAction() {\n this.undelegateDocumentEvents();\n this.targetGraphTransforming = false;\n }\n scrollTo(evt) {\n const e = this.normalizeEvent(evt);\n let x;\n let y;\n const ts = this.targetGraph.translate();\n ts.ty = ts.ty || 0;\n if (e.offsetX == null) {\n const offset = this.$(this.targetGraph.container).offset();\n x = e.pageX - offset.left;\n y = e.pageY - offset.top;\n }\n else {\n x = e.offsetX;\n y = e.offsetY;\n }\n const cx = (x - ts.tx) / this.ratio;\n const cy = (y - ts.ty) / this.ratio;\n this.sourceGraph.centerPoint(cx, cy);\n }\n dispose() {\n this.remove();\n }\n}\n__decorate([\n View.dispose()\n], MiniMap.prototype, \"dispose\", null);\nvar Util;\n(function (Util) {\n Util.defaultOptions = {\n width: 300,\n height: 200,\n padding: 10,\n scalable: true,\n minScale: 0.01,\n maxScale: 16,\n graphOptions: {},\n createGraph: (options) => new Graph(options),\n };\n Util.documentEvents = {\n mousemove: 'doAction',\n touchmove: 'doAction',\n mouseup: 'stopAction',\n touchend: 'stopAction',\n };\n})(Util || (Util = {}));\n//# sourceMappingURL=index.js.map","var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __rest = (this && this.__rest) || function (s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n t[p[i]] = s[p[i]];\n }\n return t;\n};\nimport { ArrayExt, FunctionExt } from '../../util';\nimport { Rectangle, Angle } from '../../geometry';\nimport { View } from '../../view/view';\nexport class Snapline extends View {\n constructor(options) {\n super();\n const { graph } = options, others = __rest(options, [\"graph\"]);\n this.graph = graph;\n this.options = Object.assign({ tolerance: 10 }, others);\n this.render();\n this.parseFilter();\n if (!this.disabled) {\n this.startListening();\n }\n }\n get model() {\n return this.graph.model;\n }\n get containerClassName() {\n return this.prefixClassName('widget-snapline');\n }\n get verticalClassName() {\n return `${this.containerClassName}-vertical`;\n }\n get horizontalClassName() {\n return `${this.containerClassName}-horizontal`;\n }\n get disabled() {\n return (this.options.enabled !== true ||\n this.graph.options.snapline.enabled !== true);\n }\n enable() {\n if (this.disabled) {\n this.options.enabled = true;\n this.graph.options.snapline.enabled = true;\n this.startListening();\n }\n }\n disable() {\n if (!this.disabled) {\n this.options.enabled = false;\n this.graph.options.snapline.enabled = false;\n this.stopListening();\n }\n }\n setFilter(filter) {\n this.options.filter = filter;\n this.parseFilter();\n }\n render() {\n this.container = document.createElement('div');\n this.$container = this.$(this.container);\n this.$horizontal = this.$(document.createElement('div')).addClass(this.horizontalClassName);\n this.$vertical = this.$(document.createElement('div')).addClass(this.verticalClassName);\n this.$container\n .hide()\n .addClass(this.containerClassName)\n .append([this.$horizontal, this.$vertical]);\n if (this.options.className) {\n this.$container.addClass(this.options.className);\n }\n }\n startListening() {\n this.stopListening();\n this.graph.on('node:mousedown', this.captureCursorOffset, this);\n this.graph.on('node:mousemove', this.snapOnMoving, this);\n this.model.on('batch:stop', this.onBatchStop, this);\n this.delegateDocumentEvents({\n mouseup: 'hide',\n touchend: 'hide',\n });\n }\n stopListening() {\n this.graph.off('node:mousedown', this.captureCursorOffset, this);\n this.graph.off('node:mousemove', this.snapOnMoving, this);\n this.model.off('batch:stop', this.onBatchStop, this);\n this.undelegateDocumentEvents();\n }\n parseFilter() {\n this.filterShapes = {};\n this.filterCells = {};\n this.filterFunction = null;\n const filter = this.options.filter;\n if (Array.isArray(filter)) {\n filter.forEach((item) => {\n if (typeof item === 'string') {\n this.filterShapes[item] = true;\n }\n else {\n this.filterCells[item.id] = true;\n }\n });\n }\n else if (typeof filter === 'function') {\n this.filterFunction = filter;\n }\n }\n onBatchStop({ name, data }) {\n if (name === 'resize') {\n this.snapOnResizing(data.cell, data);\n }\n }\n captureCursorOffset({ view, x, y }) {\n const targetView = view.getDelegatedView();\n if (targetView && this.isNodeMovable(targetView)) {\n const pos = view.cell.getPosition();\n this.offset = {\n x: x - pos.x,\n y: y - pos.y,\n };\n }\n }\n isNodeMovable(view) {\n return view && view.cell.isNode() && view.can('nodeMovable');\n }\n snapOnResizing(node, options) {\n if (this.options.resizing &&\n !options.snapped &&\n options.ui &&\n options.direction &&\n options.trueDirection) {\n const view = this.graph.renderer.findViewByCell(node);\n if (view && view.cell.isNode()) {\n const nodeBbox = node.getBBox();\n const nodeBBoxRotated = nodeBbox.bbox(node.getAngle());\n const nodeTopLeft = nodeBBoxRotated.getTopLeft();\n const nodeBottomRight = nodeBBoxRotated.getBottomRight();\n const angle = Angle.normalize(node.getAngle());\n const tolerance = this.options.tolerance || 0;\n let verticalLeft;\n let verticalTop;\n let verticalHeight;\n let horizontalTop;\n let horizontalLeft;\n let horizontalWidth;\n const snapOrigin = {\n vertical: 0,\n horizontal: 0,\n };\n const direction = options.direction;\n const trueDirection = options.trueDirection;\n const relativeDirection = options.relativeDirection;\n if (trueDirection.indexOf('right') !== -1) {\n snapOrigin.vertical = nodeBottomRight.x;\n }\n else {\n snapOrigin.vertical = nodeTopLeft.x;\n }\n if (trueDirection.indexOf('bottom') !== -1) {\n snapOrigin.horizontal = nodeBottomRight.y;\n }\n else {\n snapOrigin.horizontal = nodeTopLeft.y;\n }\n this.model.getNodes().some((cell) => {\n if (this.isIgnored(node, cell)) {\n return false;\n }\n const snapBBox = cell.getBBox().bbox(cell.getAngle());\n const snapTopLeft = snapBBox.getTopLeft();\n const snapBottomRight = snapBBox.getBottomRight();\n const groups = {\n vertical: [snapTopLeft.x, snapBottomRight.x],\n horizontal: [snapTopLeft.y, snapBottomRight.y],\n };\n const distances = {};\n Object.keys(groups).forEach((k) => {\n const key = k;\n const list = groups[key]\n .map((value) => ({\n position: value,\n distance: Math.abs(value - snapOrigin[key]),\n }))\n .filter((item) => item.distance <= tolerance);\n distances[key] = ArrayExt.sortBy(list, (item) => item.distance);\n });\n if (verticalLeft == null && distances.vertical.length > 0) {\n verticalLeft = distances.vertical[0].position;\n verticalTop = Math.min(nodeBBoxRotated.y, snapBBox.y);\n verticalHeight =\n Math.max(nodeBottomRight.y, snapBottomRight.y) - verticalTop;\n }\n if (horizontalTop == null && distances.horizontal.length > 0) {\n horizontalTop = distances.horizontal[0].position;\n horizontalLeft = Math.min(nodeBBoxRotated.x, snapBBox.x);\n horizontalWidth =\n Math.max(nodeBottomRight.x, snapBottomRight.x) - horizontalLeft;\n }\n return verticalLeft != null && horizontalTop != null;\n });\n this.hide();\n let dx = 0;\n let dy = 0;\n if (horizontalTop != null || verticalLeft != null) {\n if (verticalLeft != null) {\n dx =\n trueDirection.indexOf('right') !== -1\n ? verticalLeft - nodeBottomRight.x\n : nodeTopLeft.x - verticalLeft;\n }\n if (horizontalTop != null) {\n dy =\n trueDirection.indexOf('bottom') !== -1\n ? horizontalTop - nodeBottomRight.y\n : nodeTopLeft.y - horizontalTop;\n }\n }\n let dWidth = 0;\n let dHeight = 0;\n if (angle % 90 === 0) {\n if (angle === 90 || angle === 270) {\n dWidth = dy;\n dHeight = dx;\n }\n else {\n dWidth = dx;\n dHeight = dy;\n }\n }\n else {\n const quadrant = angle >= 0 && angle < 90\n ? 1\n : angle >= 90 && angle < 180\n ? 4\n : angle >= 180 && angle < 270\n ? 3\n : 2;\n if (horizontalTop != null && verticalLeft != null) {\n if (dx < dy) {\n dy = 0;\n horizontalTop = undefined;\n }\n else {\n dx = 0;\n verticalLeft = undefined;\n }\n }\n const rad = Angle.toRad(angle % 90);\n if (dx) {\n dWidth = quadrant === 3 ? dx / Math.cos(rad) : dx / Math.sin(rad);\n }\n if (dy) {\n dHeight = quadrant === 3 ? dy / Math.cos(rad) : dy / Math.sin(rad);\n }\n const quadrant13 = quadrant === 1 || quadrant === 3;\n switch (relativeDirection) {\n case 'top':\n case 'bottom':\n dHeight = dy\n ? dy / (quadrant13 ? Math.cos(rad) : Math.sin(rad))\n : dx / (quadrant13 ? Math.sin(rad) : Math.cos(rad));\n break;\n case 'left':\n case 'right':\n dWidth = dx\n ? dx / (quadrant13 ? Math.cos(rad) : Math.sin(rad))\n : dy / (quadrant13 ? Math.sin(rad) : Math.cos(rad));\n break;\n default:\n break;\n }\n }\n switch (relativeDirection) {\n case 'top':\n case 'bottom':\n dWidth = 0;\n break;\n case 'left':\n case 'right':\n dHeight = 0;\n break;\n default:\n break;\n }\n const gridSize = this.graph.getGridSize();\n let newWidth = Math.max(nodeBbox.width + dWidth, gridSize);\n let newHeight = Math.max(nodeBbox.height + dHeight, gridSize);\n if (options.minWidth && options.minWidth > gridSize) {\n newWidth = Math.max(newWidth, options.minWidth);\n }\n if (options.minHeight && options.minHeight > gridSize) {\n newHeight = Math.max(newHeight, options.minHeight);\n }\n if (options.maxWidth) {\n newWidth = Math.min(newWidth, options.maxWidth);\n }\n if (options.maxHeight) {\n newHeight = Math.min(newHeight, options.maxHeight);\n }\n if (options.preserveAspectRatio) {\n if (dHeight < dWidth) {\n newHeight = newWidth * (nodeBbox.height / nodeBbox.width);\n }\n else {\n newWidth = newHeight * (nodeBbox.width / nodeBbox.height);\n }\n }\n if (newWidth !== nodeBbox.width || newHeight !== nodeBbox.height) {\n node.resize(newWidth, newHeight, {\n direction,\n relativeDirection,\n trueDirection,\n snapped: true,\n snaplines: this.cid,\n restrict: this.graph.hook.getRestrictArea(view),\n });\n if (verticalHeight) {\n verticalHeight += newHeight - nodeBbox.height;\n }\n if (horizontalWidth) {\n horizontalWidth += newWidth - nodeBbox.width;\n }\n }\n const newRotatedBBox = node.getBBox().bbox(angle);\n if (verticalLeft &&\n Math.abs(newRotatedBBox.x - verticalLeft) > 1 &&\n Math.abs(newRotatedBBox.width + newRotatedBBox.x - verticalLeft) > 1) {\n verticalLeft = undefined;\n }\n if (horizontalTop &&\n Math.abs(newRotatedBBox.y - horizontalTop) > 1 &&\n Math.abs(newRotatedBBox.height + newRotatedBBox.y - horizontalTop) > 1) {\n horizontalTop = undefined;\n }\n this.update({\n verticalLeft,\n verticalTop,\n verticalHeight,\n horizontalTop,\n horizontalLeft,\n horizontalWidth,\n });\n }\n }\n }\n snapOnMoving({ view, e, x, y }) {\n const targetView = view.getEventData(e).delegatedView || view;\n if (!this.isNodeMovable(targetView)) {\n return;\n }\n const node = targetView.cell;\n const size = node.getSize();\n const position = node.getPosition();\n const cellBBox = new Rectangle(x - this.offset.x, y - this.offset.y, size.width, size.height);\n const angle = node.getAngle();\n const nodeCenter = cellBBox.getCenter();\n const nodeBBoxRotated = cellBBox.bbox(angle);\n const nodeTopLeft = nodeBBoxRotated.getTopLeft();\n const nodeBottomRight = nodeBBoxRotated.getBottomRight();\n const distance = this.options.tolerance || 0;\n let verticalLeft;\n let verticalTop;\n let verticalHeight;\n let horizontalTop;\n let horizontalLeft;\n let horizontalWidth;\n let verticalFix = 0;\n let horizontalFix = 0;\n this.model.getNodes().some((targetNode) => {\n if (this.isIgnored(node, targetNode)) {\n return false;\n }\n const snapBBox = targetNode.getBBox().bbox(targetNode.getAngle());\n const snapCenter = snapBBox.getCenter();\n const snapTopLeft = snapBBox.getTopLeft();\n const snapBottomRight = snapBBox.getBottomRight();\n if (verticalLeft == null) {\n if (Math.abs(snapCenter.x - nodeCenter.x) < distance) {\n verticalLeft = snapCenter.x;\n verticalFix = 0.5;\n }\n else if (Math.abs(snapTopLeft.x - nodeTopLeft.x) < distance) {\n verticalLeft = snapTopLeft.x;\n verticalFix = 0;\n }\n else if (Math.abs(snapTopLeft.x - nodeBottomRight.x) < distance) {\n verticalLeft = snapTopLeft.x;\n verticalFix = 1;\n }\n else if (Math.abs(snapBottomRight.x - nodeBottomRight.x) < distance) {\n verticalLeft = snapBottomRight.x;\n verticalFix = 1;\n }\n else if (Math.abs(snapBottomRight.x - nodeTopLeft.x) < distance) {\n verticalLeft = snapBottomRight.x;\n }\n if (verticalLeft != null) {\n verticalTop = Math.min(nodeBBoxRotated.y, snapBBox.y);\n verticalHeight =\n Math.max(nodeBottomRight.y, snapBottomRight.y) - verticalTop;\n }\n }\n if (horizontalTop == null) {\n if (Math.abs(snapCenter.y - nodeCenter.y) < distance) {\n horizontalTop = snapCenter.y;\n horizontalFix = 0.5;\n }\n else if (Math.abs(snapTopLeft.y - nodeTopLeft.y) < distance) {\n horizontalTop = snapTopLeft.y;\n }\n else if (Math.abs(snapTopLeft.y - nodeBottomRight.y) < distance) {\n horizontalTop = snapTopLeft.y;\n horizontalFix = 1;\n }\n else if (Math.abs(snapBottomRight.y - nodeBottomRight.y) < distance) {\n horizontalTop = snapBottomRight.y;\n horizontalFix = 1;\n }\n else if (Math.abs(snapBottomRight.y - nodeTopLeft.y) < distance) {\n horizontalTop = snapBottomRight.y;\n }\n if (horizontalTop != null) {\n horizontalLeft = Math.min(nodeBBoxRotated.x, snapBBox.x);\n horizontalWidth =\n Math.max(nodeBottomRight.x, snapBottomRight.x) - horizontalLeft;\n }\n }\n return verticalLeft != null && horizontalTop != null;\n });\n this.hide();\n if (horizontalTop != null || verticalLeft != null) {\n if (horizontalTop != null) {\n nodeBBoxRotated.y =\n horizontalTop - horizontalFix * nodeBBoxRotated.height;\n }\n if (verticalLeft != null) {\n nodeBBoxRotated.x = verticalLeft - verticalFix * nodeBBoxRotated.width;\n }\n const newCenter = nodeBBoxRotated.getCenter();\n const newX = newCenter.x - cellBBox.width / 2;\n const newY = newCenter.y - cellBBox.height / 2;\n const dx = newX - position.x;\n const dy = newY - position.y;\n if (dx !== 0 || dy !== 0) {\n node.translate(dx, dy, {\n snapped: true,\n restrict: this.graph.hook.getRestrictArea(targetView),\n });\n if (horizontalWidth) {\n horizontalWidth += dx;\n }\n if (verticalHeight) {\n verticalHeight += dy;\n }\n }\n this.update({\n verticalLeft,\n verticalTop,\n verticalHeight,\n horizontalTop,\n horizontalLeft,\n horizontalWidth,\n });\n }\n }\n isIgnored(snapNode, targetNode) {\n return (targetNode.id === snapNode.id ||\n targetNode.isDescendantOf(snapNode) ||\n this.filterShapes[targetNode.shape] ||\n this.filterCells[targetNode.id] ||\n (this.filterFunction &&\n FunctionExt.call(this.filterFunction, this.graph, targetNode)));\n }\n update(metadata) {\n const ctm = this.graph.matrix();\n const sx = ctm.a;\n const sy = ctm.d;\n const tx = ctm.e;\n const ty = ctm.f;\n const sharp = this.options.sharp;\n const hasScroller = this.graph.scroller.widget != null;\n if (metadata.horizontalTop) {\n this.$horizontal\n .css({\n top: metadata.horizontalTop * sy + ty,\n left: sharp\n ? metadata.horizontalLeft * sx + tx\n : hasScroller\n ? '-300%'\n : 0,\n width: sharp\n ? metadata.horizontalWidth * sx\n : hasScroller\n ? '700%'\n : '100%',\n })\n .show();\n }\n else {\n this.$horizontal.hide();\n }\n if (metadata.verticalLeft) {\n this.$vertical\n .css({\n left: metadata.verticalLeft * sx + tx,\n top: sharp\n ? metadata.verticalTop * sy + ty\n : hasScroller\n ? '-300%'\n : 0,\n height: sharp\n ? metadata.verticalHeight * sy\n : hasScroller\n ? '700%'\n : '100%',\n })\n .show();\n }\n else {\n this.$vertical.hide();\n }\n this.show();\n }\n resetTimer() {\n if (this.timer) {\n clearTimeout(this.timer);\n this.timer = null;\n }\n }\n show() {\n this.$container.show();\n this.resetTimer();\n if (this.container.parentNode == null) {\n this.graph.container.appendChild(this.container);\n }\n return this;\n }\n hide() {\n this.$container.hide();\n this.resetTimer();\n const clean = this.options.clean;\n const delay = typeof clean === 'number' ? clean : clean !== false ? 3000 : 0;\n if (delay > 0) {\n this.timer = window.setTimeout(() => {\n this.unmount();\n }, delay);\n }\n return this;\n }\n onRemove() {\n this.stopListening();\n this.hide();\n }\n dispose() {\n this.remove();\n }\n}\n__decorate([\n View.dispose()\n], Snapline.prototype, \"dispose\", null);\n//# sourceMappingURL=index.js.map","var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Dom, FunctionExt } from '../util';\nimport { Rectangle } from '../geometry';\nimport { Cell } from '../model';\nimport { View, CellView } from '../view';\nimport { Base } from './base';\nexport class Renderer extends Base {\n init() {\n this.resetUpdates();\n this.startListening();\n // Renders existing cells in the model.\n this.resetViews(this.model.getCells());\n // Starts rendering loop.\n if (!this.isFrozen() && this.isAsync()) {\n this.updateViewsAsync();\n }\n }\n startListening() {\n this.model.on('sorted', this.onSortModel, this);\n this.model.on('reseted', this.onModelReseted, this);\n this.model.on('batch:stop', this.onBatchStop, this);\n this.model.on('cell:added', this.onCellAdded, this);\n this.model.on('cell:removed', this.onCellRemoved, this);\n this.model.on('cell:change:zIndex', this.onCellZIndexChanged, this);\n this.model.on('cell:change:visible', this.onCellVisibleChanged, this);\n }\n stopListening() {\n this.model.off('sorted', this.onSortModel, this);\n this.model.off('reseted', this.onModelReseted, this);\n this.model.off('batch:stop', this.onBatchStop, this);\n this.model.off('cell:added', this.onCellAdded, this);\n this.model.off('cell:removed', this.onCellRemoved, this);\n this.model.off('cell:change:zIndex', this.onCellZIndexChanged, this);\n this.model.off('cell:change:visible', this.onCellVisibleChanged, this);\n }\n resetUpdates() {\n this.updates = {\n priorities: [{}, {}, {}],\n mounted: {},\n mountedCids: [],\n unmounted: {},\n unmountedCids: [],\n count: 0,\n sort: false,\n frozen: false,\n freezeKey: null,\n animationId: null,\n };\n }\n onSortModel() {\n if (this.model.hasActiveBatch(Renderer.SORT_DELAYING_BATCHES)) {\n return;\n }\n this.sortViews();\n }\n onModelReseted({ options }) {\n this.removeZPivots();\n this.resetViews(this.model.getCells(), options);\n }\n onBatchStop({ name, data }) {\n if (this.isFrozen()) {\n return;\n }\n const model = this.model;\n if (!this.isAsync()) {\n const updateDelayingBatches = Renderer.UPDATE_DELAYING_BATCHES;\n if (updateDelayingBatches.includes(name) &&\n !model.hasActiveBatch(updateDelayingBatches)) {\n this.updateViews(data);\n }\n }\n const sortDelayingBatches = Renderer.SORT_DELAYING_BATCHES;\n if (sortDelayingBatches.includes(name) &&\n !model.hasActiveBatch(sortDelayingBatches)) {\n this.sortViews();\n }\n }\n onCellAdded({ cell, options }) {\n const position = options.position;\n if (this.isAsync() || typeof position !== 'number') {\n this.renderView(cell, options);\n }\n else {\n if (options.maxPosition === position) {\n this.freeze({ key: 'addCells' });\n }\n this.renderView(cell, options);\n if (position === 0) {\n this.unfreeze({ key: 'addCells' });\n }\n }\n }\n onCellRemoved({ cell, options }) {\n const view = this.findViewByCell(cell);\n if (view) {\n this.requestViewUpdate(view, Renderer.FLAG_REMOVE, view.priority, options);\n }\n }\n onCellZIndexChanged({ cell, options, }) {\n if (this.options.sorting === 'approx') {\n const view = this.findViewByCell(cell);\n if (view) {\n this.requestViewUpdate(view, Renderer.FLAG_INSERT, view.priority, options);\n }\n }\n }\n onCellVisibleChanged({ cell, current: visible, options, }) {\n // Hide connected edges before cell\n if (!visible) {\n this.processEdgeOnTerminalVisibleChanged(cell, false);\n }\n const view = this.findViewByCell(cell);\n if (!visible && view) {\n this.removeView(cell);\n }\n else if (visible && view == null) {\n this.renderView(cell, options);\n }\n // Show connected edges after cell rendered\n if (visible) {\n this.processEdgeOnTerminalVisibleChanged(cell, true);\n }\n }\n processEdgeOnTerminalVisibleChanged(node, visible) {\n const getOpposite = (edge, currentTerminal) => {\n const sourceId = edge.getSourceCellId();\n if (sourceId !== currentTerminal.id) {\n return edge.getSourceCell();\n }\n const targetId = edge.getTargetCellId();\n if (targetId !== currentTerminal.id) {\n return edge.getTargetCell();\n }\n return null;\n };\n this.model.getConnectedEdges(node).forEach((edge) => {\n const opposite = getOpposite(edge, node);\n if (opposite == null || opposite.isVisible()) {\n visible ? edge.show() : edge.hide();\n }\n });\n }\n isEdgeTerminalVisible(edge, terminal) {\n const cellId = terminal === 'source' ? edge.getSourceCellId() : edge.getTargetCellId();\n const cell = cellId ? this.model.getCell(cellId) : null;\n if (cell && !cell.isVisible()) {\n return false;\n }\n return true;\n }\n requestConnectedEdgesUpdate(view, options = {}) {\n if (CellView.isCellView(view)) {\n const cell = view.cell;\n const edges = this.model.getConnectedEdges(cell);\n for (let j = 0, n = edges.length; j < n; j += 1) {\n const edge = edges[j];\n const edgeView = this.findViewByCell(edge);\n if (!edgeView) {\n continue;\n }\n const flagLabels = ['update'];\n if (edge.getTargetCell() === cell) {\n flagLabels.push('target');\n }\n if (edge.getSourceCell() === cell) {\n flagLabels.push('source');\n }\n this.scheduleViewUpdate(edgeView, edgeView.getFlag(flagLabels), edgeView.priority, options);\n }\n }\n }\n forcePostponedViewUpdate(view, flag) {\n if (!view || !CellView.isCellView(view)) {\n return false;\n }\n const cell = view.cell;\n if (cell.isNode()) {\n return false;\n }\n const edgeView = view;\n if (cell.isEdge() && (flag & view.getFlag(['source', 'target'])) === 0) {\n // EdgeView is waiting for the source/target cellView to be rendered.\n // This can happen when the cells are not in the viewport.\n let sourceFlag = 0;\n const sourceView = this.findViewByCell(cell.getSourceCell());\n if (sourceView && !this.isViewMounted(sourceView)) {\n sourceFlag = this.dumpView(sourceView);\n edgeView.updateTerminalMagnet('source');\n }\n let targetFlag = 0;\n const targetView = this.findViewByCell(cell.getTargetCell());\n if (targetView && !this.isViewMounted(targetView)) {\n targetFlag = this.dumpView(targetView);\n edgeView.updateTerminalMagnet('target');\n }\n if (sourceFlag === 0 && targetFlag === 0) {\n // If leftover flag is 0, all view updates were done.\n return !this.dumpView(edgeView);\n }\n }\n return false;\n }\n scheduleViewUpdate(view, flag, priority, options = {}) {\n const cid = view.cid;\n const updates = this.updates;\n let cache = updates.priorities[priority];\n if (!cache) {\n cache = updates.priorities[priority] = {};\n }\n const currentFlag = cache[cid] || 0;\n if ((currentFlag & flag) === flag) {\n return;\n }\n if (!currentFlag) {\n updates.count += 1;\n }\n if (flag & Renderer.FLAG_REMOVE && currentFlag & Renderer.FLAG_INSERT) {\n // When a view is removed we need to remove the\n // insert flag as this is a reinsert.\n cache[cid] ^= Renderer.FLAG_INSERT;\n }\n else if (flag & Renderer.FLAG_INSERT &&\n currentFlag & Renderer.FLAG_REMOVE) {\n // When a view is added we need to remove the remove\n // flag as this is view was previously removed.\n cache[cid] ^= Renderer.FLAG_REMOVE;\n }\n cache[cid] |= flag;\n this.graph.hook.onViewUpdated(view, flag, options);\n }\n requestViewUpdate(view, flag, priority, options = {}) {\n this.scheduleViewUpdate(view, flag, priority, options);\n const isAsync = this.isAsync();\n if (this.isFrozen() ||\n (isAsync && options.async !== false) ||\n this.model.hasActiveBatch(Renderer.UPDATE_DELAYING_BATCHES)) {\n return;\n }\n const stats = this.updateViews(options);\n if (isAsync) {\n this.graph.trigger('render:done', { stats, options });\n }\n }\n /**\n * Adds view into the DOM and update it.\n */\n dumpView(view, options = {}) {\n if (view == null) {\n return 0;\n }\n const cid = view.cid;\n const updates = this.updates;\n const cache = updates.priorities[view.priority];\n const flag = this.registerMountedView(view) | cache[cid];\n delete cache[cid];\n if (!flag) {\n return 0;\n }\n return this.updateView(view, flag, options);\n }\n /**\n * Adds all views into the DOM and update them.\n */\n dumpViews(options = {}) {\n this.checkView(options);\n this.updateViews(options);\n }\n /**\n * Ensure the view associated with the cell is attached\n * to the DOM and updated.\n */\n requireView(cell, options = {}) {\n const view = this.findViewByCell(cell);\n if (view == null) {\n return null;\n }\n this.dumpView(view, options);\n return view;\n }\n updateView(view, flag, options = {}) {\n if (view == null) {\n return 0;\n }\n if (CellView.isCellView(view)) {\n if (flag & Renderer.FLAG_REMOVE) {\n this.removeView(view.cell);\n return 0;\n }\n if (flag & Renderer.FLAG_INSERT) {\n this.insertView(view);\n flag ^= Renderer.FLAG_INSERT; // eslint-disable-line\n }\n }\n if (!flag) {\n return 0;\n }\n return view.confirmUpdate(flag, options);\n }\n updateViews(options = {}) {\n let result;\n let batchCount = 0;\n let updatedCount = 0;\n let priority = Renderer.MIN_PRIORITY;\n do {\n result = this.updateViewsBatch(options);\n batchCount += 1;\n updatedCount += result.updatedCount;\n priority = Math.min(result.priority, priority);\n } while (!result.empty);\n return {\n priority,\n batchCount,\n updatedCount,\n };\n }\n updateViewsBatch(options = {}) {\n const updates = this.updates;\n const priorities = updates.priorities;\n const batchSize = options.batchSize || Renderer.UPDATE_BATCH_SIZE;\n let empty = true;\n let priority = Renderer.MIN_PRIORITY;\n let mountedCount = 0;\n let unmountedCount = 0;\n let updatedCount = 0;\n let postponedCount = 0;\n let checkView = options.checkView || this.options.checkView;\n if (typeof checkView !== 'function') {\n checkView = null;\n }\n // eslint-disable-next-line\n main: for (let p = 0, n = priorities.length; p < n; p += 1) {\n const cache = priorities[p];\n // eslint-disable-next-line\n for (const cid in cache) {\n if (updatedCount >= batchSize) {\n empty = false; // goto next batch\n break main; // eslint-disable-line no-labels\n }\n const view = View.views[cid];\n if (!view) {\n delete cache[cid];\n continue;\n }\n let currentFlag = cache[cid];\n // Do not check a view for viewport if we are about to remove the view.\n if ((currentFlag & Renderer.FLAG_REMOVE) === 0) {\n const isUnmounted = cid in updates.unmounted;\n if (checkView &&\n !FunctionExt.call(checkView, this.graph, {\n view: view,\n unmounted: isUnmounted,\n })) {\n // Unmount view\n if (!isUnmounted) {\n this.registerUnmountedView(view);\n view.unmount();\n }\n updates.unmounted[cid] |= currentFlag;\n delete cache[cid];\n unmountedCount += 1;\n continue;\n }\n // Mount view\n if (isUnmounted) {\n currentFlag |= Renderer.FLAG_INSERT;\n mountedCount += 1;\n }\n currentFlag |= this.registerMountedView(view);\n }\n const cellView = view;\n let leftoverFlag = this.updateView(view, currentFlag, options);\n if (leftoverFlag > 0) {\n const cell = cellView.cell;\n if (cell && cell.isEdge()) {\n // remove edge view when source cell is invisible\n if (cellView.hasAction(leftoverFlag, 'source') &&\n !this.isEdgeTerminalVisible(cell, 'source')) {\n leftoverFlag = cellView.removeAction(leftoverFlag, 'source');\n leftoverFlag |= Renderer.FLAG_REMOVE;\n }\n // remove edge view when target cell is invisible\n if (cellView.hasAction(leftoverFlag, 'target') &&\n !this.isEdgeTerminalVisible(cell, 'target')) {\n leftoverFlag = cellView.removeAction(leftoverFlag, 'target');\n leftoverFlag |= Renderer.FLAG_REMOVE;\n }\n }\n }\n if (leftoverFlag > 0) {\n // update has not finished\n cache[cid] = leftoverFlag;\n if (!this.graph.hook.onViewPostponed(cellView, leftoverFlag, options) ||\n cache[cid]) {\n postponedCount += 1;\n empty = false;\n continue;\n }\n }\n if (priority > p) {\n priority = p;\n }\n updatedCount += 1;\n delete cache[cid];\n }\n }\n return {\n empty,\n priority,\n mountedCount,\n unmountedCount,\n updatedCount,\n postponedCount,\n };\n }\n updateViewsAsync(options = {}, data = {\n processed: 0,\n priority: Renderer.MIN_PRIORITY,\n }) {\n const updates = this.updates;\n const animationId = updates.animationId;\n if (animationId) {\n Dom.cancelAnimationFrame(animationId);\n if (data.processed === 0) {\n const beforeFn = options.before;\n if (typeof beforeFn === 'function') {\n FunctionExt.call(beforeFn, this.graph, this.graph);\n }\n }\n const stats = this.updateViewsBatch(options);\n const checkout = this.checkViewImpl({\n checkView: options.checkView,\n mountedBatchSize: Renderer.MOUNT_BATCH_SIZE - stats.mountedCount,\n unmountedBatchSize: Renderer.MOUNT_BATCH_SIZE - stats.unmountedCount,\n });\n let processed = data.processed;\n const total = updates.count;\n const mountedCount = checkout.mountedCount;\n const unmountedCount = checkout.unmountedCount;\n if (stats.updatedCount > 0) {\n // Some updates have been just processed\n processed += stats.updatedCount + stats.unmountedCount;\n data.priority = Math.min(stats.priority, data.priority);\n if (stats.empty && mountedCount === 0) {\n stats.priority = data.priority;\n stats.mountedCount += mountedCount;\n stats.unmountedCount += unmountedCount;\n this.graph.trigger('render:done', { stats, options });\n data.processed = 0;\n updates.count = 0;\n }\n else {\n data.processed = processed;\n }\n }\n // Progress callback\n const progressFn = options.progress;\n if (total && typeof progressFn === 'function') {\n FunctionExt.call(progressFn, this.graph, {\n total,\n done: stats.empty,\n current: processed,\n });\n }\n // The current frame could have been canceled in a callback\n if (updates.animationId !== animationId) {\n return;\n }\n }\n updates.animationId = Dom.requestAnimationFrame(() => {\n this.updateViewsAsync(options, data);\n });\n }\n registerMountedView(view) {\n const cid = view.cid;\n const updates = this.updates;\n if (cid in updates.mounted) {\n return 0;\n }\n updates.mounted[cid] = true;\n updates.mountedCids.push(cid);\n const flag = updates.unmounted[cid] || 0;\n delete updates.unmounted[cid];\n return flag;\n }\n registerUnmountedView(view) {\n const cid = view.cid;\n const updates = this.updates;\n if (cid in updates.unmounted) {\n return 0;\n }\n updates.unmounted[cid] |= Renderer.FLAG_INSERT;\n const flag = updates.unmounted[cid];\n updates.unmountedCids.push(cid);\n delete updates.mounted[cid];\n return flag;\n }\n isViewMounted(view) {\n if (view == null) {\n return false;\n }\n const cid = view.cid;\n return cid in this.updates.mounted;\n }\n getMountedViews() {\n return Object.keys(this.updates.mounted).map((cid) => CellView.views[cid]);\n }\n getUnmountedViews() {\n return Object.keys(this.updates.unmounted).map((cid) => CellView.views[cid]);\n }\n checkMountedViews(viewportFn, batchSize) {\n let unmountCount = 0;\n if (typeof viewportFn !== 'function') {\n return unmountCount;\n }\n const updates = this.updates;\n const mounted = updates.mounted;\n const mountedCids = updates.mountedCids;\n const size = batchSize == null\n ? mountedCids.length\n : Math.min(mountedCids.length, batchSize);\n for (let i = 0; i < size; i += 1) {\n const cid = mountedCids[i];\n if (!(cid in mounted)) {\n continue;\n }\n const view = CellView.views[cid];\n if (view == null) {\n continue;\n }\n const shouldMount = FunctionExt.call(viewportFn, this.graph, {\n view: view,\n unmounted: true,\n });\n if (shouldMount) {\n // Push at the end of all mounted ids\n mountedCids.push(cid);\n continue;\n }\n unmountCount += 1;\n const flag = this.registerUnmountedView(view);\n if (flag) {\n view.unmount();\n }\n }\n // Get rid of views, that have been unmounted\n mountedCids.splice(0, size);\n return unmountCount;\n }\n checkUnmountedViews(checkView, batchSize) {\n let mountCount = 0;\n if (typeof checkView !== 'function') {\n checkView = null; // eslint-disable-line\n }\n const updates = this.updates;\n const unmounted = updates.unmounted;\n const unmountedCids = updates.unmountedCids;\n const size = batchSize == null\n ? unmountedCids.length\n : Math.min(unmountedCids.length, batchSize);\n for (let i = 0; i < size; i += 1) {\n const cid = unmountedCids[i];\n if (!(cid in unmounted)) {\n continue;\n }\n const view = CellView.views[cid];\n if (view == null) {\n continue;\n }\n if (checkView &&\n !FunctionExt.call(checkView, this.graph, { view, unmounted: false })) {\n unmountedCids.push(cid);\n continue;\n }\n mountCount += 1;\n const flag = this.registerMountedView(view);\n if (flag) {\n this.scheduleViewUpdate(view, flag, view.priority, {\n mounting: true,\n });\n }\n }\n // Get rid of views, that have been mounted\n unmountedCids.splice(0, size);\n return mountCount;\n }\n checkViewImpl(options = {\n mountedBatchSize: Number.MAX_SAFE_INTEGER,\n unmountedBatchSize: Number.MAX_SAFE_INTEGER,\n }) {\n const checkView = options.checkView || this.options.checkView;\n const unmountedCount = this.checkMountedViews(checkView, options.unmountedBatchSize);\n const mountedCount = this.checkUnmountedViews(checkView, \n // Do not check views, that have been just unmounted\n // and pushed at the end of the cids array\n unmountedCount > 0\n ? Math.min(this.updates.unmountedCids.length - unmountedCount, options.mountedBatchSize)\n : options.mountedBatchSize);\n return { mountedCount, unmountedCount };\n }\n /**\n * Determine every view in the graph should be attached/detached.\n */\n checkView(options = {}) {\n return this.checkViewImpl(options);\n }\n isFrozen() {\n return !!this.options.frozen;\n }\n /**\n * Freeze the graph then the graph does not automatically re-render upon\n * changes in the graph. This is useful when adding large numbers of cells.\n */\n freeze(options = {}) {\n const key = options.key;\n const updates = this.updates;\n const frozen = this.options.frozen;\n const freezeKey = updates.freezeKey;\n if (key && key !== freezeKey) {\n if (frozen && freezeKey) {\n // key passed, but the graph is already freezed with another key\n return;\n }\n updates.frozen = frozen;\n updates.freezeKey = key;\n }\n this.options.frozen = true;\n const animationId = updates.animationId;\n updates.animationId = null;\n if (this.isAsync() && animationId != null) {\n Dom.cancelAnimationFrame(animationId);\n }\n this.graph.trigger('freeze', { key });\n }\n unfreeze(options = {}) {\n const key = options.key;\n const updates = this.updates;\n const freezeKey = updates.freezeKey;\n // key passed, but the graph is already freezed with another key\n if (key && freezeKey && key !== freezeKey) {\n return;\n }\n updates.freezeKey = null;\n // key passed, but the graph is already freezed\n if (key && key === freezeKey && updates.frozen) {\n return;\n }\n const callback = () => {\n this.options.frozen = updates.frozen = false;\n if (updates.sort) {\n this.sortViews();\n updates.sort = false;\n }\n const afterFn = options.after;\n if (afterFn) {\n FunctionExt.call(afterFn, this.graph, this.graph);\n }\n this.graph.trigger('unfreeze', { key });\n };\n if (this.isAsync()) {\n this.freeze();\n const onProgress = options.progress;\n this.updateViewsAsync(Object.assign(Object.assign({}, options), { progress: ({ done, current, total }) => {\n if (onProgress) {\n FunctionExt.call(onProgress, this.graph, { done, current, total });\n }\n // sort views after async render\n if (done) {\n callback();\n }\n } }));\n }\n else {\n this.updateViews(options);\n callback();\n }\n }\n isAsync() {\n return !!this.options.async;\n }\n setAsync(async) {\n this.options.async = async;\n }\n onRemove() {\n this.freeze();\n this.removeViews();\n }\n resetViews(cells = [], options = {}) {\n this.resetUpdates();\n this.removeViews();\n this.freeze({ key: 'reset' });\n for (let i = 0, n = cells.length; i < n; i += 1) {\n this.renderView(cells[i], options);\n }\n this.unfreeze({ key: 'reset' });\n this.sortViews();\n }\n removeView(cell) {\n const view = this.views[cell.id];\n if (view) {\n const cid = view.cid;\n const updates = this.updates;\n const mounted = updates.mounted;\n const unmounted = updates.unmounted;\n view.remove();\n delete this.views[cell.id];\n delete mounted[cid];\n delete unmounted[cid];\n }\n return view;\n }\n removeViews() {\n if (this.views) {\n Object.keys(this.views).forEach((id) => {\n const view = this.views[id];\n if (view) {\n this.removeView(view.cell);\n }\n });\n }\n this.views = {};\n }\n renderView(cell, options = {}) {\n const id = cell.id;\n const views = this.views;\n let flag = 0;\n let view = views[id];\n if (!cell.isVisible()) {\n return;\n }\n if (cell.isEdge()) {\n if (!this.isEdgeTerminalVisible(cell, 'source') ||\n !this.isEdgeTerminalVisible(cell, 'target')) {\n return;\n }\n }\n if (view) {\n flag = Renderer.FLAG_INSERT;\n }\n else {\n const tmp = this.graph.hook.createCellView(cell);\n if (tmp) {\n view = views[cell.id] = tmp;\n view.graph = this.graph;\n flag = this.registerUnmountedView(view) | view.getBootstrapFlag();\n }\n }\n if (view) {\n this.requestViewUpdate(view, flag, view.priority, options);\n }\n }\n isExactSorting() {\n return this.options.sorting === 'exact';\n }\n sortViews() {\n if (!this.isExactSorting()) {\n return;\n }\n if (this.isFrozen()) {\n // sort views once unfrozen\n this.updates.sort = true;\n return;\n }\n this.sortViewsExact();\n }\n sortElements(elems, comparator) {\n // Highly inspired by the jquery.sortElements plugin by Padolsey.\n // See http://james.padolsey.com/javascript/sorting-elements-with-jquery/.\n const placements = elems.map((elem) => {\n const parentNode = elem.parentNode;\n // Since the element itself will change position, we have\n // to have some way of storing it's original position in\n // the DOM. The easiest way is to have a 'flag' node:\n const nextSibling = parentNode.insertBefore(document.createTextNode(''), elem.nextSibling);\n return (targetNode) => {\n if (parentNode === targetNode) {\n throw new Error(\"You can't sort elements if any one is a descendant of another.\");\n }\n // Insert before flag\n parentNode.insertBefore(targetNode, nextSibling);\n // Remove flag\n parentNode.removeChild(nextSibling);\n };\n });\n elems.sort(comparator).forEach((elem, index) => placements[index](elem));\n }\n sortViewsExact() {\n // const elems = this.view.stage.querySelectorAll('[data-cell-id]')\n // const length = elems.length\n // const cells = []\n // for (let i = 0; i < length; i++) {\n // const cell = this.model.getCell(elems[i].getAttribute('data-cell-id') || '')\n // cells.push({\n // id: cell.id,\n // zIndex: cell.getZIndex() || 0,\n // elem: elems[i],\n // })\n // }\n // const sortedCells = [...cells].sort((cell1, cell2) => cell1.zIndex - cell2.zIndex)\n // const moves = ArrayExt.diff(cells, sortedCells, 'zIndex').moves\n // if (moves && moves.length) {\n // moves.forEach((move) => {\n // if (move.type) {\n // const elem = move.item.elem as Element\n // const parentNode = elem.parentNode\n // const index = move.index\n // if (parentNode) {\n // if (index === length - 1) {\n // parentNode.appendChild(elem)\n // } else if (index < length - 1) {\n // parentNode.insertBefore(elem, elems[index + 1])\n // }\n // }\n // }\n // })\n // }\n // Run insertion sort algorithm in order to efficiently sort DOM\n // elements according to their associated cell `zIndex` attribute.\n const elems = this.view\n .$(this.view.stage)\n .children('[data-cell-id]')\n .toArray();\n const model = this.model;\n this.sortElements(elems, (a, b) => {\n const cellA = model.getCell(a.getAttribute('data-cell-id') || '');\n const cellB = model.getCell(b.getAttribute('data-cell-id') || '');\n const z1 = cellA.getZIndex() || 0;\n const z2 = cellB.getZIndex() || 0;\n return z1 === z2 ? 0 : z1 < z2 ? -1 : 1;\n });\n }\n addZPivot(zIndex = 0) {\n if (this.zPivots == null) {\n this.zPivots = {};\n }\n const pivots = this.zPivots;\n let pivot = pivots[zIndex];\n if (pivot) {\n return pivot;\n }\n pivot = pivots[zIndex] = document.createComment(`z-index:${zIndex + 1}`);\n let neighborZ = -Infinity;\n // eslint-disable-next-line\n for (const key in pivots) {\n const currentZ = +key;\n if (currentZ < zIndex && currentZ > neighborZ) {\n neighborZ = currentZ;\n if (neighborZ === zIndex - 1) {\n continue;\n }\n }\n }\n const layer = this.view.stage;\n if (neighborZ !== -Infinity) {\n const neighborPivot = pivots[neighborZ];\n layer.insertBefore(pivot, neighborPivot.nextSibling);\n }\n else {\n layer.insertBefore(pivot, layer.firstChild);\n }\n return pivot;\n }\n removeZPivots() {\n if (this.zPivots) {\n Object.keys(this.zPivots).forEach((z) => {\n const elem = this.zPivots[z];\n if (elem && elem.parentNode) {\n elem.parentNode.removeChild(elem);\n }\n });\n }\n this.zPivots = {};\n }\n insertView(view) {\n const stage = this.view.stage;\n switch (this.options.sorting) {\n case 'approx': {\n const zIndex = view.cell.getZIndex();\n const pivot = this.addZPivot(zIndex);\n stage.insertBefore(view.container, pivot);\n break;\n }\n case 'exact':\n default:\n stage.appendChild(view.container);\n break;\n }\n }\n findViewByCell(cell) {\n if (cell == null) {\n return null;\n }\n const id = Cell.isCell(cell) ? cell.id : cell;\n return this.views[id];\n }\n findViewByElem(elem) {\n if (elem == null) {\n return null;\n }\n const target = typeof elem === 'string'\n ? this.view.stage.querySelector(elem)\n : elem instanceof Element\n ? elem\n : elem[0];\n if (target) {\n const id = this.view.findAttr('data-cell-id', target);\n if (id) {\n return this.views[id];\n }\n }\n return null;\n }\n findViewsFromPoint(p) {\n const ref = { x: p.x, y: p.y };\n return this.model\n .getCells()\n .map((cell) => this.findViewByCell(cell))\n .filter((view) => {\n if (view != null) {\n return Dom.getBBox(view.container, {\n target: this.view.stage,\n }).containsPoint(ref);\n }\n return false;\n });\n }\n findEdgeViewsInArea(rect, options = {}) {\n const area = Rectangle.create(rect);\n return this.model\n .getEdges()\n .map((edge) => this.findViewByCell(edge))\n .filter((view) => {\n if (view) {\n const bbox = Dom.getBBox(view.container, {\n target: this.view.stage,\n });\n if (bbox.width === 0) {\n bbox.inflate(1, 0);\n }\n else if (bbox.height === 0) {\n bbox.inflate(0, 1);\n }\n return options.strict\n ? area.containsRect(bbox)\n : area.isIntersectWithRect(bbox);\n }\n return false;\n });\n }\n findViewsInArea(rect, options = {}) {\n const area = Rectangle.create(rect);\n return this.model\n .getNodes()\n .map((node) => this.findViewByCell(node))\n .filter((view) => {\n if (view) {\n const bbox = Dom.getBBox(view.container, {\n target: this.view.stage,\n });\n return options.strict\n ? area.containsRect(bbox)\n : area.isIntersectWithRect(bbox);\n }\n return false;\n });\n }\n dispose() {\n this.resetUpdates();\n this.stopListening();\n }\n}\n__decorate([\n Base.dispose()\n], Renderer.prototype, \"dispose\", null);\n(function (Renderer) {\n Renderer.FLAG_INSERT = 1 << 30;\n Renderer.FLAG_REMOVE = 1 << 29;\n Renderer.MOUNT_BATCH_SIZE = 1000;\n Renderer.UPDATE_BATCH_SIZE = 1000;\n Renderer.MIN_PRIORITY = 2;\n Renderer.SORT_DELAYING_BATCHES = [\n 'add',\n 'to-front',\n 'to-back',\n ];\n Renderer.UPDATE_DELAYING_BATCHES = ['translate'];\n})(Renderer || (Renderer = {}));\n//# sourceMappingURL=renderer.js.map","var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { ObjectExt } from '../util';\nimport { Rectangle } from '../geometry';\nimport { Background } from '../registry';\nimport { Base } from './base';\nexport class BackgroundManager extends Base {\n get elem() {\n return this.view.background;\n }\n init() {\n this.startListening();\n if (this.options.background) {\n this.draw(this.options.background);\n }\n }\n startListening() {\n this.graph.on('scale', this.update, this);\n this.graph.on('translate', this.update, this);\n }\n stopListening() {\n this.graph.off('scale', this.update, this);\n this.graph.off('translate', this.update, this);\n }\n updateBackgroundImage(options = {}) {\n let backgroundSize = options.size || 'auto auto';\n let backgroundPosition = options.position || 'center';\n const scale = this.graph.transform.getScale();\n const ts = this.graph.translate();\n // backgroundPosition\n if (typeof backgroundPosition === 'object') {\n const x = ts.tx + scale.sx * (backgroundPosition.x || 0);\n const y = ts.ty + scale.sy * (backgroundPosition.y || 0);\n backgroundPosition = `${x}px ${y}px`;\n }\n // backgroundSize\n if (typeof backgroundSize === 'object') {\n backgroundSize = Rectangle.fromSize(backgroundSize).scale(scale.sx, scale.sy);\n backgroundSize = `${backgroundSize.width}px ${backgroundSize.height}px`;\n }\n this.elem.style.backgroundSize = backgroundSize;\n this.elem.style.backgroundPosition = backgroundPosition;\n }\n drawBackgroundImage(img, options = {}) {\n if (!(img instanceof HTMLImageElement)) {\n this.elem.style.backgroundImage = '';\n return;\n }\n // draw multiple times to show the last image\n const cache = this.optionsCache;\n if (cache && cache.image !== options.image) {\n return;\n }\n let uri;\n const opacity = options.opacity;\n const backgroundSize = options.size;\n let backgroundRepeat = options.repeat || 'no-repeat';\n const pattern = Background.registry.get(backgroundRepeat);\n if (typeof pattern === 'function') {\n const quality = options.quality || 1;\n img.width *= quality;\n img.height *= quality;\n const canvas = pattern(img, options);\n if (!(canvas instanceof HTMLCanvasElement)) {\n throw new Error('Background pattern must return an HTML Canvas instance');\n }\n uri = canvas.toDataURL('image/png');\n // `repeat` was changed in pattern function\n if (options.repeat && backgroundRepeat !== options.repeat) {\n backgroundRepeat = options.repeat;\n }\n else {\n backgroundRepeat = 'repeat';\n }\n if (typeof backgroundSize === 'object') {\n // recalculate the tile size if an object passed in\n backgroundSize.width *= canvas.width / img.width;\n backgroundSize.height *= canvas.height / img.height;\n }\n else if (backgroundSize === undefined) {\n // calcule the tile size if no provided\n options.size = {\n width: canvas.width / quality,\n height: canvas.height / quality,\n };\n }\n }\n else {\n uri = img.src;\n if (backgroundSize === undefined) {\n options.size = {\n width: img.width,\n height: img.height,\n };\n }\n }\n if (cache != null &&\n typeof options.size === 'object' &&\n options.image === cache.image &&\n options.repeat === cache.repeat &&\n options.quality ===\n cache.quality) {\n cache.size = ObjectExt.clone(options.size);\n }\n const style = this.elem.style;\n style.backgroundImage = `url(${uri})`;\n style.backgroundRepeat = backgroundRepeat;\n style.opacity = opacity == null || opacity >= 1 ? '' : `${opacity}`;\n this.updateBackgroundImage(options);\n }\n updateBackgroundColor(color) {\n this.elem.style.backgroundColor = color || '';\n }\n updateBackgroundOptions(options) {\n this.graph.options.background = options;\n }\n update() {\n if (this.optionsCache) {\n this.updateBackgroundImage(this.optionsCache);\n }\n }\n draw(options) {\n const opts = options || {};\n this.updateBackgroundOptions(options);\n this.updateBackgroundColor(opts.color);\n if (opts.image) {\n this.optionsCache = ObjectExt.clone(opts);\n const img = document.createElement('img');\n img.onload = () => this.drawBackgroundImage(img, options);\n img.setAttribute('crossorigin', 'anonymous');\n img.src = opts.image;\n }\n else {\n this.drawBackgroundImage(null);\n this.optionsCache = null;\n }\n }\n clear() {\n this.draw();\n }\n dispose() {\n this.clear();\n this.stopListening();\n }\n}\n__decorate([\n Base.dispose()\n], BackgroundManager.prototype, \"dispose\", null);\n//# sourceMappingURL=background.js.map","var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __rest = (this && this.__rest) || function (s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n t[p[i]] = s[p[i]];\n }\n return t;\n};\nimport { Platform, NumberExt, ObjectExt, Dom, FunctionExt } from '../../util';\nimport { Point, Rectangle } from '../../geometry';\nimport { View } from '../../view/view';\nimport { Renderer } from '../../graph/renderer';\nimport { GraphView } from '../../graph/view';\nimport { BackgroundManager } from '../../graph/background';\nexport class Scroller extends View {\n constructor(options) {\n super();\n this.padding = { left: 0, top: 0, right: 0, bottom: 0 };\n this.options = Util.getOptions(options);\n const scale = this.graph.transform.getScale();\n this.sx = scale.sx;\n this.sy = scale.sy;\n const width = this.options.width || this.graph.options.width;\n const height = this.options.height || this.graph.options.height;\n this.container = document.createElement('div');\n this.$container = this.$(this.container)\n .addClass(this.prefixClassName(Util.containerClass))\n .css({ width, height });\n if (this.options.pageVisible) {\n this.$container.addClass(this.prefixClassName(Util.pagedClass));\n }\n if (this.options.className) {\n this.$container.addClass(this.options.className);\n }\n const graphContainer = this.graph.container;\n if (graphContainer.parentNode) {\n this.$container.insertBefore(graphContainer);\n }\n // copy style\n const style = graphContainer.getAttribute('style');\n if (style) {\n const obj = {};\n const styles = style.split(';');\n styles.forEach((item) => {\n const section = item.trim();\n if (section) {\n const pair = section.split(':');\n if (pair.length) {\n obj[pair[0].trim()] = pair[1] ? pair[1].trim() : '';\n }\n }\n });\n Object.keys(obj).forEach((key) => {\n if (key === 'width' || key === 'height') {\n return;\n }\n graphContainer.style[key] = '';\n this.container.style[key] = obj[key];\n });\n }\n this.content = document.createElement('div');\n this.$content = this.$(this.content)\n .addClass(this.prefixClassName(Util.contentClass))\n .css({\n width: this.graph.options.width,\n height: this.graph.options.height,\n });\n // custom background\n this.background = document.createElement('div');\n this.$background = this.$(this.background).addClass(this.prefixClassName(Util.backgroundClass));\n this.$content.append(this.background);\n if (!this.options.pageVisible) {\n this.$content.append(this.graph.view.grid);\n }\n this.$content.append(graphContainer);\n this.$content.appendTo(this.container);\n this.startListening();\n if (!this.options.pageVisible) {\n this.graph.grid.update();\n }\n this.backgroundManager = new Scroller.Background(this);\n if (!this.options.autoResize) {\n this.update();\n }\n }\n get graph() {\n return this.options.graph;\n }\n get model() {\n return this.graph.model;\n }\n startListening() {\n const graph = this.graph;\n const model = this.model;\n graph.on('scale', this.onScale, this);\n graph.on('resize', this.onResize, this);\n graph.on('before:print', this.storeScrollPosition, this);\n graph.on('before:export', this.storeScrollPosition, this);\n graph.on('after:print', this.restoreScrollPosition, this);\n graph.on('after:export', this.restoreScrollPosition, this);\n graph.on('render:done', this.onRenderDone, this);\n graph.on('unfreeze', this.onUpdate, this);\n model.on('reseted', this.onUpdate, this);\n model.on('cell:added', this.onUpdate, this);\n model.on('cell:removed', this.onUpdate, this);\n model.on('cell:changed', this.onUpdate, this);\n model.on('batch:stop', this.onBatchStop, this);\n this.delegateBackgroundEvents();\n }\n stopListening() {\n const graph = this.graph;\n const model = this.model;\n graph.off('scale', this.onScale, this);\n graph.off('resize', this.onResize, this);\n graph.off('beforeprint', this.storeScrollPosition, this);\n graph.off('beforeexport', this.storeScrollPosition, this);\n graph.off('afterprint', this.restoreScrollPosition, this);\n graph.off('afterexport', this.restoreScrollPosition, this);\n graph.off('render:done', this.onRenderDone, this);\n graph.off('unfreeze', this.onUpdate, this);\n model.off('reseted', this.onUpdate, this);\n model.off('cell:added', this.onUpdate, this);\n model.off('cell:removed', this.onUpdate, this);\n model.off('cell:changed', this.onUpdate, this);\n model.off('batch:stop', this.onBatchStop, this);\n this.undelegateBackgroundEvents();\n }\n enableAutoResize() {\n this.options.autoResize = true;\n }\n disableAutoResize() {\n this.options.autoResize = false;\n }\n onUpdate() {\n if (this.graph.isAsync() || !this.options.autoResize) {\n return;\n }\n this.update();\n }\n onBatchStop(args) {\n if (this.graph.isAsync() || !this.options.autoResize) {\n return;\n }\n if (Renderer.UPDATE_DELAYING_BATCHES.includes(args.name)) {\n this.update();\n }\n }\n delegateBackgroundEvents(events) {\n const evts = events || GraphView.events;\n this.delegatedHandlers = Object.keys(evts).reduce((memo, name) => {\n const handler = evts[name];\n if (name.indexOf(' ') === -1) {\n if (typeof handler === 'function') {\n memo[name] = handler;\n }\n else {\n let method = this.graph.view[handler];\n if (typeof method === 'function') {\n method = method.bind(this.graph.view);\n memo[name] = method;\n }\n }\n }\n return memo;\n }, {});\n this.onBackgroundEvent = this.onBackgroundEvent.bind(this);\n Object.keys(this.delegatedHandlers).forEach((name) => {\n this.delegateEvent(name, {\n guarded: false,\n }, this.onBackgroundEvent);\n });\n }\n undelegateBackgroundEvents() {\n Object.keys(this.delegatedHandlers).forEach((name) => {\n this.undelegateEvent(name, this.onBackgroundEvent);\n });\n }\n onBackgroundEvent(e) {\n let valid = false;\n const target = e.target;\n if (!this.options.pageVisible) {\n const view = this.graph.view;\n valid = view.background === target || view.grid === target;\n }\n else if (this.options.background) {\n valid = this.background === target;\n }\n else {\n valid = this.content === target;\n }\n if (valid) {\n const handler = this.delegatedHandlers[e.type];\n if (typeof handler === 'function') {\n handler.apply(this.graph, arguments); // eslint-disable-line\n }\n }\n }\n onRenderDone({ stats }) {\n if (this.options.autoResize && stats.priority < 2) {\n this.update();\n }\n }\n onResize() {\n if (this.cachedCenterPoint) {\n this.centerPoint(this.cachedCenterPoint.x, this.cachedCenterPoint.y);\n this.updatePageBreak();\n }\n }\n onScale({ sx, sy, ox, oy }) {\n this.updateScale(sx, sy);\n if (ox || oy) {\n this.centerPoint(ox, oy);\n this.updatePageBreak();\n }\n const autoResizeOptions = this.options.autoResizeOptions || this.options.fitTocontentOptions;\n if (typeof autoResizeOptions === 'function') {\n this.update();\n }\n }\n storeScrollPosition() {\n this.cachedScrollLeft = this.container.scrollLeft;\n this.cachedScrollTop = this.container.scrollTop;\n }\n restoreScrollPosition() {\n this.container.scrollLeft = this.cachedScrollLeft;\n this.container.scrollTop = this.cachedScrollTop;\n this.cachedScrollLeft = null;\n this.cachedScrollTop = null;\n }\n storeClientSize() {\n this.cachedClientSize = {\n width: this.container.clientWidth,\n height: this.container.clientHeight,\n };\n }\n restoreClientSize() {\n this.cachedClientSize = null;\n }\n beforeManipulation() {\n if (Platform.IS_IE || Platform.IS_EDGE) {\n this.$container.css('visibility', 'hidden');\n }\n }\n afterManipulation() {\n if (Platform.IS_IE || Platform.IS_EDGE) {\n this.$container.css('visibility', 'visible');\n }\n }\n updatePageSize(width, height) {\n if (width != null) {\n this.options.pageWidth = width;\n }\n if (height != null) {\n this.options.pageHeight = height;\n }\n this.updatePageBreak();\n }\n updatePageBreak() {\n if (this.pageBreak && this.pageBreak.parentNode) {\n this.pageBreak.parentNode.removeChild(this.pageBreak);\n }\n this.pageBreak = null;\n if (this.options.pageVisible && this.options.pageBreak) {\n const graphWidth = this.graph.options.width;\n const graphHeight = this.graph.options.height;\n const pageWidth = this.options.pageWidth * this.sx;\n const pageHeight = this.options.pageHeight * this.sy;\n if (graphWidth > pageWidth || graphHeight > pageHeight) {\n let hasPageBreak = false;\n const container = document.createElement('div');\n for (let i = 1, l = Math.floor(graphWidth / pageWidth); i < l; i += 1) {\n this.$('
')\n .addClass(this.prefixClassName(`graph-pagebreak-vertical`))\n .css({ left: i * pageWidth })\n .appendTo(container);\n hasPageBreak = true;\n }\n for (let i = 1, l = Math.floor(graphHeight / pageHeight); i < l; i += 1) {\n this.$('
')\n .addClass(this.prefixClassName(`graph-pagebreak-horizontal`))\n .css({ top: i * pageHeight })\n .appendTo(container);\n hasPageBreak = true;\n }\n if (hasPageBreak) {\n Dom.addClass(container, this.prefixClassName('graph-pagebreak'));\n this.$(this.graph.view.grid).after(container);\n this.pageBreak = container;\n }\n }\n }\n }\n update() {\n const size = this.getClientSize();\n this.cachedCenterPoint = this.clientToLocalPoint(size.width / 2, size.height / 2);\n let resizeOptions = this.options.autoResizeOptions || this.options.fitTocontentOptions;\n if (typeof resizeOptions === 'function') {\n resizeOptions = FunctionExt.call(resizeOptions, this, this);\n }\n const options = Object.assign({ gridWidth: this.options.pageWidth, gridHeight: this.options.pageHeight, allowNewOrigin: 'negative' }, resizeOptions);\n this.graph.fitToContent(this.getFitToContentOptions(options));\n }\n getFitToContentOptions(options) {\n const sx = this.sx;\n const sy = this.sy;\n options.gridWidth && (options.gridWidth *= sx);\n options.gridHeight && (options.gridHeight *= sy);\n options.minWidth && (options.minWidth *= sx);\n options.minHeight && (options.minHeight *= sy);\n if (typeof options.padding === 'object') {\n options.padding = {\n left: (options.padding.left || 0) * sx,\n right: (options.padding.right || 0) * sx,\n top: (options.padding.top || 0) * sy,\n bottom: (options.padding.bottom || 0) * sy,\n };\n }\n else if (typeof options.padding === 'number') {\n options.padding *= sx;\n }\n if (!this.options.autoResize) {\n options.contentArea = Rectangle.create();\n }\n return options;\n }\n updateScale(sx, sy) {\n const options = this.graph.options;\n const dx = sx / this.sx;\n const dy = sy / this.sy;\n this.sx = sx;\n this.sy = sy;\n this.graph.translate(options.x * dx, options.y * dy);\n this.graph.resizeGraph(options.width * dx, options.height * dy);\n }\n scrollbarPosition(left, top, options) {\n if (left == null && top == null) {\n return {\n left: this.container.scrollLeft,\n top: this.container.scrollTop,\n };\n }\n const prop = {};\n if (typeof left === 'number') {\n prop.scrollLeft = left;\n }\n if (typeof top === 'number') {\n prop.scrollTop = top;\n }\n if (options && options.animation) {\n this.$container.animate(prop, options.animation);\n }\n else {\n this.$container.prop(prop);\n }\n return this;\n }\n /**\n * Try to scroll to ensure that the position (x,y) on the graph (in local\n * coordinates) is at the center of the viewport. If only one of the\n * coordinates is specified, only scroll in the specified dimension and\n * keep the other coordinate unchanged.\n */\n scrollToPoint(x, y, options) {\n const size = this.getClientSize();\n const ctm = this.graph.matrix();\n const prop = {};\n if (typeof x === 'number') {\n prop.scrollLeft = x - size.width / 2 + ctm.e + (this.padding.left || 0);\n }\n if (typeof y === 'number') {\n prop.scrollTop = y - size.height / 2 + ctm.f + (this.padding.top || 0);\n }\n if (options && options.animation) {\n this.$container.animate(prop, options.animation);\n }\n else {\n this.$container.prop(prop);\n }\n return this;\n }\n /**\n * Try to scroll to ensure that the center of graph content is at the\n * center of the viewport.\n */\n scrollToContent(options) {\n const sx = this.sx;\n const sy = this.sy;\n const center = this.graph.getContentArea().getCenter();\n return this.scrollToPoint(center.x * sx, center.y * sy, options);\n }\n /**\n * Try to scroll to ensure that the center of cell is at the center of\n * the viewport.\n */\n scrollToCell(cell, options) {\n const sx = this.sx;\n const sy = this.sy;\n const center = cell.getBBox().getCenter();\n return this.scrollToPoint(center.x * sx, center.y * sy, options);\n }\n /**\n * The center methods are more aggressive than the scroll methods. These\n * methods position the graph so that a specific point on the graph lies\n * at the center of the viewport, adding paddings around the paper if\n * necessary (e.g. if the requested point lies in a corner of the paper).\n * This means that the requested point will always move into the center\n * of the viewport. (Use the scroll functions to avoid adding paddings\n * and only scroll the viewport as far as the graph boundary.)\n */\n /**\n * Position the center of graph to the center of the viewport.\n */\n center(optons) {\n return this.centerPoint(optons);\n }\n centerPoint(x, y, options) {\n const ctm = this.graph.matrix();\n const sx = ctm.a;\n const sy = ctm.d;\n const tx = -ctm.e;\n const ty = -ctm.f;\n const tWidth = tx + this.graph.options.width;\n const tHeight = ty + this.graph.options.height;\n let localOptions;\n this.storeClientSize(); // avoid multilple reflow\n if (typeof x === 'number' || typeof y === 'number') {\n localOptions = options;\n const visibleCenter = this.getVisibleArea().getCenter();\n if (typeof x === 'number') {\n x *= sx; // eslint-disable-line\n }\n else {\n x = visibleCenter.x; // eslint-disable-line\n }\n if (typeof y === 'number') {\n y *= sy; // eslint-disable-line\n }\n else {\n y = visibleCenter.y; // eslint-disable-line\n }\n }\n else {\n localOptions = x;\n x = (tx + tWidth) / 2; // eslint-disable-line\n y = (ty + tHeight) / 2; // eslint-disable-line\n }\n if (localOptions && localOptions.padding) {\n return this.positionPoint({ x, y }, '50%', '50%', localOptions);\n }\n const padding = this.getPadding();\n const clientSize = this.getClientSize();\n const cx = clientSize.width / 2;\n const cy = clientSize.height / 2;\n const left = cx - padding.left - x + tx;\n const right = cx - padding.right + x - tWidth;\n const top = cy - padding.top - y + ty;\n const bottom = cy - padding.bottom + y - tHeight;\n this.addPadding(Math.max(left, 0), Math.max(right, 0), Math.max(top, 0), Math.max(bottom, 0));\n const result = this.scrollToPoint(x, y, localOptions || undefined);\n this.restoreClientSize();\n return result;\n }\n centerContent(options) {\n return this.positionContent('center', options);\n }\n centerCell(cell, options) {\n return this.positionCell(cell, 'center', options);\n }\n /**\n * The position methods are a more general version of the center methods.\n * They position the graph so that a specific point on the graph lies at\n * requested coordinates inside the viewport.\n */\n /**\n *\n */\n positionContent(pos, options) {\n const rect = this.graph.getContentArea(options);\n return this.positionRect(rect, pos, options);\n }\n positionCell(cell, pos, options) {\n const bbox = cell.getBBox();\n return this.positionRect(bbox, pos, options);\n }\n positionRect(rect, pos, options) {\n const bbox = Rectangle.create(rect);\n switch (pos) {\n case 'center':\n return this.positionPoint(bbox.getCenter(), '50%', '50%', options);\n case 'top':\n return this.positionPoint(bbox.getTopCenter(), '50%', 0, options);\n case 'top-right':\n return this.positionPoint(bbox.getTopRight(), '100%', 0, options);\n case 'right':\n return this.positionPoint(bbox.getRightMiddle(), '100%', '50%', options);\n case 'bottom-right':\n return this.positionPoint(bbox.getBottomRight(), '100%', '100%', options);\n case 'bottom':\n return this.positionPoint(bbox.getBottomCenter(), '50%', '100%', options);\n case 'bottom-left':\n return this.positionPoint(bbox.getBottomLeft(), 0, '100%', options);\n case 'left':\n return this.positionPoint(bbox.getLeftMiddle(), 0, '50%', options);\n case 'top-left':\n return this.positionPoint(bbox.getTopLeft(), 0, 0, options);\n default:\n return this;\n }\n }\n positionPoint(point, x, y, options = {}) {\n const { padding: pad } = options, localOptions = __rest(options, [\"padding\"]);\n const padding = NumberExt.normalizeSides(pad);\n const clientRect = Rectangle.fromSize(this.getClientSize());\n const targetRect = clientRect.clone().moveAndExpand({\n x: padding.left,\n y: padding.top,\n width: -padding.right - padding.left,\n height: -padding.top - padding.bottom,\n });\n // eslint-disable-next-line\n x = NumberExt.normalizePercentage(x, Math.max(0, targetRect.width));\n if (x < 0) {\n x = targetRect.width + x; // eslint-disable-line\n }\n // eslint-disable-next-line\n y = NumberExt.normalizePercentage(y, Math.max(0, targetRect.height));\n if (y < 0) {\n y = targetRect.height + y; // eslint-disable-line\n }\n const origin = targetRect.getTopLeft().translate(x, y);\n const diff = clientRect.getCenter().diff(origin);\n const scale = this.zoom();\n const rawDiff = diff.scale(1 / scale, 1 / scale);\n const result = Point.create(point).translate(rawDiff);\n return this.centerPoint(result.x, result.y, localOptions);\n }\n zoom(factor, options) {\n if (factor == null) {\n return this.sx;\n }\n options = options || {}; // eslint-disable-line\n let cx;\n let cy;\n const clientSize = this.getClientSize();\n const center = this.clientToLocalPoint(clientSize.width / 2, clientSize.height / 2);\n let sx = factor;\n let sy = factor;\n if (!options.absolute) {\n sx += this.sx;\n sy += this.sy;\n }\n if (options.scaleGrid) {\n sx = Math.round(sx / options.scaleGrid) * options.scaleGrid;\n sy = Math.round(sy / options.scaleGrid) * options.scaleGrid;\n }\n if (options.maxScale) {\n sx = Math.min(options.maxScale, sx);\n sy = Math.min(options.maxScale, sy);\n }\n if (options.minScale) {\n sx = Math.max(options.minScale, sx);\n sy = Math.max(options.minScale, sy);\n }\n sx = this.graph.transform.clampScale(sx);\n sy = this.graph.transform.clampScale(sy);\n if (options.center) {\n const fx = sx / this.sx;\n const fy = sy / this.sy;\n cx = options.center.x - (options.center.x - center.x) / fx;\n cy = options.center.y - (options.center.y - center.y) / fy;\n }\n else {\n cx = center.x;\n cy = center.y;\n }\n this.beforeManipulation();\n this.graph.transform.scale(sx, sy);\n this.centerPoint(cx, cy);\n this.afterManipulation();\n return this;\n }\n zoomToRect(rect, options = {}) {\n const area = Rectangle.create(rect);\n const graph = this.graph;\n options.contentArea = area;\n if (options.viewportArea == null) {\n options.viewportArea = {\n x: graph.options.x,\n y: graph.options.y,\n width: this.$container.width(),\n height: this.$container.height(),\n };\n }\n this.beforeManipulation();\n graph.transform.scaleContentToFitImpl(options, false);\n const center = area.getCenter();\n this.centerPoint(center.x, center.y);\n this.afterManipulation();\n return this;\n }\n zoomToFit(options = {}) {\n return this.zoomToRect(this.graph.getContentArea(options), options);\n }\n transitionToPoint(x, y, options) {\n if (typeof x === 'object') {\n options = y; // eslint-disable-line\n y = x.y; // eslint-disable-line\n x = x.x; // eslint-disable-line\n }\n else {\n y = y; // eslint-disable-line\n }\n if (options == null) {\n options = {}; // eslint-disable-line\n }\n let transform;\n let transformOrigin;\n const scale = this.sx;\n const targetScale = Math.max(options.scale || scale, 0.000001);\n const clientSize = this.getClientSize();\n const targetPoint = new Point(x, y);\n const localPoint = this.clientToLocalPoint(clientSize.width / 2, clientSize.height / 2);\n if (scale === targetScale) {\n const translate = localPoint.diff(targetPoint).scale(scale, scale).round();\n transform = `translate(${translate.x}px,${translate.y}px)`;\n }\n else {\n const delta = (targetScale / (scale - targetScale)) * targetPoint.distance(localPoint);\n const range = localPoint.clone().move(targetPoint, delta);\n const origin = this.localToBackgroundPoint(range).round();\n transform = `scale(${targetScale / scale})`;\n transformOrigin = `${origin.x}px ${origin.y}px`;\n }\n const onTransitionEnd = options.onTransitionEnd;\n this.$container.addClass(Util.transitionClassName);\n this.$content\n .off(Util.transitionEventName)\n .on(Util.transitionEventName, (e) => {\n this.syncTransition(targetScale, { x: x, y: y });\n if (typeof onTransitionEnd === 'function') {\n FunctionExt.call(onTransitionEnd, this, e.originalEvent);\n }\n })\n .css({\n transform,\n transformOrigin,\n transition: 'transform',\n transitionDuration: options.duration || '1s',\n transitionDelay: options.delay,\n transitionTimingFunction: options.timing,\n });\n return this;\n }\n syncTransition(scale, p) {\n this.beforeManipulation();\n this.graph.scale(scale);\n this.removeTransition();\n this.centerPoint(p.x, p.y);\n this.afterManipulation();\n return this;\n }\n removeTransition() {\n this.$container.removeClass(Util.transitionClassName);\n this.$content.off(Util.transitionEventName).css({\n transform: '',\n transformOrigin: '',\n transition: '',\n transitionDuration: '',\n transitionDelay: '',\n transitionTimingFunction: '',\n });\n return this;\n }\n transitionToRect(rectangle, options = {}) {\n const rect = Rectangle.create(rectangle);\n const maxScale = options.maxScale || Infinity;\n const minScale = options.minScale || Number.MIN_VALUE;\n const scaleGrid = options.scaleGrid || null;\n const PIXEL_SIZE = options.visibility || 1;\n const center = options.center\n ? Point.create(options.center)\n : rect.getCenter();\n const clientSize = this.getClientSize();\n const w = clientSize.width * PIXEL_SIZE;\n const h = clientSize.height * PIXEL_SIZE;\n let scale = new Rectangle(center.x - w / 2, center.y - h / 2, w, h).getMaxUniformScaleToFit(rect, center);\n scale = Math.min(scale, maxScale);\n if (scaleGrid) {\n scale = Math.floor(scale / scaleGrid) * scaleGrid;\n }\n scale = Math.max(minScale, scale);\n return this.transitionToPoint(center, Object.assign({ scale }, options));\n }\n startPanning(evt) {\n const e = this.normalizeEvent(evt);\n this.clientX = e.clientX;\n this.clientY = e.clientY;\n this.trigger('pan:start', { e });\n this.$(document.body).on({\n 'mousemove.panning touchmove.panning': this.pan.bind(this),\n 'mouseup.panning touchend.panning': this.stopPanning.bind(this),\n 'mouseleave.panning': this.stopPanning.bind(this),\n });\n this.$(window).on('mouseup.panning', this.stopPanning.bind(this));\n }\n pan(evt) {\n const e = this.normalizeEvent(evt);\n const dx = e.clientX - this.clientX;\n const dy = e.clientY - this.clientY;\n this.container.scrollTop -= dy;\n this.container.scrollLeft -= dx;\n this.clientX = e.clientX;\n this.clientY = e.clientY;\n this.trigger('panning', { e });\n }\n stopPanning(e) {\n this.$(document.body).off('.panning');\n this.$(window).off('.panning');\n this.trigger('pan:stop', { e });\n }\n clientToLocalPoint(a, b) {\n let x = typeof a === 'object' ? a.x : a;\n let y = typeof a === 'object' ? a.y : b;\n const ctm = this.graph.matrix();\n x += this.container.scrollLeft - this.padding.left - ctm.e;\n y += this.container.scrollTop - this.padding.top - ctm.f;\n return new Point(x / ctm.a, y / ctm.d);\n }\n localToBackgroundPoint(x, y) {\n const p = typeof x === 'object' ? Point.create(x) : new Point(x, y);\n const ctm = this.graph.matrix();\n const padding = this.padding;\n return Dom.transformPoint(p, ctm).translate(padding.left, padding.top);\n }\n resize(width, height) {\n let w = width != null ? width : this.container.offsetWidth;\n let h = height != null ? height : this.container.offsetHeight;\n if (typeof w === 'number') {\n w = Math.round(w);\n }\n if (typeof h === 'number') {\n h = Math.round(h);\n }\n this.options.width = w;\n this.options.height = h;\n this.$container.css({ width: w, height: h });\n this.update();\n }\n getClientSize() {\n if (this.cachedClientSize) {\n return this.cachedClientSize;\n }\n return {\n width: this.container.clientWidth,\n height: this.container.clientHeight,\n };\n }\n autoScroll(clientX, clientY) {\n const buffer = 10;\n const container = this.container;\n const rect = container.getBoundingClientRect();\n let dx = 0;\n let dy = 0;\n if (clientX <= rect.left + buffer) {\n dx = -buffer;\n }\n if (clientY <= rect.top + buffer) {\n dy = -buffer;\n }\n if (clientX >= rect.right - buffer) {\n dx = buffer;\n }\n if (clientY >= rect.bottom - buffer) {\n dy = buffer;\n }\n if (dx !== 0) {\n container.scrollLeft += dx;\n }\n if (dy !== 0) {\n container.scrollTop += dy;\n }\n return {\n scrollerX: dx,\n scrollerY: dy,\n };\n }\n addPadding(left, right, top, bottom) {\n let padding = this.getPadding();\n this.padding = {\n left: Math.round(padding.left + (left || 0)),\n top: Math.round(padding.top + (top || 0)),\n bottom: Math.round(padding.bottom + (bottom || 0)),\n right: Math.round(padding.right + (right || 0)),\n };\n padding = this.padding;\n this.$content.css({\n width: padding.left + this.graph.options.width + padding.right,\n height: padding.top + this.graph.options.height + padding.bottom,\n });\n const container = this.graph.container;\n container.style.left = `${this.padding.left}px`;\n container.style.top = `${this.padding.top}px`;\n return this;\n }\n getPadding() {\n const padding = this.options.padding;\n if (typeof padding === 'function') {\n return NumberExt.normalizeSides(FunctionExt.call(padding, this, this));\n }\n return NumberExt.normalizeSides(padding);\n }\n /**\n * Returns the untransformed size and origin of the current viewport.\n */\n getVisibleArea() {\n const ctm = this.graph.matrix();\n const size = this.getClientSize();\n const box = {\n x: this.container.scrollLeft || 0,\n y: this.container.scrollTop || 0,\n width: size.width,\n height: size.height,\n };\n const area = Dom.transformRectangle(box, ctm.inverse());\n area.x -= (this.padding.left || 0) / this.sx;\n area.y -= (this.padding.top || 0) / this.sy;\n return area;\n }\n isCellVisible(cell, options = {}) {\n const bbox = cell.getBBox();\n const area = this.getVisibleArea();\n return options.strict\n ? area.containsRect(bbox)\n : area.isIntersectWithRect(bbox);\n }\n isPointVisible(point) {\n return this.getVisibleArea().containsPoint(point);\n }\n /**\n * Lock the current viewport by disabling user scrolling.\n */\n lock() {\n this.$container.css('overflow', 'hidden');\n return this;\n }\n /**\n * Enable user scrolling if previously locked.\n */\n unlock() {\n this.$container.css('overflow', 'scroll');\n return this;\n }\n onRemove() {\n this.stopListening();\n }\n dispose() {\n this.$(this.graph.container).insertBefore(this.$container);\n this.remove();\n }\n}\n__decorate([\n View.dispose()\n], Scroller.prototype, \"dispose\", null);\n(function (Scroller) {\n class Background extends BackgroundManager {\n constructor(scroller) {\n super(scroller.graph);\n this.scroller = scroller;\n if (scroller.options.background) {\n this.draw(scroller.options.background);\n }\n }\n get elem() {\n return this.scroller.background;\n }\n init() {\n this.graph.on('scale', this.update, this);\n this.graph.on('translate', this.update, this);\n }\n updateBackgroundOptions(options) {\n this.scroller.options.background = options;\n }\n }\n Scroller.Background = Background;\n})(Scroller || (Scroller = {}));\nvar Util;\n(function (Util) {\n Util.containerClass = 'graph-scroller';\n Util.panningClass = `${Util.containerClass}-panning`;\n Util.pannableClass = `${Util.containerClass}-pannable`;\n Util.pagedClass = `${Util.containerClass}-paged`;\n Util.contentClass = `${Util.containerClass}-content`;\n Util.backgroundClass = `${Util.containerClass}-background`;\n Util.transitionClassName = 'transition-in-progress';\n Util.transitionEventName = 'transitionend.graph-scroller-transition';\n Util.defaultOptions = {\n padding() {\n const size = this.getClientSize();\n const minWidth = Math.max(this.options.minVisibleWidth || 0, 1) || 1;\n const minHeight = Math.max(this.options.minVisibleHeight || 0, 1) || 1;\n const left = Math.max(size.width - minWidth, 0);\n const top = Math.max(size.height - minHeight, 0);\n return { left, top, right: left, bottom: top };\n },\n minVisibleWidth: 50,\n minVisibleHeight: 50,\n pageVisible: false,\n pageBreak: false,\n autoResize: true,\n };\n function getOptions(options) {\n const result = ObjectExt.merge({}, Util.defaultOptions, options);\n if (result.pageWidth == null) {\n result.pageWidth = options.graph.options.width;\n }\n if (result.pageHeight == null) {\n result.pageHeight = options.graph.options.height;\n }\n return result;\n }\n Util.getOptions = getOptions;\n})(Util || (Util = {}));\n//# sourceMappingURL=index.js.map","export function notify(name, evt, view, args = {}) {\n if (view) {\n const graph = view.graph;\n const e = graph.view.normalizeEvent(evt);\n const localPoint = graph.snapToGrid(e.clientX, e.clientY);\n view.notify(name, Object.assign({ e,\n view, node: view.cell, cell: view.cell, x: localPoint.x, y: localPoint.y }, args));\n }\n}\n//# sourceMappingURL=util.js.map","var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Util } from '../../global';\nimport { Rectangle, Angle } from '../../geometry';\nimport { ObjectExt, StringExt, FunctionExt } from '../../util';\nimport { Cell } from '../../model/cell';\nimport { Collection } from '../../model/collection';\nimport { View } from '../../view/view';\nimport { notify } from '../transform/util';\nimport { Handle } from '../common';\nexport class Selection extends View {\n constructor(options) {\n super();\n this.options = ObjectExt.merge({}, Private.defaultOptions, options);\n if (this.options.model) {\n this.options.collection = this.options.model.collection;\n }\n if (this.options.collection) {\n this.collection = this.options.collection;\n }\n else {\n this.collection = new Collection([], {\n comparator: Private.depthComparator,\n });\n this.options.collection = this.collection;\n }\n this.boxCount = 0;\n this.createContainer();\n this.initHandles();\n this.startListening();\n }\n get graph() {\n return this.options.graph;\n }\n get boxClassName() {\n return this.prefixClassName(Private.classNames.box);\n }\n get $boxes() {\n return this.$container.children(`.${this.boxClassName}`);\n }\n get handleOptions() {\n return this.options;\n }\n startListening() {\n const graph = this.graph;\n const collection = this.collection;\n this.delegateEvents({\n [`mousedown .${this.boxClassName}`]: 'onSelectionBoxMouseDown',\n [`touchstart .${this.boxClassName}`]: 'onSelectionBoxMouseDown',\n }, true);\n graph.on('scale', this.onGraphTransformed, this);\n graph.on('translate', this.onGraphTransformed, this);\n graph.model.on('updated', this.onModelUpdated, this);\n collection.on('added', this.onCellAdded, this);\n collection.on('removed', this.onCellRemoved, this);\n collection.on('reseted', this.onReseted, this);\n collection.on('updated', this.onCollectionUpdated, this);\n collection.on('node:change:position', this.onNodePositionChanged, this);\n collection.on('cell:changed', this.onCellChanged, this);\n }\n stopListening() {\n const graph = this.graph;\n const collection = this.collection;\n this.undelegateEvents();\n graph.off('scale', this.onGraphTransformed, this);\n graph.off('translate', this.onGraphTransformed, this);\n graph.model.off('updated', this.onModelUpdated, this);\n collection.off('added', this.onCellAdded, this);\n collection.off('removed', this.onCellRemoved, this);\n collection.off('reseted', this.onReseted, this);\n collection.off('updated', this.onCollectionUpdated, this);\n collection.off('node:change:position', this.onNodePositionChanged, this);\n collection.off('cell:changed', this.onCellChanged, this);\n }\n onRemove() {\n this.stopListening();\n }\n onGraphTransformed() {\n this.updateSelectionBoxes({ async: false });\n }\n onCellChanged() {\n this.updateSelectionBoxes();\n }\n onNodePositionChanged({ node, options, }) {\n const { showNodeSelectionBox, pointerEvents } = this.options;\n const { ui, selection } = options;\n let allowTranslating = !this.translating;\n /* Scenarios where this method is not called:\n * 1. ShowNodeSelection is true or ponterEvents is none\n * 2. Avoid circular calls with the selection tag\n */\n allowTranslating =\n allowTranslating &&\n (showNodeSelectionBox !== true || pointerEvents === 'none');\n allowTranslating = allowTranslating && ui && !selection;\n if (allowTranslating) {\n this.translating = true;\n const current = node.position();\n const previous = node.previous('position');\n const dx = current.x - previous.x;\n const dy = current.y - previous.y;\n if (dx !== 0 || dy !== 0) {\n this.translateSelectedNodes(dx, dy, node, options);\n }\n this.translating = false;\n }\n }\n onModelUpdated({ removed }) {\n if (removed && removed.length) {\n this.unselect(removed);\n }\n }\n isEmpty() {\n return this.length <= 0;\n }\n isSelected(cell) {\n return this.collection.has(cell);\n }\n get length() {\n return this.collection.length;\n }\n get cells() {\n return this.collection.toArray();\n }\n select(cells, options = {}) {\n options.dryrun = true;\n const items = this.filter(Array.isArray(cells) ? cells : [cells]);\n this.collection.add(items, options);\n return this;\n }\n unselect(cells, options = {}) {\n // dryrun to prevent cell be removed from graph\n options.dryrun = true;\n this.collection.remove(Array.isArray(cells) ? cells : [cells], options);\n return this;\n }\n reset(cells, options = {}) {\n if (cells) {\n if (options.batch) {\n const filterCells = this.filter(Array.isArray(cells) ? cells : [cells]);\n this.collection.reset(filterCells, Object.assign(Object.assign({}, options), { ui: true }));\n return this;\n }\n const prev = this.cells;\n const next = this.filter(Array.isArray(cells) ? cells : [cells]);\n const prevMap = {};\n const nextMap = {};\n prev.forEach((cell) => (prevMap[cell.id] = cell));\n next.forEach((cell) => (nextMap[cell.id] = cell));\n const added = [];\n const removed = [];\n next.forEach((cell) => {\n if (!prevMap[cell.id]) {\n added.push(cell);\n }\n });\n prev.forEach((cell) => {\n if (!nextMap[cell.id]) {\n removed.push(cell);\n }\n });\n if (removed.length) {\n this.unselect(removed, Object.assign(Object.assign({}, options), { ui: true }));\n }\n if (added.length) {\n this.select(added, Object.assign(Object.assign({}, options), { ui: true }));\n }\n if (removed.length === 0 && added.length === 0) {\n this.updateContainer();\n }\n return this;\n }\n return this.clean(options);\n }\n clean(options = {}) {\n if (this.length) {\n if (options.batch === false) {\n this.unselect(this.cells, options);\n }\n else {\n this.collection.reset([], Object.assign(Object.assign({}, options), { ui: true }));\n }\n }\n return this;\n }\n setFilter(filter) {\n this.options.filter = filter;\n }\n setContent(content) {\n this.options.content = content;\n }\n startSelecting(evt) {\n // Flow: startSelecting => adjustSelection => stopSelecting\n evt = this.normalizeEvent(evt); // eslint-disable-line\n this.clean();\n let x;\n let y;\n const graphContainer = this.graph.container;\n if (evt.offsetX != null &&\n evt.offsetY != null &&\n graphContainer.contains(evt.target)) {\n x = evt.offsetX;\n y = evt.offsetY;\n }\n else {\n const offset = this.$(graphContainer).offset();\n const scrollLeft = graphContainer.scrollLeft;\n const scrollTop = graphContainer.scrollTop;\n x = evt.clientX - offset.left + window.pageXOffset + scrollLeft;\n y = evt.clientY - offset.top + window.pageYOffset + scrollTop;\n }\n this.$container.css({\n top: y,\n left: x,\n width: 1,\n height: 1,\n });\n this.setEventData(evt, {\n action: 'selecting',\n clientX: evt.clientX,\n clientY: evt.clientY,\n offsetX: x,\n offsetY: y,\n scrollerX: 0,\n scrollerY: 0,\n });\n this.delegateDocumentEvents(Private.documentEvents, evt.data);\n }\n filter(cells) {\n const filter = this.options.filter;\n if (Array.isArray(filter)) {\n return cells.filter((cell) => !filter.includes(cell) && !filter.includes(cell.shape));\n }\n if (typeof filter === 'function') {\n return cells.filter((cell) => FunctionExt.call(filter, this.graph, cell));\n }\n return cells;\n }\n stopSelecting(evt) {\n const graph = this.graph;\n const eventData = this.getEventData(evt);\n const action = eventData.action;\n switch (action) {\n case 'selecting': {\n let width = this.$container.width();\n let height = this.$container.height();\n const offset = this.$container.offset();\n const origin = graph.pageToLocal(offset.left, offset.top);\n const scale = graph.transform.getScale();\n width /= scale.sx;\n height /= scale.sy;\n const rect = new Rectangle(origin.x, origin.y, width, height);\n const cells = this.getCellViewsInArea(rect).map((view) => view.cell);\n this.reset(cells, { batch: true });\n this.hideRubberband();\n break;\n }\n case 'translating': {\n const client = graph.snapToGrid(evt.clientX, evt.clientY);\n if (!this.options.following) {\n const data = eventData;\n this.updateSelectedNodesPosition({\n dx: data.clientX - data.originX,\n dy: data.clientY - data.originY,\n });\n }\n this.graph.model.stopBatch('move-selection');\n this.notifyBoxEvent('box:mouseup', evt, client.x, client.y);\n break;\n }\n default: {\n this.clean();\n break;\n }\n }\n }\n onMouseUp(evt) {\n const action = this.getEventData(evt).action;\n if (action) {\n this.stopSelecting(evt);\n this.undelegateDocumentEvents();\n }\n }\n onSelectionBoxMouseDown(evt) {\n if (!this.options.following) {\n evt.stopPropagation();\n }\n const e = this.normalizeEvent(evt);\n if (this.options.movable) {\n this.startTranslating(e);\n }\n const activeView = this.getCellViewFromElem(e.target);\n this.setEventData(e, { activeView });\n const client = this.graph.snapToGrid(e.clientX, e.clientY);\n this.notifyBoxEvent('box:mousedown', e, client.x, client.y);\n this.delegateDocumentEvents(Private.documentEvents, e.data);\n }\n startTranslating(evt) {\n this.graph.model.startBatch('move-selection');\n const client = this.graph.snapToGrid(evt.clientX, evt.clientY);\n this.setEventData(evt, {\n action: 'translating',\n clientX: client.x,\n clientY: client.y,\n originX: client.x,\n originY: client.y,\n });\n }\n getSelectionOffset(client, data) {\n let dx = client.x - data.clientX;\n let dy = client.y - data.clientY;\n const restrict = this.graph.hook.getRestrictArea();\n if (restrict) {\n const cells = this.collection.toArray();\n const totalBBox = Cell.getCellsBBox(cells, { deep: true }) || Rectangle.create();\n const minDx = restrict.x - totalBBox.x;\n const minDy = restrict.y - totalBBox.y;\n const maxDx = restrict.x + restrict.width - (totalBBox.x + totalBBox.width);\n const maxDy = restrict.y + restrict.height - (totalBBox.y + totalBBox.height);\n if (dx < minDx) {\n dx = minDx;\n }\n if (dy < minDy) {\n dy = minDy;\n }\n if (maxDx < dx) {\n dx = maxDx;\n }\n if (maxDy < dy) {\n dy = maxDy;\n }\n if (!this.options.following) {\n const offsetX = client.x - data.originX;\n const offsetY = client.y - data.originY;\n dx = offsetX <= minDx || offsetX >= maxDx ? 0 : dx;\n dy = offsetY <= minDy || offsetY >= maxDy ? 0 : dy;\n }\n }\n return {\n dx,\n dy,\n };\n }\n updateSelectedNodesPosition(offset) {\n const { dx, dy } = offset;\n if (dx || dy) {\n if ((this.translateSelectedNodes(dx, dy), this.boxesUpdated)) {\n if (this.collection.length > 1) {\n this.updateSelectionBoxes();\n }\n }\n else {\n const scale = this.graph.transform.getScale();\n this.$boxes.add(this.$selectionContainer).css({\n left: `+=${dx * scale.sx}`,\n top: `+=${dy * scale.sy}`,\n });\n }\n }\n }\n autoScrollGraph(x, y) {\n const scroller = this.graph.scroller.widget;\n if (scroller) {\n return scroller.autoScroll(x, y);\n }\n return { scrollerX: 0, scrollerY: 0 };\n }\n adjustSelection(evt) {\n const e = this.normalizeEvent(evt);\n const eventData = this.getEventData(e);\n const action = eventData.action;\n switch (action) {\n case 'selecting': {\n const data = eventData;\n if (data.moving !== true) {\n this.$container.appendTo(this.graph.container);\n this.showRubberband();\n data.moving = true;\n }\n const { scrollerX, scrollerY } = this.autoScrollGraph(e.clientX, e.clientY);\n data.scrollerX += scrollerX;\n data.scrollerY += scrollerY;\n const dx = e.clientX - data.clientX + data.scrollerX;\n const dy = e.clientY - data.clientY + data.scrollerY;\n const left = parseInt(this.$container.css('left'), 10);\n const top = parseInt(this.$container.css('top'), 10);\n this.$container.css({\n left: dx < 0 ? data.offsetX + dx : left,\n top: dy < 0 ? data.offsetY + dy : top,\n width: Math.abs(dx),\n height: Math.abs(dy),\n });\n break;\n }\n case 'translating': {\n const client = this.graph.snapToGrid(e.clientX, e.clientY);\n const data = eventData;\n const offset = this.getSelectionOffset(client, data);\n if (this.options.following) {\n this.updateSelectedNodesPosition(offset);\n }\n else {\n this.updateContainerPosition(offset);\n }\n if (offset.dx) {\n data.clientX = client.x;\n }\n if (offset.dy) {\n data.clientY = client.y;\n }\n this.notifyBoxEvent('box:mousemove', evt, client.x, client.y);\n break;\n }\n default:\n break;\n }\n this.boxesUpdated = false;\n }\n translateSelectedNodes(dx, dy, exclude, otherOptions) {\n const map = {};\n const excluded = [];\n if (exclude) {\n map[exclude.id] = true;\n }\n this.collection.toArray().forEach((cell) => {\n cell.getDescendants({ deep: true }).forEach((child) => {\n map[child.id] = true;\n });\n });\n if (otherOptions && otherOptions.translateBy) {\n const currentCell = this.graph.getCellById(otherOptions.translateBy);\n if (currentCell) {\n map[currentCell.id] = true;\n currentCell.getDescendants({ deep: true }).forEach((child) => {\n map[child.id] = true;\n });\n excluded.push(currentCell);\n }\n }\n this.collection.toArray().forEach((cell) => {\n if (!map[cell.id]) {\n const options = Object.assign(Object.assign({}, otherOptions), { selection: this.cid, exclude: excluded });\n cell.translate(dx, dy, options);\n this.graph.model.getConnectedEdges(cell).forEach((edge) => {\n if (!map[edge.id]) {\n edge.translate(dx, dy, options);\n map[edge.id] = true;\n }\n });\n }\n });\n }\n getCellViewsInArea(rect) {\n const graph = this.graph;\n const options = {\n strict: this.options.strict,\n };\n let views = [];\n if (this.options.rubberNode) {\n if (this.options.useCellGeometry) {\n views = views.concat(graph.model\n .getNodesInArea(rect, options)\n .map((node) => graph.renderer.findViewByCell(node))\n .filter((view) => view != null));\n }\n else {\n views = views.concat(graph.renderer.findViewsInArea(rect, options));\n }\n }\n if (this.options.rubberEdge) {\n if (this.options.useCellGeometry) {\n views = views.concat(graph.model\n .getEdgesInArea(rect, options)\n .map((edge) => graph.renderer.findViewByCell(edge))\n .filter((view) => view != null));\n }\n else {\n views = views.concat(graph.renderer.findEdgeViewsInArea(rect, options));\n }\n }\n return views;\n }\n notifyBoxEvent(name, e, x, y) {\n const data = this.getEventData(e);\n const view = data.activeView;\n this.trigger(name, { e, view, x, y, cell: view.cell });\n }\n getSelectedClassName(cell) {\n return this.prefixClassName(`${cell.isNode() ? 'node' : 'edge'}-selected`);\n }\n addCellSelectedClassName(cell) {\n const view = this.graph.renderer.findViewByCell(cell);\n if (view) {\n view.addClass(this.getSelectedClassName(cell));\n }\n }\n removeCellUnSelectedClassName(cell) {\n const view = this.graph.renderer.findViewByCell(cell);\n if (view) {\n view.removeClass(this.getSelectedClassName(cell));\n }\n }\n destroySelectionBox(cell) {\n this.removeCellUnSelectedClassName(cell);\n if (this.canShowSelectionBox(cell)) {\n this.$container.find(`[data-cell-id=\"${cell.id}\"]`).remove();\n if (this.$boxes.length === 0) {\n this.hide();\n }\n this.boxCount = Math.max(0, this.boxCount - 1);\n }\n }\n destroyAllSelectionBoxes(cells) {\n cells.forEach((cell) => this.removeCellUnSelectedClassName(cell));\n this.hide();\n this.$boxes.remove();\n this.boxCount = 0;\n }\n hide() {\n this.$container\n .removeClass(this.prefixClassName(Private.classNames.rubberband))\n .removeClass(this.prefixClassName(Private.classNames.selected));\n }\n showRubberband() {\n this.$container.addClass(this.prefixClassName(Private.classNames.rubberband));\n }\n hideRubberband() {\n this.$container.removeClass(this.prefixClassName(Private.classNames.rubberband));\n }\n showSelected() {\n this.$container\n .removeAttr('style')\n .addClass(this.prefixClassName(Private.classNames.selected));\n }\n createContainer() {\n this.container = document.createElement('div');\n this.$container = this.$(this.container);\n this.$container.addClass(this.prefixClassName(Private.classNames.root));\n if (this.options.className) {\n this.$container.addClass(this.options.className);\n }\n this.$selectionContainer = this.$('
').addClass(this.prefixClassName(Private.classNames.inner));\n this.$selectionContent = this.$('
').addClass(this.prefixClassName(Private.classNames.content));\n this.$selectionContainer.append(this.$selectionContent);\n this.$selectionContainer.attr('data-selection-length', this.collection.length);\n this.$container.prepend(this.$selectionContainer);\n this.$handleContainer = this.$selectionContainer;\n }\n updateContainerPosition(offset) {\n if (offset.dx || offset.dy) {\n this.$selectionContainer.css({\n left: `+=${offset.dx}`,\n top: `+=${offset.dy}`,\n });\n }\n }\n updateContainer() {\n const origin = { x: Infinity, y: Infinity };\n const corner = { x: 0, y: 0 };\n const cells = this.collection\n .toArray()\n .filter((cell) => this.canShowSelectionBox(cell));\n cells.forEach((cell) => {\n const view = this.graph.renderer.findViewByCell(cell);\n if (view) {\n const bbox = view.getBBox({\n useCellGeometry: this.options.useCellGeometry,\n });\n origin.x = Math.min(origin.x, bbox.x);\n origin.y = Math.min(origin.y, bbox.y);\n corner.x = Math.max(corner.x, bbox.x + bbox.width);\n corner.y = Math.max(corner.y, bbox.y + bbox.height);\n }\n });\n this.$selectionContainer\n .css({\n position: 'absolute',\n pointerEvents: 'none',\n left: origin.x,\n top: origin.y,\n width: corner.x - origin.x,\n height: corner.y - origin.y,\n })\n .attr('data-selection-length', this.collection.length);\n const boxContent = this.options.content;\n if (boxContent) {\n if (typeof boxContent === 'function') {\n const content = FunctionExt.call(boxContent, this.graph, this, this.$selectionContent[0]);\n if (content) {\n this.$selectionContent.html(content);\n }\n }\n else {\n this.$selectionContent.html(boxContent);\n }\n }\n if (this.collection.length > 0 && !this.container.parentNode) {\n this.$container.appendTo(this.graph.container);\n }\n else if (this.collection.length <= 0 && this.container.parentNode) {\n this.container.parentNode.removeChild(this.container);\n }\n }\n canShowSelectionBox(cell) {\n return ((cell.isNode() && this.options.showNodeSelectionBox === true) ||\n (cell.isEdge() && this.options.showEdgeSelectionBox === true));\n }\n createSelectionBox(cell) {\n this.addCellSelectedClassName(cell);\n if (this.canShowSelectionBox(cell)) {\n const view = this.graph.renderer.findViewByCell(cell);\n if (view) {\n const bbox = view.getBBox({\n useCellGeometry: this.options.useCellGeometry,\n });\n const className = this.boxClassName;\n this.$('
')\n .addClass(className)\n .addClass(`${className}-${cell.isNode() ? 'node' : 'edge'}`)\n .attr('data-cell-id', cell.id)\n .css({\n position: 'absolute',\n left: bbox.x,\n top: bbox.y,\n width: bbox.width,\n height: bbox.height,\n pointerEvents: this.options.pointerEvents || 'auto',\n })\n .appendTo(this.container);\n this.showSelected();\n this.boxCount += 1;\n }\n }\n }\n updateSelectionBoxes(options = {}) {\n if (this.collection.length > 0) {\n this.boxesUpdated = true;\n this.graph.renderer.requestViewUpdate(this, 1, 2, options);\n }\n }\n confirmUpdate() {\n if (this.boxCount) {\n this.hide();\n this.$boxes.each((_, elem) => {\n const cellId = this.$(elem).remove().attr('data-cell-id');\n const cell = this.collection.get(cellId);\n if (cell) {\n this.createSelectionBox(cell);\n }\n });\n this.updateContainer();\n }\n return 0;\n }\n getCellViewFromElem(elem) {\n const id = elem.getAttribute('data-cell-id');\n if (id) {\n const cell = this.collection.get(id);\n if (cell) {\n return this.graph.renderer.findViewByCell(cell);\n }\n }\n return null;\n }\n onCellRemoved({ cell }) {\n this.destroySelectionBox(cell);\n this.updateContainer();\n }\n onReseted({ previous, current }) {\n this.destroyAllSelectionBoxes(previous);\n current.forEach((cell) => {\n this.listenCellRemoveEvent(cell);\n this.createSelectionBox(cell);\n });\n this.updateContainer();\n }\n onCellAdded({ cell }) {\n // The collection do not known the cell was removed when cell was\n // removed by interaction(such as, by \"delete\" shortcut), so we should\n // manually listen to cell's remove evnet.\n this.listenCellRemoveEvent(cell);\n this.createSelectionBox(cell);\n this.updateContainer();\n }\n listenCellRemoveEvent(cell) {\n cell.off('removed', this.onCellRemoved, this);\n cell.on('removed', this.onCellRemoved, this);\n }\n onCollectionUpdated({ added, removed, options, }) {\n added.forEach((cell) => {\n this.trigger('cell:selected', { cell, options });\n this.graph.trigger('cell:selected', { cell, options });\n if (cell.isNode()) {\n this.trigger('node:selected', { cell, options, node: cell });\n this.graph.trigger('node:selected', { cell, options, node: cell });\n }\n else if (cell.isEdge()) {\n this.trigger('edge:selected', { cell, options, edge: cell });\n this.graph.trigger('edge:selected', { cell, options, edge: cell });\n }\n });\n removed.forEach((cell) => {\n this.trigger('cell:unselected', { cell, options });\n this.graph.trigger('cell:unselected', { cell, options });\n if (cell.isNode()) {\n this.trigger('node:unselected', { cell, options, node: cell });\n this.graph.trigger('node:unselected', { cell, options, node: cell });\n }\n else if (cell.isEdge()) {\n this.trigger('edge:unselected', { cell, options, edge: cell });\n this.graph.trigger('edge:unselected', { cell, options, edge: cell });\n }\n });\n const args = {\n added,\n removed,\n options,\n selected: this.cells,\n };\n this.trigger('selection:changed', args);\n this.graph.trigger('selection:changed', args);\n }\n // #region handle\n deleteSelectedCells() {\n const cells = this.collection.toArray();\n this.clean();\n this.graph.model.removeCells(cells, { selection: this.cid });\n }\n startRotate({ e }) {\n const cells = this.collection.toArray();\n const center = Cell.getCellsBBox(cells).getCenter();\n const client = this.graph.snapToGrid(e.clientX, e.clientY);\n const angles = cells.reduce((memo, cell) => {\n memo[cell.id] = Angle.normalize(cell.getAngle());\n return memo;\n }, {});\n this.setEventData(e, {\n center,\n angles,\n start: client.theta(center),\n });\n }\n doRotate({ e }) {\n const data = this.getEventData(e);\n const grid = this.graph.options.rotating.grid;\n const gridSize = typeof grid === 'function'\n ? FunctionExt.call(grid, this.graph, null)\n : grid;\n const client = this.graph.snapToGrid(e.clientX, e.clientY);\n const delta = data.start - client.theta(data.center);\n if (!data.rotated) {\n data.rotated = true;\n }\n if (Math.abs(delta) > 0.001) {\n this.collection.toArray().forEach((node) => {\n const angle = Util.snapToGrid(data.angles[node.id] + delta, gridSize || 15);\n node.rotate(angle, {\n absolute: true,\n center: data.center,\n selection: this.cid,\n });\n });\n this.updateSelectionBoxes();\n }\n }\n stopRotate({ e }) {\n const data = this.getEventData(e);\n if (data.rotated) {\n data.rotated = false;\n this.collection.toArray().forEach((node) => {\n notify('node:rotated', e, this.graph.findViewByCell(node));\n });\n }\n }\n startResize({ e }) {\n const gridSize = this.graph.getGridSize();\n const cells = this.collection.toArray();\n const bbox = Cell.getCellsBBox(cells);\n const bboxes = cells.map((cell) => cell.getBBox());\n const maxWidth = bboxes.reduce((maxWidth, bbox) => {\n return bbox.width < maxWidth ? bbox.width : maxWidth;\n }, Infinity);\n const maxHeight = bboxes.reduce((maxHeight, bbox) => {\n return bbox.height < maxHeight ? bbox.height : maxHeight;\n }, Infinity);\n this.setEventData(e, {\n bbox,\n cells: this.graph.model.getSubGraph(cells),\n minWidth: (gridSize * bbox.width) / maxWidth,\n minHeight: (gridSize * bbox.height) / maxHeight,\n });\n }\n doResize({ e, dx, dy }) {\n const data = this.eventData(e);\n const bbox = data.bbox;\n const width = bbox.width;\n const height = bbox.height;\n const newWidth = Math.max(width + dx, data.minWidth);\n const newHeight = Math.max(height + dy, data.minHeight);\n if (!data.resized) {\n data.resized = true;\n }\n if (Math.abs(width - newWidth) > 0.001 ||\n Math.abs(height - newHeight) > 0.001) {\n this.graph.model.resizeCells(newWidth, newHeight, data.cells, {\n selection: this.cid,\n });\n bbox.width = newWidth;\n bbox.height = newHeight;\n this.updateSelectionBoxes();\n }\n }\n stopResize({ e }) {\n const data = this.eventData(e);\n if (data.resized) {\n data.resized = false;\n this.collection.toArray().forEach((node) => {\n notify('node:resized', e, this.graph.findViewByCell(node));\n });\n }\n }\n // #endregion\n dispose() {\n this.clean();\n this.remove();\n }\n}\n__decorate([\n View.dispose()\n], Selection.prototype, \"dispose\", null);\nObjectExt.applyMixins(Selection, Handle);\n// private\n// -------\nvar Private;\n(function (Private) {\n const base = 'widget-selection';\n Private.classNames = {\n root: base,\n inner: `${base}-inner`,\n box: `${base}-box`,\n content: `${base}-content`,\n rubberband: `${base}-rubberband`,\n selected: `${base}-selected`,\n };\n Private.documentEvents = {\n mousemove: 'adjustSelection',\n touchmove: 'adjustSelection',\n mouseup: 'onMouseUp',\n touchend: 'onMouseUp',\n touchcancel: 'onMouseUp',\n };\n Private.defaultOptions = {\n movable: true,\n following: true,\n strict: false,\n useCellGeometry: false,\n content(selection) {\n return StringExt.template('<%= length %> node<%= length > 1 ? \"s\":\"\" %> selected.')({ length: selection.length });\n },\n handles: [\n {\n name: 'remove',\n position: 'nw',\n events: {\n mousedown: 'deleteSelectedCells',\n },\n },\n {\n name: 'rotate',\n position: 'sw',\n events: {\n mousedown: 'startRotate',\n mousemove: 'doRotate',\n mouseup: 'stopRotate',\n },\n },\n {\n name: 'resize',\n position: 'se',\n events: {\n mousedown: 'startResize',\n mousemove: 'doResize',\n mouseup: 'stopResize',\n },\n },\n ],\n };\n function depthComparator(cell) {\n return cell.getAncestors().length;\n }\n Private.depthComparator = depthComparator;\n})(Private || (Private = {}));\n//# sourceMappingURL=index.js.map","import { Util } from '../../global';\nimport { NumberExt } from '../../util';\nimport { Angle, Point } from '../../geometry';\nimport { Widget } from '../common';\nimport { notify } from './util';\nexport class Transform extends Widget {\n get node() {\n return this.cell;\n }\n get containerClassName() {\n return this.prefixClassName('widget-transform');\n }\n get resizeClassName() {\n return `${this.containerClassName}-resize`;\n }\n get rotateClassName() {\n return `${this.containerClassName}-rotate`;\n }\n init(options) {\n this.options = Object.assign(Object.assign({}, Private.defaultOptions), options);\n this.render();\n this.startListening();\n }\n startListening() {\n this.delegateEvents({\n [`mousedown .${this.resizeClassName}`]: 'startResizing',\n [`touchstart .${this.resizeClassName}`]: 'startResizing',\n [`mousedown .${this.rotateClassName}`]: 'startRotating',\n [`touchstart .${this.rotateClassName}`]: 'startRotating',\n });\n this.model.on('*', this.update, this);\n this.graph.on('scale', this.update, this);\n this.graph.on('translate', this.update, this);\n this.node.on('removed', this.remove, this);\n this.model.on('reseted', this.remove, this);\n this.view.on('cell:knob:mousedown', this.onKnobMouseDown, this);\n this.view.on('cell:knob:mouseup', this.onKnobMouseUp, this);\n super.startListening();\n }\n stopListening() {\n this.undelegateEvents();\n this.model.off('*', this.update, this);\n this.graph.off('scale', this.update, this);\n this.graph.off('translate', this.update, this);\n this.node.off('removed', this.remove, this);\n this.model.off('reseted', this.remove, this);\n this.view.off('cell:knob:mousedown', this.onKnobMouseDown, this);\n this.view.off('cell:knob:mouseup', this.onKnobMouseUp, this);\n super.stopListening();\n }\n renderHandles() {\n this.container = document.createElement('div');\n this.$container = this.$(this.container);\n const $knob = this.$('
').prop('draggable', false);\n const $rotate = $knob.clone().addClass(this.rotateClassName);\n const $resizes = Private.POSITIONS.map((pos) => {\n return $knob\n .clone()\n .addClass(this.resizeClassName)\n .attr('data-position', pos);\n });\n this.empty();\n this.$container.append($resizes, $rotate);\n }\n render() {\n this.renderHandles();\n this.view.addClass(Private.NODE_CLS);\n this.$container\n .addClass(this.containerClassName)\n .toggleClass('no-orth-resize', this.options.preserveAspectRatio || !this.options.orthogonalResizing)\n .toggleClass('no-resize', !this.options.resizable)\n .toggleClass('no-rotate', !this.options.rotatable);\n if (this.options.className) {\n this.$container.addClass(this.options.className);\n }\n this.graph.container.appendChild(this.container);\n return this.update();\n }\n update() {\n const ctm = this.graph.matrix();\n const bbox = this.node.getBBox();\n bbox.x *= ctm.a;\n bbox.x += ctm.e;\n bbox.y *= ctm.d;\n bbox.y += ctm.f;\n bbox.width *= ctm.a;\n bbox.height *= ctm.d;\n const angle = Angle.normalize(this.node.getAngle());\n const transform = angle !== 0 ? `rotate(${angle}deg)` : '';\n this.$container.css({\n transform,\n width: bbox.width,\n height: bbox.height,\n left: bbox.x,\n top: bbox.y,\n });\n this.updateResizerDirections();\n return this;\n }\n remove() {\n this.view.removeClass(Private.NODE_CLS);\n return super.remove();\n }\n onKnobMouseDown() {\n this.startHandle();\n }\n onKnobMouseUp() {\n this.stopHandle();\n }\n updateResizerDirections() {\n // Update the directions on the resizer divs while the node being rotated.\n // The directions are represented by cardinal points (N,S,E,W). For example\n // the div originally pointed to north needs to be changed to point to south\n // if the node was rotated by 180 degrees.\n const angle = Angle.normalize(this.node.getAngle());\n const shift = Math.floor(angle * (Private.DIRECTIONS.length / 360));\n if (shift !== this.prevShift) {\n // Create the current directions array based on the calculated shift.\n const directions = Private.DIRECTIONS.slice(shift).concat(Private.DIRECTIONS.slice(0, shift));\n const className = (dir) => `${this.containerClassName}-cursor-${dir}`;\n this.$container\n .find(`.${this.resizeClassName}`)\n .removeClass(Private.DIRECTIONS.map((dir) => className(dir)).join(' '))\n .each((index, elem) => {\n this.$(elem).addClass(className(directions[index]));\n });\n this.prevShift = shift;\n }\n }\n getTrueDirection(dir) {\n const angle = Angle.normalize(this.node.getAngle());\n let index = Private.POSITIONS.indexOf(dir);\n index += Math.floor(angle * (Private.POSITIONS.length / 360));\n index %= Private.POSITIONS.length;\n return Private.POSITIONS[index];\n }\n toValidResizeDirection(dir) {\n return ({\n top: 'top-left',\n bottom: 'bottom-right',\n left: 'bottom-left',\n right: 'top-right',\n }[dir] || dir);\n }\n startResizing(evt) {\n evt.stopPropagation();\n this.model.startBatch('resize', { cid: this.cid });\n const dir = this.$(evt.target).attr('data-position');\n const view = this.graph.findViewByCell(this.node);\n this.prepareResizing(evt, dir);\n this.startAction(evt);\n notify('node:resize:mousedown', evt, view);\n }\n prepareResizing(evt, relativeDirection) {\n const trueDirection = this.getTrueDirection(relativeDirection);\n let rx = 0;\n let ry = 0;\n relativeDirection.split('-').forEach((direction) => {\n rx = { left: -1, right: 1 }[direction] || rx;\n ry = { top: -1, bottom: 1 }[direction] || ry;\n });\n const direction = this.toValidResizeDirection(relativeDirection);\n const selector = {\n 'top-right': 'bottomLeft',\n 'top-left': 'bottomRight',\n 'bottom-left': 'topRight',\n 'bottom-right': 'topLeft',\n }[direction];\n const angle = Angle.normalize(this.node.getAngle());\n this.setEventData(evt, {\n selector,\n direction,\n trueDirection,\n relativeDirection,\n angle,\n resizeX: rx,\n resizeY: ry,\n action: 'resizing',\n });\n }\n startRotating(evt) {\n evt.stopPropagation();\n this.model.startBatch('rotate', { cid: this.cid });\n const view = this.graph.findViewByCell(this.node);\n const center = this.node.getBBox().getCenter();\n const e = this.normalizeEvent(evt);\n const client = this.graph.snapToGrid(e.clientX, e.clientY);\n this.setEventData(evt, {\n center,\n action: 'rotating',\n angle: Angle.normalize(this.node.getAngle()),\n start: Point.create(client).theta(center),\n });\n this.startAction(evt);\n notify('node:rotate:mousedown', evt, view);\n }\n onMouseMove(evt) {\n const view = this.graph.findViewByCell(this.node);\n let data = this.getEventData(evt);\n if (data.action) {\n const e = this.normalizeEvent(evt);\n let clientX = e.clientX;\n let clientY = e.clientY;\n const scroller = this.graph.scroller.widget;\n const restrict = this.options.restrictedResizing;\n if (restrict === true || typeof restrict === 'number') {\n const factor = restrict === true ? 0 : restrict;\n const fix = scroller ? Math.max(factor, 8) : factor;\n const rect = this.graph.container.getBoundingClientRect();\n clientX = NumberExt.clamp(clientX, rect.left + fix, rect.right - fix);\n clientY = NumberExt.clamp(clientY, rect.top + fix, rect.bottom - fix);\n }\n else if (this.options.autoScrollOnResizing && scroller) {\n scroller.autoScroll(clientX, clientY);\n }\n const pos = this.graph.snapToGrid(clientX, clientY);\n const gridSize = this.graph.getGridSize();\n const node = this.node;\n const options = this.options;\n if (data.action === 'resizing') {\n data = data;\n if (!data.resized) {\n if (view) {\n view.addClass('node-resizing');\n notify('node:resize', evt, view);\n }\n data.resized = true;\n }\n const currentBBox = node.getBBox();\n const requestedSize = Point.create(pos)\n .rotate(data.angle, currentBBox.getCenter())\n .diff(currentBBox[data.selector]);\n let width = data.resizeX\n ? requestedSize.x * data.resizeX\n : currentBBox.width;\n let height = data.resizeY\n ? requestedSize.y * data.resizeY\n : currentBBox.height;\n const rawWidth = width;\n const rawHeight = height;\n width = Util.snapToGrid(width, gridSize);\n height = Util.snapToGrid(height, gridSize);\n width = Math.max(width, options.minWidth || gridSize);\n height = Math.max(height, options.minHeight || gridSize);\n width = Math.min(width, options.maxWidth || Infinity);\n height = Math.min(height, options.maxHeight || Infinity);\n if (options.preserveAspectRatio) {\n const candidateWidth = (currentBBox.width * height) / currentBBox.height;\n const candidateHeight = (currentBBox.height * width) / currentBBox.width;\n if (width < candidateWidth) {\n height = candidateHeight;\n }\n else {\n width = candidateWidth;\n }\n }\n const relativeDirection = data.relativeDirection;\n if (options.allowReverse &&\n (rawWidth <= -width || rawHeight <= -height)) {\n let reverted;\n if (relativeDirection === 'left') {\n if (rawWidth <= -width) {\n reverted = 'right';\n }\n }\n else if (relativeDirection === 'right') {\n if (rawWidth <= -width) {\n reverted = 'left';\n }\n }\n else if (relativeDirection === 'top') {\n if (rawHeight <= -height) {\n reverted = 'bottom';\n }\n }\n else if (relativeDirection === 'bottom') {\n if (rawHeight <= -height) {\n reverted = 'top';\n }\n }\n else if (relativeDirection === 'top-left') {\n if (rawWidth <= -width && rawHeight <= -height) {\n reverted = 'bottom-right';\n }\n else if (rawWidth <= -width) {\n reverted = 'top-right';\n }\n else if (rawHeight <= -height) {\n reverted = 'bottom-left';\n }\n }\n else if (relativeDirection === 'top-right') {\n if (rawWidth <= -width && rawHeight <= -height) {\n reverted = 'bottom-left';\n }\n else if (rawWidth <= -width) {\n reverted = 'top-left';\n }\n else if (rawHeight <= -height) {\n reverted = 'bottom-right';\n }\n }\n else if (relativeDirection === 'bottom-left') {\n if (rawWidth <= -width && rawHeight <= -height) {\n reverted = 'top-right';\n }\n else if (rawWidth <= -width) {\n reverted = 'bottom-right';\n }\n else if (rawHeight <= -height) {\n reverted = 'top-left';\n }\n }\n else if (relativeDirection === 'bottom-right') {\n if (rawWidth <= -width && rawHeight <= -height) {\n reverted = 'top-left';\n }\n else if (rawWidth <= -width) {\n reverted = 'bottom-left';\n }\n else if (rawHeight <= -height) {\n reverted = 'top-right';\n }\n }\n const revertedDir = reverted;\n this.stopHandle();\n const $handle = this.$container.find(`.${this.resizeClassName}[data-position=\"${revertedDir}\"]`);\n this.startHandle($handle[0]);\n this.prepareResizing(evt, revertedDir);\n this.onMouseMove(evt);\n }\n if (currentBBox.width !== width || currentBBox.height !== height) {\n const resizeOptions = {\n ui: true,\n direction: data.direction,\n relativeDirection: data.relativeDirection,\n trueDirection: data.trueDirection,\n minWidth: options.minWidth,\n minHeight: options.minHeight,\n maxWidth: options.maxWidth,\n maxHeight: options.maxHeight,\n preserveAspectRatio: options.preserveAspectRatio === true,\n };\n node.resize(width, height, resizeOptions);\n notify('node:resizing', evt, view);\n }\n notify('node:resize:mousemove', evt, view);\n }\n else if (data.action === 'rotating') {\n data = data;\n if (!data.rotated) {\n if (view) {\n view.addClass('node-rotating');\n notify('node:rotate', evt, view);\n }\n data.rotated = true;\n }\n const currentAngle = node.getAngle();\n const theta = data.start - Point.create(pos).theta(data.center);\n let target = data.angle + theta;\n if (options.rotateGrid) {\n target = Util.snapToGrid(target, options.rotateGrid);\n }\n if (currentAngle !== target) {\n node.rotate(target, { absolute: true });\n notify('node:rotating', evt, view);\n }\n notify('node:rotate:mousemove', evt, view);\n }\n }\n }\n onMouseUp(evt) {\n const view = this.graph.findViewByCell(this.node);\n const data = this.getEventData(evt);\n if (data.action) {\n this.stopAction(evt);\n this.model.stopBatch(data.action === 'resizing' ? 'resize' : 'rotate', {\n cid: this.cid,\n });\n if (data.action === 'resizing') {\n notify('node:resize:mouseup', evt, view);\n }\n else if (data.action === 'rotating') {\n notify('node:rotate:mouseup', evt, view);\n }\n }\n }\n startHandle(handle) {\n this.handle = handle || null;\n this.$container.addClass(`${this.containerClassName}-active`);\n if (handle) {\n this.$(handle).addClass(`${this.containerClassName}-active-handle`);\n const pos = handle.getAttribute('data-position');\n if (pos) {\n const dir = Private.DIRECTIONS[Private.POSITIONS.indexOf(pos)];\n this.$container.addClass(`${this.containerClassName}-cursor-${dir}`);\n }\n }\n }\n stopHandle() {\n this.$container.removeClass(`${this.containerClassName}-active`);\n if (this.handle) {\n this.$(this.handle).removeClass(`${this.containerClassName}-active-handle`);\n const pos = this.handle.getAttribute('data-position');\n if (pos) {\n const dir = Private.DIRECTIONS[Private.POSITIONS.indexOf(pos)];\n this.$container.removeClass(`${this.containerClassName}-cursor-${dir}`);\n }\n this.handle = null;\n }\n }\n startAction(evt) {\n this.startHandle(evt.target);\n this.graph.view.undelegateEvents();\n this.delegateDocumentEvents(Private.documentEvents, evt.data);\n }\n stopAction(evt) {\n this.stopHandle();\n this.undelegateDocumentEvents();\n this.graph.view.delegateEvents();\n const view = this.graph.findViewByCell(this.node);\n const data = this.getEventData(evt);\n if (view) {\n view.removeClass(`node-${data.action}`);\n if (data.action === 'resizing' && data.resized) {\n notify('node:resized', evt, view);\n }\n else if (data.action === 'rotating' && data.rotated) {\n notify('node:rotated', evt, view);\n }\n }\n }\n}\nvar Private;\n(function (Private) {\n Private.NODE_CLS = 'has-widget-transform';\n Private.DIRECTIONS = ['nw', 'n', 'ne', 'e', 'se', 's', 'sw', 'w'];\n Private.POSITIONS = [\n 'top-left',\n 'top',\n 'top-right',\n 'right',\n 'bottom-right',\n 'bottom',\n 'bottom-left',\n 'left',\n ];\n Private.documentEvents = {\n mousemove: 'onMouseMove',\n touchmove: 'onMouseMove',\n mouseup: 'onMouseUp',\n touchend: 'onMouseUp',\n };\n Private.defaultOptions = {\n minWidth: 0,\n minHeight: 0,\n maxWidth: Infinity,\n maxHeight: Infinity,\n rotateGrid: 15,\n rotatable: true,\n preserveAspectRatio: false,\n orthogonalResizing: true,\n restrictedResizing: false,\n autoScrollOnResizing: true,\n allowReverse: true,\n };\n})(Private || (Private = {}));\n//# sourceMappingURL=index.js.map","var __rest = (this && this.__rest) || function (s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n t[p[i]] = s[p[i]];\n }\n return t;\n};\nimport { Util } from '../global';\nimport { ObjectExt } from '../util';\nimport { Edge as StandardEdge } from '../shape/standard/edge';\nexport var Options;\n(function (Options) {\n function parseOptionGroup(graph, arg, options) {\n const result = {};\n Object.keys(options || {}).forEach((key) => {\n const val = options[key];\n result[key] = typeof val === 'function' ? val.call(graph, arg) : val;\n });\n return result;\n }\n Options.parseOptionGroup = parseOptionGroup;\n})(Options || (Options = {}));\n(function (Options) {\n function get(options) {\n const { grid, panning, selecting, embedding, snapline, resizing, rotating, knob, clipboard, history, scroller, minimap, keyboard, mousewheel } = options, others = __rest(options\n // size\n // ----\n , [\"grid\", \"panning\", \"selecting\", \"embedding\", \"snapline\", \"resizing\", \"rotating\", \"knob\", \"clipboard\", \"history\", \"scroller\", \"minimap\", \"keyboard\", \"mousewheel\"]);\n // size\n // ----\n const container = options.container;\n if (container != null) {\n if (others.width == null) {\n others.width = container.clientWidth;\n }\n if (others.height == null) {\n others.height = container.clientHeight;\n }\n }\n else {\n throw new Error(`Ensure the container of the graph is specified and valid`);\n }\n const result = ObjectExt.merge({}, Options.defaults, others);\n // grid\n // ----\n const defaultGrid = { size: 10, visible: false };\n if (typeof grid === 'number') {\n result.grid = { size: grid, visible: false };\n }\n else if (typeof grid === 'boolean') {\n result.grid = Object.assign(Object.assign({}, defaultGrid), { visible: grid });\n }\n else {\n result.grid = Object.assign(Object.assign({}, defaultGrid), grid);\n }\n // booleas\n // -------\n const booleas = [\n 'panning',\n 'selecting',\n 'embedding',\n 'snapline',\n 'resizing',\n 'rotating',\n 'knob',\n 'clipboard',\n 'history',\n 'scroller',\n 'minimap',\n 'keyboard',\n 'mousewheel',\n ];\n booleas.forEach((key) => {\n const val = options[key];\n if (typeof val === 'boolean') {\n result[key].enabled = val;\n }\n else {\n result[key] = Object.assign(Object.assign({}, result[key]), val);\n }\n });\n // background\n // ----------\n if (result.background &&\n result.scroller.enabled &&\n result.scroller.background == null) {\n result.scroller.background = result.background;\n delete result.background;\n }\n return result;\n }\n Options.get = get;\n})(Options || (Options = {}));\n(function (Options) {\n Options.defaults = {\n x: 0,\n y: 0,\n grid: {\n size: 10,\n visible: false,\n },\n scaling: {\n min: 0.01,\n max: 16,\n },\n background: false,\n highlighting: {\n default: {\n name: 'stroke',\n args: {\n padding: 3,\n },\n },\n nodeAvailable: {\n name: 'className',\n args: {\n className: Util.prefix('available-node'),\n },\n },\n magnetAvailable: {\n name: 'className',\n args: {\n className: Util.prefix('available-magnet'),\n },\n },\n },\n connecting: {\n snap: false,\n multi: true,\n // TODO: Unannotation the next line when the `multi` option was removed in the next major version.\n // allowMulti: true,\n dangling: true,\n // TODO: Unannotation the next line when the `dangling` option was removed in the next major version.\n // allowBlank: true,\n allowLoop: true,\n allowNode: true,\n allowEdge: false,\n allowPort: true,\n highlight: false,\n anchor: 'center',\n edgeAnchor: 'ratio',\n connectionPoint: 'boundary',\n strategy: null,\n router: 'normal',\n connector: 'normal',\n validateConnection({ type, sourceView, targetView }) {\n const view = type === 'target' ? targetView : sourceView;\n return view != null;\n },\n createEdge() {\n return new StandardEdge();\n },\n },\n transforming: {\n clearAll: true,\n clearOnBlankMouseDown: true,\n },\n resizing: {\n enabled: false,\n minWidth: 0,\n minHeight: 0,\n maxWidth: Number.MAX_SAFE_INTEGER,\n maxHeight: Number.MAX_SAFE_INTEGER,\n orthogonal: true,\n restricted: false,\n autoScroll: true,\n preserveAspectRatio: false,\n allowReverse: true,\n },\n rotating: {\n enabled: false,\n grid: 15,\n },\n translating: {\n restrict: false,\n },\n knob: {\n enabled: false,\n clearAll: true,\n clearOnBlankMouseDown: true,\n },\n embedding: {\n enabled: false,\n findParent: 'bbox',\n frontOnly: true,\n validate: () => true,\n },\n selecting: {\n enabled: false,\n rubberband: false,\n rubberNode: true,\n rubberEdge: false,\n pointerEvents: 'auto',\n multiple: true,\n movable: true,\n strict: false,\n useCellGeometry: false,\n selectCellOnMoved: false,\n selectNodeOnMoved: false,\n selectEdgeOnMoved: false,\n content: null,\n handles: null,\n },\n panning: {\n enabled: false,\n eventTypes: ['leftMouseDown'],\n },\n snapline: {\n enabled: false,\n },\n clipboard: {\n enabled: false,\n },\n history: {\n enabled: false,\n },\n scroller: {\n enabled: false,\n },\n keyboard: {\n enabled: false,\n },\n mousewheel: {\n enabled: false,\n factor: 1.2,\n zoomAtMousePosition: true,\n },\n async: false,\n frozen: false,\n sorting: 'exact',\n moveThreshold: 0,\n clickThreshold: 0,\n magnetThreshold: 0,\n preventDefaultDblClick: true,\n preventDefaultMouseDown: false,\n preventDefaultContextMenu: true,\n preventDefaultBlankAction: true,\n interacting: {\n edgeLabelMovable: false,\n },\n guard: () => false,\n };\n})(Options || (Options = {}));\n//# sourceMappingURL=options.js.map","var __rest = (this && this.__rest) || function (s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n t[p[i]] = s[p[i]];\n }\n return t;\n};\nimport { StringExt, Dom, Vector } from '../util';\nimport { Filter } from '../registry';\nimport { Markup } from '../view';\nimport { Base } from './base';\nexport class DefsManager extends Base {\n get cid() {\n return this.graph.view.cid;\n }\n get svg() {\n return this.view.svg;\n }\n get defs() {\n return this.view.defs;\n }\n isDefined(id) {\n return this.svg.getElementById(id) != null;\n }\n filter(options) {\n let filterId = options.id;\n const name = options.name;\n if (!filterId) {\n filterId = `filter-${name}-${this.cid}-${StringExt.hashcode(JSON.stringify(options))}`;\n }\n if (!this.isDefined(filterId)) {\n const fn = Filter.registry.get(name);\n if (fn == null) {\n return Filter.registry.onNotFound(name);\n }\n const markup = fn(options.args || {});\n // Set the filter area to be 3x the bounding box of the cell\n // and center the filter around the cell.\n const attrs = Object.assign(Object.assign({ x: -1, y: -1, width: 3, height: 3, filterUnits: 'objectBoundingBox' }, options.attrs), { id: filterId });\n Vector.create(Markup.sanitize(markup), attrs).appendTo(this.defs);\n }\n return filterId;\n }\n gradient(options) {\n let id = options.id;\n const type = options.type;\n if (!id) {\n id = `gradient-${type}-${this.cid}-${StringExt.hashcode(JSON.stringify(options))}`;\n }\n if (!this.isDefined(id)) {\n const stops = options.stops;\n const arr = stops.map((stop) => {\n const opacity = stop.opacity != null && Number.isFinite(stop.opacity)\n ? stop.opacity\n : 1;\n return ``;\n });\n const markup = `<${type}>${arr.join('')}`;\n const attrs = Object.assign({ id }, options.attrs);\n Vector.create(markup, attrs).appendTo(this.defs);\n }\n return id;\n }\n marker(options) {\n const { id, refX, refY, markerUnits, markerOrient, tagName, children } = options, attrs = __rest(options, [\"id\", \"refX\", \"refY\", \"markerUnits\", \"markerOrient\", \"tagName\", \"children\"]);\n let markerId = id;\n if (!markerId) {\n markerId = `marker-${this.cid}-${StringExt.hashcode(JSON.stringify(options))}`;\n }\n if (!this.isDefined(markerId)) {\n if (tagName !== 'path') {\n // remove unnecessary d attribute inherit from standard edge.\n delete attrs.d;\n }\n const pathMarker = Vector.create('marker', {\n refX,\n refY,\n id: markerId,\n overflow: 'visible',\n orient: markerOrient != null ? markerOrient : 'auto',\n markerUnits: markerUnits || 'userSpaceOnUse',\n }, children\n ? children.map((_a) => {\n var { tagName } = _a, other = __rest(_a, [\"tagName\"]);\n return Vector.create(`${tagName}` || 'path', Dom.kebablizeAttrs(Object.assign(Object.assign({}, attrs), other)));\n })\n : [Vector.create(tagName || 'path', Dom.kebablizeAttrs(attrs))]);\n this.defs.appendChild(pathMarker.node);\n }\n return markerId;\n }\n remove(id) {\n const elem = this.svg.getElementById(id);\n if (elem && elem.parentNode) {\n elem.parentNode.removeChild(elem);\n }\n }\n}\n//# sourceMappingURL=defs.js.map","var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __rest = (this && this.__rest) || function (s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n t[p[i]] = s[p[i]];\n }\n return t;\n};\nimport * as Registry from '../registry';\nimport { Dom, Vector } from '../util';\nimport { Base } from './base';\nexport class GridManager extends Base {\n get elem() {\n return this.view.grid;\n }\n get grid() {\n return this.options.grid;\n }\n init() {\n this.startListening();\n this.draw(this.grid);\n }\n startListening() {\n this.graph.on('scale', this.update, this);\n this.graph.on('translate', this.update, this);\n }\n stopListening() {\n this.graph.off('scale', this.update, this);\n this.graph.off('translate', this.update, this);\n }\n setVisible(visible) {\n if (this.grid.visible !== visible) {\n this.grid.visible = visible;\n this.update();\n }\n }\n getGridSize() {\n return this.grid.size;\n }\n setGridSize(size) {\n this.grid.size = Math.max(size, 1);\n this.update();\n }\n show() {\n this.setVisible(true);\n this.update();\n }\n hide() {\n this.setVisible(false);\n this.update();\n }\n clear() {\n this.elem.style.backgroundImage = '';\n }\n draw(options) {\n this.clear();\n this.instance = null;\n Object.assign(this.grid, options);\n this.patterns = this.resolveGrid(options);\n this.update();\n }\n update(options = {}) {\n const gridSize = this.grid.size;\n if (gridSize <= 1 || !this.grid.visible) {\n return this.clear();\n }\n const ctm = this.graph.matrix();\n const grid = this.getInstance();\n const items = Array.isArray(options) ? options : [options];\n this.patterns.forEach((settings, index) => {\n const id = `pattern_${index}`;\n const sx = ctm.a || 1;\n const sy = ctm.d || 1;\n const { update, markup } = settings, others = __rest(settings, [\"update\", \"markup\"]);\n const options = Object.assign(Object.assign(Object.assign({}, others), items[index]), { sx,\n sy, ox: ctm.e || 0, oy: ctm.f || 0, width: gridSize * sx, height: gridSize * sy });\n if (!grid.has(id)) {\n grid.add(id, Vector.create('pattern', { id, patternUnits: 'userSpaceOnUse' }, Vector.createVectors(markup)).node);\n }\n const patternElem = grid.get(id);\n if (typeof update === 'function') {\n update(patternElem.childNodes[0], options);\n }\n let x = options.ox % options.width;\n if (x < 0) {\n x += options.width;\n }\n let y = options.oy % options.height;\n if (y < 0) {\n y += options.height;\n }\n Dom.attr(patternElem, {\n x,\n y,\n width: options.width,\n height: options.height,\n });\n });\n const base64 = new XMLSerializer().serializeToString(grid.root);\n const url = `url(data:image/svg+xml;base64,${btoa(base64)})`;\n this.elem.style.backgroundImage = url;\n }\n getInstance() {\n if (!this.instance) {\n this.instance = new Registry.Grid();\n }\n return this.instance;\n }\n resolveGrid(options) {\n if (!options) {\n return [];\n }\n const type = options.type;\n if (type == null) {\n return [\n Object.assign(Object.assign({}, Registry.Grid.presets.dot), options.args),\n ];\n }\n const items = Registry.Grid.registry.get(type);\n if (items) {\n let args = options.args || [];\n if (!Array.isArray(args)) {\n args = [args];\n }\n return Array.isArray(items)\n ? items.map((item, index) => (Object.assign(Object.assign({}, item), args[index])))\n : [Object.assign(Object.assign({}, items), args[0])];\n }\n return Registry.Grid.registry.onNotFound(type);\n }\n dispose() {\n this.stopListening();\n this.clear();\n }\n}\n__decorate([\n Base.dispose()\n], GridManager.prototype, \"dispose\", null);\n//# sourceMappingURL=grid.js.map","import { Base } from './base';\nimport { Dom } from '../util';\nimport { Point, Rectangle } from '../geometry';\nexport class CoordManager extends Base {\n getClientMatrix() {\n return Dom.createSVGMatrix(this.view.stage.getScreenCTM());\n }\n /**\n * Returns coordinates of the graph viewport, relative to the window.\n */\n getClientOffset() {\n // see: https://developer.mozilla.org/en-US/docs/Web/API/Element/getBoundingClientRect\n const rect = this.view.svg.getBoundingClientRect();\n return new Point(rect.left, rect.top);\n }\n /**\n * Returns coordinates of the graph viewport, relative to the document.\n */\n getPageOffset() {\n // see: https://developer.mozilla.org/en-US/docs/Web/API/Element/getBoundingClientRect\n return this.getClientOffset().translate(window.scrollX, window.scrollY);\n }\n snapToGrid(x, y) {\n const p = typeof x === 'number'\n ? this.clientToLocalPoint(x, y)\n : this.clientToLocalPoint(x.x, x.y);\n return p.snapToGrid(this.graph.getGridSize());\n }\n localToGraphPoint(x, y) {\n const localPoint = Point.create(x, y);\n return Dom.transformPoint(localPoint, this.graph.matrix());\n }\n localToClientPoint(x, y) {\n const localPoint = Point.create(x, y);\n return Dom.transformPoint(localPoint, this.getClientMatrix());\n }\n localToPagePoint(x, y) {\n const p = typeof x === 'number'\n ? this.localToGraphPoint(x, y)\n : this.localToGraphPoint(x);\n return p.translate(this.getPageOffset());\n }\n localToGraphRect(x, y, width, height) {\n const localRect = Rectangle.create(x, y, width, height);\n return Dom.transformRectangle(localRect, this.graph.matrix());\n }\n localToClientRect(x, y, width, height) {\n const localRect = Rectangle.create(x, y, width, height);\n return Dom.transformRectangle(localRect, this.getClientMatrix());\n }\n localToPageRect(x, y, width, height) {\n const rect = typeof x === 'number'\n ? this.localToGraphRect(x, y, width, height)\n : this.localToGraphRect(x);\n return rect.translate(this.getPageOffset());\n }\n graphToLocalPoint(x, y) {\n const graphPoint = Point.create(x, y);\n return Dom.transformPoint(graphPoint, this.graph.matrix().inverse());\n }\n clientToLocalPoint(x, y) {\n const clientPoint = Point.create(x, y);\n return Dom.transformPoint(clientPoint, this.getClientMatrix().inverse());\n }\n clientToGraphPoint(x, y) {\n const clientPoint = Point.create(x, y);\n return Dom.transformPoint(clientPoint, this.graph.matrix().multiply(this.getClientMatrix().inverse()));\n }\n pageToLocalPoint(x, y) {\n const pagePoint = Point.create(x, y);\n const graphPoint = pagePoint.diff(this.getPageOffset());\n return this.graphToLocalPoint(graphPoint);\n }\n graphToLocalRect(x, y, width, height) {\n const graphRect = Rectangle.create(x, y, width, height);\n return Dom.transformRectangle(graphRect, this.graph.matrix().inverse());\n }\n clientToLocalRect(x, y, width, height) {\n const clientRect = Rectangle.create(x, y, width, height);\n return Dom.transformRectangle(clientRect, this.getClientMatrix().inverse());\n }\n clientToGraphRect(x, y, width, height) {\n const clientRect = Rectangle.create(x, y, width, height);\n return Dom.transformRectangle(clientRect, this.graph.matrix().multiply(this.getClientMatrix().inverse()));\n }\n pageToLocalRect(x, y, width, height) {\n const graphRect = Rectangle.create(x, y, width, height);\n const pageOffset = this.getPageOffset();\n graphRect.x -= pageOffset.x;\n graphRect.y -= pageOffset.y;\n return this.graphToLocalRect(graphRect);\n }\n}\n//# sourceMappingURL=coord.js.map","var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Base } from './base';\nexport class SnaplineManager extends Base {\n constructor() {\n super(...arguments);\n this.widget = this.graph.hook.createSnapline();\n }\n dispose() {\n this.widget.dispose();\n }\n}\n__decorate([\n Base.dispose()\n], SnaplineManager.prototype, \"dispose\", null);\n//# sourceMappingURL=snapline.js.map","// eslint-disable-next-line\nexport var ModifierKey;\n(function (ModifierKey) {\n function parse(modifiers) {\n const or = [];\n const and = [];\n if (Array.isArray(modifiers)) {\n or.push(...modifiers);\n }\n else {\n modifiers.split('|').forEach((item) => {\n if (item.indexOf('&') === -1) {\n or.push(item);\n }\n else {\n and.push(...item.split('&'));\n }\n });\n }\n return { or, and };\n }\n ModifierKey.parse = parse;\n function equals(modifiers1, modifiers2) {\n if (modifiers1 != null && modifiers2 != null) {\n const m1 = parse(modifiers1);\n const m2 = parse(modifiers2);\n const or1 = m1.or.sort();\n const or2 = m2.or.sort();\n const and1 = m1.and.sort();\n const and2 = m2.and.sort();\n const equal = (a1, a2) => {\n return (a1.length === a2.length &&\n (a1.length === 0 || a1.every((a, i) => a === a2[i])));\n };\n return equal(or1, or2) && equal(and1, and2);\n }\n if (modifiers1 == null && modifiers2 == null) {\n return true;\n }\n return false;\n }\n ModifierKey.equals = equals;\n function isMatch(e, modifiers, strict) {\n if (modifiers == null ||\n (Array.isArray(modifiers) && modifiers.length === 0)) {\n return strict\n ? e.altKey !== true &&\n e.ctrlKey !== true &&\n e.metaKey !== true &&\n e.shiftKey !== true\n : true;\n }\n const { or, and } = parse(modifiers);\n const match = (key) => {\n const name = `${key.toLowerCase()}Key`;\n return e[name] === true;\n };\n return or.some((key) => match(key)) && and.every((key) => match(key));\n }\n ModifierKey.isMatch = isMatch;\n})(ModifierKey || (ModifierKey = {}));\n//# sourceMappingURL=modifier.js.map","var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Dom } from '../util';\nimport { ModifierKey } from '../types';\nimport { Base } from './base';\nexport class ScrollerManager extends Base {\n get widgetOptions() {\n return this.options.scroller;\n }\n get pannable() {\n if (this.widgetOptions) {\n if (typeof this.widgetOptions.pannable === 'object') {\n return this.widgetOptions.pannable.enabled;\n }\n return !!this.widgetOptions.pannable;\n }\n return false;\n }\n init() {\n this.widget = this.graph.hook.createScroller();\n this.startListening();\n this.updateClassName();\n if (this.widget) {\n this.widget.center();\n }\n }\n startListening() {\n let eventTypes = [];\n const pannable = this.widgetOptions.pannable;\n if (typeof pannable === 'object') {\n eventTypes = pannable.eventTypes || [];\n }\n else {\n eventTypes = ['leftMouseDown'];\n }\n if (eventTypes.includes('leftMouseDown')) {\n this.graph.on('blank:mousedown', this.preparePanning, this);\n this.graph.on('node:unhandled:mousedown', this.preparePanning, this);\n this.graph.on('edge:unhandled:mousedown', this.preparePanning, this);\n }\n if (eventTypes.includes('rightMouseDown')) {\n this.onRightMouseDown = this.onRightMouseDown.bind(this);\n this.view.$(this.widget.container).on('mousedown', this.onRightMouseDown);\n }\n }\n stopListening() {\n let eventTypes = [];\n const pannable = this.widgetOptions.pannable;\n if (typeof pannable === 'object') {\n eventTypes = pannable.eventTypes || [];\n }\n else {\n eventTypes = ['leftMouseDown'];\n }\n if (eventTypes.includes('leftMouseDown')) {\n this.graph.off('blank:mousedown', this.preparePanning, this);\n this.graph.off('node:unhandled:mousedown', this.preparePanning, this);\n this.graph.off('edge:unhandled:mousedown', this.preparePanning, this);\n }\n if (eventTypes.includes('rightMouseDown')) {\n this.view\n .$(this.widget.container)\n .off('mousedown', this.onRightMouseDown);\n }\n }\n onRightMouseDown(e) {\n if (e.button === 2 && this.allowPanning(e, true) && this.widget) {\n this.updateClassName(true);\n this.widget.startPanning(e);\n this.widget.once('pan:stop', () => this.updateClassName(false));\n }\n }\n preparePanning({ e }) {\n if (this.widget) {\n if (this.allowPanning(e, true) ||\n (this.allowPanning(e) && !this.graph.selection.allowRubberband(e, true))) {\n this.updateClassName(true);\n this.widget.startPanning(e);\n this.widget.once('pan:stop', () => this.updateClassName(false));\n }\n }\n }\n allowPanning(e, strict) {\n return (this.widget &&\n this.pannable &&\n ModifierKey.isMatch(e, this.widgetOptions.modifiers, strict) &&\n this.graph.hook.allowPanning(e));\n }\n updateClassName(isPanning) {\n if (this.widget == null) {\n return;\n }\n const container = this.widget.container;\n const pannable = this.view.prefixClassName('graph-scroller-pannable');\n if (this.pannable) {\n Dom.addClass(container, pannable);\n container.dataset.panning = (!!isPanning).toString(); // Use dataset to control scroller panning style to avoid reflow caused by changing classList\n }\n else {\n Dom.removeClass(container, pannable);\n }\n }\n enablePanning() {\n if (!this.pannable) {\n this.widgetOptions.pannable = true;\n this.updateClassName();\n // if (\n // ModifierKey.equals(\n // this.graph.options.scroller.modifiers,\n // this.graph.options.selecting.modifiers,\n // )\n // ) {\n // this.graph.selection.disableRubberband()\n // }\n }\n }\n disablePanning() {\n if (this.pannable) {\n this.widgetOptions.pannable = false;\n this.updateClassName();\n }\n }\n lock() {\n if (this.widget) {\n this.widget.lock();\n }\n }\n unlock() {\n if (this.widget) {\n this.widget.unlock();\n }\n }\n update() {\n if (this.widget) {\n this.widget.update();\n }\n }\n enableAutoResize() {\n if (this.widget) {\n this.widget.enableAutoResize();\n }\n }\n disableAutoResize() {\n if (this.widget) {\n this.widget.disableAutoResize();\n }\n }\n resize(width, height) {\n if (this.widget) {\n this.widget.resize(width, height);\n }\n }\n dispose() {\n if (this.widget) {\n this.widget.dispose();\n }\n this.stopListening();\n }\n}\n__decorate([\n Base.dispose()\n], ScrollerManager.prototype, \"dispose\", null);\n//# sourceMappingURL=scroller.js.map","var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __rest = (this && this.__rest) || function (s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n t[p[i]] = s[p[i]];\n }\n return t;\n};\nimport { Base } from './base';\nexport class ClipboardManager extends Base {\n get commonOptions() {\n const _a = this.instanceOptions, { enabled } = _a, others = __rest(_a, [\"enabled\"]);\n return others;\n }\n get instanceOptions() {\n return this.options.clipboard;\n }\n get cells() {\n return this.widget.cells;\n }\n get disabled() {\n return this.instanceOptions.enabled !== true;\n }\n init() {\n this.widget = this.graph.hook.createClipboard();\n this.widget.deserialize(this.instanceOptions);\n }\n enable() {\n if (this.disabled) {\n this.instanceOptions.enabled = true;\n }\n }\n disable() {\n if (!this.disabled) {\n this.instanceOptions.enabled = false;\n }\n }\n copy(cells, options = {}) {\n if (!this.disabled) {\n this.widget.copy(cells, this.graph, Object.assign(Object.assign({}, this.commonOptions), options));\n }\n }\n cut(cells, options = {}) {\n if (!this.disabled) {\n this.widget.cut(cells, this.graph, Object.assign(Object.assign({}, this.commonOptions), options));\n }\n }\n paste(options = {}, graph = this.graph) {\n if (!this.disabled) {\n return this.widget.paste(graph, Object.assign(Object.assign({}, this.commonOptions), options));\n }\n return [];\n }\n clean(force) {\n if (!this.disabled || force) {\n this.widget.clean();\n }\n }\n isEmpty() {\n return this.widget.isEmpty();\n }\n dispose() {\n this.clean(true);\n }\n}\n__decorate([\n Base.dispose()\n], ClipboardManager.prototype, \"dispose\", null);\n//# sourceMappingURL=clipboard.js.map","var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Dom } from '../util';\nimport { Highlighter } from '../registry';\nimport { Base } from './base';\nexport class HighlightManager extends Base {\n constructor() {\n super(...arguments);\n this.highlights = {};\n }\n init() {\n this.startListening();\n }\n startListening() {\n this.graph.on('cell:highlight', this.onCellHighlight, this);\n this.graph.on('cell:unhighlight', this.onCellUnhighlight, this);\n }\n stopListening() {\n this.graph.off('cell:highlight', this.onCellHighlight, this);\n this.graph.off('cell:unhighlight', this.onCellUnhighlight, this);\n }\n onCellHighlight({ view: cellView, magnet, options = {}, }) {\n const resolved = this.resolveHighlighter(options);\n if (!resolved) {\n return;\n }\n const key = this.getHighlighterId(magnet, resolved);\n if (!this.highlights[key]) {\n const highlighter = resolved.highlighter;\n highlighter.highlight(cellView, magnet, Object.assign({}, resolved.args));\n this.highlights[key] = {\n cellView,\n magnet,\n highlighter,\n args: resolved.args,\n };\n }\n }\n onCellUnhighlight({ magnet, options = {}, }) {\n const resolved = this.resolveHighlighter(options);\n if (!resolved) {\n return;\n }\n const id = this.getHighlighterId(magnet, resolved);\n this.unhighlight(id);\n }\n resolveHighlighter(options) {\n const graphOptions = this.options;\n let highlighterDef = options.highlighter;\n if (highlighterDef == null) {\n // check for built-in types\n const type = options.type;\n highlighterDef =\n (type && graphOptions.highlighting[type]) ||\n graphOptions.highlighting.default;\n }\n if (highlighterDef == null) {\n return null;\n }\n const def = typeof highlighterDef === 'string'\n ? {\n name: highlighterDef,\n }\n : highlighterDef;\n const name = def.name;\n const highlighter = Highlighter.registry.get(name);\n if (highlighter == null) {\n return Highlighter.registry.onNotFound(name);\n }\n Highlighter.check(name, highlighter);\n return {\n name,\n highlighter,\n args: def.args || {},\n };\n }\n getHighlighterId(magnet, options) {\n Dom.ensureId(magnet);\n return options.name + magnet.id + JSON.stringify(options.args);\n }\n unhighlight(id) {\n const highlight = this.highlights[id];\n if (highlight) {\n highlight.highlighter.unhighlight(highlight.cellView, highlight.magnet, highlight.args);\n delete this.highlights[id];\n }\n }\n dispose() {\n Object.keys(this.highlights).forEach((id) => this.unhighlight(id));\n this.stopListening();\n }\n}\n__decorate([\n HighlightManager.dispose()\n], HighlightManager.prototype, \"dispose\", null);\n//# sourceMappingURL=highlight.js.map","var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Dom, NumberExt } from '../util';\nimport { Point, Rectangle } from '../geometry';\nimport { Base } from './base';\nexport class TransformManager extends Base {\n constructor() {\n super(...arguments);\n this.widgets = new Map();\n }\n get container() {\n return this.graph.view.container;\n }\n get viewport() {\n return this.graph.view.viewport;\n }\n get isSelectionEnabled() {\n return this.options.selecting.enabled === true;\n }\n init() {\n this.startListening();\n this.resize();\n }\n startListening() {\n this.graph.on('node:mouseup', this.onNodeMouseUp, this);\n this.graph.on('node:selected', this.onNodeSelected, this);\n this.graph.on('node:unselected', this.onNodeUnSelected, this);\n }\n stopListening() {\n this.graph.off('node:mouseup', this.onNodeMouseUp, this);\n this.graph.off('node:selected', this.onNodeSelected, this);\n this.graph.off('node:unselected', this.onNodeUnSelected, this);\n }\n onNodeMouseUp({ node }) {\n if (!this.isSelectionEnabled) {\n const widget = this.graph.hook.createTransform(node, { clearAll: true });\n if (widget) {\n this.widgets.set(node, widget);\n }\n }\n }\n onNodeSelected({ node }) {\n if (this.isSelectionEnabled) {\n const widget = this.graph.hook.createTransform(node, { clearAll: false });\n if (widget) {\n this.widgets.set(node, widget);\n }\n }\n }\n onNodeUnSelected({ node }) {\n if (this.isSelectionEnabled) {\n const widget = this.widgets.get(node);\n if (widget) {\n widget.dispose();\n }\n this.widgets.delete(node);\n }\n }\n /**\n * Returns the current transformation matrix of the graph.\n */\n getMatrix() {\n const transform = this.viewport.getAttribute('transform');\n if (transform !== this.viewportTransformString) {\n // `getCTM`: top-left relative to the SVG element\n // `getScreenCTM`: top-left relative to the document\n this.viewportMatrix = this.viewport.getCTM();\n this.viewportTransformString = transform;\n }\n // Clone the cached current transformation matrix.\n // If no matrix previously stored the identity matrix is returned.\n return Dom.createSVGMatrix(this.viewportMatrix);\n }\n /**\n * Sets new transformation with the given `matrix`\n */\n setMatrix(matrix) {\n const ctm = Dom.createSVGMatrix(matrix);\n const transform = Dom.matrixToTransformString(ctm);\n this.viewport.setAttribute('transform', transform);\n this.viewportMatrix = ctm;\n this.viewportTransformString = transform;\n }\n resize(width, height) {\n let w = width === undefined ? this.options.width : width;\n let h = height === undefined ? this.options.height : height;\n this.options.width = w;\n this.options.height = h;\n if (typeof w === 'number') {\n w = Math.round(w);\n }\n if (typeof h === 'number') {\n h = Math.round(h);\n }\n this.container.style.width = w == null ? '' : `${w}px`;\n this.container.style.height = h == null ? '' : `${h}px`;\n const size = this.getComputedSize();\n this.graph.trigger('resize', Object.assign({}, size));\n return this;\n }\n getComputedSize() {\n let w = this.options.width;\n let h = this.options.height;\n if (!NumberExt.isNumber(w)) {\n w = this.container.clientWidth;\n }\n if (!NumberExt.isNumber(h)) {\n h = this.container.clientHeight;\n }\n return { width: w, height: h };\n }\n getScale() {\n return Dom.matrixToScale(this.getMatrix());\n }\n scale(sx, sy = sx, ox = 0, oy = 0, options = {}) {\n sx = this.clampScale(sx); // eslint-disable-line\n sy = this.clampScale(sy); // eslint-disable-line\n if (ox || oy) {\n const ts = this.getTranslation();\n const tx = ts.tx - ox * (sx - 1);\n const ty = ts.ty - oy * (sy - 1);\n if (tx !== ts.tx || ty !== ts.ty) {\n this.translate(tx, ty);\n }\n }\n const matrix = this.getMatrix();\n matrix.a = sx;\n matrix.d = sy;\n this.setMatrix(matrix);\n this.graph.trigger('scale', Object.assign({ sx, sy, ox, oy }, options));\n return this;\n }\n clampScale(scale) {\n const range = this.graph.options.scaling;\n return NumberExt.clamp(scale, range.min || 0.01, range.max || 16);\n }\n getZoom() {\n return this.getScale().sx;\n }\n zoom(factor, options) {\n options = options || {}; // eslint-disable-line\n let sx = factor;\n let sy = factor;\n const scale = this.getScale();\n const clientSize = this.getComputedSize();\n let cx = clientSize.width / 2;\n let cy = clientSize.height / 2;\n if (!options.absolute) {\n sx += scale.sx;\n sy += scale.sy;\n }\n if (options.scaleGrid) {\n sx = Math.round(sx / options.scaleGrid) * options.scaleGrid;\n sy = Math.round(sy / options.scaleGrid) * options.scaleGrid;\n }\n if (options.maxScale) {\n sx = Math.min(options.maxScale, sx);\n sy = Math.min(options.maxScale, sy);\n }\n if (options.minScale) {\n sx = Math.max(options.minScale, sx);\n sy = Math.max(options.minScale, sy);\n }\n if (options.center) {\n cx = options.center.x;\n cy = options.center.y;\n }\n sx = this.clampScale(sx);\n sy = this.clampScale(sy);\n if (cx || cy) {\n const ts = this.getTranslation();\n const tx = cx - (cx - ts.tx) * (sx / scale.sx);\n const ty = cy - (cy - ts.ty) * (sy / scale.sy);\n if (tx !== ts.tx || ty !== ts.ty) {\n this.translate(tx, ty, { ui: options.ui });\n }\n }\n this.scale(sx, sy, 0, 0, { ui: options.ui });\n return this;\n }\n getRotation() {\n return Dom.matrixToRotation(this.getMatrix());\n }\n rotate(angle, cx, cy) {\n if (cx == null || cy == null) {\n const bbox = Dom.getBBox(this.graph.view.stage);\n cx = bbox.width / 2; // eslint-disable-line\n cy = bbox.height / 2; // eslint-disable-line\n }\n const ctm = this.getMatrix()\n .translate(cx, cy)\n .rotate(angle)\n .translate(-cx, -cy);\n this.setMatrix(ctm);\n return this;\n }\n getTranslation() {\n return Dom.matrixToTranslation(this.getMatrix());\n }\n translate(tx, ty, options = {}) {\n const matrix = this.getMatrix();\n matrix.e = tx || 0;\n matrix.f = ty || 0;\n this.setMatrix(matrix);\n const ts = this.getTranslation();\n this.options.x = ts.tx;\n this.options.y = ts.ty;\n this.graph.trigger('translate', Object.assign(Object.assign({}, ts), options));\n return this;\n }\n setOrigin(ox, oy) {\n return this.translate(ox || 0, oy || 0);\n }\n fitToContent(gridWidth, gridHeight, padding, options) {\n if (typeof gridWidth === 'object') {\n const opts = gridWidth;\n gridWidth = opts.gridWidth || 1; // eslint-disable-line\n gridHeight = opts.gridHeight || 1; // eslint-disable-line\n padding = opts.padding || 0; // eslint-disable-line\n options = opts; // eslint-disable-line\n }\n else {\n gridWidth = gridWidth || 1; // eslint-disable-line\n gridHeight = gridHeight || 1; // eslint-disable-line\n padding = padding || 0; // eslint-disable-line\n if (options == null) {\n options = {}; // eslint-disable-line\n }\n }\n const paddings = NumberExt.normalizeSides(padding);\n const border = options.border || 0;\n const contentArea = options.contentArea\n ? Rectangle.create(options.contentArea)\n : this.getContentArea(options);\n if (border > 0) {\n contentArea.inflate(border);\n }\n const scale = this.getScale();\n const translate = this.getTranslation();\n const sx = scale.sx;\n const sy = scale.sy;\n contentArea.x *= sx;\n contentArea.y *= sy;\n contentArea.width *= sx;\n contentArea.height *= sy;\n let width = Math.max(Math.ceil((contentArea.width + contentArea.x) / gridWidth), 1) *\n gridWidth;\n let height = Math.max(Math.ceil((contentArea.height + contentArea.y) / gridHeight), 1) * gridHeight;\n let tx = 0;\n let ty = 0;\n if ((options.allowNewOrigin === 'negative' && contentArea.x < 0) ||\n (options.allowNewOrigin === 'positive' && contentArea.x >= 0) ||\n options.allowNewOrigin === 'any') {\n tx = Math.ceil(-contentArea.x / gridWidth) * gridWidth;\n tx += paddings.left;\n width += tx;\n }\n if ((options.allowNewOrigin === 'negative' && contentArea.y < 0) ||\n (options.allowNewOrigin === 'positive' && contentArea.y >= 0) ||\n options.allowNewOrigin === 'any') {\n ty = Math.ceil(-contentArea.y / gridHeight) * gridHeight;\n ty += paddings.top;\n height += ty;\n }\n width += paddings.right;\n height += paddings.bottom;\n // Make sure the resulting width and height are greater than minimum.\n width = Math.max(width, options.minWidth || 0);\n height = Math.max(height, options.minHeight || 0);\n // Make sure the resulting width and height are lesser than maximum.\n width = Math.min(width, options.maxWidth || Number.MAX_SAFE_INTEGER);\n height = Math.min(height, options.maxHeight || Number.MAX_SAFE_INTEGER);\n const size = this.getComputedSize();\n const sizeChanged = width !== size.width || height !== size.height;\n const originChanged = tx !== translate.tx || ty !== translate.ty;\n // Change the dimensions only if there is a size discrepency or an origin change\n if (originChanged) {\n this.translate(tx, ty);\n }\n if (sizeChanged) {\n this.resize(width, height);\n }\n return new Rectangle(-tx / sx, -ty / sy, width / sx, height / sy);\n }\n scaleContentToFit(options = {}) {\n this.scaleContentToFitImpl(options);\n }\n scaleContentToFitImpl(options = {}, translate = true) {\n let contentBBox;\n let contentLocalOrigin;\n if (options.contentArea) {\n const contentArea = options.contentArea;\n contentBBox = this.graph.localToGraph(contentArea);\n contentLocalOrigin = Point.create(contentArea);\n }\n else {\n contentBBox = this.getContentBBox(options);\n contentLocalOrigin = this.graph.graphToLocal(contentBBox);\n }\n if (!contentBBox.width || !contentBBox.height) {\n return;\n }\n const padding = NumberExt.normalizeSides(options.padding);\n const minScale = options.minScale || 0;\n const maxScale = options.maxScale || Number.MAX_SAFE_INTEGER;\n const minScaleX = options.minScaleX || minScale;\n const maxScaleX = options.maxScaleX || maxScale;\n const minScaleY = options.minScaleY || minScale;\n const maxScaleY = options.maxScaleY || maxScale;\n let fittingBox;\n if (options.viewportArea) {\n fittingBox = options.viewportArea;\n }\n else {\n const computedSize = this.getComputedSize();\n const currentTranslate = this.getTranslation();\n fittingBox = {\n x: currentTranslate.tx,\n y: currentTranslate.ty,\n width: computedSize.width,\n height: computedSize.height,\n };\n }\n fittingBox = Rectangle.create(fittingBox).moveAndExpand({\n x: padding.left,\n y: padding.top,\n width: -padding.left - padding.right,\n height: -padding.top - padding.bottom,\n });\n const currentScale = this.getScale();\n let newSX = (fittingBox.width / contentBBox.width) * currentScale.sx;\n let newSY = (fittingBox.height / contentBBox.height) * currentScale.sy;\n if (options.preserveAspectRatio !== false) {\n newSX = newSY = Math.min(newSX, newSY);\n }\n // snap scale to a grid\n const gridSize = options.scaleGrid;\n if (gridSize) {\n newSX = gridSize * Math.floor(newSX / gridSize);\n newSY = gridSize * Math.floor(newSY / gridSize);\n }\n // scale min/max boundaries\n newSX = NumberExt.clamp(newSX, minScaleX, maxScaleX);\n newSY = NumberExt.clamp(newSY, minScaleY, maxScaleY);\n this.scale(newSX, newSY);\n if (translate) {\n const origin = this.options;\n const newOX = fittingBox.x - contentLocalOrigin.x * newSX - origin.x;\n const newOY = fittingBox.y - contentLocalOrigin.y * newSY - origin.y;\n this.translate(newOX, newOY);\n }\n }\n getContentArea(options = {}) {\n if (options.useCellGeometry) {\n return this.model.getAllCellsBBox() || new Rectangle();\n }\n return Dom.getBBox(this.graph.view.stage);\n }\n getContentBBox(options = {}) {\n return this.graph.localToGraph(this.getContentArea(options));\n }\n getGraphArea() {\n const rect = Rectangle.fromSize(this.getComputedSize());\n return this.graph.graphToLocal(rect);\n }\n zoomToRect(rect, options = {}) {\n const area = Rectangle.create(rect);\n const graph = this.graph;\n options.contentArea = area;\n if (options.viewportArea == null) {\n options.viewportArea = {\n x: graph.options.x,\n y: graph.options.y,\n width: this.options.width,\n height: this.options.height,\n };\n }\n this.scaleContentToFitImpl(options, false);\n const center = area.getCenter();\n this.centerPoint(center.x, center.y);\n return this;\n }\n zoomToFit(options = {}) {\n return this.zoomToRect(this.getContentArea(options), options);\n }\n centerPoint(x, y) {\n const clientSize = this.getComputedSize();\n const scale = this.getScale();\n const ts = this.getTranslation();\n const cx = clientSize.width / 2;\n const cy = clientSize.height / 2;\n x = typeof x === 'number' ? x : cx; // eslint-disable-line\n y = typeof y === 'number' ? y : cy; // eslint-disable-line\n x = cx - x * scale.sx; // eslint-disable-line\n y = cy - y * scale.sy; // eslint-disable-line\n if (ts.tx !== x || ts.ty !== y) {\n this.translate(x, y);\n }\n }\n centerContent(options) {\n const rect = this.graph.getContentArea(options);\n const center = rect.getCenter();\n this.centerPoint(center.x, center.y);\n }\n centerCell(cell) {\n return this.positionCell(cell, 'center');\n }\n positionPoint(point, x, y) {\n const clientSize = this.getComputedSize();\n // eslint-disable-next-line\n x = NumberExt.normalizePercentage(x, Math.max(0, clientSize.width));\n if (x < 0) {\n x = clientSize.width + x; // eslint-disable-line\n }\n // eslint-disable-next-line\n y = NumberExt.normalizePercentage(y, Math.max(0, clientSize.height));\n if (y < 0) {\n y = clientSize.height + y; // eslint-disable-line\n }\n const ts = this.getTranslation();\n const scale = this.getScale();\n const dx = x - point.x * scale.sx;\n const dy = y - point.y * scale.sy;\n if (ts.tx !== dx || ts.ty !== dy) {\n this.translate(dx, dy);\n }\n }\n positionRect(rect, pos) {\n const bbox = Rectangle.create(rect);\n switch (pos) {\n case 'center':\n return this.positionPoint(bbox.getCenter(), '50%', '50%');\n case 'top':\n return this.positionPoint(bbox.getTopCenter(), '50%', 0);\n case 'top-right':\n return this.positionPoint(bbox.getTopRight(), '100%', 0);\n case 'right':\n return this.positionPoint(bbox.getRightMiddle(), '100%', '50%');\n case 'bottom-right':\n return this.positionPoint(bbox.getBottomRight(), '100%', '100%');\n case 'bottom':\n return this.positionPoint(bbox.getBottomCenter(), '50%', '100%');\n case 'bottom-left':\n return this.positionPoint(bbox.getBottomLeft(), 0, '100%');\n case 'left':\n return this.positionPoint(bbox.getLeftMiddle(), 0, '50%');\n case 'top-left':\n return this.positionPoint(bbox.getTopLeft(), 0, 0);\n default:\n return this;\n }\n }\n positionCell(cell, pos) {\n const bbox = cell.getBBox();\n return this.positionRect(bbox, pos);\n }\n positionContent(pos, options) {\n const rect = this.graph.getContentArea(options);\n return this.positionRect(rect, pos);\n }\n dispose() {\n this.widgets.forEach((widget) => widget.dispose());\n this.widgets.clear();\n this.stopListening();\n }\n}\n__decorate([\n TransformManager.dispose()\n], TransformManager.prototype, \"dispose\", null);\n//# sourceMappingURL=transform.js.map","var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { ModifierKey } from '../types';\nimport { Base } from './base';\nexport class SelectionManager extends Base {\n constructor() {\n super(...arguments);\n this.movedMap = new WeakMap();\n this.unselectMap = new WeakMap();\n }\n get widgetOptions() {\n return this.options.selecting;\n }\n get rubberbandDisabled() {\n return (this.widgetOptions.enabled !== true ||\n this.widgetOptions.rubberband !== true);\n }\n get disabled() {\n return this.widgetOptions.enabled !== true;\n }\n get length() {\n return this.widget.length;\n }\n get cells() {\n return this.widget.cells;\n }\n init() {\n this.widget = this.graph.hook.createSelection();\n this.startListening();\n }\n startListening() {\n this.graph.on('blank:mousedown', this.onBlankMouseDown, this);\n this.graph.on('blank:click', this.onBlankClick, this);\n this.graph.on('cell:mousemove', this.onCellMouseMove, this);\n this.graph.on('cell:mouseup', this.onCellMouseUp, this);\n this.widget.on('box:mousedown', this.onBoxMouseDown, this);\n }\n stopListening() {\n this.graph.off('blank:mousedown', this.onBlankMouseDown, this);\n this.graph.off('blank:click', this.onBlankClick, this);\n this.graph.off('cell:mousemove', this.onCellMouseMove, this);\n this.graph.off('cell:mouseup', this.onCellMouseUp, this);\n this.widget.off('box:mousedown', this.onBoxMouseDown, this);\n }\n onBlankMouseDown({ e }) {\n if (this.allowRubberband(e, true) ||\n (this.allowRubberband(e) &&\n !this.graph.scroller.allowPanning(e, true) &&\n !this.graph.panning.allowPanning(e, true))) {\n this.startRubberband(e);\n }\n }\n onBlankClick() {\n this.clean();\n }\n allowRubberband(e, strict) {\n return (!this.rubberbandDisabled &&\n ModifierKey.isMatch(e, this.widgetOptions.modifiers, strict) &&\n this.graph.hook.allowRubberband(e));\n }\n onCellMouseMove({ cell }) {\n this.movedMap.set(cell, true);\n }\n onCellMouseUp({ e, cell }) {\n const options = this.widgetOptions;\n let disabled = this.disabled;\n if (!disabled && this.movedMap.has(cell)) {\n disabled = options.selectCellOnMoved === false;\n if (!disabled) {\n disabled = options.selectNodeOnMoved === false && cell.isNode();\n }\n if (!disabled) {\n disabled = options.selectEdgeOnMoved === false && cell.isEdge();\n }\n }\n if (!disabled) {\n if (options.multiple === false || (!e.ctrlKey && !e.metaKey)) {\n this.reset(cell);\n }\n else if (this.unselectMap.has(cell)) {\n this.unselectMap.delete(cell);\n }\n else if (this.isSelected(cell)) {\n this.unselect(cell);\n }\n else {\n this.select(cell);\n }\n }\n this.movedMap.delete(cell);\n }\n onBoxMouseDown({ e, cell }) {\n if (!this.disabled) {\n if (this.widgetOptions.multiple !== false && (e.ctrlKey || e.metaKey)) {\n this.unselect(cell);\n this.unselectMap.set(cell, true);\n }\n }\n }\n isEmpty() {\n return this.length <= 0;\n }\n isSelected(cell) {\n return this.widget.isSelected(cell);\n }\n getCells(cells) {\n return (Array.isArray(cells) ? cells : [cells])\n .map((cell) => typeof cell === 'string' ? this.graph.getCellById(cell) : cell)\n .filter((cell) => cell != null);\n }\n select(cells, options = {}) {\n const selected = this.getCells(cells);\n if (selected.length) {\n if (this.isMultiple()) {\n this.widget.select(selected, options);\n }\n else {\n this.reset(selected.slice(0, 1), options);\n }\n }\n return this;\n }\n unselect(cells, options = {}) {\n this.widget.unselect(this.getCells(cells), options);\n return this;\n }\n reset(cells, options = {}) {\n this.widget.reset(cells ? this.getCells(cells) : [], options);\n return this;\n }\n clean(options = {}) {\n this.widget.clean(options);\n return this;\n }\n enable() {\n if (this.disabled) {\n this.widgetOptions.enabled = true;\n }\n return this;\n }\n disable() {\n if (!this.disabled) {\n this.widgetOptions.enabled = false;\n }\n return this;\n }\n startRubberband(e) {\n if (!this.rubberbandDisabled) {\n this.widget.startSelecting(e);\n }\n return this;\n }\n enableRubberband() {\n if (this.rubberbandDisabled) {\n this.widgetOptions.rubberband = true;\n // if (\n // ModifierKey.equals(\n // this.graph.options.scroller.modifiers,\n // this.graph.options.selecting.modifiers,\n // )\n // ) {\n // this.graph.scroller.disablePanning()\n // }\n }\n return this;\n }\n disableRubberband() {\n if (!this.rubberbandDisabled) {\n this.widgetOptions.rubberband = false;\n }\n return this;\n }\n isMultiple() {\n return this.widgetOptions.multiple !== false;\n }\n enableMultiple() {\n this.widgetOptions.multiple = true;\n return this;\n }\n disableMultiple() {\n this.widgetOptions.multiple = false;\n return this;\n }\n setModifiers(modifiers) {\n this.widgetOptions.modifiers = modifiers;\n return this;\n }\n setContent(content) {\n this.widget.setContent(content);\n return this;\n }\n setFilter(filter) {\n this.widget.setFilter(filter);\n return this;\n }\n dispose() {\n this.stopListening();\n this.widget.dispose();\n }\n}\n__decorate([\n Base.dispose()\n], SelectionManager.prototype, \"dispose\", null);\n//# sourceMappingURL=selection.js.map","var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __rest = (this && this.__rest) || function (s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n t[p[i]] = s[p[i]];\n }\n return t;\n};\nimport { ObjectExt, FunctionExt } from '../util';\nimport { Basecoat } from '../common';\nimport { Model } from '../model/model';\nexport class HistoryManager extends Basecoat {\n constructor(options) {\n super();\n this.batchCommands = null;\n this.batchLevel = 0;\n this.lastBatchIndex = -1;\n this.freezed = false;\n this.handlers = [];\n this.graph = options.graph;\n this.model = options.graph.model;\n this.options = Util.getOptions(options);\n this.validator = new HistoryManager.Validator({\n history: this,\n cancelInvalid: this.options.cancelInvalid,\n });\n this.clean();\n this.startListening();\n }\n get disabled() {\n return this.options.enabled !== true;\n }\n enable() {\n if (this.disabled) {\n this.options.enabled = true;\n }\n }\n disable() {\n if (!this.disabled) {\n this.options.enabled = false;\n }\n }\n undo(options = {}) {\n if (!this.disabled) {\n const cmd = this.undoStack.pop();\n if (cmd) {\n this.revertCommand(cmd, options);\n this.redoStack.push(cmd);\n this.notify('undo', cmd, options);\n }\n }\n return this;\n }\n redo(options = {}) {\n if (!this.disabled) {\n const cmd = this.redoStack.pop();\n if (cmd) {\n this.applyCommand(cmd, options);\n this.undoStack.push(cmd);\n this.notify('redo', cmd, options);\n }\n }\n return this;\n }\n /**\n * Same as `undo()` but does not store the undo-ed command to the\n * `redoStack`. Canceled command therefore cannot be redo-ed.\n */\n cancel(options = {}) {\n if (!this.disabled) {\n const cmd = this.undoStack.pop();\n if (cmd) {\n this.revertCommand(cmd, options);\n this.redoStack = [];\n this.notify('cancel', cmd, options);\n }\n }\n return this;\n }\n clean(options = {}) {\n this.undoStack = [];\n this.redoStack = [];\n this.notify('clean', null, options);\n return this;\n }\n canUndo() {\n return !this.disabled && this.undoStack.length > 0;\n }\n canRedo() {\n return !this.disabled && this.redoStack.length > 0;\n }\n validate(events, ...callbacks) {\n this.validator.validate(events, ...callbacks);\n return this;\n }\n dispose() {\n this.validator.dispose();\n this.clean();\n this.stopListening();\n }\n startListening() {\n this.model.on('batch:start', this.initBatchCommand, this);\n this.model.on('batch:stop', this.storeBatchCommand, this);\n if (this.options.eventNames) {\n this.options.eventNames.forEach((name, index) => {\n this.handlers[index] = this.addCommand.bind(this, name);\n this.model.on(name, this.handlers[index]);\n });\n }\n this.validator.on('invalid', (args) => this.trigger('invalid', args));\n }\n stopListening() {\n this.model.off('batch:start', this.initBatchCommand, this);\n this.model.off('batch:stop', this.storeBatchCommand, this);\n if (this.options.eventNames) {\n this.options.eventNames.forEach((name, index) => {\n this.model.off(name, this.handlers[index]);\n });\n this.handlers.length = 0;\n }\n this.validator.off('invalid');\n }\n createCommand(options) {\n return {\n batch: options ? options.batch : false,\n data: {},\n };\n }\n revertCommand(cmd, options) {\n this.freezed = true;\n const cmds = Array.isArray(cmd) ? Util.sortBatchCommands(cmd) : [cmd];\n for (let i = cmds.length - 1; i >= 0; i -= 1) {\n const cmd = cmds[i];\n const localOptions = Object.assign(Object.assign({}, options), ObjectExt.pick(cmd.options, this.options.revertOptionsList || []));\n this.executeCommand(cmd, true, localOptions);\n }\n this.freezed = false;\n }\n applyCommand(cmd, options) {\n this.freezed = true;\n const cmds = Array.isArray(cmd) ? Util.sortBatchCommands(cmd) : [cmd];\n for (let i = 0; i < cmds.length; i += 1) {\n const cmd = cmds[i];\n const localOptions = Object.assign(Object.assign({}, options), ObjectExt.pick(cmd.options, this.options.applyOptionsList || []));\n this.executeCommand(cmd, false, localOptions);\n }\n this.freezed = false;\n }\n executeCommand(cmd, revert, options) {\n const model = this.model;\n // const cell = cmd.modelChange ? model : model.getCell(cmd.data.id!)\n const cell = model.getCell(cmd.data.id);\n const event = cmd.event;\n if ((Util.isAddEvent(event) && revert) ||\n (Util.isRemoveEvent(event) && !revert)) {\n cell.remove(options);\n }\n else if ((Util.isAddEvent(event) && !revert) ||\n (Util.isRemoveEvent(event) && revert)) {\n const data = cmd.data;\n if (data.node) {\n model.addNode(data.props, options);\n }\n else if (data.edge) {\n model.addEdge(data.props, options);\n }\n }\n else if (Util.isChangeEvent(event)) {\n const data = cmd.data;\n const key = data.key;\n if (key) {\n const value = revert ? data.prev[key] : data.next[key];\n cell.prop(key, value, options);\n }\n }\n else {\n const executeCommand = this.options.executeCommand;\n if (executeCommand) {\n FunctionExt.call(executeCommand, this, cmd, revert, options);\n }\n }\n }\n addCommand(event, args) {\n if (this.freezed || this.disabled) {\n return;\n }\n const eventArgs = args;\n const options = eventArgs.options || {};\n if (options.dryrun) {\n return;\n }\n if ((Util.isAddEvent(event) && this.options.ignoreAdd) ||\n (Util.isRemoveEvent(event) && this.options.ignoreRemove) ||\n (Util.isChangeEvent(event) && this.options.ignoreChange)) {\n return;\n }\n // before\n // ------\n const before = this.options.beforeAddCommand;\n if (before != null &&\n FunctionExt.call(before, this, event, args) === false) {\n return;\n }\n if (event === 'cell:change:*') {\n // eslint-disable-next-line\n event = `cell:change:${eventArgs.key}`;\n }\n const cell = eventArgs.cell;\n const isModelChange = Model.isModel(cell);\n let cmd;\n if (this.batchCommands) {\n // In most cases we are working with same object, doing\n // same action etc. translate an object piece by piece.\n cmd = this.batchCommands[Math.max(this.lastBatchIndex, 0)];\n // Check if we are start working with new object or performing different\n // action with it. Note, that command is uninitialized when lastCmdIndex\n // equals -1. In that case we are done, command we were looking for is\n // already set\n const diffId = (isModelChange && !cmd.modelChange) || cmd.data.id !== cell.id;\n const diffName = cmd.event !== event;\n if (this.lastBatchIndex >= 0 && (diffId || diffName)) {\n // Trying to find command first, which was performing same\n // action with the object as we are doing now with cell.\n const index = this.batchCommands.findIndex((cmd) => ((isModelChange && cmd.modelChange) || cmd.data.id === cell.id) &&\n cmd.event === event);\n if (index < 0 || Util.isAddEvent(event) || Util.isRemoveEvent(event)) {\n cmd = this.createCommand({ batch: true });\n }\n else {\n cmd = this.batchCommands[index];\n this.batchCommands.splice(index, 1);\n }\n this.batchCommands.push(cmd);\n this.lastBatchIndex = this.batchCommands.length - 1;\n }\n }\n else {\n cmd = this.createCommand({ batch: false });\n }\n // add & remove\n // ------------\n if (Util.isAddEvent(event) || Util.isRemoveEvent(event)) {\n const data = cmd.data;\n cmd.event = event;\n cmd.options = options;\n data.id = cell.id;\n data.props = ObjectExt.cloneDeep(cell.toJSON());\n if (cell.isEdge()) {\n data.edge = true;\n }\n else if (cell.isNode()) {\n data.node = true;\n }\n return this.push(cmd, options);\n }\n // change:*\n // --------\n if (Util.isChangeEvent(event)) {\n const key = args.key;\n const data = cmd.data;\n if (!cmd.batch || !cmd.event) {\n // Do this only once. Set previous data and action (also\n // serves as a flag so that we don't repeat this branche).\n cmd.event = event;\n cmd.options = options;\n data.key = key;\n if (data.prev == null) {\n data.prev = {};\n }\n data.prev[key] = ObjectExt.clone(cell.previous(key));\n if (isModelChange) {\n cmd.modelChange = true;\n }\n else {\n data.id = cell.id;\n }\n }\n if (data.next == null) {\n data.next = {};\n }\n data.next[key] = ObjectExt.clone(cell.prop(key));\n return this.push(cmd, options);\n }\n // others\n // ------\n const afterAddCommand = this.options.afterAddCommand;\n if (afterAddCommand) {\n FunctionExt.call(afterAddCommand, this, event, args, cmd);\n }\n this.push(cmd, options);\n }\n /**\n * Gather multiple changes into a single command. These commands could\n * be reverted with single `undo()` call. From the moment the function\n * is called every change made on model is not stored into the undoStack.\n * Changes are temporarily kept until `storeBatchCommand()` is called.\n */\n // eslint-disable-next-line\n initBatchCommand(options) {\n if (this.freezed) {\n return;\n }\n if (this.batchCommands) {\n this.batchLevel += 1;\n }\n else {\n this.batchCommands = [this.createCommand({ batch: true })];\n this.batchLevel = 0;\n this.lastBatchIndex = -1;\n }\n }\n /**\n * Store changes temporarily kept in the undoStack. You have to call this\n * function as many times as `initBatchCommand()` been called.\n */\n storeBatchCommand(options) {\n if (this.freezed) {\n return;\n }\n if (this.batchCommands && this.batchLevel <= 0) {\n const cmds = this.filterBatchCommand(this.batchCommands);\n if (cmds.length > 0) {\n this.redoStack = [];\n this.undoStack.push(cmds);\n this.notify('add', cmds, options);\n }\n this.batchCommands = null;\n this.lastBatchIndex = -1;\n this.batchLevel = 0;\n }\n else if (this.batchCommands && this.batchLevel > 0) {\n this.batchLevel -= 1;\n }\n }\n filterBatchCommand(batchCommands) {\n let cmds = batchCommands.slice();\n const result = [];\n while (cmds.length > 0) {\n const cmd = cmds.shift();\n const evt = cmd.event;\n const id = cmd.data.id;\n if (evt != null && (id != null || cmd.modelChange)) {\n if (Util.isAddEvent(evt)) {\n const index = cmds.findIndex((c) => Util.isRemoveEvent(c.event) && c.data.id === id);\n if (index >= 0) {\n cmds = cmds.filter((c, i) => index < i || c.data.id !== id);\n continue;\n }\n }\n else if (Util.isRemoveEvent(evt)) {\n const index = cmds.findIndex((c) => Util.isAddEvent(c.event) && c.data.id === id);\n if (index >= 0) {\n cmds.splice(index, 1);\n continue;\n }\n }\n else if (Util.isChangeEvent(evt)) {\n const data = cmd.data;\n if (ObjectExt.isEqual(data.prev, data.next)) {\n continue;\n }\n }\n else {\n // pass\n }\n result.push(cmd);\n }\n }\n return result;\n }\n notify(event, cmd, options) {\n const cmds = cmd == null ? null : Array.isArray(cmd) ? cmd : [cmd];\n this.emit(event, { cmds, options });\n this.emit('change', { cmds, options });\n }\n push(cmd, options) {\n this.redoStack = [];\n if (cmd.batch) {\n this.lastBatchIndex = Math.max(this.lastBatchIndex, 0);\n this.emit('batch', { cmd, options });\n }\n else {\n this.undoStack.push(cmd);\n this.notify('add', cmd, options);\n }\n }\n}\n__decorate([\n Basecoat.dispose()\n], HistoryManager.prototype, \"dispose\", null);\n(function (HistoryManager) {\n /**\n * Runs a set of callbacks to determine if a command is valid. This is\n * useful for checking if a certain action in your application does\n * lead to an invalid state of the graph.\n */\n class Validator extends Basecoat {\n constructor(options) {\n super();\n this.map = {};\n this.command = options.history;\n this.cancelInvalid = options.cancelInvalid !== false;\n this.command.on('add', this.onCommandAdded, this);\n }\n onCommandAdded({ cmds }) {\n return Array.isArray(cmds)\n ? cmds.every((cmd) => this.isValidCommand(cmd))\n : this.isValidCommand(cmds);\n }\n isValidCommand(cmd) {\n if (cmd.options && cmd.options.validation === false) {\n return true;\n }\n const callbacks = (cmd.event && this.map[cmd.event]) || [];\n let handoverErr = null;\n callbacks.forEach((routes) => {\n let i = 0;\n const rollup = (err) => {\n const fn = routes[i];\n i += 1;\n try {\n if (fn) {\n fn(err, cmd, rollup);\n }\n else {\n handoverErr = err;\n return;\n }\n }\n catch (err) {\n rollup(err);\n }\n };\n rollup(handoverErr);\n });\n if (handoverErr) {\n if (this.cancelInvalid) {\n this.command.cancel();\n }\n this.emit('invalid', { err: handoverErr });\n return false;\n }\n return true;\n }\n validate(events, ...callbacks) {\n const evts = Array.isArray(events) ? events : events.split(/\\s+/);\n callbacks.forEach((callback) => {\n if (typeof callback !== 'function') {\n throw new Error(`${evts.join(' ')} requires callback functions.`);\n }\n });\n evts.forEach((event) => {\n if (this.map[event] == null) {\n this.map[event] = [];\n }\n this.map[event].push(callbacks);\n });\n return this;\n }\n dispose() {\n this.command.off('add', this.onCommandAdded, this);\n }\n }\n __decorate([\n Basecoat.dispose()\n ], Validator.prototype, \"dispose\", null);\n HistoryManager.Validator = Validator;\n})(HistoryManager || (HistoryManager = {}));\nvar Util;\n(function (Util) {\n function isAddEvent(event) {\n return event === 'cell:added';\n }\n Util.isAddEvent = isAddEvent;\n function isRemoveEvent(event) {\n return event === 'cell:removed';\n }\n Util.isRemoveEvent = isRemoveEvent;\n function isChangeEvent(event) {\n return event != null && event.startsWith('cell:change:');\n }\n Util.isChangeEvent = isChangeEvent;\n function getOptions(options) {\n const { graph } = options, others = __rest(options, [\"graph\"]);\n const reservedNames = [\n 'cell:added',\n 'cell:removed',\n 'cell:change:*',\n ];\n const batchEvents = [\n 'batch:start',\n 'batch:stop',\n ];\n const eventNames = options.eventNames\n ? options.eventNames.filter((event) => !(Util.isChangeEvent(event) ||\n reservedNames.includes(event) ||\n batchEvents.includes(event)))\n : reservedNames;\n return Object.assign(Object.assign({}, others), { eventNames, applyOptionsList: options.applyOptionsList || ['propertyPath'], revertOptionsList: options.revertOptionsList || ['propertyPath'] });\n }\n Util.getOptions = getOptions;\n function sortBatchCommands(cmds) {\n const results = [];\n for (let i = 0, ii = cmds.length; i < ii; i += 1) {\n const cmd = cmds[i];\n let index = null;\n if (Util.isAddEvent(cmd.event)) {\n const id = cmd.data.id;\n for (let j = 0; j < i; j += 1) {\n if (cmds[j].data.id === id) {\n index = j;\n break;\n }\n }\n }\n if (index !== null) {\n results.splice(index, 0, cmd);\n }\n else {\n results.push(cmd);\n }\n }\n return results;\n }\n Util.sortBatchCommands = sortBatchCommands;\n})(Util || (Util = {}));\n//# sourceMappingURL=history.js.map","var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Base } from './base';\nexport class MiniMapManager extends Base {\n get widgetOptions() {\n return this.options.minimap;\n }\n init() {\n this.widget = this.graph.hook.createMiniMap();\n }\n dispose() {\n if (this.widget) {\n this.widget.dispose();\n }\n }\n}\n__decorate([\n Base.dispose()\n], MiniMapManager.prototype, \"dispose\", null);\n//# sourceMappingURL=minimap.js.map","var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport Mousetrap from 'mousetrap';\nimport { Dom, FunctionExt } from '../util';\nimport { Disposable } from '../common';\nexport class Keyboard extends Disposable {\n constructor(options) {\n super();\n this.options = options;\n const scroller = this.graph.scroller.widget;\n this.container = scroller ? scroller.container : this.graph.container;\n if (options.global) {\n this.target = document;\n }\n else {\n this.target = this.container;\n if (!this.disabled) {\n // ensure the container focusable\n this.target.setAttribute('tabindex', '-1');\n }\n // change to mouseup event,prevent page stalling caused by focus\n this.graph.on('cell:mouseup', this.focus, this);\n this.graph.on('blank:mouseup', this.focus, this);\n }\n this.mousetrap = Keyboard.createMousetrap(this);\n }\n get graph() {\n return this.options.graph;\n }\n get disabled() {\n return this.options.enabled !== true;\n }\n enable() {\n if (this.disabled) {\n this.options.enabled = true;\n this.graph.options.keyboard.enabled = true;\n if (this.target instanceof HTMLElement) {\n this.target.setAttribute('tabindex', '-1');\n }\n }\n }\n disable() {\n if (!this.disabled) {\n this.options.enabled = false;\n this.graph.options.keyboard.enabled = false;\n if (this.target instanceof HTMLElement) {\n this.target.removeAttribute('tabindex');\n }\n }\n }\n on(keys, callback, action) {\n this.mousetrap.bind(this.getKeys(keys), callback, action);\n }\n off(keys, action) {\n this.mousetrap.unbind(this.getKeys(keys), action);\n }\n focus(e) {\n const isInputEvent = this.isInputEvent(e.e);\n if (isInputEvent) {\n return;\n }\n const target = this.target;\n target.focus({\n preventScroll: true,\n });\n }\n getKeys(keys) {\n return (Array.isArray(keys) ? keys : [keys]).map((key) => this.formatkey(key));\n }\n formatkey(key) {\n const formated = key\n .toLowerCase()\n .replace(/\\s/g, '')\n .replace('delete', 'del')\n .replace('cmd', 'command');\n const formatFn = this.options.format;\n if (formatFn) {\n return FunctionExt.call(formatFn, this.graph, formated);\n }\n return formated;\n }\n isGraphEvent(e) {\n const target = (e.srcElement || e.target);\n if (target) {\n if (target === this.target || target === document.body) {\n return true;\n }\n return Dom.contains(this.container, target);\n }\n return false;\n }\n isInputEvent(e) {\n const target = e.target;\n const tagName = target && target.tagName.toLowerCase();\n return tagName === 'input';\n }\n isEnabledForEvent(e) {\n const allowed = !this.disabled && this.isGraphEvent(e);\n const isInputEvent = this.isInputEvent(e);\n if (allowed) {\n const code = e.keyCode || e.which;\n if (isInputEvent && (code === 8 || code === 46)) {\n return false;\n }\n if (this.options.guard) {\n return FunctionExt.call(this.options.guard, this.graph, e);\n }\n }\n return allowed;\n }\n dispose() {\n this.mousetrap.reset();\n }\n}\n__decorate([\n Disposable.dispose()\n], Keyboard.prototype, \"dispose\", null);\n(function (Keyboard) {\n function createMousetrap(keyboard) {\n const mousetrap = new Mousetrap(keyboard.target);\n const stopCallback = mousetrap.stopCallback;\n mousetrap.stopCallback = (e, elem, combo) => {\n if (keyboard.isEnabledForEvent(e)) {\n if (stopCallback) {\n return stopCallback.call(mousetrap, e, elem, combo);\n }\n return false;\n }\n return true;\n };\n return mousetrap;\n }\n Keyboard.createMousetrap = createMousetrap;\n})(Keyboard || (Keyboard = {}));\n//# sourceMappingURL=keyboard.js.map","var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { ModifierKey } from '../types';\nimport { Dom, NumberExt } from '../util';\nimport { Disposable } from '../common';\nexport class MouseWheel extends Disposable {\n constructor(options) {\n super();\n this.options = options;\n this.cumulatedFactor = 1;\n const scroller = this.graph.scroller.widget;\n this.container = scroller ? scroller.container : this.graph.container;\n this.target = this.options.global ? document : this.container;\n this.mousewheelHandle = new Dom.MouseWheelHandle(this.target, this.onMouseWheel.bind(this), this.allowMouseWheel.bind(this));\n if (this.options.enabled) {\n this.enable(true);\n }\n }\n get graph() {\n return this.options.graph;\n }\n get disabled() {\n return this.options.enabled !== true;\n }\n enable(force) {\n if (this.disabled || force) {\n this.options.enabled = true;\n this.graph.options.mousewheel.enabled = true;\n this.mousewheelHandle.enable();\n }\n }\n disable() {\n if (!this.disabled) {\n this.options.enabled = false;\n this.graph.options.mousewheel.enabled = false;\n this.mousewheelHandle.disable();\n }\n }\n allowMouseWheel(evt) {\n const e = (evt.originalEvent || evt);\n const guard = this.options.guard;\n return ((guard == null || guard.call(this.graph, e)) &&\n ModifierKey.isMatch(e, this.options.modifiers));\n }\n onMouseWheel(evt) {\n const e = (evt.originalEvent || evt);\n const guard = this.options.guard;\n if ((guard == null || guard.call(this.graph, e)) &&\n ModifierKey.isMatch(e, this.options.modifiers)) {\n const factor = this.options.factor || 1.2;\n if (this.currentScale == null) {\n this.startPos = { x: evt.clientX, y: evt.clientY };\n this.currentScale = this.graph.scroller.widget\n ? this.graph.scroller.widget.zoom()\n : this.graph.transform.getScale().sx;\n }\n const delta = evt.deltaY;\n if (delta < 0) {\n // zoomin\n // ------\n // Switches to 1% zoom steps below 15%\n if (this.currentScale < 0.15) {\n this.cumulatedFactor = (this.currentScale + 0.01) / this.currentScale;\n }\n else {\n // Uses to 5% zoom steps for better grid rendering in\n // webkit and to avoid rounding errors for zoom steps\n this.cumulatedFactor =\n Math.round(this.currentScale * factor * 20) / 20 / this.currentScale;\n }\n }\n else {\n // zoomout\n // -------\n // Switches to 1% zoom steps below 15%\n if (this.currentScale <= 0.15) {\n this.cumulatedFactor = (this.currentScale - 0.01) / this.currentScale;\n }\n else {\n // Uses to 5% zoom steps for better grid rendering in\n // webkit and to avoid rounding errors for zoom steps\n this.cumulatedFactor =\n Math.round(this.currentScale * (1 / factor) * 20) /\n 20 /\n this.currentScale;\n }\n }\n this.cumulatedFactor = Math.max(0.01, Math.min(this.currentScale * this.cumulatedFactor, 160) /\n this.currentScale);\n const scroller = this.graph.scroller.widget;\n const currentScale = this.currentScale;\n let targetScale = this.graph.transform.clampScale(currentScale * this.cumulatedFactor);\n const minScale = this.options.minScale || Number.MIN_SAFE_INTEGER;\n const maxScale = this.options.maxScale || Number.MAX_SAFE_INTEGER;\n targetScale = NumberExt.clamp(targetScale, minScale, maxScale);\n if (targetScale !== currentScale) {\n if (scroller) {\n if (this.options.zoomAtMousePosition) {\n const origin = this.graph.coord.clientToLocalPoint(this.startPos);\n scroller.zoom(targetScale, {\n absolute: true,\n center: origin.clone(),\n });\n }\n else {\n scroller.zoom(targetScale, { absolute: true });\n }\n }\n else {\n if (this.options.zoomAtMousePosition) {\n const origin = this.graph.coord.clientToGraphPoint(this.startPos);\n this.graph.transform.zoom(targetScale, {\n absolute: true,\n center: origin.clone(),\n ui: true,\n });\n }\n else {\n this.graph.transform.zoom(targetScale, { absolute: true, ui: true });\n }\n }\n }\n this.currentScale = null;\n this.cumulatedFactor = 1;\n }\n }\n dispose() {\n this.disable();\n }\n}\n__decorate([\n Disposable.dispose()\n], MouseWheel.prototype, \"dispose\", null);\n//# sourceMappingURL=mousewheel.js.map","var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Rectangle } from '../geometry';\nimport { NumberExt, JQuery, Dom, Unit, Vector } from '../util';\nimport { Base } from './base';\nexport class PrintManager extends Base {\n show(options = {}) {\n const localOptions = Object.assign(Object.assign({}, PrintManager.defaultOptions), options);\n const $pages = this.createPrintPages(localOptions);\n localOptions.ready($pages, ($pages) => this.showPrintWindow($pages, localOptions), {\n sheetSize: this.getSheetSize(localOptions),\n });\n }\n get className() {\n return this.view.prefixClassName('graph-print');\n }\n showPrintWindow($pages, options) {\n if ($pages) {\n const $body = JQuery(document.body);\n const $container = JQuery(this.view.container);\n const bodyClassName = this.view.prefixClassName('graph-printing');\n $body.addClass(bodyClassName);\n const $detached = $container.children().detach();\n $pages.forEach(($page) => {\n $page\n .removeClass(`${this.className}-preview`)\n .addClass(`${this.className}-ready`)\n .appendTo($body);\n });\n let ret = false;\n const cb = () => {\n if (!ret) {\n ret = true;\n $body.removeClass(bodyClassName);\n $pages.forEach(($page) => $page.remove());\n $container.append($detached);\n JQuery(`#${this.styleSheetId}`).remove();\n this.graph.trigger('after:print', options);\n JQuery(window).off('afterprint', cb);\n }\n };\n JQuery(window).one('afterprint', cb);\n setTimeout(cb, 200);\n window.print();\n }\n }\n createPrintPage(pageArea, options) {\n this.graph.trigger('before:print', options);\n const $page = JQuery('
').addClass(this.className);\n const $wrap = JQuery('
')\n .addClass(this.view.prefixClassName('graph-print-inner'))\n .css('position', 'relative');\n if (options.size) {\n $page.addClass(`${this.className}-size-${options.size}`);\n }\n const vSVG = Vector.create(this.view.svg).clone();\n const vStage = vSVG.findOne(`.${this.view.prefixClassName('graph-svg-stage')}`);\n $wrap.append(vSVG.node);\n const sheetSize = this.getSheetSize(options);\n const graphArea = this.graph.transform.getGraphArea();\n const s = this.graph.transform.getScale();\n const ts = this.graph.translate();\n const matrix = Dom.createSVGMatrix().translate(ts.tx / s.sx, ts.ty / s.sy);\n const info = this.getPageInfo(graphArea, pageArea, sheetSize);\n const scale = info.scale;\n const bbox = info.bbox;\n $wrap.css({\n left: 0,\n top: 0,\n });\n vSVG.attr({\n width: bbox.width * scale,\n height: bbox.height * scale,\n style: 'position:relative',\n viewBox: [bbox.x, bbox.y, bbox.width, bbox.height].join(' '),\n });\n vStage.attr('transform', Dom.matrixToTransformString(matrix));\n $page.append($wrap);\n $page.addClass(`${this.className}-preview`);\n return {\n $page,\n sheetSize,\n };\n }\n createPrintPages(options) {\n let ret;\n const area = this.getPrintArea(options);\n const $pages = [];\n if (options.page) {\n const pageSize = this.getPageSize(area, options.page);\n const pageAreas = this.getPageAreas(area, pageSize);\n pageAreas.forEach((pageArea) => {\n ret = this.createPrintPage(pageArea, options);\n $pages.push(ret.$page);\n });\n }\n else {\n ret = this.createPrintPage(area, options);\n $pages.push(ret.$page);\n }\n if (ret) {\n const size = {\n width: ret.sheetSize.cssWidth,\n height: ret.sheetSize.cssHeight,\n };\n this.updatePrintStyle(size, options);\n }\n return $pages;\n }\n get styleSheetId() {\n return this.view.prefixClassName('graph-print-style');\n }\n updatePrintStyle(size, options) {\n const sizeCSS = Object.keys(size).reduce((memo, key) => `${memo} ${key}:${size[key]};`, '');\n const margin = NumberExt.normalizeSides(options.margin);\n const marginUnit = options.marginUnit || '';\n const sheetUnit = options.sheetUnit || '';\n const css = `\n @media print {\n .${this.className}.${this.className}-ready {\n ${sizeCSS}\n }\n\n @page {\n margin:\n ${[\n margin.top + marginUnit,\n margin.right + marginUnit,\n margin.bottom + marginUnit,\n margin.left + marginUnit,\n ].join(' ')};\n size: ${options.sheet.width + sheetUnit} ${options.sheet.height + sheetUnit};\n\n .${this.className}.${this.className}-preview {\n ${sizeCSS}\n }\n }`;\n const id = this.styleSheetId;\n const $style = JQuery(`#${id}`);\n if ($style.length) {\n $style.html(css);\n }\n else {\n JQuery('head').append(`''`);\n }\n }\n getPrintArea(options) {\n let area = options.area;\n if (!area) {\n const padding = NumberExt.normalizeSides(options.padding);\n area = this.graph.getContentArea().moveAndExpand({\n x: -padding.left,\n y: -padding.top,\n width: padding.left + padding.right,\n height: padding.top + padding.bottom,\n });\n }\n return area;\n }\n getPageSize(area, poster) {\n if (typeof poster === 'object') {\n const raw = poster;\n const page = {\n width: raw.width,\n height: raw.height,\n };\n if (page.width == null) {\n page.width = Math.ceil(area.width / (raw.columns || 1));\n }\n if (page.height == null) {\n page.height = Math.ceil(area.height / (raw.rows || 1));\n }\n return page;\n }\n return {\n width: area.width,\n height: area.height,\n };\n }\n getPageAreas(area, pageSize) {\n const pages = [];\n const width = pageSize.width;\n const height = pageSize.height;\n for (let w = 0, n = 0; w < area.height && n < 200; w += height, n += 1) {\n for (let h = 0, m = 0; h < area.width && m < 200; h += width, m += 1) {\n pages.push(new Rectangle(area.x + h, area.y + w, width, height));\n }\n }\n return pages;\n }\n getSheetSize(options) {\n const sheet = options.sheet;\n const margin = NumberExt.normalizeSides(options.margin);\n const marginUnit = options.marginUnit || '';\n const sheetUnit = options.sheetUnit || '';\n const cssWidth = \n // eslint-disable-next-line\n `calc(${sheet.width}${sheetUnit} - ${margin.left + margin.right}${marginUnit})`;\n const cssHeight = \n // eslint-disable-next-line\n `calc(${sheet.height}${sheetUnit} - ${margin.top + margin.bottom}${marginUnit})`;\n const ret = Unit.measure(cssWidth, cssHeight);\n return {\n cssWidth,\n cssHeight,\n width: ret.width,\n height: ret.height,\n };\n }\n getPageInfo(graphArea, pageArea, sheetSize) {\n const bbox = new Rectangle(pageArea.x - graphArea.x, pageArea.y - graphArea.y, pageArea.width, pageArea.height);\n const pageRatio = bbox.width / bbox.height;\n const graphRatio = sheetSize.width / sheetSize.height;\n return {\n bbox,\n scale: graphRatio < pageRatio\n ? sheetSize.width / bbox.width\n : sheetSize.height / bbox.height,\n fitHorizontal: graphRatio < pageRatio,\n };\n }\n dispose() { }\n}\n__decorate([\n Base.dispose()\n], PrintManager.prototype, \"dispose\", null);\n(function (PrintManager) {\n PrintManager.defaultOptions = {\n page: false,\n sheet: {\n width: 210,\n height: 297,\n },\n sheetUnit: 'mm',\n margin: 0.4,\n marginUnit: 'in',\n padding: 5,\n ready: ($pages, readyToPrint) => readyToPrint($pages),\n };\n})(PrintManager || (PrintManager = {}));\n//# sourceMappingURL=print.js.map","import JQuery from 'jquery';\nimport { DataUri, NumberExt, FunctionExt, Vector } from '../util';\nimport { Rectangle } from '../geometry';\nimport { Base } from './base';\nexport class FormatManager extends Base {\n toSVG(callback, options = {}) {\n this.graph.trigger('before:export', options);\n const rawSVG = this.view.svg;\n const vSVG = Vector.create(rawSVG).clone();\n let clonedSVG = vSVG.node;\n const vStage = vSVG.findOne(`.${this.view.prefixClassName('graph-svg-stage')}`);\n const viewBox = options.viewBox || this.graph.graphToLocal(this.graph.getContentBBox());\n const dimension = options.preserveDimensions;\n if (dimension) {\n const size = typeof dimension === 'boolean' ? viewBox : dimension;\n vSVG.attr({\n width: size.width,\n height: size.height,\n });\n }\n vSVG\n .removeAttribute('style')\n .attr('viewBox', [viewBox.x, viewBox.y, viewBox.width, viewBox.height].join(' '));\n vStage.removeAttribute('transform');\n // Stores all the CSS declarations from external stylesheets to the\n // `style` attribute of the SVG document nodes.\n // This is achieved in three steps.\n // -----------------------------------\n // 1. Disabling all the stylesheets in the page and therefore collecting\n // only default style values. This, together with the step 2, makes it\n // possible to discard default CSS property values and store only those\n // that differ.\n //\n // 2. Enabling back all the stylesheets in the page and collecting styles\n // that differ from the default values.\n //\n // 3. Applying the difference between default values and the ones set by\n // custom stylesheets onto the `style` attribute of each of the nodes\n // in SVG.\n if (options.copyStyles !== false) {\n const document = rawSVG.ownerDocument;\n const raws = Array.from(rawSVG.querySelectorAll('*'));\n const clones = Array.from(clonedSVG.querySelectorAll('*'));\n const styleSheetCount = document.styleSheets.length;\n const styleSheetsCopy = [];\n for (let k = styleSheetCount - 1; k >= 0; k -= 1) {\n // There is a bug (bugSS) in Chrome 14 and Safari. When you set\n // `stylesheet.disable = true` it will also remove it from\n // `document.styleSheets`. So we need to store all stylesheets before\n // we disable them. Later on we put them back to `document.styleSheets`\n // if needed.\n // See the bug `https://code.google.com/p/chromium/issues/detail?id=88310`.\n styleSheetsCopy[k] = document.styleSheets[k];\n document.styleSheets[k].disabled = true;\n }\n const defaultComputedStyles = {};\n raws.forEach((elem, index) => {\n const computedStyle = window.getComputedStyle(elem, null);\n // We're making a deep copy of the `computedStyle` so that it's not affected\n // by that next step when all the stylesheets are re-enabled again.\n const defaultComputedStyle = {};\n Object.keys(computedStyle).forEach((property) => {\n defaultComputedStyle[property] =\n computedStyle.getPropertyValue(property);\n });\n defaultComputedStyles[index] = defaultComputedStyle;\n });\n // Copy all stylesheets back\n if (styleSheetCount !== document.styleSheets.length) {\n styleSheetsCopy.forEach((copy, index) => {\n document.styleSheets[index] = copy;\n });\n }\n for (let i = 0; i < styleSheetCount; i += 1) {\n document.styleSheets[i].disabled = false;\n }\n const customStyles = {};\n raws.forEach((elem, index) => {\n const computedStyle = window.getComputedStyle(elem, null);\n const defaultComputedStyle = defaultComputedStyles[index];\n const customStyle = {};\n Object.keys(computedStyle).forEach((property) => {\n if (!NumberExt.isNumeric(property) &&\n computedStyle.getPropertyValue(property) !==\n defaultComputedStyle[property]) {\n customStyle[property] = computedStyle.getPropertyValue(property);\n }\n });\n customStyles[index] = customStyle;\n });\n clones.forEach((elem, index) => {\n JQuery(elem).css(customStyles[index]);\n });\n }\n const stylesheet = options.stylesheet;\n if (typeof stylesheet === 'string') {\n const cDATASection = rawSVG\n .ownerDocument.implementation.createDocument(null, 'xml', null)\n .createCDATASection(stylesheet);\n vSVG.prepend(Vector.create('style', {\n type: 'text/css',\n }, [cDATASection]));\n }\n const format = () => {\n const beforeSerialize = options.beforeSerialize;\n if (typeof beforeSerialize === 'function') {\n const ret = FunctionExt.call(beforeSerialize, this.graph, clonedSVG);\n if (ret instanceof SVGSVGElement) {\n clonedSVG = ret;\n }\n }\n const dataUri = new XMLSerializer()\n .serializeToString(clonedSVG)\n .replace(/ /g, '\\u00a0');\n this.graph.trigger('after:export', options);\n callback(dataUri);\n };\n if (options.serializeImages) {\n const deferrals = vSVG.find('image').map((vImage) => {\n return new Promise((resolve) => {\n const url = vImage.attr('xlink:href') || vImage.attr('href');\n DataUri.imageToDataUri(url, (err, dataUri) => {\n if (!err && dataUri) {\n vImage.attr('xlink:href', dataUri);\n }\n resolve();\n });\n });\n });\n Promise.all(deferrals).then(format);\n }\n else {\n format();\n }\n }\n toDataURL(callback, options) {\n let viewBox = options.viewBox || this.graph.getContentBBox();\n const padding = NumberExt.normalizeSides(options.padding);\n if (options.width && options.height) {\n if (padding.left + padding.right >= options.width) {\n padding.left = padding.right = 0;\n }\n if (padding.top + padding.bottom >= options.height) {\n padding.top = padding.bottom = 0;\n }\n }\n const expanding = new Rectangle(-padding.left, -padding.top, padding.left + padding.right, padding.top + padding.bottom);\n if (options.width && options.height) {\n const width = viewBox.width + padding.left + padding.right;\n const height = viewBox.height + padding.top + padding.bottom;\n expanding.scale(width / options.width, height / options.height);\n }\n viewBox = Rectangle.create(viewBox).moveAndExpand(expanding);\n const rawSize = typeof options.width === 'number' && typeof options.height === 'number'\n ? { width: options.width, height: options.height }\n : viewBox;\n let scale = options.ratio ? parseFloat(options.ratio) : 1;\n if (!Number.isFinite(scale) || scale === 0) {\n scale = 1;\n }\n const size = {\n width: Math.max(Math.round(rawSize.width * scale), 1),\n height: Math.max(Math.round(rawSize.height * scale), 1),\n };\n {\n const imgDataCanvas = document.createElement('canvas');\n const context2D = imgDataCanvas.getContext('2d');\n imgDataCanvas.width = size.width;\n imgDataCanvas.height = size.height;\n const x = size.width - 1;\n const y = size.height - 1;\n context2D.fillStyle = 'rgb(1,1,1)';\n context2D.fillRect(x, y, 1, 1);\n const data = context2D.getImageData(x, y, 1, 1).data;\n if (data[0] !== 1 || data[1] !== 1 || data[2] !== 1) {\n throw new Error('size exceeded');\n }\n }\n const img = new Image();\n img.onload = () => {\n const canvas = document.createElement('canvas');\n canvas.width = size.width;\n canvas.height = size.height;\n const context = canvas.getContext('2d');\n context.fillStyle = options.backgroundColor || 'white';\n context.fillRect(0, 0, size.width, size.height);\n try {\n context.drawImage(img, 0, 0, size.width, size.height);\n const dataUri = canvas.toDataURL(options.type, options.quality);\n callback(dataUri);\n }\n catch (error) {\n // pass\n }\n };\n this.toSVG((dataUri) => {\n img.src = `data:image/svg+xml,${encodeURIComponent(dataUri)}`;\n }, Object.assign(Object.assign({}, options), { viewBox, serializeImages: true, preserveDimensions: Object.assign({}, size) }));\n }\n toPNG(callback, options = {}) {\n this.toDataURL(callback, Object.assign(Object.assign({}, options), { type: 'image/png' }));\n }\n toJPEG(callback, options = {}) {\n this.toDataURL(callback, Object.assign(Object.assign({}, options), { type: 'image/jpeg' }));\n }\n}\n//# sourceMappingURL=format.js.map","import { Base } from './base';\nexport class KnobManager extends Base {\n constructor() {\n super(...arguments);\n this.widgets = new Map();\n }\n get isSelectionEnabled() {\n return this.options.selecting.enabled === true;\n }\n init() {\n this.startListening();\n }\n startListening() {\n this.graph.on('node:mouseup', this.onNodeMouseUp, this);\n this.graph.on('node:selected', this.onNodeSelected, this);\n this.graph.on('node:unselected', this.onNodeUnSelected, this);\n }\n stopListening() {\n this.graph.off('node:mouseup', this.onNodeMouseUp, this);\n this.graph.off('node:selected', this.onNodeSelected, this);\n this.graph.off('node:unselected', this.onNodeUnSelected, this);\n }\n onNodeMouseUp({ node }) {\n if (!this.isSelectionEnabled) {\n const widgets = this.graph.hook.createKnob(node, { clearAll: true });\n if (widgets) {\n this.widgets.set(node, widgets);\n }\n }\n }\n onNodeSelected({ node }) {\n if (this.isSelectionEnabled) {\n const widgets = this.graph.hook.createKnob(node, { clearAll: false });\n if (widgets) {\n this.widgets.set(node, widgets);\n }\n }\n }\n onNodeUnSelected({ node }) {\n if (this.isSelectionEnabled) {\n const widgets = this.widgets.get(node);\n if (widgets) {\n widgets.forEach((widget) => widget.dispose());\n }\n this.widgets.delete(node);\n }\n }\n}\n//# sourceMappingURL=knob.js.map","var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { ModifierKey } from '../types';\nimport { Dom } from '../util';\nimport { Base } from './base';\nexport class PanningManager extends Base {\n get widgetOptions() {\n return this.options.panning;\n }\n get pannable() {\n return this.widgetOptions && this.widgetOptions.enabled === true;\n }\n init() {\n this.startListening();\n this.updateClassName();\n }\n startListening() {\n const eventTypes = this.widgetOptions.eventTypes;\n if (!eventTypes) {\n return;\n }\n if (eventTypes.includes('leftMouseDown')) {\n this.graph.on('blank:mousedown', this.preparePanning, this);\n this.graph.on('node:unhandled:mousedown', this.preparePanning, this);\n this.graph.on('edge:unhandled:mousedown', this.preparePanning, this);\n }\n if (eventTypes.includes('rightMouseDown')) {\n this.onRightMouseDown = this.onRightMouseDown.bind(this);\n this.view.$(this.graph.container).on('mousedown', this.onRightMouseDown);\n }\n if (eventTypes.includes('mouseWheel')) {\n this.mousewheelHandle = new Dom.MouseWheelHandle(this.graph.container, this.onMouseWheel.bind(this), this.allowMouseWheel.bind(this));\n this.mousewheelHandle.enable();\n }\n }\n stopListening() {\n const eventTypes = this.widgetOptions.eventTypes;\n if (!eventTypes) {\n return;\n }\n if (eventTypes.includes('leftMouseDown')) {\n this.graph.off('blank:mousedown', this.preparePanning, this);\n this.graph.off('node:unhandled:mousedown', this.preparePanning, this);\n this.graph.off('edge:unhandled:mousedown', this.preparePanning, this);\n }\n if (eventTypes.includes('rightMouseDown')) {\n this.view.$(this.graph.container).off('mousedown', this.onRightMouseDown);\n }\n if (eventTypes.includes('mouseWheel')) {\n if (this.mousewheelHandle) {\n this.mousewheelHandle.disable();\n }\n }\n }\n preparePanning({ e }) {\n if (this.allowPanning(e, true) ||\n (this.allowPanning(e) && !this.graph.selection.allowRubberband(e, true))) {\n this.startPanning(e);\n }\n }\n allowPanning(e, strict) {\n return (this.pannable &&\n ModifierKey.isMatch(e, this.widgetOptions.modifiers, strict) &&\n this.graph.hook.allowPanning(e));\n }\n startPanning(evt) {\n const e = this.view.normalizeEvent(evt);\n this.clientX = e.clientX;\n this.clientY = e.clientY;\n this.panning = true;\n this.updateClassName();\n this.view.$(document.body).on({\n 'mousemove.panning touchmove.panning': this.pan.bind(this),\n 'mouseup.panning touchend.panning': this.stopPanning.bind(this),\n 'mouseleave.panning': this.stopPanning.bind(this),\n });\n this.view.$(window).on('mouseup.panning', this.stopPanning.bind(this));\n }\n pan(evt) {\n const e = this.view.normalizeEvent(evt);\n const dx = e.clientX - this.clientX;\n const dy = e.clientY - this.clientY;\n this.clientX = e.clientX;\n this.clientY = e.clientY;\n const ts = this.graph.transform.getTranslation();\n const tx = ts.tx + dx;\n const ty = ts.ty + dy;\n this.graph.transform.translate(tx, ty, { ui: true });\n }\n // eslint-disable-next-line\n stopPanning(e) {\n this.panning = false;\n this.updateClassName();\n this.view.$(document.body).off('.panning');\n this.view.$(window).off('.panning');\n }\n updateClassName() {\n const container = this.view.container;\n const panning = this.view.prefixClassName('graph-panning');\n const pannable = this.view.prefixClassName('graph-pannable');\n if (this.pannable) {\n if (this.panning) {\n Dom.addClass(container, panning);\n Dom.removeClass(container, pannable);\n }\n else {\n Dom.removeClass(container, panning);\n Dom.addClass(container, pannable);\n }\n }\n else {\n Dom.removeClass(container, panning);\n Dom.removeClass(container, pannable);\n }\n }\n onRightMouseDown(e) {\n if (e.button === 2 && this.allowPanning(e, true)) {\n this.startPanning(e);\n }\n }\n allowMouseWheel(e) {\n return this.pannable && !e.ctrlKey;\n }\n onMouseWheel(e, deltaX, deltaY) {\n if (!e.ctrlKey) {\n this.graph.translateBy(-deltaX, -deltaY);\n }\n }\n autoPanning(x, y) {\n const buffer = 10;\n const graphArea = this.graph.getGraphArea();\n let dx = 0;\n let dy = 0;\n if (x <= graphArea.left + buffer) {\n dx = -buffer;\n }\n if (y <= graphArea.top + buffer) {\n dy = -buffer;\n }\n if (x >= graphArea.right - buffer) {\n dx = buffer;\n }\n if (y >= graphArea.bottom - buffer) {\n dy = buffer;\n }\n if (dx !== 0 || dy !== 0) {\n this.graph.translateBy(-dx, -dy);\n }\n }\n enablePanning() {\n if (!this.pannable) {\n this.widgetOptions.enabled = true;\n this.updateClassName();\n }\n }\n disablePanning() {\n if (this.pannable) {\n this.widgetOptions.enabled = false;\n this.updateClassName();\n }\n }\n dispose() {\n this.stopListening();\n }\n}\n__decorate([\n Base.dispose()\n], PanningManager.prototype, \"dispose\", null);\n//# sourceMappingURL=panning.js.map","var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Base } from './base';\nimport { SizeSensor } from '../util';\nexport class SizeManager extends Base {\n hasScroller() {\n return this.graph.scroller.widget != null;\n }\n getContainer() {\n return this.hasScroller()\n ? this.graph.scroller.widget.container\n : this.graph.container;\n }\n init() {\n const autoResize = this.options.autoResize;\n if (autoResize) {\n const target = typeof autoResize === 'boolean'\n ? this.getContainer()\n : autoResize;\n SizeSensor.bind(target, () => {\n const container = this.getContainer();\n // container is border-box\n const width = container.offsetWidth;\n const height = container.offsetHeight;\n this.resize(width, height);\n });\n }\n }\n resize(width, height) {\n if (this.hasScroller()) {\n this.resizeScroller(width, height);\n }\n else {\n this.resizeGraph(width, height);\n }\n }\n resizeGraph(width, height) {\n this.graph.transform.resize(width, height);\n }\n resizeScroller(width, height) {\n this.graph.scroller.resize(width, height);\n }\n resizePage(width, height) {\n const instance = this.graph.scroller.widget;\n if (instance) {\n instance.updatePageSize(width, height);\n }\n }\n dispose() {\n SizeSensor.clear(this.getContainer());\n }\n}\n__decorate([\n Base.dispose()\n], SizeManager.prototype, \"dispose\", null);\n//# sourceMappingURL=size.js.map","var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __rest = (this && this.__rest) || function (s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n t[p[i]] = s[p[i]];\n }\n return t;\n};\nimport { FunctionExt, ObjectExt } from '../util';\nimport { Model } from '../model/model';\nimport { CellView } from '../view/cell';\nimport { NodeView } from '../view/node';\nimport { EdgeView } from '../view/edge';\nimport { Knob } from '../addon/knob';\nimport { MiniMap } from '../addon/minimap';\nimport { Snapline } from '../addon/snapline';\nimport { Scroller } from '../addon/scroller';\nimport { Selection } from '../addon/selection';\nimport { Clipboard } from '../addon/clipboard';\nimport { Transform } from '../addon/transform';\nimport { HTML } from '../shape/standard/html';\nimport { Edge as StandardEdge } from '../shape/standard/edge';\nimport { Base } from './base';\nimport { Options } from './options';\nimport { Renderer } from './renderer';\nimport { GraphView } from './view';\nimport { DefsManager } from './defs';\nimport { GridManager } from './grid';\nimport { CoordManager } from './coord';\nimport { SnaplineManager } from './snapline';\nimport { ScrollerManager } from './scroller';\nimport { ClipboardManager } from './clipboard';\nimport { HighlightManager } from './highlight';\nimport { TransformManager } from './transform';\nimport { SelectionManager } from './selection';\nimport { BackgroundManager } from './background';\nimport { HistoryManager } from './history';\nimport { MiniMapManager } from './minimap';\nimport { Keyboard } from './keyboard';\nimport { MouseWheel } from './mousewheel';\nimport { PrintManager } from './print';\nimport { FormatManager } from './format';\nimport { KnobManager } from './knob';\nimport { PanningManager } from './panning';\nimport { SizeManager } from './size';\nvar Decorator;\n(function (Decorator) {\n function hook(nullable, hookName) {\n return (target, methodName, descriptor) => {\n const raw = descriptor.value;\n const name = hookName || methodName;\n descriptor.value = function (...args) {\n const hook = this.options[name];\n if (hook != null) {\n this.getNativeValue = raw.bind(this, ...args);\n const ret = FunctionExt.call(hook, this.graph, ...args);\n this.getNativeValue = null;\n if (ret != null || (nullable === true && ret === null)) {\n return ret;\n }\n }\n return raw.call(this, ...args);\n };\n };\n }\n Decorator.hook = hook;\n function after(hookName) {\n return (target, methodName, descriptor) => {\n const raw = descriptor.value;\n const name = hookName || methodName;\n descriptor.value = function (...args) {\n let ret = raw.call(this, ...args);\n const hook = this.options[name];\n if (hook != null) {\n ret = FunctionExt.call(hook, this.graph, ...args) && ret;\n }\n return ret;\n };\n };\n }\n Decorator.after = after;\n})(Decorator || (Decorator = {}));\nexport class Hook extends Base {\n createModel() {\n if (this.options.model) {\n return this.options.model;\n }\n const model = new Model();\n model.graph = this.graph;\n return model;\n }\n createView() {\n return new GraphView(this.graph);\n }\n createRenderer() {\n return new Renderer(this.graph);\n }\n createDefsManager() {\n return new DefsManager(this.graph);\n }\n createGridManager() {\n return new GridManager(this.graph);\n }\n createCoordManager() {\n return new CoordManager(this.graph);\n }\n createKnobManager() {\n return new KnobManager(this.graph);\n }\n createTransform(node, widgetOptions) {\n const options = this.getTransformOptions(node);\n if (options.resizable || options.rotatable) {\n return new Transform(Object.assign(Object.assign({ node, graph: this.graph }, options), widgetOptions));\n }\n if (options.clearAll) {\n Transform.removeInstances(this.graph);\n }\n return null;\n }\n createKnob(node, widgetOptions) {\n const options = Options.parseOptionGroup(this.graph, node, this.options.knob);\n const localOptions = Object.assign(Object.assign({}, options), widgetOptions);\n if (localOptions.clearAll) {\n Knob.removeInstances(this.graph);\n }\n localOptions.clearAll = false;\n const knob = node.prop('knob');\n const widgets = [];\n const meta = Array.isArray(knob) ? knob : [knob];\n meta.forEach((knob, index) => {\n if (knob) {\n if (knob.enabled === false) {\n return;\n }\n if (typeof knob.enabled === 'function' &&\n knob.enabled.call(this.graph, node) === false) {\n return;\n }\n }\n else {\n return;\n }\n if (options.enabled) {\n widgets.push(new Knob(Object.assign({ node,\n index, graph: this.graph }, localOptions)));\n }\n });\n return widgets;\n }\n getTransformOptions(node) {\n const resizing = Options.parseOptionGroup(this.graph, node, this.options.resizing);\n const rotating = Options.parseOptionGroup(this.graph, node, this.options.rotating);\n const transforming = Options.parseOptionGroup(this.graph, node, this.options.transforming);\n const options = Object.assign(Object.assign({}, transforming), { resizable: resizing.enabled, minWidth: resizing.minWidth, maxWidth: resizing.maxWidth, minHeight: resizing.minHeight, maxHeight: resizing.maxHeight, orthogonalResizing: resizing.orthogonal, restrictedResizing: resizing.restrict != null ? resizing.restrict : resizing.restricted, autoScrollOnResizing: resizing.autoScroll, preserveAspectRatio: resizing.preserveAspectRatio, allowReverse: resizing.allowReverse, rotatable: rotating.enabled, rotateGrid: rotating.grid });\n return options;\n }\n createTransformManager() {\n return new TransformManager(this.graph);\n }\n createHighlightManager() {\n return new HighlightManager(this.graph);\n }\n createBackgroundManager() {\n return new BackgroundManager(this.graph);\n }\n createClipboard() {\n return new Clipboard();\n }\n createClipboardManager() {\n return new ClipboardManager(this.graph);\n }\n createSnapline() {\n return new Snapline(Object.assign({ graph: this.graph }, this.options.snapline));\n }\n createSnaplineManager() {\n return new SnaplineManager(this.graph);\n }\n createSelection() {\n return new Selection(Object.assign({ graph: this.graph }, this.options.selecting));\n }\n createSelectionManager() {\n return new SelectionManager(this.graph);\n }\n // eslint-disable-next-line\n allowRubberband(e) {\n return true;\n }\n createHistoryManager() {\n return new HistoryManager(Object.assign({ graph: this.graph }, this.options.history));\n }\n createScroller() {\n if (this.options.scroller.enabled) {\n return new Scroller(Object.assign({ graph: this.graph }, this.options.scroller));\n }\n return null;\n }\n createScrollerManager() {\n return new ScrollerManager(this.graph);\n }\n // eslint-disable-next-line\n allowPanning(e) {\n return true;\n }\n createMiniMap() {\n const _a = this.options.minimap, { enabled } = _a, options = __rest(_a, [\"enabled\"]);\n if (enabled) {\n return new MiniMap(Object.assign({ graph: this.graph }, options));\n }\n return null;\n }\n createMiniMapManager() {\n return new MiniMapManager(this.graph);\n }\n createKeyboard() {\n return new Keyboard(Object.assign({ graph: this.graph }, this.options.keyboard));\n }\n createMouseWheel() {\n return new MouseWheel(Object.assign({ graph: this.graph }, this.options.mousewheel));\n }\n createPrintManager() {\n return new PrintManager(this.graph);\n }\n createFormatManager() {\n return new FormatManager(this.graph);\n }\n createPanningManager() {\n return new PanningManager(this.graph);\n }\n createSizeManager() {\n return new SizeManager(this.graph);\n }\n allowConnectToBlank(edge) {\n const options = this.options.connecting;\n const allowBlank = options.allowBlank != null ? options.allowBlank : options.dangling;\n if (typeof allowBlank !== 'function') {\n return !!allowBlank;\n }\n const edgeView = this.graph.findViewByCell(edge);\n const sourceCell = edge.getSourceCell();\n const targetCell = edge.getTargetCell();\n const sourceView = this.graph.findViewByCell(sourceCell);\n const targetView = this.graph.findViewByCell(targetCell);\n return FunctionExt.call(allowBlank, this.graph, {\n edge,\n edgeView,\n sourceCell,\n targetCell,\n sourceView,\n targetView,\n sourcePort: edge.getSourcePortId(),\n targetPort: edge.getTargetPortId(),\n sourceMagnet: edgeView.sourceMagnet,\n targetMagnet: edgeView.targetMagnet,\n });\n }\n validateEdge(edge, type, initialTerminal) {\n if (!this.allowConnectToBlank(edge)) {\n const sourceId = edge.getSourceCellId();\n const targetId = edge.getTargetCellId();\n if (!(sourceId && targetId)) {\n return false;\n }\n }\n const validate = this.options.connecting.validateEdge;\n if (validate) {\n return FunctionExt.call(validate, this.graph, {\n edge,\n type,\n previous: initialTerminal,\n });\n }\n return true;\n }\n validateMagnet(cellView, magnet, e) {\n if (magnet.getAttribute('magnet') !== 'passive') {\n const validate = this.options.connecting.validateMagnet;\n if (validate) {\n return FunctionExt.call(validate, this.graph, {\n e,\n magnet,\n view: cellView,\n cell: cellView.cell,\n });\n }\n return true;\n }\n return false;\n }\n getDefaultEdge(sourceView, sourceMagnet) {\n let edge;\n const create = this.options.connecting.createEdge;\n if (create) {\n edge = FunctionExt.call(create, this.graph, {\n sourceMagnet,\n sourceView,\n sourceCell: sourceView.cell,\n });\n }\n if (edge == null) {\n edge = new StandardEdge();\n }\n return edge;\n }\n validateConnection(sourceView, sourceMagnet, targetView, targetMagnet, terminalType, edgeView, candidateTerminal) {\n const options = this.options.connecting;\n const allowLoop = options.allowLoop;\n const allowNode = options.allowNode;\n const allowEdge = options.allowEdge;\n const allowPort = options.allowPort;\n const allowMulti = options.allowMulti != null ? options.allowMulti : options.multi;\n const validate = options.validateConnection;\n const edge = edgeView ? edgeView.cell : null;\n const terminalView = terminalType === 'target' ? targetView : sourceView;\n const terminalMagnet = terminalType === 'target' ? targetMagnet : sourceMagnet;\n let valid = true;\n const doValidate = (validate) => {\n const sourcePort = terminalType === 'source'\n ? candidateTerminal\n ? candidateTerminal.port\n : null\n : edge\n ? edge.getSourcePortId()\n : null;\n const targetPort = terminalType === 'target'\n ? candidateTerminal\n ? candidateTerminal.port\n : null\n : edge\n ? edge.getTargetPortId()\n : null;\n return FunctionExt.call(validate, this.graph, {\n edge,\n edgeView,\n sourceView,\n targetView,\n sourcePort,\n targetPort,\n sourceMagnet,\n targetMagnet,\n sourceCell: sourceView ? sourceView.cell : null,\n targetCell: targetView ? targetView.cell : null,\n type: terminalType,\n });\n };\n if (allowLoop != null) {\n if (typeof allowLoop === 'boolean') {\n if (!allowLoop && sourceView === targetView) {\n valid = false;\n }\n }\n else {\n valid = doValidate(allowLoop);\n }\n }\n if (valid && allowPort != null) {\n if (typeof allowPort === 'boolean') {\n if (!allowPort && terminalMagnet) {\n valid = false;\n }\n }\n else {\n valid = doValidate(allowPort);\n }\n }\n if (valid && allowEdge != null) {\n if (typeof allowEdge === 'boolean') {\n if (!allowEdge && EdgeView.isEdgeView(terminalView)) {\n valid = false;\n }\n }\n else {\n valid = doValidate(allowEdge);\n }\n }\n if (valid && allowNode != null) {\n if (typeof allowNode === 'boolean') {\n if (!allowNode && terminalView != null) {\n if (NodeView.isNodeView(terminalView) && terminalMagnet == null) {\n valid = false;\n }\n }\n }\n else {\n valid = doValidate(allowNode);\n }\n }\n if (valid && allowMulti != null && edgeView) {\n const edge = edgeView.cell;\n const source = terminalType === 'source'\n ? candidateTerminal\n : edge.getSource();\n const target = terminalType === 'target'\n ? candidateTerminal\n : edge.getTarget();\n const terminalCell = candidateTerminal\n ? this.graph.getCellById(candidateTerminal.cell)\n : null;\n if (source && target && source.cell && target.cell && terminalCell) {\n if (typeof allowMulti === 'function') {\n valid = doValidate(allowMulti);\n }\n else {\n const connectedEdges = this.model.getConnectedEdges(terminalCell, {\n outgoing: terminalType === 'source',\n incoming: terminalType === 'target',\n });\n if (connectedEdges.length) {\n if (allowMulti === 'withPort') {\n const exist = connectedEdges.some((link) => {\n const s = link.getSource();\n const t = link.getTarget();\n return (s &&\n t &&\n s.cell === source.cell &&\n t.cell === target.cell &&\n s.port != null &&\n s.port === source.port &&\n t.port != null &&\n t.port === target.port);\n });\n if (exist) {\n valid = false;\n }\n }\n else if (!allowMulti) {\n const exist = connectedEdges.some((link) => {\n const s = link.getSource();\n const t = link.getTarget();\n return (s && t && s.cell === source.cell && t.cell === target.cell);\n });\n if (exist) {\n valid = false;\n }\n }\n }\n }\n }\n }\n if (valid && validate != null) {\n valid = doValidate(validate);\n }\n return valid;\n }\n getRestrictArea(view) {\n const restrict = this.options.translating.restrict;\n const area = typeof restrict === 'function'\n ? FunctionExt.call(restrict, this.graph, view)\n : restrict;\n if (typeof area === 'number') {\n return this.graph.transform.getGraphArea().inflate(area);\n }\n if (area === true) {\n return this.graph.transform.getGraphArea();\n }\n return area || null;\n }\n onViewUpdated(view, flag, options) {\n if (flag & Renderer.FLAG_INSERT || options.mounting) {\n return;\n }\n this.graph.renderer.requestConnectedEdgesUpdate(view, options);\n }\n onViewPostponed(view, flag, options) {\n return this.graph.renderer.forcePostponedViewUpdate(view, flag);\n }\n getCellView(cell) {\n return null;\n }\n createCellView(cell) {\n const options = { graph: this.graph };\n const ctor = this.getCellView(cell);\n if (ctor) {\n return new ctor(cell, options); // eslint-disable-line new-cap\n }\n const view = cell.view;\n if (view != null && typeof view === 'string') {\n const def = CellView.registry.get(view);\n if (def) {\n return new def(cell, options); // eslint-disable-line new-cap\n }\n return CellView.registry.onNotFound(view);\n }\n if (cell.isNode()) {\n return new NodeView(cell, options);\n }\n if (cell.isEdge()) {\n return new EdgeView(cell, options);\n }\n return null;\n }\n getHTMLComponent(node) {\n let ret = node.getHTML();\n if (typeof ret === 'string') {\n ret = HTML.componentRegistry.get(ret) || ret;\n }\n if (ObjectExt.isPlainObject(ret)) {\n ret = ret.render;\n }\n if (typeof ret === 'function') {\n return FunctionExt.call(ret, this.graph, node);\n }\n return ret;\n }\n shouldUpdateHTMLComponent(node) {\n let html = node.getHTML();\n if (typeof html === 'string') {\n html = HTML.componentRegistry.get(html) || html;\n }\n if (ObjectExt.isPlainObject(html)) {\n const shouldUpdate = html\n .shouldComponentUpdate;\n if (typeof shouldUpdate === 'function') {\n return FunctionExt.call(shouldUpdate, this.graph, node);\n }\n return !!shouldUpdate;\n }\n return false;\n }\n onEdgeLabelRendered(args) { } // eslint-disable-line\n onPortRendered(args) { } // eslint-disable-line\n onToolItemCreated(args) { } // eslint-disable-line\n}\n__decorate([\n Decorator.hook()\n], Hook.prototype, \"createModel\", null);\n__decorate([\n Decorator.hook()\n], Hook.prototype, \"createView\", null);\n__decorate([\n Decorator.hook()\n], Hook.prototype, \"createRenderer\", null);\n__decorate([\n Decorator.hook()\n], Hook.prototype, \"createDefsManager\", null);\n__decorate([\n Decorator.hook()\n], Hook.prototype, \"createGridManager\", null);\n__decorate([\n Decorator.hook()\n], Hook.prototype, \"createCoordManager\", null);\n__decorate([\n Decorator.hook()\n], Hook.prototype, \"createKnobManager\", null);\n__decorate([\n Decorator.hook()\n], Hook.prototype, \"createTransform\", null);\n__decorate([\n Decorator.hook()\n], Hook.prototype, \"createKnob\", null);\n__decorate([\n Decorator.hook()\n], Hook.prototype, \"createTransformManager\", null);\n__decorate([\n Decorator.hook()\n], Hook.prototype, \"createHighlightManager\", null);\n__decorate([\n Decorator.hook()\n], Hook.prototype, \"createBackgroundManager\", null);\n__decorate([\n Decorator.hook()\n], Hook.prototype, \"createClipboard\", null);\n__decorate([\n Decorator.hook()\n], Hook.prototype, \"createClipboardManager\", null);\n__decorate([\n Decorator.hook()\n], Hook.prototype, \"createSnapline\", null);\n__decorate([\n Decorator.hook()\n], Hook.prototype, \"createSnaplineManager\", null);\n__decorate([\n Decorator.hook()\n], Hook.prototype, \"createSelection\", null);\n__decorate([\n Decorator.hook()\n], Hook.prototype, \"createSelectionManager\", null);\n__decorate([\n Decorator.hook()\n], Hook.prototype, \"allowRubberband\", null);\n__decorate([\n Decorator.hook()\n], Hook.prototype, \"createHistoryManager\", null);\n__decorate([\n Decorator.hook()\n], Hook.prototype, \"createScroller\", null);\n__decorate([\n Decorator.hook()\n], Hook.prototype, \"createScrollerManager\", null);\n__decorate([\n Decorator.hook()\n], Hook.prototype, \"allowPanning\", null);\n__decorate([\n Decorator.hook()\n], Hook.prototype, \"createMiniMap\", null);\n__decorate([\n Decorator.hook()\n], Hook.prototype, \"createMiniMapManager\", null);\n__decorate([\n Decorator.hook()\n], Hook.prototype, \"createKeyboard\", null);\n__decorate([\n Decorator.hook()\n], Hook.prototype, \"createMouseWheel\", null);\n__decorate([\n Decorator.hook()\n], Hook.prototype, \"createPrintManager\", null);\n__decorate([\n Decorator.hook()\n], Hook.prototype, \"createFormatManager\", null);\n__decorate([\n Decorator.hook()\n], Hook.prototype, \"createPanningManager\", null);\n__decorate([\n Decorator.hook()\n], Hook.prototype, \"createSizeManager\", null);\n__decorate([\n Decorator.after()\n], Hook.prototype, \"onViewUpdated\", null);\n__decorate([\n Decorator.after()\n], Hook.prototype, \"onViewPostponed\", null);\n__decorate([\n Decorator.hook()\n], Hook.prototype, \"getCellView\", null);\n__decorate([\n Decorator.hook(true)\n], Hook.prototype, \"createCellView\", null);\n__decorate([\n Decorator.hook()\n], Hook.prototype, \"getHTMLComponent\", null);\n__decorate([\n Decorator.hook()\n], Hook.prototype, \"shouldUpdateHTMLComponent\", null);\n__decorate([\n Decorator.hook()\n], Hook.prototype, \"onEdgeLabelRendered\", null);\n__decorate([\n Decorator.hook()\n], Hook.prototype, \"onPortRendered\", null);\n__decorate([\n Decorator.hook()\n], Hook.prototype, \"onToolItemCreated\", null);\n//# sourceMappingURL=hook.js.map","var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Basecoat } from '../common';\nimport { Point, Rectangle } from '../geometry';\nimport { Cell } from '../model/cell';\nimport { Node } from '../model/node';\nimport { Edge } from '../model/edge';\nimport { CellView } from '../view/cell';\nimport * as Registry from '../registry';\nimport { HTML } from '../shape/standard/html';\nimport { Base } from './base';\nimport { GraphView } from './view';\nimport { Decorator } from './decorator';\nimport { CSSManager } from './css';\nimport { Hook as HookManager } from './hook';\nimport { Options as GraphOptions } from './options';\nimport { DefsManager as Defs } from './defs';\nimport { GridManager as Grid } from './grid';\nimport { CoordManager as Coord } from './coord';\nimport { Keyboard as Shortcut } from './keyboard';\nimport { PrintManager as Print } from './print';\nimport { MouseWheel as Wheel } from './mousewheel';\nimport { FormatManager as Format } from './format';\nimport { Renderer as ViewRenderer } from './renderer';\nimport { HistoryManager as History } from './history';\nimport { MiniMapManager as MiniMap } from './minimap';\nimport { SnaplineManager as Snapline } from './snapline';\nimport { ScrollerManager as Scroller } from './scroller';\nimport { SelectionManager as Selection } from './selection';\nimport { HighlightManager as Highlight } from './highlight';\nimport { TransformManager as Transform } from './transform';\nimport { ClipboardManager as Clipboard } from './clipboard';\nimport { BackgroundManager as Background } from './background';\nexport class Graph extends Basecoat {\n constructor(options) {\n super();\n this.options = GraphOptions.get(options);\n this.css = new CSSManager(this);\n this.hook = new HookManager(this);\n this.view = this.hook.createView();\n this.defs = this.hook.createDefsManager();\n this.coord = this.hook.createCoordManager();\n this.transform = this.hook.createTransformManager();\n this.knob = this.hook.createKnobManager();\n this.highlight = this.hook.createHighlightManager();\n this.grid = this.hook.createGridManager();\n this.background = this.hook.createBackgroundManager();\n this.model = this.hook.createModel();\n this.renderer = this.hook.createRenderer();\n this.clipboard = this.hook.createClipboardManager();\n this.snapline = this.hook.createSnaplineManager();\n this.selection = this.hook.createSelectionManager();\n this.history = this.hook.createHistoryManager();\n this.scroller = this.hook.createScrollerManager();\n this.minimap = this.hook.createMiniMapManager();\n this.keyboard = this.hook.createKeyboard();\n this.mousewheel = this.hook.createMouseWheel();\n this.print = this.hook.createPrintManager();\n this.format = this.hook.createFormatManager();\n this.panning = this.hook.createPanningManager();\n this.size = this.hook.createSizeManager();\n }\n get container() {\n return this.view.container;\n }\n get [Symbol.toStringTag]() {\n return Graph.toStringTag;\n }\n // #region model\n isNode(cell) {\n return cell.isNode();\n }\n isEdge(cell) {\n return cell.isEdge();\n }\n resetCells(cells, options = {}) {\n this.model.resetCells(cells, options);\n return this;\n }\n clearCells(options = {}) {\n this.model.clear(options);\n return this;\n }\n toJSON(options = {}) {\n return this.model.toJSON(options);\n }\n parseJSON(data) {\n return this.model.parseJSON(data);\n }\n fromJSON(data, options = {}) {\n this.model.fromJSON(data, options);\n return this;\n }\n getCellById(id) {\n return this.model.getCell(id);\n }\n addNode(node, options = {}) {\n return this.model.addNode(node, options);\n }\n addNodes(nodes, options = {}) {\n return this.addCell(nodes.map((node) => (Node.isNode(node) ? node : this.createNode(node))), options);\n }\n createNode(metadata) {\n return this.model.createNode(metadata);\n }\n removeNode(node, options = {}) {\n return this.model.removeCell(node, options);\n }\n addEdge(edge, options = {}) {\n return this.model.addEdge(edge, options);\n }\n addEdges(edges, options = {}) {\n return this.addCell(edges.map((edge) => (Edge.isEdge(edge) ? edge : this.createEdge(edge))), options);\n }\n removeEdge(edge, options = {}) {\n return this.model.removeCell(edge, options);\n }\n createEdge(metadata) {\n return this.model.createEdge(metadata);\n }\n addCell(cell, options = {}) {\n this.model.addCell(cell, options);\n return this;\n }\n removeCell(cell, options = {}) {\n return this.model.removeCell(cell, options);\n }\n removeCells(cells, options = {}) {\n return this.model.removeCells(cells, options);\n }\n removeConnectedEdges(cell, options = {}) {\n return this.model.removeConnectedEdges(cell, options);\n }\n disconnectConnectedEdges(cell, options = {}) {\n this.model.disconnectConnectedEdges(cell, options);\n return this;\n }\n hasCell(cell) {\n return this.model.has(cell);\n }\n /**\n * **Deprecation Notice:** `getCell` is deprecated and will be moved in next\n * major release. Use `getCellById()` instead.\n *\n * @deprecated\n */\n getCell(id) {\n return this.model.getCell(id);\n }\n getCells() {\n return this.model.getCells();\n }\n getCellCount() {\n return this.model.total();\n }\n /**\n * Returns all the nodes in the graph.\n */\n getNodes() {\n return this.model.getNodes();\n }\n /**\n * Returns all the edges in the graph.\n */\n getEdges() {\n return this.model.getEdges();\n }\n /**\n * Returns all outgoing edges for the node.\n */\n getOutgoingEdges(cell) {\n return this.model.getOutgoingEdges(cell);\n }\n /**\n * Returns all incoming edges for the node.\n */\n getIncomingEdges(cell) {\n return this.model.getIncomingEdges(cell);\n }\n /**\n * Returns edges connected with cell.\n */\n getConnectedEdges(cell, options = {}) {\n return this.model.getConnectedEdges(cell, options);\n }\n /**\n * Returns an array of all the roots of the graph.\n */\n getRootNodes() {\n return this.model.getRoots();\n }\n /**\n * Returns an array of all the leafs of the graph.\n */\n getLeafNodes() {\n return this.model.getLeafs();\n }\n /**\n * Returns `true` if the node is a root node, i.e.\n * there is no edges coming to the node.\n */\n isRootNode(cell) {\n return this.model.isRoot(cell);\n }\n /**\n * Returns `true` if the node is a leaf node, i.e.\n * there is no edges going out from the node.\n */\n isLeafNode(cell) {\n return this.model.isLeaf(cell);\n }\n /**\n * Returns all the neighbors of node in the graph. Neighbors are all\n * the nodes connected to node via either incoming or outgoing edge.\n */\n getNeighbors(cell, options = {}) {\n return this.model.getNeighbors(cell, options);\n }\n /**\n * Returns `true` if `cell2` is a neighbor of `cell1`.\n */\n isNeighbor(cell1, cell2, options = {}) {\n return this.model.isNeighbor(cell1, cell2, options);\n }\n getSuccessors(cell, options = {}) {\n return this.model.getSuccessors(cell, options);\n }\n /**\n * Returns `true` if `cell2` is a successor of `cell1`.\n */\n isSuccessor(cell1, cell2, options = {}) {\n return this.model.isSuccessor(cell1, cell2, options);\n }\n getPredecessors(cell, options = {}) {\n return this.model.getPredecessors(cell, options);\n }\n /**\n * Returns `true` if `cell2` is a predecessor of `cell1`.\n */\n isPredecessor(cell1, cell2, options = {}) {\n return this.model.isPredecessor(cell1, cell2, options);\n }\n getCommonAncestor(...cells) {\n return this.model.getCommonAncestor(...cells);\n }\n /**\n * Returns an array of cells that result from finding nodes/edges that\n * are connected to any of the cells in the cells array. This function\n * loops over cells and if the current cell is a edge, it collects its\n * source/target nodes; if it is an node, it collects its incoming and\n * outgoing edges if both the edge terminal (source/target) are in the\n * cells array.\n */\n getSubGraph(cells, options = {}) {\n return this.model.getSubGraph(cells, options);\n }\n /**\n * Clones the whole subgraph (including all the connected links whose\n * source/target is in the subgraph). If `options.deep` is `true`, also\n * take into account all the embedded cells of all the subgraph cells.\n *\n * Returns a map of the form: { [original cell ID]: [clone] }.\n */\n cloneSubGraph(cells, options = {}) {\n return this.model.cloneSubGraph(cells, options);\n }\n cloneCells(cells) {\n return this.model.cloneCells(cells);\n }\n getNodesFromPoint(x, y) {\n return this.model.getNodesFromPoint(x, y);\n }\n getNodesInArea(x, y, w, h, options) {\n return this.model.getNodesInArea(x, y, w, h, options);\n }\n getNodesUnderNode(node, options = {}) {\n return this.model.getNodesUnderNode(node, options);\n }\n searchCell(cell, iterator, options = {}) {\n this.model.search(cell, iterator, options);\n return this;\n }\n /** *\n * Returns an array of IDs of nodes on the shortest\n * path between source and target.\n */\n getShortestPath(source, target, options = {}) {\n return this.model.getShortestPath(source, target, options);\n }\n /**\n * Returns the bounding box that surrounds all cells in the graph.\n */\n getAllCellsBBox() {\n return this.model.getAllCellsBBox();\n }\n /**\n * Returns the bounding box that surrounds all the given cells.\n */\n getCellsBBox(cells, options = {}) {\n return this.model.getCellsBBox(cells, options);\n }\n startBatch(name, data = {}) {\n this.model.startBatch(name, data);\n }\n stopBatch(name, data = {}) {\n this.model.stopBatch(name, data);\n }\n batchUpdate(arg1, arg2, arg3) {\n const name = typeof arg1 === 'string' ? arg1 : 'update';\n const execute = typeof arg1 === 'string' ? arg2 : arg1;\n const data = typeof arg2 === 'function' ? arg3 : arg2;\n this.startBatch(name, data);\n const result = execute();\n this.stopBatch(name, data);\n return result;\n }\n updateCellId(cell, newId) {\n return this.model.updateCellId(cell, newId);\n }\n // #endregion\n // #region view\n isFrozen() {\n return this.renderer.isFrozen();\n }\n freeze(options = {}) {\n this.renderer.freeze(options);\n return this;\n }\n unfreeze(options = {}) {\n this.renderer.unfreeze(options);\n return this;\n }\n isAsync() {\n return this.renderer.isAsync();\n }\n setAsync(async) {\n this.renderer.setAsync(async);\n return this;\n }\n findView(ref) {\n if (Cell.isCell(ref)) {\n return this.findViewByCell(ref);\n }\n return this.findViewByElem(ref);\n }\n findViews(ref) {\n if (Rectangle.isRectangleLike(ref)) {\n return this.findViewsInArea(ref);\n }\n if (Point.isPointLike(ref)) {\n return this.findViewsFromPoint(ref);\n }\n return [];\n }\n findViewByCell(cell) {\n return this.renderer.findViewByCell(cell);\n }\n findViewByElem(elem) {\n return this.renderer.findViewByElem(elem);\n }\n findViewsFromPoint(x, y) {\n const p = typeof x === 'number' ? { x, y: y } : x;\n return this.renderer.findViewsFromPoint(p);\n }\n findViewsInArea(x, y, width, height, options) {\n const rect = typeof x === 'number'\n ? {\n x,\n y: y,\n width: width,\n height: height,\n }\n : x;\n const localOptions = typeof x === 'number'\n ? options\n : y;\n return this.renderer.findViewsInArea(rect, localOptions);\n }\n isViewMounted(view) {\n return this.renderer.isViewMounted(view);\n }\n getMountedViews() {\n return this.renderer.getMountedViews();\n }\n getUnmountedViews() {\n return this.renderer.getUnmountedViews();\n }\n matrix(mat) {\n if (typeof mat === 'undefined') {\n return this.transform.getMatrix();\n }\n this.transform.setMatrix(mat);\n return this;\n }\n resize(width, height) {\n this.size.resize(width, height);\n return this;\n }\n resizeGraph(width, height) {\n this.size.resizeGraph(width, height);\n return this;\n }\n resizeScroller(width, height) {\n this.size.resizeScroller(width, height);\n return this;\n }\n resizePage(width, height) {\n this.size.resizePage(width, height);\n return this;\n }\n scale(sx, sy = sx, cx = 0, cy = 0) {\n if (typeof sx === 'undefined') {\n return this.transform.getScale();\n }\n this.transform.scale(sx, sy, cx, cy);\n return this;\n }\n zoom(factor, options) {\n const scroller = this.scroller.widget;\n if (scroller) {\n if (typeof factor === 'undefined') {\n return scroller.zoom();\n }\n scroller.zoom(factor, options);\n }\n else {\n if (typeof factor === 'undefined') {\n return this.transform.getZoom();\n }\n this.transform.zoom(factor, options);\n }\n return this;\n }\n zoomTo(factor, options = {}) {\n const scroller = this.scroller.widget;\n if (scroller) {\n scroller.zoom(factor, Object.assign(Object.assign({}, options), { absolute: true }));\n }\n else {\n this.transform.zoom(factor, Object.assign(Object.assign({}, options), { absolute: true }));\n }\n return this;\n }\n zoomToRect(rect, options = {}) {\n const scroller = this.scroller.widget;\n if (scroller) {\n scroller.zoomToRect(rect, options);\n }\n else {\n this.transform.zoomToRect(rect, options);\n }\n return this;\n }\n zoomToFit(options = {}) {\n const scroller = this.scroller.widget;\n if (scroller) {\n scroller.zoomToFit(options);\n }\n else {\n this.transform.zoomToFit(options);\n }\n return this;\n }\n rotate(angle, cx, cy) {\n if (typeof angle === 'undefined') {\n return this.transform.getRotation();\n }\n this.transform.rotate(angle, cx, cy);\n return this;\n }\n translate(tx, ty) {\n if (typeof tx === 'undefined') {\n return this.transform.getTranslation();\n }\n this.transform.translate(tx, ty);\n return this;\n }\n translateBy(dx, dy) {\n const ts = this.translate();\n const tx = ts.tx + dx;\n const ty = ts.ty + dy;\n return this.translate(tx, ty);\n }\n /**\n * **Deprecation Notice:** `getArea` is deprecated and will be moved in next\n * major release. Use `getGraphArea()` instead.\n *\n * @deprecated\n */\n getArea() {\n return this.transform.getGraphArea();\n }\n getGraphArea() {\n return this.transform.getGraphArea();\n }\n getContentArea(options = {}) {\n return this.transform.getContentArea(options);\n }\n getContentBBox(options = {}) {\n return this.transform.getContentBBox(options);\n }\n fitToContent(gridWidth, gridHeight, padding, options) {\n return this.transform.fitToContent(gridWidth, gridHeight, padding, options);\n }\n scaleContentToFit(options = {}) {\n this.transform.scaleContentToFit(options);\n return this;\n }\n /**\n * Position the center of graph to the center of the viewport.\n */\n center(optons) {\n return this.centerPoint(optons);\n }\n centerPoint(x, y, options) {\n const scroller = this.scroller.widget;\n if (scroller) {\n scroller.centerPoint(x, y, options);\n }\n else {\n this.transform.centerPoint(x, y);\n }\n return this;\n }\n centerContent(options) {\n const scroller = this.scroller.widget;\n if (scroller) {\n scroller.centerContent(options);\n }\n else {\n this.transform.centerContent(options);\n }\n return this;\n }\n centerCell(cell, options) {\n const scroller = this.scroller.widget;\n if (scroller) {\n scroller.centerCell(cell, options);\n }\n else {\n this.transform.centerCell(cell);\n }\n return this;\n }\n positionPoint(point, x, y, options = {}) {\n const scroller = this.scroller.widget;\n if (scroller) {\n scroller.positionPoint(point, x, y, options);\n }\n else {\n this.transform.positionPoint(point, x, y);\n }\n return this;\n }\n positionRect(rect, direction, options) {\n const scroller = this.scroller.widget;\n if (scroller) {\n scroller.positionRect(rect, direction, options);\n }\n else {\n this.transform.positionRect(rect, direction);\n }\n return this;\n }\n positionCell(cell, direction, options) {\n const scroller = this.scroller.widget;\n if (scroller) {\n scroller.positionCell(cell, direction, options);\n }\n else {\n this.transform.positionCell(cell, direction);\n }\n return this;\n }\n positionContent(pos, options) {\n const scroller = this.scroller.widget;\n if (scroller) {\n scroller.positionContent(pos, options);\n }\n else {\n this.transform.positionContent(pos, options);\n }\n return this;\n }\n // #endregion\n // #region coord\n getClientMatrix() {\n return this.coord.getClientMatrix();\n }\n /**\n * Returns coordinates of the graph viewport, relative to the window.\n */\n getClientOffset() {\n return this.coord.getClientOffset();\n }\n /**\n * Returns coordinates of the graph viewport, relative to the document.\n */\n getPageOffset() {\n return this.coord.getPageOffset();\n }\n snapToGrid(x, y) {\n return this.coord.snapToGrid(x, y);\n }\n pageToLocal(x, y, width, height) {\n if (Rectangle.isRectangleLike(x)) {\n return this.coord.pageToLocalRect(x);\n }\n if (typeof x === 'number' &&\n typeof y === 'number' &&\n typeof width === 'number' &&\n typeof height === 'number') {\n return this.coord.pageToLocalRect(x, y, width, height);\n }\n return this.coord.pageToLocalPoint(x, y);\n }\n localToPage(x, y, width, height) {\n if (Rectangle.isRectangleLike(x)) {\n return this.coord.localToPageRect(x);\n }\n if (typeof x === 'number' &&\n typeof y === 'number' &&\n typeof width === 'number' &&\n typeof height === 'number') {\n return this.coord.localToPageRect(x, y, width, height);\n }\n return this.coord.localToPagePoint(x, y);\n }\n clientToLocal(x, y, width, height) {\n if (Rectangle.isRectangleLike(x)) {\n return this.coord.clientToLocalRect(x);\n }\n if (typeof x === 'number' &&\n typeof y === 'number' &&\n typeof width === 'number' &&\n typeof height === 'number') {\n return this.coord.clientToLocalRect(x, y, width, height);\n }\n return this.coord.clientToLocalPoint(x, y);\n }\n localToClient(x, y, width, height) {\n if (Rectangle.isRectangleLike(x)) {\n return this.coord.localToClientRect(x);\n }\n if (typeof x === 'number' &&\n typeof y === 'number' &&\n typeof width === 'number' &&\n typeof height === 'number') {\n return this.coord.localToClientRect(x, y, width, height);\n }\n return this.coord.localToClientPoint(x, y);\n }\n localToGraph(x, y, width, height) {\n if (Rectangle.isRectangleLike(x)) {\n return this.coord.localToGraphRect(x);\n }\n if (typeof x === 'number' &&\n typeof y === 'number' &&\n typeof width === 'number' &&\n typeof height === 'number') {\n return this.coord.localToGraphRect(x, y, width, height);\n }\n return this.coord.localToGraphPoint(x, y);\n }\n graphToLocal(x, y, width, height) {\n if (Rectangle.isRectangleLike(x)) {\n return this.coord.graphToLocalRect(x);\n }\n if (typeof x === 'number' &&\n typeof y === 'number' &&\n typeof width === 'number' &&\n typeof height === 'number') {\n return this.coord.graphToLocalRect(x, y, width, height);\n }\n return this.coord.graphToLocalPoint(x, y);\n }\n clientToGraph(x, y, width, height) {\n if (Rectangle.isRectangleLike(x)) {\n return this.coord.clientToGraphRect(x);\n }\n if (typeof x === 'number' &&\n typeof y === 'number' &&\n typeof width === 'number' &&\n typeof height === 'number') {\n return this.coord.clientToGraphRect(x, y, width, height);\n }\n return this.coord.clientToGraphPoint(x, y);\n }\n // #endregion\n // #region defs\n defineFilter(options) {\n return this.defs.filter(options);\n }\n defineGradient(options) {\n return this.defs.gradient(options);\n }\n defineMarker(options) {\n return this.defs.marker(options);\n }\n // #endregion\n // #region grid\n getGridSize() {\n return this.grid.getGridSize();\n }\n setGridSize(gridSize) {\n this.grid.setGridSize(gridSize);\n return this;\n }\n showGrid() {\n this.grid.show();\n return this;\n }\n hideGrid() {\n this.grid.hide();\n return this;\n }\n clearGrid() {\n this.grid.clear();\n return this;\n }\n drawGrid(options) {\n this.grid.draw(options);\n return this;\n }\n // #endregion\n // #region background\n updateBackground() {\n this.background.update();\n return this;\n }\n drawBackground(options, onGraph) {\n const scroller = this.scroller.widget;\n if (scroller != null && (this.options.background == null || !onGraph)) {\n scroller.backgroundManager.draw(options);\n }\n else {\n this.background.draw(options);\n }\n return this;\n }\n clearBackground(onGraph) {\n const scroller = this.scroller.widget;\n if (scroller != null && (this.options.background == null || !onGraph)) {\n scroller.backgroundManager.clear();\n }\n else {\n this.background.clear();\n }\n return this;\n }\n // #endregion\n // #region clipboard\n isClipboardEnabled() {\n return !this.clipboard.disabled;\n }\n enableClipboard() {\n this.clipboard.enable();\n return this;\n }\n disableClipboard() {\n this.clipboard.disable();\n return this;\n }\n toggleClipboard(enabled) {\n if (enabled != null) {\n if (enabled !== this.isClipboardEnabled()) {\n if (enabled) {\n this.enableClipboard();\n }\n else {\n this.disableClipboard();\n }\n }\n }\n else if (this.isClipboardEnabled()) {\n this.disableClipboard();\n }\n else {\n this.enableClipboard();\n }\n return this;\n }\n isClipboardEmpty() {\n return this.clipboard.isEmpty();\n }\n getCellsInClipboard() {\n return this.clipboard.cells;\n }\n cleanClipboard() {\n this.clipboard.clean();\n return this;\n }\n copy(cells, options = {}) {\n this.clipboard.copy(cells, options);\n return this;\n }\n cut(cells, options = {}) {\n this.clipboard.cut(cells, options);\n return this;\n }\n paste(options = {}, graph = this) {\n return this.clipboard.paste(options, graph);\n }\n // #endregion\n // #region redo/undo\n isHistoryEnabled() {\n return !this.history.disabled;\n }\n enableHistory() {\n this.history.enable();\n return this;\n }\n disableHistory() {\n this.history.disable();\n return this;\n }\n toggleHistory(enabled) {\n if (enabled != null) {\n if (enabled !== this.isHistoryEnabled()) {\n if (enabled) {\n this.enableHistory();\n }\n else {\n this.disableHistory();\n }\n }\n }\n else if (this.isHistoryEnabled()) {\n this.disableHistory();\n }\n else {\n this.enableHistory();\n }\n return this;\n }\n undo(options = {}) {\n this.history.undo(options);\n return this;\n }\n undoAndCancel(options = {}) {\n this.history.cancel(options);\n return this;\n }\n redo(options = {}) {\n this.history.redo(options);\n return this;\n }\n canUndo() {\n return this.history.canUndo();\n }\n canRedo() {\n return this.history.canRedo();\n }\n cleanHistory(options = {}) {\n this.history.clean(options);\n }\n // #endregion\n // #region keyboard\n isKeyboardEnabled() {\n return !this.keyboard.disabled;\n }\n enableKeyboard() {\n this.keyboard.enable();\n return this;\n }\n disableKeyboard() {\n this.keyboard.disable();\n return this;\n }\n toggleKeyboard(enabled) {\n if (enabled != null) {\n if (enabled !== this.isKeyboardEnabled()) {\n if (enabled) {\n this.enableKeyboard();\n }\n else {\n this.disableKeyboard();\n }\n }\n }\n else if (this.isKeyboardEnabled()) {\n this.disableKeyboard();\n }\n else {\n this.enableKeyboard();\n }\n return this;\n }\n bindKey(keys, callback, action) {\n this.keyboard.on(keys, callback, action);\n return this;\n }\n unbindKey(keys, action) {\n this.keyboard.off(keys, action);\n return this;\n }\n // #endregion\n // #region mousewheel\n isMouseWheelEnabled() {\n return !this.mousewheel.disabled;\n }\n enableMouseWheel() {\n this.mousewheel.enable();\n return this;\n }\n disableMouseWheel() {\n this.mousewheel.disable();\n return this;\n }\n toggleMouseWheel(enabled) {\n if (enabled == null) {\n if (this.isMouseWheelEnabled()) {\n this.disableMouseWheel();\n }\n else {\n this.enableMouseWheel();\n }\n }\n else if (enabled) {\n this.enableMouseWheel();\n }\n else {\n this.disableMouseWheel();\n }\n return this;\n }\n // #endregion\n // #region panning\n isPannable() {\n const scroller = this.scroller.widget;\n if (scroller) {\n return this.scroller.pannable;\n }\n return this.panning.pannable;\n }\n enablePanning() {\n const scroller = this.scroller.widget;\n if (scroller) {\n this.scroller.enablePanning();\n }\n else {\n this.panning.enablePanning();\n }\n return this;\n }\n disablePanning() {\n const scroller = this.scroller.widget;\n if (scroller) {\n this.scroller.disablePanning();\n }\n else {\n this.panning.disablePanning();\n }\n return this;\n }\n togglePanning(pannable) {\n if (pannable == null) {\n if (this.isPannable()) {\n this.disablePanning();\n }\n else {\n this.enablePanning();\n }\n }\n else if (pannable !== this.isPannable()) {\n if (pannable) {\n this.enablePanning();\n }\n else {\n this.disablePanning();\n }\n }\n return this;\n }\n // #endregion\n // #region scroller\n lockScroller() {\n var _a;\n (_a = this.scroller.widget) === null || _a === void 0 ? void 0 : _a.lock();\n }\n unlockScroller() {\n var _a;\n (_a = this.scroller.widget) === null || _a === void 0 ? void 0 : _a.unlock();\n }\n updateScroller() {\n var _a;\n (_a = this.scroller.widget) === null || _a === void 0 ? void 0 : _a.update();\n }\n getScrollbarPosition() {\n const scroller = this.scroller.widget;\n return scroller.scrollbarPosition();\n }\n setScrollbarPosition(left, top, options) {\n const scroller = this.scroller.widget;\n scroller.scrollbarPosition(left, top, options);\n return this;\n }\n /**\n * Try to scroll to ensure that the position (x,y) on the graph (in local\n * coordinates) is at the center of the viewport. If only one of the\n * coordinates is specified, only scroll in the specified dimension and\n * keep the other coordinate unchanged.\n */\n scrollToPoint(x, y, options) {\n const scroller = this.scroller.widget;\n scroller.scrollToPoint(x, y, options);\n return this;\n }\n /**\n * Try to scroll to ensure that the center of graph content is at the\n * center of the viewport.\n */\n scrollToContent(options) {\n const scroller = this.scroller.widget;\n scroller.scrollToContent(options);\n return this;\n }\n /**\n * Try to scroll to ensure that the center of cell is at the center of\n * the viewport.\n */\n scrollToCell(cell, options) {\n const scroller = this.scroller.widget;\n scroller.scrollToCell(cell, options);\n return this;\n }\n transitionToPoint(x, y, options) {\n const scroller = this.scroller.widget;\n scroller.transitionToPoint(x, y, options);\n return this;\n }\n transitionToRect(rect, options = {}) {\n const scroller = this.scroller.widget;\n scroller.transitionToRect(rect, options);\n return this;\n }\n // #endregion\n // #region selection\n isSelectionEnabled() {\n return !this.selection.disabled;\n }\n enableSelection() {\n this.selection.enable();\n return this;\n }\n disableSelection() {\n this.selection.disable();\n return this;\n }\n toggleSelection(enabled) {\n if (enabled != null) {\n if (enabled !== this.isSelectionEnabled()) {\n if (enabled) {\n this.enableSelection();\n }\n else {\n this.disableSelection();\n }\n }\n }\n else if (this.isSelectionEnabled()) {\n this.disableSelection();\n }\n else {\n this.enableSelection();\n }\n return this;\n }\n isMultipleSelection() {\n return this.selection.isMultiple();\n }\n enableMultipleSelection() {\n this.selection.enableMultiple();\n return this;\n }\n disableMultipleSelection() {\n this.selection.disableMultiple();\n return this;\n }\n toggleMultipleSelection(multiple) {\n if (multiple != null) {\n if (multiple !== this.isMultipleSelection()) {\n if (multiple) {\n this.enableMultipleSelection();\n }\n else {\n this.disableMultipleSelection();\n }\n }\n }\n else if (this.isMultipleSelection()) {\n this.disableMultipleSelection();\n }\n else {\n this.enableMultipleSelection();\n }\n return this;\n }\n isSelectionMovable() {\n return this.selection.widget.options.movable !== false;\n }\n enableSelectionMovable() {\n this.selection.widget.options.movable = true;\n return this;\n }\n disableSelectionMovable() {\n this.selection.widget.options.movable = false;\n return this;\n }\n toggleSelectionMovable(movable) {\n if (movable != null) {\n if (movable !== this.isSelectionMovable()) {\n if (movable) {\n this.enableSelectionMovable();\n }\n else {\n this.disableSelectionMovable();\n }\n }\n }\n else if (this.isSelectionMovable()) {\n this.disableSelectionMovable();\n }\n else {\n this.enableSelectionMovable();\n }\n return this;\n }\n isRubberbandEnabled() {\n return !this.selection.rubberbandDisabled;\n }\n enableRubberband() {\n this.selection.enableRubberband();\n return this;\n }\n disableRubberband() {\n this.selection.disableRubberband();\n return this;\n }\n toggleRubberband(enabled) {\n if (enabled != null) {\n if (enabled !== this.isRubberbandEnabled()) {\n if (enabled) {\n this.enableRubberband();\n }\n else {\n this.disableRubberband();\n }\n }\n }\n else if (this.isRubberbandEnabled()) {\n this.disableRubberband();\n }\n else {\n this.enableRubberband();\n }\n return this;\n }\n isStrictRubberband() {\n return this.selection.widget.options.strict === true;\n }\n enableStrictRubberband() {\n this.selection.widget.options.strict = true;\n return this;\n }\n disableStrictRubberband() {\n this.selection.widget.options.strict = false;\n return this;\n }\n toggleStrictRubberband(strict) {\n if (strict != null) {\n if (strict !== this.isStrictRubberband()) {\n if (strict) {\n this.enableStrictRubberband();\n }\n else {\n this.disableStrictRubberband();\n }\n }\n }\n else if (this.isStrictRubberband()) {\n this.disableStrictRubberband();\n }\n else {\n this.enableStrictRubberband();\n }\n return this;\n }\n setRubberbandModifiers(modifiers) {\n this.selection.setModifiers(modifiers);\n }\n setSelectionFilter(filter) {\n this.selection.setFilter(filter);\n return this;\n }\n setSelectionDisplayContent(content) {\n this.selection.setContent(content);\n return this;\n }\n isSelectionEmpty() {\n return this.selection.isEmpty();\n }\n cleanSelection(options) {\n this.selection.clean(options);\n return this;\n }\n resetSelection(cells, options) {\n this.selection.reset(cells, options);\n return this;\n }\n getSelectedCells() {\n return this.selection.cells;\n }\n getSelectedCellCount() {\n return this.selection.length;\n }\n isSelected(cell) {\n return this.selection.isSelected(cell);\n }\n select(cells, options) {\n this.selection.select(cells, options);\n return this;\n }\n unselect(cells, options) {\n this.selection.unselect(cells, options);\n return this;\n }\n // #endregion\n // #region snapline\n isSnaplineEnabled() {\n return !this.snapline.widget.disabled;\n }\n enableSnapline() {\n this.snapline.widget.enable();\n return this;\n }\n disableSnapline() {\n this.snapline.widget.disable();\n return this;\n }\n toggleSnapline(enabled) {\n if (enabled != null) {\n if (enabled !== this.isSnaplineEnabled()) {\n if (enabled) {\n this.enableSnapline();\n }\n else {\n this.disableSnapline();\n }\n }\n }\n else {\n if (this.isSnaplineEnabled()) {\n this.disableSnapline();\n }\n else {\n this.enableSnapline();\n }\n return this;\n }\n }\n hideSnapline() {\n this.snapline.widget.hide();\n return this;\n }\n setSnaplineFilter(filter) {\n this.snapline.widget.setFilter(filter);\n return this;\n }\n isSnaplineOnResizingEnabled() {\n return this.snapline.widget.options.resizing === true;\n }\n enableSnaplineOnResizing() {\n this.snapline.widget.options.resizing = true;\n return this;\n }\n disableSnaplineOnResizing() {\n this.snapline.widget.options.resizing = false;\n return this;\n }\n toggleSnaplineOnResizing(enableOnResizing) {\n if (enableOnResizing != null) {\n if (enableOnResizing !== this.isSnaplineOnResizingEnabled()) {\n if (enableOnResizing) {\n this.enableSnaplineOnResizing();\n }\n else {\n this.disableSnaplineOnResizing();\n }\n }\n }\n else if (this.isSnaplineOnResizingEnabled()) {\n this.disableSnaplineOnResizing();\n }\n else {\n this.enableSnaplineOnResizing();\n }\n return this;\n }\n isSharpSnapline() {\n return this.snapline.widget.options.sharp === true;\n }\n enableSharpSnapline() {\n this.snapline.widget.options.sharp = true;\n return this;\n }\n disableSharpSnapline() {\n this.snapline.widget.options.sharp = false;\n return this;\n }\n toggleSharpSnapline(sharp) {\n if (sharp != null) {\n if (sharp !== this.isSharpSnapline()) {\n if (sharp) {\n this.enableSharpSnapline();\n }\n else {\n this.disableSharpSnapline();\n }\n }\n }\n else if (this.isSharpSnapline()) {\n this.disableSharpSnapline();\n }\n else {\n this.enableSharpSnapline();\n }\n return this;\n }\n getSnaplineTolerance() {\n return this.snapline.widget.options.tolerance;\n }\n setSnaplineTolerance(tolerance) {\n this.snapline.widget.options.tolerance = tolerance;\n return this;\n }\n // #endregion\n // #region tools\n removeTools() {\n this.emit('tools:remove');\n return this;\n }\n hideTools() {\n this.emit('tools:hide');\n return this;\n }\n showTools() {\n this.emit('tools:show');\n return this;\n }\n // #endregion\n // #region format\n toSVG(callback, options = {}) {\n this.format.toSVG(callback, options);\n }\n toDataURL(callback, options) {\n this.format.toDataURL(callback, options);\n }\n toPNG(callback, options = {}) {\n this.format.toPNG(callback, options);\n }\n toJPEG(callback, options = {}) {\n this.format.toJPEG(callback, options);\n }\n // #endregion\n // #region print\n printPreview(options) {\n this.print.show(options);\n }\n // #endregion\n // #region dispose\n dispose() {\n this.clearCells();\n this.off();\n this.css.dispose();\n this.hook.dispose();\n this.defs.dispose();\n this.grid.dispose();\n this.coord.dispose();\n this.transform.dispose();\n this.knob.dispose();\n this.highlight.dispose();\n this.background.dispose();\n this.clipboard.dispose();\n this.snapline.dispose();\n this.selection.dispose();\n this.history.dispose();\n this.keyboard.dispose();\n this.mousewheel.dispose();\n this.print.dispose();\n this.format.dispose();\n this.minimap.dispose();\n this.panning.dispose();\n this.scroller.dispose();\n this.view.dispose();\n this.renderer.dispose();\n this.size.dispose();\n }\n}\n__decorate([\n Decorator.checkScroller()\n], Graph.prototype, \"lockScroller\", null);\n__decorate([\n Decorator.checkScroller()\n], Graph.prototype, \"unlockScroller\", null);\n__decorate([\n Decorator.checkScroller()\n], Graph.prototype, \"updateScroller\", null);\n__decorate([\n Decorator.checkScroller()\n], Graph.prototype, \"getScrollbarPosition\", null);\n__decorate([\n Decorator.checkScroller()\n], Graph.prototype, \"setScrollbarPosition\", null);\n__decorate([\n Decorator.checkScroller()\n], Graph.prototype, \"scrollToPoint\", null);\n__decorate([\n Decorator.checkScroller()\n], Graph.prototype, \"scrollToContent\", null);\n__decorate([\n Decorator.checkScroller()\n], Graph.prototype, \"scrollToCell\", null);\n__decorate([\n Decorator.checkScroller()\n], Graph.prototype, \"transitionToPoint\", null);\n__decorate([\n Decorator.checkScroller()\n], Graph.prototype, \"transitionToRect\", null);\n__decorate([\n Basecoat.dispose()\n], Graph.prototype, \"dispose\", null);\n(function (Graph) {\n /* eslint-disable @typescript-eslint/no-unused-vars */\n Graph.View = GraphView;\n Graph.Hook = HookManager;\n Graph.Renderer = ViewRenderer;\n Graph.Keyboard = Shortcut;\n Graph.MouseWheel = Wheel;\n Graph.BaseManager = Base;\n Graph.DefsManager = Defs;\n Graph.GridManager = Grid;\n Graph.CoordManager = Coord;\n Graph.PrintManager = Print;\n Graph.FormatManager = Format;\n Graph.MiniMapManager = MiniMap;\n Graph.HistoryManager = History;\n Graph.SnaplineManager = Snapline;\n Graph.ScrollerManager = Scroller;\n Graph.ClipboardManager = Clipboard;\n Graph.TransformManager = Transform;\n Graph.HighlightManager = Highlight;\n Graph.BackgroundManager = Background;\n Graph.SelectionManager = Selection;\n})(Graph || (Graph = {}));\n(function (Graph) {\n Graph.toStringTag = `X6.${Graph.name}`;\n function isGraph(instance) {\n if (instance == null) {\n return false;\n }\n if (instance instanceof Graph) {\n return true;\n }\n const tag = instance[Symbol.toStringTag];\n const graph = instance;\n if ((tag == null || tag === Graph.toStringTag) &&\n graph.hook != null &&\n graph.view != null &&\n graph.model != null) {\n return true;\n }\n return false;\n }\n Graph.isGraph = isGraph;\n})(Graph || (Graph = {}));\n(function (Graph) {\n function render(options, data) {\n const graph = options instanceof HTMLElement\n ? new Graph({ container: options })\n : new Graph(options);\n if (data != null) {\n graph.fromJSON(data);\n }\n return graph;\n }\n Graph.render = render;\n})(Graph || (Graph = {}));\n(function (Graph) {\n Graph.registerNode = Node.registry.register;\n Graph.registerEdge = Edge.registry.register;\n Graph.registerView = CellView.registry.register;\n Graph.registerAttr = Registry.Attr.registry.register;\n Graph.registerGrid = Registry.Grid.registry.register;\n Graph.registerFilter = Registry.Filter.registry.register;\n Graph.registerNodeTool = Registry.NodeTool.registry.register;\n Graph.registerEdgeTool = Registry.EdgeTool.registry.register;\n Graph.registerBackground = Registry.Background.registry.register;\n Graph.registerHighlighter = Registry.Highlighter.registry.register;\n Graph.registerPortLayout = Registry.PortLayout.registry.register;\n Graph.registerPortLabelLayout = Registry.PortLabelLayout.registry.register;\n Graph.registerMarker = Registry.Marker.registry.register;\n Graph.registerRouter = Registry.Router.registry.register;\n Graph.registerConnector = Registry.Connector.registry.register;\n Graph.registerAnchor = Registry.NodeAnchor.registry.register;\n Graph.registerEdgeAnchor = Registry.EdgeAnchor.registry.register;\n Graph.registerConnectionPoint = Registry.ConnectionPoint.registry.register;\n Graph.registerConnectionStrategy = Registry.ConnectionStrategy.registry.register;\n Graph.registerHTMLComponent = HTML.componentRegistry.register;\n})(Graph || (Graph = {}));\n(function (Graph) {\n Graph.unregisterNode = Node.registry.unregister;\n Graph.unregisterEdge = Edge.registry.unregister;\n Graph.unregisterView = CellView.registry.unregister;\n Graph.unregisterAttr = Registry.Attr.registry.unregister;\n Graph.unregisterGrid = Registry.Grid.registry.unregister;\n Graph.unregisterFilter = Registry.Filter.registry.unregister;\n Graph.unregisterNodeTool = Registry.NodeTool.registry.unregister;\n Graph.unregisterEdgeTool = Registry.EdgeTool.registry.unregister;\n Graph.unregisterBackground = Registry.Background.registry.unregister;\n Graph.unregisterHighlighter = Registry.Highlighter.registry.unregister;\n Graph.unregisterPortLayout = Registry.PortLayout.registry.unregister;\n Graph.unregisterPortLabelLayout = Registry.PortLabelLayout.registry.unregister;\n Graph.unregisterMarker = Registry.Marker.registry.unregister;\n Graph.unregisterRouter = Registry.Router.registry.unregister;\n Graph.unregisterConnector = Registry.Connector.registry.unregister;\n Graph.unregisterAnchor = Registry.NodeAnchor.registry.unregister;\n Graph.unregisterEdgeAnchor = Registry.EdgeAnchor.registry.unregister;\n Graph.unregisterConnectionPoint = Registry.ConnectionPoint.registry.unregister;\n Graph.unregisterConnectionStrategy = Registry.ConnectionStrategy.registry.unregister;\n Graph.unregisterHTMLComponent = HTML.componentRegistry.unregister;\n})(Graph || (Graph = {}));\n//# sourceMappingURL=graph.js.map","import { ArrayExt } from '../../util';\nimport { Config } from '../../global/config';\nimport { Graph } from '../../graph/graph';\nimport { Model } from '../../model/model';\nexport class Clipboard {\n constructor() {\n this.cells = [];\n }\n copy(cells, graph, options = {}) {\n this.options = Object.assign({}, options);\n const model = Model.isModel(graph) ? graph : graph.model;\n const cloned = model.cloneSubGraph(cells, options);\n // sort asc by cell type\n this.cells = ArrayExt.sortBy(Object.keys(cloned).map((key) => cloned[key]), (cell) => (cell.isEdge() ? 2 : 1));\n this.serialize(options);\n }\n cut(cells, graph, options = {}) {\n this.copy(cells, graph, options);\n const model = Graph.isGraph(graph) ? graph.model : graph;\n model.batchUpdate('cut', () => {\n cells.forEach((cell) => cell.remove());\n });\n }\n paste(graph, options = {}) {\n const localOptions = Object.assign(Object.assign({}, this.options), options);\n const { offset, edgeProps, nodeProps } = localOptions;\n let dx = 20;\n let dy = 20;\n if (offset) {\n dx = typeof offset === 'number' ? offset : offset.dx;\n dy = typeof offset === 'number' ? offset : offset.dy;\n }\n this.deserialize(localOptions);\n const cells = this.cells;\n cells.forEach((cell) => {\n cell.model = null;\n cell.removeProp('zIndex');\n if (dx || dy) {\n cell.translate(dx, dy);\n }\n if (nodeProps && cell.isNode()) {\n cell.prop(nodeProps);\n }\n if (edgeProps && cell.isEdge()) {\n cell.prop(edgeProps);\n }\n });\n const model = Graph.isGraph(graph) ? graph.model : graph;\n model.batchUpdate('paste', () => {\n model.addCells(this.cells);\n });\n this.copy(cells, graph, options);\n return cells;\n }\n serialize(options) {\n if (options.useLocalStorage !== false) {\n Storage.save(this.cells);\n }\n }\n deserialize(options) {\n if (options.useLocalStorage) {\n const cells = Storage.fetch();\n if (cells) {\n this.cells = cells;\n }\n }\n }\n isEmpty() {\n return this.cells.length <= 0;\n }\n clean() {\n this.options = {};\n this.cells = [];\n Storage.clean();\n }\n}\nvar Storage;\n(function (Storage) {\n const LOCAL_STORAGE_KEY = `${Config.prefixCls}.clipboard.cells`;\n function save(cells) {\n if (window.localStorage) {\n const data = cells.map((cell) => cell.toJSON());\n localStorage.setItem(LOCAL_STORAGE_KEY, JSON.stringify(data));\n }\n }\n Storage.save = save;\n function fetch() {\n if (window.localStorage) {\n const raw = localStorage.getItem(LOCAL_STORAGE_KEY);\n const cells = raw ? JSON.parse(raw) : [];\n if (cells) {\n return Model.fromJSON(cells);\n }\n }\n }\n Storage.fetch = fetch;\n function clean() {\n if (window.localStorage) {\n localStorage.removeItem(LOCAL_STORAGE_KEY);\n }\n }\n Storage.clean = clean;\n})(Storage || (Storage = {}));\n//# sourceMappingURL=index.js.map","import { ObjectExt, FunctionExt } from '../../util';\nimport { Rectangle } from '../../geometry';\nimport { Widget, Handle } from '../common';\nimport { NodePreset } from './node-preset';\nimport { EdgePreset } from './edge-preset';\nexport class Halo extends Widget {\n get type() {\n return this.options.type || 'surround';\n }\n get handleOptions() {\n return this.options;\n }\n init(options) {\n this.options = ObjectExt.merge(Halo.defaultOptions, this.cell.isNode()\n ? new NodePreset(this).getPresets()\n : this.cell.isEdge()\n ? new EdgePreset(this).getPresets()\n : null, options);\n this.render();\n this.initHandles();\n this.update();\n this.startListening();\n }\n startListening() {\n const model = this.model;\n const graph = this.graph;\n const cell = this.view.cell;\n cell.on('removed', this.remove, this);\n model.on('reseted', this.remove, this);\n graph.on('halo:destroy', this.remove, this);\n model.on('*', this.update, this);\n graph.on('scale', this.update, this);\n graph.on('translate', this.update, this);\n super.startListening();\n }\n stopListening() {\n const model = this.model;\n const graph = this.graph;\n const cell = this.view.cell;\n this.undelegateEvents();\n cell.off('removed', this.remove, this);\n model.off('reseted', this.remove, this);\n graph.off('halo:destroy', this.remove, this);\n model.off('*', this.update, this);\n graph.off('scale', this.update, this);\n graph.off('translate', this.update, this);\n super.stopListening();\n }\n render() {\n const options = this.options;\n const cls = this.prefixClassName('widget-halo');\n this.view.addClass(Private.NODE_CLS);\n this.container = document.createElement('div');\n this.$container = this.$(this.container)\n .addClass(cls)\n .attr('data-shape', this.view.cell.shape);\n if (options.className) {\n this.$container.addClass(options.className);\n }\n this.$handleContainer = this.$('
')\n .addClass(`${cls}-handles`)\n .appendTo(this.container);\n this.$content = this.$('
')\n .addClass(`${cls}-content`)\n .appendTo(this.container);\n this.$container.appendTo(this.graph.container);\n return this;\n }\n remove() {\n this.stopBatch();\n this.view.removeClass(Private.NODE_CLS);\n return super.remove();\n }\n update() {\n if (this.isRendered()) {\n this.updateContent();\n const bbox = this.getBBox();\n const tinyThreshold = this.options.tinyThreshold || 0;\n const smallThreshold = this.options.smallThreshold || 0;\n this.$handleContainer.toggleClass(`${this.handleClassName}-tiny`, bbox.width < tinyThreshold && bbox.height < tinyThreshold);\n const className = `${this.handleClassName}-small`;\n this.$handleContainer.toggleClass(className, !this.$handleContainer.hasClass(className) &&\n bbox.width < smallThreshold &&\n bbox.height < smallThreshold);\n this.$container.css({\n width: bbox.width,\n height: bbox.height,\n left: bbox.x,\n top: bbox.y,\n });\n if (this.hasHandle('unlink')) {\n this.toggleUnlink();\n }\n if (this.type === 'surround' || this.type === 'toolbar') {\n if (this.hasHandle('fork')) {\n this.toggleFork();\n }\n }\n }\n }\n updateContent() {\n const content = this.options.content;\n if (typeof content === 'function') {\n const ret = FunctionExt.call(content, this, this.view, this.$content[0]);\n if (ret) {\n this.$content.html(ret);\n }\n }\n else if (content) {\n this.$content.html(content);\n }\n else {\n this.$content.remove();\n }\n }\n getBBox() {\n const view = this.view;\n const bbox = this.options.bbox;\n const rect = typeof bbox === 'function' ? FunctionExt.call(bbox, this, view) : bbox;\n return Rectangle.create(Object.assign({ x: 0, y: 0, width: 1, height: 1 }, rect));\n }\n removeCell() {\n this.cell.remove();\n }\n toggleFork() {\n const cell = this.view.cell.clone();\n const view = this.graph.hook.createCellView(cell);\n const valid = this.graph.hook.validateConnection(this.view, null, view, null, 'target');\n this.$handleContainer.children('.fork').toggleClass('hidden', !valid);\n view.remove();\n }\n toggleUnlink() {\n const hasEdges = this.model.getConnectedEdges(this.view.cell).length > 0;\n this.$handleContainer.children('.unlink').toggleClass('hidden', !hasEdges);\n }\n // #region batch\n startBatch() {\n this.model.startBatch('halo', {\n halo: this.cid,\n });\n }\n stopBatch() {\n if (this.model.hasActiveBatch('halo')) {\n this.model.stopBatch('halo', {\n halo: this.cid,\n });\n }\n }\n}\n(function (Halo) {\n Halo.defaultOptions = {\n type: 'surround',\n clearAll: true,\n clearOnBlankMouseDown: true,\n useCellGeometry: false,\n clone: (cell) => cell.clone().removeZIndex(),\n };\n})(Halo || (Halo = {}));\nObject.getOwnPropertyNames(Handle.prototype).forEach((name) => {\n if (name !== 'constructor') {\n Object.defineProperty(Halo.prototype, name, Object.getOwnPropertyDescriptor(Handle.prototype, name));\n }\n});\nvar Private;\n(function (Private) {\n Private.NODE_CLS = 'has-widget-halo';\n})(Private || (Private = {}));\n//# sourceMappingURL=index.js.map","import { Util } from '../../global';\nimport { StringExt, FunctionExt } from '../../util';\nimport { Point, Rectangle, Angle } from '../../geometry';\nimport { Cell } from '../../model/cell';\nimport { notify } from '../transform/util';\nexport class NodePreset {\n constructor(halo) {\n this.halo = halo;\n }\n get options() {\n return this.halo.options;\n }\n get graph() {\n return this.halo.graph;\n }\n get model() {\n return this.halo.model;\n }\n get view() {\n return this.halo.view;\n }\n get cell() {\n return this.halo.cell;\n }\n get node() {\n return this.cell;\n }\n getPresets() {\n return {\n className: 'type-node',\n handles: [\n {\n name: 'remove',\n position: 'nw',\n events: {\n mousedown: this.removeCell.bind(this),\n },\n icon: null,\n },\n {\n name: 'resize',\n position: 'se',\n events: {\n mousedown: this.startResize.bind(this),\n mousemove: this.doResize.bind(this),\n mouseup: this.stopResize.bind(this),\n },\n icon: null,\n },\n {\n name: 'clone',\n position: 'n',\n events: {\n mousedown: this.startClone.bind(this),\n mousemove: this.doClone.bind(this),\n mouseup: this.stopClone.bind(this),\n },\n icon: null,\n },\n {\n name: 'link',\n position: 'e',\n events: {\n mousedown: this.startLink.bind(this),\n mousemove: this.doLink.bind(this),\n mouseup: this.stopLink.bind(this),\n },\n icon: null,\n },\n {\n name: 'fork',\n position: 'ne',\n events: {\n mousedown: this.startFork.bind(this),\n mousemove: this.doFork.bind(this),\n mouseup: this.stopFork.bind(this),\n },\n icon: null,\n },\n {\n name: 'unlink',\n position: 'w',\n events: {\n mousedown: this.unlink.bind(this),\n },\n icon: null,\n },\n {\n name: 'rotate',\n position: 'sw',\n events: {\n mousedown: this.startRotate.bind(this),\n mousemove: this.doRotate.bind(this),\n mouseup: this.stopRotate.bind(this),\n },\n icon: null,\n },\n ],\n bbox(view) {\n if (this.options.useCellGeometry) {\n const node = view.cell;\n return node.getBBox();\n }\n return view.getBBox();\n },\n content(view) {\n const template = StringExt.template('x: <%= x %>, y: <%= y %>, width: <%= width %>, height: <%= height %>, angle: <%= angle %>');\n const cell = view.cell;\n const bbox = cell.getBBox();\n return template({\n x: Math.floor(bbox.x),\n y: Math.floor(bbox.y),\n width: Math.floor(bbox.width),\n height: Math.floor(bbox.height),\n angle: Math.floor(cell.getAngle()),\n });\n },\n magnet(view) {\n return view.container;\n },\n tinyThreshold: 40,\n smallThreshold: 80,\n loopEdgePreferredSide: 'top',\n loopEdgeWidth: 40,\n rotateGrid: 15,\n rotateEmbeds: false,\n };\n }\n removeCell() {\n this.model.removeConnectedEdges(this.cell);\n this.cell.remove();\n }\n // #region create edge\n startLink({ x, y }) {\n this.halo.startBatch();\n const graph = this.graph;\n const edge = this.createEdgeConnectedToSource();\n edge.setTarget({ x, y });\n this.model.addEdge(edge, {\n validation: false,\n halo: this.halo.cid,\n async: false,\n });\n graph.view.undelegateEvents();\n this.edgeView = graph.renderer.findViewByCell(edge);\n this.edgeView.prepareArrowheadDragging('target', {\n x,\n y,\n fallbackAction: 'remove',\n });\n }\n createEdgeConnectedToSource() {\n const magnet = this.getMagnet(this.view, 'source');\n const terminal = this.getEdgeTerminal(this.view, magnet);\n const edge = this.graph.hook.getDefaultEdge(this.view, magnet);\n edge.setSource(terminal);\n return edge;\n }\n getMagnet(view, terminal) {\n const magnet = this.options.magnet;\n if (typeof magnet === 'function') {\n const val = FunctionExt.call(magnet, this.halo, view, terminal);\n if (val instanceof SVGElement) {\n return val;\n }\n }\n throw new Error('`magnet()` has to return an SVGElement');\n }\n getEdgeTerminal(view, magnet) {\n const terminal = {\n cell: view.cell.id,\n };\n if (magnet !== view.container) {\n const port = magnet.getAttribute('port');\n if (port) {\n terminal.port = port;\n }\n else {\n terminal.selector = view.getSelector(magnet);\n }\n }\n return terminal;\n }\n doLink({ e, x, y }) {\n if (this.edgeView) {\n this.edgeView.onMouseMove(e, x, y);\n }\n }\n stopLink({ e, x, y }) {\n const edgeView = this.edgeView;\n if (edgeView) {\n edgeView.onMouseUp(e, x, y);\n const edge = edgeView.cell;\n if (edge.hasLoop()) {\n this.makeLoopEdge(edge);\n }\n this.halo.stopBatch();\n this.halo.trigger('action:edge:addde', { edge });\n this.edgeView = null;\n }\n this.graph.view.delegateEvents();\n }\n makeLoopEdge(edge) {\n let vertex1 = null;\n let vertex2 = null;\n const loopEdgeWidth = this.options.loopEdgeWidth;\n const graphOptions = this.graph.options;\n const graphRect = new Rectangle(0, 0, graphOptions.width, graphOptions.height);\n const bbox = this.graph.graphToLocal(this.view.getBBox());\n const found = [\n this.options.loopEdgePreferredSide,\n 'top',\n 'bottom',\n 'left',\n 'right',\n ].some((position) => {\n let point = null;\n let dx = 0;\n let dy = 0;\n switch (position) {\n case 'top':\n point = new Point(bbox.x + bbox.width / 2, bbox.y - loopEdgeWidth);\n dx = loopEdgeWidth / 2;\n break;\n case 'bottom':\n point = new Point(bbox.x + bbox.width / 2, bbox.y + bbox.height + loopEdgeWidth);\n dx = loopEdgeWidth / 2;\n break;\n case 'left':\n point = new Point(bbox.x - loopEdgeWidth, bbox.y + bbox.height / 2);\n dy = loopEdgeWidth / 2;\n break;\n case 'right':\n point = new Point(bbox.x + bbox.width + loopEdgeWidth, bbox.y + bbox.height / 2);\n dy = loopEdgeWidth / 2;\n break;\n default:\n break;\n }\n if (point) {\n vertex1 = point.translate(-dx, -dy);\n vertex2 = point.translate(dx, dy);\n return (graphRect.containsPoint(vertex1) && graphRect.containsPoint(vertex2));\n }\n return false;\n });\n if (found && vertex1 && vertex2) {\n edge.setVertices([vertex1, vertex2]);\n }\n }\n // #endregion\n // #region resize\n startResize({ e }) {\n this.halo.startBatch();\n this.flip = [1, 0, 0, 1, 1, 0, 0, 1][Math.floor(Angle.normalize(this.node.getAngle()) / 45)];\n this.view.addClass('node-resizing');\n notify('node:resize', e, this.view);\n }\n doResize({ e, dx, dy }) {\n const size = this.node.getSize();\n const width = Math.max(size.width + (this.flip ? dx : dy), 1);\n const height = Math.max(size.height + (this.flip ? dy : dx), 1);\n this.node.resize(width, height, {\n absolute: true,\n });\n notify('node:resizing', e, this.view);\n }\n stopResize({ e }) {\n this.view.removeClass('node-resizing');\n notify('node:resized', e, this.view);\n this.halo.stopBatch();\n }\n // #endregion\n // #region clone\n startClone({ e, x, y }) {\n this.halo.startBatch();\n const options = this.options;\n const cloned = options.clone(this.cell, {\n clone: true,\n });\n if (!Cell.isCell(cloned)) {\n throw new Error(\"option 'clone()' has to return a cell\");\n }\n this.centerNodeAtCursor(cloned, x, y);\n this.model.addCell(cloned, {\n halo: this.halo.cid,\n async: false,\n });\n const cloneView = this.graph.renderer.findViewByCell(cloned);\n cloneView.onMouseDown(e, x, y);\n this.halo.setEventData(e, { cloneView });\n }\n centerNodeAtCursor(cell, x, y) {\n const center = cell.getBBox().getCenter();\n const dx = x - center.x;\n const dy = y - center.y;\n cell.translate(dx, dy);\n }\n doClone({ e, x, y }) {\n const view = this.halo.getEventData(e).cloneView;\n if (view) {\n view.onMouseMove(e, x, y);\n }\n }\n stopClone({ e, x, y }) {\n const nodeView = this.halo.getEventData(e).cloneView;\n if (nodeView) {\n nodeView.onMouseUp(e, x, y);\n }\n this.halo.stopBatch();\n }\n // #endregion\n // #region fork\n startFork({ e, x, y }) {\n this.halo.startBatch();\n const cloned = this.options.clone(this.cell, {\n fork: true,\n });\n if (!Cell.isCell(cloned)) {\n throw new Error(\"option 'clone()' has to return a cell\");\n }\n this.centerNodeAtCursor(cloned, x, y);\n this.model.addCell(cloned, {\n halo: this.halo.cid,\n async: false,\n });\n const edge = this.createEdgeConnectedToSource();\n const cloneView = this.graph.renderer.findViewByCell(cloned);\n const magnet = this.getMagnet(cloneView, 'target');\n const terminal = this.getEdgeTerminal(cloneView, magnet);\n edge.setTarget(terminal);\n this.model.addEdge(edge, {\n halo: this.halo.cid,\n async: false,\n });\n cloneView.onMouseDown(e, x, y);\n this.halo.setEventData(e, { cloneView });\n }\n doFork({ e, x, y }) {\n const view = this.halo.getEventData(e).cloneView;\n if (view) {\n view.onMouseMove(e, x, y);\n }\n }\n stopFork({ e, x, y }) {\n const view = this.halo.getEventData(e).cloneView;\n if (view) {\n view.onMouseUp(e, x, y);\n }\n this.halo.stopBatch();\n }\n // #endregion\n // #region rotate\n startRotate({ e, x, y }) {\n this.halo.startBatch();\n const center = this.node.getBBox().getCenter();\n const nodes = [this.node];\n if (this.options.rotateEmbeds) {\n this.node\n .getDescendants({\n deep: true,\n })\n .reduce((memo, cell) => {\n if (cell.isNode()) {\n memo.push(cell);\n }\n return memo;\n }, nodes);\n }\n this.halo.setEventData(e, {\n center,\n nodes,\n rotateStartAngles: nodes.map((node) => node.getAngle()),\n clientStartAngle: new Point(x, y).theta(center),\n });\n nodes.forEach((node) => {\n const view = this.graph.findViewByCell(node);\n if (view) {\n view.addClass('node-rotating');\n notify('node:rotate', e, view);\n }\n });\n }\n doRotate({ e, x, y }) {\n const data = this.halo.getEventData(e);\n const delta = data.clientStartAngle - new Point(x, y).theta(data.center);\n data.nodes.forEach((node, index) => {\n const startAngle = data.rotateStartAngles[index];\n const targetAngle = Util.snapToGrid(startAngle + delta, this.options.rotateGrid);\n node.rotate(targetAngle, {\n absolute: true,\n center: data.center,\n halo: this.halo.cid,\n });\n notify('node:rotating', e, this.graph.findViewByCell(node));\n });\n }\n stopRotate({ e }) {\n const data = this.halo.getEventData(e);\n data.nodes.forEach((node) => {\n const view = this.graph.findViewByCell(node);\n view.removeClass('node-rotating');\n notify('node:rotated', e, view);\n });\n this.halo.stopBatch();\n }\n // #endregion\n // #region unlink\n unlink() {\n this.halo.startBatch();\n this.model.removeConnectedEdges(this.cell);\n this.halo.stopBatch();\n }\n}\n//# sourceMappingURL=node-preset.js.map","export class EdgePreset {\n constructor(halo) {\n this.halo = halo;\n }\n get options() {\n return this.halo.options;\n }\n get graph() {\n return this.halo.graph;\n }\n get model() {\n return this.halo.model;\n }\n get view() {\n return this.halo.view;\n }\n get cell() {\n return this.halo.cell;\n }\n get edge() {\n return this.cell;\n }\n getPresets() {\n return {\n className: 'type-edge',\n handles: [\n {\n name: 'remove',\n position: 'nw',\n icon: null,\n events: {\n mousedown: this.removeEdge.bind(this),\n },\n },\n {\n name: 'direction',\n position: 'se',\n icon: null,\n events: {\n mousedown: this.directionSwap.bind(this),\n },\n },\n ],\n content: false,\n bbox(view) {\n return view.graph.localToGraph(view.getPointAtRatio(0.5));\n },\n tinyThreshold: -1,\n smallThreshold: -1,\n };\n }\n removeEdge() {\n this.cell.remove();\n }\n directionSwap() {\n const source = this.edge.getSource();\n const target = this.edge.getTarget();\n this.edge.prop({\n source: target,\n target: source,\n });\n }\n}\n//# sourceMappingURL=edge-preset.js.map","var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Util } from '../../global';\nimport { FunctionExt } from '../../util';\nimport { Rectangle } from '../../geometry';\nimport { View } from '../../view/view';\nimport { Graph } from '../../graph/graph';\nexport class Dnd extends View {\n constructor(options) {\n super();\n this.options = Object.assign(Object.assign({}, Dnd.defaults), options);\n this.container = document.createElement('div');\n this.$container = this.$(this.container).addClass(this.prefixClassName('widget-dnd'));\n this.draggingGraph = new Graph(Object.assign(Object.assign({}, this.options.delegateGraphOptions), { container: document.createElement('div'), width: 1, height: 1 }));\n this.$container.append(this.draggingGraph.container);\n }\n get targetScroller() {\n const target = this.options.target;\n return Graph.isGraph(target) ? target.scroller.widget : target;\n }\n get targetGraph() {\n const target = this.options.target;\n return Graph.isGraph(target) ? target : target.graph;\n }\n get targetModel() {\n return this.targetGraph.model;\n }\n get snapline() {\n return this.targetGraph.snapline.widget;\n }\n start(node, evt) {\n const e = evt;\n e.preventDefault();\n this.targetModel.startBatch('dnd');\n this.$container\n .addClass('dragging')\n .appendTo(this.options.containerParent || document.body);\n this.sourceNode = node;\n this.prepareDragging(node, e.clientX, e.clientY);\n const local = this.updateNodePosition(e.clientX, e.clientY);\n if (this.isSnaplineEnabled()) {\n this.snapline.captureCursorOffset({\n e,\n node,\n cell: node,\n view: this.draggingView,\n x: local.x,\n y: local.y,\n });\n this.draggingNode.on('change:position', this.snap, this);\n }\n this.delegateDocumentEvents(Dnd.documentEvents, e.data);\n }\n isSnaplineEnabled() {\n return this.snapline && !this.snapline.disabled;\n }\n prepareDragging(sourceNode, clientX, clientY) {\n const draggingGraph = this.draggingGraph;\n const draggingModel = draggingGraph.model;\n const draggingNode = this.options.getDragNode(sourceNode, {\n sourceNode,\n draggingGraph,\n targetGraph: this.targetGraph,\n });\n draggingNode.position(0, 0);\n let padding = 5;\n if (this.isSnaplineEnabled()) {\n padding += this.snapline.options.tolerance || 0;\n }\n if (this.isSnaplineEnabled() || this.options.scaled) {\n const scale = this.targetGraph.transform.getScale();\n draggingGraph.scale(scale.sx, scale.sy);\n padding *= Math.max(scale.sx, scale.sy);\n }\n else {\n draggingGraph.scale(1, 1);\n }\n this.clearDragging();\n if (this.options.animation) {\n this.$container.stop(true, true);\n }\n draggingModel.resetCells([draggingNode]);\n const delegateView = draggingGraph.findViewByCell(draggingNode);\n delegateView.undelegateEvents();\n delegateView.cell.off('changed');\n draggingGraph.fitToContent({\n padding,\n allowNewOrigin: 'any',\n });\n const bbox = delegateView.getBBox();\n this.geometryBBox = delegateView.getBBox({ useCellGeometry: true });\n this.delta = this.geometryBBox.getTopLeft().diff(bbox.getTopLeft());\n this.draggingNode = draggingNode;\n this.draggingView = delegateView;\n this.draggingBBox = draggingNode.getBBox();\n this.padding = padding;\n this.originOffset = this.updateGraphPosition(clientX, clientY);\n }\n updateGraphPosition(clientX, clientY) {\n const scrollTop = document.body.scrollTop || document.documentElement.scrollTop;\n const delta = this.delta;\n const nodeBBox = this.geometryBBox;\n const padding = this.padding || 5;\n const offset = {\n left: clientX - delta.x - nodeBBox.width / 2 - padding,\n top: clientY - delta.y - nodeBBox.height / 2 - padding + scrollTop,\n };\n if (this.draggingGraph) {\n this.$container.offset(offset);\n }\n return offset;\n }\n updateNodePosition(x, y) {\n const local = this.targetGraph.clientToLocal(x, y);\n const bbox = this.draggingBBox;\n local.x -= bbox.width / 2;\n local.y -= bbox.height / 2;\n this.draggingNode.position(local.x, local.y);\n return local;\n }\n snap({ cell, current, options, }) {\n const node = cell;\n if (options.snapped) {\n const bbox = this.draggingBBox;\n node.position(bbox.x + options.tx, bbox.y + options.ty, { silent: true });\n this.draggingView.translate();\n node.position(current.x, current.y, { silent: true });\n this.snapOffset = {\n x: options.tx,\n y: options.ty,\n };\n }\n else {\n this.snapOffset = null;\n }\n }\n onDragging(evt) {\n const draggingView = this.draggingView;\n if (draggingView) {\n evt.preventDefault();\n const e = this.normalizeEvent(evt);\n const clientX = e.clientX;\n const clientY = e.clientY;\n this.updateGraphPosition(clientX, clientY);\n const local = this.updateNodePosition(clientX, clientY);\n const embeddingMode = this.targetGraph.options.embedding.enabled;\n const isValidArea = (embeddingMode || this.isSnaplineEnabled()) &&\n this.isInsideValidArea({\n x: clientX,\n y: clientY,\n });\n if (embeddingMode) {\n draggingView.setEventData(e, {\n graph: this.targetGraph,\n candidateEmbedView: this.candidateEmbedView,\n });\n const data = draggingView.getEventData(e);\n if (isValidArea) {\n draggingView.processEmbedding(e, data);\n }\n else {\n draggingView.clearEmbedding(data);\n }\n this.candidateEmbedView = data.candidateEmbedView;\n }\n // update snapline\n if (this.isSnaplineEnabled()) {\n if (isValidArea) {\n this.snapline.snapOnMoving({\n e,\n view: draggingView,\n x: local.x,\n y: local.y,\n });\n }\n else {\n this.snapline.hide();\n }\n }\n }\n }\n onDragEnd(evt) {\n const draggingNode = this.draggingNode;\n if (draggingNode) {\n const e = this.normalizeEvent(evt);\n const draggingView = this.draggingView;\n const draggingBBox = this.draggingBBox;\n const snapOffset = this.snapOffset;\n let x = draggingBBox.x;\n let y = draggingBBox.y;\n if (snapOffset) {\n x += snapOffset.x;\n y += snapOffset.y;\n }\n draggingNode.position(x, y, { silent: true });\n const ret = this.drop(draggingNode, { x: e.clientX, y: e.clientY });\n const callback = (node) => {\n if (node) {\n this.onDropped(draggingNode);\n if (this.targetGraph.options.embedding.enabled && draggingView) {\n draggingView.setEventData(e, {\n cell: node,\n graph: this.targetGraph,\n candidateEmbedView: this.candidateEmbedView,\n });\n draggingView.finalizeEmbedding(e, draggingView.getEventData(e));\n }\n }\n else {\n this.onDropInvalid();\n }\n this.candidateEmbedView = null;\n this.targetModel.stopBatch('dnd');\n };\n if (FunctionExt.isAsync(ret)) {\n // stop dragging\n this.undelegateDocumentEvents();\n ret.then(callback); // eslint-disable-line\n }\n else {\n callback(ret);\n }\n }\n }\n clearDragging() {\n if (this.draggingNode) {\n this.sourceNode = null;\n this.draggingNode.remove();\n this.draggingNode = null;\n this.draggingView = null;\n this.delta = null;\n this.padding = null;\n this.snapOffset = null;\n this.originOffset = null;\n this.undelegateDocumentEvents();\n }\n }\n onDropped(draggingNode) {\n if (this.draggingNode === draggingNode) {\n this.clearDragging();\n this.$container.removeClass('dragging').remove();\n }\n }\n onDropInvalid() {\n const draggingNode = this.draggingNode;\n if (draggingNode) {\n const anim = this.options.animation;\n if (anim) {\n const duration = (typeof anim === 'object' && anim.duration) || 150;\n const easing = (typeof anim === 'object' && anim.easing) || 'swing';\n this.draggingView = null;\n this.$container.animate(this.originOffset, duration, easing, () => this.onDropped(draggingNode));\n }\n else {\n this.onDropped(draggingNode);\n }\n }\n }\n isInsideValidArea(p) {\n let targetRect;\n const targetGraph = this.targetGraph;\n const targetScroller = this.targetScroller;\n if (targetScroller) {\n if (targetScroller.options.autoResize) {\n targetRect = this.getDropArea(targetScroller.container);\n }\n else {\n const outter = this.getDropArea(targetScroller.container);\n targetRect = this.getDropArea(targetGraph.container).intersectsWithRect(outter);\n }\n }\n else {\n targetRect = this.getDropArea(targetGraph.container);\n }\n return targetRect && targetRect.containsPoint(p);\n }\n getDropArea(elem) {\n const $elem = this.$(elem);\n const offset = $elem.offset();\n const scrollTop = document.body.scrollTop || document.documentElement.scrollTop;\n const scrollLeft = document.body.scrollLeft || document.documentElement.scrollLeft;\n return Rectangle.create({\n x: offset.left + parseInt($elem.css('border-left-width'), 10) - scrollLeft,\n y: offset.top + parseInt($elem.css('border-top-width'), 10) - scrollTop,\n width: $elem.innerWidth(),\n height: $elem.innerHeight(),\n });\n }\n drop(draggingNode, pos) {\n if (this.isInsideValidArea(pos)) {\n const targetGraph = this.targetGraph;\n const targetModel = targetGraph.model;\n const local = targetGraph.clientToLocal(pos);\n const sourceNode = this.sourceNode;\n const droppingNode = this.options.getDropNode(draggingNode, {\n sourceNode,\n draggingNode,\n targetGraph: this.targetGraph,\n draggingGraph: this.draggingGraph,\n });\n const bbox = droppingNode.getBBox();\n local.x += bbox.x - bbox.width / 2;\n local.y += bbox.y - bbox.height / 2;\n const gridSize = this.snapOffset ? 1 : targetGraph.getGridSize();\n droppingNode.position(Util.snapToGrid(local.x, gridSize), Util.snapToGrid(local.y, gridSize));\n droppingNode.removeZIndex();\n const validateNode = this.options.validateNode;\n const ret = validateNode\n ? validateNode(droppingNode, {\n sourceNode,\n draggingNode,\n droppingNode,\n targetGraph,\n draggingGraph: this.draggingGraph,\n })\n : true;\n if (typeof ret === 'boolean') {\n if (ret) {\n targetModel.addCell(droppingNode, { stencil: this.cid });\n return droppingNode;\n }\n return null;\n }\n return FunctionExt.toDeferredBoolean(ret).then((valid) => {\n if (valid) {\n targetModel.addCell(droppingNode, { stencil: this.cid });\n return droppingNode;\n }\n return null;\n });\n }\n return null;\n }\n onRemove() {\n if (this.draggingGraph) {\n this.draggingGraph.view.remove();\n this.draggingGraph.dispose();\n }\n }\n dispose() {\n this.remove();\n }\n}\n__decorate([\n View.dispose()\n], Dnd.prototype, \"dispose\", null);\n(function (Dnd) {\n Dnd.defaults = {\n animation: false,\n getDragNode: (sourceNode) => sourceNode.clone(),\n getDropNode: (draggingNode) => draggingNode.clone(),\n };\n Dnd.documentEvents = {\n mousemove: 'onDragging',\n touchmove: 'onDragging',\n mouseup: 'onDragEnd',\n touchend: 'onDragEnd',\n touchcancel: 'onDragEnd',\n };\n})(Dnd || (Dnd = {}));\n//# sourceMappingURL=index.js.map","import { Model } from '../model/model';\nexport function grid(cells, options = {}) {\n const model = Model.isModel(cells)\n ? cells\n : new Model().resetCells(cells, {\n sort: false,\n dryrun: true,\n });\n const nodes = model.getNodes();\n const columns = options.columns || 1;\n const rows = Math.ceil(nodes.length / columns);\n const dx = options.dx || 0;\n const dy = options.dy || 0;\n const centre = options.center !== false;\n const resizeToFit = options.resizeToFit === true;\n const marginX = options.marginX || 0;\n const marginY = options.marginY || 0;\n const columnWidths = [];\n let columnWidth = options.columnWidth;\n if (columnWidth === 'compact') {\n for (let j = 0; j < columns; j += 1) {\n const items = GridLayout.getNodesInColumn(nodes, j, columns);\n columnWidths.push(GridLayout.getMaxDim(items, 'width') + dx);\n }\n }\n else {\n if (columnWidth == null || columnWidth === 'auto') {\n columnWidth = GridLayout.getMaxDim(nodes, 'width') + dx;\n }\n for (let i = 0; i < columns; i += 1) {\n columnWidths.push(columnWidth);\n }\n }\n const columnLefts = GridLayout.accumulate(columnWidths, marginX);\n const rowHeights = [];\n let rowHeight = options.rowHeight;\n if (rowHeight === 'compact') {\n for (let i = 0; i < rows; i += 1) {\n const items = GridLayout.getNodesInRow(nodes, i, columns);\n rowHeights.push(GridLayout.getMaxDim(items, 'height') + dy);\n }\n }\n else {\n if (rowHeight == null || rowHeight === 'auto') {\n rowHeight = GridLayout.getMaxDim(nodes, 'height') + dy;\n }\n for (let i = 0; i < rows; i += 1) {\n rowHeights.push(rowHeight);\n }\n }\n const rowTops = GridLayout.accumulate(rowHeights, marginY);\n model.startBatch('layout');\n nodes.forEach((node, index) => {\n const rowIndex = index % columns;\n const columnIndex = Math.floor(index / columns);\n const columnWidth = columnWidths[rowIndex];\n const rowHeight = rowHeights[columnIndex];\n let cx = 0;\n let cy = 0;\n let size = node.getSize();\n if (resizeToFit) {\n let width = columnWidth - 2 * dx;\n let height = rowHeight - 2 * dy;\n const calcHeight = size.height * (size.width ? width / size.width : 1);\n const calcWidth = size.width * (size.height ? height / size.height : 1);\n if (rowHeight < calcHeight) {\n width = calcWidth;\n }\n else {\n height = calcHeight;\n }\n size = {\n width,\n height,\n };\n node.setSize(size, options);\n }\n if (centre) {\n cx = (columnWidth - size.width) / 2;\n cy = (rowHeight - size.height) / 2;\n }\n node.position(columnLefts[rowIndex] + dx + cx, rowTops[columnIndex] + dy + cy, options);\n });\n model.stopBatch('layout');\n}\nvar GridLayout;\n(function (GridLayout) {\n function getMaxDim(nodes, name) {\n return nodes.reduce((memo, node) => Math.max(node.getSize()[name], memo), 0);\n }\n GridLayout.getMaxDim = getMaxDim;\n function getNodesInRow(nodes, rowIndex, columnCount) {\n const res = [];\n for (let i = columnCount * rowIndex, ii = i + columnCount; i < ii; i += 1) {\n res.push(nodes[i]);\n }\n return res;\n }\n GridLayout.getNodesInRow = getNodesInRow;\n function getNodesInColumn(nodes, columnIndex, columnCount) {\n const res = [];\n for (let i = columnIndex, ii = nodes.length; i < ii; i += columnCount) {\n res.push(nodes[i]);\n }\n return res;\n }\n GridLayout.getNodesInColumn = getNodesInColumn;\n function accumulate(items, start) {\n return items.reduce((memo, item, i) => {\n memo.push(memo[i] + item);\n return memo;\n }, [start || 0]);\n }\n GridLayout.accumulate = accumulate;\n})(GridLayout || (GridLayout = {}));\n//# sourceMappingURL=grid.js.map","import { FunctionExt } from '../../util';\nimport { grid } from '../../layout/grid';\nimport { Node } from '../../model/node';\nimport { Model } from '../../model/model';\nimport { View } from '../../view/view';\nimport { Graph } from '../../graph/graph';\nimport { Dnd } from '../dnd';\nexport class Stencil extends View {\n constructor(options) {\n super();\n this.graphs = {};\n this.$groups = {};\n this.options = Object.assign(Object.assign({}, Stencil.defaultOptions), options);\n this.dnd = new Dnd(this.options);\n this.onSearch = FunctionExt.debounce(this.onSearch, 200);\n this.container = document.createElement('div');\n this.$container = this.$(this.container)\n .addClass(this.prefixClassName(ClassNames.base))\n .attr('data-not-found-text', this.options.notFoundText || 'No matches found');\n this.options.collapsable =\n options.collapsable &&\n options.groups &&\n options.groups.some((group) => group.collapsable !== false);\n if (this.options.collapsable) {\n this.$container.addClass('collapsable');\n const collapsed = options.groups &&\n options.groups.every((group) => group.collapsed || group.collapsable === false);\n if (collapsed) {\n this.$container.addClass('collapsed');\n }\n }\n this.$('
')\n .addClass(this.prefixClassName(ClassNames.title))\n .html(this.options.title)\n .appendTo(this.$container);\n if (options.search) {\n this.$container.addClass('searchable').append(this.renderSearch());\n }\n this.$content = this.$('
')\n .addClass(this.prefixClassName(ClassNames.content))\n .appendTo(this.$container);\n const globalGraphOptions = options.stencilGraphOptions || {};\n if (options.groups && options.groups.length) {\n options.groups.forEach((group) => {\n const $group = this.$('
')\n .addClass(this.prefixClassName(ClassNames.group))\n .attr('data-name', group.name);\n if ((group.collapsable == null && options.collapsable) ||\n group.collapsable !== false) {\n $group.addClass('collapsable');\n }\n $group.toggleClass('collapsed', group.collapsed === true);\n const $title = this.$('

')\n .addClass(this.prefixClassName(ClassNames.groupTitle))\n .html(group.title || group.name);\n const $content = this.$('
').addClass(this.prefixClassName(ClassNames.groupContent));\n const graphOptionsInGroup = group.graphOptions;\n const graph = new Graph(Object.assign(Object.assign(Object.assign({}, globalGraphOptions), graphOptionsInGroup), { container: document.createElement('div'), model: globalGraphOptions.model || new Model(), width: group.graphWidth || options.stencilGraphWidth, height: group.graphHeight || options.stencilGraphHeight, interacting: false, preventDefaultBlankAction: false }));\n $content.append(graph.container);\n $group.append($title, $content).appendTo(this.$content);\n this.$groups[group.name] = $group;\n this.graphs[group.name] = graph;\n });\n }\n else {\n const graph = new Graph(Object.assign(Object.assign({}, globalGraphOptions), { container: document.createElement('div'), model: globalGraphOptions.model || new Model(), width: options.stencilGraphWidth, height: options.stencilGraphHeight, interacting: false, preventDefaultBlankAction: false }));\n this.$content.append(graph.container);\n this.graphs[Private.defaultGroupName] = graph;\n }\n this.startListening();\n return this;\n }\n get targetScroller() {\n const target = this.options.target;\n return Graph.isGraph(target) ? target.scroller.widget : target;\n }\n get targetGraph() {\n const target = this.options.target;\n return Graph.isGraph(target) ? target : target.graph;\n }\n get targetModel() {\n return this.targetGraph.model;\n }\n renderSearch() {\n return this.$('
')\n .addClass(this.prefixClassName(ClassNames.search))\n .append(this.$('')\n .attr({\n type: 'search',\n placeholder: this.options.placeholder || 'Search',\n })\n .addClass(this.prefixClassName(ClassNames.searchText)));\n }\n startListening() {\n const title = this.prefixClassName(ClassNames.title);\n const searchText = this.prefixClassName(ClassNames.searchText);\n const groupTitle = this.prefixClassName(ClassNames.groupTitle);\n this.delegateEvents({\n [`click .${title}`]: 'onTitleClick',\n [`touchstart .${title}`]: 'onTitleClick',\n [`click .${groupTitle}`]: 'onGroupTitleClick',\n [`touchstart .${groupTitle}`]: 'onGroupTitleClick',\n [`input .${searchText}`]: 'onSearch',\n [`focusin .${searchText}`]: 'onSearchFocusIn',\n [`focusout .${searchText}`]: 'onSearchFocusOut',\n });\n Object.keys(this.graphs).forEach((groupName) => {\n const graph = this.graphs[groupName];\n graph.on('cell:mousedown', this.onDragStart, this);\n });\n }\n stopListening() {\n this.undelegateEvents();\n Object.keys(this.graphs).forEach((groupName) => {\n const graph = this.graphs[groupName];\n graph.off('cell:mousedown', this.onDragStart, this);\n });\n }\n load(data, groupName) {\n if (Array.isArray(data)) {\n this.loadGroup(data, groupName);\n }\n else if (this.options.groups) {\n Object.keys(this.options.groups).forEach((groupName) => {\n if (data[groupName]) {\n this.loadGroup(data[groupName], groupName);\n }\n });\n }\n return this;\n }\n loadGroup(cells, groupName) {\n const model = this.getModel(groupName);\n if (model) {\n const nodes = cells.map((cell) => Node.isNode(cell) ? cell : Node.create(cell));\n model.resetCells(nodes);\n }\n const group = this.getGroup(groupName);\n let height = this.options.stencilGraphHeight;\n if (group && group.graphHeight != null) {\n height = group.graphHeight;\n }\n const layout = (group && group.layout) || this.options.layout;\n if (layout && model) {\n FunctionExt.call(layout, this, model, group);\n }\n if (!height) {\n const graph = this.getGraph(groupName);\n graph.fitToContent({\n minWidth: graph.options.width,\n gridHeight: 1,\n padding: (group && group.graphPadding) ||\n this.options.stencilGraphPadding ||\n 10,\n });\n }\n return this;\n }\n onDragStart(args) {\n const { e, node } = args;\n this.dnd.start(node, e);\n }\n filter(keyword, filter) {\n const found = Object.keys(this.graphs).reduce((memo, groupName) => {\n const graph = this.graphs[groupName];\n const name = groupName === Private.defaultGroupName ? null : groupName;\n const items = graph.model.getNodes().filter((cell) => {\n let matched = false;\n if (typeof filter === 'function') {\n matched = FunctionExt.call(filter, this, cell, keyword, name, this);\n }\n else if (typeof filter === 'boolean') {\n matched = filter;\n }\n else {\n matched = this.isCellMatched(cell, keyword, filter, keyword.toLowerCase() !== keyword);\n }\n const view = graph.renderer.findViewByCell(cell);\n if (view) {\n view.$(view.container).toggleClass('unmatched', !matched);\n }\n return matched;\n });\n const found = items.length > 0;\n const options = this.options;\n const model = new Model();\n model.resetCells(items);\n if (options.layout) {\n FunctionExt.call(options.layout, this, model, this.getGroup(groupName));\n }\n if (this.$groups[groupName]) {\n this.$groups[groupName].toggleClass('unmatched', !found);\n }\n graph.fitToContent({\n gridWidth: 1,\n gridHeight: 1,\n padding: options.stencilGraphPadding || 10,\n });\n return memo || found;\n }, false);\n this.$container.toggleClass('not-found', !found);\n }\n isCellMatched(cell, keyword, filters, ignoreCase) {\n if (keyword && filters) {\n return Object.keys(filters).some((shape) => {\n if (shape === '*' || cell.shape === shape) {\n const filter = filters[shape];\n if (typeof filter === 'boolean') {\n return filter;\n }\n const paths = Array.isArray(filter) ? filter : [filter];\n return paths.some((path) => {\n let val = cell.getPropByPath(path);\n if (val != null) {\n val = `${val}`;\n if (!ignoreCase) {\n val = val.toLowerCase();\n }\n return val.indexOf(keyword) >= 0;\n }\n return false;\n });\n }\n return false;\n });\n }\n return true;\n }\n onSearch(evt) {\n this.filter(evt.target.value, this.options.search);\n }\n onSearchFocusIn() {\n this.$container.addClass('is-focused');\n }\n onSearchFocusOut() {\n this.$container.removeClass('is-focused');\n }\n onTitleClick() {\n if (this.options.collapsable) {\n this.$container.toggleClass('collapsed');\n if (this.$container.hasClass('collapsed')) {\n this.collapseGroups();\n }\n else {\n this.expandGroups();\n }\n }\n }\n onGroupTitleClick(evt) {\n const $group = this.$(evt.target).closest(`.${this.prefixClassName(ClassNames.group)}`);\n this.toggleGroup($group.attr('data-name') || '');\n const allCollapsed = Object.keys(this.$groups).every((name) => {\n const group = this.getGroup(name);\n const $group = this.$groups[name];\n return ((group && group.collapsable === false) || $group.hasClass('collapsed'));\n });\n this.$container.toggleClass('collapsed', allCollapsed);\n }\n getModel(groupName) {\n const graph = this.getGraph(groupName);\n return graph ? graph.model : null;\n }\n getGraph(groupName) {\n return this.graphs[groupName || Private.defaultGroupName];\n }\n getGroup(groupName) {\n const groups = this.options.groups;\n if (groupName != null && groups && groups.length) {\n return groups.find((group) => group.name === groupName);\n }\n return null;\n }\n toggleGroup(groupName) {\n if (this.isGroupCollapsed(groupName)) {\n this.expandGroup(groupName);\n }\n else {\n this.collapseGroup(groupName);\n }\n return this;\n }\n collapseGroup(groupName) {\n if (this.isGroupCollapsable(groupName)) {\n const $group = this.$groups[groupName];\n if ($group && !this.isGroupCollapsed(groupName)) {\n this.trigger('group:collapse', { name: groupName });\n $group.addClass('collapsed');\n }\n }\n return this;\n }\n expandGroup(groupName) {\n if (this.isGroupCollapsable(groupName)) {\n const $group = this.$groups[groupName];\n if ($group && this.isGroupCollapsed(groupName)) {\n this.trigger('group:expand', { name: groupName });\n $group.removeClass('collapsed');\n }\n }\n return this;\n }\n isGroupCollapsable(groupName) {\n const $group = this.$groups[groupName];\n return $group.hasClass('collapsable');\n }\n isGroupCollapsed(groupName) {\n const $group = this.$groups[groupName];\n return $group && $group.hasClass('collapsed');\n }\n collapseGroups() {\n Object.keys(this.$groups).forEach((groupName) => this.collapseGroup(groupName));\n return this;\n }\n expandGroups() {\n Object.keys(this.$groups).forEach((groupName) => this.expandGroup(groupName));\n return this;\n }\n resizeGroup(groupName, size) {\n const graph = this.graphs[groupName];\n if (graph) {\n graph.resize(size.width, size.height);\n }\n return this;\n }\n onRemove() {\n Object.keys(this.graphs).forEach((groupName) => {\n const graph = this.graphs[groupName];\n graph.view.remove();\n delete this.graphs[groupName];\n });\n this.dnd.remove();\n this.stopListening();\n this.undelegateDocumentEvents();\n }\n}\n(function (Stencil) {\n Stencil.defaultOptions = Object.assign({ stencilGraphWidth: 200, stencilGraphHeight: 800, title: 'Stencil', collapsable: false, placeholder: 'Search', notFoundText: 'No matches found', layout(model, group) {\n const options = {\n columnWidth: this.options.stencilGraphWidth / 2 - 10,\n columns: 2,\n rowHeight: 80,\n resizeToFit: false,\n dx: 10,\n dy: 10,\n };\n grid(model, Object.assign(Object.assign(Object.assign({}, options), this.options.layoutOptions), (group ? group.layoutOptions : {})));\n } }, Dnd.defaults);\n})(Stencil || (Stencil = {}));\nvar ClassNames;\n(function (ClassNames) {\n ClassNames.base = 'widget-stencil';\n ClassNames.title = `${ClassNames.base}-title`;\n ClassNames.search = `${ClassNames.base}-search`;\n ClassNames.searchText = `${ClassNames.search}-text`;\n ClassNames.content = `${ClassNames.base}-content`;\n ClassNames.group = `${ClassNames.base}-group`;\n ClassNames.groupTitle = `${ClassNames.group}-title`;\n ClassNames.groupContent = `${ClassNames.group}-content`;\n})(ClassNames || (ClassNames = {}));\nvar Private;\n(function (Private) {\n Private.defaultGroupName = '__default__';\n})(Private || (Private = {}));\n//# sourceMappingURL=index.js.map","import { Config } from './config';\nimport { version } from './version';\nfunction track() {\n if (Config.trackable) {\n const host = 'https://kcart.alipay.com/web/bi.do';\n const img = new Image();\n const metadata = Object.assign(Object.assign({}, Config.trackInfo), { version, pg: document.URL, r: new Date().getTime(), x6: true, page_type: 'syslog' });\n const data = encodeURIComponent(JSON.stringify([metadata]));\n img.src = `${host}?BIProfile=merge&d=${data}`;\n }\n}\nif (process.env.NODE_ENV !== 'development' && Config.trackable) {\n setTimeout(track, 3000);\n}\n//# sourceMappingURL=track.js.map","import { Graph, Registry } from '@antv/x6';\nexport const registry = Registry.create({\n type: 'vue componnet',\n});\nGraph.registerVueComponent = registry.register;\nGraph.unregisterVueComponent = registry.unregister;\n//# sourceMappingURL=registry.js.map","import { Graph, FunctionExt } from '@antv/x6';\nimport { registry } from './registry';\nGraph.Hook.prototype.getVueComponent = function (node) {\n const getVueComponent = this.options.getVueComponent;\n if (typeof getVueComponent === 'function') {\n const ret = FunctionExt.call(getVueComponent, this.graph, node);\n if (ret != null) {\n return ret;\n }\n }\n let ret = node.getComponent();\n if (typeof ret === 'string') {\n const component = registry.get(ret);\n if (component == null) {\n return registry.onNotFound(ret);\n }\n ret = component;\n }\n return ret;\n};\n//# sourceMappingURL=hook.js.map","import { Node, Markup, ObjectExt } from '@antv/x6';\nexport class VueShape extends Node {\n get component() {\n return this.getComponent();\n }\n set component(val) {\n this.setComponent(val);\n }\n getComponent() {\n return this.store.get('component');\n }\n setComponent(component, options = {}) {\n if (component == null) {\n this.removeComponent(options);\n }\n else {\n this.store.set('component', component, options);\n }\n return this;\n }\n removeComponent(options = {}) {\n this.store.remove('component', options);\n return this;\n }\n}\n(function (VueShape) {\n function getMarkup(useForeignObject, primer = 'rect') {\n const markup = [\n {\n tagName: primer,\n selector: 'body',\n },\n ];\n if (useForeignObject) {\n markup.push(Markup.getForeignObjectMarkup());\n }\n else {\n markup.push({\n tagName: 'g',\n selector: 'content',\n });\n }\n markup.push({\n tagName: 'text',\n selector: 'label',\n });\n return markup;\n }\n VueShape.config({\n view: 'vue-shape-view',\n markup: getMarkup(true),\n attrs: {\n body: {\n fill: 'none',\n stroke: 'none',\n refWidth: '100%',\n refHeight: '100%',\n },\n fo: {\n refWidth: '100%',\n refHeight: '100%',\n },\n label: {\n fontSize: 14,\n fill: '#333',\n refX: '50%',\n refY: '50%',\n textAnchor: 'middle',\n textVerticalAnchor: 'middle',\n },\n },\n propHooks(metadata) {\n if (metadata.markup == null) {\n const primer = metadata.primer;\n const useForeignObject = metadata.useForeignObject;\n if (primer != null || useForeignObject != null) {\n metadata.markup = getMarkup(useForeignObject !== false, primer);\n if (primer) {\n if (metadata.attrs == null) {\n metadata.attrs = {};\n }\n let attrs = {};\n if (primer === 'circle') {\n attrs = {\n refCx: '50%',\n refCy: '50%',\n refR: '50%',\n };\n }\n else if (primer === 'ellipse') {\n attrs = {\n refCx: '50%',\n refCy: '50%',\n refRx: '50%',\n refRy: '50%',\n };\n }\n if (primer !== 'rect') {\n metadata.attrs = ObjectExt.merge({}, metadata.attrs, {\n body: Object.assign({ refWidth: null, refHeight: null }, attrs),\n });\n }\n }\n }\n }\n return metadata;\n },\n });\n Node.registry.register('vue-shape', VueShape, true);\n})(VueShape || (VueShape = {}));\n//# sourceMappingURL=node.js.map","/******************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar 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\nfunction __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\nvar __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\nfunction __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nfunction __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\nfunction __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 || Array.prototype.slice.call(from));\r\n}\n\n/**\r\n * Displays a warning message (using console.error) with a stack trace if the\r\n * function is called inside of active component.\r\n *\r\n * @param message warning message to be displayed\r\n */\r\nfunction warn$1(message) {\r\n var _a;\r\n warn(message, (_a = getCurrentInstance()) === null || _a === void 0 ? void 0 : _a.proxy);\r\n}\n\nvar activeEffectScope;\r\nvar effectScopeStack = [];\r\nvar EffectScopeImpl = /** @class */ (function () {\r\n function EffectScopeImpl(vm) {\r\n this.active = true;\r\n this.effects = [];\r\n this.cleanups = [];\r\n this.vm = vm;\r\n }\r\n EffectScopeImpl.prototype.run = function (fn) {\r\n if (this.active) {\r\n try {\r\n this.on();\r\n return fn();\r\n }\r\n finally {\r\n this.off();\r\n }\r\n }\r\n else if ((process.env.NODE_ENV !== 'production')) {\r\n warn$1(\"cannot run an inactive effect scope.\");\r\n }\r\n return;\r\n };\r\n EffectScopeImpl.prototype.on = function () {\r\n if (this.active) {\r\n effectScopeStack.push(this);\r\n activeEffectScope = this;\r\n }\r\n };\r\n EffectScopeImpl.prototype.off = function () {\r\n if (this.active) {\r\n effectScopeStack.pop();\r\n activeEffectScope = effectScopeStack[effectScopeStack.length - 1];\r\n }\r\n };\r\n EffectScopeImpl.prototype.stop = function () {\r\n if (this.active) {\r\n this.vm.$destroy();\r\n this.effects.forEach(function (e) { return e.stop(); });\r\n this.cleanups.forEach(function (cleanup) { return cleanup(); });\r\n this.active = false;\r\n }\r\n };\r\n return EffectScopeImpl;\r\n}());\r\nvar EffectScope = /** @class */ (function (_super) {\r\n __extends(EffectScope, _super);\r\n function EffectScope(detached) {\r\n if (detached === void 0) { detached = false; }\r\n var _this = this;\r\n var vm = undefined;\r\n withCurrentInstanceTrackingDisabled(function () {\r\n vm = defineComponentInstance(getVueConstructor());\r\n });\r\n _this = _super.call(this, vm) || this;\r\n if (!detached) {\r\n recordEffectScope(_this);\r\n }\r\n return _this;\r\n }\r\n return EffectScope;\r\n}(EffectScopeImpl));\r\nfunction recordEffectScope(effect, scope) {\r\n var _a;\r\n scope = scope || activeEffectScope;\r\n if (scope && scope.active) {\r\n scope.effects.push(effect);\r\n return;\r\n }\r\n // destory on parent component unmounted\r\n var vm = (_a = getCurrentInstance()) === null || _a === void 0 ? void 0 : _a.proxy;\r\n vm && vm.$on('hook:destroyed', function () { return effect.stop(); });\r\n}\r\nfunction effectScope(detached) {\r\n return new EffectScope(detached);\r\n}\r\nfunction getCurrentScope() {\r\n return activeEffectScope;\r\n}\r\nfunction onScopeDispose(fn) {\r\n if (activeEffectScope) {\r\n activeEffectScope.cleanups.push(fn);\r\n }\r\n else if ((process.env.NODE_ENV !== 'production')) {\r\n warn$1(\"onScopeDispose() is called when there is no active effect scope\" +\r\n \" to be associated with.\");\r\n }\r\n}\r\n/**\r\n * @internal\r\n **/\r\nfunction getCurrentScopeVM() {\r\n var _a, _b;\r\n return ((_a = getCurrentScope()) === null || _a === void 0 ? void 0 : _a.vm) || ((_b = getCurrentInstance()) === null || _b === void 0 ? void 0 : _b.proxy);\r\n}\r\n/**\r\n * @internal\r\n **/\r\nfunction bindCurrentScopeToVM(vm) {\r\n if (!vm.scope) {\r\n var scope_1 = new EffectScopeImpl(vm.proxy);\r\n vm.scope = scope_1;\r\n vm.proxy.$on('hook:destroyed', function () { return scope_1.stop(); });\r\n }\r\n return vm.scope;\r\n}\n\nvar vueDependency = undefined;\r\ntry {\r\n var requiredVue = require('vue');\r\n if (requiredVue && isVue(requiredVue)) {\r\n vueDependency = requiredVue;\r\n }\r\n else if (requiredVue &&\r\n 'default' in requiredVue &&\r\n isVue(requiredVue.default)) {\r\n vueDependency = requiredVue.default;\r\n }\r\n}\r\ncatch (_a) {\r\n // not available\r\n}\r\nvar vueConstructor = null;\r\nvar currentInstance = null;\r\nvar currentInstanceTracking = true;\r\nvar PluginInstalledFlag = '__composition_api_installed__';\r\nfunction isVue(obj) {\r\n return obj && isFunction(obj) && obj.name === 'Vue';\r\n}\r\nfunction isVueRegistered(Vue) {\r\n // resolve issue: https://github.com/vuejs/composition-api/issues/876#issue-1087619365\r\n return vueConstructor && hasOwn(Vue, PluginInstalledFlag);\r\n}\r\nfunction getVueConstructor() {\r\n if ((process.env.NODE_ENV !== 'production')) {\r\n assert(vueConstructor, \"must call Vue.use(VueCompositionAPI) before using any function.\");\r\n }\r\n return vueConstructor;\r\n}\r\n// returns registered vue or `vue` dependency\r\nfunction getRegisteredVueOrDefault() {\r\n var constructor = vueConstructor || vueDependency;\r\n if ((process.env.NODE_ENV !== 'production')) {\r\n assert(constructor, \"No vue dependency found.\");\r\n }\r\n return constructor;\r\n}\r\nfunction setVueConstructor(Vue) {\r\n // @ts-ignore\r\n if ((process.env.NODE_ENV !== 'production') && vueConstructor && Vue.__proto__ !== vueConstructor.__proto__) {\r\n warn('[vue-composition-api] another instance of Vue installed');\r\n }\r\n vueConstructor = Vue;\r\n Object.defineProperty(Vue, PluginInstalledFlag, {\r\n configurable: true,\r\n writable: true,\r\n value: true,\r\n });\r\n}\r\n/**\r\n * For `effectScope` to create instance without populate the current instance\r\n * @internal\r\n **/\r\nfunction withCurrentInstanceTrackingDisabled(fn) {\r\n var prev = currentInstanceTracking;\r\n currentInstanceTracking = false;\r\n try {\r\n fn();\r\n }\r\n finally {\r\n currentInstanceTracking = prev;\r\n }\r\n}\r\nfunction setCurrentInstance(instance) {\r\n if (!currentInstanceTracking)\r\n return;\r\n var prev = currentInstance;\r\n prev === null || prev === void 0 ? void 0 : prev.scope.off();\r\n currentInstance = instance;\r\n currentInstance === null || currentInstance === void 0 ? void 0 : currentInstance.scope.on();\r\n}\r\nfunction getCurrentInstance() {\r\n return currentInstance;\r\n}\r\nvar instanceMapCache = new WeakMap();\r\nfunction toVue3ComponentInstance(vm) {\r\n if (instanceMapCache.has(vm)) {\r\n return instanceMapCache.get(vm);\r\n }\r\n var instance = {\r\n proxy: vm,\r\n update: vm.$forceUpdate,\r\n type: vm.$options,\r\n uid: vm._uid,\r\n // $emit is defined on prototype and it expected to be bound\r\n emit: vm.$emit.bind(vm),\r\n parent: null,\r\n root: null, // to be immediately set\r\n };\r\n bindCurrentScopeToVM(instance);\r\n // map vm.$props =\r\n var instanceProps = [\r\n 'data',\r\n 'props',\r\n 'attrs',\r\n 'refs',\r\n 'vnode',\r\n 'slots',\r\n ];\r\n instanceProps.forEach(function (prop) {\r\n proxy(instance, prop, {\r\n get: function () {\r\n return vm[\"$\".concat(prop)];\r\n },\r\n });\r\n });\r\n proxy(instance, 'isMounted', {\r\n get: function () {\r\n // @ts-expect-error private api\r\n return vm._isMounted;\r\n },\r\n });\r\n proxy(instance, 'isUnmounted', {\r\n get: function () {\r\n // @ts-expect-error private api\r\n return vm._isDestroyed;\r\n },\r\n });\r\n proxy(instance, 'isDeactivated', {\r\n get: function () {\r\n // @ts-expect-error private api\r\n return vm._inactive;\r\n },\r\n });\r\n proxy(instance, 'emitted', {\r\n get: function () {\r\n // @ts-expect-error private api\r\n return vm._events;\r\n },\r\n });\r\n instanceMapCache.set(vm, instance);\r\n if (vm.$parent) {\r\n instance.parent = toVue3ComponentInstance(vm.$parent);\r\n }\r\n if (vm.$root) {\r\n instance.root = toVue3ComponentInstance(vm.$root);\r\n }\r\n return instance;\r\n}\n\nvar toString = function (x) { return Object.prototype.toString.call(x); };\r\nfunction isNative(Ctor) {\r\n return typeof Ctor === 'function' && /native code/.test(Ctor.toString());\r\n}\r\nvar hasSymbol = typeof Symbol !== 'undefined' &&\r\n isNative(Symbol) &&\r\n typeof Reflect !== 'undefined' &&\r\n isNative(Reflect.ownKeys);\r\nvar noopFn = function (_) { return _; };\r\nfunction proxy(target, key, _a) {\r\n var get = _a.get, set = _a.set;\r\n Object.defineProperty(target, key, {\r\n enumerable: true,\r\n configurable: true,\r\n get: get || noopFn,\r\n set: set || noopFn,\r\n });\r\n}\r\nfunction def(obj, key, val, enumerable) {\r\n Object.defineProperty(obj, key, {\r\n value: val,\r\n enumerable: !!enumerable,\r\n writable: true,\r\n configurable: true,\r\n });\r\n}\r\nfunction hasOwn(obj, key) {\r\n return Object.hasOwnProperty.call(obj, key);\r\n}\r\nfunction assert(condition, msg) {\r\n if (!condition) {\r\n throw new Error(\"[vue-composition-api] \".concat(msg));\r\n }\r\n}\r\nfunction isPrimitive(value) {\r\n return (typeof value === 'string' ||\r\n typeof value === 'number' ||\r\n // $flow-disable-line\r\n typeof value === 'symbol' ||\r\n typeof value === 'boolean');\r\n}\r\nfunction isArray(x) {\r\n return Array.isArray(x);\r\n}\r\nvar objectToString = Object.prototype.toString;\r\nvar toTypeString = function (value) {\r\n return objectToString.call(value);\r\n};\r\nvar isMap = function (val) {\r\n return toTypeString(val) === '[object Map]';\r\n};\r\nvar isSet = function (val) {\r\n return toTypeString(val) === '[object Set]';\r\n};\r\nvar MAX_VALID_ARRAY_LENGTH = 4294967295; // Math.pow(2, 32) - 1\r\nfunction isValidArrayIndex(val) {\r\n var n = parseFloat(String(val));\r\n return (n >= 0 &&\r\n Math.floor(n) === n &&\r\n isFinite(val) &&\r\n n <= MAX_VALID_ARRAY_LENGTH);\r\n}\r\nfunction isObject(val) {\r\n return val !== null && typeof val === 'object';\r\n}\r\nfunction isPlainObject(x) {\r\n return toString(x) === '[object Object]';\r\n}\r\nfunction isFunction(x) {\r\n return typeof x === 'function';\r\n}\r\nfunction isUndef(v) {\r\n return v === undefined || v === null;\r\n}\r\nfunction warn(msg, vm) {\r\n var Vue = getRegisteredVueOrDefault();\r\n if (!Vue || !Vue.util)\r\n console.warn(\"[vue-composition-api] \".concat(msg));\r\n else\r\n Vue.util.warn(msg, vm);\r\n}\r\nfunction logError(err, vm, info) {\r\n if ((process.env.NODE_ENV !== 'production')) {\r\n warn(\"Error in \".concat(info, \": \\\"\").concat(err.toString(), \"\\\"\"), vm);\r\n }\r\n if (typeof window !== 'undefined' && typeof console !== 'undefined') {\r\n console.error(err);\r\n }\r\n else {\r\n throw err;\r\n }\r\n}\r\n/**\r\n * Object.is polyfill\r\n * https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/is\r\n * */\r\nfunction isSame(value1, value2) {\r\n if (value1 === value2) {\r\n return value1 !== 0 || 1 / value1 === 1 / value2;\r\n }\r\n else {\r\n return value1 !== value1 && value2 !== value2;\r\n }\r\n}\n\nfunction getCurrentInstanceForFn(hook, target) {\r\n target = target || getCurrentInstance();\r\n if ((process.env.NODE_ENV !== 'production') && !target) {\r\n warn(\"\".concat(hook, \" is called when there is no active component instance to be \") +\r\n \"associated with. \" +\r\n \"Lifecycle injection APIs can only be used during execution of setup().\");\r\n }\r\n return target;\r\n}\r\nfunction defineComponentInstance(Ctor, options) {\r\n if (options === void 0) { options = {}; }\r\n var silent = Ctor.config.silent;\r\n Ctor.config.silent = true;\r\n var vm = new Ctor(options);\r\n Ctor.config.silent = silent;\r\n return vm;\r\n}\r\nfunction isComponentInstance(obj) {\r\n var Vue = getVueConstructor();\r\n return Vue && obj instanceof Vue;\r\n}\r\nfunction createSlotProxy(vm, slotName) {\r\n return (function () {\r\n var args = [];\r\n for (var _i = 0; _i < arguments.length; _i++) {\r\n args[_i] = arguments[_i];\r\n }\r\n if (!vm.$scopedSlots[slotName]) {\r\n if ((process.env.NODE_ENV !== 'production'))\r\n return warn(\"slots.\".concat(slotName, \"() got called outside of the \\\"render()\\\" scope\"), vm);\r\n return;\r\n }\r\n return vm.$scopedSlots[slotName].apply(vm, args);\r\n });\r\n}\r\nfunction resolveSlots(slots, normalSlots) {\r\n var res;\r\n if (!slots) {\r\n res = {};\r\n }\r\n else if (slots._normalized) {\r\n // fast path 1: child component re-render only, parent did not change\r\n return slots._normalized;\r\n }\r\n else {\r\n res = {};\r\n for (var key in slots) {\r\n if (slots[key] && key[0] !== '$') {\r\n res[key] = true;\r\n }\r\n }\r\n }\r\n // expose normal slots on scopedSlots\r\n for (var key in normalSlots) {\r\n if (!(key in res)) {\r\n res[key] = true;\r\n }\r\n }\r\n return res;\r\n}\r\nvar vueInternalClasses;\r\nvar getVueInternalClasses = function () {\r\n if (!vueInternalClasses) {\r\n var vm = defineComponentInstance(getVueConstructor(), {\r\n computed: {\r\n value: function () {\r\n return 0;\r\n },\r\n },\r\n });\r\n // to get Watcher class\r\n var Watcher = vm._computedWatchers.value.constructor;\r\n // to get Dep class\r\n var Dep = vm._data.__ob__.dep.constructor;\r\n vueInternalClasses = {\r\n Watcher: Watcher,\r\n Dep: Dep,\r\n };\r\n vm.$destroy();\r\n }\r\n return vueInternalClasses;\r\n};\n\nfunction createSymbol(name) {\r\n return hasSymbol ? Symbol.for(name) : name;\r\n}\r\nvar WatcherPreFlushQueueKey = createSymbol('composition-api.preFlushQueue');\r\nvar WatcherPostFlushQueueKey = createSymbol('composition-api.postFlushQueue');\r\n// must be a string, symbol key is ignored in reactive\r\nvar RefKey = 'composition-api.refKey';\n\nvar accessModifiedSet = new WeakMap();\r\nvar rawSet = new WeakMap();\r\nvar readonlySet = new WeakMap();\n\n/**\r\n * Set a property on an object. Adds the new property, triggers change\r\n * notification and intercept it's subsequent access if the property doesn't\r\n * already exist.\r\n */\r\nfunction set$1(target, key, val) {\r\n var Vue = getVueConstructor();\r\n // @ts-expect-error https://github.com/vuejs/vue/pull/12132\r\n var _a = Vue.util, warn = _a.warn, defineReactive = _a.defineReactive;\r\n if ((process.env.NODE_ENV !== 'production') && (isUndef(target) || isPrimitive(target))) {\r\n warn(\"Cannot set reactive property on undefined, null, or primitive value: \".concat(target));\r\n }\r\n var ob = target.__ob__;\r\n function ssrMockReactivity() {\r\n // in SSR, there is no __ob__. Mock for reactivity check\r\n if (ob && isObject(val) && !hasOwn(val, '__ob__')) {\r\n mockReactivityDeep(val);\r\n }\r\n }\r\n if (isArray(target)) {\r\n if (isValidArrayIndex(key)) {\r\n target.length = Math.max(target.length, key);\r\n target.splice(key, 1, val);\r\n ssrMockReactivity();\r\n return val;\r\n }\r\n else if (key === 'length' && val !== target.length) {\r\n target.length = val;\r\n ob === null || ob === void 0 ? void 0 : ob.dep.notify();\r\n return val;\r\n }\r\n }\r\n if (key in target && !(key in Object.prototype)) {\r\n target[key] = val;\r\n ssrMockReactivity();\r\n return val;\r\n }\r\n if (target._isVue || (ob && ob.vmCount)) {\r\n (process.env.NODE_ENV !== 'production') &&\r\n warn('Avoid adding reactive properties to a Vue instance or its root $data ' +\r\n 'at runtime - declare it upfront in the data option.');\r\n return val;\r\n }\r\n if (!ob) {\r\n target[key] = val;\r\n return val;\r\n }\r\n defineReactive(ob.value, key, val);\r\n // IMPORTANT: define access control before trigger watcher\r\n defineAccessControl(target, key, val);\r\n ssrMockReactivity();\r\n ob.dep.notify();\r\n return val;\r\n}\n\nvar _isForceTrigger = false;\r\nfunction isForceTrigger() {\r\n return _isForceTrigger;\r\n}\r\nfunction setForceTrigger(v) {\r\n _isForceTrigger = v;\r\n}\n\nvar RefImpl = /** @class */ (function () {\r\n function RefImpl(_a) {\r\n var get = _a.get, set = _a.set;\r\n proxy(this, 'value', {\r\n get: get,\r\n set: set,\r\n });\r\n }\r\n return RefImpl;\r\n}());\r\nfunction createRef(options, isReadonly, isComputed) {\r\n if (isReadonly === void 0) { isReadonly = false; }\r\n if (isComputed === void 0) { isComputed = false; }\r\n var r = new RefImpl(options);\r\n // add effect to differentiate refs from computed\r\n if (isComputed)\r\n r.effect = true;\r\n // seal the ref, this could prevent ref from being observed\r\n // It's safe to seal the ref, since we really shouldn't extend it.\r\n // related issues: #79\r\n var sealed = Object.seal(r);\r\n if (isReadonly)\r\n readonlySet.set(sealed, true);\r\n return sealed;\r\n}\r\nfunction ref(raw) {\r\n var _a;\r\n if (isRef(raw)) {\r\n return raw;\r\n }\r\n var value = reactive((_a = {}, _a[RefKey] = raw, _a));\r\n return createRef({\r\n get: function () { return value[RefKey]; },\r\n set: function (v) { return (value[RefKey] = v); },\r\n });\r\n}\r\nfunction isRef(value) {\r\n return value instanceof RefImpl;\r\n}\r\nfunction unref(ref) {\r\n return isRef(ref) ? ref.value : ref;\r\n}\r\nfunction toRefs(obj) {\r\n if ((process.env.NODE_ENV !== 'production') && !isReactive(obj)) {\r\n warn(\"toRefs() expects a reactive object but received a plain one.\");\r\n }\r\n if (!isPlainObject(obj))\r\n return obj;\r\n var ret = {};\r\n for (var key in obj) {\r\n ret[key] = toRef(obj, key);\r\n }\r\n return ret;\r\n}\r\nfunction customRef(factory) {\r\n var version = ref(0);\r\n return createRef(factory(function () { return void version.value; }, function () {\r\n ++version.value;\r\n }));\r\n}\r\nfunction toRef(object, key) {\r\n if (!(key in object))\r\n set$1(object, key, undefined);\r\n var v = object[key];\r\n if (isRef(v))\r\n return v;\r\n return createRef({\r\n get: function () { return object[key]; },\r\n set: function (v) { return (object[key] = v); },\r\n });\r\n}\r\nfunction shallowRef(raw) {\r\n var _a;\r\n if (isRef(raw)) {\r\n return raw;\r\n }\r\n var value = shallowReactive((_a = {}, _a[RefKey] = raw, _a));\r\n return createRef({\r\n get: function () { return value[RefKey]; },\r\n set: function (v) { return (value[RefKey] = v); },\r\n });\r\n}\r\nfunction triggerRef(value) {\r\n if (!isRef(value))\r\n return;\r\n setForceTrigger(true);\r\n value.value = value.value;\r\n setForceTrigger(false);\r\n}\r\nfunction proxyRefs(objectWithRefs) {\r\n var _a, e_1, _b;\r\n if (isReactive(objectWithRefs)) {\r\n return objectWithRefs;\r\n }\r\n var value = reactive((_a = {}, _a[RefKey] = objectWithRefs, _a));\r\n def(value, RefKey, value[RefKey], false);\r\n var _loop_1 = function (key) {\r\n proxy(value, key, {\r\n get: function () {\r\n if (isRef(value[RefKey][key])) {\r\n return value[RefKey][key].value;\r\n }\r\n return value[RefKey][key];\r\n },\r\n set: function (v) {\r\n if (isRef(value[RefKey][key])) {\r\n return (value[RefKey][key].value = unref(v));\r\n }\r\n value[RefKey][key] = unref(v);\r\n },\r\n });\r\n };\r\n try {\r\n for (var _c = __values(Object.keys(objectWithRefs)), _d = _c.next(); !_d.done; _d = _c.next()) {\r\n var key = _d.value;\r\n _loop_1(key);\r\n }\r\n }\r\n catch (e_1_1) { e_1 = { error: e_1_1 }; }\r\n finally {\r\n try {\r\n if (_d && !_d.done && (_b = _c.return)) _b.call(_c);\r\n }\r\n finally { if (e_1) throw e_1.error; }\r\n }\r\n return value;\r\n}\n\nvar SKIPFLAG = '__v_skip';\r\nfunction isRaw(obj) {\r\n var _a;\r\n return Boolean(obj &&\r\n hasOwn(obj, '__ob__') &&\r\n typeof obj.__ob__ === 'object' &&\r\n ((_a = obj.__ob__) === null || _a === void 0 ? void 0 : _a[SKIPFLAG]));\r\n}\r\nfunction isReactive(obj) {\r\n var _a;\r\n return Boolean(obj &&\r\n hasOwn(obj, '__ob__') &&\r\n typeof obj.__ob__ === 'object' &&\r\n !((_a = obj.__ob__) === null || _a === void 0 ? void 0 : _a[SKIPFLAG]));\r\n}\r\n/**\r\n * Proxing property access of target.\r\n * We can do unwrapping and other things here.\r\n */\r\nfunction setupAccessControl(target) {\r\n if (!isPlainObject(target) ||\r\n isRaw(target) ||\r\n isArray(target) ||\r\n isRef(target) ||\r\n isComponentInstance(target) ||\r\n accessModifiedSet.has(target))\r\n return;\r\n accessModifiedSet.set(target, true);\r\n var keys = Object.keys(target);\r\n for (var i = 0; i < keys.length; i++) {\r\n defineAccessControl(target, keys[i]);\r\n }\r\n}\r\n/**\r\n * Auto unwrapping when access property\r\n */\r\nfunction defineAccessControl(target, key, val) {\r\n if (key === '__ob__')\r\n return;\r\n if (isRaw(target[key]))\r\n return;\r\n var getter;\r\n var setter;\r\n var property = Object.getOwnPropertyDescriptor(target, key);\r\n if (property) {\r\n if (property.configurable === false) {\r\n return;\r\n }\r\n getter = property.get;\r\n setter = property.set;\r\n if ((!getter || setter) /* not only have getter */ &&\r\n arguments.length === 2) {\r\n val = target[key];\r\n }\r\n }\r\n setupAccessControl(val);\r\n proxy(target, key, {\r\n get: function getterHandler() {\r\n var value = getter ? getter.call(target) : val;\r\n // if the key is equal to RefKey, skip the unwrap logic\r\n if (key !== RefKey && isRef(value)) {\r\n return value.value;\r\n }\r\n else {\r\n return value;\r\n }\r\n },\r\n set: function setterHandler(newVal) {\r\n if (getter && !setter)\r\n return;\r\n // If the key is equal to RefKey, skip the unwrap logic\r\n // If and only if \"value\" is ref and \"newVal\" is not a ref,\r\n // the assignment should be proxied to \"value\" ref.\r\n if (key !== RefKey && isRef(val) && !isRef(newVal)) {\r\n val.value = newVal;\r\n }\r\n else if (setter) {\r\n setter.call(target, newVal);\r\n val = newVal;\r\n }\r\n else {\r\n val = newVal;\r\n }\r\n setupAccessControl(newVal);\r\n },\r\n });\r\n}\r\nfunction observe(obj) {\r\n var Vue = getRegisteredVueOrDefault();\r\n var observed;\r\n if (Vue.observable) {\r\n observed = Vue.observable(obj);\r\n }\r\n else {\r\n var vm = defineComponentInstance(Vue, {\r\n data: {\r\n $$state: obj,\r\n },\r\n });\r\n observed = vm._data.$$state;\r\n }\r\n // in SSR, there is no __ob__. Mock for reactivity check\r\n if (!hasOwn(observed, '__ob__')) {\r\n mockReactivityDeep(observed);\r\n }\r\n return observed;\r\n}\r\n/**\r\n * Mock __ob__ for object recursively\r\n */\r\nfunction mockReactivityDeep(obj, seen) {\r\n var e_1, _a;\r\n if (seen === void 0) { seen = new Set(); }\r\n if (seen.has(obj) || hasOwn(obj, '__ob__') || !Object.isExtensible(obj))\r\n return;\r\n def(obj, '__ob__', mockObserver(obj));\r\n seen.add(obj);\r\n try {\r\n for (var _b = __values(Object.keys(obj)), _c = _b.next(); !_c.done; _c = _b.next()) {\r\n var key = _c.value;\r\n var value = obj[key];\r\n if (!(isPlainObject(value) || isArray(value)) ||\r\n isRaw(value) ||\r\n !Object.isExtensible(value)) {\r\n continue;\r\n }\r\n mockReactivityDeep(value, seen);\r\n }\r\n }\r\n catch (e_1_1) { e_1 = { error: e_1_1 }; }\r\n finally {\r\n try {\r\n if (_c && !_c.done && (_a = _b.return)) _a.call(_b);\r\n }\r\n finally { if (e_1) throw e_1.error; }\r\n }\r\n}\r\nfunction mockObserver(value) {\r\n if (value === void 0) { value = {}; }\r\n return {\r\n value: value,\r\n dep: {\r\n notify: noopFn,\r\n depend: noopFn,\r\n addSub: noopFn,\r\n removeSub: noopFn,\r\n },\r\n };\r\n}\r\nfunction createObserver() {\r\n return observe({}).__ob__;\r\n}\r\nfunction shallowReactive(obj) {\r\n var e_2, _a;\r\n if (!isObject(obj)) {\r\n if ((process.env.NODE_ENV !== 'production')) {\r\n warn('\"shallowReactive()\" must be called on an object.');\r\n }\r\n return obj;\r\n }\r\n if (!(isPlainObject(obj) || isArray(obj)) ||\r\n isRaw(obj) ||\r\n !Object.isExtensible(obj)) {\r\n return obj;\r\n }\r\n var observed = observe(isArray(obj) ? [] : {});\r\n var ob = observed.__ob__;\r\n var _loop_1 = function (key) {\r\n var val = obj[key];\r\n var getter;\r\n var setter;\r\n var property = Object.getOwnPropertyDescriptor(obj, key);\r\n if (property) {\r\n if (property.configurable === false) {\r\n return \"continue\";\r\n }\r\n getter = property.get;\r\n setter = property.set;\r\n }\r\n proxy(observed, key, {\r\n get: function getterHandler() {\r\n var _a;\r\n (_a = ob.dep) === null || _a === void 0 ? void 0 : _a.depend();\r\n return val;\r\n },\r\n set: function setterHandler(newVal) {\r\n var _a;\r\n if (getter && !setter)\r\n return;\r\n if (!isForceTrigger() && val === newVal)\r\n return;\r\n if (setter) {\r\n setter.call(obj, newVal);\r\n }\r\n else {\r\n val = newVal;\r\n }\r\n (_a = ob.dep) === null || _a === void 0 ? void 0 : _a.notify();\r\n },\r\n });\r\n };\r\n try {\r\n for (var _b = __values(Object.keys(obj)), _c = _b.next(); !_c.done; _c = _b.next()) {\r\n var key = _c.value;\r\n _loop_1(key);\r\n }\r\n }\r\n catch (e_2_1) { e_2 = { error: e_2_1 }; }\r\n finally {\r\n try {\r\n if (_c && !_c.done && (_a = _b.return)) _a.call(_b);\r\n }\r\n finally { if (e_2) throw e_2.error; }\r\n }\r\n return observed;\r\n}\r\n/**\r\n * Make obj reactivity\r\n */\r\nfunction reactive(obj) {\r\n if (!isObject(obj)) {\r\n if ((process.env.NODE_ENV !== 'production')) {\r\n warn('\"reactive()\" must be called on an object.');\r\n }\r\n return obj;\r\n }\r\n if (!(isPlainObject(obj) || isArray(obj)) ||\r\n isRaw(obj) ||\r\n !Object.isExtensible(obj)) {\r\n return obj;\r\n }\r\n var observed = observe(obj);\r\n setupAccessControl(observed);\r\n return observed;\r\n}\r\n/**\r\n * Make sure obj can't be a reactive\r\n */\r\nfunction markRaw(obj) {\r\n if (!(isPlainObject(obj) || isArray(obj)) || !Object.isExtensible(obj)) {\r\n return obj;\r\n }\r\n // set the vue observable flag at obj\r\n var ob = createObserver();\r\n ob[SKIPFLAG] = true;\r\n def(obj, '__ob__', ob);\r\n // mark as Raw\r\n rawSet.set(obj, true);\r\n return obj;\r\n}\r\nfunction toRaw(observed) {\r\n var _a;\r\n if (isRaw(observed) || !Object.isExtensible(observed)) {\r\n return observed;\r\n }\r\n return ((_a = observed === null || observed === void 0 ? void 0 : observed.__ob__) === null || _a === void 0 ? void 0 : _a.value) || observed;\r\n}\n\nfunction isReadonly(obj) {\r\n return readonlySet.has(obj);\r\n}\r\n/**\r\n * **In @vue/composition-api, `reactive` only provides type-level readonly check**\r\n *\r\n * Creates a readonly copy of the original object. Note the returned copy is not\r\n * made reactive, but `readonly` can be called on an already reactive object.\r\n */\r\nfunction readonly(target) {\r\n if ((process.env.NODE_ENV !== 'production') && !isObject(target)) {\r\n warn(\"value cannot be made reactive: \".concat(String(target)));\r\n }\r\n else {\r\n readonlySet.set(target, true);\r\n }\r\n return target;\r\n}\r\nfunction shallowReadonly(obj) {\r\n var e_1, _a;\r\n if (!isObject(obj)) {\r\n if ((process.env.NODE_ENV !== 'production')) {\r\n warn(\"value cannot be made reactive: \".concat(String(obj)));\r\n }\r\n return obj;\r\n }\r\n if (!(isPlainObject(obj) || isArray(obj)) ||\r\n (!Object.isExtensible(obj) && !isRef(obj))) {\r\n return obj;\r\n }\r\n var readonlyObj = isRef(obj)\r\n ? new RefImpl({})\r\n : isReactive(obj)\r\n ? observe({})\r\n : {};\r\n var source = reactive({});\r\n var ob = source.__ob__;\r\n var _loop_1 = function (key) {\r\n var val = obj[key];\r\n var getter;\r\n var property = Object.getOwnPropertyDescriptor(obj, key);\r\n if (property) {\r\n if (property.configurable === false && !isRef(obj)) {\r\n return \"continue\";\r\n }\r\n getter = property.get;\r\n }\r\n proxy(readonlyObj, key, {\r\n get: function getterHandler() {\r\n var value = getter ? getter.call(obj) : val;\r\n ob.dep.depend();\r\n return value;\r\n },\r\n set: function (v) {\r\n if ((process.env.NODE_ENV !== 'production')) {\r\n warn(\"Set operation on key \\\"\".concat(key, \"\\\" failed: target is readonly.\"));\r\n }\r\n },\r\n });\r\n };\r\n try {\r\n for (var _b = __values(Object.keys(obj)), _c = _b.next(); !_c.done; _c = _b.next()) {\r\n var key = _c.value;\r\n _loop_1(key);\r\n }\r\n }\r\n catch (e_1_1) { e_1 = { error: e_1_1 }; }\r\n finally {\r\n try {\r\n if (_c && !_c.done && (_a = _b.return)) _a.call(_b);\r\n }\r\n finally { if (e_1) throw e_1.error; }\r\n }\r\n readonlySet.set(readonlyObj, true);\r\n return readonlyObj;\r\n}\n\n/**\r\n * Delete a property and trigger change if necessary.\r\n */\r\nfunction del(target, key) {\r\n var Vue = getVueConstructor();\r\n var warn = Vue.util.warn;\r\n if ((process.env.NODE_ENV !== 'production') && (isUndef(target) || isPrimitive(target))) {\r\n warn(\"Cannot delete reactive property on undefined, null, or primitive value: \".concat(target));\r\n }\r\n if (isArray(target) && isValidArrayIndex(key)) {\r\n target.splice(key, 1);\r\n return;\r\n }\r\n var ob = target.__ob__;\r\n if (target._isVue || (ob && ob.vmCount)) {\r\n (process.env.NODE_ENV !== 'production') &&\r\n warn('Avoid deleting properties on a Vue instance or its root $data ' +\r\n '- just set it to null.');\r\n return;\r\n }\r\n if (!hasOwn(target, key)) {\r\n return;\r\n }\r\n delete target[key];\r\n if (!ob) {\r\n return;\r\n }\r\n ob.dep.notify();\r\n}\n\nvar genName = function (name) { return \"on\".concat(name[0].toUpperCase() + name.slice(1)); };\r\nfunction createLifeCycle(lifeCyclehook) {\r\n return function (callback, target) {\r\n var instance = getCurrentInstanceForFn(genName(lifeCyclehook), target);\r\n return (instance &&\r\n injectHookOption(getVueConstructor(), instance, lifeCyclehook, callback));\r\n };\r\n}\r\nfunction injectHookOption(Vue, instance, hook, val) {\r\n var options = instance.proxy.$options;\r\n var mergeFn = Vue.config.optionMergeStrategies[hook];\r\n var wrappedHook = wrapHookCall(instance, val);\r\n options[hook] = mergeFn(options[hook], wrappedHook);\r\n return wrappedHook;\r\n}\r\nfunction wrapHookCall(instance, fn) {\r\n return function () {\r\n var args = [];\r\n for (var _i = 0; _i < arguments.length; _i++) {\r\n args[_i] = arguments[_i];\r\n }\r\n var prev = getCurrentInstance();\r\n setCurrentInstance(instance);\r\n try {\r\n return fn.apply(void 0, __spreadArray([], __read(args), false));\r\n }\r\n finally {\r\n setCurrentInstance(prev);\r\n }\r\n };\r\n}\r\nvar onBeforeMount = createLifeCycle('beforeMount');\r\nvar onMounted = createLifeCycle('mounted');\r\nvar onBeforeUpdate = createLifeCycle('beforeUpdate');\r\nvar onUpdated = createLifeCycle('updated');\r\nvar onBeforeUnmount = createLifeCycle('beforeDestroy');\r\nvar onUnmounted = createLifeCycle('destroyed');\r\nvar onErrorCaptured = createLifeCycle('errorCaptured');\r\nvar onActivated = createLifeCycle('activated');\r\nvar onDeactivated = createLifeCycle('deactivated');\r\nvar onServerPrefetch = createLifeCycle('serverPrefetch');\n\nvar fallbackVM;\r\nfunction flushPreQueue() {\r\n flushQueue(this, WatcherPreFlushQueueKey);\r\n}\r\nfunction flushPostQueue() {\r\n flushQueue(this, WatcherPostFlushQueueKey);\r\n}\r\nfunction hasWatchEnv(vm) {\r\n return vm[WatcherPreFlushQueueKey] !== undefined;\r\n}\r\nfunction installWatchEnv(vm) {\r\n vm[WatcherPreFlushQueueKey] = [];\r\n vm[WatcherPostFlushQueueKey] = [];\r\n vm.$on('hook:beforeUpdate', flushPreQueue);\r\n vm.$on('hook:updated', flushPostQueue);\r\n}\r\nfunction getWatcherOption(options) {\r\n return __assign({\r\n immediate: false,\r\n deep: false,\r\n flush: 'pre',\r\n }, options);\r\n}\r\nfunction getWatchEffectOption(options) {\r\n return __assign({\r\n flush: 'pre',\r\n }, options);\r\n}\r\nfunction getWatcherVM() {\r\n var vm = getCurrentScopeVM();\r\n if (!vm) {\r\n if (!fallbackVM) {\r\n fallbackVM = defineComponentInstance(getVueConstructor());\r\n }\r\n vm = fallbackVM;\r\n }\r\n else if (!hasWatchEnv(vm)) {\r\n installWatchEnv(vm);\r\n }\r\n return vm;\r\n}\r\nfunction flushQueue(vm, key) {\r\n var queue = vm[key];\r\n for (var index = 0; index < queue.length; index++) {\r\n queue[index]();\r\n }\r\n queue.length = 0;\r\n}\r\nfunction queueFlushJob(vm, fn, mode) {\r\n // flush all when beforeUpdate and updated are not fired\r\n var fallbackFlush = function () {\r\n vm.$nextTick(function () {\r\n if (vm[WatcherPreFlushQueueKey].length) {\r\n flushQueue(vm, WatcherPreFlushQueueKey);\r\n }\r\n if (vm[WatcherPostFlushQueueKey].length) {\r\n flushQueue(vm, WatcherPostFlushQueueKey);\r\n }\r\n });\r\n };\r\n switch (mode) {\r\n case 'pre':\r\n fallbackFlush();\r\n vm[WatcherPreFlushQueueKey].push(fn);\r\n break;\r\n case 'post':\r\n fallbackFlush();\r\n vm[WatcherPostFlushQueueKey].push(fn);\r\n break;\r\n default:\r\n assert(false, \"flush must be one of [\\\"post\\\", \\\"pre\\\", \\\"sync\\\"], but got \".concat(mode));\r\n break;\r\n }\r\n}\r\nfunction createVueWatcher(vm, getter, callback, options) {\r\n var index = vm._watchers.length;\r\n // @ts-ignore: use undocumented options\r\n vm.$watch(getter, callback, {\r\n immediate: options.immediateInvokeCallback,\r\n deep: options.deep,\r\n lazy: options.noRun,\r\n sync: options.sync,\r\n before: options.before,\r\n });\r\n return vm._watchers[index];\r\n}\r\n// We have to monkeypatch the teardown function so Vue will run\r\n// runCleanup() when it tears down the watcher on unmounted.\r\nfunction patchWatcherTeardown(watcher, runCleanup) {\r\n var _teardown = watcher.teardown;\r\n watcher.teardown = function () {\r\n var args = [];\r\n for (var _i = 0; _i < arguments.length; _i++) {\r\n args[_i] = arguments[_i];\r\n }\r\n _teardown.apply(watcher, args);\r\n runCleanup();\r\n };\r\n}\r\nfunction createWatcher(vm, source, cb, options) {\r\n var _a;\r\n if ((process.env.NODE_ENV !== 'production') && !cb) {\r\n if (options.immediate !== undefined) {\r\n warn(\"watch() \\\"immediate\\\" option is only respected when using the \" +\r\n \"watch(source, callback, options?) signature.\");\r\n }\r\n if (options.deep !== undefined) {\r\n warn(\"watch() \\\"deep\\\" option is only respected when using the \" +\r\n \"watch(source, callback, options?) signature.\");\r\n }\r\n }\r\n var flushMode = options.flush;\r\n var isSync = flushMode === 'sync';\r\n var cleanup;\r\n var registerCleanup = function (fn) {\r\n cleanup = function () {\r\n try {\r\n fn();\r\n }\r\n catch (\r\n // FIXME: remove any\r\n error) {\r\n logError(error, vm, 'onCleanup()');\r\n }\r\n };\r\n };\r\n // cleanup before running getter again\r\n var runCleanup = function () {\r\n if (cleanup) {\r\n cleanup();\r\n cleanup = null;\r\n }\r\n };\r\n var createScheduler = function (fn) {\r\n if (isSync ||\r\n /* without a current active instance, ignore pre|post mode */ vm ===\r\n fallbackVM) {\r\n return fn;\r\n }\r\n return (function () {\r\n var args = [];\r\n for (var _i = 0; _i < arguments.length; _i++) {\r\n args[_i] = arguments[_i];\r\n }\r\n return queueFlushJob(vm, function () {\r\n fn.apply(void 0, __spreadArray([], __read(args), false));\r\n }, flushMode);\r\n });\r\n };\r\n // effect watch\r\n if (cb === null) {\r\n var running_1 = false;\r\n var getter_1 = function () {\r\n // preventing the watch callback being call in the same execution\r\n if (running_1) {\r\n return;\r\n }\r\n try {\r\n running_1 = true;\r\n source(registerCleanup);\r\n }\r\n finally {\r\n running_1 = false;\r\n }\r\n };\r\n var watcher_1 = createVueWatcher(vm, getter_1, noopFn, {\r\n deep: options.deep || false,\r\n sync: isSync,\r\n before: runCleanup,\r\n });\r\n patchWatcherTeardown(watcher_1, runCleanup);\r\n // enable the watcher update\r\n watcher_1.lazy = false;\r\n var originGet = watcher_1.get.bind(watcher_1);\r\n // always run watchEffect\r\n watcher_1.get = createScheduler(originGet);\r\n return function () {\r\n watcher_1.teardown();\r\n };\r\n }\r\n var deep = options.deep;\r\n var isMultiSource = false;\r\n var getter;\r\n if (isRef(source)) {\r\n getter = function () { return source.value; };\r\n }\r\n else if (isReactive(source)) {\r\n getter = function () { return source; };\r\n deep = true;\r\n }\r\n else if (isArray(source)) {\r\n isMultiSource = true;\r\n getter = function () {\r\n return source.map(function (s) {\r\n if (isRef(s)) {\r\n return s.value;\r\n }\r\n else if (isReactive(s)) {\r\n return traverse(s);\r\n }\r\n else if (isFunction(s)) {\r\n return s();\r\n }\r\n else {\r\n (process.env.NODE_ENV !== 'production') &&\r\n warn(\"Invalid watch source: \".concat(JSON.stringify(s), \".\\n A watch source can only be a getter/effect function, a ref, a reactive object, or an array of these types.\"), vm);\r\n return noopFn;\r\n }\r\n });\r\n };\r\n }\r\n else if (isFunction(source)) {\r\n getter = source;\r\n }\r\n else {\r\n getter = noopFn;\r\n (process.env.NODE_ENV !== 'production') &&\r\n warn(\"Invalid watch source: \".concat(JSON.stringify(source), \".\\n A watch source can only be a getter/effect function, a ref, a reactive object, or an array of these types.\"), vm);\r\n }\r\n if (deep) {\r\n var baseGetter_1 = getter;\r\n getter = function () { return traverse(baseGetter_1()); };\r\n }\r\n var applyCb = function (n, o) {\r\n if (!deep &&\r\n isMultiSource &&\r\n n.every(function (v, i) { return isSame(v, o[i]); }))\r\n return;\r\n // cleanup before running cb again\r\n runCleanup();\r\n return cb(n, o, registerCleanup);\r\n };\r\n var callback = createScheduler(applyCb);\r\n if (options.immediate) {\r\n var originalCallback_1 = callback;\r\n // `shiftCallback` is used to handle the first sync effect run.\r\n // The subsequent callbacks will redirect to `callback`.\r\n var shiftCallback_1 = function (n, o) {\r\n shiftCallback_1 = originalCallback_1;\r\n // o is undefined on the first call\r\n return applyCb(n, isArray(n) ? [] : o);\r\n };\r\n callback = function (n, o) {\r\n return shiftCallback_1(n, o);\r\n };\r\n }\r\n // @ts-ignore: use undocumented option \"sync\"\r\n var stop = vm.$watch(getter, callback, {\r\n immediate: options.immediate,\r\n deep: deep,\r\n sync: isSync,\r\n });\r\n // Once again, we have to hack the watcher for proper teardown\r\n var watcher = vm._watchers[vm._watchers.length - 1];\r\n // if the return value is reactive and deep:true\r\n // watch for changes, this might happen when new key is added\r\n if (isReactive(watcher.value) && ((_a = watcher.value.__ob__) === null || _a === void 0 ? void 0 : _a.dep) && deep) {\r\n watcher.value.__ob__.dep.addSub({\r\n update: function () {\r\n // this will force the source to be revaluated and the callback\r\n // executed if needed\r\n watcher.run();\r\n },\r\n });\r\n }\r\n patchWatcherTeardown(watcher, runCleanup);\r\n return function () {\r\n stop();\r\n };\r\n}\r\nfunction watchEffect(effect, options) {\r\n var opts = getWatchEffectOption(options);\r\n var vm = getWatcherVM();\r\n return createWatcher(vm, effect, null, opts);\r\n}\r\nfunction watchPostEffect(effect) {\r\n return watchEffect(effect, { flush: 'post' });\r\n}\r\nfunction watchSyncEffect(effect) {\r\n return watchEffect(effect, { flush: 'sync' });\r\n}\r\n// implementation\r\nfunction watch(source, cb, options) {\r\n var callback = null;\r\n if (isFunction(cb)) {\r\n // source watch\r\n callback = cb;\r\n }\r\n else {\r\n // effect watch\r\n if ((process.env.NODE_ENV !== 'production')) {\r\n warn(\"`watch(fn, options?)` signature has been moved to a separate API. \" +\r\n \"Use `watchEffect(fn, options?)` instead. `watch` now only \" +\r\n \"supports `watch(source, cb, options?) signature.\");\r\n }\r\n options = cb;\r\n callback = null;\r\n }\r\n var opts = getWatcherOption(options);\r\n var vm = getWatcherVM();\r\n return createWatcher(vm, source, callback, opts);\r\n}\r\nfunction traverse(value, seen) {\r\n if (seen === void 0) { seen = new Set(); }\r\n if (!isObject(value) || seen.has(value) || rawSet.has(value)) {\r\n return value;\r\n }\r\n seen.add(value);\r\n if (isRef(value)) {\r\n traverse(value.value, seen);\r\n }\r\n else if (isArray(value)) {\r\n for (var i = 0; i < value.length; i++) {\r\n traverse(value[i], seen);\r\n }\r\n }\r\n else if (isSet(value) || isMap(value)) {\r\n value.forEach(function (v) {\r\n traverse(v, seen);\r\n });\r\n }\r\n else if (isPlainObject(value)) {\r\n for (var key in value) {\r\n traverse(value[key], seen);\r\n }\r\n }\r\n return value;\r\n}\n\n// implement\r\nfunction computed(getterOrOptions) {\r\n var vm = getCurrentScopeVM();\r\n var getter;\r\n var setter;\r\n if (isFunction(getterOrOptions)) {\r\n getter = getterOrOptions;\r\n }\r\n else {\r\n getter = getterOrOptions.get;\r\n setter = getterOrOptions.set;\r\n }\r\n var computedSetter;\r\n var computedGetter;\r\n if (vm && !vm.$isServer) {\r\n var _a = getVueInternalClasses(), Watcher_1 = _a.Watcher, Dep_1 = _a.Dep;\r\n var watcher_1;\r\n computedGetter = function () {\r\n if (!watcher_1) {\r\n watcher_1 = new Watcher_1(vm, getter, noopFn, { lazy: true });\r\n }\r\n if (watcher_1.dirty) {\r\n watcher_1.evaluate();\r\n }\r\n if (Dep_1.target) {\r\n watcher_1.depend();\r\n }\r\n return watcher_1.value;\r\n };\r\n computedSetter = function (v) {\r\n if ((process.env.NODE_ENV !== 'production') && !setter) {\r\n warn('Write operation failed: computed value is readonly.', vm);\r\n return;\r\n }\r\n if (setter) {\r\n setter(v);\r\n }\r\n };\r\n }\r\n else {\r\n // fallback\r\n var computedHost_1 = defineComponentInstance(getVueConstructor(), {\r\n computed: {\r\n $$state: {\r\n get: getter,\r\n set: setter,\r\n },\r\n },\r\n });\r\n vm && vm.$on('hook:destroyed', function () { return computedHost_1.$destroy(); });\r\n computedGetter = function () { return computedHost_1.$$state; };\r\n computedSetter = function (v) {\r\n if ((process.env.NODE_ENV !== 'production') && !setter) {\r\n warn('Write operation failed: computed value is readonly.', vm);\r\n return;\r\n }\r\n computedHost_1.$$state = v;\r\n };\r\n }\r\n return createRef({\r\n get: computedGetter,\r\n set: computedSetter,\r\n }, !setter, true);\r\n}\n\nvar NOT_FOUND = {};\r\nfunction resolveInject(provideKey, vm) {\r\n var source = vm;\r\n while (source) {\r\n // @ts-ignore\r\n if (source._provided && hasOwn(source._provided, provideKey)) {\r\n //@ts-ignore\r\n return source._provided[provideKey];\r\n }\r\n source = source.$parent;\r\n }\r\n return NOT_FOUND;\r\n}\r\nfunction provide(key, value) {\r\n var _a;\r\n var vm = (_a = getCurrentInstanceForFn('provide')) === null || _a === void 0 ? void 0 : _a.proxy;\r\n if (!vm)\r\n return;\r\n if (!vm._provided) {\r\n var provideCache_1 = {};\r\n proxy(vm, '_provided', {\r\n get: function () { return provideCache_1; },\r\n set: function (v) { return Object.assign(provideCache_1, v); },\r\n });\r\n }\r\n vm._provided[key] = value;\r\n}\r\nfunction inject(key, defaultValue, treatDefaultAsFactory) {\r\n var _a;\r\n if (treatDefaultAsFactory === void 0) { treatDefaultAsFactory = false; }\r\n var vm = (_a = getCurrentInstance()) === null || _a === void 0 ? void 0 : _a.proxy;\r\n if (!vm) {\r\n (process.env.NODE_ENV !== 'production') &&\r\n warn(\"inject() can only be used inside setup() or functional components.\");\r\n return;\r\n }\r\n if (!key) {\r\n (process.env.NODE_ENV !== 'production') && warn(\"injection \\\"\".concat(String(key), \"\\\" not found.\"), vm);\r\n return defaultValue;\r\n }\r\n var val = resolveInject(key, vm);\r\n if (val !== NOT_FOUND) {\r\n return val;\r\n }\r\n else if (arguments.length > 1) {\r\n return treatDefaultAsFactory && isFunction(defaultValue)\r\n ? defaultValue()\r\n : defaultValue;\r\n }\r\n else if ((process.env.NODE_ENV !== 'production')) {\r\n warn(\"Injection \\\"\".concat(String(key), \"\\\" not found.\"), vm);\r\n }\r\n}\n\nvar EMPTY_OBJ = (process.env.NODE_ENV !== 'production')\r\n ? Object.freeze({})\r\n : {};\r\nvar useCssModule = function (name) {\r\n var _a;\r\n if (name === void 0) { name = '$style'; }\r\n var instance = getCurrentInstance();\r\n if (!instance) {\r\n (process.env.NODE_ENV !== 'production') && warn(\"useCssModule must be called inside setup()\");\r\n return EMPTY_OBJ;\r\n }\r\n var mod = (_a = instance.proxy) === null || _a === void 0 ? void 0 : _a[name];\r\n if (!mod) {\r\n (process.env.NODE_ENV !== 'production') &&\r\n warn(\"Current instance does not have CSS module named \\\"\".concat(name, \"\\\".\"));\r\n return EMPTY_OBJ;\r\n }\r\n return mod;\r\n};\r\n/**\r\n * @deprecated use `useCssModule` instead.\r\n */\r\nvar useCSSModule = useCssModule;\n\nfunction createApp(rootComponent, rootProps) {\r\n if (rootProps === void 0) { rootProps = undefined; }\r\n var V = getVueConstructor();\r\n var mountedVM = undefined;\r\n var app = {\r\n config: V.config,\r\n use: V.use.bind(V),\r\n mixin: V.mixin.bind(V),\r\n component: V.component.bind(V),\r\n directive: function (name, dir) {\r\n if (dir) {\r\n V.directive(name, dir);\r\n return app;\r\n }\r\n else {\r\n return V.directive(name);\r\n }\r\n },\r\n mount: function (el, hydrating) {\r\n if (!mountedVM) {\r\n mountedVM = new V(__assign({ propsData: rootProps }, rootComponent));\r\n mountedVM.$mount(el, hydrating);\r\n return mountedVM;\r\n }\r\n else {\r\n if ((process.env.NODE_ENV !== 'production')) {\r\n warn(\"App has already been mounted.\\n\" +\r\n \"If you want to remount the same app, move your app creation logic \" +\r\n \"into a factory function and create fresh app instances for each \" +\r\n \"mount - e.g. `const createMyApp = () => createApp(App)`\");\r\n }\r\n return mountedVM;\r\n }\r\n },\r\n unmount: function () {\r\n if (mountedVM) {\r\n mountedVM.$destroy();\r\n mountedVM = undefined;\r\n }\r\n else if ((process.env.NODE_ENV !== 'production')) {\r\n warn(\"Cannot unmount an app that is not mounted.\");\r\n }\r\n },\r\n };\r\n return app;\r\n}\n\nvar nextTick = function nextTick() {\r\n var _a;\r\n var args = [];\r\n for (var _i = 0; _i < arguments.length; _i++) {\r\n args[_i] = arguments[_i];\r\n }\r\n return (_a = getVueConstructor()) === null || _a === void 0 ? void 0 : _a.nextTick.apply(this, args);\r\n};\n\nvar fallbackCreateElement;\r\nvar createElement = function createElement() {\r\n var _a;\r\n var args = [];\r\n for (var _i = 0; _i < arguments.length; _i++) {\r\n args[_i] = arguments[_i];\r\n }\r\n var instance = (this === null || this === void 0 ? void 0 : this.proxy) || ((_a = getCurrentInstance()) === null || _a === void 0 ? void 0 : _a.proxy);\r\n if (!instance) {\r\n (process.env.NODE_ENV !== 'production') &&\r\n warn('`createElement()` has been called outside of render function.');\r\n if (!fallbackCreateElement) {\r\n fallbackCreateElement = defineComponentInstance(getVueConstructor()).$createElement;\r\n }\r\n return fallbackCreateElement.apply(fallbackCreateElement, args);\r\n }\r\n return instance.$createElement.apply(instance, args);\r\n};\n\nfunction useSlots() {\r\n return getContext().slots;\r\n}\r\nfunction useAttrs() {\r\n return getContext().attrs;\r\n}\r\nfunction getContext() {\r\n var i = getCurrentInstance();\r\n if ((process.env.NODE_ENV !== 'production') && !i) {\r\n warn(\"useContext() called without active instance.\");\r\n }\r\n return i.setupContext;\r\n}\n\nfunction set(vm, key, value) {\r\n var state = (vm.__composition_api_state__ =\r\n vm.__composition_api_state__ || {});\r\n state[key] = value;\r\n}\r\nfunction get(vm, key) {\r\n return (vm.__composition_api_state__ || {})[key];\r\n}\r\nvar vmStateManager = {\r\n set: set,\r\n get: get,\r\n};\n\nfunction asVmProperty(vm, propName, propValue) {\r\n var props = vm.$options.props;\r\n if (!(propName in vm) && !(props && hasOwn(props, propName))) {\r\n if (isRef(propValue)) {\r\n proxy(vm, propName, {\r\n get: function () { return propValue.value; },\r\n set: function (val) {\r\n propValue.value = val;\r\n },\r\n });\r\n }\r\n else {\r\n proxy(vm, propName, {\r\n get: function () {\r\n if (isReactive(propValue)) {\r\n propValue.__ob__.dep.depend();\r\n }\r\n return propValue;\r\n },\r\n set: function (val) {\r\n propValue = val;\r\n },\r\n });\r\n }\r\n if ((process.env.NODE_ENV !== 'production')) {\r\n // expose binding to Vue Devtool as a data property\r\n // delay this until state has been resolved to prevent repeated works\r\n vm.$nextTick(function () {\r\n if (Object.keys(vm._data).indexOf(propName) !== -1) {\r\n return;\r\n }\r\n if (isRef(propValue)) {\r\n proxy(vm._data, propName, {\r\n get: function () { return propValue.value; },\r\n set: function (val) {\r\n propValue.value = val;\r\n },\r\n });\r\n }\r\n else {\r\n proxy(vm._data, propName, {\r\n get: function () { return propValue; },\r\n set: function (val) {\r\n propValue = val;\r\n },\r\n });\r\n }\r\n });\r\n }\r\n }\r\n else if ((process.env.NODE_ENV !== 'production')) {\r\n if (props && hasOwn(props, propName)) {\r\n warn(\"The setup binding property \\\"\".concat(propName, \"\\\" is already declared as a prop.\"), vm);\r\n }\r\n else {\r\n warn(\"The setup binding property \\\"\".concat(propName, \"\\\" is already declared.\"), vm);\r\n }\r\n }\r\n}\r\nfunction updateTemplateRef(vm) {\r\n var rawBindings = vmStateManager.get(vm, 'rawBindings') || {};\r\n if (!rawBindings || !Object.keys(rawBindings).length)\r\n return;\r\n var refs = vm.$refs;\r\n var oldRefKeys = vmStateManager.get(vm, 'refs') || [];\r\n for (var index = 0; index < oldRefKeys.length; index++) {\r\n var key = oldRefKeys[index];\r\n var setupValue = rawBindings[key];\r\n if (!refs[key] && setupValue && isRef(setupValue)) {\r\n setupValue.value = null;\r\n }\r\n }\r\n var newKeys = Object.keys(refs);\r\n var validNewKeys = [];\r\n for (var index = 0; index < newKeys.length; index++) {\r\n var key = newKeys[index];\r\n var setupValue = rawBindings[key];\r\n if (refs[key] && setupValue && isRef(setupValue)) {\r\n setupValue.value = refs[key];\r\n validNewKeys.push(key);\r\n }\r\n }\r\n vmStateManager.set(vm, 'refs', validNewKeys);\r\n}\r\nfunction afterRender(vm) {\r\n var stack = [vm._vnode];\r\n while (stack.length) {\r\n var vnode = stack.pop();\r\n if (vnode) {\r\n if (vnode.context)\r\n updateTemplateRef(vnode.context);\r\n if (vnode.children) {\r\n for (var i = 0; i < vnode.children.length; ++i) {\r\n stack.push(vnode.children[i]);\r\n }\r\n }\r\n }\r\n }\r\n}\r\nfunction updateVmAttrs(vm, ctx) {\r\n var e_1, _a;\r\n if (!vm) {\r\n return;\r\n }\r\n var attrBindings = vmStateManager.get(vm, 'attrBindings');\r\n if (!attrBindings && !ctx) {\r\n // fix 840\r\n return;\r\n }\r\n if (!attrBindings) {\r\n var observedData = reactive({});\r\n attrBindings = { ctx: ctx, data: observedData };\r\n vmStateManager.set(vm, 'attrBindings', attrBindings);\r\n proxy(ctx, 'attrs', {\r\n get: function () {\r\n return attrBindings === null || attrBindings === void 0 ? void 0 : attrBindings.data;\r\n },\r\n set: function () {\r\n (process.env.NODE_ENV !== 'production') &&\r\n warn(\"Cannot assign to '$attrs' because it is a read-only property\", vm);\r\n },\r\n });\r\n }\r\n var source = vm.$attrs;\r\n var _loop_1 = function (attr) {\r\n if (!hasOwn(attrBindings.data, attr)) {\r\n proxy(attrBindings.data, attr, {\r\n get: function () {\r\n // to ensure it always return the latest value\r\n return vm.$attrs[attr];\r\n },\r\n });\r\n }\r\n };\r\n try {\r\n for (var _b = __values(Object.keys(source)), _c = _b.next(); !_c.done; _c = _b.next()) {\r\n var attr = _c.value;\r\n _loop_1(attr);\r\n }\r\n }\r\n catch (e_1_1) { e_1 = { error: e_1_1 }; }\r\n finally {\r\n try {\r\n if (_c && !_c.done && (_a = _b.return)) _a.call(_b);\r\n }\r\n finally { if (e_1) throw e_1.error; }\r\n }\r\n}\r\nfunction resolveScopedSlots(vm, slotsProxy) {\r\n var parentVNode = vm.$options._parentVnode;\r\n if (!parentVNode)\r\n return;\r\n var prevSlots = vmStateManager.get(vm, 'slots') || [];\r\n var curSlots = resolveSlots(parentVNode.data.scopedSlots, vm.$slots);\r\n // remove staled slots\r\n for (var index = 0; index < prevSlots.length; index++) {\r\n var key = prevSlots[index];\r\n if (!curSlots[key]) {\r\n delete slotsProxy[key];\r\n }\r\n }\r\n // proxy fresh slots\r\n var slotNames = Object.keys(curSlots);\r\n for (var index = 0; index < slotNames.length; index++) {\r\n var key = slotNames[index];\r\n if (!slotsProxy[key]) {\r\n slotsProxy[key] = createSlotProxy(vm, key);\r\n }\r\n }\r\n vmStateManager.set(vm, 'slots', slotNames);\r\n}\r\nfunction activateCurrentInstance(instance, fn, onError) {\r\n var preVm = getCurrentInstance();\r\n setCurrentInstance(instance);\r\n try {\r\n return fn(instance);\r\n }\r\n catch (\r\n // FIXME: remove any\r\n err) {\r\n if (onError) {\r\n onError(err);\r\n }\r\n else {\r\n throw err;\r\n }\r\n }\r\n finally {\r\n setCurrentInstance(preVm);\r\n }\r\n}\n\nfunction mixin(Vue) {\r\n Vue.mixin({\r\n beforeCreate: functionApiInit,\r\n mounted: function () {\r\n afterRender(this);\r\n },\r\n beforeUpdate: function () {\r\n updateVmAttrs(this);\r\n },\r\n updated: function () {\r\n afterRender(this);\r\n },\r\n });\r\n /**\r\n * Vuex init hook, injected into each instances init hooks list.\r\n */\r\n function functionApiInit() {\r\n var vm = this;\r\n var $options = vm.$options;\r\n var setup = $options.setup, render = $options.render;\r\n if (render) {\r\n // keep currentInstance accessible for createElement\r\n $options.render = function () {\r\n var _this = this;\r\n var args = [];\r\n for (var _i = 0; _i < arguments.length; _i++) {\r\n args[_i] = arguments[_i];\r\n }\r\n return activateCurrentInstance(toVue3ComponentInstance(vm), function () {\r\n return render.apply(_this, args);\r\n });\r\n };\r\n }\r\n if (!setup) {\r\n return;\r\n }\r\n if (!isFunction(setup)) {\r\n if ((process.env.NODE_ENV !== 'production')) {\r\n warn('The \"setup\" option should be a function that returns a object in component definitions.', vm);\r\n }\r\n return;\r\n }\r\n var data = $options.data;\r\n // wrapper the data option, so we can invoke setup before data get resolved\r\n $options.data = function wrappedData() {\r\n initSetup(vm, vm.$props);\r\n return isFunction(data)\r\n ? data.call(vm, vm)\r\n : data || {};\r\n };\r\n }\r\n function initSetup(vm, props) {\r\n if (props === void 0) { props = {}; }\r\n var setup = vm.$options.setup;\r\n var ctx = createSetupContext(vm);\r\n var instance = toVue3ComponentInstance(vm);\r\n instance.setupContext = ctx;\r\n // fake reactive for `toRefs(props)`\r\n def(props, '__ob__', createObserver());\r\n // resolve scopedSlots and slots to functions\r\n resolveScopedSlots(vm, ctx.slots);\r\n var binding;\r\n activateCurrentInstance(instance, function () {\r\n // make props to be fake reactive, this is for `toRefs(props)`\r\n binding = setup(props, ctx);\r\n });\r\n if (!binding)\r\n return;\r\n if (isFunction(binding)) {\r\n // keep typescript happy with the binding type.\r\n var bindingFunc_1 = binding;\r\n // keep currentInstance accessible for createElement\r\n vm.$options.render = function () {\r\n resolveScopedSlots(vm, ctx.slots);\r\n return activateCurrentInstance(instance, function () { return bindingFunc_1(); });\r\n };\r\n return;\r\n }\r\n else if (isObject(binding)) {\r\n if (isReactive(binding)) {\r\n binding = toRefs(binding);\r\n }\r\n vmStateManager.set(vm, 'rawBindings', binding);\r\n var bindingObj_1 = binding;\r\n Object.keys(bindingObj_1).forEach(function (name) {\r\n var bindingValue = bindingObj_1[name];\r\n if (!isRef(bindingValue)) {\r\n if (!isReactive(bindingValue)) {\r\n if (isFunction(bindingValue)) {\r\n var copy_1 = bindingValue;\r\n bindingValue = bindingValue.bind(vm);\r\n Object.keys(copy_1).forEach(function (ele) {\r\n bindingValue[ele] = copy_1[ele];\r\n });\r\n }\r\n else if (!isObject(bindingValue)) {\r\n bindingValue = ref(bindingValue);\r\n }\r\n else if (hasReactiveArrayChild(bindingValue)) {\r\n // creates a custom reactive properties without make the object explicitly reactive\r\n // NOTE we should try to avoid this, better implementation needed\r\n customReactive(bindingValue);\r\n }\r\n }\r\n else if (isArray(bindingValue)) {\r\n bindingValue = ref(bindingValue);\r\n }\r\n }\r\n asVmProperty(vm, name, bindingValue);\r\n });\r\n return;\r\n }\r\n if ((process.env.NODE_ENV !== 'production')) {\r\n assert(false, \"\\\"setup\\\" must return a \\\"Object\\\" or a \\\"Function\\\", got \\\"\".concat(Object.prototype.toString\r\n .call(binding)\r\n .slice(8, -1), \"\\\"\"));\r\n }\r\n }\r\n function customReactive(target, seen) {\r\n if (seen === void 0) { seen = new Set(); }\r\n if (seen.has(target))\r\n return;\r\n if (!isPlainObject(target) ||\r\n isRef(target) ||\r\n isReactive(target) ||\r\n isRaw(target))\r\n return;\r\n var Vue = getVueConstructor();\r\n // @ts-expect-error https://github.com/vuejs/vue/pull/12132\r\n var defineReactive = Vue.util.defineReactive;\r\n Object.keys(target).forEach(function (k) {\r\n var val = target[k];\r\n defineReactive(target, k, val);\r\n if (val) {\r\n seen.add(val);\r\n customReactive(val, seen);\r\n }\r\n return;\r\n });\r\n }\r\n function hasReactiveArrayChild(target, visited) {\r\n if (visited === void 0) { visited = new Map(); }\r\n if (visited.has(target)) {\r\n return visited.get(target);\r\n }\r\n visited.set(target, false);\r\n if (isArray(target) && isReactive(target)) {\r\n visited.set(target, true);\r\n return true;\r\n }\r\n if (!isPlainObject(target) || isRaw(target) || isRef(target)) {\r\n return false;\r\n }\r\n return Object.keys(target).some(function (x) {\r\n return hasReactiveArrayChild(target[x], visited);\r\n });\r\n }\r\n function createSetupContext(vm) {\r\n var ctx = { slots: {} };\r\n var propsPlain = [\r\n 'root',\r\n 'parent',\r\n 'refs',\r\n 'listeners',\r\n 'isServer',\r\n 'ssrContext',\r\n ];\r\n var methodReturnVoid = ['emit'];\r\n propsPlain.forEach(function (key) {\r\n var srcKey = \"$\".concat(key);\r\n proxy(ctx, key, {\r\n get: function () { return vm[srcKey]; },\r\n set: function () {\r\n (process.env.NODE_ENV !== 'production') &&\r\n warn(\"Cannot assign to '\".concat(key, \"' because it is a read-only property\"), vm);\r\n },\r\n });\r\n });\r\n updateVmAttrs(vm, ctx);\r\n methodReturnVoid.forEach(function (key) {\r\n var srcKey = \"$\".concat(key);\r\n proxy(ctx, key, {\r\n get: function () {\r\n return function () {\r\n var args = [];\r\n for (var _i = 0; _i < arguments.length; _i++) {\r\n args[_i] = arguments[_i];\r\n }\r\n var fn = vm[srcKey];\r\n fn.apply(vm, args);\r\n };\r\n },\r\n });\r\n });\r\n if (process.env.NODE_ENV === 'test') {\r\n ctx._vm = vm;\r\n }\r\n return ctx;\r\n }\r\n}\n\n/**\r\n * Helper that recursively merges two data objects together.\r\n */\r\nfunction mergeData(from, to) {\r\n if (!from)\r\n return to;\r\n if (!to)\r\n return from;\r\n var key;\r\n var toVal;\r\n var fromVal;\r\n var keys = hasSymbol ? Reflect.ownKeys(from) : Object.keys(from);\r\n for (var i = 0; i < keys.length; i++) {\r\n key = keys[i];\r\n // in case the object is already observed...\r\n if (key === '__ob__')\r\n continue;\r\n toVal = to[key];\r\n fromVal = from[key];\r\n if (!hasOwn(to, key)) {\r\n to[key] = fromVal;\r\n }\r\n else if (toVal !== fromVal &&\r\n isPlainObject(toVal) &&\r\n !isRef(toVal) &&\r\n isPlainObject(fromVal) &&\r\n !isRef(fromVal)) {\r\n mergeData(fromVal, toVal);\r\n }\r\n }\r\n return to;\r\n}\r\nfunction install(Vue) {\r\n if (isVueRegistered(Vue)) {\r\n if ((process.env.NODE_ENV !== 'production')) {\r\n warn('[vue-composition-api] already installed. Vue.use(VueCompositionAPI) should be called only once.');\r\n }\r\n return;\r\n }\r\n if ((process.env.NODE_ENV !== 'production')) {\r\n if (Vue.version) {\r\n if (Vue.version[0] !== '2' || Vue.version[1] !== '.') {\r\n warn(\"[vue-composition-api] only works with Vue 2, v\".concat(Vue.version, \" found.\"));\r\n }\r\n }\r\n else {\r\n warn('[vue-composition-api] no Vue version found');\r\n }\r\n }\r\n Vue.config.optionMergeStrategies.setup = function (parent, child) {\r\n return function mergedSetupFn(props, context) {\r\n return mergeData(isFunction(parent) ? parent(props, context) || {} : undefined, isFunction(child) ? child(props, context) || {} : undefined);\r\n };\r\n };\r\n setVueConstructor(Vue);\r\n mixin(Vue);\r\n}\r\nvar Plugin = {\r\n install: function (Vue) { return install(Vue); },\r\n};\n\n// implementation, close to no-op\r\nfunction defineComponent(options) {\r\n return options;\r\n}\n\nfunction defineAsyncComponent(source) {\r\n if (isFunction(source)) {\r\n source = { loader: source };\r\n }\r\n var loader = source.loader, loadingComponent = source.loadingComponent, errorComponent = source.errorComponent, _a = source.delay, delay = _a === void 0 ? 200 : _a, timeout = source.timeout, // undefined = never times out\r\n _b = source.suspensible, // undefined = never times out\r\n suspensible = _b === void 0 ? false : _b, // in Vue 3 default is true\r\n userOnError = source.onError;\r\n if ((process.env.NODE_ENV !== 'production') && suspensible) {\r\n warn(\"The suspensiblbe option for async components is not supported in Vue2. It is ignored.\");\r\n }\r\n var pendingRequest = null;\r\n var retries = 0;\r\n var retry = function () {\r\n retries++;\r\n pendingRequest = null;\r\n return load();\r\n };\r\n var load = function () {\r\n var thisRequest;\r\n return (pendingRequest ||\r\n (thisRequest = pendingRequest =\r\n loader()\r\n .catch(function (err) {\r\n err = err instanceof Error ? err : new Error(String(err));\r\n if (userOnError) {\r\n return new Promise(function (resolve, reject) {\r\n var userRetry = function () { return resolve(retry()); };\r\n var userFail = function () { return reject(err); };\r\n userOnError(err, userRetry, userFail, retries + 1);\r\n });\r\n }\r\n else {\r\n throw err;\r\n }\r\n })\r\n .then(function (comp) {\r\n if (thisRequest !== pendingRequest && pendingRequest) {\r\n return pendingRequest;\r\n }\r\n if ((process.env.NODE_ENV !== 'production') && !comp) {\r\n warn(\"Async component loader resolved to undefined. \" +\r\n \"If you are using retry(), make sure to return its return value.\");\r\n }\r\n // interop module default\r\n if (comp &&\r\n (comp.__esModule || comp[Symbol.toStringTag] === 'Module')) {\r\n comp = comp.default;\r\n }\r\n if ((process.env.NODE_ENV !== 'production') && comp && !isObject(comp) && !isFunction(comp)) {\r\n throw new Error(\"Invalid async component load result: \".concat(comp));\r\n }\r\n return comp;\r\n })));\r\n };\r\n return function () {\r\n var component = load();\r\n return {\r\n component: component,\r\n delay: delay,\r\n timeout: timeout,\r\n error: errorComponent,\r\n loading: loadingComponent,\r\n };\r\n };\r\n}\n\nvar version = \"1.6.1\";\r\n// auto install when using CDN\r\nif (typeof window !== 'undefined' && window.Vue) {\r\n window.Vue.use(Plugin);\r\n}\n\nexport { EffectScope, computed, createApp, createRef, customRef, Plugin as default, defineAsyncComponent, defineComponent, del, effectScope, getCurrentInstance, getCurrentScope, createElement as h, inject, isRaw, isReactive, isReadonly, isRef, markRaw, nextTick, onActivated, onBeforeMount, onBeforeUnmount, onBeforeUpdate, onDeactivated, onErrorCaptured, onMounted, onScopeDispose, onServerPrefetch, onUnmounted, onUpdated, provide, proxyRefs, reactive, readonly, ref, set$1 as set, shallowReactive, shallowReadonly, shallowRef, toRaw, toRef, toRefs, triggerRef, unref, useAttrs, useCSSModule, useCssModule, useSlots, version, warn$1 as warn, watch, watchEffect, watchPostEffect, watchSyncEffect };\n","import Vue from 'vue'\nimport VueCompositionAPI from '@vue/composition-api'\n\nfunction install(_vue) {\n _vue = _vue || Vue\n if (_vue && !_vue['__composition_api_installed__'])\n Vue.use(VueCompositionAPI)\n}\n\ninstall(Vue)\n\nvar isVue2 = true\nvar isVue3 = false\nvar Vue2 = Vue\nvar version = Vue.version\n\n/**VCA-EXPORTS**/\nexport { EffectScope, computed, createApp, createRef, customRef, defineAsyncComponent, defineComponent, del, effectScope, getCurrentInstance, getCurrentScope, h, inject, isRaw, isReactive, isReadonly, isRef, markRaw, nextTick, onActivated, onBeforeMount, onBeforeUnmount, onBeforeUpdate, onDeactivated, onErrorCaptured, onMounted, onScopeDispose, onServerPrefetch, onUnmounted, onUpdated, provide, proxyRefs, reactive, readonly, ref, set, shallowReactive, shallowReadonly, shallowRef, toRaw, toRef, toRefs, triggerRef, unref, useAttrs, useCSSModule, useCssModule, useSlots, warn, watch, watchEffect, watchPostEffect, watchSyncEffect } from '@vue/composition-api'\n/**VCA-EXPORTS**/\n\nexport {\n Vue,\n Vue2,\n isVue2,\n isVue3,\n version,\n install,\n}\n","var __rest = (this && this.__rest) || function (s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n t[p[i]] = s[p[i]];\n }\n return t;\n};\nimport { NodeView, Scheduler } from '@antv/x6';\nimport { isVue2, isVue3, createApp, h, Vue2 } from 'vue-demi';\nexport class VueShapeView extends NodeView {\n init() {\n super.init();\n }\n getComponentContainer() {\n return this.selectors.foContent;\n }\n confirmUpdate(flag) {\n const ret = super.confirmUpdate(flag);\n return this.handleAction(ret, VueShapeView.action, () => {\n Scheduler.scheduleTask(() => {\n this.renderVueComponent();\n });\n });\n }\n renderVueComponent() {\n this.unmountVueComponent();\n const root = this.getComponentContainer();\n const node = this.cell;\n const graph = this.graph;\n if (root) {\n const component = this.graph.hook.getVueComponent(node);\n if (isVue2) {\n const Vue = Vue2;\n const div = document.createElement('div');\n div.style.width = '100%';\n div.style.height = '100%';\n if (typeof component === 'string') {\n div.innerHTML = component;\n this.vm = new Vue({ el: div });\n }\n else {\n const _a = component, { template } = _a, other = __rest(_a, [\"template\"]);\n div.innerHTML = template;\n this.vm = new Vue(Object.assign({ el: div, provide() {\n return {\n getGraph: () => graph,\n getNode: () => node,\n };\n } }, other));\n }\n root.appendChild(this.vm.$el);\n }\n else if (isVue3) {\n this.vm = createApp({\n render() {\n return h(component);\n },\n provide() {\n return {\n getGraph: () => graph,\n getNode: () => node,\n };\n },\n });\n this.vm.mount(root);\n }\n }\n }\n unmountVueComponent() {\n const root = this.getComponentContainer();\n if (this.vm) {\n isVue2 && this.vm.$destroy();\n isVue3 && this.vm.unmount();\n this.vm = null;\n }\n root.innerHTML = '';\n return root;\n }\n unmount() {\n this.unmountVueComponent();\n super.unmount();\n return this;\n }\n}\n(function (VueShapeView) {\n VueShapeView.action = 'vue';\n VueShapeView.config({\n bootstrap: [VueShapeView.action],\n actions: {\n component: VueShapeView.action,\n },\n });\n NodeView.registry.register('vue-shape-view', VueShapeView, true);\n})(VueShapeView || (VueShapeView = {}));\n//# sourceMappingURL=view.js.map","import { defineComponent, h, reactive, isVue3, Vue } from 'vue-demi';\nimport { NodeView } from '@antv/x6';\nimport { VueShapeView } from './view';\nexport function useTeleport(uniqViewId) {\n if (isVue3) {\n const { Teleport, markRaw, Fragment, VNode, VNodeData } = Vue;\n const action = 'vue';\n const items = reactive({});\n const TeleportContainer = defineComponent({\n setup() {\n return () => h(Fragment, {}, Object.keys(items).map((id) => h(items[id])));\n },\n });\n const connect = (id, node, graph, component, getContainer) => {\n items[id] = markRaw(defineComponent({\n render: () => (getContainer()\n ? h(Teleport, { to: getContainer() }, [\n h(component),\n ])\n : null),\n provide: () => ({\n getGraph: () => graph,\n getNode: () => node,\n }),\n }));\n };\n const disconnect = (id) => {\n delete items[id];\n };\n class VuePortalShapeView extends NodeView {\n init() {\n super.init();\n const targetId = `${this.graph.view.cid}:${this.cell.id}`;\n this.cell.on('removed', () => {\n disconnect(targetId);\n });\n const component = this.graph.hook.getVueComponent(this.cell);\n // 这里需要将当前View的cell以及graph还有component等对象存储起来给TeleportContainer使用\n connect(targetId, this.cell, this.graph, component, this.getComponentContainer.bind(this));\n }\n getComponentContainer() {\n return this.cell.prop('useForeignObject') === false\n ? this.selectors.content\n : this.selectors.foContent;\n }\n confirmUpdate(flag) {\n const ret = super.confirmUpdate(flag);\n return this.handleAction(ret, action, () => {\n // 这里无需做任何处理,但是,没有这个函数的时候,会卡死...\n });\n }\n }\n VuePortalShapeView.config({\n bootstrap: [action],\n actions: {\n component: action,\n },\n });\n NodeView.registry.register(uniqViewId, VuePortalShapeView, true);\n return TeleportContainer;\n }\n // 如果是vue2就默认输出一个警告信息\n console.warn('useTeleport should run in vue3');\n // 或者拿默认的view注册一个,保证这个api是可用状态,不至于用户使用了,但是报错\n NodeView.registry.register(uniqViewId, VueShapeView, true);\n return defineComponent(() => null);\n}\nexport default useTeleport;\n//# sourceMappingURL=teleport.js.map","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./PvReadOnly.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./PvReadOnly.vue?vue&type=script&lang=js&\"","\r\n\r\n\r\n\r\n","import { render, staticRenderFns } from \"./PvReadOnly.vue?vue&type=template&id=99017e50&scoped=true&\"\nimport script from \"./PvReadOnly.vue?vue&type=script&lang=js&\"\nexport * from \"./PvReadOnly.vue?vue&type=script&lang=js&\"\nimport style0 from \"./PvReadOnly.vue?vue&type=style&index=0&id=99017e50&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"99017e50\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"pv-component\"},[_c('div',{ref:\"rotateDom\"},[_c('p',{staticClass:\"sn-name\",style:({ transform: 'rotateZ(' + _vm.rotateDeg + 'deg)' }),attrs:{\"attr\":_vm.nodeDeg}},[_vm._v(\"\\n \"+_vm._s(_vm._f(\"filterSN\")(_vm.panel.inverterSn))+\"\\n \")]),_vm._v(\" \"),_c('p',{staticClass:\"pv-name\",class:{ rotateZ: _vm.isRotate }},[_vm._v(\"\\n \"+_vm._s(_vm.panel.name)+\"\\n \")])])])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import { Graph } from \"@antv/x6\";\r\nimport \"@antv/x6-vue-shape\";\r\nimport PvReadOnly from './../components/MiLayoutReadOnly/src/PvReadOnly.vue';\r\n\r\nexport default function x6graph(params) {\r\n const scrollerDefault = {\r\n enabled: true,\r\n pannable: true,\r\n };\r\n const mouseWheelDefault = {\r\n enabled: true,\r\n minScale: 0.25,\r\n maxScale: 3,\r\n modifiers: ['ctrl', 'meta'],\r\n };\r\n const interactingDefault = {\r\n nodeMovable: false,\r\n };\r\n const {\r\n rotating = false,\r\n scroller = scrollerDefault,\r\n keyboard = false,\r\n history = false,\r\n mousewheel = mouseWheelDefault,\r\n interacting = interactingDefault,\r\n } = params;\r\n return {\r\n data() {\r\n return {\r\n graph: null,\r\n rotating: rotating,\r\n scroller: scroller,\r\n keyboard: keyboard,\r\n history: history,\r\n mousewheel: mousewheel,\r\n interacting: interacting,\r\n };\r\n },\r\n mounted() {\r\n this.initGraph();\r\n },\r\n methods: {\r\n // 初始化画布\r\n initGraph() {\r\n var vm = this;\r\n this.graph = new Graph({\r\n container: document.getElementById(\"graphContainer\"),\r\n width: vm.graphWidth || document.getElementById(\"graphContainer\").clientWidth,\r\n height: vm.graphHeight || document.getElementById(\"graphContainer\").clientHeight,\r\n grid: true,\r\n autoResize: true,\r\n rotating: vm.rotating,\r\n scroller: vm.scroller,\r\n mousewheel: vm.mousewheel,\r\n keyboard: vm.keyboard,\r\n history: vm.history,\r\n interacting: vm.interacting,\r\n minimap: {\r\n enabled: true,\r\n container: document.getElementById(\"minimap\"),\r\n width: 150,\r\n height: 100,\r\n graphOptions: {\r\n async: true,\r\n createCellView(cell) {\r\n // 在小地图中不渲染边\r\n if (cell.isEdge()) {\r\n return null;\r\n }\r\n },\r\n },\r\n },\r\n });\r\n console.log('mixin里的initgraph');\r\n },\r\n // 生成vue-shape\r\n generateVueShape(item) {\r\n const { info } = item;\r\n const { x, y, angle } = info;\r\n var node = {\r\n shape: \"vue-shape\",\r\n x,\r\n y,\r\n angle,\r\n width: 90,\r\n height: 110,\r\n attrs: {\r\n body: {\r\n stroke: \"#ebebeb\",\r\n },\r\n },\r\n data: { nodeId: item.id },\r\n component: {\r\n data() {\r\n return {\r\n nodeDeg: 0\r\n };\r\n },\r\n components: {\r\n PvReadOnly,\r\n },\r\n methods: {},\r\n render(h) {\r\n return h(\"pv-read-only\", {\r\n props: {\r\n panel: item,\r\n },\r\n });\r\n },\r\n },\r\n };\r\n this.graph.addNode(node);\r\n },\r\n }\r\n }\r\n}\r\n","\r\n\r\n\r\n","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./MiLayoutReadOnly.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./MiLayoutReadOnly.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./MiLayoutReadOnly.vue?vue&type=template&id=a394ec10&\"\nimport script from \"./MiLayoutReadOnly.vue?vue&type=script&lang=js&\"\nexport * from \"./MiLayoutReadOnly.vue?vue&type=script&lang=js&\"\nimport style0 from \"./MiLayoutReadOnly.vue?vue&type=style&index=0&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _vm._m(0)}\nvar staticRenderFns = [function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"mi-layout-readonly\"},[_c('div',{attrs:{\"id\":\"minimap\"}}),_vm._v(\" \"),_c('div',{attrs:{\"id\":\"graphContainer\"}})])}]\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../../../../node_modules/babel-loader/lib/index.js!../../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ViewLayoutDialog.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../../../node_modules/babel-loader/lib/index.js!../../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ViewLayoutDialog.vue?vue&type=script&lang=js&\"","\r\n\r\n","import { render, staticRenderFns } from \"./ViewLayoutDialog.vue?vue&type=template&id=7f16e93d&scoped=true&\"\nimport script from \"./ViewLayoutDialog.vue?vue&type=script&lang=js&\"\nexport * from \"./ViewLayoutDialog.vue?vue&type=script&lang=js&\"\nimport style0 from \"./ViewLayoutDialog.vue?vue&type=style&index=0&id=7f16e93d&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"7f16e93d\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('gdw-dialog',{staticClass:\"dialog-operate\",attrs:{\"width\":800,\"show\":_vm.showModal}},[(_vm.panelsData)?_c('h2',{attrs:{\"slot\":\"header\"},slot:\"header\"},[_vm._v(_vm._s(_vm.panelsData.name || '--'))]):_vm._e(),_vm._v(\" \"),_c('div',{staticClass:\"dialog-operate-con\",attrs:{\"onselectstart\":\"return false\"}},[(_vm.showLayout)?_c('MiLayoutReadOnly',{attrs:{\"graphWid\":800,\"graphHeight\":476,\"panelsData\":_vm.panels}}):_vm._e(),_vm._v(\" \"),(!_vm.showLayout && _vm.showModal)?_c('div',{staticClass:\"dialog-nodata\"},[_vm._v(_vm._s(_vm.lang.loading))]):_vm._e()],1),_vm._v(\" \"),_c('img',{staticClass:\"close-img\",attrs:{\"src\":\"/Images/add_device/dialog_close.png\"},on:{\"click\":_vm.closeModal}}),_vm._v(\" \"),_c('gdw-dialog-button-group',{staticStyle:{\"display\":\"none\"},attrs:{\"slot\":\"button\",\"line\":\"true\"},slot:\"button\"},[_c('button',[_vm._v(_vm._s(_vm.lang.oCancel))])])],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../../../node_modules/babel-loader/lib/index.js!./MicroDeviceList.js?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../../node_modules/babel-loader/lib/index.js!./MicroDeviceList.js?vue&type=script&lang=js&\"","import UpdateDeviceModal from '../../dialogs/components/UpdateDeviceModal.vue';\r\nimport ChangeDeviceModal from '../../dialogs/components/ChangeDeviceModal.vue';\r\nimport DeleteDeviceModal from '../../dialogs/components/DeleteDeviceModal.vue';\r\nimport ViewPvPanelsDialog from './modals/ViewPvPanelsDialog.vue';\r\nimport ViewLayoutDialog from './modals/ViewLayoutDialog.vue';\r\nimport {DEVICE_TYPE_MICROINVERTER, notify} from '../../relativeFunUtl';\r\nexport default {\r\n name: 'MicroDeviceList',\r\n props: {\r\n stationId:{ type: String, required: true }, // 电站ID\r\n is_stored:{type: Boolean, required: true }, // 是否是储能电站\r\n listTitleWidth: { type: Object, required: true }, // 列表table 标题宽度\r\n labelWidth: { type: String, required: true }, // form表单label宽度\r\n },\r\n components: { UpdateDeviceModal, ChangeDeviceModal, DeleteDeviceModal,\r\n ViewPvPanelsDialog , ViewLayoutDialog\r\n },\r\n data: function() {\r\n return {\r\n lang:Goodwe.Ops.Resouces.Front,\r\n pw_id: this.stationId, // 电站ID\r\n is_stored: this.is_stored, // 是否是储能电站\r\n canAdd: canAdd, // 是否有新增权限\r\n canUpdate: canUpdate, // 是否有修改权限\r\n canDelete: canDelete, // 是否有删除权限\r\n labelWidth: this.labelWidth, // form表单label宽度\r\n microInverterData: [], // 逆变器列表信息\r\n microInverterHistory: [], // 更换设备历史记录信息\r\n plantLayoutData: [], // 电站布局信息(一个电站仅一个布局)\r\n InverterPage: { page_index: 1, page_size: 6, record: 0 }, // 分页\r\n showMicroInverterList: true, // 是否展示微逆列表\r\n showUpdateModal: false, // 修改设备模态框\r\n showChangeModal: false, // 更换设备模态框\r\n showDeleteModal: false, // 删除设备模态框\r\n showLayoutView: false, // layout模态框\r\n showPvPanels: false, // PvPanels模态框\r\n changingDeviceType: DEVICE_TYPE_MICROINVERTER, // 微逆设备类型(前端判断为6)\r\n changingDevice: '', // 设备信息\r\n isHistoryRecord: false, // 是否删除历史记录设备\r\n initCount: 0, // 页面将要调用接口数\r\n }\r\n },\r\n watch: {\r\n stationId:function(){\r\n this.pw_id = this.stationId;\r\n this.getMicroInverterData();\r\n this.getPlantLayoutData();\r\n },\r\n },\r\n filters: {\r\n formatData: function (v) {\r\n if (!v && v != \"0\") {\r\n return \"-\"\r\n } else {\r\n return v\r\n }\r\n },\r\n formatDate:function(v){\r\n if (!v && v != \"0\") {\r\n return \"-\"\r\n } else {\r\n return dayjs(v).format(dateFormatReplace(\"day\"))\r\n }\r\n },\r\n },\r\n computed: {\r\n /** 处理后的逆变器数据 */\r\n computedInverterData: function () {\r\n var d = _.cloneDeep(this.microInverterData);\r\n if (!d) d = [];\r\n var data = [];\r\n d.forEach(function (item) {\r\n data.push({\r\n status: item.status,\r\n name: item.it_name,\r\n sn: item.it_sn,\r\n type: item.it_type,\r\n capacity: item.it_capacity,\r\n createTime: item.conn_date,\r\n collectType: item.con_equipmentmodel,\r\n collectSn: item.con_equipment_sn,\r\n id: item.id\r\n })\r\n });\r\n return data\r\n },\r\n /** 处理后的逆变器历史数据 */\r\n computedInverterHistory: function () {\r\n var d = _.cloneDeep(this.microInverterHistory);\r\n if (!d) d = [];\r\n var data = [];\r\n d.forEach(function (item) {\r\n data.push({\r\n id:item.id,\r\n num: item.ch_no,\r\n oldName: item.it_name_old,\r\n oldSn: item.it_sn_old,\r\n newName: item.it_name_new,\r\n newSn: item.it_sn_new,\r\n changeDate: item.change_date,\r\n memo: item.memo,\r\n })\r\n });\r\n return data\r\n },\r\n /** 处理后的电站布局数据 */\r\n computedLayout: function () {\r\n var d = _.cloneDeep(this.plantLayoutData);\r\n if (!d) d = [];\r\n var data = [];\r\n d.forEach(function (item) {\r\n data.push({\r\n id: item.id,\r\n name: item.name,\r\n pvPanels: item.panelNum,\r\n layoutPreview: item.panels,\r\n bindInverterPanelNum: item.bindInverterPanelNum,\r\n })\r\n });\r\n return data[0] || null\r\n }\r\n },\r\n methods: {\r\n /** 切换到逆变器列表 */\r\n tabInverterList() {\r\n loading.showLoading();\r\n this.resetModalInfo();\r\n if (!this.showMicroInverterList) {\r\n this.resetInverterPage();\r\n this.getMicroInverterData(); // 获取微逆列表\r\n this.showMicroInverterList = true;\r\n }\r\n },\r\n /** 切换到逆变器操作记录 */\r\n tabInverterHistory() {\r\n loading.showLoading();\r\n this.resetModalInfo();\r\n if (this.showMicroInverterList) {\r\n this.resetInverterPage();\r\n this.getMicroInverterHistory(); // 获取微逆历史修改记录\r\n this.showMicroInverterList = false;\r\n }\r\n },\r\n /** 切换逆变器页码 */\r\n handleInverterPageChange(page) {\r\n this.resetModalInfo();\r\n loading.showLoading();\r\n this.InverterPage.page_index = page;\r\n if (this.showMicroInverterList) {\r\n this.getMicroInverterData();\r\n } else {\r\n this.getMicroInverterHistory();\r\n }\r\n },\r\n //重置逆变器页码\r\n resetInverterPage() {\r\n this.InverterPage.page_size = 6;\r\n this.InverterPage.page_index = 1;\r\n },\r\n /** 获取逆变器列表信息 */\r\n getMicroInverterData () {\r\n this.ajaxOneTimeCount(1);\r\n common.post(\"/PwInventers/QueryInventers\", \r\n { pw_id: this.pw_id, \r\n page_index: this.InverterPage.page_index, \r\n page_size: this.InverterPage.page_size,\r\n type: 1, // 1代表微逆\r\n }).success(function (res) {\r\n this.microInverterData = res.data.list;\r\n this.InverterPage.record = res.data.record;\r\n }.bind(this)).all(function () {\r\n this.ajaxSuccessCallback();\r\n }.bind(this))\r\n },\r\n /** 获取电站布局信息 */\r\n getPlantLayoutData() {\r\n this.ajaxOneTimeCount(1);\r\n common.post(\"/v3/Layout/QueryLayoutIdByStationId\", \r\n { pw_id: this.pw_id }).success(function (res_layout) {\r\n if(res_layout.data) {\r\n this.ajaxOneTimeCount(1);\r\n common.post(\"/v3/Layout/queryLayoutInfoByStationId\", \r\n { layoutId: `${res_layout.data['layOutId']}`}).success(function (res) {\r\n if(res.data.id) {\r\n this.plantLayoutData = [{...res.data}];\r\n } else {\r\n this.plantLayoutData = [];\r\n }\r\n }.bind(this)).all(function() {\r\n this.ajaxSuccessCallback();\r\n }.bind(this))\r\n } else {\r\n this.plantLayoutData = [];\r\n }\r\n }.bind(this)).all(function () {\r\n this.ajaxSuccessCallback();\r\n }.bind(this));\r\n },\r\n /** 获取逆变器历史记录 */\r\n getMicroInverterHistory() {\r\n this.ajaxOneTimeCount(1);\r\n common.post(\"/PwInventers/QueryInventersChangeHistory\", \r\n { pw_id: this.pw_id, \r\n page_index: this.InverterPage.page_index,\r\n page_size: this.InverterPage.page_size, \r\n type: 1, // 1代表微逆\r\n }).success(function (res) {\r\n this.microInverterHistory = res.data.list;\r\n this.InverterPage.record = res.data.record;\r\n }.bind(this)).all(function () {\r\n this.ajaxSuccessCallback();\r\n }.bind(this))\r\n },\r\n /** 处理列表信息 */\r\n handleDevice(row, type) {\r\n this.resetModalInfo();\r\n setTimeout(() => {\r\n this.changingDeviceType = DEVICE_TYPE_MICROINVERTER;\r\n this.changingDevice = row;\r\n switch (type) {\r\n case 'update':{ // 更新设备按钮点击\r\n this.showUpdateModal = true;\r\n break;\r\n }\r\n case 'change':{ // 更换设备按钮点击\r\n this.showChangeModal = true;\r\n break;\r\n }\r\n case 'deleteList':{ // 删除设备按钮点击\r\n this.isHistoryRecord = false;\r\n this.showDeleteModal = true;\r\n break;\r\n }\r\n case 'deleteHistory':{ // 删除历史记录按钮点击\r\n this.isHistoryRecord = true;\r\n this.showDeleteModal = true;\r\n break;\r\n }\r\n default:\r\n break;\r\n }\r\n }, 30);\r\n },\r\n /** 更新/更换设备成功后 */\r\n modifyHandle: function(flag) {\r\n this.resetModalInfo();\r\n if(flag) {\r\n loading.showLoading();\r\n this.getPlantLayoutData();\r\n this.getMicroInverterData();\r\n }\r\n },\r\n /** 删除设备信息成功后 */\r\n initListHandle: function(flag) {\r\n this.resetModalInfo();\r\n if(flag) {\r\n loading.showLoading();\r\n this.getPlantLayoutData();\r\n if(this.showMicroInverterList) {\r\n this.getMicroInverterData();\r\n } else {\r\n this.getMicroInverterHistory();\r\n }\r\n }\r\n },\r\n /** 处理电站布局列表信息 */\r\n handleLayout(row, type) {\r\n this.resetModalInfo();\r\n if(type !== 'delete') {\r\n location.href = '/powerstation/MicroInverterLayout?pw_id=' + this.pw_id + '&type=' + type;\r\n } else {\r\n const _this = this;\r\n goodwe.confirm(\r\n \"

\" + \r\n '

' + lang.Layout_Edit_Layout_Delete_desc + '

' + \r\n \"

\",\r\n [lang.ok,lang.cancel],\r\n function () {\r\n this.close();\r\n loading.showLoading();\r\n common.post(\"/v3/Layout/DelLayout\", { layoutId: row.id }).success(function (res) {\r\n notify(lang.operate_succss, 3, 'success');\r\n setTimeout(() => {\r\n loading.showLoading();\r\n _this.getPlantLayoutData();\r\n }, 500);\r\n }.bind(this)).all(function () {\r\n loading.disLoading();\r\n }.bind(this))\r\n }, function () {\r\n this.close()\r\n });\r\n }\r\n },\r\n /** 查看电站布局PV Panels */\r\n viewPvPanels(row) {\r\n this.resetModalInfo();\r\n setTimeout(() => {\r\n this.showPvPanels = true;\r\n }, 30);\r\n },\r\n /** 查看电站布局 */\r\n viewPanelsLayout(row) {\r\n this.resetModalInfo();\r\n setTimeout(() => {\r\n this.showLayoutView = true;\r\n }, 30);\r\n },\r\n /** 接口全部调用完毕后 */\r\n ajaxSuccessCallback() {\r\n this.initCount = this.initCount - 1;\r\n if(this.initCount === 0) {\r\n loading.disLoading();\r\n }\r\n },\r\n /** 一次性总共需要调用接口数 */\r\n ajaxOneTimeCount(num) {\r\n this.initCount = this.initCount + num;\r\n },\r\n /** 重置弹出框信息 */\r\n resetModalInfo() {\r\n this.showUpdateModal = false;\r\n this.showChangeModal = false;\r\n this.showDeleteModal = false;\r\n this.isHistoryRecord = false;\r\n this.showLayoutView = false;\r\n this.showPvPanels = false;\r\n this.initCount = 0;\r\n },\r\n },\r\n created() {\r\n loading.showLoading();\r\n this.getMicroInverterData();\r\n this.getPlantLayoutData();\r\n },\r\n}","import { render, staticRenderFns } from \"./MicroDeviceList.vue?vue&type=template&id=563a1629&scoped=true&\"\nimport script from \"./MicroDeviceList.js?vue&type=script&lang=js&\"\nexport * from \"./MicroDeviceList.js?vue&type=script&lang=js&\"\nimport style0 from \"./MicroDeviceList.scss?vue&type=style&index=0&id=563a1629&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"563a1629\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[_c('div',{staticClass:\"inverter-operate clearfix\"},[_c('button',{staticClass:\"btn_primary l\",class:{'btn-inactive':!_vm.showMicroInverterList},on:{\"click\":_vm.tabInverterList}},[_vm._v(_vm._s(_vm.lang.SelectdeviceType_Popup_MicroInverter))]),_vm._v(\" \"),_c('button',{staticClass:\"btn_primary l\",class:{'btn-inactive':_vm.showMicroInverterList},on:{\"click\":_vm.tabInverterHistory}},[_vm._v(_vm._s(_vm.lang.changeHistory))])]),_vm._v(\" \"),_c('div',{staticClass:\"inverter-detail body-contain\"},[_c('el-table',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.showMicroInverterList),expression:\"showMicroInverterList\"}],staticStyle:{\"width\":\"100%\"},attrs:{\"header-cell-style\":{height:'42px',background:'#38474E',color:'#fff'},\"stripe\":\"\",\"data\":_vm.computedInverterData}},[_c('el-table-column',{staticClass:\"pl20\",attrs:{\"prop\":\"status\",\"label\":_vm.lang.oStatus,\"width\":_vm.listTitleWidth.inverterWidth[0]},scopedSlots:_vm._u([{key:\"default\",fn:function(scope){return [_c('div',{style:({color: scope.row.status =='-1' ? '#557289': '#86bd4d'})},[_vm._v(\"\\n \"+_vm._s(scope.row.status==\"-1\"?_vm.lang.offline:_vm.lang.Online)+\"\\n \")])]}}])}),_vm._v(\" \"),_c('el-table-column',{attrs:{\"prop\":\"name\",\"label\":_vm.lang.template_name,\"width\":_vm.listTitleWidth.inverterWidth[1],\"show-overflow-tooltip\":\"\"},scopedSlots:_vm._u([{key:\"default\",fn:function(scope){return [_vm._v(\"\\n \"+_vm._s(scope.row.name || scope.row.sn || '-')+\"\\n \")]}}])}),_vm._v(\" \"),_c('el-table-column',{attrs:{\"prop\":\"sn\",\"label\":\"SN\",\"show-overflow-tooltip\":\"\",\"width\":_vm.listTitleWidth.inverterWidth[2]},scopedSlots:_vm._u([{key:\"default\",fn:function(scope){return [_vm._v(\"\\n \"+_vm._s(_vm._f(\"formatData\")(scope.row.sn))+\"\\n \")]}}])}),_vm._v(\" \"),_c('el-table-column',{attrs:{\"prop\":\"type\",\"label\":_vm.lang.pssmInverterType,\"width\":_vm.listTitleWidth.inverterWidth[3],\"show-overflow-tooltip\":\"\"},scopedSlots:_vm._u([{key:\"default\",fn:function(scope){return [_vm._v(\"\\n \"+_vm._s(_vm._f(\"formatData\")(scope.row.type))+\"\\n \")]}}])}),_vm._v(\" \"),_c('el-table-column',{attrs:{\"prop\":\"capacity\",\"label\":_vm.lang.CapacityOfDevice,\"width\":_vm.listTitleWidth.inverterWidth[4],\"show-overflow-tooltip\":\"\"},scopedSlots:_vm._u([{key:\"default\",fn:function(scope){return [_vm._v(\"\\n \"+_vm._s(_vm._f(\"formatData\")(scope.row.capacity))+\"\\n \")]}}])}),_vm._v(\" \"),_c('el-table-column',{attrs:{\"prop\":\"createTime\",\"label\":_vm.lang.pssmTurnonTime,\"width\":_vm.listTitleWidth.inverterWidth[5],\"show-overflow-tooltip\":\"\"},scopedSlots:_vm._u([{key:\"default\",fn:function(scope){return [_vm._v(\"\\n \"+_vm._s(_vm._f(\"formatDate\")(scope.row.createTime))+\"\\n \")]}}])}),_vm._v(\" \"),_c('el-table-column',{attrs:{\"prop\":\"collectSn\",\"label\":_vm.lang.DataLogger,\"width\":_vm.listTitleWidth.inverterWidth[6],\"show-overflow-tooltip\":\"\"},scopedSlots:_vm._u([{key:\"default\",fn:function(scope){return [_vm._v(\"\\n \"+_vm._s(scope.row.collectSn || '-')+\"\\n \")]}}])}),_vm._v(\" \"),_c('el-table-column',{attrs:{\"prop\":\"id\",\"label\":_vm.lang.pssmHandle,\"width\":_vm.listTitleWidth.inverterWidth[7]},scopedSlots:_vm._u([{key:\"default\",fn:function(scope){return [(scope.row.id!='')?_c('div',[(_vm.canUpdate)?_c('el-button',{staticClass:\"update-btn\",attrs:{\"type\":\"text\",\"size\":\"small\"},on:{\"click\":function($event){return _vm.handleDevice(scope.row, 'update')}}},[_vm._v(\"\\n \"+_vm._s(_vm.lang.Modify)+\"\\n \")]):_vm._e(),_vm._v(\" \"),(_vm.canUpdate)?_c('el-button',{staticClass:\"change-btn\",attrs:{\"size\":\"mini\",\"type\":\"text\"},on:{\"click\":function($event){return _vm.handleDevice(scope.row, 'change')}}},[_vm._v(\"\\n \"+_vm._s(_vm.lang.Replace)+\"\\n \")]):_vm._e(),_vm._v(\" \"),(_vm.canDelete)?_c('el-button',{staticClass:\"delete-btn\",attrs:{\"size\":\"mini\",\"type\":\"text\"},on:{\"click\":function($event){return _vm.handleDevice(scope.row, 'deleteList')}}},[_vm._v(\"\\n \"+_vm._s(_vm.lang.Delete)+\"\\n \")]):_vm._e()],1):_vm._e(),_vm._v(\" \"),(scope.row.id=='' || (!_vm.canUpdate && !_vm.canDelete))?_c('div',[_vm._v(\" -- \")]):_vm._e()]}}])})],1),_vm._v(\" \"),_c('el-table',{directives:[{name:\"show\",rawName:\"v-show\",value:(!_vm.showMicroInverterList),expression:\"!showMicroInverterList\"}],attrs:{\"header-cell-style\":{height:'42px',background:'#38474E',color:'#fff'},\"stripe\":\"\",\"data\":_vm.computedInverterHistory}},[_c('el-table-column',{attrs:{\"prop\":\"num\",\"label\":_vm.lang.replace_history_number,\"show-overflow-tooltip\":\"\",\"width\":\"90px\"},scopedSlots:_vm._u([{key:\"default\",fn:function(scope){return [_vm._v(\"\\n \"+_vm._s(scope.row.num)+\"\\n \")]}}])}),_vm._v(\" \"),_c('el-table-column',{attrs:{\"prop\":\"oldName\",\"label\":_vm.lang.original_devic,\"show-overflow-tooltip\":\"\"},scopedSlots:_vm._u([{key:\"default\",fn:function(scope){return [_vm._v(\"\\n \"+_vm._s(scope.row.oldName || scope.row.oldSn || '-')+\"\\n \")]}}])}),_vm._v(\" \"),_c('el-table-column',{attrs:{\"prop\":\"oldSn\",\"label\":_vm.lang.dmOriginDevice+' S/N',\"show-overflow-tooltip\":\"\"},scopedSlots:_vm._u([{key:\"default\",fn:function(scope){return [_vm._v(\"\\n \"+_vm._s(scope.row.oldSn)+\"\\n \")]}}])}),_vm._v(\" \"),_c('el-table-column',{attrs:{\"prop\":\"newName\",\"label\":_vm.lang.new_divice,\"show-overflow-tooltip\":\"\"},scopedSlots:_vm._u([{key:\"default\",fn:function(scope){return [_vm._v(\"\\n \"+_vm._s(scope.row.newName || scope.row.newSn || '-')+\"\\n \")]}}])}),_vm._v(\" \"),_c('el-table-column',{attrs:{\"prop\":\"newSn\",\"label\":_vm.lang.new_devic_sn,\"show-overflow-tooltip\":\"\"},scopedSlots:_vm._u([{key:\"default\",fn:function(scope){return [_vm._v(\"\\n \"+_vm._s(scope.row.newSn)+\"\\n \")]}}])}),_vm._v(\" \"),_c('el-table-column',{attrs:{\"prop\":\"changeDate\",\"label\":_vm.lang.replace_time,\"show-overflow-tooltip\":\"\"},scopedSlots:_vm._u([{key:\"default\",fn:function(scope){return [_vm._v(\"\\n \"+_vm._s(_vm._f(\"formatDate\")(scope.row.changeDate.toString().split(' ')[0]))+\"\\n \")]}}])}),_vm._v(\" \"),_c('el-table-column',{attrs:{\"prop\":\"id\",\"label\":_vm.lang.pssmHandle,\"width\":'110px'},scopedSlots:_vm._u([{key:\"default\",fn:function(scope){return [(scope.row.id!='')?_c('div',[(_vm.canDelete)?_c('el-button',{staticClass:\"delete-btn\",staticStyle:{\"color\":\"red\"},attrs:{\"size\":\"mini\",\"type\":\"text\"},on:{\"click\":function($event){return _vm.handleDevice(scope.row, 'deleteHistory')}}},[_vm._v(_vm._s(_vm.lang.Delete))]):_vm._e()],1):_vm._e(),_vm._v(\" \"),(scope.row.id=='' || !_vm.canDelete)?_c('div',[_vm._v(\" -- \")]):_vm._e()]}}])})],1),_vm._v(\" \"),_c('div',{staticClass:\"paging\"},[_c('gdw-pager',{attrs:{\"current-page\":_vm.InverterPage.page_index,\"page-sizes\":[_vm.InverterPage.page_size],\"layout\":\"prev, pager, next, sizes, total, jumper\",\"total\":_vm.InverterPage.record},on:{\"current-change\":_vm.handleInverterPageChange}})],1)],1),_vm._v(\" \"),_c('div',{staticClass:\"inverter-detail body-contain\"},[_c('div',{staticClass:\"btn_primary_noClick\"},[_vm._v(_vm._s(_vm.lang.Layout_Monitor_Label))]),_vm._v(\" \"),_c('div',{directives:[{name:\"loading\",rawName:\"v-loading\",value:(_vm.layoutLoading),expression:\"layoutLoading\"}]},[_c('div',{staticClass:\"layout-table-header\"},[_c('div',{staticClass:\"td-item\"},[_vm._v(_vm._s(_vm.lang.template_name))]),_vm._v(\" \"),_c('div',{staticClass:\"td-item\"},[_vm._v(_vm._s(_vm.lang.Layout_Monitor_Table_PVPanels))]),_vm._v(\" \"),_c('div',{staticClass:\"td-item\"},[_vm._v(_vm._s(_vm.lang.Layout_Monitor_Table_LayoutPreview))]),_vm._v(\" \"),_c('div',{staticClass:\"td-item\"},[_vm._v(_vm._s(_vm.lang.pssmHandle))])]),_vm._v(\" \"),(_vm.computedLayout)?_c('div',{staticClass:\"layout-table-body\"},[_c('div',{staticClass:\"td-item\"},[_vm._v(_vm._s(_vm.computedLayout.name || '-'))]),_vm._v(\" \"),_c('div',{staticClass:\"td-item\"},[_c('span',{staticClass:\"pv-panels\",on:{\"click\":function($event){return _vm.viewPvPanels(_vm.computedLayout)}}},[_vm._v(\"\\n \"+_vm._s(_vm.computedLayout.bindInverterPanelNum)+\" / \"+_vm._s(_vm.computedLayout.pvPanels)+\"\\n \")])]),_vm._v(\" \"),_c('div',{staticClass:\"td-item\"},[(_vm.computedLayout.id !== '')?_c('div',[_c('img',{staticClass:\"view-layout\",attrs:{\"src\":\"/Images/add_device/view_layout.png\",\"alt\":\"\"},on:{\"click\":function($event){return _vm.viewPanelsLayout(_vm.computedLayout)}}})]):_vm._e(),_vm._v(\" \"),(_vm.computedLayout.id === '')?_c('div',[_vm._v(\" - \")]):_vm._e()]),_vm._v(\" \"),_c('div',{staticClass:\"td-item\"},[(_vm.computedLayout.id !== '')?_c('div',[(_vm.canUpdate)?_c('el-button',{staticClass:\"update-btn\",attrs:{\"type\":\"text\",\"size\":\"small\"},on:{\"click\":function($event){return _vm.handleLayout(_vm.computedLayout, 'edit')}}},[_vm._v(\"\\n \"+_vm._s(_vm.lang.edit)+\"\\n \")]):_vm._e(),_vm._v(\" \"),(_vm.canDelete)?_c('el-button',{staticClass:\"delete-btn\",attrs:{\"size\":\"mini\",\"type\":\"text\"},on:{\"click\":function($event){return _vm.handleLayout(_vm.computedLayout, 'delete')}}},[_vm._v(\"\\n \"+_vm._s(_vm.lang.Delete)+\"\\n \")]):_vm._e()],1):_vm._e(),_vm._v(\" \"),(_vm.computedLayout.id === '' || (!_vm.canUpdate && !_vm.canDelete))?_c('div',[_vm._v(\" -- \")]):_vm._e()])]):_vm._e(),_vm._v(\" \"),(!_vm.computedLayout)?_c('div',{staticClass:\"layout-no-data\"},[_c('div',{staticClass:\"td-item-tip\"},[_vm._v(\"\\n \"+_vm._s(_vm.lang.Layout_Edit_Layout_add_Tips)+\"\\n \")]),_vm._v(\" \"),_c('div',{staticClass:\"td-item\"},[(_vm.canAdd)?_c('el-button',{staticClass:\"update-btn\",attrs:{\"type\":\"text\",\"size\":\"small\"},on:{\"click\":function($event){return _vm.handleLayout(_vm.computedLayout, 'add')}}},[_vm._v(\"\\n \"+_vm._s(_vm.lang.Add)+\"\\n \")]):_vm._e(),_vm._v(\" \"),(!_vm.canAdd)?_c('el-button',{staticClass:\"update-btn\",attrs:{\"type\":\"text\",\"size\":\"small\"}},[_vm._v(\"\\n --\\n \")]):_vm._e()],1)]):_vm._e()])]),_vm._v(\" \"),_c('UpdateDeviceModal',{attrs:{\"showModal\":_vm.showUpdateModal,\"changingDeviceType\":_vm.changingDeviceType,\"changingDeviceInfo\":_vm.changingDevice,\"stationId\":_vm.pw_id,\"label_width\":_vm.labelWidth},on:{\"modify_success\":_vm.modifyHandle}}),_vm._v(\" \"),_c('ChangeDeviceModal',{attrs:{\"showModal\":_vm.showChangeModal,\"changingDeviceType\":_vm.changingDeviceType,\"changingDeviceInfo\":_vm.changingDevice,\"stationId\":_vm.pw_id,\"is_stored\":_vm.is_stored,\"label_width\":_vm.labelWidth},on:{\"change_success\":_vm.modifyHandle}}),_vm._v(\" \"),_c('DeleteDeviceModal',{attrs:{\"showModal\":_vm.showDeleteModal,\"isHistoryRecord\":_vm.isHistoryRecord,\"changingDeviceType\":_vm.changingDeviceType,\"changingDeviceInfo\":_vm.changingDevice},on:{\"delete_success\":_vm.initListHandle}}),_vm._v(\" \"),_c('ViewLayoutDialog',{attrs:{\"showModal\":_vm.showLayoutView,\"stationId\":_vm.pw_id,\"panelsData\":_vm.computedLayout}}),_vm._v(\" \"),_c('ViewPvPanelsDialog',{attrs:{\"showModal\":_vm.showPvPanels,\"panelsData\":_vm.computedLayout}})],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../../../node_modules/babel-loader/lib/index.js!./DataLoggerList.js?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../../node_modules/babel-loader/lib/index.js!./DataLoggerList.js?vue&type=script&lang=js&\"","import UpdateDeviceModal from '../../dialogs/components/UpdateDeviceModal.vue';\r\nimport ChangeDeviceModal from '../../dialogs/components/ChangeDeviceModal.vue';\r\nimport DeleteDeviceModal from '../../dialogs/components/DeleteDeviceModal.vue';\r\nimport {DEVICE_TYPE_DATALOGGER, DEVICE_TYPE_ARCB} from '../../relativeFunUtl';\r\nexport default {\r\n name: 'DataLoggerList',\r\n props: {\r\n stationId:{ type: String, required: true }, // 电站ID\r\n is_stored:{type: Boolean, required: true }, // 是否是储能电站\r\n listTitleWidth: { type: Object, required: true }, // 列表table 标题宽度\r\n labelWidth: { type: String, required: true }, // form表单label宽度\r\n },\r\n components: { UpdateDeviceModal, ChangeDeviceModal, DeleteDeviceModal },\r\n data: function() {\r\n return {\r\n lang:Goodwe.Ops.Resouces.Front,\r\n pw_id: this.stationId,\r\n canUpdate: canUpdate, // 是否有修改权限\r\n canDelete: canDelete, // 是否有删除权限\r\n is_stored: this.is_stored, // 是否是储能电站\r\n labelWidth: this.labelWidth, // form表单label宽度\r\n showDataLoggerList: true, // 数据采集器列表是否展示\r\n showCountercurrentBox: true, // ARCB列表是否展示\r\n dataLoggerData: [], // 数据采集器数据\r\n countercurrentBox: [],\r\n dataLoggerHistory: [], // 数据采集器更换记录\r\n countercurrentBoxHistory: [], \r\n dataLoggerPage: { // 数采分页\r\n page_index: 1,\r\n page_size: 6,\r\n record: 0\r\n }, \r\n countercurrentBoxPage: { //防逆流箱分页\r\n page_index: 1,\r\n page_size: 6,\r\n record: 0\r\n },\r\n initCount: 0, // 页面将要调用接口数\r\n showUpdateModal: false, // 修改设备模态框\r\n showChangeModal: false, // 更换设备模态框\r\n showDeleteModal: false, // 删除设备模态框\r\n changingDeviceType: DEVICE_TYPE_DATALOGGER, // 设备类型\r\n changingDevice: '', // 当前操作的设备信息\r\n isHistoryRecord: false, // 是否删除历史记录设备 \r\n }\r\n },\r\n watch: {\r\n stationId:function(){\r\n this.pw_id = this.stationId;\r\n },\r\n },\r\n computed: {\r\n /** 处理后的数据采集器数据 */\r\n computedDataLoggerData: function() {\r\n var d = _.cloneDeep(this.dataLoggerData);\r\n if (!d) d = [];\r\n var data = [];\r\n d.forEach(function (item) {\r\n data.push({\r\n status: item.status,\r\n name: item.it_name,\r\n sn: item.it_sn,\r\n type: item.it_type,\r\n createTime: item.conn_date,\r\n id: item.id\r\n })\r\n });\r\n return data\r\n },\r\n /** 处理后的数据采集器历史纪录 */\r\n computedDataLoggerHistory: function () {\r\n var d = _.cloneDeep(this.dataLoggerHistory);\r\n if (!d) d = [];\r\n var data = [];\r\n d.forEach(function (item) {\r\n data.push({\r\n id:item.id,\r\n num: item.ch_no,\r\n oldName: item.it_name_old,\r\n oldSn: item.it_sn_old,\r\n newName: item.it_name_new,\r\n newSn: item.it_sn_new,\r\n changeDate: item.change_date,\r\n memo: item.memo,\r\n })\r\n });\r\n return data;\r\n },\r\n /** 处理后的防逆流箱数据 */\r\n computedCountercurrentBox: function () {\r\n var d = _.cloneDeep(this.countercurrentBox);\r\n if (!d) d = [];\r\n var data = [];\r\n d.forEach(function (item) {\r\n if(item.workStatus==\"关闭\")item.workStatus=\"closed\";\r\n if(item.workStatus==\"打开\")item.workStatus=this.lang.open;\r\n data.push({\r\n status: item.status,\r\n name: item.it_name,\r\n sn: item.it_sn,\r\n type: item.it_type,\r\n installedCapacity: item.capacity,\r\n threshold: item.threshold,\r\n workStatus: item.workStatus,\r\n lastOnlineTime: item.last_online_time,\r\n createTime: item.conn_date,\r\n id: item.id\r\n })\r\n });\r\n return data\r\n },\r\n /** 处理后的防逆流箱历史纪录 */\r\n computedCountercurrentBoxHistory: function () {\r\n var d = _.cloneDeep(this.countercurrentBoxHistory);\r\n if (!d) d = [];\r\n var data = [];\r\n d.forEach(function (item) {\r\n data.push({\r\n id:item.id,\r\n num: item.ch_no,\r\n oldName: item.it_name_old,\r\n oldSn: item.it_sn_old,\r\n newName: item.it_name_new,\r\n newSn: item.it_sn_new,\r\n changeDate: item.change_date,\r\n memo: item.memo,\r\n })\r\n });\r\n return data\r\n },\r\n },\r\n filters: {\r\n formatData: function (v) {\r\n if (!v && v != \"0\") {\r\n return \"-\"\r\n } else {\r\n return v\r\n }\r\n },\r\n formatDate:function(v){\r\n if (!v && v != \"0\") {\r\n return \"-\"\r\n } else {\r\n return dayjs(v).format(dateFormatReplace(\"day\"))\r\n }\r\n },\r\n },\r\n methods: {\r\n /** 切换到数据采集器列表 */\r\n tabDataLoggerList: function () {\r\n this.resetHandleListModal();\r\n loading.showLoading();\r\n if (!this.showDataLoggerList) {\r\n this.showDataLoggerList = true;\r\n this.resetDataLoggerPage();\r\n this.getDataLoggerData();\r\n }\r\n },\r\n /** 切换到数据采集器操作记录 */\r\n tabDataLoggerHistory: function () {\r\n this.resetHandleListModal();\r\n loading.showLoading();\r\n if (this.showDataLoggerList) {\r\n this.showDataLoggerList = false;\r\n this.resetDataLoggerPage();\r\n this.getDataLoggerHistory();\r\n }\r\n },\r\n /** 切换到防逆流箱列表 */\r\n tabCountercurrentBox: function () {\r\n this.resetHandleListModal();\r\n loading.showLoading();\r\n if (!this.showCountercurrentBox) {\r\n this.showCountercurrentBox = true;\r\n this.resetCountercurrentBoxPage();\r\n this.getCountercurrentBox();\r\n }\r\n },\r\n /** 切换到防逆流箱操作记录 */\r\n tabCountercurrentBoxHistory: function () {\r\n this.resetHandleListModal();\r\n loading.showLoading();\r\n if (this.showCountercurrentBox) {\r\n this.showCountercurrentBox = false;\r\n this.resetCountercurrentBoxPage();\r\n this.getCountercurrentBoxHistory();\r\n }\r\n },\r\n /** 重置数据采集器页码 */\r\n resetDataLoggerPage: function () {\r\n this.dataLoggerPage.page_size = 6;\r\n this.dataLoggerPage.page_index = 1;\r\n },\r\n /** 重置防逆流箱页码 */\r\n resetCountercurrentBoxPage: function () {\r\n this.countercurrentBoxPage.page_size = 6;\r\n this.countercurrentBoxPage.page_index = 1;\r\n },\r\n /** 切换数据采集器页码 */\r\n handleDataLoggerPageChange: function (page) {\r\n this.resetHandleListModal();\r\n this.dataLoggerPage.page_index = page;\r\n loading.showLoading();\r\n if (this.showDataLoggerList) {\r\n this.getDataLoggerData();\r\n } else {\r\n this.getDataLoggerHistory();\r\n }\r\n },\r\n /** 切换防逆流箱页码 */\r\n handleCountercurrentBoxPagePageChange: function (page) {\r\n this.resetHandleListModal();\r\n this.countercurrentBoxPage.page_index = page;\r\n loading.showLoading();\r\n if (this.showCountercurrentBox) {\r\n this.getCountercurrentBox();\r\n } else {\r\n this.getCountercurrentBoxHistory();\r\n }\r\n },\r\n /** 获取数据采集器信息 */\r\n getDataLoggerData: function () {\r\n this.initCount = this.initCount + 1;\r\n common.post(\"v1/PwInventers/QueryPowerStationEquipment\", \r\n { pw_id: this.pw_id, \r\n page_index: this.dataLoggerPage.page_index, \r\n page_size: this.dataLoggerPage.page_size, \r\n equipment_type: DEVICE_TYPE_DATALOGGER\r\n }).success(function (res) {\r\n this.dataLoggerData = res.data.list;\r\n this.dataLoggerPage.record = res.data.record;\r\n }.bind(this)).all(function () {\r\n this.ajaxSuccessCallback();\r\n }.bind(this))\r\n },\r\n /** 获取数据采集器历史纪录 */\r\n getDataLoggerHistory: function () {\r\n this.initCount = this.initCount + 1;\r\n common.post(\"v1/PwInventers/QueryPowerStationEquipmentsChangeHistory\", \r\n { pw_id: this.pw_id, \r\n page_index: this.dataLoggerPage.page_index,\r\n page_size: this.dataLoggerPage.page_size, \r\n equipment_type: DEVICE_TYPE_DATALOGGER\r\n }).success(function (res) {\r\n this.dataLoggerHistory = res.data.list\r\n this.dataLoggerPage.record = res.data.record;\r\n }.bind(this)).all(function () {\r\n this.ajaxSuccessCallback()\r\n }.bind(this))\r\n },\r\n /** 获取防逆流箱数据 */\r\n getCountercurrentBox: function () {\r\n this.initCount = this.initCount + 1;\r\n common.post(\"v1/PwInventers/QueryPowerStationEquipment\", { \r\n pw_id: this.pw_id, \r\n page_index: this.countercurrentBoxPage.page_index,\r\n page_size: this.countercurrentBoxPage.page_size, \r\n equipment_type: DEVICE_TYPE_ARCB \r\n }).success(function (res) {\r\n this.countercurrentBox = res.data.list\r\n }.bind(this)).all(function () {\r\n this.ajaxSuccessCallback()\r\n }.bind(this))\r\n },\r\n /** 获取防逆流箱历史纪录 */\r\n getCountercurrentBoxHistory: function () {\r\n this.initCount = this.initCount + 1;\r\n common.post(\"v1/PwInventers/QueryPowerStationEquipmentsChangeHistory\", \r\n { pw_id: this.pw_id,\r\n page_index: this.countercurrentBoxPage.page_index, \r\n page_size: this.countercurrentBoxPage.page_size, \r\n equipment_type: DEVICE_TYPE_ARCB \r\n }).success(function (res) {\r\n this.countercurrentBoxHistory = res.data.list\r\n this.countercurrentBoxPage.record = res.data.record;\r\n }.bind(this)).all(function () {\r\n this.ajaxSuccessCallback()\r\n }.bind(this))\r\n },\r\n /** 处理列表信息 */\r\n handleDevice: function(row, type, deviceType) {\r\n this.resetModalInfo();\r\n setTimeout(() => {\r\n this.changingDeviceType = deviceType;\r\n this.changingDevice = row;\r\n switch (type) {\r\n case 'update':{ // 更新设备按钮点击\r\n this.showUpdateModal = true;\r\n break;\r\n }\r\n case 'change':{ // 更换设备按钮点击\r\n this.showChangeModal = true;\r\n break;\r\n }\r\n case 'deleteList':{ // 删除设备按钮点击\r\n this.isHistoryRecord = false;\r\n this.showDeleteModal = true;\r\n break;\r\n }\r\n case 'deleteHistory':{// 删除历史记录按钮点击\r\n this.isHistoryRecord = true;\r\n this.showDeleteModal = true;\r\n break;\r\n }\r\n default:\r\n break;\r\n }\r\n }, 30);\r\n },\r\n /** 更新/更换设备成功后 */\r\n modifyHandle: function(flag) {\r\n this.resetModalInfo();\r\n if(flag) {\r\n if(this.changingDeviceType === DEVICE_TYPE_DATALOGGER) {\r\n this.getDataLoggerData();\r\n } else {\r\n this.getCountercurrentBox();\r\n }\r\n }\r\n },\r\n /** 删除设备信息成功后 */\r\n initListHandle: function(flag) {\r\n this.resetModalInfo();\r\n if(flag) {\r\n if(this.showDataLoggerList) {\r\n this.getDataLoggerData();\r\n } else {\r\n this.getDataLoggerHistory();\r\n }\r\n if(this.showCountercurrentBox) {\r\n this.getCountercurrentBox();\r\n } else {\r\n this.getCountercurrentBoxHistory();\r\n }\r\n }\r\n },\r\n /** 重置弹出框信息 */\r\n resetModalInfo:function() {\r\n this.showUpdateModal = false;\r\n this.showChangeModal = false;\r\n this.showDeleteModal = false;\r\n this.isHistoryRecord = false;\r\n this.initCount = 0;\r\n },\r\n /** 操作列表弹框重置 */\r\n resetHandleListModal() {\r\n this.showUpdateModal = false;\r\n this.showChangeModal = false;\r\n this.showDeleteModal = false;\r\n },\r\n /** 接口全部调用完毕后 */\r\n ajaxSuccessCallback: function() {\r\n this.initCount = this.initCount - 1;\r\n if(this.initCount === 0) {\r\n loading.disLoading();\r\n }\r\n },\r\n /** 获取页面初始化数据 */\r\n getPageData: function() {\r\n loading.showLoading();\r\n this.getDataLoggerData();\r\n this.getCountercurrentBox();\r\n },\r\n },\r\n created: function() {\r\n this.getPageData();\r\n },\r\n mounted: function() {\r\n }\r\n}","import { render, staticRenderFns } from \"./DataLoggerList.vue?vue&type=template&id=20d8d336&scoped=true&\"\nimport script from \"./DataLoggerList.js?vue&type=script&lang=js&\"\nexport * from \"./DataLoggerList.js?vue&type=script&lang=js&\"\nimport style0 from \"./DataLoggerList.scss?vue&type=style&index=0&id=20d8d336&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"20d8d336\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[_c('div',{staticClass:\"inverter-operate clearfix\"},[_c('button',{staticClass:\"btn_primary l\",class:{'btn-inactive':!_vm.showDataLoggerList},on:{\"click\":_vm.tabDataLoggerList}},[_vm._v(_vm._s(_vm.lang.DataLogger))]),_vm._v(\" \"),_c('button',{staticClass:\"btn_primary l\",class:{'btn-inactive':_vm.showDataLoggerList},on:{\"click\":_vm.tabDataLoggerHistory}},[_vm._v(_vm._s(_vm.lang.changeHistory))])]),_vm._v(\" \"),_c('div',{staticClass:\"inverter-detail body-contain\"},[_c('el-table',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.showDataLoggerList),expression:\"showDataLoggerList\"}],staticStyle:{\"width\":\"100%\"},attrs:{\"header-cell-style\":{height:'42px',background:'#38474E',color:'#fff'},\"stripe\":\"\",\"data\":_vm.computedDataLoggerData}},[_c('el-table-column',{attrs:{\"prop\":\"status\",\"width\":_vm.listTitleWidth.ezWidth[0],\"label\":_vm.lang.oStatus},scopedSlots:_vm._u([{key:\"default\",fn:function(scope){return [_c('div',{style:({color: scope.row.status =='-1' ? '#557289': '#86bd4d'})},[_vm._v(\"\\n \"+_vm._s(scope.row.status==\"-1\"?_vm.lang.offline:_vm.lang.Online)+\"\\n \")])]}}])}),_vm._v(\" \"),_c('el-table-column',{attrs:{\"prop\":\"name\",\"label\":_vm.lang.template_name,\"width\":_vm.listTitleWidth.ezWidth[1],\"show-overflow-tooltip\":\"\"},scopedSlots:_vm._u([{key:\"default\",fn:function(scope){return [_vm._v(\"\\n \"+_vm._s(scope.row.name || scope.row.sn || '-')+\"\\n \")]}}])}),_vm._v(\" \"),_c('el-table-column',{attrs:{\"prop\":\"sn\",\"label\":\"SN\",\"width\":_vm.listTitleWidth.ezWidth[2],\"show-overflow-tooltip\":\"\"},scopedSlots:_vm._u([{key:\"default\",fn:function(scope){return [_vm._v(\"\\n \"+_vm._s(_vm._f(\"formatData\")(scope.row.sn))+\"\\n \")]}}])}),_vm._v(\" \"),_c('el-table-column',{attrs:{\"prop\":\"type\",\"label\":_vm.lang.pssmInverterType,\"width\":_vm.listTitleWidth.ezWidth[3],\"show-overflow-tooltip\":\"\"},scopedSlots:_vm._u([{key:\"default\",fn:function(scope){return [_vm._v(\"\\n \"+_vm._s(_vm._f(\"formatData\")(scope.row.type))+\"\\n \")]}}])}),_vm._v(\" \"),_c('el-table-column',{attrs:{\"prop\":\"createTime\",\"label\":_vm.lang.pssmTurnonTime,\"width\":_vm.listTitleWidth.ezWidth[4],\"show-overflow-tooltip\":\"\"},scopedSlots:_vm._u([{key:\"default\",fn:function(scope){return [_vm._v(\"\\n \"+_vm._s(_vm._f(\"formatDate\")(scope.row.createTime))+\"\\n \")]}}])}),_vm._v(\" \"),_c('el-table-column',{attrs:{\"prop\":\"id\",\"label\":_vm.lang.pssmHandle,\"width\":_vm.listTitleWidth.ezWidth[5]},scopedSlots:_vm._u([{key:\"default\",fn:function(scope){return [(scope.row.id!='')?_c('div',[(_vm.canUpdate)?_c('el-button',{staticClass:\"update-btn\",attrs:{\"size\":\"mini\",\"type\":\"text\"},on:{\"click\":function($event){return _vm.handleDevice(scope.row, 'update', '1')}}},[_vm._v(\"\\n \"+_vm._s(_vm.lang.Modify))]):_vm._e(),_vm._v(\" \"),(_vm.canUpdate)?_c('el-button',{staticClass:\"change-btn\",staticStyle:{\"color\":\"#008000\"},attrs:{\"size\":\"mini\",\"type\":\"text\"},on:{\"click\":function($event){return _vm.handleDevice(scope.row, 'change', '1')}}},[_vm._v(\"\\n \"+_vm._s(_vm.lang.Replace))]):_vm._e(),_vm._v(\" \"),(_vm.canDelete)?_c('el-button',{staticClass:\"delete-btn\",staticStyle:{\"color\":\"red\"},attrs:{\"size\":\"mini\",\"type\":\"text\"},on:{\"click\":function($event){return _vm.handleDevice(scope.row, 'deleteList', '1')}}},[_vm._v(\"\\n \"+_vm._s(_vm.lang.Delete))]):_vm._e()],1):_vm._e(),_vm._v(\" \"),(scope.row.id=='' || (!_vm.canUpdate && !_vm.canDelete))?_c('div',[_vm._v(\" -- \")]):_vm._e()]}}])})],1),_vm._v(\" \"),_c('el-table',{directives:[{name:\"show\",rawName:\"v-show\",value:(!_vm.showDataLoggerList),expression:\"!showDataLoggerList\"}],attrs:{\"header-cell-style\":{height:'42px',background:'#38474E',color:'#fff'},\"stripe\":\"\",\"data\":_vm.computedDataLoggerHistory}},[_c('el-table-column',{attrs:{\"prop\":\"num\",\"label\":_vm.lang.replace_history_number,\"show-overflow-tooltip\":\"\",\"width\":\"90px\"},scopedSlots:_vm._u([{key:\"default\",fn:function(scope){return [_vm._v(\"\\n \"+_vm._s(scope.row.num)+\"\\n \")]}}])}),_vm._v(\" \"),_c('el-table-column',{attrs:{\"prop\":\"oldName\",\"label\":_vm.lang.original_devic,\"show-overflow-tooltip\":\"\"},scopedSlots:_vm._u([{key:\"default\",fn:function(scope){return [_vm._v(\"\\n \"+_vm._s(scope.row.oldName || scope.row.oldSn || '-')+\"\\n \")]}}])}),_vm._v(\" \"),_c('el-table-column',{attrs:{\"prop\":\"oldSn\",\"label\":_vm.lang.dmOriginDevice+' S/N',\"show-overflow-tooltip\":\"\"},scopedSlots:_vm._u([{key:\"default\",fn:function(scope){return [_vm._v(\"\\n \"+_vm._s(scope.row.oldSn)+\"\\n \")]}}])}),_vm._v(\" \"),_c('el-table-column',{attrs:{\"prop\":\"newName\",\"label\":_vm.lang.new_divice,\"show-overflow-tooltip\":\"\"},scopedSlots:_vm._u([{key:\"default\",fn:function(scope){return [_vm._v(\"\\n \"+_vm._s(scope.row.newName || scope.row.newSn || '-')+\"\\n \")]}}])}),_vm._v(\" \"),_c('el-table-column',{attrs:{\"prop\":\"newSn\",\"label\":_vm.lang.new_devic_sn,\"show-overflow-tooltip\":\"\"},scopedSlots:_vm._u([{key:\"default\",fn:function(scope){return [_vm._v(\"\\n \"+_vm._s(scope.row.newSn)+\"\\n \")]}}])}),_vm._v(\" \"),_c('el-table-column',{attrs:{\"prop\":\"changeDate\",\"label\":_vm.lang.replace_time,\"show-overflow-tooltip\":\"\"},scopedSlots:_vm._u([{key:\"default\",fn:function(scope){return [_vm._v(\"\\n \"+_vm._s(_vm._f(\"formatDate\")(scope.row.changeDate.toString().split(' ')[0]))+\"\\n \")]}}])}),_vm._v(\" \"),_c('el-table-column',{attrs:{\"prop\":\"memo\",\"label\":_vm.lang.uppcase_note,\"show-overflow-tooltip\":\"\",\"width\":\"110px\"}}),_vm._v(\" \"),_c('el-table-column',{attrs:{\"prop\":\"id\",\"label\":_vm.lang.pssmHandle,\"width\":\"110px\"},scopedSlots:_vm._u([{key:\"default\",fn:function(scope){return [(scope.row.id!='')?_c('div',[(_vm.canDelete)?_c('el-button',{staticClass:\"delete-btn\",staticStyle:{\"color\":\"red\"},attrs:{\"size\":\"mini\",\"type\":\"text\"},on:{\"click\":function($event){return _vm.handleDevice(scope.row, 'deleteHistory', '1')}}},[_vm._v(_vm._s(_vm.lang.Delete))]):_vm._e()],1):_vm._e(),_vm._v(\" \"),(scope.row.id=='' || !_vm.canDelete)?_c('div',[_vm._v(\" -- \")]):_vm._e()]}}])})],1),_vm._v(\" \"),_c('div',{staticClass:\"paging\"},[_c('gdw-pager',{attrs:{\"current-page\":_vm.dataLoggerPage.page_index,\"page-sizes\":[_vm.dataLoggerPage.page_size],\"layout\":\"prev, pager, next, sizes, total, jumper\",\"total\":_vm.dataLoggerPage.record},on:{\"current-change\":_vm.handleDataLoggerPageChange}})],1)],1),_vm._v(\" \"),(_vm.computedCountercurrentBox.length !== 0)?_c('div',[_c('div',{staticClass:\"inverter-operate clearfix\",staticStyle:{\"margin-top\":\"24px\"}},[_c('button',{staticClass:\"btn_primary l\",class:{'btn-inactive':!_vm.showCountercurrentBox},on:{\"click\":_vm.tabCountercurrentBox}},[_vm._v(\"\\n \"+_vm._s(_vm.lang.ARCB))]),_vm._v(\" \"),_c('button',{staticClass:\"btn_primary l\",class:{'btn-inactive':_vm.showCountercurrentBox},on:{\"click\":_vm.tabCountercurrentBoxHistory}},[_vm._v(\"\\n \"+_vm._s(_vm.lang.changeHistory))])]),_vm._v(\" \"),_c('div',{staticClass:\"inverter-detail body-contain\"},[_c('el-table',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.showCountercurrentBox),expression:\"showCountercurrentBox\"}],staticStyle:{\"width\":\"100%\"},attrs:{\"header-cell-style\":{height:'42px',background:'#38474E',color:'#fff'},\"stripe\":\"\",\"data\":_vm.computedCountercurrentBox}},[_c('el-table-column',{attrs:{\"prop\":\"status\",\"width\":_vm.listTitleWidth.arcbWidth[0],\"label\":_vm.lang.oStatus},scopedSlots:_vm._u([{key:\"default\",fn:function(scope){return [_c('div',{style:({color: scope.row.status =='-1' ? '#557289': '#86bd4d'})},[_vm._v(\"\\n \"+_vm._s(scope.row.status==\"-1\"?_vm.lang.offline:_vm.lang.Online)+\"\\n \")])]}}],null,false,4091588356)}),_vm._v(\" \"),_c('el-table-column',{attrs:{\"prop\":\"name\",\"label\":_vm.lang.template_name,\"width\":_vm.listTitleWidth.arcbWidth[1],\"show-overflow-tooltip\":\"\"},scopedSlots:_vm._u([{key:\"default\",fn:function(scope){return [_vm._v(\"\\n \"+_vm._s(scope.row.name || scope.row.sn || '-')+\"\\n \")]}}],null,false,4275003690)}),_vm._v(\" \"),_c('el-table-column',{attrs:{\"prop\":\"sn\",\"label\":\"SN\",\"width\":_vm.listTitleWidth.arcbWidth[2],\"show-overflow-tooltip\":\"\"},scopedSlots:_vm._u([{key:\"default\",fn:function(scope){return [_vm._v(\"\\n \"+_vm._s(_vm._f(\"formatData\")(scope.row.sn))+\"\\n \")]}}],null,false,900667434)}),_vm._v(\" \"),_c('el-table-column',{attrs:{\"prop\":\"type\",\"label\":_vm.lang.pssmInverterType,\"width\":_vm.listTitleWidth.arcbWidth[3],\"show-overflow-tooltip\":\"\"},scopedSlots:_vm._u([{key:\"default\",fn:function(scope){return [_vm._v(\"\\n \"+_vm._s(_vm._f(\"formatData\")(scope.row.type))+\"\\n \")]}}],null,false,487100463)}),_vm._v(\" \"),_c('el-table-column',{attrs:{\"prop\":\"installedCapacity\",\"label\":_vm.lang.capacity,\"width\":_vm.listTitleWidth.arcbWidth[4],\"show-overflow-tooltip\":\"\"},scopedSlots:_vm._u([{key:\"default\",fn:function(scope){return [_vm._v(\"\\n \"+_vm._s(_vm._f(\"formatData\")(scope.row.installedCapacity))+\"\\n \")]}}],null,false,2739851779)}),_vm._v(\" \"),_c('el-table-column',{attrs:{\"prop\":\"createTime\",\"label\":_vm.lang.pssmTurnonTime,\"width\":_vm.listTitleWidth.arcbWidth[5],\"show-overflow-tooltip\":\"\"},scopedSlots:_vm._u([{key:\"default\",fn:function(scope){return [_vm._v(\"\\n \"+_vm._s(_vm._f(\"formatDate\")(scope.row.createTime))+\"\\n \")]}}],null,false,3533526082)}),_vm._v(\" \"),_c('el-table-column',{attrs:{\"prop\":\"id\",\"label\":_vm.lang.pssmHandle,\"width\":_vm.listTitleWidth.arcbWidth[6]},scopedSlots:_vm._u([{key:\"default\",fn:function(scope){return [(scope.row.id!='')?_c('div',[(_vm.canUpdate)?_c('el-button',{staticClass:\"update-btn\",attrs:{\"size\":\"mini\",\"type\":\"text\"},on:{\"click\":function($event){return _vm.handleDevice(scope.row, 'update', '2')}}},[_vm._v(_vm._s(_vm.lang.Modify))]):_vm._e(),_vm._v(\" \"),(_vm.canUpdate)?_c('el-button',{staticClass:\"change-btn\",staticStyle:{\"color\":\"#008000\"},attrs:{\"size\":\"mini\",\"type\":\"text\"},on:{\"click\":function($event){return _vm.handleDevice(scope.row, 'change', '2')}}},[_vm._v(_vm._s(_vm.lang.Replace))]):_vm._e(),_vm._v(\" \"),(_vm.canDelete)?_c('el-button',{staticClass:\"delete-btn\",staticStyle:{\"color\":\"red\"},attrs:{\"size\":\"mini\",\"type\":\"text\"},on:{\"click\":function($event){return _vm.handleDevice(scope.row, 'deleteList', '2')}}},[_vm._v(_vm._s(_vm.lang.Delete))]):_vm._e()],1):_vm._e(),_vm._v(\" \"),(scope.row.id=='' || (!_vm.canUpdate && !_vm.canDelete))?_c('div',[_vm._v(\" -- \")]):_vm._e()]}}],null,false,1413840654)})],1),_vm._v(\" \"),_c('el-table',{directives:[{name:\"show\",rawName:\"v-show\",value:(!_vm.showCountercurrentBox),expression:\"!showCountercurrentBox\"}],attrs:{\"header-cell-style\":{height:'42px',background:'#38474E',color:'#fff'},\"stripe\":\"\",\"data\":_vm.computedCountercurrentBoxHistory}},[_c('el-table-column',{attrs:{\"prop\":\"num\",\"label\":_vm.lang.replace_history_number,\"width\":\"167px\"},scopedSlots:_vm._u([{key:\"default\",fn:function(scope){return [_vm._v(\"\\n \"+_vm._s(scope.row.num)+\"\\n \")]}}],null,false,2356678667)}),_vm._v(\" \"),_c('el-table-column',{attrs:{\"prop\":\"oldName\",\"label\":_vm.lang.original_devic,\"show-overflow-tooltip\":\"\"},scopedSlots:_vm._u([{key:\"default\",fn:function(scope){return [_vm._v(\"\\n \"+_vm._s(scope.row.oldName || scope.row.oldSn || '-')+\"\\n \")]}}],null,false,4022542698)}),_vm._v(\" \"),_c('el-table-column',{attrs:{\"prop\":\"oldSn\",\"label\":_vm.lang.dmOriginDevice+' S/N',\"show-overflow-tooltip\":\"\"},scopedSlots:_vm._u([{key:\"default\",fn:function(scope){return [_vm._v(\"\\n \"+_vm._s(scope.row.oldSn)+\"\\n \")]}}],null,false,1993756519)}),_vm._v(\" \"),_c('el-table-column',{attrs:{\"prop\":\"newName\",\"label\":_vm.lang.new_divice,\"show-overflow-tooltip\":\"\"},scopedSlots:_vm._u([{key:\"default\",fn:function(scope){return [_vm._v(\"\\n \"+_vm._s(scope.row.newName || scope.row.newSn || '-')+\"\\n \")]}}],null,false,416500874)}),_vm._v(\" \"),_c('el-table-column',{attrs:{\"prop\":\"newSn\",\"label\":_vm.lang.new_devic_sn,\"show-overflow-tooltip\":\"\"},scopedSlots:_vm._u([{key:\"default\",fn:function(scope){return [_vm._v(\"\\n \"+_vm._s(scope.row.newSn)+\"\\n \")]}}],null,false,3579487356)}),_vm._v(\" \"),_c('el-table-column',{attrs:{\"prop\":\"changeDate\",\"label\":_vm.lang.replace_time,\"show-overflow-tooltip\":\"\"},scopedSlots:_vm._u([{key:\"default\",fn:function(scope){return [_vm._v(\"\\n \"+_vm._s(_vm._f(\"formatDate\")(scope.row.changeDate.toString().split(' ')[0]))+\"\\n \")]}}],null,false,1329136651)}),_vm._v(\" \"),_c('el-table-column',{attrs:{\"prop\":\"memo\",\"label\":_vm.lang.uppcase_note,\"show-overflow-tooltip\":\"\"}}),_vm._v(\" \"),_c('el-table-column',{attrs:{\"prop\":\"id\",\"label\":_vm.lang.pssmHandle,\"width\":_vm.listTitleWidth.ezWidth[5]},scopedSlots:_vm._u([{key:\"default\",fn:function(scope){return [(scope.row.id!='')?_c('div',[(_vm.canDelete)?_c('el-button',{staticClass:\"delete-btn\",staticStyle:{\"color\":\"red\"},attrs:{\"size\":\"mini\",\"type\":\"text\"},on:{\"click\":function($event){return _vm.handleDevice(scope.row, 'deleteHistory', '2')}}},[_vm._v(_vm._s(_vm.lang.Delete))]):_vm._e()],1):_vm._e(),_vm._v(\" \"),(scope.row.id=='' || !_vm.canDelete)?_c('div',[_vm._v(\" -- \")]):_vm._e()]}}],null,false,3735993724)})],1),_vm._v(\" \"),_c('div',{staticClass:\"paging\"},[_c('gdw-pager',{attrs:{\"current-page\":_vm.countercurrentBoxPage.page_index,\"page-sizes\":[_vm.countercurrentBoxPage.page_size],\"layout\":\"prev, pager, next, sizes, total, jumper\",\"total\":_vm.countercurrentBoxPage.record},on:{\"current-change\":_vm.handleCountercurrentBoxPagePageChange}})],1)],1)]):_vm._e(),_vm._v(\" \"),_c('UpdateDeviceModal',{attrs:{\"showModal\":_vm.showUpdateModal,\"changingDeviceType\":_vm.changingDeviceType,\"changingDeviceInfo\":_vm.changingDevice,\"stationId\":_vm.pw_id,\"label_width\":_vm.labelWidth},on:{\"modify_success\":_vm.modifyHandle}}),_vm._v(\" \"),_c('ChangeDeviceModal',{attrs:{\"showModal\":_vm.showChangeModal,\"changingDeviceType\":_vm.changingDeviceType,\"changingDeviceInfo\":_vm.changingDevice,\"stationId\":_vm.pw_id,\"is_stored\":_vm.is_stored,\"label_width\":_vm.labelWidth},on:{\"change_success\":_vm.modifyHandle}}),_vm._v(\" \"),_c('DeleteDeviceModal',{attrs:{\"showModal\":_vm.showDeleteModal,\"isHistoryRecord\":_vm.isHistoryRecord,\"changingDeviceType\":_vm.changingDeviceType,\"changingDeviceInfo\":_vm.changingDevice},on:{\"delete_success\":_vm.initListHandle}})],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\n\r\n","import mod from \"-!../../../../../../../node_modules/babel-loader/lib/index.js!../../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./DeleteBatteryModal.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../../../node_modules/babel-loader/lib/index.js!../../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./DeleteBatteryModal.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./DeleteBatteryModal.vue?vue&type=template&id=17512541&scoped=true&\"\nimport script from \"./DeleteBatteryModal.vue?vue&type=script&lang=js&\"\nexport * from \"./DeleteBatteryModal.vue?vue&type=script&lang=js&\"\nimport style0 from \"./DeleteBatteryModal.vue?vue&type=style&index=0&id=17512541&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"17512541\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('gdw-dialog',{attrs:{\"show\":_vm.showDeleteDeviceNotice,\"arrow\":\"\"}},[_c('h2',{attrs:{\"slot\":\"header\"},slot:\"header\"},[_vm._v(_vm._s(_vm.lang.hint))]),_vm._v(\" \"),_c('div',[_c('h3',{staticClass:\"delete_device_title\"},[_vm._v(_vm._s(_vm.lang.dmDeleteDeviceWarning))]),_vm._v(\" \"),_c('p',{staticClass:\"delete_device_content\"},[_vm._v(_vm._s(_vm.lang.dmHandleResultWarning))])]),_vm._v(\" \"),_c('div',{staticClass:\"changeInverterNotice\",staticStyle:{\"padding\":\"10px 15px\",\"border-bottom\":\"1px solid #d3d8e1\",\"border-top\":\"1px solid #fff\"}},[_c('div',{staticClass:\"detail-container\"},[_c('div',{staticClass:\"remove-original-inventer\"},[_c('label',{staticStyle:{\"width\":\"140px\",\"display\":\"inline-block\",\"text-align\":\"right\"}},[_vm._v(_vm._s(_vm.lang.DeviceType)+\":\")]),_vm._v(\" \"),_c('span',[_vm._v(_vm._s(_vm._f(\"formatDeviceType\")(_vm.changingDeviceType)))])]),_vm._v(\" \"),(_vm.isHistoryRecord)?_c('div',[_c('div',{staticClass:\"remove-original-inventer\",attrs:{\"title\":_vm.currentDeviceInfo.oldName||_vm.currentDeviceInfo.oldSn}},[_c('label',{staticStyle:{\"width\":\"140px\",\"display\":\"inline-block\",\"text-align\":\"right\"}},[_vm._v(_vm._s(_vm.lang.template_name)+\":\")]),_vm._v(\" \"),_c('span',[_vm._v(_vm._s(_vm.currentDeviceInfo.oldName || _vm.currentDeviceInfo.oldSn))])])]):_vm._e(),_vm._v(\" \"),(!_vm.isHistoryRecord)?_c('div',[_c('div',{staticClass:\"remove-original-inventer\",attrs:{\"title\":_vm.currentDeviceInfo.name||_vm.currentDeviceInfo.sn}},[_c('label',{staticStyle:{\"width\":\"140px\",\"display\":\"inline-block\",\"text-align\":\"right\"}},[_vm._v(_vm._s(_vm.lang.template_name)+\":\")]),_vm._v(\" \"),_c('span',[_vm._v(_vm._s(_vm.currentDeviceInfo.name || _vm.currentDeviceInfo.sn))])])]):_vm._e(),_vm._v(\" \"),_c('div',{staticClass:\"remove-original-inventer\"},[_c('label',{staticStyle:{\"width\":\"140px\",\"display\":\"inline-block\",\"text-align\":\"right\"}},[_vm._v(_vm._s(_vm.lang.rmDeviceSn)+\":\")]),_vm._v(\" \"),_c('span',[_vm._v(_vm._s(_vm.isHistoryRecord ? _vm.currentDeviceInfo.oldSn : _vm.currentDeviceInfo.sn))])])])]),_vm._v(\" \"),_c('gdw-dialog-button-group',{attrs:{\"slot\":\"button\"},slot:\"button\"},[_c('goodwe-button',{on:{\"click\":_vm.cancelDeleteDevice}},[_vm._v(_vm._s(_vm.lang.cancel))]),_vm._v(\" \"),_c('goodwe-button',{on:{\"click\":_vm.submitDeleteDevice}},[_vm._v(_vm._s(_vm.lang.amBeSure))])],1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\n\r\n\r\n","import mod from \"-!../../../../../../../node_modules/babel-loader/lib/index.js!../../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./UpdateBatteryModal.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../../../node_modules/babel-loader/lib/index.js!../../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./UpdateBatteryModal.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./UpdateBatteryModal.vue?vue&type=template&id=da9f9ed4&scoped=true&\"\nimport script from \"./UpdateBatteryModal.vue?vue&type=script&lang=js&\"\nexport * from \"./UpdateBatteryModal.vue?vue&type=script&lang=js&\"\nimport style0 from \"./UpdateBatteryModal.vue?vue&type=style&index=0&id=da9f9ed4&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"da9f9ed4\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('gdw-dialog',{attrs:{\"show\":_vm.showModal,\"width\":540,\"arrow\":\"\"}},[_c('h2',{attrs:{\"slot\":\"header\"},slot:\"header\"},[_vm._v(_vm._s(_vm.modalTitleMap[_vm.changingDeviceType]))]),_vm._v(\" \"),_c('div',{staticClass:\"changeInverterNotice\",staticStyle:{\"padding\":\"10px 15px\",\"border-bottom\":\"1px solid #d3d8e1\",\"border-top\":\"1px solid #fff\"}},[_c('el-form',{ref:\"updateDeviceDialog\",staticClass:\"updateDeviceDialog\",attrs:{\"model\":_vm.currentDeviceInfo,\"rules\":_vm.deviceRules,\"label-width\":_vm.label_width}},[_c('el-form-item',{attrs:{\"label\":_vm.lang.template_name,\"prop\":\"name\"}},[_c('el-input',{attrs:{\"maxlength\":30,\"placeholder\":_vm.lang.enterdevicenametip},model:{value:(_vm.currentDeviceInfo.name),callback:function ($$v) {_vm.$set(_vm.currentDeviceInfo, \"name\", $$v)},expression:\"currentDeviceInfo.name\"}})],1),_vm._v(\" \"),_c('el-form-item',{attrs:{\"label\":\"SN\",\"prop\":\"sn\"}},[_c('el-input',{attrs:{\"maxlength\":30,\"disabled\":\"\",\"placeholder\":_vm.lang.add_dev_sn},model:{value:(_vm.currentDeviceInfo.sn),callback:function ($$v) {_vm.$set(_vm.currentDeviceInfo, \"sn\", $$v)},expression:\"currentDeviceInfo.sn\"}})],1),_vm._v(\" \"),(_vm.changingDeviceType === _vm.DEVICE_TPYE_BATTERY)?_c('el-form-item',{attrs:{\"label\":_vm.lang.Batteryinfo_ModuleNUM,\"prop\":\"moduleNum\"}},[_c('el-input',{attrs:{\"maxlength\":2,\"placeholder\":_vm.lang.Batteryinfo_ModuleNUM_tip2},model:{value:(_vm.currentDeviceInfo.moduleNum),callback:function ($$v) {_vm.$set(_vm.currentDeviceInfo, \"moduleNum\", $$v)},expression:\"currentDeviceInfo.moduleNum\"}})],1):_vm._e()],1)],1),_vm._v(\" \"),_c('gdw-dialog-button-group',{attrs:{\"slot\":\"button\"},slot:\"button\"},[_c('goodwe-button',{on:{\"click\":_vm.cancleUpdateInput}},[_vm._v(_vm._s(_vm.lang.cancel))]),_vm._v(\" \"),_c('goodwe-button',{on:{\"click\":_vm.submitUpdateDevice}},[_vm._v(_vm._s(_vm.lang.amBeSure))])],1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\n\r\n","import mod from \"-!../../../../../../../node_modules/babel-loader/lib/index.js!../../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ChangeBatteryModal.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../../../node_modules/babel-loader/lib/index.js!../../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ChangeBatteryModal.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./ChangeBatteryModal.vue?vue&type=template&id=a03cbdf8&scoped=true&\"\nimport script from \"./ChangeBatteryModal.vue?vue&type=script&lang=js&\"\nexport * from \"./ChangeBatteryModal.vue?vue&type=script&lang=js&\"\nimport style0 from \"./ChangeBatteryModal.vue?vue&type=style&index=0&id=a03cbdf8&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"a03cbdf8\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[_c('gdw-dialog',{attrs:{\"show\":_vm.showChangeBattery,\"width\":540,\"arrow\":\"\"}},[_c('h2',{attrs:{\"slot\":\"header\"},slot:\"header\"},[_vm._v(_vm._s(_vm.lang.rmTip))]),_vm._v(\" \"),_c('div',{staticClass:\"changeInverterNotice\",staticStyle:{\"padding\":\"10px 15px\",\"border-bottom\":\"1px solid #d3d8e1\",\"border-top\":\"1px solid #fff\"}},[_c('div',{staticClass:\"detail-container\"},[_c('div',{staticClass:\"detail-title\"},[_vm._v(_vm._s(_vm.lang.original_devic))]),_vm._v(\" \"),_c('div',{staticClass:\"original-inventer\"},[_c('span',[_vm._v(_vm._s(_vm.lang.template_name)+\" :\")]),_vm._v(\" \"),_c('span',[_vm._v(_vm._s(_vm.currentDeviceInfo.name||_vm.currentDeviceInfo.sn))])]),_vm._v(\" \"),_c('div',{staticClass:\"original-inventer\",style:({marginBottom: _vm.changingDeviceType === _vm.DEVICE_TPYE_BATTERY? '0':'12px'})},[_c('span',[_vm._v(\"SN :\")]),_vm._v(\" \"),_c('span',[_vm._v(_vm._s(_vm.currentDeviceInfo.sn))])]),_vm._v(\" \"),(_vm.changingDeviceType === _vm.DEVICE_TPYE_BATTERY)?_c('div',{staticClass:\"original-inventer\",staticStyle:{\"margin-bottom\":\"12px\"}},[_c('span',[_vm._v(_vm._s(_vm.lang.Batteryinfo_ModuleNUM)+\" :\")]),_vm._v(\" \"),_c('span',[_vm._v(_vm._s(_vm.currentDeviceInfo.moduleNum))])]):_vm._e()]),_vm._v(\" \"),_c('div',{staticClass:\"detail-title\",staticStyle:{\"height\":\"48px\",\"line-height\":\"48px\"}},[_vm._v(_vm._s(_vm.lang.new_divice))]),_vm._v(\" \"),_c('el-form',{ref:\"changeBatteryDialog\",staticClass:\"changeBatteryDialog\",attrs:{\"model\":_vm.newBattery,\"rules\":_vm.deviceRules,\"label-width\":_vm.label_width}},[_c('el-form-item',{attrs:{\"label\":_vm.lang.template_name,\"prop\":\"name\"}},[_c('el-input',{attrs:{\"maxlength\":30,\"placeholder\":_vm.lang.enterdevicenametip},model:{value:(_vm.newBattery.name),callback:function ($$v) {_vm.$set(_vm.newBattery, \"name\", $$v)},expression:\"newBattery.name\"}})],1),_vm._v(\" \"),_c('el-form-item',{attrs:{\"label\":\"SN\",\"prop\":\"sn\"}},[_c('el-input',{attrs:{\"maxlength\":30,\"placeholder\":_vm.lang.add_dev_sn},model:{value:(_vm.newBattery.sn),callback:function ($$v) {_vm.$set(_vm.newBattery, \"sn\", $$v)},expression:\"newBattery.sn\"}})],1),_vm._v(\" \"),_c('el-form-item',{attrs:{\"label\":_vm.lang.uppcase_note,\"prop\":\"memo\"}},[_c('el-input',{attrs:{\"maxlength\":30,\"placeholder\":_vm.lang.dmEnterRemark},model:{value:(_vm.newBattery.memo),callback:function ($$v) {_vm.$set(_vm.newBattery, \"memo\", $$v)},expression:\"newBattery.memo\"}})],1)],1)],1),_vm._v(\" \"),_c('gdw-dialog-button-group',{attrs:{\"slot\":\"button\"},slot:\"button\"},[_c('goodwe-button',{on:{\"click\":_vm.cancleChangeInverterInput}},[_vm._v(_vm._s(_vm.lang.cancel))]),_vm._v(\" \"),_c('goodwe-button',{on:{\"click\":_vm.submitChangeDevice}},[_vm._v(_vm._s(_vm.lang.amBeSure))])],1)],1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../../../../node_modules/babel-loader/lib/index.js!../../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AddBatteryModule.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../../../node_modules/babel-loader/lib/index.js!../../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AddBatteryModule.vue?vue&type=script&lang=js&\"","\r\n","import { render, staticRenderFns } from \"./AddBatteryModule.vue?vue&type=template&id=327457c8&\"\nimport script from \"./AddBatteryModule.vue?vue&type=script&lang=js&\"\nexport * from \"./AddBatteryModule.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('gdw-dialog',{staticClass:\"add-device-dislog\",attrs:{\"show\":_vm.showModal,\"width\":500,\"arrow\":\"\"}},[_c('h2',{attrs:{\"slot\":\"header\"},slot:\"header\"},[_vm._v(_vm._s(_vm.lang.Batteryinfo_Add_Battery_Modules))]),_vm._v(\" \"),_c('div',{staticStyle:{\"margin\":\"10px 15px 0\",\"border-bottom\":\"1px solid #d3d8e1\",\"border-top\":\"1px solid #fff\"}},[_c('el-form',{ref:\"newBatteryModuleRef\",attrs:{\"model\":_vm.newBatteryModule,\"rules\":_vm.deviceRules,\"label-width\":_vm.label_width}},[_c('el-form-item',{attrs:{\"label\":_vm.lang.template_name,\"prop\":\"name\"}},[_c('el-input',{attrs:{\"maxlength\":30,\"placeholder\":_vm.lang.Batteryinfo_Module_nametip},model:{value:(_vm.newBatteryModule.name),callback:function ($$v) {_vm.$set(_vm.newBatteryModule, \"name\", $$v)},expression:\"newBatteryModule.name\"}})],1),_vm._v(\" \"),_c('el-form-item',{attrs:{\"label\":_vm.lang.SN,\"prop\":\"sn\"}},[_c('el-input',{attrs:{\"maxlength\":18,\"placeholder\":_vm.lang.add_dev_sn},model:{value:(_vm.newBatteryModule.sn),callback:function ($$v) {_vm.$set(_vm.newBatteryModule, \"sn\", $$v)},expression:\"newBatteryModule.sn\"}})],1)],1)],1),_vm._v(\" \"),_c('gdw-dialog-button-group',{attrs:{\"slot\":\"button\"},slot:\"button\"},[_c('goodwe-button',{on:{\"click\":_vm.cancleSubmit}},[_vm._v(_vm._s(_vm.lang.cancel))]),_vm._v(\" \"),_c('goodwe-button',{on:{\"click\":_vm.submitBatteryModule}},[_vm._v(_vm._s(_vm.lang.amBeSure))])],1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../../../../node_modules/babel-loader/lib/index.js!./CustomTableRow.js?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../../../node_modules/babel-loader/lib/index.js!./CustomTableRow.js?vue&type=script&lang=js&\"","import DeleteBatteryModal from '../DialogModals/DeleteBatteryModal.vue';\nimport UpdateBatteryModal from '../DialogModals/UpdateBatteryModal.vue';\nimport ChangeBatteryModal from '../DialogModals/ChangeBatteryModal.vue';\nimport AddBatteryModule from '../../../../../GoodweAddDevice/src/components/AddGwBattery/AddBatteryModal/AddBatteryModule.vue';\nimport {DEVICE_TPYE_BATTERY, DEVICE_TPYE_BATTERY_MODULE} from '../../../relativeFunUtl';\nexport default {\n name: 'CustomTableRow',\n props: {\n stationId:{ type: String, required: true }, // 电站ID\n listTitleWidth: { type: Array, required: true }, // 列表table 标题宽度\n labelWidth: { type: String, required: true }, // form表单label宽度\n },\n components: {UpdateBatteryModal, DeleteBatteryModal, ChangeBatteryModal, AddBatteryModule},\n data() {\n return {\n lang: Goodwe.Ops.Resouces.Front,\n canAdd: canAdd, // 是否有新增权限\n canUpdate: canUpdate, // 是否有修改权限\n canDelete: canDelete, // 是否有删除权限\n pw_id: this.stationId, // 电站ID\n cusTableTitle: [\n {label: '', key: '0', width: 48}, // 空栏\n {label: lang.template_name, key: '1', width: this.listTitleWidth[0]},\n {label: lang.SN, key: '2', width: this.listTitleWidth[1]},\n {label: lang.Batteryinfo_ModuleNUM, key: '3', width: this.listTitleWidth[2]},\n {label: lang.Batteryinfo_Module_Added, key: '4', width: this.listTitleWidth[3]},\n {label: lang.pssmTurnonTime, key: '5', width: this.listTitleWidth[4]},\n {label: lang.pssmHandle, key: '6', width: this.listTitleWidth[5]}\n ],\n activeName: '',\n BatteryPage: { page_index: 1, page_size: 6, record: 0 }, // 分页\n showUpdateBattery: false, // 修改电池模态框\n showChangeBattery: false, // 更换电池模态框\n showDeleteBattery: false, // 删除电池模态框\n showAddBatteryModule: false, // 新增电池模组弹出框\n changingDeviceType: DEVICE_TPYE_BATTERY, // 当前修改的设备类型\n changingDevice: {}, // 当前修改的电池信息\n batteryList: [],\n currentBattery: '', // 当前需要添加电池模组的电池SN\n }\n },\n computed: {\n computedTableData() {\n var d = _.cloneDeep(this.batteryList);\n if (!d) d = [];\n return d\n }\n },\n filters: {\n formatDate:function(v){\n if (!v && v != \"0\") {\n return \"-\"\n } else {\n return dayjs(v).format(dateFormatReplace(\"day\"))\n }\n },\n },\n methods: {\n /** 展开或者关闭时 */\n handleChange(val) {\n this.resetSomeData();\n if(val) {\n this.activeName = val;\n }\n },\n /** 处理电池箱信息 */\n handleDevice(e,item,type) {\n e.stopPropagation(); // 阻止冒泡\n this.resetSomeData();\n this.changingDevice = item;\n this.changingDeviceType = DEVICE_TPYE_BATTERY;\n switch (type) {\n case 'modify': {\n setTimeout(() => {\n this.showUpdateBattery = true;\n }, 50);\n break;\n }\n case 'replace': {\n let _this = this;\n goodwe._confirm({\n title: Goodwe.Ops.Resouces.Front.rmTip,\n template:`

${lang.Batteryinfo_BatteryModifuy_PCtip}

`,\n buttons:[lang.ok,lang.cancel],\n ok:function(){\n this.close();\n setTimeout(() => {\n _this.showChangeBattery = true;\n }, 50);\n },\n cancel:function () { }\n })\n break;\n }\n case 'delete': {\n if(item.moduleAdded>0) {\n let _this = this;\n goodwe._confirm({\n title: Goodwe.Ops.Resouces.Front.rmTip,\n template:`

${lang.Batteryinfo_BatteryDELtip1}

`,\n buttons:[lang.ok,lang.cancel],\n ok:function(){\n this.close();\n setTimeout(() => {\n _this.showDeleteBattery = true;\n }, 50);\n },\n cancel:function () { }\n })\n } else {\n this.showDeleteBattery = true;\n }\n break;\n }\n }\n },\n /** 处理电池模组信息 */\n handleBattery(i, j, type) {\n this.resetSomeData();\n this.changingDevice = this.batteryList[i]['batteryModule'][j];\n this.changingDevice['batterySN'] = this.batteryList[i]['batterySN'];\n this.changingDeviceType = DEVICE_TPYE_BATTERY_MODULE;\n switch (type) {\n case 'delete': {\n let _this = this;\n goodwe._confirm({\n title: Goodwe.Ops.Resouces.Front.rmTip,\n template:`

${lang.Batteryinfo_BatteryDELtip2}

`,\n buttons:[lang.ok,lang.cancel],\n ok:function(){\n this.close();\n setTimeout(() => {\n _this.showDeleteBattery = true;\n }, 50);\n },\n cancel:function () { }\n })\n break;\n }\n case 'modify': {\n setTimeout(() => {\n this.showUpdateBattery = true;\n }, 50);\n break;\n }\n case 'replace': {\n let _this = this;\n goodwe._confirm({\n title: Goodwe.Ops.Resouces.Front.rmTip,\n template:`

${lang.Batteryinfo_BatteryModifuy_PCtip}

`,\n buttons:[lang.ok,lang.cancel],\n ok:function(){\n this.close();\n setTimeout(() => {\n _this.showChangeBattery = true;\n }, 50);\n },\n cancel:function () { }\n })\n break; \n }\n default:\n break;\n }\n },\n /** 新增电池模组 */\n addBatteryModule(item,i) {\n this.resetSomeData();\n this.changingDeviceType = DEVICE_TPYE_BATTERY_MODULE;\n this.currentBattery = item.batterySN || '';\n if(this.currentBattery) {\n this.showAddBatteryModule = true;\n }\n },\n /** 新增电池模组后 */\n addModuleHandle(res) {\n this.resetSomeData();\n if(res.flag) {\n this.handleBatteryPageChange(this.BatteryPage.page_index);\n }\n },\n /** 更新/更换设备成功后 */\n modifyHandle(flag) {\n this.resetSomeData();\n if(flag) {\n this.handleBatteryPageChange(this.BatteryPage.page_index);\n }\n },\n /** 重置页面电池列表数据 */\n initList(flag) {\n this.resetSomeData();\n if(flag) {\n setTimeout(() => {\n this.getBatteryList();\n }, 0);\n }\n },\n /** 切换页码 */\n handleBatteryPageChange(page) {\n this.resetSomeData();\n this.BatteryPage.page_index = page;\n setTimeout(() => {\n this.getBatteryList();\n }, 0);\n },\n /** 调用接口, 获取电池列表 */\n getBatteryList() {\n loading.showLoading();\n common.post(\"/v3/Battery/GetBatteryModuleListForWeb\", \n { pwid: this.pw_id,\n pageIndex: this.BatteryPage.page_index,\n pageSize: this.BatteryPage.page_size,\n }).success(function (res) {\n this.batteryList = _.cloneDeep(res.data.list);\n this.BatteryPage.record = res.data.record;\n }.bind(this)).all(function () {\n loading.disLoading();\n }.bind(this))\n },\n /** 重置某些默认值 */\n resetSomeData() {\n this.showDeleteBattery = false;\n this.showChangeBattery = false;\n this.showUpdateBattery = false;\n this.showAddBatteryModule = false;\n this.changingDeviceType = DEVICE_TPYE_BATTERY;\n this.currentBattery = '';\n }\n },\n mounted() {\n this.getBatteryList(); \n }\n}","import { render, staticRenderFns } from \"./CustomTableRow.vue?vue&type=template&id=577bc800&scoped=true&\"\nimport script from \"./CustomTableRow.js?vue&type=script&lang=js&\"\nexport * from \"./CustomTableRow.js?vue&type=script&lang=js&\"\nimport style0 from \"./CustomTableRow.scss?vue&type=style&index=0&id=577bc800&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"577bc800\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[_c('div',{staticClass:\"custom-table-title\"},_vm._l((_vm.cusTableTitle),function(item){return _c('div',{key:item.key,staticClass:\"cus-title_item\",style:({width: item.width + 'px'})},[_vm._v(\"\\n \"+_vm._s(item.label)+\"\\n \")])}),0),_vm._v(\" \"),(_vm.computedTableData.length !== 0)?_c('div',[_c('el-collapse',{staticClass:\"custom-collapse\",attrs:{\"accordion\":\"\"},on:{\"change\":_vm.handleChange},model:{value:(_vm.activeName),callback:function ($$v) {_vm.activeName=$$v},expression:\"activeName\"}},_vm._l((_vm.computedTableData),function(item,index){return _c('div',{key:item.batterySN},[(item.moduleNum !== '0' && item.moduleNum !== '-')?_c('el-collapse-item',{attrs:{\"name\":item.batterySN}},[_c('template',{slot:\"title\"},[_c('div',{staticStyle:{\"display\":\"flex\"}},[_c('div',{staticClass:\"extend-item\",style:({width:((_vm.listTitleWidth[0]) + \"px\")})},[_vm._v(_vm._s(item.batteryName))]),_vm._v(\" \"),_c('div',{staticClass:\"extend-item\",style:({width:((_vm.listTitleWidth[1]) + \"px\")})},[_vm._v(_vm._s(item.batterySN))]),_vm._v(\" \"),_c('div',{staticClass:\"extend-item\",style:({width:((_vm.listTitleWidth[2]) + \"px\")})},[_vm._v(_vm._s(item.moduleNum))]),_vm._v(\" \"),_c('div',{staticClass:\"extend-item\",style:({width:((_vm.listTitleWidth[3]) + \"px\")})},[_vm._v(_vm._s(item.moduleAdded))]),_vm._v(\" \"),_c('div',{staticClass:\"extend-item\",style:({width:((_vm.listTitleWidth[4]) + \"px\")})},[_vm._v(_vm._s(_vm._f(\"formatDate\")(item.creationDate)))]),_vm._v(\" \"),_c('div',{staticClass:\"extend-item\",style:({width:((_vm.listTitleWidth[5]) + \"px\")})},[(_vm.canUpdate)?_c('el-button',{staticClass:\"update-btn\",attrs:{\"size\":\"small\",\"type\":\"text\"},on:{\"click\":function($event){return _vm.handleDevice($event,item,'modify')}}},[_vm._v(\"\\n \"+_vm._s(_vm.lang.Modify)+\"\\n \")]):_vm._e(),_vm._v(\" \"),(_vm.canUpdate)?_c('el-button',{staticClass:\"change-btn\",attrs:{\"size\":\"mini\",\"type\":\"text\"},on:{\"click\":function($event){return _vm.handleDevice($event,item,'replace')}}},[_vm._v(\"\\n \"+_vm._s(_vm.lang.Replace)+\"\\n \")]):_vm._e(),_vm._v(\" \"),(_vm.canDelete)?_c('el-button',{staticClass:\"delete-btn\",attrs:{\"size\":\"mini\",\"type\":\"text\"},on:{\"click\":function($event){return _vm.handleDevice($event,item,'delete')}}},[_vm._v(\"\\n \"+_vm._s(_vm.lang.Delete)+\"\\n \")]):_vm._e()],1)])]),_vm._v(\" \"),_c('div',{staticClass:\"collapse-cus-content\"},[(item.batteryModule && item.batteryModule.length > 0)?_c('div',{staticClass:\"battert-list\"},_vm._l((item.batteryModule),function(battery,i){return _c('div',{key:i,staticClass:\"battery-module-item\"},[_c('div',{staticClass:\"item-num\"},[_vm._v(_vm._s(i+1))]),_vm._v(\" \"),_c('div',{staticClass:\"extend-item-bat\",style:({width:((_vm.listTitleWidth[0]) + \"px\")})},[_vm._v(_vm._s(battery.batteryModuleName))]),_vm._v(\" \"),_c('div',{staticClass:\"extend-item-bat\",style:({width:((_vm.listTitleWidth[1]) + \"px\")})},[_vm._v(_vm._s(battery.batteryModuleSn))]),_vm._v(\" \"),_c('div',{staticClass:\"extend-item-bat\",style:({width:((_vm.listTitleWidth[5]) + \"px\")})},[_vm._v(_vm._s(_vm._f(\"formatDate\")(battery.creationDate)))]),_vm._v(\" \"),_c('div',{staticClass:\"extend-item-bat\",style:({width:((_vm.listTitleWidth[5]) + \"px\")})},[(_vm.canUpdate)?_c('el-button',{staticClass:\"update-btn\",attrs:{\"type\":\"text\",\"size\":\"small\"},on:{\"click\":function($event){return _vm.handleBattery(index, i, 'modify')}}},[_vm._v(\"\\n \"+_vm._s(_vm.lang.Modify)+\"\\n \")]):_vm._e(),_vm._v(\" \"),(_vm.canUpdate)?_c('el-button',{staticClass:\"change-btn\",attrs:{\"size\":\"mini\",\"type\":\"text\"},on:{\"click\":function($event){return _vm.handleBattery(index, i, 'replace')}}},[_vm._v(\"\\n \"+_vm._s(_vm.lang.Replace)+\"\\n \")]):_vm._e(),_vm._v(\" \"),(_vm.canDelete)?_c('el-button',{staticClass:\"delete-btn\",attrs:{\"size\":\"mini\",\"type\":\"text\"},on:{\"click\":function($event){return _vm.handleBattery(index, i, 'delete')}}},[_vm._v(\"\\n \"+_vm._s(_vm.lang.Delete)+\"\\n \")]):_vm._e()],1)])}),0):_vm._e(),_vm._v(\" \"),((Number(item.moduleAdded) < Number(item.moduleNum)) && _vm.canAdd)?_c('div',{staticClass:\"add-another-battery\",on:{\"click\":function($event){return _vm.addBatteryModule(item, index)}}},[_vm._v(\"\\n + \"+_vm._s(_vm.lang.Batteryinfo_Add_Battery_Module)+\"\\n \")]):_vm._e()])],2):_vm._e(),_vm._v(\" \"),(item.moduleNum === '0' || item.moduleNum === '-')?_c('div',{staticClass:\"cus-no-total\"},[_c('div',{staticClass:\"extend-item\",style:({width:((_vm.listTitleWidth[0]) + \"px\")})},[_vm._v(_vm._s(item.batteryName))]),_vm._v(\" \"),_c('div',{staticClass:\"extend-item\",style:({width:((_vm.listTitleWidth[1]) + \"px\")})},[_vm._v(_vm._s(item.batterySN))]),_vm._v(\" \"),_c('div',{staticClass:\"extend-item\",style:({width:((_vm.listTitleWidth[2]) + \"px\")})},[_vm._v(_vm._s(item.moduleNum))]),_vm._v(\" \"),_c('div',{staticClass:\"extend-item\",style:({width:((_vm.listTitleWidth[3]) + \"px\")})},[_vm._v(_vm._s(item.moduleAdded))]),_vm._v(\" \"),_c('div',{staticClass:\"extend-item\",style:({width:((_vm.listTitleWidth[4]) + \"px\")})},[_vm._v(_vm._s(_vm._f(\"formatDate\")(item.creationDate)))]),_vm._v(\" \"),_c('div',{staticClass:\"extend-item\",style:({width:((_vm.listTitleWidth[5]) + \"px\")})},[(_vm.canUpdate)?_c('el-button',{staticClass:\"update-btn\",attrs:{\"type\":\"text\",\"size\":\"small\"},on:{\"click\":function($event){return _vm.handleDevice($event,item,'modify')}}},[_vm._v(\"\\n \"+_vm._s(_vm.lang.Modify)+\"\\n \")]):_vm._e(),_vm._v(\" \"),(_vm.canUpdate)?_c('el-button',{staticClass:\"change-btn\",attrs:{\"size\":\"mini\",\"type\":\"text\"},on:{\"click\":function($event){return _vm.handleDevice($event,item,'replace')}}},[_vm._v(\"\\n \"+_vm._s(_vm.lang.Replace)+\"\\n \")]):_vm._e(),_vm._v(\" \"),(_vm.canDelete)?_c('el-button',{staticClass:\"delete-btn\",attrs:{\"size\":\"mini\",\"type\":\"text\"},on:{\"click\":function($event){return _vm.handleDevice($event,item,'delete')}}},[_vm._v(\"\\n \"+_vm._s(_vm.lang.Delete)+\"\\n \")]):_vm._e()],1)]):_vm._e()],1)}),0)],1):_vm._e(),_vm._v(\" \"),(_vm.computedTableData.length === 0)?_c('div',{staticClass:\"battery-no-data\"},[_vm._v(\"\\n \"+_vm._s(_vm.lang.siNoDataNow)+\"\\n \")]):_vm._e(),_vm._v(\" \"),_c('div',{staticClass:\"paging\"},[_c('gdw-pager',{attrs:{\"current-page\":_vm.BatteryPage.page_index,\"page-sizes\":[_vm.BatteryPage.page_size],\"layout\":\"prev, pager, next, sizes, total, jumper\",\"total\":_vm.BatteryPage.record},on:{\"current-change\":_vm.handleBatteryPageChange}})],1),_vm._v(\" \"),_c('DeleteBatteryModal',{attrs:{\"showModal\":_vm.showDeleteBattery,\"isHistoryRecord\":false,\"changingDeviceType\":_vm.changingDeviceType,\"changingDeviceInfo\":_vm.changingDevice},on:{\"delete_success\":_vm.initList}}),_vm._v(\" \"),_c('UpdateBatteryModal',{attrs:{\"showModal\":_vm.showUpdateBattery,\"changingDeviceType\":_vm.changingDeviceType,\"changingDeviceInfo\":_vm.changingDevice,\"stationId\":_vm.pw_id,\"label_width\":_vm.labelWidth},on:{\"modify_success\":_vm.modifyHandle}}),_vm._v(\" \"),_c('ChangeBatteryModal',{attrs:{\"showModal\":_vm.showChangeBattery,\"changingDeviceType\":_vm.changingDeviceType,\"changingDeviceInfo\":_vm.changingDevice,\"stationId\":_vm.pw_id,\"label_width\":_vm.labelWidth},on:{\"change_success\":_vm.modifyHandle}}),_vm._v(\" \"),_c('AddBatteryModule',{attrs:{\"showModal\":_vm.showAddBatteryModule,\"stationId\":_vm.pw_id,\"label_width\":_vm.labelWidth,\"battery_sn\":_vm.currentBattery},on:{\"add_module_handle\":_vm.addModuleHandle}})],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../../../../node_modules/babel-loader/lib/index.js!./BatteryReplacement.js?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../../../node_modules/babel-loader/lib/index.js!./BatteryReplacement.js?vue&type=script&lang=js&\"","import DeleteBatteryModal from '../DialogModals/DeleteBatteryModal.vue';\r\nimport {DEVICE_TPYE_BATTERY, DEVICE_TPYE_BATTERY_MODULE} from '../../../relativeFunUtl';\r\nexport default {\r\n name: 'BatteryReplacement',\r\n props: {\r\n stationId:{ type: String, required: true }, // 电站ID\r\n },\r\n components: { DeleteBatteryModal },\r\n data() {\r\n return {\r\n lang: Goodwe.Ops.Resouces.Front,\r\n canDelete: canDelete, // 是否有删除权限\r\n DEVICE_TPYE_BATTERY, DEVICE_TPYE_BATTERY_MODULE,\r\n batteryHistoryPage: { page_index: 1, page_size: 6, record: 0 },\r\n batteryModulePage: { page_index: 1, page_size: 6, record: 0 },\r\n batteryHistoryList: [],\r\n batteryModuleList: [],\r\n showDeleteBattery: false, // 删除电池模态框\r\n changingDeviceType: DEVICE_TPYE_BATTERY, // 当前修改的设备类型\r\n changingDevice: {}, // 当前修改的电池信息\r\n initCount: 0, // 页面将要调用接口数 \r\n }\r\n },\r\n filters: {\r\n formatData: function (v) {\r\n if (!v && v != \"0\") {\r\n return \"-\"\r\n } else {\r\n return v\r\n }\r\n },\r\n formatDate:function(v){\r\n if (!v && v != \"0\") {\r\n return \"-\"\r\n } else {\r\n return dayjs(v).format(dateFormatReplace(\"day\"))\r\n }\r\n },\r\n },\r\n computed: {\r\n computedBatteryHistory() {\r\n var d = _.cloneDeep(this.batteryHistoryList);\r\n if (!d) d = [];\r\n var data = [];\r\n d.forEach(function (item) {\r\n data.push({\r\n no: item.number,\r\n oldName: item.originalBattery,\r\n oldSn: item.originalSN,\r\n newName: item.newBattery,\r\n newSn: item.newSN,\r\n note: item.note,\r\n replacementDate: item.replacementDate,\r\n id: item.batteryId\r\n })\r\n });\r\n return data\r\n },\r\n computedModuleHistory() {\r\n var d = _.cloneDeep(this.batteryModuleList);\r\n if (!d) d = [];\r\n var data = [];\r\n d.forEach(function (item) {\r\n data.push({\r\n no: item.number,\r\n oldName: item.originalName,\r\n oldSn: item.originalSn,\r\n newName: item.newName,\r\n newSn: item.newSn,\r\n note: item.note,\r\n replacementDate: item.createDate,\r\n id: item.batteryModuleId\r\n })\r\n });\r\n return data\r\n }\r\n },\r\n methods: {\r\n /** 删除电池替换列表后执行刷新 */\r\n initList(flag) {\r\n this.resetSomeData();\r\n if(flag) {\r\n if(this.changingDeviceType === DEVICE_TPYE_BATTERY) {\r\n this.handleBatteryPageChange(this.batteryHistoryPage.page_index);\r\n } else {\r\n this.handleBatteryModulePageChange(this.batteryModulePage.page_index);\r\n }\r\n }\r\n },\r\n /** 删除替换记录 */\r\n handleDevice(item, type) {\r\n this.changingDevice = item;\r\n this.changingDeviceType = type;\r\n setTimeout(() => {\r\n this.showDeleteBattery = true;\r\n }, 30);\r\n },\r\n /** 获取电池箱更换历史纪录 */\r\n getBatteryReplaceList () {\r\n this.initCount = this.initCount + 1;\r\n common.post(\"v3/Battery/GetBatteryReplaceList\", \r\n { pwid: this.stationId, \r\n pageIndex: this.batteryHistoryPage.page_index,\r\n pageSize: this.batteryHistoryPage.page_size,\r\n }).success(function (res) {\r\n this.batteryHistoryList = res.data.list;\r\n this.batteryHistoryPage.record = res.data.record;\r\n }.bind(this)).all(function () {\r\n this.ajaxSuccessCallback()\r\n }.bind(this))\r\n },\r\n /** 获取电池模组更换历史数据 */\r\n getBatteryModuleReplaceList () {\r\n this.initCount = this.initCount + 1;\r\n common.post(\"v3/Battery/GetBatteryModuleReplaceList\", {\r\n pwid: this.stationId,\r\n pageIndex: this.batteryModulePage.page_index,\r\n pageSize: this.batteryModulePage.page_size, \r\n }).success(function (res) {\r\n this.batteryModuleList = res.data.list;\r\n this.batteryModulePage.record = res.data.record;\r\n }.bind(this)).all(function () {\r\n this.ajaxSuccessCallback()\r\n }.bind(this))\r\n },\r\n /** 切换电池更换历史记录页码 */\r\n handleBatteryPageChange(page) {\r\n this.resetSomeData();\r\n this.batteryHistoryPage.page_index = page;\r\n loading.showLoading();\r\n this.getBatteryReplaceList();\r\n },\r\n /** 切换电池模组更换历史记录页码 */\r\n handleBatteryModulePageChange(page) {\r\n this.resetSomeData();\r\n this.batteryModulePage.page_index = page;\r\n loading.showLoading();\r\n this.getBatteryModuleReplaceList();\r\n },\r\n /** 获取页面初始化数据 */\r\n getPageData() {\r\n loading.showLoading();\r\n this.getBatteryReplaceList();\r\n this.getBatteryModuleReplaceList();\r\n },\r\n /** 重置某些数据 */\r\n resetSomeData() {\r\n this.showDeleteBattery = false;\r\n },\r\n /** 接口全部调用完毕后 */\r\n ajaxSuccessCallback() {\r\n this.initCount = this.initCount - 1;\r\n if(this.initCount === 0) {\r\n loading.disLoading();\r\n }\r\n },\r\n },\r\n mounted() {\r\n this.getPageData();\r\n }\r\n}","import { render, staticRenderFns } from \"./BatteryReplacement.vue?vue&type=template&id=3acb727d&scoped=true&\"\nimport script from \"./BatteryReplacement.js?vue&type=script&lang=js&\"\nexport * from \"./BatteryReplacement.js?vue&type=script&lang=js&\"\nimport style0 from \"./BatteryReplacement.scss?vue&type=style&index=0&id=3acb727d&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"3acb727d\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[_c('div',{staticClass:\"replace-title\"},[_vm._v(_vm._s(_vm.lang.Batteryinfo_Replacement_battery))]),_vm._v(\" \"),_c('el-table',{attrs:{\"header-cell-style\":{height:'42px',background:'#38474E',color:'#fff'},\"stripe\":\"\",\"data\":_vm.computedBatteryHistory}},[_c('el-table-column',{attrs:{\"prop\":\"no\",\"label\":_vm.lang.replace_history_number,\"show-overflow-tooltip\":\"\",\"width\":\"90px\"},scopedSlots:_vm._u([{key:\"default\",fn:function(scope){return [_vm._v(\"\\n \"+_vm._s(scope.row.no)+\"\\n \")]}}])}),_vm._v(\" \"),_c('el-table-column',{attrs:{\"prop\":\"oldName\",\"label\":_vm.lang.original_devic,\"show-overflow-tooltip\":\"\"},scopedSlots:_vm._u([{key:\"default\",fn:function(scope){return [_vm._v(\"\\n \"+_vm._s(scope.row.oldName || scope.row.oldSn || '-')+\"\\n \")]}}])}),_vm._v(\" \"),_c('el-table-column',{attrs:{\"prop\":\"oldSn\",\"label\":_vm.lang.dmOriginDevice+' S/N',\"show-overflow-tooltip\":\"\"},scopedSlots:_vm._u([{key:\"default\",fn:function(scope){return [_vm._v(\"\\n \"+_vm._s(scope.row.oldSn)+\"\\n \")]}}])}),_vm._v(\" \"),_c('el-table-column',{attrs:{\"prop\":\"newName\",\"label\":_vm.lang.new_divice,\"show-overflow-tooltip\":\"\"},scopedSlots:_vm._u([{key:\"default\",fn:function(scope){return [_vm._v(\"\\n \"+_vm._s(scope.row.newName || scope.row.newSn || '-')+\"\\n \")]}}])}),_vm._v(\" \"),_c('el-table-column',{attrs:{\"prop\":\"newSn\",\"label\":_vm.lang.new_devic_sn,\"show-overflow-tooltip\":\"\"},scopedSlots:_vm._u([{key:\"default\",fn:function(scope){return [_vm._v(\"\\n \"+_vm._s(scope.row.newSn)+\"\\n \")]}}])}),_vm._v(\" \"),_c('el-table-column',{attrs:{\"prop\":\"replacementDate\",\"label\":_vm.lang.replace_time,\"show-overflow-tooltip\":\"\"},scopedSlots:_vm._u([{key:\"default\",fn:function(scope){return [_vm._v(\"\\n \"+_vm._s(_vm._f(\"formatDate\")(scope.row.replacementDate.toString().split(' ')[0]))+\"\\n \")]}}])}),_vm._v(\" \"),_c('el-table-column',{attrs:{\"prop\":\"id\",\"label\":_vm.lang.pssmHandle,\"width\":\"110px\"},scopedSlots:_vm._u([{key:\"default\",fn:function(scope){return [(scope.row.id!='')?_c('div',[(_vm.canDelete)?_c('el-button',{staticClass:\"delete-btn\",staticStyle:{\"color\":\"red\"},attrs:{\"size\":\"mini\",\"type\":\"text\"},on:{\"click\":function($event){return _vm.handleDevice(scope.row, _vm.DEVICE_TPYE_BATTERY)}}},[_vm._v(\"\\n \"+_vm._s(_vm.lang.Delete)+\"\\n \")]):_vm._e()],1):_vm._e(),_vm._v(\" \"),(scope.row.id=='' || !_vm.canDelete)?_c('div',[_vm._v(\" -- \")]):_vm._e()]}}])})],1),_vm._v(\" \"),_c('div',{staticClass:\"paging\",staticStyle:{\"margin-bottom\":\"10px\"}},[_c('gdw-pager',{attrs:{\"current-page\":_vm.batteryHistoryPage.page_index,\"page-sizes\":[_vm.batteryHistoryPage.page_size],\"layout\":\"prev, pager, next, sizes, total, jumper\",\"total\":_vm.batteryHistoryPage.record},on:{\"current-change\":_vm.handleBatteryPageChange}})],1),_vm._v(\" \"),_c('div',{staticStyle:{\"height\":\"24px\",\"background\":\"#eeeeee\",\"margin\":\"0 -10px\"}}),_vm._v(\" \"),_c('div',{staticClass:\"replace-title\",staticStyle:{\"margin-top\":\"10px\"}},[_vm._v(_vm._s(_vm.lang.Batteryinfo_Replacement_battery_module))]),_vm._v(\" \"),_c('el-table',{attrs:{\"header-cell-style\":{height:'42px',background:'#38474E',color:'#fff'},\"stripe\":\"\",\"data\":_vm.computedModuleHistory}},[_c('el-table-column',{attrs:{\"prop\":\"num\",\"label\":_vm.lang.replace_history_number,\"show-overflow-tooltip\":\"\",\"width\":\"90px\"},scopedSlots:_vm._u([{key:\"default\",fn:function(scope){return [_vm._v(\"\\n \"+_vm._s(scope.row.no)+\"\\n \")]}}])}),_vm._v(\" \"),_c('el-table-column',{attrs:{\"prop\":\"oldName\",\"label\":_vm.lang.original_devic,\"show-overflow-tooltip\":\"\"},scopedSlots:_vm._u([{key:\"default\",fn:function(scope){return [_vm._v(\"\\n \"+_vm._s(scope.row.oldName || scope.row.oldSn || '-')+\"\\n \")]}}])}),_vm._v(\" \"),_c('el-table-column',{attrs:{\"prop\":\"oldSn\",\"label\":_vm.lang.dmOriginDevice+' S/N',\"show-overflow-tooltip\":\"\"},scopedSlots:_vm._u([{key:\"default\",fn:function(scope){return [_vm._v(\"\\n \"+_vm._s(scope.row.oldSn)+\"\\n \")]}}])}),_vm._v(\" \"),_c('el-table-column',{attrs:{\"prop\":\"newName\",\"label\":_vm.lang.new_divice,\"show-overflow-tooltip\":\"\"},scopedSlots:_vm._u([{key:\"default\",fn:function(scope){return [_vm._v(\"\\n \"+_vm._s(scope.row.newName || scope.row.newSn || '-')+\"\\n \")]}}])}),_vm._v(\" \"),_c('el-table-column',{attrs:{\"prop\":\"newSn\",\"label\":_vm.lang.new_devic_sn,\"show-overflow-tooltip\":\"\"},scopedSlots:_vm._u([{key:\"default\",fn:function(scope){return [_vm._v(\"\\n \"+_vm._s(scope.row.newSn)+\"\\n \")]}}])}),_vm._v(\" \"),_c('el-table-column',{attrs:{\"prop\":\"changeDate\",\"label\":_vm.lang.replace_time,\"show-overflow-tooltip\":\"\"},scopedSlots:_vm._u([{key:\"default\",fn:function(scope){return [_vm._v(\"\\n \"+_vm._s(_vm._f(\"formatDate\")(scope.row.replacementDate.toString().split(' ')[0]))+\"\\n \")]}}])}),_vm._v(\" \"),_c('el-table-column',{attrs:{\"prop\":\"id\",\"label\":_vm.lang.pssmHandle,\"width\":\"110px\"},scopedSlots:_vm._u([{key:\"default\",fn:function(scope){return [(scope.row.id!='')?_c('div',[(_vm.canDelete)?_c('el-button',{staticClass:\"delete-btn\",staticStyle:{\"color\":\"red\"},attrs:{\"size\":\"mini\",\"type\":\"text\"},on:{\"click\":function($event){return _vm.handleDevice(scope.row, _vm.DEVICE_TPYE_BATTERY_MODULE)}}},[_vm._v(\"\\n \"+_vm._s(_vm.lang.Delete)+\"\\n \")]):_vm._e()],1):_vm._e(),_vm._v(\" \"),(scope.row.id=='' || !_vm.canDelete)?_c('div',[_vm._v(\" -- \")]):_vm._e()]}}])})],1),_vm._v(\" \"),_c('div',{staticClass:\"paging\"},[_c('gdw-pager',{attrs:{\"current-page\":_vm.batteryModulePage.page_index,\"page-sizes\":[_vm.batteryModulePage.page_size],\"layout\":\"prev, pager, next, sizes, total, jumper\",\"total\":_vm.batteryModulePage.record},on:{\"current-change\":_vm.handleBatteryModulePageChange}})],1),_vm._v(\" \"),_c('DeleteBatteryModal',{attrs:{\"showModal\":_vm.showDeleteBattery,\"isHistoryRecord\":true,\"changingDeviceType\":_vm.changingDeviceType,\"changingDeviceInfo\":_vm.changingDevice},on:{\"delete_success\":_vm.initList}})],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../../../node_modules/babel-loader/lib/index.js!./BatteryList.js?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../../node_modules/babel-loader/lib/index.js!./BatteryList.js?vue&type=script&lang=js&\"","import CustomTableRow from './CustomTableRow/CustomTableRow.vue';\r\nimport BatteryReplacement from './BatteryReplacement/BatteryReplacement.vue';\r\nexport default {\r\n name: 'BatteryList',\r\n props: {\r\n stationId:{ type: String, required: true }, // 电站ID\r\n listTitleWidth: { type: Array, required: true }, // 列表table 标题宽度\r\n labelWidth: { type: String, required: true }, // form表单label宽度\r\n },\r\n components: { CustomTableRow, BatteryReplacement },\r\n data: function() {\r\n return {\r\n lang: Goodwe.Ops.Resouces.Front,\r\n pw_id: this.stationId, // 电站ID\r\n labelWidth: this.labelWidth, // form表单label宽度\r\n showBatteryList: true, // 是否展示列表\r\n }\r\n },\r\n watch: {\r\n stationId:function(){\r\n this.pw_id = this.stationId;\r\n },\r\n },\r\n methods: {\r\n /** 切换列表/历史记录 */\r\n changeTab() {\r\n this.showBatteryList = !this.showBatteryList;\r\n },\r\n /** 新增电池成功后刷新页面 */\r\n initListHandle(flag) {\r\n if(this.showBatteryList) {\r\n this.$refs.CustomTableRowRef.initList({flag});\r\n } else {\r\n this.$refs.BatteryReplacementRef.initList({flag});\r\n }\r\n }\r\n },\r\n}","import { render, staticRenderFns } from \"./BatteryList.vue?vue&type=template&id=7a922b4c&scoped=true&\"\nimport script from \"./BatteryList.js?vue&type=script&lang=js&\"\nexport * from \"./BatteryList.js?vue&type=script&lang=js&\"\nimport style0 from \"./BatteryList.scss?vue&type=style&index=0&id=7a922b4c&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"7a922b4c\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[_c('div',{staticClass:\"inverter-operate clearfix\"},[_c('button',{staticClass:\"btn_primary l\",class:{'btn-inactive':!_vm.showBatteryList},on:{\"click\":_vm.changeTab}},[_vm._v(\"\\n \"+_vm._s(_vm.lang.battery)+\"\\n \")]),_vm._v(\" \"),_c('button',{staticClass:\"btn_primary l\",class:{'btn-inactive':_vm.showBatteryList},on:{\"click\":_vm.changeTab}},[_vm._v(\"\\n \"+_vm._s(_vm.lang.changeHistory)+\"\\n \")])]),_vm._v(\" \"),_c('div',{staticClass:\"inverter-detail body-contain\"},[(_vm.showBatteryList)?_c('CustomTableRow',{ref:\"CustomTableRowRef\",attrs:{\"stationId\":_vm.stationId,\"listTitleWidth\":_vm.listTitleWidth,\"labelWidth\":_vm.labelWidth}}):_vm._e(),_vm._v(\" \"),(!_vm.showBatteryList)?_c('BatteryReplacement',{ref:\"BatteryReplacementRef\",attrs:{\"stationId\":_vm.stationId}}):_vm._e()],1)])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../../../../node_modules/babel-loader/lib/index.js!../../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./EditRFIDCardModal.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../../../node_modules/babel-loader/lib/index.js!../../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./EditRFIDCardModal.vue?vue&type=script&lang=js&\"","\r\n\r\n\r\n","import { render, staticRenderFns } from \"./EditRFIDCardModal.vue?vue&type=template&id=cae09c26&scoped=true&\"\nimport script from \"./EditRFIDCardModal.vue?vue&type=script&lang=js&\"\nexport * from \"./EditRFIDCardModal.vue?vue&type=script&lang=js&\"\nimport style0 from \"./EditRFIDCardModal.vue?vue&type=style&index=0&id=cae09c26&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"cae09c26\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('gdw-dialog',{attrs:{\"show\":_vm.showModal,\"width\":_vm.cardHandleType === 'delete'? 600:570,\"arrow\":\"\"}},[_c('h2',{attrs:{\"slot\":\"header\"},slot:\"header\"},[_vm._v(_vm._s(_vm.modalTitleMap[_vm.cardHandleType]['title']))]),_vm._v(\" \"),(_vm.cardHandleType === 'delete')?_c('div',[_c('h3',{staticClass:\"delete_device_title\"},[_vm._v(_vm._s(_vm.lang.dmDeleteDeviceWarning))]),_vm._v(\" \"),_c('p',{staticClass:\"delete_device_content\"},[_vm._v(_vm._s(_vm.lang.EVDetail_Card_Delete_Msg))])]):_vm._e(),_vm._v(\" \"),_c('div',{staticClass:\"changeCardForm\",class:{'delete-form': _vm.cardHandleType === 'delete'}},[_c('el-form',{ref:\"updateDeviceDialog\",staticClass:\"updateDeviceDialog\",attrs:{\"model\":_vm.cardForm,\"rules\":_vm.deviceRules,\"label-width\":'150px'}},[_c('el-form-item',{attrs:{\"label\":((_vm.lang.devicetype_RFIDCard) + \" \" + (_vm.lang.template_name)),\"prop\":\"cardName\"}},[_c('el-input',{attrs:{\"disabled\":_vm.cardHandleType === 'delete',\"maxlength\":30,\"placeholder\":((_vm.lang.siEnter) + \" \" + (_vm.lang.EVDetail_Card_newCard_CardName))},model:{value:(_vm.cardForm.cardName),callback:function ($$v) {_vm.$set(_vm.cardForm, \"cardName\", $$v)},expression:\"cardForm.cardName\"}})],1),_vm._v(\" \"),_c('el-form-item',{attrs:{\"label\":_vm.lang.EVDetail_Card_newCard_CardNo,\"prop\":\"cardNo\"}},[_c('el-input',{attrs:{\"disabled\":_vm.cardHandleType !== 'add',\"maxlength\":14,\"placeholder\":_vm.lang.EVDetail_CardNo_Msg_required},model:{value:(_vm.cardForm.cardNo),callback:function ($$v) {_vm.$set(_vm.cardForm, \"cardNo\", $$v)},expression:\"cardForm.cardNo\"}})],1),_vm._v(\" \"),_c('el-form-item',{staticStyle:{\"margin-top\":\"29px\"},attrs:{\"label\":_vm.lang.EVDetail_Card_RelatedEV,\"prop\":_vm.cardHandleType === 'add' ? 'evSns' : 'evSnsRead'}},[_c('el-select',{attrs:{\"multiple\":\"\",\"disabled\":_vm.cardHandleType === 'modify',\"placeholder\":_vm.lang.pssmPleaseSelect},on:{\"change\":_vm.handleEvChargerChange},model:{value:(_vm.cardForm.evSns),callback:function ($$v) {_vm.$set(_vm.cardForm, \"evSns\", $$v)},expression:\"cardForm.evSns\"}},_vm._l((_vm.relatedEVs),function(item){return _c('el-option',{key:item.value,attrs:{\"label\":item.label,\"value\":item.value}})}),1)],1),_vm._v(\" \"),(_vm.cardHandleType !== 'modify')?_c('div',{staticClass:\"modify-tip\"},[_c('span',{staticStyle:{\"color\":\"#ff0000\"}},[_vm._v(\"*\")]),_vm._v(\"\\n \"+_vm._s(_vm.cardHandleType === 'delete' ? _vm.lang.EVDetail_DeleteCard_Description : _vm.lang.devicetype_RFIDCard_description)+\" \\n \")]):_vm._e(),_vm._v(\" \"),_c('el-form-item',{staticStyle:{\"margin-top\":\"29px\"},attrs:{\"label\":_vm.lang.EVDetail_DefaultCard_settitle,\"prop\":_vm.evSetDefault}},[_c('el-select',{attrs:{\"disabled\":_vm.cardHandleType === 'delete',\"multiple\":\"\",\"placeholder\":_vm.lang.pssmPleaseSelect},model:{value:(_vm.cardForm.evDefault),callback:function ($$v) {_vm.$set(_vm.cardForm, \"evDefault\", $$v)},expression:\"cardForm.evDefault\"}},_vm._l((_vm.setDefaultCardOptions),function(item){return _c('el-option',{key:item.value,attrs:{\"label\":item.label,\"value\":item.value}})}),1)],1)],1),_vm._v(\" \"),(_vm.cardHandleType !== 'add')?_c('div',{staticClass:\"modify-tip\"},[_c('span',{staticStyle:{\"color\":\"#ff0000\"}},[_vm._v(\"*\")]),_vm._v(\"\\n \"+_vm._s(_vm.cardHandleType === 'delete' ? _vm.lang.EVDetail_DefaultCard_deletetip1:_vm.lang.EVDetail_DefaultCard_deletetip2)+\" \\n \")]):_vm._e()],1),_vm._v(\" \"),_c('gdw-dialog-button-group',{attrs:{\"slot\":\"button\"},slot:\"button\"},[_c('goodwe-button',{on:{\"click\":_vm.cancleUpdateInput}},[_vm._v(_vm._s(_vm.lang.cancel))]),_vm._v(\" \"),_c('goodwe-button',{on:{\"click\":_vm.submitUpdateDevice}},[_vm._v(_vm._s(_vm.lang.amBeSure))])],1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../../../../node_modules/babel-loader/lib/index.js!../../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SendRFIDCardModal.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../../../node_modules/babel-loader/lib/index.js!../../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SendRFIDCardModal.vue?vue&type=script&lang=js&\"","\r\n\r\n\r\n","import { render, staticRenderFns } from \"./SendRFIDCardModal.vue?vue&type=template&id=68b9291c&scoped=true&\"\nimport script from \"./SendRFIDCardModal.vue?vue&type=script&lang=js&\"\nexport * from \"./SendRFIDCardModal.vue?vue&type=script&lang=js&\"\nimport style0 from \"./SendRFIDCardModal.vue?vue&type=style&index=0&id=68b9291c&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"68b9291c\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('gdw-dialog',{attrs:{\"show\":_vm.showModal,\"width\":540,\"arrow\":\"\"}},[_c('h2',{attrs:{\"slot\":\"header\"},slot:\"header\"},[_vm._v(_vm._s(_vm.lang.EVDetail_Card_Pop_SavedData))]),_vm._v(\" \"),_c('div',{staticClass:\"changeInverterNotice\",staticStyle:{\"padding\":\"10px 15px\",\"border-bottom\":\"1px solid #d3d8e1\",\"border-top\":\"1px solid #fff\"}},[(_vm.sendDataStatus !== 'Failed')?_c('div',{staticClass:\"data-result-img\"},[(_vm.sendDataStatus === 'Waiting')?_c('img',{attrs:{\"src\":\"/Images/add_device/img_Senddata.gif\"}}):_vm._e(),_vm._v(\" \"),(_vm.sendDataStatus === 'Success')?_c('img',{attrs:{\"src\":\"/Images/add_device/img_success@2x.png\"}}):_vm._e()]):_vm._e(),_vm._v(\" \"),(_vm.sendDataStatus === 'Waiting')?_c('div',{staticClass:\"wait-tip\"},[_vm._v(_vm._s(_vm.lang.EVDetail_Card_Pop_Msg_SendData))]):_vm._e(),_vm._v(\" \"),(_vm.sendDataStatus === 'Success')?_c('div',{staticClass:\"wait-tip\"},[_vm._v(_vm._s(_vm.lang.cpt_save_success))]):_vm._e(),_vm._v(\" \"),(_vm.sendDataStatus === 'Failed')?_c('div',{staticClass:\"data-result-failed\"},[_c('div',{domProps:{\"innerHTML\":_vm._s(_vm.saveFailMsg)}}),_vm._v(\" \"),_c('div',{staticClass:\"error-area\"},_vm._l((_vm.errorList),function(item){return _c('div',{key:item,staticClass:\"error-item\"},[_vm._v(\"\\n \"+_vm._s(_vm.computedEvName(item.sn))+\"\\n \")])}),0)]):_vm._e()]),_vm._v(\" \"),_c('gdw-dialog-button-group',{attrs:{\"slot\":\"button\"},slot:\"button\"},[_c('goodwe-button',{on:{\"click\":_vm.closeBtnClick}},[_vm._v(_vm._s(_vm.lang.EVDetail_Card_btn_Close))]),_vm._v(\" \"),(_vm.sendDataStatus === 'Failed')?_c('goodwe-button',{on:{\"click\":_vm.retryBtnClick}},[_vm._v(\"\\n \"+_vm._s(_vm.lang.ActiveRetryOfDialog)+\"\\n \")]):_vm._e()],1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import UpdateDeviceModal from '../../dialogs/components/UpdateDeviceModal.vue';\r\nimport ChangeDeviceModal from '../../dialogs/components/ChangeDeviceModal.vue';\r\nimport DeleteDeviceModal from '../../dialogs/components/DeleteDeviceModal.vue';\r\nimport EditRFIDCardModal from './DialogModals/EditRFIDCardModal.vue';\r\nimport SendRFIDCardModal from './DialogModals/SendRFIDCardModal.vue';\r\nimport {DEVICE_TYPE_EVCHARGER, notify} from '../../relativeFunUtl';\r\nexport default {\r\n name: 'EvChargerList',\r\n props: {\r\n stationId:{ type: String, required: true }, // 电站ID\r\n is_stored:{ type: Boolean, required: true }, // 是否是储能电站\r\n listTitleWidth: { type: Object, required: true }, // 列表table 标题宽度\r\n labelWidth: { type: String, required: true }, // form表单label宽度\r\n },\r\n components: { UpdateDeviceModal, ChangeDeviceModal, DeleteDeviceModal, \r\n EditRFIDCardModal, SendRFIDCardModal},\r\n data: function() {\r\n return {\r\n lang: Goodwe.Ops.Resouces.Front,\r\n canUpdate: canUpdate, // 是否有修改权限\r\n canDelete: canDelete, // 是否有删除权限\r\n pw_id: this.stationId, // 电站ID\r\n is_stored: this.is_stored, // 是否是储能电站\r\n labelWidth: this.labelWidth, // form表单label宽度\r\n evChargerData: [], // 充电桩列表数据\r\n evChargerHistory: [], // 更换设备历史记录信息\r\n EvChargerPage: { // 充电桩列表分页\r\n page_index: 1, page_size: 6, record: 0 \r\n },\r\n RFIDCardData: [], // RDID卡列表数据\r\n RFIDCardPage: { // RFID卡列表分页\r\n page_index: 1, page_size: 6, record: 0 \r\n }, \r\n showEvChargerList: true, // 是否展示充电桩列表\r\n showUpdateModal: false, // 修改设备模态框\r\n showChangeModal: false, // 更换设备模态框\r\n showDeleteModal: false, // 删除设备模态框\r\n showCardHandle: false, // 新增、修改、删除RFID卡模态框\r\n showSendResult: false, // RFID卡发送数据显隐\r\n changingDeviceType: DEVICE_TYPE_EVCHARGER, // 设备类型\r\n changingDevice: '', // 设备信息\r\n isHistoryRecord: false, // 是否删除历史记录设备\r\n allEvSN: [], // 所有充电桩\r\n cardHandleType: 'add', // 目前新增、编辑RFID卡\r\n onlineEvList: [], // 在线充电桩列表集合\r\n singleSnMultiCards: [], // 单桩对多卡的集合\r\n nowHandleCardInfo: { // 目前正在处理的RFIDCard信息\r\n card: { cardNo: '', cardName: ''}, \r\n evSns: []\r\n },\r\n initCount: 0, // 页面将要调用接口数\r\n overlimitSns: [], // 超出10张卡的集合\r\n showOverMaxModal: false, // 超出10张卡弹窗\r\n }\r\n },\r\n watch: {\r\n stationId:function(){\r\n this.pw_id = this.stationId;\r\n this.getEvChargerData();\r\n this.getRFIDCardList();\r\n },\r\n },\r\n filters: {\r\n formatData: function (v) {\r\n if (!v && v != \"0\") {\r\n return \"-\"\r\n } else {\r\n return v\r\n }\r\n },\r\n formatDate:function(v){\r\n if (!v && v != \"0\") {\r\n return \"-\"\r\n } else {\r\n return dayjs(v).format(dateFormatReplace(\"day\"))\r\n }\r\n },\r\n },\r\n computed: {\r\n /** 处理后的充电桩数据 */\r\n computedEvChargerData() {\r\n var d = _.cloneDeep(this.evChargerData);\r\n if (!d) d = [];\r\n var data = [];\r\n d.forEach(function (item) {\r\n data.push({\r\n status: item.status,\r\n name: item.it_name,\r\n sn: item.it_sn,\r\n type: item.it_type,\r\n master: item.master,\r\n capacity: item.it_capacity,\r\n createTime: item.conn_date,\r\n collectType: item.con_equipmentmodel,\r\n collectSn: item.con_equipment_sn,\r\n version: item.ver,\r\n id: item.id,\r\n })\r\n });\r\n return data\r\n },\r\n /** 处理后的充电桩历史数据 */\r\n computedEvChargerHistory() {\r\n var d = _.cloneDeep(this.evChargerHistory);\r\n if (!d) d = [];\r\n let data = [];\r\n d.forEach(function (item) {\r\n data.push({\r\n id:item.id,\r\n num: item.ch_no,\r\n oldName: item.it_name_old,\r\n oldSn: item.it_sn_old,\r\n newName: item.it_name_new,\r\n newSn: item.it_sn_new,\r\n changeDate: item.change_date,\r\n memo: item.memo,\r\n })\r\n });\r\n return data\r\n },\r\n /** 处理后的RFID卡数据 */\r\n computedRFIDCardData() {\r\n var d = _.cloneDeep(this.RFIDCardData);\r\n if (!d) { return [] }\r\n let arrSn = []; // 所有的桩SN\r\n let arrCard = []; // 所有的卡数据\r\n let snObj = {}; // 所有的一桩对多卡\r\n let cardObj = {}; // 所有的一卡对多桩\r\n let defaultCardObj = {}; // 一桩对应一默认卡\r\n let finalData = []; // 最终展示的table\r\n // 首先将 桩sn 和 卡 做拆分\r\n d.forEach(element => { \r\n arrSn.push(element.sn);\r\n arrCard.push({cardNo: element.cardNo, cardName: element.cardName});\r\n });\r\n defaultCardObj = d.reduce((acc, card) => {\r\n if (card.isDefault) { acc[card.sn] = card.cardNo }\r\n return acc;\r\n }, {});\r\n const uniqueSNList = [...new Set(arrSn)]; // 所有充电桩SN列表(已去重)\r\n const uniqueCards = new Set(); // 使用一个Set来存储唯一的cardNo和cardName组合\r\n const uniqueCardList = arrCard.filter(item => { // 过滤掉重复的项,获取一卡对应一卡名的数组\r\n const key = item.cardNo + item.cardName;\r\n if (uniqueCards.has(key)) {\r\n return false;\r\n } else {\r\n uniqueCards.add(key);\r\n return true;\r\n }\r\n });\r\n uniqueSNList.forEach(sn => { // 获取一桩对应多卡的关系\r\n snObj[sn] = [];\r\n d.forEach(element => {\r\n if(element.sn === sn) {\r\n snObj[sn].push({cardNo: element.cardNo, cardName: element.cardName});\r\n }\r\n })\r\n });\r\n this.singleSnMultiCards = snObj; // 处理完毕后存singleSnMultiCards\r\n uniqueCardList.forEach(card => { // 获取一卡对应多桩的关系\r\n cardObj[card.cardNo] = [];\r\n d.forEach(element => {\r\n if(element.cardNo === card.cardNo) {\r\n cardObj[card.cardNo].push(element.sn);\r\n }\r\n })\r\n });\r\n this.allEvSN = uniqueSNList; // 所有的充电桩SN集合\r\n uniqueCardList.forEach(function (card,index) {\r\n finalData.push({\r\n id: index + 1,\r\n cardNo: card.cardNo,\r\n cardName: card.cardName,\r\n evList: cardObj[card.cardNo].map(evSn => {\r\n return {\r\n sn: evSn,\r\n isDefault: defaultCardObj[evSn] === card.cardNo\r\n }\r\n })\r\n })\r\n });\r\n this.RFIDCardPage.record = finalData.length;\r\n return finalData.slice(\r\n (this.RFIDCardPage.page_index -1) * this.RFIDCardPage.page_size,\r\n this.RFIDCardPage.page_index * this.RFIDCardPage.page_size\r\n );\r\n },\r\n },\r\n methods: {\r\n /** 切换到充电桩列表 */\r\n tabEvChargerList() {\r\n loading.showLoading();\r\n this.resetHandleListModal();\r\n if (!this.showEvChargerList) {\r\n this.resetEvChargerPage();\r\n this.getEvChargerData();\r\n this.getRFIDCardList();\r\n this.showEvChargerList = true;\r\n }\r\n },\r\n /** 切换到充电桩操作记录 */\r\n tabEvChargerHistory() {\r\n loading.showLoading();\r\n this.resetHandleListModal();\r\n if (this.showEvChargerList) {\r\n this.resetEvChargerPage();\r\n this.getEvChargerHistory();\r\n this.showEvChargerList = false;\r\n }\r\n },\r\n /** 切换充电桩页码 */\r\n handleEvPageChange(page) {\r\n loading.showLoading();\r\n this.resetHandleListModal();\r\n this.EvChargerPage.page_index = page;\r\n if (this.showEvChargerList) {\r\n this.getEvChargerData();\r\n } else {\r\n this.getEvChargerHistory();\r\n }\r\n },\r\n /** 切换RFID卡页码 */\r\n handleCardPageChange(page) {\r\n this.resetHandleListModal();\r\n this.RFIDCardPage.page_index = page;\r\n },\r\n /** 重置充电桩页码 */\r\n resetEvChargerPage() {\r\n this.EvChargerPage.page_size = 6;\r\n this.EvChargerPage.page_index = 1;\r\n },\r\n /** 获取充电桩列表信息 */\r\n getEvChargerData() {\r\n this.ajaxOneTimeCount(1);\r\n common.post(\"v1/PwInventers/QueryPowerStationEquipment\",\r\n { pw_id: this.pw_id, \r\n page_index: this.EvChargerPage.page_index,\r\n page_size: this.EvChargerPage.page_size,\r\n equipment_type: DEVICE_TYPE_EVCHARGER,\r\n }).success(function (res) {\r\n this.evChargerData = res.data.list;\r\n this.EvChargerPage.record = res.data.record;\r\n }.bind(this)).all(function () {\r\n this.ajaxSuccessCallback();\r\n }.bind(this))\r\n },\r\n /** 获取充电桩历史记录 */\r\n getEvChargerHistory() {\r\n this.ajaxOneTimeCount(1);\r\n common.post(\"v1/PwInventers/QueryPowerStationEquipmentsChangeHistory\", \r\n { pw_id: this.pw_id, \r\n page_index: this.EvChargerPage.page_index, \r\n page_size: this.EvChargerPage.page_size,\r\n equipment_type: DEVICE_TYPE_EVCHARGER,\r\n }).success(function (res) {\r\n this.evChargerHistory = res.data.list\r\n this.EvChargerPage.record = res.data.record;\r\n }.bind(this)).all(function () {\r\n this.ajaxSuccessCallback();\r\n }.bind(this))\r\n },\r\n /** 处理后的充电桩名称 */\r\n computedEvName(v) {\r\n const item = this.onlineEvList.find(el=> {return el.sn === v});\r\n if(item) {\r\n return item.name\r\n } else {\r\n return v\r\n }\r\n },\r\n /** 查询RFID卡相关数据 */\r\n getRFIDCardList() {\r\n this.ajaxOneTimeCount(2);\r\n common.post('v4/EvCharger/GetOnlineG2EvChargerList', {\r\n powerStationId: this.pw_id\r\n }).success(function (res) {\r\n this.onlineEvList = res.data || [];\r\n }.bind(this)).all(function(){\r\n this.ajaxSuccessCallback();\r\n /** 此处获取所有的卡、桩集合 */\r\n common.post(\"v4/EvCharger/GetEvChargerCardList\", \r\n { powerStationId: this.pw_id }).success(function (res_card) {\r\n if(res_card.data) {\r\n this.RFIDCardData = res_card.data || [];\r\n }\r\n }.bind(this)).all(function () {\r\n this.ajaxSuccessCallback();\r\n }.bind(this))\r\n }.bind(this));\r\n },\r\n /** 处理列表信息 */\r\n handleDevice(row, type) {\r\n this.resetModalInfo();\r\n setTimeout(() => {\r\n this.changingDeviceType = DEVICE_TYPE_EVCHARGER; // 默认8--充电桩\r\n this.changingDevice = row;\r\n switch (type) {\r\n case 'update':{ // 更新设备按钮点击\r\n this.showUpdateModal = true;\r\n break;\r\n }\r\n case 'change':{ // 更换设备按钮点击\r\n this.showChangeModal = true;\r\n break;\r\n }\r\n case 'deleteList':{ // 删除设备按钮点击\r\n this.isHistoryRecord = false;\r\n this.showDeleteModal = true;\r\n break;\r\n }\r\n case 'deleteHistory':{// 删除历史记录按钮点击\r\n this.isHistoryRecord = true;\r\n this.showDeleteModal = true;\r\n break;\r\n }\r\n default:\r\n break;\r\n }\r\n }, 30);\r\n },\r\n /** 更新/更换设备成功后 */\r\n modifyHandle(flag) {\r\n this.resetModalInfo();\r\n if(flag) {\r\n loading.showLoading();\r\n this.getEvChargerData();\r\n this.getRFIDCardList();\r\n }\r\n },\r\n /** 删除设备信息成功后 */\r\n initListHandle(flag) {\r\n this.resetModalInfo();\r\n if(flag) {\r\n loading.showLoading();\r\n this.getRFIDCardList();\r\n if(this.showEvChargerList) {\r\n this.getEvChargerData();\r\n } else {\r\n this.getEvChargerHistory();\r\n }\r\n }\r\n },\r\n /** 新增、修改、删除RFID卡 */\r\n handleRFIDCard(type, row) {\r\n this.resetModalInfo();\r\n this.nowHandleCardInfo = {card: {cardNo: '', cardName: ''}, evSns: []};\r\n this.cardHandleType = type;\r\n if(type !== 'add') {\r\n this.nowHandleCardInfo = {\r\n card: { cardNo: row.cardNo, cardName: row.cardName },\r\n evSns: [...row.evList]\r\n }\r\n }\r\n setTimeout(() => {\r\n this.showCardHandle = true;\r\n }, 100);\r\n },\r\n /** 处理接收到的RFID卡信息 */\r\n handleSendData(res) {\r\n this.needSendData = res;\r\n this.cardHandleType = res.editType;\r\n if(res.editType === 'add') { // 如果是新增,找一下是否已经有该卡\r\n const existCard = this.computedRFIDCardData.find((el) => {\r\n return el.cardNo === res.postParam['cardNo']\r\n });\r\n if(existCard && this.arraysAreEqual(existCard.evList, res.postParam['snList'])){\r\n notify(lang.RFID_EV_Repeat_tip, 3); // 卡和桩的关系已绑定 不可重复操作\r\n return\r\n }\r\n this.overlimitSns = []; // 已经超出10张卡的桩集合\r\n res.postParam['snList'].forEach(evSn => {\r\n if(this.singleSnMultiCards[evSn] && this.singleSnMultiCards[evSn].length >= 10) {\r\n this.overlimitSns.push(this.computedEvName(evSn));\r\n }\r\n })\r\n if(this.overlimitSns.length > 0) { // 如果存在已经添加了10张卡的桩\r\n this.showCardHandle = false;\r\n this.showOverMaxModal = true;\r\n return\r\n }\r\n }\r\n this.showCardHandle = false;\r\n this.showSendResult = true;\r\n },\r\n /** 接收充电桩完毕后 */\r\n handleSendSuccess(res) {\r\n this.resetModalInfo();\r\n this.$refs.EditRFIDCardRef.cancleUpdateInput();\r\n if(res.flag) {\r\n loading.showLoading();\r\n this.RFIDCardPage.page_index = 1;\r\n this.getRFIDCardList();\r\n }\r\n },\r\n /** 关闭超出10张卡的弹出框 */\r\n closeBtnClick() {\r\n this.showOverMaxModal = false;\r\n setTimeout(() => {\r\n this.resetHandleListModal();\r\n }, 500);\r\n },\r\n /** 重置弹出框信息 */\r\n resetModalInfo() {\r\n this.isHistoryRecord = false;\r\n this.resetHandleListModal();\r\n },\r\n /** 操作列表弹框重置 */\r\n resetHandleListModal() {\r\n this.showUpdateModal = false;\r\n this.showChangeModal = false;\r\n this.showDeleteModal = false;\r\n this.showCardHandle = false;\r\n this.showSendResult = false;\r\n this.initCount = 0;\r\n this.nowHandleCardInfo = {\r\n card: { cardNo: '', cardName: ''},\r\n evSns: []\r\n };\r\n this.showOverMaxModal = false;\r\n this.overlimitSns = [];\r\n },\r\n /** 接口全部调用完毕后 */\r\n ajaxSuccessCallback() {\r\n this.initCount = this.initCount - 1;\r\n if(this.initCount === 0) {\r\n loading.disLoading();\r\n }\r\n },\r\n /** 一次性总共需要调用接口数 */\r\n ajaxOneTimeCount(num) {\r\n this.initCount = this.initCount + num;\r\n },\r\n /** 对比两个数组数据是否一致 */\r\n arraysAreEqual(oriArr, curArr) {\r\n // 如果两个数组的长度不相等,直接返回 false\r\n if (oriArr.length !== curArr.length) {\r\n return false;\r\n }\r\n // 使用 every 方法逐个比较数组元素是否相同\r\n return oriArr.every((value, index) => value === curArr[index]);\r\n }\r\n },\r\n created() {\r\n loading.showLoading();\r\n this.getEvChargerData();\r\n this.getRFIDCardList();\r\n },\r\n mounted() {\r\n }\r\n}","import mod from \"-!../../../../../../node_modules/babel-loader/lib/index.js!./EvChargerList.js?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../../node_modules/babel-loader/lib/index.js!./EvChargerList.js?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./EvChargerList.vue?vue&type=template&id=fc60a52e&scoped=true&\"\nimport script from \"./EvChargerList.js?vue&type=script&lang=js&\"\nexport * from \"./EvChargerList.js?vue&type=script&lang=js&\"\nimport style0 from \"./EvChargerList.scss?vue&type=style&index=0&id=fc60a52e&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"fc60a52e\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[_c('div',{staticClass:\"inverter-operate clearfix\"},[_c('button',{staticClass:\"btn_primary l\",class:{'btn-inactive':!_vm.showEvChargerList},on:{\"click\":_vm.tabEvChargerList}},[_vm._v(\"\\n \"+_vm._s(_vm.lang.devicetype_EVCharge))]),_vm._v(\" \"),_c('button',{staticClass:\"btn_primary l\",class:{'btn-inactive':_vm.showEvChargerList},on:{\"click\":_vm.tabEvChargerHistory}},[_vm._v(\"\\n \"+_vm._s(_vm.lang.changeHistory))])]),_vm._v(\" \"),_c('div',{staticClass:\"inverter-detail body-contain\"},[_c('el-table',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.showEvChargerList),expression:\"showEvChargerList\"}],staticStyle:{\"width\":\"100%\"},attrs:{\"header-cell-style\":{height:'42px',background:'#38474E',color:'#fff'},\"stripe\":\"\",\"data\":_vm.computedEvChargerData}},[_c('el-table-column',{staticClass:\"pl20\",attrs:{\"prop\":\"status\",\"label\":_vm.lang.oStatus,\"width\":_vm.listTitleWidth.inverterWidth[0]},scopedSlots:_vm._u([{key:\"default\",fn:function(scope){return [_c('div',{style:({color: scope.row.status =='-1' ? '#557289': '#86bd4d'})},[_vm._v(\"\\n \"+_vm._s(scope.row.status==\"-1\"?_vm.lang.offline:_vm.lang.Online)+\"\\n \")])]}}])}),_vm._v(\" \"),_c('el-table-column',{attrs:{\"prop\":\"name\",\"label\":_vm.lang.template_name,\"width\":_vm.listTitleWidth.inverterWidth[1],\"show-overflow-tooltip\":\"\"},scopedSlots:_vm._u([{key:\"default\",fn:function(scope){return [_vm._v(\"\\n \"+_vm._s(scope.row.name || scope.row.sn || '-')+\"\\n \")]}}])}),_vm._v(\" \"),_c('el-table-column',{attrs:{\"prop\":\"sn\",\"label\":\"SN\",\"show-overflow-tooltip\":\"\",\"width\":_vm.listTitleWidth.inverterWidth[2]},scopedSlots:_vm._u([{key:\"default\",fn:function(scope){return [_vm._v(\"\\n \"+_vm._s(_vm._f(\"formatData\")(scope.row.sn))+\"\\n \")]}}])}),_vm._v(\" \"),_c('el-table-column',{attrs:{\"prop\":\"type\",\"label\":_vm.lang.pssmInverterType,\"width\":_vm.listTitleWidth.inverterWidth[3],\"show-overflow-tooltip\":\"\"},scopedSlots:_vm._u([{key:\"default\",fn:function(scope){return [_vm._v(\"\\n \"+_vm._s(_vm._f(\"formatData\")(scope.row.type))+\"\\n \")]}}])}),_vm._v(\" \"),_c('el-table-column',{attrs:{\"prop\":\"capacity\",\"label\":_vm.lang.CapacityOfDevice,\"width\":_vm.listTitleWidth.inverterWidth[4],\"show-overflow-tooltip\":\"\"},scopedSlots:_vm._u([{key:\"default\",fn:function(scope){return [_vm._v(\"\\n \"+_vm._s(_vm._f(\"formatData\")(scope.row.capacity))+\"\\n \")]}}])}),_vm._v(\" \"),_c('el-table-column',{attrs:{\"prop\":\"version\",\"label\":_vm.lang.EVDetail_EV_Version,\"width\":_vm.listTitleWidth.inverterWidth[5],\"show-overflow-tooltip\":\"\"},scopedSlots:_vm._u([{key:\"default\",fn:function(scope){return [_vm._v(\"\\n \"+_vm._s(scope.row.version || '-')+\"\\n \")]}}])}),_vm._v(\" \"),_c('el-table-column',{attrs:{\"prop\":\"createTime\",\"label\":_vm.lang.pssmTurnonTime,\"width\":_vm.listTitleWidth.inverterWidth[6],\"show-overflow-tooltip\":\"\"},scopedSlots:_vm._u([{key:\"default\",fn:function(scope){return [_vm._v(\"\\n \"+_vm._s(_vm._f(\"formatDate\")(scope.row.createTime))+\"\\n \")]}}])}),_vm._v(\" \"),_c('el-table-column',{attrs:{\"prop\":\"id\",\"label\":_vm.lang.pssmHandle,\"width\":_vm.listTitleWidth.inverterWidth[7]},scopedSlots:_vm._u([{key:\"default\",fn:function(scope){return [(scope.row.id!='')?_c('div',[(_vm.canUpdate)?_c('el-button',{staticClass:\"update-btn\",attrs:{\"type\":\"text\",\"size\":\"small\"},on:{\"click\":function($event){return _vm.handleDevice(scope.row, 'update')}}},[_vm._v(\"\\n \"+_vm._s(_vm.lang.Modify)+\"\\n \")]):_vm._e(),_vm._v(\" \"),(_vm.canUpdate)?_c('el-button',{staticClass:\"change-btn\",attrs:{\"size\":\"mini\",\"type\":\"text\"},on:{\"click\":function($event){return _vm.handleDevice(scope.row, 'change')}}},[_vm._v(\"\\n \"+_vm._s(_vm.lang.Replace)+\"\\n \")]):_vm._e(),_vm._v(\" \"),(_vm.canDelete)?_c('el-button',{staticClass:\"delete-btn\",attrs:{\"size\":\"mini\",\"type\":\"text\"},on:{\"click\":function($event){return _vm.handleDevice(scope.row, 'deleteList')}}},[_vm._v(\"\\n \"+_vm._s(_vm.lang.Delete)+\"\\n \")]):_vm._e()],1):_vm._e(),_vm._v(\" \"),(scope.row.id=='' || (!_vm.canUpdate && !_vm.canDelete))?_c('div',[_vm._v(\" -- \")]):_vm._e()]}}])})],1),_vm._v(\" \"),_c('el-table',{directives:[{name:\"show\",rawName:\"v-show\",value:(!_vm.showEvChargerList),expression:\"!showEvChargerList\"}],attrs:{\"header-cell-style\":{height:'42px',background:'#38474E',color:'#fff'},\"stripe\":\"\",\"data\":_vm.computedEvChargerHistory}},[_c('el-table-column',{attrs:{\"prop\":\"num\",\"label\":_vm.lang.replace_history_number,\"show-overflow-tooltip\":\"\",\"width\":\"90px\"},scopedSlots:_vm._u([{key:\"default\",fn:function(scope){return [_vm._v(\"\\n \"+_vm._s(scope.row.num)+\"\\n \")]}}])}),_vm._v(\" \"),_c('el-table-column',{attrs:{\"prop\":\"oldName\",\"label\":_vm.lang.original_devic,\"show-overflow-tooltip\":\"\"},scopedSlots:_vm._u([{key:\"default\",fn:function(scope){return [_vm._v(\"\\n \"+_vm._s(scope.row.oldName || scope.row.oldSn || '-')+\"\\n \")]}}])}),_vm._v(\" \"),_c('el-table-column',{attrs:{\"prop\":\"oldSn\",\"label\":_vm.lang.dmOriginDevice+' S/N',\"show-overflow-tooltip\":\"\"},scopedSlots:_vm._u([{key:\"default\",fn:function(scope){return [_vm._v(\"\\n \"+_vm._s(scope.row.oldSn)+\"\\n \")]}}])}),_vm._v(\" \"),_c('el-table-column',{attrs:{\"prop\":\"newName\",\"label\":_vm.lang.new_divice,\"show-overflow-tooltip\":\"\"},scopedSlots:_vm._u([{key:\"default\",fn:function(scope){return [_vm._v(\"\\n \"+_vm._s(scope.row.newName || scope.row.newSn || '-')+\"\\n \")]}}])}),_vm._v(\" \"),_c('el-table-column',{attrs:{\"prop\":\"newSn\",\"label\":_vm.lang.new_devic_sn,\"show-overflow-tooltip\":\"\"},scopedSlots:_vm._u([{key:\"default\",fn:function(scope){return [_vm._v(\"\\n \"+_vm._s(scope.row.newSn)+\"\\n \")]}}])}),_vm._v(\" \"),_c('el-table-column',{attrs:{\"prop\":\"changeDate\",\"label\":_vm.lang.replace_time,\"show-overflow-tooltip\":\"\"},scopedSlots:_vm._u([{key:\"default\",fn:function(scope){return [_vm._v(\"\\n \"+_vm._s(_vm._f(\"formatDate\")(scope.row.changeDate.toString().split(' ')[0]))+\"\\n \")]}}])}),_vm._v(\" \"),_c('el-table-column',{attrs:{\"prop\":\"id\",\"label\":_vm.lang.pssmHandle,\"width\":\"110px\"},scopedSlots:_vm._u([{key:\"default\",fn:function(scope){return [(scope.row.id!='')?_c('div',[(_vm.canDelete)?_c('el-button',{staticClass:\"delete-btn\",staticStyle:{\"color\":\"red\"},attrs:{\"size\":\"mini\",\"type\":\"text\"},on:{\"click\":function($event){return _vm.handleDevice(scope.row, 'deleteHistory')}}},[_vm._v(\"\\n \"+_vm._s(_vm.lang.Delete)+\"\\n \")]):_vm._e()],1):_vm._e(),_vm._v(\" \"),(scope.row.id=='' || !_vm.canDelete)?_c('div',[_vm._v(\" -- \")]):_vm._e()]}}])})],1),_vm._v(\" \"),_c('div',{staticClass:\"paging\"},[_c('gdw-pager',{attrs:{\"current-page\":_vm.EvChargerPage.page_index,\"page-sizes\":[_vm.EvChargerPage.page_size],\"layout\":\"prev, pager, next, sizes, total, jumper\",\"total\":_vm.EvChargerPage.record},on:{\"current-change\":_vm.handleEvPageChange}})],1)],1),_vm._v(\" \"),_c('div',{staticClass:\"inverter-detail body-contain\"},[_c('div',{staticClass:\"inverter-operate clearfix\"},[_c('span',[_vm._v(_vm._s(_vm.lang.devicetype_RFIDCard))]),_vm._v(\" \"),_c('el-tooltip',{attrs:{\"popper-class\":\"custom-wrap-tooltip\",\"effect\":\"dark\",\"placement\":\"right\"}},[_c('div',{attrs:{\"slot\":\"content\"},slot:\"content\"},[_vm._v(\" \"+_vm._s(_vm.lang.devicetype_RFIDCard_description)+\" \")]),_vm._v(\" \"),_c('img',{staticStyle:{\"cursor\":\"pointer\"},attrs:{\"src\":\"/Images/add_device/icon_yiwen.png\"}})]),_vm._v(\" \"),_c('div',{staticStyle:{\"flex\":\"1\",\"padding-right\":\"20px\"}},[_c('button',{staticClass:\"btn_addCard r\",on:{\"click\":function($event){return _vm.handleRFIDCard('add')}}},[_vm._v(_vm._s(_vm.lang.EVDetail_AddCard))])])],1),_vm._v(\" \"),_c('el-table',{staticStyle:{\"width\":\"100%\"},attrs:{\"header-cell-style\":{height:'42px',background:'#38474E',color:'#fff'},\"stripe\":\"\",\"data\":_vm.computedRFIDCardData}},[_c('el-table-column',{staticClass:\"pl20\",attrs:{\"prop\":\"id\",\"label\":_vm.lang.fcNo,\"width\":_vm.listTitleWidth.inverterWidth[0]},scopedSlots:_vm._u([{key:\"default\",fn:function(scope){return [_vm._v(\"\\n \"+_vm._s(scope.row.id)+\"\\n \")]}}])}),_vm._v(\" \"),_c('el-table-column',{attrs:{\"width\":200,\"label\":_vm.lang.EVDetail_Card_newCard_CardName,\"prop\":\"cardName\",\"show-overflow-tooltip\":\"\"}}),_vm._v(\" \"),_c('el-table-column',{attrs:{\"width\":240,\"label\":_vm.lang.EVDetail_Card_newCard_CardNo,\"prop\":\"cardNo\",\"show-overflow-tooltip\":\"\"},scopedSlots:_vm._u([{key:\"default\",fn:function(scope){return [_vm._v(\"\\n \"+_vm._s(_vm._f(\"formatData\")(scope.row.cardNo))+\"\\n \")]}}])}),_vm._v(\" \"),_c('el-table-column',{attrs:{\"label\":_vm.lang.EVDetail_Card_RelatedEV,\"prop\":\"evList\"},scopedSlots:_vm._u([{key:\"default\",fn:function(scope){return [_c('div',{staticClass:\"ev-list-all\"},_vm._l((scope.row.evList),function(ev){return _c('div',{key:ev,staticClass:\"ev-item\"},[(ev.isDefault)?_c('img',{attrs:{\"src\":\"/Images/ev_charger/default_icon.png\"}}):_vm._e(),_vm._v(\"\\n \"+_vm._s(_vm.computedEvName(ev.sn))+\"\\n \")])}),0)]}}])}),_vm._v(\" \"),_c('el-table-column',{attrs:{\"prop\":\"id\",\"label\":_vm.lang.pssmHandle,\"width\":_vm.listTitleWidth.inverterWidth[7]},scopedSlots:_vm._u([{key:\"default\",fn:function(scope){return [(scope.row.id!='')?_c('div',[(_vm.canUpdate)?_c('el-button',{staticClass:\"update-btn\",attrs:{\"type\":\"text\",\"size\":\"small\"},on:{\"click\":function($event){return _vm.handleRFIDCard('modify', scope.row)}}},[_vm._v(\"\\n \"+_vm._s(_vm.lang.Modify)+\"\\n \")]):_vm._e(),_vm._v(\" \"),(_vm.canDelete)?_c('el-button',{staticClass:\"delete-btn\",attrs:{\"size\":\"mini\",\"type\":\"text\"},on:{\"click\":function($event){return _vm.handleRFIDCard('delete', scope.row)}}},[_vm._v(\"\\n \"+_vm._s(_vm.lang.Delete)+\"\\n \")]):_vm._e()],1):_vm._e(),_vm._v(\" \"),(scope.row.id=='' || (!_vm.canUpdate && !_vm.canDelete))?_c('div',[_vm._v(\" -- \")]):_vm._e()]}}])})],1),_vm._v(\" \"),_c('div',{staticClass:\"paging\"},[_c('gdw-pager',{attrs:{\"current-page\":_vm.RFIDCardPage.page_index,\"page-sizes\":[_vm.RFIDCardPage.page_size],\"layout\":\"prev, pager, next, sizes, total, jumper\",\"total\":_vm.RFIDCardPage.record},on:{\"current-change\":_vm.handleCardPageChange}})],1)],1),_vm._v(\" \"),_c('UpdateDeviceModal',{attrs:{\"showModal\":_vm.showUpdateModal,\"changingDeviceType\":_vm.changingDeviceType,\"changingDeviceInfo\":_vm.changingDevice,\"stationId\":_vm.pw_id,\"label_width\":_vm.labelWidth},on:{\"modify_success\":_vm.modifyHandle}}),_vm._v(\" \"),_c('ChangeDeviceModal',{attrs:{\"showModal\":_vm.showChangeModal,\"changingDeviceType\":_vm.changingDeviceType,\"changingDeviceInfo\":_vm.changingDevice,\"stationId\":_vm.pw_id,\"is_stored\":_vm.is_stored,\"label_width\":_vm.labelWidth},on:{\"change_success\":_vm.modifyHandle}}),_vm._v(\" \"),_c('DeleteDeviceModal',{attrs:{\"showModal\":_vm.showDeleteModal,\"isHistoryRecord\":_vm.isHistoryRecord,\"changingDeviceType\":_vm.changingDeviceType,\"changingDeviceInfo\":_vm.changingDevice},on:{\"delete_success\":_vm.initListHandle}}),_vm._v(\" \"),_c('EditRFIDCardModal',{ref:\"EditRFIDCardRef\",attrs:{\"showModal\":_vm.showCardHandle,\"cardHandleType\":_vm.cardHandleType,\"nowCardInfo\":_vm.nowHandleCardInfo,\"stationId\":_vm.pw_id,\"label_width\":_vm.labelWidth},on:{\"sendData\":_vm.handleSendData}}),_vm._v(\" \"),_c('SendRFIDCardModal',{attrs:{\"showModal\":_vm.showSendResult,\"stationId\":_vm.pw_id,\"acceptData\":_vm.needSendData,\"onlineEvList\":_vm.onlineEvList},on:{\"sendSuccess\":_vm.handleSendSuccess}}),_vm._v(\" \"),_c('gdw-dialog',{attrs:{\"show\":_vm.showOverMaxModal,\"width\":540,\"arrow\":\"\"}},[_c('h2',{attrs:{\"slot\":\"header\"},slot:\"header\"},[_vm._v(_vm._s(_vm.lang.EVDetail_Card_Pop_SavedData))]),_vm._v(\" \"),_c('div',{staticClass:\"changeInverterNotice\",staticStyle:{\"padding\":\"10px 15px\",\"border-bottom\":\"1px solid #d3d8e1\",\"border-top\":\"1px solid #fff\"}},[_c('div',{staticClass:\"data-result-failed\"},[_c('div',[_vm._v(_vm._s(_vm.lang.EVDetail_Overlimit_Error))]),_vm._v(\" \"),_c('div',{staticClass:\"error-area\"},_vm._l((_vm.overlimitSns),function(item){return _c('div',{key:item,staticClass:\"error-item\"},[_vm._v(\"\\n \"+_vm._s(item)+\"\\n \")])}),0)])]),_vm._v(\" \"),_c('gdw-dialog-button-group',{attrs:{\"slot\":\"button\"},slot:\"button\"},[_c('goodwe-button',{on:{\"click\":_vm.closeBtnClick}},[_vm._v(\"\\n \"+_vm._s(_vm.lang.EVDetail_Card_btn_Close)+\"\\n \")])],1)],1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\n\r\n","import mod from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AddDeviceForm.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AddDeviceForm.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./AddDeviceForm.vue?vue&type=template&id=51be2530&scoped=true&\"\nimport script from \"./AddDeviceForm.vue?vue&type=script&lang=js&\"\nexport * from \"./AddDeviceForm.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"51be2530\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('gdw-dialog',{staticClass:\"add-device-dislog\",attrs:{\"show\":_vm.showAddDeviceDialog,\"width\":500,\"arrow\":\"\"}},[_c('h2',{attrs:{\"slot\":\"header\"},slot:\"header\"},[_vm._v(_vm._s(_vm.deviceTypeMap[_vm.newDeviceType]))]),_vm._v(\" \"),_c('div',{staticStyle:{\"margin\":\"10px 15px 0\",\"border-bottom\":\"1px solid #d3d8e1\",\"border-top\":\"1px solid #fff\"}},[_c('el-form',{ref:\"newDeviceDialog\",staticClass:\"newDeviceDialog\",attrs:{\"model\":_vm.newDevice,\"rules\":_vm.deviceRules,\"label-width\":_vm.label_width}},[_c('el-form-item',{attrs:{\"label\":_vm.lang.template_name,\"prop\":\"name\"}},[_c('el-input',{attrs:{\"maxlength\":30,\"placeholder\":_vm.lang.enterdevicenametip},model:{value:(_vm.newDevice.name),callback:function ($$v) {_vm.$set(_vm.newDevice, \"name\", $$v)},expression:\"newDevice.name\"}})],1),_vm._v(\" \"),_c('el-form-item',{attrs:{\"label\":_vm.lang.SN,\"prop\":\"sn\"}},[_c('el-input',{attrs:{\"maxlength\":30,\"placeholder\":_vm.lang.add_dev_sn},on:{\"input\":function($event){return _vm.determineInputSN(_vm.newDevice.sn)}},model:{value:(_vm.newDevice.sn),callback:function ($$v) {_vm.$set(_vm.newDevice, \"sn\", $$v)},expression:\"newDevice.sn\"}})],1),_vm._v(\" \"),_c('el-form-item',{attrs:{\"label\":_vm.lang.laCheckcode,\"prop\":\"checkcode\"}},[_c('el-input',{attrs:{\"maxlength\":30,\"placeholder\":_vm.lang.add_dev_code},model:{value:(_vm.newDevice.checkcode),callback:function ($$v) {_vm.$set(_vm.newDevice, \"checkcode\", $$v)},expression:\"newDevice.checkcode\"}})],1),_vm._v(\" \"),(_vm.battery_capacity_show)?_c('el-form-item',{attrs:{\"label\":_vm.lang.soc_device_Input_title,\"prop\":\"battery_capacity\"}},[_c('el-input',{attrs:{\"placeholder\":_vm.lang.soc_device_Input_title},model:{value:(_vm.newDevice.battery_capacity),callback:function ($$v) {_vm.$set(_vm.newDevice, \"battery_capacity\", $$v)},expression:\"newDevice.battery_capacity\"}},[_c('i',{attrs:{\"slot\":\"suffix\"},slot:\"suffix\"},[_vm._v(\"kWh\")])])],1):_vm._e()],1),_vm._v(\" \"),(_vm.battery_capacity_show)?_c('div',{staticStyle:{\"height\":\"14px\",\"line-height\":\"14px\",\"margin-bottom\":\"4px\",\"font-size\":\"14px\",\"text-align\":\"center\",\"color\":\"red\"}},[_vm._v(\"\\n \"+_vm._s(_vm.lang.soc_device_note)+\"\\n \")]):_vm._e(),_vm._v(\" \"),(_vm.homeKit_tip_show)?_c('div',{staticStyle:{\"padding\":\"8px 0 14px\",\"line-height\":\"20px\",\"margin-bottom\":\"4px\",\"font-size\":\"14px\",\"text-align\":\"center\",\"color\":\"#f6a944\"}},[_vm._v(\"\\n \"+_vm._s(_vm.lang.add_datalogger_reminder)+\"\\n \")]):_vm._e()],1),_vm._v(\" \"),_c('gdw-dialog-button-group',{attrs:{\"slot\":\"button\"},slot:\"button\"},[_c('goodwe-button',{on:{\"click\":_vm.cancleSubmitInverter}},[_vm._v(_vm._s(_vm.lang.cancel))]),_vm._v(\" \"),_c('goodwe-button',{on:{\"click\":_vm.submitInverterInfo}},[_vm._v(_vm._s(_vm.lang.amBeSure))])],1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../../../../node_modules/babel-loader/lib/index.js!../../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AddBatteryForm.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../../../node_modules/babel-loader/lib/index.js!../../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AddBatteryForm.vue?vue&type=script&lang=js&\"","\r\n","import { render, staticRenderFns } from \"./AddBatteryForm.vue?vue&type=template&id=5f508cdf&\"\nimport script from \"./AddBatteryForm.vue?vue&type=script&lang=js&\"\nexport * from \"./AddBatteryForm.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('gdw-dialog',{staticClass:\"add-device-dislog\",attrs:{\"show\":_vm.showAddBatteryDialog,\"width\":500,\"arrow\":\"\"}},[_c('h2',{attrs:{\"slot\":\"header\"},slot:\"header\"},[_vm._v(_vm._s(_vm.lang.Batteryinfo_AddBattery))]),_vm._v(\" \"),_c('div',{staticStyle:{\"margin\":\"10px 15px 16px\",\"border-bottom\":\"1px solid #d3d8e1\",\"border-top\":\"1px solid #fff\"}},[_c('el-form',{ref:\"newBatteryDialog\",staticClass:\"newBatteryDialog\",attrs:{\"model\":_vm.newBattery,\"rules\":_vm.deviceRules,\"label-width\":_vm.label_width}},[_c('el-form-item',{attrs:{\"label\":_vm.lang.template_name,\"prop\":\"name\"}},[_c('el-input',{attrs:{\"maxlength\":30,\"placeholder\":_vm.lang.deviceName},model:{value:(_vm.newBattery.name),callback:function ($$v) {_vm.$set(_vm.newBattery, \"name\", $$v)},expression:\"newBattery.name\"}})],1),_vm._v(\" \"),_c('el-form-item',{attrs:{\"label\":_vm.lang.SN,\"prop\":\"sn\"}},[_c('el-input',{attrs:{\"maxlength\":18,\"placeholder\":_vm.lang.Batteryinfo_Add_batterySNtip},model:{value:(_vm.newBattery.sn),callback:function ($$v) {_vm.$set(_vm.newBattery, \"sn\", $$v)},expression:\"newBattery.sn\"}})],1),_vm._v(\" \"),_c('el-form-item',{attrs:{\"label\":_vm.lang.Batteryinfo_ModuleNUM,\"prop\":\"moduleNum\"}},[_c('el-input',{attrs:{\"maxlength\":30,\"placeholder\":_vm.lang.Batteryinfo_ModuleNUM_tip2},model:{value:(_vm.newBattery.moduleNum),callback:function ($$v) {_vm.$set(_vm.newBattery, \"moduleNum\", $$v)},expression:\"newBattery.moduleNum\"}})],1)],1),_vm._v(\" \"),_c('div',{staticStyle:{\"height\":\"10px\"}})],1),_vm._v(\" \"),_c('gdw-dialog-button-group',{attrs:{\"slot\":\"button\"},slot:\"button\"},[_c('goodwe-button',{on:{\"click\":_vm.cancleSubmit}},[_vm._v(_vm._s(_vm.lang.cancel))]),_vm._v(\" \"),_c('goodwe-button',{on:{\"click\":_vm.submitBatteryInfo}},[_vm._v(_vm._s(_vm.lang.amBeSure))])],1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\n\r\n","import mod from \"-!../../../../../../../node_modules/babel-loader/lib/index.js!../../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AutoDetectBattery.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../../../node_modules/babel-loader/lib/index.js!../../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AutoDetectBattery.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./AutoDetectBattery.vue?vue&type=template&id=f50ac042&scoped=true&\"\nimport script from \"./AutoDetectBattery.vue?vue&type=script&lang=js&\"\nexport * from \"./AutoDetectBattery.vue?vue&type=script&lang=js&\"\nimport style0 from \"./AutoDetectBattery.vue?vue&type=style&index=0&id=f50ac042&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"f50ac042\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('gdw-dialog',{staticClass:\"add-device-dislog\",attrs:{\"show\":_vm.showAutoDetect,\"width\":500,\"arrow\":\"\"}},[_c('h2',{attrs:{\"slot\":\"header\"},slot:\"header\"},[_vm._v(_vm._s(_vm.lang.Mirco_New_AutoDetect))]),_vm._v(\" \"),_c('div',{staticClass:\"img-box\"},[_c('img',{attrs:{\"src\":_vm.detectImgUrl,\"alt\":\"\"}})]),_vm._v(\" \"),_c('div',{staticClass:\"detect-tip\"},[_c('span',{style:({color: _vm.noBatteryDetected? 'red':'black'})},[_vm._v(_vm._s(_vm.detectTip))])]),_vm._v(\" \"),_c('gdw-dialog-button-group',{attrs:{\"slot\":\"button\"},slot:\"button\"},[_c('goodwe-button',{on:{\"click\":_vm.cancelDetecting}},[_vm._v(\"\\n \"+_vm._s(!_vm.noBatteryDetected ? _vm.lang.AutoDetect_Detect_Cancel_button : _vm.lang.Batteryinfo_Module_not_to_add)+\"\\n \")]),_vm._v(\" \"),(!_vm.completeBtnShow && !_vm.noBatteryDetected)?_c('goodwe-button',{on:{\"click\":_vm.nextDetecting}},[_vm._v(\"\\n \"+_vm._s(_vm.lang.AutoDetect_Result_Next_button)+\"\\n \")]):_vm._e(),_vm._v(\" \"),(_vm.completeBtnShow && !_vm.noBatteryDetected)?_c('goodwe-button',{attrs:{\"disabled\":!_vm.detectFinished},on:{\"click\":_vm.completeDetecting}},[_vm._v(_vm._s(_vm.lang.AutoDetect_Detect_Complete_button)+\"\\n \")]):_vm._e(),_vm._v(\" \"),(_vm.noBatteryDetected)?_c('goodwe-button',{on:{\"click\":_vm.nowGoAdd}},[_vm._v(\"\\n \"+_vm._s(_vm.lang.Batteryinfo_Module_add)+\"\\n \")]):_vm._e()],1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\n\r\n","import mod from \"-!../../../../../../../node_modules/babel-loader/lib/index.js!../../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./BatteryResultList.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../../../node_modules/babel-loader/lib/index.js!../../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./BatteryResultList.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./BatteryResultList.vue?vue&type=template&id=42e47c98&scoped=true&\"\nimport script from \"./BatteryResultList.vue?vue&type=script&lang=js&\"\nexport * from \"./BatteryResultList.vue?vue&type=script&lang=js&\"\nimport style0 from \"./BatteryResultList.vue?vue&type=style&index=0&id=42e47c98&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"42e47c98\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('gdw-dialog',{staticClass:\"add-device-dislog\",attrs:{\"show\":_vm.showModal,\"width\":500,\"arrow\":\"\"}},[_c('h2',{attrs:{\"slot\":\"header\"},slot:\"header\"},[_vm._v(_vm._s(_vm.lang.Batteryinfo_Add_Autolist))]),_vm._v(\" \"),_c('div',{staticStyle:{\"margin\":\"16px auto\",\"font-size\":\"14px\",\"padding-left\":\"16px\"}},[_c('span',[_vm._v(_vm._s(_vm.lang.Batteryinfo_Add_Autolist_tip1))])]),_vm._v(\" \"),_c('div',{staticStyle:{\"padding\":\"0 16px\",\"margin-bottom\":\"16px\"}},[_c('div',{staticClass:\"device-table-th\"},[_c('div',{staticClass:\"dev-th-left\"},[_vm._v(_vm._s(_vm.lang.AutoDetect_Result_Tips_Name))]),_vm._v(\" \"),_c('div',{staticClass:\"dev-th-right\",staticStyle:{\"padding-left\":\"-16px\"}},[_vm._v(_vm._s(_vm.lang.AutoDetect_Result_Tips_SN))]),_vm._v(\" \"),_c('div',{staticClass:\"dev-th-opreate\",staticStyle:{\"color\":\"#FFF\"}},[_vm._v(\"\\n \"+_vm._s(_vm.lang.pssmHandle))])]),_vm._v(\" \"),_c('div',{staticClass:\"device-table-body\"},_vm._l((_vm.computedList),function(item,index){return _c('div',{key:index,staticClass:\"tab-list-item\"},[_c('div',{staticClass:\"dev-th-left\",attrs:{\"title\":item.batteryName}},[_vm._v(_vm._s(item.batteryName))]),_vm._v(\" \"),_c('div',{staticClass:\"dev-th-right\"},[_vm._v(_vm._s(item.batterySN))]),_vm._v(\" \"),(item.batterySN)?_c('div',{staticClass:\"dev-th-opreate\",staticStyle:{\"cursor\":\"pointer\"},on:{\"click\":function($event){return _vm.deleteOneSn(item.batterySN)}}},[_vm._v(\"\\n \"+_vm._s(_vm.lang.Delete)+\"\\n \")]):_vm._e()])}),0)]),_vm._v(\" \"),_c('div',{staticStyle:{\"margin\":\"10px auto\",\"padding\":\"0 16px\",\"font-size\":\"13px\"}},[_c('div',{staticStyle:{\"margin-bottom\":\"6px\"}},[_vm._v(_vm._s(_vm.lang.Batteryinfo_Add_Autolist_tip2))])]),_vm._v(\" \"),_c('gdw-dialog-button-group',{attrs:{\"slot\":\"button\"},slot:\"button\"},[_c('goodwe-button',{on:{\"click\":_vm.cancelDeviceList}},[_vm._v(_vm._s(_vm.lang.AutoDetect_Result_Cancel_button))]),_vm._v(\" \"),_c('goodwe-button',{on:{\"click\":_vm.completeDeviceList}},[_vm._v(_vm._s(_vm.lang.AutoDetect_Detect_Complete_button))])],1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../../../node_modules/babel-loader/lib/index.js!./AddGwBattery.js?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../../node_modules/babel-loader/lib/index.js!./AddGwBattery.js?vue&type=script&lang=js&\"","import AddBatteryForm from './AddBatteryModal/AddBatteryForm.vue';\r\nimport AutoDetectBattery from './AddBatteryModal/AutoDetectBattery.vue';\r\nimport BatteryResultList from './AddBatteryModal/BatteryResultList.vue';\r\nimport { notify } from '../../../../GoodweDeviceDetail/src/relativeFunUtl';\r\nexport default {\r\n name: 'AddGwBattery', // 新增电池弹出框\r\n props: {\r\n battery_way_show: { type: Boolean, required: true }, // 是否展示该弹出框\r\n pw_id: { type: String, required: true }, // 电站ID\r\n label_width: { type: String, required: true }, // label宽度\r\n },\r\n components: { AddBatteryForm, AutoDetectBattery, BatteryResultList},\r\n data:function() {\r\n return {\r\n lang: Goodwe.Ops.Resouces.Front,\r\n pw_id: this.pw_id,\r\n label_width: this.label_width,\r\n addBatteryFormShow: false, // 新增电池弹出框显隐\r\n batteryWay: lang.Mirco_New_AutoDetect, // 添加方式(默认第一种-自动扫描)\r\n addWayList: [\r\n {label: lang.Mirco_New_AutoDetect, val: lang.Mirco_New_AutoDetect, // 自动扫描\r\n imgUrl: '/Images/add_device/icon_auto@2x.png', activeUrl: '/Images/add_device/icon_autoover@2x.png'},\r\n {label: lang.Mirco_New_Manually, val: lang.Mirco_New_Manually, // 手动添加\r\n imgUrl: '/Images/add_device/icon_add@2x.png', activeUrl: '/Images/add_device/icon_addover@2x.png'},\r\n ],\r\n autoDetectShow: false, // 自动检测设备弹框的显隐\r\n deviceListShow: false, // 电池设备列表弹出框显隐\r\n deviceNowList: [], // 电池设备列表\r\n }\r\n },\r\n methods: {\r\n /** 取消电池添加 */\r\n cancelBatteryWay() {\r\n this.$emit('add_success', {flag: false});\r\n setTimeout(() => {\r\n this.resetModalData();\r\n }, 100);\r\n },\r\n /** 双击自动选择电池方式进入下一步 */\r\n dblHandleBatteryWay(item) {\r\n this.changeBatteryWay(item);\r\n setTimeout(() => {\r\n this.nextBatteryWay();\r\n }, 50);\r\n },\r\n /** 切换添加电池方式 */\r\n changeBatteryWay(item) {\r\n this.batteryWay = item.val;\r\n },\r\n /** 选择添加电池方式下一步 */\r\n nextBatteryWay() {\r\n this.battery_way_show = false;\r\n switch(this.batteryWay) {\r\n case lang.Mirco_New_AutoDetect: { // 自动检测\r\n this.autoDetectShow = true;\r\n break;\r\n }\r\n case lang.Mirco_New_Manually: { // 手动添加\r\n this.addBatteryFormShow = true;\r\n break;\r\n }\r\n default: {\r\n break;\r\n }\r\n }\r\n },\r\n /** 新增电池的弹框关闭后 */\r\n addSuccessHandle(res) {\r\n if(res.flag) { \r\n this.resetModalData();\r\n if(res.deviceList.length > 0) {\r\n this.$emit('add_success', res); \r\n }\r\n } else {\r\n this.cancelBatteryWay();\r\n }\r\n },\r\n /** 检测弹框关闭后 */\r\n detectHandle(res) {\r\n this.autoDetectShow = false;\r\n if(res.extra && res.extra === 'Add_Form_Show') {\r\n this.resetModalData();\r\n setTimeout(() => {\r\n this.addBatteryFormShow = true;\r\n }, 30);\r\n return\r\n }\r\n if(res.flag) {\r\n this.deviceNowList = res.deviceList;\r\n setTimeout(() => {\r\n this.deviceListShow = true;\r\n }, 30);\r\n } else {\r\n this.cancelBatteryWay();\r\n }\r\n },\r\n /** 电池设备列表弹框关闭后 */\r\n handleDeviceList(res) {\r\n if(res.flag) {\r\n this.resetModalData();\r\n notify(lang.Batteryinfo_Batterysuccess,3,'success');\r\n setTimeout(() => {\r\n this.$emit('add_success', res);\r\n }, 0);\r\n } else {\r\n this.cancelBatteryWay();\r\n }\r\n },\r\n \r\n /** 重置此弹出框数据 */\r\n resetModalData() {\r\n this.battery_way_show = false;\r\n this.addBatteryFormShow = false;\r\n this.autoDetectShow = false;\r\n this.deviceListShow = false;\r\n this.deviceNowList = [];\r\n this.batteryWay = lang.Mirco_New_AutoDetect;\r\n },\r\n }\r\n}","import { render, staticRenderFns } from \"./AddGwBattery.vue?vue&type=template&id=2e9c28db&scoped=true&\"\nimport script from \"./AddGwBattery.js?vue&type=script&lang=js&\"\nexport * from \"./AddGwBattery.js?vue&type=script&lang=js&\"\nimport style0 from \"./AddGwBattery.scss?vue&type=style&index=0&id=2e9c28db&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"2e9c28db\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[_c('gdw-dialog',{staticClass:\"add-device-dislog\",attrs:{\"show\":_vm.battery_way_show,\"width\":500,\"arrow\":\"\"}},[_c('h2',{attrs:{\"slot\":\"header\"},slot:\"header\"},[_vm._v(_vm._s(_vm.lang.Add_Device_Method_Selection))]),_vm._v(\" \"),_c('div',{staticStyle:{\"margin\":\"16px\",\"display\":\"flex\",\"justify-content\":\"space-between\",\"padding\":\"0 48px\"}},_vm._l((_vm.addWayList),function(item,index){return _c('div',{key:index,staticClass:\"add-device-item\",class:{'add-device-item-active': item.label === _vm.batteryWay},attrs:{\"title\":item.label},on:{\"click\":function($event){return _vm.changeBatteryWay(item)},\"dblclick\":function($event){return _vm.dblHandleBatteryWay(item)}}},[_c('div',{staticClass:\"mask-no-event\"}),_vm._v(\" \"),_c('div',{staticClass:\"device-img\"},[_c('img',{attrs:{\"src\":item.label === _vm.batteryWay ? item.activeUrl: item.imgUrl,\"alt\":\"\"}})]),_vm._v(\" \"),_c('div',{staticClass:\"device-label\",style:({color: item.label === _vm.batteryWay ? '#03BBD6': '#333333'})},[_vm._v(\"\\n \"+_vm._s(item.label)+\"\\n \")])])}),0),_vm._v(\" \"),_c('div',{staticClass:\"tips-box\"},[_c('h4',[_vm._v(_vm._s(_vm.lang.Mirco_New_AutoDetect))]),_vm._v(\" \"),_c('p',[_vm._v(_vm._s(_vm.lang.Batteryinfo_Add_AutoDetect_Note))]),_vm._v(\" \"),_c('h4',[_vm._v(_vm._s(_vm.lang.add)+\" \"+_vm._s(_vm.lang.Mirco_New_Manually))]),_vm._v(\" \"),_c('p',[_vm._v(_vm._s(_vm.lang.Batteryinfo_Add_Manually_Note))])]),_vm._v(\" \"),_c('gdw-dialog-button-group',{attrs:{\"slot\":\"button\"},slot:\"button\"},[_c('goodwe-button',{on:{\"click\":_vm.cancelBatteryWay}},[_vm._v(_vm._s(_vm.lang.cancel))]),_vm._v(\" \"),_c('goodwe-button',{on:{\"click\":_vm.nextBatteryWay}},[_vm._v(_vm._s(_vm.lang.next))])],1)],1),_vm._v(\" \"),_c('AddBatteryForm',{attrs:{\"showAddBatteryDialog\":_vm.addBatteryFormShow,\"pw_id\":_vm.pw_id,\"label_width\":_vm.label_width},on:{\"add_success\":_vm.addSuccessHandle}}),_vm._v(\" \"),_c('AutoDetectBattery',{attrs:{\"showAutoDetect\":_vm.autoDetectShow,\"pw_id\":_vm.pw_id},on:{\"detect_success\":_vm.detectHandle}}),_vm._v(\" \"),_c('BatteryResultList',{attrs:{\"showDeviceList\":_vm.deviceListShow,\"deviceList\":_vm.deviceNowList,\"pw_id\":_vm.pw_id},on:{\"handle_list\":_vm.handleDeviceList}})],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./MicroInverterList.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./MicroInverterList.vue?vue&type=script&lang=js&\"","\r\n\r\n","import { render, staticRenderFns } from \"./MicroInverterList.vue?vue&type=template&id=f65a7090&scoped=true&\"\nimport script from \"./MicroInverterList.vue?vue&type=script&lang=js&\"\nexport * from \"./MicroInverterList.vue?vue&type=script&lang=js&\"\nimport style0 from \"./MicroInverterList.vue?vue&type=style&index=0&id=f65a7090&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"f65a7090\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('gdw-dialog',{staticClass:\"add-device-dislog\",attrs:{\"show\":_vm.showModal,\"width\":500,\"arrow\":\"\"}},[_c('h2',{attrs:{\"slot\":\"header\"},slot:\"header\"},[_vm._v(_vm._s(_vm.lang.AutoDetect_Result_list_title))]),_vm._v(\" \"),_c('div',{staticStyle:{\"margin\":\"16px auto\",\"font-size\":\"14px\",\"padding-left\":\"16px\"}},[_c('span',[_vm._v(_vm._s(_vm.lang.AutoDetect_Result_Tips))])]),_vm._v(\" \"),_c('div',{staticStyle:{\"padding\":\"0 16px\",\"margin-bottom\":\"16px\"}},[_c('div',{staticClass:\"device-table-th\"},[_c('div',{staticClass:\"dev-th-left\"},[_vm._v(_vm._s(_vm.lang.AutoDetect_Result_Tips_Name))]),_vm._v(\" \"),_c('div',{staticClass:\"dev-th-right\",staticStyle:{\"padding-left\":\"-16px\"}},[_vm._v(_vm._s(_vm.lang.AutoDetect_Result_Tips_SN))]),_vm._v(\" \"),_c('div',{staticClass:\"dev-th-opreate\",staticStyle:{\"color\":\"#FFF\"}},[_vm._v(\"\\n \"+_vm._s(_vm.lang.pssmHandle))])]),_vm._v(\" \"),_c('div',{staticClass:\"device-table-body\"},_vm._l((_vm.computedList),function(item,index){return _c('div',{key:index,staticClass:\"tab-list-item\"},[_c('div',{staticClass:\"dev-th-left\",attrs:{\"title\":item.name}},[_vm._v(_vm._s(item.name))]),_vm._v(\" \"),_c('div',{staticClass:\"dev-th-right\"},[_vm._v(_vm._s(item.sn))]),_vm._v(\" \"),(item.sn)?_c('div',{staticClass:\"dev-th-opreate\",staticStyle:{\"cursor\":\"pointer\"},on:{\"click\":function($event){return _vm.deleteOneSn(item.sn)}}},[_vm._v(\"\\n \"+_vm._s(_vm.lang.Delete)+\"\\n \")]):_vm._e()])}),0)]),_vm._v(\" \"),_c('div',{staticStyle:{\"margin\":\"10px auto\",\"padding\":\"0 16px\",\"font-size\":\"13px\"}},[_c('div',{staticStyle:{\"margin-bottom\":\"6px\"}},[_vm._v(_vm._s(_vm.lang.AutoDetect_Result_Tips1))]),_vm._v(\" \"),_c('div',{staticClass:\"another-method\"},[_c('span',{on:{\"click\":_vm.goAddDatalogger}},[_vm._v(_vm._s(_vm.lang.AutoDetect_Result_AddDataloger))]),_vm._v(\"\\n  or \\n \"),_c('span',{on:{\"click\":_vm.goAddManually}},[_vm._v(_vm._s(_vm.lang.AutoDetect_Result_AddManually))])])]),_vm._v(\" \"),_c('gdw-dialog-button-group',{attrs:{\"slot\":\"button\"},slot:\"button\"},[_c('goodwe-button',{on:{\"click\":_vm.cancelDeviceList}},[_vm._v(_vm._s(_vm.lang.AutoDetect_Result_Cancel_button))]),_vm._v(\" \"),_c('goodwe-button',{on:{\"click\":_vm.nextDeviceList}},[_vm._v(_vm._s(_vm.lang.AutoDetect_Result_Next_button))])],1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../../../node_modules/babel-loader/lib/index.js!./MicroImgUpload.js?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../../node_modules/babel-loader/lib/index.js!./MicroImgUpload.js?vue&type=script&lang=js&\"","import { checkImgWidth } from '../../../../../utils/common';\r\nexport default {\r\n name: \"MicroImgUpload\",\r\n props: {\r\n pw_id: { type: String, required: true }, // 电站Id\r\n },\r\n data () {\r\n return {\r\n lang: Goodwe.Ops.Resouces.Front,\r\n fileList: [],\r\n }\r\n },\r\n watch: {\r\n fileList (v) {\r\n if (v.length > 0) {\r\n this.$nextTick(() => {\r\n checkImgWidth($(\".uploadContent .el-upload-list__item-thumbnail\").attr(\"src\")).then(res => {\r\n // 等比例缩放\r\n if (res.height - 240 > res.width - 250) {\r\n $(\".uploadContent .el-upload-list__item-thumbnail\").height(240)\r\n var rate = res.width / res.height\r\n $(\".uploadContent .el-upload-list__item-thumbnail\").width(rate * 240)\r\n }\r\n })\r\n })\r\n }\r\n },\r\n },\r\n methods: {\r\n /** 关闭弹框 */\r\n close () {\r\n this.fileList = []\r\n this.$emit('handleImgUpload', 'CLOSE')\r\n },\r\n /** 删除图片 */\r\n handleRemove (file) {\r\n this.fileList = this.fileList.filter((item) => {\r\n item.uid != file.uid\r\n })\r\n this.fileList = []\r\n },\r\n /** 上传图片成功 */\r\n uploadHook (file, fileList) {\r\n const fileSize = file.size || 0; // 上传图片大小Size\r\n const fileType = file.name.substring(file.name.lastIndexOf(\".\"));\r\n if(['.jpg', '.png', '.bmp'].includes(fileType)) {\r\n this.fileList = fileList;\r\n } else {\r\n this.$message.error(lang.Micro_UploadImage_Tips3);\r\n this.fileList = [];\r\n }\r\n if(fileSize !== 0) {\r\n if(fileSize/1024 < 1 || fileSize/1024/1024 > 5){ // 图片大小 (1KB-5MB)\r\n this.$message.error(lang.Mirco_New_ImageIdentification_validation);\r\n this.fileList = [];\r\n }\r\n } else {\r\n this.$message.error(lang.Micro_UploadImage_Tips6);\r\n this.fileList = [];\r\n }\r\n },\r\n /** 点击提交 */\r\n uploadClick () {\r\n if (this.fileList.length == 0) {\r\n this.$message.error(lang.Micro_UploadImage_Tips2); // 请先上传一张图片\r\n return;\r\n }\r\n const _this = this;\r\n const reader = new FileReader();\r\n reader.readAsDataURL(this.fileList[0].raw);\r\n reader.onload = function (e) {\r\n loading.showLoading();\r\n common.post('/v3/Layout/QueryReceiverQrcode', {\r\n stationId: _this.pw_id,\r\n image: e.target.result.split(\",\")[1]}).success(function(res){\r\n if(res.data === 100153) {\r\n _this.$message.error(lang.Micro_UploadImage_Tips13); // 当前只支持上传微逆设备的二维码提示\r\n _this.fileList = [];\r\n return\r\n }\r\n if(res.data) {\r\n const errorList = res.data['errorList'] || []; // 上传失败的SN列表\r\n const correctList = res.data['correctList'] || []; // 成功上传的SN列表\r\n if(errorList.length === 0) {\r\n if(correctList.length !== 0) {\r\n _this.$message.success(lang.operate_succss); // 上传图片操作成功\r\n _this.$emit('handleImgUpload', correctList);\r\n } else { // correctList.length === 0\r\n _this.$message.error(lang.Mirco_New_ImageIdentification_validation1); // 末扫描出相关微逆设备,请确认二维码是否正确!\r\n }\r\n _this.fileList = [];\r\n } else { // errorList.length !== 0 说明存在上传失败的SN\r\n const checkRecord = {\r\n errorSnList: [], // 失败SN列表\r\n correctSnList: [], // 成功SN列表\r\n errorStr: '', // 失败SN\r\n correctStr: '', // 成功SN\r\n errorCount: errorList.length || 0, // 失败SN数\r\n successCount: correctList.length || 0, // 成功SN数\r\n total: errorList.length + correctList.length, // 总数\r\n }\r\n errorList.forEach(item => { checkRecord['errorSnList'].push(item.sn)});\r\n checkRecord['errorStr'] = checkRecord['errorSnList'].join(', ');\r\n if(correctList.length > 0) {\r\n correctList.forEach(item => { checkRecord['correctSnList'].push(item.sn)});\r\n checkRecord['correctStr'] = checkRecord['correctSnList'].join(', ');\r\n } else {\r\n checkRecord['correctStr'] = lang.empty_data; \r\n }\r\n goodwe.confirm(\r\n \"
\" + \r\n \"
\" +\r\n \"\" +\r\n lang.totalRecords + \": \" \r\n + checkRecord['total'] + '' +\r\n \"\" +\r\n lang.Micro_UploadImage_Tips12 + \" \" \r\n + checkRecord['errorCount'] + '' +\r\n \"\" +\r\n lang.Micro_UploadImage_Tips11 + \" \" \r\n + checkRecord['successCount'] + '' + \r\n '
'+\r\n \"
\" +\r\n lang.Micro_UploadImage_Tips9 +\r\n '
'+\r\n \"
\" + \r\n checkRecord['errorStr'] +\r\n \"
\"+\r\n \"
\" +\r\n lang.Micro_UploadImage_Tips10 +\r\n '
' +\r\n \"
\" + \r\n checkRecord['correctStr'] +\r\n \"
\"+\r\n \"
\",\r\n [lang.ok,lang.cancel],\r\n function () { // 点击Ok\r\n this.close();\r\n if(correctList.length !== 0) {\r\n _this.$emit('handleImgUpload', correctList);\r\n } else {\r\n // 没有可以添加到当前电站的设备,请换张图片再试一次!\r\n _this.$message.error(lang.Mirco_New_ImageIdentification_validation2); \r\n }\r\n _this.fileList = [];\r\n },\r\n function () { // 点击cancel\r\n this.close();\r\n _this.fileList = [];\r\n });\r\n }\r\n } else {\r\n _this.$message.error(lang.Mirco_New_ImageIdentification_validation1); // 未扫描出相关微逆设备,请确认二维码是否正确!\r\n _this.fileList = [];\r\n }\r\n }.bind(this)).fail(function(fail){\r\n _this.$message.error(fail.msg);\r\n _this.fileList = [];\r\n }.bind(this)).all(function(){\r\n loading.disLoading();\r\n }.bind(this));\r\n }\r\n },\r\n },\r\n}\r\n","import { render, staticRenderFns } from \"./MicroImgUpload.vue?vue&type=template&id=8778feaa&scoped=true&\"\nimport script from \"./MicroImgUpload.js?vue&type=script&lang=js&\"\nexport * from \"./MicroImgUpload.js?vue&type=script&lang=js&\"\nimport style0 from \"./MicroImgUpload.scss?vue&type=style&index=0&id=8778feaa&scoped=true&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"8778feaa\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"add-micro-img\"},[_c('div',{staticClass:\"gdw-message-box active\",staticStyle:{\"z-index\":\"99999\",\"width\":\"600px\",\"display\":\"block\"}},[_c('div',{staticClass:\"gdw-message-box-header\"},[_c('h2',[_vm._v(_vm._s(_vm.lang.Micro_UploadImage))])]),_vm._v(\" \"),_c('div',{staticClass:\"gdw-message-box-container\"},[_c('div',{staticStyle:{\"height\":\"20px\"}}),_vm._v(\" \"),_c('el-upload',{ref:\"uploadContent\",staticClass:\"uploadContent\",attrs:{\"list-type\":\"picture-card\",\"auto-upload\":false,\"limit\":\"1\",\"on-change\":_vm.uploadHook,\"file-list\":_vm.fileList},scopedSlots:_vm._u([{key:\"file\",fn:function(ref){\nvar file = ref.file;\nreturn _c('div',{},[_c('img',{staticClass:\"el-upload-list__item-thumbnail\",attrs:{\"src\":file.url,\"alt\":\"\"}}),_vm._v(\" \"),_c('span',{staticClass:\"el-upload-list__item-actions\"},[_c('span',{staticClass:\"el-upload-list__item-delete\",on:{\"click\":function($event){return _vm.handleRemove(file)}}},[_c('i',{staticClass:\"el-icon-delete\"})])])])}}])},[_c('i',{staticClass:\"el-icon-plus\",attrs:{\"slot\":\"default\"},slot:\"default\"})]),_vm._v(\" \"),_c('p',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.fileList.length == 0),expression:\"fileList.length == 0\"}],staticClass:\"upload-type-des\"},[_vm._v(\"\\n \"+_vm._s(_vm.lang.Micro_UploadImage_Tips1)+\"\\n \")])],1),_vm._v(\" \"),_c('p',{staticClass:\"upload-des\"},[_vm._v(_vm._s(_vm.lang.Micro_UploadImage_Tips4))]),_vm._v(\" \"),_c('div',{staticClass:\"gdw-message-box-button-group\"},[_c('button',{on:{\"click\":_vm.close}},[_vm._v(_vm._s(_vm.lang.cancel))]),_vm._v(\" \"),_c('button',{on:{\"click\":_vm.uploadClick}},[_vm._v(_vm._s(_vm.lang.amBeSure))])])])])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\n\r\n","import mod from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AddAutoDetect.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AddAutoDetect.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./AddAutoDetect.vue?vue&type=template&id=0d028c90&scoped=true&\"\nimport script from \"./AddAutoDetect.vue?vue&type=script&lang=js&\"\nexport * from \"./AddAutoDetect.vue?vue&type=script&lang=js&\"\nimport style0 from \"./AddAutoDetect.vue?vue&type=style&index=0&id=0d028c90&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"0d028c90\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('gdw-dialog',{staticClass:\"add-device-dislog\",attrs:{\"show\":_vm.showAutoDetect,\"width\":500,\"arrow\":\"\"}},[_c('h2',{attrs:{\"slot\":\"header\"},slot:\"header\"},[_vm._v(_vm._s(_vm.lang.AutoDetect_Detect_DataloggerDetect))]),_vm._v(\" \"),_c('div',{staticClass:\"img-box\"},[_c('img',{attrs:{\"src\":_vm.detectImgUrl,\"alt\":\"\"}})]),_vm._v(\" \"),_c('div',{staticClass:\"detect-tip\"},[_c('span',{style:({color: _vm.detectAgain? 'red':'black'})},[_vm._v(_vm._s(_vm.detectTip))])]),_vm._v(\" \"),_c('gdw-dialog-button-group',{attrs:{\"slot\":\"button\"},slot:\"button\"},[_c('goodwe-button',{on:{\"click\":_vm.cancelDetecting}},[_vm._v(_vm._s(_vm.lang.AutoDetect_Detect_Cancel_button))]),_vm._v(\" \"),(!_vm.completeBtnShow && !_vm.detectAgain)?_c('goodwe-button',{on:{\"click\":_vm.nextDetecting}},[_vm._v(\"\\n \"+_vm._s(_vm.lang.AutoDetect_Result_Next_button))]):_vm._e(),_vm._v(\" \"),(_vm.completeBtnShow)?_c('goodwe-button',{attrs:{\"disabled\":!_vm.detectFinished},on:{\"click\":_vm.completeDetecting}},[_vm._v(_vm._s(_vm.lang.AutoDetect_Detect_Complete_button))]):_vm._e(),_vm._v(\" \"),(_vm.detectAgain)?_c('goodwe-button',{on:{\"click\":_vm.nextDetecting}},[_vm._v(\"\\n \"+_vm._s(_vm.lang.AutoDetect_Detect_Retry_button))]):_vm._e()],1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import AddDeviceForm from '../AddDeviceForm.vue';\r\nimport MicroInverterList from '../MicroInverterList.vue';\r\nimport MicroImgUpload from '../MicroImgUpload/MicroImgUpload.vue';\r\nimport AddAutoDetect from '../AddAutoDetect.vue'\r\nimport { DEVICE_TYPE_DATALOGGER, DEVICE_TYPE_MICROINVERTER } from '../../../../GoodweDeviceDetail/src/relativeFunUtl';\r\nexport default {\r\n name: 'AddMicroInverter', // 新增微逆弹出框\r\n props: {\r\n micro_way_show: { type: Boolean, required: true }, // 是否展示该弹出框\r\n pw_id: { type: String, required: true }, // 电站ID\r\n is_stored: { type: Boolean, required: true }, // 是否是储能电站\r\n label_width: { type: String, required: true }, // label宽度\r\n is_micro_layout: { type: Boolean, required: true }, // 是否在layout布局页面\r\n },\r\n components: { AddDeviceForm, AddAutoDetect, MicroInverterList, MicroImgUpload},\r\n data:function() {\r\n return {\r\n lang: Goodwe.Ops.Resouces.Front,\r\n pw_id: this.pw_id,\r\n label_width: this.label_width,\r\n deviceType: '', // 新增设备类型\r\n addDevieFormShow: false, // 新增设备弹出框显隐\r\n microWay: lang.Mirco_New_AutoDetect, // 添加微型逆变器方式(默认第一种-自动扫描)\r\n addWayList: [\r\n {label: lang.Mirco_New_AutoDetect, val: lang.Mirco_New_AutoDetect, // 自动扫描\r\n imgUrl: '/Images/add_device/icon_auto@2x.png', activeUrl: '/Images/add_device/icon_autoover@2x.png'},\r\n {label: lang.Mirco_New_ImageIdentification, val: lang.Mirco_New_ImageIdentification, // 二维码扫描\r\n imgUrl: '/Images/add_device/icon_image@2x.png', activeUrl: '/Images/add_device/icon_imageover@2x.png'},\r\n {label: lang.Mirco_New_Manually, val: lang.Mirco_New_Manually, // 手动添加\r\n imgUrl: '/Images/add_device/icon_add@2x.png', activeUrl: '/Images/add_device/icon_addover@2x.png'},\r\n ],\r\n needDetectDatalogger: [], // 需要检测的datalogger设备列表\r\n addByImgShow: false, // 图片上传弹出框的显隐\r\n deviceListShow: false, // 设备列表弹出框的显隐\r\n autoDetectShow: false, // 自动检测设备弹框的显隐\r\n deviceNowList: [], // 设备列表\r\n finish_add_show: false, // 微逆设备添加完成后弹框显隐\r\n isAddAnotherDevice: false, // 是否另外新增其他微逆设备\r\n }\r\n },\r\n methods: {\r\n /** 取消微逆设备添加 */\r\n cancelMicroWay() {\r\n this.$emit('add_success', {flag: false});\r\n setTimeout(() => {\r\n this.resetModalData();\r\n }, 500);\r\n },\r\n /** 打开添加设备弹出框 */\r\n addDeviceHandle(type) {\r\n this.deviceType = type;\r\n setTimeout(() => {\r\n this.addDevieFormShow = true;\r\n }, 30);\r\n },\r\n /** 双击自动选择微逆方式进入下一步 */\r\n dblHandleMicroWay(item) {\r\n this.changeMicroWay(item);\r\n setTimeout(() => {\r\n this.nextMicroWay();\r\n }, 50);\r\n },\r\n /** 切换添加微逆方式 */\r\n changeMicroWay(item) {\r\n this.microWay = item.val;\r\n },\r\n /** 选择添加微逆方式下一步 */\r\n nextMicroWay() {\r\n this.micro_way_show = false;\r\n const _this = this;\r\n switch(this.microWay) {\r\n case lang.Mirco_New_AutoDetect: { // 自动检测,是否添加网关进行自动检测\r\n loading.showLoading();\r\n common.post('/v3/Layout/QueryDataloggerBystationId', { stationId: this.pw_id }).success(function(res){\r\n if(res.data && res.data.length > 0) { // 如果已经添加网关,直接进入检测弹框界面\r\n this.needDetectDatalogger = res.data;\r\n this.autoDetectShow = true;\r\n } else { // 如果没有添加网关,询问是否先添加网关\r\n goodwe.confirm(\r\n \"

\"\r\n + \"

\"\r\n + lang.Micro_UploadImage_Tips7 + \"

\"\r\n + '

' + lang.Micro_UploadImage_Tips8 + '

'\r\n + \"

\", \r\n [lang.ok, lang.cancel],\r\n function () {\r\n this.close();\r\n _this.addDeviceHandle(DEVICE_TYPE_DATALOGGER); // 网关对应设备类型 1\r\n }, function () {\r\n this.close();\r\n _this.addDeviceHandle(DEVICE_TYPE_MICROINVERTER); // 微逆对应设备类型 6\r\n });\r\n }\r\n }.bind(this)).fail(function(fail){\r\n goodwe.alert(fail.msg);\r\n _this.cancelMicroWay();\r\n }).all(function(){\r\n loading.disLoading();\r\n }.bind(this));\r\n break;\r\n }\r\n case lang.Mirco_New_ImageIdentification: { // 上传图片检测设备\r\n this.addByImgShow = true;\r\n break;\r\n }\r\n case lang.Mirco_New_Manually: { // 手动添加微逆设备\r\n this.addDeviceHandle(DEVICE_TYPE_MICROINVERTER); // 微逆对应6\r\n break;\r\n }\r\n default: {\r\n break;\r\n }\r\n }\r\n },\r\n /** 新增设备的弹框关闭后 */\r\n addSuccessHandle(res) {\r\n if(res.flag) { // 如果另外新增的设备是微逆\r\n this.addDevieFormShow = false;\r\n if(res.deviceList.length === 0) { // 如果取消额外新增\r\n this.deviceListShow = true; // 重现检测完成的设备列表框\r\n return\r\n }\r\n if(res.type === DEVICE_TYPE_MICROINVERTER) { // 如果新增的设备是微逆\r\n setTimeout(() => {\r\n if(this.deviceNowList.length > 0) { // 另外新增单笔微逆设备\r\n const duplicateSn = this.deviceNowList.find(el=> {return el.sn === res.deviceList[0].sn});\r\n if(duplicateSn){\r\n this.$message.error(lang.Mirco_New_CheckDuplicate); // 请不要重复添加设备\r\n } else {\r\n this.deviceNowList.unshift(...res.deviceList);\r\n }\r\n setTimeout(() => {\r\n this.deviceListShow = true;\r\n }, 100);\r\n } else { // 手动新增微逆\r\n this.$emit('add_success', res);\r\n }\r\n }, 50);\r\n } else { // 如果另外新增的设备是datalogger网关,弹出检测框\r\n setTimeout(() => {\r\n if(res.deviceList && res.deviceList.length > 0) { // 如果额外新增网关成功\r\n const dataLoggerDevice = res.deviceList[0];\r\n const sendSn = this.isAddAnotherDevice ? dataLoggerDevice['sn'] : dataLoggerDevice['it_sn'];\r\n this.needDetectDatalogger = [sendSn];\r\n this.autoDetectShow = true; // 打开设备检测弹出框\r\n }\r\n }, 50);\r\n }\r\n } else {\r\n this.cancelMicroWay();\r\n }\r\n },\r\n /** 图片上传完成后 */\r\n handleMicroImg(flag) {\r\n this.resetModalData();\r\n if(flag === 'CLOSE') {\r\n this.$emit('add_success', {flag: false});\r\n } else {\r\n this.deviceNowList = flag;\r\n setTimeout(() => {\r\n this.deviceListShow = true;\r\n }, 30);\r\n }\r\n },\r\n /** 设备列表相关舍弃 */\r\n filterDeviceList(list) {\r\n this.deviceNowList = list;\r\n },\r\n /** 检测弹框关闭后 */\r\n detectHandle(res) {\r\n this.autoDetectShow = false;\r\n if(res.flag) {\r\n if(this.deviceNowList.length > 0) { // 如果属于额外新增检测结束\r\n if(res.deviceList.length !== 0) {\r\n this.deviceNowList.unshift(...res.deviceList);\r\n }\r\n } else { // 如果不是额外新增检测结束\r\n this.deviceNowList = res.deviceList;\r\n }\r\n setTimeout(() => {\r\n this.deviceListShow = true;\r\n }, 30);\r\n } else {\r\n this.cancelMicroWay();\r\n }\r\n },\r\n /** 设备列表弹框关闭后 */\r\n handleDeviceList(res) {\r\n if(res.flag) {\r\n this.resetModalData();\r\n if(!this.is_micro_layout) { // 如果当前不是在layout页面\r\n this.finish_add_show = true;\r\n } else {\r\n this.$emit('add_success', res);\r\n this.$message({ message: lang.operate_succss, type: 'success'});\r\n } \r\n } else {\r\n this.cancelMicroWay();\r\n }\r\n },\r\n /** 额外新增其他设备 */\r\n addAnotherDevice(type){ \r\n this.deviceListShow = false;\r\n this.deviceType = type;\r\n this.isAddAnotherDevice = true;\r\n setTimeout(() => {\r\n this.addDeviceHandle(type);\r\n }, 30);\r\n },\r\n /** 晚一点设置电站布局 */\r\n laterFinish() {\r\n this.finish_add_show = false;\r\n this.$emit('add_success', { flag: true });\r\n setTimeout(() => {\r\n this.resetModalData();\r\n }, 100);\r\n },\r\n /** 去设置电站布局 */\r\n nextFinish() {\r\n loading.showLoading();\r\n common.post(\"/v3/Layout/QueryLayoutIdByStationId\", // 先查询是否已经有电站布局\r\n { pw_id: this.pw_id }).success(function (res) {\r\n if(res.data) {\r\n const goType = res.data['layOutId'] ? 'edit' : 'add';\r\n location.href = '/powerstation/MicroInverterLayout?pw_id=' + this.pw_id + '&type=' + goType;\r\n }\r\n setTimeout(() => {\r\n this.resetModalData();\r\n }, 100);\r\n }.bind(this)).all(function () {\r\n loading.disLoading();\r\n }.bind(this));\r\n },\r\n /** 重置此弹出框数据 */\r\n resetModalData() {\r\n this.micro_way_show = false;\r\n this.addDevieFormShow = false;\r\n this.autoDetectShow = false;\r\n this.addByImgShow = false;\r\n this.deviceListShow = false;\r\n this.deviceNowList = [];\r\n this.finish_add_show = false;\r\n this.isAddAnotherDevice = false;\r\n this.microWay = lang.Mirco_New_AutoDetect;\r\n },\r\n }\r\n}","import mod from \"-!../../../../../../node_modules/babel-loader/lib/index.js!./AddMicroInverter.js?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../../node_modules/babel-loader/lib/index.js!./AddMicroInverter.js?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./AddMicroInverter.vue?vue&type=template&id=586cd1b9&scoped=true&\"\nimport script from \"./AddMicroInverter.js?vue&type=script&lang=js&\"\nexport * from \"./AddMicroInverter.js?vue&type=script&lang=js&\"\nimport style0 from \"./AddMicroInverter.scss?vue&type=style&index=0&id=586cd1b9&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"586cd1b9\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[_c('gdw-dialog',{staticClass:\"add-device-dislog\",attrs:{\"show\":_vm.micro_way_show,\"width\":500,\"arrow\":\"\"}},[_c('h2',{attrs:{\"slot\":\"header\"},slot:\"header\"},[_vm._v(_vm._s(_vm.lang.Add_Device_Method_Selection))]),_vm._v(\" \"),_c('div',{staticStyle:{\"margin\":\"16px\",\"display\":\"flex\"}},_vm._l((_vm.addWayList),function(item,index){return _c('div',{key:index,staticClass:\"add-device-item\",class:{'add-device-item-active': item.label === _vm.microWay},attrs:{\"title\":item.label},on:{\"click\":function($event){return _vm.changeMicroWay(item)},\"dblclick\":function($event){return _vm.dblHandleMicroWay(item)}}},[_c('div',{staticClass:\"mask-no-event\"}),_vm._v(\" \"),_c('div',{staticClass:\"device-img\"},[_c('img',{attrs:{\"src\":item.label === _vm.microWay ? item.activeUrl: item.imgUrl,\"alt\":\"\"}})]),_vm._v(\" \"),_c('div',{staticClass:\"device-label\",style:({color: item.label === _vm.microWay ? '#03BBD6': '#333333'})},[_vm._v(\"\\n \"+_vm._s(item.label)+\"\\n \")])])}),0),_vm._v(\" \"),_c('gdw-dialog-button-group',{attrs:{\"slot\":\"button\"},slot:\"button\"},[_c('goodwe-button',{on:{\"click\":_vm.cancelMicroWay}},[_vm._v(_vm._s(_vm.lang.cancel))]),_vm._v(\" \"),_c('goodwe-button',{on:{\"click\":_vm.nextMicroWay}},[_vm._v(_vm._s(_vm.lang.Micro_Complete_popup_Next_button))])],1)],1),_vm._v(\" \"),_c('AddDeviceForm',{attrs:{\"showAddDeviceDialog\":_vm.addDevieFormShow,\"newDeviceType\":_vm.deviceType,\"pw_id\":_vm.pw_id,\"is_stored\":_vm.is_stored,\"label_width\":_vm.label_width,\"isAddAnotherDevice\":_vm.isAddAnotherDevice},on:{\"add_success\":_vm.addSuccessHandle}}),_vm._v(\" \"),_c('AddAutoDetect',{attrs:{\"showAutoDetect\":_vm.autoDetectShow,\"detectDevice\":_vm.needDetectDatalogger,\"pw_id\":_vm.pw_id,\"isAddAnotherDevice\":_vm.isAddAnotherDevice},on:{\"detect_success\":_vm.detectHandle}}),_vm._v(\" \"),_c('gdw-dialog',{staticClass:\"add-device-dislog\",attrs:{\"show\":_vm.addByImgShow,\"width\":600,\"arrow\":\"\"}},[_c('MicroImgUpload',{attrs:{\"pw_id\":_vm.pw_id},on:{\"handleImgUpload\":_vm.handleMicroImg}})],1),_vm._v(\" \"),_c('MicroInverterList',{attrs:{\"showDeviceList\":_vm.deviceListShow,\"deviceList\":_vm.deviceNowList,\"pw_id\":_vm.pw_id},on:{\"handle_list\":_vm.handleDeviceList,\"filterList\":_vm.filterDeviceList,\"addAnotherDevice\":_vm.addAnotherDevice}}),_vm._v(\" \"),_c('gdw-dialog',{staticClass:\"add-device-dislog\",attrs:{\"show\":_vm.finish_add_show,\"width\":500,\"arrow\":\"\"}},[_c('h2',{attrs:{\"slot\":\"header\"},slot:\"header\"},[_vm._v(_vm._s(_vm.lang.hint))]),_vm._v(\" \"),_c('div',{staticStyle:{\"margin\":\"16px auto\",\"font-size\":\"14px\",\"padding\":\"16px\",\"text-align\":\"center\"}},[_c('span',[_vm._v(_vm._s(_vm.lang.Micro_Complete_popup_description))])]),_vm._v(\" \"),_c('gdw-dialog-button-group',{attrs:{\"slot\":\"button\"},slot:\"button\"},[_c('goodwe-button',{on:{\"click\":_vm.laterFinish}},[_vm._v(_vm._s(_vm.lang.Micro_Complete_popup_Later_button))]),_vm._v(\" \"),_c('goodwe-button',{on:{\"click\":_vm.nextFinish}},[_vm._v(_vm._s(_vm.lang.Micro_Complete_popup_Next_button))])],1)],1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\n\r\n","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./GoodweAddDevice.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./GoodweAddDevice.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./GoodweAddDevice.vue?vue&type=template&id=f41de750&scoped=true&\"\nimport script from \"./GoodweAddDevice.vue?vue&type=script&lang=js&\"\nexport * from \"./GoodweAddDevice.vue?vue&type=script&lang=js&\"\nimport style0 from \"./GoodweAddDevice.scss?vue&type=style&index=0&id=f41de750&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"f41de750\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[_c('gdw-dialog',{staticClass:\"add-device-dislog\",attrs:{\"show\":_vm.devAddShow,\"width\":500,\"arrow\":\"\"}},[_c('h2',{attrs:{\"slot\":\"header\"},slot:\"header\"},[_vm._v(_vm._s(_vm.lang.SelectdeviceType_Popup_Title))]),_vm._v(\" \"),_c('div',{staticClass:\"add-device-box\"},_vm._l((_vm.typeList),function(item,index){return _c('div',{key:index,staticClass:\"add-device-item\",class:{'add-device-item-active': item.label === _vm.deviceType},on:{\"dblclick\":function($event){return _vm.dblHandleDeviceType(item)},\"click\":function($event){return _vm.changeDeviceType(item)}}},[_c('div',{staticClass:\"mask-no-event\"}),_vm._v(\" \"),_c('div',{staticClass:\"device-img\"},[_c('img',{attrs:{\"src\":item.label === _vm.deviceType ? item.activeUrl: item.imgUrl,\"alt\":\"\"}})]),_vm._v(\" \"),_c('div',{staticClass:\"device-label\",style:({color: item.label === _vm.deviceType ? '#03BBD6': '#333333'})},[_vm._v(\"\\n \"+_vm._s(item.label)+\"\\n \")])])}),0),_vm._v(\" \"),_c('gdw-dialog-button-group',{attrs:{\"slot\":\"button\"},slot:\"button\"},[_c('goodwe-button',{on:{\"click\":_vm.cancelAddDeviceType}},[_vm._v(\"\\n \"+_vm._s(_vm.lang.SelectdeviceType_Popup_Cancel_button))]),_vm._v(\" \"),_c('goodwe-button',{on:{\"click\":_vm.nextAddDeviceType}},[_vm._v(\"\\n \"+_vm._s(_vm.lang.SelectdeviceType_Popup_Next_button))])],1)],1),_vm._v(\" \"),_c('AddDeviceForm',{ref:\"addDeviceFormRef\",attrs:{\"newDeviceType\":_vm.newDevice.type,\"showAddDeviceDialog\":_vm.addDevieFormShow,\"pw_id\":_vm.pwId,\"label_width\":_vm.labelWidth,\"isAddAnotherDevice\":_vm.isAddAnotherFlag,\"is_stored\":_vm.isStored},on:{\"add_success\":_vm.addSuccessHandle}}),_vm._v(\" \"),_c('AddMicroInverter',{ref:\"addMicroDeviceRef\",attrs:{\"micro_way_show\":_vm.addMicroInverterShow,\"pw_id\":_vm.pwId,\"is_stored\":_vm.isStored,\"label_width\":_vm.labelWidth,\"is_micro_layout\":_vm.isMicroLayout},on:{\"add_success\":_vm.addSuccessHandle}}),_vm._v(\" \"),_c('AddGwBattery',{ref:\"addGwBatteryRef\",attrs:{\"battery_way_show\":_vm.addGwBatteryShow,\"pw_id\":_vm.pwId,\"label_width\":_vm.labelWidth},on:{\"add_success\":_vm.addSuccessHandle}})],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../../../../node_modules/babel-loader/lib/index.js!./ScanAssociatedDevice.js?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../../../node_modules/babel-loader/lib/index.js!./ScanAssociatedDevice.js?vue&type=script&lang=js&\"","import { notify } from '../../../relativeFunUtl';\r\nexport default {\r\n name: 'ScanAssociatedDevice',\r\n props: {\r\n showModal: {type: Boolean, required: true},\r\n pw_id: {type: String, required: true},\r\n },\r\n watch: {\r\n showModal(val) {\r\n this.showScanSelect = val;\r\n return val\r\n }\r\n },\r\n data(){\r\n return {\r\n lang:Goodwe.Ops.Resouces.Front,\r\n pw_id: this.pw_id,\r\n showScanSelect: this.showModal,\r\n scanSelectOptions: [ // 扫描选择项\r\n {\r\n imgUrl: '/Images/inverter/1.png',\r\n scanTitle: lang.scanDeviceByDataLogger,\r\n scanDes: lang.scanDeviceByDataLogerTip,\r\n scanFlag: 0,\r\n arrowUrl: '/Images/icon-new/arrow_gray_ge.png',\r\n },\r\n {\r\n imgUrl: '/Images/inverter/2.png',\r\n scanTitle: lang.scanDeviceByInv,\r\n scanDes: lang.scanDeviceByInvTip,\r\n scanFlag: 1,\r\n arrowUrl: '/Images/icon-new/arrow_gray_ge.png',\r\n },\r\n ],\r\n scanType: -1, // 扫描方式\r\n showScanningList: false, // 扫描后的列表显隐\r\n scanningLoading: false, // 是否正在扫描\r\n scanInverAddParam: null, // 扫描设备新增参数\r\n scanList: {\r\n inverters: [], // 扫描出的逆变器列表\r\n environmentDevices: [], // 扫描出的环测列表\r\n },\r\n statusMap: {\r\n 1: {text: lang.Parallel_Scan_by_inverter_result_to_be_added, fontColor: '#df171d'},\r\n 2: {text: lang.Parallel_Scan_by_inverter_result_to_be_bound, fontColor: '#F59A23'},\r\n 3: {text: lang.Parallel_Scan_by_inverter_result_Added, fontColor: '#2ABE4A'},\r\n }\r\n }\r\n },\r\n methods: {\r\n /** 取消添加扫描后的设备 */\r\n cancelAddScanDevice() {\r\n this.$emit('add_success', false);\r\n setTimeout(() => {\r\n this.clearPageData();\r\n }, 500);\r\n },\r\n //扫描设备\r\n scanDevice (type) {\r\n this.resetModalData();\r\n this.clearPageData();\r\n setTimeout(() => {\r\n this.scanType = type;\r\n this.showScanningList = true;\r\n this.scanningLoading = true;\r\n }, 30);\r\n setTimeout(function () {\r\n common.post(\"v1/PwInventers/ScanEquipment\", { \"id\": this.pw_id, type}).success(function (res) {\r\n this.scanningLoading = false;\r\n this.showScanningList = true;\r\n if(this.scanType == 0){\r\n this.scanList = {\r\n inverters: res.data.inverters || [], \r\n environmentDevices: res.data.environmentDevices || []\r\n };\r\n }\r\n if(this.scanType == 1){\r\n this.scanInverAddParam = res.data;\r\n if(this.scanInverAddParam && this.scanInverAddParam.length > 0) {\r\n this.scanInverAddParam.forEach(item => {\r\n this.scanList.inverters.push({\r\n parallel_code: item.parallel_code, \r\n parallels: item.parallelInverters\r\n })\r\n });\r\n }\r\n }\r\n }.bind(this)).fail(function (fail) {\r\n notify(fail.msg, 3);\r\n })\r\n }.bind(this), 5000)\r\n },\r\n /** 将扫描数据入电站 */\r\n addScanDevice() {\r\n // 这里要先判断添加时是否有串货,是否有串货要先调用一次添加接口,但是参数先不传iscontinue\r\n if(this.scanType == 1){\r\n var param={\"id\": this.pw_id, \"paralleldata\": this.scanInverAddParam};\r\n var api = \"v1/PwInventers/AddScanEquipmentForFarallel\";\r\n }else{\r\n var param={ \"id\": this.pw_id };\r\n var api = \"v1/PwInventers/AddScanEquipment\";\r\n }\r\n this.showScanningList = false;\r\n this.addScanList(api, param, false);\r\n },\r\n /** 数据入库 */\r\n addScanList(api, param, closeSmuggle) {\r\n const _this = this;\r\n loading.showLoading()\r\n common.post(api,param).success(function (res) {\r\n if(res.data.isSmuggle && !closeSmuggle){\r\n var html=\"\";\r\n for(var i=0;i\"+res.data.sns[i]+\"\";\r\n }\r\n goodwe._confirm({\r\n title: Goodwe.Ops.Resouces.Front.rmTip,\r\n template:\r\n '
'\r\n + '

' + Goodwe.Ops.Resouces.Front.code_100085 + '

'\r\n + '
    '\r\n + '

    ' + Goodwe.Ops.Resouces.Front.code_100086+ '

    '+\r\n '
    ',\r\n buttons:[Goodwe.Ops.Resouces.Front.addDevice,Goodwe.Ops.Resouces.Front.cancel],\r\n ok:function(){\r\n //这里要先判断添加时是否有串货,确认添加后,但是参数需要传iscontinue=true\r\n let paramAgain = {};\r\n if(_this.scanType == 1){\r\n paramAgain = { \"id\": _this.pw_id, \"iscontinue\":true ,\"paralleldata\":_this.scanInverAddParam};\r\n var api = \"v1/PwInventers/AddScanEquipmentForFarallel\"\r\n }else{\r\n paramAgain = { \"id\": _this.pw_id, \"iscontinue\":true };\r\n var api = \"v1/PwInventers/AddScanEquipment\"\r\n }\r\n _this.addScanList(api, paramAgain, true);\r\n this.close()\r\n },\r\n cancel:function () { }\r\n })\r\n if(res.data.isAllSmuggle&&_this.scanList.meters.length<1&&_this.scanList.environmentDevices.length<1){\r\n var btn=document.getElementById(\"sn_list\").parentNode.parentNode.parentNode.querySelector(\".gdw-message-box-button-group button:nth-child(2)\");\r\n btn.disabled=true;\r\n btn.style.backgroundColor=\"#DDD\";\r\n }\r\n document.getElementById(\"sn_list\").innerHTML = html;\r\n } else {\r\n notify(lang.operate_succss, 3, 'success');\r\n _this.resetModalData();\r\n _this.clearPageData();\r\n _this.$emit('add_success', {flag: true});\r\n }\r\n }).fail(function (fail) {\r\n notify(lang[fail.msg], 3);\r\n }).all(function () {\r\n loading.disLoading();\r\n })\r\n },\r\n /** 还原模态框数据 */\r\n resetModalData() {\r\n this.showScanSelect = false;\r\n this.showScanningList = false;\r\n this.scanInverAddParam = null;\r\n this.scanningLoading = false;\r\n },\r\n /** 清空页面数据 */\r\n clearPageData() {\r\n this.scanType = -1;\r\n this.scanList = {\r\n inverters: [],\r\n environmentDevices: []\r\n };\r\n }\r\n },\r\n}","import { render, staticRenderFns } from \"./ScanAssociatedDevice.vue?vue&type=template&id=5958dfcd&scoped=true&\"\nimport script from \"./ScanAssociatedDevice.js?vue&type=script&lang=js&\"\nexport * from \"./ScanAssociatedDevice.js?vue&type=script&lang=js&\"\nimport style0 from \"./ScanAssociatedDevice.scss?vue&type=style&index=0&id=5958dfcd&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"5958dfcd\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[_c('el-dialog',{staticClass:\"elment-goodwe-dialog string-select-dialog\",attrs:{\"visible\":_vm.showScanSelect,\"close-on-click-modal\":false,\"close-on-press-escape\":false,\"title\":_vm.lang.scanDevicePopupTitle,\"show-close\":true,\"width\":\"520px\"},on:{\"update:visible\":function($event){_vm.showScanSelect=$event}}},[_c('p',{staticClass:\"scan-tip\"},[_vm._v(_vm._s(_vm.lang.scanDevicePopupTip))]),_vm._v(\" \"),_c('div',{staticClass:\"scan-select-content\"},_vm._l((_vm.scanSelectOptions),function(item,index){return _c('a',{key:(index + \"opt\"),staticStyle:{\"cursor\":\"pointer\"},on:{\"click\":function($event){return _vm.scanDevice(item.scanFlag)}}},[_c('div',{staticClass:\"scan-device-select\"},[_c('div',{staticClass:\"scan-device-select-container\"},[_c('img',{staticStyle:{\"width\":\"50px\",\"height\":\"50px\"},attrs:{\"src\":item.imgUrl,\"alt\":\"\"}}),_vm._v(\" \"),_c('div',[_c('p',{staticClass:\"scan-device-select-title\"},[_vm._v(_vm._s(item.scanTitle))]),_vm._v(\" \"),_c('p',{staticClass:\"scan-device-select-des\"},[_vm._v(_vm._s(item.scanDes))]),_vm._v(\" \"),(item.scanFlag === 1)?_c('p',{staticClass:\"scan-device-tip\"},[_c('img',{attrs:{\"src\":\"/Images/add_device/tip.png\",\"alt\":\"\"}}),_vm._v(\" \"),_c('span',[_vm._v(_vm._s(_vm.lang.Parallel_Scan_by_inverter_tip))])]):_vm._e()])]),_vm._v(\" \"),_c('img',{staticClass:\"scan-device-select-arrow\",attrs:{\"src\":item.arrowUrl,\"alt\":\"\"}})])])}),0)]),_vm._v(\" \"),_c('gdw-dialog',{attrs:{\"show\":_vm.showScanningList && _vm.scanType!== 1,\"width\":870,\"arrow\":\"\"}},[_c('h2',{attrs:{\"slot\":\"header\"},slot:\"header\"},[_vm._v(_vm._s(_vm.lang.NewDevices))]),_vm._v(\" \"),_c('div',{staticClass:\"scanning-title\"},[_vm._v(_vm._s(_vm.lang.Discoverableequipment))]),_vm._v(\" \"),_c('div',{staticClass:\"device-list\"},[_c('p',{staticClass:\"device-list-title\"},[_vm._v(_vm._s(_vm.lang.pssmInverterName))]),_vm._v(\" \"),(_vm.scanList.inverters.length<=0)?_c('p',{staticClass:\"p-no-data\"},[_vm._v(_vm._s(_vm.lang.scanNoDevices))]):_vm._e(),_vm._v(\" \"),(_vm.scanList.inverters.length>0)?_c('p',{staticClass:\"p-has-data\"},[_vm._v(_vm._s(_vm.lang.scanInverters))]):_vm._e(),_vm._v(\" \"),(_vm.scanList.inverters.length>0)?_c('ul',{staticClass:\"device-list-con clearfix\"},_vm._l((_vm.scanList.inverters),function(item,index){return _c('li',{key:index,staticClass:\"inverter-item\",attrs:{\"title\":item}},[((index+1)%5!==0 && index!=_vm.scanList.inverters.length-1)?_c('span',[_vm._v(_vm._s(item)+\";\")]):_c('span',[_vm._v(_vm._s(item))])])}),0):_vm._e()]),_vm._v(\" \"),_c('div',{staticClass:\"device-list\"},[_c('p',{staticClass:\"device-list-title\"},[_vm._v(_vm._s(_vm.lang.EMI))]),_vm._v(\" \"),(_vm.scanList.environmentDevices.length<=0)?_c('p',{staticClass:\"p-no-data\"},[_vm._v(_vm._s(_vm.lang.scanNoDevices))]):_vm._e(),_vm._v(\" \"),(_vm.scanList.environmentDevices.length>0)?_c('p',{staticClass:\"p-has-data\"},[_vm._v(_vm._s(_vm.lang.scanEMI))]):_vm._e(),_vm._v(\" \"),(_vm.scanList.environmentDevices.length>0)?_c('ul',{staticClass:\"device-list-con clearfix\"},_vm._l((_vm.scanList.environmentDevices),function(item,index){return _c('li',{key:index,staticClass:\"emi-item\",attrs:{\"title\":item}},[((index+1)%16!=0&&index!== _vm.scanList.environmentDevices.length-1)?_c('span',[_vm._v(_vm._s(item)+\";\")]):_c('span',[_vm._v(_vm._s(item))])])}),0):_vm._e()]),_vm._v(\" \"),_c('gdw-dialog-button-group',{attrs:{\"slot\":\"button\"},slot:\"button\"},[_c('goodwe-button',{on:{\"click\":_vm.cancelAddScanDevice}},[_vm._v(_vm._s(_vm.lang.cancel))]),_vm._v(\" \"),_c('goodwe-button',{attrs:{\"disabled\":_vm.scanList.inverters.length == 0 && _vm.scanList.environmentDevices.length == 0},on:{\"click\":_vm.addScanDevice}},[_vm._v(\"\\n \"+_vm._s(_vm.lang.add))])],1),_vm._v(\" \"),_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.scanningLoading),expression:\"scanningLoading\"}],staticClass:\"scanning-bg\"},[_c('img',{attrs:{\"src\":\"/Images/add_device/auto_scan.gif\"}}),_vm._v(\" \"),_c('p',{staticClass:\"scanning-bg-text\"},[_vm._v(_vm._s(_vm.lang.Scanningnewdevice))])])],1),_vm._v(\" \"),_c('gdw-dialog',{attrs:{\"show\":_vm.showScanningList && _vm.scanType == 1,\"width\":765,\"arrow\":\"\"}},[_c('h2',{attrs:{\"slot\":\"header\"},slot:\"header\"},[_vm._v(_vm._s(_vm.lang.NewDevices))]),_vm._v(\" \"),_c('div',{staticClass:\"device-list scan-device-list\",staticStyle:{\"min-height\":\"200px\",\"max-height\":\"500px\",\"overflow\":\"hidden\"}},[(_vm.scanList.inverters.length>0)?_c('div',[_c('div',{staticClass:\"scan-result-tip\"},[_vm._v(\"\\n \"+_vm._s(_vm.lang.Parallel_Scan_by_inverter_result_tip)+\"\\n \")]),_vm._v(\" \"),_c('div',{staticClass:\"scan-result-list\"},[_c('el-scrollbar',{staticStyle:{\"width\":\"100%\",\"height\":\"350px\"},attrs:{\"wrap-class\":'el-gw-scroll'}},_vm._l((_vm.scanList.inverters),function(item){return _c('div',{key:item.mainSn,staticClass:\"scan-result-item\"},[_c('div',{staticClass:\"item-main-sn\"},[_c('img',{attrs:{\"src\":\"/Images/add_device/img_yunban.png\",\"alt\":\"\"}}),_vm._v(\" \"),_c('span',[_vm._v(_vm._s(item.parallel_code))])]),_vm._v(\" \"),(item.parallels && item.parallels.length>0)?_c('div',{staticClass:\"item-parallel-con\"},_vm._l((item.parallels),function(parallel){return _c('div',{key:parallel,class:{'item-parallel': item.parallels.length !== 1,\n 'item-parallel-one': item.parallels.length === 1}},[_c('div',[_vm._v(\"\\n \"+_vm._s(parallel.inventerSN)+\" \\n \"),(parallel.type === 1)?_c('img',{staticStyle:{\"margin\":\"0 0 2px 4px\"},attrs:{\"src\":\"/Images/add_device/img_master.png\"}}):_vm._e()]),_vm._v(\" \"),_c('div',{style:({color: _vm.statusMap[parallel.status]['fontColor']})},[_c('span',{staticStyle:{\"margin-right\":\"32px\"}},[_vm._v(\" \")]),_vm._v(\"\\n \"+_vm._s(_vm.statusMap[parallel.status]['text'] || '--')+\"\\n \")])])}),0):_vm._e()])}),0)],1)]):_vm._e(),_vm._v(\" \"),(!_vm.scanningLoading && _vm.scanList.inverters.length == 0)?_c('div',[_c('p',{staticStyle:{\"text-align\":\"center\",\"margin-top\":\"80px\"}},[_c('img',{attrs:{\"src\":\"/Images/icon-new/no_data_2.png\",\"alt\":\"\"}})]),_vm._v(\" \"),_c('p',{staticStyle:{\"color\":\"#373438\",\"padding-top\":\"25px\",\"text-align\":\"center\",\"margin-bottom\":\"20px\"}},[_vm._v(\"\\n \"+_vm._s(_vm.lang.no_device)+\"\\n \")])]):_vm._e()]),_vm._v(\" \"),_c('gdw-dialog-button-group',{staticStyle:{\"margin-top\":\"16px\"},attrs:{\"slot\":\"button\"},slot:\"button\"},[_c('goodwe-button',{on:{\"click\":_vm.cancelAddScanDevice}},[_vm._v(_vm._s(_vm.lang.cancel))]),_vm._v(\" \"),_c('goodwe-button',{attrs:{\"disabled\":_vm.scanList.inverters.length == 0 && _vm.scanList.environmentDevices.length == 0},on:{\"click\":_vm.addScanDevice}},[_vm._v(\"\\n \"+_vm._s(_vm.lang.Parallel_Scan_by_inverter_result_AddBTN)+\"\\n \")])],1),_vm._v(\" \"),_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.scanningLoading),expression:\"scanningLoading\"}],staticClass:\"scanning-bg\"},[_c('img',{attrs:{\"src\":\"/Images/add_device/auto_scan.gif\"}}),_vm._v(\" \"),_c('p',{staticClass:\"scanning-bg-text\"},[_vm._v(_vm._s(_vm.lang.Scanningnewdevice))])])],1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import InverterList from './components/InverterList/InverterList.vue';\r\nimport MicroDeviceList from './components/MicroDeviceList/MicroDeviceList.vue';\r\nimport DataLoggerList from './components/DataLoggerList/DataLoggerList.vue';\r\nimport BatteryList from './components/BatteryList/BatteryList.vue';\r\nimport EvChargerList from './components/EvChargerList/EvChargerList.vue';\r\nimport GoodweAddDevice from '../../GoodweAddDevice/src/GoodweAddDevice.vue';\r\nimport ScanAssociatedDevice from './dialogs/components/ScanAssociatedDevice/ScanAssociatedDevice.vue';\r\nimport { titleWidthHandle, DEVICE_TYPE_TABS } from './relativeFunUtl';\r\nexport default {\r\n name: \"GoodweDeviceDetail\",\r\n components: {\r\n InverterList, MicroDeviceList, DataLoggerList,\r\n BatteryList, EvChargerList, GoodweAddDevice,\r\n ScanAssociatedDevice,\r\n },\r\n props:{\r\n stationId:{type: String, required: true}, // 电站id\r\n fromPage: {type: String, required: false}, // 从哪个页面跳转过来\r\n },\r\n data(){\r\n return {\r\n lang:Goodwe.Ops.Resouces.Front, // 语言包\r\n listTitleWidth: titleWidthHandle(), // 表头宽度\r\n canAdd: canAdd, // 是否有权限新增\r\n pw_id: this.stationId, // 电站id\r\n pw_add: \"\", // 电站地址\r\n pw_name: \"\", // 电站名字\r\n is_stored: false, // 是否是储能电站\r\n showScanSelect: false, // 扫描选项弹框,储能并机需求使用\r\n bind_parallel: false, // 是否是储能并机\r\n showAddDeviceDialog: false, // 增加设备弹框 \r\n activeTab: lang.SelectdeviceType_Popup_Inverter, // 当前的tab(默认 Inverter)\r\n tabsList: DEVICE_TYPE_TABS,\r\n } \r\n },\r\n methods: {\r\n /** 设置label_width */\r\n setLabelWidth(){\r\n this.label_width=\"180px\";\r\n if(getCookie(\"language\")==\"pt-pt\"){\r\n this.label_width=\"210px\";\r\n }\r\n if(getCookie(\"language\")==\"ko-kr\"){\r\n this.label_width=\"130px\";\r\n }\r\n if(getCookie(\"language\")==\"it-it\"){\r\n this.label_width=\"220px\";\r\n }\r\n },\r\n /** 点击新增设备 */\r\n handleClickAddNewDeviceBtn() {\r\n this.showScanSelect = false;\r\n this.showAddDeviceDialog = false;\r\n this.$refs.scanDeviceRef.resetModalData();\r\n setTimeout(() => {\r\n this.showAddDeviceDialog = true;\r\n }, 100);\r\n },\r\n /** 点击扫描其他设备 */\r\n handleScanDevice() {\r\n this.showAddDeviceDialog = false;\r\n this.showScanSelect = false;\r\n this.$refs.gdwAddDevice.resetModalData();\r\n setTimeout(() => {\r\n this.showScanSelect = true;\r\n }, 100);\r\n },\r\n /** 获取电站信息 */\r\n getPwInfo(isRefresh) {\r\n this.resetData();\r\n var _this = this;\r\n common.post(\"v1/PwInventers/GetDeviceDetailBaseInfo\", { \"pw_id\": this.pw_id }).success(function (res) {\r\n if(res.data && res.data.is_stored){\r\n this.tabsList = [...DEVICE_TYPE_TABS,{ label: lang.battery, name: lang.battery, value: lang.battery }]\r\n }\r\n if(res.data && !res.data.is_stored) {\r\n this.tabsList = [...DEVICE_TYPE_TABS];\r\n }\r\n this.is_stored = res.data.is_stored;\r\n this.pw_add = res.data.address || res.data.location;\r\n this.bind_parallel = res.data.bind_parallel;\r\n this.pw_name = res.data.name;\r\n if(isRefresh && this.bind_parallel){\r\n goodwe._confirm({\r\n title:Goodwe.Ops.Resouces.Front.updateDevicePopupTitle,\r\n template:`

    ${Goodwe.Ops.Resouces.Front.updateDevicePopupDesc}

    `,\r\n buttons:[Goodwe.Ops.Resouces.Front.updateDevicePopupComfirm,Goodwe.Ops.Resouces.Front.updateDevicePopupCnc],\r\n ok:function(){\r\n _this.$refs.scanDeviceRef.scanDevice(1);\r\n this.close()\r\n },\r\n cancel:function(){}\r\n })\r\n }\r\n }.bind(this)).all(function () {\r\n }.bind(this))\r\n },\r\n /** 点击tab */\r\n handleTabClick(tab) {\r\n this.showAddDeviceDialog = false\r\n this.activeTab = tab.name;\r\n },\r\n /** 刷新页面 */\r\n refreshPage(res) {\r\n this.$refs.gdwAddDevice.resetModalData();\r\n this.$refs.scanDeviceRef.resetModalData();\r\n if(res.flag) {\r\n this.getPwInfo();\r\n switch (this.activeTab) {\r\n case lang.SelectdeviceType_Popup_Inverter: {\r\n this.$refs.inverterRef.initListHandle(true);\r\n break;\r\n }\r\n case lang.SelectdeviceType_Popup_MicroInverter: {\r\n this.$refs.microDeviceRef.initListHandle(true);\r\n break;\r\n }\r\n case lang.DataLogger: {\r\n this.$refs.dataLoggerRef.initListHandle(true);\r\n break;\r\n }\r\n case lang.battery: {\r\n this.$refs.batteryRef.initListHandle(true);\r\n break;\r\n }\r\n case lang.devicetype_EVCharge: {\r\n this.$refs.evChargerRef.initListHandle(true);\r\n }\r\n default:\r\n break;\r\n }\r\n }\r\n },\r\n /** 重置数据 */\r\n resetData() {\r\n this.showScanSelect = false;\r\n this.showAddDeviceDialog = false;\r\n },\r\n },\r\n watch:{\r\n stationId(){\r\n this.pw_id = this.stationId;\r\n this.activeTab = lang.SelectdeviceType_Popup_Inverter;\r\n this.tabsList = DEVICE_TYPE_TABS;\r\n this.resetData();\r\n this.getPwInfo();\r\n },\r\n },\r\n created() {\r\n // 如果从电站布局页面(MicroInverterLayout)返回此页面\r\n if(this.fromPage === 'MicroInverterLayout') { \r\n this.activeTab = lang.SelectdeviceType_Popup_MicroInverter;\r\n }\r\n this.getPwInfo();\r\n },\r\n mounted() {\r\n this.setLabelWidth();\r\n }\r\n}","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!./GoodweDeviceDetail.js?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!./GoodweDeviceDetail.js?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./GoodweDeviceDetail.vue?vue&type=template&id=1660af72&scoped=true&\"\nimport script from \"./GoodweDeviceDetail.js?vue&type=script&lang=js&\"\nexport * from \"./GoodweDeviceDetail.js?vue&type=script&lang=js&\"\nimport style0 from \"./GoodweDeviceDetail.scss?vue&type=style&index=0&id=1660af72&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"1660af72\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{attrs:{\"id\":\"station-info\"}},[_c('div',{staticClass:\"body-header\"},[_c('div',{staticClass:\"station-name\"},[_vm._v(_vm._s(_vm.pw_name))]),_vm._v(\" \"),_c('div',{staticClass:\"station-address clearfix\"},[_c('p',{staticClass:\"address-detail l\"},[_vm._v(_vm._s(_vm.pw_add))]),_vm._v(\" \"),(_vm.canAdd)?_c('button',{staticClass:\"btn_primary r\",staticStyle:{\"margin-left\":\"20px\"},on:{\"click\":_vm.handleClickAddNewDeviceBtn}},[_vm._v(\"\\n \"+_vm._s(_vm.lang.add)+\"\\n \")]):_vm._e(),_vm._v(\" \"),(_vm.canAdd)?_c('el-button',{staticClass:\"r\",staticStyle:{\"color\":\"#03BBD6\",\"text-decoration\":\"underline\"},attrs:{\"type\":\"text\"},on:{\"click\":_vm.handleScanDevice}},[_vm._v(\"\\n \"+_vm._s(_vm.lang.Scanotherdevices)+\"\\n \")]):_vm._e()],1)]),_vm._v(\" \"),_c('div',{staticClass:\"tabs\"},[_c('el-tabs',{on:{\"tab-click\":_vm.handleTabClick},model:{value:(_vm.activeTab),callback:function ($$v) {_vm.activeTab=$$v},expression:\"activeTab\"}},_vm._l((_vm.tabsList),function(item,index){return _c('el-tab-pane',{key:index,attrs:{\"label\":item.label,\"name\":item.name}})}),1)],1),_vm._v(\" \"),(_vm.activeTab === _vm.lang.SelectdeviceType_Popup_Inverter)?_c('div',[_c('InverterList',{ref:\"inverterRef\",attrs:{\"stationId\":_vm.pw_id,\"is_stored\":_vm.is_stored,\"listTitleWidth\":_vm.listTitleWidth,\"labelWidth\":_vm.label_width},on:{\"queryBindParallel\":_vm.getPwInfo}})],1):_vm._e(),_vm._v(\" \"),(_vm.activeTab === _vm.lang.SelectdeviceType_Popup_MicroInverter)?_c('div',[_c('MicroDeviceList',{ref:\"microDeviceRef\",attrs:{\"stationId\":_vm.pw_id,\"is_stored\":_vm.is_stored,\"listTitleWidth\":_vm.listTitleWidth,\"labelWidth\":_vm.label_width}})],1):_vm._e(),_vm._v(\" \"),(_vm.activeTab === _vm.lang.DataLogger)?_c('div',[_c('DataLoggerList',{ref:\"dataLoggerRef\",attrs:{\"stationId\":_vm.pw_id,\"is_stored\":_vm.is_stored,\"listTitleWidth\":_vm.listTitleWidth,\"labelWidth\":_vm.label_width}})],1):_vm._e(),_vm._v(\" \"),(_vm.activeTab === _vm.lang.battery)?_c('div',[_c('BatteryList',{ref:\"batteryRef\",attrs:{\"stationId\":_vm.pw_id,\"labelWidth\":_vm.label_width,\"listTitleWidth\":[346,346,160,160,160,210]}})],1):_vm._e(),_vm._v(\" \"),(_vm.activeTab === _vm.lang.devicetype_EVCharge)?_c('div',[_c('EvChargerList',{ref:\"evChargerRef\",attrs:{\"stationId\":_vm.pw_id,\"is_stored\":_vm.is_stored,\"listTitleWidth\":_vm.listTitleWidth,\"labelWidth\":_vm.label_width},on:{\"queryBindParallel\":_vm.getPwInfo}})],1):_vm._e(),_vm._v(\" \"),_c('GoodweAddDevice',{ref:\"gdwAddDevice\",attrs:{\"dev-add-show\":_vm.showAddDeviceDialog,\"pw-id\":_vm.pw_id,\"label-width\":_vm.label_width,\"is-stored\":_vm.is_stored},on:{\"refresh\":_vm.refreshPage}}),_vm._v(\" \"),_c('ScanAssociatedDevice',{ref:\"scanDeviceRef\",attrs:{\"showModal\":_vm.showScanSelect,\"pw_id\":_vm.pw_id},on:{\"add_success\":_vm.refreshPage}}),_vm._v(\" \"),_c('div',{staticStyle:{\"height\":\"20px\"}})],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import GoodweDeviceDetail from './src/GoodweDeviceDetail.vue';\r\n\r\nGoodweDeviceDetail.install = function(Vue) {\r\n Vue.component(GoodweDeviceDetail.name, GoodweDeviceDetail);\r\n}\r\n\r\nexport default GoodweDeviceDetail;","var myChartDevice;\r\nconst sortNumber = function (a, b) {\r\n return (new Date(a).getTime() - new Date(b).getTime())\r\n}\r\nexport default {\r\n name: 'DeviceCurveChart',\r\n props: {\r\n info: { type: Object },\r\n count: { type: Number },\r\n isSec1000Et: {type: Boolean, default: false},\r\n localDate: { type: Date, default: new Date()},\r\n },\r\n data() {\r\n return {\r\n lang: Goodwe.Ops.Resouces.Front,\r\n device_detail_current: this.info,\r\n dataNull: {\r\n data: true,\r\n dataDevice: true\r\n },\r\n device_post_date_type: 2,\r\n is_power_income_device: false,\r\n date_value_device: this.localDate || new Date(),\r\n is_date_disabled_device: false,\r\n echart_date_type_device: \"date\",\r\n multiChartsSelected: {},\r\n multiCharts: {\r\n show: false,\r\n list: [],\r\n selected: {},\r\n active: true\r\n },\r\n chartData: [],\r\n is_battery_storage_device: this.info.is_stored,\r\n tag_name: Goodwe.Ops.Resouces.Front.pssmGenerateAndYield,\r\n date_format: dateFormatSems.replace(/Y/g, \"y\").replace(/D/g, \"d\"),\r\n pickerOptions: {\r\n disabledDate: this.handleDisabledDate,\r\n },\r\n }\r\n },\r\n methods: {\r\n /** 禁用本机之后日期 */\r\n handleDisabledDate(time) {\r\n return time.getTime() > this.localDate.getTime();\r\n },\r\n //上一个周期\r\n prevCycleChart() {\r\n clearTimeout(this.clickTimer);\r\n if (this.echart_date_type_device == \"date\") {\r\n this.date_value_device = new Date(this.date_value_device.getTime() - 24 * 60 * 60 * 1000)\r\n }\r\n if (this.echart_date_type_device == \"month\") {\r\n var y;\r\n var m;\r\n //如果月份为0,就返回上一年的12月\r\n if ((this.date_value_device.getMonth() + 1 - 1) == 0) {\r\n y = this.date_value_device.getFullYear() - 1;\r\n m = 12;\r\n }\r\n else {\r\n y = this.date_value_device.getFullYear();\r\n m = this.date_value_device.getMonth() + 1 - 1;\r\n }\r\n this.date_value_device = new Date(y + \"/\" + m)\r\n }\r\n if (this.echart_date_type_device == \"year\") {\r\n this.date_value_device = new Date((this.date_value_device.getFullYear() - 1 + \"\"))\r\n }\r\n this.drawCycleChart();\r\n },\r\n //下一个周期\r\n nextCycleChart() {\r\n if (this.echart_date_type_device == \"date\") {\r\n this.date_value_device = new Date(this.date_value_device.getTime() + 24 * 60 * 60 * 1000)\r\n }\r\n if (this.echart_date_type_device == \"month\") {\r\n var y;\r\n var m;\r\n //如果月份为0,就返回上一年的12月\r\n if ((this.date_value_device.getMonth() + 1 + 1) == 13) {\r\n y = this.date_value_device.getFullYear() + 1;\r\n m = 1;\r\n }\r\n else {\r\n y = this.date_value_device.getFullYear();\r\n m = this.date_value_device.getMonth() + 1 + 1;\r\n }\r\n this.date_value_device = new Date(y + \"/\" + m)\r\n }\r\n if (this.echart_date_type_device == \"year\") {\r\n this.date_value_device = new Date((this.date_value_device.getFullYear() + 1 + \"\"))\r\n }\r\n this.drawCycleChart();\r\n },\r\n //改变周期切换曲线\r\n drawCycleChart: _.debounce(function () {\r\n if ($(\".btn-curve-active\").index() == 1) {\r\n this.btnEchartsTapClickDevice({ target: $(\".btn-curve-active\")[0] });\r\n } else {\r\n var v;\r\n for (var i = 0; i < this.multiCharts.list.length; i++) {\r\n if (this.multiCharts.list[i][\"label\"] == this.multiCharts.selected.label) {\r\n v = this.multiCharts.list[i];\r\n }\r\n }\r\n this.multiChartsItemClick(v)\r\n }\r\n }, 400),\r\n //曲线图操作栏日期选择 - 设备\r\n chart_operate_device(time) {\r\n var c = $(\".device-curve-ctrl .btn-curve-active\").hasClass(\"multi-charts-w\");\r\n if (!c) {\r\n var i = $(\".device-curve-ctrl .title-operate-div button\").index($(\".device-curve-ctrl .button-op-act\"));\r\n switch (i) {\r\n case 0:\r\n this.device_post_date_type = 2;\r\n this.getDeviceGenerationRatio();\r\n break;\r\n case 1:\r\n this.device_post_date_type = 3;\r\n this.getDeviceGenerationRatio();\r\n break;\r\n case 2:\r\n this.device_post_date_type = 4;\r\n this.getDeviceGenerationRatio();\r\n break;\r\n default:\r\n this.getDeviceGenerationRatio();\r\n this.is_date_disabled_device = true;\r\n }\r\n } else {\r\n if (this.multiCharts.selected.value.toLowerCase() === 'pac') {\r\n if (this.info.is_stored) {\r\n this.getBatteryDevicePower();\r\n }\r\n else {\r\n this.getPowerStationPacByDayDevice();\r\n }\r\n\r\n } else {\r\n if (this.multiCharts.selected.value.toLowerCase() != \"output\" && this.multiCharts.selected.value.toLowerCase() != \"battery\") {\r\n this.getInverterDataByColumn();\r\n }\r\n else {\r\n this.getBatteryDeviceByColumn();\r\n }\r\n }\r\n this.is_date_disabled_device = false;\r\n }\r\n },\r\n //曲线图操作栏按钮(年、月、日)点击事件 - 设备\r\n btnChartClickDevice(event) {\r\n $(event.target).addClass('button-op-act');\r\n $(event.target).siblings().removeClass('button-op-act');\r\n var i = $(\".device-curve-ctrl .title-operate-div button\").index(event.target);\r\n this.$refs.deviceDatePicker.hidePicker();\r\n this.$refs.deviceDatePicker.picker = null;\r\n this.is_date_disabled_device = false;\r\n switch (i) {\r\n case 0:\r\n this.device_post_date_type = 2;\r\n this.echart_date_type_device = \"date\";\r\n this.date_format = dateFormatSems.replace(/Y/g, \"y\").replace(/D/g, \"d\");\r\n this.getDeviceGenerationRatio();\r\n break;\r\n case 1:\r\n this.device_post_date_type = 3;\r\n this.echart_date_type_device = \"month\";\r\n this.date_format = dateFormatReplace(\"month\").replace(/Y/g, \"y\");\r\n this.getDeviceGenerationRatio();\r\n break;\r\n case 2:\r\n this.device_post_date_type = 4;\r\n this.echart_date_type_device = \"year\";\r\n this.date_format = dateFormatReplace(\"year\").replace(/Y/g, \"y\");\r\n this.getDeviceGenerationRatio();\r\n break;\r\n default:\r\n this.getDeviceGenerationRatio();\r\n this.is_date_disabled_device = true;\r\n }\r\n },\r\n // 切换报表模式 - 设备\r\n btnEchartsTapClickDevice(event) {\r\n this.multiCharts.active = false;\r\n this.is_power_income_device = true;\r\n this.is_date_disabled_device = false;\r\n // 判断是否date为空\r\n var i = $(\".device-curve-ctrl .title-operate-div button\").index($(\".device-curve-ctrl .button-op-act\"));\r\n switch (i) {\r\n case 0:\r\n this.device_post_date_type = 2;\r\n this.getDeviceGenerationRatio();\r\n this.echart_date_type_device = \"date\";\r\n this.date_format = dateFormatSems.replace(/Y/g, \"y\").replace(/D/g, \"d\");\r\n break;\r\n case 1:\r\n this.device_post_date_type = 3;\r\n this.getDeviceGenerationRatio();\r\n this.echart_date_type_device = \"month\";\r\n this.date_format = dateFormatReplace(\"month\").replace(/Y/g, \"y\");\r\n break;\r\n case 2:\r\n this.device_post_date_type = 4;\r\n this.getDeviceGenerationRatio();\r\n this.echart_date_type_device = \"year\";\r\n this.date_format = \"yyyy\";\r\n break;\r\n default:\r\n this.getDeviceGenerationRatio();\r\n this.echart_date_type_device = \"year\";\r\n this.is_date_disabled_device = true;\r\n }\r\n },\r\n multiChartsItemClick(v) {\r\n this.multiCharts.selected = v;\r\n this.multiCharts.active = true;\r\n this.date_format = dateFormatSems.replace(/Y/g, \"y\").replace(/D/g, \"d\");\r\n // 这里都是功率曲线的\r\n this.is_power_income_device = false;\r\n this.echart_date_type_device = \"date\";\r\n this.is_date_disabled_device = false;\r\n // 判断是否date为空\r\n if (!v) {\r\n return\r\n }\r\n if (v.value.toLowerCase() === 'pac') {\r\n if (this.is_battery_storage_device) {\r\n this.getBatteryDevicePower();\r\n }\r\n else {\r\n this.getPowerStationPacByDayDevice();\r\n }\r\n\r\n } else {\r\n if (v.value.toLowerCase() != \"output\" && v.value.toLowerCase() != \"battery\") {\r\n this.getInverterDataByColumn();\r\n }\r\n else {\r\n this.getBatteryDeviceByColumn();\r\n }\r\n\r\n }\r\n },\r\n // 重置\r\n resetMultiChartsData() {\r\n this.multiCharts.selected = this.multiChartsSelected; // 这个要注意修改\r\n this.multiCharts.show = false;\r\n this.multiCharts.active = true;\r\n this.$forceUpdate();\r\n },\r\n //跳转到history\r\n toDataHistory() {\r\n var DataHistoryDate = common.dateFormatter(this.date_value_device) + \" 00:00:00\";\r\n sessionStorage.setItem(\"DataHistoryDate\", DataHistoryDate);\r\n sessionStorage.setItem(\"deviceDetailCurrentSn\", this.device_detail_current.sn);\r\n window.parent.location.href = \"/powerstation/historydata\";\r\n },\r\n //导出单设备发电量\r\n exportDeviceGeneration() {\r\n var that = this;\r\n var type = this.device_post_date_type;\r\n switch (type) {\r\n case 2:\r\n type = 1;\r\n break;\r\n case 3:\r\n type = 2;\r\n break;\r\n case 4:\r\n type = 3;\r\n break;\r\n }\r\n var imgBase64 = $(\"#mainDevice\").find(\"canvas\")[0].toDataURL(\"img/png\").split(\",\")[1];\r\n var DataHistoryDate = common.dateFormatter(this.date_value_device) + \" 00:00:00\";\r\n var param = {\r\n \"date\": DataHistoryDate,\r\n \"type\": type,\r\n \"sn\": this.device_detail_current.sn,\r\n \"img_base64\": imgBase64,\r\n \"img_width\": $(\"#mainDevice\").find(\"canvas\").width(),\r\n \"img_height\": $(\"#mainDevice\").find(\"canvas\").height()\r\n }\r\n common.post(\"/v1/PowerStation/ExportInverterPowerAndIncome\", param, function (res) {\r\n }).success(function (res) {\r\n var param = {\r\n \"id\": res.data\r\n }\r\n //导出表格\r\n that.exportExcel(param)\r\n })\r\n },\r\n //获取下拉列表,筛选指标多语言,单电站多语言\r\n getIndicatorListNew(list) {\r\n var indicatorList = [];\r\n indicatorList = indicatorList.concat(list);\r\n for (var i = 0; i < indicatorList.length; i++) {\r\n //现在不传value值,改为传数字,把数字赋值给value\r\n indicatorList[i].value = indicatorList[i].target_key;\r\n indicatorList[i].label = indicatorList[i].target_name;\r\n };\r\n let index2 = indicatorList.findIndex(item => {\r\n return item.target_key.toLowerCase() == \"pac\" || item.target_key.toLowerCase() == \"power\"\r\n })\r\n if (index2 != -1) {\r\n const firItem = JSON.parse(JSON.stringify(indicatorList[index2]));\r\n indicatorList.splice(index2,1);\r\n indicatorList.unshift(firItem);\r\n }\r\n return indicatorList;\r\n },\r\n getDeviceGenerationRatio() {\r\n var that = this;\r\n var d = this.date_value_device;\r\n common.post(\"v1/PowerStation/GetInverterYieldRatioChartsBySn\", { \r\n sn: that.info.sn, \r\n date: common.dateFormatter(d) + \" 00:00:00\", \r\n type: that.device_post_date_type \r\n }).success(function (res) {\r\n res.data.xy = res.data.xy.sort(sortNumber)\r\n if (res.data && (res.data.output.length || res.data.pv.length) && (res.data.viewFiled.length == 2 || res.data.viewFiled.length == 3 || res.data.viewFiled.length == 1)) {\r\n that.showDeviceBarCharts(res.data);\r\n that.dataNull.dataDevice = false;\r\n }\r\n else {\r\n that.showDeviceBarCharts({ \"buy\": [], \"currency\": \"\", \"generationgenerationIncome\": [], \"generationSelfUseRatio\": [], \"income\": \"\", \"pv\": [], \"selfUseOfPV\": [], \"sell\": [], \"xy\": [], \"viewFiled\": [] });\r\n that.dataNull.dataDevice = true;\r\n }\r\n }).fail(function (res) {\r\n that.showDeviceBarCharts({ \"buy\": [], \"currency\": \"\", \"generationgenerationIncome\": [], \"generationSelfUseRatio\": [], \"income\": \"\", \"pv\": [], \"selfUseOfPV\": [], \"sell\": [], \"xy\": [], \"viewFiled\": [] });\r\n that.dataNull.dataDevice = true;\r\n });\r\n },\r\n getPowerStationPacByDayDevice() {\r\n var d = this.date_value_device;\r\n var that = this;\r\n common.post(\"PowerStationMonitor/GetInverterPacByDay\", {\r\n id: that.device_detail_current.sn,\r\n date: dayjs(d).format(\"YYYY-MM-DD 00:00:00\")\r\n }, function (res) {\r\n if (res.data) {\r\n that.showLineChartsPacDevice(res.data);\r\n that.dataNull.dataDevice = false;\r\n } else {\r\n // 伪造一条数据,用来重置前面的报表\r\n that.showLineChartsPacDevice([{ date: \"01/01/1900 00:00:00\", pac: 0 }]);\r\n that.dataNull.dataDevice = true;\r\n }\r\n });\r\n },\r\n getInverterDataByColumn() {\r\n var that = this;\r\n common.post('PowerStationMonitor/GetInverterDataByColumn', {\r\n date: dayjs(this.date_value_device).format(\"YYYY-MM-DD HH:mm:ss\"),\r\n column: this.multiCharts.selected.value,\r\n id: this.device_detail_current.sn\r\n }).success(function (res) {\r\n if (res.data && _.keys(res.data).length > 0) {\r\n that.showLineChartsColumn(res.data, Goodwe.Ops.Resouces.Front[that.multiCharts.selected.label], that.multiCharts.selected.unit);\r\n that.dataNull.dataDevice = false;\r\n } else {\r\n that.showLineChartsColumn({\r\n column1: [{\r\n date: \"01/01/1900 00:00:00\",\r\n column: 0,\r\n }]\r\n }, that.multiCharts.selected.label, that.multiCharts.selected.unit);\r\n that.dataNull.dataDevice = true;\r\n }\r\n });\r\n },\r\n //光储设备功率曲线\r\n getBatteryDevicePower() {\r\n var that = this;\r\n var d = this.date_value_device;\r\n common.post(\"v1/PowerStation/GetInverterPowerChartsBySn\", { sn: that.device_detail_current.sn, date: dayjs(d).format(\"YYYY-MM-DD 00:00:00\") }).success(function (res) {\r\n if (res.data && res.data.meter.length) {\r\n that.showBatteryDevicePowerChart(res.data)\r\n that.dataNull.dataDevice = false;\r\n }\r\n else {\r\n that.showBatteryDevicePowerChart({ \"battery\": [], \"load\": [], \"pv\": [], \"soc\": [], \"meter\": [] });\r\n that.dataNull.dataDevice = true;\r\n }\r\n }).fail(function (res) {\r\n that.showBatteryDevicePowerChart({ \"battery\": [], \"load\": [], \"pv\": [], \"soc\": [], \"meter\": [] });\r\n that.dataNull.dataDevice = true;\r\n });\r\n },\r\n // 重置曲线\r\n resetCurveDevice() {\r\n this.date_value_device = new Date();\r\n $('.device-curve-ctrl .title-operate-div > button').eq(0).addClass('button-op-act').siblings().removeClass('button-op-act');\r\n this.is_power_income_device = false;\r\n this.is_date_disabled_device = false;\r\n this.echart_date_type_device = \"date\";\r\n },\r\n //显示图表(光储设备功率曲线)\r\n showBatteryDevicePowerChart(data) {\r\n const that = this;\r\n if(!data.viewFiled)return\r\n //曲线映射关系\r\n const linesMap = {\r\n //PV这个key放第一个,\r\n \"Pv\": {\r\n series: data.pv&&data.pv.length>0?data.pv.map(function (v, i) {\r\n return { \"name\": (that.isSec1000Et ? Goodwe.Ops.Resouces.Front.phase_ac_power: Goodwe.Ops.Resouces.Front.PVOfGraphForInverter) + \"(W)\", \r\n \"value\": [i, (v.y).toFixed(2)], \"symbolSize\": 0 };\r\n }):[],\r\n data: data.pv,\r\n lineColor: \"#008AFF\",\r\n yAxisIndex:0,\r\n name: (that.isSec1000Et ? Goodwe.Ops.Resouces.Front.phase_ac_power: Goodwe.Ops.Resouces.Front.PVOfGraphForInverter) + \"(W)\"\r\n },\r\n \"Meter\": {\r\n series: data.meter&&data.meter.length>0?data.meter.map(function (v, i) {\r\n return { \"name\": Goodwe.Ops.Resouces.Front.meter + \"(W)\", \"value\": [i, (v.y).toFixed(2)], \"symbolSize\": 0 };\r\n }):[],\r\n data: data.meter,\r\n lineColor: \"#FEA71F\",\r\n yAxisIndex:0,\r\n name: Goodwe.Ops.Resouces.Front.meter + \"(W)\"\r\n },\r\n \"Battery\": {\r\n series: data.battery&&data.battery.length>0?data.battery.map(function (v, i) {\r\n return { \"name\": Goodwe.Ops.Resouces.Front.battery + \"(W)\", \"value\": [i, (v.y).toFixed(2)], \"symbolSize\": 0 };\r\n }):[],\r\n data: data.battery,\r\n lineColor: \"#CC3366\",\r\n yAxisIndex:0,\r\n name: Goodwe.Ops.Resouces.Front.battery + \"(W)\"\r\n },\r\n \"Battery2\": {\r\n series:data.battery2&&data.battery2.length>0? data.battery2.map(function (v, i) {\r\n return { \"name\": Goodwe.Ops.Resouces.Front.PBattery2 + \"(W)\", \"value\": [i, (v.y).toFixed(2)], \"symbolSize\": 0 };\r\n }):[],\r\n lineColor: \"#FF813C\",\r\n yAxisIndex:0,\r\n data: data.battery2,\r\n name: Goodwe.Ops.Resouces.Front.PBattery2 + \"(W)\"\r\n },\r\n \"SOC\": {\r\n series: data.soc&&data.soc.length>0?data.soc.map(function (v, i) {\r\n return { \"name\": Goodwe.Ops.Resouces.Front.SOC + \"(%)\", \"value\": [i, (v.y).toFixed(2)], \"symbolSize\": 0 };\r\n }):[],\r\n data: data.soc,\r\n lineColor: \"#90C653\",\r\n yAxisIndex:1,\r\n name: Goodwe.Ops.Resouces.Front.SOC + \"(%)\"\r\n },\r\n \"SOC2\": {\r\n series: data.soC2&&data.soC2.length>0?data.soC2.map(function (v, i) {\r\n return { \"name\": Goodwe.Ops.Resouces.Front.SOC2 + \"(%)\", \"value\": [i, (v.y).toFixed(2)], \"symbolSize\": 0 };\r\n }):[],\r\n data: data.soC2,\r\n lineColor: \"#53C5C6\",\r\n yAxisIndex:1,\r\n name: Goodwe.Ops.Resouces.Front.SOC2 + \"(%)\"\r\n },\r\n \"load\": {\r\n series: data.load.map(function (v, i) {\r\n return { \"name\": Goodwe.Ops.Resouces.Front.load + \"(W)\", \"value\": [i, (v.y).toFixed(2)], \"symbolSize\": 0 };\r\n }),\r\n data: data.load,\r\n yAxisIndex:1,\r\n lineColor: \"#920783\",\r\n name: Goodwe.Ops.Resouces.Front.load + \"(W)\"\r\n },\r\n \"GensetPower\": { // 柴发总功率\r\n series: data.gensetPower && data.gensetPower.length > 0 ? data.gensetPower.map(function (v, i) {\r\n return { \"name\": Goodwe.Ops.Resouces.Front.PCurve_Power_GensetPower, \"value\": [i, (v.y).toFixed(2)], \"symbolSize\": 0 };\r\n }):[],\r\n data: data.gensetPower || [],\r\n yAxisIndex:1,\r\n lineColor: \"#4A3CE8\",\r\n name: Goodwe.Ops.Resouces.Front.PCurve_Power_GensetPower\r\n },\r\n \"GensetPowerR\": { // 柴发一相\r\n series: data.gensetPowerR && data.gensetPowerR.length > 0 ? data.gensetPowerR.map(function (v, i) {\r\n return { \"name\": Goodwe.Ops.Resouces.Front.PCurve_Power_GensetPhaseR, \"value\": [i, (v.y).toFixed(2)], \"symbolSize\": 0 };\r\n }):[],\r\n data: data.gensetPowerR || [],\r\n yAxisIndex:1,\r\n lineColor: \"#882CA4\",\r\n name: Goodwe.Ops.Resouces.Front.PCurve_Power_GensetPhaseR\r\n },\r\n \"GensetPowerS\": { // 柴发二相\r\n series: data.gensetPowerS && data.gensetPowerS.length > 0 ? data.gensetPowerS.map(function (v, i) {\r\n return { \"name\": Goodwe.Ops.Resouces.Front.PCurve_Power_GensetPhaseS, \"value\": [i, (v.y).toFixed(2)], \"symbolSize\": 0 };\r\n }):[],\r\n data: data.gensetPowerS || [],\r\n yAxisIndex:1,\r\n lineColor: \"#E88EA6\",\r\n name: Goodwe.Ops.Resouces.Front.PCurve_Power_GensetPhaseS\r\n },\r\n \"GensetPowerT\": { // 柴发三相\r\n series: data.gensetPowerT && data.gensetPowerT.length > 0 ? data.gensetPowerT.map(function (v, i) {\r\n return { \"name\": Goodwe.Ops.Resouces.Front.PCurve_Power_GensetPhaseT, \"value\": [i, (v.y).toFixed(2)], \"symbolSize\": 0 };\r\n }):[],\r\n data: data.gensetPowerT || [],\r\n yAxisIndex:1,\r\n lineColor: \"#C29B96\",\r\n name: Goodwe.Ops.Resouces.Front.PCurve_Power_GensetPhaseT\r\n },\r\n }\r\n var arr = []\r\n var dataLegend = [];\r\n const seriesData = [];\r\n var xAixLengthArr = []\r\n Object.keys(linesMap).map(key => {\r\n arr.push(linesMap[key].data)\r\n if (data.viewFiled&&data.viewFiled.indexOf(key) >= 0) {\r\n dataLegend.push({\r\n name: linesMap[key].name,\r\n color: linesMap[key].lineColor,\r\n icon: \"roundrect\"\r\n })\r\n xAixLengthArr.push(linesMap[key].data.length)\r\n seriesData.push({\r\n type: \"line\",\r\n name: linesMap[key].name,\r\n yAxisIndex: linesMap[key].yAxisIndex,\r\n data: linesMap[key].series,\r\n itemStyle: {\r\n normal: {\r\n color: linesMap[key].lineColor\r\n }\r\n },\r\n lineStyle: {\r\n normal: {\r\n shadowBlur: 3,\r\n shadowColor: linesMap[key].lineColor\r\n }\r\n }\r\n })\r\n }\r\n })\r\n // xAixLength = Math.max(...xAixLengthArr)\r\n arr = arr.flat();\r\n var yMax = 0;\r\n var yMin = 0;\r\n var intervalY = 0;\r\n if (arr.length && arr) {\r\n arr.forEach(function (v, i) {\r\n if (v.y > yMax) {\r\n yMax = v.y;\r\n }\r\n if (v.y < yMin) {\r\n yMin = v.y;\r\n }\r\n });\r\n }\r\n if (yMin == 0) {\r\n yMin = 0;\r\n yMax = Math.ceil(yMax / 4) * 4;\r\n intervalY = yMax / 4;\r\n }\r\n else if (yMin * -1 > yMax) {\r\n yMin = Math.ceil((yMin * -1) / 10) * -10;\r\n yMax = -yMin;\r\n intervalY = yMax / 2;\r\n }\r\n else {\r\n yMax = Math.ceil(yMax / 10) * 10;\r\n yMin = -yMax;\r\n intervalY = yMax / 2;\r\n }\r\n \r\n var option = {\r\n grid: {\r\n left: 80,\r\n right: 40,\r\n bottom: 30\r\n },\r\n title: {},\r\n tooltip: {\r\n trigger: 'axis',\r\n confine: true,\r\n formatter: function (params) {\r\n var hint = \"\";\r\n var time = params[0].data.value[0];\r\n var now;\r\n now = Math.floor((time / 12 < 10) ? \"0\" + (time / 12).toString() : (time / 12).toString()) + \":\" + ((time % 12 < 2) ? \"0\" + (time % 12 * 5).toString() : (time % 12 * 5).toString());\r\n var hour = parseInt(now.split(\":\")[0]);\r\n \r\n \r\n if (hour >= 10) {\r\n now = now;\r\n }\r\n else {\r\n now = \"0\" + hour.toString() + \":\" + now.split(\":\")[1];\r\n }\r\n params.forEach(function (v, i) {\r\n if (v.data.name == Goodwe.Ops.Resouces.Front.meter + \"(W)\") {\r\n if (parseFloat(v.value[1]) > 0) {\r\n hint += v.name + \"(\" + Goodwe.Ops.Resouces.Front.sell + \") : \" + v.data.value[1] + \"
    \";\r\n } else if (v.value[1] == 0) {\r\n hint += v.name + \" : \" + v.data.value[1] + \"
    \";\r\n } else {\r\n hint += v.name + \"(\" + Goodwe.Ops.Resouces.Front.buy + \") : \" + v.data.value[1] + \"
    \";\r\n }\r\n }\r\n else if (v.data.name == Goodwe.Ops.Resouces.Front.battery + \"(W)\"||v.data.name == Goodwe.Ops.Resouces.Front.PBattery2 + \"(W)\") {\r\n if (parseFloat(v.value[1]) > 0) {\r\n hint += v.name + \"(\" + Goodwe.Ops.Resouces.Front._discharge + \") : \" + v.data.value[1] + \"
    \";\r\n } else if (v.value[1] == 0) {\r\n hint += v.name + \" : \" + v.data.value[1] + \"
    \";\r\n } else {\r\n hint += v.name + \"(\" + Goodwe.Ops.Resouces.Front._charge + \") : \" + v.data.value[1] + \"
    \";\r\n }\r\n }\r\n else {\r\n hint += v.name + \" : \" + v.data.value[1] + \"
    \";\r\n }\r\n });\r\n return now + \"
    \" + hint;\r\n }\r\n },\r\n legend: {\r\n right: 20,\r\n data: dataLegend,\r\n itemGap: 10,\r\n itemHeight: 2,\r\n itemWidth: 25,\r\n selected: {\r\n \"Load(W)\": false\r\n },\r\n textStyle: {\r\n color: \"#fff\"\r\n }\r\n },\r\n xAxis: {\r\n min: 0,\r\n max: data.pv.length,\r\n onZero: false,\r\n interval: 24,\r\n type: \"category\",\r\n axisTick: {\r\n show: false\r\n },\r\n axisLine: {\r\n lineStyle: {\r\n color: \"#C0C0C0\",\r\n width: 2\r\n }\r\n },\r\n axisLabel: {\r\n interval: 0,\r\n color: \"#C0C0C0\",\r\n formatter: function (param) {\r\n if (param && param % 24 == 0) {\r\n var hour = param / 12;\r\n if (hour >= 10) {\r\n hour = hour.toString();\r\n } else {\r\n hour = \"0\" + hour;\r\n }\r\n return hour + \":00\";\r\n }\r\n }\r\n },\r\n splitLine: {\r\n lineStyle: {\r\n opacity: 0.6,\r\n type: \"dashed\"\r\n }\r\n }\r\n },\r\n yAxis: [{\r\n axisTick: {\r\n show: false\r\n },\r\n axisLine: {\r\n lineStyle: {\r\n color: \"#C0F7FF\"\r\n }\r\n },\r\n axisLabel: {\r\n color: \"#C0C0C0\"\r\n },\r\n splitLine: {\r\n lineStyle: {\r\n opacity: 0.6,\r\n type: \"dashed\"\r\n }\r\n },\r\n name: \"Power(W)\",\r\n nameLocation: \"end\",\r\n nameTextStyle: {\r\n color: \"#C0C0C0\",\r\n fontSize: 10,\r\n padding: [0, 0, -10, 70]\r\n }\r\n }, {\r\n name: Goodwe.Ops.Resouces.Front.SOC + \"(%)\",\r\n nameLocation: \"end\",\r\n nameTextStyle: {\r\n color: \"#C0C0C0\",\r\n fontSize: 10,\r\n padding: [0, 0, -10, -60]\r\n },\r\n axisLine: {\r\n lineStyle: {\r\n color: \"#C0C0C0\",\r\n type: \"solid\"\r\n }\r\n },\r\n splitLine: {\r\n show: false\r\n \r\n },\r\n axisTick: {\r\n show: false\r\n }\r\n \r\n }],\r\n series: seriesData\r\n };\r\n option.legend.selected[Goodwe.Ops.Resouces.Front.load + \"(W)\"] = false;\r\n myChartDevice.clear();\r\n myChartDevice.setOption(option);\r\n },\r\n // 显示图表(当日功率) - 设备 \r\n showLineChartsPacDevice(data) {\r\n var xData = data.map(function (m) {\r\n return m.date\r\n });\r\n var yData1 = data.map(function (m) {\r\n return m.pac;\r\n });\r\n var yData1Max = 0;\r\n var yData1Min = 0;\r\n \r\n xData.forEach(function (item, index) {\r\n if (yData1[index] > yData1Max) {\r\n yData1Max = yData1[index];\r\n }\r\n if (yData1[index] < yData1Min) {\r\n yData1Min = yData1[index];\r\n }\r\n });\r\n \r\n // MARK: 后面要考虑最大值不大于1的情况\r\n \r\n // 左右y轴的最大值\r\n var leftAxisMax = _.floor(yData1Max * 100 / 95);\r\n \r\n var leftAxisRefer = leftAxisMax / 5;\r\n var denoLeft = 1;\r\n var unitLeft = \"\";\r\n \r\n if (leftAxisRefer >= 1e9) {\r\n denoLeft = 1e9;\r\n unitLeft = \"G\";\r\n } else if (leftAxisRefer >= 1e6) {\r\n denoLeft = 1e6;\r\n unitLeft = \"M\";\r\n } else if (leftAxisRefer >= 1e3) {\r\n denoLeft = 1e3;\r\n unitLeft = \"k\";\r\n }\r\n \r\n var legendName = Goodwe.Ops.Resouces.Front.power_1 + '(' + unitLeft + 'W)';\r\n \r\n // 图表参数\r\n var option = {\r\n grid: {\r\n left: 40,\r\n right: 40,\r\n bottom: 30\r\n },\r\n legend: {\r\n right: 0,\r\n data: [{\r\n name: legendName\r\n }],\r\n textStyle: {\r\n color: '#fff'\r\n }\r\n },\r\n xAxis: {\r\n type: \"category\",\r\n data: xData,\r\n axisTick: {\r\n show: false\r\n },\r\n axisLine: {\r\n lineStyle: {\r\n color: '#999'\r\n }\r\n },\r\n axisLabel: {\r\n color: \"#fff\",\r\n fontSize: 9,\r\n interval: 0,\r\n formatter: function (v, i) {\r\n var reg = /^(\\d+)\\:00$/.exec(/^\\d+\\/\\d+.\\/\\d+ ([\\d:]+):\\d+$/.exec(v)[1]);\r\n if (reg) {\r\n return parseInt(reg[1]);\r\n }\r\n }\r\n },\r\n axisPointer: {\r\n label: {\r\n show: false\r\n }\r\n }\r\n },\r\n yAxis: {\r\n name: legendName,\r\n min: yData1Min,\r\n max: leftAxisMax,\r\n interval: yData1Min < 0 ? (leftAxisMax - yData1Min) / 5 : leftAxisMax / 5,\r\n splitLine: {\r\n show: true,\r\n lineStyle: {\r\n type: \"dashed\",\r\n color: '#666'\r\n }\r\n },\r\n axisTick: {\r\n show: false\r\n },\r\n nameTextStyle: {\r\n padding: [0, 0, 0, 85]\r\n },\r\n axisLabel: {\r\n color: \"#fff\",\r\n formatter: function (value, index) {\r\n return parseInt(value / denoLeft)\r\n },\r\n fontSize: 9\r\n },\r\n axisLine: {\r\n lineStyle: {\r\n color: \"#999999\"\r\n }\r\n }\r\n },\r\n tooltip: {\r\n show: true,\r\n trigger: 'axis',\r\n confine: true,\r\n axisPointer: {\r\n type: \"cross\"\r\n },\r\n //position: function (pos, params, el, elRect, size) {\r\n //\tvar obj = { top: 10 };\r\n //\tobj[['left', 'right'][+(pos[0] < size.viewSize[0] / 2)]] = 30;\r\n //\treturn obj;\r\n //},\r\n formatter: function (param) {\r\n param = param[0];\r\n var time = dayjs(param.name).format(dateFormatSems + \" \" + \"HH:mm:ss\");\r\n return [Goodwe.Ops.Resouces.Front.power_1 + ': ',\r\n (param.value / denoLeft).toFixed(2) + ' ',\r\n ' ',\r\n unitLeft,\r\n 'W',\r\n '
    ',\r\n Goodwe.Ops.Resouces.Front.time,\r\n ': ' + time + ' '].join(\"\");\r\n }\r\n },\r\n axisPointer: {\r\n show: true\r\n },\r\n series: {\r\n name: legendName,\r\n type: 'line',\r\n itemStyle: {\r\n normal: {\r\n color: \"#03BBD6\"\r\n }\r\n },\r\n areaStyle: {\r\n normal: {\r\n color: \"#fff\",\r\n opacity: .1\r\n }\r\n },\r\n showSymbol: false,\r\n data: yData1,\r\n symbol: 'emptyCircle',\r\n symbolSize: 5\r\n },\r\n backgroundColor: \"#25313B\"\r\n }\r\n myChartDevice.clear();\r\n myChartDevice.setOption(option);\r\n },\r\n // 根据下拉框显示图表 here\r\n showLineChartsColumn(data, label, unit) {\r\n //data {\r\n //\tcolumn1: [\r\n //\t\t{\r\n //\t\t\tdate: 时间字符串,\r\n //\t\t\tcolumn: 数据\r\n //\t\t},\r\n //\t\t{\r\n //\t\t\tdate: 时间字符串,\r\n //\t\t\tcolumn: 数据\r\n //\t\t},\r\n //\t\t...\r\n //\t],\r\n //\t...\r\n //}\r\n \r\n var xData = data[_.keys(data)[0]].map(function (m) {\r\n return m.date\r\n });\r\n var yData = [];\r\n for (var k in data) {\r\n if (_.keys(data).length > 1) {\r\n // 不止有一组数据\r\n var key = label + '(' + /\\d+/.exec(k)[0] + ')';\r\n } else {\r\n var key = label;\r\n }\r\n yData.push({\r\n name: key,\r\n data: data[k].map(function (item) {\r\n return item.column;\r\n })\r\n })\r\n }\r\n \r\n var yDataMax = 0;\r\n yData.forEach(function (item) {\r\n var thisMax = _.max(item.data);\r\n yDataMax = yDataMax > thisMax ? yDataMax : thisMax;\r\n });\r\n var _level = 1;\r\n if (unit === 'kWh') {\r\n if (yDataMax >= 1e6) {\r\n _level = 1e6;\r\n unit = 'GWh';\r\n } else if (yDataMax >= 1e3) {\r\n _level = 1e3;\r\n unit = 'MWh';\r\n }\r\n }\r\n \r\n \r\n \r\n // 数据处理数量级\r\n yData.forEach(function (series) {\r\n series.data.forEach(function (item, index) {\r\n if (series.name == \"PF\" || series.name == \"ReactivePower\") {\r\n series.data[index] = _.floor(item / _level, 3);\r\n } else {\r\n series.data[index] = _.floor(item / _level, 2);\r\n }\r\n \r\n });\r\n });\r\n \r\n // MARK: 后面要考虑最大值不大于1的情况\r\n \r\n // 左右y轴的最大值\r\n //var leftAxisMax = _.floor(yData1Max * 100 / 95);\r\n \r\n //var leftAxisRefer = leftAxisMax / 5;\r\n //var denoLeft = 1;\r\n //var unitLeft = \"\";\r\n \r\n //if (leftAxisRefer >= 1e9) {\r\n //\tdenoLeft = 1e9;\r\n //\tunitLeft = \"G\";\r\n //} else if (leftAxisRefer >= 1e6) {\r\n //\tdenoLeft = 1e6;\r\n //\tunitLeft = \"M\";\r\n //} else if (leftAxisRefer >= 1e3) {\r\n //\tdenoLeft = 1e3;\r\n //\tunitLeft = \"k\";\r\n //}\r\n \r\n //var legendName = Goodwe.Ops.Resouces.Front.kw + '(' + unitLeft + 'W)';\r\n \r\n // 图表参数\r\n const yAxisNameText = unit ? label + '(' + unit + ')' : label;\r\n var option = {\r\n color: ['#03BBD6', '#c23531', '#d48265', '#91c7ae', '#749f83', '#ca8622', '#bda29a', '#6e7074', '#546570', '#c4ccd3'],\r\n grid: {\r\n left: 40,\r\n right: 40,\r\n bottom: 30\r\n },\r\n legend: {\r\n right: 20,\r\n data: yData.map(function (item) {\r\n return item.name;\r\n }),\r\n formatter: function (name) {\r\n if (unit) {\r\n return name + ' (' + unit + ')'\r\n } else {\r\n return name\r\n }\r\n },\r\n textStyle: {\r\n color: '#fff'\r\n }\r\n },\r\n xAxis: {\r\n type: \"category\",\r\n data: xData,\r\n axisTick: {\r\n show: false\r\n },\r\n axisLine: {\r\n lineStyle: {\r\n color: '#999'\r\n }\r\n },\r\n axisLabel: {\r\n color: \"#fff\",\r\n fontSize: 9,\r\n interval: 0,\r\n formatter: function (v, i) {\r\n var reg = /^(\\d+)\\:00$/.exec(/^\\d+\\/\\d+.\\/\\d+ ([\\d:]+):\\d+$/.exec(v)[1]);\r\n if (reg) {\r\n return parseInt(reg[1]);\r\n }\r\n }\r\n },\r\n axisPointer: {\r\n label: {\r\n show: false\r\n }\r\n }\r\n },\r\n yAxis: {\r\n name: yAxisNameText,\r\n splitLine: {\r\n show: true,\r\n lineStyle: {\r\n type: \"dashed\",\r\n color: '#666'\r\n }\r\n },\r\n axisTick: {\r\n show: false\r\n },\r\n nameTextStyle: {\r\n padding: [0, 0, 0, yAxisNameText.length > 20 ? 165 : 85]\r\n },\r\n axisLabel: {\r\n color: \"#fff\",\r\n //formatter: function (value, index) {\r\n //\treturn parseInt(value / denoLeft)\r\n //},\r\n fontSize: 9\r\n },\r\n axisLine: {\r\n lineStyle: {\r\n color: \"#999999\"\r\n }\r\n }\r\n },\r\n tooltip: {\r\n show: true,\r\n trigger: 'axis',\r\n confine: true,\r\n axisPointer: {\r\n type: \"cross\"\r\n },\r\n //position: function (pos, params, el, elRect, size) {\r\n //\tvar obj = { top: 10 };\r\n //\tobj[['left', 'right'][+(pos[0] < size.viewSize[0] / 2)]] = 30;\r\n //\treturn obj;\r\n //},\r\n formatter: function (param) {\r\n var str = '';\r\n var time = dayjs(param[0].name).format(dateFormatSems + \" \" + \"HH:mm:ss\");\r\n param.forEach(function (item) {\r\n str += item.seriesName + ': ' + item.value + ' ' + unit + '
    ';\r\n });\r\n str += Goodwe.Ops.Resouces.Front.time + ': ' + time;\r\n return str;\r\n }\r\n },\r\n axisPointer: {\r\n show: true\r\n },\r\n series: yData.map(function (item) {\r\n return {\r\n name: item.name,\r\n type: 'line',\r\n areaStyle: {\r\n normal: {\r\n color: \"#fff\",\r\n opacity: .1\r\n }\r\n },\r\n showSymbol: false,\r\n data: item.data,\r\n symbol: 'emptyCircle',\r\n symbolSize: 5\r\n }\r\n }),\r\n backgroundColor: \"#25313B\"\r\n }\r\n myChartDevice.clear();\r\n myChartDevice.setOption(option);\r\n },\r\n //后备输出和电池曲线\r\n showDeviceChartByColumn(data, label) {\r\n var dataLegend = [{\r\n name: \"Voltage(V)\",\r\n color: \"#03BBD6\",\r\n icon: \"roundrect\"\r\n }, {\r\n name: \"Current(A)\",\r\n color: \"#c23531\",\r\n icon: \"roundrect\"\r\n }];\r\n var dataVoltage = data.column1.map(function (v, i) {\r\n return { \"name\": \"Voltage(V)\", \"value\": [i, v.column], \"symbolSize\": 0 };\r\n });\r\n var dataCurrent = data.column2.map(function (v, i) {\r\n return { \"name\": \"Current(A)\", \"value\": [i, v.column], \"symbolSize\": 0 };\r\n });\r\n \r\n var option = {\r\n title: {},\r\n grid: {\r\n left: 40,\r\n right: 40,\r\n bottom: 30\r\n },\r\n legend: {\r\n right: 20,\r\n data: dataLegend,\r\n itemGap: 10,\r\n itemHeight: 2,\r\n itemWidth: 25,\r\n textStyle: {\r\n color: \"#fff\"\r\n }\r\n },\r\n tooltip: {\r\n color: ['#03BBD6', '#c23531', '#d48265', '#91c7ae', '#749f83', '#ca8622', '#bda29a', '#6e7074', '#546570', '#c4ccd3'],\r\n trigger: 'axis',\r\n confine: true,\r\n formatter: function (params) {\r\n var hint = \"\";\r\n var time = params[0].data.value[0];\r\n var now;\r\n now = Math.floor((time / 12 < 10) ? \"0\" + (time / 12).toString() : (time / 12).toString()) + \":\" + ((time % 12 < 2) ? \"0\" + (time % 12 * 5).toString() : (time % 12 * 5).toString());\r\n var hour = parseInt(now.split(\":\")[0]);\r\n \r\n \r\n if (hour >= 10) {\r\n now = now;\r\n }\r\n else {\r\n now = \"0\" + hour.toString() + \":\" + now.split(\":\")[1];\r\n }\r\n params.forEach(function (v, i) {\r\n hint += v.name + \" : \" + v.data.value[1] + \"
    \";\r\n });\r\n return now + \"
    \" + hint;\r\n }\r\n },\r\n \r\n xAxis: {\r\n min: 0,\r\n max: dataCurrent.length,\r\n onZero: false,\r\n interval: 24,\r\n type: \"category\",\r\n axisTick: {\r\n show: false\r\n },\r\n axisLine: {\r\n lineStyle: {\r\n color: '#999'\r\n }\r\n },\r\n axisLabel: {\r\n color: \"#C0C0C0\",\r\n interval: 0,\r\n formatter: function (param) {\r\n if (param % 24 == 0) {\r\n var hour = param / 12;\r\n if (hour >= 10) {\r\n hour = hour.toString();\r\n }\r\n else {\r\n hour = \"0\" + hour;\r\n }\r\n return hour + \":00\";\r\n }\r\n \r\n }\r\n },\r\n splitLine: {\r\n show: false\r\n }\r\n \r\n },\r\n yAxis: [{\r\n name: \"Voltage(V)\",\r\n splitLine: {\r\n show: true,\r\n lineStyle: {\r\n type: \"dashed\",\r\n color: '#666'\r\n }\r\n },\r\n axisTick: {\r\n show: false\r\n },\r\n nameTextStyle: {\r\n padding: [0, 0, 0, 85]\r\n },\r\n axisLabel: {\r\n color: \"#fff\",\r\n //formatter: function (value, index) {\r\n //\treturn parseInt(value / denoLeft)\r\n //},\r\n fontSize: 9\r\n },\r\n axisLine: {\r\n lineStyle: {\r\n color: \"#999999\"\r\n }\r\n }\r\n \r\n }, {\r\n yAxisIndex: 1,\r\n name: \"Current(A)\",\r\n splitLine: {\r\n show: false,\r\n lineStyle: {\r\n type: \"dashed\",\r\n color: '#666'\r\n }\r\n },\r\n axisTick: {\r\n show: false\r\n },\r\n nameTextStyle: {\r\n padding: [0, 0, 0, -60]\r\n },\r\n axisLabel: {\r\n color: \"#fff\",\r\n \r\n //formatter: function (value, index) {\r\n //\treturn parseInt(value / denoLeft)\r\n //},\r\n fontSize: 9\r\n },\r\n axisLine: {\r\n lineStyle: {\r\n color: \"#999999\"\r\n }\r\n }\r\n }],\r\n \r\n series: [{\r\n name: \"Voltage(V)\",\r\n type: \"line\",\r\n data: dataVoltage,\r\n itemStyle: {\r\n normal: {\r\n color: \"#03BBD6\"\r\n }\r\n }\r\n }, {\r\n name: \"Current(A)\",\r\n type: \"line\",\r\n data: dataCurrent,\r\n yAxisIndex: 1,\r\n itemStyle: {\r\n normal: {\r\n color: \"#c23531\"\r\n }\r\n }\r\n }],\r\n backgroundColor: \"#25313B\"\r\n \r\n };\r\n \r\n myChartDevice.clear();\r\n console.log(option);\r\n myChartDevice.setOption(option);\r\n },\r\n //backup-output和battery\r\n getBatteryDeviceByColumn() {\r\n var that = this;\r\n common.post('PowerStationMonitor/GetInverterDataByColumn', {\r\n date: dayjs(this.date_value_device).format(\"YYYY-MM-DD HH:mm:ss\"),\r\n column: this.multiCharts.selected.value,\r\n id: this.device_detail_current.sn\r\n }).success(function (res) {\r\n if (res.data && res.data.column1 && _.keys(res.data).length > 0) {\r\n that.showDeviceChartByColumn(res.data, that.multiCharts.selected.label);\r\n that.dataNull.dataDevice = false;\r\n } else {\r\n that.showDeviceChartByColumn({\r\n \"column1\": [{\r\n date: \"01/01/1900 00:00:00\",\r\n column: 0\r\n }],\r\n \"column2\": [{\r\n date: \"01/01/1900 00:00:00\",\r\n column: 0\r\n }]\r\n }, that.multiCharts.selected.label);\r\n that.dataNull.dataDevice = true;\r\n }\r\n }).fail(function (res) {\r\n that.showDeviceChartByColumn({\r\n \"column1\": [{\r\n date: \"01/01/1900 00:00:00\",\r\n column: 0\r\n }],\r\n \"column2\": [{\r\n date: \"01/01/1900 00:00:00\",\r\n column: 0\r\n }]\r\n }, that.multiCharts.selected.label);\r\n that.dataNull.dataDevice = true;\r\n });\r\n },\r\n showDeviceBarCharts(data) {\r\n var color = [\"#90C653\", \"#FEA71F\", \"#00A0E9\"];\r\n var dataLegend;\r\n var column1 = [];\r\n var column2 = [];\r\n var column3 = [];\r\n var pv = this.device_detail_current.is_stored ? Goodwe.Ops.Resouces.Front.PVOfGraphForInverter : Goodwe.Ops.Resouces.Front.Generation;\r\n if (data.viewFiled.indexOf(\"Output\") != -1 && data.viewFiled.indexOf(\"Sell\") != -1 && data.viewFiled.length == 3) {\r\n dataLegend = [{\r\n name: Goodwe.Ops.Resouces.Front.output + \"(kWh)\",\r\n color: color[0],\r\n icon: \"roundrect\"\r\n }, {\r\n name: Goodwe.Ops.Resouces.Front.sell + \"(kWh)\",\r\n color: color[1],\r\n icon: \"roundrect\"\r\n }, {\r\n name: Goodwe.Ops.Resouces.Front.buy + \"(kWh)\",\r\n color: color[2],\r\n icon: \"roundrect\"\r\n }];\r\n column1 = data.output.map(function (v, i) {\r\n return { \"name\": Goodwe.Ops.Resouces.Front.output + \"(kWh)\", \"value\": (v.y).toFixed(2) };\r\n });\r\n column2 = data.sell.map(function (v, i) {\r\n return { \"name\": Goodwe.Ops.Resouces.Front.sell + \"(kWh)\", \"value\": (v.y).toFixed(2) };\r\n });\r\n column3 = data.buy.map(function (v, i) {\r\n return { \"name\": Goodwe.Ops.Resouces.Front.buy + \"(kWh)\", \"value\": (v.y).toFixed(2), \"symbolSize\": 5 };\r\n });\r\n }\r\n else if (data.viewFiled.indexOf(\"Output\") != -1 && data.viewFiled.indexOf(\"Pv\") != -1 && data.viewFiled.length == 3) {\r\n dataLegend = [{\r\n name: pv + \"(kWh)\",\r\n color: color[0],\r\n icon: \"roundrect\"\r\n }, {\r\n name: Goodwe.Ops.Resouces.Front.output + \"(kWh)\",\r\n color: color[1],\r\n icon: \"roundrect\"\r\n }, {\r\n name: Goodwe.Ops.Resouces.Front.income + \"(\" + currency + \")\",\r\n color: color[2],\r\n icon: \"roundrect\"\r\n }];\r\n column1 = data.pv.map(function (v, i) {\r\n return { \"name\": pv + \"(kWh)\", \"value\": v.y };\r\n });\r\n column2 = data.output.map(function (v, i) {\r\n return { \"name\": Goodwe.Ops.Resouces.Front.output + \"(kWh)\", \"value\": (v.y).toFixed(2) };\r\n });\r\n column3 = data.generationIncome.map(function (v, i) {\r\n return { \"name\": Goodwe.Ops.Resouces.Front.income + \"(\" + currency + \")\", \"value\": (v.y).toFixed(2), \"symbolSize\": 5 };\r\n });\r\n }\r\n else if (data.viewFiled.indexOf(\"Pv\") != -1 && data.viewFiled.indexOf(\"Genset\") == -1 && data.viewFiled.length == 2) {\r\n dataLegend = [{\r\n name: pv + \"(kWh)\",\r\n color: color[0],\r\n icon: \"roundrect\"\r\n }, {\r\n name: Goodwe.Ops.Resouces.Front.income + \"(\" + currency + \")\",\r\n color: color[2],\r\n icon: \"roundrect\"\r\n }];\r\n column1 = data.pv.map(function (v, i) {\r\n return { \"name\": pv + \"(kWh)\", \"value\": (v.y).toFixed(2) };\r\n });\r\n column2 = data.generationIncome.map(function (v, i) {\r\n return { \"name\": Goodwe.Ops.Resouces.Front.income + \"(\" + currency + \")\", \"value\": (v.y).toFixed(2), \"symbolSize\": 5 };\r\n });\r\n }\r\n else if (data.viewFiled.indexOf(\"Pv\") != -1 && data.viewFiled.indexOf(\"Genset\") != -1 && data.viewFiled.length == 2) {\r\n dataLegend = [\r\n { name: pv + \"(kWh)\", color: color[0], icon: \"roundrect\"},\r\n { name: Goodwe.Ops.Resouces.Front.PCurve_Gen_Genset, color: color[1] },\r\n ];\r\n column1 = data.pv.map(function (v, i) {\r\n return { \"name\": pv + \"(kWh)\", \"value\": (v.y).toFixed(2) };\r\n });\r\n column2 = data.genset.map(function (v, i) {\r\n return { \"name\": Goodwe.Ops.Resouces.Front.PCurve_Gen_Genset, \"value\": (v.y).toFixed(2) };\r\n });\r\n }\r\n else if (data.viewFiled.indexOf(\"Pv\") != -1 && data.viewFiled.indexOf(\"Genset\") != -1 && data.viewFiled.length == 3) {\r\n dataLegend = [\r\n { name: pv + \"(kWh)\", color: color[0] }, \r\n { name: Goodwe.Ops.Resouces.Front.PCurve_Gen_Genset, color: color[1] },\r\n { name: Goodwe.Ops.Resouces.Front.income + \"(\" + currency + \")\", color: color[2], }\r\n ];\r\n column1 = data.pv.map(function (v, i) {\r\n return { \"name\": pv + \"(kWh)\", \"value\": (v.y).toFixed(2) };\r\n });\r\n column2 = data.genset.map(function (v, i) {\r\n return { \"name\": Goodwe.Ops.Resouces.Front.PCurve_Gen_Genset, \"value\": (v.y).toFixed(2) };\r\n });\r\n column3 = data.generationIncome.map(function (v, i) {\r\n return { \"name\": Goodwe.Ops.Resouces.Front.income + \"(\" + currency + \")\", \"value\": (v.y).toFixed(2), \"symbolSize\": 0 };\r\n });\r\n }\r\n else if (data.viewFiled.indexOf(\"Output\") != -1 && data.viewFiled.length == 1) {\r\n dataLegend = [{\r\n name: Goodwe.Ops.Resouces.Front.output + \"(kWh)\",\r\n color: color[1],\r\n icon: \"roundrect\"\r\n }];\r\n column1 = data.output.map(function (v, i) {\r\n return { \"name\": Goodwe.Ops.Resouces.Front.output + \"(kWh)\", \"value\": (v.y).toFixed(2) };\r\n });\r\n }\r\n else if (data.viewFiled.indexOf(\"Pv\") != -1 && data.viewFiled.length == 1) {\r\n dataLegend = [{\r\n name: pv + \"(kWh)\",\r\n color: color[0],\r\n icon: \"roundrect\"\r\n }];\r\n column1 = data.pv.map(function (v, i) {\r\n return { \"name\": pv + \"(kWh)\", \"value\": (v.y).toFixed(2) };\r\n });\r\n }\r\n else {\r\n //dataLegend = [{\r\n // name: Goodwe.Ops.Resouces.Front.sell + \"(kWh)\",\r\n // color: color[0],\r\n // icon: \"roundrect\"\r\n //}, {\r\n // name: Goodwe.Ops.Resouces.Front.buy + \"(kWh)\",\r\n // color: color[1],\r\n // icon: \"roundrect\"\r\n //}];\r\n //column1 = data.sell.map(function (v, i) {\r\n // return { \"name\": Goodwe.Ops.Resouces.Front.sell + \"(kWh)\", \"value\": v.y };\r\n //});\r\n //column2 = data.buy.map(function (v, i) {\r\n // return { \"name\": Goodwe.Ops.Resouces.Front.buy + \"(kWh)\", \"value\": v.y };\r\n //});\r\n }\r\n var yMax = 0;\r\n var intervalY = 0;\r\n var yRightMax = 0;\r\n \r\n var xData = data.xy.map(function (v, i) {\r\n //补全日期\r\n if (/^\\d{1,2}\\/\\d{4}$/.test(v)) {\r\n return dayjs(v.split(\"/\")[0] + \"/01/\" + v.split(\"/\")[1]).format(dateFormatReplace(\"month\"));\r\n } else if (/^\\d{4}$/.test(v)) {\r\n return dayjs(\"01\" + \"/01/\" + v.split(\"/\")[0]).format(dateFormatReplace(\"year\"));\r\n } else {\r\n return dayjs(v).format(dateFormatSems);\r\n }\r\n \r\n });\r\n \r\n var arr = [].concat(column1, column2);\r\n arr.forEach(function (v, i) {\r\n if (v.value > yMax) {\r\n yMax = v.value;\r\n }\r\n });\r\n yMax = Math.ceil(yMax / 8) * 8;\r\n intervalY = yMax / 4;\r\n var option = {\r\n title: {},\r\n grid: {\r\n left: 50,\r\n right: 70,\r\n bottom: 30\r\n },\r\n xAxis: {\r\n axisTick: {\r\n show: false\r\n \r\n },\r\n axisLine: {\r\n lineStyle: {\r\n color: \"#C0C0C0\"\r\n }\r\n },\r\n axisLabel: {\r\n color: \"#C1C1C1\"\r\n },\r\n data: xData\r\n },\r\n yAxis: [{\r\n min: 0,\r\n \r\n axisTick: {\r\n show: false\r\n },\r\n axisLine: {\r\n lineStyle: {\r\n color: \"#C0C0C0\"\r\n }\r\n },\r\n axisLabel: {\r\n color: \"#C0C0C0\"\r\n },\r\n splitLine: {\r\n lineStyle: {\r\n opacity: 0.6,\r\n type: \"dashed\"\r\n }\r\n },\r\n name: \"kWh\",\r\n nameLocation: \"end\",\r\n nameTextStyle: {\r\n color: \"#C0C0C0\",\r\n fontSize: 10,\r\n padding: [0, 0, -10, 50]\r\n }\r\n }],\r\n legend: {\r\n right: 30,\r\n data: dataLegend,\r\n itemGap: 10,\r\n itemHeight: 8,\r\n itemWidth: 12,\r\n textStyle: {\r\n color: \"#fff\"\r\n }\r\n },\r\n tooltip: {\r\n trigger: \"axis\",\r\n confine: true,\r\n formatter: function (param) {\r\n //修改提示文字\r\n var tooltip = param[0].axisValue + \"
    \";\r\n param.forEach(function (v, i) {\r\n tooltip += param[i].name + \" : \" + param[i].value + \"
    \";\r\n });\r\n return tooltip;\r\n }\r\n },\r\n dataZoom: [{\r\n type: \"inside\",\r\n orient: \"horizontal\"\r\n }],\r\n series: [],\r\n backgroundColor: \"#25313B\"\r\n }\r\n if (data.viewFiled.indexOf(\"Output\") != -1 && data.viewFiled.indexOf(\"Sell\") != -1 && data.viewFiled.length == 3) {\r\n \r\n option.series = [{\r\n type: \"bar\",\r\n name: Goodwe.Ops.Resouces.Front.output + \"(kWh)\",\r\n barMaxWidth: 12,\r\n itemStyle: {\r\n normal: {\r\n color: color[0],\r\n barBorderRadius: [5, 5, 0, 0]\r\n }\r\n },\r\n data: column1\r\n },\r\n {\r\n type: \"bar\",\r\n name: Goodwe.Ops.Resouces.Front.sell + \"(kWh)\",\r\n barMaxWidth: 12,\r\n itemStyle: {\r\n normal: {\r\n color: color[1],\r\n barBorderRadius: [5, 5, 0, 0]\r\n }\r\n },\r\n data: column2\r\n },\r\n {\r\n type: \"bar\",\r\n name: Goodwe.Ops.Resouces.Front.buy + \"(kWh)\",\r\n barMaxWidth: 12,\r\n itemStyle: {\r\n normal: {\r\n color: color[2],\r\n barBorderRadius: [5, 5, 0, 0]\r\n }\r\n },\r\n data: column3\r\n }];\r\n }\r\n else if (data.viewFiled.indexOf(\"Output\") != -1 && data.viewFiled.indexOf(\"Pv\") != -1 && data.viewFiled.length == 3) {\r\n option.yAxis.push({\r\n name: Goodwe.Ops.Resouces.Front.income + \"(\" + currency + \")\",\r\n nameLocation: \"end\",\r\n nameTextStyle: {\r\n color: \"#C0C0C0\",\r\n fontSize: 10,\r\n padding: [0, 0, -10, -90]\r\n },\r\n \r\n axisLine: {\r\n lineStyle: {\r\n color: \"#C0C0C0\",\r\n type: \"solid\"\r\n }\r\n },\r\n splitLine: {\r\n show: false\r\n },\r\n axisTick: {\r\n show: false\r\n }\r\n });\r\n option.series = [{\r\n type: \"bar\",\r\n name: pv + \"(kWh)\",\r\n barMaxWidth: 12,\r\n itemStyle: {\r\n normal: {\r\n color: color[0],\r\n barBorderRadius: [5, 5, 0, 0]\r\n }\r\n },\r\n data: column1\r\n },\r\n {\r\n type: \"bar\",\r\n name: Goodwe.Ops.Resouces.Front.output + \"(kWh)\",\r\n barMaxWidth: 12,\r\n itemStyle: {\r\n normal: {\r\n color: color[1],\r\n barBorderRadius: [5, 5, 0, 0]\r\n }\r\n },\r\n data: column2\r\n },\r\n {\r\n type: \"line\",\r\n name: Goodwe.Ops.Resouces.Front.income + \"(\" + currency + \")\",\r\n yAxisIndex: 1,\r\n itemStyle: {\r\n normal: {\r\n color: color[2],\r\n barBorderRadius: [5, 5, 0, 0]\r\n }\r\n },\r\n areaStyle: {\r\n normal: {\r\n color: \"rgba(0, 160, 233, 0.2)\"\r\n }\r\n },\r\n data: column3\r\n }];\r\n }\r\n else if (data.viewFiled.indexOf(\"Pv\") != -1 && data.viewFiled.indexOf(\"Genset\") == -1 && data.viewFiled.length == 2) {\r\n option.yAxis.push({\r\n name: Goodwe.Ops.Resouces.Front.income + \"(\" + currency + \")\",\r\n nameLocation: \"end\",\r\n nameTextStyle: {\r\n color: \"#C0C0C0\",\r\n fontSize: 10,\r\n padding: [0, 0, -10, -90]\r\n },\r\n \r\n axisLine: {\r\n lineStyle: {\r\n color: \"#C0C0C0\",\r\n type: \"solid\"\r\n }\r\n },\r\n splitLine: {\r\n show: false\r\n },\r\n axisTick: {\r\n show: false\r\n }\r\n });\r\n option.series = [{\r\n type: \"bar\",\r\n name: pv + \"(kWh)\",\r\n barMaxWidth: 12,\r\n itemStyle: {\r\n normal: {\r\n color: color[0],\r\n barBorderRadius: [5, 5, 0, 0]\r\n }\r\n },\r\n data: column1\r\n }, {\r\n type: \"line\",\r\n name: Goodwe.Ops.Resouces.Front.income + \"(\" + currency + \")\",\r\n yAxisIndex: 1,\r\n itemStyle: {\r\n normal: {\r\n color: color[2],\r\n barBorderRadius: [5, 5, 0, 0]\r\n }\r\n },\r\n areaStyle: {\r\n normal: {\r\n color: \"rgba(0, 160, 233, 0.2)\"\r\n }\r\n },\r\n data: column2\r\n }];\r\n }\r\n else if (data.viewFiled.indexOf(\"Pv\") != -1 && data.viewFiled.indexOf(\"Genset\") != -1 && data.viewFiled.length == 2) {\r\n option.series = [{\r\n type: \"bar\",\r\n name: pv + \"(kWh)\",\r\n barMaxWidth: 12,\r\n itemStyle: {\r\n normal: {\r\n color: color[0],\r\n barBorderRadius: [5, 5, 0, 0]\r\n }\r\n },\r\n data: column1\r\n }, \r\n {\r\n type: \"bar\",\r\n name: Goodwe.Ops.Resouces.Front.PCurve_Gen_Genset,\r\n barMaxWidth: 12,\r\n itemStyle: {\r\n normal: {\r\n color: color[1],\r\n barBorderRadius: [5, 5, 0, 0]\r\n }\r\n },\r\n data: column2\r\n }];\r\n }\r\n else if (data.viewFiled.indexOf(\"Pv\") != -1 && data.viewFiled.indexOf(\"Genset\") != -1 && data.viewFiled.length == 3) {\r\n option.yAxis.push({\r\n name: Goodwe.Ops.Resouces.Front.income + \"(\" + currency + \")\",\r\n nameLocation: \"end\",\r\n nameTextStyle: {\r\n color: \"#C0C0C0\",\r\n fontSize: 10,\r\n padding: [0, 0, -10, -90]\r\n },\r\n axisLine: {\r\n lineStyle: {\r\n color: \"#C0C0C0\",\r\n type: \"solid\"\r\n }\r\n },\r\n splitLine: {\r\n show: false\r\n },\r\n axisTick: {\r\n show: false\r\n }\r\n });\r\n option.series = [{\r\n type: \"bar\",\r\n name: pv + \"(kWh)\",\r\n barMaxWidth: 12,\r\n itemStyle: {\r\n normal: {\r\n color: color[0],\r\n barBorderRadius: [5, 5, 0, 0]\r\n }\r\n },\r\n data: column1\r\n }, \r\n {\r\n type: \"bar\",\r\n name: Goodwe.Ops.Resouces.Front.PCurve_Gen_Genset,\r\n barMaxWidth: 12,\r\n itemStyle: {\r\n normal: {\r\n color: color[1],\r\n barBorderRadius: [5, 5, 0, 0]\r\n }\r\n },\r\n data: column2\r\n },{\r\n type: \"line\",\r\n name: Goodwe.Ops.Resouces.Front.income + \"(\" + currency + \")\",\r\n yAxisIndex: 1,\r\n itemStyle: {\r\n normal: {\r\n color: color[2],\r\n barBorderRadius: [5, 5, 0, 0]\r\n }\r\n },\r\n areaStyle: {\r\n normal: {\r\n color: \"rgba(0, 160, 233, 0.2)\"\r\n }\r\n },\r\n data: column3\r\n }];\r\n }\r\n else if (data.viewFiled.indexOf(\"Output\") != -1 && data.viewFiled.length == 1) {\r\n option.series = [{\r\n type: \"bar\",\r\n name: Goodwe.Ops.Resouces.Front.output + \"(kWh)\",\r\n barMaxWidth: 12,\r\n itemStyle: {\r\n normal: {\r\n color: color[0],\r\n barBorderRadius: [5, 5, 0, 0]\r\n }\r\n },\r\n data: column1\r\n }];\r\n }\r\n else if (data.viewFiled.indexOf(\"Pv\") != -1 && data.viewFiled.length == 1) {\r\n option.series = [{\r\n type: \"bar\",\r\n name: pv + \"(kWh)\",\r\n barMaxWidth: 12,\r\n itemStyle: {\r\n normal: {\r\n color: color[0],\r\n barBorderRadius: [5, 5, 0, 0]\r\n }\r\n },\r\n data: column1\r\n }];\r\n }\r\n myChartDevice.clear();\r\n myChartDevice.setOption(option);\r\n },\r\n //导出xls\r\n exportExcel(param) {\r\n common.post(\"/v1/ReportData/GetStationPowerDataFilePath\", param, function (res) {\r\n if (!res.data.file_path) {\r\n goodwe.alert(Goodwe.Ops.Resouces.Front.export_fail);\r\n return;\r\n }\r\n location.href = res.data.file_path;\r\n }).fail(function () {\r\n setTimeout(function () {\r\n vm.getStatement(qry_key);\r\n }, 3000);\r\n });\r\n },\r\n },\r\n watch: {\r\n 'device_detail_current.sn': function (sn) {\r\n this.multiCharts.list = this.getIndicatorListNew(this.device_detail_current.list)\r\n }\r\n },\r\n computed: {\r\n canNext: function () {\r\n const userDate = this.localDate;\r\n if (this.echart_date_type_device == \"date\") {\r\n return new Date(this.date_value_device).getTime() < \r\n new Date(`${userDate.getFullYear()}/${userDate.getMonth() + 1}/${userDate.getDate()}`).getTime();\r\n } else if (this.echart_date_type_device == \"month\") {\r\n return new Date(this.date_value_device).getTime() < new Date(userDate.getFullYear() + \"/\" + (userDate.getMonth() + 1)).getTime();\r\n } else if (this.echart_date_type_device == \"year\") {\r\n return new Date(this.date_value_device).getTime() < new Date(userDate.getFullYear() + \"\").getTime()\r\n }\r\n }\r\n },\r\n created() {\r\n this.device_detail_current = this.info;\r\n var bpsReg = window.bpsReg;\r\n this.tag_name = (bpsReg && bpsReg.test(this.info.sn) && this.device_detail_current.is_showOutput) ? lang.system_output: lang.pssmGenerateAndYield\r\n //如果试bpu就吧generation%income隐藏\r\n if (this.info && this.info.sn && this.info.sn.substring(4, 8).indexOf(\"BPU\") > -1) {\r\n $(\".btn-curve.earn\").hide();\r\n }\r\n },\r\n mounted() {\r\n this.multiCharts.list = this.getIndicatorListNew(this.info.points);\r\n this.multiChartsSelected = { label: this.multiCharts.list[0].label, value: this.multiCharts.list[0].value, unit: \"W\" }\r\n this.multiCharts.selected = { label: this.multiCharts.list[0].label, value: this.multiCharts.list[0].value, unit: \"W\" }\r\n myChartDevice = echarts.init(document.getElementById(\"mainDevice\"));\r\n this.multiChartsItemClick(this.multiCharts.selected)\r\n }\r\n\r\n}","import mod from \"-!../../../../../node_modules/babel-loader/lib/index.js!./DeviceCurveChart.js?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../node_modules/babel-loader/lib/index.js!./DeviceCurveChart.js?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./DeviceCurveChart.vue?vue&type=template&id=0a175b67&\"\nimport script from \"./DeviceCurveChart.js?vue&type=script&lang=js&\"\nexport * from \"./DeviceCurveChart.js?vue&type=script&lang=js&\"\nimport style0 from \"./DeviceCurveChart.scss?vue&type=style&index=0&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"device-chart\",style:({ marginLeft: _vm.count < 6 ? '150px': '108px' })},[_c('button',{staticClass:\"device-date-picker_left\",on:{\"click\":_vm.prevCycleChart}}),_vm._v(\" \"),_c('button',{staticClass:\"device-date-picker_right\",attrs:{\"disabled\":!_vm.canNext},on:{\"click\":_vm.nextCycleChart}}),_vm._v(\" \"),_c('div',{staticClass:\"device-curve-name\",class:{'device-detail-spanner': _vm.device_detail_current && _vm.device_detail_current.it_change_flag}},[_vm._v(\"\\n \"+_vm._s(_vm.device_detail_current && _vm.device_detail_current.name)+\"\\n \")]),_vm._v(\" \"),_c('div',{staticClass:\"device-curve-ctrl clearfix\"},[_c('div',{staticClass:\"mold-title clearfix\"},[_c('div',{staticClass:\"multi-charts-w\",class:{'btn-curve-active':_vm.multiCharts.active},on:{\"click\":function($event){_vm.multiCharts.show = !_vm.multiCharts.show}}},[_c('p',[_vm._v(_vm._s(_vm.lang[_vm.multiCharts.selected.label]||_vm.multiCharts.selected.label))]),_vm._v(\" \"),_c('em'),_vm._v(\" \"),_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.multiCharts.show),expression:\"multiCharts.show\"}],staticClass:\"multi-charts-list\"},[_c('gdw-scroll',[_c('ul',_vm._l((_vm.multiCharts.list),function(item){return _c('li',{key:item,on:{\"click\":function($event){return _vm.multiChartsItemClick(item)}}},[_vm._v(\"\\n \"+_vm._s(_vm.lang[item.label]||item.label)+\"\\n \")])}),0)])],1)]),_vm._v(\" \"),_c('button',{staticClass:\"btn-curve earn\",class:{'btn-curve-active':!_vm.multiCharts.active},attrs:{\"type\":\"button\"},on:{\"click\":_vm.btnEchartsTapClickDevice}},[_vm._v(\"\\n \"+_vm._s(_vm.tag_name)+\"\\n \")]),_vm._v(\" \"),_c('div',{staticClass:\"title-operate-div\"},[_c('button',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.is_power_income_device),expression:\"is_power_income_device\"}],staticClass:\"button-op-act\",staticStyle:{\"margin-right\":\"35px\"},attrs:{\"type\":\"button\"},on:{\"click\":_vm.btnChartClickDevice}},[_vm._v(_vm._s(_vm.lang.pssmDateModeDay))]),_vm._v(\" \"),_c('button',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.is_power_income_device),expression:\"is_power_income_device\"}],staticStyle:{\"margin-right\":\"35px\",\"padding\":\"0px\"},attrs:{\"type\":\"button\"},on:{\"click\":_vm.btnChartClickDevice}},[_vm._v(_vm._s(_vm.lang.pssmDateModeMonth))]),_vm._v(\" \"),_c('button',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.is_power_income_device),expression:\"is_power_income_device\"}],staticStyle:{\"margin-right\":\"55px\",\"padding\":\"0px\"},attrs:{\"type\":\"button\"},on:{\"click\":_vm.btnChartClickDevice}},[_vm._v(_vm._s(_vm.lang.pssmDateModeYear))]),_vm._v(\" \"),_c('el-date-picker',{ref:\"deviceDatePicker\",staticClass:\"date-div\",attrs:{\"type\":_vm.echart_date_type_device,\"clearable\":false,\"disabled\":_vm.is_date_disabled_device,\"editable\":false,\"format\":_vm.date_format,\"picker-options\":_vm.pickerOptions},on:{\"change\":_vm.chart_operate_device},model:{value:(_vm.date_value_device),callback:function ($$v) {_vm.date_value_device=$$v},expression:\"date_value_device\"}})],1)]),_vm._v(\" \"),_c('div',{staticClass:\"echarts-wrapper\"},[_c('div',{staticStyle:{\"height\":\"252px\"},attrs:{\"id\":\"mainDevice\"}}),_vm._v(\" \"),(_vm.dataNull.dataDevice)?_c('div',{staticClass:\"echarts-data-null black\",staticStyle:{\"width\":\"100%\",\"height\":\"252px\"}}):_vm._e()]),_vm._v(\" \"),(_vm.multiCharts.active)?_c('div',{staticClass:\"device-export-btn\",on:{\"click\":_vm.toDataHistory}},[_c('img',{attrs:{\"src\":\"/Images/icon-new/export.png\",\"alt\":\"Alternate Text\"}})]):_vm._e(),_vm._v(\" \"),(!_vm.multiCharts.active&&!_vm.dataNull.dataDevice)?_c('div',{staticClass:\"device-export-btn\",on:{\"click\":_vm.exportDeviceGeneration}},[_c('img',{attrs:{\"src\":\"/Images/icon-new/export.png\",\"alt\":\"Alternate Text\"}})]):_vm._e()])])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\n \r\n \r\n \r\n \r\n
    \r\n

    {{ model.eday }}

    \r\n kWh\r\n {{ lang.daily_output }}\r\n
    \r\n
    \r\n

    {{ lang.total_output }}

    \r\n

    {{ model.etotal }} kWh

    \r\n
    \r\n \r\n\r\n
    \r\n \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n
      \r\n
    • \r\n {{ lang.battery }}\r\n {{ \"--\" }}\r\n
    • \r\n
    • \r\n {{ lang.batterySOC }}:\r\n {{ \"--\" }}\r\n
    • \r\n
    • \r\n {{ lang.batteryStatus }}:\r\n {{ batteryStatus[`status0`] }}\r\n
    • \r\n
    \r\n
    \r\n
    \r\n

    {{ lang.DeviceParameter_SOC }}

    \r\n
    \r\n

    {{ 0 }}%

    \r\n
    \r\n \r\n
    \r\n \r\n \r\n
    \r\n
      \r\n
    • \r\n {{ lang.battery }}\r\n {{ item.batterySN }}\r\n
    • \r\n
    • \r\n {{ lang.batterySOC }}:\r\n {{ item.power }}%\r\n
    • \r\n
    • \r\n {{ lang.batteryStatus }}:\r\n {{\r\n item.statusText\r\n ? item.statusText\r\n : batteryStatus[`status${item.status}`]\r\n }}\r\n
    • \r\n
    \r\n
    \r\n \r\n

    {{ lang.DeviceParameter_SOC }}

    \r\n
    \r\n

    {{ item.soc }}%

    \r\n
    \r\n \r\n
    \r\n

    \r\n
    \r\n 1\"\r\n >\r\n \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n

    {{ model.eday || 0 }}

    \r\n kWh\r\n {{ lang.pssmGenerateTodayAmount }}\r\n
    \r\n
    \r\n

    {{ lang.pssmGenerateTotal }}

    \r\n

    {{ model.etotal || 0 }}kWh

    \r\n
    \r\n \r\n

    {{ lang.pssmGenerateTotalHour }}

    \r\n

    {{ model.hTotal || 0 }}{{ lang.pssmUnitHour }}

    \r\n
    \r\n
    \r\n
    \r\n
    \r\n {{ model.status | status2str }}\r\n \r\n ({{ lang[model.gridConnStatus] }})\r\n \r\n
    \r\n
    \r\n {{ lang.pssmLastUpdateTime }}:\r\n {{ model.last_refresh_time | formatTurnonTime }}\r\n
    \r\n \r\n {{ faultMessage || model.fault_message }}\r\n
    \r\n
    \r\n
    \r\n {{lang.pssmCurve}}\r\n {{lang.pssmData}}\r\n \r\n \r\n
    \r\n\r\n\r\n\r\n","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./InverterMonitor.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./InverterMonitor.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./InverterMonitor.vue?vue&type=template&id=dbfe624a&scoped=true&\"\nimport script from \"./InverterMonitor.vue?vue&type=script&lang=js&\"\nexport * from \"./InverterMonitor.vue?vue&type=script&lang=js&\"\nimport style0 from \"./InverterMonitor.vue?vue&type=style&index=0&id=dbfe624a&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"dbfe624a\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[(_vm.curShow == 'detailData')?_c('div',{staticClass:\"device-item\",staticStyle:{\"height\":\"320px\"}},[_c('div',{staticClass:\"device-detail-name\",class:{ 'device-detail-spanner': _vm.model.it_change_flag }},[_vm._v(\"\\n \"+_vm._s(_vm.model.name)+\"\\n \")]),_vm._v(\" \"),_c('div',{staticClass:\"table-list left-list\"},[_c('el-scrollbar',{staticStyle:{\"height\":\"315px\",\"width\":\"100%\"},attrs:{\"wrap-class\":'el-gw-scroll'}},[_c('ul',{},_vm._l((_vm.listItems.left),function(item){return _c('li',{key:item.key},[_c('label',[_c('span',{attrs:{\"title\":_vm.lang[item.key] || item.key}},[_vm._v(\"\\n \"+_vm._s(_vm.lang[item.key] || item.key)+\"\\n \")]),_vm._v(\" \"),_c('el-tooltip',{staticClass:\"item\",attrs:{\"effect\":\"light\",\"placement\":\"right\",\"content\":_vm.lang.power_calc_tip}},[(['InverterPowerOfPlantMonitor', 'ouptputPower'].includes(item.key))?_c('img',{staticStyle:{\"margin\":\"0 0 1px 4px\",\"width\":\"16px\",\"height\":\"16px\",\"cursor\":\"pointer\"},attrs:{\"src\":\"/Images/common/tooltip_icon.png\",\"alt\":\"\"}}):_vm._e()])],1),_vm._v(\" \"),_c('span',{attrs:{\"title\":_vm.lang[item.value] || item.value}},[_vm._v(\"\\n \"+_vm._s(_vm.lang[item.value] || item.value || \"--\")+\"\\n \"),(item.key === 'serialNum' && _vm.model.master === 1)?_c('img',{staticStyle:{\"margin\":\"0 0 2px 4px\",\"cursor\":\"pointer\"},attrs:{\"title\":_vm.lang.Parallel_System_View_Slaves,\"src\":\"/Images/add_device/img_master.png\",\"alt\":\"\"},on:{\"click\":function($event){return _vm.showParallelDetail(item.value)}}}):_vm._e()]),_vm._v(\" \"),_c('em',[_vm._v(_vm._s(item.unit))])])}),0)])],1),_vm._v(\" \"),_c('div',{staticClass:\"table-list right-list\"},[_c('el-scrollbar',{staticStyle:{\"height\":\"315px\",\"width\":\"100%\"},attrs:{\"wrap-class\":'el-gw-scroll'}},[_c('ul',{},_vm._l((_vm.listItems.right),function(item){return _c('li',{key:item.key},[_c('label',{attrs:{\"title\":_vm.lang[item.key] || item.key}},[_vm._v(\"\\n \"+_vm._s(_vm.lang[item.key] || item.key)+\"\\n \")]),_vm._v(\" \"),(item.isHT)?_c('span',{staticStyle:{\"color\":\"#03bbd6\",\"text-decoration\":\"underline\",\"cursor\":\"pointer\"},on:{\"click\":function($event){_vm.curShow = 'detailHT'}}},[_vm._v(\"\\n \"+_vm._s(item.value)+\"\\n \")]):_vm._e(),_vm._v(\" \"),_c('span',{attrs:{\"title\":_vm.lang[item.value] || item.value}},[_vm._v(\"\\n \"+_vm._s(_vm.lang[item.value] || item.value || \"--\")+\"\\n \")]),_vm._v(\" \"),_c('em',[_vm._v(_vm._s(item.unit))])])}),0)])],1),_vm._v(\" \"),(_vm.model.is_stored)?_c('div',[(\n (_vm.model.sn.toUpperCase().indexOf('BPU') < 0 &&\n !_vm.bpsReg.test(_vm.model.sn.toUpperCase())) ||\n (_vm.bpsReg.test(_vm.model.sn.toUpperCase()) && !_vm.model.is_showOutput)\n )?[_c('div',{staticClass:\"today-power-center\"},[_c('p',[_vm._v(_vm._s(_vm.model.eday))]),_vm._v(\" \"),_c('span',[_vm._v(\"kWh\")]),_vm._v(\" \"),_c('span',[_vm._v(_vm._s(_vm.lang.pssmGenerateTodayAmount))])]),_vm._v(\" \"),_c('div',{staticClass:\"total-list left-total-list\"},[_c('h4',[_vm._v(_vm._s(_vm.lang.pssmGenerateTotal))]),_vm._v(\" \"),_c('p',[_vm._v(_vm._s(_vm.model.etotal)+\" kWh\")])])]:_vm._e(),_vm._v(\" \"),(_vm.model.sn.toUpperCase().indexOf('BPU') > 0)?[_c('div',{staticClass:\"today-power-center\"},[_c('p',[_vm._v(\"\\n \"+_vm._s(Math.abs(parseInt(_vm.model.ibattery1 * _vm.model.vbattery1)))+\"\\n \")]),_vm._v(\" \"),_c('span',[_vm._v(\"W\")]),_vm._v(\" \"),_c('span',[_vm._v(_vm._s(_vm.lang.BatteryPowerOfPlantMonitor))])])]:_vm._e(),_vm._v(\" \"),(_vm.bpsReg.test(_vm.model.sn.toUpperCase()) && _vm.model.is_showOutput)?[_c('div',{staticClass:\"today-power-center\"},[_c('p',[_vm._v(_vm._s(_vm.model.eday))]),_vm._v(\" \"),_c('span',[_vm._v(\"kWh\")]),_vm._v(\" \"),_c('span',[_vm._v(_vm._s(_vm.lang.daily_output))])]),_vm._v(\" \"),_c('div',{staticClass:\"total-list left-total-list\"},[_c('h4',[_vm._v(_vm._s(_vm.lang.total_output))]),_vm._v(\" \"),_c('p',[_vm._v(_vm._s(_vm.model.etotal)+\" kWh\")])])]:_vm._e(),_vm._v(\" \"),_c('div',{staticClass:\"scroll-view\"},[_c('div',{staticClass:\"scroll-arrow-btn\",class:{ 'hide-soc': _vm.socList.length < 2 },on:{\"click\":_vm.up}},[_c('img',{attrs:{\"src\":_vm.topIndex === 0\n ? '/Images/power_status_sn_min/arr-up-grey.png'\n : '/Images/power_status_sn_min/arr-up.png',\"alt\":\"\"}})]),_vm._v(\" \"),_c('div',{staticClass:\"scroll-view-container\"},[_c('div',{staticClass:\"soc-list\",style:({ top: _vm.topIndex * -110 + 'px' })},[(_vm.socList.length === 0)?_c('div',{staticClass:\"total-list-container\"},[(_vm.socList.length == 0)?_c('el-tooltip',{staticClass:\"item\",attrs:{\"effect\":\"dark\",\"placement\":\"right\"}},[_c('div',{attrs:{\"slot\":\"content\"},slot:\"content\"},[_c('ul',{staticClass:\"battery-info\"},[_c('li',[_c('span',[_vm._v(_vm._s(_vm.lang.battery))]),_vm._v(\" \"),_c('span',[_vm._v(_vm._s(\"--\"))])]),_vm._v(\" \"),_c('li',[_c('span',[_vm._v(_vm._s(_vm.lang.batterySOC)+\":\")]),_vm._v(\" \"),_c('span',[_vm._v(_vm._s(\"--\"))])]),_vm._v(\" \"),_c('li',[_c('span',[_vm._v(_vm._s(_vm.lang.batteryStatus)+\":\")]),_vm._v(\" \"),_c('span',[_vm._v(_vm._s(_vm.batteryStatus[\"status0\"]))])])])]),_vm._v(\" \"),_c('div',{staticClass:\"total-list right-total-list soc-item\"},[_c('h4',[_vm._v(_vm._s(_vm.lang.DeviceParameter_SOC))]),_vm._v(\" \"),_c('div',{staticClass:\"soc-item-inner\",style:({ width: _vm.setSocWidth(0) })}),_vm._v(\" \"),_c('p',[_vm._v(_vm._s(0)+\"%\")])])]):_vm._e()],1):_vm._e(),_vm._v(\" \"),_vm._l((_vm.socList),function(item,index){return _c('div',{key:index,staticClass:\"total-list-container\",on:{\"click\":function($event){return _vm.showBatteryDetail(item)}}},[_c('el-tooltip',{staticClass:\"item\",attrs:{\"effect\":\"dark\",\"placement\":\"right\"}},[_c('div',{attrs:{\"slot\":\"content\"},slot:\"content\"},[_c('ul',{staticClass:\"battery-info\"},[_c('li',[_c('span',[_vm._v(_vm._s(_vm.lang.battery))]),_vm._v(\" \"),_c('span',[_vm._v(_vm._s(item.batterySN))])]),_vm._v(\" \"),_c('li',[_c('span',[_vm._v(_vm._s(_vm.lang.batterySOC)+\":\")]),_vm._v(\" \"),_c('span',[_vm._v(_vm._s(item.power)+\"%\")])]),_vm._v(\" \"),_c('li',[_c('span',[_vm._v(_vm._s(_vm.lang.batteryStatus)+\":\")]),_vm._v(\" \"),_c('span',[_vm._v(_vm._s(item.statusText\n ? item.statusText\n : _vm.batteryStatus[(\"status\" + (item.status))]))])])])]),_vm._v(\" \"),_c('div',{staticClass:\"total-list right-total-list soc-item\",on:{\"click\":function($event){return _vm.showBatteryDetail(item)}}},[_c('h4',[_vm._v(_vm._s(_vm.lang.DeviceParameter_SOC))]),_vm._v(\" \"),_c('div',{staticClass:\"soc-item-inner\",style:({ width: _vm.setSocWidth(item.soc) })}),_vm._v(\" \"),_c('p',[_vm._v(_vm._s(item.soc)+\"%\")])])])],1)})],2)]),_vm._v(\" \"),(_vm.socList.length > 1)?_c('div',{staticClass:\"scroll-arrow-btn arrow-btn-down\",on:{\"click\":_vm.down}},[_c('img',{attrs:{\"src\":_vm.topIndex === _vm.socList.length - 1\n ? '/Images/power_status_sn_min/arr-up-grey.png'\n : '/Images/power_status_sn_min/arr-up.png',\"alt\":\"\"}})]):_vm._e()])],2):_vm._e(),_vm._v(\" \"),(!_vm.model.is_stored)?_c('div',[_c('div',{staticClass:\"today-power-center\"},[_c('p',[_vm._v(_vm._s(_vm.model.eday || 0))]),_vm._v(\" \"),_c('span',[_vm._v(\"kWh\")]),_vm._v(\" \"),_c('span',[_vm._v(_vm._s(_vm.lang.pssmGenerateTodayAmount))])]),_vm._v(\" \"),_c('div',{staticClass:\"total-list left-total-list\"},[_c('h4',[_vm._v(_vm._s(_vm.lang.pssmGenerateTotal))]),_vm._v(\" \"),_c('p',[_vm._v(_vm._s(_vm.model.etotal || 0)+\"kWh\")])]),_vm._v(\" \"),_c('div',{staticClass:\"total-list right-total-list\",staticStyle:{\"box-shadow\":\"inset 0px 0px 16px 0px rgb(255, 255, 255, 0.1)\",\"top\":\"215px\"}},[_c('h4',[_vm._v(_vm._s(_vm.lang.pssmGenerateTotalHour))]),_vm._v(\" \"),_c('p',[_vm._v(_vm._s(_vm.model.hTotal || 0)+_vm._s(_vm.lang.pssmUnitHour))])])]):_vm._e(),_vm._v(\" \"),_c('div',{staticClass:\"device-status-w\"},[_c('div',{staticClass:\"device-status\",attrs:{\"data-status\":_vm.model.status}},[_vm._v(\"\\n \"+_vm._s(_vm._f(\"status2str\")(_vm.model.status))+\"\\n \"),(_vm.model.status === 1 && _vm.model.gridConnStatus)?_c('span',[_vm._v(\"\\n (\"+_vm._s(_vm.lang[_vm.model.gridConnStatus])+\")\\n \")]):_vm._e()]),_vm._v(\" \"),(_vm.model.status == -1 && !_vm.model.d.fade)?_c('div',{staticClass:\"creation-date\"},[_vm._v(\"\\n \"+_vm._s(_vm.lang.pssmLastUpdateTime)+\":\\n \"+_vm._s(_vm._f(\"formatTurnonTime\")(_vm.model.last_refresh_time))+\"\\n \")]):_vm._e(),_vm._v(\" \"),(_vm.model.status != -1)?_c('div',{staticClass:\"creation-date\",staticStyle:{\"cursor\":\"pointer\"},on:{\"click\":_vm.sendMessage}},[_vm._v(\"\\n \"+_vm._s(_vm.faultMessage || _vm.model.fault_message)+\"\\n \")]):_vm._e()])]):_vm._e(),_vm._v(\" \"),(_vm.curShow == 'detailData')?_c('a',{staticClass:\"_btn_curve\",style:({top: _vm.total < 6 ? '7px':'26px'}),attrs:{\"href\":\"javascript:;\"},on:{\"click\":_vm.showDetailCurve}},[_vm._v(_vm._s(_vm.lang.pssmCurve))]):_vm._e(),_vm._v(\" \"),(_vm.curShow == 'detailChart')?_c('a',{staticClass:\"_btn_data\",style:({top: _vm.total < 6 ? '7px':'26px'}),attrs:{\"href\":\"javascript:;\"},on:{\"click\":_vm.showDetailData}},[_vm._v(_vm._s(_vm.lang.pssmData))]):_vm._e(),_vm._v(\" \"),(_vm.curShow == 'detailChart')?_c('device-curve-chart',{attrs:{\"info\":_vm.model,\"localDate\":_vm.localDate,\"count\":_vm.total,\"isSec1000Et\":_vm.isSec1000Et}}):_vm._e(),_vm._v(\" \"),(_vm.curShow == 'detailHT')?_c('goodwe-ht-detail',{attrs:{\"model\":_vm.htModel}}):_vm._e()],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import InverterMonitor from './src/InverterMonitor.vue';\r\n\r\nInverterMonitor.install = function(Vue) {\r\n Vue.component(InverterMonitor.name, InverterMonitor);\r\n}\r\n\r\nexport default InverterMonitor;","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./TransReplace.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./TransReplace.vue?vue&type=script&lang=js&\"",">","var render, staticRenderFns\nimport script from \"./TransReplace.vue?vue&type=script&lang=js&\"\nexport * from \"./TransReplace.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","import TransReplace from './src/TransReplace.vue';\r\n\r\nTransReplace.install = function(Vue) {\r\n Vue.component(TransReplace.name, TransReplace);\r\n}\r\n\r\nexport default TransReplace;","\r\n\r\n\r\n","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./GoodweDeviceChart.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./GoodweDeviceChart.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./GoodweDeviceChart.vue?vue&type=template&id=a25171a2&scoped=true&\"\nimport script from \"./GoodweDeviceChart.vue?vue&type=script&lang=js&\"\nexport * from \"./GoodweDeviceChart.vue?vue&type=script&lang=js&\"\nimport style0 from \"./GoodweDeviceChart.vue?vue&type=style&index=0&id=a25171a2&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"a25171a2\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"device-chart-con\"},[_c('div',{staticClass:\"device-curve-name\",class:{'device-detail-spanner': _vm.device_detail_current && _vm.device_detail_current.it_change_flag}},[_vm._v(_vm._s(_vm.device_detail_current && _vm.device_detail_current.name))]),_vm._v(\" \"),_c('div',{staticClass:\"device-curve-ctrl clearfix\"},[_c('div',{staticClass:\"mold-title clearfix\"},[_c('div',{staticClass:\"multi-charts-w\",class:{'btn-curve-active':_vm.multiCharts.active},on:{\"click\":function($event){_vm.multiCharts.show = !_vm.multiCharts.show}}},[_c('p',[_vm._v(_vm._s(_vm.multiCharts.selected.label))]),_vm._v(\" \"),_c('em'),_vm._v(\" \"),_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.multiCharts.show),expression:\"multiCharts.show\"}],staticClass:\"multi-charts-list\"},[_c('gdw-scroll',[_c('ul',_vm._l((_vm.multiCharts.list),function(item){return _c('li',{on:{\"click\":function($event){return _vm.multiChartsItemClick(item)}}},[_vm._v(_vm._s(item.label))])}),0)])],1)]),_vm._v(\" \"),_c('button',{staticClass:\"btn-curve earn\",class:{'btn-curve-active':!_vm.multiCharts.active},attrs:{\"type\":\"button\"},on:{\"click\":_vm.btnEchartsTapClickDevice}},[_vm._v(\"\\n \"+_vm._s(_vm.tag_name)+\"\\n \")]),_vm._v(\" \"),_c('div',{staticClass:\"title-operate-div\"},[_c('button',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.is_power_income_device),expression:\"is_power_income_device\"}],staticClass:\"button-op-act\",staticStyle:{\"margin-right\":\"35px\"},attrs:{\"type\":\"button\"},on:{\"click\":_vm.btnChartClickDevice}},[_vm._v(_vm._s(_vm.lang.pssmDateModeDay))]),_vm._v(\" \"),_c('button',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.is_power_income_device),expression:\"is_power_income_device\"}],staticStyle:{\"margin-right\":\"35px\",\"padding\":\"0px\"},attrs:{\"type\":\"button\"},on:{\"click\":_vm.btnChartClickDevice}},[_vm._v(_vm._s(_vm.lang.pssmDateModeMonth))]),_vm._v(\" \"),_c('button',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.is_power_income_device),expression:\"is_power_income_device\"}],staticStyle:{\"margin-right\":\"35px\",\"padding\":\"0px\"},attrs:{\"type\":\"button\"},on:{\"click\":_vm.btnChartClickDevice}},[_vm._v(_vm._s(_vm.lang.pssmDateModeYear))]),_vm._v(\" \"),_c('el-date-picker',{ref:\"deviceDatePicker\",staticClass:\"date-div\",attrs:{\"type\":_vm.echart_date_type_device,\"clearable\":false,\"disabled\":_vm.is_date_disabled_device,\"editable\":false,\"format\":_vm.date_format},on:{\"change\":_vm.chart_operate_device},model:{value:(_vm.date_value_device),callback:function ($$v) {_vm.date_value_device=$$v},expression:\"date_value_device\"}}),_vm._v(\" \"),_c('div',{staticClass:\"device-date-picker_left\",on:{\"click\":_vm.prevCycleChart}}),_vm._v(\" \"),_c('div',{staticClass:\"device-date-picker_right\",class:{'disabled':!_vm.canNext},on:{\"click\":_vm.nextCycleChart}})],1)]),_vm._v(\" \"),_c('div',{staticClass:\"echarts-wrapper\"},[_c('div',{staticStyle:{\"height\":\"252px\"},attrs:{\"id\":\"mainDevice\"}}),_vm._v(\" \"),(_vm.dataNull.dataDevice)?_c('div',{staticClass:\"echarts-data-null black\",staticStyle:{\"width\":\"1200px\",\"height\":\"252px\"}}):_vm._e()]),_vm._v(\" \"),(_vm.multiCharts.active)?_c('div',{staticClass:\"device-export-btn\",on:{\"click\":_vm.toDataHistory}},[_c('img',{attrs:{\"src\":require(\"../../../../../Images/icon-new/export.png\"),\"alt\":\"Alternate Text\"}})]):_vm._e(),_vm._v(\" \"),(!_vm.multiCharts.active&&!_vm.dataNull.dataDevice)?_c('div',{staticClass:\"device-export-btn\",on:{\"click\":_vm.exportDeviceGeneration}},[_c('img',{attrs:{\"src\":require(\"../../../../../Images/icon-new/export.png\"),\"alt\":\"Alternate Text\"}})]):_vm._e()])])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import GoodweDeviceChart from './src/GoodweDeviceChart.vue';\r\n\r\nGoodweDeviceChart.install = function(Vue) {\r\n Vue.component(GoodweDeviceChart.name, GoodweDeviceChart);\r\n}\r\n\r\nexport default GoodweDeviceChart;","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./GoodweHomekitChart.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./GoodweHomekitChart.vue?vue&type=script&lang=js&\"","\r\n\r\n\r\n","import { render, staticRenderFns } from \"./GoodweHomekitChart.vue?vue&type=template&id=064ca5ca&\"\nimport script from \"./GoodweHomekitChart.vue?vue&type=script&lang=js&\"\nexport * from \"./GoodweHomekitChart.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[_c('div',{staticClass:\"homekit-title\"},[_vm._v(_vm._s(_vm.lang.chartMsg))]),_vm._v(\" \"),_c('div',{staticClass:\"homekit-time\"},[_vm._v(_vm._s(_vm.lang.chartdate)+\" \"+_vm._s(_vm.date))]),_vm._v(\" \"),_c('div',[_c('div',{staticClass:\"swiper-container\"},[_c('div',{staticClass:\"swiper-wrapper\"},_vm._l((_vm.bannerList),function(items){return _c('div',{staticClass:\"clearfix swiper-slide\"},_vm._l((items),function(item){return _c('div',{staticClass:\"charts-item\",class:{'checked':item.chartNum==_vm.checkedValue},on:{\"click\":function($event){return _vm.choose(item)}}},[_c('i',{staticClass:\"charts-checked-icon iconfont icon-Checked\"}),_vm._v(\" \"),_c('p',{staticClass:\"charts-title\"},[_vm._v(_vm._s('Chart'+(item.chartNum+1)))]),_vm._v(\" \"),_c('div',{staticClass:\"goodwe-homekit-charts\",attrs:{\"id\":'goodwe-homekit-charts'+item.chartNum}})])}),0)}),0)])]),_vm._v(\" \"),_c('div',{staticClass:\"swiper-button-next\"}),_vm._v(\" \"),_c('div',{staticClass:\"swiper-button-prev\"}),_vm._v(\" \"),_c('div',{staticClass:\"swiper-pagination\"}),_vm._v(\" \"),_c('div',{staticClass:\"submit-item\"},[_c('button',{staticClass:\"btn_cancel\",on:{\"click\":function($event){return _vm.cancle()}}},[_vm._v(_vm._s(_vm.lang.cancel))]),_vm._v(\" \"),_c('button',{staticClass:\"btn_primary\",on:{\"click\":_vm.submitCure}},[_vm._v(_vm._s(_vm.lang.pssmSubmit))])])])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import GoodweHomekitChart from './src/GoodweHomekitChart.vue';\r\nGoodweHomekitChart.install = Vue => {\r\n Vue.component(GoodweHomekitChart.name, GoodweHomekitChart);\r\n}\r\n\r\nexport default GoodweHomekitChart;","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./GoodweInverterSelect.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./GoodweInverterSelect.vue?vue&type=script&lang=js&\"","\n\n\n\n\n","import { render, staticRenderFns } from \"./GoodweInverterSelect.vue?vue&type=template&id=2a28f4be&scoped=true&\"\nimport script from \"./GoodweInverterSelect.vue?vue&type=script&lang=js&\"\nexport * from \"./GoodweInverterSelect.vue?vue&type=script&lang=js&\"\nimport style0 from \"./GoodweInverterSelect.vue?vue&type=style&index=0&id=2a28f4be&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"2a28f4be\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"inverter-dialog\"},[_c('gdw-dialog',{attrs:{\"show\":_vm.show,\"title\":_vm.lang.pssmInverter,\"width\":940,\"arrow\":true}},[_c('div',{staticClass:\"clearfix\",staticStyle:{\"padding-left\":\"46px\",\"padding-top\":\"20px\"}},[_c('el-input',{staticClass:\"fl\",staticStyle:{\"margin-right\":\"10px\",\"width\":\"300px\"},attrs:{\"clearable\":true,\"placeholder\":_vm.lang.power_station_placeholder},model:{value:(_vm.search_key),callback:function ($$v) {_vm.search_key=$$v},expression:\"search_key\"}},[_c('i',{staticClass:\"sd-header__search--icon\",attrs:{\"slot\":\"prefix\"},slot:\"prefix\"}),_vm._v(\" \"),(_vm.search_key)?_c('i',{staticClass:\"el-icon-error el-input__icon\",attrs:{\"slot\":\"suffix\"},on:{\"click\":_vm.handleClickClear},slot:\"suffix\"}):_vm._e()])],1),_vm._v(\" \"),_c('div',{staticClass:\"range-wrapper clearfix\"},[_c('div',{staticClass:\"station-list l\"},[_c('h3',{staticClass:\"list-title\"},[_vm._v(_vm._s(_vm.lang.cpt_select_plant))]),_vm._v(\" \"),_c('div',{staticClass:\"device_choose_collapse\"},[_c('gdw-scroll',{directives:[{name:\"loading\",rawName:\"v-loading\",value:(_vm.loading),expression:\"loading\"}],ref:\"stationScroll\",attrs:{\"more-can-load\":_vm.canLoadMore},on:{\"more-handle\":_vm.loadMore,\"update:moreCanLoad\":function($event){_vm.canLoadMore=$event},\"update:more-can-load\":function($event){_vm.canLoadMore=$event}}},[_c('el-collapse',{ref:\"collapse\"},_vm._l((_vm.computedStationList),function(item,index){return _c('el-collapse-item',{key:index},[_c('template',{slot:\"title\"},[_c('i',{staticClass:\"icon_status\",class:'status_' + item.status}),_vm._v(\" \"),_c('div',{staticClass:\"ellipsis cus-over\",attrs:{\"title\":item.name}},[_vm._v(_vm._s(item.name))])]),_vm._v(\" \"),_c('ul',_vm._l((item.deviceList),function(_item,_index){return _c('li',{key:_index,staticClass:\"device_choose_dv_item ellipsis\"},[_c('i',{staticClass:\"icon_status\",class:['status_' + _item.status, {old_device: _item.changeType===-1}]}),_vm._v(\" \"),_c('span',{class:{old_device: _item.changeType===-1},attrs:{\"title\":_item.name}},[_vm._v(\"\\n \"+_vm._s(_item.name==undefined?_item.sn:_item.name)+\"\\n \")]),_vm._v(\" \"),_c('br'),_vm._v(\" \"),_c('div',{staticClass:\"device_choose_dv_sn\"},[_vm._v(_vm._s(_item.sn))]),_vm._v(\" \"),_c('i',{staticClass:\"icon_handle_device_list icon_add_device cursor_hand\",attrs:{\"id\":_item.sn},on:{\"click\":function($event){return _vm.addDevice(_item, item)}}})])}),0)],2)}),1)],1)],1)]),_vm._v(\" \"),_c('div',{staticClass:\"selected-list r\"},[_c('h3',{staticClass:\"list-title\"},[_vm._v(_vm._s(_vm.lang.cpt_already_select_location))]),_vm._v(\" \"),_c('div',{staticClass:\"device_choose_collapse\"},_vm._l((_vm.selectedStation),function(item,index){return _c('div',{key:index,staticClass:\"selected_item\"},[_c('div',{staticClass:\"selected_item_title\"},[_c('ul',{staticClass:\"selected-list_main\"},_vm._l((item.selectedDevice),function(_item,_index){return _c('li',{key:_index,staticClass:\"selected_item_device\"},[_c('i',{staticClass:\"icon_status\",class:['status_' + _item.status, {old_device: _item.changeType===-1}]}),_vm._v(\" \"),_c('span',{staticClass:\"selected_device\",class:{old_device: _item.changeType===-1},attrs:{\"title\":_item.name}},[_vm._v(_vm._s(_item.name==undefined?_item.sn:_item.name))]),_vm._v(\" \"),_c('br'),_vm._v(\" \"),_c('div',{staticClass:\"device_choose_dv_sn\"},[_vm._v(_vm._s(_item.sn))]),_vm._v(\" \"),_c('i',{staticClass:\"icon_handle_device_list icon_remove_device cursor_hand\",on:{\"click\":function($event){return _vm.removeDevice(_item, item)}}})])}),0)])])}),0)])]),_vm._v(\" \"),_c('gdw-dialog-button-group',{attrs:{\"slot\":\"button\"},slot:\"button\"},[_c('button',{on:{\"click\":_vm.cancel}},[_vm._v(_vm._s(_vm.lang.cpt_cancel)+\" \")]),_vm._v(\" \"),_c('button',{on:{\"click\":_vm.ok}},[_vm._v(_vm._s(_vm.lang.cpt_confirm))])])],1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import GoodweInverterSelect from './src/GoodweInverterSelect.vue';\r\n\r\nGoodweInverterSelect.install = Vue => {\r\n Vue.component(GoodweInverterSelect.name, GoodweInverterSelect);\r\n}\r\n\r\nexport default GoodweInverterSelect;","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./GoodweSec.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./GoodweSec.vue?vue&type=script&lang=js&\"","\r\n\r\n\r\n\r\n\r\n","import { render, staticRenderFns } from \"./GoodweSec.vue?vue&type=template&id=5ae44e77&\"\nimport script from \"./GoodweSec.vue?vue&type=script&lang=js&\"\nexport * from \"./GoodweSec.vue?vue&type=script&lang=js&\"\nimport style0 from \"./GoodweSec.vue?vue&type=style&index=0&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"goodwe-sec\",class:{'single-sec': _vm.secList.length <= 1}},[_c('el-carousel',{attrs:{\"height\":\"440px\",\"autoplay\":false,\"trigger\":\"click\"}},_vm._l((_vm.secList),function(item,index){return _c('el-carousel-item',{key:index},[_c('ul',{staticStyle:{\"padding-left\":\"110px\",\"margin-top\":\"50px\",\"padding-right\":\"110px\",\"height\":\"373px\",\"overflow\":\"auto\"}},[_c('el-scrollbar',{staticStyle:{\"height\":\"366px\"},attrs:{\"wrap-class\":'el-gw-scroll'}},_vm._l((item.monitoring),function(monitors,index){return _c('div',{key:index},[(monitors.groupKey!='netWorkPar')?_c('li',{staticClass:\"border-bottom clearfix\"},[(monitors.groupKey)?_c('div',{staticClass:\"item-con item-label fl first-node\"},[_vm._v(\"\\n \"+_vm._s(_vm.lang[monitors.groupKey]||monitors.groupKey)+\"\\n \")]):_vm._e(),_vm._v(\" \"),_c('ul',{class:{'fl':monitors.groupKey,'no-label':!monitors.groupKey},staticStyle:{\"width\":\"66%\"}},_vm._l((monitors.groupValue),function(_item,index){return _c('li',{key:index,staticClass:\"clearfix\"},[_c('div',{staticClass:\"item-con item-label fl\",style:({ color:_item.foreColor})},[_vm._v(\"\\n \"+_vm._s(_vm.lang[_item.key]||_item.key)+\"\\n \")]),_vm._v(\" \"),_c('div',{staticClass:\"item-con item-label fr\",style:({ color:_item.foreColor})},[_vm._v(\"\\n \"+_vm._s(_item.key === 'fault' ? \n (_item.value.includes('_warning') ? _vm.lang[_item.value] : _vm.lang[((_item.value) + \"_warning\")])\n : \n (_item.valKey ? _vm.lang[_item.valKey] : _vm.lang[_item.value] || _item.value))+\"\\n \")])])}),0)]):_vm._e()])}),0)],1)])}),1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import GoodweSec from './src/GoodweSec.vue';\r\n\r\nGoodweSec.install = Vue => {\r\n Vue.component(GoodweSec.name, GoodweSec);\r\n}\r\n\r\nexport default GoodweSec;","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./GoodweMeterInfo.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./GoodweMeterInfo.vue?vue&type=script&lang=js&\"","\r\n\r\n","import { render, staticRenderFns } from \"./GoodweMeterInfo.vue?vue&type=template&id=79983494&scoped=true&\"\nimport script from \"./GoodweMeterInfo.vue?vue&type=script&lang=js&\"\nexport * from \"./GoodweMeterInfo.vue?vue&type=script&lang=js&\"\nimport style0 from \"./GoodweMeterInfo.vue?vue&type=style&index=0&id=79983494&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"79983494\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"gdw-meter\"},[_c('el-carousel',{ref:\"meterCarousel\",staticStyle:{\"height\":\"380px\"},attrs:{\"arrow\":_vm.meterList.length >1 ? 'hover' : 'never',\"autoplay\":false,\"indicator-position\":\"none\"},on:{\"change\":_vm.changeCarousel}},_vm._l((_vm.meterList),function(meter,index){return _c('el-carousel-item',{key:index},[_c('el-scrollbar',{staticStyle:{\"height\":\"366px\"},attrs:{\"wrap-class\":'el-gw-scroll'}},[(meter && meter.device && meter.device.length > 0)?_c('div',_vm._l((meter.device),function(item){return _c('div',{key:item.key,staticClass:\"info-item\"},[_c('div',{staticClass:\"item-left\"},[_c('div',{staticClass:\"flex-span\",style:({color: item.foreColor})},[_vm._v(_vm._s(_vm.lang[item.key]))]),_vm._v(\" \"),_c('div',{staticClass:\"flex-span\",style:({color: item.foreColor})},[_vm._v(_vm._s(_vm.lang[item.value])+\" \"+_vm._s(item.unit))])]),_vm._v(\" \"),(item.group)?_c('div',{staticClass:\"item-right\"},_vm._l((item.group),function(child){return _c('div',{key:child.key,staticClass:\"group-child\"},[_c('div',{staticClass:\"flex-span\",style:({color: child.foreColor})},[_vm._v(_vm._s(_vm.lang[child.key]))]),_vm._v(\" \"),_c('div',{staticClass:\"flex-span\",style:({color: child.foreColor})},[_vm._v(_vm._s(_vm.lang[child.value])+\" \"+_vm._s(child.unit))])])}),0):_vm._e()])}),0):_vm._e(),_vm._v(\" \"),_c('div',{staticClass:\"opeartion-data\"},[_vm._v(_vm._s(_vm.lang.mt_operation_data))]),_vm._v(\" \"),(meter && meter.operation && meter.operation.length > 0)?_c('div',_vm._l((meter.operation),function(item){return _c('div',{key:item.key,staticClass:\"info-item\"},[_c('div',{staticClass:\"item-left\"},[_c('div',{staticClass:\"flex-span\",style:({color: item.foreColor})},[_vm._v(_vm._s(_vm.lang[item.key]))]),_vm._v(\" \"),_c('div',{staticClass:\"flex-span\",style:({color: item.foreColor})},[_vm._v(_vm._s(_vm.lang[item.value])+\" \"+_vm._s(item.unit))])]),_vm._v(\" \"),(item.group)?_c('div',{staticClass:\"item-right\"},_vm._l((item.group),function(child){return _c('div',{key:child.key,staticClass:\"group-child\"},[_c('div',{staticClass:\"flex-span\",style:({color: child.foreColor})},[_vm._v(_vm._s(_vm.lang[child.key]))]),_vm._v(\" \"),_c('div',{staticClass:\"flex-span\",style:({color: child.foreColor})},[_vm._v(_vm._s(_vm.lang[child.value])+\" \"+_vm._s(child.unit))])])}),0):_vm._e()])}),0):_vm._e()])],1)}),1),_vm._v(\" \"),(_vm.meterList && _vm.meterList.length>1)?_c('ul',{staticClass:\"el-carousel-bottom-dots\",staticStyle:{\"top\":\"23px\"}},_vm._l((_vm.meterList),function(item,index){return _c('li',{key:item,class:{active: _vm.spwer_index == index},on:{\"click\":function($event){return _vm.setActive(index)}}})}),0):_vm._e()],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import GoodweMeterInfo from './src/GoodweMeterInfo.vue';\r\n\r\nGoodweMeterInfo.install = Vue => {\r\n Vue.component(GoodweMeterInfo.name, GoodweMeterInfo);\r\n}\r\n\r\nexport default GoodweMeterInfo;","/**\r\n * Let a class have functions related to events\r\n */\r\n\r\n\r\n\r\nexport default function AsEvent() {\r\n}\r\n\r\nAsEvent.prototype.on = function (event, handler, context) {\r\n var hs = this._$handlers || (this._$handlers = {});\r\n if (!hs[event]) hs[event] = [];\r\n\r\n hs[event].push({\r\n event: event,\r\n handler: handler,\r\n context: context || this\r\n });\r\n\r\n return this;\r\n}\r\n\r\nAsEvent.prototype.off = function (event, handler) {\r\n var hs = this._$handlers || (this._$handlers = {});\r\n if (hs[event]) {\r\n if (hs[event].length == 1 || !handler) delete hs[event];\r\n hs[event] = hs[event].filter(function (handler) {\r\n return handler.handler != handler;\r\n })\r\n }\r\n\r\n return this;\r\n}\r\n\r\nAsEvent.prototype.trigger = function (event) {\r\n var hs = this._$handlers[event] || (this._$handlers = {});\r\n if (!hs) return;\r\n var args = [].slice.call(arguments, 1);\r\n\r\n hs.forEach(function (handler) {\r\n handler.handler.apply(handler.context, args);\r\n })\r\n}\r\n\r\nexport function inheritAsEvent(cls) {\r\n var props = cls.prototype;\r\n cls.prototype = new AsEvent();\r\n for (var prop in props) {\r\n if (props.hasOwnProperty(prop)) {\r\n cls.prototype[prop] = props[prop];\r\n }\r\n }\r\n cls.prototype.constructor = cls;\r\n cls.superClass = AsEvent;\r\n}","\r\n\r\nimport { inheritAsEvent } from '../asevent/index';\r\n\r\n/**\r\n * Base classes that can provide resource destruction and fetch dimensions\r\n * @param {object} options control or container's options\r\n */\r\nexport default function PanelBase(options) {\r\n this.dom = options.dom;\r\n this.getBoundingRect();\r\n}\r\n\r\n/**\r\n * dom's offset and size\r\n */\r\nPanelBase.prototype.getBoundingRect = function () {\r\n var rect = this.dom.getBoundingClientRect();\r\n var offset = getDomAbsoluteOffset(this.dom);\r\n this.domLeft = offset[0];\r\n this.domTop = offset[1];\r\n this.domWidth = rect.width;\r\n this.domHeight = rect.height;\r\n}\r\n\r\n/**\r\n * destroy zrender\r\n */\r\nPanelBase.prototype.destroy = function () {\r\n this.zr.dispose();\r\n this._destroy && this._destroy();\r\n}\r\n\r\ninheritAsEvent(PanelBase);\r\n\r\n/**\r\n * get element's absolute offset\r\n * @param {DOM} e The element to get the offset\r\n */\r\nfunction getDomAbsoluteOffset(e) {\r\n var offset = [e.offsetLeft, e.offsetTop];\r\n if (e.offsetParent != null) {\r\n var topOffset = getDomAbsoluteOffset(e.offsetParent);\r\n offset[0] += topOffset[0];\r\n offset[1] += topOffset[1];\r\n }\r\n return offset;\r\n}","\r\n\r\nexport default function (cls, baseCls) {\r\n var clsPrototype = cls.prototype;\r\n function BaseCls() { };\r\n BaseCls.prototype = baseCls.prototype;\r\n cls.prototype = new BaseCls();\r\n\r\n for (var prop in clsPrototype) {\r\n if (clsPrototype.hasOwnProperty(prop)) {\r\n cls.prototype[prop] = clsPrototype[prop];\r\n }\r\n }\r\n\r\n cls.prototype.constructor = cls;\r\n cls.superClass = baseCls;\r\n}","\r\n\r\n\r\n/**\r\n * draw panel background and append to group\r\n * @param {number} id panel's id\r\n * @param {number} x panel's x\r\n * @param {number} y panel's y\r\n * @param {number} w panel's width\r\n * @param {number} h panel's height\r\n */\r\nfunction createPanelBackground(id, x, y, w, h) {\r\n this._panelBackgrounds[id] = new zrender.Rect({\r\n silent: true,\r\n shape: {\r\n x: x,\r\n y: y,\r\n width: w,\r\n height: h\r\n },\r\n style: {\r\n fill: '#808080'\r\n },\r\n zlevel:0\r\n });\r\n this.group.add(this._panelBackgrounds[id]);\r\n}\r\n\r\n/**\r\n * draw panel image and append to group\r\n * @param {number} id panel's id\r\n * @param {number} x panel's x\r\n * @param {number} y panel's y\r\n * @param {number} w panel's width\r\n * @param {number} h panel's height\r\n * @param {object} sprite panel's position in sprite image\r\n */\r\nfunction createPanelImage(id, x, y, w, h, sprite) {\r\n this._panels[id] = new zrender.Image({\r\n style: {\r\n image: this.image,\r\n x: x,\r\n y: y,\r\n sx: sprite.x,\r\n sy: sprite.y,\r\n width: w,\r\n height: h,\r\n sWidth: w,\r\n sHeight: h,\r\n },\r\n zlevel:1\r\n });\r\n this._panels[id].hide();\r\n this.group.add(this._panels[id]);\r\n}\r\n\r\n/**\r\n * draw text and append to group\r\n * @param {number} id panel's id\r\n * @param {number} x panel's x\r\n * @param {number} y panel's y\r\n * @param {number} w panel's width\r\n * @param {number} h panel's height\r\n */\r\nfunction createPanelText(id, x, y, w, h) {\r\n this._panelTexts[id] = new zrender.Text({\r\n silent: true,\r\n style: {\r\n text: '',\r\n x: x + w / 2,\r\n y: y + h / 2 - 5,\r\n textFill: '#fff',\r\n fontSize: 16,\r\n textAlign: 'center'\r\n },\r\n zlevel:2\r\n });\r\n this._panelTexts[id].hide();\r\n this.group.add(this._panelTexts[id]);\r\n}\r\n\r\n/**\r\n * draw panel border and append to group\r\n * @param {number} id panel's id\r\n * @param {number} x panel's x\r\n * @param {number} y panel's y\r\n * @param {number} w panel's width\r\n * @param {number} h panel's height\r\n */\r\nfunction createPanelBorder(id, x, y, w, h) {\r\n this._panelBorders[id] = new zrender.Rect({\r\n silent: true,\r\n shape: {\r\n x: x,\r\n y: y,\r\n width: w,\r\n height: h\r\n },\r\n style: {\r\n fill: null\r\n },\r\n zlevel: 4\r\n });\r\n this._panelBorders[id].hide();\r\n this.group.add(this._panelBorders[id]);\r\n}\r\n\r\n/**\r\n * Optimizer type\r\n * @param {string} color The color represented by the optimizer type\r\n * @param {number} x panel's x\r\n * @param {number} y panel's y\r\n * @param {number} w panel's width\r\n * @param {number} h panel's height\r\n */\r\nfunction createPanelType(color, x, y, w, h) {\r\n this.group.add(new zrender.Rect({\r\n shape: {\r\n x: x + 5,\r\n y: y + h - 10,\r\n width: w - 10,\r\n height: 5\r\n },\r\n style: {\r\n fill: color\r\n },\r\n zlevel:3\r\n }));\r\n}\r\n\r\n\r\nexport default {\r\n createPanelBackground,\r\n createPanelImage,\r\n createPanelText,\r\n createPanelBorder,\r\n createPanelType\r\n}","\r\n\r\nvar isDragging = false;\r\nvar startPosition = null;\r\n\r\n/**\r\n * 通过zrender的拖动来实现组件的移动\r\n * @param {Zrender} zr zrender 实例\r\n * @param {Displayable} g zrender 可显示元素\r\n */\r\nexport default function(zr, g) {\r\n zr.on('mousedown', function (event) {\r\n isDragging = true;\r\n var x = event.offsetX - (g.position[0] || 0),\r\n y = event.offsetY - (g.position[1] || 0);\r\n startPosition = [x, y];\r\n });\r\n zr.on('mouseup', function () {\r\n isDragging = false;\r\n startPosition = null;\r\n });\r\n zr.on('mousemove', function (e) {\r\n if (isDragging) {\r\n var x = e.offsetX;\r\n var y = e.offsetY;\r\n\r\n var dx = x - startPosition[0];\r\n var dy = y - startPosition[1];\r\n g.attr({\r\n position: [dx, dy]\r\n })\r\n }\r\n })\r\n}","/**\r\n * tigo panel layout\r\n * bingtao.sun@2020-7-15\r\n */\r\n\r\n\r\nimport PanelBase from './PanelBase';\r\nimport Inherit from './Inherit';\r\nimport draw from './Draw';\r\nimport Drag from './Drag';\r\n\r\n/**\r\n * \r\n * @param {object} options configuration item\r\n */\r\nexport default function PanelContainer(options) {\r\n // inherit Eventful\r\n PanelBase.call(this, options);\r\n // get options\r\n this.image = options.image;\r\n this.tooltip = options.tooltip;\r\n this.tooltipHandle = options.tooltipHandle;\r\n this.offsetImmediate = options.offsetImmediate || false; //一个开关,false 不获取鼠标的坐标点\r\n // \r\n this._clear();\r\n this._init();\r\n}\r\n\r\n\r\n/**\r\n * zoom in all panel\r\n * 放大\r\n */\r\nPanelContainer.prototype.zoomIn = function () {\r\n var zoom = this.zoom + 1;\r\n if (zoom > this.maxZoom) return;\r\n this.zoom += 1;\r\n this.invokeZoom(); \r\n this._showPwText()\r\n}\r\n\r\n/**\r\n * zoom out all panel\r\n * 缩小\r\n */\r\nPanelContainer.prototype.zoomOut = function () {\r\n var zoom = this.zoom - 1;\r\n if (zoom < this.minZoom) return;\r\n this.zoom -= 1;\r\n this.invokeZoom(); \r\n this._showPwText() \r\n}\r\n\r\n/**\r\n * set layout of TIGO component from config data\r\n * @param {object} data tigo config's data\r\n */\r\nPanelContainer.prototype.setConfig = function (data) {\r\n if (!data) throw new Error('[10001] Configuration parameter error');\r\n\r\n this.zr.animation.stop();\r\n\r\n this.configs = data;\r\n this._getPanelBoundingRect(); //获取分布图的长宽\r\n this.invokeZoom(); //组件缩放\r\n for (var i = 0; i < data.length; i++) {\r\n if (data[i].type != 2) continue;\r\n this._setSingleConfig(data[i]); //设置每个组件的样式,位置,颜色等\r\n }\r\n this.zr.animation.start();\r\n this.trigger(\"sendPanels\",{\r\n _panels:this._panels,\r\n _configs:this.configs\r\n })\r\n}\r\n\r\n\r\n/**\r\n * get item of config by item's id\r\n * @param {number} id panel string or inverter id\r\n */\r\nPanelContainer.prototype.getConfigById = function (id) {\r\n return this.configs.filter(m => m.id == id)[0];\r\n}\r\n/**\r\n * 设置zoom\r\n * @param {number} zoom\r\n */\r\nPanelContainer.prototype.setZoom = function (zoom) {\r\n this.zoom=zoom;\r\n this.invokeZoom(); \r\n this._showPwText() \r\n}\r\n\r\n/**\r\n * update the number and color of panel\r\n * @param {object} data the data of power or other\r\n */\r\nPanelContainer.prototype.updateData = function (data) {\r\n this.chartData=data;\r\n var configs=this.configs.filter(m => m.type == 2)\r\n var MP;\r\n data.order.forEach(function (id, i) {\r\n var _panelBackground = this._panelBackgrounds[id],\r\n _panelText = this._panelTexts[id],\r\n panel = this._panels[id],\r\n panelBorder = this._panelBorders[id],\r\n val = data.data.d[i],\r\n value = '',\r\n color = '#808080'\r\n panel && panel.show();\r\n configs.forEach((config)=>{\r\n if(config.id==id){\r\n MP=config.MP\r\n }\r\n })\r\n _panelText && _panelText.show();\r\n panelBorder && panelBorder.show();\r\n if (val && val != '-') {\r\n value = val;\r\n color = this.value2color(val,MP);\r\n }\r\n _panelText.attr({\r\n style: {\r\n text: value\r\n }\r\n });\r\n _panelBackground.attr({\r\n style: {\r\n fill: color\r\n }\r\n })\r\n }.bind(this));\r\n\r\n\r\n this._getInvalidPanels(data.order).forEach(id => {\r\n var panel = this._panels[id],\r\n _panelText = this._panelTexts[id],\r\n panelBorder = this._panelBorders[id];\r\n\r\n panel && panel.hide();\r\n _panelText && _panelText.hide();\r\n panelBorder && panelBorder.hide();\r\n })\r\n}\r\n\r\n/**\r\n * convert value to color string, if need you can rewrite it\r\n * @param {number} val power or other value\r\n */\r\nPanelContainer.prototype.value2color = function (val,MP) {\r\n // var interval=50; 原定50一个区间,现在使用每块组串的最大功率来计算\r\n var interval=MP/6;\r\n var color = '#808080';\r\n if (val < interval*1) {\r\n color = '#2261ac'\r\n } else if (val < interval*2) {\r\n color = '#3581bd'\r\n } else if (val < interval*3) {\r\n color = '#469ecc'\r\n } else if (val < interval*4) {\r\n color = '#59bedc'\r\n } else if (val < interval*5) {\r\n color = '#66e3f4'\r\n } else {\r\n color = '#98f8fb'\r\n }\r\n return color;\r\n}\r\n\r\n/**\r\n * invoke zoom\r\n * @param {obejct} origin .x and .y is scale's origin\r\n */\r\nPanelContainer.prototype.invokeZoom = function () {\r\n var origin = this.group.transformCoordToLocal(this.domWidth / 2, this.domHeight / 2); //设置中心点\r\n this.group.attr({\r\n scale: [this.zoom / 10, this.zoom / 10], \r\n origin,\r\n position: [this.domWidth / 2 - origin[0], this.domHeight / 2 - origin[1]]\r\n });\r\n this.trigger('zoomchange', {\r\n zoom: this.zoom,\r\n minZoom: this.minZoom,\r\n maxZoom: this.maxZoom\r\n });\r\n}\r\n\r\n/**\r\n * get component's optimizer type's color\r\n * @param {object} config panel config data\r\n */\r\nPanelContainer.prototype.getOptimizerColor = function (config) {\r\n return;\r\n}\r\n\r\n/**\r\n * reset initialize value for next setConfig\r\n */\r\nPanelContainer.prototype._clear = function () {\r\n this._panels = {};\r\n this._panelBackgrounds = {};\r\n this._panelTexts = {};\r\n this._panelBorders = {};\r\n\r\n this.configs = null;\r\n this.chartData = null;\r\n this._currentConfig = null;\r\n this._selectedBorders = [];\r\n\r\n this.minZoom = 5; //0.5倍\r\n this.maxZoom = 20; //最大2倍 \r\n this.zoom = 6; //5为1倍 6为级别2 \r\n}\r\n\r\n/**\r\n * initialize\r\n */\r\nPanelContainer.prototype._init = function () {\r\n // init zrender\r\n this.zr = zrender.init(this.dom);\r\n this.zr.add(this.group = new zrender.Group());\r\n // drag event\r\n Drag(this.zr, this.group);\r\n //\r\n this._createTooltip();\r\n // \r\n this._bindEvent();\r\n}\r\n\r\n/**\r\n * draw component by config data\r\n * @param {object} config component's config info\r\n */\r\nPanelContainer.prototype._setSingleConfig = function (config) {\r\n var id = config.id,\r\n x = parseFloat(config.X) + (this.domWidth + this._panelBoundingRect.left - this._panelBoundingRect.right) / 2 - this._panelBoundingRect.left,\r\n y = parseFloat(config.Y) + (this.domHeight + this._panelBoundingRect.top - this._panelBoundingRect.bottom) / 2 - this._panelBoundingRect.top,\r\n w = parseFloat(config.size.w),\r\n h = parseFloat(config.size.h);\r\n // add background rect\r\n draw.createPanelBackground.call(this, id, x, y, w, h);\r\n // component's image\r\n var sprite = {\r\n x: parseFloat(config.sprite.x),\r\n y: parseFloat(config.sprite.y)\r\n }\r\n draw.createPanelImage.call(this, id, x, y, w, h, sprite)\r\n // text\r\n draw.createPanelText.call(this, id, x, y, w, h);\r\n // border for highlight\r\n draw.createPanelBorder.call(this, id, x, y, w, h);\r\n\r\n var color = this.getOptimizerColor(config);\r\n\r\n if (color) {\r\n draw.createPanelType.call(this, color, x, y, w, h);\r\n }\r\n\r\n // panel image's mouseover and mouseout event\r\n this._bindPanelMouseoverEvent(this._panels[id], config);\r\n}\r\n\r\n\r\n\r\n/**\r\n * clear panel selected effect\r\n */\r\nPanelContainer.prototype._clearBorders = function () {\r\n this._selectedBorders.forEach(border => {\r\n border.attr({\r\n style: {\r\n stroke: null\r\n }\r\n })\r\n });\r\n this._selectedBorders = [];\r\n}\r\n\r\n// PanelContainer.prototype._adjustGroup = function () {\r\n// var rect = this._panelBoundingRect; //获取组件群的长宽\r\n// //如果中间组件块比 渲染的canvas 宽度和高度都大,就会进行缩放\r\n// if (rect.right - rect.left > this.domWidth || rect.bottom - rect.top > this.domHeight) {\r\n// for (var i = 10; i > 1; i -= 1) {\r\n// var s = (i / 10) * (rect.right - rect.left);\r\n// var h = (i / 10) * (rect.bottom - rect.top);\r\n// if (s <= this.domWidth && h <= this.domHeight) {\r\n// if (i < this.minZoom) this.minZoom = i; \r\n// this.zoom = i;\r\n// this.invokeZoom({ x: this.domWidth / 2, y: this.domHeight / 2 }); //缩放\r\n// this.trigger('zoomchange', {\r\n// zoom: this.zoom,\r\n// minZoom: this.minZoom,\r\n// maxZoom: this.maxZoom\r\n// });\r\n// break;\r\n// }\r\n// }\r\n// }\r\n// }\r\n\r\n/**\r\n * bind mousewheel event and dom's mousemove event\r\n */\r\nPanelContainer.prototype._bindEvent = function () {\r\n this.zr.on('mousewheel', event => {\r\n event.stop();\r\n var [x, y] = origin = this.group.transformCoordToLocal(event.offsetX, event.offsetY);\r\n if (event.wheelDelta > 0) {\r\n if (this.zoom >= this.maxZoom) return;\r\n this.zoom += 1;\r\n } else {\r\n if (this.zoom <= this.minZoom) return;\r\n this.zoom -= 1;\r\n }\r\n this._showPwText()\r\n this.group.attr({\r\n origin,\r\n scale: [this.zoom / 10, this.zoom / 10],\r\n position: [event.offsetX - x, event.offsetY - y]\r\n })\r\n \r\n // this.invokeZoom(this.origin);\r\n this.trigger('zoomchange', {\r\n zoom: this.zoom,\r\n minZoom: this.minZoom,\r\n maxZoom: this.maxZoom\r\n });\r\n });\r\n\r\n this.dom.addEventListener(\"mousemove\", (event) => {\r\n this.offsetImmediate && this.getBoundingRect();\r\n if (this.tooltip.style.display != 'none') {\r\n if (this.tooltipHandle) {\r\n this.tooltipHandle(event, this, this._currentConfig);\r\n return;\r\n }\r\n this.tooltip.style.left = event.offsetX + this.domLeft + 15 + 'px'\r\n this.tooltip.style.top = event.offsetY + this.domTop + 15 + 'px';\r\n this.tooltip.innerHTML = '

    ' + this._currentConfig.label + '

    '+Goodwe.Ops.Resouces.Front.Tigo_module_MaxoutputP + this._currentConfig.MP + 'W

    ';\r\n }\r\n }, false);\r\n}\r\n\r\nPanelContainer.prototype._showPwText=function (){\r\n var data=_.clone(this.chartData)\r\n var configs=this.configs.filter(m => m.type == 2)\r\n var MP;\r\n data.order.forEach(function (id, i) {\r\n var _panelBackground = this._panelBackgrounds[id],\r\n _panelText = this._panelTexts[id],\r\n panel = this._panels[id],\r\n panelBorder = this._panelBorders[id],\r\n val = data.data.d[i],\r\n value = '',\r\n color = '#808080'\r\n panel && panel.show();\r\n configs.forEach((config)=>{\r\n if(config.id==id){\r\n MP=config.MP\r\n }\r\n })\r\n _panelText && _panelText.show();\r\n \r\n panelBorder && panelBorder.show();\r\n if (val && val != '-') {\r\n value = val;\r\n color = this.value2color(val,MP);\r\n }\r\n if(this.zoom<=this.minZoom){\r\n _panelText.hide()\r\n }\r\n _panelText.attr({\r\n style: {\r\n text: value\r\n }\r\n });\r\n _panelBackground.attr({\r\n style: {\r\n fill: color\r\n }\r\n })\r\n }.bind(this));\r\n}\r\n\r\nPanelContainer.prototype._showSamePanel = function(config,sn){\r\n this._currentConfig = config;\r\n this.tooltip.style.display = 'none'\r\n // get string's id\r\n var p = this._currentConfig.parent;\r\n // all panel's of current string\r\n var a = this.configs.filter(m => m.type == 2 && m.parent == p);\r\n a.forEach(m => {\r\n this._panelBorders[m.id].attr({\r\n style: {\r\n stroke: '#8CC44D',\r\n lineWidth: 2\r\n }\r\n })\r\n this._selectedBorders.push(this._panelBorders[m.id]);\r\n })\r\n // string\r\n var str = this.getConfigById(p);\r\n // inverter\r\n var inverter = this.getConfigById(str.parent);\r\n // all the remaining group strings except the current one\r\n var strs = inverter.children.filter(m => m != p);\r\n strs.forEach(id => {\r\n var s = this.getConfigById(id);\r\n if(sn){\r\n var color=\"#8CC44D\";\r\n }else{\r\n var color='#617B8E';\r\n }\r\n s.children.forEach(cid => {\r\n this._panelBorders[cid].attr({\r\n style: {\r\n stroke: color,\r\n lineWidth: 2\r\n }\r\n })\r\n this._selectedBorders.push(this._panelBorders[cid]);\r\n })\r\n })\r\n}\r\n\r\n/**\r\n * bind panel image's event\r\n * @param {object} image zrender Image instance\r\n * @param {object} config item of TIGO's config data\r\n */\r\nPanelContainer.prototype._bindPanelMouseoverEvent = function (image, config) {\r\n image.on('mouseover', () => {\r\n this._showSamePanel(config)\r\n this.tooltip.style.display = 'block'\r\n this.trigger('panelover', {\r\n panel: config,\r\n container: this\r\n })\r\n });\r\n image.on('mouseout', function () {\r\n this._currentConfig = config;\r\n this.tooltip.style.display = 'none';\r\n this._clearBorders();\r\n this.trigger('panelout', {\r\n panel: config,\r\n container: this\r\n })\r\n }, this)\r\n}\r\n\r\n/**\r\n * get all panel's boundary\r\n */\r\nPanelContainer.prototype._getPanelBoundingRect = function () {\r\n var left = Infinity;\r\n var top = Infinity;\r\n var right = 0;\r\n var bottom = 0;\r\n this.configs.forEach((config, index) => {\r\n if (config.type == 2) {\r\n var x = parseFloat(config.X),\r\n y = parseFloat(config.Y),\r\n w = parseFloat(config.size.w),\r\n h = parseFloat(config.size.h);\r\n if (x < left) left = x;\r\n if (y < top) top = y;\r\n if (x + w > right) right = x + w;\r\n if (y + h > bottom) bottom = y + h;\r\n }\r\n })\r\n //获取组件群的长宽\r\n this._panelBoundingRect = {\r\n top,\r\n right,\r\n bottom,\r\n left\r\n }\r\n}\r\n\r\n/**\r\n * create tool tip\r\n */\r\nPanelContainer.prototype._createTooltip = function () {\r\n if (this.tooltip) return;\r\n // need tiphandle\r\n if (!document.querySelector('#tigo_panel_tooltip')) {\r\n var css = '.gdw-tigo-panel-tooltip {min-width: 150px;padding:10px 15px;line-height: 20px;background-color: #fff;position: absolute;top: 0;left: 0;border-radius: 5px;';\r\n css += 'box-shadow: 2px 2px 10px #666666;}';\r\n css += '.gdw-tigo-panel-tooltip h4 {margin: 0;padding: 0; font-size: 16px; color: #3D3D3D;}'\r\n css += '.gdw-tigo-panel-tooltip p {margin: 0;padding: 0; font-size: 14px; color: #949494;}'\r\n var style = document.createElement('style');\r\n style.id = 'tigo_panel_tooltip';\r\n style.innerHTML = css;\r\n document.querySelector('head').appendChild(style);\r\n }\r\n\r\n this.tooltip = document.createElement('div');\r\n this.tooltip.style.display = 'none';\r\n this.tooltip.className = 'gdw-tigo-panel-tooltip';\r\n document.body.appendChild(this.tooltip);\r\n}\r\n\r\nPanelContainer.prototype._getInvalidPanels = function (order) {\r\n var r = [];\r\n var o = [].slice.call(order);\r\n for (var i = 0; i < this.configs.length; i++) {\r\n var cnf = this.configs[i];\r\n var idx = o.indexOf(cnf.id);\r\n if(idx > -1) {\r\n o.splice(idx, 1);\r\n if(o.length == 0) break;\r\n continue;\r\n }\r\n r.push(cnf.id);\r\n }\r\n return r;\r\n}\r\n\r\n/**\r\n * destroy\r\n */\r\nPanelContainer.prototype._destroy = function () {\r\n document.body.removeChild(this.tooltip);\r\n}\r\n\r\n// inherit prototype\r\nInherit(PanelContainer, PanelBase);","/**\r\n * Panel control\r\n * bingtao.sun@2020-7-16\r\n */\r\n\r\nimport PanelBase from './PanelBase';\r\nimport Inherit from './Inherit';\r\n\r\n/**\r\n * Panel control\r\n * @param {object} options configuration item\r\n */\r\nexport default function PanelControl(options) {\r\n PanelBase.call(this, options);\r\n this.allowAllTimes = options.allowAllTimes || false;\r\n this.interval = options.interval||1;\r\n this._init();\r\n}\r\n\r\n/**\r\n * initialize\r\n */\r\nPanelControl.prototype._init = function () {\r\n this.zr = zrender.init(this.dom);\r\n var line = new zrender.Line({\r\n silent: true,\r\n shape: {\r\n x1: 5,\r\n y1: this.domHeight / 2,\r\n x2: this.domWidth - 5,\r\n y2: this.domHeight / 2\r\n },\r\n style: {\r\n stroke: '#01C0DC'\r\n }\r\n });\r\n this.zr.add(line);\r\n}\r\n\r\n/**\r\n * Sets data for all components at all points in time\r\n * @param {object} data dataset in data \r\n * @param {object} config for panel layout\r\n * @param {string} lastDate the time of the last data point\r\n * @param {boolean} isInit wheather to initialize the call\r\n */\r\nPanelControl.prototype.setData = function (data, config, isInit) {\r\n this.dataset = data;\r\n this.config = config;\r\n\r\n // get points for poligon\r\n this._normalizeDataset();\r\n\r\n\r\n var upPoints = [],\r\n downPoints = [];\r\n eachPointInDay(i => {\r\n var maxValue = this.maxValues[i] || Infinity;\r\n var timeData = this.data[i];\r\n var sum = 0;\r\n var top = 5;\r\n if (timeData) {\r\n sum = timeData.d.reduce((sum, num) => sum + (parseFloat(num) || 0), 0)\r\n }\r\n var x = 5 + (this.domWidth - 10) / 24 / 60 * i;\r\n var y = top + (this.domHeight / 2 - top) * (1 - sum / maxValue);\r\n var y1 = this.domHeight / 2 + (this.domHeight / 2 - top) * (sum / maxValue);\r\n upPoints.push([x, y]);\r\n downPoints.push([x, y1]);\r\n });\r\n // if 'this.charts' is not exist, need create charts and bar\r\n if (this.upChart) {\r\n this.upChart.attr({\r\n shape: {\r\n points: upPoints\r\n }\r\n });\r\n } else {\r\n this.upChart = new zrender.Polygon({\r\n silent: true,\r\n shape: {\r\n points: upPoints,\r\n smooth: 0\r\n },\r\n style: {\r\n fill: '#01C0DC'\r\n }\r\n });\r\n this.zr.add(this.upChart);\r\n }\r\n // if 'this.charts' is not exist, need create charts and bar\r\n if (this.downChart) {\r\n this.downChart.attr({\r\n shape: {\r\n points: downPoints\r\n }\r\n });\r\n } else {\r\n this.downChart = new zrender.Polygon({\r\n silent: true,\r\n shape: {\r\n points: downPoints,\r\n smooth: 0\r\n },\r\n style: {\r\n fill: '#01C0DC'\r\n }\r\n });\r\n this.zr.add(this.downChart);\r\n }\r\n if (!this.bar) {\r\n var top = 3;\r\n this.bar = new zrender.Rect({\r\n shape: {\r\n x: 0,\r\n y: top,\r\n width: 10,\r\n height: this.domHeight - 2 * top,\r\n r: 5\r\n },\r\n style: {\r\n fill: '#ffffff',\r\n stroke: null\r\n },\r\n zlevel: 10\r\n })\r\n this.zr.add(this.bar)\r\n this._bindBarMoveEvent();\r\n }\r\n var time = this.lastTime;\r\n if (time) {\r\n this.maxTimeValue = this.allowAllTimes ? (24 * 60) : time2value(time);\r\n this.setTime(time, isInit);\r\n } else {\r\n this._processChanged(this.currentValue);\r\n }\r\n}\r\n\r\n\r\n/**\r\n * set next time\r\n */\r\nPanelControl.prototype.nextTime = function () {\r\n if (!this.currentValue) this.currentValue = 0;\r\n if (this.currentValue >= this.maxTimeValue) return;\r\n this.currentValue += this.interval;\r\n \r\n var x = this.currentValue * (this.domWidth - 10) / 24 / 60;\r\n this.lastValue = x;\r\n this.bar.attr({\r\n position: [x, 0]\r\n });\r\n this._processChanged(this.currentValue);\r\n}\r\n\r\n/**\r\n * set previous time\r\n */\r\nPanelControl.prototype.prevTime = function () {\r\n if (!this.currentValue) this.currentValue = 0;\r\n if (this.currentValue <= 0) return;\r\n this.currentValue -= this.interval;\r\n var x = this.currentValue * (this.domWidth - 10) / 24 / 60;\r\n this.lastValue = x;\r\n this.bar.attr({\r\n position: [x, 0]\r\n });\r\n this._processChanged(this.currentValue);\r\n}\r\n\r\n\r\n/**\r\n * set time to contrl\r\n * @param {string} time eg. 20:03\r\n * @param {boolean} isInit if is initialize, we can move last\r\n */\r\nPanelControl.prototype.setTime = function (time, isInit) {\r\n if (this.currentValue > this.maxTimeValue || isInit) {\r\n var x = time2value(time) * (this.domWidth - 10) / 24 / 60;\r\n this.lastValue = x;\r\n this.bar.attr({\r\n position: [x, 0]\r\n });\r\n this._processChanged(time2value(time));\r\n } else {\r\n this._processChanged(this.currentValue)\r\n }\r\n}\r\n\r\n/**\r\n * get maxvalue from config\r\n */\r\nPanelControl.prototype._normalizeDataset = function () {\r\n var orders = [];\r\n var maxValues = [];\r\n var _data = [];\r\n\r\n var order;\r\n var len = 0;\r\n\r\n for (var i = 0; i < this.dataset.length; i++) {\r\n var data = this.dataset[i];\r\n order = data.order;\r\n var maxValue = this.config.filter(m => m.type == 2 && order.indexOf(m.id) > -1)\r\n .map(m => parseFloat(m.MP))\r\n .reduce((sum, num) => sum + num, 0);\r\n for (var j = 0; j < data.data.length; j++) {\r\n orders.push(order);\r\n maxValues.push(maxValue)\r\n _data.push(data.data[j]);\r\n }\r\n len += data.data.length;\r\n }\r\n\r\n for (var i = len; i < 24 * 60; i++) {\r\n orders.push(order);\r\n maxValues.push(Infinity);\r\n }\r\n\r\n var lastData = this.dataset[this.dataset.length - 1].data;\r\n\r\n this.lastTime = lastData[lastData.length - 1].t;\r\n\r\n\r\n this.orders = orders;\r\n this.maxValues = maxValues;\r\n this.data = _data;\r\n}\r\n\r\n/**\r\n * bar's move event\r\n */\r\nPanelControl.prototype._bindBarMoveEvent = function () {\r\n // \r\n this.bar.on('mouseup', () => {\r\n this.isBarDragging = false;\r\n });\r\n\r\n this.zr.on('mouseup', () => {\r\n this.isBarDragging = false;\r\n });\r\n\r\n this.zr.on('mousemove', event => {\r\n var line = this.domWidth - 10;\r\n var max = line * this.maxTimeValue / 60 / 24;\r\n if (!this.isBarDragging) return;\r\n var dx = event.offsetX - this.dragOffset[0];\r\n var pox = this.dragPosition[0] + dx;\r\n if (pox < 0) pox = 0;\r\n if (pox > max) pox = max;\r\n this.bar.attr({\r\n position: [pox, 0]\r\n })\r\n if (this.lastValue == pox) return;\r\n this.lastValue = pox;\r\n var convertValue = pox * 24 * 60 / line\r\n if(Math.abs(convertValue-Math.ceil(convertValue/this.interval)*this.interval) {\r\n var line = this.domWidth - 10;\r\n var max = line * this.maxTimeValue / 60 / 24;\r\n var x = event.offsetX - 5;\r\n if (x > max) x = max;\r\n this.lastValue = x;\r\n this.bar.attr({\r\n position: [x, 0]\r\n });\r\n var convertValue = x * 24 * 60 / line\r\n if(Math.abs(convertValue-Math.ceil(convertValue/this.interval)*this.interval)\r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n {{ item.sn }}\r\n
    \r\n
    \r\n \r\n {{ lang.Tigo_module_totalP }} {{ totalPower/1000 }} kW\r\n
    \r\n
    \r\n
    loading
    \r\n
    \r\n
    \r\n
    \r\n \r\n \r\n
    \r\n \r\n \r\n \r\n \r\n \r\n
    \r\n
    \r\n
    \r\n \r\n \r\n \r\n 00:00\r\n \r\n
    \r\n
    \r\n
    \r\n\r\n\r\n\r\n","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./GoodweTigo.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./GoodweTigo.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./GoodweTigo.vue?vue&type=template&id=73869e27&\"\nimport script from \"./GoodweTigo.vue?vue&type=script&lang=js&\"\nexport * from \"./GoodweTigo.vue?vue&type=script&lang=js&\"\nimport style0 from \"./GoodweTigo.vue?vue&type=style&index=0&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{directives:[{name:\"loading\",rawName:\"v-loading\",value:(_vm.showLoading),expression:\"showLoading\"}],staticClass:\"goodwe-tigo\"},[_c('div',{staticStyle:{\"padding-top\":\"45px\"}},[_c('div',{staticClass:\"clearfix chart-title\"},[_c('div',{staticClass:\"sn-list fl\"},_vm._l((_vm.snArr),function(item,index){return _c('div',{key:index,staticClass:\"sn-list-item fl\",class:{ active: index == _vm.activeIndex },on:{\"mouseover\":function($event){return _vm.showSamePanel(item.sn, index)},\"mouseleave\":function($event){return _vm.clearSamePanel()}}},[_c('span',{staticClass:\"ellipsis\",staticStyle:{\"max-width\":\"158px\",\"display\":\"inline-block\"}},[_vm._v(_vm._s(item.sn))])])}),0),_vm._v(\" \"),_c('div',{staticClass:\"fr\",staticStyle:{\"color\":\"#373438\",\"font-size\":\"14px\",\"height\":\"70px\",\"line-height\":\"70px\",\"margin-right\":\"20px\"}},[_vm._v(\"\\n \"+_vm._s(_vm.lang.Tigo_module_totalP)+\" \"+_vm._s(_vm.totalPower/1000)+\" kW\\n \")])]),_vm._v(\" \"),_c('div',{ref:\"app\",attrs:{\"id\":\"app\"}},[_vm._v(\"loading\")])]),_vm._v(\" \"),_c('div'),_vm._v(\" \"),_c('div',{staticClass:\"date-controll\"},[_c('i',{ref:\"zoomout\",staticClass:\"el-icon-minus\",class:{'disabled':_vm.zoomInDisabled},attrs:{\"id\":\"zoomout\"}}),_vm._v(\" \"),_c('i',{ref:\"zoomin\",staticClass:\"el-icon-plus\",class:{'disabled':_vm.zoomOutDisabled},attrs:{\"id\":\"zoomin\"}}),_vm._v(\" \"),_c('div',{ref:\"ct\",staticClass:\"ct\"},[_c('i',{staticClass:\"el-icon-refresh-right refresh-btn\",attrs:{\"id\":\"\"},on:{\"click\":function($event){return _vm.refresh()}}}),_vm._v(\" \"),_c('i',{staticClass:\"el-icon-arrow-left\",staticStyle:{\"cursor\":\"pointer\"},attrs:{\"id\":\"\"},on:{\"click\":_vm.prevCycleChart}}),_vm._v(\" \"),_c('el-date-picker',{staticStyle:{\"width\":\"130px\"},attrs:{\"editable\":false,\"clearable\":false,\"format\":_vm.dateFormat,\"default-value\":_vm.localDate,\"size\":\"mini\",\"picker-options\":_vm.pickerOption,\"type\":\"date\",\"placeholder\":\"选择日期\"},on:{\"change\":_vm.getChartData},model:{value:(_vm.dateValue),callback:function ($$v) {_vm.dateValue=$$v},expression:\"dateValue\"}}),_vm._v(\" \"),_c('i',{staticClass:\"el-icon-arrow-right\",class:{'disabled':!_vm.canNext},staticStyle:{\"cursor\":\"pointer\"},attrs:{\"id\":\"\"},on:{\"click\":_vm.nextCycleChart}})],1),_vm._v(\" \"),_c('div',{ref:\"bpp\",attrs:{\"id\":\"bpp\"}}),_vm._v(\" \"),_c('div',{staticStyle:{\"display\":\"inline-block\"}},[_c('i',{ref:\"prevtime\",staticClass:\"el-icon-arrow-left\",class:{'disabled':_vm.prevBtnDisabled},attrs:{\"id\":\"prevtime\"}}),_vm._v(\" \"),_c('i',{staticClass:\"el-icon-time\"}),_vm._v(\" \"),_c('span',{ref:\"timespan\",attrs:{\"id\":\"timespan\"}},[_vm._v(\"00:00\")]),_vm._v(\" \"),_c('i',{ref:\"nexttime\",staticClass:\"el-icon-arrow-right\",class:{'disabled':_vm.nextBtnDisabled},attrs:{\"id\":\"nexttime\"}})])])])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\n\r\n\r\n","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./GoodweTigoTable.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./GoodweTigoTable.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./GoodweTigoTable.vue?vue&type=template&id=8f96aa0c&\"\nimport script from \"./GoodweTigoTable.vue?vue&type=script&lang=js&\"\nexport * from \"./GoodweTigoTable.vue?vue&type=script&lang=js&\"\nimport style0 from \"./GoodweTigoTable.vue?vue&type=style&index=0&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{directives:[{name:\"loading\",rawName:\"v-loading\",value:(_vm.showLoading),expression:\"showLoading\"}],staticClass:\"goodwe-tigo-table\",staticStyle:{\"padding-top\":\"45px\"}},[_c('div',{staticClass:\"clearfix chart-title\"},[_c('div',{staticClass:\"sn-list fl\"},[(_vm.inverterNum > 1)?_c('div',{staticClass:\"sn-list-item fl\",class:{ active: _vm.activeIndex == -1 },on:{\"click\":function($event){return _vm.showSamePanel('', -1)}}},[_vm._v(\"\\n \"+_vm._s(_vm.lang.Alarms_all)+\"\\n \")]):_vm._e(),_vm._v(\" \"),_vm._l((_vm.snArr),function(item,index){return _c('div',{key:index,staticClass:\"sn-list-item fl\",class:{ active: index == _vm.activeIndex },on:{\"click\":function($event){return _vm.showSamePanel(item.sn, index)}}},[_c('span',{staticClass:\"ellipsis\",staticStyle:{\"max-width\":\"158px\",\"display\":\"inline-block\"}},[_vm._v(_vm._s(item.sn))])])})],2)]),_vm._v(\" \"),_c('div',{staticClass:\"sn-title\"},[_c('div',{staticClass:\"fl\",staticStyle:{\"font-size\":\"14px\",\"height\":\"30px\",\"line-height\":\"30px\",\"margin-right\":\"20px\"}},[_vm._v(\"\\n \"+_vm._s(_vm.lang.Tigo_module_totalP)+\" \"+_vm._s(_vm.totalPower / 1000)+\" kW\\n \")]),_vm._v(\" \"),_c('div',{staticClass:\"fr\"},[(_vm.activeName != _vm.activeSN)?_c('span',{staticStyle:{\"display\":\"inline-block\"}},[_vm._v(_vm._s(_vm.activeName)+\"(\")]):_vm._e(),_vm._v(\" \"),_c('span',{staticStyle:{\"display\":\"inline-block\"}},[_vm._v(_vm._s(_vm.activeSN))]),_vm._v(\" \"),(_vm.activeName != _vm.activeSN)?_c('span',{staticStyle:{\"display\":\"inline-block\"}},[_vm._v(\")\")]):_vm._e()])]),_vm._v(\" \"),_c('div',{staticStyle:{\"padding\":\"0 20px\",\"background\":\"#FFF\"}},[_c('el-table',{staticStyle:{\"border\":\"1px solid #E0E0E0\"},attrs:{\"data\":_vm.computedTableData[_vm.timeValue],\"header-cell-style\":{\n height: '42px',\n background: '#38474E',\n color: '#fff',\n },\"height\":\"680\"}},[_c('el-table-column',{attrs:{\"prop\":\"pvModule\",\"label\":_vm.lang['Tigo_module_pvModule'] || 'Tigo_module_pvModule'}}),_vm._v(\" \"),_c('el-table-column',{attrs:{\"label\":_vm.lang['Tigo_module_V'] || 'Tigo_module_V'},scopedSlots:_vm._u([{key:\"default\",fn:function(scope){return [_c('span',[_vm._v(_vm._s(scope.row.voltage || \"-\"))])]}}])}),_vm._v(\" \"),_c('el-table-column',{attrs:{\"label\":_vm.lang['Tigo_module_A'] || 'Tigo_module_A'},scopedSlots:_vm._u([{key:\"default\",fn:function(scope){return [_c('span',[_vm._v(_vm._s(scope.row.current || \"-\"))])]}}])}),_vm._v(\" \"),_c('el-table-column',{attrs:{\"label\":_vm.lang['Tigo_module_P'] || 'Tigo_module_P'},scopedSlots:_vm._u([{key:\"default\",fn:function(scope){return [_c('span',[_vm._v(_vm._s(scope.row.power || \"-\"))])]}}])})],1)],1),_vm._v(\" \"),_c('div',{staticClass:\"date-controll\"},[_c('div',{staticClass:\"ct\"},[_c('i',{staticClass:\"el-icon-refresh-right refresh-btn\",attrs:{\"id\":\"\"},on:{\"click\":function($event){return _vm.refresh()}}}),_vm._v(\" \"),_c('i',{staticClass:\"el-icon-arrow-left\",staticStyle:{\"cursor\":\"pointer\"},attrs:{\"id\":\"\"},on:{\"click\":_vm.prevCycleChart}}),_vm._v(\" \"),_c('el-date-picker',{staticStyle:{\"width\":\"130px\"},attrs:{\"editable\":false,\"clearable\":false,\"size\":\"mini\",\"format\":_vm.dateFormat,\"picker-options\":_vm.pickerOption,\"type\":\"date\",\"placeholder\":\"选择日期\"},on:{\"change\":_vm.init},model:{value:(_vm.dateValue),callback:function ($$v) {_vm.dateValue=$$v},expression:\"dateValue\"}}),_vm._v(\" \"),_c('i',{staticClass:\"el-icon-arrow-right\",class:{ disabled: !_vm.canNext },staticStyle:{\"cursor\":\"pointer\"},attrs:{\"id\":\"\"},on:{\"click\":_vm.nextCycleChart}})],1),_vm._v(\" \"),_c('div',{ref:\"bpp\",attrs:{\"id\":\"bpp\"}}),_vm._v(\" \"),_c('div',{staticStyle:{\"display\":\"inline-block\"}},[_c('i',{ref:\"prevtime\",staticClass:\"el-icon-arrow-left\",class:{ disabled: _vm.prevBtnDisabled },attrs:{\"id\":\"prevtime\"}}),_vm._v(\" \"),_c('i',{staticClass:\"el-icon-time\"}),_vm._v(\" \"),_c('span',{ref:\"timespan\",attrs:{\"id\":\"timespan\"}},[_vm._v(\"00:00\")]),_vm._v(\" \"),_c('i',{ref:\"nexttime\",staticClass:\"el-icon-arrow-right\",class:{ disabled: _vm.nextBtnDisabled },attrs:{\"id\":\"nexttime\"}})])])])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import GoodweTigo from './src/GoodweTigo.vue';\r\nimport GoodweTigoTable from './src/GoodweTigoTable.vue';\r\n\r\n[GoodweTigo, GoodweTigoTable].forEach(item => {\r\n item.install = Vue => {\r\n Vue.component(item.name, item);\r\n }\r\n});\r\n\r\nexport default {\r\n GoodweTigo,\r\n GoodweTigoTable\r\n};","\r\n\r\n\r\n\r\n","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./GoodweMap.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./GoodweMap.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./GoodweMap.vue?vue&type=template&id=7ce83e42&\"\nimport script from \"./GoodweMap.vue?vue&type=script&lang=js&\"\nexport * from \"./GoodweMap.vue?vue&type=script&lang=js&\"\nimport style0 from \"./GoodweMap.vue?vue&type=style&index=0&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"goodwe-map\"},[_c('div',{staticClass:\"xyx_mapmask\",style:('background:' + _vm.bgColor)},[_c('div',{style:('width:' + _vm.width + 'px;' + 'height:' + _vm.height + 'px;'),attrs:{\"id\":\"xyx_mapcontainer\"}},[_c('div',{staticClass:\"xyx_closebtn\",on:{\"click\":_vm.closeMap}}),_vm._v(\" \"),_c('div',{staticClass:\"xyx_infobox\",class:{ xyx_hide: !_vm.infoName && !_vm.infoAddress }},[_c('h5',[_vm._v(_vm._s(_vm.infoName))]),_vm._v(\" \"),_c('p',[_vm._v(_vm._s(_vm.infoAddress))])]),_vm._v(\" \"),_c('div',{staticClass:\"xyx_searchbox\",style:('background:' + _vm.inputBgColor)},[_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.searchValue),expression:\"searchValue\"}],attrs:{\"type\":\"text\"},domProps:{\"value\":(_vm.searchValue)},on:{\"input\":function($event){if($event.target.composing){ return; }_vm.searchValue=$event.target.value}}})]),_vm._v(\" \"),_c('ul',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.showCityList),expression:\"showCityList\"}],staticClass:\"xyx_searchlist\",style:('background:' + _vm.inputBgColor)},_vm._l((_vm.cityList),function(item,index){return _c('li',{key:index,on:{\"click\":function($event){return _vm.itemClickMark(item)}}},[_c('div',{domProps:{\"innerHTML\":_vm._s(_vm.nameDom(item))}}),_vm._v(\" \"),_c('span',[_vm._v(_vm._s(item.address))])])}),0),_vm._v(\" \"),(_vm.isDraw)?_c('button',{staticClass:\"xyx_button\",on:{\"click\":_vm.submitAddress}},[_vm._v(\"\\n \"+_vm._s(_vm.lang.pssmBeSure)+\"\\n \")]):_vm._e()])])])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import GoodweMap from './src/GoodweMap.vue';\r\n\r\nGoodweMap.install = Vue => {\r\n Vue.component(GoodweMap.name, GoodweMap);\r\n}\r\n\r\nexport default GoodweMap;","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./GoodwePsBatteryCure.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./GoodwePsBatteryCure.vue?vue&type=script&lang=js&\"","\r\n\r\n\r\n\r\n\r\n","import { render, staticRenderFns } from \"./GoodwePsBatteryCure.vue?vue&type=template&id=09910dcb&scoped=true&\"\nimport script from \"./GoodwePsBatteryCure.vue?vue&type=script&lang=js&\"\nexport * from \"./GoodwePsBatteryCure.vue?vue&type=script&lang=js&\"\nimport style0 from \"./GoodwePsBatteryCure.vue?vue&type=style&index=0&id=09910dcb&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"09910dcb\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"goodwe-ps-battery-cure\"},[_c('p',{staticClass:\"title\"},[_vm._v(_vm._s(_vm.model.sn)+\" \"+_vm._s(_vm.model.batterySN?(\" ➡ \" + (_vm.lang.battery) + (_vm.model.local) + \" (\" + (_vm.model.batterySN) + \")\"):\"\"))]),_vm._v(\" \"),_c('div',{staticClass:\"ps-battery\"},[_c('div',{staticClass:\"fl battery-image\"},[_c('div',{staticClass:\"ps-battery-cure\",class:{'charge':_vm.model.status=='3',\n 'discharge':_vm.model.status=='2',\n 'standby':_vm.model.status=='1'}}),_vm._v(\" \"),_c('div',{staticClass:\"soc-text\"},[_vm._v(_vm._s(_vm.model.batterySoc)+\"%\")]),_vm._v(\" \"),_c('p',{staticClass:\"discribe\"},[_vm._v(_vm._s(_vm.statusObj[\"status\"+_vm.model.status]))]),_vm._v(\" \"),_c('p',{staticClass:\"discribe\"},[(_vm.batteryIndicators.warnBMS)?_c('span',{attrs:{\"title\":_vm.batteryIndicators.warnBMS}},[_vm._v(\"\\n \"+_vm._s(_vm.lang[_vm.batteryIndicators.warnBMS])+\"\\n \")]):_vm._e()])]),_vm._v(\" \"),_c('div',{staticClass:\"goodwe-ps-cure-inverter fl\"},[_c('ul',{staticClass:\"table-list\"},[_c('li',[_c('label',{attrs:{\"title\":_vm.lang.Power}},[_vm._v(_vm._s(_vm.lang.Power))]),_vm._v(\" \"),_c('span',{attrs:{\"title\":_vm.batteryIndicators.power||'--'}},[_vm._v(_vm._s(_vm.batteryIndicators.power||\"--\"))])]),_vm._v(\" \"),_c('li',[_c('label',{attrs:{\"title\":_vm.lang.batteryV}},[_vm._v(_vm._s(_vm.lang.batteryV))]),_vm._v(\" \"),_c('span',{attrs:{\"title\":_vm.batteryIndicators.voltage||'--'}},[_vm._v(_vm._s(_vm.batteryIndicators.voltage||\"--\"))])]),_vm._v(\" \"),_c('li',[_c('label',{attrs:{\"title\":_vm.lang.current}},[_vm._v(_vm._s(_vm.lang.current))]),_vm._v(\" \"),_c('span',{attrs:{\"title\":_vm.batteryIndicators.current||'--'}},[_vm._v(_vm._s(_vm.batteryIndicators.current||\"--\"))])]),_vm._v(\" \"),_c('li',[_c('label',{attrs:{\"title\":_vm.lang.charge_current_limit}},[_vm._v(_vm._s(_vm.lang.charge_current_limit)+\" \")]),_vm._v(\" \"),_c('span',{attrs:{\"title\":_vm.batteryIndicators.chargeClimitBMS||'--'}},[_vm._v(_vm._s(_vm.batteryIndicators.chargeClimitBMS||\"--\"))])]),_vm._v(\" \"),_c('li',[_c('label',{attrs:{\"title\":_vm.lang.discharge_current_limit}},[_vm._v(_vm._s(_vm.lang.discharge_current_limit))]),_vm._v(\" \"),_c('span',{attrs:{\"title\":_vm.batteryIndicators.dischargeClimitBMS||'--'}},[_vm._v(_vm._s(_vm.batteryIndicators.dischargeClimitBMS||\"--\"))])]),_vm._v(\" \"),_c('li',[_c('label',{attrs:{\"title\":_vm.lang.SOH}},[_vm._v(_vm._s(_vm.lang.SOH))]),_vm._v(\" \"),_c('span',{attrs:{\"title\":_vm.batteryIndicators.soh||'--'}},[_vm._v(_vm._s(_vm.batteryIndicators.soh||\"--\"))])]),_vm._v(\" \"),_c('li',[_c('label',{attrs:{\"title\":_vm.lang.verBMS}},[_vm._v(_vm._s(_vm.lang.verBMS))]),_vm._v(\" \"),_c('span',{attrs:{\"title\":_vm.batteryIndicators.bms_ver||'--'}},[_vm._v(_vm._s(_vm.batteryIndicators.bms_ver||\"--\"))])]),_vm._v(\" \"),_c('li',[_c('label',{attrs:{\"title\":_vm.lang.firmware_version}},[_vm._v(_vm._s(_vm.lang.firmware_version))]),_vm._v(\" \"),_c('span',{attrs:{\"title\":_vm.batteryIndicators.verFB||'--'}},[_vm._v(_vm._s(_vm.batteryIndicators.verFB||\"--\"))])])])]),_vm._v(\" \"),_c('div',{staticClass:\"fl\",attrs:{\"id\":\"batteryChart\"}})])])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import GoodwePsBatteryCure from './src/GoodwePsBatteryCure.vue';\r\n\r\nGoodwePsBatteryCure.install = Vue => {\r\n Vue.component(GoodwePsBatteryCure.name, GoodwePsBatteryCure);\r\n}\r\n\r\nexport default GoodwePsBatteryCure;","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./GdwAttachment.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./GdwAttachment.vue?vue&type=script&lang=js&\"","\n\n","import { render, staticRenderFns } from \"./GdwAttachment.vue?vue&type=template&id=290b0292&\"\nimport script from \"./GdwAttachment.vue?vue&type=script&lang=js&\"\nexport * from \"./GdwAttachment.vue?vue&type=script&lang=js&\"\nimport style0 from \"./GdwAttachment.vue?vue&type=style&index=0&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[_c('div',{staticClass:\"gdw-attachment\",class:{ 'gdw-attachement-selected': _vm.isSelected },on:{\"click\":_vm.attatchmentClick,\"mouseleave\":function($event){_vm.isEnter = false},\"mouseenter\":function($event){_vm.isEnter = true}}},[_c('span',{staticClass:\"gdw-attachment-inner\"},[_vm._v(_vm._s(_vm.innerStr))]),_c('input',{ref:\"file\",staticStyle:{\"display\":\"none\"},attrs:{\"type\":\"file\",\"accept\":\".xls,.xlsx\"},on:{\"change\":_vm.fileChange}}),_vm._v(\" \"),(_vm.isShowClear)?_c('span',{staticClass:\"gdw-attachment-clearable el-icon-circle-close\",on:{\"click\":_vm.clearFile}}):_vm._e()])])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import GdwAttachment from './src/GdwAttachment.vue';\r\n\r\nGdwAttachment.install = Vue => {\r\n Vue.component(GdwAttachment.name, GdwAttachment);\r\n}\r\n\r\nexport default GdwAttachment;","export default {\r\n name: \"FcasData\",\r\n data() {\r\n return {\r\n lang: Goodwe.Ops.Resouces.Front, //语言包\r\n isSelectedAll: true,\r\n checkedList: [], //选中的id列表\r\n clearNodeId: -1, //点击清除的id\r\n clearNodeArr: [], //清除的id列表\r\n file: {},\r\n excelData: [],\r\n sn: \"\",\r\n snList: [],\r\n visible: {\r\n import: false,\r\n },\r\n checksLength: 0, //树结构选项总长度\r\n treeData: [], //树的数据\r\n tableData: [], //表格数据\r\n seletedNodes: [], //选中的树数据,用于展示选中项列表\r\n defaultProps: {\r\n children: \"children\",\r\n label: \"label\",\r\n },\r\n isUp:true, //箭头是否朝下\r\n page: {\r\n index: 1, // 当前页\r\n size: 6, // 页码大小\r\n record: 0, // 总条数\r\n },\r\n tableLoading: false, //表格加载\r\n dataOptionload: false, // 数据类型加载\r\n statementParam: {\r\n date: [\r\n new Date(dayjs(new Date()).format(\"YYYY-MM-DD 00:00:00\")),\r\n new Date(),\r\n ],\r\n dataType: 1, // 数据类型默认 1(第一个radio Button)\r\n },\r\n };\r\n },\r\n filters: {\r\n formatTime(v) {\r\n return v ? dayjs(v).format(dateFormatReplace(\"day\") + \" HH:mm:ss\") : \"\";\r\n },\r\n formatDay(v) {\r\n return v ? dayjs(v).format(dateFormatReplace(\"day\")) : \"\";\r\n },\r\n filterPath(v) {\r\n return v ? v.split(\"/\")[v.split(\"/\").length - 1] : \"\";\r\n },\r\n },\r\n methods: {\r\n getExcelData(data) {\r\n let data1 = [];\r\n data.filter((item) => {\r\n if (item.length > 1 && item[1]) {\r\n data1.push(item[1]);\r\n }\r\n });\r\n data1 = Array.from(new Set(data1));\r\n if (data1.length > 100) {\r\n this.$message.error(this.lang.fcBatchTip);\r\n } else {\r\n this.excelData = [...data1];\r\n }\r\n },\r\n //清空一个SN\r\n clearSN(item) {\r\n let arr = this.snList.filter((snItem) => {\r\n return snItem != item;\r\n });\r\n this.snList = [...arr];\r\n if(this.snList.length === 1) { // 如果只剩一个sn\r\n this.handleOnlyOneSn();\r\n }\r\n },\r\n handleOnlyOneSn() {\r\n this.sn = this.snList[0]\r\n this.snList = [];\r\n this.inputFinish();\r\n },\r\n handleCheckChange(data, checked, indeterminate) {\r\n let arr = this.$refs.tree.getCheckedNodes().filter((item) => {\r\n return !item.children;\r\n });\r\n this.seletedNodes = [...arr];\r\n },\r\n clearAll() {\r\n this.$refs.tree.setCheckedKeys([]);\r\n this.isSelectedAll = false;\r\n },\r\n submitImportExcel() {\r\n this.snList = [...this.excelData];\r\n if (this.snList.length > 0) {\r\n this.visible.import = false;\r\n if(this.snList.length === 1) {\r\n this.handleOnlyOneSn();\r\n } else {\r\n this.checkDataTypeBySn(this.snList[0])\r\n }\r\n } else {\r\n this.$message.error(this.lang.fcSNrequired);\r\n }\r\n },\r\n /** 清除单个选项卡数据 */\r\n clearItem(clearNode) {\r\n this.clearNodeId = clearNode.key;\r\n let keys = [...this.$refs.tree.getCheckedKeys()];\r\n this.checkedList = [];\r\n let checkedItem = [];\r\n let checkedList = [];\r\n this.setItem(this.treeData, checkedItem, checkedList);\r\n this.checkedList = [...checkedList];\r\n this.clearNodeArr.forEach((item) => {\r\n let index = keys.indexOf(item);\r\n if (index >= 0) {\r\n keys.splice(index, 1);\r\n }\r\n });\r\n this.$refs.tree.setCheckedKeys(keys);\r\n this.isSelectedAll = false;\r\n },\r\n /** 改变数据类型,修改树结构 */\r\n changeDataType(item) {\r\n this.statementParam.dataType = item;\r\n this.getTargets(item)\r\n },\r\n\r\n //拼接树结构选中项的id列表必须得是[grandfatherId,fatherid,id]这样的格式,所以有以下方法\r\n setItem(option, checkedItem, checkedList) {\r\n let arr = [...checkedItem];\r\n option.forEach((item) => {\r\n if (!item.children) {\r\n arr[item.level - 1] = item.key;\r\n let cloneArr = [...arr];\r\n checkedList.push(cloneArr);\r\n if (item.key == this.clearNodeId) {\r\n this.clearNodeArr = [...arr];\r\n }\r\n return;\r\n } else {\r\n arr[item.level - 1] = item.key;\r\n this.setItem(item.children, arr, checkedList);\r\n }\r\n });\r\n },\r\n /** 判断是否全选 */\r\n checkClicked(checkedNodes, checkedKeys, halfCheckedNodes, halfCheckedKeys) {\r\n if (checkedKeys.checkedKeys.length < this.checksLength) {\r\n this.isSelectedAll = false;\r\n } else {\r\n this.isSelectedAll = true;\r\n }\r\n },\r\n /** 树结构全选 */\r\n selectAll() {\r\n let arr = [...this.treeData];\r\n this.$refs.tree.setCheckedNodes(arr);\r\n this.isSelectedAll = true;\r\n this.checksLength = this.$refs.tree.getCheckedKeys().length;\r\n },\r\n /** 设置已选项的数量 */\r\n setChecksLength(children, length) {\r\n children.forEach((item) => {\r\n if (item.children) {\r\n this.setChecksLength(item.children, length);\r\n }\r\n });\r\n },\r\n /** 点击generateData 先上传 再生成表格 */\r\n generateData() {\r\n let paramSN = this.snList.map((item) => {\r\n return item.toString().trim();\r\n });\r\n let columns = this.$refs.tree\r\n .getCheckedNodes()\r\n .filter((item) => {\r\n return item.level != 1;\r\n })\r\n .reduce((result, item) => ({ ...result, [item.label]: this.lang[item.key] }), {});\r\n if (!this.sn && this.snList.length < 1) {\r\n this.$message.error(this.lang.fcSNrequired);\r\n return;\r\n }\r\n if (\r\n this.statementParam.date[1].getTime() -\r\n this.statementParam.date[0].getTime() >\r\n 24 * 60 * 60 * 1000\r\n ) {\r\n this.$message.error(this.lang.fcTimecheck);\r\n return;\r\n }\r\n if (this.seletedNodes.length < 1) {\r\n this.$message.error(this.lang.fcItemrequired);\r\n return;\r\n }\r\n if (paramSN.length == 0) {\r\n paramSN = [this.sn.trim()];\r\n }\r\n if (paramSN.every((item) => {\r\n var reg = /^(?![0-9]+$)(?![a-zA-Z]+$)[0-9A-Za-z]{16}$/g; //SN验证规则\r\n return reg.test(item);\r\n })) {\r\n this.tableLoading = true;\r\n common.post(\"/LGFile/CreateFile\", {\r\n uid: \"\",\r\n sns: paramSN,\r\n start: dayjs(this.statementParam.date[0]).format(\"YYYY-MM-DD HH:mm:ss\"),\r\n end: dayjs(this.statementParam.date[1]).format(\"YYYY-MM-DD HH:mm:ss\"),\r\n columns: columns,\r\n service_area: \"\",\r\n type: this.statementParam.dataType == '1' ? 0 : 1\r\n }).success((res) => {\r\n //后端有延时\r\n setTimeout(() => {\r\n this.page.index = 1;\r\n this.getTableData();\r\n }, 1000);\r\n }).fail((fail) => {\r\n this.$message.error(fail.msg);\r\n });\r\n } else {\r\n this.$message.error(this.lang.fcSNValidTip);\r\n }\r\n },\r\n /** 表格切换页码 */\r\n handlePageChange(page) {\r\n this.page.index = page;\r\n this.getTableData();\r\n },\r\n /** 获取表格数据 */\r\n getTableData() {\r\n common.post(\"/LGFile/GetHistory\", {\r\n page_index: this.page.index,\r\n page_size: this.page.size,\r\n }).success((res) => {\r\n this.tableData = res.data.list;\r\n this.page.record = res.data.record;\r\n }).fail((fail) => {\r\n this.$message.error(fail.msg);\r\n }).all(() => {\r\n this.tableLoading = false;\r\n });\r\n },\r\n /** 获取target 树结构 */\r\n getTargets(dataType) {\r\n this.treeData = []; // 先置空树\r\n this.dataOptionload = true;\r\n common.post(\"LGFile/GetTargetsByType\", {type: dataType}).success((res) => {\r\n this.dataOptionload = false;\r\n this.treeData = res.data;\r\n this.$nextTick(() => {\r\n this.selectAll();\r\n this.getTableData();\r\n });\r\n }).fail((fail) => {\r\n this.dataOptionload = false;\r\n this.$message.error(fail.msg);\r\n });\r\n },\r\n /** SN 输入完成失去焦点事件 */\r\n inputFinish() {\r\n if(this.sn) {\r\n this.checkDataTypeBySn(this.sn)\r\n }\r\n },\r\n /** 根据sn判断数据类型以及选项 */\r\n checkDataTypeBySn(serialNo) {\r\n this.dataOptionload = true;\r\n common.post(\"LGFile/GetTargetsBySn\", {sn: serialNo}).success((res) => {\r\n this.dataOptionload = false;\r\n if(res.data.target.length === 0) {\r\n if(this.statementParam.dataType !== 1) {\r\n this.statementParam.dataType = 1;\r\n this.getTargets(1)\r\n }\r\n } else {\r\n this.statementParam.dataType = res.data.datatype;\r\n this.treeData = res.data.target;\r\n }\r\n this.$nextTick(() => {\r\n this.selectAll();\r\n this.getTableData();\r\n });\r\n }).fail((fail) => {\r\n this.dataOptionload = false;\r\n this.$message.error(fail.msg);\r\n });\r\n }\r\n },\r\n created() {\r\n this.getTargets(1);\r\n },\r\n};","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!./FcasData.js?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!./FcasData.js?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./FcasData.vue?vue&type=template&id=2ac07aa3&scoped=true&\"\nimport script from \"./FcasData.js?vue&type=script&lang=js&\"\nexport * from \"./FcasData.js?vue&type=script&lang=js&\"\nimport style0 from \"./FcasData.scss?vue&type=style&index=0&id=2ac07aa3&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"2ac07aa3\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"fcas-data\"},[_c('div',{staticClass:\"fcas-tab\"},[_c('ul',{staticClass:\"tab-c act\"},[_c('li',{staticClass:\"act\"},[_vm._v(_vm._s(_vm.lang.inverter))])])]),_vm._v(\" \"),_c('div',{staticClass:\"date-ctrl his-block bottom-gap sn-content\"},[_c('span',{staticClass:\"tit-label\"},[_vm._v(_vm._s(_vm.lang.fcSN)+\":\")]),_vm._v(\" \"),_c('div',{staticStyle:{\"margin-left\":\"5px\"}},[_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.sn),expression:\"sn\"},{name:\"show\",rawName:\"v-show\",value:(_vm.snList.length === 0),expression:\"snList.length === 0\"}],staticClass:\"search-ipt-ps search-ipt\",attrs:{\"type\":\"text\",\"placeholder\":_vm.lang.fcSNrequired},domProps:{\"value\":(_vm.sn)},on:{\"blur\":_vm.inputFinish,\"input\":function($event){if($event.target.composing){ return; }_vm.sn=$event.target.value}}}),_vm._v(\" \"),_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.snList.length > 0),expression:\"snList.length > 0\"}],staticStyle:{\"display\":\"flex\",\"padding\":\"10px 0\"},attrs:{\"slot\":\"reference\"},slot:\"reference\"},[_c('ul',{staticClass:\"input-content\"},_vm._l((_vm.snList),function(item){return _c('span',{key:item,staticClass:\"el-tag el-tag--info el-tag--small el-tag--light\"},[_c('span',{staticClass:\"el-select__tags-text\"},[_vm._v(_vm._s(item))]),_vm._v(\" \"),_c('i',{staticClass:\"el-tag__close el-icon-close\",on:{\"click\":function($event){return _vm.clearSN(item)}}})])}),0)])]),_vm._v(\" \"),_c('div',{staticClass:\"import-btn\",on:{\"click\":function($event){_vm.visible.import = true}}},[_c('div',{staticClass:\"import-img\"}),_vm._v(\" \"),_c('span',[_vm._v(\" \"+_vm._s(_vm.lang.fcBatchSn)+\" \")])])]),_vm._v(\" \"),_c('div',{staticClass:\"date-ctrl his-block bottom-gap\"},[_c('span',{staticClass:\"tit-label\"},[_vm._v(_vm._s(_vm.lang.fcTime)+\":\")]),_vm._v(\" \"),_c('el-date-picker',{staticClass:\"daterange-picker\",staticStyle:{\"width\":\"435px\"},attrs:{\"clearable\":false,\"popper-class\":\"daterange-popper-picker\",\"type\":\"datetimerange\",\"range-separator\":\"--\",\"start-placeholder\":_vm.lang.startTime,\"end-placeholder\":_vm.lang.endTime,\"format\":_vm.dateFormat},model:{value:(_vm.statementParam.date),callback:function ($$v) {_vm.$set(_vm.statementParam, \"date\", $$v)},expression:\"statementParam.date\"}})],1),_vm._v(\" \"),_c('div',{staticClass:\"date-ctrl his-block bottom-gap\"},[_c('span',{staticClass:\"tit-label\"},[_vm._v(_vm._s(_vm.lang.fcDataType))]),_vm._v(\" \"),_c('el-radio-group',{on:{\"change\":_vm.changeDataType},model:{value:(_vm.statementParam.dataType),callback:function ($$v) {_vm.$set(_vm.statementParam, \"dataType\", $$v)},expression:\"statementParam.dataType\"}},[_c('el-radio',{key:\"'LGES LV GEN2(AU)'\",attrs:{\"label\":1}},[_vm._v(_vm._s(_vm.lang.fcLVGEN2au))]),_vm._v(\" \"),_c('el-radio',{key:\"'LGES LV'\",attrs:{\"label\":2}},[_vm._v(_vm._s(_vm.lang.fcLowV))]),_vm._v(\" \"),_c('el-radio',{key:\"'LGES HV'\",attrs:{\"label\":3}},[_vm._v(_vm._s(_vm.lang.fcHighVBattery))])],1)],1),_vm._v(\" \"),_c('div',{staticClass:\"date-ctrl his-block bottom-gap select-items\",staticStyle:{\"height\":\"initial\",\"position\":\"relative\"}},[_c('span',{staticClass:\"tit-label\"},[_vm._v(_vm._s(_vm.lang.fcItems)+\":\")]),_vm._v(\" \"),_c('el-popover',{attrs:{\"placement\":\"bottom\",\"width\":\"435\",\"trigger\":\"click\"},on:{\"show\":function($event){_vm.isUp = false},\"hide\":function($event){_vm.isUp = true}}},[_c('div',{staticClass:\"fcas-tree-content\",staticStyle:{\"cursor\":\"pointer\"}},[_c('div',{staticStyle:{\"display\":\"flex\",\"margin-bottom\":\"10px\"}},[_c('div',{staticClass:\"fcas-select-all-btn\",on:{\"click\":_vm.selectAll}},[_vm._v(\"\\n \"+_vm._s(_vm.lang.fcSelAll)+\"\\n \")]),_vm._v(\" \"),_c('div',{staticClass:\"fcas-select-clear-btn\",on:{\"click\":_vm.clearAll}},[_vm._v(\"\\n \"+_vm._s(_vm.lang.fcClear)+\"\\n \")])]),_vm._v(\" \"),_c('el-tree',{ref:\"tree\",staticClass:\"fcas-tree\",staticStyle:{\"height\":\"300px\",\"overflow-y\":\"auto\",\"overflow-x\":\"hidden\"},attrs:{\"data\":_vm.treeData,\"props\":_vm.defaultProps,\"default-expand-all\":\"\",\"highlight-current\":\"\",\"node-key\":\"key\",\"show-checkbox\":\"\"},on:{\"check\":_vm.checkClicked,\"check-change\":_vm.handleCheckChange},scopedSlots:_vm._u([{key:\"default\",fn:function(ref){\nvar data = ref.data;\nreturn _c('span',{staticClass:\"custom-tree-node\"},[_c('span',[_vm._v(_vm._s(_vm.lang[data.key]))])])}}])})],1),_vm._v(\" \"),_c('div',{attrs:{\"slot\":\"reference\"},slot:\"reference\"},[_c('div',{staticStyle:{\"margin-left\":\"5px\",\"display\":\"flex\",\"cursor\":\"pointer\",\"position\":\"relative\"}},[(_vm.isSelectedAll)?_c('div',{staticClass:\"selected-all-content\"},[_vm._v(\"\\n \"+_vm._s(_vm.lang.HighSpeedItem_Select_All)+\"\\n \"),_c('i',{staticClass:\"icon-arrow\",class:{'arrow-up':!_vm.isUp}})]):_vm._e(),_vm._v(\" \"),(!_vm.isSelectedAll)?_c('i',{staticClass:\"icon-arrow\",class:{'arrow-up':!_vm.isUp},staticStyle:{\"right\":\"22px\"}}):_vm._e(),_vm._v(\" \"),(!_vm.isSelectedAll)?_c('ul',{staticClass:\"input-content\"},_vm._l((_vm.seletedNodes),function(item){return _c('span',{key:item.id,staticClass:\"el-tag el-tag--info el-tag--small el-tag--light\"},[_c('span',{staticClass:\"el-select__tags-text\"},[_vm._v(_vm._s(_vm.lang[item.key]))]),_vm._v(\" \"),_c('i',{staticClass:\"el-tag__close el-icon-close\",on:{\"click\":function($event){return _vm.clearItem(item)}}})])}),0):_vm._e()])])]),_vm._v(\" \"),_c('goodwe-button',{staticStyle:{\"position\":\"absolute\",\"right\":\"10px\",\"top\":\"10px\"},attrs:{\"disabled\":_vm.tableLoading || _vm.dataOptionload},on:{\"click\":_vm.generateData}},[_vm._v(\"\\n \"+_vm._s(_vm.lang.fcGendata)+\"\\n \")])],1),_vm._v(\" \"),_c('el-dialog',{staticClass:\"fcas-upload-dialog\",attrs:{\"visible\":_vm.visible.import,\"width\":\"500px\",\"append-to-body\":\"\",\"show-close\":false,\"close-on-click-modal\":false,\"close-on-press-escape\":false}},[_c('div',{staticClass:\"import-dialog-title\",staticStyle:{\"text-align\":\"center\",\"color\":\"#fff\",\"margin-left\":\"0\"},attrs:{\"slot\":\"title\"},slot:\"title\"},[_vm._v(\" \"+_vm._s(_vm.lang.fcBatchSn)+\"\\n \")]),_vm._v(\" \"),_c('div',{staticStyle:{\"display\":\"flex\",\"justify-content\":\"center\"},attrs:{\"slot\":\"footer\"},slot:\"footer\"},[_c('goodwe-button',{staticStyle:{\"margin-right\":\"15px\",\"min-width\":\"88px\",\"background\":\"#b8b9b9\"},on:{\"click\":function($event){_vm.visible.import = false}}},[_vm._v(_vm._s(_vm.lang.fcCancel))]),_vm._v(\" \"),_c('goodwe-button',{staticStyle:{\"min-width\":\"88px\"},attrs:{\"type\":\"primary\"},on:{\"click\":_vm.submitImportExcel}},[_vm._v(_vm._s(_vm.lang.fcOK))])],1),_vm._v(\" \"),_c('div',{staticClass:\"add-dialog-wrapper\",staticStyle:{\"padding\":\"0 20px\"}},[_c('div',{staticClass:\"wrapper-label\",staticStyle:{\"display\":\"flex\",\"justify-content\":\"space-between\"}},[_c('div',{staticStyle:{\"color\":\"#373438\"}},[_vm._v(_vm._s(_vm.lang.fcUpload))]),_vm._v(\" \"),_c('div',{staticClass:\"import-dialog-title\",attrs:{\"slot\":\"title\"},slot:\"title\"},[_c('a',{staticStyle:{\"position\":\"initial\",\"color\":\"#8c8c8c\",\"font-size\":\"14px\"},attrs:{\"href\":\"/Template/SNTemplate.xls\"}},[_vm._v(_vm._s(_vm.lang.fcTemplate))])])]),_vm._v(\" \"),_c('gdw-attachment',{attrs:{\"clear-number\":_vm.importClearNumber,\"accept\":\".xls,.xlsx\",\"maxSize\":Infinity,\"placeholder\":_vm.lang.fcFileupload},on:{\"getResult\":_vm.getExcelData},model:{value:(_vm.file),callback:function ($$v) {_vm.file=$$v},expression:\"file\"}})],1)]),_vm._v(\" \"),_c('div',{directives:[{name:\"loading\",rawName:\"v-loading\",value:(_vm.tableLoading),expression:\"tableLoading\"}],staticStyle:{\"padding\":\"10px\",\"border-radius\":\"10px\",\"background-color\":\"#ffffff\"},attrs:{\"id\":\"pw_list\"}},[_c('div',{staticClass:\"table-title\"},[_c('span',[_vm._v(_vm._s(_vm.lang.fcRec))]),_vm._v(\" \"),_c('span',[_vm._v(_vm._s(_vm.lang.fc7DTip))])]),_vm._v(\" \"),_c('el-table',{staticClass:\"site_tb\",staticStyle:{\"z-index\":\"0\"},attrs:{\"data\":_vm.tableData,\"stripe\":\"\"}},[_c('el-table-column',{attrs:{\"label\":_vm.lang.fcNo,\"type\":\"index\",\"width\":\"80\"}}),_vm._v(\" \"),_c('el-table-column',{attrs:{\"label\":_vm.lang.fctitTime},scopedSlots:_vm._u([{key:\"default\",fn:function(scope){return [_c('span',[_vm._v(_vm._s(_vm._f(\"formatTime\")(scope.row.time)))])]}}])}),_vm._v(\" \"),_c('el-table-column',{attrs:{\"label\":_vm.lang.status},scopedSlots:_vm._u([{key:\"default\",fn:function(scope){return [_c('span',[_vm._v(_vm._s(scope.row.status))])]}}])}),_vm._v(\" \"),_c('el-table-column',{attrs:{\"label\":_vm.lang.fcExTIme},scopedSlots:_vm._u([{key:\"default\",fn:function(scope){return [_c('span',[_vm._v(_vm._s(_vm._f(\"formatDay\")(scope.row.expired_time)))])]}}])}),_vm._v(\" \"),_c('el-table-column',{attrs:{\"label\":_vm.lang.fcAttach,\"show-overflow-tooltip\":\"\"},scopedSlots:_vm._u([{key:\"default\",fn:function(scope){return [(scope.row.status == _vm.lang.fcDone && scope.row.file_path)?_c('div',{staticClass:\"file-link\"},[_c('a',{attrs:{\"href\":scope.row.file_path}},[_vm._v(\"\\n \"+_vm._s(_vm._f(\"filterPath\")(scope.row.file_path))+\"\\n \")])]):(scope.row.status == _vm.lang.fcInprogress)?_c('div',{staticClass:\"file-text\"},[_c('span',[_vm._v(_vm._s(_vm._f(\"filterPath\")(scope.row.file_path)))])]):_c('div',{staticClass:\"file-text\"},[_c('span',[_vm._v(\"--\")])])]}}])})],1),_vm._v(\" \"),_c('div',{staticClass:\"paging clearfix\"},[_c('gdw-pager',{staticClass:\"fr\",staticStyle:{\"margin\":\"4px 0 0 20px\"},attrs:{\"current-page\":_vm.page.index,\"page-sizes\":[_vm.page.size],\"layout\":\"prev, pager, next, sizes,total, jumper\",\"total\":_vm.page.record,\"disabled\":_vm.onCarousel},on:{\"current-change\":_vm.handlePageChange}})],1)],1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import FcasData from './src/FcasData.vue';\r\n\r\nFcasData.install = function(Vue) {\r\n Vue.component(FcasData.name, FcasData);\r\n}\r\n\r\nexport default FcasData;","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./GoodweEvCharge.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./GoodweEvCharge.vue?vue&type=script&lang=js&\"","\r\n\r\n\r\n\r\n\r\n","import { render, staticRenderFns } from \"./GoodweEvCharge.vue?vue&type=template&id=673dc356&scoped=true&\"\nimport script from \"./GoodweEvCharge.vue?vue&type=script&lang=js&\"\nexport * from \"./GoodweEvCharge.vue?vue&type=script&lang=js&\"\nimport style0 from \"./GoodweEvCharge.vue?vue&type=style&index=0&id=673dc356&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"673dc356\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"goodwe-ev-charge\"},[(_vm.evChargeData)?_c('div',{staticClass:\"goodwe-ev-charge-left\"},[_c('div',{staticClass:\"charge-list-head\"},[_c('div',[_c('p',[_vm._v(_vm._s(_vm.evChargeData.currentChargePower || \"--\"))]),_vm._v(\" \"),_c('p',[_vm._v(_vm._s(_vm.lang.EVCharger_Stat_CurrentPower + \" (W)\"))])]),_vm._v(\" \"),_c('div',[_c('p',[_vm._v(_vm._s(_vm.evChargeData.chargeCurrent || \"--\"))]),_vm._v(\" \"),_c('p',[_vm._v(_vm._s(_vm.lang.EVCharger_Stat_ChargeCurrent + \" (A)\"))])])]),_vm._v(\" \"),_c('ul',{staticClass:\"charge-list\"},[_c('li',[_c('span',[_vm._v(_vm._s(_vm.lang.EVCharger_Info_MaxCurrent))]),_vm._v(\" \"),_c('span',[_vm._v(_vm._s(_vm.evChargeData.maxChargeCurrent || \"--\")+\" A\")])]),_vm._v(\" \"),_c('li',[_c('span',[_vm._v(_vm._s(_vm.lang.EVCharger_Info_Mode))]),_vm._v(\" \"),_c('span',[_vm._v(_vm._s(_vm.evChargeData.chargingMode\n ? _vm.lang[(\"EVCharger_Info_Mode_Type\" + (_vm.evChargeData.chargingMode))]\n : \"--\"))])]),_vm._v(\" \"),_c('li',[_c('span',[_vm._v(_vm._s(_vm.lang.EVCharger_Info_SWVersion))]),_vm._v(\" \"),_c('span',[_vm._v(_vm._s(_vm.evChargeData.softWareVer || \"--\"))])])])]):_vm._e(),_vm._v(\" \"),_c('div',{attrs:{\"id\":\"container\"}}),_vm._v(\" \"),_c('div',{staticClass:\"error-message\"},[_c('span',[_vm._v(_vm._s(_vm.errMessage))]),_vm._v(\" \"),(_vm.evChargeData&&_vm.evChargeData.evchargerErrorMessage.length>1)?_c('span',{on:{\"click\":_vm.alertMessageList}},[_vm._v(_vm._s(_vm.lang.morePriceSetting)+\" >>\")]):_vm._e()])])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import GoodweEvCharge from './src/GoodweEvCharge.vue';\r\n\r\nGoodweEvCharge.install = Vue => {\r\n Vue.component(GoodweEvCharge.name, GoodweEvCharge);\r\n}\r\n\r\nexport default GoodweEvCharge;","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./GoodweFlowPvBattery.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./GoodweFlowPvBattery.vue?vue&type=script&lang=js&\"","\r\n\r\n","import { render, staticRenderFns } from \"./GoodweFlowPvBattery.vue?vue&type=template&id=310ae706&scoped=true&\"\nimport script from \"./GoodweFlowPvBattery.vue?vue&type=script&lang=js&\"\nexport * from \"./GoodweFlowPvBattery.vue?vue&type=script&lang=js&\"\nimport style0 from \"./GoodweFlowPvBattery.vue?vue&type=style&index=0&id=310ae706&scoped=true&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"310ae706\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"goodwe-flow-pv-battery\"},[(_vm.hasEquipment)?_c('img',{staticClass:\"pv-img\",attrs:{\"src\":require(\"../../../../../Images/power_status_sn_min/pv_active2.png\"),\"alt\":\"\"}}):_vm._e(),_vm._v(\" \"),(!_vm.hasEquipment)?_c('img',{staticClass:\"pv-img\",attrs:{\"src\":require(\"../../../../../Images/power_status_sn_min/pv_gray2.png\"),\"alt\":\"\"}}):_vm._e(),_vm._v(\" \"),_c('div',{staticClass:\"soc\"},[_c('p',{class:{'show': !_vm.flowData.isMoreBettery || _vm.flowData.isParallel},staticStyle:{\"opacity\":\"0\",\"height\":\"20px\"}},[_vm._v(\"\\n \"+_vm._s(_vm.socText)+\"\\n \")]),_vm._v(\" \"),_c('div',{staticClass:\"soc-icon\"},[_c('div',{staticClass:\"soc-icon-bg\",style:({'width':33*_vm.computedPercent+'px'})})])])])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _vm._m(0)}\nvar staticRenderFns = [function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"goodwe-flow-pv-battery\"},[_c('img',{staticClass:\"pv-img\",attrs:{\"src\":require(\"../../../../../Images/power_status_sn_min/pv_active2.png\"),\"alt\":\"\"}})])}]\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./GoodweFlowPvNoBattery.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./GoodweFlowPvNoBattery.vue?vue&type=script&lang=js&\"","\r\n\r\n","import { render, staticRenderFns } from \"./GoodweFlowPvNoBattery.vue?vue&type=template&id=3c328380&scoped=true&\"\nimport script from \"./GoodweFlowPvNoBattery.vue?vue&type=script&lang=js&\"\nexport * from \"./GoodweFlowPvNoBattery.vue?vue&type=script&lang=js&\"\nimport style0 from \"./GoodweFlowPvNoBattery.vue?vue&type=style&index=0&id=3c328380&scoped=true&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"3c328380\",\n null\n \n)\n\nexport default component.exports","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./GoodweBattery.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./GoodweBattery.vue?vue&type=script&lang=js&\"","\n\n\n\n\n","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./GoodwePowerBatteryItem.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./GoodwePowerBatteryItem.vue?vue&type=script&lang=js&\"","\n\n\n\n\n","import { render, staticRenderFns } from \"./GoodweBattery.vue?vue&type=template&id=58e89998&\"\nimport script from \"./GoodweBattery.vue?vue&type=script&lang=js&\"\nexport * from \"./GoodweBattery.vue?vue&type=script&lang=js&\"\nimport style0 from \"./GoodweBattery.vue?vue&type=style&index=0&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"goodwe-battery-new\"},_vm._l((4),function(index){return _c('div',{key:index,staticClass:\"goodwe-battery__item\",class:{ 'goodwe-battery__item--hide': index > _vm.amount}})}),0)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import { render, staticRenderFns } from \"./GoodwePowerBatteryItem.vue?vue&type=template&id=4ddd25ce&scoped=true&\"\nimport script from \"./GoodwePowerBatteryItem.vue?vue&type=script&lang=js&\"\nexport * from \"./GoodwePowerBatteryItem.vue?vue&type=script&lang=js&\"\nimport style0 from \"./GoodwePowerBatteryItem.vue?vue&type=style&index=0&id=4ddd25ce&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"4ddd25ce\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"goodwe-power-battery-item\"},[_c('p',{staticClass:\"inverter-power\",class:{\n 'pv-online': _vm.status == 1,\n 'pv-offline': _vm.status != 1,\n }},[_vm._v(\"\\n \"+_vm._s(_vm.lang.pv)+\" : \"+_vm._s(_vm.pv)+\"\\n \")]),_vm._v(\" \"),_c('div',{staticClass:\"inverter\",class:{\n 'inverter-online': _vm.status == 1,\n 'inverter-offline': _vm.status != 1,\n main: _vm.isMain,\n sec: !_vm.isMain,\n }}),_vm._v(\" \"),_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.showBattery),expression:\"showBattery\"}]},_vm._l((_vm.batteries),function(item,index){return _c('div',{key:index},[_c('div',{staticClass:\"barrery-contain\",class:{\n 'barrery-contain-online': _vm.status == 1,\n 'barrery-contain-offline': _vm.status != 1,\n }},[_c('goodwe-battery',{attrs:{\"status\":item.status,\"soc\":item.soc.replace('%', '')}}),_vm._v(\" \"),_c('div',{staticClass:\"show-soc\",class:item.status !== 0 ? 'showSoc-on' : 'showSoc-off'},[_vm._v(\"\\n \"+_vm._s(item.soc.replace('%', '') + (item.soc.replace('%', '') !== '--' ? '%': ''))+\"\\n \")])],1)])}),0)])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./GoodwePowerFlowTooltip.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./GoodwePowerFlowTooltip.vue?vue&type=script&lang=js&\"","\n\n\n","import { render, staticRenderFns } from \"./GoodwePowerFlowTooltip.vue?vue&type=template&id=7d547553&scoped=true&\"\nimport script from \"./GoodwePowerFlowTooltip.vue?vue&type=script&lang=js&\"\nexport * from \"./GoodwePowerFlowTooltip.vue?vue&type=script&lang=js&\"\nimport style0 from \"./GoodwePowerFlowTooltip.vue?vue&type=style&index=0&id=7d547553&scoped=true&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"7d547553\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"goodwe-power-flow-tooltip\"},[_c('ul',[_c('li',[_c('span',[_vm._v(_vm._s(_vm.lang.SN)+\":\")]),_vm._v(\" \"),_c('span',[_vm._v(_vm._s(_vm.sn))])]),_vm._v(\" \"),_c('li',[_c('span',[_vm._v(_vm._s(_vm.lang.pv)+\":\")]),_vm._v(\" \"),_c('span',[_vm._v(_vm._s(_vm.pv))])]),_vm._v(\" \"),_vm._l((_vm.batterys),function(item,i){return _c('li',{key:i},[_c('span',[_vm._v(_vm._s(_vm.batterys.length > 1 ? (\"SOC\" + (i+1)):'SOC')+\" :\")]),_vm._v(\" \"),_c('span',[_vm._v(_vm._s(item.soc))])])}),_vm._v(\" \"),_c('li',[_c('span',[_vm._v(_vm._s(_vm.lang.status)+\":\")]),_vm._v(\" \"),_c('span',[_vm._v(_vm._s(_vm.statusText[_vm.status]))])])],2)])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./GoodweParallelDetail.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./GoodweParallelDetail.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./GoodweParallelDetail.vue?vue&type=template&id=25d94f16&scoped=true&\"\nimport script from \"./GoodweParallelDetail.vue?vue&type=script&lang=js&\"\nexport * from \"./GoodweParallelDetail.vue?vue&type=script&lang=js&\"\nimport style0 from \"./GoodweParallelDetail.scss?vue&type=style&index=0&id=25d94f16&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"25d94f16\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"goodwe-parallel-detail\"},[(_vm.parallelData['parallelInventers'] && _vm.parallelData['parallelInventers'].length > 1 && !_vm.isApp)?_c('div',{staticClass:\"full-screen\",on:{\"click\":_vm.showBigDialog}},[_c('img',{attrs:{\"src\":\"/Images/power_status_sn_min/pall_full.png\",\"alt\":\"\"}})]):_vm._e(),_vm._v(\" \"),_c('el-scrollbar',{staticStyle:{\"height\":\"376px\",\"width\":\"100%\"},attrs:{\"wrap-class\":'el-gw-scroll'}},_vm._l((_vm.parallelData['parallelInventers']),function(item){return _c('div',{key:item.parallel_code,staticClass:\"parallel-item\"},[_c('div',{staticClass:\"item-describe\"},[_c('p',[_vm._v(_vm._s(item.parallel_code))]),_vm._v(\" \"),_c('p',[_vm._v(_vm._s(_vm.lang.pv)+\": \"+_vm._s(item.pv))]),_vm._v(\" \"),(item.soc)?_c('p',[_vm._v(\"SOC: \"+_vm._s(item.soc))]):_vm._e()]),_vm._v(\" \"),_c('div',{attrs:{\"id\":(\"Gragh-\" + (item.parallel_code))}})])}),0),_vm._v(\" \"),(!_vm.isApp)?_c('div',[_c('gdw-dialog',{attrs:{\"title\":_vm.lang.Parallel_System_Details,\"width\":1312,\"show\":_vm.isShow}},[_c('img',{staticClass:\"close-img\",attrs:{\"src\":\"/Images/bigscreen/dialog_close.png\"},on:{\"click\":function($event){_vm.isShow = false}}}),_vm._v(\" \"),_c('div',{staticStyle:{\"height\":\"752px\",\"background\":\"#25313B\",\"border-bottom-right-radius\":\"9px\",\"padding\":\"20px 16px\",\"border-bottom-left-radius\":\"9px\",\"border-top\":\"1px solid #FFFFFF33\"}},[_c('div',{staticClass:\"total_pv_tip\"},[_vm._v(_vm._s(_vm.lang.totalRecords)+\" \"+_vm._s(_vm.lang.PV)+\": \"+_vm._s(_vm.parallelData.parallelTotal['pv']))]),_vm._v(\" \"),_c('el-scrollbar',{staticStyle:{\"height\":\"715px\",\"width\":\"100%\"},attrs:{\"wrap-class\":'el-gw-scroll'}},_vm._l((_vm.parallelData['parallelInventers']),function(item){return _c('div',{key:item.parallel_code,staticClass:\"parallel-item\"},[_c('div',{staticClass:\"item-describe\"},[_c('p',[_vm._v(_vm._s(item.parallel_code))]),_vm._v(\" \"),_c('p',[_vm._v(_vm._s(_vm.lang.pv)+\": \"+_vm._s(item.pv))]),_vm._v(\" \"),(item.soc)?_c('p',[_vm._v(\"SOC: \"+_vm._s(item.soc))]):_vm._e()]),_vm._v(\" \"),_c('div',{attrs:{\"id\":(\"DialogGragh-\" + (item.parallel_code))}})])}),0)],1),_vm._v(\" \"),_c('gdw-dialog-button-group',{staticStyle:{\"display\":\"none\"},attrs:{\"slot\":\"button\",\"line\":\"true\"},slot:\"button\"},[_c('button',[_vm._v(_vm._s(_vm.lang.oCancel))])])],1)],1):_vm._e()],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import GoodweParallelDetail from './src/GoodweParallelDetail.vue';\n\nGoodweParallelDetail.install = Vue => {\n Vue.component(GoodweParallelDetail.name, GoodweParallelDetail);\n}\n\nexport default GoodweParallelDetail;","import mod from \"-!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./GoodweBattery.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./GoodweBattery.vue?vue&type=script&lang=js&\"","\n\n\n\n\n","import { render, staticRenderFns } from \"./GoodweBattery.vue?vue&type=template&id=51711bdc&\"\nimport script from \"./GoodweBattery.vue?vue&type=script&lang=js&\"\nexport * from \"./GoodweBattery.vue?vue&type=script&lang=js&\"\nimport style0 from \"./GoodweBattery.vue?vue&type=style&index=0&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"goodwe-battery-new\"},_vm._l((4),function(index){return _c('div',{key:index,staticClass:\"goodwe-battery__item\",class:{ 'goodwe-battery__item--hide': index > _vm.amount}})}),0)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./GoodweMixedItem.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./GoodweMixedItem.vue?vue&type=script&lang=js&\"","\r\n\r\n","import { render, staticRenderFns } from \"./GoodweMixedItem.vue?vue&type=template&id=48ac7a4e&scoped=true&\"\nimport script from \"./GoodweMixedItem.vue?vue&type=script&lang=js&\"\nexport * from \"./GoodweMixedItem.vue?vue&type=script&lang=js&\"\nimport style0 from \"./GoodweMixedItem.vue?vue&type=style&index=0&id=48ac7a4e&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"48ac7a4e\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[(!_vm.aloneMachine)?_c('div',{staticClass:\"mixed-item\"},[_c('div',{staticClass:\"mixed-left\"}),_vm._v(\" \"),_c('div',{staticClass:\"mixed-right\"},[(_vm.storageDevice.length > 0)?_c('div',{staticClass:\"machine-box\",staticStyle:{\"margin-bottom\":\"38px\"}},_vm._l((_vm.storageDevice),function(item){return _c('div',{key:item.inventerSN,staticClass:\"machine-graph\"},[_c('p',{staticClass:\"inverter-power\",class:{ 'pv-online': item.status == 1,'pv-offline': item.status != 1}},[_vm._v(\"\\r\\n \"+_vm._s(_vm.lang.pv)+\" : \"+_vm._s(item.pv)+\"\\r\\n \")]),_vm._v(\" \"),_c('el-tooltip',{staticClass:\"item\",attrs:{\"effect\":\"light\",\"placement\":\"right\"}},[_c('div',{staticClass:\"inverter sec\",class:{ 'inverter-online': item.status == 1, 'inverter-offline': item.status != 1}}),_vm._v(\" \"),_c('div',{attrs:{\"slot\":\"content\"},slot:\"content\"},[_c('ul',[_c('li',[_c('span',[_vm._v(_vm._s(_vm.lang.SN)+\":\")]),_vm._v(\" \"),_c('span',[_vm._v(_vm._s(item.inventerSN))])]),_vm._v(\" \"),_c('li',[_c('span',[_vm._v(_vm._s(_vm.lang.pv)+\":\")]),_vm._v(\" \"),_c('span',[_vm._v(_vm._s(item.pv))])]),_vm._v(\" \"),_vm._l((item.batterys),function(battery,i){return _c('li',{key:i},[_c('span',[_vm._v(_vm._s(item.batterys.length > 1 ? (\"SOC\" + (i+1)):'SOC')+\" :\")]),_vm._v(\" \"),_c('span',[_vm._v(_vm._s(battery.soc))])])}),_vm._v(\" \"),_c('li',[_c('span',[_vm._v(_vm._s(_vm.lang.status)+\":\")]),_vm._v(\" \"),_c('span',[_vm._v(_vm._s(_vm.statusText[item.status]))])])],2)])]),_vm._v(\" \"),(item.is_store && item.batterys && item.batterys.length > 0)?_c('div',_vm._l((item.batterys),function(battery,index){return _c('div',{key:index},[_c('div',{staticClass:\"barrery-contain\",class:{\r\n 'barrery-contain-online': [1,2,3].includes(battery.status),\r\n 'barrery-contain-offline': ![1,2,3].includes(battery.status),\r\n }},[_c('GoodweBattery',{attrs:{\"status\":battery.status,\"soc\":battery.soc.replace('%', '')}}),_vm._v(\" \"),_c('div',{staticClass:\"show-soc\",class:battery.status !== 0 ? 'showSoc-on' : 'showSoc-off'},[_vm._v(\"\\r\\n \"+_vm._s(battery.soc.replace('%', '') + (battery.soc.replace('%', '') !== '--' ? '%': ''))+\"\\r\\n \")])],1)])}),0):_vm._e()],1)}),0):_vm._e(),_vm._v(\" \"),(_vm.gridDevice.length > 0)?_c('div',{staticClass:\"machine-box\"},_vm._l((_vm.gridDevice),function(item){return _c('div',{key:item.inventerSN,staticClass:\"machine-graph\"},[_c('p',{staticClass:\"inverter-power\",class:{ 'pv-online': item.status == 1,'pv-offline': item.status != 1}},[_vm._v(\"\\r\\n \"+_vm._s(_vm.lang.pv)+\" : \"+_vm._s(item.pv)+\"\\r\\n \")]),_vm._v(\" \"),_c('el-tooltip',{staticClass:\"item\",attrs:{\"effect\":\"light\",\"placement\":\"right\"}},[_c('div',{staticClass:\"inverter sec\",class:{ 'inverter-online': item.status == 1, 'inverter-offline': item.status != 1}}),_vm._v(\" \"),_c('div',{attrs:{\"slot\":\"content\"},slot:\"content\"},[_c('ul',[_c('li',[_c('span',[_vm._v(_vm._s(_vm.lang.SN)+\":\")]),_vm._v(\" \"),_c('span',[_vm._v(_vm._s(item.inventerSN))])]),_vm._v(\" \"),_c('li',[_c('span',[_vm._v(_vm._s(_vm.lang.pv)+\":\")]),_vm._v(\" \"),_c('span',[_vm._v(_vm._s(item.pv))])]),_vm._v(\" \"),_c('li',[_c('span',[_vm._v(_vm._s(_vm.lang.status)+\":\")]),_vm._v(\" \"),_c('span',[_vm._v(_vm._s(_vm.statusText[item.status]))])])])])])],1)}),0):_vm._e()])]):_vm._e(),_vm._v(\" \"),(_vm.aloneMachine)?_c('div',{staticClass:\"mixed-item alone-item\"},_vm._l((_vm.deviceList),function(item){return _c('div',{key:item.inventerSN,staticClass:\"machine-graph\"},[_c('p',{staticClass:\"inverter-power\",class:{ 'pv-online': item.status == 1,'pv-offline': item.status != 1}},[_vm._v(\"\\r\\n \"+_vm._s(_vm.lang.pv)+\" : \"+_vm._s(item.pv)+\"\\r\\n \")]),_vm._v(\" \"),_c('el-tooltip',{staticClass:\"item\",attrs:{\"effect\":\"light\",\"placement\":\"right\"}},[_c('div',{staticClass:\"inverter sec\",class:{ 'inverter-online': item.status == 1, 'inverter-offline': item.status != 1}}),_vm._v(\" \"),_c('div',{attrs:{\"slot\":\"content\"},slot:\"content\"},[_c('ul',[_c('li',[_c('span',[_vm._v(_vm._s(_vm.lang.SN)+\":\")]),_vm._v(\" \"),_c('span',[_vm._v(_vm._s(item.inventerSN))])]),_vm._v(\" \"),_c('li',[_c('span',[_vm._v(_vm._s(_vm.lang.pv)+\":\")]),_vm._v(\" \"),_c('span',[_vm._v(_vm._s(item.pv))])]),_vm._v(\" \"),_vm._l((item.batterys),function(battery,i){return _c('li',{key:i},[_c('span',[_vm._v(_vm._s(item.batterys.length > 1 ? (\"SOC\" + (i+1)):'SOC')+\" :\")]),_vm._v(\" \"),_c('span',[_vm._v(_vm._s(battery.soc))])])}),_vm._v(\" \"),_c('li',[_c('span',[_vm._v(_vm._s(_vm.lang.status)+\":\")]),_vm._v(\" \"),_c('span',[_vm._v(_vm._s(_vm.statusText[item.status]))])])],2)])]),_vm._v(\" \"),(item.is_store && item.batterys && item.batterys.length > 0)?_c('div',_vm._l((item.batterys),function(battery,index){return _c('div',{key:index},[_c('div',{staticClass:\"barrery-contain\",class:{\r\n 'barrery-contain-online': [1,2,3].includes(battery.status),\r\n 'barrery-contain-offline': ![1,2,3].includes(battery.status),\r\n }},[_c('GoodweBattery',{attrs:{\"status\":battery.status,\"soc\":battery.soc.replace('%', '')}}),_vm._v(\" \"),_c('div',{staticClass:\"show-soc\",class:battery.status !== 0 ? 'showSoc-on' : 'showSoc-off'},[_vm._v(\"\\r\\n \"+_vm._s(battery.soc.replace('%', '') + (battery.soc.replace('%', '') !== '--' ? '%': ''))+\"\\r\\n \")])],1)])}),0):_vm._e()],1)}),0):_vm._e()])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./GoodweMixedParallel.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./GoodweMixedParallel.vue?vue&type=script&lang=js&\"","\n\n\n","import { render, staticRenderFns } from \"./GoodweMixedParallel.vue?vue&type=template&id=8c3a1bd6&scoped=true&\"\nimport script from \"./GoodweMixedParallel.vue?vue&type=script&lang=js&\"\nexport * from \"./GoodweMixedParallel.vue?vue&type=script&lang=js&\"\nimport style0 from \"./GoodweMixedParallel.scss?vue&type=style&index=0&id=8c3a1bd6&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"8c3a1bd6\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"goodwe-parallel-detail\"},[(_vm.parallelData['mixedParallelInventers'] && _vm.parallelData['mixedParallelInventers'].length > 1)?_c('div',{staticClass:\"full-screen\",on:{\"click\":_vm.showBigDialog}},[_c('img',{attrs:{\"src\":\"/Images/power_status_sn_min/pall_full.png\",\"alt\":\"\"}})]):_vm._e(),_vm._v(\" \"),_c('el-scrollbar',{staticStyle:{\"height\":\"376px\",\"width\":\"100%\"},attrs:{\"wrap-class\":'el-gw-scroll'}},_vm._l((_vm.parallelData['mixedParallelInventers']),function(item){return _c('div',{key:item.sec_sn,staticClass:\"parallel-item\"},[_c('div',{staticClass:\"item-describe\"},[(item.sec_sn)?_c('p',[_vm._v(_vm._s(item.sec_sn))]):_vm._e(),_vm._v(\" \"),_c('p',[_vm._v(_vm._s(_vm.lang.pv)+\": \"+_vm._s(item.pv_total)+\"\\n (\\n \"+_vm._s(_vm.lang.Parallel_PV_Grid_inverter)+\": \"+_vm._s(item.pv_grid)+\",\\n \"+_vm._s(_vm.lang.Parallel_PV_Storage_inverter)+\": \"+_vm._s(item.pv_store)+\"\\n )\\n \")]),_vm._v(\" \"),(item.soc)?_c('p',[_vm._v(\"SOC: \"+_vm._s(item.soc))]):_vm._e()]),_vm._v(\" \"),(item.devices && item.devices.length > 0)?_c('div',{staticClass:\"item-main\"},[_c('GoodweMixedItem',{attrs:{\"deviceList\":item.devices,\"aloneMachine\":!item.sec_sn}})],1):_vm._e()])}),0),_vm._v(\" \"),_c('gdw-dialog',{attrs:{\"title\":_vm.lang.Parallel_System_Details,\"width\":1312,\"show\":_vm.isShow}},[_c('img',{staticClass:\"close-img\",attrs:{\"src\":\"/Images/bigscreen/dialog_close.png\"},on:{\"click\":function($event){_vm.isShow = false}}}),_vm._v(\" \"),_c('div',{staticStyle:{\"height\":\"752px\",\"background\":\"#25313B\",\"border-bottom-right-radius\":\"9px\",\"padding\":\"20px 16px\",\"border-bottom-left-radius\":\"9px\",\"border-top\":\"1px solid #FFFFFF33\"}},[_c('div',{staticClass:\"total_pv_tip\"},[_vm._v(_vm._s(_vm.lang.totalRecords)+\" \"+_vm._s(_vm.lang.PV)+\": \"+_vm._s(_vm.parallelData.mixedParallelTotal.pv_total)+\"\\n (\"+_vm._s(_vm.lang.Parallel_PV_Grid_inverter)+\": \"+_vm._s(_vm.parallelData.mixedParallelTotal.pv_grid)+\",\\n \"+_vm._s(_vm.lang.Parallel_PV_Storage_inverter)+\": \"+_vm._s(_vm.parallelData.mixedParallelTotal.pv_store)+\")\\n \")]),_vm._v(\" \"),_c('el-scrollbar',{staticStyle:{\"height\":\"715px\",\"width\":\"100%\"},attrs:{\"wrap-class\":'el-gw-scroll'}},_vm._l((_vm.parallelData['mixedParallelInventers']),function(item){return _c('div',{key:item.sec_sn,staticClass:\"parallel-item\"},[_c('div',{staticClass:\"item-describe\"},[_c('p',[_vm._v(_vm._s(item.sec_sn))]),_vm._v(\" \"),_c('p',[_vm._v(_vm._s(_vm.lang.pv)+\": \"+_vm._s(item.pv_total)+\"\\n (\\n \"+_vm._s(_vm.lang.Parallel_PV_Grid_inverter)+\": \"+_vm._s(item.pv_grid)+\",\\n \"+_vm._s(_vm.lang.Parallel_PV_Storage_inverter)+\": \"+_vm._s(item.pv_store)+\"\\n )\\n \")]),_vm._v(\" \"),(item.soc)?_c('p',[_vm._v(\"SOC: \"+_vm._s(item.soc))]):_vm._e()]),_vm._v(\" \"),(item.devices && item.devices.length > 0)?_c('div',{staticClass:\"item-main\"},[_c('GoodweMixedItem',{attrs:{\"deviceList\":item.devices,\"aloneMachine\":!item.sec_sn}})],1):_vm._e()])}),0)],1),_vm._v(\" \"),_c('gdw-dialog-button-group',{staticStyle:{\"display\":\"none\"},attrs:{\"slot\":\"button\",\"line\":\"true\"},slot:\"button\"},[_c('button',[_vm._v(_vm._s(_vm.lang.oCancel))])])],1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./GoodwePowerFlow.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./GoodwePowerFlow.vue?vue&type=script&lang=js&\"","\r\n\r\n\r\n\r\n","import { render, staticRenderFns } from \"./GoodwePowerFlow.vue?vue&type=template&id=033f65b6&scoped=true&\"\nimport script from \"./GoodwePowerFlow.vue?vue&type=script&lang=js&\"\nexport * from \"./GoodwePowerFlow.vue?vue&type=script&lang=js&\"\nimport style0 from \"./GoodwePowerFlow.vue?vue&type=style&index=0&id=033f65b6&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"033f65b6\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"goodwe-power-flow\"},[(_vm.showDetail && !_vm.isApp)?_c('a',{staticClass:\"back-btn fl\",attrs:{\"href\":\"javascript:;\"},on:{\"click\":_vm.back}},[_vm._v(\"\\n \"+_vm._s(_vm.lang.pssmBack)+\"\\n \")]):_vm._e(),_vm._v(\" \"),(_vm.parallelData)?_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.showDetail),expression:\"showDetail\"}],staticClass:\"fr chart-title\"},[(!_vm.parallelData.isMixed)?_c('span',{staticStyle:{\"margin-left\":\"20px\"}},[_vm._v(\"\\n \"+_vm._s(_vm.lang.totalRecords)+\" \"+_vm._s(_vm.lang.PV)+\": \"+_vm._s(_vm.parallelData.parallelTotal.pv)+\"\\n \")]):_vm._e(),_vm._v(\" \"),(_vm.parallelData.isMixed)?_c('span',{staticStyle:{\"margin-left\":\"20px\"}},[_vm._v(\"\\n \"+_vm._s(_vm.lang.totalRecords)+\" \"+_vm._s(_vm.lang.PV)+\": \"+_vm._s(_vm.parallelData.mixedParallelTotal.pv_total)+\"\\n (\"+_vm._s(_vm.lang.Parallel_PV_Grid_inverter)+\": \"+_vm._s(_vm.parallelData.mixedParallelTotal.pv_grid)+\",\\n \"+_vm._s(_vm.lang.Parallel_PV_Storage_inverter)+\": \"+_vm._s(_vm.parallelData.mixedParallelTotal.pv_store)+\")\\n \")]):_vm._e()]):_vm._e(),_vm._v(\" \"),_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.flowData.is3rdEms),expression:\"flowData.is3rdEms\"}],staticClass:\"threeRd-ems\",style:({right: _vm.isBigScreen ? '126px' : '303px'})},[_c('el-tooltip',{staticClass:\"item\",attrs:{\"effect\":\"light\",\"placement\":\"top\"}},[_c('div',{attrs:{\"slot\":\"content\"},slot:\"content\"},[_vm._v(_vm._s(_vm.lang.plant_thrid_ems_control_tip))]),_vm._v(\" \"),_c('img',{attrs:{\"src\":\"/Images/icon/3rd_EMS.png\",\"alt\":\"\"}})])],1),_vm._v(\" \"),(!_vm.showDetail)?_c('div',{attrs:{\"id\":\"goodwePowerFlow\"}}):_vm._e(),_vm._v(\" \"),(_vm.showDetail && !_vm.parallelData.isMixed)?_c('GoodweParallelDetail',{ref:\"powerFlowDetail\",attrs:{\"is-app\":_vm.isApp,\"parallel-data\":_vm.parallelData}}):_vm._e(),_vm._v(\" \"),(_vm.showDetail && _vm.parallelData.isMixed)?_c('GoodweMixedParallel',{attrs:{\"parallel-data\":_vm.parallelData}}):_vm._e()],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import GoodwePowerFlow from './src/GoodwePowerFlow.vue';\r\n\r\nGoodwePowerFlow.install = Vue => {\r\n Vue.component(GoodwePowerFlow.name, GoodwePowerFlow);\r\n}\r\n\r\nexport default GoodwePowerFlow;","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./GoodweAppHead.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./GoodweAppHead.vue?vue&type=script&lang=js&\"","\r\n\r\n","import { render, staticRenderFns } from \"./GoodweAppHead.vue?vue&type=template&id=c1740c2a&scoped=true&\"\nimport script from \"./GoodweAppHead.vue?vue&type=script&lang=js&\"\nexport * from \"./GoodweAppHead.vue?vue&type=script&lang=js&\"\nimport style0 from \"./GoodweAppHead.vue?vue&type=style&index=0&id=c1740c2a&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"c1740c2a\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"goodwe-app-head\"},[_c('div',{staticClass:\"head\",style:({color:_vm.navStyle.color,background:_vm.navStyle.bgColor,height:_vm.navStyle.height,top:_vm.navStyle.offset})},[_c('div',{staticStyle:{\"position\":\"absolute\",\"left\":\"0.5rem\",\"width\":\"3rem\"},on:{\"click\":_vm.back}},[(!_vm.returnBtn)?_c('img',{staticClass:\"icon-img\",attrs:{\"src\":_vm.navStyle.returnArrow}}):_vm._e()]),_vm._v(\" \"),_c('div',{staticClass:\"head-title\"},[_vm._v(_vm._s(_vm.title))]),_vm._v(\" \"),_c('div',{staticStyle:{\"position\":\"absolute\",\"right\":\"1rem\"}})]),_vm._v(\" \"),_c('div',{style:(_vm.intervalBoxStyle)})])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import GoodweAppHead from './src/GoodweAppHead.vue';\r\n\r\nGoodweAppHead.install = Vue => {\r\n Vue.component(GoodweAppHead.name, GoodweAppHead);\r\n}\r\n\r\nexport default GoodweAppHead;","\r\n\r\n\r\n\r\n\r\n","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./DrawerSelect.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./DrawerSelect.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./DrawerSelect.vue?vue&type=template&id=12ff08c0&\"\nimport script from \"./DrawerSelect.vue?vue&type=script&lang=js&\"\nexport * from \"./DrawerSelect.vue?vue&type=script&lang=js&\"\nimport style0 from \"./DrawerSelect.vue?vue&type=style&index=0&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"drawer-select\"},[_c('a',{on:{\"click\":_vm.show}},[_vm._t(\"default\")],2),_vm._v(\" \"),_c('el-drawer',{attrs:{\"title\":_vm.title,\"visible\":_vm.visible,\"direction\":\"btt\",\"destroy-on-close\":true,\"show-close\":false},on:{\"update:visible\":function($event){_vm.visible=$event}}},[_c('ul',_vm._l((_vm.checkList),function(item){return _c('li',{key:item.value,staticClass:\"select-ul-item\",class:{ clicked: _vm.value == item.value },on:{\"click\":function($event){return _vm.select(item)}}},[_vm._v(\"\\n \"+_vm._s(item.label)+\"\\n \")])}),0)])],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import DrawerSelect from './src/DrawerSelect.vue';\r\n\r\nDrawerSelect.install = Vue => {\r\n Vue.component(DrawerSelect.name, DrawerSelect);\r\n}\r\n\r\nexport default DrawerSelect;","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AddThirdParty.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AddThirdParty.vue?vue&type=script&lang=js&\"","\r\n\r\n","import { render, staticRenderFns } from \"./AddThirdParty.vue?vue&type=template&id=7f103cf7&\"\nimport script from \"./AddThirdParty.vue?vue&type=script&lang=js&\"\nexport * from \"./AddThirdParty.vue?vue&type=script&lang=js&\"\nimport style0 from \"./AddThirdParty.vue?vue&type=style&index=0&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[_c('goodwe-app-head',{attrs:{\"title\":\"Add Third Party\"},on:{\"back\":_vm.back}}),_vm._v(\" \"),_c('div',{staticClass:\"con\"},[_c('div',{staticClass:\"select-input\"},[_c('span',{staticClass:\"select-input-label\"},[_vm._v(_vm._s(_vm.lang.Add3rdpartt_Label_3rdParty||\"Add3rdpartt_Label_3rdParty\"))]),_vm._v(\" \"),_c('drawer-select',{attrs:{\"checkList\":_vm.checkList,\"title\":'Third party list'},on:{\"getSelectItem\":_vm.getSelectItem},model:{value:(_vm.value),callback:function ($$v) {_vm.value=$$v},expression:\"value\"}},[(!_vm.seletedThridParty)?_c('span',{staticClass:\"select-input-value\",class:{'no-value':!_vm.seletedThridParty}},[_vm._v(_vm._s(_vm.lang.PlantEdit_Title_3rdParty||\"PlantEdit_Title_3rdParty\"))]):_vm._e(),_vm._v(\" \"),(_vm.seletedThridParty)?_c('span',{staticClass:\"select-input-value\"},[_vm._v(_vm._s(_vm.seletedThridParty))]):_vm._e()]),_vm._v(\" \"),_c('iframe',{staticClass:\"protection-statement\",staticStyle:{\"display\":\"none\"},attrs:{\"id\":\"termsFrame\",\"src\":\"/AgreementHtml/solaranalyticsThirdParty.htm\",\"frameborder\":\"0\"}})],1)])],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import AddThirdParty from './src/AddThirdParty.vue';\r\n\r\nAddThirdParty.install = function(Vue) {\r\n Vue.component(AddThirdParty.name, AddThirdParty);\r\n}\r\n\r\nexport default AddThirdParty;","\r\n\r\n\r\n","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./MobilePage.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./MobilePage.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./MobilePage.vue?vue&type=template&id=8214e1b2&\"\nimport script from \"./MobilePage.vue?vue&type=script&lang=js&\"\nexport * from \"./MobilePage.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[_c(_vm.currentComponent,{tag:\"component\"})],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import MobilePage from './src/MobilePage.vue';\r\n\r\nMobilePage.install = function(Vue) {\r\n Vue.component(MobilePage.name, MobilePage);\r\n}\r\n\r\nexport default MobilePage;","//获取旋转后的新坐标点\r\nfunction getNodePoint(node){\r\n var position = node.position();\r\n var size = node.size();\r\n var xcenter = position.x + size.width / 2;\r\n var ycenter = position.y + size.height / 2;\r\n var q = (node.getAngle() * Math.PI) / 180;\r\n var originPoint = [\r\n {\r\n x: position.x,\r\n y: position.y,\r\n },\r\n {\r\n x: position.x + size.width,\r\n y: position.y,\r\n },\r\n {\r\n x: position.x + size.width,\r\n y: position.y + size.height,\r\n },\r\n {\r\n x: position.x,\r\n y: position.y + size.height,\r\n },\r\n ];\r\n var transFormPoint = [];\r\n originPoint.forEach((item) => {\r\n transFormPoint.push({\r\n x:\r\n Math.cos(q) * (item.x - xcenter) -\r\n Math.sin(q) * (item.y - ycenter) +\r\n xcenter,\r\n y:\r\n Math.sin(q) * (item.x - xcenter) +\r\n Math.cos(q) * (item.y - ycenter) +\r\n ycenter,\r\n });\r\n });\r\n return transFormPoint;\r\n}\r\n/**\r\n * \r\n * @param {*} node selectedNode选中节点\r\n * @param {*} graph 图例\r\n * @returns \r\n */\r\nexport function getIsCollision (node, graph) {\r\n var selectedNode = node;\r\n var isCollision = false; //是否碰撞\r\n //记录改变isCollision的次数如果大于1就不改变了\r\n var changeNum = 0;\r\n //碰到的元素\r\n var arr = [] \r\n //获取其他元素\r\n var otherNodes = graph.getNodes().filter((item) => {\r\n return item.id !== node.id;\r\n });\r\n //选中的元素跟其他元素比较\r\n otherNodes.forEach((item) => {\r\n //选中节点的四个点的坐标\r\n var selectNodePoint = getNodePoint(selectedNode);\r\n selectNodePoint.forEach((_item) => {\r\n var x = _item.x;\r\n var y = _item.y;\r\n var pBox = {\r\n x: item.position().x,\r\n y: item.position().y,\r\n width: item.size().width,\r\n height: item.size().height,\r\n rot: item.getAngle(),\r\n };\r\n var cp = {\r\n x: pBox.x + pBox.width / 2,\r\n y: pBox.y + pBox.height / 2,\r\n };\r\n var a = (-pBox.rot * Math.PI) / 180;\r\n var x0 = (x - cp.x) * Math.cos(a) - (y - cp.y) * Math.sin(a) + cp.x; \r\n var y0 = (x - cp.x) * Math.sin(a) + (y - cp.y) * Math.cos(a) + cp.y;\r\n var isOverlapX = pBox.x + pBox.width < selectNodePoint[1].x && pBox.x > selectNodePoint[0].x\r\n var isOverlapY = pBox.y < selectNodePoint[0].y && pBox.y + pBox.height > selectNodePoint[2].y\r\n if (\r\n x0 >= pBox.x &&\r\n x0 <= pBox.x + pBox.width &&\r\n y0 >= pBox.y &&\r\n y0 <= pBox.y + pBox.height\r\n ||\r\n isOverlapX && isOverlapY\r\n ) {\r\n //上面未判断2个div交叉的情况,这里判断一下\r\n \r\n if(changeNum == 0){\r\n isCollision = true;\r\n }\r\n //不知道为什么会调用两次getIsCollision,去重\r\n arr.push(item)\r\n const map = new Map();\r\n arr = arr.filter((arr) => !map.has(arr.id) && map.set(arr.id, 1))\r\n }\r\n });\r\n });\r\n //其他元素跟选中的元素比较\r\n otherNodes.forEach((item) => {\r\n var selectNodePoint = getNodePoint(item);\r\n selectNodePoint.forEach((_item) => {\r\n var x = _item.x;\r\n var y = _item.y;\r\n var pBox = {\r\n x: selectedNode.position().x,\r\n y: selectedNode.position().y,\r\n width: selectedNode.size().width,\r\n height: selectedNode.size().height,\r\n rot: selectedNode.getAngle(),\r\n };\r\n var cp = {\r\n x: pBox.x + pBox.width / 2,\r\n y: pBox.y + pBox.height / 2,\r\n };\r\n var a = (-pBox.rot * Math.PI) / 180;\r\n var x0 = (x - cp.x) * Math.cos(a) - (y - cp.y) * Math.sin(a) + cp.x;\r\n var y0 = (x - cp.x) * Math.sin(a) + (y - cp.y) * Math.cos(a) + cp.y;\r\n if (\r\n x0 >= pBox.x &&\r\n x0 <= pBox.x + pBox.width &&\r\n y0 >= pBox.y &&\r\n y0 <= pBox.y + pBox.height\r\n ) {\r\n isCollision = true;\r\n return;\r\n }\r\n });\r\n });\r\n //返回是否碰撞,碰撞的node\r\n return {\r\n isCollision:isCollision,\r\n collisions:arr\r\n };\r\n}","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"pv-component\"},[_c('div',{ref:\"rotateDom\"},[_c('div',{staticClass:\"sn-name\",style:({ transform: 'rotateZ(' + _vm.rotateDeg + 'deg)' }),attrs:{\"attr\":_vm.nodeDeg}},[_vm._v(\"\\n \"+_vm._s(_vm.sn)+\"\\n \")]),_vm._v(\" \"),_c('p',{staticClass:\"pv-name\",class:{ rotateZ: _vm.isRotate }},[_vm._v(\"\\n \"+_vm._s(_vm.name)+\"\\n \")])])])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./PhotovoltaicPanel.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./PhotovoltaicPanel.vue?vue&type=script&lang=js&\"","\r\n\r\n\r\n\r\n","import { render, staticRenderFns } from \"./PhotovoltaicPanel.vue?vue&type=template&id=84219290&scoped=true&\"\nimport script from \"./PhotovoltaicPanel.vue?vue&type=script&lang=js&\"\nexport * from \"./PhotovoltaicPanel.vue?vue&type=script&lang=js&\"\nimport style0 from \"./PhotovoltaicPanel.vue?vue&type=style&index=0&id=84219290&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"84219290\",\n null\n \n)\n\nexport default component.exports","import { Graph, Addon, DataUri } from '@antv/x6';\r\nimport '@antv/x6-vue-shape';\r\nimport { getIsCollision } from '../../../../../utils/x6graph.util.js';\r\nimport PhotovoltaicPanel from '../PhotovoltaicPanel.vue';\r\nimport AddMicroInverter from '../../../../../components/GoodweAddDevice/src/components/AddMicroInverter/AddMicroInverter.vue';\r\nimport { uuid } from '@antv/x6/lib/util/string/uuid.js';\r\nconst { Dnd } = Addon;\r\nexport default {\r\n name: 'MicroInverterContainer',\r\n data() {\r\n return {\r\n labelWidth: '180px',\r\n addMicroInverterShow: false,\r\n editName: false,\r\n ifMaxScale: false,\r\n ifMinScale: false,\r\n lang: Goodwe.Ops.Resouces.Front,\r\n graph: null,\r\n selectedNode: null, // 拖拽时选中的node\r\n choseDegIndex: 0,\r\n otherNodes: [],\r\n microInverters: [], // 逆变器\r\n pvData: [], // PV板\r\n clickIndex: null,\r\n dnd: null,\r\n vueNodeObj: {}, //存储vue实例\r\n down: null,\r\n mouse: false,\r\n panelNum: 0,\r\n plantName: lang.Layout_Edit_LayoutTitle,\r\n layoutId: '',\r\n delPanelIds: [],\r\n stationId: GetRequest().pw_id,\r\n type: GetRequest().type,\r\n showPvLoading: false,\r\n };\r\n },\r\n components: { AddMicroInverter },\r\n watch: {},\r\n props: {},\r\n mounted() {\r\n this.initGraph();\r\n this.initDnd();\r\n this.initGraphFunc();\r\n this.setLabelWidth();\r\n if (this.type === 'add') {\r\n // 新增\r\n this.addStationLayout();\r\n } else if (this.type === 'edit') {\r\n // 编辑\r\n this.editStationLayout();\r\n }\r\n },\r\n methods: {\r\n /***************** 初始化界面 ****************/\r\n // 首次打开界面-新增布局\r\n addStationLayout() {\r\n this.getMicroInverters().success((res) => {\r\n const data = res.data;\r\n if (data && data !== 100000) {\r\n this.microInverters = data.list.map(item => {\r\n return {\r\n ...item,\r\n actualPanelNum: 0\r\n }\r\n });\r\n this.renderLayoutAdd();\r\n }\r\n })\r\n },\r\n // 获取左侧微逆列表\r\n getMicroInverters() {\r\n return common.post(\"v3/Layout/QueryInverterByStationId\", {\r\n pw_id: GetRequest().pw_id,\r\n });\r\n },\r\n renderLayoutAdd() {\r\n this.microInverters.forEach((item, row) => {\r\n for (let column = 0; column < item.istrNum; column++) {\r\n const panel = {\r\n id: 'add' + uuid(),\r\n sn: '',\r\n name: '',\r\n info: {\r\n x: (column + 1) * 100 + 23,\r\n y: (row + 1) * 120 + 20,\r\n angle: 0\r\n },\r\n };\r\n panel['nodeId'] = panel.id;\r\n this.generateVueShape(panel);\r\n this.pvData.push(panel);\r\n this.panelNum++;\r\n }\r\n })\r\n },\r\n // 编辑布局\r\n editStationLayout() {\r\n this.getMicroInverters().success((res) => {\r\n const data = res.data;\r\n if (data && data !== 100000) {\r\n this.microInverters = data.list.map(item => {\r\n return {\r\n ...item,\r\n actualPanelNum: 0\r\n }\r\n });\r\n this.layoutId = data.layout_id;\r\n this.getStationLayout();\r\n }\r\n })\r\n },\r\n // 获取电站默认布局-编辑\r\n getStationLayout() {\r\n loading.showLoading();\r\n common\r\n .postPromise('/v3/Layout/QueryLayoutByStationId', { layoutId: this.layoutId })\r\n .then((res) => {\r\n const data = res.data;\r\n if (data && data !== 100000) {\r\n this.formatMicroInverters(data.microInverters);\r\n this.pvData = data.panels;\r\n this.panelNum = data.panelNum || data.panels.length;\r\n this.plantName = data.name;\r\n this.layoutId = data.id;\r\n this.delPanelIds = data.panels.map(item => item.id);\r\n }\r\n // 初始化x6图节点\r\n this.renderPanels();\r\n loading.disLoading();\r\n })\r\n .catch(() => { loading.disLoading() });\r\n },\r\n formatMicroInverters(microInverters) {\r\n this.microInverters.forEach(item => {\r\n const data = microInverters.filter(mi => mi.sn === item.sn);\r\n if (data[0]) {\r\n item.actualPanelNum = data[0].actualPanelNum || 0;\r\n }\r\n })\r\n },\r\n // 初始化画布\r\n initGraph() {\r\n this.graph = new Graph({\r\n container: document.getElementById('pvContainer'),\r\n width: 852,\r\n height: 930,\r\n grid: true,\r\n autoResize: true,\r\n rotating: true,\r\n scroller: {\r\n enabled: true,\r\n pannable: true,\r\n },\r\n mousewheel: {\r\n enabled: true,\r\n minScale: 0.25,\r\n maxScale: 3,\r\n modifiers: ['ctrl', 'meta'],\r\n },\r\n keyboard: true,\r\n history: {\r\n enabled: true,\r\n ignoreAdd: true,\r\n ignoreRemove: true,\r\n beforeAddCommand(event, args) {\r\n if (event === 'cell:removed') {\r\n if (Object.keys(args.options).length === 0 || Object.keys(args.options).includes('stencil')) {\r\n return false;\r\n }\r\n } else if (event === 'cell:added') {\r\n if (Object.keys(args.options).includes('stencil')) {\r\n return false;\r\n }\r\n }\r\n }\r\n },\r\n minimap: {\r\n enabled: true,\r\n container: document.getElementById('minimap'),\r\n width: 150,\r\n height: 100,\r\n graphOptions: {\r\n async: true,\r\n createCellView(cell) {\r\n // 在小地图中不渲染边\r\n if (cell.isEdge()) {\r\n return null;\r\n }\r\n },\r\n },\r\n },\r\n });\r\n },\r\n // 渲染panels\r\n renderPanels(isRefresh) {\r\n if (isRefresh) {\r\n // 刷新\r\n const nodes = this.findVueShapeNodes();\r\n this.pvData.forEach((pv) => {\r\n nodes.forEach((node) => {\r\n if (node.data.nodeId === pv.nodeId) {\r\n const position = node.getPosition();\r\n pv.sn = pv.sn || node.data.inverterSn;\r\n pv.name = pv.name || node.data.name;\r\n pv.x = position.x;\r\n pv.y = position.y;\r\n pv.angle = node.getAngle();\r\n }\r\n });\r\n });\r\n this.graph.clearCells();\r\n }\r\n const _this = this;\r\n this.pvData.forEach((item, index) => {\r\n if (!isRefresh) {\r\n const info = item.info;\r\n item['x'] = info.x;\r\n item['y'] = info.y;\r\n item['angle'] = info.angle;\r\n item['sn'] = item.inverterSn;\r\n item['mpptId'] = item.mpptId;\r\n item['istrId'] = item.istrId;\r\n }\r\n item['nodeId'] = item.id;\r\n if (item.x || item.info) {\r\n _this.generateVueShape(item);\r\n }\r\n });\r\n },\r\n // 生成vue-shape\r\n generateVueShape(item, type) {\r\n const _this = this;\r\n const node = {\r\n shape: 'vue-shape',\r\n x: item.x || item.info.x,\r\n y: item.y || item.info.y,\r\n id: item.nodeId,\r\n angle: item.angle || item.info.angle,\r\n width: 86,\r\n height: 106,\r\n attrs: {\r\n body: {\r\n stroke: '#ebebeb',\r\n },\r\n },\r\n data: {\r\n nodeId: item.nodeId,\r\n sn: item.sn,\r\n name: item.name,\r\n mpptId: item.mpptId,\r\n istrId: item.istrId,\r\n },\r\n component: {\r\n data() {\r\n return {\r\n nodeDeg: 0,\r\n sn: item.sn,\r\n nodeId: item.nodeId,\r\n name: item.name,\r\n mpptId: item.mpptId,\r\n istrId: item.istrId,\r\n };\r\n },\r\n components: {\r\n PhotovoltaicPanel,\r\n },\r\n render(h) {\r\n return h('photovoltaic-panel', {\r\n props: {\r\n nodeDeg: this.nodeDeg,\r\n sn: this.sn,\r\n nodeId: this.nodeId,\r\n name: this.name,\r\n },\r\n on: {\r\n getNodeSn(data) {\r\n _this.pvData.forEach((item) => {\r\n if (item.nodeId === data.nodeId) {\r\n item.sn = data.sn;\r\n }\r\n });\r\n _this.vueNodeObj[item.nodeId].sn = data.sn;\r\n _this.vueNodeObj[item.nodeId].id = data.id;\r\n\r\n _this.renderPanels(true);\r\n },\r\n },\r\n });\r\n },\r\n mounted() {\r\n _this.vueNodeObj[item.nodeId] = this;\r\n },\r\n },\r\n };\r\n this.graph.addNode(node);\r\n if (type) {\r\n const undoData = {\r\n nodeId: item.nodeId,\r\n sn: item.sn,\r\n name: item.name,\r\n x: item.x || item.info.x,\r\n y: item.y || item.info.y,\r\n angle: item.angle || item.info.angle,\r\n }\r\n this.setUndoStack(undoData, 'cell:add');\r\n }\r\n return node;\r\n },\r\n\r\n /***************** 微逆 ******************/\r\n\r\n // 设置label_width\r\n setLabelWidth() {\r\n this.labelWidth = '180px';\r\n if (getCookie('language') === 'pt-pt') {\r\n this.labelWidth = '210px';\r\n }\r\n if (getCookie('language') === 'ko-kr') {\r\n this.labelWidth = '130px';\r\n }\r\n if (getCookie('language') === 'it-it') {\r\n this.labelWidth = '220px';\r\n }\r\n },\r\n // 新增逆变器-弹框\r\n addMicroInverter() {\r\n this.addMicroInverterShow = true;\r\n },\r\n // 新增成功-刷新界面\r\n addSuccessHandle(val) {\r\n if (val.flag) {\r\n let snList = [];\r\n if (val.type === '6') {\r\n snList.push(val.deviceList[0].it_sn);\r\n } else {\r\n snList = val.deviceList;\r\n }\r\n this.getMicroInverters().success((res) => {\r\n const data = res.data;\r\n if (data && data !== 100000) {\r\n const microInvertersNew = data.list;\r\n const miSns = this.microInverters.map(item => item.sn);\r\n microInvertersNew.forEach(item => {\r\n if (!miSns.includes(item.sn)) {\r\n item.actualPanelNum = 0;\r\n this.microInverters.push(item);\r\n }\r\n })\r\n }\r\n })\r\n }\r\n this.addMicroInverterShow = false;\r\n },\r\n // 删除微逆\r\n delMicroInverter(item) {\r\n const _this = this;\r\n goodwe.confirm(\"

    \"\r\n + `${lang.Layout_Edit_Layout_Delete_Micro_Tips_Details}`\r\n + '

    ',\r\n ['OK', 'Cancel'],\r\n function () {\r\n // 1.调接口删除微逆\r\n common\r\n .post('/v1/PwInventers/RemovePowerStationEquipments', {\r\n id: item.id,\r\n equipment_type: '5'\r\n })\r\n .success(function (res) {\r\n // 刷新页面布局\r\n this.close()\r\n if (res.data !== 100000) {\r\n _this.microInverters = _this.microInverters.filter(mi => mi.sn !== item.sn);\r\n // 解绑\r\n _this.findVueShapeNodes().forEach((node) => {\r\n if (node.data.sn === item.sn) {\r\n const nodeId = node.data.nodeId;\r\n _this.clearData(_this.vueNodeObj[nodeId]);\r\n _this.clearData(node.data);\r\n _this.pvData.forEach((pv) => {\r\n if (pv.nodeId === node.data.nodeId) {\r\n _this.clearData(pv);\r\n }\r\n });\r\n }\r\n })\r\n }\r\n }.bind(this))\r\n .fail(function (fail) {\r\n _this.$message.error(fail.msg);\r\n })\r\n }, function () {\r\n this.close()\r\n })\r\n },\r\n clearData(node) {\r\n node.sn = '';\r\n node.name = '';\r\n node.mpptId = '';\r\n node.istrId = '';\r\n },\r\n // 绑定微逆\r\n // 选中逆变器\r\n selectMicroInverter(index) {\r\n clearTimeout(this.down); // 要清除down事件,否则在执行了click事件之后,会接着执行mousedown事件\r\n if (!this.mouse) {\r\n this.clickIndex = this.clickIndex === index ? null : index;\r\n } else {\r\n this.mouse = false;\r\n }\r\n },\r\n mouseDown(item, e) {\r\n clearTimeout(this.down);\r\n const that = this;\r\n this.down = setTimeout(function () {\r\n that.mouse = true;\r\n that.startDrag(item, e);\r\n that.mouse = false;\r\n }, 200);\r\n },\r\n // 初始化拖拽控件\r\n initDnd() {\r\n const _this = this;\r\n this.dnd = new Dnd({\r\n target: _this.graph,\r\n scaled: 0.5,\r\n animation: true,\r\n validateNode(droppingNode) {\r\n // 先判断能不能绑定\r\n let canBind = true;\r\n _this.microInverters.forEach((mi) => {\r\n if (mi.sn === droppingNode.attrs.data.sn) {\r\n if (mi.actualPanelNum >= mi.istrNum) {\r\n _this.$message.error(lang.Layout_Edit_Tips_maxbind); // 达到最大绑定数\r\n canBind = false;\r\n }\r\n }\r\n });\r\n if (!canBind) {\r\n return false;\r\n }\r\n const { isCollision, collisions } = getIsCollision(\r\n droppingNode,\r\n _this.graph\r\n );\r\n // 获取其他nodes\r\n _this.otherNodes = _this.graph.getNodes().filter((item) => {\r\n return item.id !== droppingNode.id;\r\n });\r\n if (!isCollision) {\r\n return false;\r\n } else {\r\n let chooseIndex = 0;\r\n if (collisions.length > 1) {\r\n // 如果有多个重合元素,那么就取最近的元素放\r\n const intervalObjs = collisions.map((collision, index) => {\r\n return {\r\n interval: Math.abs(\r\n collision.getPosition().x - droppingNode.getPosition().x\r\n ),\r\n index: index,\r\n };\r\n });\r\n intervalObjs.reverse();\r\n const intervals = intervalObjs.map((obj) => {\r\n return obj.interval;\r\n });\r\n const min = Math.min(...intervals);\r\n const index = intervalObjs.find((item) => {\r\n return item.interval == min;\r\n }).index;\r\n chooseIndex = index;\r\n }\r\n // 设置随机一个node的值\r\n if (!collisions[chooseIndex] && !collisions[chooseIndex].getData()) return;\r\n const id = collisions[chooseIndex].getData().nodeId;\r\n if (_this.vueNodeObj[id].sn === droppingNode.attrs.data.sn) {\r\n _this.$message.error(lang.Layout_Edit_Tip_bindduplicatte); // 不能重复绑定\r\n return false;\r\n }\r\n const oldSn = _this.vueNodeObj[id].sn;\r\n _this.vueNodeObj[id].sn = droppingNode.attrs.data.sn;\r\n // 名字自动绑定\r\n // 找出该微逆未绑定的名字\r\n const miNodes = _this.findVueShapeNodes().filter(item => item.data.sn === droppingNode.attrs.data.sn);\r\n const names = miNodes.map(mi => {\r\n return mi.data.name;\r\n });\r\n const name = _this.getName(names, droppingNode);\r\n _this.vueNodeObj[id].name = name;\r\n // 保存nodeData\r\n _this.pvData.forEach((item) => {\r\n if (item.nodeId === id) {\r\n item.sn = droppingNode.attrs.data.sn;\r\n item.name = name;\r\n }\r\n });\r\n // 左侧微逆实际绑定pv数量+1,原绑定的得解绑\r\n _this.microInverters.forEach((mi) => {\r\n if (mi.sn === droppingNode.attrs.data.sn) {\r\n mi.actualPanelNum++;\r\n }\r\n if (mi.sn === oldSn) {\r\n mi.actualPanelNum--;\r\n }\r\n });\r\n droppingNode.attrs.label.fill = 'transparent';\r\n // 往graph.history堆栈里面放上绑定的步骤\r\n const undoData = {\r\n nodeId: id,\r\n sn: droppingNode.attrs.data.sn,\r\n name: name\r\n }\r\n _this.setUndoStack(undoData, 'cell:bind');\r\n setTimeout(() => {\r\n _this.graph.removeNode(droppingNode);\r\n }, 100);\r\n }\r\n },\r\n });\r\n },\r\n getName(names, droppingNode) {\r\n let name = 1;\r\n const istrNum = droppingNode.attrs.data.istrNum;\r\n const arrs = Array.from(new Array(istrNum).keys());\r\n const mpptArrc = [];\r\n arrs.forEach(arr => {\r\n const arrNew = parseInt(arr) + 1;\r\n if (!names.includes(arrNew.toString())) {\r\n mpptArrc.push(arrNew);\r\n }\r\n });\r\n mpptArrc.sort();\r\n if (mpptArrc.length !== 0) {\r\n name = mpptArrc[0];\r\n }\r\n return name.toString();\r\n },\r\n // 开始拖拽sn\r\n startDrag(item, e) {\r\n const node = this.createCustomNode(item.sn, {\r\n sn: item.sn,\r\n actualPanelNum: item.actualPanelNum,\r\n istrNum: item.istrNum,\r\n });\r\n this.dnd.start(node, e);\r\n },\r\n createCustomNode(name, data) {\r\n return this.graph.createNode({\r\n data: data,\r\n width: 140,\r\n height: 40,\r\n attrs: {\r\n type: 'snNode',\r\n data: data,\r\n body: {\r\n fill: 'transparent',\r\n stroke: 'transparent',\r\n },\r\n label: {\r\n text: name,\r\n fill: '#000',\r\n },\r\n },\r\n });\r\n },\r\n // 解绑\r\n unbindInverterSn() {\r\n // 将解绑事件添加到undo堆栈中\r\n const undoData = {\r\n ...this.selectedNode.data\r\n }\r\n this.setUndoStack(undoData, 'cell:unbind');\r\n this.unBind(this.selectedNode.data);\r\n },\r\n\r\n /***************** 布局 ******************/\r\n\r\n //保存画布\r\n saveGraph() {\r\n //先看看是否重叠\r\n const nodes = this.findNewNodes();\r\n let isCollision = false;\r\n nodes.forEach((node) => {\r\n if (this.isCollision(node)) {\r\n isCollision = true;\r\n return;\r\n }\r\n });\r\n if (isCollision) {\r\n this.$message.error(lang.Layout_Edit_Tips_overlap);\r\n } else {\r\n // 获取全部节点传递给后端\r\n const panels = this.findVueShapeNodes().map((item) => {\r\n const position = item.position();\r\n const { x, y } = position\r\n // pv板数据\r\n const data = item.data;\r\n return {\r\n id: data.nodeId.includes('add') ? '' : data.nodeId,\r\n inverterSn: data.sn,\r\n name: data.name,\r\n mpptId: data.mpptId,\r\n istrId: data.istrId,\r\n layoutId: this.layoutId,\r\n info: {\r\n x,\r\n y,\r\n angle: item.getAngle(),\r\n },\r\n };\r\n });\r\n const params = {\r\n delPanelIds: this.getDelPanelIds(panels),\r\n id: this.layoutId,\r\n name: this.plantName,\r\n stationId: this.stationId,\r\n panelNum: panels.length || this.panelNum,\r\n userId: uid,\r\n microInverters: this.microInverters,\r\n panels: panels\r\n }\r\n this.showPvLoading = true;\r\n common.post('/v3/Layout/SaveLayout', params)\r\n .success(function (res) {\r\n this.$message({ message: lang.operate_succss, type: 'success' });\r\n const data = res.data;\r\n if (data && data !== 100000 && this.type === 'add') {\r\n this.layoutId = data;\r\n // window.location.href = `/powerstation/DeviceDetail?pw_id=${this.stationId}&page=MicroInverterLayout`;\r\n }\r\n }.bind(this))\r\n .fail(function (fail) {\r\n this.$message({ message: lang.operate_error, type: 'error' });\r\n }).all(function(){\r\n this.showPvLoading = false; \r\n }.bind(this))\r\n }\r\n },\r\n getDelPanelIds(panels) {\r\n this.delPanelIds = this.delPanelIds.filter(item => !panels.includes(item));\r\n return this.delPanelIds;\r\n },\r\n addPanel() {\r\n const panel = {\r\n id: 'add' + uuid(),\r\n sn: '',\r\n name: '',\r\n info: {\r\n x: 20,\r\n y: 140,\r\n angle: 0\r\n },\r\n };\r\n panel['nodeId'] = panel.id;\r\n this.pvData.push(panel);\r\n // 生成vue-shape\r\n this.generateVueShape(panel, true);\r\n this.panelNum++;\r\n },\r\n //删除面板\r\n delePanel() {\r\n const _this = this;\r\n goodwe.confirm(\"

    \"\r\n + `${lang.Layout_Edit_Layout_Delete_PV_Tips_Details}`\r\n + '

    ',\r\n ['OK', 'Cancel'],\r\n function () {\r\n _this.panelNum--;\r\n _this.unbindInverterSn();\r\n const node = _this.graph.getNodes().filter((item) => {\r\n return (\r\n item.data.nodeId === _this.selectedNode.data.nodeId\r\n );\r\n });\r\n _this.graph.removeNode(node[0]);\r\n // 也要删除pvData的数据,不然初始化又会生成\r\n _this.pvData = _this.pvData.filter((item) => {\r\n return item.nodeId !== _this.selectedNode.data.nodeId;\r\n });\r\n const position = _this.selectedNode.getPosition();\r\n const {x,y} = position;\r\n const undoData = {\r\n ..._this.selectedNode.data,\r\n x: x,\r\n y: y,\r\n angle: _this.selectedNode.getAngle()\r\n }\r\n _this.setUndoStack(undoData, 'cell:remove');\r\n _this.selectedNode = null;\r\n this.close();\r\n }, function () {\r\n this.close()\r\n });\r\n },\r\n //找到快速增加的节点,位置在【40,40】的元素\r\n findNewNodes() {\r\n const nodes = this.findVueShapeNodes();\r\n return nodes.filter((item) => {\r\n return JSON.stringify(item.position()) == '{\"x\":20,\"y\":140}';\r\n });\r\n },\r\n // 找到需要保存的节点\r\n findVueShapeNodes() {\r\n const nodes = this.graph.getNodes().filter((item) => {\r\n return item.shape == 'vue-shape';\r\n });\r\n return nodes;\r\n },\r\n rotateNode() {\r\n if (!this.selectedNode) return;\r\n const node = this.selectedNode;\r\n if (this.choseDegIndex > 3) {\r\n this.choseDegIndex = 0;\r\n } else {\r\n this.choseDegIndex++;\r\n }\r\n this.otherNodes = this.graph.getNodes().filter((item) => {\r\n return item.id !== node.id;\r\n });\r\n this.selectedNode.rotate(-45);\r\n if (this.isCollision()) {\r\n node.rotate(this.originPosition.deg, { absolute: true });\r\n this.$message.error(lang.Layout_Edit_Tips_overlap);\r\n this.graph.history.undoStack.splice(this.graph.history.undoStack.length - 2);\r\n }\r\n },\r\n //是否碰撞\r\n isCollision(data) {\r\n const node = data ? data : this.selectedNode;\r\n const { isCollision } = getIsCollision(node, this.graph);\r\n return isCollision;\r\n },\r\n\r\n // x6图方法 \r\n refreshGraph() { },\r\n // 放大画布\r\n zoomUpGraph() {\r\n let zoomNum = this.graph.zoom();\r\n zoomNum += 0.05;\r\n this.getScale(zoomNum);\r\n if (this.ifMaxScale) return;\r\n this.graph.zoomTo(zoomNum);\r\n const undoData = {\r\n zoomNum: zoomNum\r\n }\r\n this.setUndoStack(undoData, 'graph:zoomUp');\r\n },\r\n // 缩小画布\r\n zoomDownGraph() {\r\n let zoomNum = this.graph.zoom();\r\n zoomNum -= 0.05;\r\n this.getScale(zoomNum);\r\n if (this.ifMinScale) return;\r\n this.graph.zoomTo(zoomNum);\r\n const undoData = {\r\n zoomNum: zoomNum\r\n }\r\n this.setUndoStack(undoData, 'graph:zoomDown');\r\n },\r\n getScale(zoomNum) {\r\n this.ifMaxScale = zoomNum > 3 ? true : false;\r\n this.ifMinScale = zoomNum < 0.25 ? true : false;\r\n },\r\n // 撤销\r\n undoGraph() {\r\n this.graph.history.undo();\r\n },\r\n // 还原\r\n redoGraph() {\r\n this.graph.history.redo();\r\n },\r\n setUndoStack(data, event) {\r\n const undoData = {\r\n batch: false,\r\n data: {\r\n ...data\r\n },\r\n event: event,\r\n options: {\r\n merge: false\r\n }\r\n }\r\n this.graph.history.undoStack.push(undoData);\r\n },\r\n // 绑定画布事件\r\n initGraphFunc() {\r\n const _this = this;\r\n this.graph.on('node:mousedown', ({ node }) => {\r\n if (node.sn) {\r\n this.isCanUnbind = true;\r\n } else {\r\n this.isCanUnbind = false;\r\n }\r\n // 记录拖拽之前的node的坐标,以便恢复\r\n const position = node.position();\r\n _this.originPosition = {\r\n x: position.x,\r\n y: position.y,\r\n deg: node.getAngle(),\r\n };\r\n });\r\n // 点击空白清空selectNode\r\n this.graph.on('blank:mousedown', () => {\r\n this.selectedNode = null;\r\n });\r\n this.graph.on('node:mouseup', ({ node }) => {\r\n _this.otherNodes = this.graph.getNodes().filter((item) => {\r\n return item.id !== node.id;\r\n });\r\n this.selectedNode = node;\r\n // 判断node是否碰撞\r\n if (_this.isCollision(node)) {\r\n node.position(this.originPosition.x, this.originPosition.y);\r\n _this.$message.error(lang.Layout_Edit_Tips_overlap);\r\n this.graph.history.undoStack.splice(this.graph.history.undoStack.length - 2);\r\n }\r\n });\r\n this.graph.on('node:rotate', ({ node }) => {\r\n _this.selectedNode = node;\r\n const position = node.position();\r\n _this.originPosition = {\r\n x: position.x,\r\n y: position.y,\r\n deg: node.getAngle(),\r\n };\r\n });\r\n this.graph.on('node:rotated', ({ node }) => {\r\n _this.otherNodes = this.graph.getNodes().filter((item) => {\r\n return item.id !== node.id;\r\n });\r\n _this.vueNodeObj[node.getData().nodeId].nodeDeg = node.getAngle();\r\n if (_this.isCollision(node)) {\r\n node.rotate(_this.originPosition.deg, { absolute: true });\r\n _this.$message.error(lang.Layout_Edit_Tips_overlap);\r\n this.graph.history.undoStack.splice(this.graph.history.undoStack.length - 2);\r\n }\r\n });\r\n this.graph.bindKey(['up', 'down', 'left', 'right'], (e) => {\r\n e.preventDefault();\r\n if (this.selectedNode) {\r\n let position = this.selectedNode.position();\r\n let x = position.x;\r\n let y = position.y;\r\n this.originPosition = {\r\n x: position.x,\r\n y: position.y,\r\n deg: this.selectedNode.getAngle(),\r\n };\r\n if (e.keyCode === 37) {\r\n x = x - 20;\r\n } else if (e.keyCode === 38) {\r\n y = y - 20;\r\n } else if (e.keyCode === 39) {\r\n x = x + 20;\r\n } else if (e.keyCode === 40) {\r\n y = y + 20;\r\n } \r\n this.selectedNode.position(x, y);\r\n // 判断node是否碰撞\r\n if (_this.isCollision(this.selectedNode)) {\r\n this.selectedNode.position(this.originPosition.x, this.originPosition.y);\r\n _this.$message.error(lang.Layout_Edit_Tips_overlap);\r\n this.graph.history.undoStack.splice(this.graph.history.undoStack.length - 2);\r\n }\r\n }\r\n });\r\n this.graph.history.on('undo', (args) => {\r\n // 撤销\r\n const cmds = args.cmds[0];\r\n // 撤销微逆解绑数据\r\n const event = args.cmds[0].event;\r\n if (event === 'cell:bind') {\r\n this.unBind(cmds.data);\r\n } else if (event === 'cell:unbind') {\r\n this.bind(cmds.data);\r\n } else if (event === 'cell:add') {\r\n this.delPv(cmds.data);\r\n } else if (event === 'cell:remove') {\r\n this.addPv(cmds.data);\r\n } else if (event === 'graph:zoomUp') {\r\n this.graph.zoomTo(cmds.data.zoomNum - 0.05);\r\n } else if (event === 'graph:zoomDown') {\r\n this.graph.zoomTo(cmds.data.zoomNum + 0.05);\r\n }\r\n });\r\n this.graph.history.on('redo', (args) => {\r\n // 还原\r\n const cmds = args.cmds[0];\r\n if (!cmds) {\r\n return;\r\n }\r\n const event = cmds.event;\r\n if (event === 'cell:bind') {\r\n this.bind(cmds.data);\r\n } else if (event === 'cell:unbind') {\r\n this.unBind(cmds.data);\r\n } else if (event === 'cell:add') {\r\n this.addPv(cmds.data);\r\n } else if (event === 'cell:remove') {\r\n this.delPv(cmds.data);\r\n } else if (event === 'graph:zoomUp') {\r\n this.graph.zoomTo(cmds.data.zoomNum + 0.05);\r\n } else if (event === 'graph:zoomDown') {\r\n this.graph.zoomTo(cmds.data.zoomNum - 0.05);\r\n }\r\n })\r\n },\r\n unBind(data) {\r\n const id = data.nodeId;\r\n this.findVueShapeNodes().forEach((item) => {\r\n if (id === item.data.nodeId) {\r\n // 左侧微逆解绑板子\r\n this.microInverters.forEach((mi) => {\r\n if (mi.sn === item.data.sn) {\r\n mi.actualPanelNum--;\r\n }\r\n });\r\n this.clearData(this.vueNodeObj[id]);\r\n this.clearData(item.data);\r\n this.pvData.forEach((item) => {\r\n if (item.nodeId === id) {\r\n this.clearData(item);\r\n }\r\n });\r\n }\r\n });\r\n },\r\n bind(data) {\r\n // 先判断能不能绑定\r\n let canBind = true;\r\n this.microInverters.forEach((mi) => {\r\n if (mi.sn === data.sn) {\r\n if (mi.actualPanelNum >= mi.istrNum) {\r\n this.$message.error(lang.Layout_Edit_Tips_maxbind); // 达到最大绑定数\r\n }\r\n }\r\n });\r\n if (!canBind) {\r\n return;\r\n }\r\n const id = data.nodeId;\r\n this.vueNodeObj[id].sn = data.sn;\r\n this.vueNodeObj[id].name = data.name;\r\n // 保存nodeData\r\n this.pvData.forEach((item) => {\r\n if (item.nodeId === id) {\r\n item.sn = data.sn;\r\n item.name = data.name;\r\n }\r\n });\r\n // 左侧微逆实际绑定pv数量+1\r\n this.microInverters.forEach((mi) => {\r\n if (mi.sn === data.sn) {\r\n mi.actualPanelNum++;\r\n }\r\n });\r\n },\r\n addPv(data) {\r\n const panel = {\r\n id: data.nodeId,\r\n sn: data.sn,\r\n name: data.name,\r\n info: {\r\n x: data.x,\r\n y: data.y,\r\n angle: data.angle\r\n },\r\n };\r\n panel['nodeId'] = panel.id;\r\n this.pvData.push(panel);\r\n // 生成vue-shape\r\n this.generateVueShape(panel);\r\n this.panelNum++;\r\n },\r\n delPv(data) {\r\n const node = this.graph.getNodes().filter((item) => {\r\n return (\r\n item.data.nodeId === data.nodeId\r\n );\r\n });\r\n this.graph.removeNode(node[0]);\r\n // 也要删除pvData的数据,不然初始化又会生成\r\n this.pvData = this.pvData.filter(item => item.nodeId !== data.nodeId);\r\n this.unBind(data);\r\n this.panelNum--;\r\n }\r\n },\r\n}","import mod from \"-!../../../../../../node_modules/babel-loader/lib/index.js!./MicroInverterContainer.js?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../../node_modules/babel-loader/lib/index.js!./MicroInverterContainer.js?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./MicroInverterContainer.vue?vue&type=template&id=94577b38&scoped=true&\"\nimport script from \"./MicroInverterContainer.js?vue&type=script&lang=js&\"\nexport * from \"./MicroInverterContainer.js?vue&type=script&lang=js&\"\nimport style0 from \"./MicroInverterContainer.scss?vue&type=style&index=0&id=94577b38&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"94577b38\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{directives:[{name:\"loading\",rawName:\"v-loading\",value:(_vm.showPvLoading),expression:\"showPvLoading\"}],staticStyle:{\"display\":\"flex\"}},[_c('div',{staticClass:\"mi-list-container\"},[_c('div',{staticClass:\"mi_title\"},[_c('img',{attrs:{\"src\":\"/Images/rsd_page/mi_title.png\",\"alt\":\"\"}}),_vm._v(\" \"),_c('span',[_vm._v(_vm._s(_vm.lang.Layout_Edit_Microinverter))])]),_vm._v(\" \"),_c('img',{staticStyle:{\"width\":\"340px\"},attrs:{\"referrerpolicy\":\"no-referrer\",\"src\":\"/Images/rsd_page/mic_divider.png\"}}),_vm._v(\" \"),_c('div',{staticClass:\"mi_content\"},_vm._l((_vm.microInverters),function(item,index){return _c('div',{key:item.id},[_c('div',{staticClass:\"box\",class:{'div_selected':_vm.clickIndex==index},on:{\"click\":function($event){return _vm.selectMicroInverter(index)},\"mousedown\":function (e) { return _vm.mouseDown(item, e); }}},[_c('div',{staticClass:\"text-wrapper\"},[(index < 9)?_c('span',[_vm._v(\"0\"+_vm._s(index + 1))]):_c('span',[_vm._v(_vm._s(index + 1))])]),_vm._v(\" \"),_c('span',{staticStyle:{\"cursor\":\"grabbing\"}},[_vm._v(_vm._s(item.sn))]),_vm._v(\" \"),_c('span',[_vm._v(_vm._s(item.actualPanelNum)+\"/\"+_vm._s(item.istrNum))])]),_vm._v(\" \"),_c('img',{staticClass:\"thumbnail\",attrs:{\"referrerpolicy\":\"no-referrer\",\"src\":\"/Images/rsd_page/thumbnail.png\"},on:{\"click\":function($event){return _vm.delMicroInverter(item)}}})])}),0),_vm._v(\" \"),_c('div',{staticClass:\"mi_root\"},[_c('button',{staticClass:\"btn-primary\",on:{\"click\":_vm.addMicroInverter}},[_vm._v(_vm._s(_vm.lang.Layout_Edit_AddMicro))])])]),_vm._v(\" \"),_c('div',{staticStyle:{\"min-width\":\"800px\"}},[_c('div',{staticClass:\"control-panel\"},[_c('div',{staticClass:\"control-panel-title\"},[(!_vm.editName)?_c('span',{staticStyle:{\"margin\":\"1px 16px\"}},[_vm._v(_vm._s(_vm.plantName))]):_vm._e(),_vm._v(\" \"),(_vm.editName)?_c('el-input',{attrs:{\"disabled\":!_vm.editName},model:{value:(_vm.plantName),callback:function ($$v) {_vm.plantName=$$v},expression:\"plantName\"}},[_c('el-button',{attrs:{\"slot\":\"append\",\"icon\":\"el-icon-check\"},on:{\"click\":function($event){_vm.editName = false}},slot:\"append\"})],1):_vm._e(),_vm._v(\" \"),(!_vm.editName)?_c('img',{attrs:{\"referrerpolicy\":\"no-referrer\",\"src\":\"/Images/rsd_page/plant_edit.png\"},on:{\"click\":function($event){_vm.editName = true}}}):_vm._e()],1),_vm._v(\" \"),_c('div',{staticClass:\"control-panel-right\"},[_c('div',{attrs:{\"title\":_vm.lang.Layout_Edit_ToolBar_Undo_Tips},on:{\"click\":_vm.undoGraph}},[_c('img',{attrs:{\"src\":\"/Images/rsd_page/navigation_bar/mi_undo.png\",\"alt\":\"\"}})]),_vm._v(\" \"),_c('div',{attrs:{\"title\":_vm.lang.Layout_Edit_ToolBar_Redo_Tips},on:{\"click\":_vm.redoGraph}},[_c('img',{attrs:{\"src\":\"/Images/rsd_page/navigation_bar/mi_redo.png\",\"alt\":\"\"}})]),_vm._v(\" \"),_c('div',{attrs:{\"title\":_vm.lang.Layout_Edit_ToolBar_AddPV_Tips},on:{\"click\":_vm.addPanel}},[_c('img',{attrs:{\"src\":\"/Images/rsd_page/navigation_bar/mi_add.png\",\"alt\":\"\"}})]),_vm._v(\" \"),(_vm.selectedNode)?_c('div',{attrs:{\"title\":_vm.lang.Layout_Edit_ToolBar_Turnto_Tips},on:{\"click\":_vm.rotateNode}},[_c('img',{attrs:{\"src\":\"/Images/rsd_page/navigation_bar/mi_turn.png\",\"alt\":\"\"}})]):_c('div',{attrs:{\"title\":_vm.lang.Layout_Edit_ToolBar_Turnto_Tips}},[_c('img',{attrs:{\"src\":\"/Images/rsd_page/navigation_bar/mi_turn_gray.png\",\"alt\":\"\"}})]),_vm._v(\" \"),(_vm.selectedNode)?_c('div',{attrs:{\"title\":_vm.lang.Layout_Edit_ToolBar_Unbind_Tips},on:{\"click\":_vm.unbindInverterSn}},[_c('img',{attrs:{\"src\":\"/Images/rsd_page/navigation_bar/mi_unbind.png\",\"alt\":\"\"}})]):_c('div',{attrs:{\"title\":_vm.lang.Layout_Edit_ToolBar_Unbind_Tips}},[_c('img',{attrs:{\"src\":\"/Images/rsd_page/navigation_bar/mi_unbind_gray.png\",\"alt\":\"\"}})]),_vm._v(\" \"),(_vm.selectedNode)?_c('div',{attrs:{\"title\":_vm.lang.Layout_Edit_ToolBar_Delete_Tips},on:{\"click\":_vm.delePanel}},[_c('img',{attrs:{\"src\":\"/Images/rsd_page/navigation_bar/mi_delete.png\",\"alt\":\"\"}})]):_c('div',{attrs:{\"title\":_vm.lang.Layout_Edit_ToolBar_Delete_Tips}},[_c('img',{attrs:{\"src\":\"/Images/rsd_page/navigation_bar/mi_delete_gray.png\",\"alt\":\"\"}})]),_vm._v(\" \"),_c('div',{attrs:{\"title\":_vm.lang.Layout_Edit_ToolBar_Save_Tips},on:{\"click\":_vm.saveGraph}},[_c('img',{attrs:{\"src\":\"/Images/rsd_page/navigation_bar/mi_save.png\",\"alt\":\"\"}})]),_vm._v(\" \"),(!_vm.ifMaxScale)?_c('div',{attrs:{\"title\":_vm.lang.Layout_Edit_ToolBar_Zoomin_Tips},on:{\"click\":_vm.zoomUpGraph}},[_c('img',{staticStyle:{\"width\":\"20px\",\"height\":\"20px\"},attrs:{\"src\":\"/Images/rsd_page/ic_narrow.png\",\"alt\":\"\"}})]):_c('div',{attrs:{\"title\":_vm.lang.Layout_Edit_ToolBar_Zoomin_Tips}},[_c('img',{attrs:{\"src\":\"/Images/rsd_page/ic_narrow_gray.png\",\"alt\":\"\"}})]),_vm._v(\" \"),(!_vm.ifMinScale)?_c('div',{attrs:{\"title\":_vm.lang.Layout_Edit_ToolBar_Zoomout_Tips},on:{\"click\":_vm.zoomDownGraph}},[_c('img',{staticStyle:{\"width\":\"20px\",\"height\":\"20px\"},attrs:{\"src\":\"/Images/rsd_page/ic_enlarge.png\",\"alt\":\"\"}})]):_c('div',{attrs:{\"title\":_vm.lang.Layout_Edit_ToolBar_Zoomout_Tips}},[_c('img',{attrs:{\"src\":\"/Images/rsd_page/ic_enlarge_gray.png\",\"alt\":\"\"}})]),_vm._v(\" \"),_c('img',{staticClass:\"divider\",attrs:{\"src\":\"/Images/rsd_page/navigation_bar/mi_divider.png\",\"alt\":\"\"}}),_vm._v(\" \"),_c('div',[_c('span',[_vm._v(\"panel: \"+_vm._s(_vm.panelNum))])])])]),_vm._v(\" \"),_vm._m(0)]),_vm._v(\" \"),_c('AddMicroInverter',{ref:\"addMicroDeviceRef\",attrs:{\"micro_way_show\":_vm.addMicroInverterShow,\"pw_id\":_vm.stationId,\"label_width\":_vm.labelWidth,\"is_micro_layout\":true},on:{\"add_success\":_vm.addSuccessHandle}})],1)}\nvar staticRenderFns = [function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"operate-box\"},[_c('div',{attrs:{\"id\":\"pvContainer\"}}),_vm._v(\" \"),_c('div',{attrs:{\"id\":\"minimap\"}})])}]\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./MiOperationGuide.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./MiOperationGuide.vue?vue&type=script&lang=js&\"","\r\n\r\n\r\n","import { render, staticRenderFns } from \"./MiOperationGuide.vue?vue&type=template&id=4372eb8b&scoped=true&\"\nimport script from \"./MiOperationGuide.vue?vue&type=script&lang=js&\"\nexport * from \"./MiOperationGuide.vue?vue&type=script&lang=js&\"\nimport style0 from \"./MiOperationGuide.vue?vue&type=style&index=0&id=4372eb8b&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"4372eb8b\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"mi-operation-guide\"},[_c('div',{staticClass:\"header\"},[_vm._v(_vm._s(_vm.lang.Layout_Edit_OperationGuide_Title))]),_vm._v(\" \"),_c('div',{staticClass:\"container\"},_vm._l((_vm.guides),function(item){return _c('div',{key:item,staticClass:\"guide-item\"},[_c('p',{staticClass:\"guide-item-header\"},[_vm._v(\"\\n \"+_vm._s(item.head)+\"\\n \")]),_vm._v(\" \"),_c('p',{staticClass:\"guide-item-detail\"},[_vm._v(\"\\n \"+_vm._s(item.detail)+\"\\n \")])])}),0)])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./MicroInverterLayout.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./MicroInverterLayout.vue?vue&type=script&lang=js&\"","\r\n\r\n\r\n\r\n\r\n","import { render, staticRenderFns } from \"./MicroInverterLayout.vue?vue&type=template&id=15a8f795&scoped=true&\"\nimport script from \"./MicroInverterLayout.vue?vue&type=script&lang=js&\"\nexport * from \"./MicroInverterLayout.vue?vue&type=script&lang=js&\"\nimport style0 from \"./MicroInverterLayout.vue?vue&type=style&index=0&id=15a8f795&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"15a8f795\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"mi-layout\"},[_c('div',{staticClass:\"mi-layout-title\"},[_c('span',[_vm._v(_vm._s(_vm.lang.Layout_Monitor_Edit_Title))]),_vm._v(\" \"),_c('button',{staticClass:\"btn-primary\",on:{\"click\":_vm.handleSave}},[_vm._v(_vm._s(_vm.lang.Layout_Edit_Layout_Complete_Button))]),_vm._v(\" \"),_c('button',{staticClass:\"btn-primary\",on:{\"click\":_vm.cancel}},[_vm._v(_vm._s(_vm.lang.Layout_Edit_Layout_Cancel_Button))])]),_vm._v(\" \"),_c('div',{staticClass:\"mi-layout-container\"},[_c('div',[_c('micro-inverter-container',{ref:\"microInverterContainer\",attrs:{\"stationId\":_vm.stationId}})],1),_vm._v(\" \"),_c('div',{staticClass:\"operation-guide\"},[_c('MiOperationGuide',{attrs:{\"guides\":_vm.guides}})],1)])])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import MicroInverterLayout from './src/MicroInverterLayout.vue';\r\n\r\nMicroInverterLayout.install = function(Vue) {\r\n Vue.component(MicroInverterLayout.name, MicroInverterLayout);\r\n}\r\n\r\nexport default MicroInverterLayout;","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./MicroInverterTree.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./MicroInverterTree.vue?vue&type=script&lang=js&\"","\r\n\r\n\r\n","import { render, staticRenderFns } from \"./MicroInverterTree.vue?vue&type=template&id=b7c2984c&\"\nimport script from \"./MicroInverterTree.vue?vue&type=script&lang=js&\"\nexport * from \"./MicroInverterTree.vue?vue&type=script&lang=js&\"\nimport style0 from \"./MicroInverterTree.vue?vue&type=style&index=0&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"micro-inverter-tree\"},[_c('el-input',{staticClass:\"tree_input\",attrs:{\"placeholder\":_vm.lang.Layout_View_SNCheck},model:{value:(_vm.filterText),callback:function ($$v) {_vm.filterText=$$v},expression:\"filterText\"}}),_vm._v(\" \"),_c('el-tree',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.treeData.length > 0),expression:\"treeData.length > 0\"}],ref:\"tree\",staticClass:\"filter-tree\",attrs:{\"data\":_vm.treeData,\"node-key\":\"id\",\"show-checkbox\":\"\",\"default-expand-all\":\"\",\"filter-node-method\":_vm.filterNode},on:{\"check\":_vm.checkClicked,\"check-change\":_vm.handleCheckChange},scopedSlots:_vm._u([{key:\"default\",fn:function(ref){\nvar node = ref.node;\nreturn _c('span',{staticClass:\"custom-tree-node\"},[(node.isLeaf)?_c('img',{staticStyle:{\"margin-bottom\":\"2px\"},attrs:{\"src\":\"/Images/rsd_page/last_child_icon.png\",\"alt\":\"\"}}):_vm._e(),_vm._v(\" \"),_c('span',[_vm._v(_vm._s(node.label))])])}}])}),_vm._v(\" \"),(_vm.treeData.length == 0)?_c('div',{staticClass:\"no-tree-node\"},[_vm._v(\" \"+_vm._s(_vm.lang.empty_data)+\" \")]):_vm._e()],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import MicroInverterTree from './src/MicroInverterTree.vue';\r\n\r\nMicroInverterTree.install = function(Vue) {\r\n Vue.component(MicroInverterTree.name, MicroInverterTree);\r\n}\r\n\r\nexport default MicroInverterTree;","import mod from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./TimeControl.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./TimeControl.vue?vue&type=script&lang=js&\"","\n\n\n","import { render, staticRenderFns } from \"./TimeControl.vue?vue&type=template&id=36a67819&scoped=true&\"\nimport script from \"./TimeControl.vue?vue&type=script&lang=js&\"\nexport * from \"./TimeControl.vue?vue&type=script&lang=js&\"\nimport style0 from \"./TimeControl.vue?vue&type=style&index=0&id=36a67819&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"36a67819\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"time-control\"},[_c('div',[_c('div',{staticClass:\"ct\"},[_c('i',{staticClass:\"el-icon-arrow-left\",staticStyle:{\"cursor\":\"pointer\"},on:{\"click\":function($event){return _vm.changeDateByStep($event, false)}}}),_vm._v(\" \"),_c('el-date-picker',{staticStyle:{\"width\":\"130px\"},attrs:{\"editable\":false,\"clearable\":false,\"size\":\"mini\",\"format\":_vm.dateFormat,\"picker-options\":_vm.pickerOption,\"type\":\"date\",\"placeholder\":_vm.lang.cpt_please_select_date},on:{\"change\":_vm.changeDate},model:{value:(_vm.dateValue),callback:function ($$v) {_vm.dateValue=$$v},expression:\"dateValue\"}}),_vm._v(\" \"),_c('i',{staticClass:\"el-icon-arrow-right\",class:{ disabled: _vm.isRightBtnDisabled },staticStyle:{\"cursor\":\"pointer\"},on:{\"click\":function($event){return _vm.changeDateByStep($event, true)}}})],1)]),_vm._v(\" \"),_c('div',{staticClass:\"container\",attrs:{\"id\":\"container\"}},[_c('div',{staticStyle:{\"width\":\"100%\",\"height\":\"100%\",\"position\":\"absolute\",\"z-index\":\"2\"}}),_vm._v(\" \"),_c('div',{staticClass:\"time-span-container\"},_vm._l((_vm.times),function(item){return _c('div',{key:item,staticClass:\"time-span\"},[_c('p',[_vm._v(_vm._s(item))]),_vm._v(\" \"),_c('div',{staticClass:\"split-line\"})])}),0),_vm._v(\" \"),_c('div',{staticClass:\"box\",staticStyle:{\"z-index\":\"3\"},attrs:{\"id\":\"drag\"}})]),_vm._v(\" \"),_c('div',{staticStyle:{\"display\":\"inline-block\"}},[_c('i',{ref:\"prevtime\",staticClass:\"el-icon-arrow-left\",class:{ disabled: _vm.prevBtnDisabled },attrs:{\"id\":\"prevtime\"},on:{\"click\":_vm.moveLeft}}),_vm._v(\" \"),_c('i',{staticClass:\"el-icon-time\"}),_vm._v(\" \"),_c('span',{ref:\"timespan\",attrs:{\"id\":\"timespan\"}},[_vm._v(_vm._s(_vm.timeValue))]),_vm._v(\" \"),_c('i',{ref:\"nexttime\",staticClass:\"el-icon-arrow-right\",class:{ disabled: _vm.nextBtnDisabled },attrs:{\"id\":\"nexttime\"},on:{\"click\":_vm.moveRight}})])])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./PvMonit.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./PvMonit.vue?vue&type=script&lang=js&\"","\r\n\r\n\r\n\r\n","import { render, staticRenderFns } from \"./PvMonit.vue?vue&type=template&id=c2571dcc&scoped=true&\"\nimport script from \"./PvMonit.vue?vue&type=script&lang=js&\"\nexport * from \"./PvMonit.vue?vue&type=script&lang=js&\"\nimport style0 from \"./PvMonit.vue?vue&type=style&index=0&id=c2571dcc&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"c2571dcc\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"pv-component\",class:{ checked: _vm.panel.checked },on:{\"click\":_vm.sendPanel}},[_c('div',{ref:\"rotateDom\"},[_c('div',{staticClass:\"point\",style:({ transform: 'rotateZ(' + _vm.rotateDeg + 'deg)' }),attrs:{\"attr\":_vm.nodeDeg}},[_c('div',{staticClass:\"point-value\"},[_vm._v(_vm._s(_vm._f(\"filterPoint\")(_vm.panel.point)))]),_vm._v(\"W\\n \")]),_vm._v(\" \"),_c('p',{staticClass:\"pv-name\",class:{ rotateZ: _vm.isRotate }},[_vm._v(\"\\n \"+_vm._s(_vm._f(\"filterSN\")(_vm.panel.inverterSn))+\"-\"+_vm._s(_vm.panel.name)+\"\\n \")])])])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./MiLayoutReadOnly.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./MiLayoutReadOnly.vue?vue&type=script&lang=js&\"","\r\n\r\n\r\n","\r\n\r\n\r\n","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./PVMonitoring.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./PVMonitoring.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./MiLayoutReadOnly.vue?vue&type=template&id=211fcb44&\"\nimport script from \"./MiLayoutReadOnly.vue?vue&type=script&lang=js&\"\nexport * from \"./MiLayoutReadOnly.vue?vue&type=script&lang=js&\"\nimport style0 from \"./MiLayoutReadOnly.vue?vue&type=style&index=0&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _vm._m(0)}\nvar staticRenderFns = [function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"mi-layout-readonly\"},[_c('div',{attrs:{\"id\":\"minimap\"}}),_vm._v(\" \"),_c('div',{attrs:{\"id\":\"graphContainer\"}})])}]\n\nexport { render, staticRenderFns }","import { render, staticRenderFns } from \"./PVMonitoring.vue?vue&type=template&id=1108cf32&scoped=true&\"\nimport script from \"./PVMonitoring.vue?vue&type=script&lang=js&\"\nexport * from \"./PVMonitoring.vue?vue&type=script&lang=js&\"\nimport style0 from \"./PVMonitoring.vue?vue&type=style&index=0&id=1108cf32&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"1108cf32\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticStyle:{\"width\":\"100%\",\"height\":\"100%\"}},[_c('div',{staticClass:\"pv-page-title\"},[_c('div',[_c('a',{staticClass:\"a-switch\",staticStyle:{\"margin-left\":\"5px\"},attrs:{\"href\":\"javascript:void(0)\",\"id\":\"owners_info_switch\"}}),_vm._v(\" \"),_c('label',{staticStyle:{\"color\":\"rgb(51, 64, 70)\",\"font-weight\":\"700\"}},[_vm._v(_vm._s(_vm.lang.PVmonitor_Label))])]),_vm._v(\" \"),_c('span',{staticClass:\"return-btn\",on:{\"click\":_vm.returnDetail}},[_vm._v(_vm._s(_vm.lang.pssmBack))])]),_vm._v(\" \"),_c('div',{directives:[{name:\"loading\",rawName:\"v-loading\",value:(_vm.loading),expression:\"loading\"}],staticClass:\"pv-page-container\"},[_c('MicroInverterTree',{ref:\"tree\",attrs:{\"treeData\":_vm.treeData,\"checkedKeys\":_vm.checkedKeys},on:{\"sendCheckedKeys\":_vm.getCheckedKeys}}),_vm._v(\" \"),_c('div',{staticClass:\"pv-container\"},[_c('ul',{staticClass:\"btns-list\"},[_c('li',{class:{ active: _vm.activeIndex == 0 },on:{\"click\":_vm.showRealData}},[_vm._v(_vm._s(_vm.lang.Layout_View_RealTime_Label))]),_vm._v(\" \"),_c('li',{class:{ active: _vm.activeIndex == 1 },on:{\"click\":_vm.showHistoryData}},[_vm._v(_vm._s(_vm.lang.Layout_View_Historical_Label))])]),_vm._v(\" \"),_c('div',{staticClass:\"inverter-layout\"},[_c('MiLayoutReadOnly',{ref:\"miLayoutReadOnly\",attrs:{\"panelsData\":_vm.panelsData},on:{\"update:panelsData\":function($event){_vm.panelsData=$event},\"update:panels-data\":function($event){_vm.panelsData=$event},\"sendPanel\":_vm.getPanel}})],1),_vm._v(\" \"),_c('div',{staticClass:\"real-container\"},[_c('TimeControl',{directives:[{name:\"show\",rawName:\"v-show\",value:(!_vm.loading),expression:\"!loading\"}],ref:\"timeControl\",staticStyle:{\"margin-top\":\"10px\"},attrs:{\"timeWidth\":_vm.timeWidth,\"localDate\":_vm.localDate},on:{\"sendDate\":_vm.getDate,\"sendTime\":_vm.getTime}})],1)])],1)])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import PVMonitoring from './src/PVMonitoring.vue';\r\n\r\nPVMonitoring.install = function(Vue) {\r\n Vue.component(PVMonitoring.name, PVMonitoring);\r\n}\r\n\r\nexport default PVMonitoring;","/** 一级tab--【远程控制项】 */\r\nexport const FIRST_TAB_REMOTE_SETTING = 'RemoteSetting';\r\n/** 一级tab--【控制记录项】 */\r\nexport const FIRST_TAB_SETTING_RECORD = 'SettingRecord';\r\n\r\nexport const FIELD_TYPE_INPUT = 1 // 单行文本框\r\nexport const FIELD_TYPE_TEXTAREA = 2 // 多行文本框\r\nexport const FIELD_TYPE_INPUT_NUMBER = 3 // 数字\r\nexport const FIELD_TYPE_SELECT = 4 // 单选下拉框\r\nexport const FIELD_TYPE_SELECT_MULTIPLE = 5 // 多选下拉框\r\nexport const FIELD_TYPE_RADIO = 6 // 单选框\r\nexport const FIELD_TYPE_CHECKBOX = 7 // 复选框\r\nexport const FIELD_TYPE_SWITCHsnList = 8 // 开关\r\nexport const FIELD_TYPE_DATE_PICKER = 9 // 日期\r\nexport const FIELD_TYPE_RANGE_PICKER = 10 // 日期(区间)\r\nexport const FIELD_TYPE_FILE_UPLOAD = 11 // 附件\r\nexport const FIELD_TYPE_COLOR_PICKER = 12 // 颜色选择器\r\nexport const FIELD_TYPE_SLIDER = 13 // 进度条 Slider\r\nexport const FIELD_TYPE_EMPTY = 14 // 自定义\r\nexport const FIELE_TYPE_INPUT_NUMBER_RANGE = 15 // 数字区间输入框\r\nexport const FIELD_TYPE_BUTTON = 16 // 按钮\r\nexport const FIELD_TYOE_SELECT_INDEX = 17 // 通道配置组合(故障录波)\r\nexport const FIELD_TYOE_SELECT_SOURCE = 18 // 故障选择器(故障录波)\r\nexport const FIELD_TYPE_SELECT_SAFE = 19 // 选择安规\r\n\r\n/** 远程控制的三种状态 */\r\nexport const STATUS_TEXT_SETTING = 0; // 设置中\r\nexport const STATUS_TEXT_SUCCESS = 1; // 成功\r\nexport const STATUS_TEXT_FAILED = 2; // 失败\r\n\r\n/** 远程控制的状态反选 */\r\nexport const STATUS_TEXT_MAP = {\r\n [STATUS_TEXT_SETTING]: Goodwe.Ops.Resouces.Front['str_Setting'], \r\n [STATUS_TEXT_SUCCESS]: Goodwe.Ops.Resouces.Front['str_SetSuccess'], \r\n [STATUS_TEXT_FAILED]: Goodwe.Ops.Resouces.Front['str_SetFailed'], \r\n}\r\n\r\n/** 远程控制的状态反选的文字颜色 */\r\nexport const STATUS_COLOR_MAP = {\r\n [STATUS_TEXT_SETTING]: '#0000ff',\r\n [STATUS_TEXT_SUCCESS]: '#008000',\r\n [STATUS_TEXT_FAILED]: '#ff0000',\r\n}\r\n\r\n/** 大于 */\r\nexport const SYMBOL_GREATER = 0\r\n/** 大于等于 */\r\nexport const SYMBOL_GREATER_EQUAL = 1\r\n/** 小于 */\r\nexport const SYMBOL_LESS = 2\r\n/** 小于等于 */\r\nexport const SYMBOL_LESS_EQUAL = 3\r\n\r\nexport const SYMBOL_MAP = {\r\n SYMBOL_GREATER: '>',\r\n SYMBOL_GREATER_EQUAL: '>=',\r\n SYMBOL_LESS: '<',\r\n SYMBOL_LESS_EQUAL: '<=',\r\n}\r\n\r\n/**\r\n * 判断小数位数\r\n * @param precision 精度\r\n */\r\nexport const judgeDecimalDigit = (precision) => {\r\n const num = `${precision}`\r\n if (num.indexOf('.') === -1) {\r\n return 0 // 整数返回0\r\n }\r\n const x = num.indexOf('.') + 1 // 小数点的位置\r\n const y = num.length - x // 小数的位数\r\n return y // 返回小数点后的个数\r\n}\r\n\r\n/**\r\n * 获取精度 和区间 以及区间字符串\r\n * @param range 区间字符串\r\n * @param gain 增益数值\r\n * @returns \r\n */\r\nexport const getItemRange = (range, gain) =>{\r\n const rangeArr = range.split(',')\r\n const resArr = []\r\n let rangeStr = ''\r\n const fixNum = gain.toString().length - 1\r\n rangeArr.forEach((item,index) => {\r\n if(index % 2 === 0){\r\n let min\r\n let minSymbol\r\n let max\r\n let maxSymbol\r\n let minStr = ''\r\n let maxStr = ''\r\n if(item.indexOf('(') > -1){\r\n min = (Number(item.replace('(','')) / gain).toFixed(fixNum)\r\n minSymbol = SYMBOL_GREATER\r\n minStr = `(${ min},`\r\n }else if(item.indexOf('[') > -1){\r\n min = (Number(item.replace('[','')) / gain).toFixed(fixNum)\r\n minSymbol = SYMBOL_GREATER_EQUAL\r\n minStr = `[${ min},`\r\n }\r\n const nextItem = rangeArr[index + 1]\r\n if(nextItem.indexOf(')') > -1){\r\n max = (Number(nextItem.replace(')','')) / gain).toFixed(fixNum)\r\n maxSymbol = SYMBOL_LESS\r\n maxStr = `${max})`\r\n }else if(nextItem.indexOf(']') > -1){\r\n max = (Number(nextItem.replace(']','')) / gain).toFixed(fixNum)\r\n maxSymbol = SYMBOL_LESS_EQUAL\r\n maxStr = `${max}]`\r\n }\r\n rangeStr += `${minStr + maxStr },`\r\n resArr.push({min,minSymbol,max,maxSymbol})\r\n }\r\n })\r\n const resData = {\r\n 'rangeStr': rangeStr.substring(0,rangeStr.length -1),\r\n 'res': resArr,\r\n 'precision' : 1 / gain,\r\n 'decimalDigit': judgeDecimalDigit(1 / gain)\r\n }\r\n return resData\r\n}\r\n\r\n/** 判断数字是否在输入范围内 */\r\nexport const isInRange = (rangeArr, inputNum) => {\r\n if(inputNum === undefined) return false\r\n let isIn = false\r\n rangeArr.forEach((item) => {\r\n let minFlag = false\r\n let maxFlag = false\r\n if(item['minSymbol'] === SYMBOL_GREATER){\r\n if(inputNum > Number(item['min'])) {\r\n minFlag = true\r\n }\r\n }else if(item['minSymbol'] === SYMBOL_GREATER_EQUAL){\r\n if(inputNum >= Number(item['min'])) {\r\n minFlag = true\r\n }\r\n }\r\n if(item['maxSymbol'] === SYMBOL_LESS){\r\n if(inputNum < Number(item['max'])) {\r\n maxFlag = true\r\n }\r\n }else if(item['maxSymbol'] === SYMBOL_LESS_EQUAL){\r\n if(inputNum <= Number(item['max'])) {\r\n maxFlag = true\r\n }\r\n }\r\n if(minFlag && maxFlag){\r\n isIn = true\r\n }\r\n })\r\n return isIn\r\n}\r\n\r\n/** 安规数据key转换 */\r\nexport const safeCountryHandle = (data) => {\r\n data.forEach(item => {\r\n // 第一层\r\n item.label = item.name;\r\n item.value = item.name;\r\n item.children = item.continent;\r\n // 第二层\r\n if(item.children.length > 0) {\r\n item.children.forEach(child => {\r\n child.label = child.name;\r\n child.value = child.name;\r\n child.children = child.countrys;\r\n // 第三层\r\n if(child.children.length > 0){\r\n child.children.forEach(grandChild => {\r\n grandChild.label = grandChild.safecountry;\r\n grandChild.value = grandChild.safecode;\r\n })\r\n }\r\n })\r\n }\r\n })\r\n return data\r\n}\r\n\r\n/** 安规二级数据反选options */\r\nexport const handleSecondOptions = (data) => {\r\n let secondList = [];\r\n if(data.length > 0) {\r\n data.forEach(item => {\r\n if(item.children && item.children.length > 0) {\r\n item.children.forEach(element => {\r\n secondList.push(element);\r\n })\r\n }\r\n })\r\n }\r\n return secondList\r\n}\r\n\r\n/** 远程控制options选择数据反选 */\r\nexport const optionsValueText = (options, value, type) => {\r\n let finalFront = value;\r\n switch (type) {\r\n case FIELD_TYPE_SELECT_SAFE: {\r\n const secondSafe = handleSecondOptions(options);\r\n const cur = secondSafe.find(el=> {return Number(el.value) === value});\r\n if(cur) {\r\n finalFront = lang[cur.label]\r\n }\r\n break;\r\n }\r\n case FIELD_TYPE_SELECT: {\r\n if(options.length > 0) {\r\n const cur = options.find(el=> {return el.value === value});\r\n if(cur) {\r\n finalFront = lang[cur.translate_key]\r\n }\r\n }\r\n break;\r\n }\r\n default:\r\n finalFront = value;\r\n break;\r\n }\r\n return finalFront\r\n}\r\n","import mod from \"-!../../../../../../../node_modules/babel-loader/lib/index.js!./ControlColumn.js?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../../../node_modules/babel-loader/lib/index.js!./ControlColumn.js?vue&type=script&lang=js&\"","import {\r\n FIELD_TYPE_SELECT,FIELD_TYPE_INPUT_NUMBER,FIELD_TYPE_SELECT_SAFE, \r\n judgeDecimalDigit, isInRange\r\n} from '../../../RemoteRelative';\r\nexport default{\r\n name: 'ControlColumn',\r\n props: {\r\n controlType: {type: Number, required: true}, // 控制器类型\r\n currentItem: {type: Object, required: true}, // 控制器参数相关\r\n safeOptions: {type: Array, required: true}, // 安规选项\r\n rangeInfo: {type: Object, required: false}, // 数字输入框范围相关\r\n },\r\n data() {\r\n return {\r\n lang: Goodwe.Ops.Resouces.Front,\r\n pw_id: GetRequest().id,\r\n FIELD_TYPE_SELECT, FIELD_TYPE_INPUT_NUMBER,\r\n FIELD_TYPE_SELECT_SAFE,\r\n selectValue: '', // 下拉选择框数据\r\n numberValue: '', // 数字输入框数据\r\n safeValue: '', // 选择安规数据\r\n }\r\n },\r\n computed: {\r\n cumputedItem() {\r\n let d = _.cloneDeep(this.currentItem);\r\n if(d && d.unit === 'N/A') {\r\n d.unit = '';\r\n }\r\n return d\r\n }\r\n },\r\n methods: {\r\n /** 改变下拉选择 */\r\n handleSelect(val) {\r\n this.$emit('listenChange', {\r\n id: this.currentItem['id'],\r\n type: this.controlType,\r\n value: val !== '' ? val : null\r\n })\r\n },\r\n\r\n /** 数字输入框改变值 */\r\n handleBlurNum(e) {\r\n const numValue = e.target.value;\r\n if(numValue === '') {\r\n this.$emit('listenChange', {\r\n id: this.currentItem['id'], type: this.controlType, value: null\r\n });\r\n return\r\n }\r\n if(!isInRange(this.rangeInfo['res'], numValue)) {\r\n this.$message.error(lang.range + `${this.rangeInfo['rangeStr']}`);\r\n this.numberValue = null;\r\n this.$emit('listenChange', { \r\n id: this.currentItem['id'],\r\n type: this.controlType, \r\n value: 'ErrorRange'\r\n });\r\n } else {\r\n if(judgeDecimalDigit(numValue) > this.rangeInfo['decimalDigit']) {\r\n let numStr = `${numValue}`;\r\n const endIndex = numStr.indexOf('.') + this.rangeInfo['decimalDigit'] + 1;\r\n this.numberValue = Number(numStr.slice(0, endIndex));\r\n } else {\r\n this.numberValue = Number(numValue);\r\n }\r\n this.$emit('listenChange', {\r\n id: this.currentItem['id'],\r\n type: this.controlType, \r\n value: this.numberValue\r\n });\r\n }\r\n },\r\n\r\n /** 选择安规 */\r\n handleChangeSafe(opt) {\r\n this.safeValue = opt[2] || '';\r\n this.$emit('listenChange', {\r\n id: this.currentItem['id'],\r\n type: this.controlType, \r\n value: this.safeValue !== '' ? this.safeValue : null\r\n });\r\n },\r\n \r\n },\r\n}","import { render, staticRenderFns } from \"./ControlColumn.vue?vue&type=template&id=247aadd4&scoped=true&\"\nimport script from \"./ControlColumn.js?vue&type=script&lang=js&\"\nexport * from \"./ControlColumn.js?vue&type=script&lang=js&\"\nimport style0 from \"./ControlColumn.scss?vue&type=style&index=0&id=247aadd4&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"247aadd4\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[(_vm.controlType === _vm.FIELD_TYPE_SELECT)?_c('div',{staticClass:\"control-item\"},[_c('el-select',{attrs:{\"size\":\"small\",\"clearable\":\"\",\"placeholder\":_vm.lang.WorkMode_745_PleaseSelect},on:{\"change\":_vm.handleSelect},model:{value:(_vm.selectValue),callback:function ($$v) {_vm.selectValue=$$v},expression:\"selectValue\"}},_vm._l((_vm.cumputedItem['options']),function(child,i){return _c('el-option',{key:i,attrs:{\"label\":_vm.lang[child.translate_key],\"value\":child.value}})}),1)],1):_vm._e(),_vm._v(\" \"),(_vm.controlType === _vm.FIELD_TYPE_INPUT_NUMBER)?_c('div',{staticClass:\"control-item\"},[_c('el-input',{attrs:{\"size\":\"small\",\"clearable\":\"\",\"placeholder\":_vm.lang.siEnter,\"label\":_vm.lang.siEnter},on:{\"blur\":_vm.handleBlurNum},model:{value:(_vm.numberValue),callback:function ($$v) {_vm.numberValue=$$v},expression:\"numberValue\"}}),_vm._v(\" \"),(_vm.cumputedItem['unit'])?_c('div',{staticClass:\"num-unit\"},[_vm._v(_vm._s(_vm.cumputedItem['unit']))]):_vm._e()],1):_vm._e(),_vm._v(\" \"),(_vm.controlType === _vm.FIELD_TYPE_SELECT_SAFE)?_c('div',{staticClass:\"control-item\"},[(_vm.safeOptions && _vm.safeOptions.length > 0)?_c('div',[_c('el-cascader',{attrs:{\"size\":\"small\",\"clearable\":\"\",\"placeholder\":_vm.lang.WorkMode_745_PleaseSelect,\"options\":_vm.safeOptions,\"show-all-levels\":false,\"expand-trigger\":'click'},on:{\"change\":_vm.handleChangeSafe},scopedSlots:_vm._u([{key:\"default\",fn:function(ref){\nvar node = ref.node;\nvar data = ref.data;\nreturn [_c('span',[_vm._v(_vm._s(data.label))]),_vm._v(\" \"),(!node.isLeaf)?_c('span',[_vm._v(\" (\"+_vm._s(data.children.length)+\") \")]):_vm._e(),_vm._v(\" \"),(node.isLeaf)?_c('span',{staticStyle:{\"color\":\"#b4bccc\"}},[_c('br'),_vm._v(\" \"+_vm._s(data.mark)+\"\\n \")]):_vm._e()]}}],null,false,1234735075)})],1):_vm._e()]):_vm._e()])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../../../node_modules/babel-loader/lib/index.js!./CurrentSettingModal.js?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../../node_modules/babel-loader/lib/index.js!./CurrentSettingModal.js?vue&type=script&lang=js&\"","import {\r\n FIELD_TYPE_SELECT,FIELD_TYPE_INPUT_NUMBER,FIELD_TYPE_SELECT_SAFE,\r\n optionsValueText\r\n} from '../../RemoteRelative';\r\nimport ControlColumn from '../RemoteSettingItem/ControlColumn/ControlColumn.vue';\r\nexport default {\r\n name: 'CurrentSettingModal',\r\n props: {\r\n showModal: {type: Boolean, required: true}, // 是否展示模态框\r\n settingData: {type: Object, required: true }, // 设置详情数据\r\n modalTitle: {type: String, required: true}, // 弹出框标题\r\n snList: {type: Array, required: true}, // SN列表\r\n safeDataOptions: {type: Array, required: true}, // 安规选项\r\n },\r\n components: { ControlColumn },\r\n data() {\r\n return {\r\n lang: Goodwe.Ops.Resouces.Front,\r\n pw_id: GetRequest().id,\r\n FIELD_TYPE_SELECT,\r\n FIELD_TYPE_INPUT_NUMBER,\r\n FIELD_TYPE_SELECT_SAFE,\r\n configSnData: [],\r\n searchValue:'', // 搜索框数据\r\n rangInfo: {}, // 数字输入框的范围,精度参数\r\n dataFinished: false, // 数据是否查询完毕\r\n currentSettingPage: {\r\n record: 0,\r\n pageIndex: 1,\r\n pageSize: 8,\r\n },\r\n }\r\n },\r\n watch: {\r\n showModal(val) {\r\n if(val) {\r\n this.getParamDataBySn();\r\n }\r\n return val\r\n },\r\n },\r\n computed: {\r\n computedTableData() {\r\n let d = _.clone(this.configSnData);\r\n const controlType = this.settingData['control_type'];\r\n if(!d) d = [];\r\n if(d && d.length > 0) {\r\n d.forEach(item=> {\r\n const paramOptions = item['options'] || this.safeDataOptions;\r\n if(controlType === FIELD_TYPE_INPUT_NUMBER) {\r\n item['rangeInfo'] = this.settingData['rangeInfo'];\r\n item['unitFlag'] = this.settingData['unitFlag'];\r\n item['unit'] = this.settingData['unit'] || item['unit'];\r\n if(item['value']!== '' && item['value']!== null) {\r\n item['value'] = item['value'] / item['unitFlag'];\r\n }\r\n }\r\n item['id'] = item['configItemId'];\r\n item['setValue'] = null; // 临时存储值\r\n item['value'] = optionsValueText(paramOptions,item['value'],controlType);\r\n })\r\n }\r\n return d\r\n },\r\n },\r\n methods: {\r\n /** 根据SN获取表格数据 */\r\n getParamDataBySn() {\r\n const params = {\r\n searchSN: this.searchValue,\r\n inverterSNList: this.snList,\r\n configItemId: this.settingData['id'],\r\n pageIndex: this.currentSettingPage['pageIndex'],\r\n pageSize: this.currentSettingPage['pageSize'],\r\n }\r\n common.post('/v3/MicroInverterRemoting/GetSingleControlList', params).success(function(res){\r\n if(res.data) {\r\n this.configSnData = res.data['list'] || [];\r\n this.currentSettingPage['record'] = res.data['record'] || 0;\r\n }\r\n }.bind(this)).fail(function(fail){\r\n this.$message.error(fail.msg);\r\n }.bind(this)).all(function(){\r\n this.dataFinished = true; // 数据获取完成\r\n }.bind(this));\r\n },\r\n\r\n /** 切换页码 */\r\n handlePageChange(v) {\r\n this.currentSettingPage.pageIndex = v;\r\n this.dataFinished = false;\r\n setTimeout(() => {\r\n this.getParamDataBySn();\r\n }, 10);\r\n },\r\n\r\n /** SN输入框改变值 */\r\n handleSnChange(e) {\r\n const val = e.target.value;\r\n this.searchValue = val;\r\n this.dataFinished = false;\r\n this.currentSettingPage = {\r\n record: 0,\r\n pageIndex: 1,\r\n pageSize: 8,\r\n };\r\n setTimeout(() => {\r\n this.getParamDataBySn();\r\n }, 10);\r\n },\r\n\r\n /** 监听值变化 */\r\n handleChange(res) {\r\n this.computedTableData.map(el=> {\r\n if(el.id === res['id']) {\r\n el.setValue = res.value;\r\n }\r\n return el\r\n })\r\n },\r\n\r\n /** 点击设置按钮 */\r\n setItemValue(row) {\r\n if(row['setValue'] === null || row['setValue'] === '') { \r\n let tipFir = this.settingData['control_type'] === FIELD_TYPE_INPUT_NUMBER ? lang.siEnter:lang.WorkMode_745_PleaseSelect;\r\n this.$message.error(tipFir + ' ' + lang[this.settingData['translate_key']]);\r\n return \r\n }\r\n if(this.settingData['control_type'] === FIELD_TYPE_INPUT_NUMBER) {\r\n row['setValue'] = row['setValue'] * row['unitFlag'];\r\n }\r\n if(isNaN(row['setValue'])) { row['setValue'] = null }\r\n loading.showLoading();\r\n common.post('/v3/MicroInverterRemoting/BatchControl', {\r\n powerStationId: this.pw_id,\r\n inverterSNList: [row['inverterSN']],\r\n configItems: [{\r\n configItemId: row['id'],\r\n value: row['setValue'] \r\n }]\r\n }).success(function(res){\r\n if(res.data) {\r\n this.$message.success(lang['SettingRecord_check_tips']);\r\n } else {\r\n this.$message.error(lang['parErr']);\r\n }\r\n }.bind(this)).fail(function(fail){\r\n this.$message.error(fail.msg);\r\n }.bind(this)).all(function(){\r\n loading.disLoading();\r\n }.bind(this))\r\n },\r\n\r\n /** 关闭模态框 */\r\n closeModal() {\r\n if(!this.dataFinished) {\r\n const _this = this;\r\n goodwe.confirm(lang.str_SettingTips, // 数据正在加载,是否断开查询?\r\n [lang.ok,lang.cancel],\r\n function() { // 点击Ok\r\n this.close();\r\n _this.resetModalData();\r\n },\r\n function () { // 点击cancel\r\n this.close();\r\n });\r\n } else {\r\n this.resetModalData();\r\n }\r\n },\r\n\r\n /** 重置模态框数据 */\r\n resetModalData() {\r\n this.showModal = false;\r\n this.$emit('dialogShowChange', false);\r\n setTimeout(() => {\r\n this.configSnData = [];\r\n this.searchValue = '';\r\n this.percentNum = 0;\r\n this.dataFinished = false;\r\n this.currentSettingPage = {\r\n record: 0,\r\n pageIndex: 1,\r\n pageSize: 8,\r\n };\r\n }, 500);\r\n }\r\n\r\n },\r\n}","import { render, staticRenderFns } from \"./CurrentSettingModal.vue?vue&type=template&id=50e46861&scoped=true&\"\nimport script from \"./CurrentSettingModal.js?vue&type=script&lang=js&\"\nexport * from \"./CurrentSettingModal.js?vue&type=script&lang=js&\"\nimport style0 from \"./CurrentSettingModal.scss?vue&type=style&index=0&id=50e46861&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"50e46861\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('gdw-dialog',{staticClass:\"dialog-operate\",attrs:{\"width\":1000,\"title\":_vm.modalTitle,\"show\":_vm.showModal}},[_c('img',{staticClass:\"close-img\",attrs:{\"src\":\"/Images/add_device/dialog_close.png\"},on:{\"click\":_vm.closeModal}}),_vm._v(\" \"),_c('div',{staticClass:\"search-header\"},[_c('el-input',{staticClass:\"modal-search\",attrs:{\"disabled\":!_vm.dataFinished,\"placeholder\":_vm.lang.Layout_View_SNCheck},on:{\"blur\":_vm.handleSnChange},model:{value:(_vm.searchValue),callback:function ($$v) {_vm.searchValue=$$v},expression:\"searchValue\"}}),_vm._v(\" \"),(_vm.settingData['control_type'] === _vm.FIELD_TYPE_INPUT_NUMBER)?_c('div',{staticClass:\"range-box\"},[_vm._v(\"\\n \"+_vm._s(_vm.lang.RemoteSetting_Mirco_Range_title)+\" :\\n \"),_c('span',[_vm._v(_vm._s(_vm.settingData['rangeInfo']['rangeStr']))]),_vm._v(\"\\n \"+_vm._s(_vm.lang.Number_precision)+\" : \"),_c('span',[_vm._v(_vm._s(_vm.settingData['rangeInfo']['precision']))])]):_vm._e()],1),_vm._v(\" \"),_c('div',{staticClass:\"table-con\"},[_c('el-table',{directives:[{name:\"loading\",rawName:\"v-loading\",value:(!_vm.dataFinished),expression:\"!dataFinished\"}],staticClass:\"body-contain\",staticStyle:{\"width\":\"100%\"},attrs:{\"stripe\":\"\",\"height\":\"400\",\"data\":_vm.computedTableData,\"size\":\"small\",\"empty-text\":_vm.lang.siNoDataNow,\"header-cell-style\":{ height: '42px', background: '#38474E', color: '#fff'}}},[_c('el-table-column',{attrs:{\"label\":_vm.lang.maName,\"width\":'160px',\"show-overflow-tooltip\":\"\"},scopedSlots:_vm._u([{key:\"default\",fn:function(scope){return [_c('span',[_vm._v(_vm._s(scope.row.name))])]}}])}),_vm._v(\" \"),_c('el-table-column',{attrs:{\"label\":_vm.lang.SN,\"show-overflow-tooltip\":\"\",\"width\":'240px'},scopedSlots:_vm._u([{key:\"default\",fn:function(scope){return [_c('span',[_vm._v(_vm._s(scope.row.inverterSN))])]}}])}),_vm._v(\" \"),_c('el-table-column',{attrs:{\"label\":_vm.lang.RemoteSetting_Mirco_CurrentSetting_title,\"width\":'170px',\"show-overflow-tooltip\":\"\"},scopedSlots:_vm._u([{key:\"default\",fn:function(scope){return [_c('span',[_vm._v(_vm._s(scope.row.value || '--'))])]}}])}),_vm._v(\" \"),_c('el-table-column',{attrs:{\"label\":_vm.lang.RemoteSetting_Mirco_SettingValue_title,\"width\":'240px'},scopedSlots:_vm._u([{key:\"default\",fn:function(scope){return [_c('ControlColumn',{attrs:{\"currentItem\":scope.row,\"controlType\":scope.row['control_type'],\"safeOptions\":_vm.safeDataOptions,\"rangeInfo\":scope.row['rangeInfo']},on:{\"listenChange\":_vm.handleChange}})]}}])}),_vm._v(\" \"),_c('el-table-column',{attrs:{\"label\":_vm.lang.RemoteSetting_Mirco_SettingValue_Opeation,\"width\":'150px'},scopedSlots:_vm._u([{key:\"default\",fn:function(scope){return [_c('button',{staticClass:\"el-button fl goodwe-el-button el-button--primary\",staticStyle:{\"height\":\"32px\",\"line-height\":\"7px\",\"background\":\"#12b4cf\",\"border-color\":\"#12b4cf\"},attrs:{\"type\":\"button\"},on:{\"click\":function($event){return _vm.setItemValue(scope.row)}}},[_vm._v(\"\\n \"+_vm._s(_vm.lang.RemoteSetting_Mirco_Set)+\"\\n \")])]}}])})],1),_vm._v(\" \"),_c('gdw-pager',{staticStyle:{\"margin\":\"20px 0\",\"text-align\":\"right\"},attrs:{\"current-page\":_vm.currentSettingPage.pageIndex,\"page-sizes\":[_vm.currentSettingPage.pageSize],\"layout\":\"prev, pager, next, sizes,total, jumper\",\"total\":_vm.currentSettingPage.record},on:{\"current-change\":_vm.handlePageChange}})],1),_vm._v(\" \"),_c('gdw-dialog-button-group',{staticStyle:{\"display\":\"none\"},attrs:{\"slot\":\"button\",\"line\":\"true\"},slot:\"button\"},[_c('button',[_vm._v(_vm._s(_vm.lang.oCancel))])])],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../../../node_modules/babel-loader/lib/index.js!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./InverterListTreeView.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../../node_modules/babel-loader/lib/index.js!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./InverterListTreeView.vue?vue&type=script&lang=js&\"","\r\n\r\n\r\n","import { render, staticRenderFns } from \"./InverterListTreeView.vue?vue&type=template&id=4e4443e3&scoped=true&\"\nimport script from \"./InverterListTreeView.vue?vue&type=script&lang=js&\"\nexport * from \"./InverterListTreeView.vue?vue&type=script&lang=js&\"\nimport style0 from \"./InverterListTreeView.scss?vue&type=style&index=0&id=4e4443e3&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"4e4443e3\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"micro-inverter-tree\"},[_c('el-input',{staticClass:\"tree_input\",attrs:{\"disabled\":_vm.treeData.length === 0,\"placeholder\":_vm.lang.Layout_View_SNCheck},model:{value:(_vm.filterText),callback:function ($$v) {_vm.filterText=$$v},expression:\"filterText\"}}),_vm._v(\" \"),(_vm.treeData.length !== 0)?_c('div',{staticClass:\"select-all-btn\"},[_c('el-checkbox',{attrs:{\"disabled\":_vm.filterText !== ''},on:{\"change\":_vm.handleCheckAllChange},model:{value:(_vm.checkAll),callback:function ($$v) {_vm.checkAll=$$v},expression:\"checkAll\"}},[_vm._v(\"\\n \"+_vm._s(_vm.lang.fcSelAll)+\"\\n \")])],1):_vm._e(),_vm._v(\" \"),(_vm.treeData.length !== 0)?_c('el-tree',{ref:\"treeRef\",staticClass:\"filter-tree\",attrs:{\"node-key\":\"sn\",\"data\":_vm.treeData,\"filter-node-method\":_vm.filterNode,\"show-checkbox\":\"\",\"highlight-current\":\"\",\"default-expand-all\":\"\"},on:{\"check-change\":_vm.handleCheckChange}}):_vm._e(),_vm._v(\" \"),(_vm.treeData.length === 0)?_c('div',{staticClass:\"tree-no-data\"},[_vm._v(\"\\n \"+_vm._s(_vm.lang.siNoDataNow)+\"\\n \")]):_vm._e()],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import {\r\n FIELD_TYPE_SELECT,FIELD_TYPE_INPUT_NUMBER,FIELD_TYPE_SELECT_SAFE,\r\n getItemRange, optionsValueText\r\n} from '../../RemoteRelative';\r\nimport ControlColumn from './ControlColumn/ControlColumn.vue';\r\nexport default {\r\n name: 'RemoteSettingItem',\r\n props: {\r\n settingData: { type: Object, required: true}, // 设置项\r\n snList: {type: Array, required: true}, // SN列表\r\n safeDataOptions: {type: Array, required: true},// 安规选项\r\n },\r\n components: {ControlColumn},\r\n data() {\r\n return {\r\n lang: Goodwe.Ops.Resouces.Front,\r\n currentItem: this.settingData,\r\n FIELD_TYPE_SELECT,\r\n FIELD_TYPE_INPUT_NUMBER,\r\n FIELD_TYPE_SELECT_SAFE,\r\n showMore: false, // 是否展示更多\r\n currentForm: { // 临时数据\r\n currentSelect: null, // 下拉选择框数据\r\n currentNumber: null, // 数字输入框数据\r\n currentSafe: null, // 选择安规数据\r\n },\r\n unitFlag: 1, // 单位换算分母(默认不转换1)\r\n sendValueMap: {\r\n [FIELD_TYPE_SELECT]: 'currentSelect',\r\n [FIELD_TYPE_INPUT_NUMBER]: 'currentNumber',\r\n [FIELD_TYPE_SELECT_SAFE]: 'currentSafe',\r\n },\r\n rangInfo: {}, // 数字输入框的范围,精度参数\r\n }\r\n },\r\n computed: {\r\n computedRowItem() {\r\n let d = _.cloneDeep(this.settingData);\r\n let r = _.cloneDeep(this.rangInfo);\r\n if(d['value']!== '' && d['value']!== null) {\r\n d['value'] = d['value'] / this.unitFlag;\r\n d['value'] = optionsValueText(d['options'] || this.safeDataOptions, d['value'],d['control_type']);\r\n }\r\n if(d && (d['translate_key'] === 'RemoteSetting_activepowerper' \r\n || d['translate_key'] === 'RemoteSetting_reactivepowervar')) {\r\n d['unit'] = `k${d['unit']}`;\r\n }\r\n if(r) {\r\n d['range'] = r['rangeStr'];\r\n d['gain'] = r['precision'];\r\n d['rangeInfo'] = r;\r\n }\r\n return d\r\n }\r\n },\r\n methods: {\r\n /** 监听数据变化 */\r\n handleChange(res) {\r\n if(res) {\r\n this.currentForm[this.sendValueMap[res.type]] = res.value;\r\n }\r\n },\r\n\r\n /** 点击设置按钮 */\r\n setCurrentParam(item) {\r\n let value;\r\n const control_type = this.settingData['control_type'];\r\n const formKey = this.sendValueMap[item.control_type];\r\n if(this.currentForm[formKey] === null) { // 如果没有设置值\r\n if(control_type === FIELD_TYPE_INPUT_NUMBER) {\r\n this.$message.error(lang.siEnter + ' ' + \r\n lang[this.settingData['translate_key']]);\r\n } else {\r\n this.$message.error(lang.WorkMode_745_PleaseSelect + ' ' + \r\n lang[this.settingData['translate_key']]);\r\n }\r\n return\r\n }\r\n if(control_type === FIELD_TYPE_INPUT_NUMBER) {\r\n value = this.currentForm[formKey] * this.unitFlag;\r\n } else {\r\n value = this.currentForm[formKey];\r\n }\r\n if(isNaN(value)) { this.currentForm[formKey] = null }\r\n if(value !== null && value !== '' &&\r\n value !== undefined && !isNaN(value)) {\r\n this.$emit('callBackSetting', {item, value});\r\n }\r\n },\r\n\r\n /** 点击查看更多设置值 */\r\n viewMoreSetting(item) {\r\n item['unitFlag'] = this.unitFlag; // 用作单位换算\r\n this.$emit('viewMoreSetting', item); // 打开模态框\r\n },\r\n\r\n /** 初始化数据处理 */\r\n dataInitHandle(item) {\r\n switch (item.control_type) {\r\n case FIELD_TYPE_INPUT_NUMBER: {\r\n if(item['translate_key']=== 'RemoteSetting_activepowerper' || \r\n item['translate_key']=== 'RemoteSetting_reactivepowervar') { // 单独处理单位\r\n this.unitFlag = 1000;\r\n }\r\n this.rangInfo = getItemRange(this.settingData['range'], this.settingData['gain'] * this.unitFlag);\r\n break;\r\n }\r\n default:\r\n break;\r\n }\r\n },\r\n },\r\n mounted() {\r\n this.dataInitHandle(this.settingData);\r\n }\r\n}","import mod from \"-!../../../../../../node_modules/babel-loader/lib/index.js!./RemoteSettingItem.js?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../../node_modules/babel-loader/lib/index.js!./RemoteSettingItem.js?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./RemoteSettingItem.vue?vue&type=template&id=5ff53f8e&scoped=true&\"\nimport script from \"./RemoteSettingItem.js?vue&type=script&lang=js&\"\nexport * from \"./RemoteSettingItem.js?vue&type=script&lang=js&\"\nimport style0 from \"./RemoteSettingItem.scss?vue&type=style&index=0&id=5ff53f8e&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"5ff53f8e\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"remote-item-setting\"},[_c('div',{staticClass:\"item-com item-tdl\"},[_vm._v(_vm._s(_vm.lang[_vm.computedRowItem['translate_key']]))]),_vm._v(\" \"),_c('div',{staticClass:\"item-com item-tds item-popover\",staticStyle:{\"color\":\"#03BBD6\"}},[(_vm.computedRowItem['control_type'] === _vm.FIELD_TYPE_INPUT_NUMBER)?_c('span',[_c('el-tooltip',{staticClass:\"item\",attrs:{\"effect\":\"dark\",\"placement\":\"top-start\",\"content\":_vm.computedRowItem['range']}},[_c('span',[_vm._v(_vm._s(_vm.computedRowItem['range']))])])],1):_vm._e(),_vm._v(\" \"),(_vm.computedRowItem['control_type'] !== _vm.FIELD_TYPE_INPUT_NUMBER)?_c('span',[_vm._v(\"\\n --\\n \")]):_vm._e()]),_vm._v(\" \"),_c('div',{staticClass:\"item-com item-tds\",staticStyle:{\"color\":\"#03BBD6\"}},[_vm._v(\"\\n \"+_vm._s(_vm.computedRowItem['gain'] || '--')+\"\\n \")]),_vm._v(\" \"),_c('div',{staticClass:\"item-com item-tdl\"},[_vm._v(\"\\n \"+_vm._s(_vm.computedRowItem['value'] || '--')+\"\\n \"),(_vm.snList.length > 1)?_c('span',[_vm._v(\", \")]):_vm._e(),_vm._v(\" \"),(_vm.snList.length > 1)?_c('span',{staticClass:\"item-td-more\",on:{\"click\":function($event){return _vm.viewMoreSetting(_vm.computedRowItem)}}},[_vm._v(\"\\n ...\\n \")]):_vm._e()]),_vm._v(\" \"),_c('div',{staticClass:\"item-com item-tdl\"},[_c('ControlColumn',{attrs:{\"controlType\":_vm.computedRowItem['control_type'],\"currentItem\":_vm.computedRowItem,\"safeOptions\":_vm.safeDataOptions,\"rangeInfo\":_vm.computedRowItem['rangeInfo']},on:{\"listenChange\":_vm.handleChange}})],1),_vm._v(\" \"),_c('div',{staticClass:\"item-com item-tds\"},[_c('button',{staticClass:\"el-button fl goodwe-el-button el-button--primary\",staticStyle:{\"height\":\"32px\",\"line-height\":\"7px\",\"background\":\"#12b4cf\",\"border-color\":\"#12b4cf\"},attrs:{\"type\":\"button\"},on:{\"click\":function($event){return _vm.setCurrentParam(_vm.computedRowItem)}}},[_vm._v(\"\\n \"+_vm._s(_vm.lang.RemoteSetting_Mirco_Set)+\"\\n \")])])])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../../../node_modules/babel-loader/lib/index.js!./SettingRecordTable.js?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../../node_modules/babel-loader/lib/index.js!./SettingRecordTable.js?vue&type=script&lang=js&\"","import {\r\n STATUS_TEXT_SETTING, STATUS_TEXT_SUCCESS,\r\n STATUS_TEXT_FAILED, STATUS_TEXT_MAP,\r\n STATUS_COLOR_MAP, FIELD_TYPE_INPUT_NUMBER\r\n} from '../../RemoteRelative';\r\nexport default {\r\n name: 'SettingRecordTable',\r\n props: {},\r\n data() {\r\n return {\r\n lang: Goodwe.Ops.Resouces.Front,\r\n STATUS_TEXT_SETTING, STATUS_TEXT_SUCCESS,\r\n STATUS_TEXT_FAILED, STATUS_TEXT_MAP,\r\n STATUS_COLOR_MAP,\r\n pw_id: GetRequest().id,// 电站Id\r\n tableData: [], // 表格数据\r\n searchValue: '', // 搜索框内容\r\n tableLoading: false, // 是否正在加载表格数据\r\n recordPage: { // 分页\r\n page_index: 1, \r\n page_size: 10,\r\n record: 0 \r\n }, \r\n }\r\n },\r\n watch: {},\r\n computed:{\r\n /** 处理后的逆变器数据 */\r\n computedRecord() {\r\n var d = _.cloneDeep(this.tableData);\r\n if (!d) d = [];\r\n if(d.length> 0) {\r\n d.forEach(el=> {\r\n if(el.parameter_translate_key === 'RemoteSetting_activepowerper' ||\r\n el.parameter_translate_key === 'RemoteSetting_reactivepowervar'\r\n ) {\r\n el['value'] = Number(el['value']) / 1000;\r\n }\r\n el['value'] = this.handleValueText(el);\r\n })\r\n }\r\n return d\r\n },\r\n },\r\n methods: {\r\n /** 改变分页 */\r\n handlePageChange(page) {\r\n this.recordPage['page_index'] = page;\r\n this.getRecordList();\r\n },\r\n\r\n /** 获取操作设置记录数据 */\r\n getRecordList() {\r\n this.tableLoading = true;\r\n common.post('/v3/MicroInverterRemoting/GetSettingRecordList', { \r\n powerStationId: this.pw_id,\r\n type: 1, // 微逆1 网关2(暂时保留)\r\n sn: this.searchValue,\r\n pageIndex: this.recordPage['page_index'],\r\n pageSize: this.recordPage['page_size']\r\n }).success(function(res){\r\n if(res.data) {\r\n this.tableData = res.data['list'] || [];\r\n this.recordPage['record'] = res.data['record'] || 0;\r\n }\r\n }.bind(this)).fail(function(fail){\r\n this.$message.error(fail.msg);\r\n }.bind(this)).all(function(){\r\n this.tableLoading = false;\r\n }.bind(this))\r\n },\r\n\r\n /** 重新设置该项 */\r\n resetItemValue(row) {\r\n this.tableLoading = true;\r\n common.post('/v3/MicroInverterRemoting/ResetControl', { \r\n recordId: row['id'],\r\n }).success(function(res){\r\n if(res.data) {\r\n this.$message.success(lang.SettingRecord_check_tips); \r\n } else {\r\n this.$message.error(lang.parErr);\r\n }\r\n }.bind(this)).fail(function(fail){\r\n this.$message.error(fail.msg);\r\n }.bind(this)).all(function(){\r\n this.tableLoading = false;\r\n }.bind(this))\r\n },\r\n\r\n /** 控制设置值反显处理 */\r\n handleValueText(item) {\r\n if(item.control_type !== FIELD_TYPE_INPUT_NUMBER) {\r\n return lang[item.option_translate_key]\r\n } else {\r\n return item['value']\r\n }\r\n }\r\n },\r\n mounted(){\r\n this.getRecordList();\r\n },\r\n\r\n}","import { render, staticRenderFns } from \"./SettingRecordTable.vue?vue&type=template&id=54ee89ec&scoped=true&\"\nimport script from \"./SettingRecordTable.js?vue&type=script&lang=js&\"\nexport * from \"./SettingRecordTable.js?vue&type=script&lang=js&\"\nimport style0 from \"./SettingRecordTable.scss?vue&type=style&index=0&id=54ee89ec&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"54ee89ec\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[_c('div',{staticClass:\"record-header\"},[_c('el-input',{staticClass:\"modal-search\",attrs:{\"placeholder\":_vm.lang.Layout_View_SNCheck},model:{value:(_vm.searchValue),callback:function ($$v) {_vm.searchValue=$$v},expression:\"searchValue\"}}),_vm._v(\" \"),_c('button',{staticClass:\"el-button goodwe-el-button el-button--primary\",staticStyle:{\"line-height\":\"7px\",\"background\":\"#12b4cf\",\"border-color\":\"#12b4cf\"},attrs:{\"type\":\"button\"},on:{\"click\":_vm.getRecordList}},[_vm._v(\"\\n \"+_vm._s(_vm.lang.ohSearch)+\"\\n \")])],1),_vm._v(\" \"),_c('el-table',{directives:[{name:\"loading\",rawName:\"v-loading\",value:(_vm.tableLoading),expression:\"tableLoading\"}],staticClass:\"record-contain\",staticStyle:{\"width\":\"100%\"},attrs:{\"header-cell-style\":{height:'42px',background:'#38474E',color:'#fff'},\"data\":_vm.computedRecord,\"empty-text\":_vm.lang.siNoDataNow,\"stripe\":\"\"}},[_c('el-table-column',{attrs:{\"prop\":\"operationTime\",\"label\":_vm.lang.Micro_SettingRecord_OperationTime,\"show-overflow-tooltip\":\"\"},scopedSlots:_vm._u([{key:\"default\",fn:function(scope){return [_vm._v(\"\\n \"+_vm._s(scope.row.operationTime || scope.row.create_time || '-')+\"\\n \")]}}])}),_vm._v(\" \"),_c('el-table-column',{attrs:{\"prop\":\"name\",\"label\":_vm.lang.oName,\"show-overflow-tooltip\":\"\"},scopedSlots:_vm._u([{key:\"default\",fn:function(scope){return [_vm._v(\"\\n \"+_vm._s(scope.row.name)+\"\\n \")]}}])}),_vm._v(\" \"),_c('el-table-column',{attrs:{\"prop\":\"sn\",\"label\":_vm.lang.Micro_SettingRecord_SN,\"show-overflow-tooltip\":\"\"},scopedSlots:_vm._u([{key:\"default\",fn:function(scope){return [_vm._v(\"\\n \"+_vm._s(scope.row.sn)+\"\\n \")]}}])}),_vm._v(\" \"),_c('el-table-column',{attrs:{\"prop\":\"translate_key\",\"label\":_vm.lang.RemoteSetting_Mirco_Parameter_title,\"show-overflow-tooltip\":\"\"},scopedSlots:_vm._u([{key:\"default\",fn:function(scope){return [_vm._v(\"\\n \"+_vm._s(_vm.lang[scope.row.parameter_translate_key])+\"\\n \")]}}])}),_vm._v(\" \"),_c('el-table-column',{attrs:{\"prop\":\"value\",\"label\":_vm.lang.RemoteSetting_Mirco_SettingValue_title,\"show-overflow-tooltip\":\"\"},scopedSlots:_vm._u([{key:\"default\",fn:function(scope){return [_vm._v(\"\\n \"+_vm._s(scope.row.value)+\"\\n \")]}}])}),_vm._v(\" \"),_c('el-table-column',{attrs:{\"prop\":\"status\",\"label\":_vm.lang.Micro_SettingRecord_Result,\"width\":'80px'},scopedSlots:_vm._u([{key:\"default\",fn:function(scope){return [_c('span',{style:({color: _vm.STATUS_COLOR_MAP[scope.row['status']]})},[_vm._v(\"\\n \"+_vm._s(_vm.lang[_vm.STATUS_TEXT_MAP[scope.row['status']]])+\"\\n \")])]}}])}),_vm._v(\" \"),_c('el-table-column',{attrs:{\"prop\":\"id\",\"label\":_vm.lang.pssmHandle,\"width\":'120px'},scopedSlots:_vm._u([{key:\"default\",fn:function(scope){return [(scope.row.id !== '')?_c('div',[_c('el-button',{staticClass:\"el-button goodwe-el-button el-button--primary\",attrs:{\"size\":\"small\",\"disabled\":scope.row['status'] !== _vm.STATUS_TEXT_FAILED},on:{\"click\":function($event){return _vm.resetItemValue(scope.row)}}},[_vm._v(\"\\n \"+_vm._s(_vm.lang.Reset)+\"\\n \")])],1):_vm._e(),_vm._v(\" \"),(scope.row.id == '')?_c('div',[_vm._v(\" -- \")]):_vm._e()]}}])})],1),_vm._v(\" \"),_c('div',{staticClass:\"paging\"},[_c('gdw-pager',{attrs:{\"current-page\":_vm.recordPage.page_index,\"page-sizes\":[_vm.recordPage.page_size],\"layout\":\"prev, pager, next, sizes, total, jumper\",\"total\":_vm.recordPage.record},on:{\"current-change\":_vm.handlePageChange}})],1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!./RemoteControl.js?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!./RemoteControl.js?vue&type=script&lang=js&\"","import CurrentSettingModal from './component/CurrentSettingModal/CurrentSettingModal.vue';\r\nimport { FIRST_TAB_REMOTE_SETTING, FIRST_TAB_SETTING_RECORD, safeCountryHandle } from './RemoteRelative.js';\r\nimport InverterListTreeView from './component/InverterListTreeView/InverterListTreeView.vue';\r\nimport RemoteSettingItem from './component/RemoteSettingItem/RemoteSettingItem.vue';\r\nimport SettingRecordTable from './component/SettingRecordTable/SettingRecordTable.vue';\r\nexport default {\r\n name: \"RemoteControl\",\r\n props: {\r\n station_id: {type: String, required: true}, // 电站Id\r\n },\r\n components: {\r\n CurrentSettingModal, InverterListTreeView, RemoteSettingItem,\r\n SettingRecordTable\r\n },\r\n data() {\r\n return {\r\n lang: Goodwe.Ops.Resouces.Front,\r\n FIRST_TAB_REMOTE_SETTING,\r\n FIRST_TAB_SETTING_RECORD,\r\n pw_id: GetRequest().id,\r\n treeData: [], // 左侧树图数据\r\n firstTabValue: FIRST_TAB_REMOTE_SETTING,\r\n dialogShow: false,\r\n settingThList: [\r\n { name: lang.RemoteSetting_Mirco_Parameter_title,\r\n value: lang.RemoteSetting_Mirco_Parameter_title, \r\n flexVal: 2 },\r\n { name: lang.RemoteSetting_Mirco_Range_title, \r\n value: lang.RemoteSetting_Mirco_Range_title, \r\n flexVal: 1},\r\n { name: lang.Number_precision, \r\n value:lang.Number_precision, \r\n flexVal: 1},\r\n { name: lang.RemoteSetting_Mirco_CurrentSetting_title, \r\n value: lang.RemoteSetting_Mirco_CurrentSetting_title, \r\n flexVal: 2 },\r\n { name: lang.RemoteSetting_Mirco_SettingValue_title, \r\n value: lang.RemoteSetting_Mirco_SettingValue_title, \r\n flexVal: 2},\r\n { name: lang.RemoteSetting_Mirco_SettingValue_Opeation, \r\n value: lang.RemoteSetting_Mirco_SettingValue_Opeation, \r\n flexVal: 1},\r\n ],\r\n allRemoteCols: [], // 所有配置项\r\n currentSettingItem: {}, // 当前设置参数\r\n singleSetTitle: '', // 弹出框标题\r\n needHandleSn: [], // 需要处理的SN列表\r\n fullLoading: null, // 全屏loading\r\n safeDataOptions: [], // 安规选项数据\r\n remoteNoDataTipStr: lang.RemoteSetting_Mirco_checkTips.split('\\n') || '', // 无数据时展示\r\n };\r\n },\r\n computed: {\r\n cumputedReCols() {\r\n const d = _.cloneDeep(this.allRemoteCols);\r\n return d\r\n }\r\n },\r\n methods: {\r\n // 树图选中节点回调\r\n getCheckedNodes(data) {\r\n this.treeData = [];\r\n if(data) {\r\n data.forEach(el=> {\r\n this.treeData.push(el.sn)\r\n })\r\n }\r\n },\r\n\r\n /** 更新远程控制当前设置值数据 */\r\n undateCurrentSetting() {\r\n this.resetData();\r\n if(this.treeData.length === 0) {\r\n const _this = this;\r\n goodwe.confirm(lang.Remote_reset, [lang.ok,lang.cancel],\r\n function() { // 点击Ok 重新刷新页面\r\n this.close();\r\n _this.getAllRemoteCols(true);\r\n _this.getSafeDataOptions();\r\n },\r\n function () { // 点击cancel\r\n this.close();\r\n _this.$message.warning(lang.Remote_refresh_tips1); // 请先勾选左侧树图下的相关SN序列号\r\n });\r\n return\r\n }\r\n this.getAllRemoteCols(true);\r\n },\r\n\r\n /** 处理远程控制 */\r\n handleSetting(info) {\r\n this.resetData();\r\n if(this.treeData.length === 0) {\r\n this.$message.error(lang.Remote_refresh_tips1); // 请先勾选左侧树图下的相关SN序列号\r\n return\r\n }\r\n loading.showLoading();\r\n common.post('/v3/MicroInverterRemoting/BatchControl', {\r\n powerStationId: this.pw_id,\r\n inverterSNList: this.treeData,\r\n configItems: [{\r\n configItemId: info['item']['id'],\r\n value: info['value']\r\n }]\r\n }).success(function(res){\r\n if(res.data) {\r\n this.$message.success(lang.SettingRecord_check_tips);\r\n } else {\r\n this.$message.warning(lang.parErr);\r\n }\r\n }.bind(this)).fail(function(fail){\r\n this.$message.error(fail.msg);\r\n }.bind(this)).all(function(){\r\n loading.disLoading();\r\n }.bind(this))\r\n },\r\n\r\n /** 切换页面 */\r\n changePageCon(val) {\r\n this.resetData();\r\n this.firstTabValue = val;\r\n },\r\n\r\n /** 获取所有配置项值 */\r\n getAllRemoteCols(flag) {\r\n loading.showLoading();\r\n common.post('v3/MicroInverterRemoting/GetAllControlList', {\r\n inverterSNList: this.treeData\r\n }).success(function(res){\r\n if(res.data && res.data.length > 0) {\r\n this.allRemoteCols = res.data;\r\n }\r\n }.bind(this)).fail(function(fail){\r\n this.$message.error(fail.msg);\r\n }.bind(this)).all(function(){\r\n loading.disLoading();\r\n this.needHandleSn = this.treeData;\r\n if(flag) {\r\n this.$message.success(lang.loadSuccess);\r\n }\r\n }.bind(this))\r\n },\r\n\r\n /** 查看更多设置项值 */\r\n handleViewMore(item) {\r\n this.currentSettingItem = item;\r\n this.needHandleSn = this.treeData;\r\n this.singleSetTitle = lang[item.translate_key];\r\n this.resetData();\r\n setTimeout(() => {\r\n this.dialogShow = true;\r\n }, 30);\r\n },\r\n\r\n /** 重置页面部分数据 */\r\n resetData() {\r\n this.dialogShow = false;\r\n },\r\n\r\n /** 获取安规数据 */\r\n getSafeDataOptions() {\r\n common.post('/v3/Remoting/GetGridSafetyCountryList', {\r\n }).success(function(res){\r\n if(res.data && res.data.length > 0) {\r\n this.safeDataOptions = safeCountryHandle(res.data);\r\n }\r\n }.bind(this))\r\n },\r\n },\r\n mounted() {\r\n this.getSafeDataOptions();\r\n },\r\n};","import { render, staticRenderFns } from \"./RemoteControl.vue?vue&type=template&id=8b9a579a&scoped=true&\"\nimport script from \"./RemoteControl.js?vue&type=script&lang=js&\"\nexport * from \"./RemoteControl.js?vue&type=script&lang=js&\"\nimport style0 from \"./RemoteControl.scss?vue&type=style&index=0&id=8b9a579a&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"8b9a579a\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"remote_control\"},[_c('InverterListTreeView',{ref:\"inverterTree\",attrs:{\"pw_id\":_vm.station_id,\"checkedKeys\":_vm.checkedKeys},on:{\"sendCheckedNodes\":_vm.getCheckedNodes}}),_vm._v(\" \"),_c('div',{staticClass:\"right-container\"},[_c('div',{staticClass:\"page-title\"},[_c('span',{staticClass:\"to-btn\",class:{checked: _vm.firstTabValue === _vm.FIRST_TAB_REMOTE_SETTING},on:{\"click\":function($event){return _vm.changePageCon(_vm.FIRST_TAB_REMOTE_SETTING)}}},[_vm._v(_vm._s(_vm.lang.Micro_RemoteSetting_Label))]),_vm._v(\" \"),_c('span',{staticClass:\"to-btn\",class:{checked: _vm.firstTabValue === _vm.FIRST_TAB_SETTING_RECORD},on:{\"click\":function($event){return _vm.changePageCon(_vm.FIRST_TAB_SETTING_RECORD)}}},[_vm._v(_vm._s(_vm.lang.Micro_SettingRecord_Label))])]),_vm._v(\" \"),_c('div',{staticClass:\"page-container\"},[_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.firstTabValue=== _vm.FIRST_TAB_REMOTE_SETTING),expression:\"firstTabValue=== FIRST_TAB_REMOTE_SETTING\"}],staticClass:\"remote_setting\"},[_c('div',{staticClass:\"refresh_btn\"},[_c('img',{attrs:{\"src\":\"/Images/icon/remote_refresh.png\",\"alt\":\"\"},on:{\"click\":_vm.undateCurrentSetting}})]),_vm._v(\" \"),_c('el-tabs',{attrs:{\"type\":\"border-card\"}},[_c('el-tab-pane',{attrs:{\"label\":_vm.lang.SelectdeviceType_Popup_MicroInverter}},[_c('div',{staticClass:\"setting-ths\"},_vm._l((_vm.settingThList),function(item){return _c('div',{key:item.name,staticClass:\"setting-item-th\",style:({flex: item.flexVal })},[_vm._v(\"\\n \"+_vm._s(item.value)+\"\\n \")])}),0),_vm._v(\" \"),_c('div',{staticClass:\"setting-cons\"},[_vm._l((_vm.cumputedReCols),function(settingItem){return _c('div',{key:settingItem.id},[_c('RemoteSettingItem',{ref:(\"controlRef\" + (settingItem.id)),refInFor:true,attrs:{\"snList\":_vm.needHandleSn,\"settingData\":settingItem,\"safeDataOptions\":_vm.safeDataOptions},on:{\"callBackSetting\":_vm.handleSetting,\"viewMoreSetting\":_vm.handleViewMore}}),_vm._v(\" \"),(settingItem.children)?_c('div',_vm._l((settingItem.children),function(settingChild,j){return _c('div',{key:j},[_c('RemoteSettingItem',{ref:(\"controlRef\" + (settingChild.id)),refInFor:true,attrs:{\"snList\":_vm.needHandleSn,\"settingData\":settingChild,\"safeDataOptions\":_vm.safeDataOptions},on:{\"callBackSetting\":_vm.handleSetting,\"viewMoreSetting\":_vm.handleViewMore}})],1)}),0):_vm._e()],1)}),_vm._v(\" \"),(_vm.cumputedReCols.length === 0)?_c('div',{staticClass:\"re-clos-nodata\"},[_c('div',{staticClass:\"nodata-tip\"},_vm._l((_vm.remoteNoDataTipStr),function(item,i){return _c('p',{key:i},[_vm._v(\"\\n \"+_vm._s(item)+\"\\n \")])}),0)]):_vm._e()],2)])],1)],1),_vm._v(\" \"),(_vm.firstTabValue === _vm.FIRST_TAB_SETTING_RECORD)?_c('div',{staticClass:\"setting_record\"},[_c('el-tabs',{attrs:{\"type\":\"border-card\"}},[_c('el-tab-pane',{attrs:{\"label\":_vm.lang.SelectdeviceType_Popup_MicroInverter}},[_c('SettingRecordTable')],1)],1)],1):_vm._e()])]),_vm._v(\" \"),_c('CurrentSettingModal',{attrs:{\"showModal\":_vm.dialogShow,\"settingData\":_vm.currentSettingItem,\"snList\":_vm.needHandleSn,\"modalTitle\":_vm.singleSetTitle,\"safeDataOptions\":_vm.safeDataOptions},on:{\"dialogShowChange\":_vm.dialogShowChange}})],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import RemoteControl from './src/RemoteControl.vue';\r\n\r\nRemoteControl.install = function(Vue) {\r\n Vue.component(RemoteControl.name, RemoteControl);\r\n}\r\n\r\nexport default RemoteControl;","import GoodweAddDevice from './src/GoodweAddDevice.vue';\r\n\r\nGoodweAddDevice.install = function(Vue) {\r\n Vue.component(GoodweAddDevice.name, GoodweAddDevice);\r\n}\r\n\r\nexport default GoodweAddDevice;\r\n","import MiLayoutReadOnly from './src/MiLayoutReadOnly.vue';\r\n\r\nMiLayoutReadOnly.install = function(Vue) {\r\n Vue.component(MiLayoutReadOnly.name, MiLayoutReadOnly);\r\n}\r\n\r\nexport default MiLayoutReadOnly;","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./GoodweSliderCaptcha.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./GoodweSliderCaptcha.vue?vue&type=script&lang=js&\"","\r\n\r\n\r\n\r\n","import { render, staticRenderFns } from \"./GoodweSliderCaptcha.vue?vue&type=template&id=1c335d78&scoped=true&\"\nimport script from \"./GoodweSliderCaptcha.vue?vue&type=script&lang=js&\"\nexport * from \"./GoodweSliderCaptcha.vue?vue&type=script&lang=js&\"\nimport style0 from \"./GoodweSliderCaptcha.vue?vue&type=style&index=0&id=1c335d78&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"1c335d78\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"drag-verify-container\"},[_c('drag-verify',{ref:\"dragVerify\",style:({ borderRadius: '4px' }),attrs:{\"width\":_vm.width,\"height\":_vm.height,\"text\":_vm.text,\"success-text\":_vm.successText,\"background\":_vm.background,\"progress-bar-bg\":_vm.progressBarBg,\"completed-bg\":_vm.completedBg,\"handler-bg\":_vm.handlerBg},on:{\"passcallback\":_vm.onSuccess}})],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import GoodweSliderCaptcha from './src/GoodweSliderCaptcha.vue';\r\n\r\nGoodweSliderCaptcha.install = Vue => {\r\n Vue.component(GoodweSliderCaptcha.name, GoodweSliderCaptcha);\r\n}\r\n\r\nexport default GoodweSliderCaptcha;","import Demo from '@/demo';\r\nimport Button from '@/GoodweButton';\r\nimport OrgSelector from \"@/orgselector\";\r\nimport GoodweSwitch from '@/GoodweSwitch';\r\nimport GoodweSearchCenter from '@/GoodweSearchCenter';\r\nimport AutoComplete from '@/autoComplete';\r\nimport Inverter from \"@/inverter\";\r\nimport GoodweStatusLight from '@/GoodweStatusLight';\r\nimport GoodweCard from '@/GoodweCard';\r\nimport GoodweEditableLabel from '@/GoodweEditableLabel';\r\nimport GoodweBattery from '@/GoodweBattery';\r\nimport GoodweBatteryInfo from '@/GoodweBatteryInfo';\r\nimport GoodweBatteryCluster from '@/GoodweBatteryCluster';\r\nimport GoodweTab from '@/GoodweTab';\r\nimport GoodweDeviceArea from '@/GoodweDeviceArea';\r\nimport GoodweHtDetail from '@/GoodweHtDetail';\r\nimport ParallelSystemDetail from '@/ParallelSystemDetail';\r\nimport GoodweInverterCharts from '@/GoodweInverterCharts';\r\nimport GoodweStationCharts from '@/GoodweStationCharts';\r\nimport GoodweRemoteControl from '@/GoodweRemoteControl';\r\nimport GoodweEvChargerDetail from '@/GoodweEvChargerDetail';\r\nimport GoodweEMI from '@/GoodweEMI';\r\nimport GoodweChartsTab from '@/GoodweChartsTab';\r\nimport GoodweStringInfo from '@/GoodweStringInfo';\r\nimport GoodweShadowDetect from '@/GoodweShadowDetect';\r\nimport GoodweProcessBar from '@/GoodweProcessBar';\r\nimport GoodweProgress from '@/GoodweProgress';\r\nimport GoodweDeviceDetail from '@/GoodweDeviceDetail';\r\nimport InverterMonitor from '@/InverterMonitor'\r\nimport inverter from '@/inverter'\r\nimport TransReplace from '@/TransReplace';\r\nimport GoodweDeviceChart from '@/GoodweDeviceChart'\r\nimport GoodweHomekitChart from '@/GoodweHomekitChart'\r\nimport GoodweInverterSelect from '@/GoodweInverterSelect'\r\nimport GoodweSec from '@/GoodweSec'\r\nimport GoodweMeterInfo from '@/GoodweMeterInfo'\r\nimport GoodweTigo from '@/GoodweTigo'\r\nimport GoodweMap from '@/GoodweMap';\r\nimport GoodwePsBatteryCure from '@/GoodwePsBatteryCure';\r\nimport GdwAttachment from '@/GdwAttachment'\r\nimport FcasData from '#/FcasData';\r\nimport GoodweEvCharge from '@/GoodweEvCharge';\r\nimport GoodwePowerFlow from '@/GoodwePowerFlow';\r\nimport GoodweParallelDetail from '@/GoodweParallelDetail';\r\nimport GoodweAppHead from '@/GoodweAppHead';\r\nimport MobilePage from '#/MobilePage';\r\nimport AddThirdParty from \"#/AddThirdParty\";\r\nimport MicroInverterLayout from '#/MicroInverterLayout';\r\nimport PVMonitoring from '#/PVMonitoring';\r\nimport MicroInverterTree from '@/MicroInverterTree';\r\nimport RemoteControl from '#/RemoteControl';\r\nimport GoodweAddDevice from '@/GoodweAddDevice';\r\nimport MiLayoutReadOnly from '@/MiLayoutReadOnly';\r\nimport GoodweSliderCaptcha from '@/GoodweSliderCaptcha';\r\n\r\nconst components = [\r\n Demo,\r\n Button.GoodweButton,\r\n Button.GoodweButtonGroup,\r\n OrgSelector,\r\n GoodweSwitch,\r\n GoodweSearchCenter,\r\n AutoComplete,\r\n Inverter,\r\n GoodweTigo,\r\n GoodweStatusLight,\r\n GoodweCard,\r\n\tGoodweEditableLabel,\r\n TransReplace,\r\n GoodweAppHead,\r\n GoodweBattery,\r\n GoodweBatteryInfo,\r\n GoodweBatteryCluster,\r\n GoodweTab.GoodweTab,\r\n GoodweTab.GoodweTabItem,\r\n GoodweTigo.GoodweTigo,\r\n GoodweTigo.GoodweTigoTable,\r\n GoodweDeviceArea,\r\n GoodweHtDetail,\r\n ParallelSystemDetail,\r\n GoodweInverterCharts,\r\n GoodweStationCharts,\r\n GoodweRemoteControl,\r\n GoodweEvChargerDetail,\r\n GoodweEMI,\r\n GoodweChartsTab,\r\n GoodweStringInfo,\r\n GoodweProcessBar,\r\n GoodweShadowDetect.GoodweShadowDetect,\r\n GoodweShadowDetect.GoodweShadowDetectChart,\r\n GoodweShadowDetect.GoodweShadowDetectHistory,\r\n GoodweProgress,\r\n GoodweDeviceDetail,\r\n InverterMonitor,\r\n inverter,\r\n GoodweDeviceChart,\r\n GoodweInverterSelect,\r\n GoodweHomekitChart,\r\n GoodweMap,\r\n GoodweEvCharge,\r\n GoodweSec,\r\n GoodweMeterInfo,\r\n GoodwePsBatteryCure,\r\n GdwAttachment,\r\n GoodwePowerFlow,\r\n GoodweParallelDetail,\r\n FcasData,\r\n MobilePage,\r\n AddThirdParty,\r\n MicroInverterLayout,\r\n PVMonitoring,\r\n MicroInverterTree,\r\n RemoteControl,\r\n GoodweAddDevice,\r\n MiLayoutReadOnly,\r\n GoodweSliderCaptcha\r\n]\r\n\r\nfunction install(Vue, opts = []) {\r\n components.map(component => {\r\n Vue.component(component.name, component);\r\n });\r\n}\r\n\r\nif (typeof window !== 'undefined' && window.Vue) {\r\n install(window.Vue);\r\n}\r\n\r\nexport default {\r\n Demo,\r\n GoodweButton: Button.GoodweButton,\r\n GoodweButtonGroup: Button.GoodweButtonGroup,\r\n OrgSelector,\r\n GoodweSwitch,\r\n GoodweSearchCenter,\r\n AutoComplete,\r\n Inverter,\r\n GoodweStatusLight,\r\n GoodweCard,\r\n\tGoodweEditableLabel,\r\n GoodweAppHead,\r\n GoodweBattery,\r\n GoodweBatteryInfo,\r\n GoodweBatteryCluster,\r\n GoodweTab: GoodweTab.GoodweTab,\r\n GoodweTabItem: GoodweTab.GoodweTabItem,\r\n GoodweTigo:GoodweTigo.GoodweTigo,\r\n GoodweTigoTable:GoodweTigo.GoodweTigoTable,\r\n GoodweDeviceArea,\r\n GoodweHtDetail,\r\n ParallelSystemDetail,\r\n GoodweInverterCharts,\r\n GoodweStationCharts,\r\n GoodweRemoteControl,\r\n GoodweEvChargerDetail,\r\n GoodweEMI,\r\n TransReplace,\r\n GoodweMap,\r\n GoodweChartsTab,\r\n GoodweStringInfo,\r\n GoodweProcessBar,\r\n GoodweShadowDetect:GoodweShadowDetect.GoodweShadowDetect,\r\n GoodweShadowDetectChart:GoodweShadowDetect.GoodweShadowDetectChart,\r\n GoodweShadowDetectHistory:GoodweShadowDetect.GoodweShadowDetectHistory,\r\n GoodweProgress,\r\n GoodweDeviceDetail,\r\n InverterMonitor,\r\n inverter,\r\n GoodweTigo,\r\n GoodweDeviceChart,\r\n GoodweInverterSelect,\r\n GoodweHomekitChart,\r\n GoodweSec,\r\n GoodweMeterInfo,\r\n GoodwePsBatteryCure,\r\n GdwAttachment,\r\n GoodweEvCharge,\r\n GoodwePowerFlow,\r\n GoodweParallelDetail,\r\n FcasData,\r\n MobilePage,\r\n AddThirdParty,\r\n MicroInverterLayout,\r\n PVMonitoring,\r\n MicroInverterTree,\r\n RemoteControl,\r\n GoodweAddDevice,\r\n MiLayoutReadOnly,\r\n GoodweSliderCaptcha\r\n}"],"sourceRoot":""}